PageSourceSearch

https://www.medical.ac.jp/assets/js/vendor.js?2022072901

js medical.ac.jp collected 2026-10-04 22:39:37 UTC 1,191,188 bytes, 34,865 lines download raw bytes

1(window["webpackJsonp"] = window["webpackJsonp"] || []).push([["vendor"],{
2
vendor: 2,123 bytes, lines 3-43
3/***/ "./node_modules/@babel/polyfill/lib/index.js":
4/*!***************************************************!*\
5  !*** ./node_modules/@babel/polyfill/lib/index.js ***!
6  \***************************************************/
7/*! no static exports found */
8/***/ (function(module, exports, __webpack_require__) {
9
10"use strict";
11/* WEBPACK VAR INJECTION */(function(global) {
12
13__webpack_require__(/*! core-js/es6 */ "./node_modules/core-js/es6/index.js");
14
15__webpack_require__(/*! core-js/fn/array/includes */ "./node_modules/core-js/fn/array/includes.js");
16
17__webpack_require__(/*! core-js/fn/string/pad-start */ "./node_modules/core-js/fn/string/pad-start.js");
18
19__webpack_require__(/*! core-js/fn/string/pad-end */ "./node_modules/core-js/fn/string/pad-end.js");
20
21__webpack_require__(/*! core-js/fn/symbol/async-iterator */ "./node_modules/core-js/fn/symbol/async-iterator.js");
22
23__webpack_require__(/*! core-js/fn/object/get-own-property-descriptors */ "./node_modules/core-js/fn/object/get-own-property-descriptors.js");
24
25__webpack_require__(/*! core-js/fn/object/values */ "./node_modules/core-js/fn/object/values.js");
26
27__webpack_require__(/*! core-js/fn/object/entries */ "./node_modules/core-js/fn/object/entries.js");
28
29__webpack_require__(/*! core-js/fn/promise/finally */ "./node_modules/core-js/fn/promise/finally.js");
30
31__webpack_require__(/*! core-js/web */ "./node_modules/core-js/web/index.js");
32
33__webpack_require__(/*! regenerator-runtime/runtime */ "./node_modules/regenerator-runtime/runtime.js");
34
35if (global._babelPolyfill && typeof console !== "undefined" && console.warn) {
36  console.warn("@babel/polyfill is loaded more than once on this page. This is probably not desirable/intended " + "and may have consequences if different versions of the polyfills are applied sequentially. " + "If you do need to load the polyfill more than once, use @babel/polyfill/noConflict " + "instead to bypass the warning.");
37}
38
39global._babelPolyfill = true;
40/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))
41
42/***/ }),
43
vendor: 16,171 bytes, lines 44-192
44/***/ "./node_modules/core-js/es6/index.js":
45/*!*******************************************!*\
46  !*** ./node_modules/core-js/es6/index.js ***!
47  \*******************************************/
48/*! no static exports found */
49/***/ (function(module, exports, __webpack_require__) {
50
51__webpack_require__(/*! ../modules/es6.symbol */ "./node_modules/core-js/modules/es6.symbol.js");
52__webpack_require__(/*! ../modules/es6.object.create */ "./node_modules/core-js/modules/es6.object.create.js");
53__webpack_require__(/*! ../modules/es6.object.define-property */ "./node_modules/core-js/modules/es6.object.define-property.js");
54__webpack_require__(/*! ../modules/es6.object.define-properties */ "./node_modules/core-js/modules/es6.object.define-properties.js");
55__webpack_require__(/*! ../modules/es6.object.get-own-property-descriptor */ "./node_modules/core-js/modules/es6.object.get-own-property-descriptor.js");
56__webpack_require__(/*! ../modules/es6.object.get-prototype-of */ "./node_modules/core-js/modules/es6.object.get-prototype-of.js");
57__webpack_require__(/*! ../modules/es6.object.keys */ "./node_modules/core-js/modules/es6.object.keys.js");
58__webpack_require__(/*! ../modules/es6.object.get-own-property-names */ "./node_modules/core-js/modules/es6.object.get-own-property-names.js");
59__webpack_require__(/*! ../modules/es6.object.freeze */ "./node_modules/core-js/modules/es6.object.freeze.js");
60__webpack_require__(/*! ../modules/es6.object.seal */ "./node_modules/core-js/modules/es6.object.seal.js");
61__webpack_require__(/*! ../modules/es6.object.prevent-extensions */ "./node_modules/core-js/modules/es6.object.prevent-extensions.js");
62__webpack_require__(/*! ../modules/es6.object.is-frozen */ "./node_modules/core-js/modules/es6.object.is-frozen.js");
63__webpack_require__(/*! ../modules/es6.object.is-sealed */ "./node_modules/core-js/modules/es6.object.is-sealed.js");
64__webpack_require__(/*! ../modules/es6.object.is-extensible */ "./node_modules/core-js/modules/es6.object.is-extensible.js");
65__webpack_require__(/*! ../modules/es6.object.assign */ "./node_modules/core-js/modules/es6.object.assign.js");
66__webpack_require__(/*! ../modules/es6.object.is */ "./node_modules/core-js/modules/es6.object.is.js");
67__webpack_require__(/*! ../modules/es6.object.set-prototype-of */ "./node_modules/core-js/modules/es6.object.set-prototype-of.js");
68__webpack_require__(/*! ../modules/es6.object.to-string */ "./node_modules/core-js/modules/es6.object.to-string.js");
69__webpack_require__(/*! ../modules/es6.function.bind */ "./node_modules/core-js/modules/es6.function.bind.js");
70__webpack_require__(/*! ../modules/es6.function.name */ "./node_modules/core-js/modules/es6.function.name.js");
71__webpack_require__(/*! ../modules/es6.function.has-instance */ "./node_modules/core-js/modules/es6.function.has-instance.js");
72__webpack_require__(/*! ../modules/es6.parse-int */ "./node_modules/core-js/modules/es6.parse-int.js");
73__webpack_require__(/*! ../modules/es6.parse-float */ "./node_modules/core-js/modules/es6.parse-float.js");
74__webpack_require__(/*! ../modules/es6.number.constructor */ "./node_modules/core-js/modules/es6.number.constructor.js");
75__webpack_require__(/*! ../modules/es6.number.to-fixed */ "./node_modules/core-js/modules/es6.number.to-fixed.js");
76__webpack_require__(/*! ../modules/es6.number.to-precision */ "./node_modules/core-js/modules/es6.number.to-precision.js");
77__webpack_require__(/*! ../modules/es6.number.epsilon */ "./node_modules/core-js/modules/es6.number.epsilon.js");
78__webpack_require__(/*! ../modules/es6.number.is-finite */ "./node_modules/core-js/modules/es6.number.is-finite.js");
79__webpack_require__(/*! ../modules/es6.number.is-integer */ "./node_modules/core-js/modules/es6.number.is-integer.js");
80__webpack_require__(/*! ../modules/es6.number.is-nan */ "./node_modules/core-js/modules/es6.number.is-nan.js");
81__webpack_require__(/*! ../modules/es6.number.is-safe-integer */ "./node_modules/core-js/modules/es6.number.is-safe-integer.js");
82__webpack_require__(/*! ../modules/es6.number.max-safe-integer */ "./node_modules/core-js/modules/es6.number.max-safe-integer.js");
83__webpack_require__(/*! ../modules/es6.number.min-safe-integer */ "./node_modules/core-js/modules/es6.number.min-safe-integer.js");
84__webpack_require__(/*! ../modules/es6.number.parse-float */ "./node_modules/core-js/modules/es6.number.parse-float.js");
85__webpack_require__(/*! ../modules/es6.number.parse-int */ "./node_modules/core-js/modules/es6.number.parse-int.js");
86__webpack_require__(/*! ../modules/es6.math.acosh */ "./node_modules/core-js/modules/es6.math.acosh.js");
87__webpack_require__(/*! ../modules/es6.math.asinh */ "./node_modules/core-js/modules/es6.math.asinh.js");
88__webpack_require__(/*! ../modules/es6.math.atanh */ "./node_modules/core-js/modules/es6.math.atanh.js");
89__webpack_require__(/*! ../modules/es6.math.cbrt */ "./node_modules/core-js/modules/es6.math.cbrt.js");
90__webpack_require__(/*! ../modules/es6.math.clz32 */ "./node_modules/core-js/modules/es6.math.clz32.js");
91__webpack_require__(/*! ../modules/es6.math.cosh */ "./node_modules/core-js/modules/es6.math.cosh.js");
92__webpack_require__(/*! ../modules/es6.math.expm1 */ "./node_modules/core-js/modules/es6.math.expm1.js");
93__webpack_require__(/*! ../modules/es6.math.fround */ "./node_modules/core-js/modules/es6.math.fround.js");
94__webpack_require__(/*! ../modules/es6.math.hypot */ "./node_modules/core-js/modules/es6.math.hypot.js");
95__webpack_require__(/*! ../modules/es6.math.imul */ "./node_modules/core-js/modules/es6.math.imul.js");
96__webpack_require__(/*! ../modules/es6.math.log10 */ "./node_modules/core-js/modules/es6.math.log10.js");
97__webpack_require__(/*! ../modules/es6.math.log1p */ "./node_modules/core-js/modules/es6.math.log1p.js");
98__webpack_require__(/*! ../modules/es6.math.log2 */ "./node_modules/core-js/modules/es6.math.log2.js");
99__webpack_require__(/*! ../modules/es6.math.sign */ "./node_modules/core-js/modules/es6.math.sign.js");
100__webpack_require__(/*! ../modules/es6.math.sinh */ "./node_modules/core-js/modules/es6.math.sinh.js");
101__webpack_require__(/*! ../modules/es6.math.tanh */ "./node_modules/core-js/modules/es6.math.tanh.js");
102__webpack_require__(/*! ../modules/es6.math.trunc */ "./node_modules/core-js/modules/es6.math.trunc.js");
103__webpack_require__(/*! ../modules/es6.string.from-code-point */ "./node_modules/core-js/modules/es6.string.from-code-point.js");
104__webpack_require__(/*! ../modules/es6.string.raw */ "./node_modules/core-js/modules/es6.string.raw.js");
105__webpack_require__(/*! ../modules/es6.string.trim */ "./node_modules/core-js/modules/es6.string.trim.js");
106__webpack_require__(/*! ../modules/es6.string.iterator */ "./node_modules/core-js/modules/es6.string.iterator.js");
107__webpack_require__(/*! ../modules/es6.string.code-point-at */ "./node_modules/core-js/modules/es6.string.code-point-at.js");
108__webpack_require__(/*! ../modules/es6.string.ends-with */ "./node_modules/core-js/modules/es6.string.ends-with.js");
109__webpack_require__(/*! ../modules/es6.string.includes */ "./node_modules/core-js/modules/es6.string.includes.js");
110__webpack_require__(/*! ../modules/es6.string.repeat */ "./node_modules/core-js/modules/es6.string.repeat.js");
111__webpack_require__(/*! ../modules/es6.string.starts-with */ "./node_modules/core-js/modules/es6.string.starts-with.js");
112__webpack_require__(/*! ../modules/es6.string.anchor */ "./node_modules/core-js/modules/es6.string.anchor.js");
113__webpack_require__(/*! ../modules/es6.string.big */ "./node_modules/core-js/modules/es6.string.big.js");
114__webpack_require__(/*! ../modules/es6.string.blink */ "./node_modules/core-js/modules/es6.string.blink.js");
115__webpack_require__(/*! ../modules/es6.string.bold */ "./node_modules/core-js/modules/es6.string.bold.js");
116__webpack_require__(/*! ../modules/es6.string.fixed */ "./node_modules/core-js/modules/es6.string.fixed.js");
117__webpack_require__(/*! ../modules/es6.string.fontcolor */ "./node_modules/core-js/modules/es6.string.fontcolor.js");
118__webpack_require__(/*! ../modules/es6.string.fontsize */ "./node_modules/core-js/modules/es6.string.fontsize.js");
119__webpack_require__(/*! ../modules/es6.string.italics */ "./node_modules/core-js/modules/es6.string.italics.js");
120__webpack_require__(/*! ../modules/es6.string.link */ "./node_modules/core-js/modules/es6.string.link.js");
121__webpack_require__(/*! ../modules/es6.string.small */ "./node_modules/core-js/modules/es6.string.small.js");
122__webpack_require__(/*! ../modules/es6.string.strike */ "./node_modules/core-js/modules/es6.string.strike.js");
123__webpack_require__(/*! ../modules/es6.string.sub */ "./node_modules/core-js/modules/es6.string.sub.js");
124__webpack_require__(/*! ../modules/es6.string.sup */ "./node_modules/core-js/modules/es6.string.sup.js");
125__webpack_require__(/*! ../modules/es6.date.now */ "./node_modules/core-js/modules/es6.date.now.js");
126__webpack_require__(/*! ../modules/es6.date.to-json */ "./node_modules/core-js/modules/es6.date.to-json.js");
127__webpack_require__(/*! ../modules/es6.date.to-iso-string */ "./node_modules/core-js/modules/es6.date.to-iso-string.js");
128__webpack_require__(/*! ../modules/es6.date.to-string */ "./node_modules/core-js/modules/es6.date.to-string.js");
129__webpack_require__(/*! ../modules/es6.date.to-primitive */ "./node_modules/core-js/modules/es6.date.to-primitive.js");
130__webpack_require__(/*! ../modules/es6.array.is-array */ "./node_modules/core-js/modules/es6.array.is-array.js");
131__webpack_require__(/*! ../modules/es6.array.from */ "./node_modules/core-js/modules/es6.array.from.js");
132__webpack_require__(/*! ../modules/es6.array.of */ "./node_modules/core-js/modules/es6.array.of.js");
133__webpack_require__(/*! ../modules/es6.array.join */ "./node_modules/core-js/modules/es6.array.join.js");
134__webpack_require__(/*! ../modules/es6.array.slice */ "./node_modules/core-js/modules/es6.array.slice.js");
135__webpack_require__(/*! ../modules/es6.array.sort */ "./node_modules/core-js/modules/es6.array.sort.js");
136__webpack_require__(/*! ../modules/es6.array.for-each */ "./node_modules/core-js/modules/es6.array.for-each.js");
137__webpack_require__(/*! ../modules/es6.array.map */ "./node_modules/core-js/modules/es6.array.map.js");
138__webpack_require__(/*! ../modules/es6.array.filter */ "./node_modules/core-js/modules/es6.array.filter.js");
139__webpack_require__(/*! ../modules/es6.array.some */ "./node_modules/core-js/modules/es6.array.some.js");
140__webpack_require__(/*! ../modules/es6.array.every */ "./node_modules/core-js/modules/es6.array.every.js");
141__webpack_require__(/*! ../modules/es6.array.reduce */ "./node_modules/core-js/modules/es6.array.reduce.js");
142__webpack_require__(/*! ../modules/es6.array.reduce-right */ "./node_modules/core-js/modules/es6.array.reduce-right.js");
143__webpack_require__(/*! ../modules/es6.array.index-of */ "./node_modules/core-js/modules/es6.array.index-of.js");
144__webpack_require__(/*! ../modules/es6.array.last-index-of */ "./node_modules/core-js/modules/es6.array.last-index-of.js");
145__webpack_require__(/*! ../modules/es6.array.copy-within */ "./node_modules/core-js/modules/es6.array.copy-within.js");
146__webpack_require__(/*! ../modules/es6.array.fill */ "./node_modules/core-js/modules/es6.array.fill.js");
147__webpack_require__(/*! ../modules/es6.array.find */ "./node_modules/core-js/modules/es6.array.find.js");
148__webpack_require__(/*! ../modules/es6.array.find-index */ "./node_modules/core-js/modules/es6.array.find-index.js");
149__webpack_require__(/*! ../modules/es6.array.species */ "./node_modules/core-js/modules/es6.array.species.js");
150__webpack_require__(/*! ../modules/es6.array.iterator */ "./node_modules/core-js/modules/es6.array.iterator.js");
151__webpack_require__(/*! ../modules/es6.regexp.constructor */ "./node_modules/core-js/modules/es6.regexp.constructor.js");
152__webpack_require__(/*! ../modules/es6.regexp.to-string */ "./node_modules/core-js/modules/es6.regexp.to-string.js");
153__webpack_require__(/*! ../modules/es6.regexp.flags */ "./node_modules/core-js/modules/es6.regexp.flags.js");
154__webpack_require__(/*! ../modules/es6.regexp.match */ "./node_modules/core-js/modules/es6.regexp.match.js");
155__webpack_require__(/*! ../modules/es6.regexp.replace */ "./node_modules/core-js/modules/es6.regexp.replace.js");
156__webpack_require__(/*! ../modules/es6.regexp.search */ "./node_modules/core-js/modules/es6.regexp.search.js");
157__webpack_require__(/*! ../modules/es6.regexp.split */ "./node_modules/core-js/modules/es6.regexp.split.js");
158__webpack_require__(/*! ../modules/es6.promise */ "./node_modules/core-js/modules/es6.promise.js");
159__webpack_require__(/*! ../modules/es6.map */ "./node_modules/core-js/modules/es6.map.js");
160__webpack_require__(/*! ../modules/es6.set */ "./node_modules/core-js/modules/es6.set.js");
161__webpack_require__(/*! ../modules/es6.weak-map */ "./node_modules/core-js/modules/es6.weak-map.js");
162__webpack_require__(/*! ../modules/es6.weak-set */ "./node_modules/core-js/modules/es6.weak-set.js");
163__webpack_require__(/*! ../modules/es6.typed.array-buffer */ "./node_modules/core-js/modules/es6.typed.array-buffer.js");
164__webpack_require__(/*! ../modules/es6.typed.data-view */ "./node_modules/core-js/modules/es6.typed.data-view.js");
165__webpack_require__(/*! ../modules/es6.typed.int8-array */ "./node_modules/core-js/modules/es6.typed.int8-array.js");
166__webpack_require__(/*! ../modules/es6.typed.uint8-array */ "./node_modules/core-js/modules/es6.typed.uint8-array.js");
167__webpack_require__(/*! ../modules/es6.typed.uint8-clamped-array */ "./node_modules/core-js/modules/es6.typed.uint8-clamped-array.js");
168__webpack_require__(/*! ../modules/es6.typed.int16-array */ "./node_modules/core-js/modules/es6.typed.int16-array.js");
169__webpack_require__(/*! ../modules/es6.typed.uint16-array */ "./node_modules/core-js/modules/es6.typed.uint16-array.js");
170__webpack_require__(/*! ../modules/es6.typed.int32-array */ "./node_modules/core-js/modules/es6.typed.int32-array.js");
171__webpack_require__(/*! ../modules/es6.typed.uint32-array */ "./node_modules/core-js/modules/es6.typed.uint32-array.js");
172__webpack_require__(/*! ../modules/es6.typed.float32-array */ "./node_modules/core-js/modules/es6.typed.float32-array.js");
173__webpack_require__(/*! ../modules/es6.typed.float64-array */ "./node_modules/core-js/modules/es6.typed.float64-array.js");
174__webpack_require__(/*! ../modules/es6.reflect.apply */ "./node_modules/core-js/modules/es6.reflect.apply.js");
175__webpack_require__(/*! ../modules/es6.reflect.construct */ "./node_modules/core-js/modules/es6.reflect.construct.js");
176__webpack_require__(/*! ../modules/es6.reflect.define-property */ "./node_modules/core-js/modules/es6.reflect.define-property.js");
177__webpack_require__(/*! ../modules/es6.reflect.delete-property */ "./node_modules/core-js/modules/es6.reflect.delete-property.js");
178__webpack_require__(/*! ../modules/es6.reflect.enumerate */ "./node_modules/core-js/modules/es6.reflect.enumerate.js");
179__webpack_require__(/*! ../modules/es6.reflect.get */ "./node_modules/core-js/modules/es6.reflect.get.js");
180__webpack_require__(/*! ../modules/es6.reflect.get-own-property-descriptor */ "./node_modules/core-js/modules/es6.reflect.get-own-property-descriptor.js");
181__webpack_require__(/*! ../modules/es6.reflect.get-prototype-of */ "./node_modules/core-js/modules/es6.reflect.get-prototype-of.js");
182__webpack_require__(/*! ../modules/es6.reflect.has */ "./node_modules/core-js/modules/es6.reflect.has.js");
183__webpack_require__(/*! ../modules/es6.reflect.is-extensible */ "./node_modules/core-js/modules/es6.reflect.is-extensible.js");
184__webpack_require__(/*! ../modules/es6.reflect.own-keys */ "./node_modules/core-js/modules/es6.reflect.own-keys.js");
185__webpack_require__(/*! ../modules/es6.reflect.prevent-extensions */ "./node_modules/core-js/modules/es6.reflect.prevent-extensions.js");
186__webpack_require__(/*! ../modules/es6.reflect.set */ "./node_modules/core-js/modules/es6.reflect.set.js");
187__webpack_require__(/*! ../modules/es6.reflect.set-prototype-of */ "./node_modules/core-js/modules/es6.reflect.set-prototype-of.js");
188module.exports = __webpack_require__(/*! ../modules/_core */ "./node_modules/core-js/modules/_core.js");
189
190
191/***/ }),
192
vendor: 564 bytes, lines 193-205
193/***/ "./node_modules/core-js/fn/array/includes.js":
194/*!***************************************************!*\
195  !*** ./node_modules/core-js/fn/array/includes.js ***!
196  \***************************************************/
197/*! no static exports found */
198/***/ (function(module, exports, __webpack_require__) {
199
200__webpack_require__(/*! ../../modules/es7.array.includes */ "./node_modules/core-js/modules/es7.array.includes.js");
201module.exports = __webpack_require__(/*! ../../modules/_core */ "./node_modules/core-js/modules/_core.js").Array.includes;
202
203
204/***/ }),
205
vendor: 564 bytes, lines 206-218
206/***/ "./node_modules/core-js/fn/object/entries.js":
207/*!***************************************************!*\
208  !*** ./node_modules/core-js/fn/object/entries.js ***!
209  \***************************************************/
210/*! no static exports found */
211/***/ (function(module, exports, __webpack_require__) {
212
213__webpack_require__(/*! ../../modules/es7.object.entries */ "./node_modules/core-js/modules/es7.object.entries.js");
214module.exports = __webpack_require__(/*! ../../modules/_core */ "./node_modules/core-js/modules/_core.js").Object.entries;
215
216
217/***/ }),
218
vendor: 708 bytes, lines 219-231
219/***/ "./node_modules/core-js/fn/object/get-own-property-descriptors.js":
220/*!************************************************************************!*\
221  !*** ./node_modules/core-js/fn/object/get-own-property-descriptors.js ***!
222  \************************************************************************/
223/*! no static exports found */
224/***/ (function(module, exports, __webpack_require__) {
225
226__webpack_require__(/*! ../../modules/es7.object.get-own-property-descriptors */ "./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js");
227module.exports = __webpack_require__(/*! ../../modules/_core */ "./node_modules/core-js/modules/_core.js").Object.getOwnPropertyDescriptors;
228
229
230/***/ }),
231
vendor: 557 bytes, lines 232-244
232/***/ "./node_modules/core-js/fn/object/values.js":
233/*!**************************************************!*\
234  !*** ./node_modules/core-js/fn/object/values.js ***!
235  \**************************************************/
236/*! no static exports found */
237/***/ (function(module, exports, __webpack_require__) {
238
239__webpack_require__(/*! ../../modules/es7.object.values */ "./node_modules/core-js/modules/es7.object.values.js");
240module.exports = __webpack_require__(/*! ../../modules/_core */ "./node_modules/core-js/modules/_core.js").Object.values;
241
242
243/***/ }),
244
vendor: 692 bytes, lines 245-260
245/***/ "./node_modules/core-js/fn/promise/finally.js":
246/*!****************************************************!*\
247  !*** ./node_modules/core-js/fn/promise/finally.js ***!
248  \****************************************************/
249/*! no static exports found */
250/***/ (function(module, exports, __webpack_require__) {
251
252"use strict";
253
254__webpack_require__(/*! ../../modules/es6.promise */ "./node_modules/core-js/modules/es6.promise.js");
255__webpack_require__(/*! ../../modules/es7.promise.finally */ "./node_modules/core-js/modules/es7.promise.finally.js");
256module.exports = __webpack_require__(/*! ../../modules/_core */ "./node_modules/core-js/modules/_core.js").Promise['finally'];
257
258
259/***/ }),
260
vendor: 563 bytes, lines 261-273
261/***/ "./node_modules/core-js/fn/string/pad-end.js":
262/*!***************************************************!*\
263  !*** ./node_modules/core-js/fn/string/pad-end.js ***!
264  \***************************************************/
265/*! no static exports found */
266/***/ (function(module, exports, __webpack_require__) {
267
268__webpack_require__(/*! ../../modules/es7.string.pad-end */ "./node_modules/core-js/modules/es7.string.pad-end.js");
269module.exports = __webpack_require__(/*! ../../modules/_core */ "./node_modules/core-js/modules/_core.js").String.padEnd;
270
271
272/***/ }),
273
vendor: 577 bytes, lines 274-286
274/***/ "./node_modules/core-js/fn/string/pad-start.js":
275/*!*****************************************************!*\
276  !*** ./node_modules/core-js/fn/string/pad-start.js ***!
277  \*****************************************************/
278/*! no static exports found */
279/***/ (function(module, exports, __webpack_require__) {
280
281__webpack_require__(/*! ../../modules/es7.string.pad-start */ "./node_modules/core-js/modules/es7.string.pad-start.js");
282module.exports = __webpack_require__(/*! ../../modules/_core */ "./node_modules/core-js/modules/_core.js").String.padStart;
283
284
285/***/ }),
286
vendor: 616 bytes, lines 287-299
287/***/ "./node_modules/core-js/fn/symbol/async-iterator.js":
288/*!**********************************************************!*\
289  !*** ./node_modules/core-js/fn/symbol/async-iterator.js ***!
290  \**********************************************************/
291/*! no static exports found */
292/***/ (function(module, exports, __webpack_require__) {
293
294__webpack_require__(/*! ../../modules/es7.symbol.async-iterator */ "./node_modules/core-js/modules/es7.symbol.async-iterator.js");
295module.exports = __webpack_require__(/*! ../../modules/_wks-ext */ "./node_modules/core-js/modules/_wks-ext.js").f('asyncIterator');
296
297
298/***/ }),
299
vendor: 436 bytes, lines 300-314
300/***/ "./node_modules/core-js/modules/_a-function.js":
301/*!*****************************************************!*\
302  !*** ./node_modules/core-js/modules/_a-function.js ***!
303  \*****************************************************/
304/*! no static exports found */
305/***/ (function(module, exports) {
306
307module.exports = function (it) {
308  if (typeof it != 'function') throw TypeError(it + ' is not a function!');
309  return it;
310};
311
312
313/***/ }),
314
vendor: 564 bytes, lines 315-330
315/***/ "./node_modules/core-js/modules/_a-number-value.js":
316/*!*********************************************************!*\
317  !*** ./node_modules/core-js/modules/_a-number-value.js ***!
318  \*********************************************************/
319/*! no static exports found */
320/***/ (function(module, exports, __webpack_require__) {
321
322var cof = __webpack_require__(/*! ./_cof */ "./node_modules/core-js/modules/_cof.js");
323module.exports = function (it, msg) {
324  if (typeof it != 'number' && cof(it) != 'Number') throw TypeError(msg);
325  return +it;
326};
327
328
329/***/ }),
330
vendor: 778 bytes, lines 331-348
331/***/ "./node_modules/core-js/modules/_add-to-unscopables.js":
332/*!*************************************************************!*\
333  !*** ./node_modules/core-js/modules/_add-to-unscopables.js ***!
334  \*************************************************************/
335/*! no static exports found */
336/***/ (function(module, exports, __webpack_require__) {
337
338// 22.1.3.31 Array.prototype[@@unscopables]
339var UNSCOPABLES = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('unscopables');
340var ArrayProto = Array.prototype;
341if (ArrayProto[UNSCOPABLES] == undefined) __webpack_require__(/*! ./_hide */ "./node_modules/core-js/modules/_hide.js")(ArrayProto, UNSCOPABLES, {});
342module.exports = function (key) {
343  ArrayProto[UNSCOPABLES][key] = true;
344};
345
346
347/***/ }),
348
vendor: 552 bytes, lines 349-364
349/***/ "./node_modules/core-js/modules/_an-instance.js":
350/*!******************************************************!*\
351  !*** ./node_modules/core-js/modules/_an-instance.js ***!
352  \******************************************************/
353/*! no static exports found */
354/***/ (function(module, exports) {
355
356module.exports = function (it, Constructor, name, forbiddenField) {
357  if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {
358    throw TypeError(name + ': incorrect invocation!');
359  } return it;
360};
361
362
363/***/ }),
364
vendor: 546 bytes, lines 365-380
365/***/ "./node_modules/core-js/modules/_an-object.js":
366/*!****************************************************!*\
367  !*** ./node_modules/core-js/modules/_an-object.js ***!
368  \****************************************************/
369/*! no static exports found */
370/***/ (function(module, exports, __webpack_require__) {
371
372var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
373module.exports = function (it) {
374  if (!isObject(it)) throw TypeError(it + ' is not an object!');
375  return it;
376};
377
378
379/***/ }),
380
vendor: 1,437 bytes, lines 381-418
381/***/ "./node_modules/core-js/modules/_array-copy-within.js":
382/*!************************************************************!*\
383  !*** ./node_modules/core-js/modules/_array-copy-within.js ***!
384  \************************************************************/
385/*! no static exports found */
386/***/ (function(module, exports, __webpack_require__) {
387
388"use strict";
389// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)
390
391var toObject = __webpack_require__(/*! ./_to-object */ "./node_modules/core-js/modules/_to-object.js");
392var toAbsoluteIndex = __webpack_require__(/*! ./_to-absolute-index */ "./node_modules/core-js/modules/_to-absolute-index.js");
393var toLength = __webpack_require__(/*! ./_to-length */ "./node_modules/core-js/modules/_to-length.js");
394
395module.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {
396  var O = toObject(this);
397  var len = toLength(O.length);
398  var to = toAbsoluteIndex(target, len);
399  var from = toAbsoluteIndex(start, len);
400  var end = arguments.length > 2 ? arguments[2] : undefined;
401  var count = Math.min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);
402  var inc = 1;
403  if (from < to && to < from + count) {
404    inc = -1;
405    from += count - 1;
406    to += count - 1;
407  }
408  while (count-- > 0) {
409    if (from in O) O[to] = O[from];
410    else delete O[to];
411    to += inc;
412    from += inc;
413  } return O;
414};
415
416
417/***/ }),
418
vendor: 1,176 bytes, lines 419-445
419/***/ "./node_modules/core-js/modules/_array-fill.js":
420/*!*****************************************************!*\
421  !*** ./node_modules/core-js/modules/_array-fill.js ***!
422  \*****************************************************/
423/*! no static exports found */
424/***/ (function(module, exports, __webpack_require__) {
425
426"use strict";
427// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)
428
429var toObject = __webpack_require__(/*! ./_to-object */ "./node_modules/core-js/modules/_to-object.js");
430var toAbsoluteIndex = __webpack_require__(/*! ./_to-absolute-index */ "./node_modules/core-js/modules/_to-absolute-index.js");
431var toLength = __webpack_require__(/*! ./_to-length */ "./node_modules/core-js/modules/_to-length.js");
432module.exports = function fill(value /* , start = 0, end = @length */) {
433  var O = toObject(this);
434  var length = toLength(O.length);
435  var aLen = arguments.length;
436  var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length);
437  var end = aLen > 2 ? arguments[2] : undefined;
438  var endPos = end === undefined ? length : toAbsoluteIndex(end, length);
439  while (endPos > index) O[index++] = value;
440  return O;
441};
442
443
444/***/ }),
445
vendor: 1,473 bytes, lines 446-479
446/***/ "./node_modules/core-js/modules/_array-includes.js":
447/*!*********************************************************!*\
448  !*** ./node_modules/core-js/modules/_array-includes.js ***!
449  \*********************************************************/
450/*! no static exports found */
451/***/ (function(module, exports, __webpack_require__) {
452
453// false -> Array#indexOf
454// true  -> Array#includes
455var toIObject = __webpack_require__(/*! ./_to-iobject */ "./node_modules/core-js/modules/_to-iobject.js");
456var toLength = __webpack_require__(/*! ./_to-length */ "./node_modules/core-js/modules/_to-length.js");
457var toAbsoluteIndex = __webpack_require__(/*! ./_to-absolute-index */ "./node_modules/core-js/modules/_to-absolute-index.js");
458module.exports = function (IS_INCLUDES) {
459  return function ($this, el, fromIndex) {
460    var O = toIObject($this);
461    var length = toLength(O.length);
462    var index = toAbsoluteIndex(fromIndex, length);
463    var value;
464    // Array#includes uses SameValueZero equality algorithm
465    // eslint-disable-next-line no-self-compare
466    if (IS_INCLUDES && el != el) while (length > index) {
467      value = O[index++];
468      // eslint-disable-next-line no-self-compare
469      if (value != value) return true;
470    // Array#indexOf ignores holes, Array#includes - not
471    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {
472      if (O[index] === el) return IS_INCLUDES || index || 0;
473    } return !IS_INCLUDES && -1;
474  };
475};
476
477
478/***/ }),
479
vendor: 2,161 bytes, lines 480-534
480/***/ "./node_modules/core-js/modules/_array-methods.js":
481/*!********************************************************!*\
482  !*** ./node_modules/core-js/modules/_array-methods.js ***!
483  \********************************************************/
484/*! no static exports found */
485/***/ (function(module, exports, __webpack_require__) {
486
487// 0 -> Array#forEach
488// 1 -> Array#map
489// 2 -> Array#filter
490// 3 -> Array#some
491// 4 -> Array#every
492// 5 -> Array#find
493// 6 -> Array#findIndex
494var ctx = __webpack_require__(/*! ./_ctx */ "./node_modules/core-js/modules/_ctx.js");
495var IObject = __webpack_require__(/*! ./_iobject */ "./node_modules/core-js/modules/_iobject.js");
496var toObject = __webpack_require__(/*! ./_to-object */ "./node_modules/core-js/modules/_to-object.js");
497var toLength = __webpack_require__(/*! ./_to-length */ "./node_modules/core-js/modules/_to-length.js");
498var asc = __webpack_require__(/*! ./_array-species-create */ "./node_modules/core-js/modules/_array-species-create.js");
499module.exports = function (TYPE, $create) {
500  var IS_MAP = TYPE == 1;
501  var IS_FILTER = TYPE == 2;
502  var IS_SOME = TYPE == 3;
503  var IS_EVERY = TYPE == 4;
504  var IS_FIND_INDEX = TYPE == 6;
505  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
506  var create = $create || asc;
507  return function ($this, callbackfn, that) {
508    var O = toObject($this);
509    var self = IObject(O);
510    var f = ctx(callbackfn, that, 3);
511    var length = toLength(self.length);
512    var index = 0;
513    var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;
514    var val, res;
515    for (;length > index; index++) if (NO_HOLES || index in self) {
516      val = self[index];
517      res = f(val, index, O);
518      if (TYPE) {
519        if (IS_MAP) result[index] = res;   // map
520        else if (res) switch (TYPE) {
521          case 3: return true;             // some
522          case 5: return val;              // find
523          case 6: return index;            // findIndex
524          case 2: result.push(val);        // filter
525        } else if (IS_EVERY) return false; // every
526      }
527    }
528    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;
529  };
530};
531
532
533/***/ }),
534
vendor: 1,416 bytes, lines 535-573
535/***/ "./node_modules/core-js/modules/_array-reduce.js":
536/*!*******************************************************!*\
537  !*** ./node_modules/core-js/modules/_array-reduce.js ***!
538  \*******************************************************/
539/*! no static exports found */
540/***/ (function(module, exports, __webpack_require__) {
541
542var aFunction = __webpack_require__(/*! ./_a-function */ "./node_modules/core-js/modules/_a-function.js");
543var toObject = __webpack_require__(/*! ./_to-object */ "./node_modules/core-js/modules/_to-object.js");
544var IObject = __webpack_require__(/*! ./_iobject */ "./node_modules/core-js/modules/_iobject.js");
545var toLength = __webpack_require__(/*! ./_to-length */ "./node_modules/core-js/modules/_to-length.js");
546
547module.exports = function (that, callbackfn, aLen, memo, isRight) {
548  aFunction(callbackfn);
549  var O = toObject(that);
550  var self = IObject(O);
551  var length = toLength(O.length);
552  var index = isRight ? length - 1 : 0;
553  var i = isRight ? -1 : 1;
554  if (aLen < 2) for (;;) {
555    if (index in self) {
556      memo = self[index];
557      index += i;
558      break;
559    }
560    index += i;
561    if (isRight ? index < 0 : length <= index) {
562      throw TypeError('Reduce of empty array with no initial value');
563    }
564  }
565  for (;isRight ? index >= 0 : length > index; index += i) if (index in self) {
566    memo = callbackfn(memo, self[index], index, O);
567  }
568  return memo;
569};
570
571
572/***/ }),
573
vendor: 1,052 bytes, lines 574-600
574/***/ "./node_modules/core-js/modules/_array-species-constructor.js":
575/*!********************************************************************!*\
576  !*** ./node_modules/core-js/modules/_array-species-constructor.js ***!
577  \********************************************************************/
578/*! no static exports found */
579/***/ (function(module, exports, __webpack_require__) {
580
581var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
582var isArray = __webpack_require__(/*! ./_is-array */ "./node_modules/core-js/modules/_is-array.js");
583var SPECIES = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('species');
584
585module.exports = function (original) {
586  var C;
587  if (isArray(original)) {
588    C = original.constructor;
589    // cross-realm fallback
590    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;
591    if (isObject(C)) {
592      C = C[SPECIES];
593      if (C === null) C = undefined;
594    }
595  } return C === undefined ? Array : C;
596};
597
598
599/***/ }),
600
vendor: 675 bytes, lines 601-617
601/***/ "./node_modules/core-js/modules/_array-species-create.js":
602/*!***************************************************************!*\
603  !*** ./node_modules/core-js/modules/_array-species-create.js ***!
604  \***************************************************************/
605/*! no static exports found */
606/***/ (function(module, exports, __webpack_require__) {
607
608// 9.4.2.3 ArraySpeciesCreate(originalArray, length)
609var speciesConstructor = __webpack_require__(/*! ./_array-species-constructor */ "./node_modules/core-js/modules/_array-species-constructor.js");
610
611module.exports = function (original, length) {
612  return new (speciesConstructor(original))(length);
613};
614
615
616/***/ }),
617
vendor: 1,402 bytes, lines 618-654
618/***/ "./node_modules/core-js/modules/_bind.js":
619/*!***********************************************!*\
620  !*** ./node_modules/core-js/modules/_bind.js ***!
621  \***********************************************/
622/*! no static exports found */
623/***/ (function(module, exports, __webpack_require__) {
624
625"use strict";
626
627var aFunction = __webpack_require__(/*! ./_a-function */ "./node_modules/core-js/modules/_a-function.js");
628var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
629var invoke = __webpack_require__(/*! ./_invoke */ "./node_modules/core-js/modules/_invoke.js");
630var arraySlice = [].slice;
631var factories = {};
632
633var construct = function (F, len, args) {
634  if (!(len in factories)) {
635    for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';
636    // eslint-disable-next-line no-new-func
637    factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');
638  } return factories[len](F, args);
639};
640
641module.exports = Function.bind || function bind(that /* , ...args */) {
642  var fn = aFunction(this);
643  var partArgs = arraySlice.call(arguments, 1);
644  var bound = function (/* args... */) {
645    var args = partArgs.concat(arraySlice.call(arguments));
646    return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);
647  };
648  if (isObject(fn.prototype)) bound.prototype = fn.prototype;
649  return bound;
650};
651
652
653/***/ }),
654
vendor: 1,154 bytes, lines 655-688
655/***/ "./node_modules/core-js/modules/_classof.js":
656/*!**************************************************!*\
657  !*** ./node_modules/core-js/modules/_classof.js ***!
658  \**************************************************/
659/*! no static exports found */
660/***/ (function(module, exports, __webpack_require__) {
661
662// getting tag from 19.1.3.6 Object.prototype.toString()
663var cof = __webpack_require__(/*! ./_cof */ "./node_modules/core-js/modules/_cof.js");
664var TAG = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('toStringTag');
665// ES3 wrong here
666var ARG = cof(function () { return arguments; }()) == 'Arguments';
667
668// fallback for IE11 Script Access Denied error
669var tryGet = function (it, key) {
670  try {
671    return it[key];
672  } catch (e) { /* empty */ }
673};
674
675module.exports = function (it) {
676  var O, T, B;
677  return it === undefined ? 'Undefined' : it === null ? 'Null'
678    // @@toStringTag case
679    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T
680    // builtinTag case
681    : ARG ? cof(O)
682    // ES3 arguments fallback
683    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
684};
685
686
687/***/ }),
688
vendor: 389 bytes, lines 689-704
689/***/ "./node_modules/core-js/modules/_cof.js":
690/*!**********************************************!*\
691  !*** ./node_modules/core-js/modules/_cof.js ***!
692  \**********************************************/
693/*! no static exports found */
694/***/ (function(module, exports) {
695
696var toString = {}.toString;
697
698module.exports = function (it) {
699  return toString.call(it).slice(8, -1);
700};
701
702
703/***/ }),
704
vendor: 6,159 bytes, lines 705-860
705/***/ "./node_modules/core-js/modules/_collection-strong.js":
706/*!************************************************************!*\
707  !*** ./node_modules/core-js/modules/_collection-strong.js ***!
708  \************************************************************/
709/*! no static exports found */
710/***/ (function(module, exports, __webpack_require__) {
711
712"use strict";
713
714var dP = __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/modules/_object-dp.js").f;
715var create = __webpack_require__(/*! ./_object-create */ "./node_modules/core-js/modules/_object-create.js");
716var redefineAll = __webpack_require__(/*! ./_redefine-all */ "./node_modules/core-js/modules/_redefine-all.js");
717var ctx = __webpack_require__(/*! ./_ctx */ "./node_modules/core-js/modules/_ctx.js");
718var anInstance = __webpack_require__(/*! ./_an-instance */ "./node_modules/core-js/modules/_an-instance.js");
719var forOf = __webpack_require__(/*! ./_for-of */ "./node_modules/core-js/modules/_for-of.js");
720var $iterDefine = __webpack_require__(/*! ./_iter-define */ "./node_modules/core-js/modules/_iter-define.js");
721var step = __webpack_require__(/*! ./_iter-step */ "./node_modules/core-js/modules/_iter-step.js");
722var setSpecies = __webpack_require__(/*! ./_set-species */ "./node_modules/core-js/modules/_set-species.js");
723var DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js");
724var fastKey = __webpack_require__(/*! ./_meta */ "./node_modules/core-js/modules/_meta.js").fastKey;
725var validate = __webpack_require__(/*! ./_validate-collection */ "./node_modules/core-js/modules/_validate-collection.js");
726var SIZE = DESCRIPTORS ? '_s' : 'size';
727
728var getEntry = function (that, key) {
729  // fast case
730  var index = fastKey(key);
731  var entry;
732  if (index !== 'F') return that._i[index];
733  // frozen object case
734  for (entry = that._f; entry; entry = entry.n) {
735    if (entry.k == key) return entry;
736  }
737};
738
739module.exports = {
740  getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {
741    var C = wrapper(function (that, iterable) {
742      anInstance(that, C, NAME, '_i');
743      that._t = NAME;         // collection type
744      that._i = create(null); // index
745      that._f = undefined;    // first entry
746      that._l = undefined;    // last entry
747      that[SIZE] = 0;         // size
748      if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
749    });
750    redefineAll(C.prototype, {
751      // 23.1.3.1 Map.prototype.clear()
752      // 23.2.3.2 Set.prototype.clear()
753      clear: function clear() {
754        for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {
755          entry.r = true;
756          if (entry.p) entry.p = entry.p.n = undefined;
757          delete data[entry.i];
758        }
759        that._f = that._l = undefined;
760        that[SIZE] = 0;
761      },
762      // 23.1.3.3 Map.prototype.delete(key)
763      // 23.2.3.4 Set.prototype.delete(value)
764      'delete': function (key) {
765        var that = validate(this, NAME);
766        var entry = getEntry(that, key);
767        if (entry) {
768          var next = entry.n;
769          var prev = entry.p;
770          delete that._i[entry.i];
771          entry.r = true;
772          if (prev) prev.n = next;
773          if (next) next.p = prev;
774          if (that._f == entry) that._f = next;
775          if (that._l == entry) that._l = prev;
776          that[SIZE]--;
777        } return !!entry;
778      },
779      // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)
780      // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)
781      forEach: function forEach(callbackfn /* , that = undefined */) {
782        validate(this, NAME);
783        var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
784        var entry;
785        while (entry = entry ? entry.n : this._f) {
786          f(entry.v, entry.k, this);
787          // revert to the last existing entry
788          while (entry && entry.r) entry = entry.p;
789        }
790      },
791      // 23.1.3.7 Map.prototype.has(key)
792      // 23.2.3.7 Set.prototype.has(value)
793      has: function has(key) {
794        return !!getEntry(validate(this, NAME), key);
795      }
796    });
797    if (DESCRIPTORS) dP(C.prototype, 'size', {
798      get: function () {
799        return validate(this, NAME)[SIZE];
800      }
801    });
802    return C;
803  },
804  def: function (that, key, value) {
805    var entry = getEntry(that, key);
806    var prev, index;
807    // change existing entry
808    if (entry) {
809      entry.v = value;
810    // create new entry
811    } else {
812      that._l = entry = {
813        i: index = fastKey(key, true), // <- index
814        k: key,                        // <- key
815        v: value,                      // <- value
816        p: prev = that._l,             // <- previous entry
817        n: undefined,                  // <- next entry
818        r: false                       // <- removed
819      };
820      if (!that._f) that._f = entry;
821      if (prev) prev.n = entry;
822      that[SIZE]++;
823      // add to index
824      if (index !== 'F') that._i[index] = entry;
825    } return that;
826  },
827  getEntry: getEntry,
828  setStrong: function (C, NAME, IS_MAP) {
829    // add .keys, .values, .entries, [@@iterator]
830    // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11
831    $iterDefine(C, NAME, function (iterated, kind) {
832      this._t = validate(iterated, NAME); // target
833      this._k = kind;                     // kind
834      this._l = undefined;                // previous
835    }, function () {
836      var that = this;
837      var kind = that._k;
838      var entry = that._l;
839      // revert to the last existing entry
840      while (entry && entry.r) entry = entry.p;
841      // get next entry
842      if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {
843        // or finish the iteration
844        that._t = undefined;
845        return step(1);
846      }
847      // return step by kind
848      if (kind == 'keys') return step(0, entry.k);
849      if (kind == 'values') return step(0, entry.v);
850      return step(0, [entry.k, entry.v]);
851    }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);
852
853    // add [@@species], 23.1.2.2, 23.2.2.2
854    setSpecies(NAME);
855  }
856};
857
858
859/***/ }),
860
vendor: 3,722 bytes, lines 861-957
861/***/ "./node_modules/core-js/modules/_collection-weak.js":
862/*!**********************************************************!*\
863  !*** ./node_modules/core-js/modules/_collection-weak.js ***!
864  \**********************************************************/
865/*! no static exports found */
866/***/ (function(module, exports, __webpack_require__) {
867
868"use strict";
869
870var redefineAll = __webpack_require__(/*! ./_redefine-all */ "./node_modules/core-js/modules/_redefine-all.js");
871var getWeak = __webpack_require__(/*! ./_meta */ "./node_modules/core-js/modules/_meta.js").getWeak;
872var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
873var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
874var anInstance = __webpack_require__(/*! ./_an-instance */ "./node_modules/core-js/modules/_an-instance.js");
875var forOf = __webpack_require__(/*! ./_for-of */ "./node_modules/core-js/modules/_for-of.js");
876var createArrayMethod = __webpack_require__(/*! ./_array-methods */ "./node_modules/core-js/modules/_array-methods.js");
877var $has = __webpack_require__(/*! ./_has */ "./node_modules/core-js/modules/_has.js");
878var validate = __webpack_require__(/*! ./_validate-collection */ "./node_modules/core-js/modules/_validate-collection.js");
879var arrayFind = createArrayMethod(5);
880var arrayFindIndex = createArrayMethod(6);
881var id = 0;
882
883// fallback for uncaught frozen keys
884var uncaughtFrozenStore = function (that) {
885  return that._l || (that._l = new UncaughtFrozenStore());
886};
887var UncaughtFrozenStore = function () {
888  this.a = [];
889};
890var findUncaughtFrozen = function (store, key) {
891  return arrayFind(store.a, function (it) {
892    return it[0] === key;
893  });
894};
895UncaughtFrozenStore.prototype = {
896  get: function (key) {
897    var entry = findUncaughtFrozen(this, key);
898    if (entry) return entry[1];
899  },
900  has: function (key) {
901    return !!findUncaughtFrozen(this, key);
902  },
903  set: function (key, value) {
904    var entry = findUncaughtFrozen(this, key);
905    if (entry) entry[1] = value;
906    else this.a.push([key, value]);
907  },
908  'delete': function (key) {
909    var index = arrayFindIndex(this.a, function (it) {
910      return it[0] === key;
911    });
912    if (~index) this.a.splice(index, 1);
913    return !!~index;
914  }
915};
916
917module.exports = {
918  getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {
919    var C = wrapper(function (that, iterable) {
920      anInstance(that, C, NAME, '_i');
921      that._t = NAME;      // collection type
922      that._i = id++;      // collection id
923      that._l = undefined; // leak store for uncaught frozen objects
924      if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
925    });
926    redefineAll(C.prototype, {
927      // 23.3.3.2 WeakMap.prototype.delete(key)
928      // 23.4.3.3 WeakSet.prototype.delete(value)
929      'delete': function (key) {
930        if (!isObject(key)) return false;
931        var data = getWeak(key);
932        if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);
933        return data && $has(data, this._i) && delete data[this._i];
934      },
935      // 23.3.3.4 WeakMap.prototype.has(key)
936      // 23.4.3.4 WeakSet.prototype.has(value)
937      has: function has(key) {
938        if (!isObject(key)) return false;
939        var data = getWeak(key);
940        if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);
941        return data && $has(data, this._i);
942      }
943    });
944    return C;
945  },
946  def: function (that, key, value) {
947    var data = getWeak(anObject(key), true);
948    if (data === true) uncaughtFrozenStore(that).set(key, value);
949    else data[that._i] = value;
950    return that;
951  },
952  ufstore: uncaughtFrozenStore
953};
954
955
956/***/ }),
957
vendor: 4,414 bytes, lines 958-1054
958/***/ "./node_modules/core-js/modules/_collection.js":
959/*!*****************************************************!*\
960  !*** ./node_modules/core-js/modules/_collection.js ***!
961  \*****************************************************/
962/*! no static exports found */
963/***/ (function(module, exports, __webpack_require__) {
964
965"use strict";
966
967var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
968var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
969var redefine = __webpack_require__(/*! ./_redefine */ "./node_modules/core-js/modules/_redefine.js");
970var redefineAll = __webpack_require__(/*! ./_redefine-all */ "./node_modules/core-js/modules/_redefine-all.js");
971var meta = __webpack_require__(/*! ./_meta */ "./node_modules/core-js/modules/_meta.js");
972var forOf = __webpack_require__(/*! ./_for-of */ "./node_modules/core-js/modules/_for-of.js");
973var anInstance = __webpack_require__(/*! ./_an-instance */ "./node_modules/core-js/modules/_an-instance.js");
974var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
975var fails = __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js");
976var $iterDetect = __webpack_require__(/*! ./_iter-detect */ "./node_modules/core-js/modules/_iter-detect.js");
977var setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ "./node_modules/core-js/modules/_set-to-string-tag.js");
978var inheritIfRequired = __webpack_require__(/*! ./_inherit-if-required */ "./node_modules/core-js/modules/_inherit-if-required.js");
979
980module.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {
981  var Base = global[NAME];
982  var C = Base;
983  var ADDER = IS_MAP ? 'set' : 'add';
984  var proto = C && C.prototype;
985  var O = {};
986  var fixMethod = function (KEY) {
987    var fn = proto[KEY];
988    redefine(proto, KEY,
989      KEY == 'delete' ? function (a) {
990        return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);
991      } : KEY == 'has' ? function has(a) {
992        return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);
993      } : KEY == 'get' ? function get(a) {
994        return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);
995      } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }
996        : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }
997    );
998  };
999  if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {
1000    new C().entries().next();
1001  }))) {
1002    // create collection constructor
1003    C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);
1004    redefineAll(C.prototype, methods);
1005    meta.NEED = true;
1006  } else {
1007    var instance = new C();
1008    // early implementations not supports chaining
1009    var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;
1010    // V8 ~  Chromium 40- weak-collections throws on primitives, but should return false
1011    var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });
1012    // most early implementations doesn't supports iterables, most modern - not close it correctly
1013    var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new
1014    // for early implementations -0 and +0 not the same
1015    var BUGGY_ZERO = !IS_WEAK && fails(function () {
1016      // V8 ~ Chromium 42- fails only with 5+ elements
1017      var $instance = new C();
1018      var index = 5;
1019      while (index--) $instance[ADDER](index, index);
1020      return !$instance.has(-0);
1021    });
1022    if (!ACCEPT_ITERABLES) {
1023      C = wrapper(function (target, iterable) {
1024        anInstance(target, C, NAME);
1025        var that = inheritIfRequired(new Base(), target, C);
1026        if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
1027        return that;
1028      });
1029      C.prototype = proto;
1030      proto.constructor = C;
1031    }
1032    if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {
1033      fixMethod('delete');
1034      fixMethod('has');
1035      IS_MAP && fixMethod('get');
1036    }
1037    if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);
1038    // weak collections should not contains .clear method
1039    if (IS_WEAK && proto.clear) delete proto.clear;
1040  }
1041
1042  setToStringTag(C, NAME);
1043
1044  O[NAME] = C;
1045  $export($export.G + $export.W + $export.F * (C != Base), O);
1046
1047  if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);
1048
1049  return C;
1050};
1051
1052
1053/***/ }),
1054
vendor: 409 bytes, lines 1055-1067
1055/***/ "./node_modules/core-js/modules/_core.js":
1056/*!***********************************************!*\
1057  !*** ./node_modules/core-js/modules/_core.js ***!
1058  \***********************************************/
1059/*! no static exports found */
1060/***/ (function(module, exports) {
1061
1062var core = module.exports = { version: '2.5.7' };
1063if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef
1064
1065
1066/***/ }),
1067
vendor: 756 bytes, lines 1068-1087
1068/***/ "./node_modules/core-js/modules/_create-property.js":
1069/*!**********************************************************!*\
1070  !*** ./node_modules/core-js/modules/_create-property.js ***!
1071  \**********************************************************/
1072/*! no static exports found */
1073/***/ (function(module, exports, __webpack_require__) {
1074
1075"use strict";
1076
1077var $defineProperty = __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/modules/_object-dp.js");
1078var createDesc = __webpack_require__(/*! ./_property-desc */ "./node_modules/core-js/modules/_property-desc.js");
1079
1080module.exports = function (object, index, value) {
1081  if (index in object) $defineProperty.f(object, index, createDesc(0, value));
1082  else object[index] = value;
1083};
1084
1085
1086/***/ }),
1087
vendor: 889 bytes, lines 1088-1118
1088/***/ "./node_modules/core-js/modules/_ctx.js":
1089/*!**********************************************!*\
1090  !*** ./node_modules/core-js/modules/_ctx.js ***!
1091  \**********************************************/
1092/*! no static exports found */
1093/***/ (function(module, exports, __webpack_require__) {
1094
1095// optional / simple context binding
1096var aFunction = __webpack_require__(/*! ./_a-function */ "./node_modules/core-js/modules/_a-function.js");
1097module.exports = function (fn, that, length) {
1098  aFunction(fn);
1099  if (that === undefined) return fn;
1100  switch (length) {
1101    case 1: return function (a) {
1102      return fn.call(that, a);
1103    };
1104    case 2: return function (a, b) {
1105      return fn.call(that, a, b);
1106    };
1107    case 3: return function (a, b, c) {
1108      return fn.call(that, a, b, c);
1109    };
1110  }
1111  return function (/* ...args */) {
1112    return fn.apply(that, arguments);
1113  };
1114};
1115
1116
1117/***/ }),
1118
vendor: 1,421 bytes, lines 1119-1156
1119/***/ "./node_modules/core-js/modules/_date-to-iso-string.js":
1120/*!*************************************************************!*\
1121  !*** ./node_modules/core-js/modules/_date-to-iso-string.js ***!
1122  \*************************************************************/
1123/*! no static exports found */
1124/***/ (function(module, exports, __webpack_require__) {
1125
1126"use strict";
1127
1128// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()
1129var fails = __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js");
1130var getTime = Date.prototype.getTime;
1131var $toISOString = Date.prototype.toISOString;
1132
1133var lz = function (num) {
1134  return num > 9 ? num : '0' + num;
1135};
1136
1137// PhantomJS / old WebKit has a broken implementations
1138module.exports = (fails(function () {
1139  return $toISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z';
1140}) || !fails(function () {
1141  $toISOString.call(new Date(NaN));
1142})) ? function toISOString() {
1143  if (!isFinite(getTime.call(this))) throw RangeError('Invalid time value');
1144  var d = this;
1145  var y = d.getUTCFullYear();
1146  var m = d.getUTCMilliseconds();
1147  var s = y < 0 ? '-' : y > 9999 ? '+' : '';
1148  return s + ('00000' + Math.abs(y)).slice(s ? -6 : -4) +
1149    '-' + lz(d.getUTCMonth() + 1) + '-' + lz(d.getUTCDate()) +
1150    'T' + lz(d.getUTCHours()) + ':' + lz(d.getUTCMinutes()) +
1151    ':' + lz(d.getUTCSeconds()) + '.' + (m > 99 ? m : '0' + lz(m)) + 'Z';
1152} : $toISOString;
1153
1154
1155/***/ }),
1156
vendor: 809 bytes, lines 1157-1177
1157/***/ "./node_modules/core-js/modules/_date-to-primitive.js":
1158/*!************************************************************!*\
1159  !*** ./node_modules/core-js/modules/_date-to-primitive.js ***!
1160  \************************************************************/
1161/*! no static exports found */
1162/***/ (function(module, exports, __webpack_require__) {
1163
1164"use strict";
1165
1166var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
1167var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "./node_modules/core-js/modules/_to-primitive.js");
1168var NUMBER = 'number';
1169
1170module.exports = function (hint) {
1171  if (hint !== 'string' && hint !== NUMBER && hint !== 'default') throw TypeError('Incorrect hint');
1172  return toPrimitive(anObject(this), hint != NUMBER);
1173};
1174
1175
1176/***/ }),
1177
vendor: 461 bytes, lines 1178-1193
1178/***/ "./node_modules/core-js/modules/_defined.js":
1179/*!**************************************************!*\
1180  !*** ./node_modules/core-js/modules/_defined.js ***!
1181  \**************************************************/
1182/*! no static exports found */
1183/***/ (function(module, exports) {
1184
1185// 7.2.1 RequireObjectCoercible(argument)
1186module.exports = function (it) {
1187  if (it == undefined) throw TypeError("Can't call method on  " + it);
1188  return it;
1189};
1190
1191
1192/***/ }),
1193
vendor: 580 bytes, lines 1194-1208
1194/***/ "./node_modules/core-js/modules/_descriptors.js":
1195/*!******************************************************!*\
1196  !*** ./node_modules/core-js/modules/_descriptors.js ***!
1197  \******************************************************/
1198/*! no static exports found */
1199/***/ (function(module, exports, __webpack_require__) {
1200
1201// Thank's IE8 for his funny defineProperty
1202module.exports = !__webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js")(function () {
1203  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
1204});
1205
1206
1207/***/ }),
1208
vendor: 746 bytes, lines 1209-1226
1209/***/ "./node_modules/core-js/modules/_dom-create.js":
1210/*!*****************************************************!*\
1211  !*** ./node_modules/core-js/modules/_dom-create.js ***!
1212  \*****************************************************/
1213/*! no static exports found */
1214/***/ (function(module, exports, __webpack_require__) {
1215
1216var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
1217var document = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js").document;
1218// typeof document.createElement is 'object' in old IE
1219var is = isObject(document) && isObject(document.createElement);
1220module.exports = function (it) {
1221  return is ? document.createElement(it) : {};
1222};
1223
1224
1225/***/ }),
1226
vendor: 483 bytes, lines 1227-1241
1227/***/ "./node_modules/core-js/modules/_enum-bug-keys.js":
1228/*!********************************************************!*\
1229  !*** ./node_modules/core-js/modules/_enum-bug-keys.js ***!
1230  \********************************************************/
1231/*! no static exports found */
1232/***/ (function(module, exports) {
1233
1234// IE 8- don't enum bug keys
1235module.exports = (
1236  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
1237).split(',');
1238
1239
1240/***/ }),
1241
vendor: 994 bytes, lines 1242-1267
1242/***/ "./node_modules/core-js/modules/_enum-keys.js":
1243/*!****************************************************!*\
1244  !*** ./node_modules/core-js/modules/_enum-keys.js ***!
1245  \****************************************************/
1246/*! no static exports found */
1247/***/ (function(module, exports, __webpack_require__) {
1248
1249// all enumerable object keys, includes symbols
1250var getKeys = __webpack_require__(/*! ./_object-keys */ "./node_modules/core-js/modules/_object-keys.js");
1251var gOPS = __webpack_require__(/*! ./_object-gops */ "./node_modules/core-js/modules/_object-gops.js");
1252var pIE = __webpack_require__(/*! ./_object-pie */ "./node_modules/core-js/modules/_object-pie.js");
1253module.exports = function (it) {
1254  var result = getKeys(it);
1255  var getSymbols = gOPS.f;
1256  if (getSymbols) {
1257    var symbols = getSymbols(it);
1258    var isEnum = pIE.f;
1259    var i = 0;
1260    var key;
1261    while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);
1262  } return result;
1263};
1264
1265
1266/***/ }),
1267
vendor: 2,217 bytes, lines 1268-1321
1268/***/ "./node_modules/core-js/modules/_export.js":
1269/*!*************************************************!*\
1270  !*** ./node_modules/core-js/modules/_export.js ***!
1271  \*************************************************/
1272/*! no static exports found */
1273/***/ (function(module, exports, __webpack_require__) {
1274
1275var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
1276var core = __webpack_require__(/*! ./_core */ "./node_modules/core-js/modules/_core.js");
1277var hide = __webpack_require__(/*! ./_hide */ "./node_modules/core-js/modules/_hide.js");
1278var redefine = __webpack_require__(/*! ./_redefine */ "./node_modules/core-js/modules/_redefine.js");
1279var ctx = __webpack_require__(/*! ./_ctx */ "./node_modules/core-js/modules/_ctx.js");
1280var PROTOTYPE = 'prototype';
1281
1282var $export = function (type, name, source) {
1283  var IS_FORCED = type & $export.F;
1284  var IS_GLOBAL = type & $export.G;
1285  var IS_STATIC = type & $export.S;
1286  var IS_PROTO = type & $export.P;
1287  var IS_BIND = type & $export.B;
1288  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];
1289  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
1290  var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});
1291  var key, own, out, exp;
1292  if (IS_GLOBAL) source = name;
1293  for (key in source) {
1294    // contains in native
1295    own = !IS_FORCED && target && target[key] !== undefined;
1296    // export native or passed
1297    out = (own ? target : source)[key];
1298    // bind timers to global for call from export context
1299    exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
1300    // extend global
1301    if (target) redefine(target, key, out, type & $export.U);
1302    // export
1303    if (exports[key] != out) hide(exports, key, exp);
1304    if (IS_PROTO && expProto[key] != out) expProto[key] = out;
1305  }
1306};
1307global.core = core;
1308// type bitmap
1309$export.F = 1;   // forced
1310$export.G = 2;   // global
1311$export.S = 4;   // static
1312$export.P = 8;   // proto
1313$export.B = 16;  // bind
1314$export.W = 32;  // wrap
1315$export.U = 64;  // safe
1316$export.R = 128; // real proto method for `library`
1317module.exports = $export;
1318
1319
1320/***/ }),
1321
vendor: 661 bytes, lines 1322-1344
1322/***/ "./node_modules/core-js/modules/_fails-is-regexp.js":
1323/*!**********************************************************!*\
1324  !*** ./node_modules/core-js/modules/_fails-is-regexp.js ***!
1325  \**********************************************************/
1326/*! no static exports found */
1327/***/ (function(module, exports, __webpack_require__) {
1328
1329var MATCH = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('match');
1330module.exports = function (KEY) {
1331  var re = /./;
1332  try {
1333    '/./'[KEY](re);
1334  } catch (e) {
1335    try {
1336      re[MATCH] = false;
1337      return !'/./'[KEY](re);
1338    } catch (f) { /* empty */ }
1339  } return true;
1340};
1341
1342
1343/***/ }),
1344
vendor: 395 bytes, lines 1345-1362
1345/***/ "./node_modules/core-js/modules/_fails.js":
1346/*!************************************************!*\
1347  !*** ./node_modules/core-js/modules/_fails.js ***!
1348  \************************************************/
1349/*! no static exports found */
1350/***/ (function(module, exports) {
1351
1352module.exports = function (exec) {
1353  try {
1354    return !!exec();
1355  } catch (e) {
1356    return true;
1357  }
1358};
1359
1360
1361/***/ }),
1362
vendor: 1,572 bytes, lines 1363-1402
1363/***/ "./node_modules/core-js/modules/_fix-re-wks.js":
1364/*!*****************************************************!*\
1365  !*** ./node_modules/core-js/modules/_fix-re-wks.js ***!
1366  \*****************************************************/
1367/*! no static exports found */
1368/***/ (function(module, exports, __webpack_require__) {
1369
1370"use strict";
1371
1372var hide = __webpack_require__(/*! ./_hide */ "./node_modules/core-js/modules/_hide.js");
1373var redefine = __webpack_require__(/*! ./_redefine */ "./node_modules/core-js/modules/_redefine.js");
1374var fails = __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js");
1375var defined = __webpack_require__(/*! ./_defined */ "./node_modules/core-js/modules/_defined.js");
1376var wks = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js");
1377
1378module.exports = function (KEY, length, exec) {
1379  var SYMBOL = wks(KEY);
1380  var fns = exec(defined, SYMBOL, ''[KEY]);
1381  var strfn = fns[0];
1382  var rxfn = fns[1];
1383  if (fails(function () {
1384    var O = {};
1385    O[SYMBOL] = function () { return 7; };
1386    return ''[KEY](O) != 7;
1387  })) {
1388    redefine(String.prototype, KEY, strfn);
1389    hide(RegExp.prototype, SYMBOL, length == 2
1390      // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)
1391      // 21.2.5.11 RegExp.prototype[@@split](string, limit)
1392      ? function (string, arg) { return rxfn.call(string, this, arg); }
1393      // 21.2.5.6 RegExp.prototype[@@match](string)
1394      // 21.2.5.9 RegExp.prototype[@@search](string)
1395      : function (string) { return rxfn.call(string, this); }
1396    );
1397  }
1398};
1399
1400
1401/***/ }),
1402
vendor: 747 bytes, lines 1403-1427
1403/***/ "./node_modules/core-js/modules/_flags.js":
1404/*!************************************************!*\
1405  !*** ./node_modules/core-js/modules/_flags.js ***!
1406  \************************************************/
1407/*! no static exports found */
1408/***/ (function(module, exports, __webpack_require__) {
1409
1410"use strict";
1411
1412// 21.2.5.3 get RegExp.prototype.flags
1413var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
1414module.exports = function () {
1415  var that = anObject(this);
1416  var result = '';
1417  if (that.global) result += 'g';
1418  if (that.ignoreCase) result += 'i';
1419  if (that.multiline) result += 'm';
1420  if (that.unicode) result += 'u';
1421  if (that.sticky) result += 'y';
1422  return result;
1423};
1424
1425
1426/***/ }),
1427
vendor: 1,888 bytes, lines 1428-1463
1428/***/ "./node_modules/core-js/modules/_for-of.js":
1429/*!*************************************************!*\
1430  !*** ./node_modules/core-js/modules/_for-of.js ***!
1431  \*************************************************/
1432/*! no static exports found */
1433/***/ (function(module, exports, __webpack_require__) {
1434
1435var ctx = __webpack_require__(/*! ./_ctx */ "./node_modules/core-js/modules/_ctx.js");
1436var call = __webpack_require__(/*! ./_iter-call */ "./node_modules/core-js/modules/_iter-call.js");
1437var isArrayIter = __webpack_require__(/*! ./_is-array-iter */ "./node_modules/core-js/modules/_is-array-iter.js");
1438var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
1439var toLength = __webpack_require__(/*! ./_to-length */ "./node_modules/core-js/modules/_to-length.js");
1440var getIterFn = __webpack_require__(/*! ./core.get-iterator-method */ "./node_modules/core-js/modules/core.get-iterator-method.js");
1441var BREAK = {};
1442var RETURN = {};
1443var exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {
1444  var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);
1445  var f = ctx(fn, that, entries ? 2 : 1);
1446  var index = 0;
1447  var length, step, iterator, result;
1448  if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');
1449  // fast case for arrays with default iterator
1450  if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {
1451    result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
1452    if (result === BREAK || result === RETURN) return result;
1453  } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {
1454    result = call(iterator, f, step.value, entries);
1455    if (result === BREAK || result === RETURN) return result;
1456  }
1457};
1458exports.BREAK = BREAK;
1459exports.RETURN = RETURN;
1460
1461
1462/***/ }),
1463
vendor: 664 bytes, lines 1464-1480
1464/***/ "./node_modules/core-js/modules/_global.js":
1465/*!*************************************************!*\
1466  !*** ./node_modules/core-js/modules/_global.js ***!
1467  \*************************************************/
1468/*! no static exports found */
1469/***/ (function(module, exports) {
1470
1471// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
1472var global = module.exports = typeof window != 'undefined' && window.Math == Math
1473  ? window : typeof self != 'undefined' && self.Math == Math ? self
1474  // eslint-disable-next-line no-new-func
1475  : Function('return this')();
1476if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef
1477
1478
1479/***/ }),
1480
vendor: 403 bytes, lines 1481-1495
1481/***/ "./node_modules/core-js/modules/_has.js":
1482/*!**********************************************!*\
1483  !*** ./node_modules/core-js/modules/_has.js ***!
1484  \**********************************************/
1485/*! no static exports found */
1486/***/ (function(module, exports) {
1487
1488var hasOwnProperty = {}.hasOwnProperty;
1489module.exports = function (it, key) {
1490  return hasOwnProperty.call(it, key);
1491};
1492
1493
1494/***/ }),
1495
vendor: 792 bytes, lines 1496-1514
1496/***/ "./node_modules/core-js/modules/_hide.js":
1497/*!***********************************************!*\
1498  !*** ./node_modules/core-js/modules/_hide.js ***!
1499  \***********************************************/
1500/*! no static exports found */
1501/***/ (function(module, exports, __webpack_require__) {
1502
1503var dP = __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/modules/_object-dp.js");
1504var createDesc = __webpack_require__(/*! ./_property-desc */ "./node_modules/core-js/modules/_property-desc.js");
1505module.exports = __webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js") ? function (object, key, value) {
1506  return dP.f(object, key, createDesc(1, value));
1507} : function (object, key, value) {
1508  object[key] = value;
1509  return object;
1510};
1511
1512
1513/***/ }),
1514
vendor: 470 bytes, lines 1515-1527
1515/***/ "./node_modules/core-js/modules/_html.js":
1516/*!***********************************************!*\
1517  !*** ./node_modules/core-js/modules/_html.js ***!
1518  \***********************************************/
1519/*! no static exports found */
1520/***/ (function(module, exports, __webpack_require__) {
1521
1522var document = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js").document;
1523module.exports = document && document.documentElement;
1524
1525
1526/***/ }),
1527
vendor: 738 bytes, lines 1528-1541
1528/***/ "./node_modules/core-js/modules/_ie8-dom-define.js":
1529/*!*********************************************************!*\
1530  !*** ./node_modules/core-js/modules/_ie8-dom-define.js ***!
1531  \*********************************************************/
1532/*! no static exports found */
1533/***/ (function(module, exports, __webpack_require__) {
1534
1535module.exports = !__webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js") && !__webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js")(function () {
1536  return Object.defineProperty(__webpack_require__(/*! ./_dom-create */ "./node_modules/core-js/modules/_dom-create.js")('div'), 'a', { get: function () { return 7; } }).a != 7;
1537});
1538
1539
1540/***/ }),
1541
vendor: 833 bytes, lines 1542-1561
1542/***/ "./node_modules/core-js/modules/_inherit-if-required.js":
1543/*!**************************************************************!*\
1544  !*** ./node_modules/core-js/modules/_inherit-if-required.js ***!
1545  \**************************************************************/
1546/*! no static exports found */
1547/***/ (function(module, exports, __webpack_require__) {
1548
1549var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
1550var setPrototypeOf = __webpack_require__(/*! ./_set-proto */ "./node_modules/core-js/modules/_set-proto.js").set;
1551module.exports = function (that, target, C) {
1552  var S = target.constructor;
1553  var P;
1554  if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {
1555    setPrototypeOf(that, P);
1556  } return that;
1557};
1558
1559
1560/***/ }),
1561
vendor: 996 bytes, lines 1562-1588
1562/***/ "./node_modules/core-js/modules/_invoke.js":
1563/*!*************************************************!*\
1564  !*** ./node_modules/core-js/modules/_invoke.js ***!
1565  \*************************************************/
1566/*! no static exports found */
1567/***/ (function(module, exports) {
1568
1569// fast apply, http://jsperf.lnkit.com/fast-apply/5
1570module.exports = function (fn, args, that) {
1571  var un = that === undefined;
1572  switch (args.length) {
1573    case 0: return un ? fn()
1574                      : fn.call(that);
1575    case 1: return un ? fn(args[0])
1576                      : fn.call(that, args[0]);
1577    case 2: return un ? fn(args[0], args[1])
1578                      : fn.call(that, args[0], args[1]);
1579    case 3: return un ? fn(args[0], args[1], args[2])
1580                      : fn.call(that, args[0], args[1], args[2]);
1581    case 4: return un ? fn(args[0], args[1], args[2], args[3])
1582                      : fn.call(that, args[0], args[1], args[2], args[3]);
1583  } return fn.apply(that, args);
1584};
1585
1586
1587/***/ }),
1588
vendor: 667 bytes, lines 1589-1605
1589/***/ "./node_modules/core-js/modules/_iobject.js":
1590/*!**************************************************!*\
1591  !*** ./node_modules/core-js/modules/_iobject.js ***!
1592  \**************************************************/
1593/*! no static exports found */
1594/***/ (function(module, exports, __webpack_require__) {
1595
1596// fallback for non-array-like ES3 and non-enumerable old V8 strings
1597var cof = __webpack_require__(/*! ./_cof */ "./node_modules/core-js/modules/_cof.js");
1598// eslint-disable-next-line no-prototype-builtins
1599module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
1600  return cof(it) == 'String' ? it.split('') : Object(it);
1601};
1602
1603
1604/***/ }),
1605
vendor: 745 bytes, lines 1606-1624
1606/***/ "./node_modules/core-js/modules/_is-array-iter.js":
1607/*!********************************************************!*\
1608  !*** ./node_modules/core-js/modules/_is-array-iter.js ***!
1609  \********************************************************/
1610/*! no static exports found */
1611/***/ (function(module, exports, __webpack_require__) {
1612
1613// check on default Array iterator
1614var Iterators = __webpack_require__(/*! ./_iterators */ "./node_modules/core-js/modules/_iterators.js");
1615var ITERATOR = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('iterator');
1616var ArrayProto = Array.prototype;
1617
1618module.exports = function (it) {
1619  return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
1620};
1621
1622
1623/***/ }),
1624
vendor: 529 bytes, lines 1625-1640
1625/***/ "./node_modules/core-js/modules/_is-array.js":
1626/*!***************************************************!*\
1627  !*** ./node_modules/core-js/modules/_is-array.js ***!
1628  \***************************************************/
1629/*! no static exports found */
1630/***/ (function(module, exports, __webpack_require__) {
1631
1632// 7.2.2 IsArray(argument)
1633var cof = __webpack_require__(/*! ./_cof */ "./node_modules/core-js/modules/_cof.js");
1634module.exports = Array.isArray || function isArray(arg) {
1635  return cof(arg) == 'Array';
1636};
1637
1638
1639/***/ }),
1640
vendor: 602 bytes, lines 1641-1657
1641/***/ "./node_modules/core-js/modules/_is-integer.js":
1642/*!*****************************************************!*\
1643  !*** ./node_modules/core-js/modules/_is-integer.js ***!
1644  \*****************************************************/
1645/*! no static exports found */
1646/***/ (function(module, exports, __webpack_require__) {
1647
1648// 20.1.2.3 Number.isInteger(number)
1649var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
1650var floor = Math.floor;
1651module.exports = function isInteger(it) {
1652  return !isObject(it) && isFinite(it) && floor(it) === it;
1653};
1654
1655
1656/***/ }),
1657
vendor: 417 bytes, lines 1658-1671
1658/***/ "./node_modules/core-js/modules/_is-object.js":
1659/*!****************************************************!*\
1660  !*** ./node_modules/core-js/modules/_is-object.js ***!
1661  \****************************************************/
1662/*! no static exports found */
1663/***/ (function(module, exports) {
1664
1665module.exports = function (it) {
1666  return typeof it === 'object' ? it !== null : typeof it === 'function';
1667};
1668
1669
1670/***/ }),
1671
vendor: 797 bytes, lines 1672-1690
1672/***/ "./node_modules/core-js/modules/_is-regexp.js":
1673/*!****************************************************!*\
1674  !*** ./node_modules/core-js/modules/_is-regexp.js ***!
1675  \****************************************************/
1676/*! no static exports found */
1677/***/ (function(module, exports, __webpack_require__) {
1678
1679// 7.2.8 IsRegExp(argument)
1680var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
1681var cof = __webpack_require__(/*! ./_cof */ "./node_modules/core-js/modules/_cof.js");
1682var MATCH = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('match');
1683module.exports = function (it) {
1684  var isRegExp;
1685  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');
1686};
1687
1688
1689/***/ }),
1690
vendor: 802 bytes, lines 1691-1713
1691/***/ "./node_modules/core-js/modules/_iter-call.js":
1692/*!****************************************************!*\
1693  !*** ./node_modules/core-js/modules/_iter-call.js ***!
1694  \****************************************************/
1695/*! no static exports found */
1696/***/ (function(module, exports, __webpack_require__) {
1697
1698// call something on iterator step with safe closing on error
1699var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
1700module.exports = function (iterator, fn, value, entries) {
1701  try {
1702    return entries ? fn(anObject(value)[0], value[1]) : fn(value);
1703  // 7.4.6 IteratorClose(iterator, completion)
1704  } catch (e) {
1705    var ret = iterator['return'];
1706    if (ret !== undefined) anObject(ret.call(iterator));
1707    throw e;
1708  }
1709};
1710
1711
1712/***/ }),
1713
vendor: 1,188 bytes, lines 1714-1738
1714/***/ "./node_modules/core-js/modules/_iter-create.js":
1715/*!******************************************************!*\
1716  !*** ./node_modules/core-js/modules/_iter-create.js ***!
1717  \******************************************************/
1718/*! no static exports found */
1719/***/ (function(module, exports, __webpack_require__) {
1720
1721"use strict";
1722
1723var create = __webpack_require__(/*! ./_object-create */ "./node_modules/core-js/modules/_object-create.js");
1724var descriptor = __webpack_require__(/*! ./_property-desc */ "./node_modules/core-js/modules/_property-desc.js");
1725var setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ "./node_modules/core-js/modules/_set-to-string-tag.js");
1726var IteratorPrototype = {};
1727
1728// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
1729__webpack_require__(/*! ./_hide */ "./node_modules/core-js/modules/_hide.js")(IteratorPrototype, __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('iterator'), function () { return this; });
1730
1731module.exports = function (Constructor, NAME, next) {
1732  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });
1733  setToStringTag(Constructor, NAME + ' Iterator');
1734};
1735
1736
1737/***/ }),
1738
vendor: 3,686 bytes, lines 1739-1819
1739/***/ "./node_modules/core-js/modules/_iter-define.js":
1740/*!******************************************************!*\
1741  !*** ./node_modules/core-js/modules/_iter-define.js ***!
1742  \******************************************************/
1743/*! no static exports found */
1744/***/ (function(module, exports, __webpack_require__) {
1745
1746"use strict";
1747
1748var LIBRARY = __webpack_require__(/*! ./_library */ "./node_modules/core-js/modules/_library.js");
1749var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
1750var redefine = __webpack_require__(/*! ./_redefine */ "./node_modules/core-js/modules/_redefine.js");
1751var hide = __webpack_require__(/*! ./_hide */ "./node_modules/core-js/modules/_hide.js");
1752var Iterators = __webpack_require__(/*! ./_iterators */ "./node_modules/core-js/modules/_iterators.js");
1753var $iterCreate = __webpack_require__(/*! ./_iter-create */ "./node_modules/core-js/modules/_iter-create.js");
1754var setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ "./node_modules/core-js/modules/_set-to-string-tag.js");
1755var getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ "./node_modules/core-js/modules/_object-gpo.js");
1756var ITERATOR = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('iterator');
1757var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`
1758var FF_ITERATOR = '@@iterator';
1759var KEYS = 'keys';
1760var VALUES = 'values';
1761
1762var returnThis = function () { return this; };
1763
1764module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {
1765  $iterCreate(Constructor, NAME, next);
1766  var getMethod = function (kind) {
1767    if (!BUGGY && kind in proto) return proto[kind];
1768    switch (kind) {
1769      case KEYS: return function keys() { return new Constructor(this, kind); };
1770      case VALUES: return function values() { return new Constructor(this, kind); };
1771    } return function entries() { return new Constructor(this, kind); };
1772  };
1773  var TAG = NAME + ' Iterator';
1774  var DEF_VALUES = DEFAULT == VALUES;
1775  var VALUES_BUG = false;
1776  var proto = Base.prototype;
1777  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];
1778  var $default = $native || getMethod(DEFAULT);
1779  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;
1780  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;
1781  var methods, key, IteratorPrototype;
1782  // Fix native
1783  if ($anyNative) {
1784    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));
1785    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {
1786      // Set @@toStringTag to native iterators
1787      setToStringTag(IteratorPrototype, TAG, true);
1788      // fix for some old engines
1789      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);
1790    }
1791  }
1792  // fix Array#{values, @@iterator}.name in V8 / FF
1793  if (DEF_VALUES && $native && $native.name !== VALUES) {
1794    VALUES_BUG = true;
1795    $default = function values() { return $native.call(this); };
1796  }
1797  // Define iterator
1798  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {
1799    hide(proto, ITERATOR, $default);
1800  }
1801  // Plug for library
1802  Iterators[NAME] = $default;
1803  Iterators[TAG] = returnThis;
1804  if (DEFAULT) {
1805    methods = {
1806      values: DEF_VALUES ? $default : getMethod(VALUES),
1807      keys: IS_SET ? $default : getMethod(KEYS),
1808      entries: $entries
1809    };
1810    if (FORCED) for (key in methods) {
1811      if (!(key in proto)) redefine(proto, key, methods[key]);
1812    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
1813  }
1814  return methods;
1815};
1816
1817
1818/***/ }),
1819
vendor: 1,039 bytes, lines 1820-1852
1820/***/ "./node_modules/core-js/modules/_iter-detect.js":
1821/*!******************************************************!*\
1822  !*** ./node_modules/core-js/modules/_iter-detect.js ***!
1823  \******************************************************/
1824/*! no static exports found */
1825/***/ (function(module, exports, __webpack_require__) {
1826
1827var ITERATOR = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('iterator');
1828var SAFE_CLOSING = false;
1829
1830try {
1831  var riter = [7][ITERATOR]();
1832  riter['return'] = function () { SAFE_CLOSING = true; };
1833  // eslint-disable-next-line no-throw-literal
1834  Array.from(riter, function () { throw 2; });
1835} catch (e) { /* empty */ }
1836
1837module.exports = function (exec, skipClosing) {
1838  if (!skipClosing && !SAFE_CLOSING) return false;
1839  var safe = false;
1840  try {
1841    var arr = [7];
1842    var iter = arr[ITERATOR]();
1843    iter.next = function () { return { done: safe = true }; };
1844    arr[ITERATOR] = function () { return iter; };
1845    exec(arr);
1846  } catch (e) { /* empty */ }
1847  return safe;
1848};
1849
1850
1851/***/ }),
1852
vendor: 393 bytes, lines 1853-1866
1853/***/ "./node_modules/core-js/modules/_iter-step.js":
1854/*!****************************************************!*\
1855  !*** ./node_modules/core-js/modules/_iter-step.js ***!
1856  \****************************************************/
1857/*! no static exports found */
1858/***/ (function(module, exports) {
1859
1860module.exports = function (done, value) {
1861  return { value: value, done: !!done };
1862};
1863
1864
1865/***/ }),
1866
vendor: 328 bytes, lines 1867-1878
1867/***/ "./node_modules/core-js/modules/_iterators.js":
1868/*!****************************************************!*\
1869  !*** ./node_modules/core-js/modules/_iterators.js ***!
1870  \****************************************************/
1871/*! no static exports found */
1872/***/ (function(module, exports) {
1873
1874module.exports = {};
1875
1876
1877/***/ }),
1878
vendor: 323 bytes, lines 1879-1890
1879/***/ "./node_modules/core-js/modules/_library.js":
1880/*!**************************************************!*\
1881  !*** ./node_modules/core-js/modules/_library.js ***!
1882  \**************************************************/
1883/*! no static exports found */
1884/***/ (function(module, exports) {
1885
1886module.exports = false;
1887
1888
1889/***/ }),
1890
vendor: 654 bytes, lines 1891-1911
1891/***/ "./node_modules/core-js/modules/_math-expm1.js":
1892/*!*****************************************************!*\
1893  !*** ./node_modules/core-js/modules/_math-expm1.js ***!
1894  \*****************************************************/
1895/*! no static exports found */
1896/***/ (function(module, exports) {
1897
1898// 20.2.2.14 Math.expm1(x)
1899var $expm1 = Math.expm1;
1900module.exports = (!$expm1
1901  // Old FF bug
1902  || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168
1903  // Tor Browser bug
1904  || $expm1(-2e-17) != -2e-17
1905) ? function expm1(x) {
1906  return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1;
1907} : $expm1;
1908
1909
1910/***/ }),
1911
vendor: 1,116 bytes, lines 1912-1945
1912/***/ "./node_modules/core-js/modules/_math-fround.js":
1913/*!******************************************************!*\
1914  !*** ./node_modules/core-js/modules/_math-fround.js ***!
1915  \******************************************************/
1916/*! no static exports found */
1917/***/ (function(module, exports, __webpack_require__) {
1918
1919// 20.2.2.16 Math.fround(x)
1920var sign = __webpack_require__(/*! ./_math-sign */ "./node_modules/core-js/modules/_math-sign.js");
1921var pow = Math.pow;
1922var EPSILON = pow(2, -52);
1923var EPSILON32 = pow(2, -23);
1924var MAX32 = pow(2, 127) * (2 - EPSILON32);
1925var MIN32 = pow(2, -126);
1926
1927var roundTiesToEven = function (n) {
1928  return n + 1 / EPSILON - 1 / EPSILON;
1929};
1930
1931module.exports = Math.fround || function fround(x) {
1932  var $abs = Math.abs(x);
1933  var $sign = sign(x);
1934  var a, result;
1935  if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;
1936  a = (1 + EPSILON32 / EPSILON) * $abs;
1937  result = a - (a - $abs);
1938  // eslint-disable-next-line no-self-compare
1939  if (result > MAX32 || result != result) return $sign * Infinity;
1940  return $sign * result;
1941};
1942
1943
1944/***/ }),
1945
vendor: 465 bytes, lines 1946-1960
1946/***/ "./node_modules/core-js/modules/_math-log1p.js":
1947/*!*****************************************************!*\
1948  !*** ./node_modules/core-js/modules/_math-log1p.js ***!
1949  \*****************************************************/
1950/*! no static exports found */
1951/***/ (function(module, exports) {
1952
1953// 20.2.2.20 Math.log1p(x)
1954module.exports = Math.log1p || function log1p(x) {
1955  return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x);
1956};
1957
1958
1959/***/ }),
1960
vendor: 486 bytes, lines 1961-1976
1961/***/ "./node_modules/core-js/modules/_math-sign.js":
1962/*!****************************************************!*\
1963  !*** ./node_modules/core-js/modules/_math-sign.js ***!
1964  \****************************************************/
1965/*! no static exports found */
1966/***/ (function(module, exports) {
1967
1968// 20.2.2.28 Math.sign(x)
1969module.exports = Math.sign || function sign(x) {
1970  // eslint-disable-next-line no-self-compare
1971  return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;
1972};
1973
1974
1975/***/ }),
1976
vendor: 2,170 bytes, lines 1977-2040
1977/***/ "./node_modules/core-js/modules/_meta.js":
1978/*!***********************************************!*\
1979  !*** ./node_modules/core-js/modules/_meta.js ***!
1980  \***********************************************/
1981/*! no static exports found */
1982/***/ (function(module, exports, __webpack_require__) {
1983
1984var META = __webpack_require__(/*! ./_uid */ "./node_modules/core-js/modules/_uid.js")('meta');
1985var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
1986var has = __webpack_require__(/*! ./_has */ "./node_modules/core-js/modules/_has.js");
1987var setDesc = __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/modules/_object-dp.js").f;
1988var id = 0;
1989var isExtensible = Object.isExtensible || function () {
1990  return true;
1991};
1992var FREEZE = !__webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js")(function () {
1993  return isExtensible(Object.preventExtensions({}));
1994});
1995var setMeta = function (it) {
1996  setDesc(it, META, { value: {
1997    i: 'O' + ++id, // object ID
1998    w: {}          // weak collections IDs
1999  } });
2000};
2001var fastKey = function (it, create) {
2002  // return primitive with prefix
2003  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
2004  if (!has(it, META)) {
2005    // can't set metadata to uncaught frozen object
2006    if (!isExtensible(it)) return 'F';
2007    // not necessary to add metadata
2008    if (!create) return 'E';
2009    // add missing metadata
2010    setMeta(it);
2011  // return object ID
2012  } return it[META].i;
2013};
2014var getWeak = function (it, create) {
2015  if (!has(it, META)) {
2016    // can't set metadata to uncaught frozen object
2017    if (!isExtensible(it)) return true;
2018    // not necessary to add metadata
2019    if (!create) return false;
2020    // add missing metadata
2021    setMeta(it);
2022  // return hash weak collections IDs
2023  } return it[META].w;
2024};
2025// add metadata on freeze-family methods calling
2026var onFreeze = function (it) {
2027  if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);
2028  return it;
2029};
2030var meta = module.exports = {
2031  KEY: META,
2032  NEED: false,
2033  fastKey: fastKey,
2034  getWeak: getWeak,
2035  onFreeze: onFreeze
2036};
2037
2038
2039/***/ }),
2040
vendor: 2,488 bytes, lines 2041-2120
2041/***/ "./node_modules/core-js/modules/_microtask.js":
2042/*!****************************************************!*\
2043  !*** ./node_modules/core-js/modules/_microtask.js ***!
2044  \****************************************************/
2045/*! no static exports found */
2046/***/ (function(module, exports, __webpack_require__) {
2047
2048var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
2049var macrotask = __webpack_require__(/*! ./_task */ "./node_modules/core-js/modules/_task.js").set;
2050var Observer = global.MutationObserver || global.WebKitMutationObserver;
2051var process = global.process;
2052var Promise = global.Promise;
2053var isNode = __webpack_require__(/*! ./_cof */ "./node_modules/core-js/modules/_cof.js")(process) == 'process';
2054
2055module.exports = function () {
2056  var head, last, notify;
2057
2058  var flush = function () {
2059    var parent, fn;
2060    if (isNode && (parent = process.domain)) parent.exit();
2061    while (head) {
2062      fn = head.fn;
2063      head = head.next;
2064      try {
2065        fn();
2066      } catch (e) {
2067        if (head) notify();
2068        else last = undefined;
2069        throw e;
2070      }
2071    } last = undefined;
2072    if (parent) parent.enter();
2073  };
2074
2075  // Node.js
2076  if (isNode) {
2077    notify = function () {
2078      process.nextTick(flush);
2079    };
2080  // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339
2081  } else if (Observer && !(global.navigator && global.navigator.standalone)) {
2082    var toggle = true;
2083    var node = document.createTextNode('');
2084    new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new
2085    notify = function () {
2086      node.data = toggle = !toggle;
2087    };
2088  // environments with maybe non-completely correct, but existent Promise
2089  } else if (Promise && Promise.resolve) {
2090    // Promise.resolve without an argument throws an error in LG WebOS 2
2091    var promise = Promise.resolve(undefined);
2092    notify = function () {
2093      promise.then(flush);
2094    };
2095  // for other environments - macrotask based on:
2096  // - setImmediate
2097  // - MessageChannel
2098  // - window.postMessag
2099  // - onreadystatechange
2100  // - setTimeout
2101  } else {
2102    notify = function () {
2103      // strange IE + webpack dev server bug - use .call(global)
2104      macrotask.call(global, flush);
2105    };
2106  }
2107
2108  return function (fn) {
2109    var task = { fn: fn, next: undefined };
2110    if (last) last.next = task;
2111    if (!head) {
2112      head = task;
2113      notify();
2114    } last = task;
2115  };
2116};
2117
2118
2119/***/ }),
2120
vendor: 950 bytes, lines 2121-2150
2121/***/ "./node_modules/core-js/modules/_new-promise-capability.js":
2122/*!*****************************************************************!*\
2123  !*** ./node_modules/core-js/modules/_new-promise-capability.js ***!
2124  \*****************************************************************/
2125/*! no static exports found */
2126/***/ (function(module, exports, __webpack_require__) {
2127
2128"use strict";
2129
2130// 25.4.1.5 NewPromiseCapability(C)
2131var aFunction = __webpack_require__(/*! ./_a-function */ "./node_modules/core-js/modules/_a-function.js");
2132
2133function PromiseCapability(C) {
2134  var resolve, reject;
2135  this.promise = new C(function ($$resolve, $$reject) {
2136    if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');
2137    resolve = $$resolve;
2138    reject = $$reject;
2139  });
2140  this.resolve = aFunction(resolve);
2141  this.reject = aFunction(reject);
2142}
2143
2144module.exports.f = function (C) {
2145  return new PromiseCapability(C);
2146};
2147
2148
2149/***/ }),
2150
vendor: 1,923 bytes, lines 2151-2196
2151/***/ "./node_modules/core-js/modules/_object-assign.js":
2152/*!********************************************************!*\
2153  !*** ./node_modules/core-js/modules/_object-assign.js ***!
2154  \********************************************************/
2155/*! no static exports found */
2156/***/ (function(module, exports, __webpack_require__) {
2157
2158"use strict";
2159
2160// 19.1.2.1 Object.assign(target, source, ...)
2161var getKeys = __webpack_require__(/*! ./_object-keys */ "./node_modules/core-js/modules/_object-keys.js");
2162var gOPS = __webpack_require__(/*! ./_object-gops */ "./node_modules/core-js/modules/_object-gops.js");
2163var pIE = __webpack_require__(/*! ./_object-pie */ "./node_modules/core-js/modules/_object-pie.js");
2164var toObject = __webpack_require__(/*! ./_to-object */ "./node_modules/core-js/modules/_to-object.js");
2165var IObject = __webpack_require__(/*! ./_iobject */ "./node_modules/core-js/modules/_iobject.js");
2166var $assign = Object.assign;
2167
2168// should work with symbols and should have deterministic property order (V8 bug)
2169module.exports = !$assign || __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js")(function () {
2170  var A = {};
2171  var B = {};
2172  // eslint-disable-next-line no-undef
2173  var S = Symbol();
2174  var K = 'abcdefghijklmnopqrst';
2175  A[S] = 7;
2176  K.split('').forEach(function (k) { B[k] = k; });
2177  return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;
2178}) ? function assign(target, source) { // eslint-disable-line no-unused-vars
2179  var T = toObject(target);
2180  var aLen = arguments.length;
2181  var index = 1;
2182  var getSymbols = gOPS.f;
2183  var isEnum = pIE.f;
2184  while (aLen > index) {
2185    var S = IObject(arguments[index++]);
2186    var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);
2187    var length = keys.length;
2188    var j = 0;
2189    var key;
2190    while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];
2191  } return T;
2192} : $assign;
2193
2194
2195/***/ }),
2196
vendor: 2,235 bytes, lines 2197-2248
2197/***/ "./node_modules/core-js/modules/_object-create.js":
2198/*!********************************************************!*\
2199  !*** ./node_modules/core-js/modules/_object-create.js ***!
2200  \********************************************************/
2201/*! no static exports found */
2202/***/ (function(module, exports, __webpack_require__) {
2203
2204// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
2205var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
2206var dPs = __webpack_require__(/*! ./_object-dps */ "./node_modules/core-js/modules/_object-dps.js");
2207var enumBugKeys = __webpack_require__(/*! ./_enum-bug-keys */ "./node_modules/core-js/modules/_enum-bug-keys.js");
2208var IE_PROTO = __webpack_require__(/*! ./_shared-key */ "./node_modules/core-js/modules/_shared-key.js")('IE_PROTO');
2209var Empty = function () { /* empty */ };
2210var PROTOTYPE = 'prototype';
2211
2212// Create object with fake `null` prototype: use iframe Object with cleared prototype
2213var createDict = function () {
2214  // Thrash, waste and sodomy: IE GC bug
2215  var iframe = __webpack_require__(/*! ./_dom-create */ "./node_modules/core-js/modules/_dom-create.js")('iframe');
2216  var i = enumBugKeys.length;
2217  var lt = '<';
2218  var gt = '>';
2219  var iframeDocument;
2220  iframe.style.display = 'none';
2221  __webpack_require__(/*! ./_html */ "./node_modules/core-js/modules/_html.js").appendChild(iframe);
2222  iframe.src = 'javascript:'; // eslint-disable-line no-script-url
2223  // createDict = iframe.contentWindow.Object;
2224  // html.removeChild(iframe);
2225  iframeDocument = iframe.contentWindow.document;
2226  iframeDocument.open();
2227  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
2228  iframeDocument.close();
2229  createDict = iframeDocument.F;
2230  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];
2231  return createDict();
2232};
2233
2234module.exports = Object.create || function create(O, Properties) {
2235  var result;
2236  if (O !== null) {
2237    Empty[PROTOTYPE] = anObject(O);
2238    result = new Empty();
2239    Empty[PROTOTYPE] = null;
2240    // add "__proto__" for Object.getPrototypeOf polyfill
2241    result[IE_PROTO] = O;
2242  } else result = createDict();
2243  return Properties === undefined ? result : dPs(result, Properties);
2244};
2245
2246
2247/***/ }),
2248
vendor: 1,194 bytes, lines 2249-2275
2249/***/ "./node_modules/core-js/modules/_object-dp.js":
2250/*!****************************************************!*\
2251  !*** ./node_modules/core-js/modules/_object-dp.js ***!
2252  \****************************************************/
2253/*! no static exports found */
2254/***/ (function(module, exports, __webpack_require__) {
2255
2256var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
2257var IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ "./node_modules/core-js/modules/_ie8-dom-define.js");
2258var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "./node_modules/core-js/modules/_to-primitive.js");
2259var dP = Object.defineProperty;
2260
2261exports.f = __webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js") ? Object.defineProperty : function defineProperty(O, P, Attributes) {
2262  anObject(O);
2263  P = toPrimitive(P, true);
2264  anObject(Attributes);
2265  if (IE8_DOM_DEFINE) try {
2266    return dP(O, P, Attributes);
2267  } catch (e) { /* empty */ }
2268  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
2269  if ('value' in Attributes) O[P] = Attributes.value;
2270  return O;
2271};
2272
2273
2274/***/ }),
2275
vendor: 996 bytes, lines 2276-2299
2276/***/ "./node_modules/core-js/modules/_object-dps.js":
2277/*!*****************************************************!*\
2278  !*** ./node_modules/core-js/modules/_object-dps.js ***!
2279  \*****************************************************/
2280/*! no static exports found */
2281/***/ (function(module, exports, __webpack_require__) {
2282
2283var dP = __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/modules/_object-dp.js");
2284var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
2285var getKeys = __webpack_require__(/*! ./_object-keys */ "./node_modules/core-js/modules/_object-keys.js");
2286
2287module.exports = __webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js") ? Object.defineProperties : function defineProperties(O, Properties) {
2288  anObject(O);
2289  var keys = getKeys(Properties);
2290  var length = keys.length;
2291  var i = 0;
2292  var P;
2293  while (length > i) dP.f(O, P = keys[i++], Properties[P]);
2294  return O;
2295};
2296
2297
2298/***/ }),
2299
vendor: 1,371 bytes, lines 2300-2326
2300/***/ "./node_modules/core-js/modules/_object-gopd.js":
2301/*!******************************************************!*\
2302  !*** ./node_modules/core-js/modules/_object-gopd.js ***!
2303  \******************************************************/
2304/*! no static exports found */
2305/***/ (function(module, exports, __webpack_require__) {
2306
2307var pIE = __webpack_require__(/*! ./_object-pie */ "./node_modules/core-js/modules/_object-pie.js");
2308var createDesc = __webpack_require__(/*! ./_property-desc */ "./node_modules/core-js/modules/_property-desc.js");
2309var toIObject = __webpack_require__(/*! ./_to-iobject */ "./node_modules/core-js/modules/_to-iobject.js");
2310var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "./node_modules/core-js/modules/_to-primitive.js");
2311var has = __webpack_require__(/*! ./_has */ "./node_modules/core-js/modules/_has.js");
2312var IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ "./node_modules/core-js/modules/_ie8-dom-define.js");
2313var gOPD = Object.getOwnPropertyDescriptor;
2314
2315exports.f = __webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js") ? gOPD : function getOwnPropertyDescriptor(O, P) {
2316  O = toIObject(O);
2317  P = toPrimitive(P, true);
2318  if (IE8_DOM_DEFINE) try {
2319    return gOPD(O, P);
2320  } catch (e) { /* empty */ }
2321  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);
2322};
2323
2324
2325/***/ }),
2326
vendor: 1,087 bytes, lines 2327-2356
2327/***/ "./node_modules/core-js/modules/_object-gopn-ext.js":
2328/*!**********************************************************!*\
2329  !*** ./node_modules/core-js/modules/_object-gopn-ext.js ***!
2330  \**********************************************************/
2331/*! no static exports found */
2332/***/ (function(module, exports, __webpack_require__) {
2333
2334// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
2335var toIObject = __webpack_require__(/*! ./_to-iobject */ "./node_modules/core-js/modules/_to-iobject.js");
2336var gOPN = __webpack_require__(/*! ./_object-gopn */ "./node_modules/core-js/modules/_object-gopn.js").f;
2337var toString = {}.toString;
2338
2339var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames
2340  ? Object.getOwnPropertyNames(window) : [];
2341
2342var getWindowNames = function (it) {
2343  try {
2344    return gOPN(it);
2345  } catch (e) {
2346    return windowNames.slice();
2347  }
2348};
2349
2350module.exports.f = function getOwnPropertyNames(it) {
2351  return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));
2352};
2353
2354
2355/***/ }),
2356
vendor: 767 bytes, lines 2357-2374
2357/***/ "./node_modules/core-js/modules/_object-gopn.js":
2358/*!******************************************************!*\
2359  !*** ./node_modules/core-js/modules/_object-gopn.js ***!
2360  \******************************************************/
2361/*! no static exports found */
2362/***/ (function(module, exports, __webpack_require__) {
2363
2364// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
2365var $keys = __webpack_require__(/*! ./_object-keys-internal */ "./node_modules/core-js/modules/_object-keys-internal.js");
2366var hiddenKeys = __webpack_require__(/*! ./_enum-bug-keys */ "./node_modules/core-js/modules/_enum-bug-keys.js").concat('length', 'prototype');
2367
2368exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
2369  return $keys(O, hiddenKeys);
2370};
2371
2372
2373/***/ }),
2374
vendor: 357 bytes, lines 2375-2386
2375/***/ "./node_modules/core-js/modules/_object-gops.js":
2376/*!******************************************************!*\
2377  !*** ./node_modules/core-js/modules/_object-gops.js ***!
2378  \******************************************************/
2379/*! no static exports found */
2380/***/ (function(module, exports) {
2381
2382exports.f = Object.getOwnPropertySymbols;
2383
2384
2385/***/ }),
2386
vendor: 1,012 bytes, lines 2387-2410
2387/***/ "./node_modules/core-js/modules/_object-gpo.js":
2388/*!*****************************************************!*\
2389  !*** ./node_modules/core-js/modules/_object-gpo.js ***!
2390  \*****************************************************/
2391/*! no static exports found */
2392/***/ (function(module, exports, __webpack_require__) {
2393
2394// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
2395var has = __webpack_require__(/*! ./_has */ "./node_modules/core-js/modules/_has.js");
2396var toObject = __webpack_require__(/*! ./_to-object */ "./node_modules/core-js/modules/_to-object.js");
2397var IE_PROTO = __webpack_require__(/*! ./_shared-key */ "./node_modules/core-js/modules/_shared-key.js")('IE_PROTO');
2398var ObjectProto = Object.prototype;
2399
2400module.exports = Object.getPrototypeOf || function (O) {
2401  O = toObject(O);
2402  if (has(O, IE_PROTO)) return O[IE_PROTO];
2403  if (typeof O.constructor == 'function' && O instanceof O.constructor) {
2404    return O.constructor.prototype;
2405  } return O instanceof Object ? ObjectProto : null;
2406};
2407
2408
2409/***/ }),
2410
vendor: 1,166 bytes, lines 2411-2438
2411/***/ "./node_modules/core-js/modules/_object-keys-internal.js":
2412/*!***************************************************************!*\
2413  !*** ./node_modules/core-js/modules/_object-keys-internal.js ***!
2414  \***************************************************************/
2415/*! no static exports found */
2416/***/ (function(module, exports, __webpack_require__) {
2417
2418var has = __webpack_require__(/*! ./_has */ "./node_modules/core-js/modules/_has.js");
2419var toIObject = __webpack_require__(/*! ./_to-iobject */ "./node_modules/core-js/modules/_to-iobject.js");
2420var arrayIndexOf = __webpack_require__(/*! ./_array-includes */ "./node_modules/core-js/modules/_array-includes.js")(false);
2421var IE_PROTO = __webpack_require__(/*! ./_shared-key */ "./node_modules/core-js/modules/_shared-key.js")('IE_PROTO');
2422
2423module.exports = function (object, names) {
2424  var O = toIObject(object);
2425  var i = 0;
2426  var result = [];
2427  var key;
2428  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);
2429  // Don't enum bug & hidden keys
2430  while (names.length > i) if (has(O, key = names[i++])) {
2431    ~arrayIndexOf(result, key) || result.push(key);
2432  }
2433  return result;
2434};
2435
2436
2437/***/ }),
2438
vendor: 701 bytes, lines 2439-2456
2439/***/ "./node_modules/core-js/modules/_object-keys.js":
2440/*!******************************************************!*\
2441  !*** ./node_modules/core-js/modules/_object-keys.js ***!
2442  \******************************************************/
2443/*! no static exports found */
2444/***/ (function(module, exports, __webpack_require__) {
2445
2446// 19.1.2.14 / 15.2.3.14 Object.keys(O)
2447var $keys = __webpack_require__(/*! ./_object-keys-internal */ "./node_modules/core-js/modules/_object-keys-internal.js");
2448var enumBugKeys = __webpack_require__(/*! ./_enum-bug-keys */ "./node_modules/core-js/modules/_enum-bug-keys.js");
2449
2450module.exports = Object.keys || function keys(O) {
2451  return $keys(O, enumBugKeys);
2452};
2453
2454
2455/***/ }),
2456
vendor: 348 bytes, lines 2457-2468
2457/***/ "./node_modules/core-js/modules/_object-pie.js":
2458/*!*****************************************************!*\
2459  !*** ./node_modules/core-js/modules/_object-pie.js ***!
2460  \*****************************************************/
2461/*! no static exports found */
2462/***/ (function(module, exports) {
2463
2464exports.f = {}.propertyIsEnumerable;
2465
2466
2467/***/ }),
2468
vendor: 882 bytes, lines 2469-2489
2469/***/ "./node_modules/core-js/modules/_object-sap.js":
2470/*!*****************************************************!*\
2471  !*** ./node_modules/core-js/modules/_object-sap.js ***!
2472  \*****************************************************/
2473/*! no static exports found */
2474/***/ (function(module, exports, __webpack_require__) {
2475
2476// most Object methods by ES6 should accept primitives
2477var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
2478var core = __webpack_require__(/*! ./_core */ "./node_modules/core-js/modules/_core.js");
2479var fails = __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js");
2480module.exports = function (KEY, exec) {
2481  var fn = (core.Object || {})[KEY] || Object[KEY];
2482  var exp = {};
2483  exp[KEY] = exec(fn);
2484  $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);
2485};
2486
2487
2488/***/ }),
2489
vendor: 1,016 bytes, lines 2490-2516
2490/***/ "./node_modules/core-js/modules/_object-to-array.js":
2491/*!**********************************************************!*\
2492  !*** ./node_modules/core-js/modules/_object-to-array.js ***!
2493  \**********************************************************/
2494/*! no static exports found */
2495/***/ (function(module, exports, __webpack_require__) {
2496
2497var getKeys = __webpack_require__(/*! ./_object-keys */ "./node_modules/core-js/modules/_object-keys.js");
2498var toIObject = __webpack_require__(/*! ./_to-iobject */ "./node_modules/core-js/modules/_to-iobject.js");
2499var isEnum = __webpack_require__(/*! ./_object-pie */ "./node_modules/core-js/modules/_object-pie.js").f;
2500module.exports = function (isEntries) {
2501  return function (it) {
2502    var O = toIObject(it);
2503    var keys = getKeys(O);
2504    var length = keys.length;
2505    var i = 0;
2506    var result = [];
2507    var key;
2508    while (length > i) if (isEnum.call(O, key = keys[i++])) {
2509      result.push(isEntries ? [key, O[key]] : O[key]);
2510    } return result;
2511  };
2512};
2513
2514
2515/***/ }),
2516
vendor: 990 bytes, lines 2517-2537
2517/***/ "./node_modules/core-js/modules/_own-keys.js":
2518/*!***************************************************!*\
2519  !*** ./node_modules/core-js/modules/_own-keys.js ***!
2520  \***************************************************/
2521/*! no static exports found */
2522/***/ (function(module, exports, __webpack_require__) {
2523
2524// all object keys, includes non-enumerable and symbols
2525var gOPN = __webpack_require__(/*! ./_object-gopn */ "./node_modules/core-js/modules/_object-gopn.js");
2526var gOPS = __webpack_require__(/*! ./_object-gops */ "./node_modules/core-js/modules/_object-gops.js");
2527var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
2528var Reflect = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js").Reflect;
2529module.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {
2530  var keys = gOPN.f(anObject(it));
2531  var getSymbols = gOPS.f;
2532  return getSymbols ? keys.concat(getSymbols(it)) : keys;
2533};
2534
2535
2536/***/ }),
2537
vendor: 886 bytes, lines 2538-2556
2538/***/ "./node_modules/core-js/modules/_parse-float.js":
2539/*!******************************************************!*\
2540  !*** ./node_modules/core-js/modules/_parse-float.js ***!
2541  \******************************************************/
2542/*! no static exports found */
2543/***/ (function(module, exports, __webpack_require__) {
2544
2545var $parseFloat = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js").parseFloat;
2546var $trim = __webpack_require__(/*! ./_string-trim */ "./node_modules/core-js/modules/_string-trim.js").trim;
2547
2548module.exports = 1 / $parseFloat(__webpack_require__(/*! ./_string-ws */ "./node_modules/core-js/modules/_string-ws.js") + '-0') !== -Infinity ? function parseFloat(str) {
2549  var string = $trim(String(str), 3);
2550  var result = $parseFloat(string);
2551  return result === 0 && string.charAt(0) == '-' ? -0 : result;
2552} : $parseFloat;
2553
2554
2555/***/ }),
2556
vendor: 909 bytes, lines 2557-2576
2557/***/ "./node_modules/core-js/modules/_parse-int.js":
2558/*!****************************************************!*\
2559  !*** ./node_modules/core-js/modules/_parse-int.js ***!
2560  \****************************************************/
2561/*! no static exports found */
2562/***/ (function(module, exports, __webpack_require__) {
2563
2564var $parseInt = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js").parseInt;
2565var $trim = __webpack_require__(/*! ./_string-trim */ "./node_modules/core-js/modules/_string-trim.js").trim;
2566var ws = __webpack_require__(/*! ./_string-ws */ "./node_modules/core-js/modules/_string-ws.js");
2567var hex = /^[-+]?0[xX]/;
2568
2569module.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix) {
2570  var string = $trim(String(str), 3);
2571  return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));
2572} : $parseInt;
2573
2574
2575/***/ }),
2576
vendor: 431 bytes, lines 2577-2594
2577/***/ "./node_modules/core-js/modules/_perform.js":
2578/*!**************************************************!*\
2579  !*** ./node_modules/core-js/modules/_perform.js ***!
2580  \**************************************************/
2581/*! no static exports found */
2582/***/ (function(module, exports) {
2583
2584module.exports = function (exec) {
2585  try {
2586    return { e: false, v: exec() };
2587  } catch (e) {
2588    return { e: true, v: e };
2589  }
2590};
2591
2592
2593/***/ }),
2594
vendor: 954 bytes, lines 2595-2617
2595/***/ "./node_modules/core-js/modules/_promise-resolve.js":
2596/*!**********************************************************!*\
2597  !*** ./node_modules/core-js/modules/_promise-resolve.js ***!
2598  \**********************************************************/
2599/*! no static exports found */
2600/***/ (function(module, exports, __webpack_require__) {
2601
2602var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
2603var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
2604var newPromiseCapability = __webpack_require__(/*! ./_new-promise-capability */ "./node_modules/core-js/modules/_new-promise-capability.js");
2605
2606module.exports = function (C, x) {
2607  anObject(C);
2608  if (isObject(x) && x.constructor === C) return x;
2609  var promiseCapability = newPromiseCapability.f(C);
2610  var resolve = promiseCapability.resolve;
2611  resolve(x);
2612  return promiseCapability.promise;
2613};
2614
2615
2616/***/ }),
2617
vendor: 496 bytes, lines 2618-2636
2618/***/ "./node_modules/core-js/modules/_property-desc.js":
2619/*!********************************************************!*\
2620  !*** ./node_modules/core-js/modules/_property-desc.js ***!
2621  \********************************************************/
2622/*! no static exports found */
2623/***/ (function(module, exports) {
2624
2625module.exports = function (bitmap, value) {
2626  return {
2627    enumerable: !(bitmap & 1),
2628    configurable: !(bitmap & 2),
2629    writable: !(bitmap & 4),
2630    value: value
2631  };
2632};
2633
2634
2635/***/ }),
2636
vendor: 572 bytes, lines 2637-2652
2637/***/ "./node_modules/core-js/modules/_redefine-all.js":
2638/*!*******************************************************!*\
2639  !*** ./node_modules/core-js/modules/_redefine-all.js ***!
2640  \*******************************************************/
2641/*! no static exports found */
2642/***/ (function(module, exports, __webpack_require__) {
2643
2644var redefine = __webpack_require__(/*! ./_redefine */ "./node_modules/core-js/modules/_redefine.js");
2645module.exports = function (target, src, safe) {
2646  for (var key in src) redefine(target, key, src[key], safe);
2647  return target;
2648};
2649
2650
2651/***/ }),
2652
vendor: 1,656 bytes, lines 2653-2694
2653/***/ "./node_modules/core-js/modules/_redefine.js":
2654/*!***************************************************!*\
2655  !*** ./node_modules/core-js/modules/_redefine.js ***!
2656  \***************************************************/
2657/*! no static exports found */
2658/***/ (function(module, exports, __webpack_require__) {
2659
2660var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
2661var hide = __webpack_require__(/*! ./_hide */ "./node_modules/core-js/modules/_hide.js");
2662var has = __webpack_require__(/*! ./_has */ "./node_modules/core-js/modules/_has.js");
2663var SRC = __webpack_require__(/*! ./_uid */ "./node_modules/core-js/modules/_uid.js")('src');
2664var TO_STRING = 'toString';
2665var $toString = Function[TO_STRING];
2666var TPL = ('' + $toString).split(TO_STRING);
2667
2668__webpack_require__(/*! ./_core */ "./node_modules/core-js/modules/_core.js").inspectSource = function (it) {
2669  return $toString.call(it);
2670};
2671
2672(module.exports = function (O, key, val, safe) {
2673  var isFunction = typeof val == 'function';
2674  if (isFunction) has(val, 'name') || hide(val, 'name', key);
2675  if (O[key] === val) return;
2676  if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));
2677  if (O === global) {
2678    O[key] = val;
2679  } else if (!safe) {
2680    delete O[key];
2681    hide(O, key, val);
2682  } else if (O[key]) {
2683    O[key] = val;
2684  } else {
2685    hide(O, key, val);
2686  }
2687// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
2688})(Function.prototype, TO_STRING, function toString() {
2689  return typeof this == 'function' && this[SRC] || $toString.call(this);
2690});
2691
2692
2693/***/ }),
2694
vendor: 501 bytes, lines 2695-2710
2695/***/ "./node_modules/core-js/modules/_same-value.js":
2696/*!*****************************************************!*\
2697  !*** ./node_modules/core-js/modules/_same-value.js ***!
2698  \*****************************************************/
2699/*! no static exports found */
2700/***/ (function(module, exports) {
2701
2702// 7.2.9 SameValue(x, y)
2703module.exports = Object.is || function is(x, y) {
2704  // eslint-disable-next-line no-self-compare
2705  return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;
2706};
2707
2708
2709/***/ }),
2710
vendor: 1,486 bytes, lines 2711-2746
2711/***/ "./node_modules/core-js/modules/_set-proto.js":
2712/*!****************************************************!*\
2713  !*** ./node_modules/core-js/modules/_set-proto.js ***!
2714  \****************************************************/
2715/*! no static exports found */
2716/***/ (function(module, exports, __webpack_require__) {
2717
2718// Works with __proto__ only. Old v8 can't work with null proto objects.
2719/* eslint-disable no-proto */
2720var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
2721var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
2722var check = function (O, proto) {
2723  anObject(O);
2724  if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!");
2725};
2726module.exports = {
2727  set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line
2728    function (test, buggy, set) {
2729      try {
2730        set = __webpack_require__(/*! ./_ctx */ "./node_modules/core-js/modules/_ctx.js")(Function.call, __webpack_require__(/*! ./_object-gopd */ "./node_modules/core-js/modules/_object-gopd.js").f(Object.prototype, '__proto__').set, 2);
2731        set(test, []);
2732        buggy = !(test instanceof Array);
2733      } catch (e) { buggy = true; }
2734      return function setPrototypeOf(O, proto) {
2735        check(O, proto);
2736        if (buggy) O.__proto__ = proto;
2737        else set(O, proto);
2738        return O;
2739      };
2740    }({}, false) : undefined),
2741  check: check
2742};
2743
2744
2745/***/ }),
2746
vendor: 945 bytes, lines 2747-2771
2747/***/ "./node_modules/core-js/modules/_set-species.js":
2748/*!******************************************************!*\
2749  !*** ./node_modules/core-js/modules/_set-species.js ***!
2750  \******************************************************/
2751/*! no static exports found */
2752/***/ (function(module, exports, __webpack_require__) {
2753
2754"use strict";
2755
2756var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
2757var dP = __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/modules/_object-dp.js");
2758var DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js");
2759var SPECIES = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('species');
2760
2761module.exports = function (KEY) {
2762  var C = global[KEY];
2763  if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {
2764    configurable: true,
2765    get: function () { return this; }
2766  });
2767};
2768
2769
2770/***/ }),
2771
vendor: 802 bytes, lines 2772-2789
2772/***/ "./node_modules/core-js/modules/_set-to-string-tag.js":
2773/*!************************************************************!*\
2774  !*** ./node_modules/core-js/modules/_set-to-string-tag.js ***!
2775  \************************************************************/
2776/*! no static exports found */
2777/***/ (function(module, exports, __webpack_require__) {
2778
2779var def = __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/modules/_object-dp.js").f;
2780var has = __webpack_require__(/*! ./_has */ "./node_modules/core-js/modules/_has.js");
2781var TAG = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('toStringTag');
2782
2783module.exports = function (it, tag, stat) {
2784  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });
2785};
2786
2787
2788/***/ }),
2789
vendor: 610 bytes, lines 2790-2805
2790/***/ "./node_modules/core-js/modules/_shared-key.js":
2791/*!*****************************************************!*\
2792  !*** ./node_modules/core-js/modules/_shared-key.js ***!
2793  \*****************************************************/
2794/*! no static exports found */
2795/***/ (function(module, exports, __webpack_require__) {
2796
2797var shared = __webpack_require__(/*! ./_shared */ "./node_modules/core-js/modules/_shared.js")('keys');
2798var uid = __webpack_require__(/*! ./_uid */ "./node_modules/core-js/modules/_uid.js");
2799module.exports = function (key) {
2800  return shared[key] || (shared[key] = uid(key));
2801};
2802
2803
2804/***/ }),
2805
vendor: 926 bytes, lines 2806-2828
2806/***/ "./node_modules/core-js/modules/_shared.js":
2807/*!*************************************************!*\
2808  !*** ./node_modules/core-js/modules/_shared.js ***!
2809  \*************************************************/
2810/*! no static exports found */
2811/***/ (function(module, exports, __webpack_require__) {
2812
2813var core = __webpack_require__(/*! ./_core */ "./node_modules/core-js/modules/_core.js");
2814var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
2815var SHARED = '__core-js_shared__';
2816var store = global[SHARED] || (global[SHARED] = {});
2817
2818(module.exports = function (key, value) {
2819  return store[key] || (store[key] = value !== undefined ? value : {});
2820})('versions', []).push({
2821  version: core.version,
2822  mode: __webpack_require__(/*! ./_library */ "./node_modules/core-js/modules/_library.js") ? 'pure' : 'global',
2823  copyright: '© 2018 Denis Pushkarev (zloirock.ru)'
2824});
2825
2826
2827/***/ }),
2828
vendor: 903 bytes, lines 2829-2848
2829/***/ "./node_modules/core-js/modules/_species-constructor.js":
2830/*!**************************************************************!*\
2831  !*** ./node_modules/core-js/modules/_species-constructor.js ***!
2832  \**************************************************************/
2833/*! no static exports found */
2834/***/ (function(module, exports, __webpack_require__) {
2835
2836// 7.3.20 SpeciesConstructor(O, defaultConstructor)
2837var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
2838var aFunction = __webpack_require__(/*! ./_a-function */ "./node_modules/core-js/modules/_a-function.js");
2839var SPECIES = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('species');
2840module.exports = function (O, D) {
2841  var C = anObject(O).constructor;
2842  var S;
2843  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);
2844};
2845
2846
2847/***/ }),
2848
vendor: 674 bytes, lines 2849-2869
2849/***/ "./node_modules/core-js/modules/_strict-method.js":
2850/*!********************************************************!*\
2851  !*** ./node_modules/core-js/modules/_strict-method.js ***!
2852  \********************************************************/
2853/*! no static exports found */
2854/***/ (function(module, exports, __webpack_require__) {
2855
2856"use strict";
2857
2858var fails = __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js");
2859
2860module.exports = function (method, arg) {
2861  return !!method && fails(function () {
2862    // eslint-disable-next-line no-useless-call
2863    arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);
2864  });
2865};
2866
2867
2868/***/ }),
2869
vendor: 1,075 bytes, lines 2870-2897
2870/***/ "./node_modules/core-js/modules/_string-at.js":
2871/*!****************************************************!*\
2872  !*** ./node_modules/core-js/modules/_string-at.js ***!
2873  \****************************************************/
2874/*! no static exports found */
2875/***/ (function(module, exports, __webpack_require__) {
2876
2877var toInteger = __webpack_require__(/*! ./_to-integer */ "./node_modules/core-js/modules/_to-integer.js");
2878var defined = __webpack_require__(/*! ./_defined */ "./node_modules/core-js/modules/_defined.js");
2879// true  -> String#at
2880// false -> String#codePointAt
2881module.exports = function (TO_STRING) {
2882  return function (that, pos) {
2883    var s = String(defined(that));
2884    var i = toInteger(pos);
2885    var l = s.length;
2886    var a, b;
2887    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;
2888    a = s.charCodeAt(i);
2889    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
2890      ? TO_STRING ? s.charAt(i) : a
2891      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
2892  };
2893};
2894
2895
2896/***/ }),
2897
vendor: 788 bytes, lines 2898-2916
2898/***/ "./node_modules/core-js/modules/_string-context.js":
2899/*!*********************************************************!*\
2900  !*** ./node_modules/core-js/modules/_string-context.js ***!
2901  \*********************************************************/
2902/*! no static exports found */
2903/***/ (function(module, exports, __webpack_require__) {
2904
2905// helper for String#{startsWith, endsWith, includes}
2906var isRegExp = __webpack_require__(/*! ./_is-regexp */ "./node_modules/core-js/modules/_is-regexp.js");
2907var defined = __webpack_require__(/*! ./_defined */ "./node_modules/core-js/modules/_defined.js");
2908
2909module.exports = function (that, searchString, NAME) {
2910  if (isRegExp(searchString)) throw TypeError('String#' + NAME + " doesn't accept regex!");
2911  return String(defined(that));
2912};
2913
2914
2915/***/ }),
2916
vendor: 1,221 bytes, lines 2917-2946
2917/***/ "./node_modules/core-js/modules/_string-html.js":
2918/*!******************************************************!*\
2919  !*** ./node_modules/core-js/modules/_string-html.js ***!
2920  \******************************************************/
2921/*! no static exports found */
2922/***/ (function(module, exports, __webpack_require__) {
2923
2924var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
2925var fails = __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js");
2926var defined = __webpack_require__(/*! ./_defined */ "./node_modules/core-js/modules/_defined.js");
2927var quot = /"/g;
2928// B.2.3.2.1 CreateHTML(string, tag, attribute, value)
2929var createHTML = function (string, tag, attribute, value) {
2930  var S = String(defined(string));
2931  var p1 = '<' + tag;
2932  if (attribute !== '') p1 += ' ' + attribute + '="' + String(value).replace(quot, '&quot;') + '"';
2933  return p1 + '>' + S + '</' + tag + '>';
2934};
2935module.exports = function (NAME, exec) {
2936  var O = {};
2937  O[NAME] = exec(createHTML);
2938  $export($export.P + $export.F * fails(function () {
2939    var test = ''[NAME]('"');
2940    return test !== test.toLowerCase() || test.split('"').length > 3;
2941  }), 'String', O);
2942};
2943
2944
2945/***/ }),
2946
vendor: 1,270 bytes, lines 2947-2973
2947/***/ "./node_modules/core-js/modules/_string-pad.js":
2948/*!*****************************************************!*\
2949  !*** ./node_modules/core-js/modules/_string-pad.js ***!
2950  \*****************************************************/
2951/*! no static exports found */
2952/***/ (function(module, exports, __webpack_require__) {
2953
2954// https://github.com/tc39/proposal-string-pad-start-end
2955var toLength = __webpack_require__(/*! ./_to-length */ "./node_modules/core-js/modules/_to-length.js");
2956var repeat = __webpack_require__(/*! ./_string-repeat */ "./node_modules/core-js/modules/_string-repeat.js");
2957var defined = __webpack_require__(/*! ./_defined */ "./node_modules/core-js/modules/_defined.js");
2958
2959module.exports = function (that, maxLength, fillString, left) {
2960  var S = String(defined(that));
2961  var stringLength = S.length;
2962  var fillStr = fillString === undefined ? ' ' : String(fillString);
2963  var intMaxLength = toLength(maxLength);
2964  if (intMaxLength <= stringLength || fillStr == '') return S;
2965  var fillLen = intMaxLength - stringLength;
2966  var stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));
2967  if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);
2968  return left ? stringFiller + S : S + stringFiller;
2969};
2970
2971
2972/***/ }),
2973
vendor: 845 bytes, lines 2974-2997
2974/***/ "./node_modules/core-js/modules/_string-repeat.js":
2975/*!********************************************************!*\
2976  !*** ./node_modules/core-js/modules/_string-repeat.js ***!
2977  \********************************************************/
2978/*! no static exports found */
2979/***/ (function(module, exports, __webpack_require__) {
2980
2981"use strict";
2982
2983var toInteger = __webpack_require__(/*! ./_to-integer */ "./node_modules/core-js/modules/_to-integer.js");
2984var defined = __webpack_require__(/*! ./_defined */ "./node_modules/core-js/modules/_defined.js");
2985
2986module.exports = function repeat(count) {
2987  var str = String(defined(this));
2988  var res = '';
2989  var n = toInteger(count);
2990  if (n < 0 || n == Infinity) throw RangeError("Count can't be negative");
2991  for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) res += str;
2992  return res;
2993};
2994
2995
2996/***/ }),
2997
vendor: 1,482 bytes, lines 2998-3038
2998/***/ "./node_modules/core-js/modules/_string-trim.js":
2999/*!******************************************************!*\
3000  !*** ./node_modules/core-js/modules/_string-trim.js ***!
3001  \******************************************************/
3002/*! no static exports found */
3003/***/ (function(module, exports, __webpack_require__) {
3004
3005var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
3006var defined = __webpack_require__(/*! ./_defined */ "./node_modules/core-js/modules/_defined.js");
3007var fails = __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js");
3008var spaces = __webpack_require__(/*! ./_string-ws */ "./node_modules/core-js/modules/_string-ws.js");
3009var space = '[' + spaces + ']';
3010var non = '\u200b\u0085';
3011var ltrim = RegExp('^' + space + space + '*');
3012var rtrim = RegExp(space + space + '*$');
3013
3014var exporter = function (KEY, exec, ALIAS) {
3015  var exp = {};
3016  var FORCE = fails(function () {
3017    return !!spaces[KEY]() || non[KEY]() != non;
3018  });
3019  var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];
3020  if (ALIAS) exp[ALIAS] = fn;
3021  $export($export.P + $export.F * FORCE, 'String', exp);
3022};
3023
3024// 1 -> String#trimLeft
3025// 2 -> String#trimRight
3026// 3 -> String#trim
3027var trim = exporter.trim = function (string, TYPE) {
3028  string = String(defined(string));
3029  if (TYPE & 1) string = string.replace(ltrim, '');
3030  if (TYPE & 2) string = string.replace(rtrim, '');
3031  return string;
3032};
3033
3034module.exports = exporter;
3035
3036
3037/***/ }),
3038
vendor: 477 bytes, lines 3039-3051
3039/***/ "./node_modules/core-js/modules/_string-ws.js":
3040/*!****************************************************!*\
3041  !*** ./node_modules/core-js/modules/_string-ws.js ***!
3042  \****************************************************/
3043/*! no static exports found */
3044/***/ (function(module, exports) {
3045
3046module.exports = '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003' +
3047  '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF';
3048
3049
3050/***/ }),
3051
vendor: 3,154 bytes, lines 3052-3146
3052/***/ "./node_modules/core-js/modules/_task.js":
3053/*!***********************************************!*\
3054  !*** ./node_modules/core-js/modules/_task.js ***!
3055  \***********************************************/
3056/*! no static exports found */
3057/***/ (function(module, exports, __webpack_require__) {
3058
3059var ctx = __webpack_require__(/*! ./_ctx */ "./node_modules/core-js/modules/_ctx.js");
3060var invoke = __webpack_require__(/*! ./_invoke */ "./node_modules/core-js/modules/_invoke.js");
3061var html = __webpack_require__(/*! ./_html */ "./node_modules/core-js/modules/_html.js");
3062var cel = __webpack_require__(/*! ./_dom-create */ "./node_modules/core-js/modules/_dom-create.js");
3063var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
3064var process = global.process;
3065var setTask = global.setImmediate;
3066var clearTask = global.clearImmediate;
3067var MessageChannel = global.MessageChannel;
3068var Dispatch = global.Dispatch;
3069var counter = 0;
3070var queue = {};
3071var ONREADYSTATECHANGE = 'onreadystatechange';
3072var defer, channel, port;
3073var run = function () {
3074  var id = +this;
3075  // eslint-disable-next-line no-prototype-builtins
3076  if (queue.hasOwnProperty(id)) {
3077    var fn = queue[id];
3078    delete queue[id];
3079    fn();
3080  }
3081};
3082var listener = function (event) {
3083  run.call(event.data);
3084};
3085// Node.js 0.9+ & IE10+ has setImmediate, otherwise:
3086if (!setTask || !clearTask) {
3087  setTask = function setImmediate(fn) {
3088    var args = [];
3089    var i = 1;
3090    while (arguments.length > i) args.push(arguments[i++]);
3091    queue[++counter] = function () {
3092      // eslint-disable-next-line no-new-func
3093      invoke(typeof fn == 'function' ? fn : Function(fn), args);
3094    };
3095    defer(counter);
3096    return counter;
3097  };
3098  clearTask = function clearImmediate(id) {
3099    delete queue[id];
3100  };
3101  // Node.js 0.8-
3102  if (__webpack_require__(/*! ./_cof */ "./node_modules/core-js/modules/_cof.js")(process) == 'process') {
3103    defer = function (id) {
3104      process.nextTick(ctx(run, id, 1));
3105    };
3106  // Sphere (JS game engine) Dispatch API
3107  } else if (Dispatch && Dispatch.now) {
3108    defer = function (id) {
3109      Dispatch.now(ctx(run, id, 1));
3110    };
3111  // Browsers with MessageChannel, includes WebWorkers
3112  } else if (MessageChannel) {
3113    channel = new MessageChannel();
3114    port = channel.port2;
3115    channel.port1.onmessage = listener;
3116    defer = ctx(port.postMessage, port, 1);
3117  // Browsers with postMessage, skip WebWorkers
3118  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'
3119  } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {
3120    defer = function (id) {
3121      global.postMessage(id + '', '*');
3122    };
3123    global.addEventListener('message', listener, false);
3124  // IE8-
3125  } else if (ONREADYSTATECHANGE in cel('script')) {
3126    defer = function (id) {
3127      html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {
3128        html.removeChild(this);
3129        run.call(id);
3130      };
3131    };
3132  // Rest old browsers
3133  } else {
3134    defer = function (id) {
3135      setTimeout(ctx(run, id, 1), 0);
3136    };
3137  }
3138}
3139module.exports = {
3140  set: setTask,
3141  clear: clearTask
3142};
3143
3144
3145/***/ }),
3146
vendor: 648 bytes, lines 3147-3164
3147/***/ "./node_modules/core-js/modules/_to-absolute-index.js":
3148/*!************************************************************!*\
3149  !*** ./node_modules/core-js/modules/_to-absolute-index.js ***!
3150  \************************************************************/
3151/*! no static exports found */
3152/***/ (function(module, exports, __webpack_require__) {
3153
3154var toInteger = __webpack_require__(/*! ./_to-integer */ "./node_modules/core-js/modules/_to-integer.js");
3155var max = Math.max;
3156var min = Math.min;
3157module.exports = function (index, length) {
3158  index = toInteger(index);
3159  return index < 0 ? max(index + length, 0) : min(index, length);
3160};
3161
3162
3163/***/ }),
3164
vendor: 792 bytes, lines 3165-3185
3165/***/ "./node_modules/core-js/modules/_to-index.js":
3166/*!***************************************************!*\
3167  !*** ./node_modules/core-js/modules/_to-index.js ***!
3168  \***************************************************/
3169/*! no static exports found */
3170/***/ (function(module, exports, __webpack_require__) {
3171
3172// https://tc39.github.io/ecma262/#sec-toindex
3173var toInteger = __webpack_require__(/*! ./_to-integer */ "./node_modules/core-js/modules/_to-integer.js");
3174var toLength = __webpack_require__(/*! ./_to-length */ "./node_modules/core-js/modules/_to-length.js");
3175module.exports = function (it) {
3176  if (it === undefined) return 0;
3177  var number = toInteger(it);
3178  var length = toLength(number);
3179  if (number !== length) throw RangeError('Wrong length!');
3180  return length;
3181};
3182
3183
3184/***/ }),
3185
vendor: 472 bytes, lines 3186-3202
3186/***/ "./node_modules/core-js/modules/_to-integer.js":
3187/*!*****************************************************!*\
3188  !*** ./node_modules/core-js/modules/_to-integer.js ***!
3189  \*****************************************************/
3190/*! no static exports found */
3191/***/ (function(module, exports) {
3192
3193// 7.1.4 ToInteger
3194var ceil = Math.ceil;
3195var floor = Math.floor;
3196module.exports = function (it) {
3197  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
3198};
3199
3200
3201/***/ }),
3202
vendor: 673 bytes, lines 3203-3219
3203/***/ "./node_modules/core-js/modules/_to-iobject.js":
3204/*!*****************************************************!*\
3205  !*** ./node_modules/core-js/modules/_to-iobject.js ***!
3206  \*****************************************************/
3207/*! no static exports found */
3208/***/ (function(module, exports, __webpack_require__) {
3209
3210// to indexed object, toObject with fallback for non-array-like ES3 strings
3211var IObject = __webpack_require__(/*! ./_iobject */ "./node_modules/core-js/modules/_iobject.js");
3212var defined = __webpack_require__(/*! ./_defined */ "./node_modules/core-js/modules/_defined.js");
3213module.exports = function (it) {
3214  return IObject(defined(it));
3215};
3216
3217
3218/***/ }),
3219
vendor: 608 bytes, lines 3220-3236
3220/***/ "./node_modules/core-js/modules/_to-length.js":
3221/*!****************************************************!*\
3222  !*** ./node_modules/core-js/modules/_to-length.js ***!
3223  \****************************************************/
3224/*! no static exports found */
3225/***/ (function(module, exports, __webpack_require__) {
3226
3227// 7.1.15 ToLength
3228var toInteger = __webpack_require__(/*! ./_to-integer */ "./node_modules/core-js/modules/_to-integer.js");
3229var min = Math.min;
3230module.exports = function (it) {
3231  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
3232};
3233
3234
3235/***/ }),
3236
vendor: 522 bytes, lines 3237-3252
3237/***/ "./node_modules/core-js/modules/_to-object.js":
3238/*!****************************************************!*\
3239  !*** ./node_modules/core-js/modules/_to-object.js ***!
3240  \****************************************************/
3241/*! no static exports found */
3242/***/ (function(module, exports, __webpack_require__) {
3243
3244// 7.1.13 ToObject(argument)
3245var defined = __webpack_require__(/*! ./_defined */ "./node_modules/core-js/modules/_defined.js");
3246module.exports = function (it) {
3247  return Object(defined(it));
3248};
3249
3250
3251/***/ }),
3252
vendor: 1,059 bytes, lines 3253-3275
3253/***/ "./node_modules/core-js/modules/_to-primitive.js":
3254/*!*******************************************************!*\
3255  !*** ./node_modules/core-js/modules/_to-primitive.js ***!
3256  \*******************************************************/
3257/*! no static exports found */
3258/***/ (function(module, exports, __webpack_require__) {
3259
3260// 7.1.1 ToPrimitive(input [, PreferredType])
3261var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
3262// instead of the ES6 spec version, we didn't implement @@toPrimitive case
3263// and the second argument - flag - preferred type is a string
3264module.exports = function (it, S) {
3265  if (!isObject(it)) return it;
3266  var fn, val;
3267  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
3268  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
3269  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
3270  throw TypeError("Can't convert object to primitive value");
3271};
3272
3273
3274/***/ }),
3275
vendor: 21,164 bytes, lines 3276-3767
3276/***/ "./node_modules/core-js/modules/_typed-array.js":
3277/*!******************************************************!*\
3278  !*** ./node_modules/core-js/modules/_typed-array.js ***!
3279  \******************************************************/
3280/*! no static exports found */
3281/***/ (function(module, exports, __webpack_require__) {
3282
3283"use strict";
3284
3285if (__webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js")) {
3286  var LIBRARY = __webpack_require__(/*! ./_library */ "./node_modules/core-js/modules/_library.js");
3287  var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
3288  var fails = __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js");
3289  var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
3290  var $typed = __webpack_require__(/*! ./_typed */ "./node_modules/core-js/modules/_typed.js");
3291  var $buffer = __webpack_require__(/*! ./_typed-buffer */ "./node_modules/core-js/modules/_typed-buffer.js");
3292  var ctx = __webpack_require__(/*! ./_ctx */ "./node_modules/core-js/modules/_ctx.js");
3293  var anInstance = __webpack_require__(/*! ./_an-instance */ "./node_modules/core-js/modules/_an-instance.js");
3294  var propertyDesc = __webpack_require__(/*! ./_property-desc */ "./node_modules/core-js/modules/_property-desc.js");
3295  var hide = __webpack_require__(/*! ./_hide */ "./node_modules/core-js/modules/_hide.js");
3296  var redefineAll = __webpack_require__(/*! ./_redefine-all */ "./node_modules/core-js/modules/_redefine-all.js");
3297  var toInteger = __webpack_require__(/*! ./_to-integer */ "./node_modules/core-js/modules/_to-integer.js");
3298  var toLength = __webpack_require__(/*! ./_to-length */ "./node_modules/core-js/modules/_to-length.js");
3299  var toIndex = __webpack_require__(/*! ./_to-index */ "./node_modules/core-js/modules/_to-index.js");
3300  var toAbsoluteIndex = __webpack_require__(/*! ./_to-absolute-index */ "./node_modules/core-js/modules/_to-absolute-index.js");
3301  var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "./node_modules/core-js/modules/_to-primitive.js");
3302  var has = __webpack_require__(/*! ./_has */ "./node_modules/core-js/modules/_has.js");
3303  var classof = __webpack_require__(/*! ./_classof */ "./node_modules/core-js/modules/_classof.js");
3304  var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
3305  var toObject = __webpack_require__(/*! ./_to-object */ "./node_modules/core-js/modules/_to-object.js");
3306  var isArrayIter = __webpack_require__(/*! ./_is-array-iter */ "./node_modules/core-js/modules/_is-array-iter.js");
3307  var create = __webpack_require__(/*! ./_object-create */ "./node_modules/core-js/modules/_object-create.js");
3308  var getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ "./node_modules/core-js/modules/_object-gpo.js");
3309  var gOPN = __webpack_require__(/*! ./_object-gopn */ "./node_modules/core-js/modules/_object-gopn.js").f;
3310  var getIterFn = __webpack_require__(/*! ./core.get-iterator-method */ "./node_modules/core-js/modules/core.get-iterator-method.js");
3311  var uid = __webpack_require__(/*! ./_uid */ "./node_modules/core-js/modules/_uid.js");
3312  var wks = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js");
3313  var createArrayMethod = __webpack_require__(/*! ./_array-methods */ "./node_modules/core-js/modules/_array-methods.js");
3314  var createArrayIncludes = __webpack_require__(/*! ./_array-includes */ "./node_modules/core-js/modules/_array-includes.js");
3315  var speciesConstructor = __webpack_require__(/*! ./_species-constructor */ "./node_modules/core-js/modules/_species-constructor.js");
3316  var ArrayIterators = __webpack_require__(/*! ./es6.array.iterator */ "./node_modules/core-js/modules/es6.array.iterator.js");
3317  var Iterators = __webpack_require__(/*! ./_iterators */ "./node_modules/core-js/modules/_iterators.js");
3318  var $iterDetect = __webpack_require__(/*! ./_iter-detect */ "./node_modules/core-js/modules/_iter-detect.js");
3319  var setSpecies = __webpack_require__(/*! ./_set-species */ "./node_modules/core-js/modules/_set-species.js");
3320  var arrayFill = __webpack_require__(/*! ./_array-fill */ "./node_modules/core-js/modules/_array-fill.js");
3321  var arrayCopyWithin = __webpack_require__(/*! ./_array-copy-within */ "./node_modules/core-js/modules/_array-copy-within.js");
3322  var $DP = __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/modules/_object-dp.js");
3323  var $GOPD = __webpack_require__(/*! ./_object-gopd */ "./node_modules/core-js/modules/_object-gopd.js");
3324  var dP = $DP.f;
3325  var gOPD = $GOPD.f;
3326  var RangeError = global.RangeError;
3327  var TypeError = global.TypeError;
3328  var Uint8Array = global.Uint8Array;
3329  var ARRAY_BUFFER = 'ArrayBuffer';
3330  var SHARED_BUFFER = 'Shared' + ARRAY_BUFFER;
3331  var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';
3332  var PROTOTYPE = 'prototype';
3333  var ArrayProto = Array[PROTOTYPE];
3334  var $ArrayBuffer = $buffer.ArrayBuffer;
3335  var $DataView = $buffer.DataView;
3336  var arrayForEach = createArrayMethod(0);
3337  var arrayFilter = createArrayMethod(2);
3338  var arraySome = createArrayMethod(3);
3339  var arrayEvery = createArrayMethod(4);
3340  var arrayFind = createArrayMethod(5);
3341  var arrayFindIndex = createArrayMethod(6);
3342  var arrayIncludes = createArrayIncludes(true);
3343  var arrayIndexOf = createArrayIncludes(false);
3344  var arrayValues = ArrayIterators.values;
3345  var arrayKeys = ArrayIterators.keys;
3346  var arrayEntries = ArrayIterators.entries;
3347  var arrayLastIndexOf = ArrayProto.lastIndexOf;
3348  var arrayReduce = ArrayProto.reduce;
3349  var arrayReduceRight = ArrayProto.reduceRight;
3350  var arrayJoin = ArrayProto.join;
3351  var arraySort = ArrayProto.sort;
3352  var arraySlice = ArrayProto.slice;
3353  var arrayToString = ArrayProto.toString;
3354  var arrayToLocaleString = ArrayProto.toLocaleString;
3355  var ITERATOR = wks('iterator');
3356  var TAG = wks('toStringTag');
3357  var TYPED_CONSTRUCTOR = uid('typed_constructor');
3358  var DEF_CONSTRUCTOR = uid('def_constructor');
3359  var ALL_CONSTRUCTORS = $typed.CONSTR;
3360  var TYPED_ARRAY = $typed.TYPED;
3361  var VIEW = $typed.VIEW;
3362  var WRONG_LENGTH = 'Wrong length!';
3363
3364  var $map = createArrayMethod(1, function (O, length) {
3365    return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);
3366  });
3367
3368  var LITTLE_ENDIAN = fails(function () {
3369    // eslint-disable-next-line no-undef
3370    return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;
3371  });
3372
3373  var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function () {
3374    new Uint8Array(1).set({});
3375  });
3376
3377  var toOffset = function (it, BYTES) {
3378    var offset = toInteger(it);
3379    if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset!');
3380    return offset;
3381  };
3382
3383  var validate = function (it) {
3384    if (isObject(it) && TYPED_ARRAY in it) return it;
3385    throw TypeError(it + ' is not a typed array!');
3386  };
3387
3388  var allocate = function (C, length) {
3389    if (!(isObject(C) && TYPED_CONSTRUCTOR in C)) {
3390      throw TypeError('It is not a typed array constructor!');
3391    } return new C(length);
3392  };
3393
3394  var speciesFromList = function (O, list) {
3395    return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list);
3396  };
3397
3398  var fromList = function (C, list) {
3399    var index = 0;
3400    var length = list.length;
3401    var result = allocate(C, length);
3402    while (length > index) result[index] = list[index++];
3403    return result;
3404  };
3405
3406  var addGetter = function (it, key, internal) {
3407    dP(it, key, { get: function () { return this._d[internal]; } });
3408  };
3409
3410  var $from = function from(source /* , mapfn, thisArg */) {
3411    var O = toObject(source);
3412    var aLen = arguments.length;
3413    var mapfn = aLen > 1 ? arguments[1] : undefined;
3414    var mapping = mapfn !== undefined;
3415    var iterFn = getIterFn(O);
3416    var i, length, values, result, step, iterator;
3417    if (iterFn != undefined && !isArrayIter(iterFn)) {
3418      for (iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++) {
3419        values.push(step.value);
3420      } O = values;
3421    }
3422    if (mapping && aLen > 2) mapfn = ctx(mapfn, arguments[2], 2);
3423    for (i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++) {
3424      result[i] = mapping ? mapfn(O[i], i) : O[i];
3425    }
3426    return result;
3427  };
3428
3429  var $of = function of(/* ...items */) {
3430    var index = 0;
3431    var length = arguments.length;
3432    var result = allocate(this, length);
3433    while (length > index) result[index] = arguments[index++];
3434    return result;
3435  };
3436
3437  // iOS Safari 6.x fails here
3438  var TO_LOCALE_BUG = !!Uint8Array && fails(function () { arrayToLocaleString.call(new Uint8Array(1)); });
3439
3440  var $toLocaleString = function toLocaleString() {
3441    return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments);
3442  };
3443
3444  var proto = {
3445    copyWithin: function copyWithin(target, start /* , end */) {
3446      return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);
3447    },
3448    every: function every(callbackfn /* , thisArg */) {
3449      return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
3450    },
3451    fill: function fill(value /* , start, end */) { // eslint-disable-line no-unused-vars
3452      return arrayFill.apply(validate(this), arguments);
3453    },
3454    filter: function filter(callbackfn /* , thisArg */) {
3455      return speciesFromList(this, arrayFilter(validate(this), callbackfn,
3456        arguments.length > 1 ? arguments[1] : undefined));
3457    },
3458    find: function find(predicate /* , thisArg */) {
3459      return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
3460    },
3461    findIndex: function findIndex(predicate /* , thisArg */) {
3462      return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
3463    },
3464    forEach: function forEach(callbackfn /* , thisArg */) {
3465      arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
3466    },
3467    indexOf: function indexOf(searchElement /* , fromIndex */) {
3468      return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);
3469    },
3470    includes: function includes(searchElement /* , fromIndex */) {
3471      return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);
3472    },
3473    join: function join(separator) { // eslint-disable-line no-unused-vars
3474      return arrayJoin.apply(validate(this), arguments);
3475    },
3476    lastIndexOf: function lastIndexOf(searchElement /* , fromIndex */) { // eslint-disable-line no-unused-vars
3477      return arrayLastIndexOf.apply(validate(this), arguments);
3478    },
3479    map: function map(mapfn /* , thisArg */) {
3480      return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);
3481    },
3482    reduce: function reduce(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars
3483      return arrayReduce.apply(validate(this), arguments);
3484    },
3485    reduceRight: function reduceRight(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars
3486      return arrayReduceRight.apply(validate(this), arguments);
3487    },
3488    reverse: function reverse() {
3489      var that = this;
3490      var length = validate(that).length;
3491      var middle = Math.floor(length / 2);
3492      var index = 0;
3493      var value;
3494      while (index < middle) {
3495        value = that[index];
3496        that[index++] = that[--length];
3497        that[length] = value;
3498      } return that;
3499    },
3500    some: function some(callbackfn /* , thisArg */) {
3501      return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
3502    },
3503    sort: function sort(comparefn) {
3504      return arraySort.call(validate(this), comparefn);
3505    },
3506    subarray: function subarray(begin, end) {
3507      var O = validate(this);
3508      var length = O.length;
3509      var $begin = toAbsoluteIndex(begin, length);
3510      return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(
3511        O.buffer,
3512        O.byteOffset + $begin * O.BYTES_PER_ELEMENT,
3513        toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - $begin)
3514      );
3515    }
3516  };
3517
3518  var $slice = function slice(start, end) {
3519    return speciesFromList(this, arraySlice.call(validate(this), start, end));
3520  };
3521
3522  var $set = function set(arrayLike /* , offset */) {
3523    validate(this);
3524    var offset = toOffset(arguments[1], 1);
3525    var length = this.length;
3526    var src = toObject(arrayLike);
3527    var len = toLength(src.length);
3528    var index = 0;
3529    if (len + offset > length) throw RangeError(WRONG_LENGTH);
3530    while (index < len) this[offset + index] = src[index++];
3531  };
3532
3533  var $iterators = {
3534    entries: function entries() {
3535      return arrayEntries.call(validate(this));
3536    },
3537    keys: function keys() {
3538      return arrayKeys.call(validate(this));
3539    },
3540    values: function values() {
3541      return arrayValues.call(validate(this));
3542    }
3543  };
3544
3545  var isTAIndex = function (target, key) {
3546    return isObject(target)
3547      && target[TYPED_ARRAY]
3548      && typeof key != 'symbol'
3549      && key in target
3550      && String(+key) == String(key);
3551  };
3552  var $getDesc = function getOwnPropertyDescriptor(target, key) {
3553    return isTAIndex(target, key = toPrimitive(key, true))
3554      ? propertyDesc(2, target[key])
3555      : gOPD(target, key);
3556  };
3557  var $setDesc = function defineProperty(target, key, desc) {
3558    if (isTAIndex(target, key = toPrimitive(key, true))
3559      && isObject(desc)
3560      && has(desc, 'value')
3561      && !has(desc, 'get')
3562      && !has(desc, 'set')
3563      // TODO: add validation descriptor w/o calling accessors
3564      && !desc.configurable
3565      && (!has(desc, 'writable') || desc.writable)
3566      && (!has(desc, 'enumerable') || desc.enumerable)
3567    ) {
3568      target[key] = desc.value;
3569      return target;
3570    } return dP(target, key, desc);
3571  };
3572
3573  if (!ALL_CONSTRUCTORS) {
3574    $GOPD.f = $getDesc;
3575    $DP.f = $setDesc;
3576  }
3577
3578  $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', {
3579    getOwnPropertyDescriptor: $getDesc,
3580    defineProperty: $setDesc
3581  });
3582
3583  if (fails(function () { arrayToString.call({}); })) {
3584    arrayToString = arrayToLocaleString = function toString() {
3585      return arrayJoin.call(this);
3586    };
3587  }
3588
3589  var $TypedArrayPrototype$ = redefineAll({}, proto);
3590  redefineAll($TypedArrayPrototype$, $iterators);
3591  hide($TypedArrayPrototype$, ITERATOR, $iterators.values);
3592  redefineAll($TypedArrayPrototype$, {
3593    slice: $slice,
3594    set: $set,
3595    constructor: function () { /* noop */ },
3596    toString: arrayToString,
3597    toLocaleString: $toLocaleString
3598  });
3599  addGetter($TypedArrayPrototype$, 'buffer', 'b');
3600  addGetter($TypedArrayPrototype$, 'byteOffset', 'o');
3601  addGetter($TypedArrayPrototype$, 'byteLength', 'l');
3602  addGetter($TypedArrayPrototype$, 'length', 'e');
3603  dP($TypedArrayPrototype$, TAG, {
3604    get: function () { return this[TYPED_ARRAY]; }
3605  });
3606
3607  // eslint-disable-next-line max-statements
3608  module.exports = function (KEY, BYTES, wrapper, CLAMPED) {
3609    CLAMPED = !!CLAMPED;
3610    var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array';
3611    var GETTER = 'get' + KEY;
3612    var SETTER = 'set' + KEY;
3613    var TypedArray = global[NAME];
3614    var Base = TypedArray || {};
3615    var TAC = TypedArray && getPrototypeOf(TypedArray);
3616    var FORCED = !TypedArray || !$typed.ABV;
3617    var O = {};
3618    var TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE];
3619    var getter = function (that, index) {
3620      var data = that._d;
3621      return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN);
3622    };
3623    var setter = function (that, index, value) {
3624      var data = that._d;
3625      if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff;
3626      data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN);
3627    };
3628    var addElement = function (that, index) {
3629      dP(that, index, {
3630        get: function () {
3631          return getter(this, index);
3632        },
3633        set: function (value) {
3634          return setter(this, index, value);
3635        },
3636        enumerable: true
3637      });
3638    };
3639    if (FORCED) {
3640      TypedArray = wrapper(function (that, data, $offset, $length) {
3641        anInstance(that, TypedArray, NAME, '_d');
3642        var index = 0;
3643        var offset = 0;
3644        var buffer, byteLength, length, klass;
3645        if (!isObject(data)) {
3646          length = toIndex(data);
3647          byteLength = length * BYTES;
3648          buffer = new $ArrayBuffer(byteLength);
3649        } else if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {
3650          buffer = data;
3651          offset = toOffset($offset, BYTES);
3652          var $len = data.byteLength;
3653          if ($length === undefined) {
3654            if ($len % BYTES) throw RangeError(WRONG_LENGTH);
3655            byteLength = $len - offset;
3656            if (byteLength < 0) throw RangeError(WRONG_LENGTH);
3657          } else {
3658            byteLength = toLength($length) * BYTES;
3659            if (byteLength + offset > $len) throw RangeError(WRONG_LENGTH);
3660          }
3661          length = byteLength / BYTES;
3662        } else if (TYPED_ARRAY in data) {
3663          return fromList(TypedArray, data);
3664        } else {
3665          return $from.call(TypedArray, data);
3666        }
3667        hide(that, '_d', {
3668          b: buffer,
3669          o: offset,
3670          l: byteLength,
3671          e: length,
3672          v: new $DataView(buffer)
3673        });
3674        while (index < length) addElement(that, index++);
3675      });
3676      TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$);
3677      hide(TypedArrayPrototype, 'constructor', TypedArray);
3678    } else if (!fails(function () {
3679      TypedArray(1);
3680    }) || !fails(function () {
3681      new TypedArray(-1); // eslint-disable-line no-new
3682    }) || !$iterDetect(function (iter) {
3683      new TypedArray(); // eslint-disable-line no-new
3684      new TypedArray(null); // eslint-disable-line no-new
3685      new TypedArray(1.5); // eslint-disable-line no-new
3686      new TypedArray(iter); // eslint-disable-line no-new
3687    }, true)) {
3688      TypedArray = wrapper(function (that, data, $offset, $length) {
3689        anInstance(that, TypedArray, NAME);
3690        var klass;
3691        // `ws` module bug, temporarily remove validation length for Uint8Array
3692        // https://github.com/websockets/ws/pull/645
3693        if (!isObject(data)) return new Base(toIndex(data));
3694        if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {
3695          return $length !== undefined
3696            ? new Base(data, toOffset($offset, BYTES), $length)
3697            : $offset !== undefined
3698              ? new Base(data, toOffset($offset, BYTES))
3699              : new Base(data);
3700        }
3701        if (TYPED_ARRAY in data) return fromList(TypedArray, data);
3702        return $from.call(TypedArray, data);
3703      });
3704      arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function (key) {
3705        if (!(key in TypedArray)) hide(TypedArray, key, Base[key]);
3706      });
3707      TypedArray[PROTOTYPE] = TypedArrayPrototype;
3708      if (!LIBRARY) TypedArrayPrototype.constructor = TypedArray;
3709    }
3710    var $nativeIterator = TypedArrayPrototype[ITERATOR];
3711    var CORRECT_ITER_NAME = !!$nativeIterator
3712      && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined);
3713    var $iterator = $iterators.values;
3714    hide(TypedArray, TYPED_CONSTRUCTOR, true);
3715    hide(TypedArrayPrototype, TYPED_ARRAY, NAME);
3716    hide(TypedArrayPrototype, VIEW, true);
3717    hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray);
3718
3719    if (CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)) {
3720      dP(TypedArrayPrototype, TAG, {
3721        get: function () { return NAME; }
3722      });
3723    }
3724
3725    O[NAME] = TypedArray;
3726
3727    $export($export.G + $export.W + $export.F * (TypedArray != Base), O);
3728
3729    $export($export.S, NAME, {
3730      BYTES_PER_ELEMENT: BYTES
3731    });
3732
3733    $export($export.S + $export.F * fails(function () { Base.of.call(TypedArray, 1); }), NAME, {
3734      from: $from,
3735      of: $of
3736    });
3737
3738    if (!(BYTES_PER_ELEMENT in TypedArrayPrototype)) hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES);
3739
3740    $export($export.P, NAME, proto);
3741
3742    setSpecies(NAME);
3743
3744    $export($export.P + $export.F * FORCED_SET, NAME, { set: $set });
3745
3746    $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators);
3747
3748    if (!LIBRARY && TypedArrayPrototype.toString != arrayToString) TypedArrayPrototype.toString = arrayToString;
3749
3750    $export($export.P + $export.F * fails(function () {
3751      new TypedArray(1).slice();
3752    }), NAME, { slice: $slice });
3753
3754    $export($export.P + $export.F * (fails(function () {
3755      return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString();
3756    }) || !fails(function () {
3757      TypedArrayPrototype.toLocaleString.call([1, 2]);
3758    })), NAME, { toLocaleString: $toLocaleString });
3759
3760    Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator;
3761    if (!LIBRARY && !CORRECT_ITER_NAME) hide(TypedArrayPrototype, ITERATOR, $iterator);
3762  };
3763} else module.exports = function () { /* empty */ };
3764
3765
3766/***/ }),
3767
vendor: 10,780 bytes, lines 3768-4055
3768/***/ "./node_modules/core-js/modules/_typed-buffer.js":
3769/*!*******************************************************!*\
3770  !*** ./node_modules/core-js/modules/_typed-buffer.js ***!
3771  \*******************************************************/
3772/*! no static exports found */
3773/***/ (function(module, exports, __webpack_require__) {
3774
3775"use strict";
3776
3777var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
3778var DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js");
3779var LIBRARY = __webpack_require__(/*! ./_library */ "./node_modules/core-js/modules/_library.js");
3780var $typed = __webpack_require__(/*! ./_typed */ "./node_modules/core-js/modules/_typed.js");
3781var hide = __webpack_require__(/*! ./_hide */ "./node_modules/core-js/modules/_hide.js");
3782var redefineAll = __webpack_require__(/*! ./_redefine-all */ "./node_modules/core-js/modules/_redefine-all.js");
3783var fails = __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js");
3784var anInstance = __webpack_require__(/*! ./_an-instance */ "./node_modules/core-js/modules/_an-instance.js");
3785var toInteger = __webpack_require__(/*! ./_to-integer */ "./node_modules/core-js/modules/_to-integer.js");
3786var toLength = __webpack_require__(/*! ./_to-length */ "./node_modules/core-js/modules/_to-length.js");
3787var toIndex = __webpack_require__(/*! ./_to-index */ "./node_modules/core-js/modules/_to-index.js");
3788var gOPN = __webpack_require__(/*! ./_object-gopn */ "./node_modules/core-js/modules/_object-gopn.js").f;
3789var dP = __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/modules/_object-dp.js").f;
3790var arrayFill = __webpack_require__(/*! ./_array-fill */ "./node_modules/core-js/modules/_array-fill.js");
3791var setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ "./node_modules/core-js/modules/_set-to-string-tag.js");
3792var ARRAY_BUFFER = 'ArrayBuffer';
3793var DATA_VIEW = 'DataView';
3794var PROTOTYPE = 'prototype';
3795var WRONG_LENGTH = 'Wrong length!';
3796var WRONG_INDEX = 'Wrong index!';
3797var $ArrayBuffer = global[ARRAY_BUFFER];
3798var $DataView = global[DATA_VIEW];
3799var Math = global.Math;
3800var RangeError = global.RangeError;
3801// eslint-disable-next-line no-shadow-restricted-names
3802var Infinity = global.Infinity;
3803var BaseBuffer = $ArrayBuffer;
3804var abs = Math.abs;
3805var pow = Math.pow;
3806var floor = Math.floor;
3807var log = Math.log;
3808var LN2 = Math.LN2;
3809var BUFFER = 'buffer';
3810var BYTE_LENGTH = 'byteLength';
3811var BYTE_OFFSET = 'byteOffset';
3812var $BUFFER = DESCRIPTORS ? '_b' : BUFFER;
3813var $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH;
3814var $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET;
3815
3816// IEEE754 conversions based on https://github.com/feross/ieee754
3817function packIEEE754(value, mLen, nBytes) {
3818  var buffer = new Array(nBytes);
3819  var eLen = nBytes * 8 - mLen - 1;
3820  var eMax = (1 << eLen) - 1;
3821  var eBias = eMax >> 1;
3822  var rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0;
3823  var i = 0;
3824  var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;
3825  var e, m, c;
3826  value = abs(value);
3827  // eslint-disable-next-line no-self-compare
3828  if (value != value || value === Infinity) {
3829    // eslint-disable-next-line no-self-compare
3830    m = value != value ? 1 : 0;
3831    e = eMax;
3832  } else {
3833    e = floor(log(value) / LN2);
3834    if (value * (c = pow(2, -e)) < 1) {
3835      e--;
3836      c *= 2;
3837    }
3838    if (e + eBias >= 1) {
3839      value += rt / c;
3840    } else {
3841      value += rt * pow(2, 1 - eBias);
3842    }
3843    if (value * c >= 2) {
3844      e++;
3845      c /= 2;
3846    }
3847    if (e + eBias >= eMax) {
3848      m = 0;
3849      e = eMax;
3850    } else if (e + eBias >= 1) {
3851      m = (value * c - 1) * pow(2, mLen);
3852      e = e + eBias;
3853    } else {
3854      m = value * pow(2, eBias - 1) * pow(2, mLen);
3855      e = 0;
3856    }
3857  }
3858  for (; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8);
3859  e = e << mLen | m;
3860  eLen += mLen;
3861  for (; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8);
3862  buffer[--i] |= s * 128;
3863  return buffer;
3864}
3865function unpackIEEE754(buffer, mLen, nBytes) {
3866  var eLen = nBytes * 8 - mLen - 1;
3867  var eMax = (1 << eLen) - 1;
3868  var eBias = eMax >> 1;
3869  var nBits = eLen - 7;
3870  var i = nBytes - 1;
3871  var s = buffer[i--];
3872  var e = s & 127;
3873  var m;
3874  s >>= 7;
3875  for (; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8);
3876  m = e & (1 << -nBits) - 1;
3877  e >>= -nBits;
3878  nBits += mLen;
3879  for (; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8);
3880  if (e === 0) {
3881    e = 1 - eBias;
3882  } else if (e === eMax) {
3883    return m ? NaN : s ? -Infinity : Infinity;
3884  } else {
3885    m = m + pow(2, mLen);
3886    e = e - eBias;
3887  } return (s ? -1 : 1) * m * pow(2, e - mLen);
3888}
3889
3890function unpackI32(bytes) {
3891  return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];
3892}
3893function packI8(it) {
3894  return [it & 0xff];
3895}
3896function packI16(it) {
3897  return [it & 0xff, it >> 8 & 0xff];
3898}
3899function packI32(it) {
3900  return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff];
3901}
3902function packF64(it) {
3903  return packIEEE754(it, 52, 8);
3904}
3905function packF32(it) {
3906  return packIEEE754(it, 23, 4);
3907}
3908
3909function addGetter(C, key, internal) {
3910  dP(C[PROTOTYPE], key, { get: function () { return this[internal]; } });
3911}
3912
3913function get(view, bytes, index, isLittleEndian) {
3914  var numIndex = +index;
3915  var intIndex = toIndex(numIndex);
3916  if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);
3917  var store = view[$BUFFER]._b;
3918  var start = intIndex + view[$OFFSET];
3919  var pack = store.slice(start, start + bytes);
3920  return isLittleEndian ? pack : pack.reverse();
3921}
3922function set(view, bytes, index, conversion, value, isLittleEndian) {
3923  var numIndex = +index;
3924  var intIndex = toIndex(numIndex);
3925  if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);
3926  var store = view[$BUFFER]._b;
3927  var start = intIndex + view[$OFFSET];
3928  var pack = conversion(+value);
3929  for (var i = 0; i < bytes; i++) store[start + i] = pack[isLittleEndian ? i : bytes - i - 1];
3930}
3931
3932if (!$typed.ABV) {
3933  $ArrayBuffer = function ArrayBuffer(length) {
3934    anInstance(this, $ArrayBuffer, ARRAY_BUFFER);
3935    var byteLength = toIndex(length);
3936    this._b = arrayFill.call(new Array(byteLength), 0);
3937    this[$LENGTH] = byteLength;
3938  };
3939
3940  $DataView = function DataView(buffer, byteOffset, byteLength) {
3941    anInstance(this, $DataView, DATA_VIEW);
3942    anInstance(buffer, $ArrayBuffer, DATA_VIEW);
3943    var bufferLength = buffer[$LENGTH];
3944    var offset = toInteger(byteOffset);
3945    if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset!');
3946    byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);
3947    if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);
3948    this[$BUFFER] = buffer;
3949    this[$OFFSET] = offset;
3950    this[$LENGTH] = byteLength;
3951  };
3952
3953  if (DESCRIPTORS) {
3954    addGetter($ArrayBuffer, BYTE_LENGTH, '_l');
3955    addGetter($DataView, BUFFER, '_b');
3956    addGetter($DataView, BYTE_LENGTH, '_l');
3957    addGetter($DataView, BYTE_OFFSET, '_o');
3958  }
3959
3960  redefineAll($DataView[PROTOTYPE], {
3961    getInt8: function getInt8(byteOffset) {
3962      return get(this, 1, byteOffset)[0] << 24 >> 24;
3963    },
3964    getUint8: function getUint8(byteOffset) {
3965      return get(this, 1, byteOffset)[0];
3966    },
3967    getInt16: function getInt16(byteOffset /* , littleEndian */) {
3968      var bytes = get(this, 2, byteOffset, arguments[1]);
3969      return (bytes[1] << 8 | bytes[0]) << 16 >> 16;
3970    },
3971    getUint16: function getUint16(byteOffset /* , littleEndian */) {
3972      var bytes = get(this, 2, byteOffset, arguments[1]);
3973      return bytes[1] << 8 | bytes[0];
3974    },
3975    getInt32: function getInt32(byteOffset /* , littleEndian */) {
3976      return unpackI32(get(this, 4, byteOffset, arguments[1]));
3977    },
3978    getUint32: function getUint32(byteOffset /* , littleEndian */) {
3979      return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0;
3980    },
3981    getFloat32: function getFloat32(byteOffset /* , littleEndian */) {
3982      return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4);
3983    },
3984    getFloat64: function getFloat64(byteOffset /* , littleEndian */) {
3985      return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8);
3986    },
3987    setInt8: function setInt8(byteOffset, value) {
3988      set(this, 1, byteOffset, packI8, value);
3989    },
3990    setUint8: function setUint8(byteOffset, value) {
3991      set(this, 1, byteOffset, packI8, value);
3992    },
3993    setInt16: function setInt16(byteOffset, value /* , littleEndian */) {
3994      set(this, 2, byteOffset, packI16, value, arguments[2]);
3995    },
3996    setUint16: function setUint16(byteOffset, value /* , littleEndian */) {
3997      set(this, 2, byteOffset, packI16, value, arguments[2]);
3998    },
3999    setInt32: function setInt32(byteOffset, value /* , littleEndian */) {
4000      set(this, 4, byteOffset, packI32, value, arguments[2]);
4001    },
4002    setUint32: function setUint32(byteOffset, value /* , littleEndian */) {
4003      set(this, 4, byteOffset, packI32, value, arguments[2]);
4004    },
4005    setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {
4006      set(this, 4, byteOffset, packF32, value, arguments[2]);
4007    },
4008    setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {
4009      set(this, 8, byteOffset, packF64, value, arguments[2]);
4010    }
4011  });
4012} else {
4013  if (!fails(function () {
4014    $ArrayBuffer(1);
4015  }) || !fails(function () {
4016    new $ArrayBuffer(-1); // eslint-disable-line no-new
4017  }) || fails(function () {
4018    new $ArrayBuffer(); // eslint-disable-line no-new
4019    new $ArrayBuffer(1.5); // eslint-disable-line no-new
4020    new $ArrayBuffer(NaN); // eslint-disable-line no-new
4021    return $ArrayBuffer.name != ARRAY_BUFFER;
4022  })) {
4023    $ArrayBuffer = function ArrayBuffer(length) {
4024      anInstance(this, $ArrayBuffer);
4025      return new BaseBuffer(toIndex(length));
4026    };
4027    var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE];
4028    for (var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j;) {
4029      if (!((key = keys[j++]) in $ArrayBuffer)) hide($ArrayBuffer, key, BaseBuffer[key]);
4030    }
4031    if (!LIBRARY) ArrayBufferProto.constructor = $ArrayBuffer;
4032  }
4033  // iOS Safari 7.x bug
4034  var view = new $DataView(new $ArrayBuffer(2));
4035  var $setInt8 = $DataView[PROTOTYPE].setInt8;
4036  view.setInt8(0, 2147483648);
4037  view.setInt8(1, 2147483649);
4038  if (view.getInt8(0) || !view.getInt8(1)) redefineAll($DataView[PROTOTYPE], {
4039    setInt8: function setInt8(byteOffset, value) {
4040      $setInt8.call(this, byteOffset, value << 24 >> 24);
4041    },
4042    setUint8: function setUint8(byteOffset, value) {
4043      $setInt8.call(this, byteOffset, value << 24 >> 24);
4044    }
4045  }, true);
4046}
4047setToStringTag($ArrayBuffer, ARRAY_BUFFER);
4048setToStringTag($DataView, DATA_VIEW);
4049hide($DataView[PROTOTYPE], $typed.VIEW, true);
4050exports[ARRAY_BUFFER] = $ArrayBuffer;
4051exports[DATA_VIEW] = $DataView;
4052
4053
4054/***/ }),
4055
vendor: 1,164 bytes, lines 4056-4094
4056/***/ "./node_modules/core-js/modules/_typed.js":
4057/*!************************************************!*\
4058  !*** ./node_modules/core-js/modules/_typed.js ***!
4059  \************************************************/
4060/*! no static exports found */
4061/***/ (function(module, exports, __webpack_require__) {
4062
4063var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
4064var hide = __webpack_require__(/*! ./_hide */ "./node_modules/core-js/modules/_hide.js");
4065var uid = __webpack_require__(/*! ./_uid */ "./node_modules/core-js/modules/_uid.js");
4066var TYPED = uid('typed_array');
4067var VIEW = uid('view');
4068var ABV = !!(global.ArrayBuffer && global.DataView);
4069var CONSTR = ABV;
4070var i = 0;
4071var l = 9;
4072var Typed;
4073
4074var TypedArrayConstructors = (
4075  'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array'
4076).split(',');
4077
4078while (i < l) {
4079  if (Typed = global[TypedArrayConstructors[i++]]) {
4080    hide(Typed.prototype, TYPED, true);
4081    hide(Typed.prototype, VIEW, true);
4082  } else CONSTR = false;
4083}
4084
4085module.exports = {
4086  ABV: ABV,
4087  CONSTR: CONSTR,
4088  TYPED: TYPED,
4089  VIEW: VIEW
4090};
4091
4092
4093/***/ }),
4094
vendor: 445 bytes, lines 4095-4110
4095/***/ "./node_modules/core-js/modules/_uid.js":
4096/*!**********************************************!*\
4097  !*** ./node_modules/core-js/modules/_uid.js ***!
4098  \**********************************************/
4099/*! no static exports found */
4100/***/ (function(module, exports) {
4101
4102var id = 0;
4103var px = Math.random();
4104module.exports = function (key) {
4105  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
4106};
4107
4108
4109/***/ }),
4110
vendor: 520 bytes, lines 4111-4125
4111/***/ "./node_modules/core-js/modules/_user-agent.js":
4112/*!*****************************************************!*\
4113  !*** ./node_modules/core-js/modules/_user-agent.js ***!
4114  \*****************************************************/
4115/*! no static exports found */
4116/***/ (function(module, exports, __webpack_require__) {
4117
4118var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
4119var navigator = global.navigator;
4120
4121module.exports = navigator && navigator.userAgent || '';
4122
4123
4124/***/ }),
4125
vendor: 632 bytes, lines 4126-4141
4126/***/ "./node_modules/core-js/modules/_validate-collection.js":
4127/*!**************************************************************!*\
4128  !*** ./node_modules/core-js/modules/_validate-collection.js ***!
4129  \**************************************************************/
4130/*! no static exports found */
4131/***/ (function(module, exports, __webpack_require__) {
4132
4133var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
4134module.exports = function (it, TYPE) {
4135  if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');
4136  return it;
4137};
4138
4139
4140/***/ }),
4141
vendor: 1,057 bytes, lines 4142-4161
4142/***/ "./node_modules/core-js/modules/_wks-define.js":
4143/*!*****************************************************!*\
4144  !*** ./node_modules/core-js/modules/_wks-define.js ***!
4145  \*****************************************************/
4146/*! no static exports found */
4147/***/ (function(module, exports, __webpack_require__) {
4148
4149var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
4150var core = __webpack_require__(/*! ./_core */ "./node_modules/core-js/modules/_core.js");
4151var LIBRARY = __webpack_require__(/*! ./_library */ "./node_modules/core-js/modules/_library.js");
4152var wksExt = __webpack_require__(/*! ./_wks-ext */ "./node_modules/core-js/modules/_wks-ext.js");
4153var defineProperty = __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/modules/_object-dp.js").f;
4154module.exports = function (name) {
4155  var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});
4156  if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });
4157};
4158
4159
4160/***/ }),
4161
vendor: 409 bytes, lines 4162-4173
4162/***/ "./node_modules/core-js/modules/_wks-ext.js":
4163/*!**************************************************!*\
4164  !*** ./node_modules/core-js/modules/_wks-ext.js ***!
4165  \**************************************************/
4166/*! no static exports found */
4167/***/ (function(module, exports, __webpack_require__) {
4168
4169exports.f = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js");
4170
4171
4172/***/ }),
4173
vendor: 842 bytes, lines 4174-4195
4174/***/ "./node_modules/core-js/modules/_wks.js":
4175/*!**********************************************!*\
4176  !*** ./node_modules/core-js/modules/_wks.js ***!
4177  \**********************************************/
4178/*! no static exports found */
4179/***/ (function(module, exports, __webpack_require__) {
4180
4181var store = __webpack_require__(/*! ./_shared */ "./node_modules/core-js/modules/_shared.js")('wks');
4182var uid = __webpack_require__(/*! ./_uid */ "./node_modules/core-js/modules/_uid.js");
4183var Symbol = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js").Symbol;
4184var USE_SYMBOL = typeof Symbol == 'function';
4185
4186var $exports = module.exports = function (name) {
4187  return store[name] || (store[name] =
4188    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
4189};
4190
4191$exports.store = store;
4192
4193
4194/***/ }),
4195
vendor: 924 bytes, lines 4196-4214
4196/***/ "./node_modules/core-js/modules/core.get-iterator-method.js":
4197/*!******************************************************************!*\
4198  !*** ./node_modules/core-js/modules/core.get-iterator-method.js ***!
4199  \******************************************************************/
4200/*! no static exports found */
4201/***/ (function(module, exports, __webpack_require__) {
4202
4203var classof = __webpack_require__(/*! ./_classof */ "./node_modules/core-js/modules/_classof.js");
4204var ITERATOR = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('iterator');
4205var Iterators = __webpack_require__(/*! ./_iterators */ "./node_modules/core-js/modules/_iterators.js");
4206module.exports = __webpack_require__(/*! ./_core */ "./node_modules/core-js/modules/_core.js").getIteratorMethod = function (it) {
4207  if (it != undefined) return it[ITERATOR]
4208    || it['@@iterator']
4209    || Iterators[classof(it)];
4210};
4211
4212
4213/***/ }),
4214
vendor: 815 bytes, lines 4215-4231
4215/***/ "./node_modules/core-js/modules/es6.array.copy-within.js":
4216/*!***************************************************************!*\
4217  !*** ./node_modules/core-js/modules/es6.array.copy-within.js ***!
4218  \***************************************************************/
4219/*! no static exports found */
4220/***/ (function(module, exports, __webpack_require__) {
4221
4222// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)
4223var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
4224
4225$export($export.P, 'Array', { copyWithin: __webpack_require__(/*! ./_array-copy-within */ "./node_modules/core-js/modules/_array-copy-within.js") });
4226
4227__webpack_require__(/*! ./_add-to-unscopables */ "./node_modules/core-js/modules/_add-to-unscopables.js")('copyWithin');
4228
4229
4230/***/ }),
4231
vendor: 916 bytes, lines 4232-4253
4232/***/ "./node_modules/core-js/modules/es6.array.every.js":
4233/*!*********************************************************!*\
4234  !*** ./node_modules/core-js/modules/es6.array.every.js ***!
4235  \*********************************************************/
4236/*! no static exports found */
4237/***/ (function(module, exports, __webpack_require__) {
4238
4239"use strict";
4240
4241var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
4242var $every = __webpack_require__(/*! ./_array-methods */ "./node_modules/core-js/modules/_array-methods.js")(4);
4243
4244$export($export.P + $export.F * !__webpack_require__(/*! ./_strict-method */ "./node_modules/core-js/modules/_strict-method.js")([].every, true), 'Array', {
4245  // 22.1.3.5 / 15.4.4.16 Array.prototype.every(callbackfn [, thisArg])
4246  every: function every(callbackfn /* , thisArg */) {
4247    return $every(this, callbackfn, arguments[1]);
4248  }
4249});
4250
4251
4252/***/ }),
4253
vendor: 758 bytes, lines 4254-4270
4254/***/ "./node_modules/core-js/modules/es6.array.fill.js":
4255/*!********************************************************!*\
4256  !*** ./node_modules/core-js/modules/es6.array.fill.js ***!
4257  \********************************************************/
4258/*! no static exports found */
4259/***/ (function(module, exports, __webpack_require__) {
4260
4261// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)
4262var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
4263
4264$export($export.P, 'Array', { fill: __webpack_require__(/*! ./_array-fill */ "./node_modules/core-js/modules/_array-fill.js") });
4265
4266__webpack_require__(/*! ./_add-to-unscopables */ "./node_modules/core-js/modules/_add-to-unscopables.js")('fill');
4267
4268
4269/***/ }),
4270
vendor: 926 bytes, lines 4271-4292
4271/***/ "./node_modules/core-js/modules/es6.array.filter.js":
4272/*!**********************************************************!*\
4273  !*** ./node_modules/core-js/modules/es6.array.filter.js ***!
4274  \**********************************************************/
4275/*! no static exports found */
4276/***/ (function(module, exports, __webpack_require__) {
4277
4278"use strict";
4279
4280var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
4281var $filter = __webpack_require__(/*! ./_array-methods */ "./node_modules/core-js/modules/_array-methods.js")(2);
4282
4283$export($export.P + $export.F * !__webpack_require__(/*! ./_strict-method */ "./node_modules/core-js/modules/_strict-method.js")([].filter, true), 'Array', {
4284  // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])
4285  filter: function filter(callbackfn /* , thisArg */) {
4286    return $filter(this, callbackfn, arguments[1]);
4287  }
4288});
4289
4290
4291/***/ }),
4292
vendor: 1,118 bytes, lines 4293-4318
4293/***/ "./node_modules/core-js/modules/es6.array.find-index.js":
4294/*!**************************************************************!*\
4295  !*** ./node_modules/core-js/modules/es6.array.find-index.js ***!
4296  \**************************************************************/
4297/*! no static exports found */
4298/***/ (function(module, exports, __webpack_require__) {
4299
4300"use strict";
4301
4302// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)
4303var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
4304var $find = __webpack_require__(/*! ./_array-methods */ "./node_modules/core-js/modules/_array-methods.js")(6);
4305var KEY = 'findIndex';
4306var forced = true;
4307// Shouldn't skip holes
4308if (KEY in []) Array(1)[KEY](function () { forced = false; });
4309$export($export.P + $export.F * forced, 'Array', {
4310  findIndex: function findIndex(callbackfn /* , that = undefined */) {
4311    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
4312  }
4313});
4314__webpack_require__(/*! ./_add-to-unscopables */ "./node_modules/core-js/modules/_add-to-unscopables.js")(KEY);
4315
4316
4317/***/ }),
4318
vendor: 1,074 bytes, lines 4319-4344
4319/***/ "./node_modules/core-js/modules/es6.array.find.js":
4320/*!********************************************************!*\
4321  !*** ./node_modules/core-js/modules/es6.array.find.js ***!
4322  \********************************************************/
4323/*! no static exports found */
4324/***/ (function(module, exports, __webpack_require__) {
4325
4326"use strict";
4327
4328// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)
4329var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
4330var $find = __webpack_require__(/*! ./_array-methods */ "./node_modules/core-js/modules/_array-methods.js")(5);
4331var KEY = 'find';
4332var forced = true;
4333// Shouldn't skip holes
4334if (KEY in []) Array(1)[KEY](function () { forced = false; });
4335$export($export.P + $export.F * forced, 'Array', {
4336  find: function find(callbackfn /* , that = undefined */) {
4337    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
4338  }
4339});
4340__webpack_require__(/*! ./_add-to-unscopables */ "./node_modules/core-js/modules/_add-to-unscopables.js")(KEY);
4341
4342
4343/***/ }),
4344
vendor: 962 bytes, lines 4345-4367
4345/***/ "./node_modules/core-js/modules/es6.array.for-each.js":
4346/*!************************************************************!*\
4347  !*** ./node_modules/core-js/modules/es6.array.for-each.js ***!
4348  \************************************************************/
4349/*! no static exports found */
4350/***/ (function(module, exports, __webpack_require__) {
4351
4352"use strict";
4353
4354var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
4355var $forEach = __webpack_require__(/*! ./_array-methods */ "./node_modules/core-js/modules/_array-methods.js")(0);
4356var STRICT = __webpack_require__(/*! ./_strict-method */ "./node_modules/core-js/modules/_strict-method.js")([].forEach, true);
4357
4358$export($export.P + $export.F * !STRICT, 'Array', {
4359  // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])
4360  forEach: function forEach(callbackfn /* , thisArg */) {
4361    return $forEach(this, callbackfn, arguments[1]);
4362  }
4363});
4364
4365
4366/***/ }),
4367
vendor: 2,573 bytes, lines 4368-4416
4368/***/ "./node_modules/core-js/modules/es6.array.from.js":
4369/*!********************************************************!*\
4370  !*** ./node_modules/core-js/modules/es6.array.from.js ***!
4371  \********************************************************/
4372/*! no static exports found */
4373/***/ (function(module, exports, __webpack_require__) {
4374
4375"use strict";
4376
4377var ctx = __webpack_require__(/*! ./_ctx */ "./node_modules/core-js/modules/_ctx.js");
4378var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
4379var toObject = __webpack_require__(/*! ./_to-object */ "./node_modules/core-js/modules/_to-object.js");
4380var call = __webpack_require__(/*! ./_iter-call */ "./node_modules/core-js/modules/_iter-call.js");
4381var isArrayIter = __webpack_require__(/*! ./_is-array-iter */ "./node_modules/core-js/modules/_is-array-iter.js");
4382var toLength = __webpack_require__(/*! ./_to-length */ "./node_modules/core-js/modules/_to-length.js");
4383var createProperty = __webpack_require__(/*! ./_create-property */ "./node_modules/core-js/modules/_create-property.js");
4384var getIterFn = __webpack_require__(/*! ./core.get-iterator-method */ "./node_modules/core-js/modules/core.get-iterator-method.js");
4385
4386$export($export.S + $export.F * !__webpack_require__(/*! ./_iter-detect */ "./node_modules/core-js/modules/_iter-detect.js")(function (iter) { Array.from(iter); }), 'Array', {
4387  // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)
4388  from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {
4389    var O = toObject(arrayLike);
4390    var C = typeof this == 'function' ? this : Array;
4391    var aLen = arguments.length;
4392    var mapfn = aLen > 1 ? arguments[1] : undefined;
4393    var mapping = mapfn !== undefined;
4394    var index = 0;
4395    var iterFn = getIterFn(O);
4396    var length, result, step, iterator;
4397    if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);
4398    // if object isn't iterable or it's array with default iterator - use simple case
4399    if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {
4400      for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {
4401        createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);
4402      }
4403    } else {
4404      length = toLength(O.length);
4405      for (result = new C(length); length > index; index++) {
4406        createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);
4407      }
4408    }
4409    result.length = index;
4410    return result;
4411  }
4412});
4413
4414
4415/***/ }),
4416
vendor: 1,153 bytes, lines 4417-4443
4417/***/ "./node_modules/core-js/modules/es6.array.index-of.js":
4418/*!************************************************************!*\
4419  !*** ./node_modules/core-js/modules/es6.array.index-of.js ***!
4420  \************************************************************/
4421/*! no static exports found */
4422/***/ (function(module, exports, __webpack_require__) {
4423
4424"use strict";
4425
4426var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
4427var $indexOf = __webpack_require__(/*! ./_array-includes */ "./node_modules/core-js/modules/_array-includes.js")(false);
4428var $native = [].indexOf;
4429var NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0;
4430
4431$export($export.P + $export.F * (NEGATIVE_ZERO || !__webpack_require__(/*! ./_strict-method */ "./node_modules/core-js/modules/_strict-method.js")($native)), 'Array', {
4432  // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])
4433  indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {
4434    return NEGATIVE_ZERO
4435      // convert -0 to +0
4436      ? $native.apply(this, arguments) || 0
4437      : $indexOf(this, searchElement, arguments[1]);
4438  }
4439});
4440
4441
4442/***/ }),
4443
vendor: 629 bytes, lines 4444-4458
4444/***/ "./node_modules/core-js/modules/es6.array.is-array.js":
4445/*!************************************************************!*\
4446  !*** ./node_modules/core-js/modules/es6.array.is-array.js ***!
4447  \************************************************************/
4448/*! no static exports found */
4449/***/ (function(module, exports, __webpack_require__) {
4450
4451// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)
4452var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
4453
4454$export($export.S, 'Array', { isArray: __webpack_require__(/*! ./_is-array */ "./node_modules/core-js/modules/_is-array.js") });
4455
4456
4457/***/ }),
4458
vendor: 1,809 bytes, lines 4459-4504
4459/***/ "./node_modules/core-js/modules/es6.array.iterator.js":
4460/*!************************************************************!*\
4461  !*** ./node_modules/core-js/modules/es6.array.iterator.js ***!
4462  \************************************************************/
4463/*! no static exports found */
4464/***/ (function(module, exports, __webpack_require__) {
4465
4466"use strict";
4467
4468var addToUnscopables = __webpack_require__(/*! ./_add-to-unscopables */ "./node_modules/core-js/modules/_add-to-unscopables.js");
4469var step = __webpack_require__(/*! ./_iter-step */ "./node_modules/core-js/modules/_iter-step.js");
4470var Iterators = __webpack_require__(/*! ./_iterators */ "./node_modules/core-js/modules/_iterators.js");
4471var toIObject = __webpack_require__(/*! ./_to-iobject */ "./node_modules/core-js/modules/_to-iobject.js");
4472
4473// 22.1.3.4 Array.prototype.entries()
4474// 22.1.3.13 Array.prototype.keys()
4475// 22.1.3.29 Array.prototype.values()
4476// 22.1.3.30 Array.prototype[@@iterator]()
4477module.exports = __webpack_require__(/*! ./_iter-define */ "./node_modules/core-js/modules/_iter-define.js")(Array, 'Array', function (iterated, kind) {
4478  this._t = toIObject(iterated); // target
4479  this._i = 0;                   // next index
4480  this._k = kind;                // kind
4481// 22.1.5.2.1 %ArrayIteratorPrototype%.next()
4482}, function () {
4483  var O = this._t;
4484  var kind = this._k;
4485  var index = this._i++;
4486  if (!O || index >= O.length) {
4487    this._t = undefined;
4488    return step(1);
4489  }
4490  if (kind == 'keys') return step(0, index);
4491  if (kind == 'values') return step(0, O[index]);
4492  return step(0, [index, O[index]]);
4493}, 'values');
4494
4495// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
4496Iterators.Arguments = Iterators.Array;
4497
4498addToUnscopables('keys');
4499addToUnscopables('values');
4500addToUnscopables('entries');
4501
4502
4503/***/ }),
4504
vendor: 1,054 bytes, lines 4505-4528
4505/***/ "./node_modules/core-js/modules/es6.array.join.js":
4506/*!********************************************************!*\
4507  !*** ./node_modules/core-js/modules/es6.array.join.js ***!
4508  \********************************************************/
4509/*! no static exports found */
4510/***/ (function(module, exports, __webpack_require__) {
4511
4512"use strict";
4513
4514// 22.1.3.13 Array.prototype.join(separator)
4515var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
4516var toIObject = __webpack_require__(/*! ./_to-iobject */ "./node_modules/core-js/modules/_to-iobject.js");
4517var arrayJoin = [].join;
4518
4519// fallback for not array-like strings
4520$export($export.P + $export.F * (__webpack_require__(/*! ./_iobject */ "./node_modules/core-js/modules/_iobject.js") != Object || !__webpack_require__(/*! ./_strict-method */ "./node_modules/core-js/modules/_strict-method.js")(arrayJoin)), 'Array', {
4521  join: function join(separator) {
4522    return arrayJoin.call(toIObject(this), separator === undefined ? ',' : separator);
4523  }
4524});
4525
4526
4527/***/ }),
4528
vendor: 1,668 bytes, lines 4529-4562
4529/***/ "./node_modules/core-js/modules/es6.array.last-index-of.js":
4530/*!*****************************************************************!*\
4531  !*** ./node_modules/core-js/modules/es6.array.last-index-of.js ***!
4532  \*****************************************************************/
4533/*! no static exports found */
4534/***/ (function(module, exports, __webpack_require__) {
4535
4536"use strict";
4537
4538var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
4539var toIObject = __webpack_require__(/*! ./_to-iobject */ "./node_modules/core-js/modules/_to-iobject.js");
4540var toInteger = __webpack_require__(/*! ./_to-integer */ "./node_modules/core-js/modules/_to-integer.js");
4541var toLength = __webpack_require__(/*! ./_to-length */ "./node_modules/core-js/modules/_to-length.js");
4542var $native = [].lastIndexOf;
4543var NEGATIVE_ZERO = !!$native && 1 / [1].lastIndexOf(1, -0) < 0;
4544
4545$export($export.P + $export.F * (NEGATIVE_ZERO || !__webpack_require__(/*! ./_strict-method */ "./node_modules/core-js/modules/_strict-method.js")($native)), 'Array', {
4546  // 22.1.3.14 / 15.4.4.15 Array.prototype.lastIndexOf(searchElement [, fromIndex])
4547  lastIndexOf: function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {
4548    // convert -0 to +0
4549    if (NEGATIVE_ZERO) return $native.apply(this, arguments) || 0;
4550    var O = toIObject(this);
4551    var length = toLength(O.length);
4552    var index = length - 1;
4553    if (arguments.length > 1) index = Math.min(index, toInteger(arguments[1]));
4554    if (index < 0) index = length + index;
4555    for (;index >= 0; index--) if (index in O) if (O[index] === searchElement) return index || 0;
4556    return -1;
4557  }
4558});
4559
4560
4561/***/ }),
4562
vendor: 897 bytes, lines 4563-4584
4563/***/ "./node_modules/core-js/modules/es6.array.map.js":
4564/*!*******************************************************!*\
4565  !*** ./node_modules/core-js/modules/es6.array.map.js ***!
4566  \*******************************************************/
4567/*! no static exports found */
4568/***/ (function(module, exports, __webpack_require__) {
4569
4570"use strict";
4571
4572var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
4573var $map = __webpack_require__(/*! ./_array-methods */ "./node_modules/core-js/modules/_array-methods.js")(1);
4574
4575$export($export.P + $export.F * !__webpack_require__(/*! ./_strict-method */ "./node_modules/core-js/modules/_strict-method.js")([].map, true), 'Array', {
4576  // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])
4577  map: function map(callbackfn /* , thisArg */) {
4578    return $map(this, callbackfn, arguments[1]);
4579  }
4580});
4581
4582
4583/***/ }),
4584
vendor: 1,140 bytes, lines 4585-4615
4585/***/ "./node_modules/core-js/modules/es6.array.of.js":
4586/*!******************************************************!*\
4587  !*** ./node_modules/core-js/modules/es6.array.of.js ***!
4588  \******************************************************/
4589/*! no static exports found */
4590/***/ (function(module, exports, __webpack_require__) {
4591
4592"use strict";
4593
4594var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
4595var createProperty = __webpack_require__(/*! ./_create-property */ "./node_modules/core-js/modules/_create-property.js");
4596
4597// WebKit Array.of isn't generic
4598$export($export.S + $export.F * __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js")(function () {
4599  function F() { /* empty */ }
4600  return !(Array.of.call(F) instanceof F);
4601}), 'Array', {
4602  // 22.1.2.3 Array.of( ...items)
4603  of: function of(/* ...args */) {
4604    var index = 0;
4605    var aLen = arguments.length;
4606    var result = new (typeof this == 'function' ? this : Array)(aLen);
4607    while (aLen > index) createProperty(result, index, arguments[index++]);
4608    result.length = aLen;
4609    return result;
4610  }
4611});
4612
4613
4614/***/ }),
4615
vendor: 1,000 bytes, lines 4616-4637
4616/***/ "./node_modules/core-js/modules/es6.array.reduce-right.js":
4617/*!****************************************************************!*\
4618  !*** ./node_modules/core-js/modules/es6.array.reduce-right.js ***!
4619  \****************************************************************/
4620/*! no static exports found */
4621/***/ (function(module, exports, __webpack_require__) {
4622
4623"use strict";
4624
4625var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
4626var $reduce = __webpack_require__(/*! ./_array-reduce */ "./node_modules/core-js/modules/_array-reduce.js");
4627
4628$export($export.P + $export.F * !__webpack_require__(/*! ./_strict-method */ "./node_modules/core-js/modules/_strict-method.js")([].reduceRight, true), 'Array', {
4629  // 22.1.3.19 / 15.4.4.22 Array.prototype.reduceRight(callbackfn [, initialValue])
4630  reduceRight: function reduceRight(callbackfn /* , initialValue */) {
4631    return $reduce(this, callbackfn, arguments.length, arguments[1], true);
4632  }
4633});
4634
4635
4636/***/ }),
4637
vendor: 957 bytes, lines 4638-4659
4638/***/ "./node_modules/core-js/modules/es6.array.reduce.js":
4639/*!**********************************************************!*\
4640  !*** ./node_modules/core-js/modules/es6.array.reduce.js ***!
4641  \**********************************************************/
4642/*! no static exports found */
4643/***/ (function(module, exports, __webpack_require__) {
4644
4645"use strict";
4646
4647var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
4648var $reduce = __webpack_require__(/*! ./_array-reduce */ "./node_modules/core-js/modules/_array-reduce.js");
4649
4650$export($export.P + $export.F * !__webpack_require__(/*! ./_strict-method */ "./node_modules/core-js/modules/_strict-method.js")([].reduce, true), 'Array', {
4651  // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue])
4652  reduce: function reduce(callbackfn /* , initialValue */) {
4653    return $reduce(this, callbackfn, arguments.length, arguments[1], false);
4654  }
4655});
4656
4657
4658/***/ }),
4659
vendor: 1,656 bytes, lines 4660-4699
4660/***/ "./node_modules/core-js/modules/es6.array.slice.js":
4661/*!*********************************************************!*\
4662  !*** ./node_modules/core-js/modules/es6.array.slice.js ***!
4663  \*********************************************************/
4664/*! no static exports found */
4665/***/ (function(module, exports, __webpack_require__) {
4666
4667"use strict";
4668
4669var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
4670var html = __webpack_require__(/*! ./_html */ "./node_modules/core-js/modules/_html.js");
4671var cof = __webpack_require__(/*! ./_cof */ "./node_modules/core-js/modules/_cof.js");
4672var toAbsoluteIndex = __webpack_require__(/*! ./_to-absolute-index */ "./node_modules/core-js/modules/_to-absolute-index.js");
4673var toLength = __webpack_require__(/*! ./_to-length */ "./node_modules/core-js/modules/_to-length.js");
4674var arraySlice = [].slice;
4675
4676// fallback for not array-like ES3 strings and DOM objects
4677$export($export.P + $export.F * __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js")(function () {
4678  if (html) arraySlice.call(html);
4679}), 'Array', {
4680  slice: function slice(begin, end) {
4681    var len = toLength(this.length);
4682    var klass = cof(this);
4683    end = end === undefined ? len : end;
4684    if (klass == 'Array') return arraySlice.call(this, begin, end);
4685    var start = toAbsoluteIndex(begin, len);
4686    var upTo = toAbsoluteIndex(end, len);
4687    var size = toLength(upTo - start);
4688    var cloned = new Array(size);
4689    var i = 0;
4690    for (; i < size; i++) cloned[i] = klass == 'String'
4691      ? this.charAt(start + i)
4692      : this[start + i];
4693    return cloned;
4694  }
4695});
4696
4697
4698/***/ }),
4699
vendor: 907 bytes, lines 4700-4721
4700/***/ "./node_modules/core-js/modules/es6.array.some.js":
4701/*!********************************************************!*\
4702  !*** ./node_modules/core-js/modules/es6.array.some.js ***!
4703  \********************************************************/
4704/*! no static exports found */
4705/***/ (function(module, exports, __webpack_require__) {
4706
4707"use strict";
4708
4709var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
4710var $some = __webpack_require__(/*! ./_array-methods */ "./node_modules/core-js/modules/_array-methods.js")(3);
4711
4712$export($export.P + $export.F * !__webpack_require__(/*! ./_strict-method */ "./node_modules/core-js/modules/_strict-method.js")([].some, true), 'Array', {
4713  // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])
4714  some: function some(callbackfn /* , thisArg */) {
4715    return $some(this, callbackfn, arguments[1]);
4716  }
4717});
4718
4719
4720/***/ }),
4721
vendor: 1,306 bytes, lines 4722-4756
4722/***/ "./node_modules/core-js/modules/es6.array.sort.js":
4723/*!********************************************************!*\
4724  !*** ./node_modules/core-js/modules/es6.array.sort.js ***!
4725  \********************************************************/
4726/*! no static exports found */
4727/***/ (function(module, exports, __webpack_require__) {
4728
4729"use strict";
4730
4731var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
4732var aFunction = __webpack_require__(/*! ./_a-function */ "./node_modules/core-js/modules/_a-function.js");
4733var toObject = __webpack_require__(/*! ./_to-object */ "./node_modules/core-js/modules/_to-object.js");
4734var fails = __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js");
4735var $sort = [].sort;
4736var test = [1, 2, 3];
4737
4738$export($export.P + $export.F * (fails(function () {
4739  // IE8-
4740  test.sort(undefined);
4741}) || !fails(function () {
4742  // V8 bug
4743  test.sort(null);
4744  // Old WebKit
4745}) || !__webpack_require__(/*! ./_strict-method */ "./node_modules/core-js/modules/_strict-method.js")($sort)), 'Array', {
4746  // 22.1.3.25 Array.prototype.sort(comparefn)
4747  sort: function sort(comparefn) {
4748    return comparefn === undefined
4749      ? $sort.call(toObject(this))
4750      : $sort.call(toObject(this), aFunction(comparefn));
4751  }
4752});
4753
4754
4755/***/ }),
4756
vendor: 458 bytes, lines 4757-4768
4757/***/ "./node_modules/core-js/modules/es6.array.species.js":
4758/*!***********************************************************!*\
4759  !*** ./node_modules/core-js/modules/es6.array.species.js ***!
4760  \***********************************************************/
4761/*! no static exports found */
4762/***/ (function(module, exports, __webpack_require__) {
4763
4764__webpack_require__(/*! ./_set-species */ "./node_modules/core-js/modules/_set-species.js")('Array');
4765
4766
4767/***/ }),
4768
vendor: 551 bytes, lines 4769-4783
4769/***/ "./node_modules/core-js/modules/es6.date.now.js":
4770/*!******************************************************!*\
4771  !*** ./node_modules/core-js/modules/es6.date.now.js ***!
4772  \******************************************************/
4773/*! no static exports found */
4774/***/ (function(module, exports, __webpack_require__) {
4775
4776// 20.3.3.1 / 15.9.4.4 Date.now()
4777var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
4778
4779$export($export.S, 'Date', { now: function () { return new Date().getTime(); } });
4780
4781
4782/***/ }),
4783
vendor: 827 bytes, lines 4784-4802
4784/***/ "./node_modules/core-js/modules/es6.date.to-iso-string.js":
4785/*!****************************************************************!*\
4786  !*** ./node_modules/core-js/modules/es6.date.to-iso-string.js ***!
4787  \****************************************************************/
4788/*! no static exports found */
4789/***/ (function(module, exports, __webpack_require__) {
4790
4791// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()
4792var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
4793var toISOString = __webpack_require__(/*! ./_date-to-iso-string */ "./node_modules/core-js/modules/_date-to-iso-string.js");
4794
4795// PhantomJS / old WebKit has a broken implementations
4796$export($export.P + $export.F * (Date.prototype.toISOString !== toISOString), 'Date', {
4797  toISOString: toISOString
4798});
4799
4800
4801/***/ }),
4802
vendor: 1,167 bytes, lines 4803-4830
4803/***/ "./node_modules/core-js/modules/es6.date.to-json.js":
4804/*!**********************************************************!*\
4805  !*** ./node_modules/core-js/modules/es6.date.to-json.js ***!
4806  \**********************************************************/
4807/*! no static exports found */
4808/***/ (function(module, exports, __webpack_require__) {
4809
4810"use strict";
4811
4812var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
4813var toObject = __webpack_require__(/*! ./_to-object */ "./node_modules/core-js/modules/_to-object.js");
4814var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "./node_modules/core-js/modules/_to-primitive.js");
4815
4816$export($export.P + $export.F * __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js")(function () {
4817  return new Date(NaN).toJSON() !== null
4818    || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1;
4819}), 'Date', {
4820  // eslint-disable-next-line no-unused-vars
4821  toJSON: function toJSON(key) {
4822    var O = toObject(this);
4823    var pv = toPrimitive(O);
4824    return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();
4825  }
4826});
4827
4828
4829/***/ }),
4830
vendor: 747 bytes, lines 4831-4845
4831/***/ "./node_modules/core-js/modules/es6.date.to-primitive.js":
4832/*!***************************************************************!*\
4833  !*** ./node_modules/core-js/modules/es6.date.to-primitive.js ***!
4834  \***************************************************************/
4835/*! no static exports found */
4836/***/ (function(module, exports, __webpack_require__) {
4837
4838var TO_PRIMITIVE = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('toPrimitive');
4839var proto = Date.prototype;
4840
4841if (!(TO_PRIMITIVE in proto)) __webpack_require__(/*! ./_hide */ "./node_modules/core-js/modules/_hide.js")(proto, TO_PRIMITIVE, __webpack_require__(/*! ./_date-to-primitive */ "./node_modules/core-js/modules/_date-to-primitive.js"));
4842
4843
4844/***/ }),
4845
vendor: 858 bytes, lines 4846-4868
4846/***/ "./node_modules/core-js/modules/es6.date.to-string.js":
4847/*!************************************************************!*\
4848  !*** ./node_modules/core-js/modules/es6.date.to-string.js ***!
4849  \************************************************************/
4850/*! no static exports found */
4851/***/ (function(module, exports, __webpack_require__) {
4852
4853var DateProto = Date.prototype;
4854var INVALID_DATE = 'Invalid Date';
4855var TO_STRING = 'toString';
4856var $toString = DateProto[TO_STRING];
4857var getTime = DateProto.getTime;
4858if (new Date(NaN) + '' != INVALID_DATE) {
4859  __webpack_require__(/*! ./_redefine */ "./node_modules/core-js/modules/_redefine.js")(DateProto, TO_STRING, function toString() {
4860    var value = getTime.call(this);
4861    // eslint-disable-next-line no-self-compare
4862    return value === value ? $toString.call(this) : INVALID_DATE;
4863  });
4864}
4865
4866
4867/***/ }),
4868
vendor: 640 bytes, lines 4869-4883
4869/***/ "./node_modules/core-js/modules/es6.function.bind.js":
4870/*!***********************************************************!*\
4871  !*** ./node_modules/core-js/modules/es6.function.bind.js ***!
4872  \***********************************************************/
4873/*! no static exports found */
4874/***/ (function(module, exports, __webpack_require__) {
4875
4876// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...)
4877var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
4878
4879$export($export.P, 'Function', { bind: __webpack_require__(/*! ./_bind */ "./node_modules/core-js/modules/_bind.js") });
4880
4881
4882/***/ }),
4883
vendor: 1,304 bytes, lines 4884-4908
4884/***/ "./node_modules/core-js/modules/es6.function.has-instance.js":
4885/*!*******************************************************************!*\
4886  !*** ./node_modules/core-js/modules/es6.function.has-instance.js ***!
4887  \*******************************************************************/
4888/*! no static exports found */
4889/***/ (function(module, exports, __webpack_require__) {
4890
4891"use strict";
4892
4893var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
4894var getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ "./node_modules/core-js/modules/_object-gpo.js");
4895var HAS_INSTANCE = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('hasInstance');
4896var FunctionProto = Function.prototype;
4897// 19.2.3.6 Function.prototype[@@hasInstance](V)
4898if (!(HAS_INSTANCE in FunctionProto)) __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/modules/_object-dp.js").f(FunctionProto, HAS_INSTANCE, { value: function (O) {
4899  if (typeof this != 'function' || !isObject(O)) return false;
4900  if (!isObject(this.prototype)) return O instanceof this;
4901  // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this:
4902  while (O = getPrototypeOf(O)) if (this.prototype === O) return true;
4903  return false;
4904} });
4905
4906
4907/***/ }),
4908
vendor: 841 bytes, lines 4909-4935
4909/***/ "./node_modules/core-js/modules/es6.function.name.js":
4910/*!***********************************************************!*\
4911  !*** ./node_modules/core-js/modules/es6.function.name.js ***!
4912  \***********************************************************/
4913/*! no static exports found */
4914/***/ (function(module, exports, __webpack_require__) {
4915
4916var dP = __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/modules/_object-dp.js").f;
4917var FProto = Function.prototype;
4918var nameRE = /^\s*function ([^ (]*)/;
4919var NAME = 'name';
4920
4921// 19.2.4.2 name
4922NAME in FProto || __webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js") && dP(FProto, NAME, {
4923  configurable: true,
4924  get: function () {
4925    try {
4926      return ('' + this).match(nameRE)[1];
4927    } catch (e) {
4928      return '';
4929    }
4930  }
4931});
4932
4933
4934/***/ }),
4935
vendor: 1,170 bytes, lines 4936-4966
4936/***/ "./node_modules/core-js/modules/es6.map.js":
4937/*!*************************************************!*\
4938  !*** ./node_modules/core-js/modules/es6.map.js ***!
4939  \*************************************************/
4940/*! no static exports found */
4941/***/ (function(module, exports, __webpack_require__) {
4942
4943"use strict";
4944
4945var strong = __webpack_require__(/*! ./_collection-strong */ "./node_modules/core-js/modules/_collection-strong.js");
4946var validate = __webpack_require__(/*! ./_validate-collection */ "./node_modules/core-js/modules/_validate-collection.js");
4947var MAP = 'Map';
4948
4949// 23.1 Map Objects
4950module.exports = __webpack_require__(/*! ./_collection */ "./node_modules/core-js/modules/_collection.js")(MAP, function (get) {
4951  return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };
4952}, {
4953  // 23.1.3.6 Map.prototype.get(key)
4954  get: function get(key) {
4955    var entry = strong.getEntry(validate(this, MAP), key);
4956    return entry && entry.v;
4957  },
4958  // 23.1.3.9 Map.prototype.set(key, value)
4959  set: function set(key, value) {
4960    return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);
4961  }
4962}, strong, true);
4963
4964
4965/***/ }),
4966
vendor: 1,041 bytes, lines 4967-4995
4967/***/ "./node_modules/core-js/modules/es6.math.acosh.js":
4968/*!********************************************************!*\
4969  !*** ./node_modules/core-js/modules/es6.math.acosh.js ***!
4970  \********************************************************/
4971/*! no static exports found */
4972/***/ (function(module, exports, __webpack_require__) {
4973
4974// 20.2.2.3 Math.acosh(x)
4975var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
4976var log1p = __webpack_require__(/*! ./_math-log1p */ "./node_modules/core-js/modules/_math-log1p.js");
4977var sqrt = Math.sqrt;
4978var $acosh = Math.acosh;
4979
4980$export($export.S + $export.F * !($acosh
4981  // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509
4982  && Math.floor($acosh(Number.MAX_VALUE)) == 710
4983  // Tor Browser bug: Math.acosh(Infinity) -> NaN
4984  && $acosh(Infinity) == Infinity
4985), 'Math', {
4986  acosh: function acosh(x) {
4987    return (x = +x) < 1 ? NaN : x > 94906265.62425156
4988      ? Math.log(x) + Math.LN2
4989      : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1));
4990  }
4991});
4992
4993
4994/***/ }),
4995
vendor: 747 bytes, lines 4996-5016
4996/***/ "./node_modules/core-js/modules/es6.math.asinh.js":
4997/*!********************************************************!*\
4998  !*** ./node_modules/core-js/modules/es6.math.asinh.js ***!
4999  \********************************************************/
5000/*! no static exports found */
5001/***/ (function(module, exports, __webpack_require__) {
5002
5003// 20.2.2.5 Math.asinh(x)
5004var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5005var $asinh = Math.asinh;
5006
5007function asinh(x) {
5008  return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1));
5009}
5010
5011// Tor Browser bug: Math.asinh(0) -> -0
5012$export($export.S + $export.F * !($asinh && 1 / $asinh(0) > 0), 'Math', { asinh: asinh });
5013
5014
5015/***/ }),
5016
vendor: 709 bytes, lines 5017-5037
5017/***/ "./node_modules/core-js/modules/es6.math.atanh.js":
5018/*!********************************************************!*\
5019  !*** ./node_modules/core-js/modules/es6.math.atanh.js ***!
5020  \********************************************************/
5021/*! no static exports found */
5022/***/ (function(module, exports, __webpack_require__) {
5023
5024// 20.2.2.7 Math.atanh(x)
5025var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5026var $atanh = Math.atanh;
5027
5028// Tor Browser bug: Math.atanh(-0) -> 0
5029$export($export.S + $export.F * !($atanh && 1 / $atanh(-0) < 0), 'Math', {
5030  atanh: function atanh(x) {
5031    return (x = +x) == 0 ? x : Math.log((1 + x) / (1 - x)) / 2;
5032  }
5033});
5034
5035
5036/***/ }),
5037
vendor: 683 bytes, lines 5038-5057
5038/***/ "./node_modules/core-js/modules/es6.math.cbrt.js":
5039/*!*******************************************************!*\
5040  !*** ./node_modules/core-js/modules/es6.math.cbrt.js ***!
5041  \*******************************************************/
5042/*! no static exports found */
5043/***/ (function(module, exports, __webpack_require__) {
5044
5045// 20.2.2.9 Math.cbrt(x)
5046var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5047var sign = __webpack_require__(/*! ./_math-sign */ "./node_modules/core-js/modules/_math-sign.js");
5048
5049$export($export.S, 'Math', {
5050  cbrt: function cbrt(x) {
5051    return sign(x = +x) * Math.pow(Math.abs(x), 1 / 3);
5052  }
5053});
5054
5055
5056/***/ }),
5057
vendor: 613 bytes, lines 5058-5076
5058/***/ "./node_modules/core-js/modules/es6.math.clz32.js":
5059/*!********************************************************!*\
5060  !*** ./node_modules/core-js/modules/es6.math.clz32.js ***!
5061  \********************************************************/
5062/*! no static exports found */
5063/***/ (function(module, exports, __webpack_require__) {
5064
5065// 20.2.2.11 Math.clz32(x)
5066var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5067
5068$export($export.S, 'Math', {
5069  clz32: function clz32(x) {
5070    return (x >>>= 0) ? 31 - Math.floor(Math.log(x + 0.5) * Math.LOG2E) : 32;
5071  }
5072});
5073
5074
5075/***/ }),
5076
vendor: 588 bytes, lines 5077-5096
5077/***/ "./node_modules/core-js/modules/es6.math.cosh.js":
5078/*!*******************************************************!*\
5079  !*** ./node_modules/core-js/modules/es6.math.cosh.js ***!
5080  \*******************************************************/
5081/*! no static exports found */
5082/***/ (function(module, exports, __webpack_require__) {
5083
5084// 20.2.2.12 Math.cosh(x)
5085var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5086var exp = Math.exp;
5087
5088$export($export.S, 'Math', {
5089  cosh: function cosh(x) {
5090    return (exp(x = +x) + exp(-x)) / 2;
5091  }
5092});
5093
5094
5095/***/ }),
5096
vendor: 657 bytes, lines 5097-5112
5097/***/ "./node_modules/core-js/modules/es6.math.expm1.js":
5098/*!********************************************************!*\
5099  !*** ./node_modules/core-js/modules/es6.math.expm1.js ***!
5100  \********************************************************/
5101/*! no static exports found */
5102/***/ (function(module, exports, __webpack_require__) {
5103
5104// 20.2.2.14 Math.expm1(x)
5105var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5106var $expm1 = __webpack_require__(/*! ./_math-expm1 */ "./node_modules/core-js/modules/_math-expm1.js");
5107
5108$export($export.S + $export.F * ($expm1 != Math.expm1), 'Math', { expm1: $expm1 });
5109
5110
5111/***/ }),
5112
vendor: 607 bytes, lines 5113-5127
5113/***/ "./node_modules/core-js/modules/es6.math.fround.js":
5114/*!*********************************************************!*\
5115  !*** ./node_modules/core-js/modules/es6.math.fround.js ***!
5116  \*********************************************************/
5117/*! no static exports found */
5118/***/ (function(module, exports, __webpack_require__) {
5119
5120// 20.2.2.16 Math.fround(x)
5121var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5122
5123$export($export.S, 'Math', { fround: __webpack_require__(/*! ./_math-fround */ "./node_modules/core-js/modules/_math-fround.js") });
5124
5125
5126/***/ }),
5127
vendor: 1,069 bytes, lines 5128-5163
5128/***/ "./node_modules/core-js/modules/es6.math.hypot.js":
5129/*!********************************************************!*\
5130  !*** ./node_modules/core-js/modules/es6.math.hypot.js ***!
5131  \********************************************************/
5132/*! no static exports found */
5133/***/ (function(module, exports, __webpack_require__) {
5134
5135// 20.2.2.17 Math.hypot([value1[, value2[, … ]]])
5136var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5137var abs = Math.abs;
5138
5139$export($export.S, 'Math', {
5140  hypot: function hypot(value1, value2) { // eslint-disable-line no-unused-vars
5141    var sum = 0;
5142    var i = 0;
5143    var aLen = arguments.length;
5144    var larg = 0;
5145    var arg, div;
5146    while (i < aLen) {
5147      arg = abs(arguments[i++]);
5148      if (larg < arg) {
5149        div = larg / arg;
5150        sum = sum * div * div + 1;
5151        larg = arg;
5152      } else if (arg > 0) {
5153        div = arg / larg;
5154        sum += div * div;
5155      } else sum += arg;
5156    }
5157    return larg === Infinity ? Infinity : larg * Math.sqrt(sum);
5158  }
5159});
5160
5161
5162/***/ }),
5163
vendor: 1,000 bytes, lines 5164-5191
5164/***/ "./node_modules/core-js/modules/es6.math.imul.js":
5165/*!*******************************************************!*\
5166  !*** ./node_modules/core-js/modules/es6.math.imul.js ***!
5167  \*******************************************************/
5168/*! no static exports found */
5169/***/ (function(module, exports, __webpack_require__) {
5170
5171// 20.2.2.18 Math.imul(x, y)
5172var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5173var $imul = Math.imul;
5174
5175// some WebKit versions fails with big numbers, some has wrong arity
5176$export($export.S + $export.F * __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js")(function () {
5177  return $imul(0xffffffff, 5) != -5 || $imul.length != 2;
5178}), 'Math', {
5179  imul: function imul(x, y) {
5180    var UINT16 = 0xffff;
5181    var xn = +x;
5182    var yn = +y;
5183    var xl = UINT16 & xn;
5184    var yl = UINT16 & yn;
5185    return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);
5186  }
5187});
5188
5189
5190/***/ }),
5191
vendor: 573 bytes, lines 5192-5210
5192/***/ "./node_modules/core-js/modules/es6.math.log10.js":
5193/*!********************************************************!*\
5194  !*** ./node_modules/core-js/modules/es6.math.log10.js ***!
5195  \********************************************************/
5196/*! no static exports found */
5197/***/ (function(module, exports, __webpack_require__) {
5198
5199// 20.2.2.21 Math.log10(x)
5200var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5201
5202$export($export.S, 'Math', {
5203  log10: function log10(x) {
5204    return Math.log(x) * Math.LOG10E;
5205  }
5206});
5207
5208
5209/***/ }),
5210
vendor: 599 bytes, lines 5211-5225
5211/***/ "./node_modules/core-js/modules/es6.math.log1p.js":
5212/*!********************************************************!*\
5213  !*** ./node_modules/core-js/modules/es6.math.log1p.js ***!
5214  \********************************************************/
5215/*! no static exports found */
5216/***/ (function(module, exports, __webpack_require__) {
5217
5218// 20.2.2.20 Math.log1p(x)
5219var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5220
5221$export($export.S, 'Math', { log1p: __webpack_require__(/*! ./_math-log1p */ "./node_modules/core-js/modules/_math-log1p.js") });
5222
5223
5224/***/ }),
5225
vendor: 563 bytes, lines 5226-5244
5226/***/ "./node_modules/core-js/modules/es6.math.log2.js":
5227/*!*******************************************************!*\
5228  !*** ./node_modules/core-js/modules/es6.math.log2.js ***!
5229  \*******************************************************/
5230/*! no static exports found */
5231/***/ (function(module, exports, __webpack_require__) {
5232
5233// 20.2.2.22 Math.log2(x)
5234var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5235
5236$export($export.S, 'Math', {
5237  log2: function log2(x) {
5238    return Math.log(x) / Math.LN2;
5239  }
5240});
5241
5242
5243/***/ }),
5244
vendor: 591 bytes, lines 5245-5259
5245/***/ "./node_modules/core-js/modules/es6.math.sign.js":
5246/*!*******************************************************!*\
5247  !*** ./node_modules/core-js/modules/es6.math.sign.js ***!
5248  \*******************************************************/
5249/*! no static exports found */
5250/***/ (function(module, exports, __webpack_require__) {
5251
5252// 20.2.2.28 Math.sign(x)
5253var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5254
5255$export($export.S, 'Math', { sign: __webpack_require__(/*! ./_math-sign */ "./node_modules/core-js/modules/_math-sign.js") });
5256
5257
5258/***/ }),
5259
vendor: 980 bytes, lines 5260-5285
5260/***/ "./node_modules/core-js/modules/es6.math.sinh.js":
5261/*!*******************************************************!*\
5262  !*** ./node_modules/core-js/modules/es6.math.sinh.js ***!
5263  \*******************************************************/
5264/*! no static exports found */
5265/***/ (function(module, exports, __webpack_require__) {
5266
5267// 20.2.2.30 Math.sinh(x)
5268var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5269var expm1 = __webpack_require__(/*! ./_math-expm1 */ "./node_modules/core-js/modules/_math-expm1.js");
5270var exp = Math.exp;
5271
5272// V8 near Chromium 38 has a problem with very small numbers
5273$export($export.S + $export.F * __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js")(function () {
5274  return !Math.sinh(-2e-17) != -2e-17;
5275}), 'Math', {
5276  sinh: function sinh(x) {
5277    return Math.abs(x = +x) < 1
5278      ? (expm1(x) - expm1(-x)) / 2
5279      : (exp(x - 1) - exp(-x - 1)) * (Math.E / 2);
5280  }
5281});
5282
5283
5284/***/ }),
5285
vendor: 783 bytes, lines 5286-5308
5286/***/ "./node_modules/core-js/modules/es6.math.tanh.js":
5287/*!*******************************************************!*\
5288  !*** ./node_modules/core-js/modules/es6.math.tanh.js ***!
5289  \*******************************************************/
5290/*! no static exports found */
5291/***/ (function(module, exports, __webpack_require__) {
5292
5293// 20.2.2.33 Math.tanh(x)
5294var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5295var expm1 = __webpack_require__(/*! ./_math-expm1 */ "./node_modules/core-js/modules/_math-expm1.js");
5296var exp = Math.exp;
5297
5298$export($export.S, 'Math', {
5299  tanh: function tanh(x) {
5300    var a = expm1(x = +x);
5301    var b = expm1(-x);
5302    return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));
5303  }
5304});
5305
5306
5307/***/ }),
5308
vendor: 586 bytes, lines 5309-5327
5309/***/ "./node_modules/core-js/modules/es6.math.trunc.js":
5310/*!********************************************************!*\
5311  !*** ./node_modules/core-js/modules/es6.math.trunc.js ***!
5312  \********************************************************/
5313/*! no static exports found */
5314/***/ (function(module, exports, __webpack_require__) {
5315
5316// 20.2.2.34 Math.trunc(x)
5317var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5318
5319$export($export.S, 'Math', {
5320  trunc: function trunc(it) {
5321    return (it > 0 ? Math.floor : Math.ceil)(it);
5322  }
5323});
5324
5325
5326/***/ }),
5327
vendor: 4,007 bytes, lines 5328-5408
5328/***/ "./node_modules/core-js/modules/es6.number.constructor.js":
5329/*!****************************************************************!*\
5330  !*** ./node_modules/core-js/modules/es6.number.constructor.js ***!
5331  \****************************************************************/
5332/*! no static exports found */
5333/***/ (function(module, exports, __webpack_require__) {
5334
5335"use strict";
5336
5337var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
5338var has = __webpack_require__(/*! ./_has */ "./node_modules/core-js/modules/_has.js");
5339var cof = __webpack_require__(/*! ./_cof */ "./node_modules/core-js/modules/_cof.js");
5340var inheritIfRequired = __webpack_require__(/*! ./_inherit-if-required */ "./node_modules/core-js/modules/_inherit-if-required.js");
5341var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "./node_modules/core-js/modules/_to-primitive.js");
5342var fails = __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js");
5343var gOPN = __webpack_require__(/*! ./_object-gopn */ "./node_modules/core-js/modules/_object-gopn.js").f;
5344var gOPD = __webpack_require__(/*! ./_object-gopd */ "./node_modules/core-js/modules/_object-gopd.js").f;
5345var dP = __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/modules/_object-dp.js").f;
5346var $trim = __webpack_require__(/*! ./_string-trim */ "./node_modules/core-js/modules/_string-trim.js").trim;
5347var NUMBER = 'Number';
5348var $Number = global[NUMBER];
5349var Base = $Number;
5350var proto = $Number.prototype;
5351// Opera ~12 has broken Object#toString
5352var BROKEN_COF = cof(__webpack_require__(/*! ./_object-create */ "./node_modules/core-js/modules/_object-create.js")(proto)) == NUMBER;
5353var TRIM = 'trim' in String.prototype;
5354
5355// 7.1.3 ToNumber(argument)
5356var toNumber = function (argument) {
5357  var it = toPrimitive(argument, false);
5358  if (typeof it == 'string' && it.length > 2) {
5359    it = TRIM ? it.trim() : $trim(it, 3);
5360    var first = it.charCodeAt(0);
5361    var third, radix, maxCode;
5362    if (first === 43 || first === 45) {
5363      third = it.charCodeAt(2);
5364      if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix
5365    } else if (first === 48) {
5366      switch (it.charCodeAt(1)) {
5367        case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i
5368        case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i
5369        default: return +it;
5370      }
5371      for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {
5372        code = digits.charCodeAt(i);
5373        // parseInt parses a string to a first unavailable symbol
5374        // but ToNumber should return NaN if a string contains unavailable symbols
5375        if (code < 48 || code > maxCode) return NaN;
5376      } return parseInt(digits, radix);
5377    }
5378  } return +it;
5379};
5380
5381if (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {
5382  $Number = function Number(value) {
5383    var it = arguments.length < 1 ? 0 : value;
5384    var that = this;
5385    return that instanceof $Number
5386      // check on 1..constructor(foo) case
5387      && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)
5388        ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);
5389  };
5390  for (var keys = __webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js") ? gOPN(Base) : (
5391    // ES3:
5392    'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +
5393    // ES6 (in case, if modules with ES6 Number statics required before):
5394    'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +
5395    'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'
5396  ).split(','), j = 0, key; keys.length > j; j++) {
5397    if (has(Base, key = keys[j]) && !has($Number, key)) {
5398      dP($Number, key, gOPD(Base, key));
5399    }
5400  }
5401  $Number.prototype = proto;
5402  proto.constructor = $Number;
5403  __webpack_require__(/*! ./_redefine */ "./node_modules/core-js/modules/_redefine.js")(global, NUMBER, $Number);
5404}
5405
5406
5407/***/ }),
5408
vendor: 546 bytes, lines 5409-5423
5409/***/ "./node_modules/core-js/modules/es6.number.epsilon.js":
5410/*!************************************************************!*\
5411  !*** ./node_modules/core-js/modules/es6.number.epsilon.js ***!
5412  \************************************************************/
5413/*! no static exports found */
5414/***/ (function(module, exports, __webpack_require__) {
5415
5416// 20.1.2.1 Number.EPSILON
5417var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5418
5419$export($export.S, 'Number', { EPSILON: Math.pow(2, -52) });
5420
5421
5422/***/ }),
5423
vendor: 736 bytes, lines 5424-5443
5424/***/ "./node_modules/core-js/modules/es6.number.is-finite.js":
5425/*!**************************************************************!*\
5426  !*** ./node_modules/core-js/modules/es6.number.is-finite.js ***!
5427  \**************************************************************/
5428/*! no static exports found */
5429/***/ (function(module, exports, __webpack_require__) {
5430
5431// 20.1.2.2 Number.isFinite(number)
5432var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5433var _isFinite = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js").isFinite;
5434
5435$export($export.S, 'Number', {
5436  isFinite: function isFinite(it) {
5437    return typeof it == 'number' && _isFinite(it);
5438  }
5439});
5440
5441
5442/***/ }),
5443
vendor: 643 bytes, lines 5444-5458
5444/***/ "./node_modules/core-js/modules/es6.number.is-integer.js":
5445/*!***************************************************************!*\
5446  !*** ./node_modules/core-js/modules/es6.number.is-integer.js ***!
5447  \***************************************************************/
5448/*! no static exports found */
5449/***/ (function(module, exports, __webpack_require__) {
5450
5451// 20.1.2.3 Number.isInteger(number)
5452var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5453
5454$export($export.S, 'Number', { isInteger: __webpack_require__(/*! ./_is-integer */ "./node_modules/core-js/modules/_is-integer.js") });
5455
5456
5457/***/ }),
5458
vendor: 637 bytes, lines 5459-5478
5459/***/ "./node_modules/core-js/modules/es6.number.is-nan.js":
5460/*!***********************************************************!*\
5461  !*** ./node_modules/core-js/modules/es6.number.is-nan.js ***!
5462  \***********************************************************/
5463/*! no static exports found */
5464/***/ (function(module, exports, __webpack_require__) {
5465
5466// 20.1.2.4 Number.isNaN(number)
5467var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5468
5469$export($export.S, 'Number', {
5470  isNaN: function isNaN(number) {
5471    // eslint-disable-next-line no-self-compare
5472    return number != number;
5473  }
5474});
5475
5476
5477/***/ }),
5478
vendor: 812 bytes, lines 5479-5499
5479/***/ "./node_modules/core-js/modules/es6.number.is-safe-integer.js":
5480/*!********************************************************************!*\
5481  !*** ./node_modules/core-js/modules/es6.number.is-safe-integer.js ***!
5482  \********************************************************************/
5483/*! no static exports found */
5484/***/ (function(module, exports, __webpack_require__) {
5485
5486// 20.1.2.5 Number.isSafeInteger(number)
5487var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5488var isInteger = __webpack_require__(/*! ./_is-integer */ "./node_modules/core-js/modules/_is-integer.js");
5489var abs = Math.abs;
5490
5491$export($export.S, 'Number', {
5492  isSafeInteger: function isSafeInteger(number) {
5493    return isInteger(number) && abs(number) <= 0x1fffffffffffff;
5494  }
5495});
5496
5497
5498/***/ }),
5499
vendor: 600 bytes, lines 5500-5514
5500/***/ "./node_modules/core-js/modules/es6.number.max-safe-integer.js":
5501/*!*********************************************************************!*\
5502  !*** ./node_modules/core-js/modules/es6.number.max-safe-integer.js ***!
5503  \*********************************************************************/
5504/*! no static exports found */
5505/***/ (function(module, exports, __webpack_require__) {
5506
5507// 20.1.2.6 Number.MAX_SAFE_INTEGER
5508var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5509
5510$export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff });
5511
5512
5513/***/ }),
5514
vendor: 602 bytes, lines 5515-5529
5515/***/ "./node_modules/core-js/modules/es6.number.min-safe-integer.js":
5516/*!*********************************************************************!*\
5517  !*** ./node_modules/core-js/modules/es6.number.min-safe-integer.js ***!
5518  \*********************************************************************/
5519/*! no static exports found */
5520/***/ (function(module, exports, __webpack_require__) {
5521
5522// 20.1.2.10 Number.MIN_SAFE_INTEGER
5523var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5524
5525$export($export.S, 'Number', { MIN_SAFE_INTEGER: -0x1fffffffffffff });
5526
5527
5528/***/ }),
5529
vendor: 731 bytes, lines 5530-5544
5530/***/ "./node_modules/core-js/modules/es6.number.parse-float.js":
5531/*!****************************************************************!*\
5532  !*** ./node_modules/core-js/modules/es6.number.parse-float.js ***!
5533  \****************************************************************/
5534/*! no static exports found */
5535/***/ (function(module, exports, __webpack_require__) {
5536
5537var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5538var $parseFloat = __webpack_require__(/*! ./_parse-float */ "./node_modules/core-js/modules/_parse-float.js");
5539// 20.1.2.12 Number.parseFloat(string)
5540$export($export.S + $export.F * (Number.parseFloat != $parseFloat), 'Number', { parseFloat: $parseFloat });
5541
5542
5543/***/ }),
5544
vendor: 714 bytes, lines 5545-5559
5545/***/ "./node_modules/core-js/modules/es6.number.parse-int.js":
5546/*!**************************************************************!*\
5547  !*** ./node_modules/core-js/modules/es6.number.parse-int.js ***!
5548  \**************************************************************/
5549/*! no static exports found */
5550/***/ (function(module, exports, __webpack_require__) {
5551
5552var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5553var $parseInt = __webpack_require__(/*! ./_parse-int */ "./node_modules/core-js/modules/_parse-int.js");
5554// 20.1.2.13 Number.parseInt(string, radix)
5555$export($export.S + $export.F * (Number.parseInt != $parseInt), 'Number', { parseInt: $parseInt });
5556
5557
5558/***/ }),
5559
vendor: 3,458 bytes, lines 5560-5685
5560/***/ "./node_modules/core-js/modules/es6.number.to-fixed.js":
5561/*!*************************************************************!*\
5562  !*** ./node_modules/core-js/modules/es6.number.to-fixed.js ***!
5563  \*************************************************************/
5564/*! no static exports found */
5565/***/ (function(module, exports, __webpack_require__) {
5566
5567"use strict";
5568
5569var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5570var toInteger = __webpack_require__(/*! ./_to-integer */ "./node_modules/core-js/modules/_to-integer.js");
5571var aNumberValue = __webpack_require__(/*! ./_a-number-value */ "./node_modules/core-js/modules/_a-number-value.js");
5572var repeat = __webpack_require__(/*! ./_string-repeat */ "./node_modules/core-js/modules/_string-repeat.js");
5573var $toFixed = 1.0.toFixed;
5574var floor = Math.floor;
5575var data = [0, 0, 0, 0, 0, 0];
5576var ERROR = 'Number.toFixed: incorrect invocation!';
5577var ZERO = '0';
5578
5579var multiply = function (n, c) {
5580  var i = -1;
5581  var c2 = c;
5582  while (++i < 6) {
5583    c2 += n * data[i];
5584    data[i] = c2 % 1e7;
5585    c2 = floor(c2 / 1e7);
5586  }
5587};
5588var divide = function (n) {
5589  var i = 6;
5590  var c = 0;
5591  while (--i >= 0) {
5592    c += data[i];
5593    data[i] = floor(c / n);
5594    c = (c % n) * 1e7;
5595  }
5596};
5597var numToString = function () {
5598  var i = 6;
5599  var s = '';
5600  while (--i >= 0) {
5601    if (s !== '' || i === 0 || data[i] !== 0) {
5602      var t = String(data[i]);
5603      s = s === '' ? t : s + repeat.call(ZERO, 7 - t.length) + t;
5604    }
5605  } return s;
5606};
5607var pow = function (x, n, acc) {
5608  return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);
5609};
5610var log = function (x) {
5611  var n = 0;
5612  var x2 = x;
5613  while (x2 >= 4096) {
5614    n += 12;
5615    x2 /= 4096;
5616  }
5617  while (x2 >= 2) {
5618    n += 1;
5619    x2 /= 2;
5620  } return n;
5621};
5622
5623$export($export.P + $export.F * (!!$toFixed && (
5624  0.00008.toFixed(3) !== '0.000' ||
5625  0.9.toFixed(0) !== '1' ||
5626  1.255.toFixed(2) !== '1.25' ||
5627  1000000000000000128.0.toFixed(0) !== '1000000000000000128'
5628) || !__webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js")(function () {
5629  // V8 ~ Android 4.3-
5630  $toFixed.call({});
5631})), 'Number', {
5632  toFixed: function toFixed(fractionDigits) {
5633    var x = aNumberValue(this, ERROR);
5634    var f = toInteger(fractionDigits);
5635    var s = '';
5636    var m = ZERO;
5637    var e, z, j, k;
5638    if (f < 0 || f > 20) throw RangeError(ERROR);
5639    // eslint-disable-next-line no-self-compare
5640    if (x != x) return 'NaN';
5641    if (x <= -1e21 || x >= 1e21) return String(x);
5642    if (x < 0) {
5643      s = '-';
5644      x = -x;
5645    }
5646    if (x > 1e-21) {
5647      e = log(x * pow(2, 69, 1)) - 69;
5648      z = e < 0 ? x * pow(2, -e, 1) : x / pow(2, e, 1);
5649      z *= 0x10000000000000;
5650      e = 52 - e;
5651      if (e > 0) {
5652        multiply(0, z);
5653        j = f;
5654        while (j >= 7) {
5655          multiply(1e7, 0);
5656          j -= 7;
5657        }
5658        multiply(pow(10, j, 1), 0);
5659        j = e - 1;
5660        while (j >= 23) {
5661          divide(1 << 23);
5662          j -= 23;
5663        }
5664        divide(1 << j);
5665        multiply(1, 1);
5666        divide(2);
5667        m = numToString();
5668      } else {
5669        multiply(0, z);
5670        multiply(1 << -e, 0);
5671        m = numToString() + repeat.call(ZERO, f);
5672      }
5673    }
5674    if (f > 0) {
5675      k = m.length;
5676      m = s + (k <= f ? '0.' + repeat.call(ZERO, f - k) + m : m.slice(0, k - f) + '.' + m.slice(k - f));
5677    } else {
5678      m = s + m;
5679    } return m;
5680  }
5681});
5682
5683
5684/***/ }),
5685
vendor: 1,184 bytes, lines 5686-5715
5686/***/ "./node_modules/core-js/modules/es6.number.to-precision.js":
5687/*!*****************************************************************!*\
5688  !*** ./node_modules/core-js/modules/es6.number.to-precision.js ***!
5689  \*****************************************************************/
5690/*! no static exports found */
5691/***/ (function(module, exports, __webpack_require__) {
5692
5693"use strict";
5694
5695var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5696var $fails = __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js");
5697var aNumberValue = __webpack_require__(/*! ./_a-number-value */ "./node_modules/core-js/modules/_a-number-value.js");
5698var $toPrecision = 1.0.toPrecision;
5699
5700$export($export.P + $export.F * ($fails(function () {
5701  // IE7-
5702  return $toPrecision.call(1, undefined) !== '1';
5703}) || !$fails(function () {
5704  // V8 ~ Android 4.3-
5705  $toPrecision.call({});
5706})), 'Number', {
5707  toPrecision: function toPrecision(precision) {
5708    var that = aNumberValue(this, 'Number#toPrecision: incorrect invocation!');
5709    return precision === undefined ? $toPrecision.call(that) : $toPrecision.call(that, precision);
5710  }
5711});
5712
5713
5714/***/ }),
5715
vendor: 647 bytes, lines 5716-5730
5716/***/ "./node_modules/core-js/modules/es6.object.assign.js":
5717/*!***********************************************************!*\
5718  !*** ./node_modules/core-js/modules/es6.object.assign.js ***!
5719  \***********************************************************/
5720/*! no static exports found */
5721/***/ (function(module, exports, __webpack_require__) {
5722
5723// 19.1.3.1 Object.assign(target, source)
5724var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5725
5726$export($export.S + $export.F, 'Object', { assign: __webpack_require__(/*! ./_object-assign */ "./node_modules/core-js/modules/_object-assign.js") });
5727
5728
5729/***/ }),
5730
vendor: 647 bytes, lines 5731-5744
5731/***/ "./node_modules/core-js/modules/es6.object.create.js":
5732/*!***********************************************************!*\
5733  !*** ./node_modules/core-js/modules/es6.object.create.js ***!
5734  \***********************************************************/
5735/*! no static exports found */
5736/***/ (function(module, exports, __webpack_require__) {
5737
5738var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5739// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
5740$export($export.S, 'Object', { create: __webpack_require__(/*! ./_object-create */ "./node_modules/core-js/modules/_object-create.js") });
5741
5742
5743/***/ }),
5744
vendor: 809 bytes, lines 5745-5758
5745/***/ "./node_modules/core-js/modules/es6.object.define-properties.js":
5746/*!**********************************************************************!*\
5747  !*** ./node_modules/core-js/modules/es6.object.define-properties.js ***!
5748  \**********************************************************************/
5749/*! no static exports found */
5750/***/ (function(module, exports, __webpack_require__) {
5751
5752var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5753// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)
5754$export($export.S + $export.F * !__webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js"), 'Object', { defineProperties: __webpack_require__(/*! ./_object-dps */ "./node_modules/core-js/modules/_object-dps.js") });
5755
5756
5757/***/ }),
5758
vendor: 800 bytes, lines 5759-5772
5759/***/ "./node_modules/core-js/modules/es6.object.define-property.js":
5760/*!********************************************************************!*\
5761  !*** ./node_modules/core-js/modules/es6.object.define-property.js ***!
5762  \********************************************************************/
5763/*! no static exports found */
5764/***/ (function(module, exports, __webpack_require__) {
5765
5766var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5767// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)
5768$export($export.S + $export.F * !__webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js"), 'Object', { defineProperty: __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/modules/_object-dp.js").f });
5769
5770
5771/***/ }),
5772
vendor: 811 bytes, lines 5773-5792
5773/***/ "./node_modules/core-js/modules/es6.object.freeze.js":
5774/*!***********************************************************!*\
5775  !*** ./node_modules/core-js/modules/es6.object.freeze.js ***!
5776  \***********************************************************/
5777/*! no static exports found */
5778/***/ (function(module, exports, __webpack_require__) {
5779
5780// 19.1.2.5 Object.freeze(O)
5781var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
5782var meta = __webpack_require__(/*! ./_meta */ "./node_modules/core-js/modules/_meta.js").onFreeze;
5783
5784__webpack_require__(/*! ./_object-sap */ "./node_modules/core-js/modules/_object-sap.js")('freeze', function ($freeze) {
5785  return function freeze(it) {
5786    return $freeze && isObject(it) ? $freeze(meta(it)) : it;
5787  };
5788});
5789
5790
5791/***/ }),
5792
vendor: 978 bytes, lines 5793-5812
5793/***/ "./node_modules/core-js/modules/es6.object.get-own-property-descriptor.js":
5794/*!********************************************************************************!*\
5795  !*** ./node_modules/core-js/modules/es6.object.get-own-property-descriptor.js ***!
5796  \********************************************************************************/
5797/*! no static exports found */
5798/***/ (function(module, exports, __webpack_require__) {
5799
5800// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
5801var toIObject = __webpack_require__(/*! ./_to-iobject */ "./node_modules/core-js/modules/_to-iobject.js");
5802var $getOwnPropertyDescriptor = __webpack_require__(/*! ./_object-gopd */ "./node_modules/core-js/modules/_object-gopd.js").f;
5803
5804__webpack_require__(/*! ./_object-sap */ "./node_modules/core-js/modules/_object-sap.js")('getOwnPropertyDescriptor', function () {
5805  return function getOwnPropertyDescriptor(it, key) {
5806    return $getOwnPropertyDescriptor(toIObject(it), key);
5807  };
5808});
5809
5810
5811/***/ }),
5812
vendor: 705 bytes, lines 5813-5827
5813/***/ "./node_modules/core-js/modules/es6.object.get-own-property-names.js":
5814/*!***************************************************************************!*\
5815  !*** ./node_modules/core-js/modules/es6.object.get-own-property-names.js ***!
5816  \***************************************************************************/
5817/*! no static exports found */
5818/***/ (function(module, exports, __webpack_require__) {
5819
5820// 19.1.2.7 Object.getOwnPropertyNames(O)
5821__webpack_require__(/*! ./_object-sap */ "./node_modules/core-js/modules/_object-sap.js")('getOwnPropertyNames', function () {
5822  return __webpack_require__(/*! ./_object-gopn-ext */ "./node_modules/core-js/modules/_object-gopn-ext.js").f;
5823});
5824
5825
5826/***/ }),
5827
vendor: 863 bytes, lines 5828-5847
5828/***/ "./node_modules/core-js/modules/es6.object.get-prototype-of.js":
5829/*!*********************************************************************!*\
5830  !*** ./node_modules/core-js/modules/es6.object.get-prototype-of.js ***!
5831  \*********************************************************************/
5832/*! no static exports found */
5833/***/ (function(module, exports, __webpack_require__) {
5834
5835// 19.1.2.9 Object.getPrototypeOf(O)
5836var toObject = __webpack_require__(/*! ./_to-object */ "./node_modules/core-js/modules/_to-object.js");
5837var $getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ "./node_modules/core-js/modules/_object-gpo.js");
5838
5839__webpack_require__(/*! ./_object-sap */ "./node_modules/core-js/modules/_object-sap.js")('getPrototypeOf', function () {
5840  return function getPrototypeOf(it) {
5841    return $getPrototypeOf(toObject(it));
5842  };
5843});
5844
5845
5846/***/ }),
5847
vendor: 780 bytes, lines 5848-5866
5848/***/ "./node_modules/core-js/modules/es6.object.is-extensible.js":
5849/*!******************************************************************!*\
5850  !*** ./node_modules/core-js/modules/es6.object.is-extensible.js ***!
5851  \******************************************************************/
5852/*! no static exports found */
5853/***/ (function(module, exports, __webpack_require__) {
5854
5855// 19.1.2.11 Object.isExtensible(O)
5856var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
5857
5858__webpack_require__(/*! ./_object-sap */ "./node_modules/core-js/modules/_object-sap.js")('isExtensible', function ($isExtensible) {
5859  return function isExtensible(it) {
5860    return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false;
5861  };
5862});
5863
5864
5865/***/ }),
5866
vendor: 740 bytes, lines 5867-5885
5867/***/ "./node_modules/core-js/modules/es6.object.is-frozen.js":
5868/*!**************************************************************!*\
5869  !*** ./node_modules/core-js/modules/es6.object.is-frozen.js ***!
5870  \**************************************************************/
5871/*! no static exports found */
5872/***/ (function(module, exports, __webpack_require__) {
5873
5874// 19.1.2.12 Object.isFrozen(O)
5875var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
5876
5877__webpack_require__(/*! ./_object-sap */ "./node_modules/core-js/modules/_object-sap.js")('isFrozen', function ($isFrozen) {
5878  return function isFrozen(it) {
5879    return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;
5880  };
5881});
5882
5883
5884/***/ }),
5885
vendor: 740 bytes, lines 5886-5904
5886/***/ "./node_modules/core-js/modules/es6.object.is-sealed.js":
5887/*!**************************************************************!*\
5888  !*** ./node_modules/core-js/modules/es6.object.is-sealed.js ***!
5889  \**************************************************************/
5890/*! no static exports found */
5891/***/ (function(module, exports, __webpack_require__) {
5892
5893// 19.1.2.13 Object.isSealed(O)
5894var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
5895
5896__webpack_require__(/*! ./_object-sap */ "./node_modules/core-js/modules/_object-sap.js")('isSealed', function ($isSealed) {
5897  return function isSealed(it) {
5898    return isObject(it) ? $isSealed ? $isSealed(it) : false : true;
5899  };
5900});
5901
5902
5903/***/ }),
5904
vendor: 605 bytes, lines 5905-5918
5905/***/ "./node_modules/core-js/modules/es6.object.is.js":
5906/*!*******************************************************!*\
5907  !*** ./node_modules/core-js/modules/es6.object.is.js ***!
5908  \*******************************************************/
5909/*! no static exports found */
5910/***/ (function(module, exports, __webpack_require__) {
5911
5912// 19.1.3.10 Object.is(value1, value2)
5913var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5914$export($export.S, 'Object', { is: __webpack_require__(/*! ./_same-value */ "./node_modules/core-js/modules/_same-value.js") });
5915
5916
5917/***/ }),
5918
vendor: 768 bytes, lines 5919-5938
5919/***/ "./node_modules/core-js/modules/es6.object.keys.js":
5920/*!*********************************************************!*\
5921  !*** ./node_modules/core-js/modules/es6.object.keys.js ***!
5922  \*********************************************************/
5923/*! no static exports found */
5924/***/ (function(module, exports, __webpack_require__) {
5925
5926// 19.1.2.14 Object.keys(O)
5927var toObject = __webpack_require__(/*! ./_to-object */ "./node_modules/core-js/modules/_to-object.js");
5928var $keys = __webpack_require__(/*! ./_object-keys */ "./node_modules/core-js/modules/_object-keys.js");
5929
5930__webpack_require__(/*! ./_object-sap */ "./node_modules/core-js/modules/_object-sap.js")('keys', function () {
5931  return function keys(it) {
5932    return $keys(toObject(it));
5933  };
5934});
5935
5936
5937/***/ }),
5938
vendor: 926 bytes, lines 5939-5958
5939/***/ "./node_modules/core-js/modules/es6.object.prevent-extensions.js":
5940/*!***********************************************************************!*\
5941  !*** ./node_modules/core-js/modules/es6.object.prevent-extensions.js ***!
5942  \***********************************************************************/
5943/*! no static exports found */
5944/***/ (function(module, exports, __webpack_require__) {
5945
5946// 19.1.2.15 Object.preventExtensions(O)
5947var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
5948var meta = __webpack_require__(/*! ./_meta */ "./node_modules/core-js/modules/_meta.js").onFreeze;
5949
5950__webpack_require__(/*! ./_object-sap */ "./node_modules/core-js/modules/_object-sap.js")('preventExtensions', function ($preventExtensions) {
5951  return function preventExtensions(it) {
5952    return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it;
5953  };
5954});
5955
5956
5957/***/ }),
5958
vendor: 792 bytes, lines 5959-5978
5959/***/ "./node_modules/core-js/modules/es6.object.seal.js":
5960/*!*********************************************************!*\
5961  !*** ./node_modules/core-js/modules/es6.object.seal.js ***!
5962  \*********************************************************/
5963/*! no static exports found */
5964/***/ (function(module, exports, __webpack_require__) {
5965
5966// 19.1.2.17 Object.seal(O)
5967var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
5968var meta = __webpack_require__(/*! ./_meta */ "./node_modules/core-js/modules/_meta.js").onFreeze;
5969
5970__webpack_require__(/*! ./_object-sap */ "./node_modules/core-js/modules/_object-sap.js")('seal', function ($seal) {
5971  return function seal(it) {
5972    return $seal && isObject(it) ? $seal(meta(it)) : it;
5973  };
5974});
5975
5976
5977/***/ }),
5978
vendor: 681 bytes, lines 5979-5992
5979/***/ "./node_modules/core-js/modules/es6.object.set-prototype-of.js":
5980/*!*********************************************************************!*\
5981  !*** ./node_modules/core-js/modules/es6.object.set-prototype-of.js ***!
5982  \*********************************************************************/
5983/*! no static exports found */
5984/***/ (function(module, exports, __webpack_require__) {
5985
5986// 19.1.3.19 Object.setPrototypeOf(O, proto)
5987var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5988$export($export.S, 'Object', { setPrototypeOf: __webpack_require__(/*! ./_set-proto */ "./node_modules/core-js/modules/_set-proto.js").set });
5989
5990
5991/***/ }),
5992
vendor: 873 bytes, lines 5993-6014
5993/***/ "./node_modules/core-js/modules/es6.object.to-string.js":
5994/*!**************************************************************!*\
5995  !*** ./node_modules/core-js/modules/es6.object.to-string.js ***!
5996  \**************************************************************/
5997/*! no static exports found */
5998/***/ (function(module, exports, __webpack_require__) {
5999
6000"use strict";
6001
6002// 19.1.3.6 Object.prototype.toString()
6003var classof = __webpack_require__(/*! ./_classof */ "./node_modules/core-js/modules/_classof.js");
6004var test = {};
6005test[__webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('toStringTag')] = 'z';
6006if (test + '' != '[object z]') {
6007  __webpack_require__(/*! ./_redefine */ "./node_modules/core-js/modules/_redefine.js")(Object.prototype, 'toString', function toString() {
6008    return '[object ' + classof(this) + ']';
6009  }, true);
6010}
6011
6012
6013/***/ }),
6014
vendor: 676 bytes, lines 6015-6029
6015/***/ "./node_modules/core-js/modules/es6.parse-float.js":
6016/*!*********************************************************!*\
6017  !*** ./node_modules/core-js/modules/es6.parse-float.js ***!
6018  \*********************************************************/
6019/*! no static exports found */
6020/***/ (function(module, exports, __webpack_require__) {
6021
6022var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
6023var $parseFloat = __webpack_require__(/*! ./_parse-float */ "./node_modules/core-js/modules/_parse-float.js");
6024// 18.2.4 parseFloat(string)
6025$export($export.G + $export.F * (parseFloat != $parseFloat), { parseFloat: $parseFloat });
6026
6027
6028/***/ }),
6029
vendor: 659 bytes, lines 6030-6044
6030/***/ "./node_modules/core-js/modules/es6.parse-int.js":
6031/*!*******************************************************!*\
6032  !*** ./node_modules/core-js/modules/es6.parse-int.js ***!
6033  \*******************************************************/
6034/*! no static exports found */
6035/***/ (function(module, exports, __webpack_require__) {
6036
6037var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
6038var $parseInt = __webpack_require__(/*! ./_parse-int */ "./node_modules/core-js/modules/_parse-int.js");
6039// 18.2.5 parseInt(string, radix)
6040$export($export.G + $export.F * (parseInt != $parseInt), { parseInt: $parseInt });
6041
6042
6043/***/ }),
6044
vendor: 11,564 bytes, lines 6045-6342
6045/***/ "./node_modules/core-js/modules/es6.promise.js":
6046/*!*****************************************************!*\
6047  !*** ./node_modules/core-js/modules/es6.promise.js ***!
6048  \*****************************************************/
6049/*! no static exports found */
6050/***/ (function(module, exports, __webpack_require__) {
6051
6052"use strict";
6053
6054var LIBRARY = __webpack_require__(/*! ./_library */ "./node_modules/core-js/modules/_library.js");
6055var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
6056var ctx = __webpack_require__(/*! ./_ctx */ "./node_modules/core-js/modules/_ctx.js");
6057var classof = __webpack_require__(/*! ./_classof */ "./node_modules/core-js/modules/_classof.js");
6058var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
6059var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
6060var aFunction = __webpack_require__(/*! ./_a-function */ "./node_modules/core-js/modules/_a-function.js");
6061var anInstance = __webpack_require__(/*! ./_an-instance */ "./node_modules/core-js/modules/_an-instance.js");
6062var forOf = __webpack_require__(/*! ./_for-of */ "./node_modules/core-js/modules/_for-of.js");
6063var speciesConstructor = __webpack_require__(/*! ./_species-constructor */ "./node_modules/core-js/modules/_species-constructor.js");
6064var task = __webpack_require__(/*! ./_task */ "./node_modules/core-js/modules/_task.js").set;
6065var microtask = __webpack_require__(/*! ./_microtask */ "./node_modules/core-js/modules/_microtask.js")();
6066var newPromiseCapabilityModule = __webpack_require__(/*! ./_new-promise-capability */ "./node_modules/core-js/modules/_new-promise-capability.js");
6067var perform = __webpack_require__(/*! ./_perform */ "./node_modules/core-js/modules/_perform.js");
6068var userAgent = __webpack_require__(/*! ./_user-agent */ "./node_modules/core-js/modules/_user-agent.js");
6069var promiseResolve = __webpack_require__(/*! ./_promise-resolve */ "./node_modules/core-js/modules/_promise-resolve.js");
6070var PROMISE = 'Promise';
6071var TypeError = global.TypeError;
6072var process = global.process;
6073var versions = process && process.versions;
6074var v8 = versions && versions.v8 || '';
6075var $Promise = global[PROMISE];
6076var isNode = classof(process) == 'process';
6077var empty = function () { /* empty */ };
6078var Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;
6079var newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;
6080
6081var USE_NATIVE = !!function () {
6082  try {
6083    // correct subclassing with @@species support
6084    var promise = $Promise.resolve(1);
6085    var FakePromise = (promise.constructor = {})[__webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('species')] = function (exec) {
6086      exec(empty, empty);
6087    };
6088    // unhandled rejections tracking support, NodeJS Promise without it fails @@species test
6089    return (isNode || typeof PromiseRejectionEvent == 'function')
6090      && promise.then(empty) instanceof FakePromise
6091      // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables
6092      // https://bugs.chromium.org/p/chromium/issues/detail?id=830565
6093      // we can't detect it synchronously, so just check versions
6094      && v8.indexOf('6.6') !== 0
6095      && userAgent.indexOf('Chrome/66') === -1;
6096  } catch (e) { /* empty */ }
6097}();
6098
6099// helpers
6100var isThenable = function (it) {
6101  var then;
6102  return isObject(it) && typeof (then = it.then) == 'function' ? then : false;
6103};
6104var notify = function (promise, isReject) {
6105  if (promise._n) return;
6106  promise._n = true;
6107  var chain = promise._c;
6108  microtask(function () {
6109    var value = promise._v;
6110    var ok = promise._s == 1;
6111    var i = 0;
6112    var run = function (reaction) {
6113      var handler = ok ? reaction.ok : reaction.fail;
6114      var resolve = reaction.resolve;
6115      var reject = reaction.reject;
6116      var domain = reaction.domain;
6117      var result, then, exited;
6118      try {
6119        if (handler) {
6120          if (!ok) {
6121            if (promise._h == 2) onHandleUnhandled(promise);
6122            promise._h = 1;
6123          }
6124          if (handler === true) result = value;
6125          else {
6126            if (domain) domain.enter();
6127            result = handler(value); // may throw
6128            if (domain) {
6129              domain.exit();
6130              exited = true;
6131            }
6132          }
6133          if (result === reaction.promise) {
6134            reject(TypeError('Promise-chain cycle'));
6135          } else if (then = isThenable(result)) {
6136            then.call(result, resolve, reject);
6137          } else resolve(result);
6138        } else reject(value);
6139      } catch (e) {
6140        if (domain && !exited) domain.exit();
6141        reject(e);
6142      }
6143    };
6144    while (chain.length > i) run(chain[i++]); // variable length - can't use forEach
6145    promise._c = [];
6146    promise._n = false;
6147    if (isReject && !promise._h) onUnhandled(promise);
6148  });
6149};
6150var onUnhandled = function (promise) {
6151  task.call(global, function () {
6152    var value = promise._v;
6153    var unhandled = isUnhandled(promise);
6154    var result, handler, console;
6155    if (unhandled) {
6156      result = perform(function () {
6157        if (isNode) {
6158          process.emit('unhandledRejection', value, promise);
6159        } else if (handler = global.onunhandledrejection) {
6160          handler({ promise: promise, reason: value });
6161        } else if ((console = global.console) && console.error) {
6162          console.error('Unhandled promise rejection', value);
6163        }
6164      });
6165      // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should
6166      promise._h = isNode || isUnhandled(promise) ? 2 : 1;
6167    } promise._a = undefined;
6168    if (unhandled && result.e) throw result.v;
6169  });
6170};
6171var isUnhandled = function (promise) {
6172  return promise._h !== 1 && (promise._a || promise._c).length === 0;
6173};
6174var onHandleUnhandled = function (promise) {
6175  task.call(global, function () {
6176    var handler;
6177    if (isNode) {
6178      process.emit('rejectionHandled', promise);
6179    } else if (handler = global.onrejectionhandled) {
6180      handler({ promise: promise, reason: promise._v });
6181    }
6182  });
6183};
6184var $reject = function (value) {
6185  var promise = this;
6186  if (promise._d) return;
6187  promise._d = true;
6188  promise = promise._w || promise; // unwrap
6189  promise._v = value;
6190  promise._s = 2;
6191  if (!promise._a) promise._a = promise._c.slice();
6192  notify(promise, true);
6193};
6194var $resolve = function (value) {
6195  var promise = this;
6196  var then;
6197  if (promise._d) return;
6198  promise._d = true;
6199  promise = promise._w || promise; // unwrap
6200  try {
6201    if (promise === value) throw TypeError("Promise can't be resolved itself");
6202    if (then = isThenable(value)) {
6203      microtask(function () {
6204        var wrapper = { _w: promise, _d: false }; // wrap
6205        try {
6206          then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));
6207        } catch (e) {
6208          $reject.call(wrapper, e);
6209        }
6210      });
6211    } else {
6212      promise._v = value;
6213      promise._s = 1;
6214      notify(promise, false);
6215    }
6216  } catch (e) {
6217    $reject.call({ _w: promise, _d: false }, e); // wrap
6218  }
6219};
6220
6221// constructor polyfill
6222if (!USE_NATIVE) {
6223  // 25.4.3.1 Promise(executor)
6224  $Promise = function Promise(executor) {
6225    anInstance(this, $Promise, PROMISE, '_h');
6226    aFunction(executor);
6227    Internal.call(this);
6228    try {
6229      executor(ctx($resolve, this, 1), ctx($reject, this, 1));
6230    } catch (err) {
6231      $reject.call(this, err);
6232    }
6233  };
6234  // eslint-disable-next-line no-unused-vars
6235  Internal = function Promise(executor) {
6236    this._c = [];             // <- awaiting reactions
6237    this._a = undefined;      // <- checked in isUnhandled reactions
6238    this._s = 0;              // <- state
6239    this._d = false;          // <- done
6240    this._v = undefined;      // <- value
6241    this._h = 0;              // <- rejection state, 0 - default, 1 - handled, 2 - unhandled
6242    this._n = false;          // <- notify
6243  };
6244  Internal.prototype = __webpack_require__(/*! ./_redefine-all */ "./node_modules/core-js/modules/_redefine-all.js")($Promise.prototype, {
6245    // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)
6246    then: function then(onFulfilled, onRejected) {
6247      var reaction = newPromiseCapability(speciesConstructor(this, $Promise));
6248      reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;
6249      reaction.fail = typeof onRejected == 'function' && onRejected;
6250      reaction.domain = isNode ? process.domain : undefined;
6251      this._c.push(reaction);
6252      if (this._a) this._a.push(reaction);
6253      if (this._s) notify(this, false);
6254      return reaction.promise;
6255    },
6256    // 25.4.5.1 Promise.prototype.catch(onRejected)
6257    'catch': function (onRejected) {
6258      return this.then(undefined, onRejected);
6259    }
6260  });
6261  OwnPromiseCapability = function () {
6262    var promise = new Internal();
6263    this.promise = promise;
6264    this.resolve = ctx($resolve, promise, 1);
6265    this.reject = ctx($reject, promise, 1);
6266  };
6267  newPromiseCapabilityModule.f = newPromiseCapability = function (C) {
6268    return C === $Promise || C === Wrapper
6269      ? new OwnPromiseCapability(C)
6270      : newGenericPromiseCapability(C);
6271  };
6272}
6273
6274$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });
6275__webpack_require__(/*! ./_set-to-string-tag */ "./node_modules/core-js/modules/_set-to-string-tag.js")($Promise, PROMISE);
6276__webpack_require__(/*! ./_set-species */ "./node_modules/core-js/modules/_set-species.js")(PROMISE);
6277Wrapper = __webpack_require__(/*! ./_core */ "./node_modules/core-js/modules/_core.js")[PROMISE];
6278
6279// statics
6280$export($export.S + $export.F * !USE_NATIVE, PROMISE, {
6281  // 25.4.4.5 Promise.reject(r)
6282  reject: function reject(r) {
6283    var capability = newPromiseCapability(this);
6284    var $$reject = capability.reject;
6285    $$reject(r);
6286    return capability.promise;
6287  }
6288});
6289$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {
6290  // 25.4.4.6 Promise.resolve(x)
6291  resolve: function resolve(x) {
6292    return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);
6293  }
6294});
6295$export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(/*! ./_iter-detect */ "./node_modules/core-js/modules/_iter-detect.js")(function (iter) {
6296  $Promise.all(iter)['catch'](empty);
6297})), PROMISE, {
6298  // 25.4.4.1 Promise.all(iterable)
6299  all: function all(iterable) {
6300    var C = this;
6301    var capability = newPromiseCapability(C);
6302    var resolve = capability.resolve;
6303    var reject = capability.reject;
6304    var result = perform(function () {
6305      var values = [];
6306      var index = 0;
6307      var remaining = 1;
6308      forOf(iterable, false, function (promise) {
6309        var $index = index++;
6310        var alreadyCalled = false;
6311        values.push(undefined);
6312        remaining++;
6313        C.resolve(promise).then(function (value) {
6314          if (alreadyCalled) return;
6315          alreadyCalled = true;
6316          values[$index] = value;
6317          --remaining || resolve(values);
6318        }, reject);
6319      });
6320      --remaining || resolve(values);
6321    });
6322    if (result.e) reject(result.v);
6323    return capability.promise;
6324  },
6325  // 25.4.4.4 Promise.race(iterable)
6326  race: function race(iterable) {
6327    var C = this;
6328    var capability = newPromiseCapability(C);
6329    var reject = capability.reject;
6330    var result = perform(function () {
6331      forOf(iterable, false, function (promise) {
6332        C.resolve(promise).then(capability.resolve, reject);
6333      });
6334    });
6335    if (result.e) reject(result.v);
6336    return capability.promise;
6337  }
6338});
6339
6340
6341/***/ }),
6342
vendor: 1,322 bytes, lines 6343-6369
6343/***/ "./node_modules/core-js/modules/es6.reflect.apply.js":
6344/*!***********************************************************!*\
6345  !*** ./node_modules/core-js/modules/es6.reflect.apply.js ***!
6346  \***********************************************************/
6347/*! no static exports found */
6348/***/ (function(module, exports, __webpack_require__) {
6349
6350// 26.1.1 Reflect.apply(target, thisArgument, argumentsList)
6351var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
6352var aFunction = __webpack_require__(/*! ./_a-function */ "./node_modules/core-js/modules/_a-function.js");
6353var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
6354var rApply = (__webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js").Reflect || {}).apply;
6355var fApply = Function.apply;
6356// MS Edge argumentsList argument is optional
6357$export($export.S + $export.F * !__webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js")(function () {
6358  rApply(function () { /* empty */ });
6359}), 'Reflect', {
6360  apply: function apply(target, thisArgument, argumentsList) {
6361    var T = aFunction(target);
6362    var L = anObject(argumentsList);
6363    return rApply ? rApply(T, thisArgument, L) : fApply.call(T, thisArgument, L);
6364  }
6365});
6366
6367
6368/***/ }),
6369
vendor: 2,867 bytes, lines 6370-6427
6370/***/ "./node_modules/core-js/modules/es6.reflect.construct.js":
6371/*!***************************************************************!*\
6372  !*** ./node_modules/core-js/modules/es6.reflect.construct.js ***!
6373  \***************************************************************/
6374/*! no static exports found */
6375/***/ (function(module, exports, __webpack_require__) {
6376
6377// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])
6378var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
6379var create = __webpack_require__(/*! ./_object-create */ "./node_modules/core-js/modules/_object-create.js");
6380var aFunction = __webpack_require__(/*! ./_a-function */ "./node_modules/core-js/modules/_a-function.js");
6381var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
6382var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
6383var fails = __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js");
6384var bind = __webpack_require__(/*! ./_bind */ "./node_modules/core-js/modules/_bind.js");
6385var rConstruct = (__webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js").Reflect || {}).construct;
6386
6387// MS Edge supports only 2 arguments and argumentsList argument is optional
6388// FF Nightly sets third argument as `new.target`, but does not create `this` from it
6389var NEW_TARGET_BUG = fails(function () {
6390  function F() { /* empty */ }
6391  return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);
6392});
6393var ARGS_BUG = !fails(function () {
6394  rConstruct(function () { /* empty */ });
6395});
6396
6397$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {
6398  construct: function construct(Target, args /* , newTarget */) {
6399    aFunction(Target);
6400    anObject(args);
6401    var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);
6402    if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);
6403    if (Target == newTarget) {
6404      // w/o altered newTarget, optimization for 0-4 arguments
6405      switch (args.length) {
6406        case 0: return new Target();
6407        case 1: return new Target(args[0]);
6408        case 2: return new Target(args[0], args[1]);
6409        case 3: return new Target(args[0], args[1], args[2]);
6410        case 4: return new Target(args[0], args[1], args[2], args[3]);
6411      }
6412      // w/o altered newTarget, lot of arguments case
6413      var $args = [null];
6414      $args.push.apply($args, args);
6415      return new (bind.apply(Target, $args))();
6416    }
6417    // with altered newTarget, not support built-in constructors
6418    var proto = newTarget.prototype;
6419    var instance = create(isObject(proto) ? proto : Object.prototype);
6420    var result = Function.apply.call(Target, instance, args);
6421    return isObject(result) ? result : instance;
6422  }
6423});
6424
6425
6426/***/ }),
6427
vendor: 1,511 bytes, lines 6428-6461
6428/***/ "./node_modules/core-js/modules/es6.reflect.define-property.js":
6429/*!*********************************************************************!*\
6430  !*** ./node_modules/core-js/modules/es6.reflect.define-property.js ***!
6431  \*********************************************************************/
6432/*! no static exports found */
6433/***/ (function(module, exports, __webpack_require__) {
6434
6435// 26.1.3 Reflect.defineProperty(target, propertyKey, attributes)
6436var dP = __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/modules/_object-dp.js");
6437var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
6438var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
6439var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "./node_modules/core-js/modules/_to-primitive.js");
6440
6441// MS Edge has broken Reflect.defineProperty - throwing instead of returning false
6442$export($export.S + $export.F * __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js")(function () {
6443  // eslint-disable-next-line no-undef
6444  Reflect.defineProperty(dP.f({}, 1, { value: 1 }), 1, { value: 2 });
6445}), 'Reflect', {
6446  defineProperty: function defineProperty(target, propertyKey, attributes) {
6447    anObject(target);
6448    propertyKey = toPrimitive(propertyKey, true);
6449    anObject(attributes);
6450    try {
6451      dP.f(target, propertyKey, attributes);
6452      return true;
6453    } catch (e) {
6454      return false;
6455    }
6456  }
6457});
6458
6459
6460/***/ }),
6461
vendor: 991 bytes, lines 6462-6483
6462/***/ "./node_modules/core-js/modules/es6.reflect.delete-property.js":
6463/*!*********************************************************************!*\
6464  !*** ./node_modules/core-js/modules/es6.reflect.delete-property.js ***!
6465  \*********************************************************************/
6466/*! no static exports found */
6467/***/ (function(module, exports, __webpack_require__) {
6468
6469// 26.1.4 Reflect.deleteProperty(target, propertyKey)
6470var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
6471var gOPD = __webpack_require__(/*! ./_object-gopd */ "./node_modules/core-js/modules/_object-gopd.js").f;
6472var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
6473
6474$export($export.S, 'Reflect', {
6475  deleteProperty: function deleteProperty(target, propertyKey) {
6476    var desc = gOPD(anObject(target), propertyKey);
6477    return desc && !desc.configurable ? false : delete target[propertyKey];
6478  }
6479});
6480
6481
6482/***/ }),
6483
vendor: 1,313 bytes, lines 6484-6521
6484/***/ "./node_modules/core-js/modules/es6.reflect.enumerate.js":
6485/*!***************************************************************!*\
6486  !*** ./node_modules/core-js/modules/es6.reflect.enumerate.js ***!
6487  \***************************************************************/
6488/*! no static exports found */
6489/***/ (function(module, exports, __webpack_require__) {
6490
6491"use strict";
6492
6493// 26.1.5 Reflect.enumerate(target)
6494var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
6495var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
6496var Enumerate = function (iterated) {
6497  this._t = anObject(iterated); // target
6498  this._i = 0;                  // next index
6499  var keys = this._k = [];      // keys
6500  var key;
6501  for (key in iterated) keys.push(key);
6502};
6503__webpack_require__(/*! ./_iter-create */ "./node_modules/core-js/modules/_iter-create.js")(Enumerate, 'Object', function () {
6504  var that = this;
6505  var keys = that._k;
6506  var key;
6507  do {
6508    if (that._i >= keys.length) return { value: undefined, done: true };
6509  } while (!((key = keys[that._i++]) in that._t));
6510  return { value: key, done: false };
6511});
6512
6513$export($export.S, 'Reflect', {
6514  enumerate: function enumerate(target) {
6515    return new Enumerate(target);
6516  }
6517});
6518
6519
6520/***/ }),
6521
vendor: 989 bytes, lines 6522-6542
6522/***/ "./node_modules/core-js/modules/es6.reflect.get-own-property-descriptor.js":
6523/*!*********************************************************************************!*\
6524  !*** ./node_modules/core-js/modules/es6.reflect.get-own-property-descriptor.js ***!
6525  \*********************************************************************************/
6526/*! no static exports found */
6527/***/ (function(module, exports, __webpack_require__) {
6528
6529// 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey)
6530var gOPD = __webpack_require__(/*! ./_object-gopd */ "./node_modules/core-js/modules/_object-gopd.js");
6531var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
6532var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
6533
6534$export($export.S, 'Reflect', {
6535  getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) {
6536    return gOPD.f(anObject(target), propertyKey);
6537  }
6538});
6539
6540
6541/***/ }),
6542
vendor: 880 bytes, lines 6543-6563
6543/***/ "./node_modules/core-js/modules/es6.reflect.get-prototype-of.js":
6544/*!**********************************************************************!*\
6545  !*** ./node_modules/core-js/modules/es6.reflect.get-prototype-of.js ***!
6546  \**********************************************************************/
6547/*! no static exports found */
6548/***/ (function(module, exports, __webpack_require__) {
6549
6550// 26.1.8 Reflect.getPrototypeOf(target)
6551var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
6552var getProto = __webpack_require__(/*! ./_object-gpo */ "./node_modules/core-js/modules/_object-gpo.js");
6553var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
6554
6555$export($export.S, 'Reflect', {
6556  getPrototypeOf: function getPrototypeOf(target) {
6557    return getProto(anObject(target));
6558  }
6559});
6560
6561
6562/***/ }),
6563
vendor: 1,516 bytes, lines 6564-6595
6564/***/ "./node_modules/core-js/modules/es6.reflect.get.js":
6565/*!*********************************************************!*\
6566  !*** ./node_modules/core-js/modules/es6.reflect.get.js ***!
6567  \*********************************************************/
6568/*! no static exports found */
6569/***/ (function(module, exports, __webpack_require__) {
6570
6571// 26.1.6 Reflect.get(target, propertyKey [, receiver])
6572var gOPD = __webpack_require__(/*! ./_object-gopd */ "./node_modules/core-js/modules/_object-gopd.js");
6573var getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ "./node_modules/core-js/modules/_object-gpo.js");
6574var has = __webpack_require__(/*! ./_has */ "./node_modules/core-js/modules/_has.js");
6575var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
6576var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
6577var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
6578
6579function get(target, propertyKey /* , receiver */) {
6580  var receiver = arguments.length < 3 ? target : arguments[2];
6581  var desc, proto;
6582  if (anObject(target) === receiver) return target[propertyKey];
6583  if (desc = gOPD.f(target, propertyKey)) return has(desc, 'value')
6584    ? desc.value
6585    : desc.get !== undefined
6586      ? desc.get.call(receiver)
6587      : undefined;
6588  if (isObject(proto = getPrototypeOf(target))) return get(proto, propertyKey, receiver);
6589}
6590
6591$export($export.S, 'Reflect', { get: get });
6592
6593
6594/***/ }),
6595
vendor: 606 bytes, lines 6596-6614
6596/***/ "./node_modules/core-js/modules/es6.reflect.has.js":
6597/*!*********************************************************!*\
6598  !*** ./node_modules/core-js/modules/es6.reflect.has.js ***!
6599  \*********************************************************/
6600/*! no static exports found */
6601/***/ (function(module, exports, __webpack_require__) {
6602
6603// 26.1.9 Reflect.has(target, propertyKey)
6604var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
6605
6606$export($export.S, 'Reflect', {
6607  has: function has(target, propertyKey) {
6608    return propertyKey in target;
6609  }
6610});
6611
6612
6613/***/ }),
6614
vendor: 838 bytes, lines 6615-6636
6615/***/ "./node_modules/core-js/modules/es6.reflect.is-extensible.js":
6616/*!*******************************************************************!*\
6617  !*** ./node_modules/core-js/modules/es6.reflect.is-extensible.js ***!
6618  \*******************************************************************/
6619/*! no static exports found */
6620/***/ (function(module, exports, __webpack_require__) {
6621
6622// 26.1.10 Reflect.isExtensible(target)
6623var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
6624var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
6625var $isExtensible = Object.isExtensible;
6626
6627$export($export.S, 'Reflect', {
6628  isExtensible: function isExtensible(target) {
6629    anObject(target);
6630    return $isExtensible ? $isExtensible(target) : true;
6631  }
6632});
6633
6634
6635/***/ }),
6636
vendor: 632 bytes, lines 6637-6651
6637/***/ "./node_modules/core-js/modules/es6.reflect.own-keys.js":
6638/*!**************************************************************!*\
6639  !*** ./node_modules/core-js/modules/es6.reflect.own-keys.js ***!
6640  \**************************************************************/
6641/*! no static exports found */
6642/***/ (function(module, exports, __webpack_require__) {
6643
6644// 26.1.11 Reflect.ownKeys(target)
6645var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
6646
6647$export($export.S, 'Reflect', { ownKeys: __webpack_require__(/*! ./_own-keys */ "./node_modules/core-js/modules/_own-keys.js") });
6648
6649
6650/***/ }),
6651
vendor: 957 bytes, lines 6652-6678
6652/***/ "./node_modules/core-js/modules/es6.reflect.prevent-extensions.js":
6653/*!************************************************************************!*\
6654  !*** ./node_modules/core-js/modules/es6.reflect.prevent-extensions.js ***!
6655  \************************************************************************/
6656/*! no static exports found */
6657/***/ (function(module, exports, __webpack_require__) {
6658
6659// 26.1.12 Reflect.preventExtensions(target)
6660var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
6661var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
6662var $preventExtensions = Object.preventExtensions;
6663
6664$export($export.S, 'Reflect', {
6665  preventExtensions: function preventExtensions(target) {
6666    anObject(target);
6667    try {
6668      if ($preventExtensions) $preventExtensions(target);
6669      return true;
6670    } catch (e) {
6671      return false;
6672    }
6673  }
6674});
6675
6676
6677/***/ }),
6678
vendor: 907 bytes, lines 6679-6704
6679/***/ "./node_modules/core-js/modules/es6.reflect.set-prototype-of.js":
6680/*!**********************************************************************!*\
6681  !*** ./node_modules/core-js/modules/es6.reflect.set-prototype-of.js ***!
6682  \**********************************************************************/
6683/*! no static exports found */
6684/***/ (function(module, exports, __webpack_require__) {
6685
6686// 26.1.14 Reflect.setPrototypeOf(target, proto)
6687var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
6688var setProto = __webpack_require__(/*! ./_set-proto */ "./node_modules/core-js/modules/_set-proto.js");
6689
6690if (setProto) $export($export.S, 'Reflect', {
6691  setPrototypeOf: function setPrototypeOf(target, proto) {
6692    setProto.check(target, proto);
6693    try {
6694      setProto.set(target, proto);
6695      return true;
6696    } catch (e) {
6697      return false;
6698    }
6699  }
6700});
6701
6702
6703/***/ }),
6704
vendor: 2,179 bytes, lines 6705-6748
6705/***/ "./node_modules/core-js/modules/es6.reflect.set.js":
6706/*!*********************************************************!*\
6707  !*** ./node_modules/core-js/modules/es6.reflect.set.js ***!
6708  \*********************************************************/
6709/*! no static exports found */
6710/***/ (function(module, exports, __webpack_require__) {
6711
6712// 26.1.13 Reflect.set(target, propertyKey, V [, receiver])
6713var dP = __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/modules/_object-dp.js");
6714var gOPD = __webpack_require__(/*! ./_object-gopd */ "./node_modules/core-js/modules/_object-gopd.js");
6715var getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ "./node_modules/core-js/modules/_object-gpo.js");
6716var has = __webpack_require__(/*! ./_has */ "./node_modules/core-js/modules/_has.js");
6717var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
6718var createDesc = __webpack_require__(/*! ./_property-desc */ "./node_modules/core-js/modules/_property-desc.js");
6719var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
6720var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
6721
6722function set(target, propertyKey, V /* , receiver */) {
6723  var receiver = arguments.length < 4 ? target : arguments[3];
6724  var ownDesc = gOPD.f(anObject(target), propertyKey);
6725  var existingDescriptor, proto;
6726  if (!ownDesc) {
6727    if (isObject(proto = getPrototypeOf(target))) {
6728      return set(proto, propertyKey, V, receiver);
6729    }
6730    ownDesc = createDesc(0);
6731  }
6732  if (has(ownDesc, 'value')) {
6733    if (ownDesc.writable === false || !isObject(receiver)) return false;
6734    if (existingDescriptor = gOPD.f(receiver, propertyKey)) {
6735      if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false;
6736      existingDescriptor.value = V;
6737      dP.f(receiver, propertyKey, existingDescriptor);
6738    } else dP.f(receiver, propertyKey, createDesc(0, V));
6739    return true;
6740  }
6741  return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true);
6742}
6743
6744$export($export.S, 'Reflect', { set: set });
6745
6746
6747/***/ }),
6748
vendor: 2,686 bytes, lines 6749-6802
6749/***/ "./node_modules/core-js/modules/es6.regexp.constructor.js":
6750/*!****************************************************************!*\
6751  !*** ./node_modules/core-js/modules/es6.regexp.constructor.js ***!
6752  \****************************************************************/
6753/*! no static exports found */
6754/***/ (function(module, exports, __webpack_require__) {
6755
6756var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
6757var inheritIfRequired = __webpack_require__(/*! ./_inherit-if-required */ "./node_modules/core-js/modules/_inherit-if-required.js");
6758var dP = __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/modules/_object-dp.js").f;
6759var gOPN = __webpack_require__(/*! ./_object-gopn */ "./node_modules/core-js/modules/_object-gopn.js").f;
6760var isRegExp = __webpack_require__(/*! ./_is-regexp */ "./node_modules/core-js/modules/_is-regexp.js");
6761var $flags = __webpack_require__(/*! ./_flags */ "./node_modules/core-js/modules/_flags.js");
6762var $RegExp = global.RegExp;
6763var Base = $RegExp;
6764var proto = $RegExp.prototype;
6765var re1 = /a/g;
6766var re2 = /a/g;
6767// "new" creates a new object, old webkit buggy here
6768var CORRECT_NEW = new $RegExp(re1) !== re1;
6769
6770if (__webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js") && (!CORRECT_NEW || __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js")(function () {
6771  re2[__webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('match')] = false;
6772  // RegExp constructor can alter flags and IsRegExp works correct with @@match
6773  return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i';
6774}))) {
6775  $RegExp = function RegExp(p, f) {
6776    var tiRE = this instanceof $RegExp;
6777    var piRE = isRegExp(p);
6778    var fiU = f === undefined;
6779    return !tiRE && piRE && p.constructor === $RegExp && fiU ? p
6780      : inheritIfRequired(CORRECT_NEW
6781        ? new Base(piRE && !fiU ? p.source : p, f)
6782        : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f)
6783      , tiRE ? this : proto, $RegExp);
6784  };
6785  var proxy = function (key) {
6786    key in $RegExp || dP($RegExp, key, {
6787      configurable: true,
6788      get: function () { return Base[key]; },
6789      set: function (it) { Base[key] = it; }
6790    });
6791  };
6792  for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]);
6793  proto.constructor = $RegExp;
6794  $RegExp.prototype = proto;
6795  __webpack_require__(/*! ./_redefine */ "./node_modules/core-js/modules/_redefine.js")(global, 'RegExp', $RegExp);
6796}
6797
6798__webpack_require__(/*! ./_set-species */ "./node_modules/core-js/modules/_set-species.js")('RegExp');
6799
6800
6801/***/ }),
6802
vendor: 743 bytes, lines 6803-6818
6803/***/ "./node_modules/core-js/modules/es6.regexp.flags.js":
6804/*!**********************************************************!*\
6805  !*** ./node_modules/core-js/modules/es6.regexp.flags.js ***!
6806  \**********************************************************/
6807/*! no static exports found */
6808/***/ (function(module, exports, __webpack_require__) {
6809
6810// 21.2.5.3 get RegExp.prototype.flags()
6811if (__webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js") && /./g.flags != 'g') __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/modules/_object-dp.js").f(RegExp.prototype, 'flags', {
6812  configurable: true,
6813  get: __webpack_require__(/*! ./_flags */ "./node_modules/core-js/modules/_flags.js")
6814});
6815
6816
6817/***/ }),
6818
vendor: 802 bytes, lines 6819-6839
6819/***/ "./node_modules/core-js/modules/es6.regexp.match.js":
6820/*!**********************************************************!*\
6821  !*** ./node_modules/core-js/modules/es6.regexp.match.js ***!
6822  \**********************************************************/
6823/*! no static exports found */
6824/***/ (function(module, exports, __webpack_require__) {
6825
6826// @@match logic
6827__webpack_require__(/*! ./_fix-re-wks */ "./node_modules/core-js/modules/_fix-re-wks.js")('match', 1, function (defined, MATCH, $match) {
6828  // 21.1.3.11 String.prototype.match(regexp)
6829  return [function match(regexp) {
6830    'use strict';
6831    var O = defined(this);
6832    var fn = regexp == undefined ? undefined : regexp[MATCH];
6833    return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));
6834  }, $match];
6835});
6836
6837
6838/***/ }),
6839
vendor: 920 bytes, lines 6840-6862
6840/***/ "./node_modules/core-js/modules/es6.regexp.replace.js":
6841/*!************************************************************!*\
6842  !*** ./node_modules/core-js/modules/es6.regexp.replace.js ***!
6843  \************************************************************/
6844/*! no static exports found */
6845/***/ (function(module, exports, __webpack_require__) {
6846
6847// @@replace logic
6848__webpack_require__(/*! ./_fix-re-wks */ "./node_modules/core-js/modules/_fix-re-wks.js")('replace', 2, function (defined, REPLACE, $replace) {
6849  // 21.1.3.14 String.prototype.replace(searchValue, replaceValue)
6850  return [function replace(searchValue, replaceValue) {
6851    'use strict';
6852    var O = defined(this);
6853    var fn = searchValue == undefined ? undefined : searchValue[REPLACE];
6854    return fn !== undefined
6855      ? fn.call(searchValue, O, replaceValue)
6856      : $replace.call(String(O), searchValue, replaceValue);
6857  }, $replace];
6858});
6859
6860
6861/***/ }),
6862
vendor: 815 bytes, lines 6863-6883
6863/***/ "./node_modules/core-js/modules/es6.regexp.search.js":
6864/*!***********************************************************!*\
6865  !*** ./node_modules/core-js/modules/es6.regexp.search.js ***!
6866  \***********************************************************/
6867/*! no static exports found */
6868/***/ (function(module, exports, __webpack_require__) {
6869
6870// @@search logic
6871__webpack_require__(/*! ./_fix-re-wks */ "./node_modules/core-js/modules/_fix-re-wks.js")('search', 1, function (defined, SEARCH, $search) {
6872  // 21.1.3.15 String.prototype.search(regexp)
6873  return [function search(regexp) {
6874    'use strict';
6875    var O = defined(this);
6876    var fn = regexp == undefined ? undefined : regexp[SEARCH];
6877    return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));
6878  }, $search];
6879});
6880
6881
6882/***/ }),
6883
vendor: 3,878 bytes, lines 6884-6965
6884/***/ "./node_modules/core-js/modules/es6.regexp.split.js":
6885/*!**********************************************************!*\
6886  !*** ./node_modules/core-js/modules/es6.regexp.split.js ***!
6887  \**********************************************************/
6888/*! no static exports found */
6889/***/ (function(module, exports, __webpack_require__) {
6890
6891// @@split logic
6892__webpack_require__(/*! ./_fix-re-wks */ "./node_modules/core-js/modules/_fix-re-wks.js")('split', 2, function (defined, SPLIT, $split) {
6893  'use strict';
6894  var isRegExp = __webpack_require__(/*! ./_is-regexp */ "./node_modules/core-js/modules/_is-regexp.js");
6895  var _split = $split;
6896  var $push = [].push;
6897  var $SPLIT = 'split';
6898  var LENGTH = 'length';
6899  var LAST_INDEX = 'lastIndex';
6900  if (
6901    'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||
6902    'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||
6903    'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||
6904    '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||
6905    '.'[$SPLIT](/()()/)[LENGTH] > 1 ||
6906    ''[$SPLIT](/.?/)[LENGTH]
6907  ) {
6908    var NPCG = /()??/.exec('')[1] === undefined; // nonparticipating capturing group
6909    // based on es5-shim implementation, need to rework it
6910    $split = function (separator, limit) {
6911      var string = String(this);
6912      if (separator === undefined && limit === 0) return [];
6913      // If `separator` is not a regex, use native split
6914      if (!isRegExp(separator)) return _split.call(string, separator, limit);
6915      var output = [];
6916      var flags = (separator.ignoreCase ? 'i' : '') +
6917                  (separator.multiline ? 'm' : '') +
6918                  (separator.unicode ? 'u' : '') +
6919                  (separator.sticky ? 'y' : '');
6920      var lastLastIndex = 0;
6921      var splitLimit = limit === undefined ? 4294967295 : limit >>> 0;
6922      // Make `global` and avoid `lastIndex` issues by working with a copy
6923      var separatorCopy = new RegExp(separator.source, flags + 'g');
6924      var separator2, match, lastIndex, lastLength, i;
6925      // Doesn't need flags gy, but they don't hurt
6926      if (!NPCG) separator2 = new RegExp('^' + separatorCopy.source + '$(?!\\s)', flags);
6927      while (match = separatorCopy.exec(string)) {
6928        // `separatorCopy.lastIndex` is not reliable cross-browser
6929        lastIndex = match.index + match[0][LENGTH];
6930        if (lastIndex > lastLastIndex) {
6931          output.push(string.slice(lastLastIndex, match.index));
6932          // Fix browsers whose `exec` methods don't consistently return `undefined` for NPCG
6933          // eslint-disable-next-line no-loop-func
6934          if (!NPCG && match[LENGTH] > 1) match[0].replace(separator2, function () {
6935            for (i = 1; i < arguments[LENGTH] - 2; i++) if (arguments[i] === undefined) match[i] = undefined;
6936          });
6937          if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));
6938          lastLength = match[0][LENGTH];
6939          lastLastIndex = lastIndex;
6940          if (output[LENGTH] >= splitLimit) break;
6941        }
6942        if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop
6943      }
6944      if (lastLastIndex === string[LENGTH]) {
6945        if (lastLength || !separatorCopy.test('')) output.push('');
6946      } else output.push(string.slice(lastLastIndex));
6947      return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;
6948    };
6949  // Chakra, V8
6950  } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {
6951    $split = function (separator, limit) {
6952      return separator === undefined && limit === 0 ? [] : _split.call(this, separator, limit);
6953    };
6954  }
6955  // 21.1.3.17 String.prototype.split(separator, limit)
6956  return [function split(separator, limit) {
6957    var O = defined(this);
6958    var fn = separator == undefined ? undefined : separator[SPLIT];
6959    return fn !== undefined ? fn.call(separator, O, limit) : $split.call(String(O), separator, limit);
6960  }, $split];
6961});
6962
6963
6964/***/ }),
6965
vendor: 1,578 bytes, lines 6966-7002
6966/***/ "./node_modules/core-js/modules/es6.regexp.to-string.js":
6967/*!**************************************************************!*\
6968  !*** ./node_modules/core-js/modules/es6.regexp.to-string.js ***!
6969  \**************************************************************/
6970/*! no static exports found */
6971/***/ (function(module, exports, __webpack_require__) {
6972
6973"use strict";
6974
6975__webpack_require__(/*! ./es6.regexp.flags */ "./node_modules/core-js/modules/es6.regexp.flags.js");
6976var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
6977var $flags = __webpack_require__(/*! ./_flags */ "./node_modules/core-js/modules/_flags.js");
6978var DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js");
6979var TO_STRING = 'toString';
6980var $toString = /./[TO_STRING];
6981
6982var define = function (fn) {
6983  __webpack_require__(/*! ./_redefine */ "./node_modules/core-js/modules/_redefine.js")(RegExp.prototype, TO_STRING, fn, true);
6984};
6985
6986// 21.2.5.14 RegExp.prototype.toString()
6987if (__webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js")(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) {
6988  define(function toString() {
6989    var R = anObject(this);
6990    return '/'.concat(R.source, '/',
6991      'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);
6992  });
6993// FF44- RegExp#toString has a wrong name
6994} else if ($toString.name != TO_STRING) {
6995  define(function toString() {
6996    return $toString.call(this);
6997  });
6998}
6999
7000
7001/***/ }),
7002
vendor: 1,009 bytes, lines 7003-7028
7003/***/ "./node_modules/core-js/modules/es6.set.js":
7004/*!*************************************************!*\
7005  !*** ./node_modules/core-js/modules/es6.set.js ***!
7006  \*************************************************/
7007/*! no static exports found */
7008/***/ (function(module, exports, __webpack_require__) {
7009
7010"use strict";
7011
7012var strong = __webpack_require__(/*! ./_collection-strong */ "./node_modules/core-js/modules/_collection-strong.js");
7013var validate = __webpack_require__(/*! ./_validate-collection */ "./node_modules/core-js/modules/_validate-collection.js");
7014var SET = 'Set';
7015
7016// 23.2 Set Objects
7017module.exports = __webpack_require__(/*! ./_collection */ "./node_modules/core-js/modules/_collection.js")(SET, function (get) {
7018  return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };
7019}, {
7020  // 23.2.3.1 Set.prototype.add(value)
7021  add: function add(value) {
7022    return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);
7023  }
7024}, strong);
7025
7026
7027/***/ }),
7028
vendor: 628 bytes, lines 7029-7047
7029/***/ "./node_modules/core-js/modules/es6.string.anchor.js":
7030/*!***********************************************************!*\
7031  !*** ./node_modules/core-js/modules/es6.string.anchor.js ***!
7032  \***********************************************************/
7033/*! no static exports found */
7034/***/ (function(module, exports, __webpack_require__) {
7035
7036"use strict";
7037
7038// B.2.3.2 String.prototype.anchor(name)
7039__webpack_require__(/*! ./_string-html */ "./node_modules/core-js/modules/_string-html.js")('anchor', function (createHTML) {
7040  return function anchor(name) {
7041    return createHTML(this, 'a', 'name', name);
7042  };
7043});
7044
7045
7046/***/ }),
7047
vendor: 595 bytes, lines 7048-7066
7048/***/ "./node_modules/core-js/modules/es6.string.big.js":
7049/*!********************************************************!*\
7050  !*** ./node_modules/core-js/modules/es6.string.big.js ***!
7051  \********************************************************/
7052/*! no static exports found */
7053/***/ (function(module, exports, __webpack_require__) {
7054
7055"use strict";
7056
7057// B.2.3.3 String.prototype.big()
7058__webpack_require__(/*! ./_string-html */ "./node_modules/core-js/modules/_string-html.js")('big', function (createHTML) {
7059  return function big() {
7060    return createHTML(this, 'big', '', '');
7061  };
7062});
7063
7064
7065/***/ }),
7066
vendor: 611 bytes, lines 7067-7085
7067/***/ "./node_modules/core-js/modules/es6.string.blink.js":
7068/*!**********************************************************!*\
7069  !*** ./node_modules/core-js/modules/es6.string.blink.js ***!
7070  \**********************************************************/
7071/*! no static exports found */
7072/***/ (function(module, exports, __webpack_require__) {
7073
7074"use strict";
7075
7076// B.2.3.4 String.prototype.blink()
7077__webpack_require__(/*! ./_string-html */ "./node_modules/core-js/modules/_string-html.js")('blink', function (createHTML) {
7078  return function blink() {
7079    return createHTML(this, 'blink', '', '');
7080  };
7081});
7082
7083
7084/***/ }),
7085
vendor: 600 bytes, lines 7086-7104
7086/***/ "./node_modules/core-js/modules/es6.string.bold.js":
7087/*!*********************************************************!*\
7088  !*** ./node_modules/core-js/modules/es6.string.bold.js ***!
7089  \*********************************************************/
7090/*! no static exports found */
7091/***/ (function(module, exports, __webpack_require__) {
7092
7093"use strict";
7094
7095// B.2.3.5 String.prototype.bold()
7096__webpack_require__(/*! ./_string-html */ "./node_modules/core-js/modules/_string-html.js")('bold', function (createHTML) {
7097  return function bold() {
7098    return createHTML(this, 'b', '', '');
7099  };
7100});
7101
7102
7103/***/ }),
7104
vendor: 759 bytes, lines 7105-7125
7105/***/ "./node_modules/core-js/modules/es6.string.code-point-at.js":
7106/*!******************************************************************!*\
7107  !*** ./node_modules/core-js/modules/es6.string.code-point-at.js ***!
7108  \******************************************************************/
7109/*! no static exports found */
7110/***/ (function(module, exports, __webpack_require__) {
7111
7112"use strict";
7113
7114var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
7115var $at = __webpack_require__(/*! ./_string-at */ "./node_modules/core-js/modules/_string-at.js")(false);
7116$export($export.P, 'String', {
7117  // 21.1.3.3 String.prototype.codePointAt(pos)
7118  codePointAt: function codePointAt(pos) {
7119    return $at(this, pos);
7120  }
7121});
7122
7123
7124/***/ }),
7125
vendor: 1,473 bytes, lines 7126-7157
7126/***/ "./node_modules/core-js/modules/es6.string.ends-with.js":
7127/*!**************************************************************!*\
7128  !*** ./node_modules/core-js/modules/es6.string.ends-with.js ***!
7129  \**************************************************************/
7130/*! no static exports found */
7131/***/ (function(module, exports, __webpack_require__) {
7132
7133"use strict";
7134// 21.1.3.6 String.prototype.endsWith(searchString [, endPosition])
7135
7136var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
7137var toLength = __webpack_require__(/*! ./_to-length */ "./node_modules/core-js/modules/_to-length.js");
7138var context = __webpack_require__(/*! ./_string-context */ "./node_modules/core-js/modules/_string-context.js");
7139var ENDS_WITH = 'endsWith';
7140var $endsWith = ''[ENDS_WITH];
7141
7142$export($export.P + $export.F * __webpack_require__(/*! ./_fails-is-regexp */ "./node_modules/core-js/modules/_fails-is-regexp.js")(ENDS_WITH), 'String', {
7143  endsWith: function endsWith(searchString /* , endPosition = @length */) {
7144    var that = context(this, searchString, ENDS_WITH);
7145    var endPosition = arguments.length > 1 ? arguments[1] : undefined;
7146    var len = toLength(that.length);
7147    var end = endPosition === undefined ? len : Math.min(toLength(endPosition), len);
7148    var search = String(searchString);
7149    return $endsWith
7150      ? $endsWith.call(that, search, end)
7151      : that.slice(end - search.length, end) === search;
7152  }
7153});
7154
7155
7156/***/ }),
7157
vendor: 608 bytes, lines 7158-7176
7158/***/ "./node_modules/core-js/modules/es6.string.fixed.js":
7159/*!**********************************************************!*\
7160  !*** ./node_modules/core-js/modules/es6.string.fixed.js ***!
7161  \**********************************************************/
7162/*! no static exports found */
7163/***/ (function(module, exports, __webpack_require__) {
7164
7165"use strict";
7166
7167// B.2.3.6 String.prototype.fixed()
7168__webpack_require__(/*! ./_string-html */ "./node_modules/core-js/modules/_string-html.js")('fixed', function (createHTML) {
7169  return function fixed() {
7170    return createHTML(this, 'tt', '', '');
7171  };
7172});
7173
7174
7175/***/ }),
7176
vendor: 656 bytes, lines 7177-7195
7177/***/ "./node_modules/core-js/modules/es6.string.fontcolor.js":
7178/*!**************************************************************!*\
7179  !*** ./node_modules/core-js/modules/es6.string.fontcolor.js ***!
7180  \**************************************************************/
7181/*! no static exports found */
7182/***/ (function(module, exports, __webpack_require__) {
7183
7184"use strict";
7185
7186// B.2.3.7 String.prototype.fontcolor(color)
7187__webpack_require__(/*! ./_string-html */ "./node_modules/core-js/modules/_string-html.js")('fontcolor', function (createHTML) {
7188  return function fontcolor(color) {
7189    return createHTML(this, 'font', 'color', color);
7190  };
7191});
7192
7193
7194/***/ }),
7195
vendor: 645 bytes, lines 7196-7214
7196/***/ "./node_modules/core-js/modules/es6.string.fontsize.js":
7197/*!*************************************************************!*\
7198  !*** ./node_modules/core-js/modules/es6.string.fontsize.js ***!
7199  \*************************************************************/
7200/*! no static exports found */
7201/***/ (function(module, exports, __webpack_require__) {
7202
7203"use strict";
7204
7205// B.2.3.8 String.prototype.fontsize(size)
7206__webpack_require__(/*! ./_string-html */ "./node_modules/core-js/modules/_string-html.js")('fontsize', function (createHTML) {
7207  return function fontsize(size) {
7208    return createHTML(this, 'font', 'size', size);
7209  };
7210});
7211
7212
7213/***/ }),
7214
vendor: 1,390 bytes, lines 7215-7248
7215/***/ "./node_modules/core-js/modules/es6.string.from-code-point.js":
7216/*!********************************************************************!*\
7217  !*** ./node_modules/core-js/modules/es6.string.from-code-point.js ***!
7218  \********************************************************************/
7219/*! no static exports found */
7220/***/ (function(module, exports, __webpack_require__) {
7221
7222var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
7223var toAbsoluteIndex = __webpack_require__(/*! ./_to-absolute-index */ "./node_modules/core-js/modules/_to-absolute-index.js");
7224var fromCharCode = String.fromCharCode;
7225var $fromCodePoint = String.fromCodePoint;
7226
7227// length should be 1, old FF problem
7228$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {
7229  // 21.1.2.2 String.fromCodePoint(...codePoints)
7230  fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars
7231    var res = [];
7232    var aLen = arguments.length;
7233    var i = 0;
7234    var code;
7235    while (aLen > i) {
7236      code = +arguments[i++];
7237      if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');
7238      res.push(code < 0x10000
7239        ? fromCharCode(code)
7240        : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)
7241      );
7242    } return res.join('');
7243  }
7244});
7245
7246
7247/***/ }),
7248
vendor: 1,044 bytes, lines 7249-7272
7249/***/ "./node_modules/core-js/modules/es6.string.includes.js":
7250/*!*************************************************************!*\
7251  !*** ./node_modules/core-js/modules/es6.string.includes.js ***!
7252  \*************************************************************/
7253/*! no static exports found */
7254/***/ (function(module, exports, __webpack_require__) {
7255
7256"use strict";
7257// 21.1.3.7 String.prototype.includes(searchString, position = 0)
7258
7259var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
7260var context = __webpack_require__(/*! ./_string-context */ "./node_modules/core-js/modules/_string-context.js");
7261var INCLUDES = 'includes';
7262
7263$export($export.P + $export.F * __webpack_require__(/*! ./_fails-is-regexp */ "./node_modules/core-js/modules/_fails-is-regexp.js")(INCLUDES), 'String', {
7264  includes: function includes(searchString /* , position = 0 */) {
7265    return !!~context(this, searchString, INCLUDES)
7266      .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);
7267  }
7268});
7269
7270
7271/***/ }),
7272
vendor: 621 bytes, lines 7273-7291
7273/***/ "./node_modules/core-js/modules/es6.string.italics.js":
7274/*!************************************************************!*\
7275  !*** ./node_modules/core-js/modules/es6.string.italics.js ***!
7276  \************************************************************/
7277/*! no static exports found */
7278/***/ (function(module, exports, __webpack_require__) {
7279
7280"use strict";
7281
7282// B.2.3.9 String.prototype.italics()
7283__webpack_require__(/*! ./_string-html */ "./node_modules/core-js/modules/_string-html.js")('italics', function (createHTML) {
7284  return function italics() {
7285    return createHTML(this, 'i', '', '');
7286  };
7287});
7288
7289
7290/***/ }),
7291
vendor: 1,026 bytes, lines 7292-7320
7292/***/ "./node_modules/core-js/modules/es6.string.iterator.js":
7293/*!*************************************************************!*\
7294  !*** ./node_modules/core-js/modules/es6.string.iterator.js ***!
7295  \*************************************************************/
7296/*! no static exports found */
7297/***/ (function(module, exports, __webpack_require__) {
7298
7299"use strict";
7300
7301var $at = __webpack_require__(/*! ./_string-at */ "./node_modules/core-js/modules/_string-at.js")(true);
7302
7303// 21.1.3.27 String.prototype[@@iterator]()
7304__webpack_require__(/*! ./_iter-define */ "./node_modules/core-js/modules/_iter-define.js")(String, 'String', function (iterated) {
7305  this._t = String(iterated); // target
7306  this._i = 0;                // next index
7307// 21.1.5.2.1 %StringIteratorPrototype%.next()
7308}, function () {
7309  var O = this._t;
7310  var index = this._i;
7311  var point;
7312  if (index >= O.length) return { value: undefined, done: true };
7313  point = $at(O, index);
7314  this._i += point.length;
7315  return { value: point, done: false };
7316});
7317
7318
7319/***/ }),
7320
vendor: 612 bytes, lines 7321-7339
7321/***/ "./node_modules/core-js/modules/es6.string.link.js":
7322/*!*********************************************************!*\
7323  !*** ./node_modules/core-js/modules/es6.string.link.js ***!
7324  \*********************************************************/
7325/*! no static exports found */
7326/***/ (function(module, exports, __webpack_require__) {
7327
7328"use strict";
7329
7330// B.2.3.10 String.prototype.link(url)
7331__webpack_require__(/*! ./_string-html */ "./node_modules/core-js/modules/_string-html.js")('link', function (createHTML) {
7332  return function link(url) {
7333    return createHTML(this, 'a', 'href', url);
7334  };
7335});
7336
7337
7338/***/ }),
7339
vendor: 1,053 bytes, lines 7340-7368
7340/***/ "./node_modules/core-js/modules/es6.string.raw.js":
7341/*!********************************************************!*\
7342  !*** ./node_modules/core-js/modules/es6.string.raw.js ***!
7343  \********************************************************/
7344/*! no static exports found */
7345/***/ (function(module, exports, __webpack_require__) {
7346
7347var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
7348var toIObject = __webpack_require__(/*! ./_to-iobject */ "./node_modules/core-js/modules/_to-iobject.js");
7349var toLength = __webpack_require__(/*! ./_to-length */ "./node_modules/core-js/modules/_to-length.js");
7350
7351$export($export.S, 'String', {
7352  // 21.1.2.4 String.raw(callSite, ...substitutions)
7353  raw: function raw(callSite) {
7354    var tpl = toIObject(callSite.raw);
7355    var len = toLength(tpl.length);
7356    var aLen = arguments.length;
7357    var res = [];
7358    var i = 0;
7359    while (len > i) {
7360      res.push(String(tpl[i++]));
7361      if (i < aLen) res.push(String(arguments[i]));
7362    } return res.join('');
7363  }
7364});
7365
7366
7367/***/ }),
7368
vendor: 641 bytes, lines 7369-7385
7369/***/ "./node_modules/core-js/modules/es6.string.repeat.js":
7370/*!***********************************************************!*\
7371  !*** ./node_modules/core-js/modules/es6.string.repeat.js ***!
7372  \***********************************************************/
7373/*! no static exports found */
7374/***/ (function(module, exports, __webpack_require__) {
7375
7376var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
7377
7378$export($export.P, 'String', {
7379  // 21.1.3.13 String.prototype.repeat(count)
7380  repeat: __webpack_require__(/*! ./_string-repeat */ "./node_modules/core-js/modules/_string-repeat.js")
7381});
7382
7383
7384/***/ }),
7385
vendor: 612 bytes, lines 7386-7404
7386/***/ "./node_modules/core-js/modules/es6.string.small.js":
7387/*!**********************************************************!*\
7388  !*** ./node_modules/core-js/modules/es6.string.small.js ***!
7389  \**********************************************************/
7390/*! no static exports found */
7391/***/ (function(module, exports, __webpack_require__) {
7392
7393"use strict";
7394
7395// B.2.3.11 String.prototype.small()
7396__webpack_require__(/*! ./_string-html */ "./node_modules/core-js/modules/_string-html.js")('small', function (createHTML) {
7397  return function small() {
7398    return createHTML(this, 'small', '', '');
7399  };
7400});
7401
7402
7403/***/ }),
7404
vendor: 1,403 bytes, lines 7405-7434
7405/***/ "./node_modules/core-js/modules/es6.string.starts-with.js":
7406/*!****************************************************************!*\
7407  !*** ./node_modules/core-js/modules/es6.string.starts-with.js ***!
7408  \****************************************************************/
7409/*! no static exports found */
7410/***/ (function(module, exports, __webpack_require__) {
7411
7412"use strict";
7413// 21.1.3.18 String.prototype.startsWith(searchString [, position ])
7414
7415var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
7416var toLength = __webpack_require__(/*! ./_to-length */ "./node_modules/core-js/modules/_to-length.js");
7417var context = __webpack_require__(/*! ./_string-context */ "./node_modules/core-js/modules/_string-context.js");
7418var STARTS_WITH = 'startsWith';
7419var $startsWith = ''[STARTS_WITH];
7420
7421$export($export.P + $export.F * __webpack_require__(/*! ./_fails-is-regexp */ "./node_modules/core-js/modules/_fails-is-regexp.js")(STARTS_WITH), 'String', {
7422  startsWith: function startsWith(searchString /* , position = 0 */) {
7423    var that = context(this, searchString, STARTS_WITH);
7424    var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));
7425    var search = String(searchString);
7426    return $startsWith
7427      ? $startsWith.call(that, search, index)
7428      : that.slice(index, index + search.length) === search;
7429  }
7430});
7431
7432
7433/***/ }),
7434
vendor: 620 bytes, lines 7435-7453
7435/***/ "./node_modules/core-js/modules/es6.string.strike.js":
7436/*!***********************************************************!*\
7437  !*** ./node_modules/core-js/modules/es6.string.strike.js ***!
7438  \***********************************************************/
7439/*! no static exports found */
7440/***/ (function(module, exports, __webpack_require__) {
7441
7442"use strict";
7443
7444// B.2.3.12 String.prototype.strike()
7445__webpack_require__(/*! ./_string-html */ "./node_modules/core-js/modules/_string-html.js")('strike', function (createHTML) {
7446  return function strike() {
7447    return createHTML(this, 'strike', '', '');
7448  };
7449});
7450
7451
7452/***/ }),
7453
vendor: 596 bytes, lines 7454-7472
7454/***/ "./node_modules/core-js/modules/es6.string.sub.js":
7455/*!********************************************************!*\
7456  !*** ./node_modules/core-js/modules/es6.string.sub.js ***!
7457  \********************************************************/
7458/*! no static exports found */
7459/***/ (function(module, exports, __webpack_require__) {
7460
7461"use strict";
7462
7463// B.2.3.13 String.prototype.sub()
7464__webpack_require__(/*! ./_string-html */ "./node_modules/core-js/modules/_string-html.js")('sub', function (createHTML) {
7465  return function sub() {
7466    return createHTML(this, 'sub', '', '');
7467  };
7468});
7469
7470
7471/***/ }),
7472
vendor: 596 bytes, lines 7473-7491
7473/***/ "./node_modules/core-js/modules/es6.string.sup.js":
7474/*!********************************************************!*\
7475  !*** ./node_modules/core-js/modules/es6.string.sup.js ***!
7476  \********************************************************/
7477/*! no static exports found */
7478/***/ (function(module, exports, __webpack_require__) {
7479
7480"use strict";
7481
7482// B.2.3.14 String.prototype.sup()
7483__webpack_require__(/*! ./_string-html */ "./node_modules/core-js/modules/_string-html.js")('sup', function (createHTML) {
7484  return function sup() {
7485    return createHTML(this, 'sup', '', '');
7486  };
7487});
7488
7489
7490/***/ }),
7491
vendor: 582 bytes, lines 7492-7510
7492/***/ "./node_modules/core-js/modules/es6.string.trim.js":
7493/*!*********************************************************!*\
7494  !*** ./node_modules/core-js/modules/es6.string.trim.js ***!
7495  \*********************************************************/
7496/*! no static exports found */
7497/***/ (function(module, exports, __webpack_require__) {
7498
7499"use strict";
7500
7501// 21.1.3.25 String.prototype.trim()
7502__webpack_require__(/*! ./_string-trim */ "./node_modules/core-js/modules/_string-trim.js")('trim', function ($trim) {
7503  return function trim() {
7504    return $trim(this, 3);
7505  };
7506});
7507
7508
7509/***/ }),
7510
vendor: 11,091 bytes, lines 7511-7756
7511/***/ "./node_modules/core-js/modules/es6.symbol.js":
7512/*!****************************************************!*\
7513  !*** ./node_modules/core-js/modules/es6.symbol.js ***!
7514  \****************************************************/
7515/*! no static exports found */
7516/***/ (function(module, exports, __webpack_require__) {
7517
7518"use strict";
7519
7520// ECMAScript 6 symbols shim
7521var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
7522var has = __webpack_require__(/*! ./_has */ "./node_modules/core-js/modules/_has.js");
7523var DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js");
7524var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
7525var redefine = __webpack_require__(/*! ./_redefine */ "./node_modules/core-js/modules/_redefine.js");
7526var META = __webpack_require__(/*! ./_meta */ "./node_modules/core-js/modules/_meta.js").KEY;
7527var $fails = __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js");
7528var shared = __webpack_require__(/*! ./_shared */ "./node_modules/core-js/modules/_shared.js");
7529var setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ "./node_modules/core-js/modules/_set-to-string-tag.js");
7530var uid = __webpack_require__(/*! ./_uid */ "./node_modules/core-js/modules/_uid.js");
7531var wks = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js");
7532var wksExt = __webpack_require__(/*! ./_wks-ext */ "./node_modules/core-js/modules/_wks-ext.js");
7533var wksDefine = __webpack_require__(/*! ./_wks-define */ "./node_modules/core-js/modules/_wks-define.js");
7534var enumKeys = __webpack_require__(/*! ./_enum-keys */ "./node_modules/core-js/modules/_enum-keys.js");
7535var isArray = __webpack_require__(/*! ./_is-array */ "./node_modules/core-js/modules/_is-array.js");
7536var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
7537var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
7538var toIObject = __webpack_require__(/*! ./_to-iobject */ "./node_modules/core-js/modules/_to-iobject.js");
7539var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "./node_modules/core-js/modules/_to-primitive.js");
7540var createDesc = __webpack_require__(/*! ./_property-desc */ "./node_modules/core-js/modules/_property-desc.js");
7541var _create = __webpack_require__(/*! ./_object-create */ "./node_modules/core-js/modules/_object-create.js");
7542var gOPNExt = __webpack_require__(/*! ./_object-gopn-ext */ "./node_modules/core-js/modules/_object-gopn-ext.js");
7543var $GOPD = __webpack_require__(/*! ./_object-gopd */ "./node_modules/core-js/modules/_object-gopd.js");
7544var $DP = __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/modules/_object-dp.js");
7545var $keys = __webpack_require__(/*! ./_object-keys */ "./node_modules/core-js/modules/_object-keys.js");
7546var gOPD = $GOPD.f;
7547var dP = $DP.f;
7548var gOPN = gOPNExt.f;
7549var $Symbol = global.Symbol;
7550var $JSON = global.JSON;
7551var _stringify = $JSON && $JSON.stringify;
7552var PROTOTYPE = 'prototype';
7553var HIDDEN = wks('_hidden');
7554var TO_PRIMITIVE = wks('toPrimitive');
7555var isEnum = {}.propertyIsEnumerable;
7556var SymbolRegistry = shared('symbol-registry');
7557var AllSymbols = shared('symbols');
7558var OPSymbols = shared('op-symbols');
7559var ObjectProto = Object[PROTOTYPE];
7560var USE_NATIVE = typeof $Symbol == 'function';
7561var QObject = global.QObject;
7562// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173
7563var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;
7564
7565// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
7566var setSymbolDesc = DESCRIPTORS && $fails(function () {
7567  return _create(dP({}, 'a', {
7568    get: function () { return dP(this, 'a', { value: 7 }).a; }
7569  })).a != 7;
7570}) ? function (it, key, D) {
7571  var protoDesc = gOPD(ObjectProto, key);
7572  if (protoDesc) delete ObjectProto[key];
7573  dP(it, key, D);
7574  if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);
7575} : dP;
7576
7577var wrap = function (tag) {
7578  var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);
7579  sym._k = tag;
7580  return sym;
7581};
7582
7583var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {
7584  return typeof it == 'symbol';
7585} : function (it) {
7586  return it instanceof $Symbol;
7587};
7588
7589var $defineProperty = function defineProperty(it, key, D) {
7590  if (it === ObjectProto) $defineProperty(OPSymbols, key, D);
7591  anObject(it);
7592  key = toPrimitive(key, true);
7593  anObject(D);
7594  if (has(AllSymbols, key)) {
7595    if (!D.enumerable) {
7596      if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));
7597      it[HIDDEN][key] = true;
7598    } else {
7599      if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;
7600      D = _create(D, { enumerable: createDesc(0, false) });
7601    } return setSymbolDesc(it, key, D);
7602  } return dP(it, key, D);
7603};
7604var $defineProperties = function defineProperties(it, P) {
7605  anObject(it);
7606  var keys = enumKeys(P = toIObject(P));
7607  var i = 0;
7608  var l = keys.length;
7609  var key;
7610  while (l > i) $defineProperty(it, key = keys[i++], P[key]);
7611  return it;
7612};
7613var $create = function create(it, P) {
7614  return P === undefined ? _create(it) : $defineProperties(_create(it), P);
7615};
7616var $propertyIsEnumerable = function propertyIsEnumerable(key) {
7617  var E = isEnum.call(this, key = toPrimitive(key, true));
7618  if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;
7619  return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;
7620};
7621var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {
7622  it = toIObject(it);
7623  key = toPrimitive(key, true);
7624  if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;
7625  var D = gOPD(it, key);
7626  if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;
7627  return D;
7628};
7629var $getOwnPropertyNames = function getOwnPropertyNames(it) {
7630  var names = gOPN(toIObject(it));
7631  var result = [];
7632  var i = 0;
7633  var key;
7634  while (names.length > i) {
7635    if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);
7636  } return result;
7637};
7638var $getOwnPropertySymbols = function getOwnPropertySymbols(it) {
7639  var IS_OP = it === ObjectProto;
7640  var names = gOPN(IS_OP ? OPSymbols : toIObject(it));
7641  var result = [];
7642  var i = 0;
7643  var key;
7644  while (names.length > i) {
7645    if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);
7646  } return result;
7647};
7648
7649// 19.4.1.1 Symbol([description])
7650if (!USE_NATIVE) {
7651  $Symbol = function Symbol() {
7652    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');
7653    var tag = uid(arguments.length > 0 ? arguments[0] : undefined);
7654    var $set = function (value) {
7655      if (this === ObjectProto) $set.call(OPSymbols, value);
7656      if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;
7657      setSymbolDesc(this, tag, createDesc(1, value));
7658    };
7659    if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });
7660    return wrap(tag);
7661  };
7662  redefine($Symbol[PROTOTYPE], 'toString', function toString() {
7663    return this._k;
7664  });
7665
7666  $GOPD.f = $getOwnPropertyDescriptor;
7667  $DP.f = $defineProperty;
7668  __webpack_require__(/*! ./_object-gopn */ "./node_modules/core-js/modules/_object-gopn.js").f = gOPNExt.f = $getOwnPropertyNames;
7669  __webpack_require__(/*! ./_object-pie */ "./node_modules/core-js/modules/_object-pie.js").f = $propertyIsEnumerable;
7670  __webpack_require__(/*! ./_object-gops */ "./node_modules/core-js/modules/_object-gops.js").f = $getOwnPropertySymbols;
7671
7672  if (DESCRIPTORS && !__webpack_require__(/*! ./_library */ "./node_modules/core-js/modules/_library.js")) {
7673    redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);
7674  }
7675
7676  wksExt.f = function (name) {
7677    return wrap(wks(name));
7678  };
7679}
7680
7681$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });
7682
7683for (var es6Symbols = (
7684  // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14
7685  'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'
7686).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);
7687
7688for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);
7689
7690$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {
7691  // 19.4.2.1 Symbol.for(key)
7692  'for': function (key) {
7693    return has(SymbolRegistry, key += '')
7694      ? SymbolRegistry[key]
7695      : SymbolRegistry[key] = $Symbol(key);
7696  },
7697  // 19.4.2.5 Symbol.keyFor(sym)
7698  keyFor: function keyFor(sym) {
7699    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');
7700    for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;
7701  },
7702  useSetter: function () { setter = true; },
7703  useSimple: function () { setter = false; }
7704});
7705
7706$export($export.S + $export.F * !USE_NATIVE, 'Object', {
7707  // 19.1.2.2 Object.create(O [, Properties])
7708  create: $create,
7709  // 19.1.2.4 Object.defineProperty(O, P, Attributes)
7710  defineProperty: $defineProperty,
7711  // 19.1.2.3 Object.defineProperties(O, Properties)
7712  defineProperties: $defineProperties,
7713  // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
7714  getOwnPropertyDescriptor: $getOwnPropertyDescriptor,
7715  // 19.1.2.7 Object.getOwnPropertyNames(O)
7716  getOwnPropertyNames: $getOwnPropertyNames,
7717  // 19.1.2.8 Object.getOwnPropertySymbols(O)
7718  getOwnPropertySymbols: $getOwnPropertySymbols
7719});
7720
7721// 24.3.2 JSON.stringify(value [, replacer [, space]])
7722$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {
7723  var S = $Symbol();
7724  // MS Edge converts symbol values to JSON as {}
7725  // WebKit converts symbol values to JSON as null
7726  // V8 throws on boxed symbols
7727  return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';
7728})), 'JSON', {
7729  stringify: function stringify(it) {
7730    var args = [it];
7731    var i = 1;
7732    var replacer, $replacer;
7733    while (arguments.length > i) args.push(arguments[i++]);
7734    $replacer = replacer = args[1];
7735    if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined
7736    if (!isArray(replacer)) replacer = function (key, value) {
7737      if (typeof $replacer == 'function') value = $replacer.call(this, key, value);
7738      if (!isSymbol(value)) return value;
7739    };
7740    args[1] = replacer;
7741    return _stringify.apply($JSON, args);
7742  }
7743});
7744
7745// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)
7746$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(/*! ./_hide */ "./node_modules/core-js/modules/_hide.js")($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
7747// 19.4.3.5 Symbol.prototype[@@toStringTag]
7748setToStringTag($Symbol, 'Symbol');
7749// 20.2.1.9 Math[@@toStringTag]
7750setToStringTag(Math, 'Math', true);
7751// 24.3.3 JSON[@@toStringTag]
7752setToStringTag(global.JSON, 'JSON', true);
7753
7754
7755/***/ }),
7756
vendor: 2,884 bytes, lines 7757-7814
7757/***/ "./node_modules/core-js/modules/es6.typed.array-buffer.js":
7758/*!****************************************************************!*\
7759  !*** ./node_modules/core-js/modules/es6.typed.array-buffer.js ***!
7760  \****************************************************************/
7761/*! no static exports found */
7762/***/ (function(module, exports, __webpack_require__) {
7763
7764"use strict";
7765
7766var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
7767var $typed = __webpack_require__(/*! ./_typed */ "./node_modules/core-js/modules/_typed.js");
7768var buffer = __webpack_require__(/*! ./_typed-buffer */ "./node_modules/core-js/modules/_typed-buffer.js");
7769var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
7770var toAbsoluteIndex = __webpack_require__(/*! ./_to-absolute-index */ "./node_modules/core-js/modules/_to-absolute-index.js");
7771var toLength = __webpack_require__(/*! ./_to-length */ "./node_modules/core-js/modules/_to-length.js");
7772var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
7773var ArrayBuffer = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js").ArrayBuffer;
7774var speciesConstructor = __webpack_require__(/*! ./_species-constructor */ "./node_modules/core-js/modules/_species-constructor.js");
7775var $ArrayBuffer = buffer.ArrayBuffer;
7776var $DataView = buffer.DataView;
7777var $isView = $typed.ABV && ArrayBuffer.isView;
7778var $slice = $ArrayBuffer.prototype.slice;
7779var VIEW = $typed.VIEW;
7780var ARRAY_BUFFER = 'ArrayBuffer';
7781
7782$export($export.G + $export.W + $export.F * (ArrayBuffer !== $ArrayBuffer), { ArrayBuffer: $ArrayBuffer });
7783
7784$export($export.S + $export.F * !$typed.CONSTR, ARRAY_BUFFER, {
7785  // 24.1.3.1 ArrayBuffer.isView(arg)
7786  isView: function isView(it) {
7787    return $isView && $isView(it) || isObject(it) && VIEW in it;
7788  }
7789});
7790
7791$export($export.P + $export.U + $export.F * __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js")(function () {
7792  return !new $ArrayBuffer(2).slice(1, undefined).byteLength;
7793}), ARRAY_BUFFER, {
7794  // 24.1.4.3 ArrayBuffer.prototype.slice(start, end)
7795  slice: function slice(start, end) {
7796    if ($slice !== undefined && end === undefined) return $slice.call(anObject(this), start); // FF fix
7797    var len = anObject(this).byteLength;
7798    var first = toAbsoluteIndex(start, len);
7799    var fin = toAbsoluteIndex(end === undefined ? len : end, len);
7800    var result = new (speciesConstructor(this, $ArrayBuffer))(toLength(fin - first));
7801    var viewS = new $DataView(this);
7802    var viewT = new $DataView(result);
7803    var index = 0;
7804    while (first < fin) {
7805      viewT.setUint8(index++, viewS.getUint8(first++));
7806    } return result;
7807  }
7808});
7809
7810__webpack_require__(/*! ./_set-species */ "./node_modules/core-js/modules/_set-species.js")(ARRAY_BUFFER);
7811
7812
7813/***/ }),
7814
vendor: 712 bytes, lines 7815-7829
7815/***/ "./node_modules/core-js/modules/es6.typed.data-view.js":
7816/*!*************************************************************!*\
7817  !*** ./node_modules/core-js/modules/es6.typed.data-view.js ***!
7818  \*************************************************************/
7819/*! no static exports found */
7820/***/ (function(module, exports, __webpack_require__) {
7821
7822var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
7823$export($export.G + $export.W + $export.F * !__webpack_require__(/*! ./_typed */ "./node_modules/core-js/modules/_typed.js").ABV, {
7824  DataView: __webpack_require__(/*! ./_typed-buffer */ "./node_modules/core-js/modules/_typed-buffer.js").DataView
7825});
7826
7827
7828/***/ }),
7829
vendor: 621 bytes, lines 7830-7845
7830/***/ "./node_modules/core-js/modules/es6.typed.float32-array.js":
7831/*!*****************************************************************!*\
7832  !*** ./node_modules/core-js/modules/es6.typed.float32-array.js ***!
7833  \*****************************************************************/
7834/*! no static exports found */
7835/***/ (function(module, exports, __webpack_require__) {
7836
7837__webpack_require__(/*! ./_typed-array */ "./node_modules/core-js/modules/_typed-array.js")('Float32', 4, function (init) {
7838  return function Float32Array(data, byteOffset, length) {
7839    return init(this, data, byteOffset, length);
7840  };
7841});
7842
7843
7844/***/ }),
7845
vendor: 621 bytes, lines 7846-7861
7846/***/ "./node_modules/core-js/modules/es6.typed.float64-array.js":
7847/*!*****************************************************************!*\
7848  !*** ./node_modules/core-js/modules/es6.typed.float64-array.js ***!
7849  \*****************************************************************/
7850/*! no static exports found */
7851/***/ (function(module, exports, __webpack_require__) {
7852
7853__webpack_require__(/*! ./_typed-array */ "./node_modules/core-js/modules/_typed-array.js")('Float64', 8, function (init) {
7854  return function Float64Array(data, byteOffset, length) {
7855    return init(this, data, byteOffset, length);
7856  };
7857});
7858
7859
7860/***/ }),
7861
vendor: 609 bytes, lines 7862-7877
7862/***/ "./node_modules/core-js/modules/es6.typed.int16-array.js":
7863/*!***************************************************************!*\
7864  !*** ./node_modules/core-js/modules/es6.typed.int16-array.js ***!
7865  \***************************************************************/
7866/*! no static exports found */
7867/***/ (function(module, exports, __webpack_require__) {
7868
7869__webpack_require__(/*! ./_typed-array */ "./node_modules/core-js/modules/_typed-array.js")('Int16', 2, function (init) {
7870  return function Int16Array(data, byteOffset, length) {
7871    return init(this, data, byteOffset, length);
7872  };
7873});
7874
7875
7876/***/ }),
7877
vendor: 609 bytes, lines 7878-7893
7878/***/ "./node_modules/core-js/modules/es6.typed.int32-array.js":
7879/*!***************************************************************!*\
7880  !*** ./node_modules/core-js/modules/es6.typed.int32-array.js ***!
7881  \***************************************************************/
7882/*! no static exports found */
7883/***/ (function(module, exports, __webpack_require__) {
7884
7885__webpack_require__(/*! ./_typed-array */ "./node_modules/core-js/modules/_typed-array.js")('Int32', 4, function (init) {
7886  return function Int32Array(data, byteOffset, length) {
7887    return init(this, data, byteOffset, length);
7888  };
7889});
7890
7891
7892/***/ }),
7893
vendor: 603 bytes, lines 7894-7909
7894/***/ "./node_modules/core-js/modules/es6.typed.int8-array.js":
7895/*!**************************************************************!*\
7896  !*** ./node_modules/core-js/modules/es6.typed.int8-array.js ***!
7897  \**************************************************************/
7898/*! no static exports found */
7899/***/ (function(module, exports, __webpack_require__) {
7900
7901__webpack_require__(/*! ./_typed-array */ "./node_modules/core-js/modules/_typed-array.js")('Int8', 1, function (init) {
7902  return function Int8Array(data, byteOffset, length) {
7903    return init(this, data, byteOffset, length);
7904  };
7905});
7906
7907
7908/***/ }),
7909
vendor: 615 bytes, lines 7910-7925
7910/***/ "./node_modules/core-js/modules/es6.typed.uint16-array.js":
7911/*!****************************************************************!*\
7912  !*** ./node_modules/core-js/modules/es6.typed.uint16-array.js ***!
7913  \****************************************************************/
7914/*! no static exports found */
7915/***/ (function(module, exports, __webpack_require__) {
7916
7917__webpack_require__(/*! ./_typed-array */ "./node_modules/core-js/modules/_typed-array.js")('Uint16', 2, function (init) {
7918  return function Uint16Array(data, byteOffset, length) {
7919    return init(this, data, byteOffset, length);
7920  };
7921});
7922
7923
7924/***/ }),
7925
vendor: 615 bytes, lines 7926-7941
7926/***/ "./node_modules/core-js/modules/es6.typed.uint32-array.js":
7927/*!****************************************************************!*\
7928  !*** ./node_modules/core-js/modules/es6.typed.uint32-array.js ***!
7929  \****************************************************************/
7930/*! no static exports found */
7931/***/ (function(module, exports, __webpack_require__) {
7932
7933__webpack_require__(/*! ./_typed-array */ "./node_modules/core-js/modules/_typed-array.js")('Uint32', 4, function (init) {
7934  return function Uint32Array(data, byteOffset, length) {
7935    return init(this, data, byteOffset, length);
7936  };
7937});
7938
7939
7940/***/ }),
7941
vendor: 609 bytes, lines 7942-7957
7942/***/ "./node_modules/core-js/modules/es6.typed.uint8-array.js":
7943/*!***************************************************************!*\
7944  !*** ./node_modules/core-js/modules/es6.typed.uint8-array.js ***!
7945  \***************************************************************/
7946/*! no static exports found */
7947/***/ (function(module, exports, __webpack_require__) {
7948
7949__webpack_require__(/*! ./_typed-array */ "./node_modules/core-js/modules/_typed-array.js")('Uint8', 1, function (init) {
7950  return function Uint8Array(data, byteOffset, length) {
7951    return init(this, data, byteOffset, length);
7952  };
7953});
7954
7955
7956/***/ }),
7957
vendor: 654 bytes, lines 7958-7973
7958/***/ "./node_modules/core-js/modules/es6.typed.uint8-clamped-array.js":
7959/*!***********************************************************************!*\
7960  !*** ./node_modules/core-js/modules/es6.typed.uint8-clamped-array.js ***!
7961  \***********************************************************************/
7962/*! no static exports found */
7963/***/ (function(module, exports, __webpack_require__) {
7964
7965__webpack_require__(/*! ./_typed-array */ "./node_modules/core-js/modules/_typed-array.js")('Uint8', 1, function (init) {
7966  return function Uint8ClampedArray(data, byteOffset, length) {
7967    return init(this, data, byteOffset, length);
7968  };
7969}, true);
7970
7971
7972/***/ }),
7973
vendor: 2,893 bytes, lines 7974-8044
7974/***/ "./node_modules/core-js/modules/es6.weak-map.js":
7975/*!******************************************************!*\
7976  !*** ./node_modules/core-js/modules/es6.weak-map.js ***!
7977  \******************************************************/
7978/*! no static exports found */
7979/***/ (function(module, exports, __webpack_require__) {
7980
7981"use strict";
7982
7983var each = __webpack_require__(/*! ./_array-methods */ "./node_modules/core-js/modules/_array-methods.js")(0);
7984var redefine = __webpack_require__(/*! ./_redefine */ "./node_modules/core-js/modules/_redefine.js");
7985var meta = __webpack_require__(/*! ./_meta */ "./node_modules/core-js/modules/_meta.js");
7986var assign = __webpack_require__(/*! ./_object-assign */ "./node_modules/core-js/modules/_object-assign.js");
7987var weak = __webpack_require__(/*! ./_collection-weak */ "./node_modules/core-js/modules/_collection-weak.js");
7988var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
7989var fails = __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js");
7990var validate = __webpack_require__(/*! ./_validate-collection */ "./node_modules/core-js/modules/_validate-collection.js");
7991var WEAK_MAP = 'WeakMap';
7992var getWeak = meta.getWeak;
7993var isExtensible = Object.isExtensible;
7994var uncaughtFrozenStore = weak.ufstore;
7995var tmp = {};
7996var InternalMap;
7997
7998var wrapper = function (get) {
7999  return function WeakMap() {
8000    return get(this, arguments.length > 0 ? arguments[0] : undefined);
8001  };
8002};
8003
8004var methods = {
8005  // 23.3.3.3 WeakMap.prototype.get(key)
8006  get: function get(key) {
8007    if (isObject(key)) {
8008      var data = getWeak(key);
8009      if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);
8010      return data ? data[this._i] : undefined;
8011    }
8012  },
8013  // 23.3.3.5 WeakMap.prototype.set(key, value)
8014  set: function set(key, value) {
8015    return weak.def(validate(this, WEAK_MAP), key, value);
8016  }
8017};
8018
8019// 23.3 WeakMap Objects
8020var $WeakMap = module.exports = __webpack_require__(/*! ./_collection */ "./node_modules/core-js/modules/_collection.js")(WEAK_MAP, wrapper, methods, weak, true, true);
8021
8022// IE11 WeakMap frozen keys fix
8023if (fails(function () { return new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7; })) {
8024  InternalMap = weak.getConstructor(wrapper, WEAK_MAP);
8025  assign(InternalMap.prototype, methods);
8026  meta.NEED = true;
8027  each(['delete', 'has', 'get', 'set'], function (key) {
8028    var proto = $WeakMap.prototype;
8029    var method = proto[key];
8030    redefine(proto, key, function (a, b) {
8031      // store frozen objects on internal weakmap shim
8032      if (isObject(a) && !isExtensible(a)) {
8033        if (!this._f) this._f = new InternalMap();
8034        var result = this._f[key](a, b);
8035        return key == 'set' ? this : result;
8036      // store all the rest on native weakmap
8037      } return method.call(this, a, b);
8038    });
8039  });
8040}
8041
8042
8043/***/ }),
8044
vendor: 1,019 bytes, lines 8045-8070
8045/***/ "./node_modules/core-js/modules/es6.weak-set.js":
8046/*!******************************************************!*\
8047  !*** ./node_modules/core-js/modules/es6.weak-set.js ***!
8048  \******************************************************/
8049/*! no static exports found */
8050/***/ (function(module, exports, __webpack_require__) {
8051
8052"use strict";
8053
8054var weak = __webpack_require__(/*! ./_collection-weak */ "./node_modules/core-js/modules/_collection-weak.js");
8055var validate = __webpack_require__(/*! ./_validate-collection */ "./node_modules/core-js/modules/_validate-collection.js");
8056var WEAK_SET = 'WeakSet';
8057
8058// 23.4 WeakSet Objects
8059__webpack_require__(/*! ./_collection */ "./node_modules/core-js/modules/_collection.js")(WEAK_SET, function (get) {
8060  return function WeakSet() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };
8061}, {
8062  // 23.4.3.1 WeakSet.prototype.add(value)
8063  add: function add(value) {
8064    return weak.def(validate(this, WEAK_SET), value, true);
8065  }
8066}, weak, false, true);
8067
8068
8069/***/ }),
8070
vendor: 943 bytes, lines 8071-8094
8071/***/ "./node_modules/core-js/modules/es7.array.includes.js":
8072/*!************************************************************!*\
8073  !*** ./node_modules/core-js/modules/es7.array.includes.js ***!
8074  \************************************************************/
8075/*! no static exports found */
8076/***/ (function(module, exports, __webpack_require__) {
8077
8078"use strict";
8079
8080// https://github.com/tc39/Array.prototype.includes
8081var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
8082var $includes = __webpack_require__(/*! ./_array-includes */ "./node_modules/core-js/modules/_array-includes.js")(true);
8083
8084$export($export.P, 'Array', {
8085  includes: function includes(el /* , fromIndex = 0 */) {
8086    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
8087  }
8088});
8089
8090__webpack_require__(/*! ./_add-to-unscopables */ "./node_modules/core-js/modules/_add-to-unscopables.js")('includes');
8091
8092
8093/***/ }),
8094
vendor: 736 bytes, lines 8095-8114
8095/***/ "./node_modules/core-js/modules/es7.object.entries.js":
8096/*!************************************************************!*\
8097  !*** ./node_modules/core-js/modules/es7.object.entries.js ***!
8098  \************************************************************/
8099/*! no static exports found */
8100/***/ (function(module, exports, __webpack_require__) {
8101
8102// https://github.com/tc39/proposal-object-values-entries
8103var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
8104var $entries = __webpack_require__(/*! ./_object-to-array */ "./node_modules/core-js/modules/_object-to-array.js")(true);
8105
8106$export($export.S, 'Object', {
8107  entries: function entries(it) {
8108    return $entries(it);
8109  }
8110});
8111
8112
8113/***/ }),
8114
vendor: 1,459 bytes, lines 8115-8147
8115/***/ "./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js":
8116/*!*********************************************************************************!*\
8117  !*** ./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js ***!
8118  \*********************************************************************************/
8119/*! no static exports found */
8120/***/ (function(module, exports, __webpack_require__) {
8121
8122// https://github.com/tc39/proposal-object-getownpropertydescriptors
8123var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
8124var ownKeys = __webpack_require__(/*! ./_own-keys */ "./node_modules/core-js/modules/_own-keys.js");
8125var toIObject = __webpack_require__(/*! ./_to-iobject */ "./node_modules/core-js/modules/_to-iobject.js");
8126var gOPD = __webpack_require__(/*! ./_object-gopd */ "./node_modules/core-js/modules/_object-gopd.js");
8127var createProperty = __webpack_require__(/*! ./_create-property */ "./node_modules/core-js/modules/_create-property.js");
8128
8129$export($export.S, 'Object', {
8130  getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {
8131    var O = toIObject(object);
8132    var getDesc = gOPD.f;
8133    var keys = ownKeys(O);
8134    var result = {};
8135    var i = 0;
8136    var key, desc;
8137    while (keys.length > i) {
8138      desc = getDesc(O, key = keys[i++]);
8139      if (desc !== undefined) createProperty(result, key, desc);
8140    }
8141    return result;
8142  }
8143});
8144
8145
8146/***/ }),
8147
vendor: 729 bytes, lines 8148-8167
8148/***/ "./node_modules/core-js/modules/es7.object.values.js":
8149/*!***********************************************************!*\
8150  !*** ./node_modules/core-js/modules/es7.object.values.js ***!
8151  \***********************************************************/
8152/*! no static exports found */
8153/***/ (function(module, exports, __webpack_require__) {
8154
8155// https://github.com/tc39/proposal-object-values-entries
8156var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
8157var $values = __webpack_require__(/*! ./_object-to-array */ "./node_modules/core-js/modules/_object-to-array.js")(false);
8158
8159$export($export.S, 'Object', {
8160  values: function values(it) {
8161    return $values(it);
8162  }
8163});
8164
8165
8166/***/ }),
8167
vendor: 1,453 bytes, lines 8168-8199
8168/***/ "./node_modules/core-js/modules/es7.promise.finally.js":
8169/*!*************************************************************!*\
8170  !*** ./node_modules/core-js/modules/es7.promise.finally.js ***!
8171  \*************************************************************/
8172/*! no static exports found */
8173/***/ (function(module, exports, __webpack_require__) {
8174
8175"use strict";
8176// https://github.com/tc39/proposal-promise-finally
8177
8178var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
8179var core = __webpack_require__(/*! ./_core */ "./node_modules/core-js/modules/_core.js");
8180var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
8181var speciesConstructor = __webpack_require__(/*! ./_species-constructor */ "./node_modules/core-js/modules/_species-constructor.js");
8182var promiseResolve = __webpack_require__(/*! ./_promise-resolve */ "./node_modules/core-js/modules/_promise-resolve.js");
8183
8184$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {
8185  var C = speciesConstructor(this, core.Promise || global.Promise);
8186  var isFunction = typeof onFinally == 'function';
8187  return this.then(
8188    isFunction ? function (x) {
8189      return promiseResolve(C, onFinally()).then(function () { return x; });
8190    } : onFinally,
8191    isFunction ? function (e) {
8192      return promiseResolve(C, onFinally()).then(function () { throw e; });
8193    } : onFinally
8194  );
8195} });
8196
8197
8198/***/ }),
8199
vendor: 1,048 bytes, lines 8200-8223
8200/***/ "./node_modules/core-js/modules/es7.string.pad-end.js":
8201/*!************************************************************!*\
8202  !*** ./node_modules/core-js/modules/es7.string.pad-end.js ***!
8203  \************************************************************/
8204/*! no static exports found */
8205/***/ (function(module, exports, __webpack_require__) {
8206
8207"use strict";
8208
8209// https://github.com/tc39/proposal-string-pad-start-end
8210var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
8211var $pad = __webpack_require__(/*! ./_string-pad */ "./node_modules/core-js/modules/_string-pad.js");
8212var userAgent = __webpack_require__(/*! ./_user-agent */ "./node_modules/core-js/modules/_user-agent.js");
8213
8214// https://github.com/zloirock/core-js/issues/280
8215$export($export.P + $export.F * /Version\/10\.\d+(\.\d+)? Safari\//.test(userAgent), 'String', {
8216  padEnd: function padEnd(maxLength /* , fillString = ' ' */) {
8217    return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);
8218  }
8219});
8220
8221
8222/***/ }),
8223
vendor: 1,059 bytes, lines 8224-8247
8224/***/ "./node_modules/core-js/modules/es7.string.pad-start.js":
8225/*!**************************************************************!*\
8226  !*** ./node_modules/core-js/modules/es7.string.pad-start.js ***!
8227  \**************************************************************/
8228/*! no static exports found */
8229/***/ (function(module, exports, __webpack_require__) {
8230
8231"use strict";
8232
8233// https://github.com/tc39/proposal-string-pad-start-end
8234var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
8235var $pad = __webpack_require__(/*! ./_string-pad */ "./node_modules/core-js/modules/_string-pad.js");
8236var userAgent = __webpack_require__(/*! ./_user-agent */ "./node_modules/core-js/modules/_user-agent.js");
8237
8238// https://github.com/zloirock/core-js/issues/280
8239$export($export.P + $export.F * /Version\/10\.\d+(\.\d+)? Safari\//.test(userAgent), 'String', {
8240  padStart: function padStart(maxLength /* , fillString = ' ' */) {
8241    return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);
8242  }
8243});
8244
8245
8246/***/ }),
8247
vendor: 496 bytes, lines 8248-8259
8248/***/ "./node_modules/core-js/modules/es7.symbol.async-iterator.js":
8249/*!*******************************************************************!*\
8250  !*** ./node_modules/core-js/modules/es7.symbol.async-iterator.js ***!
8251  \*******************************************************************/
8252/*! no static exports found */
8253/***/ (function(module, exports, __webpack_require__) {
8254
8255__webpack_require__(/*! ./_wks-define */ "./node_modules/core-js/modules/_wks-define.js")('asyncIterator');
8256
8257
8258/***/ }),
8259
vendor: 2,605 bytes, lines 8260-8328
8260/***/ "./node_modules/core-js/modules/web.dom.iterable.js":
8261/*!**********************************************************!*\
8262  !*** ./node_modules/core-js/modules/web.dom.iterable.js ***!
8263  \**********************************************************/
8264/*! no static exports found */
8265/***/ (function(module, exports, __webpack_require__) {
8266
8267var $iterators = __webpack_require__(/*! ./es6.array.iterator */ "./node_modules/core-js/modules/es6.array.iterator.js");
8268var getKeys = __webpack_require__(/*! ./_object-keys */ "./node_modules/core-js/modules/_object-keys.js");
8269var redefine = __webpack_require__(/*! ./_redefine */ "./node_modules/core-js/modules/_redefine.js");
8270var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
8271var hide = __webpack_require__(/*! ./_hide */ "./node_modules/core-js/modules/_hide.js");
8272var Iterators = __webpack_require__(/*! ./_iterators */ "./node_modules/core-js/modules/_iterators.js");
8273var wks = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js");
8274var ITERATOR = wks('iterator');
8275var TO_STRING_TAG = wks('toStringTag');
8276var ArrayValues = Iterators.Array;
8277
8278var DOMIterables = {
8279  CSSRuleList: true, // TODO: Not spec compliant, should be false.
8280  CSSStyleDeclaration: false,
8281  CSSValueList: false,
8282  ClientRectList: false,
8283  DOMRectList: false,
8284  DOMStringList: false,
8285  DOMTokenList: true,
8286  DataTransferItemList: false,
8287  FileList: false,
8288  HTMLAllCollection: false,
8289  HTMLCollection: false,
8290  HTMLFormElement: false,
8291  HTMLSelectElement: false,
8292  MediaList: true, // TODO: Not spec compliant, should be false.
8293  MimeTypeArray: false,
8294  NamedNodeMap: false,
8295  NodeList: true,
8296  PaintRequestList: false,
8297  Plugin: false,
8298  PluginArray: false,
8299  SVGLengthList: false,
8300  SVGNumberList: false,
8301  SVGPathSegList: false,
8302  SVGPointList: false,
8303  SVGStringList: false,
8304  SVGTransformList: false,
8305  SourceBufferList: false,
8306  StyleSheetList: true, // TODO: Not spec compliant, should be false.
8307  TextTrackCueList: false,
8308  TextTrackList: false,
8309  TouchList: false
8310};
8311
8312for (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {
8313  var NAME = collections[i];
8314  var explicit = DOMIterables[NAME];
8315  var Collection = global[NAME];
8316  var proto = Collection && Collection.prototype;
8317  var key;
8318  if (proto) {
8319    if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);
8320    if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);
8321    Iterators[NAME] = ArrayValues;
8322    if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);
8323  }
8324}
8325
8326
8327/***/ }),
8328
vendor: 622 bytes, lines 8329-8345
8329/***/ "./node_modules/core-js/modules/web.immediate.js":
8330/*!*******************************************************!*\
8331  !*** ./node_modules/core-js/modules/web.immediate.js ***!
8332  \*******************************************************/
8333/*! no static exports found */
8334/***/ (function(module, exports, __webpack_require__) {
8335
8336var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
8337var $task = __webpack_require__(/*! ./_task */ "./node_modules/core-js/modules/_task.js");
8338$export($export.G + $export.B, {
8339  setImmediate: $task.set,
8340  clearImmediate: $task.clear
8341});
8342
8343
8344/***/ }),
8345
vendor: 1,269 bytes, lines 8346-8376
8346/***/ "./node_modules/core-js/modules/web.timers.js":
8347/*!****************************************************!*\
8348  !*** ./node_modules/core-js/modules/web.timers.js ***!
8349  \****************************************************/
8350/*! no static exports found */
8351/***/ (function(module, exports, __webpack_require__) {
8352
8353// ie9- setTimeout & setInterval additional parameters fix
8354var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
8355var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
8356var userAgent = __webpack_require__(/*! ./_user-agent */ "./node_modules/core-js/modules/_user-agent.js");
8357var slice = [].slice;
8358var MSIE = /MSIE .\./.test(userAgent); // <- dirty ie9- check
8359var wrap = function (set) {
8360  return function (fn, time /* , ...args */) {
8361    var boundArgs = arguments.length > 2;
8362    var args = boundArgs ? slice.call(arguments, 2) : false;
8363    return set(boundArgs ? function () {
8364      // eslint-disable-next-line no-new-func
8365      (typeof fn == 'function' ? fn : Function(fn)).apply(this, args);
8366    } : fn, time);
8367  };
8368};
8369$export($export.G + $export.B + $export.F * MSIE, {
8370  setTimeout: wrap(global.setTimeout),
8371  setInterval: wrap(global.setInterval)
8372});
8373
8374
8375/***/ }),
8376
vendor: 709 bytes, lines 8377-8391
8377/***/ "./node_modules/core-js/web/index.js":
8378/*!*******************************************!*\
8379  !*** ./node_modules/core-js/web/index.js ***!
8380  \*******************************************/
8381/*! no static exports found */
8382/***/ (function(module, exports, __webpack_require__) {
8383
8384__webpack_require__(/*! ../modules/web.timers */ "./node_modules/core-js/modules/web.timers.js");
8385__webpack_require__(/*! ../modules/web.immediate */ "./node_modules/core-js/modules/web.immediate.js");
8386__webpack_require__(/*! ../modules/web.dom.iterable */ "./node_modules/core-js/modules/web.dom.iterable.js");
8387module.exports = __webpack_require__(/*! ../modules/_core */ "./node_modules/core-js/modules/_core.js");
8388
8389
8390/***/ }),
8391
vendor: 57,378 bytes, lines 8392-10014
8392/***/ "./node_modules/dom7/dist/dom7.modular.js":
8393/*!************************************************!*\
8394  !*** ./node_modules/dom7/dist/dom7.modular.js ***!
8395  \************************************************/
8396/*! exports provided: $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, prop, data, removeData, dataset, val, transform, transition, on, off, once, trigger, transitionEnd, animationEnd, width, outerWidth, height, outerHeight, offset, hide, show, styles, css, toArray, each, forEach, filter, map, html, text, is, indexOf, index, eq, append, appendTo, prepend, prependTo, insertBefore, insertAfter, next, nextAll, prev, prevAll, siblings, parent, parents, closest, find, children, remove, detach, add, empty, scrollTo, scrollTop, scrollLeft, animate, stop, click, blur, focus, focusin, focusout, keyup, keydown, keypress, submit, change, mousedown, mousemove, mouseup, mouseenter, mouseleave, mouseout, mouseover, touchstart, touchend, touchmove, resize, scroll */
8397/***/ (function(module, __webpack_exports__, __webpack_require__) {
8398
8399"use strict";
8400__webpack_require__.r(__webpack_exports__);
8401/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "$", function() { return $; });
8402/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addClass", function() { return addClass; });
8403/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeClass", function() { return removeClass; });
8404/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hasClass", function() { return hasClass; });
8405/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "toggleClass", function() { return toggleClass; });
8406/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "attr", function() { return attr; });
8407/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeAttr", function() { return removeAttr; });
8408/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "prop", function() { return prop; });
8409/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "data", function() { return data; });
8410/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeData", function() { return removeData; });
8411/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "dataset", function() { return dataset; });
8412/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "val", function() { return val; });
8413/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "transform", function() { return transform; });
8414/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "transition", function() { return transition; });
8415/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "on", function() { return on; });
8416/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "off", function() { return off; });
8417/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "once", function() { return once; });
8418/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "trigger", function() { return trigger; });
8419/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "transitionEnd", function() { return transitionEnd; });
8420/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "animationEnd", function() { return animationEnd; });
8421/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "width", function() { return width; });
8422/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "outerWidth", function() { return outerWidth; });
8423/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "height", function() { return height; });
8424/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "outerHeight", function() { return outerHeight; });
8425/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "offset", function() { return offset; });
8426/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hide", function() { return hide; });
8427/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "show", function() { return show; });
8428/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "styles", function() { return styles; });
8429/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "css", function() { return css; });
8430/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "toArray", function() { return toArray; });
8431/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "each", function() { return each; });
8432/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "forEach", function() { return forEach; });
8433/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "filter", function() { return filter; });
8434/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "map", function() { return map; });
8435/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "html", function() { return html; });
8436/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "text", function() { return text; });
8437/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "is", function() { return is; });
8438/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "indexOf", function() { return indexOf; });
8439/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "index", function() { return index; });
8440/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "eq", function() { return eq; });
8441/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "append", function() { return append; });
8442/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "appendTo", function() { return appendTo; });
8443/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "prepend", function() { return prepend; });
8444/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "prependTo", function() { return prependTo; });
8445/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "insertBefore", function() { return insertBefore; });
8446/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "insertAfter", function() { return insertAfter; });
8447/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "next", function() { return next; });
8448/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "nextAll", function() { return nextAll; });
8449/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "prev", function() { return prev; });
8450/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "prevAll", function() { return prevAll; });
8451/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "siblings", function() { return siblings; });
8452/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parent", function() { return parent; });
8453/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parents", function() { return parents; });
8454/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "closest", function() { return closest; });
8455/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "find", function() { return find; });
8456/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "children", function() { return children; });
8457/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "remove", function() { return remove; });
8458/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "detach", function() { return detach; });
8459/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "add", function() { return add; });
8460/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "empty", function() { return empty; });
8461/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scrollTo", function() { return scrollTo; });
8462/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scrollTop", function() { return scrollTop; });
8463/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scrollLeft", function() { return scrollLeft; });
8464/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "animate", function() { return animate; });
8465/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "stop", function() { return stop; });
8466/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "click", function() { return click; });
8467/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "blur", function() { return blur; });
8468/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "focus", function() { return focus; });
8469/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "focusin", function() { return focusin; });
8470/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "focusout", function() { return focusout; });
8471/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "keyup", function() { return keyup; });
8472/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "keydown", function() { return keydown; });
8473/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "keypress", function() { return keypress; });
8474/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "submit", function() { return submit; });
8475/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "change", function() { return change; });
8476/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mousedown", function() { return mousedown; });
8477/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mousemove", function() { return mousemove; });
8478/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mouseup", function() { return mouseup; });
8479/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mouseenter", function() { return mouseenter; });
8480/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mouseleave", function() { return mouseleave; });
8481/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mouseout", function() { return mouseout; });
8482/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mouseover", function() { return mouseover; });
8483/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "touchstart", function() { return touchstart; });
8484/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "touchend", function() { return touchend; });
8485/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "touchmove", function() { return touchmove; });
8486/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "resize", function() { return resize; });
8487/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scroll", function() { return scroll; });
8488/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/dom7/node_modules/ssr-window/dist/ssr-window.esm.js");
8489function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
8490
8491/**
8492 * Dom7 2.1.5
8493 * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API
8494 * http://framework7.io/docs/dom.html
8495 *
8496 * Copyright 2020, Vladimir Kharlampidi
8497 * The iDangero.us
8498 * http://www.idangero.us/
8499 *
8500 * Licensed under MIT
8501 *
8502 * Released on: May 15, 2020
8503 */
8504
8505
8506var Dom7 = function Dom7(arr) {
8507  _classCallCheck(this, Dom7);
8508
8509  var self = this;
8510  // Create array-like object
8511  for (var i = 0; i < arr.length; i += 1) {
8512    self[i] = arr[i];
8513  }
8514  self.length = arr.length;
8515  // Return collection with methods
8516  return this;
8517};
8518
8519function $(selector, context) {
8520  var arr = [];
8521  var i = 0;
8522  if (selector && !context) {
8523    if (selector instanceof Dom7) {
8524      return selector;
8525    }
8526  }
8527  if (selector) {
8528    // String
8529    if (typeof selector === 'string') {
8530      var els = void 0;
8531      var tempParent = void 0;
8532      var _html = selector.trim();
8533      if (_html.indexOf('<') >= 0 && _html.indexOf('>') >= 0) {
8534        var toCreate = 'div';
8535        if (_html.indexOf('<li') === 0) toCreate = 'ul';
8536        if (_html.indexOf('<tr') === 0) toCreate = 'tbody';
8537        if (_html.indexOf('<td') === 0 || _html.indexOf('<th') === 0) toCreate = 'tr';
8538        if (_html.indexOf('<tbody') === 0) toCreate = 'table';
8539        if (_html.indexOf('<option') === 0) toCreate = 'select';
8540        tempParent = ssr_window__WEBPACK_IMPORTED_MODULE_0__["document"].createElement(toCreate);
8541        tempParent.innerHTML = _html;
8542        for (i = 0; i < tempParent.childNodes.length; i += 1) {
8543          arr.push(tempParent.childNodes[i]);
8544        }
8545      } else {
8546        if (!context && selector[0] === '#' && !selector.match(/[ .<>:~]/)) {
8547          // Pure ID selector
8548          els = [ssr_window__WEBPACK_IMPORTED_MODULE_0__["document"].getElementById(selector.trim().split('#')[1])];
8549        } else {
8550          // Other selectors
8551          els = (context || ssr_window__WEBPACK_IMPORTED_MODULE_0__["document"]).querySelectorAll(selector.trim());
8552        }
8553        for (i = 0; i < els.length; i += 1) {
8554          if (els[i]) arr.push(els[i]);
8555        }
8556      }
8557    } else if (selector.nodeType || selector === ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"] || selector === ssr_window__WEBPACK_IMPORTED_MODULE_0__["document"]) {
8558      // Node/element
8559      arr.push(selector);
8560    } else if (selector.length > 0 && selector[0].nodeType) {
8561      // Array of elements or instance of Dom
8562      for (i = 0; i < selector.length; i += 1) {
8563        arr.push(selector[i]);
8564      }
8565    }
8566  }
8567  return new Dom7(arr);
8568}
8569
8570$.fn = Dom7.prototype;
8571$.Class = Dom7;
8572$.Dom7 = Dom7;
8573
8574function unique(arr) {
8575  var uniqueArray = [];
8576  for (var i = 0; i < arr.length; i += 1) {
8577    if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);
8578  }
8579  return uniqueArray;
8580}
8581function toCamelCase(string) {
8582  return string.toLowerCase().replace(/-(.)/g, function (match, group1) {
8583    return group1.toUpperCase();
8584  });
8585}
8586
8587function requestAnimationFrame(callback) {
8588  if (ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"].requestAnimationFrame) return ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"].requestAnimationFrame(callback);else if (ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"].webkitRequestAnimationFrame) return ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"].webkitRequestAnimationFrame(callback);
8589  return ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"].setTimeout(callback, 1000 / 60);
8590}
8591function cancelAnimationFrame(id) {
8592  if (ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"].cancelAnimationFrame) return ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"].cancelAnimationFrame(id);else if (ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"].webkitCancelAnimationFrame) return ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"].webkitCancelAnimationFrame(id);
8593  return ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"].clearTimeout(id);
8594}
8595
8596// Classes and attributes
8597function addClass(className) {
8598  if (typeof className === 'undefined') {
8599    return this;
8600  }
8601  var classes = className.split(' ');
8602  for (var i = 0; i < classes.length; i += 1) {
8603    for (var j = 0; j < this.length; j += 1) {
8604      if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.add(classes[i]);
8605    }
8606  }
8607  return this;
8608}
8609function removeClass(className) {
8610  var classes = className.split(' ');
8611  for (var i = 0; i < classes.length; i += 1) {
8612    for (var j = 0; j < this.length; j += 1) {
8613      if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.remove(classes[i]);
8614    }
8615  }
8616  return this;
8617}
8618function hasClass(className) {
8619  if (!this[0]) return false;
8620  return this[0].classList.contains(className);
8621}
8622function toggleClass(className) {
8623  var classes = className.split(' ');
8624  for (var i = 0; i < classes.length; i += 1) {
8625    for (var j = 0; j < this.length; j += 1) {
8626      if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.toggle(classes[i]);
8627    }
8628  }
8629  return this;
8630}
8631function attr(attrs, value) {
8632  if (arguments.length === 1 && typeof attrs === 'string') {
8633    // Get attr
8634    if (this[0]) return this[0].getAttribute(attrs);
8635    return undefined;
8636  }
8637
8638  // Set attrs
8639  for (var i = 0; i < this.length; i += 1) {
8640    if (arguments.length === 2) {
8641      // String
8642      this[i].setAttribute(attrs, value);
8643    } else {
8644      // Object
8645      // eslint-disable-next-line
8646      for (var attrName in attrs) {
8647        this[i][attrName] = attrs[attrName];
8648        this[i].setAttribute(attrName, attrs[attrName]);
8649      }
8650    }
8651  }
8652  return this;
8653}
8654// eslint-disable-next-line
8655function removeAttr(attr) {
8656  for (var i = 0; i < this.length; i += 1) {
8657    this[i].removeAttribute(attr);
8658  }
8659  return this;
8660}
8661// eslint-disable-next-line
8662function prop(props, value) {
8663  if (arguments.length === 1 && typeof props === 'string') {
8664    // Get prop
8665    if (this[0]) return this[0][props];
8666  } else {
8667    // Set props
8668    for (var i = 0; i < this.length; i += 1) {
8669      if (arguments.length === 2) {
8670        // String
8671        this[i][props] = value;
8672      } else {
8673        // Object
8674        // eslint-disable-next-line
8675        for (var propName in props) {
8676          this[i][propName] = props[propName];
8677        }
8678      }
8679    }
8680    return this;
8681  }
8682}
8683function data(key, value) {
8684  var el = void 0;
8685  if (typeof value === 'undefined') {
8686    el = this[0];
8687    // Get value
8688    if (el) {
8689      if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {
8690        return el.dom7ElementDataStorage[key];
8691      }
8692
8693      var dataKey = el.getAttribute('data-' + key);
8694      if (dataKey) {
8695        return dataKey;
8696      }
8697      return undefined;
8698    }
8699    return undefined;
8700  }
8701
8702  // Set value
8703  for (var i = 0; i < this.length; i += 1) {
8704    el = this[i];
8705    if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};
8706    el.dom7ElementDataStorage[key] = value;
8707  }
8708  return this;
8709}
8710function removeData(key) {
8711  for (var i = 0; i < this.length; i += 1) {
8712    var el = this[i];
8713    if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {
8714      el.dom7ElementDataStorage[key] = null;
8715      delete el.dom7ElementDataStorage[key];
8716    }
8717  }
8718}
8719function dataset() {
8720  var el = this[0];
8721  if (!el) return undefined;
8722  var dataset = {}; // eslint-disable-line
8723  if (el.dataset) {
8724    // eslint-disable-next-line
8725    for (var dataKey in el.dataset) {
8726      dataset[dataKey] = el.dataset[dataKey];
8727    }
8728  } else {
8729    for (var i = 0; i < el.attributes.length; i += 1) {
8730      // eslint-disable-next-line
8731      var _attr = el.attributes[i];
8732      if (_attr.name.indexOf('data-') >= 0) {
8733        dataset[toCamelCase(_attr.name.split('data-')[1])] = _attr.value;
8734      }
8735    }
8736  }
8737  // eslint-disable-next-line
8738  for (var key in dataset) {
8739    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;
8740  }
8741  return dataset;
8742}
8743function val(value) {
8744  var dom = this;
8745  if (typeof value === 'undefined') {
8746    if (dom[0]) {
8747      if (dom[0].multiple && dom[0].nodeName.toLowerCase() === 'select') {
8748        var values = [];
8749        for (var i = 0; i < dom[0].selectedOptions.length; i += 1) {
8750          values.push(dom[0].selectedOptions[i].value);
8751        }
8752        return values;
8753      }
8754      return dom[0].value;
8755    }
8756    return undefined;
8757  }
8758
8759  for (var _i = 0; _i < dom.length; _i += 1) {
8760    var el = dom[_i];
8761    if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {
8762      for (var j = 0; j < el.options.length; j += 1) {
8763        el.options[j].selected = value.indexOf(el.options[j].value) >= 0;
8764      }
8765    } else {
8766      el.value = value;
8767    }
8768  }
8769  return dom;
8770}
8771// Transforms
8772// eslint-disable-next-line
8773function transform(transform) {
8774  for (var i = 0; i < this.length; i += 1) {
8775    var elStyle = this[i].style;
8776    elStyle.webkitTransform = transform;
8777    elStyle.transform = transform;
8778  }
8779  return this;
8780}
8781function transition(duration) {
8782  if (typeof duration !== 'string') {
8783    duration = duration + 'ms'; // eslint-disable-line
8784  }
8785  for (var i = 0; i < this.length; i += 1) {
8786    var elStyle = this[i].style;
8787    elStyle.webkitTransitionDuration = duration;
8788    elStyle.transitionDuration = duration;
8789  }
8790  return this;
8791}
8792// Events
8793function on() {
8794  for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
8795    args[_key] = arguments[_key];
8796  }
8797
8798  var eventType = args[0],
8799      targetSelector = args[1],
8800      listener = args[2],
8801      capture = args[3];
8802
8803  if (typeof args[1] === 'function') {
8804    eventType = args[0];
8805    listener = args[1];
8806    capture = args[2];
8807
8808    targetSelector = undefined;
8809  }
8810  if (!capture) capture = false;
8811
8812  function handleLiveEvent(e) {
8813    var target = e.target;
8814    if (!target) return;
8815    var eventData = e.target.dom7EventData || [];
8816    if (eventData.indexOf(e) < 0) {
8817      eventData.unshift(e);
8818    }
8819    if ($(target).is(targetSelector)) listener.apply(target, eventData);else {
8820      var _parents = $(target).parents(); // eslint-disable-line
8821      for (var k = 0; k < _parents.length; k += 1) {
8822        if ($(_parents[k]).is(targetSelector)) listener.apply(_parents[k], eventData);
8823      }
8824    }
8825  }
8826  function handleEvent(e) {
8827    var eventData = e && e.target ? e.target.dom7EventData || [] : [];
8828    if (eventData.indexOf(e) < 0) {
8829      eventData.unshift(e);
8830    }
8831    listener.apply(this, eventData);
8832  }
8833  var events = eventType.split(' ');
8834  var j = void 0;
8835  for (var i = 0; i < this.length; i += 1) {
8836    var el = this[i];
8837    if (!targetSelector) {
8838      for (j = 0; j < events.length; j += 1) {
8839        var event = events[j];
8840        if (!el.dom7Listeners) el.dom7Listeners = {};
8841        if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];
8842        el.dom7Listeners[event].push({
8843          listener: listener,
8844          proxyListener: handleEvent
8845        });
8846        el.addEventListener(event, handleEvent, capture);
8847      }
8848    } else {
8849      // Live events
8850      for (j = 0; j < events.length; j += 1) {
8851        var _event = events[j];
8852        if (!el.dom7LiveListeners) el.dom7LiveListeners = {};
8853        if (!el.dom7LiveListeners[_event]) el.dom7LiveListeners[_event] = [];
8854        el.dom7LiveListeners[_event].push({
8855          listener: listener,
8856          proxyListener: handleLiveEvent
8857        });
8858        el.addEventListener(_event, handleLiveEvent, capture);
8859      }
8860    }
8861  }
8862  return this;
8863}
8864function off() {
8865  for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
8866    args[_key2] = arguments[_key2];
8867  }
8868
8869  var eventType = args[0],
8870      targetSelector = args[1],
8871      listener = args[2],
8872      capture = args[3];
8873
8874  if (typeof args[1] === 'function') {
8875    eventType = args[0];
8876    listener = args[1];
8877    capture = args[2];
8878
8879    targetSelector = undefined;
8880  }
8881  if (!capture) capture = false;
8882
8883  var events = eventType.split(' ');
8884  for (var i = 0; i < events.length; i += 1) {
8885    var event = events[i];
8886    for (var j = 0; j < this.length; j += 1) {
8887      var el = this[j];
8888      var handlers = void 0;
8889      if (!targetSelector && el.dom7Listeners) {
8890        handlers = el.dom7Listeners[event];
8891      } else if (targetSelector && el.dom7LiveListeners) {
8892        handlers = el.dom7LiveListeners[event];
8893      }
8894      if (handlers && handlers.length) {
8895        for (var k = handlers.length - 1; k >= 0; k -= 1) {
8896          var handler = handlers[k];
8897          if (listener && handler.listener === listener) {
8898            el.removeEventListener(event, handler.proxyListener, capture);
8899            handlers.splice(k, 1);
8900          } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {
8901            el.removeEventListener(event, handler.proxyListener, capture);
8902            handlers.splice(k, 1);
8903          } else if (!listener) {
8904            el.removeEventListener(event, handler.proxyListener, capture);
8905            handlers.splice(k, 1);
8906          }
8907        }
8908      }
8909    }
8910  }
8911  return this;
8912}
8913function once() {
8914  var dom = this;
8915
8916  for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
8917    args[_key3] = arguments[_key3];
8918  }
8919
8920  var eventName = args[0],
8921      targetSelector = args[1],
8922      listener = args[2],
8923      capture = args[3];
8924
8925  if (typeof args[1] === 'function') {
8926    eventName = args[0];
8927    listener = args[1];
8928    capture = args[2];
8929
8930    targetSelector = undefined;
8931  }
8932  function onceHandler() {
8933    for (var _len4 = arguments.length, eventArgs = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
8934      eventArgs[_key4] = arguments[_key4];
8935    }
8936
8937    listener.apply(this, eventArgs);
8938    dom.off(eventName, targetSelector, onceHandler, capture);
8939    if (onceHandler.dom7proxy) {
8940      delete onceHandler.dom7proxy;
8941    }
8942  }
8943  onceHandler.dom7proxy = listener;
8944  return dom.on(eventName, targetSelector, onceHandler, capture);
8945}
8946function trigger() {
8947  for (var _len5 = arguments.length, args = Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
8948    args[_key5] = arguments[_key5];
8949  }
8950
8951  var events = args[0].split(' ');
8952  var eventData = args[1];
8953  for (var i = 0; i < events.length; i += 1) {
8954    var event = events[i];
8955    for (var j = 0; j < this.length; j += 1) {
8956      var el = this[j];
8957      var evt = void 0;
8958      try {
8959        evt = new ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"].CustomEvent(event, {
8960          detail: eventData,
8961          bubbles: true,
8962          cancelable: true
8963        });
8964      } catch (e) {
8965        evt = ssr_window__WEBPACK_IMPORTED_MODULE_0__["document"].createEvent('Event');
8966        evt.initEvent(event, true, true);
8967        evt.detail = eventData;
8968      }
8969      // eslint-disable-next-line
8970      el.dom7EventData = args.filter(function (data, dataIndex) {
8971        return dataIndex > 0;
8972      });
8973      el.dispatchEvent(evt);
8974      el.dom7EventData = [];
8975      delete el.dom7EventData;
8976    }
8977  }
8978  return this;
8979}
8980function transitionEnd(callback) {
8981  var events = ['webkitTransitionEnd', 'transitionend'];
8982  var dom = this;
8983  var i = void 0;
8984  function fireCallBack(e) {
8985    /* jshint validthis:true */
8986    if (e.target !== this) return;
8987    callback.call(this, e);
8988    for (i = 0; i < events.length; i += 1) {
8989      dom.off(events[i], fireCallBack);
8990    }
8991  }
8992  if (callback) {
8993    for (i = 0; i < events.length; i += 1) {
8994      dom.on(events[i], fireCallBack);
8995    }
8996  }
8997  return this;
8998}
8999function animationEnd(callback) {
9000  var events = ['webkitAnimationEnd', 'animationend'];
9001  var dom = this;
9002  var i = void 0;
9003  function fireCallBack(e) {
9004    if (e.target !== this) return;
9005    callback.call(this, e);
9006    for (i = 0; i < events.length; i += 1) {
9007      dom.off(events[i], fireCallBack);
9008    }
9009  }
9010  if (callback) {
9011    for (i = 0; i < events.length; i += 1) {
9012      dom.on(events[i], fireCallBack);
9013    }
9014  }
9015  return this;
9016}
9017// Sizing/Styles
9018function width() {
9019  if (this[0] === ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"]) {
9020    return ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"].innerWidth;
9021  }
9022
9023  if (this.length > 0) {
9024    return parseFloat(this.css('width'));
9025  }
9026
9027  return null;
9028}
9029function outerWidth(includeMargins) {
9030  if (this.length > 0) {
9031    if (includeMargins) {
9032      // eslint-disable-next-line
9033      var _styles = this.styles();
9034      return this[0].offsetWidth + parseFloat(_styles.getPropertyValue('margin-right')) + parseFloat(_styles.getPropertyValue('margin-left'));
9035    }
9036    return this[0].offsetWidth;
9037  }
9038  return null;
9039}
9040function height() {
9041  if (this[0] === ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"]) {
9042    return ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"].innerHeight;
9043  }
9044
9045  if (this.length > 0) {
9046    return parseFloat(this.css('height'));
9047  }
9048
9049  return null;
9050}
9051function outerHeight(includeMargins) {
9052  if (this.length > 0) {
9053    if (includeMargins) {
9054      // eslint-disable-next-line
9055      var _styles2 = this.styles();
9056      return this[0].offsetHeight + parseFloat(_styles2.getPropertyValue('margin-top')) + parseFloat(_styles2.getPropertyValue('margin-bottom'));
9057    }
9058    return this[0].offsetHeight;
9059  }
9060  return null;
9061}
9062function offset() {
9063  if (this.length > 0) {
9064    var el = this[0];
9065    var box = el.getBoundingClientRect();
9066    var body = ssr_window__WEBPACK_IMPORTED_MODULE_0__["document"].body;
9067    var clientTop = el.clientTop || body.clientTop || 0;
9068    var clientLeft = el.clientLeft || body.clientLeft || 0;
9069    var _scrollTop = el === ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"] ? ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"].scrollY : el.scrollTop;
9070    var _scrollLeft = el === ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"] ? ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"].scrollX : el.scrollLeft;
9071    return {
9072      top: box.top + _scrollTop - clientTop,
9073      left: box.left + _scrollLeft - clientLeft
9074    };
9075  }
9076
9077  return null;
9078}
9079function hide() {
9080  for (var i = 0; i < this.length; i += 1) {
9081    this[i].style.display = 'none';
9082  }
9083  return this;
9084}
9085function show() {
9086  for (var i = 0; i < this.length; i += 1) {
9087    var el = this[i];
9088    if (el.style.display === 'none') {
9089      el.style.display = '';
9090    }
9091    if (ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"].getComputedStyle(el, null).getPropertyValue('display') === 'none') {
9092      // Still not visible
9093      el.style.display = 'block';
9094    }
9095  }
9096  return this;
9097}
9098function styles() {
9099  if (this[0]) return ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"].getComputedStyle(this[0], null);
9100  return {};
9101}
9102function css(props, value) {
9103  var i = void 0;
9104  if (arguments.length === 1) {
9105    if (typeof props === 'string') {
9106      if (this[0]) return ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"].getComputedStyle(this[0], null).getPropertyValue(props);
9107    } else {
9108      for (i = 0; i < this.length; i += 1) {
9109        // eslint-disable-next-line
9110        for (var _prop in props) {
9111          this[i].style[_prop] = props[_prop];
9112        }
9113      }
9114      return this;
9115    }
9116  }
9117  if (arguments.length === 2 && typeof props === 'string') {
9118    for (i = 0; i < this.length; i += 1) {
9119      this[i].style[props] = value;
9120    }
9121    return this;
9122  }
9123  return this;
9124}
9125
9126// Dom manipulation
9127function toArray() {
9128  var arr = [];
9129  for (var i = 0; i < this.length; i += 1) {
9130    arr.push(this[i]);
9131  }
9132  return arr;
9133}
9134// Iterate over the collection passing elements to `callback`
9135function each(callback) {
9136  // Don't bother continuing without a callback
9137  if (!callback) return this;
9138  // Iterate over the current collection
9139  for (var i = 0; i < this.length; i += 1) {
9140    // If the callback returns false
9141    if (callback.call(this[i], i, this[i]) === false) {
9142      // End the loop early
9143      return this;
9144    }
9145  }
9146  // Return `this` to allow chained DOM operations
9147  return this;
9148}
9149function forEach(callback) {
9150  // Don't bother continuing without a callback
9151  if (!callback) return this;
9152  // Iterate over the current collection
9153  for (var i = 0; i < this.length; i += 1) {
9154    // If the callback returns false
9155    if (callback.call(this[i], this[i], i) === false) {
9156      // End the loop early
9157      return this;
9158    }
9159  }
9160  // Return `this` to allow chained DOM operations
9161  return this;
9162}
9163function filter(callback) {
9164  var matchedItems = [];
9165  var dom = this;
9166  for (var i = 0; i < dom.length; i += 1) {
9167    if (callback.call(dom[i], i, dom[i])) matchedItems.push(dom[i]);
9168  }
9169  return new Dom7(matchedItems);
9170}
9171function map(callback) {
9172  var modifiedItems = [];
9173  var dom = this;
9174  for (var i = 0; i < dom.length; i += 1) {
9175    modifiedItems.push(callback.call(dom[i], i, dom[i]));
9176  }
9177  return new Dom7(modifiedItems);
9178}
9179// eslint-disable-next-line
9180function html(html) {
9181  if (typeof html === 'undefined') {
9182    return this[0] ? this[0].innerHTML : undefined;
9183  }
9184
9185  for (var i = 0; i < this.length; i += 1) {
9186    this[i].innerHTML = html;
9187  }
9188  return this;
9189}
9190// eslint-disable-next-line
9191function text(text) {
9192  if (typeof text === 'undefined') {
9193    if (this[0]) {
9194      return this[0].textContent.trim();
9195    }
9196    return null;
9197  }
9198
9199  for (var i = 0; i < this.length; i += 1) {
9200    this[i].textContent = text;
9201  }
9202  return this;
9203}
9204function is(selector) {
9205  var el = this[0];
9206  var compareWith = void 0;
9207  var i = void 0;
9208  if (!el || typeof selector === 'undefined') return false;
9209  if (typeof selector === 'string') {
9210    if (el.matches) return el.matches(selector);else if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);else if (el.msMatchesSelector) return el.msMatchesSelector(selector);
9211
9212    compareWith = $(selector);
9213    for (i = 0; i < compareWith.length; i += 1) {
9214      if (compareWith[i] === el) return true;
9215    }
9216    return false;
9217  } else if (selector === ssr_window__WEBPACK_IMPORTED_MODULE_0__["document"]) return el === ssr_window__WEBPACK_IMPORTED_MODULE_0__["document"];else if (selector === ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"]) return el === ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"];
9218
9219  if (selector.nodeType || selector instanceof Dom7) {
9220    compareWith = selector.nodeType ? [selector] : selector;
9221    for (i = 0; i < compareWith.length; i += 1) {
9222      if (compareWith[i] === el) return true;
9223    }
9224    return false;
9225  }
9226  return false;
9227}
9228function indexOf(el) {
9229  for (var i = 0; i < this.length; i += 1) {
9230    if (this[i] === el) return i;
9231  }
9232  return -1;
9233}
9234function index() {
9235  var child = this[0];
9236  var i = void 0;
9237  if (child) {
9238    i = 0;
9239    // eslint-disable-next-line
9240    while ((child = child.previousSibling) !== null) {
9241      if (child.nodeType === 1) i += 1;
9242    }
9243    return i;
9244  }
9245  return undefined;
9246}
9247// eslint-disable-next-line
9248function eq(index) {
9249  if (typeof index === 'undefined') return this;
9250  var length = this.length;
9251  var returnIndex = void 0;
9252  if (index > length - 1) {
9253    return new Dom7([]);
9254  }
9255  if (index < 0) {
9256    returnIndex = length + index;
9257    if (returnIndex < 0) return new Dom7([]);
9258    return new Dom7([this[returnIndex]]);
9259  }
9260  return new Dom7([this[index]]);
9261}
9262function append() {
9263  var newChild = void 0;
9264
9265  for (var k = 0; k < arguments.length; k += 1) {
9266    newChild = arguments.length <= k ? undefined : arguments[k];
9267    for (var i = 0; i < this.length; i += 1) {
9268      if (typeof newChild === 'string') {
9269        var tempDiv = ssr_window__WEBPACK_IMPORTED_MODULE_0__["document"].createElement('div');
9270        tempDiv.innerHTML = newChild;
9271        while (tempDiv.firstChild) {
9272          this[i].appendChild(tempDiv.firstChild);
9273        }
9274      } else if (newChild instanceof Dom7) {
9275        for (var j = 0; j < newChild.length; j += 1) {
9276          this[i].appendChild(newChild[j]);
9277        }
9278      } else {
9279        this[i].appendChild(newChild);
9280      }
9281    }
9282  }
9283
9284  return this;
9285}
9286// eslint-disable-next-line
9287function appendTo(parent) {
9288  $(parent).append(this);
9289  return this;
9290}
9291function prepend(newChild) {
9292  var i = void 0;
9293  var j = void 0;
9294  for (i = 0; i < this.length; i += 1) {
9295    if (typeof newChild === 'string') {
9296      var tempDiv = ssr_window__WEBPACK_IMPORTED_MODULE_0__["document"].createElement('div');
9297      tempDiv.innerHTML = newChild;
9298      for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {
9299        this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);
9300      }
9301    } else if (newChild instanceof Dom7) {
9302      for (j = 0; j < newChild.length; j += 1) {
9303        this[i].insertBefore(newChild[j], this[i].childNodes[0]);
9304      }
9305    } else {
9306      this[i].insertBefore(newChild, this[i].childNodes[0]);
9307    }
9308  }
9309  return this;
9310}
9311// eslint-disable-next-line
9312function prependTo(parent) {
9313  $(parent).prepend(this);
9314  return this;
9315}
9316function insertBefore(selector) {
9317  var before = $(selector);
9318  for (var i = 0; i < this.length; i += 1) {
9319    if (before.length === 1) {
9320      before[0].parentNode.insertBefore(this[i], before[0]);
9321    } else if (before.length > 1) {
9322      for (var j = 0; j < before.length; j += 1) {
9323        before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);
9324      }
9325    }
9326  }
9327}
9328function insertAfter(selector) {
9329  var after = $(selector);
9330  for (var i = 0; i < this.length; i += 1) {
9331    if (after.length === 1) {
9332      after[0].parentNode.insertBefore(this[i], after[0].nextSibling);
9333    } else if (after.length > 1) {
9334      for (var j = 0; j < after.length; j += 1) {
9335        after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);
9336      }
9337    }
9338  }
9339}
9340function next(selector) {
9341  if (this.length > 0) {
9342    if (selector) {
9343      if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {
9344        return new Dom7([this[0].nextElementSibling]);
9345      }
9346      return new Dom7([]);
9347    }
9348
9349    if (this[0].nextElementSibling) return new Dom7([this[0].nextElementSibling]);
9350    return new Dom7([]);
9351  }
9352  return new Dom7([]);
9353}
9354function nextAll(selector) {
9355  var nextEls = [];
9356  var el = this[0];
9357  if (!el) return new Dom7([]);
9358  while (el.nextElementSibling) {
9359    var _next = el.nextElementSibling; // eslint-disable-line
9360    if (selector) {
9361      if ($(_next).is(selector)) nextEls.push(_next);
9362    } else nextEls.push(_next);
9363    el = _next;
9364  }
9365  return new Dom7(nextEls);
9366}
9367function prev(selector) {
9368  if (this.length > 0) {
9369    var el = this[0];
9370    if (selector) {
9371      if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {
9372        return new Dom7([el.previousElementSibling]);
9373      }
9374      return new Dom7([]);
9375    }
9376
9377    if (el.previousElementSibling) return new Dom7([el.previousElementSibling]);
9378    return new Dom7([]);
9379  }
9380  return new Dom7([]);
9381}
9382function prevAll(selector) {
9383  var prevEls = [];
9384  var el = this[0];
9385  if (!el) return new Dom7([]);
9386  while (el.previousElementSibling) {
9387    var _prev = el.previousElementSibling; // eslint-disable-line
9388    if (selector) {
9389      if ($(_prev).is(selector)) prevEls.push(_prev);
9390    } else prevEls.push(_prev);
9391    el = _prev;
9392  }
9393  return new Dom7(prevEls);
9394}
9395function siblings(selector) {
9396  return this.nextAll(selector).add(this.prevAll(selector));
9397}
9398function parent(selector) {
9399  var parents = []; // eslint-disable-line
9400  for (var i = 0; i < this.length; i += 1) {
9401    if (this[i].parentNode !== null) {
9402      if (selector) {
9403        if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);
9404      } else {
9405        parents.push(this[i].parentNode);
9406      }
9407    }
9408  }
9409  return $(unique(parents));
9410}
9411function parents(selector) {
9412  var parents = []; // eslint-disable-line
9413  for (var i = 0; i < this.length; i += 1) {
9414    var _parent = this[i].parentNode; // eslint-disable-line
9415    while (_parent) {
9416      if (selector) {
9417        if ($(_parent).is(selector)) parents.push(_parent);
9418      } else {
9419        parents.push(_parent);
9420      }
9421      _parent = _parent.parentNode;
9422    }
9423  }
9424  return $(unique(parents));
9425}
9426function closest(selector) {
9427  var closest = this; // eslint-disable-line
9428  if (typeof selector === 'undefined') {
9429    return new Dom7([]);
9430  }
9431  if (!closest.is(selector)) {
9432    closest = closest.parents(selector).eq(0);
9433  }
9434  return closest;
9435}
9436function find(selector) {
9437  var foundElements = [];
9438  for (var i = 0; i < this.length; i += 1) {
9439    var found = this[i].querySelectorAll(selector);
9440    for (var j = 0; j < found.length; j += 1) {
9441      foundElements.push(found[j]);
9442    }
9443  }
9444  return new Dom7(foundElements);
9445}
9446function children(selector) {
9447  var children = []; // eslint-disable-line
9448  for (var i = 0; i < this.length; i += 1) {
9449    var childNodes = this[i].childNodes;
9450
9451    for (var j = 0; j < childNodes.length; j += 1) {
9452      if (!selector) {
9453        if (childNodes[j].nodeType === 1) children.push(childNodes[j]);
9454      } else if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) {
9455        children.push(childNodes[j]);
9456      }
9457    }
9458  }
9459  return new Dom7(unique(children));
9460}
9461function remove() {
9462  for (var i = 0; i < this.length; i += 1) {
9463    if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);
9464  }
9465  return this;
9466}
9467function detach() {
9468  return this.remove();
9469}
9470function add() {
9471  var dom = this;
9472  var i = void 0;
9473  var j = void 0;
9474
9475  for (var _len6 = arguments.length, args = Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
9476    args[_key6] = arguments[_key6];
9477  }
9478
9479  for (i = 0; i < args.length; i += 1) {
9480    var toAdd = $(args[i]);
9481    for (j = 0; j < toAdd.length; j += 1) {
9482      dom[dom.length] = toAdd[j];
9483      dom.length += 1;
9484    }
9485  }
9486  return dom;
9487}
9488function empty() {
9489  for (var i = 0; i < this.length; i += 1) {
9490    var el = this[i];
9491    if (el.nodeType === 1) {
9492      for (var j = 0; j < el.childNodes.length; j += 1) {
9493        if (el.childNodes[j].parentNode) {
9494          el.childNodes[j].parentNode.removeChild(el.childNodes[j]);
9495        }
9496      }
9497      el.textContent = '';
9498    }
9499  }
9500  return this;
9501}
9502
9503function scrollTo() {
9504  for (var _len7 = arguments.length, args = Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {
9505    args[_key7] = arguments[_key7];
9506  }
9507
9508  var left = args[0],
9509      top = args[1],
9510      duration = args[2],
9511      easing = args[3],
9512      callback = args[4];
9513
9514  if (args.length === 4 && typeof easing === 'function') {
9515    callback = easing;
9516    left = args[0];
9517    top = args[1];
9518    duration = args[2];
9519    callback = args[3];
9520    easing = args[4];
9521  }
9522  if (typeof easing === 'undefined') easing = 'swing';
9523
9524  return this.each(function animate() {
9525    var el = this;
9526    var currentTop = void 0;
9527    var currentLeft = void 0;
9528    var maxTop = void 0;
9529    var maxLeft = void 0;
9530    var newTop = void 0;
9531    var newLeft = void 0;
9532    var scrollTop = void 0; // eslint-disable-line
9533    var scrollLeft = void 0; // eslint-disable-line
9534    var animateTop = top > 0 || top === 0;
9535    var animateLeft = left > 0 || left === 0;
9536    if (typeof easing === 'undefined') {
9537      easing = 'swing';
9538    }
9539    if (animateTop) {
9540      currentTop = el.scrollTop;
9541      if (!duration) {
9542        el.scrollTop = top;
9543      }
9544    }
9545    if (animateLeft) {
9546      currentLeft = el.scrollLeft;
9547      if (!duration) {
9548        el.scrollLeft = left;
9549      }
9550    }
9551    if (!duration) return;
9552    if (animateTop) {
9553      maxTop = el.scrollHeight - el.offsetHeight;
9554      newTop = Math.max(Math.min(top, maxTop), 0);
9555    }
9556    if (animateLeft) {
9557      maxLeft = el.scrollWidth - el.offsetWidth;
9558      newLeft = Math.max(Math.min(left, maxLeft), 0);
9559    }
9560    var startTime = null;
9561    if (animateTop && newTop === currentTop) animateTop = false;
9562    if (animateLeft && newLeft === currentLeft) animateLeft = false;
9563    function render() {
9564      var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Date().getTime();
9565
9566      if (startTime === null) {
9567        startTime = time;
9568      }
9569      var progress = Math.max(Math.min((time - startTime) / duration, 1), 0);
9570      var easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;
9571      var done = void 0;
9572      if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);
9573      if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);
9574      if (animateTop && newTop > currentTop && scrollTop >= newTop) {
9575        el.scrollTop = newTop;
9576        done = true;
9577      }
9578      if (animateTop && newTop < currentTop && scrollTop <= newTop) {
9579        el.scrollTop = newTop;
9580        done = true;
9581      }
9582      if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {
9583        el.scrollLeft = newLeft;
9584        done = true;
9585      }
9586      if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {
9587        el.scrollLeft = newLeft;
9588        done = true;
9589      }
9590
9591      if (done) {
9592        if (callback) callback();
9593        return;
9594      }
9595      if (animateTop) el.scrollTop = scrollTop;
9596      if (animateLeft) el.scrollLeft = scrollLeft;
9597      requestAnimationFrame(render);
9598    }
9599    requestAnimationFrame(render);
9600  });
9601}
9602// scrollTop(top, duration, easing, callback) {
9603function scrollTop() {
9604  for (var _len8 = arguments.length, args = Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {
9605    args[_key8] = arguments[_key8];
9606  }
9607
9608  var top = args[0],
9609      duration = args[1],
9610      easing = args[2],
9611      callback = args[3];
9612
9613  if (args.length === 3 && typeof easing === 'function') {
9614    top = args[0];
9615    duration = args[1];
9616    callback = args[2];
9617    easing = args[3];
9618  }
9619  var dom = this;
9620  if (typeof top === 'undefined') {
9621    if (dom.length > 0) return dom[0].scrollTop;
9622    return null;
9623  }
9624  return dom.scrollTo(undefined, top, duration, easing, callback);
9625}
9626function scrollLeft() {
9627  for (var _len9 = arguments.length, args = Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {
9628    args[_key9] = arguments[_key9];
9629  }
9630
9631  var left = args[0],
9632      duration = args[1],
9633      easing = args[2],
9634      callback = args[3];
9635
9636  if (args.length === 3 && typeof easing === 'function') {
9637    left = args[0];
9638    duration = args[1];
9639    callback = args[2];
9640    easing = args[3];
9641  }
9642  var dom = this;
9643  if (typeof left === 'undefined') {
9644    if (dom.length > 0) return dom[0].scrollLeft;
9645    return null;
9646  }
9647  return dom.scrollTo(left, undefined, duration, easing, callback);
9648}
9649
9650function animate(initialProps, initialParams) {
9651  var els = this;
9652  var a = {
9653    props: Object.assign({}, initialProps),
9654    params: Object.assign({
9655      duration: 300,
9656      easing: 'swing' // or 'linear'
9657      /* Callbacks
9658      begin(elements)
9659      complete(elements)
9660      progress(elements, complete, remaining, start, tweenValue)
9661      */
9662    }, initialParams),
9663
9664    elements: els,
9665    animating: false,
9666    que: [],
9667
9668    easingProgress: function easingProgress(easing, progress) {
9669      if (easing === 'swing') {
9670        return 0.5 - Math.cos(progress * Math.PI) / 2;
9671      }
9672      if (typeof easing === 'function') {
9673        return easing(progress);
9674      }
9675      return progress;
9676    },
9677    stop: function stop() {
9678      if (a.frameId) {
9679        cancelAnimationFrame(a.frameId);
9680      }
9681      a.animating = false;
9682      a.elements.each(function (index, el) {
9683        var element = el;
9684        delete element.dom7AnimateInstance;
9685      });
9686      a.que = [];
9687    },
9688    done: function done(complete) {
9689      a.animating = false;
9690      a.elements.each(function (index, el) {
9691        var element = el;
9692        delete element.dom7AnimateInstance;
9693      });
9694      if (complete) complete(els);
9695      if (a.que.length > 0) {
9696        var que = a.que.shift();
9697        a.animate(que[0], que[1]);
9698      }
9699    },
9700    animate: function animate(props, params) {
9701      if (a.animating) {
9702        a.que.push([props, params]);
9703        return a;
9704      }
9705      var elements = [];
9706
9707      // Define & Cache Initials & Units
9708      a.elements.each(function (index, el) {
9709        var initialFullValue = void 0;
9710        var initialValue = void 0;
9711        var unit = void 0;
9712        var finalValue = void 0;
9713        var finalFullValue = void 0;
9714
9715        if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;
9716
9717        elements[index] = {
9718          container: el
9719        };
9720        Object.keys(props).forEach(function (prop) {
9721          initialFullValue = ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"].getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');
9722          initialValue = parseFloat(initialFullValue);
9723          unit = initialFullValue.replace(initialValue, '');
9724          finalValue = parseFloat(props[prop]);
9725          finalFullValue = props[prop] + unit;
9726          elements[index][prop] = {
9727            initialFullValue: initialFullValue,
9728            initialValue: initialValue,
9729            unit: unit,
9730            finalValue: finalValue,
9731            finalFullValue: finalFullValue,
9732            currentValue: initialValue
9733          };
9734        });
9735      });
9736
9737      var startTime = null;
9738      var time = void 0;
9739      var elementsDone = 0;
9740      var propsDone = 0;
9741      var done = void 0;
9742      var began = false;
9743
9744      a.animating = true;
9745
9746      function render() {
9747        time = new Date().getTime();
9748        var progress = void 0;
9749        var easeProgress = void 0;
9750        // let el;
9751        if (!began) {
9752          began = true;
9753          if (params.begin) params.begin(els);
9754        }
9755        if (startTime === null) {
9756          startTime = time;
9757        }
9758        if (params.progress) {
9759          // eslint-disable-next-line
9760          params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);
9761        }
9762
9763        elements.forEach(function (element) {
9764          var el = element;
9765          if (done || el.done) return;
9766          Object.keys(props).forEach(function (prop) {
9767            if (done || el.done) return;
9768            progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);
9769            easeProgress = a.easingProgress(params.easing, progress);
9770            var _el$prop = el[prop],
9771                initialValue = _el$prop.initialValue,
9772                finalValue = _el$prop.finalValue,
9773                unit = _el$prop.unit;
9774
9775            el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);
9776            var currentValue = el[prop].currentValue;
9777
9778            if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {
9779              el.container.style[prop] = finalValue + unit;
9780              propsDone += 1;
9781              if (propsDone === Object.keys(props).length) {
9782                el.done = true;
9783                elementsDone += 1;
9784              }
9785              if (elementsDone === elements.length) {
9786                done = true;
9787              }
9788            }
9789            if (done) {
9790              a.done(params.complete);
9791              return;
9792            }
9793            el.container.style[prop] = currentValue + unit;
9794          });
9795        });
9796        if (done) return;
9797        // Then call
9798        a.frameId = requestAnimationFrame(render);
9799      }
9800      a.frameId = requestAnimationFrame(render);
9801      return a;
9802    }
9803  };
9804
9805  if (a.elements.length === 0) {
9806    return els;
9807  }
9808
9809  var animateInstance = void 0;
9810  for (var i = 0; i < a.elements.length; i += 1) {
9811    if (a.elements[i].dom7AnimateInstance) {
9812      animateInstance = a.elements[i].dom7AnimateInstance;
9813    } else a.elements[i].dom7AnimateInstance = a;
9814  }
9815  if (!animateInstance) {
9816    animateInstance = a;
9817  }
9818
9819  if (initialProps === 'stop') {
9820    animateInstance.stop();
9821  } else {
9822    animateInstance.animate(a.props, a.params);
9823  }
9824
9825  return els;
9826}
9827
9828function stop() {
9829  var els = this;
9830  for (var i = 0; i < els.length; i += 1) {
9831    if (els[i].dom7AnimateInstance) {
9832      els[i].dom7AnimateInstance.stop();
9833    }
9834  }
9835}
9836
9837var noTrigger = 'resize scroll'.split(' ');
9838function eventShortcut(name) {
9839  for (var _len10 = arguments.length, args = Array(_len10 > 1 ? _len10 - 1 : 0), _key10 = 1; _key10 < _len10; _key10++) {
9840    args[_key10 - 1] = arguments[_key10];
9841  }
9842
9843  if (typeof args[0] === 'undefined') {
9844    for (var i = 0; i < this.length; i += 1) {
9845      if (noTrigger.indexOf(name) < 0) {
9846        if (name in this[i]) this[i][name]();else {
9847          $(this[i]).trigger(name);
9848        }
9849      }
9850    }
9851    return this;
9852  }
9853  return this.on.apply(this, [name].concat(args));
9854}
9855
9856function click() {
9857  for (var _len11 = arguments.length, args = Array(_len11), _key11 = 0; _key11 < _len11; _key11++) {
9858    args[_key11] = arguments[_key11];
9859  }
9860
9861  return eventShortcut.bind(this).apply(undefined, ['click'].concat(args));
9862}
9863function blur() {
9864  for (var _len12 = arguments.length, args = Array(_len12), _key12 = 0; _key12 < _len12; _key12++) {
9865    args[_key12] = arguments[_key12];
9866  }
9867
9868  return eventShortcut.bind(this).apply(undefined, ['blur'].concat(args));
9869}
9870function focus() {
9871  for (var _len13 = arguments.length, args = Array(_len13), _key13 = 0; _key13 < _len13; _key13++) {
9872    args[_key13] = arguments[_key13];
9873  }
9874
9875  return eventShortcut.bind(this).apply(undefined, ['focus'].concat(args));
9876}
9877function focusin() {
9878  for (var _len14 = arguments.length, args = Array(_len14), _key14 = 0; _key14 < _len14; _key14++) {
9879    args[_key14] = arguments[_key14];
9880  }
9881
9882  return eventShortcut.bind(this).apply(undefined, ['focusin'].concat(args));
9883}
9884function focusout() {
9885  for (var _len15 = arguments.length, args = Array(_len15), _key15 = 0; _key15 < _len15; _key15++) {
9886    args[_key15] = arguments[_key15];
9887  }
9888
9889  return eventShortcut.bind(this).apply(undefined, ['focusout'].concat(args));
9890}
9891function keyup() {
9892  for (var _len16 = arguments.length, args = Array(_len16), _key16 = 0; _key16 < _len16; _key16++) {
9893    args[_key16] = arguments[_key16];
9894  }
9895
9896  return eventShortcut.bind(this).apply(undefined, ['keyup'].concat(args));
9897}
9898function keydown() {
9899  for (var _len17 = arguments.length, args = Array(_len17), _key17 = 0; _key17 < _len17; _key17++) {
9900    args[_key17] = arguments[_key17];
9901  }
9902
9903  return eventShortcut.bind(this).apply(undefined, ['keydown'].concat(args));
9904}
9905function keypress() {
9906  for (var _len18 = arguments.length, args = Array(_len18), _key18 = 0; _key18 < _len18; _key18++) {
9907    args[_key18] = arguments[_key18];
9908  }
9909
9910  return eventShortcut.bind(this).apply(undefined, ['keypress'].concat(args));
9911}
9912function submit() {
9913  for (var _len19 = arguments.length, args = Array(_len19), _key19 = 0; _key19 < _len19; _key19++) {
9914    args[_key19] = arguments[_key19];
9915  }
9916
9917  return eventShortcut.bind(this).apply(undefined, ['submit'].concat(args));
9918}
9919function change() {
9920  for (var _len20 = arguments.length, args = Array(_len20), _key20 = 0; _key20 < _len20; _key20++) {
9921    args[_key20] = arguments[_key20];
9922  }
9923
9924  return eventShortcut.bind(this).apply(undefined, ['change'].concat(args));
9925}
9926function mousedown() {
9927  for (var _len21 = arguments.length, args = Array(_len21), _key21 = 0; _key21 < _len21; _key21++) {
9928    args[_key21] = arguments[_key21];
9929  }
9930
9931  return eventShortcut.bind(this).apply(undefined, ['mousedown'].concat(args));
9932}
9933function mousemove() {
9934  for (var _len22 = arguments.length, args = Array(_len22), _key22 = 0; _key22 < _len22; _key22++) {
9935    args[_key22] = arguments[_key22];
9936  }
9937
9938  return eventShortcut.bind(this).apply(undefined, ['mousemove'].concat(args));
9939}
9940function mouseup() {
9941  for (var _len23 = arguments.length, args = Array(_len23), _key23 = 0; _key23 < _len23; _key23++) {
9942    args[_key23] = arguments[_key23];
9943  }
9944
9945  return eventShortcut.bind(this).apply(undefined, ['mouseup'].concat(args));
9946}
9947function mouseenter() {
9948  for (var _len24 = arguments.length, args = Array(_len24), _key24 = 0; _key24 < _len24; _key24++) {
9949    args[_key24] = arguments[_key24];
9950  }
9951
9952  return eventShortcut.bind(this).apply(undefined, ['mouseenter'].concat(args));
9953}
9954function mouseleave() {
9955  for (var _len25 = arguments.length, args = Array(_len25), _key25 = 0; _key25 < _len25; _key25++) {
9956    args[_key25] = arguments[_key25];
9957  }
9958
9959  return eventShortcut.bind(this).apply(undefined, ['mouseleave'].concat(args));
9960}
9961function mouseout() {
9962  for (var _len26 = arguments.length, args = Array(_len26), _key26 = 0; _key26 < _len26; _key26++) {
9963    args[_key26] = arguments[_key26];
9964  }
9965
9966  return eventShortcut.bind(this).apply(undefined, ['mouseout'].concat(args));
9967}
9968function mouseover() {
9969  for (var _len27 = arguments.length, args = Array(_len27), _key27 = 0; _key27 < _len27; _key27++) {
9970    args[_key27] = arguments[_key27];
9971  }
9972
9973  return eventShortcut.bind(this).apply(undefined, ['mouseover'].concat(args));
9974}
9975function touchstart() {
9976  for (var _len28 = arguments.length, args = Array(_len28), _key28 = 0; _key28 < _len28; _key28++) {
9977    args[_key28] = arguments[_key28];
9978  }
9979
9980  return eventShortcut.bind(this).apply(undefined, ['touchstart'].concat(args));
9981}
9982function touchend() {
9983  for (var _len29 = arguments.length, args = Array(_len29), _key29 = 0; _key29 < _len29; _key29++) {
9984    args[_key29] = arguments[_key29];
9985  }
9986
9987  return eventShortcut.bind(this).apply(undefined, ['touchend'].concat(args));
9988}
9989function touchmove() {
9990  for (var _len30 = arguments.length, args = Array(_len30), _key30 = 0; _key30 < _len30; _key30++) {
9991    args[_key30] = arguments[_key30];
9992  }
9993
9994  return eventShortcut.bind(this).apply(undefined, ['touchmove'].concat(args));
9995}
9996function resize() {
9997  for (var _len31 = arguments.length, args = Array(_len31), _key31 = 0; _key31 < _len31; _key31++) {
9998    args[_key31] = arguments[_key31];
9999  }
10000
10001  return eventShortcut.bind(this).apply(undefined, ['resize'].concat(args));
10002}
10003function scroll() {
10004  for (var _len32 = arguments.length, args = Array(_len32), _key32 = 0; _key32 < _len32; _key32++) {
10005    args[_key32] = arguments[_key32];
10006  }
10007
10008  return eventShortcut.bind(this).apply(undefined, ['scroll'].concat(args));
10009}
10010
10011
10012
10013/***/ }),
10014
vendor: 27,847 bytes, lines 10015-10844
10015/***/ "./node_modules/dom7/node_modules/ssr-window/dist/ssr-window.esm.js":
10016/*!**************************************************************************!*\
10017  !*** ./node_modules/dom7/node_modules/ssr-window/dist/ssr-window.esm.js ***!
10018  \**************************************************************************/
10019/*! exports provided: document, extend, window */
10020/***/ (function(module, __webpack_exports__, __webpack_require__) {
10021
10022"use strict";
10023__webpack_require__.r(__webpack_exports__);
10024/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "document", function() { return doc; });
10025/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "extend", function() { return extend; });
10026/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "window", function() { return win; });
10027/**
10028 * SSR Window 2.0.0
10029 * Better handling for window object in SSR environment
10030 * https://github.com/nolimits4web/ssr-window
10031 *
10032 * Copyright 2020, Vladimir Kharlampidi
10033 *
10034 * Licensed under MIT
10035 *
10036 * Released on: May 12, 2020
10037 */
10038/* eslint-disable no-param-reassign */
10039function isObject(obj) {
10040    return (obj !== null &&
10041        typeof obj === 'object' &&
10042        'constructor' in obj &&
10043        obj.constructor === Object);
10044}
10045function extend(target, src) {
10046    if (target === void 0) { target = {}; }
10047    if (src === void 0) { src = {}; }
10048    Object.keys(src).forEach(function (key) {
10049        if (typeof target[key] === 'undefined')
10050            target[key] = src[key];
10051        else if (isObject(src[key]) &&
10052            isObject(target[key]) &&
10053            Object.keys(src[key]).length > 0) {
10054            extend(target[key], src[key]);
10055        }
10056    });
10057}
10058
10059var doc = typeof document !== 'undefined' ? document : {};
10060var ssrDocument = {
10061    body: {},
10062    addEventListener: function () { },
10063    removeEventListener: function () { },
10064    activeElement: {
10065        blur: function () { },
10066        nodeName: '',
10067    },
10068    querySelector: function () {
10069        return null;
10070    },
10071    querySelectorAll: function () {
10072        return [];
10073    },
10074    getElementById: function () {
10075        return null;
10076    },
10077    createEvent: function () {
10078        return {
10079            initEvent: function () { },
10080        };
10081    },
10082    createElement: function () {
10083        return {
10084            children: [],
10085            childNodes: [],
10086            style: {},
10087            setAttribute: function () { },
10088            getElementsByTagName: function () {
10089                return [];
10090            },
10091        };
10092    },
10093    createElementNS: function () {
10094        return {};
10095    },
10096    importNode: function () {
10097        return null;
10098    },
10099    location: {
10100        hash: '',
10101        host: '',
10102        hostname: '',
10103        href: '',
10104        origin: '',
10105        pathname: '',
10106        protocol: '',
10107        search: '',
10108    },
10109};
10110extend(doc, ssrDocument);
10111
10112var win = typeof window !== 'undefined' ? window : {};
10113var ssrWindow = {
10114    document: ssrDocument,
10115    navigator: {
10116        userAgent: '',
10117    },
10118    location: {
10119        hash: '',
10120        host: '',
10121        hostname: '',
10122        href: '',
10123        origin: '',
10124        pathname: '',
10125        protocol: '',
10126        search: '',
10127    },
10128    history: {
10129        replaceState: function () { },
10130        pushState: function () { },
10131        go: function () { },
10132        back: function () { },
10133    },
10134    CustomEvent: function CustomEvent() {
10135        return this;
10136    },
10137    addEventListener: function () { },
10138    removeEventListener: function () { },
10139    getComputedStyle: function () {
10140        return {
10141            getPropertyValue: function () {
10142                return '';
10143            },
10144        };
10145    },
10146    Image: function () { },
10147    Date: function () { },
10148    screen: {},
10149    setTimeout: function () { },
10150    clearTimeout: function () { },
10151    matchMedia: function () {
10152        return {};
10153    },
10154};
10155extend(win, ssrWindow);
10156
10157
10158
10159
10160/***/ }),
10161
10162/***/ "./node_modules/imports-loader/index.js?define=>false!./node_modules/scrollmagic/scrollmagic/uncompressed/plugins/debug.addIndicators.js":
10163/*!**************************************************************************************************************************************!*\
10164  !*** ./node_modules/imports-loader?define=>false!./node_modules/scrollmagic/scrollmagic/uncompressed/plugins/debug.addIndicators.js ***!
10165  \**************************************************************************************************************************************/
10166/*! no static exports found */
10167/***/ (function(module, exports, __webpack_require__) {
10168
10169/*** IMPORTS FROM imports-loader ***/
10170var define = false;
10171
10172/*!
10173 * ScrollMagic v2.0.6 (2018-10-08)
10174 * The javascript library for magical scroll interactions.
10175 * (c) 2018 Jan Paepke (@janpaepke)
10176 * Project Website: http://scrollmagic.io
10177 * 
10178 * @version 2.0.6
10179 * @license Dual licensed under MIT license and GPL.
10180 * @author Jan Paepke - [email protected]
10181 *
10182 * @file Debug Extension for ScrollMagic.
10183 */
10184/**
10185 * This plugin was formerly known as the ScrollMagic debug extension.
10186 *
10187 * It enables you to add visual indicators to your page, to be able to see exactly when a scene is triggered.
10188 *
10189 * To have access to this extension, please include `plugins/debug.addIndicators.js`.
10190 * @mixin debug.addIndicators
10191 */
10192(function (root, factory) {
10193	if (typeof define === 'function' && define.amd) {
10194		// AMD. Register as an anonymous module.
10195		define(['ScrollMagic'], factory);
10196	} else if (true) {
10197		// CommonJS
10198		factory(__webpack_require__(/*! scrollmagic */ "./node_modules/scrollmagic/scrollmagic/uncompressed/ScrollMagic.js"));
10199	} else {}
10200}(this, function (ScrollMagic) {
10201	"use strict";
10202	var NAMESPACE = "debug.addIndicators";
10203
10204	var
10205	console = window.console || {},
10206		err = Function.prototype.bind.call(console.error || console.log ||
10207		function () {}, console);
10208	if (!ScrollMagic) {
10209		err("(" + NAMESPACE + ") -> ERROR: The ScrollMagic main module could not be found. Please make sure it's loaded before this plugin or use an asynchronous loader like requirejs.");
10210	}
10211
10212	// plugin settings
10213	var
10214	FONT_SIZE = "0.85em",
10215		ZINDEX = "9999",
10216		EDGE_OFFSET = 15; // minimum edge distance, added to indentation
10217
10218	// overall vars
10219	var
10220	_util = ScrollMagic._util,
10221		_autoindex = 0;
10222
10223
10224
10225	ScrollMagic.Scene.extend(function () {
10226		var
10227		Scene = this,
10228			_indicator;
10229
10230		var log = function () {
10231			if (Scene._log) { // not available, when main source minified
10232				Array.prototype.splice.call(arguments, 1, 0, "(" + NAMESPACE + ")", "->");
10233				Scene._log.apply(this, arguments);
10234			}
10235		};
10236
10237		/**
10238		 * Add visual indicators for a ScrollMagic.Scene.  
10239		 * @memberof! debug.addIndicators#
10240		 *
10241		 * @example
10242		 * // add basic indicators
10243		 * scene.addIndicators()
10244		 *
10245		 * // passing options
10246		 * scene.addIndicators({name: "pin scene", colorEnd: "#FFFFFF"});
10247		 *
10248		 * @param {object} [options] - An object containing one or more options for the indicators.
10249		 * @param {(string|object)} [options.parent=undefined] - A selector, DOM Object or a jQuery object that the indicators should be added to.  
10250		 If undefined, the controller's container will be used.
10251		 * @param {number} [options.name=""] - This string will be displayed at the start and end indicators of the scene for identification purposes. If no name is supplied an automatic index will be used.
10252		 * @param {number} [options.indent=0] - Additional position offset for the indicators (useful, when having multiple scenes starting at the same position).
10253		 * @param {string} [options.colorStart=green] - CSS color definition for the start indicator.
10254		 * @param {string} [options.colorEnd=red] - CSS color definition for the end indicator.
10255		 * @param {string} [options.colorTrigger=blue] - CSS color definition for the trigger indicator.
10256		 */
10257		Scene.addIndicators = function (options) {
10258			if (!_indicator) {
10259				var
10260				DEFAULT_OPTIONS = {
10261					name: "",
10262					indent: 0,
10263					parent: undefined,
10264					colorStart: "green",
10265					colorEnd: "red",
10266					colorTrigger: "blue",
10267				};
10268
10269				options = _util.extend({}, DEFAULT_OPTIONS, options);
10270
10271				_autoindex++;
10272				_indicator = new Indicator(Scene, options);
10273
10274				Scene.on("add.plugin_addIndicators", _indicator.add);
10275				Scene.on("remove.plugin_addIndicators", _indicator.remove);
10276				Scene.on("destroy.plugin_addIndicators", Scene.removeIndicators);
10277
10278				// it the scene already has a controller we can start right away.
10279				if (Scene.controller()) {
10280					_indicator.add();
10281				}
10282			}
10283			return Scene;
10284		};
10285
10286		/**
10287		 * Removes visual indicators from a ScrollMagic.Scene.
10288		 * @memberof! debug.addIndicators#
10289		 *
10290		 * @example
10291		 * // remove previously added indicators
10292		 * scene.removeIndicators()
10293		 *
10294		 */
10295		Scene.removeIndicators = function () {
10296			if (_indicator) {
10297				_indicator.remove();
10298				this.off("*.plugin_addIndicators");
10299				_indicator = undefined;
10300			}
10301			return Scene;
10302		};
10303
10304	});
10305
10306
10307/*
10308	 * ----------------------------------------------------------------
10309	 * Extension for controller to store and update related indicators
10310	 * ----------------------------------------------------------------
10311	 */
10312	// add option to globally auto-add indicators to scenes
10313	/**
10314	 * Every ScrollMagic.Controller instance now accepts an additional option.  
10315	 * See {@link ScrollMagic.Controller} for a complete list of the standard options.
10316	 * @memberof! debug.addIndicators#
10317	 * @method new ScrollMagic.Controller(options)
10318	 * @example
10319	 * // make a controller and add indicators to all scenes attached
10320	 * var controller = new ScrollMagic.Controller({addIndicators: true});
10321	 * // this scene will automatically have indicators added to it
10322	 * new ScrollMagic.Scene()
10323	 *                .addTo(controller);
10324	 *
10325	 * @param {object} [options] - Options for the Controller.
10326	 * @param {boolean} [options.addIndicators=false] - If set to `true` every scene that is added to the controller will automatically get indicators added to it.
10327	 */
10328	ScrollMagic.Controller.addOption("addIndicators", false);
10329	// extend Controller
10330	ScrollMagic.Controller.extend(function () {
10331		var
10332		Controller = this,
10333			_info = Controller.info(),
10334			_container = _info.container,
10335			_isDocument = _info.isDocument,
10336			_vertical = _info.vertical,
10337			_indicators = { // container for all indicators and methods
10338				groups: []
10339			};
10340
10341		var log = function () {
10342			if (Controller._log) { // not available, when main source minified
10343				Array.prototype.splice.call(arguments, 1, 0, "(" + NAMESPACE + ")", "->");
10344				Controller._log.apply(this, arguments);
10345			}
10346		};
10347		if (Controller._indicators) {
10348			log(2, "WARNING: Scene already has a property '_indicators', which will be overwritten by plugin.");
10349		}
10350
10351		// add indicators container
10352		this._indicators = _indicators;
10353/*
10354			needed updates:
10355			+++++++++++++++
10356			start/end position on scene shift (handled in Indicator class)
10357			trigger parameters on triggerHook value change (handled in Indicator class)
10358			bounds position on container scroll or resize (to keep alignment to bottom/right)
10359			trigger position on container resize, window resize (if container isn't document) and window scroll (if container isn't document)
10360		*/
10361
10362		// event handler for when associated bounds markers need to be repositioned
10363		var handleBoundsPositionChange = function () {
10364			_indicators.updateBoundsPositions();
10365		};
10366
10367		// event handler for when associated trigger groups need to be repositioned
10368		var handleTriggerPositionChange = function () {
10369			_indicators.updateTriggerGroupPositions();
10370		};
10371
10372		_container.addEventListener("resize", handleTriggerPositionChange);
10373		if (!_isDocument) {
10374			window.addEventListener("resize", handleTriggerPositionChange);
10375			window.addEventListener("scroll", handleTriggerPositionChange);
10376		}
10377		// update all related bounds containers
10378		_container.addEventListener("resize", handleBoundsPositionChange);
10379		_container.addEventListener("scroll", handleBoundsPositionChange);
10380
10381
10382		// updates the position of the bounds container to aligned to the right for vertical containers and to the bottom for horizontal
10383		this._indicators.updateBoundsPositions = function (specificIndicator) {
10384			var // constant for all bounds
10385			groups = specificIndicator ? [_util.extend({}, specificIndicator.triggerGroup, {
10386				members: [specificIndicator]
10387			})] : // create a group with only one element
10388			_indicators.groups,
10389				// use all
10390				g = groups.length,
10391				css = {},
10392				paramPos = _vertical ? "left" : "top",
10393				paramDimension = _vertical ? "width" : "height",
10394				edge = _vertical ? _util.get.scrollLeft(_container) + _util.get.width(_container) - EDGE_OFFSET : _util.get.scrollTop(_container) + _util.get.height(_container) - EDGE_OFFSET,
10395				b, triggerSize, group;
10396			while (g--) { // group loop
10397				group = groups[g];
10398				b = group.members.length;
10399				triggerSize = _util.get[paramDimension](group.element.firstChild);
10400				while (b--) { // indicators loop
10401					css[paramPos] = edge - triggerSize;
10402					_util.css(group.members[b].bounds, css);
10403				}
10404			}
10405		};
10406
10407		// updates the positions of all trigger groups attached to a controller or a specific one, if provided
10408		this._indicators.updateTriggerGroupPositions = function (specificGroup) {
10409			var // constant vars
10410			groups = specificGroup ? [specificGroup] : _indicators.groups,
10411				i = groups.length,
10412				container = _isDocument ? document.body : _container,
10413				containerOffset = _isDocument ? {
10414					top: 0,
10415					left: 0
10416				} : _util.get.offset(container, true),
10417				edge = _vertical ? _util.get.width(_container) - EDGE_OFFSET : _util.get.height(_container) - EDGE_OFFSET,
10418				paramDimension = _vertical ? "width" : "height",
10419				paramTransform = _vertical ? "Y" : "X";
10420			var // changing vars
10421			group, elem, pos, elemSize, transform;
10422			while (i--) {
10423				group = groups[i];
10424				elem = group.element;
10425				pos = group.triggerHook * Controller.info("size");
10426				elemSize = _util.get[paramDimension](elem.firstChild.firstChild);
10427				transform = pos > elemSize ? "translate" + paramTransform + "(-100%)" : "";
10428
10429				_util.css(elem, {
10430					top: containerOffset.top + (_vertical ? pos : edge - group.members[0].options.indent),
10431					left: containerOffset.left + (_vertical ? edge - group.members[0].options.indent : pos)
10432				});
10433				_util.css(elem.firstChild.firstChild, {
10434					"-ms-transform": transform,
10435					"-webkit-transform": transform,
10436					"transform": transform
10437				});
10438			}
10439		};
10440
10441		// updates the label for the group to contain the name, if it only has one member
10442		this._indicators.updateTriggerGroupLabel = function (group) {
10443			var
10444			text = "trigger" + (group.members.length > 1 ? "" : " " + group.members[0].options.name),
10445				elem = group.element.firstChild.firstChild,
10446				doUpdate = elem.textContent !== text;
10447			if (doUpdate) {
10448				elem.textContent = text;
10449				if (_vertical) { // bounds position is dependent on text length, so update
10450					_indicators.updateBoundsPositions();
10451				}
10452			}
10453		};
10454
10455		// add indicators if global option is set
10456		this.addScene = function (newScene) {
10457
10458			if (this._options.addIndicators && newScene instanceof ScrollMagic.Scene && newScene.controller() === Controller) {
10459				newScene.addIndicators();
10460			}
10461			// call original destroy method
10462			this.$super.addScene.apply(this, arguments);
10463		};
10464
10465		// remove all previously set listeners on destroy
10466		this.destroy = function () {
10467			_container.removeEventListener("resize", handleTriggerPositionChange);
10468			if (!_isDocument) {
10469				window.removeEventListener("resize", handleTriggerPositionChange);
10470				window.removeEventListener("scroll", handleTriggerPositionChange);
10471			}
10472			_container.removeEventListener("resize", handleBoundsPositionChange);
10473			_container.removeEventListener("scroll", handleBoundsPositionChange);
10474			// call original destroy method
10475			this.$super.destroy.apply(this, arguments);
10476		};
10477		return Controller;
10478
10479	});
10480
10481/*
10482	 * ----------------------------------------------------------------
10483	 * Internal class for the construction of Indicators
10484	 * ----------------------------------------------------------------
10485	 */
10486	var Indicator = function (Scene, options) {
10487		var
10488		Indicator = this,
10489			_elemBounds = TPL.bounds(),
10490			_elemStart = TPL.start(options.colorStart),
10491			_elemEnd = TPL.end(options.colorEnd),
10492			_boundsContainer = options.parent && _util.get.elements(options.parent)[0],
10493			_vertical, _ctrl;
10494
10495		var log = function () {
10496			if (Scene._log) { // not available, when main source minified
10497				Array.prototype.splice.call(arguments, 1, 0, "(" + NAMESPACE + ")", "->");
10498				Scene._log.apply(this, arguments);
10499			}
10500		};
10501
10502		options.name = options.name || _autoindex;
10503
10504		// prepare bounds elements
10505		_elemStart.firstChild.textContent += " " + options.name;
10506		_elemEnd.textContent += " " + options.name;
10507		_elemBounds.appendChild(_elemStart);
10508		_elemBounds.appendChild(_elemEnd);
10509
10510		// set public variables
10511		Indicator.options = options;
10512		Indicator.bounds = _elemBounds;
10513		// will be set later
10514		Indicator.triggerGroup = undefined;
10515
10516		// add indicators to DOM
10517		this.add = function () {
10518			_ctrl = Scene.controller();
10519			_vertical = _ctrl.info("vertical");
10520
10521			var isDocument = _ctrl.info("isDocument");
10522
10523			if (!_boundsContainer) {
10524				// no parent supplied or doesnt exist
10525				_boundsContainer = isDocument ? document.body : _ctrl.info("container"); // check if window/document (then use body)
10526			}
10527			if (!isDocument && _util.css(_boundsContainer, "position") === 'static') {
10528				// position mode needed for correct positioning of indicators
10529				_util.css(_boundsContainer, {
10530					position: "relative"
10531				});
10532			}
10533
10534			// add listeners for updates
10535			Scene.on("change.plugin_addIndicators", handleTriggerParamsChange);
10536			Scene.on("shift.plugin_addIndicators", handleBoundsParamsChange);
10537
10538			// updates trigger & bounds (will add elements if needed)
10539			updateTriggerGroup();
10540			updateBounds();
10541
10542			setTimeout(function () { // do after all execution is finished otherwise sometimes size calculations are off
10543				_ctrl._indicators.updateBoundsPositions(Indicator);
10544			}, 0);
10545
10546			log(3, "added indicators");
10547		};
10548
10549		// remove indicators from DOM
10550		this.remove = function () {
10551			if (Indicator.triggerGroup) { // if not set there's nothing to remove
10552				Scene.off("change.plugin_addIndicators", handleTriggerParamsChange);
10553				Scene.off("shift.plugin_addIndicators", handleBoundsParamsChange);
10554
10555				if (Indicator.triggerGroup.members.length > 1) {
10556					// just remove from memberlist of old group
10557					var group = Indicator.triggerGroup;
10558					group.members.splice(group.members.indexOf(Indicator), 1);
10559					_ctrl._indicators.updateTriggerGroupLabel(group);
10560					_ctrl._indicators.updateTriggerGroupPositions(group);
10561					Indicator.triggerGroup = undefined;
10562				} else {
10563					// remove complete group
10564					removeTriggerGroup();
10565				}
10566				removeBounds();
10567
10568				log(3, "removed indicators");
10569			}
10570		};
10571
10572/*
10573		 * ----------------------------------------------------------------
10574		 * internal Event Handlers
10575		 * ----------------------------------------------------------------
10576		 */
10577
10578		// event handler for when bounds params change
10579		var handleBoundsParamsChange = function () {
10580			updateBounds();
10581		};
10582
10583		// event handler for when trigger params change
10584		var handleTriggerParamsChange = function (e) {
10585			if (e.what === "triggerHook") {
10586				updateTriggerGroup();
10587			}
10588		};
10589
10590/*
10591		 * ----------------------------------------------------------------
10592		 * Bounds (start / stop) management
10593		 * ----------------------------------------------------------------
10594		 */
10595
10596		// adds an new bounds elements to the array and to the DOM
10597		var addBounds = function () {
10598			var v = _ctrl.info("vertical");
10599			// apply stuff we didn't know before...
10600			_util.css(_elemStart.firstChild, {
10601				"border-bottom-width": v ? 1 : 0,
10602				"border-right-width": v ? 0 : 1,
10603				"bottom": v ? -1 : options.indent,
10604				"right": v ? options.indent : -1,
10605				"padding": v ? "0 8px" : "2px 4px",
10606			});
10607			_util.css(_elemEnd, {
10608				"border-top-width": v ? 1 : 0,
10609				"border-left-width": v ? 0 : 1,
10610				"top": v ? "100%" : "",
10611				"right": v ? options.indent : "",
10612				"bottom": v ? "" : options.indent,
10613				"left": v ? "" : "100%",
10614				"padding": v ? "0 8px" : "2px 4px"
10615			});
10616			// append
10617			_boundsContainer.appendChild(_elemBounds);
10618		};
10619
10620		// remove bounds from list and DOM
10621		var removeBounds = function () {
10622			_elemBounds.parentNode.removeChild(_elemBounds);
10623		};
10624
10625		// update the start and end positions of the scene
10626		var updateBounds = function () {
10627			if (_elemBounds.parentNode !== _boundsContainer) {
10628				addBounds(); // Add Bounds elements (start/end)
10629			}
10630			var css = {};
10631			css[_vertical ? "top" : "left"] = Scene.triggerPosition();
10632			css[_vertical ? "height" : "width"] = Scene.duration();
10633			_util.css(_elemBounds, css);
10634			_util.css(_elemEnd, {
10635				display: Scene.duration() > 0 ? "" : "none"
10636			});
10637		};
10638
10639/*
10640		 * ----------------------------------------------------------------
10641		 * trigger and trigger group management
10642		 * ----------------------------------------------------------------
10643		 */
10644
10645		// adds an new trigger group to the array and to the DOM
10646		var addTriggerGroup = function () {
10647			var triggerElem = TPL.trigger(options.colorTrigger); // new trigger element
10648			var css = {};
10649			css[_vertical ? "right" : "bottom"] = 0;
10650			css[_vertical ? "border-top-width" : "border-left-width"] = 1;
10651			_util.css(triggerElem.firstChild, css);
10652			_util.css(triggerElem.firstChild.firstChild, {
10653				padding: _vertical ? "0 8px 3px 8px" : "3px 4px"
10654			});
10655			document.body.appendChild(triggerElem); // directly add to body
10656			var newGroup = {
10657				triggerHook: Scene.triggerHook(),
10658				element: triggerElem,
10659				members: [Indicator]
10660			};
10661			_ctrl._indicators.groups.push(newGroup);
10662			Indicator.triggerGroup = newGroup;
10663			// update right away
10664			_ctrl._indicators.updateTriggerGroupLabel(newGroup);
10665			_ctrl._indicators.updateTriggerGroupPositions(newGroup);
10666		};
10667
10668		var removeTriggerGroup = function () {
10669			_ctrl._indicators.groups.splice(_ctrl._indicators.groups.indexOf(Indicator.triggerGroup), 1);
10670			Indicator.triggerGroup.element.parentNode.removeChild(Indicator.triggerGroup.element);
10671			Indicator.triggerGroup = undefined;
10672		};
10673
10674		// updates the trigger group -> either join existing or add new one
10675/*	
10676		 * Logic:
10677		 * 1 if a trigger group exist, check if it's in sync with Scene settings – if so, nothing else needs to happen
10678		 * 2 try to find an existing one that matches Scene parameters
10679		 * 	 2.1 If a match is found check if already assigned to an existing group
10680		 *			 If so:
10681		 *       A: it was the last member of existing group -> kill whole group
10682		 *       B: the existing group has other members -> just remove from member list
10683		 *	 2.2 Assign to matching group
10684		 * 3 if no new match could be found, check if assigned to existing group
10685		 *   A: yes, and it's the only member -> just update parameters and positions and keep using this group
10686		 *   B: yes but there are other members -> remove from member list and create a new one
10687		 *   C: no, so create a new one
10688		 */
10689		var updateTriggerGroup = function () {
10690			var
10691			triggerHook = Scene.triggerHook(),
10692				closeEnough = 0.0001;
10693
10694			// Have a group, check if it still matches
10695			if (Indicator.triggerGroup) {
10696				if (Math.abs(Indicator.triggerGroup.triggerHook - triggerHook) < closeEnough) {
10697					// _util.log(0, "trigger", options.name, "->", "no need to change, still in sync");
10698					return; // all good
10699				}
10700			}
10701			// Don't have a group, check if a matching one exists
10702			// _util.log(0, "trigger", options.name, "->", "out of sync!");
10703			var
10704			groups = _ctrl._indicators.groups,
10705				group, i = groups.length;
10706			while (i--) {
10707				group = groups[i];
10708				if (Math.abs(group.triggerHook - triggerHook) < closeEnough) {
10709					// found a match!
10710					// _util.log(0, "trigger", options.name, "->", "found match");
10711					if (Indicator.triggerGroup) { // do I have an old group that is out of sync?
10712						if (Indicator.triggerGroup.members.length === 1) { // is it the only remaining group?
10713							// _util.log(0, "trigger", options.name, "->", "kill");
10714							// was the last member, remove the whole group
10715							removeTriggerGroup();
10716						} else {
10717							Indicator.triggerGroup.members.splice(Indicator.triggerGroup.members.indexOf(Indicator), 1); // just remove from memberlist of old group
10718							_ctrl._indicators.updateTriggerGroupLabel(Indicator.triggerGroup);
10719							_ctrl._indicators.updateTriggerGroupPositions(Indicator.triggerGroup);
10720							// _util.log(0, "trigger", options.name, "->", "removing from previous member list");
10721						}
10722					}
10723					// join new group
10724					group.members.push(Indicator);
10725					Indicator.triggerGroup = group;
10726					_ctrl._indicators.updateTriggerGroupLabel(group);
10727					return;
10728				}
10729			}
10730
10731			// at this point I am obviously out of sync and don't match any other group
10732			if (Indicator.triggerGroup) {
10733				if (Indicator.triggerGroup.members.length === 1) {
10734					// _util.log(0, "trigger", options.name, "->", "updating existing");
10735					// out of sync but i'm the only member => just change and update
10736					Indicator.triggerGroup.triggerHook = triggerHook;
10737					_ctrl._indicators.updateTriggerGroupPositions(Indicator.triggerGroup);
10738					return;
10739				} else {
10740					// _util.log(0, "trigger", options.name, "->", "removing from previous member list");
10741					Indicator.triggerGroup.members.splice(Indicator.triggerGroup.members.indexOf(Indicator), 1); // just remove from memberlist of old group
10742					_ctrl._indicators.updateTriggerGroupLabel(Indicator.triggerGroup);
10743					_ctrl._indicators.updateTriggerGroupPositions(Indicator.triggerGroup);
10744					Indicator.triggerGroup = undefined; // need a brand new group...
10745				}
10746			}
10747			// _util.log(0, "trigger", options.name, "->", "add a new one");
10748			// did not find any match, make new trigger group
10749			addTriggerGroup();
10750		};
10751	};
10752
10753/*
10754	 * ----------------------------------------------------------------
10755	 * Templates for the indicators
10756	 * ----------------------------------------------------------------
10757	 */
10758	var TPL = {
10759		start: function (color) {
10760			// inner element (for bottom offset -1, while keeping top position 0)
10761			var inner = document.createElement("div");
10762			inner.textContent = "start";
10763			_util.css(inner, {
10764				position: "absolute",
10765				overflow: "visible",
10766				"border-width": 0,
10767				"border-style": "solid",
10768				color: color,
10769				"border-color": color
10770			});
10771			var e = document.createElement('div');
10772			// wrapper
10773			_util.css(e, {
10774				position: "absolute",
10775				overflow: "visible",
10776				width: 0,
10777				height: 0
10778			});
10779			e.appendChild(inner);
10780			return e;
10781		},
10782		end: function (color) {
10783			var e = document.createElement('div');
10784			e.textContent = "end";
10785			_util.css(e, {
10786				position: "absolute",
10787				overflow: "visible",
10788				"border-width": 0,
10789				"border-style": "solid",
10790				color: color,
10791				"border-color": color
10792			});
10793			return e;
10794		},
10795		bounds: function () {
10796			var e = document.createElement('div');
10797			_util.css(e, {
10798				position: "absolute",
10799				overflow: "visible",
10800				"white-space": "nowrap",
10801				"pointer-events": "none",
10802				"font-size": FONT_SIZE
10803			});
10804			e.style.zIndex = ZINDEX;
10805			return e;
10806		},
10807		trigger: function (color) {
10808			// inner to be above or below line but keep position
10809			var inner = document.createElement('div');
10810			inner.textContent = "trigger";
10811			_util.css(inner, {
10812				position: "relative",
10813			});
10814			// inner wrapper for right: 0 and main element has no size
10815			var w = document.createElement('div');
10816			_util.css(w, {
10817				position: "absolute",
10818				overflow: "visible",
10819				"border-width": 0,
10820				"border-style": "solid",
10821				color: color,
10822				"border-color": color
10823			});
10824			w.appendChild(inner);
10825			// wrapper
10826			var e = document.createElement('div');
10827			_util.css(e, {
10828				position: "fixed",
10829				overflow: "visible",
10830				"white-space": "nowrap",
10831				"pointer-events": "none",
10832				"font-size": FONT_SIZE
10833			});
10834			e.style.zIndex = ZINDEX;
10835			e.appendChild(w);
10836			return e;
10837		},
10838	};
10839
10840}));
10841
10842
10843/***/ }),
10844
vendor: 272,267 bytes, lines 10845-21220
10845/***/ "./node_modules/jquery/dist/jquery.js":
10846/*!********************************************!*\
10847  !*** ./node_modules/jquery/dist/jquery.js ***!
10848  \********************************************/
10849/*! no static exports found */
10850/***/ (function(module, exports, __webpack_require__) {
10851
10852var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
10853 * jQuery JavaScript Library v3.3.1
10854 * https://jquery.com/
10855 *
10856 * Includes Sizzle.js
10857 * https://sizzlejs.com/
10858 *
10859 * Copyright JS Foundation and other contributors
10860 * Released under the MIT license
10861 * https://jquery.org/license
10862 *
10863 * Date: 2018-01-20T17:24Z
10864 */
10865( function( global, factory ) {
10866
10867	"use strict";
10868
10869	if ( typeof module === "object" && typeof module.exports === "object" ) {
10870
10871		// For CommonJS and CommonJS-like environments where a proper `window`
10872		// is present, execute the factory and get jQuery.
10873		// For environments that do not have a `window` with a `document`
10874		// (such as Node.js), expose a factory as module.exports.
10875		// This accentuates the need for the creation of a real `window`.
10876		// e.g. var jQuery = require("jquery")(window);
10877		// See ticket #14549 for more info.
10878		module.exports = global.document ?
10879			factory( global, true ) :
10880			function( w ) {
10881				if ( !w.document ) {
10882					throw new Error( "jQuery requires a window with a document" );
10883				}
10884				return factory( w );
10885			};
10886	} else {
10887		factory( global );
10888	}
10889
10890// Pass this if window is not defined yet
10891} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
10892
10893// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1
10894// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode
10895// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common
10896// enough that all such attempts are guarded in a try block.
10897"use strict";
10898
10899var arr = [];
10900
10901var document = window.document;
10902
10903var getProto = Object.getPrototypeOf;
10904
10905var slice = arr.slice;
10906
10907var concat = arr.concat;
10908
10909var push = arr.push;
10910
10911var indexOf = arr.indexOf;
10912
10913var class2type = {};
10914
10915var toString = class2type.toString;
10916
10917var hasOwn = class2type.hasOwnProperty;
10918
10919var fnToString = hasOwn.toString;
10920
10921var ObjectFunctionString = fnToString.call( Object );
10922
10923var support = {};
10924
10925var isFunction = function isFunction( obj ) {
10926
10927      // Support: Chrome <=57, Firefox <=52
10928      // In some browsers, typeof returns "function" for HTML <object> elements
10929      // (i.e., `typeof document.createElement( "object" ) === "function"`).
10930      // We don't want to classify *any* DOM node as a function.
10931      return typeof obj === "function" && typeof obj.nodeType !== "number";
10932  };
10933
10934
10935var isWindow = function isWindow( obj ) {
10936		return obj != null && obj === obj.window;
10937	};
10938
10939
10940
10941
10942	var preservedScriptAttributes = {
10943		type: true,
10944		src: true,
10945		noModule: true
10946	};
10947
10948	function DOMEval( code, doc, node ) {
10949		doc = doc || document;
10950
10951		var i,
10952			script = doc.createElement( "script" );
10953
10954		script.text = code;
10955		if ( node ) {
10956			for ( i in preservedScriptAttributes ) {
10957				if ( node[ i ] ) {
10958					script[ i ] = node[ i ];
10959				}
10960			}
10961		}
10962		doc.head.appendChild( script ).parentNode.removeChild( script );
10963	}
10964
10965
10966function toType( obj ) {
10967	if ( obj == null ) {
10968		return obj + "";
10969	}
10970
10971	// Support: Android <=2.3 only (functionish RegExp)
10972	return typeof obj === "object" || typeof obj === "function" ?
10973		class2type[ toString.call( obj ) ] || "object" :
10974		typeof obj;
10975}
10976/* global Symbol */
10977// Defining this global in .eslintrc.json would create a danger of using the global
10978// unguarded in another place, it seems safer to define global only for this module
10979
10980
10981
10982var
10983	version = "3.3.1",
10984
10985	// Define a local copy of jQuery
10986	jQuery = function( selector, context ) {
10987
10988		// The jQuery object is actually just the init constructor 'enhanced'
10989		// Need init if jQuery is called (just allow error to be thrown if not included)
10990		return new jQuery.fn.init( selector, context );
10991	},
10992
10993	// Support: Android <=4.0 only
10994	// Make sure we trim BOM and NBSP
10995	rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
10996
10997jQuery.fn = jQuery.prototype = {
10998
10999	// The current version of jQuery being used
11000	jquery: version,
11001
11002	constructor: jQuery,
11003
11004	// The default length of a jQuery object is 0
11005	length: 0,
11006
11007	toArray: function() {
11008		return slice.call( this );
11009	},
11010
11011	// Get the Nth element in the matched element set OR
11012	// Get the whole matched element set as a clean array
11013	get: function( num ) {
11014
11015		// Return all the elements in a clean array
11016		if ( num == null ) {
11017			return slice.call( this );
11018		}
11019
11020		// Return just the one element from the set
11021		return num < 0 ? this[ num + this.length ] : this[ num ];
11022	},
11023
11024	// Take an array of elements and push it onto the stack
11025	// (returning the new matched element set)
11026	pushStack: function( elems ) {
11027
11028		// Build a new jQuery matched element set
11029		var ret = jQuery.merge( this.constructor(), elems );
11030
11031		// Add the old object onto the stack (as a reference)
11032		ret.prevObject = this;
11033
11034		// Return the newly-formed element set
11035		return ret;
11036	},
11037
11038	// Execute a callback for every element in the matched set.
11039	each: function( callback ) {
11040		return jQuery.each( this, callback );
11041	},
11042
11043	map: function( callback ) {
11044		return this.pushStack( jQuery.map( this, function( elem, i ) {
11045			return callback.call( elem, i, elem );
11046		} ) );
11047	},
11048
11049	slice: function() {
11050		return this.pushStack( slice.apply( this, arguments ) );
11051	},
11052
11053	first: function() {
11054		return this.eq( 0 );
11055	},
11056
11057	last: function() {
11058		return this.eq( -1 );
11059	},
11060
11061	eq: function( i ) {
11062		var len = this.length,
11063			j = +i + ( i < 0 ? len : 0 );
11064		return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
11065	},
11066
11067	end: function() {
11068		return this.prevObject || this.constructor();
11069	},
11070
11071	// For internal use only.
11072	// Behaves like an Array's method, not like a jQuery method.
11073	push: push,
11074	sort: arr.sort,
11075	splice: arr.splice
11076};
11077
11078jQuery.extend = jQuery.fn.extend = function() {
11079	var options, name, src, copy, copyIsArray, clone,
11080		target = arguments[ 0 ] || {},
11081		i = 1,
11082		length = arguments.length,
11083		deep = false;
11084
11085	// Handle a deep copy situation
11086	if ( typeof target === "boolean" ) {
11087		deep = target;
11088
11089		// Skip the boolean and the target
11090		target = arguments[ i ] || {};
11091		i++;
11092	}
11093
11094	// Handle case when target is a string or something (possible in deep copy)
11095	if ( typeof target !== "object" && !isFunction( target ) ) {
11096		target = {};
11097	}
11098
11099	// Extend jQuery itself if only one argument is passed
11100	if ( i === length ) {
11101		target = this;
11102		i--;
11103	}
11104
11105	for ( ; i < length; i++ ) {
11106
11107		// Only deal with non-null/undefined values
11108		if ( ( options = arguments[ i ] ) != null ) {
11109
11110			// Extend the base object
11111			for ( name in options ) {
11112				src = target[ name ];
11113				copy = options[ name ];
11114
11115				// Prevent never-ending loop
11116				if ( target === copy ) {
11117					continue;
11118				}
11119
11120				// Recurse if we're merging plain objects or arrays
11121				if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
11122					( copyIsArray = Array.isArray( copy ) ) ) ) {
11123
11124					if ( copyIsArray ) {
11125						copyIsArray = false;
11126						clone = src && Array.isArray( src ) ? src : [];
11127
11128					} else {
11129						clone = src && jQuery.isPlainObject( src ) ? src : {};
11130					}
11131
11132					// Never move original objects, clone them
11133					target[ name ] = jQuery.extend( deep, clone, copy );
11134
11135				// Don't bring in undefined values
11136				} else if ( copy !== undefined ) {
11137					target[ name ] = copy;
11138				}
11139			}
11140		}
11141	}
11142
11143	// Return the modified object
11144	return target;
11145};
11146
11147jQuery.extend( {
11148
11149	// Unique for each copy of jQuery on the page
11150	expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
11151
11152	// Assume jQuery is ready without the ready module
11153	isReady: true,
11154
11155	error: function( msg ) {
11156		throw new Error( msg );
11157	},
11158
11159	noop: function() {},
11160
11161	isPlainObject: function( obj ) {
11162		var proto, Ctor;
11163
11164		// Detect obvious negatives
11165		// Use toString instead of jQuery.type to catch host objects
11166		if ( !obj || toString.call( obj ) !== "[object Object]" ) {
11167			return false;
11168		}
11169
11170		proto = getProto( obj );
11171
11172		// Objects with no prototype (e.g., `Object.create( null )`) are plain
11173		if ( !proto ) {
11174			return true;
11175		}
11176
11177		// Objects with prototype are plain iff they were constructed by a global Object function
11178		Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
11179		return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
11180	},
11181
11182	isEmptyObject: function( obj ) {
11183
11184		/* eslint-disable no-unused-vars */
11185		// See https://github.com/eslint/eslint/issues/6125
11186		var name;
11187
11188		for ( name in obj ) {
11189			return false;
11190		}
11191		return true;
11192	},
11193
11194	// Evaluates a script in a global context
11195	globalEval: function( code ) {
11196		DOMEval( code );
11197	},
11198
11199	each: function( obj, callback ) {
11200		var length, i = 0;
11201
11202		if ( isArrayLike( obj ) ) {
11203			length = obj.length;
11204			for ( ; i < length; i++ ) {
11205				if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
11206					break;
11207				}
11208			}
11209		} else {
11210			for ( i in obj ) {
11211				if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
11212					break;
11213				}
11214			}
11215		}
11216
11217		return obj;
11218	},
11219
11220	// Support: Android <=4.0 only
11221	trim: function( text ) {
11222		return text == null ?
11223			"" :
11224			( text + "" ).replace( rtrim, "" );
11225	},
11226
11227	// results is for internal usage only
11228	makeArray: function( arr, results ) {
11229		var ret = results || [];
11230
11231		if ( arr != null ) {
11232			if ( isArrayLike( Object( arr ) ) ) {
11233				jQuery.merge( ret,
11234					typeof arr === "string" ?
11235					[ arr ] : arr
11236				);
11237			} else {
11238				push.call( ret, arr );
11239			}
11240		}
11241
11242		return ret;
11243	},
11244
11245	inArray: function( elem, arr, i ) {
11246		return arr == null ? -1 : indexOf.call( arr, elem, i );
11247	},
11248
11249	// Support: Android <=4.0 only, PhantomJS 1 only
11250	// push.apply(_, arraylike) throws on ancient WebKit
11251	merge: function( first, second ) {
11252		var len = +second.length,
11253			j = 0,
11254			i = first.length;
11255
11256		for ( ; j < len; j++ ) {
11257			first[ i++ ] = second[ j ];
11258		}
11259
11260		first.length = i;
11261
11262		return first;
11263	},
11264
11265	grep: function( elems, callback, invert ) {
11266		var callbackInverse,
11267			matches = [],
11268			i = 0,
11269			length = elems.length,
11270			callbackExpect = !invert;
11271
11272		// Go through the array, only saving the items
11273		// that pass the validator function
11274		for ( ; i < length; i++ ) {
11275			callbackInverse = !callback( elems[ i ], i );
11276			if ( callbackInverse !== callbackExpect ) {
11277				matches.push( elems[ i ] );
11278			}
11279		}
11280
11281		return matches;
11282	},
11283
11284	// arg is for internal usage only
11285	map: function( elems, callback, arg ) {
11286		var length, value,
11287			i = 0,
11288			ret = [];
11289
11290		// Go through the array, translating each of the items to their new values
11291		if ( isArrayLike( elems ) ) {
11292			length = elems.length;
11293			for ( ; i < length; i++ ) {
11294				value = callback( elems[ i ], i, arg );
11295
11296				if ( value != null ) {
11297					ret.push( value );
11298				}
11299			}
11300
11301		// Go through every key on the object,
11302		} else {
11303			for ( i in elems ) {
11304				value = callback( elems[ i ], i, arg );
11305
11306				if ( value != null ) {
11307					ret.push( value );
11308				}
11309			}
11310		}
11311
11312		// Flatten any nested arrays
11313		return concat.apply( [], ret );
11314	},
11315
11316	// A global GUID counter for objects
11317	guid: 1,
11318
11319	// jQuery.support is not used in Core but other projects attach their
11320	// properties to it so it needs to exist.
11321	support: support
11322} );
11323
11324if ( typeof Symbol === "function" ) {
11325	jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
11326}
11327
11328// Populate the class2type map
11329jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
11330function( i, name ) {
11331	class2type[ "[object " + name + "]" ] = name.toLowerCase();
11332} );
11333
11334function isArrayLike( obj ) {
11335
11336	// Support: real iOS 8.2 only (not reproducible in simulator)
11337	// `in` check used to prevent JIT error (gh-2145)
11338	// hasOwn isn't used here due to false negatives
11339	// regarding Nodelist length in IE
11340	var length = !!obj && "length" in obj && obj.length,
11341		type = toType( obj );
11342
11343	if ( isFunction( obj ) || isWindow( obj ) ) {
11344		return false;
11345	}
11346
11347	return type === "array" || length === 0 ||
11348		typeof length === "number" && length > 0 && ( length - 1 ) in obj;
11349}
11350var Sizzle =
11351/*!
11352 * Sizzle CSS Selector Engine v2.3.3
11353 * https://sizzlejs.com/
11354 *
11355 * Copyright jQuery Foundation and other contributors
11356 * Released under the MIT license
11357 * http://jquery.org/license
11358 *
11359 * Date: 2016-08-08
11360 */
11361(function( window ) {
11362
11363var i,
11364	support,
11365	Expr,
11366	getText,
11367	isXML,
11368	tokenize,
11369	compile,
11370	select,
11371	outermostContext,
11372	sortInput,
11373	hasDuplicate,
11374
11375	// Local document vars
11376	setDocument,
11377	document,
11378	docElem,
11379	documentIsHTML,
11380	rbuggyQSA,
11381	rbuggyMatches,
11382	matches,
11383	contains,
11384
11385	// Instance-specific data
11386	expando = "sizzle" + 1 * new Date(),
11387	preferredDoc = window.document,
11388	dirruns = 0,
11389	done = 0,
11390	classCache = createCache(),
11391	tokenCache = createCache(),
11392	compilerCache = createCache(),
11393	sortOrder = function( a, b ) {
11394		if ( a === b ) {
11395			hasDuplicate = true;
11396		}
11397		return 0;
11398	},
11399
11400	// Instance methods
11401	hasOwn = ({}).hasOwnProperty,
11402	arr = [],
11403	pop = arr.pop,
11404	push_native = arr.push,
11405	push = arr.push,
11406	slice = arr.slice,
11407	// Use a stripped-down indexOf as it's faster than native
11408	// https://jsperf.com/thor-indexof-vs-for/5
11409	indexOf = function( list, elem ) {
11410		var i = 0,
11411			len = list.length;
11412		for ( ; i < len; i++ ) {
11413			if ( list[i] === elem ) {
11414				return i;
11415			}
11416		}
11417		return -1;
11418	},
11419
11420	booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
11421
11422	// Regular expressions
11423
11424	// http://www.w3.org/TR/css3-selectors/#whitespace
11425	whitespace = "[\\x20\\t\\r\\n\\f]",
11426
11427	// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
11428	identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+",
11429
11430	// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
11431	attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
11432		// Operator (capture 2)
11433		"*([*^$|!~]?=)" + whitespace +
11434		// "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
11435		"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
11436		"*\\]",
11437
11438	pseudos = ":(" + identifier + ")(?:\\((" +
11439		// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
11440		// 1. quoted (capture 3; capture 4 or capture 5)
11441		"('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
11442		// 2. simple (capture 6)
11443		"((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
11444		// 3. anything else (capture 2)
11445		".*" +
11446		")\\)|)",
11447
11448	// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
11449	rwhitespace = new RegExp( whitespace + "+", "g" ),
11450	rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
11451
11452	rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
11453	rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
11454
11455	rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
11456
11457	rpseudo = new RegExp( pseudos ),
11458	ridentifier = new RegExp( "^" + identifier + "$" ),
11459
11460	matchExpr = {
11461		"ID": new RegExp( "^#(" + identifier + ")" ),
11462		"CLASS": new RegExp( "^\\.(" + identifier + ")" ),
11463		"TAG": new RegExp( "^(" + identifier + "|[*])" ),
11464		"ATTR": new RegExp( "^" + attributes ),
11465		"PSEUDO": new RegExp( "^" + pseudos ),
11466		"CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
11467			"*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
11468			"*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
11469		"bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
11470		// For use in libraries implementing .is()
11471		// We use this for POS matching in `select`
11472		"needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
11473			whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
11474	},
11475
11476	rinputs = /^(?:input|select|textarea|button)$/i,
11477	rheader = /^h\d$/i,
11478
11479	rnative = /^[^{]+\{\s*\[native \w/,
11480
11481	// Easily-parseable/retrievable ID or TAG or CLASS selectors
11482	rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
11483
11484	rsibling = /[+~]/,
11485
11486	// CSS escapes
11487	// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
11488	runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
11489	funescape = function( _, escaped, escapedWhitespace ) {
11490		var high = "0x" + escaped - 0x10000;
11491		// NaN means non-codepoint
11492		// Support: Firefox<24
11493		// Workaround erroneous numeric interpretation of +"0x"
11494		return high !== high || escapedWhitespace ?
11495			escaped :
11496			high < 0 ?
11497				// BMP codepoint
11498				String.fromCharCode( high + 0x10000 ) :
11499				// Supplemental Plane codepoint (surrogate pair)
11500				String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
11501	},
11502
11503	// CSS string/identifier serialization
11504	// https://drafts.csswg.org/cssom/#common-serializing-idioms
11505	rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
11506	fcssescape = function( ch, asCodePoint ) {
11507		if ( asCodePoint ) {
11508
11509			// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
11510			if ( ch === "\0" ) {
11511				return "\uFFFD";
11512			}
11513
11514			// Control characters and (dependent upon position) numbers get escaped as code points
11515			return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
11516		}
11517
11518		// Other potentially-special ASCII characters get backslash-escaped
11519		return "\\" + ch;
11520	},
11521
11522	// Used for iframes
11523	// See setDocument()
11524	// Removing the function wrapper causes a "Permission Denied"
11525	// error in IE
11526	unloadHandler = function() {
11527		setDocument();
11528	},
11529
11530	disabledAncestor = addCombinator(
11531		function( elem ) {
11532			return elem.disabled === true && ("form" in elem || "label" in elem);
11533		},
11534		{ dir: "parentNode", next: "legend" }
11535	);
11536
11537// Optimize for push.apply( _, NodeList )
11538try {
11539	push.apply(
11540		(arr = slice.call( preferredDoc.childNodes )),
11541		preferredDoc.childNodes
11542	);
11543	// Support: Android<4.0
11544	// Detect silently failing push.apply
11545	arr[ preferredDoc.childNodes.length ].nodeType;
11546} catch ( e ) {
11547	push = { apply: arr.length ?
11548
11549		// Leverage slice if possible
11550		function( target, els ) {
11551			push_native.apply( target, slice.call(els) );
11552		} :
11553
11554		// Support: IE<9
11555		// Otherwise append directly
11556		function( target, els ) {
11557			var j = target.length,
11558				i = 0;
11559			// Can't trust NodeList.length
11560			while ( (target[j++] = els[i++]) ) {}
11561			target.length = j - 1;
11562		}
11563	};
11564}
11565
11566function Sizzle( selector, context, results, seed ) {
11567	var m, i, elem, nid, match, groups, newSelector,
11568		newContext = context && context.ownerDocument,
11569
11570		// nodeType defaults to 9, since context defaults to document
11571		nodeType = context ? context.nodeType : 9;
11572
11573	results = results || [];
11574
11575	// Return early from calls with invalid selector or context
11576	if ( typeof selector !== "string" || !selector ||
11577		nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
11578
11579		return results;
11580	}
11581
11582	// Try to shortcut find operations (as opposed to filters) in HTML documents
11583	if ( !seed ) {
11584
11585		if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
11586			setDocument( context );
11587		}
11588		context = context || document;
11589
11590		if ( documentIsHTML ) {
11591
11592			// If the selector is sufficiently simple, try using a "get*By*" DOM method
11593			// (excepting DocumentFragment context, where the methods don't exist)
11594			if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
11595
11596				// ID selector
11597				if ( (m = match[1]) ) {
11598
11599					// Document context
11600					if ( nodeType === 9 ) {
11601						if ( (elem = context.getElementById( m )) ) {
11602
11603							// Support: IE, Opera, Webkit
11604							// TODO: identify versions
11605							// getElementById can match elements by name instead of ID
11606							if ( elem.id === m ) {
11607								results.push( elem );
11608								return results;
11609							}
11610						} else {
11611							return results;
11612						}
11613
11614					// Element context
11615					} else {
11616
11617						// Support: IE, Opera, Webkit
11618						// TODO: identify versions
11619						// getElementById can match elements by name instead of ID
11620						if ( newContext && (elem = newContext.getElementById( m )) &&
11621							contains( context, elem ) &&
11622							elem.id === m ) {
11623
11624							results.push( elem );
11625							return results;
11626						}
11627					}
11628
11629				// Type selector
11630				} else if ( match[2] ) {
11631					push.apply( results, context.getElementsByTagName( selector ) );
11632					return results;
11633
11634				// Class selector
11635				} else if ( (m = match[3]) && support.getElementsByClassName &&
11636					context.getElementsByClassName ) {
11637
11638					push.apply( results, context.getElementsByClassName( m ) );
11639					return results;
11640				}
11641			}
11642
11643			// Take advantage of querySelectorAll
11644			if ( support.qsa &&
11645				!compilerCache[ selector + " " ] &&
11646				(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
11647
11648				if ( nodeType !== 1 ) {
11649					newContext = context;
11650					newSelector = selector;
11651
11652				// qSA looks outside Element context, which is not what we want
11653				// Thanks to Andrew Dupont for this workaround technique
11654				// Support: IE <=8
11655				// Exclude object elements
11656				} else if ( context.nodeName.toLowerCase() !== "object" ) {
11657
11658					// Capture the context ID, setting it first if necessary
11659					if ( (nid = context.getAttribute( "id" )) ) {
11660						nid = nid.replace( rcssescape, fcssescape );
11661					} else {
11662						context.setAttribute( "id", (nid = expando) );
11663					}
11664
11665					// Prefix every selector in the list
11666					groups = tokenize( selector );
11667					i = groups.length;
11668					while ( i-- ) {
11669						groups[i] = "#" + nid + " " + toSelector( groups[i] );
11670					}
11671					newSelector = groups.join( "," );
11672
11673					// Expand context for sibling selectors
11674					newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
11675						context;
11676				}
11677
11678				if ( newSelector ) {
11679					try {
11680						push.apply( results,
11681							newContext.querySelectorAll( newSelector )
11682						);
11683						return results;
11684					} catch ( qsaError ) {
11685					} finally {
11686						if ( nid === expando ) {
11687							context.removeAttribute( "id" );
11688						}
11689					}
11690				}
11691			}
11692		}
11693	}
11694
11695	// All others
11696	return select( selector.replace( rtrim, "$1" ), context, results, seed );
11697}
11698
11699/**
11700 * Create key-value caches of limited size
11701 * @returns {function(string, object)} Returns the Object data after storing it on itself with
11702 *	property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
11703 *	deleting the oldest entry
11704 */
11705function createCache() {
11706	var keys = [];
11707
11708	function cache( key, value ) {
11709		// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
11710		if ( keys.push( key + " " ) > Expr.cacheLength ) {
11711			// Only keep the most recent entries
11712			delete cache[ keys.shift() ];
11713		}
11714		return (cache[ key + " " ] = value);
11715	}
11716	return cache;
11717}
11718
11719/**
11720 * Mark a function for special use by Sizzle
11721 * @param {Function} fn The function to mark
11722 */
11723function markFunction( fn ) {
11724	fn[ expando ] = true;
11725	return fn;
11726}
11727
11728/**
11729 * Support testing using an element
11730 * @param {Function} fn Passed the created element and returns a boolean result
11731 */
11732function assert( fn ) {
11733	var el = document.createElement("fieldset");
11734
11735	try {
11736		return !!fn( el );
11737	} catch (e) {
11738		return false;
11739	} finally {
11740		// Remove from its parent by default
11741		if ( el.parentNode ) {
11742			el.parentNode.removeChild( el );
11743		}
11744		// release memory in IE
11745		el = null;
11746	}
11747}
11748
11749/**
11750 * Adds the same handler for all of the specified attrs
11751 * @param {String} attrs Pipe-separated list of attributes
11752 * @param {Function} handler The method that will be applied
11753 */
11754function addHandle( attrs, handler ) {
11755	var arr = attrs.split("|"),
11756		i = arr.length;
11757
11758	while ( i-- ) {
11759		Expr.attrHandle[ arr[i] ] = handler;
11760	}
11761}
11762
11763/**
11764 * Checks document order of two siblings
11765 * @param {Element} a
11766 * @param {Element} b
11767 * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
11768 */
11769function siblingCheck( a, b ) {
11770	var cur = b && a,
11771		diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
11772			a.sourceIndex - b.sourceIndex;
11773
11774	// Use IE sourceIndex if available on both nodes
11775	if ( diff ) {
11776		return diff;
11777	}
11778
11779	// Check if b follows a
11780	if ( cur ) {
11781		while ( (cur = cur.nextSibling) ) {
11782			if ( cur === b ) {
11783				return -1;
11784			}
11785		}
11786	}
11787
11788	return a ? 1 : -1;
11789}
11790
11791/**
11792 * Returns a function to use in pseudos for input types
11793 * @param {String} type
11794 */
11795function createInputPseudo( type ) {
11796	return function( elem ) {
11797		var name = elem.nodeName.toLowerCase();
11798		return name === "input" && elem.type === type;
11799	};
11800}
11801
11802/**
11803 * Returns a function to use in pseudos for buttons
11804 * @param {String} type
11805 */
11806function createButtonPseudo( type ) {
11807	return function( elem ) {
11808		var name = elem.nodeName.toLowerCase();
11809		return (name === "input" || name === "button") && elem.type === type;
11810	};
11811}
11812
11813/**
11814 * Returns a function to use in pseudos for :enabled/:disabled
11815 * @param {Boolean} disabled true for :disabled; false for :enabled
11816 */
11817function createDisabledPseudo( disabled ) {
11818
11819	// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
11820	return function( elem ) {
11821
11822		// Only certain elements can match :enabled or :disabled
11823		// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
11824		// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
11825		if ( "form" in elem ) {
11826
11827			// Check for inherited disabledness on relevant non-disabled elements:
11828			// * listed form-associated elements in a disabled fieldset
11829			//   https://html.spec.whatwg.org/multipage/forms.html#category-listed
11830			//   https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled
11831			// * option elements in a disabled optgroup
11832			//   https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
11833			// All such elements have a "form" property.
11834			if ( elem.parentNode && elem.disabled === false ) {
11835
11836				// Option elements defer to a parent optgroup if present
11837				if ( "label" in elem ) {
11838					if ( "label" in elem.parentNode ) {
11839						return elem.parentNode.disabled === disabled;
11840					} else {
11841						return elem.disabled === disabled;
11842					}
11843				}
11844
11845				// Support: IE 6 - 11
11846				// Use the isDisabled shortcut property to check for disabled fieldset ancestors
11847				return elem.isDisabled === disabled ||
11848
11849					// Where there is no isDisabled, check manually
11850					/* jshint -W018 */
11851					elem.isDisabled !== !disabled &&
11852						disabledAncestor( elem ) === disabled;
11853			}
11854
11855			return elem.disabled === disabled;
11856
11857		// Try to winnow out elements that can't be disabled before trusting the disabled property.
11858		// Some victims get caught in our net (label, legend, menu, track), but it shouldn't
11859		// even exist on them, let alone have a boolean value.
11860		} else if ( "label" in elem ) {
11861			return elem.disabled === disabled;
11862		}
11863
11864		// Remaining elements are neither :enabled nor :disabled
11865		return false;
11866	};
11867}
11868
11869/**
11870 * Returns a function to use in pseudos for positionals
11871 * @param {Function} fn
11872 */
11873function createPositionalPseudo( fn ) {
11874	return markFunction(function( argument ) {
11875		argument = +argument;
11876		return markFunction(function( seed, matches ) {
11877			var j,
11878				matchIndexes = fn( [], seed.length, argument ),
11879				i = matchIndexes.length;
11880
11881			// Match elements found at the specified indexes
11882			while ( i-- ) {
11883				if ( seed[ (j = matchIndexes[i]) ] ) {
11884					seed[j] = !(matches[j] = seed[j]);
11885				}
11886			}
11887		});
11888	});
11889}
11890
11891/**
11892 * Checks a node for validity as a Sizzle context
11893 * @param {Element|Object=} context
11894 * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
11895 */
11896function testContext( context ) {
11897	return context && typeof context.getElementsByTagName !== "undefined" && context;
11898}
11899
11900// Expose support vars for convenience
11901support = Sizzle.support = {};
11902
11903/**
11904 * Detects XML nodes
11905 * @param {Element|Object} elem An element or a document
11906 * @returns {Boolean} True iff elem is a non-HTML XML node
11907 */
11908isXML = Sizzle.isXML = function( elem ) {
11909	// documentElement is verified for cases where it doesn't yet exist
11910	// (such as loading iframes in IE - #4833)
11911	var documentElement = elem && (elem.ownerDocument || elem).documentElement;
11912	return documentElement ? documentElement.nodeName !== "HTML" : false;
11913};
11914
11915/**
11916 * Sets document-related variables once based on the current document
11917 * @param {Element|Object} [doc] An element or document object to use to set the document
11918 * @returns {Object} Returns the current document
11919 */
11920setDocument = Sizzle.setDocument = function( node ) {
11921	var hasCompare, subWindow,
11922		doc = node ? node.ownerDocument || node : preferredDoc;
11923
11924	// Return early if doc is invalid or already selected
11925	if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
11926		return document;
11927	}
11928
11929	// Update global variables
11930	document = doc;
11931	docElem = document.documentElement;
11932	documentIsHTML = !isXML( document );
11933
11934	// Support: IE 9-11, Edge
11935	// Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
11936	if ( preferredDoc !== document &&
11937		(subWindow = document.defaultView) && subWindow.top !== subWindow ) {
11938
11939		// Support: IE 11, Edge
11940		if ( subWindow.addEventListener ) {
11941			subWindow.addEventListener( "unload", unloadHandler, false );
11942
11943		// Support: IE 9 - 10 only
11944		} else if ( subWindow.attachEvent ) {
11945			subWindow.attachEvent( "onunload", unloadHandler );
11946		}
11947	}
11948
11949	/* Attributes
11950	---------------------------------------------------------------------- */
11951
11952	// Support: IE<8
11953	// Verify that getAttribute really returns attributes and not properties
11954	// (excepting IE8 booleans)
11955	support.attributes = assert(function( el ) {
11956		el.className = "i";
11957		return !el.getAttribute("className");
11958	});
11959
11960	/* getElement(s)By*
11961	---------------------------------------------------------------------- */
11962
11963	// Check if getElementsByTagName("*") returns only elements
11964	support.getElementsByTagName = assert(function( el ) {
11965		el.appendChild( document.createComment("") );
11966		return !el.getElementsByTagName("*").length;
11967	});
11968
11969	// Support: IE<9
11970	support.getElementsByClassName = rnative.test( document.getElementsByClassName );
11971
11972	// Support: IE<10
11973	// Check if getElementById returns elements by name
11974	// The broken getElementById methods don't pick up programmatically-set names,
11975	// so use a roundabout getElementsByName test
11976	support.getById = assert(function( el ) {
11977		docElem.appendChild( el ).id = expando;
11978		return !document.getElementsByName || !document.getElementsByName( expando ).length;
11979	});
11980
11981	// ID filter and find
11982	if ( support.getById ) {
11983		Expr.filter["ID"] = function( id ) {
11984			var attrId = id.replace( runescape, funescape );
11985			return function( elem ) {
11986				return elem.getAttribute("id") === attrId;
11987			};
11988		};
11989		Expr.find["ID"] = function( id, context ) {
11990			if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
11991				var elem = context.getElementById( id );
11992				return elem ? [ elem ] : [];
11993			}
11994		};
11995	} else {
11996		Expr.filter["ID"] =  function( id ) {
11997			var attrId = id.replace( runescape, funescape );
11998			return function( elem ) {
11999				var node = typeof elem.getAttributeNode !== "undefined" &&
12000					elem.getAttributeNode("id");
12001				return node && node.value === attrId;
12002			};
12003		};
12004
12005		// Support: IE 6 - 7 only
12006		// getElementById is not reliable as a find shortcut
12007		Expr.find["ID"] = function( id, context ) {
12008			if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
12009				var node, i, elems,
12010					elem = context.getElementById( id );
12011
12012				if ( elem ) {
12013
12014					// Verify the id attribute
12015					node = elem.getAttributeNode("id");
12016					if ( node && node.value === id ) {
12017						return [ elem ];
12018					}
12019
12020					// Fall back on getElementsByName
12021					elems = context.getElementsByName( id );
12022					i = 0;
12023					while ( (elem = elems[i++]) ) {
12024						node = elem.getAttributeNode("id");
12025						if ( node && node.value === id ) {
12026							return [ elem ];
12027						}
12028					}
12029				}
12030
12031				return [];
12032			}
12033		};
12034	}
12035
12036	// Tag
12037	Expr.find["TAG"] = support.getElementsByTagName ?
12038		function( tag, context ) {
12039			if ( typeof context.getElementsByTagName !== "undefined" ) {
12040				return context.getElementsByTagName( tag );
12041
12042			// DocumentFragment nodes don't have gEBTN
12043			} else if ( support.qsa ) {
12044				return context.querySelectorAll( tag );
12045			}
12046		} :
12047
12048		function( tag, context ) {
12049			var elem,
12050				tmp = [],
12051				i = 0,
12052				// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
12053				results = context.getElementsByTagName( tag );
12054
12055			// Filter out possible comments
12056			if ( tag === "*" ) {
12057				while ( (elem = results[i++]) ) {
12058					if ( elem.nodeType === 1 ) {
12059						tmp.push( elem );
12060					}
12061				}
12062
12063				return tmp;
12064			}
12065			return results;
12066		};
12067
12068	// Class
12069	Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
12070		if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
12071			return context.getElementsByClassName( className );
12072		}
12073	};
12074
12075	/* QSA/matchesSelector
12076	---------------------------------------------------------------------- */
12077
12078	// QSA and matchesSelector support
12079
12080	// matchesSelector(:active) reports false when true (IE9/Opera 11.5)
12081	rbuggyMatches = [];
12082
12083	// qSa(:focus) reports false when true (Chrome 21)
12084	// We allow this because of a bug in IE8/9 that throws an error
12085	// whenever `document.activeElement` is accessed on an iframe
12086	// So, we allow :focus to pass through QSA all the time to avoid the IE error
12087	// See https://bugs.jquery.com/ticket/13378
12088	rbuggyQSA = [];
12089
12090	if ( (support.qsa = rnative.test( document.querySelectorAll )) ) {
12091		// Build QSA regex
12092		// Regex strategy adopted from Diego Perini
12093		assert(function( el ) {
12094			// Select is set to empty string on purpose
12095			// This is to test IE's treatment of not explicitly
12096			// setting a boolean content attribute,
12097			// since its presence should be enough
12098			// https://bugs.jquery.com/ticket/12359
12099			docElem.appendChild( el ).innerHTML = "<a id='" + expando + "'></a>" +
12100				"<select id='" + expando + "-\r\\' msallowcapture=''>" +
12101				"<option selected=''></option></select>";
12102
12103			// Support: IE8, Opera 11-12.16
12104			// Nothing should be selected when empty strings follow ^= or $= or *=
12105			// The test attribute must be unknown in Opera but "safe" for WinRT
12106			// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
12107			if ( el.querySelectorAll("[msallowcapture^='']").length ) {
12108				rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
12109			}
12110
12111			// Support: IE8
12112			// Boolean attributes and "value" are not treated correctly
12113			if ( !el.querySelectorAll("[selected]").length ) {
12114				rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
12115			}
12116
12117			// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
12118			if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
12119				rbuggyQSA.push("~=");
12120			}
12121
12122			// Webkit/Opera - :checked should return selected option elements
12123			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
12124			// IE8 throws error here and will not see later tests
12125			if ( !el.querySelectorAll(":checked").length ) {
12126				rbuggyQSA.push(":checked");
12127			}
12128
12129			// Support: Safari 8+, iOS 8+
12130			// https://bugs.webkit.org/show_bug.cgi?id=136851
12131			// In-page `selector#id sibling-combinator selector` fails
12132			if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
12133				rbuggyQSA.push(".#.+[+~]");
12134			}
12135		});
12136
12137		assert(function( el ) {
12138			el.innerHTML = "<a href='' disabled='disabled'></a>" +
12139				"<select disabled='disabled'><option/></select>";
12140
12141			// Support: Windows 8 Native Apps
12142			// The type and name attributes are restricted during .innerHTML assignment
12143			var input = document.createElement("input");
12144			input.setAttribute( "type", "hidden" );
12145			el.appendChild( input ).setAttribute( "name", "D" );
12146
12147			// Support: IE8
12148			// Enforce case-sensitivity of name attribute
12149			if ( el.querySelectorAll("[name=d]").length ) {
12150				rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
12151			}
12152
12153			// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
12154			// IE8 throws error here and will not see later tests
12155			if ( el.querySelectorAll(":enabled").length !== 2 ) {
12156				rbuggyQSA.push( ":enabled", ":disabled" );
12157			}
12158
12159			// Support: IE9-11+
12160			// IE's :disabled selector does not pick up the children of disabled fieldsets
12161			docElem.appendChild( el ).disabled = true;
12162			if ( el.querySelectorAll(":disabled").length !== 2 ) {
12163				rbuggyQSA.push( ":enabled", ":disabled" );
12164			}
12165
12166			// Opera 10-11 does not throw on post-comma invalid pseudos
12167			el.querySelectorAll("*,:x");
12168			rbuggyQSA.push(",.*:");
12169		});
12170	}
12171
12172	if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
12173		docElem.webkitMatchesSelector ||
12174		docElem.mozMatchesSelector ||
12175		docElem.oMatchesSelector ||
12176		docElem.msMatchesSelector) )) ) {
12177
12178		assert(function( el ) {
12179			// Check to see if it's possible to do matchesSelector
12180			// on a disconnected node (IE 9)
12181			support.disconnectedMatch = matches.call( el, "*" );
12182
12183			// This should fail with an exception
12184			// Gecko does not error, returns false instead
12185			matches.call( el, "[s!='']:x" );
12186			rbuggyMatches.push( "!=", pseudos );
12187		});
12188	}
12189
12190	rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
12191	rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
12192
12193	/* Contains
12194	---------------------------------------------------------------------- */
12195	hasCompare = rnative.test( docElem.compareDocumentPosition );
12196
12197	// Element contains another
12198	// Purposefully self-exclusive
12199	// As in, an element does not contain itself
12200	contains = hasCompare || rnative.test( docElem.contains ) ?
12201		function( a, b ) {
12202			var adown = a.nodeType === 9 ? a.documentElement : a,
12203				bup = b && b.parentNode;
12204			return a === bup || !!( bup && bup.nodeType === 1 && (
12205				adown.contains ?
12206					adown.contains( bup ) :
12207					a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
12208			));
12209		} :
12210		function( a, b ) {
12211			if ( b ) {
12212				while ( (b = b.parentNode) ) {
12213					if ( b === a ) {
12214						return true;
12215					}
12216				}
12217			}
12218			return false;
12219		};
12220
12221	/* Sorting
12222	---------------------------------------------------------------------- */
12223
12224	// Document order sorting
12225	sortOrder = hasCompare ?
12226	function( a, b ) {
12227
12228		// Flag for duplicate removal
12229		if ( a === b ) {
12230			hasDuplicate = true;
12231			return 0;
12232		}
12233
12234		// Sort on method existence if only one input has compareDocumentPosition
12235		var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
12236		if ( compare ) {
12237			return compare;
12238		}
12239
12240		// Calculate position if both inputs belong to the same document
12241		compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
12242			a.compareDocumentPosition( b ) :
12243
12244			// Otherwise we know they are disconnected
12245			1;
12246
12247		// Disconnected nodes
12248		if ( compare & 1 ||
12249			(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
12250
12251			// Choose the first element that is related to our preferred document
12252			if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
12253				return -1;
12254			}
12255			if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
12256				return 1;
12257			}
12258
12259			// Maintain original order
12260			return sortInput ?
12261				( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
12262				0;
12263		}
12264
12265		return compare & 4 ? -1 : 1;
12266	} :
12267	function( a, b ) {
12268		// Exit early if the nodes are identical
12269		if ( a === b ) {
12270			hasDuplicate = true;
12271			return 0;
12272		}
12273
12274		var cur,
12275			i = 0,
12276			aup = a.parentNode,
12277			bup = b.parentNode,
12278			ap = [ a ],
12279			bp = [ b ];
12280
12281		// Parentless nodes are either documents or disconnected
12282		if ( !aup || !bup ) {
12283			return a === document ? -1 :
12284				b === document ? 1 :
12285				aup ? -1 :
12286				bup ? 1 :
12287				sortInput ?
12288				( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
12289				0;
12290
12291		// If the nodes are siblings, we can do a quick check
12292		} else if ( aup === bup ) {
12293			return siblingCheck( a, b );
12294		}
12295
12296		// Otherwise we need full lists of their ancestors for comparison
12297		cur = a;
12298		while ( (cur = cur.parentNode) ) {
12299			ap.unshift( cur );
12300		}
12301		cur = b;
12302		while ( (cur = cur.parentNode) ) {
12303			bp.unshift( cur );
12304		}
12305
12306		// Walk down the tree looking for a discrepancy
12307		while ( ap[i] === bp[i] ) {
12308			i++;
12309		}
12310
12311		return i ?
12312			// Do a sibling check if the nodes have a common ancestor
12313			siblingCheck( ap[i], bp[i] ) :
12314
12315			// Otherwise nodes in our document sort first
12316			ap[i] === preferredDoc ? -1 :
12317			bp[i] === preferredDoc ? 1 :
12318			0;
12319	};
12320
12321	return document;
12322};
12323
12324Sizzle.matches = function( expr, elements ) {
12325	return Sizzle( expr, null, null, elements );
12326};
12327
12328Sizzle.matchesSelector = function( elem, expr ) {
12329	// Set document vars if needed
12330	if ( ( elem.ownerDocument || elem ) !== document ) {
12331		setDocument( elem );
12332	}
12333
12334	// Make sure that attribute selectors are quoted
12335	expr = expr.replace( rattributeQuotes, "='$1']" );
12336
12337	if ( support.matchesSelector && documentIsHTML &&
12338		!compilerCache[ expr + " " ] &&
12339		( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
12340		( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {
12341
12342		try {
12343			var ret = matches.call( elem, expr );
12344
12345			// IE 9's matchesSelector returns false on disconnected nodes
12346			if ( ret || support.disconnectedMatch ||
12347					// As well, disconnected nodes are said to be in a document
12348					// fragment in IE 9
12349					elem.document && elem.document.nodeType !== 11 ) {
12350				return ret;
12351			}
12352		} catch (e) {}
12353	}
12354
12355	return Sizzle( expr, document, null, [ elem ] ).length > 0;
12356};
12357
12358Sizzle.contains = function( context, elem ) {
12359	// Set document vars if needed
12360	if ( ( context.ownerDocument || context ) !== document ) {
12361		setDocument( context );
12362	}
12363	return contains( context, elem );
12364};
12365
12366Sizzle.attr = function( elem, name ) {
12367	// Set document vars if needed
12368	if ( ( elem.ownerDocument || elem ) !== document ) {
12369		setDocument( elem );
12370	}
12371
12372	var fn = Expr.attrHandle[ name.toLowerCase() ],
12373		// Don't get fooled by Object.prototype properties (jQuery #13807)
12374		val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
12375			fn( elem, name, !documentIsHTML ) :
12376			undefined;
12377
12378	return val !== undefined ?
12379		val :
12380		support.attributes || !documentIsHTML ?
12381			elem.getAttribute( name ) :
12382			(val = elem.getAttributeNode(name)) && val.specified ?
12383				val.value :
12384				null;
12385};
12386
12387Sizzle.escape = function( sel ) {
12388	return (sel + "").replace( rcssescape, fcssescape );
12389};
12390
12391Sizzle.error = function( msg ) {
12392	throw new Error( "Syntax error, unrecognized expression: " + msg );
12393};
12394
12395/**
12396 * Document sorting and removing duplicates
12397 * @param {ArrayLike} results
12398 */
12399Sizzle.uniqueSort = function( results ) {
12400	var elem,
12401		duplicates = [],
12402		j = 0,
12403		i = 0;
12404
12405	// Unless we *know* we can detect duplicates, assume their presence
12406	hasDuplicate = !support.detectDuplicates;
12407	sortInput = !support.sortStable && results.slice( 0 );
12408	results.sort( sortOrder );
12409
12410	if ( hasDuplicate ) {
12411		while ( (elem = results[i++]) ) {
12412			if ( elem === results[ i ] ) {
12413				j = duplicates.push( i );
12414			}
12415		}
12416		while ( j-- ) {
12417			results.splice( duplicates[ j ], 1 );
12418		}
12419	}
12420
12421	// Clear input after sorting to release objects
12422	// See https://github.com/jquery/sizzle/pull/225
12423	sortInput = null;
12424
12425	return results;
12426};
12427
12428/**
12429 * Utility function for retrieving the text value of an array of DOM nodes
12430 * @param {Array|Element} elem
12431 */
12432getText = Sizzle.getText = function( elem ) {
12433	var node,
12434		ret = "",
12435		i = 0,
12436		nodeType = elem.nodeType;
12437
12438	if ( !nodeType ) {
12439		// If no nodeType, this is expected to be an array
12440		while ( (node = elem[i++]) ) {
12441			// Do not traverse comment nodes
12442			ret += getText( node );
12443		}
12444	} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
12445		// Use textContent for elements
12446		// innerText usage removed for consistency of new lines (jQuery #11153)
12447		if ( typeof elem.textContent === "string" ) {
12448			return elem.textContent;
12449		} else {
12450			// Traverse its children
12451			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
12452				ret += getText( elem );
12453			}
12454		}
12455	} else if ( nodeType === 3 || nodeType === 4 ) {
12456		return elem.nodeValue;
12457	}
12458	// Do not include comment or processing instruction nodes
12459
12460	return ret;
12461};
12462
12463Expr = Sizzle.selectors = {
12464
12465	// Can be adjusted by the user
12466	cacheLength: 50,
12467
12468	createPseudo: markFunction,
12469
12470	match: matchExpr,
12471
12472	attrHandle: {},
12473
12474	find: {},
12475
12476	relative: {
12477		">": { dir: "parentNode", first: true },
12478		" ": { dir: "parentNode" },
12479		"+": { dir: "previousSibling", first: true },
12480		"~": { dir: "previousSibling" }
12481	},
12482
12483	preFilter: {
12484		"ATTR": function( match ) {
12485			match[1] = match[1].replace( runescape, funescape );
12486
12487			// Move the given value to match[3] whether quoted or unquoted
12488			match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
12489
12490			if ( match[2] === "~=" ) {
12491				match[3] = " " + match[3] + " ";
12492			}
12493
12494			return match.slice( 0, 4 );
12495		},
12496
12497		"CHILD": function( match ) {
12498			/* matches from matchExpr["CHILD"]
12499				1 type (only|nth|...)
12500				2 what (child|of-type)
12501				3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
12502				4 xn-component of xn+y argument ([+-]?\d*n|)
12503				5 sign of xn-component
12504				6 x of xn-component
12505				7 sign of y-component
12506				8 y of y-component
12507			*/
12508			match[1] = match[1].toLowerCase();
12509
12510			if ( match[1].slice( 0, 3 ) === "nth" ) {
12511				// nth-* requires argument
12512				if ( !match[3] ) {
12513					Sizzle.error( match[0] );
12514				}
12515
12516				// numeric x and y parameters for Expr.filter.CHILD
12517				// remember that false/true cast respectively to 0/1
12518				match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
12519				match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
12520
12521			// other types prohibit arguments
12522			} else if ( match[3] ) {
12523				Sizzle.error( match[0] );
12524			}
12525
12526			return match;
12527		},
12528
12529		"PSEUDO": function( match ) {
12530			var excess,
12531				unquoted = !match[6] && match[2];
12532
12533			if ( matchExpr["CHILD"].test( match[0] ) ) {
12534				return null;
12535			}
12536
12537			// Accept quoted arguments as-is
12538			if ( match[3] ) {
12539				match[2] = match[4] || match[5] || "";
12540
12541			// Strip excess characters from unquoted arguments
12542			} else if ( unquoted && rpseudo.test( unquoted ) &&
12543				// Get excess from tokenize (recursively)
12544				(excess = tokenize( unquoted, true )) &&
12545				// advance to the next closing parenthesis
12546				(excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
12547
12548				// excess is a negative index
12549				match[0] = match[0].slice( 0, excess );
12550				match[2] = unquoted.slice( 0, excess );
12551			}
12552
12553			// Return only captures needed by the pseudo filter method (type and argument)
12554			return match.slice( 0, 3 );
12555		}
12556	},
12557
12558	filter: {
12559
12560		"TAG": function( nodeNameSelector ) {
12561			var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
12562			return nodeNameSelector === "*" ?
12563				function() { return true; } :
12564				function( elem ) {
12565					return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
12566				};
12567		},
12568
12569		"CLASS": function( className ) {
12570			var pattern = classCache[ className + " " ];
12571
12572			return pattern ||
12573				(pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
12574				classCache( className, function( elem ) {
12575					return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
12576				});
12577		},
12578
12579		"ATTR": function( name, operator, check ) {
12580			return function( elem ) {
12581				var result = Sizzle.attr( elem, name );
12582
12583				if ( result == null ) {
12584					return operator === "!=";
12585				}
12586				if ( !operator ) {
12587					return true;
12588				}
12589
12590				result += "";
12591
12592				return operator === "=" ? result === check :
12593					operator === "!=" ? result !== check :
12594					operator === "^=" ? check && result.indexOf( check ) === 0 :
12595					operator === "*=" ? check && result.indexOf( check ) > -1 :
12596					operator === "$=" ? check && result.slice( -check.length ) === check :
12597					operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
12598					operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
12599					false;
12600			};
12601		},
12602
12603		"CHILD": function( type, what, argument, first, last ) {
12604			var simple = type.slice( 0, 3 ) !== "nth",
12605				forward = type.slice( -4 ) !== "last",
12606				ofType = what === "of-type";
12607
12608			return first === 1 && last === 0 ?
12609
12610				// Shortcut for :nth-*(n)
12611				function( elem ) {
12612					return !!elem.parentNode;
12613				} :
12614
12615				function( elem, context, xml ) {
12616					var cache, uniqueCache, outerCache, node, nodeIndex, start,
12617						dir = simple !== forward ? "nextSibling" : "previousSibling",
12618						parent = elem.parentNode,
12619						name = ofType && elem.nodeName.toLowerCase(),
12620						useCache = !xml && !ofType,
12621						diff = false;
12622
12623					if ( parent ) {
12624
12625						// :(first|last|only)-(child|of-type)
12626						if ( simple ) {
12627							while ( dir ) {
12628								node = elem;
12629								while ( (node = node[ dir ]) ) {
12630									if ( ofType ?
12631										node.nodeName.toLowerCase() === name :
12632										node.nodeType === 1 ) {
12633
12634										return false;
12635									}
12636								}
12637								// Reverse direction for :only-* (if we haven't yet done so)
12638								start = dir = type === "only" && !start && "nextSibling";
12639							}
12640							return true;
12641						}
12642
12643						start = [ forward ? parent.firstChild : parent.lastChild ];
12644
12645						// non-xml :nth-child(...) stores cache data on `parent`
12646						if ( forward && useCache ) {
12647
12648							// Seek `elem` from a previously-cached index
12649
12650							// ...in a gzip-friendly way
12651							node = parent;
12652							outerCache = node[ expando ] || (node[ expando ] = {});
12653
12654							// Support: IE <9 only
12655							// Defend against cloned attroperties (jQuery gh-1709)
12656							uniqueCache = outerCache[ node.uniqueID ] ||
12657								(outerCache[ node.uniqueID ] = {});
12658
12659							cache = uniqueCache[ type ] || [];
12660							nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
12661							diff = nodeIndex && cache[ 2 ];
12662							node = nodeIndex && parent.childNodes[ nodeIndex ];
12663
12664							while ( (node = ++nodeIndex && node && node[ dir ] ||
12665
12666								// Fallback to seeking `elem` from the start
12667								(diff = nodeIndex = 0) || start.pop()) ) {
12668
12669								// When found, cache indexes on `parent` and break
12670								if ( node.nodeType === 1 && ++diff && node === elem ) {
12671									uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];
12672									break;
12673								}
12674							}
12675
12676						} else {
12677							// Use previously-cached element index if available
12678							if ( useCache ) {
12679								// ...in a gzip-friendly way
12680								node = elem;
12681								outerCache = node[ expando ] || (node[ expando ] = {});
12682
12683								// Support: IE <9 only
12684								// Defend against cloned attroperties (jQuery gh-1709)
12685								uniqueCache = outerCache[ node.uniqueID ] ||
12686									(outerCache[ node.uniqueID ] = {});
12687
12688								cache = uniqueCache[ type ] || [];
12689								nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
12690								diff = nodeIndex;
12691							}
12692
12693							// xml :nth-child(...)
12694							// or :nth-last-child(...) or :nth(-last)?-of-type(...)
12695							if ( diff === false ) {
12696								// Use the same loop as above to seek `elem` from the start
12697								while ( (node = ++nodeIndex && node && node[ dir ] ||
12698									(diff = nodeIndex = 0) || start.pop()) ) {
12699
12700									if ( ( ofType ?
12701										node.nodeName.toLowerCase() === name :
12702										node.nodeType === 1 ) &&
12703										++diff ) {
12704
12705										// Cache the index of each encountered element
12706										if ( useCache ) {
12707											outerCache = node[ expando ] || (node[ expando ] = {});
12708
12709											// Support: IE <9 only
12710											// Defend against cloned attroperties (jQuery gh-1709)
12711											uniqueCache = outerCache[ node.uniqueID ] ||
12712												(outerCache[ node.uniqueID ] = {});
12713
12714											uniqueCache[ type ] = [ dirruns, diff ];
12715										}
12716
12717										if ( node === elem ) {
12718											break;
12719										}
12720									}
12721								}
12722							}
12723						}
12724
12725						// Incorporate the offset, then check against cycle size
12726						diff -= last;
12727						return diff === first || ( diff % first === 0 && diff / first >= 0 );
12728					}
12729				};
12730		},
12731
12732		"PSEUDO": function( pseudo, argument ) {
12733			// pseudo-class names are case-insensitive
12734			// http://www.w3.org/TR/selectors/#pseudo-classes
12735			// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
12736			// Remember that setFilters inherits from pseudos
12737			var args,
12738				fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
12739					Sizzle.error( "unsupported pseudo: " + pseudo );
12740
12741			// The user may use createPseudo to indicate that
12742			// arguments are needed to create the filter function
12743			// just as Sizzle does
12744			if ( fn[ expando ] ) {
12745				return fn( argument );
12746			}
12747
12748			// But maintain support for old signatures
12749			if ( fn.length > 1 ) {
12750				args = [ pseudo, pseudo, "", argument ];
12751				return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
12752					markFunction(function( seed, matches ) {
12753						var idx,
12754							matched = fn( seed, argument ),
12755							i = matched.length;
12756						while ( i-- ) {
12757							idx = indexOf( seed, matched[i] );
12758							seed[ idx ] = !( matches[ idx ] = matched[i] );
12759						}
12760					}) :
12761					function( elem ) {
12762						return fn( elem, 0, args );
12763					};
12764			}
12765
12766			return fn;
12767		}
12768	},
12769
12770	pseudos: {
12771		// Potentially complex pseudos
12772		"not": markFunction(function( selector ) {
12773			// Trim the selector passed to compile
12774			// to avoid treating leading and trailing
12775			// spaces as combinators
12776			var input = [],
12777				results = [],
12778				matcher = compile( selector.replace( rtrim, "$1" ) );
12779
12780			return matcher[ expando ] ?
12781				markFunction(function( seed, matches, context, xml ) {
12782					var elem,
12783						unmatched = matcher( seed, null, xml, [] ),
12784						i = seed.length;
12785
12786					// Match elements unmatched by `matcher`
12787					while ( i-- ) {
12788						if ( (elem = unmatched[i]) ) {
12789							seed[i] = !(matches[i] = elem);
12790						}
12791					}
12792				}) :
12793				function( elem, context, xml ) {
12794					input[0] = elem;
12795					matcher( input, null, xml, results );
12796					// Don't keep the element (issue #299)
12797					input[0] = null;
12798					return !results.pop();
12799				};
12800		}),
12801
12802		"has": markFunction(function( selector ) {
12803			return function( elem ) {
12804				return Sizzle( selector, elem ).length > 0;
12805			};
12806		}),
12807
12808		"contains": markFunction(function( text ) {
12809			text = text.replace( runescape, funescape );
12810			return function( elem ) {
12811				return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
12812			};
12813		}),
12814
12815		// "Whether an element is represented by a :lang() selector
12816		// is based solely on the element's language value
12817		// being equal to the identifier C,
12818		// or beginning with the identifier C immediately followed by "-".
12819		// The matching of C against the element's language value is performed case-insensitively.
12820		// The identifier C does not have to be a valid language name."
12821		// http://www.w3.org/TR/selectors/#lang-pseudo
12822		"lang": markFunction( function( lang ) {
12823			// lang value must be a valid identifier
12824			if ( !ridentifier.test(lang || "") ) {
12825				Sizzle.error( "unsupported lang: " + lang );
12826			}
12827			lang = lang.replace( runescape, funescape ).toLowerCase();
12828			return function( elem ) {
12829				var elemLang;
12830				do {
12831					if ( (elemLang = documentIsHTML ?
12832						elem.lang :
12833						elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
12834
12835						elemLang = elemLang.toLowerCase();
12836						return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
12837					}
12838				} while ( (elem = elem.parentNode) && elem.nodeType === 1 );
12839				return false;
12840			};
12841		}),
12842
12843		// Miscellaneous
12844		"target": function( elem ) {
12845			var hash = window.location && window.location.hash;
12846			return hash && hash.slice( 1 ) === elem.id;
12847		},
12848
12849		"root": function( elem ) {
12850			return elem === docElem;
12851		},
12852
12853		"focus": function( elem ) {
12854			return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
12855		},
12856
12857		// Boolean properties
12858		"enabled": createDisabledPseudo( false ),
12859		"disabled": createDisabledPseudo( true ),
12860
12861		"checked": function( elem ) {
12862			// In CSS3, :checked should return both checked and selected elements
12863			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
12864			var nodeName = elem.nodeName.toLowerCase();
12865			return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
12866		},
12867
12868		"selected": function( elem ) {
12869			// Accessing this property makes selected-by-default
12870			// options in Safari work properly
12871			if ( elem.parentNode ) {
12872				elem.parentNode.selectedIndex;
12873			}
12874
12875			return elem.selected === true;
12876		},
12877
12878		// Contents
12879		"empty": function( elem ) {
12880			// http://www.w3.org/TR/selectors/#empty-pseudo
12881			// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
12882			//   but not by others (comment: 8; processing instruction: 7; etc.)
12883			// nodeType < 6 works because attributes (2) do not appear as children
12884			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
12885				if ( elem.nodeType < 6 ) {
12886					return false;
12887				}
12888			}
12889			return true;
12890		},
12891
12892		"parent": function( elem ) {
12893			return !Expr.pseudos["empty"]( elem );
12894		},
12895
12896		// Element/input types
12897		"header": function( elem ) {
12898			return rheader.test( elem.nodeName );
12899		},
12900
12901		"input": function( elem ) {
12902			return rinputs.test( elem.nodeName );
12903		},
12904
12905		"button": function( elem ) {
12906			var name = elem.nodeName.toLowerCase();
12907			return name === "input" && elem.type === "button" || name === "button";
12908		},
12909
12910		"text": function( elem ) {
12911			var attr;
12912			return elem.nodeName.toLowerCase() === "input" &&
12913				elem.type === "text" &&
12914
12915				// Support: IE<8
12916				// New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
12917				( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
12918		},
12919
12920		// Position-in-collection
12921		"first": createPositionalPseudo(function() {
12922			return [ 0 ];
12923		}),
12924
12925		"last": createPositionalPseudo(function( matchIndexes, length ) {
12926			return [ length - 1 ];
12927		}),
12928
12929		"eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
12930			return [ argument < 0 ? argument + length : argument ];
12931		}),
12932
12933		"even": createPositionalPseudo(function( matchIndexes, length ) {
12934			var i = 0;
12935			for ( ; i < length; i += 2 ) {
12936				matchIndexes.push( i );
12937			}
12938			return matchIndexes;
12939		}),
12940
12941		"odd": createPositionalPseudo(function( matchIndexes, length ) {
12942			var i = 1;
12943			for ( ; i < length; i += 2 ) {
12944				matchIndexes.push( i );
12945			}
12946			return matchIndexes;
12947		}),
12948
12949		"lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
12950			var i = argument < 0 ? argument + length : argument;
12951			for ( ; --i >= 0; ) {
12952				matchIndexes.push( i );
12953			}
12954			return matchIndexes;
12955		}),
12956
12957		"gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
12958			var i = argument < 0 ? argument + length : argument;
12959			for ( ; ++i < length; ) {
12960				matchIndexes.push( i );
12961			}
12962			return matchIndexes;
12963		})
12964	}
12965};
12966
12967Expr.pseudos["nth"] = Expr.pseudos["eq"];
12968
12969// Add button/input type pseudos
12970for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
12971	Expr.pseudos[ i ] = createInputPseudo( i );
12972}
12973for ( i in { submit: true, reset: true } ) {
12974	Expr.pseudos[ i ] = createButtonPseudo( i );
12975}
12976
12977// Easy API for creating new setFilters
12978function setFilters() {}
12979setFilters.prototype = Expr.filters = Expr.pseudos;
12980Expr.setFilters = new setFilters();
12981
12982tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
12983	var matched, match, tokens, type,
12984		soFar, groups, preFilters,
12985		cached = tokenCache[ selector + " " ];
12986
12987	if ( cached ) {
12988		return parseOnly ? 0 : cached.slice( 0 );
12989	}
12990
12991	soFar = selector;
12992	groups = [];
12993	preFilters = Expr.preFilter;
12994
12995	while ( soFar ) {
12996
12997		// Comma and first run
12998		if ( !matched || (match = rcomma.exec( soFar )) ) {
12999			if ( match ) {
13000				// Don't consume trailing commas as valid
13001				soFar = soFar.slice( match[0].length ) || soFar;
13002			}
13003			groups.push( (tokens = []) );
13004		}
13005
13006		matched = false;
13007
13008		// Combinators
13009		if ( (match = rcombinators.exec( soFar )) ) {
13010			matched = match.shift();
13011			tokens.push({
13012				value: matched,
13013				// Cast descendant combinators to space
13014				type: match[0].replace( rtrim, " " )
13015			});
13016			soFar = soFar.slice( matched.length );
13017		}
13018
13019		// Filters
13020		for ( type in Expr.filter ) {
13021			if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
13022				(match = preFilters[ type ]( match ))) ) {
13023				matched = match.shift();
13024				tokens.push({
13025					value: matched,
13026					type: type,
13027					matches: match
13028				});
13029				soFar = soFar.slice( matched.length );
13030			}
13031		}
13032
13033		if ( !matched ) {
13034			break;
13035		}
13036	}
13037
13038	// Return the length of the invalid excess
13039	// if we're just parsing
13040	// Otherwise, throw an error or return tokens
13041	return parseOnly ?
13042		soFar.length :
13043		soFar ?
13044			Sizzle.error( selector ) :
13045			// Cache the tokens
13046			tokenCache( selector, groups ).slice( 0 );
13047};
13048
13049function toSelector( tokens ) {
13050	var i = 0,
13051		len = tokens.length,
13052		selector = "";
13053	for ( ; i < len; i++ ) {
13054		selector += tokens[i].value;
13055	}
13056	return selector;
13057}
13058
13059function addCombinator( matcher, combinator, base ) {
13060	var dir = combinator.dir,
13061		skip = combinator.next,
13062		key = skip || dir,
13063		checkNonElements = base && key === "parentNode",
13064		doneName = done++;
13065
13066	return combinator.first ?
13067		// Check against closest ancestor/preceding element
13068		function( elem, context, xml ) {
13069			while ( (elem = elem[ dir ]) ) {
13070				if ( elem.nodeType === 1 || checkNonElements ) {
13071					return matcher( elem, context, xml );
13072				}
13073			}
13074			return false;
13075		} :
13076
13077		// Check against all ancestor/preceding elements
13078		function( elem, context, xml ) {
13079			var oldCache, uniqueCache, outerCache,
13080				newCache = [ dirruns, doneName ];
13081
13082			// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
13083			if ( xml ) {
13084				while ( (elem = elem[ dir ]) ) {
13085					if ( elem.nodeType === 1 || checkNonElements ) {
13086						if ( matcher( elem, context, xml ) ) {
13087							return true;
13088						}
13089					}
13090				}
13091			} else {
13092				while ( (elem = elem[ dir ]) ) {
13093					if ( elem.nodeType === 1 || checkNonElements ) {
13094						outerCache = elem[ expando ] || (elem[ expando ] = {});
13095
13096						// Support: IE <9 only
13097						// Defend against cloned attroperties (jQuery gh-1709)
13098						uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});
13099
13100						if ( skip && skip === elem.nodeName.toLowerCase() ) {
13101							elem = elem[ dir ] || elem;
13102						} else if ( (oldCache = uniqueCache[ key ]) &&
13103							oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
13104
13105							// Assign to newCache so results back-propagate to previous elements
13106							return (newCache[ 2 ] = oldCache[ 2 ]);
13107						} else {
13108							// Reuse newcache so results back-propagate to previous elements
13109							uniqueCache[ key ] = newCache;
13110
13111							// A match means we're done; a fail means we have to keep checking
13112							if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
13113								return true;
13114							}
13115						}
13116					}
13117				}
13118			}
13119			return false;
13120		};
13121}
13122
13123function elementMatcher( matchers ) {
13124	return matchers.length > 1 ?
13125		function( elem, context, xml ) {
13126			var i = matchers.length;
13127			while ( i-- ) {
13128				if ( !matchers[i]( elem, context, xml ) ) {
13129					return false;
13130				}
13131			}
13132			return true;
13133		} :
13134		matchers[0];
13135}
13136
13137function multipleContexts( selector, contexts, results ) {
13138	var i = 0,
13139		len = contexts.length;
13140	for ( ; i < len; i++ ) {
13141		Sizzle( selector, contexts[i], results );
13142	}
13143	return results;
13144}
13145
13146function condense( unmatched, map, filter, context, xml ) {
13147	var elem,
13148		newUnmatched = [],
13149		i = 0,
13150		len = unmatched.length,
13151		mapped = map != null;
13152
13153	for ( ; i < len; i++ ) {
13154		if ( (elem = unmatched[i]) ) {
13155			if ( !filter || filter( elem, context, xml ) ) {
13156				newUnmatched.push( elem );
13157				if ( mapped ) {
13158					map.push( i );
13159				}
13160			}
13161		}
13162	}
13163
13164	return newUnmatched;
13165}
13166
13167function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
13168	if ( postFilter && !postFilter[ expando ] ) {
13169		postFilter = setMatcher( postFilter );
13170	}
13171	if ( postFinder && !postFinder[ expando ] ) {
13172		postFinder = setMatcher( postFinder, postSelector );
13173	}
13174	return markFunction(function( seed, results, context, xml ) {
13175		var temp, i, elem,
13176			preMap = [],
13177			postMap = [],
13178			preexisting = results.length,
13179
13180			// Get initial elements from seed or context
13181			elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
13182
13183			// Prefilter to get matcher input, preserving a map for seed-results synchronization
13184			matcherIn = preFilter && ( seed || !selector ) ?
13185				condense( elems, preMap, preFilter, context, xml ) :
13186				elems,
13187
13188			matcherOut = matcher ?
13189				// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
13190				postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
13191
13192					// ...intermediate processing is necessary
13193					[] :
13194
13195					// ...otherwise use results directly
13196					results :
13197				matcherIn;
13198
13199		// Find primary matches
13200		if ( matcher ) {
13201			matcher( matcherIn, matcherOut, context, xml );
13202		}
13203
13204		// Apply postFilter
13205		if ( postFilter ) {
13206			temp = condense( matcherOut, postMap );
13207			postFilter( temp, [], context, xml );
13208
13209			// Un-match failing elements by moving them back to matcherIn
13210			i = temp.length;
13211			while ( i-- ) {
13212				if ( (elem = temp[i]) ) {
13213					matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
13214				}
13215			}
13216		}
13217
13218		if ( seed ) {
13219			if ( postFinder || preFilter ) {
13220				if ( postFinder ) {
13221					// Get the final matcherOut by condensing this intermediate into postFinder contexts
13222					temp = [];
13223					i = matcherOut.length;
13224					while ( i-- ) {
13225						if ( (elem = matcherOut[i]) ) {
13226							// Restore matcherIn since elem is not yet a final match
13227							temp.push( (matcherIn[i] = elem) );
13228						}
13229					}
13230					postFinder( null, (matcherOut = []), temp, xml );
13231				}
13232
13233				// Move matched elements from seed to results to keep them synchronized
13234				i = matcherOut.length;
13235				while ( i-- ) {
13236					if ( (elem = matcherOut[i]) &&
13237						(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
13238
13239						seed[temp] = !(results[temp] = elem);
13240					}
13241				}
13242			}
13243
13244		// Add elements to results, through postFinder if defined
13245		} else {
13246			matcherOut = condense(
13247				matcherOut === results ?
13248					matcherOut.splice( preexisting, matcherOut.length ) :
13249					matcherOut
13250			);
13251			if ( postFinder ) {
13252				postFinder( null, results, matcherOut, xml );
13253			} else {
13254				push.apply( results, matcherOut );
13255			}
13256		}
13257	});
13258}
13259
13260function matcherFromTokens( tokens ) {
13261	var checkContext, matcher, j,
13262		len = tokens.length,
13263		leadingRelative = Expr.relative[ tokens[0].type ],
13264		implicitRelative = leadingRelative || Expr.relative[" "],
13265		i = leadingRelative ? 1 : 0,
13266
13267		// The foundational matcher ensures that elements are reachable from top-level context(s)
13268		matchContext = addCombinator( function( elem ) {
13269			return elem === checkContext;
13270		}, implicitRelative, true ),
13271		matchAnyContext = addCombinator( function( elem ) {
13272			return indexOf( checkContext, elem ) > -1;
13273		}, implicitRelative, true ),
13274		matchers = [ function( elem, context, xml ) {
13275			var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
13276				(checkContext = context).nodeType ?
13277					matchContext( elem, context, xml ) :
13278					matchAnyContext( elem, context, xml ) );
13279			// Avoid hanging onto element (issue #299)
13280			checkContext = null;
13281			return ret;
13282		} ];
13283
13284	for ( ; i < len; i++ ) {
13285		if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
13286			matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
13287		} else {
13288			matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
13289
13290			// Return special upon seeing a positional matcher
13291			if ( matcher[ expando ] ) {
13292				// Find the next relative operator (if any) for proper handling
13293				j = ++i;
13294				for ( ; j < len; j++ ) {
13295					if ( Expr.relative[ tokens[j].type ] ) {
13296						break;
13297					}
13298				}
13299				return setMatcher(
13300					i > 1 && elementMatcher( matchers ),
13301					i > 1 && toSelector(
13302						// If the preceding token was a descendant combinator, insert an implicit any-element `*`
13303						tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
13304					).replace( rtrim, "$1" ),
13305					matcher,
13306					i < j && matcherFromTokens( tokens.slice( i, j ) ),
13307					j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
13308					j < len && toSelector( tokens )
13309				);
13310			}
13311			matchers.push( matcher );
13312		}
13313	}
13314
13315	return elementMatcher( matchers );
13316}
13317
13318function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
13319	var bySet = setMatchers.length > 0,
13320		byElement = elementMatchers.length > 0,
13321		superMatcher = function( seed, context, xml, results, outermost ) {
13322			var elem, j, matcher,
13323				matchedCount = 0,
13324				i = "0",
13325				unmatched = seed && [],
13326				setMatched = [],
13327				contextBackup = outermostContext,
13328				// We must always have either seed elements or outermost context
13329				elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
13330				// Use integer dirruns iff this is the outermost matcher
13331				dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
13332				len = elems.length;
13333
13334			if ( outermost ) {
13335				outermostContext = context === document || context || outermost;
13336			}
13337
13338			// Add elements passing elementMatchers directly to results
13339			// Support: IE<9, Safari
13340			// Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
13341			for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
13342				if ( byElement && elem ) {
13343					j = 0;
13344					if ( !context && elem.ownerDocument !== document ) {
13345						setDocument( elem );
13346						xml = !documentIsHTML;
13347					}
13348					while ( (matcher = elementMatchers[j++]) ) {
13349						if ( matcher( elem, context || document, xml) ) {
13350							results.push( elem );
13351							break;
13352						}
13353					}
13354					if ( outermost ) {
13355						dirruns = dirrunsUnique;
13356					}
13357				}
13358
13359				// Track unmatched elements for set filters
13360				if ( bySet ) {
13361					// They will have gone through all possible matchers
13362					if ( (elem = !matcher && elem) ) {
13363						matchedCount--;
13364					}
13365
13366					// Lengthen the array for every element, matched or not
13367					if ( seed ) {
13368						unmatched.push( elem );
13369					}
13370				}
13371			}
13372
13373			// `i` is now the count of elements visited above, and adding it to `matchedCount`
13374			// makes the latter nonnegative.
13375			matchedCount += i;
13376
13377			// Apply set filters to unmatched elements
13378			// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
13379			// equals `i`), unless we didn't visit _any_ elements in the above loop because we have
13380			// no element matchers and no seed.
13381			// Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
13382			// case, which will result in a "00" `matchedCount` that differs from `i` but is also
13383			// numerically zero.
13384			if ( bySet && i !== matchedCount ) {
13385				j = 0;
13386				while ( (matcher = setMatchers[j++]) ) {
13387					matcher( unmatched, setMatched, context, xml );
13388				}
13389
13390				if ( seed ) {
13391					// Reintegrate element matches to eliminate the need for sorting
13392					if ( matchedCount > 0 ) {
13393						while ( i-- ) {
13394							if ( !(unmatched[i] || setMatched[i]) ) {
13395								setMatched[i] = pop.call( results );
13396							}
13397						}
13398					}
13399
13400					// Discard index placeholder values to get only actual matches
13401					setMatched = condense( setMatched );
13402				}
13403
13404				// Add matches to results
13405				push.apply( results, setMatched );
13406
13407				// Seedless set matches succeeding multiple successful matchers stipulate sorting
13408				if ( outermost && !seed && setMatched.length > 0 &&
13409					( matchedCount + setMatchers.length ) > 1 ) {
13410
13411					Sizzle.uniqueSort( results );
13412				}
13413			}
13414
13415			// Override manipulation of globals by nested matchers
13416			if ( outermost ) {
13417				dirruns = dirrunsUnique;
13418				outermostContext = contextBackup;
13419			}
13420
13421			return unmatched;
13422		};
13423
13424	return bySet ?
13425		markFunction( superMatcher ) :
13426		superMatcher;
13427}
13428
13429compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
13430	var i,
13431		setMatchers = [],
13432		elementMatchers = [],
13433		cached = compilerCache[ selector + " " ];
13434
13435	if ( !cached ) {
13436		// Generate a function of recursive functions that can be used to check each element
13437		if ( !match ) {
13438			match = tokenize( selector );
13439		}
13440		i = match.length;
13441		while ( i-- ) {
13442			cached = matcherFromTokens( match[i] );
13443			if ( cached[ expando ] ) {
13444				setMatchers.push( cached );
13445			} else {
13446				elementMatchers.push( cached );
13447			}
13448		}
13449
13450		// Cache the compiled function
13451		cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
13452
13453		// Save selector and tokenization
13454		cached.selector = selector;
13455	}
13456	return cached;
13457};
13458
13459/**
13460 * A low-level selection function that works with Sizzle's compiled
13461 *  selector functions
13462 * @param {String|Function} selector A selector or a pre-compiled
13463 *  selector function built with Sizzle.compile
13464 * @param {Element} context
13465 * @param {Array} [results]
13466 * @param {Array} [seed] A set of elements to match against
13467 */
13468select = Sizzle.select = function( selector, context, results, seed ) {
13469	var i, tokens, token, type, find,
13470		compiled = typeof selector === "function" && selector,
13471		match = !seed && tokenize( (selector = compiled.selector || selector) );
13472
13473	results = results || [];
13474
13475	// Try to minimize operations if there is only one selector in the list and no seed
13476	// (the latter of which guarantees us context)
13477	if ( match.length === 1 ) {
13478
13479		// Reduce context if the leading compound selector is an ID
13480		tokens = match[0] = match[0].slice( 0 );
13481		if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
13482				context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {
13483
13484			context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
13485			if ( !context ) {
13486				return results;
13487
13488			// Precompiled matchers will still verify ancestry, so step up a level
13489			} else if ( compiled ) {
13490				context = context.parentNode;
13491			}
13492
13493			selector = selector.slice( tokens.shift().value.length );
13494		}
13495
13496		// Fetch a seed set for right-to-left matching
13497		i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
13498		while ( i-- ) {
13499			token = tokens[i];
13500
13501			// Abort if we hit a combinator
13502			if ( Expr.relative[ (type = token.type) ] ) {
13503				break;
13504			}
13505			if ( (find = Expr.find[ type ]) ) {
13506				// Search, expanding context for leading sibling combinators
13507				if ( (seed = find(
13508					token.matches[0].replace( runescape, funescape ),
13509					rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
13510				)) ) {
13511
13512					// If seed is empty or no tokens remain, we can return early
13513					tokens.splice( i, 1 );
13514					selector = seed.length && toSelector( tokens );
13515					if ( !selector ) {
13516						push.apply( results, seed );
13517						return results;
13518					}
13519
13520					break;
13521				}
13522			}
13523		}
13524	}
13525
13526	// Compile and execute a filtering function if one is not provided
13527	// Provide `match` to avoid retokenization if we modified the selector above
13528	( compiled || compile( selector, match ) )(
13529		seed,
13530		context,
13531		!documentIsHTML,
13532		results,
13533		!context || rsibling.test( selector ) && testContext( context.parentNode ) || context
13534	);
13535	return results;
13536};
13537
13538// One-time assignments
13539
13540// Sort stability
13541support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
13542
13543// Support: Chrome 14-35+
13544// Always assume duplicates if they aren't passed to the comparison function
13545support.detectDuplicates = !!hasDuplicate;
13546
13547// Initialize against the default document
13548setDocument();
13549
13550// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
13551// Detached nodes confoundingly follow *each other*
13552support.sortDetached = assert(function( el ) {
13553	// Should return 1, but returns 4 (following)
13554	return el.compareDocumentPosition( document.createElement("fieldset") ) & 1;
13555});
13556
13557// Support: IE<8
13558// Prevent attribute/property "interpolation"
13559// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
13560if ( !assert(function( el ) {
13561	el.innerHTML = "<a href='#'></a>";
13562	return el.firstChild.getAttribute("href") === "#" ;
13563}) ) {
13564	addHandle( "type|href|height|width", function( elem, name, isXML ) {
13565		if ( !isXML ) {
13566			return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
13567		}
13568	});
13569}
13570
13571// Support: IE<9
13572// Use defaultValue in place of getAttribute("value")
13573if ( !support.attributes || !assert(function( el ) {
13574	el.innerHTML = "<input/>";
13575	el.firstChild.setAttribute( "value", "" );
13576	return el.firstChild.getAttribute( "value" ) === "";
13577}) ) {
13578	addHandle( "value", function( elem, name, isXML ) {
13579		if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
13580			return elem.defaultValue;
13581		}
13582	});
13583}
13584
13585// Support: IE<9
13586// Use getAttributeNode to fetch booleans when getAttribute lies
13587if ( !assert(function( el ) {
13588	return el.getAttribute("disabled") == null;
13589}) ) {
13590	addHandle( booleans, function( elem, name, isXML ) {
13591		var val;
13592		if ( !isXML ) {
13593			return elem[ name ] === true ? name.toLowerCase() :
13594					(val = elem.getAttributeNode( name )) && val.specified ?
13595					val.value :
13596				null;
13597		}
13598	});
13599}
13600
13601return Sizzle;
13602
13603})( window );
13604
13605
13606
13607jQuery.find = Sizzle;
13608jQuery.expr = Sizzle.selectors;
13609
13610// Deprecated
13611jQuery.expr[ ":" ] = jQuery.expr.pseudos;
13612jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
13613jQuery.text = Sizzle.getText;
13614jQuery.isXMLDoc = Sizzle.isXML;
13615jQuery.contains = Sizzle.contains;
13616jQuery.escapeSelector = Sizzle.escape;
13617
13618
13619
13620
13621var dir = function( elem, dir, until ) {
13622	var matched = [],
13623		truncate = until !== undefined;
13624
13625	while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {
13626		if ( elem.nodeType === 1 ) {
13627			if ( truncate && jQuery( elem ).is( until ) ) {
13628				break;
13629			}
13630			matched.push( elem );
13631		}
13632	}
13633	return matched;
13634};
13635
13636
13637var siblings = function( n, elem ) {
13638	var matched = [];
13639
13640	for ( ; n; n = n.nextSibling ) {
13641		if ( n.nodeType === 1 && n !== elem ) {
13642			matched.push( n );
13643		}
13644	}
13645
13646	return matched;
13647};
13648
13649
13650var rneedsContext = jQuery.expr.match.needsContext;
13651
13652
13653
13654function nodeName( elem, name ) {
13655
13656  return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
13657
13658};
13659var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
13660
13661
13662
13663// Implement the identical functionality for filter and not
13664function winnow( elements, qualifier, not ) {
13665	if ( isFunction( qualifier ) ) {
13666		return jQuery.grep( elements, function( elem, i ) {
13667			return !!qualifier.call( elem, i, elem ) !== not;
13668		} );
13669	}
13670
13671	// Single element
13672	if ( qualifier.nodeType ) {
13673		return jQuery.grep( elements, function( elem ) {
13674			return ( elem === qualifier ) !== not;
13675		} );
13676	}
13677
13678	// Arraylike of elements (jQuery, arguments, Array)
13679	if ( typeof qualifier !== "string" ) {
13680		return jQuery.grep( elements, function( elem ) {
13681			return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
13682		} );
13683	}
13684
13685	// Filtered directly for both simple and complex selectors
13686	return jQuery.filter( qualifier, elements, not );
13687}
13688
13689jQuery.filter = function( expr, elems, not ) {
13690	var elem = elems[ 0 ];
13691
13692	if ( not ) {
13693		expr = ":not(" + expr + ")";
13694	}
13695
13696	if ( elems.length === 1 && elem.nodeType === 1 ) {
13697		return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];
13698	}
13699
13700	return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
13701		return elem.nodeType === 1;
13702	} ) );
13703};
13704
13705jQuery.fn.extend( {
13706	find: function( selector ) {
13707		var i, ret,
13708			len = this.length,
13709			self = this;
13710
13711		if ( typeof selector !== "string" ) {
13712			return this.pushStack( jQuery( selector ).filter( function() {
13713				for ( i = 0; i < len; i++ ) {
13714					if ( jQuery.contains( self[ i ], this ) ) {
13715						return true;
13716					}
13717				}
13718			} ) );
13719		}
13720
13721		ret = this.pushStack( [] );
13722
13723		for ( i = 0; i < len; i++ ) {
13724			jQuery.find( selector, self[ i ], ret );
13725		}
13726
13727		return len > 1 ? jQuery.uniqueSort( ret ) : ret;
13728	},
13729	filter: function( selector ) {
13730		return this.pushStack( winnow( this, selector || [], false ) );
13731	},
13732	not: function( selector ) {
13733		return this.pushStack( winnow( this, selector || [], true ) );
13734	},
13735	is: function( selector ) {
13736		return !!winnow(
13737			this,
13738
13739			// If this is a positional/relative selector, check membership in the returned set
13740			// so $("p:first").is("p:last") won't return true for a doc with two "p".
13741			typeof selector === "string" && rneedsContext.test( selector ) ?
13742				jQuery( selector ) :
13743				selector || [],
13744			false
13745		).length;
13746	}
13747} );
13748
13749
13750// Initialize a jQuery object
13751
13752
13753// A central reference to the root jQuery(document)
13754var rootjQuery,
13755
13756	// A simple way to check for HTML strings
13757	// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
13758	// Strict HTML recognition (#11290: must start with <)
13759	// Shortcut simple #id case for speed
13760	rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
13761
13762	init = jQuery.fn.init = function( selector, context, root ) {
13763		var match, elem;
13764
13765		// HANDLE: $(""), $(null), $(undefined), $(false)
13766		if ( !selector ) {
13767			return this;
13768		}
13769
13770		// Method init() accepts an alternate rootjQuery
13771		// so migrate can support jQuery.sub (gh-2101)
13772		root = root || rootjQuery;
13773
13774		// Handle HTML strings
13775		if ( typeof selector === "string" ) {
13776			if ( selector[ 0 ] === "<" &&
13777				selector[ selector.length - 1 ] === ">" &&
13778				selector.length >= 3 ) {
13779
13780				// Assume that strings that start and end with <> are HTML and skip the regex check
13781				match = [ null, selector, null ];
13782
13783			} else {
13784				match = rquickExpr.exec( selector );
13785			}
13786
13787			// Match html or make sure no context is specified for #id
13788			if ( match && ( match[ 1 ] || !context ) ) {
13789
13790				// HANDLE: $(html) -> $(array)
13791				if ( match[ 1 ] ) {
13792					context = context instanceof jQuery ? context[ 0 ] : context;
13793
13794					// Option to run scripts is true for back-compat
13795					// Intentionally let the error be thrown if parseHTML is not present
13796					jQuery.merge( this, jQuery.parseHTML(
13797						match[ 1 ],
13798						context && context.nodeType ? context.ownerDocument || context : document,
13799						true
13800					) );
13801
13802					// HANDLE: $(html, props)
13803					if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
13804						for ( match in context ) {
13805
13806							// Properties of context are called as methods if possible
13807							if ( isFunction( this[ match ] ) ) {
13808								this[ match ]( context[ match ] );
13809
13810							// ...and otherwise set as attributes
13811							} else {
13812								this.attr( match, context[ match ] );
13813							}
13814						}
13815					}
13816
13817					return this;
13818
13819				// HANDLE: $(#id)
13820				} else {
13821					elem = document.getElementById( match[ 2 ] );
13822
13823					if ( elem ) {
13824
13825						// Inject the element directly into the jQuery object
13826						this[ 0 ] = elem;
13827						this.length = 1;
13828					}
13829					return this;
13830				}
13831
13832			// HANDLE: $(expr, $(...))
13833			} else if ( !context || context.jquery ) {
13834				return ( context || root ).find( selector );
13835
13836			// HANDLE: $(expr, context)
13837			// (which is just equivalent to: $(context).find(expr)
13838			} else {
13839				return this.constructor( context ).find( selector );
13840			}
13841
13842		// HANDLE: $(DOMElement)
13843		} else if ( selector.nodeType ) {
13844			this[ 0 ] = selector;
13845			this.length = 1;
13846			return this;
13847
13848		// HANDLE: $(function)
13849		// Shortcut for document ready
13850		} else if ( isFunction( selector ) ) {
13851			return root.ready !== undefined ?
13852				root.ready( selector ) :
13853
13854				// Execute immediately if ready is not present
13855				selector( jQuery );
13856		}
13857
13858		return jQuery.makeArray( selector, this );
13859	};
13860
13861// Give the init function the jQuery prototype for later instantiation
13862init.prototype = jQuery.fn;
13863
13864// Initialize central reference
13865rootjQuery = jQuery( document );
13866
13867
13868var rparentsprev = /^(?:parents|prev(?:Until|All))/,
13869
13870	// Methods guaranteed to produce a unique set when starting from a unique set
13871	guaranteedUnique = {
13872		children: true,
13873		contents: true,
13874		next: true,
13875		prev: true
13876	};
13877
13878jQuery.fn.extend( {
13879	has: function( target ) {
13880		var targets = jQuery( target, this ),
13881			l = targets.length;
13882
13883		return this.filter( function() {
13884			var i = 0;
13885			for ( ; i < l; i++ ) {
13886				if ( jQuery.contains( this, targets[ i ] ) ) {
13887					return true;
13888				}
13889			}
13890		} );
13891	},
13892
13893	closest: function( selectors, context ) {
13894		var cur,
13895			i = 0,
13896			l = this.length,
13897			matched = [],
13898			targets = typeof selectors !== "string" && jQuery( selectors );
13899
13900		// Positional selectors never match, since there's no _selection_ context
13901		if ( !rneedsContext.test( selectors ) ) {
13902			for ( ; i < l; i++ ) {
13903				for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
13904
13905					// Always skip document fragments
13906					if ( cur.nodeType < 11 && ( targets ?
13907						targets.index( cur ) > -1 :
13908
13909						// Don't pass non-elements to Sizzle
13910						cur.nodeType === 1 &&
13911							jQuery.find.matchesSelector( cur, selectors ) ) ) {
13912
13913						matched.push( cur );
13914						break;
13915					}
13916				}
13917			}
13918		}
13919
13920		return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
13921	},
13922
13923	// Determine the position of an element within the set
13924	index: function( elem ) {
13925
13926		// No argument, return index in parent
13927		if ( !elem ) {
13928			return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
13929		}
13930
13931		// Index in selector
13932		if ( typeof elem === "string" ) {
13933			return indexOf.call( jQuery( elem ), this[ 0 ] );
13934		}
13935
13936		// Locate the position of the desired element
13937		return indexOf.call( this,
13938
13939			// If it receives a jQuery object, the first element is used
13940			elem.jquery ? elem[ 0 ] : elem
13941		);
13942	},
13943
13944	add: function( selector, context ) {
13945		return this.pushStack(
13946			jQuery.uniqueSort(
13947				jQuery.merge( this.get(), jQuery( selector, context ) )
13948			)
13949		);
13950	},
13951
13952	addBack: function( selector ) {
13953		return this.add( selector == null ?
13954			this.prevObject : this.prevObject.filter( selector )
13955		);
13956	}
13957} );
13958
13959function sibling( cur, dir ) {
13960	while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}
13961	return cur;
13962}
13963
13964jQuery.each( {
13965	parent: function( elem ) {
13966		var parent = elem.parentNode;
13967		return parent && parent.nodeType !== 11 ? parent : null;
13968	},
13969	parents: function( elem ) {
13970		return dir( elem, "parentNode" );
13971	},
13972	parentsUntil: function( elem, i, until ) {
13973		return dir( elem, "parentNode", until );
13974	},
13975	next: function( elem ) {
13976		return sibling( elem, "nextSibling" );
13977	},
13978	prev: function( elem ) {
13979		return sibling( elem, "previousSibling" );
13980	},
13981	nextAll: function( elem ) {
13982		return dir( elem, "nextSibling" );
13983	},
13984	prevAll: function( elem ) {
13985		return dir( elem, "previousSibling" );
13986	},
13987	nextUntil: function( elem, i, until ) {
13988		return dir( elem, "nextSibling", until );
13989	},
13990	prevUntil: function( elem, i, until ) {
13991		return dir( elem, "previousSibling", until );
13992	},
13993	siblings: function( elem ) {
13994		return siblings( ( elem.parentNode || {} ).firstChild, elem );
13995	},
13996	children: function( elem ) {
13997		return siblings( elem.firstChild );
13998	},
13999	contents: function( elem ) {
14000        if ( nodeName( elem, "iframe" ) ) {
14001            return elem.contentDocument;
14002        }
14003
14004        // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only
14005        // Treat the template element as a regular one in browsers that
14006        // don't support it.
14007        if ( nodeName( elem, "template" ) ) {
14008            elem = elem.content || elem;
14009        }
14010
14011        return jQuery.merge( [], elem.childNodes );
14012	}
14013}, function( name, fn ) {
14014	jQuery.fn[ name ] = function( until, selector ) {
14015		var matched = jQuery.map( this, fn, until );
14016
14017		if ( name.slice( -5 ) !== "Until" ) {
14018			selector = until;
14019		}
14020
14021		if ( selector && typeof selector === "string" ) {
14022			matched = jQuery.filter( selector, matched );
14023		}
14024
14025		if ( this.length > 1 ) {
14026
14027			// Remove duplicates
14028			if ( !guaranteedUnique[ name ] ) {
14029				jQuery.uniqueSort( matched );
14030			}
14031
14032			// Reverse order for parents* and prev-derivatives
14033			if ( rparentsprev.test( name ) ) {
14034				matched.reverse();
14035			}
14036		}
14037
14038		return this.pushStack( matched );
14039	};
14040} );
14041var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g );
14042
14043
14044
14045// Convert String-formatted options into Object-formatted ones
14046function createOptions( options ) {
14047	var object = {};
14048	jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {
14049		object[ flag ] = true;
14050	} );
14051	return object;
14052}
14053
14054/*
14055 * Create a callback list using the following parameters:
14056 *
14057 *	options: an optional list of space-separated options that will change how
14058 *			the callback list behaves or a more traditional option object
14059 *
14060 * By default a callback list will act like an event callback list and can be
14061 * "fired" multiple times.
14062 *
14063 * Possible options:
14064 *
14065 *	once:			will ensure the callback list can only be fired once (like a Deferred)
14066 *
14067 *	memory:			will keep track of previous values and will call any callback added
14068 *					after the list has been fired right away with the latest "memorized"
14069 *					values (like a Deferred)
14070 *
14071 *	unique:			will ensure a callback can only be added once (no duplicate in the list)
14072 *
14073 *	stopOnFalse:	interrupt callings when a callback returns false
14074 *
14075 */
14076jQuery.Callbacks = function( options ) {
14077
14078	// Convert options from String-formatted to Object-formatted if needed
14079	// (we check in cache first)
14080	options = typeof options === "string" ?
14081		createOptions( options ) :
14082		jQuery.extend( {}, options );
14083
14084	var // Flag to know if list is currently firing
14085		firing,
14086
14087		// Last fire value for non-forgettable lists
14088		memory,
14089
14090		// Flag to know if list was already fired
14091		fired,
14092
14093		// Flag to prevent firing
14094		locked,
14095
14096		// Actual callback list
14097		list = [],
14098
14099		// Queue of execution data for repeatable lists
14100		queue = [],
14101
14102		// Index of currently firing callback (modified by add/remove as needed)
14103		firingIndex = -1,
14104
14105		// Fire callbacks
14106		fire = function() {
14107
14108			// Enforce single-firing
14109			locked = locked || options.once;
14110
14111			// Execute callbacks for all pending executions,
14112			// respecting firingIndex overrides and runtime changes
14113			fired = firing = true;
14114			for ( ; queue.length; firingIndex = -1 ) {
14115				memory = queue.shift();
14116				while ( ++firingIndex < list.length ) {
14117
14118					// Run callback and check for early termination
14119					if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&
14120						options.stopOnFalse ) {
14121
14122						// Jump to end and forget the data so .add doesn't re-fire
14123						firingIndex = list.length;
14124						memory = false;
14125					}
14126				}
14127			}
14128
14129			// Forget the data if we're done with it
14130			if ( !options.memory ) {
14131				memory = false;
14132			}
14133
14134			firing = false;
14135
14136			// Clean up if we're done firing for good
14137			if ( locked ) {
14138
14139				// Keep an empty list if we have data for future add calls
14140				if ( memory ) {
14141					list = [];
14142
14143				// Otherwise, this object is spent
14144				} else {
14145					list = "";
14146				}
14147			}
14148		},
14149
14150		// Actual Callbacks object
14151		self = {
14152
14153			// Add a callback or a collection of callbacks to the list
14154			add: function() {
14155				if ( list ) {
14156
14157					// If we have memory from a past run, we should fire after adding
14158					if ( memory && !firing ) {
14159						firingIndex = list.length - 1;
14160						queue.push( memory );
14161					}
14162
14163					( function add( args ) {
14164						jQuery.each( args, function( _, arg ) {
14165							if ( isFunction( arg ) ) {
14166								if ( !options.unique || !self.has( arg ) ) {
14167									list.push( arg );
14168								}
14169							} else if ( arg && arg.length && toType( arg ) !== "string" ) {
14170
14171								// Inspect recursively
14172								add( arg );
14173							}
14174						} );
14175					} )( arguments );
14176
14177					if ( memory && !firing ) {
14178						fire();
14179					}
14180				}
14181				return this;
14182			},
14183
14184			// Remove a callback from the list
14185			remove: function() {
14186				jQuery.each( arguments, function( _, arg ) {
14187					var index;
14188					while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
14189						list.splice( index, 1 );
14190
14191						// Handle firing indexes
14192						if ( index <= firingIndex ) {
14193							firingIndex--;
14194						}
14195					}
14196				} );
14197				return this;
14198			},
14199
14200			// Check if a given callback is in the list.
14201			// If no argument is given, return whether or not list has callbacks attached.
14202			has: function( fn ) {
14203				return fn ?
14204					jQuery.inArray( fn, list ) > -1 :
14205					list.length > 0;
14206			},
14207
14208			// Remove all callbacks from the list
14209			empty: function() {
14210				if ( list ) {
14211					list = [];
14212				}
14213				return this;
14214			},
14215
14216			// Disable .fire and .add
14217			// Abort any current/pending executions
14218			// Clear all callbacks and values
14219			disable: function() {
14220				locked = queue = [];
14221				list = memory = "";
14222				return this;
14223			},
14224			disabled: function() {
14225				return !list;
14226			},
14227
14228			// Disable .fire
14229			// Also disable .add unless we have memory (since it would have no effect)
14230			// Abort any pending executions
14231			lock: function() {
14232				locked = queue = [];
14233				if ( !memory && !firing ) {
14234					list = memory = "";
14235				}
14236				return this;
14237			},
14238			locked: function() {
14239				return !!locked;
14240			},
14241
14242			// Call all callbacks with the given context and arguments
14243			fireWith: function( context, args ) {
14244				if ( !locked ) {
14245					args = args || [];
14246					args = [ context, args.slice ? args.slice() : args ];
14247					queue.push( args );
14248					if ( !firing ) {
14249						fire();
14250					}
14251				}
14252				return this;
14253			},
14254
14255			// Call all the callbacks with the given arguments
14256			fire: function() {
14257				self.fireWith( this, arguments );
14258				return this;
14259			},
14260
14261			// To know if the callbacks have already been called at least once
14262			fired: function() {
14263				return !!fired;
14264			}
14265		};
14266
14267	return self;
14268};
14269
14270
14271function Identity( v ) {
14272	return v;
14273}
14274function Thrower( ex ) {
14275	throw ex;
14276}
14277
14278function adoptValue( value, resolve, reject, noValue ) {
14279	var method;
14280
14281	try {
14282
14283		// Check for promise aspect first to privilege synchronous behavior
14284		if ( value && isFunction( ( method = value.promise ) ) ) {
14285			method.call( value ).done( resolve ).fail( reject );
14286
14287		// Other thenables
14288		} else if ( value && isFunction( ( method = value.then ) ) ) {
14289			method.call( value, resolve, reject );
14290
14291		// Other non-thenables
14292		} else {
14293
14294			// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:
14295			// * false: [ value ].slice( 0 ) => resolve( value )
14296			// * true: [ value ].slice( 1 ) => resolve()
14297			resolve.apply( undefined, [ value ].slice( noValue ) );
14298		}
14299
14300	// For Promises/A+, convert exceptions into rejections
14301	// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in
14302	// Deferred#then to conditionally suppress rejection.
14303	} catch ( value ) {
14304
14305		// Support: Android 4.0 only
14306		// Strict mode functions invoked without .call/.apply get global-object context
14307		reject.apply( undefined, [ value ] );
14308	}
14309}
14310
14311jQuery.extend( {
14312
14313	Deferred: function( func ) {
14314		var tuples = [
14315
14316				// action, add listener, callbacks,
14317				// ... .then handlers, argument index, [final state]
14318				[ "notify", "progress", jQuery.Callbacks( "memory" ),
14319					jQuery.Callbacks( "memory" ), 2 ],
14320				[ "resolve", "done", jQuery.Callbacks( "once memory" ),
14321					jQuery.Callbacks( "once memory" ), 0, "resolved" ],
14322				[ "reject", "fail", jQuery.Callbacks( "once memory" ),
14323					jQuery.Callbacks( "once memory" ), 1, "rejected" ]
14324			],
14325			state = "pending",
14326			promise = {
14327				state: function() {
14328					return state;
14329				},
14330				always: function() {
14331					deferred.done( arguments ).fail( arguments );
14332					return this;
14333				},
14334				"catch": function( fn ) {
14335					return promise.then( null, fn );
14336				},
14337
14338				// Keep pipe for back-compat
14339				pipe: function( /* fnDone, fnFail, fnProgress */ ) {
14340					var fns = arguments;
14341
14342					return jQuery.Deferred( function( newDefer ) {
14343						jQuery.each( tuples, function( i, tuple ) {
14344
14345							// Map tuples (progress, done, fail) to arguments (done, fail, progress)
14346							var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];
14347
14348							// deferred.progress(function() { bind to newDefer or newDefer.notify })
14349							// deferred.done(function() { bind to newDefer or newDefer.resolve })
14350							// deferred.fail(function() { bind to newDefer or newDefer.reject })
14351							deferred[ tuple[ 1 ] ]( function() {
14352								var returned = fn && fn.apply( this, arguments );
14353								if ( returned && isFunction( returned.promise ) ) {
14354									returned.promise()
14355										.progress( newDefer.notify )
14356										.done( newDefer.resolve )
14357										.fail( newDefer.reject );
14358								} else {
14359									newDefer[ tuple[ 0 ] + "With" ](
14360										this,
14361										fn ? [ returned ] : arguments
14362									);
14363								}
14364							} );
14365						} );
14366						fns = null;
14367					} ).promise();
14368				},
14369				then: function( onFulfilled, onRejected, onProgress ) {
14370					var maxDepth = 0;
14371					function resolve( depth, deferred, handler, special ) {
14372						return function() {
14373							var that = this,
14374								args = arguments,
14375								mightThrow = function() {
14376									var returned, then;
14377
14378									// Support: Promises/A+ section 2.3.3.3.3
14379									// https://promisesaplus.com/#point-59
14380									// Ignore double-resolution attempts
14381									if ( depth < maxDepth ) {
14382										return;
14383									}
14384
14385									returned = handler.apply( that, args );
14386
14387									// Support: Promises/A+ section 2.3.1
14388									// https://promisesaplus.com/#point-48
14389									if ( returned === deferred.promise() ) {
14390										throw new TypeError( "Thenable self-resolution" );
14391									}
14392
14393									// Support: Promises/A+ sections 2.3.3.1, 3.5
14394									// https://promisesaplus.com/#point-54
14395									// https://promisesaplus.com/#point-75
14396									// Retrieve `then` only once
14397									then = returned &&
14398
14399										// Support: Promises/A+ section 2.3.4
14400										// https://promisesaplus.com/#point-64
14401										// Only check objects and functions for thenability
14402										( typeof returned === "object" ||
14403											typeof returned === "function" ) &&
14404										returned.then;
14405
14406									// Handle a returned thenable
14407									if ( isFunction( then ) ) {
14408
14409										// Special processors (notify) just wait for resolution
14410										if ( special ) {
14411											then.call(
14412												returned,
14413												resolve( maxDepth, deferred, Identity, special ),
14414												resolve( maxDepth, deferred, Thrower, special )
14415											);
14416
14417										// Normal processors (resolve) also hook into progress
14418										} else {
14419
14420											// ...and disregard older resolution values
14421											maxDepth++;
14422
14423											then.call(
14424												returned,
14425												resolve( maxDepth, deferred, Identity, special ),
14426												resolve( maxDepth, deferred, Thrower, special ),
14427												resolve( maxDepth, deferred, Identity,
14428													deferred.notifyWith )
14429											);
14430										}
14431
14432									// Handle all other returned values
14433									} else {
14434
14435										// Only substitute handlers pass on context
14436										// and multiple values (non-spec behavior)
14437										if ( handler !== Identity ) {
14438											that = undefined;
14439											args = [ returned ];
14440										}
14441
14442										// Process the value(s)
14443										// Default process is resolve
14444										( special || deferred.resolveWith )( that, args );
14445									}
14446								},
14447
14448								// Only normal processors (resolve) catch and reject exceptions
14449								process = special ?
14450									mightThrow :
14451									function() {
14452										try {
14453											mightThrow();
14454										} catch ( e ) {
14455
14456											if ( jQuery.Deferred.exceptionHook ) {
14457												jQuery.Deferred.exceptionHook( e,
14458													process.stackTrace );
14459											}
14460
14461											// Support: Promises/A+ section 2.3.3.3.4.1
14462											// https://promisesaplus.com/#point-61
14463											// Ignore post-resolution exceptions
14464											if ( depth + 1 >= maxDepth ) {
14465
14466												// Only substitute handlers pass on context
14467												// and multiple values (non-spec behavior)
14468												if ( handler !== Thrower ) {
14469													that = undefined;
14470													args = [ e ];
14471												}
14472
14473												deferred.rejectWith( that, args );
14474											}
14475										}
14476									};
14477
14478							// Support: Promises/A+ section 2.3.3.3.1
14479							// https://promisesaplus.com/#point-57
14480							// Re-resolve promises immediately to dodge false rejection from
14481							// subsequent errors
14482							if ( depth ) {
14483								process();
14484							} else {
14485
14486								// Call an optional hook to record the stack, in case of exception
14487								// since it's otherwise lost when execution goes async
14488								if ( jQuery.Deferred.getStackHook ) {
14489									process.stackTrace = jQuery.Deferred.getStackHook();
14490								}
14491								window.setTimeout( process );
14492							}
14493						};
14494					}
14495
14496					return jQuery.Deferred( function( newDefer ) {
14497
14498						// progress_handlers.add( ... )
14499						tuples[ 0 ][ 3 ].add(
14500							resolve(
14501								0,
14502								newDefer,
14503								isFunction( onProgress ) ?
14504									onProgress :
14505									Identity,
14506								newDefer.notifyWith
14507							)
14508						);
14509
14510						// fulfilled_handlers.add( ... )
14511						tuples[ 1 ][ 3 ].add(
14512							resolve(
14513								0,
14514								newDefer,
14515								isFunction( onFulfilled ) ?
14516									onFulfilled :
14517									Identity
14518							)
14519						);
14520
14521						// rejected_handlers.add( ... )
14522						tuples[ 2 ][ 3 ].add(
14523							resolve(
14524								0,
14525								newDefer,
14526								isFunction( onRejected ) ?
14527									onRejected :
14528									Thrower
14529							)
14530						);
14531					} ).promise();
14532				},
14533
14534				// Get a promise for this deferred
14535				// If obj is provided, the promise aspect is added to the object
14536				promise: function( obj ) {
14537					return obj != null ? jQuery.extend( obj, promise ) : promise;
14538				}
14539			},
14540			deferred = {};
14541
14542		// Add list-specific methods
14543		jQuery.each( tuples, function( i, tuple ) {
14544			var list = tuple[ 2 ],
14545				stateString = tuple[ 5 ];
14546
14547			// promise.progress = list.add
14548			// promise.done = list.add
14549			// promise.fail = list.add
14550			promise[ tuple[ 1 ] ] = list.add;
14551
14552			// Handle state
14553			if ( stateString ) {
14554				list.add(
14555					function() {
14556
14557						// state = "resolved" (i.e., fulfilled)
14558						// state = "rejected"
14559						state = stateString;
14560					},
14561
14562					// rejected_callbacks.disable
14563					// fulfilled_callbacks.disable
14564					tuples[ 3 - i ][ 2 ].disable,
14565
14566					// rejected_handlers.disable
14567					// fulfilled_handlers.disable
14568					tuples[ 3 - i ][ 3 ].disable,
14569
14570					// progress_callbacks.lock
14571					tuples[ 0 ][ 2 ].lock,
14572
14573					// progress_handlers.lock
14574					tuples[ 0 ][ 3 ].lock
14575				);
14576			}
14577
14578			// progress_handlers.fire
14579			// fulfilled_handlers.fire
14580			// rejected_handlers.fire
14581			list.add( tuple[ 3 ].fire );
14582
14583			// deferred.notify = function() { deferred.notifyWith(...) }
14584			// deferred.resolve = function() { deferred.resolveWith(...) }
14585			// deferred.reject = function() { deferred.rejectWith(...) }
14586			deferred[ tuple[ 0 ] ] = function() {
14587				deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments );
14588				return this;
14589			};
14590
14591			// deferred.notifyWith = list.fireWith
14592			// deferred.resolveWith = list.fireWith
14593			// deferred.rejectWith = list.fireWith
14594			deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
14595		} );
14596
14597		// Make the deferred a promise
14598		promise.promise( deferred );
14599
14600		// Call given func if any
14601		if ( func ) {
14602			func.call( deferred, deferred );
14603		}
14604
14605		// All done!
14606		return deferred;
14607	},
14608
14609	// Deferred helper
14610	when: function( singleValue ) {
14611		var
14612
14613			// count of uncompleted subordinates
14614			remaining = arguments.length,
14615
14616			// count of unprocessed arguments
14617			i = remaining,
14618
14619			// subordinate fulfillment data
14620			resolveContexts = Array( i ),
14621			resolveValues = slice.call( arguments ),
14622
14623			// the master Deferred
14624			master = jQuery.Deferred(),
14625
14626			// subordinate callback factory
14627			updateFunc = function( i ) {
14628				return function( value ) {
14629					resolveContexts[ i ] = this;
14630					resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
14631					if ( !( --remaining ) ) {
14632						master.resolveWith( resolveContexts, resolveValues );
14633					}
14634				};
14635			};
14636
14637		// Single- and empty arguments are adopted like Promise.resolve
14638		if ( remaining <= 1 ) {
14639			adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,
14640				!remaining );
14641
14642			// Use .then() to unwrap secondary thenables (cf. gh-3000)
14643			if ( master.state() === "pending" ||
14644				isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
14645
14646				return master.then();
14647			}
14648		}
14649
14650		// Multiple arguments are aggregated like Promise.all array elements
14651		while ( i-- ) {
14652			adoptValue( resolveValues[ i ], updateFunc( i ), master.reject );
14653		}
14654
14655		return master.promise();
14656	}
14657} );
14658
14659
14660// These usually indicate a programmer mistake during development,
14661// warn about them ASAP rather than swallowing them by default.
14662var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
14663
14664jQuery.Deferred.exceptionHook = function( error, stack ) {
14665
14666	// Support: IE 8 - 9 only
14667	// Console exists when dev tools are open, which can happen at any time
14668	if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
14669		window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack );
14670	}
14671};
14672
14673
14674
14675
14676jQuery.readyException = function( error ) {
14677	window.setTimeout( function() {
14678		throw error;
14679	} );
14680};
14681
14682
14683
14684
14685// The deferred used on DOM ready
14686var readyList = jQuery.Deferred();
14687
14688jQuery.fn.ready = function( fn ) {
14689
14690	readyList
14691		.then( fn )
14692
14693		// Wrap jQuery.readyException in a function so that the lookup
14694		// happens at the time of error handling instead of callback
14695		// registration.
14696		.catch( function( error ) {
14697			jQuery.readyException( error );
14698		} );
14699
14700	return this;
14701};
14702
14703jQuery.extend( {
14704
14705	// Is the DOM ready to be used? Set to true once it occurs.
14706	isReady: false,
14707
14708	// A counter to track how many items to wait for before
14709	// the ready event fires. See #6781
14710	readyWait: 1,
14711
14712	// Handle when the DOM is ready
14713	ready: function( wait ) {
14714
14715		// Abort if there are pending holds or we're already ready
14716		if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
14717			return;
14718		}
14719
14720		// Remember that the DOM is ready
14721		jQuery.isReady = true;
14722
14723		// If a normal DOM Ready event fired, decrement, and wait if need be
14724		if ( wait !== true && --jQuery.readyWait > 0 ) {
14725			return;
14726		}
14727
14728		// If there are functions bound, to execute
14729		readyList.resolveWith( document, [ jQuery ] );
14730	}
14731} );
14732
14733jQuery.ready.then = readyList.then;
14734
14735// The ready event handler and self cleanup method
14736function completed() {
14737	document.removeEventListener( "DOMContentLoaded", completed );
14738	window.removeEventListener( "load", completed );
14739	jQuery.ready();
14740}
14741
14742// Catch cases where $(document).ready() is called
14743// after the browser event has already occurred.
14744// Support: IE <=9 - 10 only
14745// Older IE sometimes signals "interactive" too soon
14746if ( document.readyState === "complete" ||
14747	( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
14748
14749	// Handle it asynchronously to allow scripts the opportunity to delay ready
14750	window.setTimeout( jQuery.ready );
14751
14752} else {
14753
14754	// Use the handy event callback
14755	document.addEventListener( "DOMContentLoaded", completed );
14756
14757	// A fallback to window.onload, that will always work
14758	window.addEventListener( "load", completed );
14759}
14760
14761
14762
14763
14764// Multifunctional method to get and set values of a collection
14765// The value/s can optionally be executed if it's a function
14766var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
14767	var i = 0,
14768		len = elems.length,
14769		bulk = key == null;
14770
14771	// Sets many values
14772	if ( toType( key ) === "object" ) {
14773		chainable = true;
14774		for ( i in key ) {
14775			access( elems, fn, i, key[ i ], true, emptyGet, raw );
14776		}
14777
14778	// Sets one value
14779	} else if ( value !== undefined ) {
14780		chainable = true;
14781
14782		if ( !isFunction( value ) ) {
14783			raw = true;
14784		}
14785
14786		if ( bulk ) {
14787
14788			// Bulk operations run against the entire set
14789			if ( raw ) {
14790				fn.call( elems, value );
14791				fn = null;
14792
14793			// ...except when executing function values
14794			} else {
14795				bulk = fn;
14796				fn = function( elem, key, value ) {
14797					return bulk.call( jQuery( elem ), value );
14798				};
14799			}
14800		}
14801
14802		if ( fn ) {
14803			for ( ; i < len; i++ ) {
14804				fn(
14805					elems[ i ], key, raw ?
14806					value :
14807					value.call( elems[ i ], i, fn( elems[ i ], key ) )
14808				);
14809			}
14810		}
14811	}
14812
14813	if ( chainable ) {
14814		return elems;
14815	}
14816
14817	// Gets
14818	if ( bulk ) {
14819		return fn.call( elems );
14820	}
14821
14822	return len ? fn( elems[ 0 ], key ) : emptyGet;
14823};
14824
14825
14826// Matches dashed string for camelizing
14827var rmsPrefix = /^-ms-/,
14828	rdashAlpha = /-([a-z])/g;
14829
14830// Used by camelCase as callback to replace()
14831function fcamelCase( all, letter ) {
14832	return letter.toUpperCase();
14833}
14834
14835// Convert dashed to camelCase; used by the css and data modules
14836// Support: IE <=9 - 11, Edge 12 - 15
14837// Microsoft forgot to hump their vendor prefix (#9572)
14838function camelCase( string ) {
14839	return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
14840}
14841var acceptData = function( owner ) {
14842
14843	// Accepts only:
14844	//  - Node
14845	//    - Node.ELEMENT_NODE
14846	//    - Node.DOCUMENT_NODE
14847	//  - Object
14848	//    - Any
14849	return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
14850};
14851
14852
14853
14854
14855function Data() {
14856	this.expando = jQuery.expando + Data.uid++;
14857}
14858
14859Data.uid = 1;
14860
14861Data.prototype = {
14862
14863	cache: function( owner ) {
14864
14865		// Check if the owner object already has a cache
14866		var value = owner[ this.expando ];
14867
14868		// If not, create one
14869		if ( !value ) {
14870			value = {};
14871
14872			// We can accept data for non-element nodes in modern browsers,
14873			// but we should not, see #8335.
14874			// Always return an empty object.
14875			if ( acceptData( owner ) ) {
14876
14877				// If it is a node unlikely to be stringify-ed or looped over
14878				// use plain assignment
14879				if ( owner.nodeType ) {
14880					owner[ this.expando ] = value;
14881
14882				// Otherwise secure it in a non-enumerable property
14883				// configurable must be true to allow the property to be
14884				// deleted when data is removed
14885				} else {
14886					Object.defineProperty( owner, this.expando, {
14887						value: value,
14888						configurable: true
14889					} );
14890				}
14891			}
14892		}
14893
14894		return value;
14895	},
14896	set: function( owner, data, value ) {
14897		var prop,
14898			cache = this.cache( owner );
14899
14900		// Handle: [ owner, key, value ] args
14901		// Always use camelCase key (gh-2257)
14902		if ( typeof data === "string" ) {
14903			cache[ camelCase( data ) ] = value;
14904
14905		// Handle: [ owner, { properties } ] args
14906		} else {
14907
14908			// Copy the properties one-by-one to the cache object
14909			for ( prop in data ) {
14910				cache[ camelCase( prop ) ] = data[ prop ];
14911			}
14912		}
14913		return cache;
14914	},
14915	get: function( owner, key ) {
14916		return key === undefined ?
14917			this.cache( owner ) :
14918
14919			// Always use camelCase key (gh-2257)
14920			owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];
14921	},
14922	access: function( owner, key, value ) {
14923
14924		// In cases where either:
14925		//
14926		//   1. No key was specified
14927		//   2. A string key was specified, but no value provided
14928		//
14929		// Take the "read" path and allow the get method to determine
14930		// which value to return, respectively either:
14931		//
14932		//   1. The entire cache object
14933		//   2. The data stored at the key
14934		//
14935		if ( key === undefined ||
14936				( ( key && typeof key === "string" ) && value === undefined ) ) {
14937
14938			return this.get( owner, key );
14939		}
14940
14941		// When the key is not a string, or both a key and value
14942		// are specified, set or extend (existing objects) with either:
14943		//
14944		//   1. An object of properties
14945		//   2. A key and value
14946		//
14947		this.set( owner, key, value );
14948
14949		// Since the "set" path can have two possible entry points
14950		// return the expected data based on which path was taken[*]
14951		return value !== undefined ? value : key;
14952	},
14953	remove: function( owner, key ) {
14954		var i,
14955			cache = owner[ this.expando ];
14956
14957		if ( cache === undefined ) {
14958			return;
14959		}
14960
14961		if ( key !== undefined ) {
14962
14963			// Support array or space separated string of keys
14964			if ( Array.isArray( key ) ) {
14965
14966				// If key is an array of keys...
14967				// We always set camelCase keys, so remove that.
14968				key = key.map( camelCase );
14969			} else {
14970				key = camelCase( key );
14971
14972				// If a key with the spaces exists, use it.
14973				// Otherwise, create an array by matching non-whitespace
14974				key = key in cache ?
14975					[ key ] :
14976					( key.match( rnothtmlwhite ) || [] );
14977			}
14978
14979			i = key.length;
14980
14981			while ( i-- ) {
14982				delete cache[ key[ i ] ];
14983			}
14984		}
14985
14986		// Remove the expando if there's no more data
14987		if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
14988
14989			// Support: Chrome <=35 - 45
14990			// Webkit & Blink performance suffers when deleting properties
14991			// from DOM nodes, so set to undefined instead
14992			// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)
14993			if ( owner.nodeType ) {
14994				owner[ this.expando ] = undefined;
14995			} else {
14996				delete owner[ this.expando ];
14997			}
14998		}
14999	},
15000	hasData: function( owner ) {
15001		var cache = owner[ this.expando ];
15002		return cache !== undefined && !jQuery.isEmptyObject( cache );
15003	}
15004};
15005var dataPriv = new Data();
15006
15007var dataUser = new Data();
15008
15009
15010
15011//	Implementation Summary
15012//
15013//	1. Enforce API surface and semantic compatibility with 1.9.x branch
15014//	2. Improve the module's maintainability by reducing the storage
15015//		paths to a single mechanism.
15016//	3. Use the same single mechanism to support "private" and "user" data.
15017//	4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
15018//	5. Avoid exposing implementation details on user objects (eg. expando properties)
15019//	6. Provide a clear path for implementation upgrade to WeakMap in 2014
15020
15021var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
15022	rmultiDash = /[A-Z]/g;
15023
15024function getData( data ) {
15025	if ( data === "true" ) {
15026		return true;
15027	}
15028
15029	if ( data === "false" ) {
15030		return false;
15031	}
15032
15033	if ( data === "null" ) {
15034		return null;
15035	}
15036
15037	// Only convert to a number if it doesn't change the string
15038	if ( data === +data + "" ) {
15039		return +data;
15040	}
15041
15042	if ( rbrace.test( data ) ) {
15043		return JSON.parse( data );
15044	}
15045
15046	return data;
15047}
15048
15049function dataAttr( elem, key, data ) {
15050	var name;
15051
15052	// If nothing was found internally, try to fetch any
15053	// data from the HTML5 data-* attribute
15054	if ( data === undefined && elem.nodeType === 1 ) {
15055		name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();
15056		data = elem.getAttribute( name );
15057
15058		if ( typeof data === "string" ) {
15059			try {
15060				data = getData( data );
15061			} catch ( e ) {}
15062
15063			// Make sure we set the data so it isn't changed later
15064			dataUser.set( elem, key, data );
15065		} else {
15066			data = undefined;
15067		}
15068	}
15069	return data;
15070}
15071
15072jQuery.extend( {
15073	hasData: function( elem ) {
15074		return dataUser.hasData( elem ) || dataPriv.hasData( elem );
15075	},
15076
15077	data: function( elem, name, data ) {
15078		return dataUser.access( elem, name, data );
15079	},
15080
15081	removeData: function( elem, name ) {
15082		dataUser.remove( elem, name );
15083	},
15084
15085	// TODO: Now that all calls to _data and _removeData have been replaced
15086	// with direct calls to dataPriv methods, these can be deprecated.
15087	_data: function( elem, name, data ) {
15088		return dataPriv.access( elem, name, data );
15089	},
15090
15091	_removeData: function( elem, name ) {
15092		dataPriv.remove( elem, name );
15093	}
15094} );
15095
15096jQuery.fn.extend( {
15097	data: function( key, value ) {
15098		var i, name, data,
15099			elem = this[ 0 ],
15100			attrs = elem && elem.attributes;
15101
15102		// Gets all values
15103		if ( key === undefined ) {
15104			if ( this.length ) {
15105				data = dataUser.get( elem );
15106
15107				if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {
15108					i = attrs.length;
15109					while ( i-- ) {
15110
15111						// Support: IE 11 only
15112						// The attrs elements can be null (#14894)
15113						if ( attrs[ i ] ) {
15114							name = attrs[ i ].name;
15115							if ( name.indexOf( "data-" ) === 0 ) {
15116								name = camelCase( name.slice( 5 ) );
15117								dataAttr( elem, name, data[ name ] );
15118							}
15119						}
15120					}
15121					dataPriv.set( elem, "hasDataAttrs", true );
15122				}
15123			}
15124
15125			return data;
15126		}
15127
15128		// Sets multiple values
15129		if ( typeof key === "object" ) {
15130			return this.each( function() {
15131				dataUser.set( this, key );
15132			} );
15133		}
15134
15135		return access( this, function( value ) {
15136			var data;
15137
15138			// The calling jQuery object (element matches) is not empty
15139			// (and therefore has an element appears at this[ 0 ]) and the
15140			// `value` parameter was not undefined. An empty jQuery object
15141			// will result in `undefined` for elem = this[ 0 ] which will
15142			// throw an exception if an attempt to read a data cache is made.
15143			if ( elem && value === undefined ) {
15144
15145				// Attempt to get data from the cache
15146				// The key will always be camelCased in Data
15147				data = dataUser.get( elem, key );
15148				if ( data !== undefined ) {
15149					return data;
15150				}
15151
15152				// Attempt to "discover" the data in
15153				// HTML5 custom data-* attrs
15154				data = dataAttr( elem, key );
15155				if ( data !== undefined ) {
15156					return data;
15157				}
15158
15159				// We tried really hard, but the data doesn't exist.
15160				return;
15161			}
15162
15163			// Set the data...
15164			this.each( function() {
15165
15166				// We always store the camelCased key
15167				dataUser.set( this, key, value );
15168			} );
15169		}, null, value, arguments.length > 1, null, true );
15170	},
15171
15172	removeData: function( key ) {
15173		return this.each( function() {
15174			dataUser.remove( this, key );
15175		} );
15176	}
15177} );
15178
15179
15180jQuery.extend( {
15181	queue: function( elem, type, data ) {
15182		var queue;
15183
15184		if ( elem ) {
15185			type = ( type || "fx" ) + "queue";
15186			queue = dataPriv.get( elem, type );
15187
15188			// Speed up dequeue by getting out quickly if this is just a lookup
15189			if ( data ) {
15190				if ( !queue || Array.isArray( data ) ) {
15191					queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );
15192				} else {
15193					queue.push( data );
15194				}
15195			}
15196			return queue || [];
15197		}
15198	},
15199
15200	dequeue: function( elem, type ) {
15201		type = type || "fx";
15202
15203		var queue = jQuery.queue( elem, type ),
15204			startLength = queue.length,
15205			fn = queue.shift(),
15206			hooks = jQuery._queueHooks( elem, type ),
15207			next = function() {
15208				jQuery.dequeue( elem, type );
15209			};
15210
15211		// If the fx queue is dequeued, always remove the progress sentinel
15212		if ( fn === "inprogress" ) {
15213			fn = queue.shift();
15214			startLength--;
15215		}
15216
15217		if ( fn ) {
15218
15219			// Add a progress sentinel to prevent the fx queue from being
15220			// automatically dequeued
15221			if ( type === "fx" ) {
15222				queue.unshift( "inprogress" );
15223			}
15224
15225			// Clear up the last queue stop function
15226			delete hooks.stop;
15227			fn.call( elem, next, hooks );
15228		}
15229
15230		if ( !startLength && hooks ) {
15231			hooks.empty.fire();
15232		}
15233	},
15234
15235	// Not public - generate a queueHooks object, or return the current one
15236	_queueHooks: function( elem, type ) {
15237		var key = type + "queueHooks";
15238		return dataPriv.get( elem, key ) || dataPriv.access( elem, key, {
15239			empty: jQuery.Callbacks( "once memory" ).add( function() {
15240				dataPriv.remove( elem, [ type + "queue", key ] );
15241			} )
15242		} );
15243	}
15244} );
15245
15246jQuery.fn.extend( {
15247	queue: function( type, data ) {
15248		var setter = 2;
15249
15250		if ( typeof type !== "string" ) {
15251			data = type;
15252			type = "fx";
15253			setter--;
15254		}
15255
15256		if ( arguments.length < setter ) {
15257			return jQuery.queue( this[ 0 ], type );
15258		}
15259
15260		return data === undefined ?
15261			this :
15262			this.each( function() {
15263				var queue = jQuery.queue( this, type, data );
15264
15265				// Ensure a hooks for this queue
15266				jQuery._queueHooks( this, type );
15267
15268				if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
15269					jQuery.dequeue( this, type );
15270				}
15271			} );
15272	},
15273	dequeue: function( type ) {
15274		return this.each( function() {
15275			jQuery.dequeue( this, type );
15276		} );
15277	},
15278	clearQueue: function( type ) {
15279		return this.queue( type || "fx", [] );
15280	},
15281
15282	// Get a promise resolved when queues of a certain type
15283	// are emptied (fx is the type by default)
15284	promise: function( type, obj ) {
15285		var tmp,
15286			count = 1,
15287			defer = jQuery.Deferred(),
15288			elements = this,
15289			i = this.length,
15290			resolve = function() {
15291				if ( !( --count ) ) {
15292					defer.resolveWith( elements, [ elements ] );
15293				}
15294			};
15295
15296		if ( typeof type !== "string" ) {
15297			obj = type;
15298			type = undefined;
15299		}
15300		type = type || "fx";
15301
15302		while ( i-- ) {
15303			tmp = dataPriv.get( elements[ i ], type + "queueHooks" );
15304			if ( tmp && tmp.empty ) {
15305				count++;
15306				tmp.empty.add( resolve );
15307			}
15308		}
15309		resolve();
15310		return defer.promise( obj );
15311	}
15312} );
15313var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;
15314
15315var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );
15316
15317
15318var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
15319
15320var isHiddenWithinTree = function( elem, el ) {
15321
15322		// isHiddenWithinTree might be called from jQuery#filter function;
15323		// in that case, element will be second argument
15324		elem = el || elem;
15325
15326		// Inline style trumps all
15327		return elem.style.display === "none" ||
15328			elem.style.display === "" &&
15329
15330			// Otherwise, check computed style
15331			// Support: Firefox <=43 - 45
15332			// Disconnected elements can have computed display: none, so first confirm that elem is
15333			// in the document.
15334			jQuery.contains( elem.ownerDocument, elem ) &&
15335
15336			jQuery.css( elem, "display" ) === "none";
15337	};
15338
15339var swap = function( elem, options, callback, args ) {
15340	var ret, name,
15341		old = {};
15342
15343	// Remember the old values, and insert the new ones
15344	for ( name in options ) {
15345		old[ name ] = elem.style[ name ];
15346		elem.style[ name ] = options[ name ];
15347	}
15348
15349	ret = callback.apply( elem, args || [] );
15350
15351	// Revert the old values
15352	for ( name in options ) {
15353		elem.style[ name ] = old[ name ];
15354	}
15355
15356	return ret;
15357};
15358
15359
15360
15361
15362function adjustCSS( elem, prop, valueParts, tween ) {
15363	var adjusted, scale,
15364		maxIterations = 20,
15365		currentValue = tween ?
15366			function() {
15367				return tween.cur();
15368			} :
15369			function() {
15370				return jQuery.css( elem, prop, "" );
15371			},
15372		initial = currentValue(),
15373		unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
15374
15375		// Starting value computation is required for potential unit mismatches
15376		initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
15377			rcssNum.exec( jQuery.css( elem, prop ) );
15378
15379	if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {
15380
15381		// Support: Firefox <=54
15382		// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)
15383		initial = initial / 2;
15384
15385		// Trust units reported by jQuery.css
15386		unit = unit || initialInUnit[ 3 ];
15387
15388		// Iteratively approximate from a nonzero starting point
15389		initialInUnit = +initial || 1;
15390
15391		while ( maxIterations-- ) {
15392
15393			// Evaluate and update our best guess (doubling guesses that zero out).
15394			// Finish if the scale equals or crosses 1 (making the old*new product non-positive).
15395			jQuery.style( elem, prop, initialInUnit + unit );
15396			if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {
15397				maxIterations = 0;
15398			}
15399			initialInUnit = initialInUnit / scale;
15400
15401		}
15402
15403		initialInUnit = initialInUnit * 2;
15404		jQuery.style( elem, prop, initialInUnit + unit );
15405
15406		// Make sure we update the tween properties later on
15407		valueParts = valueParts || [];
15408	}
15409
15410	if ( valueParts ) {
15411		initialInUnit = +initialInUnit || +initial || 0;
15412
15413		// Apply relative offset (+=/-=) if specified
15414		adjusted = valueParts[ 1 ] ?
15415			initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :
15416			+valueParts[ 2 ];
15417		if ( tween ) {
15418			tween.unit = unit;
15419			tween.start = initialInUnit;
15420			tween.end = adjusted;
15421		}
15422	}
15423	return adjusted;
15424}
15425
15426
15427var defaultDisplayMap = {};
15428
15429function getDefaultDisplay( elem ) {
15430	var temp,
15431		doc = elem.ownerDocument,
15432		nodeName = elem.nodeName,
15433		display = defaultDisplayMap[ nodeName ];
15434
15435	if ( display ) {
15436		return display;
15437	}
15438
15439	temp = doc.body.appendChild( doc.createElement( nodeName ) );
15440	display = jQuery.css( temp, "display" );
15441
15442	temp.parentNode.removeChild( temp );
15443
15444	if ( display === "none" ) {
15445		display = "block";
15446	}
15447	defaultDisplayMap[ nodeName ] = display;
15448
15449	return display;
15450}
15451
15452function showHide( elements, show ) {
15453	var display, elem,
15454		values = [],
15455		index = 0,
15456		length = elements.length;
15457
15458	// Determine new display value for elements that need to change
15459	for ( ; index < length; index++ ) {
15460		elem = elements[ index ];
15461		if ( !elem.style ) {
15462			continue;
15463		}
15464
15465		display = elem.style.display;
15466		if ( show ) {
15467
15468			// Since we force visibility upon cascade-hidden elements, an immediate (and slow)
15469			// check is required in this first loop unless we have a nonempty display value (either
15470			// inline or about-to-be-restored)
15471			if ( display === "none" ) {
15472				values[ index ] = dataPriv.get( elem, "display" ) || null;
15473				if ( !values[ index ] ) {
15474					elem.style.display = "";
15475				}
15476			}
15477			if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) {
15478				values[ index ] = getDefaultDisplay( elem );
15479			}
15480		} else {
15481			if ( display !== "none" ) {
15482				values[ index ] = "none";
15483
15484				// Remember what we're overwriting
15485				dataPriv.set( elem, "display", display );
15486			}
15487		}
15488	}
15489
15490	// Set the display of the elements in a second loop to avoid constant reflow
15491	for ( index = 0; index < length; index++ ) {
15492		if ( values[ index ] != null ) {
15493			elements[ index ].style.display = values[ index ];
15494		}
15495	}
15496
15497	return elements;
15498}
15499
15500jQuery.fn.extend( {
15501	show: function() {
15502		return showHide( this, true );
15503	},
15504	hide: function() {
15505		return showHide( this );
15506	},
15507	toggle: function( state ) {
15508		if ( typeof state === "boolean" ) {
15509			return state ? this.show() : this.hide();
15510		}
15511
15512		return this.each( function() {
15513			if ( isHiddenWithinTree( this ) ) {
15514				jQuery( this ).show();
15515			} else {
15516				jQuery( this ).hide();
15517			}
15518		} );
15519	}
15520} );
15521var rcheckableType = ( /^(?:checkbox|radio)$/i );
15522
15523var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i );
15524
15525var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i );
15526
15527
15528
15529// We have to close these tags to support XHTML (#13200)
15530var wrapMap = {
15531
15532	// Support: IE <=9 only
15533	option: [ 1, "<select multiple='multiple'>", "</select>" ],
15534
15535	// XHTML parsers do not magically insert elements in the
15536	// same way that tag soup parsers do. So we cannot shorten
15537	// this by omitting <tbody> or other required elements.
15538	thead: [ 1, "<table>", "</table>" ],
15539	col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
15540	tr: [ 2, "<table><tbody>", "</tbody></table>" ],
15541	td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
15542
15543	_default: [ 0, "", "" ]
15544};
15545
15546// Support: IE <=9 only
15547wrapMap.optgroup = wrapMap.option;
15548
15549wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
15550wrapMap.th = wrapMap.td;
15551
15552
15553function getAll( context, tag ) {
15554
15555	// Support: IE <=9 - 11 only
15556	// Use typeof to avoid zero-argument method invocation on host objects (#15151)
15557	var ret;
15558
15559	if ( typeof context.getElementsByTagName !== "undefined" ) {
15560		ret = context.getElementsByTagName( tag || "*" );
15561
15562	} else if ( typeof context.querySelectorAll !== "undefined" ) {
15563		ret = context.querySelectorAll( tag || "*" );
15564
15565	} else {
15566		ret = [];
15567	}
15568
15569	if ( tag === undefined || tag && nodeName( context, tag ) ) {
15570		return jQuery.merge( [ context ], ret );
15571	}
15572
15573	return ret;
15574}
15575
15576
15577// Mark scripts as having already been evaluated
15578function setGlobalEval( elems, refElements ) {
15579	var i = 0,
15580		l = elems.length;
15581
15582	for ( ; i < l; i++ ) {
15583		dataPriv.set(
15584			elems[ i ],
15585			"globalEval",
15586			!refElements || dataPriv.get( refElements[ i ], "globalEval" )
15587		);
15588	}
15589}
15590
15591
15592var rhtml = /<|&#?\w+;/;
15593
15594function buildFragment( elems, context, scripts, selection, ignored ) {
15595	var elem, tmp, tag, wrap, contains, j,
15596		fragment = context.createDocumentFragment(),
15597		nodes = [],
15598		i = 0,
15599		l = elems.length;
15600
15601	for ( ; i < l; i++ ) {
15602		elem = elems[ i ];
15603
15604		if ( elem || elem === 0 ) {
15605
15606			// Add nodes directly
15607			if ( toType( elem ) === "object" ) {
15608
15609				// Support: Android <=4.0 only, PhantomJS 1 only
15610				// push.apply(_, arraylike) throws on ancient WebKit
15611				jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
15612
15613			// Convert non-html into a text node
15614			} else if ( !rhtml.test( elem ) ) {
15615				nodes.push( context.createTextNode( elem ) );
15616
15617			// Convert html into DOM nodes
15618			} else {
15619				tmp = tmp || fragment.appendChild( context.createElement( "div" ) );
15620
15621				// Deserialize a standard representation
15622				tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
15623				wrap = wrapMap[ tag ] || wrapMap._default;
15624				tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
15625
15626				// Descend through wrappers to the right content
15627				j = wrap[ 0 ];
15628				while ( j-- ) {
15629					tmp = tmp.lastChild;
15630				}
15631
15632				// Support: Android <=4.0 only, PhantomJS 1 only
15633				// push.apply(_, arraylike) throws on ancient WebKit
15634				jQuery.merge( nodes, tmp.childNodes );
15635
15636				// Remember the top-level container
15637				tmp = fragment.firstChild;
15638
15639				// Ensure the created nodes are orphaned (#12392)
15640				tmp.textContent = "";
15641			}
15642		}
15643	}
15644
15645	// Remove wrapper from fragment
15646	fragment.textContent = "";
15647
15648	i = 0;
15649	while ( ( elem = nodes[ i++ ] ) ) {
15650
15651		// Skip elements already in the context collection (trac-4087)
15652		if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
15653			if ( ignored ) {
15654				ignored.push( elem );
15655			}
15656			continue;
15657		}
15658
15659		contains = jQuery.contains( elem.ownerDocument, elem );
15660
15661		// Append to fragment
15662		tmp = getAll( fragment.appendChild( elem ), "script" );
15663
15664		// Preserve script evaluation history
15665		if ( contains ) {
15666			setGlobalEval( tmp );
15667		}
15668
15669		// Capture executables
15670		if ( scripts ) {
15671			j = 0;
15672			while ( ( elem = tmp[ j++ ] ) ) {
15673				if ( rscriptType.test( elem.type || "" ) ) {
15674					scripts.push( elem );
15675				}
15676			}
15677		}
15678	}
15679
15680	return fragment;
15681}
15682
15683
15684( function() {
15685	var fragment = document.createDocumentFragment(),
15686		div = fragment.appendChild( document.createElement( "div" ) ),
15687		input = document.createElement( "input" );
15688
15689	// Support: Android 4.0 - 4.3 only
15690	// Check state lost if the name is set (#11217)
15691	// Support: Windows Web Apps (WWA)
15692	// `name` and `type` must use .setAttribute for WWA (#14901)
15693	input.setAttribute( "type", "radio" );
15694	input.setAttribute( "checked", "checked" );
15695	input.setAttribute( "name", "t" );
15696
15697	div.appendChild( input );
15698
15699	// Support: Android <=4.1 only
15700	// Older WebKit doesn't clone checked state correctly in fragments
15701	support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
15702
15703	// Support: IE <=11 only
15704	// Make sure textarea (and checkbox) defaultValue is properly cloned
15705	div.innerHTML = "<textarea>x</textarea>";
15706	support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
15707} )();
15708var documentElement = document.documentElement;
15709
15710
15711
15712var
15713	rkeyEvent = /^key/,
15714	rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
15715	rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
15716
15717function returnTrue() {
15718	return true;
15719}
15720
15721function returnFalse() {
15722	return false;
15723}
15724
15725// Support: IE <=9 only
15726// See #13393 for more info
15727function safeActiveElement() {
15728	try {
15729		return document.activeElement;
15730	} catch ( err ) { }
15731}
15732
15733function on( elem, types, selector, data, fn, one ) {
15734	var origFn, type;
15735
15736	// Types can be a map of types/handlers
15737	if ( typeof types === "object" ) {
15738
15739		// ( types-Object, selector, data )
15740		if ( typeof selector !== "string" ) {
15741
15742			// ( types-Object, data )
15743			data = data || selector;
15744			selector = undefined;
15745		}
15746		for ( type in types ) {
15747			on( elem, type, selector, data, types[ type ], one );
15748		}
15749		return elem;
15750	}
15751
15752	if ( data == null && fn == null ) {
15753
15754		// ( types, fn )
15755		fn = selector;
15756		data = selector = undefined;
15757	} else if ( fn == null ) {
15758		if ( typeof selector === "string" ) {
15759
15760			// ( types, selector, fn )
15761			fn = data;
15762			data = undefined;
15763		} else {
15764
15765			// ( types, data, fn )
15766			fn = data;
15767			data = selector;
15768			selector = undefined;
15769		}
15770	}
15771	if ( fn === false ) {
15772		fn = returnFalse;
15773	} else if ( !fn ) {
15774		return elem;
15775	}
15776
15777	if ( one === 1 ) {
15778		origFn = fn;
15779		fn = function( event ) {
15780
15781			// Can use an empty set, since event contains the info
15782			jQuery().off( event );
15783			return origFn.apply( this, arguments );
15784		};
15785
15786		// Use same guid so caller can remove using origFn
15787		fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
15788	}
15789	return elem.each( function() {
15790		jQuery.event.add( this, types, fn, data, selector );
15791	} );
15792}
15793
15794/*
15795 * Helper functions for managing events -- not part of the public interface.
15796 * Props to Dean Edwards' addEvent library for many of the ideas.
15797 */
15798jQuery.event = {
15799
15800	global: {},
15801
15802	add: function( elem, types, handler, data, selector ) {
15803
15804		var handleObjIn, eventHandle, tmp,
15805			events, t, handleObj,
15806			special, handlers, type, namespaces, origType,
15807			elemData = dataPriv.get( elem );
15808
15809		// Don't attach events to noData or text/comment nodes (but allow plain objects)
15810		if ( !elemData ) {
15811			return;
15812		}
15813
15814		// Caller can pass in an object of custom data in lieu of the handler
15815		if ( handler.handler ) {
15816			handleObjIn = handler;
15817			handler = handleObjIn.handler;
15818			selector = handleObjIn.selector;
15819		}
15820
15821		// Ensure that invalid selectors throw exceptions at attach time
15822		// Evaluate against documentElement in case elem is a non-element node (e.g., document)
15823		if ( selector ) {
15824			jQuery.find.matchesSelector( documentElement, selector );
15825		}
15826
15827		// Make sure that the handler has a unique ID, used to find/remove it later
15828		if ( !handler.guid ) {
15829			handler.guid = jQuery.guid++;
15830		}
15831
15832		// Init the element's event structure and main handler, if this is the first
15833		if ( !( events = elemData.events ) ) {
15834			events = elemData.events = {};
15835		}
15836		if ( !( eventHandle = elemData.handle ) ) {
15837			eventHandle = elemData.handle = function( e ) {
15838
15839				// Discard the second event of a jQuery.event.trigger() and
15840				// when an event is called after a page has unloaded
15841				return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
15842					jQuery.event.dispatch.apply( elem, arguments ) : undefined;
15843			};
15844		}
15845
15846		// Handle multiple events separated by a space
15847		types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
15848		t = types.length;
15849		while ( t-- ) {
15850			tmp = rtypenamespace.exec( types[ t ] ) || [];
15851			type = origType = tmp[ 1 ];
15852			namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
15853
15854			// There *must* be a type, no attaching namespace-only handlers
15855			if ( !type ) {
15856				continue;
15857			}
15858
15859			// If event changes its type, use the special event handlers for the changed type
15860			special = jQuery.event.special[ type ] || {};
15861
15862			// If selector defined, determine special event api type, otherwise given type
15863			type = ( selector ? special.delegateType : special.bindType ) || type;
15864
15865			// Update special based on newly reset type
15866			special = jQuery.event.special[ type ] || {};
15867
15868			// handleObj is passed to all event handlers
15869			handleObj = jQuery.extend( {
15870				type: type,
15871				origType: origType,
15872				data: data,
15873				handler: handler,
15874				guid: handler.guid,
15875				selector: selector,
15876				needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
15877				namespace: namespaces.join( "." )
15878			}, handleObjIn );
15879
15880			// Init the event handler queue if we're the first
15881			if ( !( handlers = events[ type ] ) ) {
15882				handlers = events[ type ] = [];
15883				handlers.delegateCount = 0;
15884
15885				// Only use addEventListener if the special events handler returns false
15886				if ( !special.setup ||
15887					special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
15888
15889					if ( elem.addEventListener ) {
15890						elem.addEventListener( type, eventHandle );
15891					}
15892				}
15893			}
15894
15895			if ( special.add ) {
15896				special.add.call( elem, handleObj );
15897
15898				if ( !handleObj.handler.guid ) {
15899					handleObj.handler.guid = handler.guid;
15900				}
15901			}
15902
15903			// Add to the element's handler list, delegates in front
15904			if ( selector ) {
15905				handlers.splice( handlers.delegateCount++, 0, handleObj );
15906			} else {
15907				handlers.push( handleObj );
15908			}
15909
15910			// Keep track of which events have ever been used, for event optimization
15911			jQuery.event.global[ type ] = true;
15912		}
15913
15914	},
15915
15916	// Detach an event or set of events from an element
15917	remove: function( elem, types, handler, selector, mappedTypes ) {
15918
15919		var j, origCount, tmp,
15920			events, t, handleObj,
15921			special, handlers, type, namespaces, origType,
15922			elemData = dataPriv.hasData( elem ) && dataPriv.get( elem );
15923
15924		if ( !elemData || !( events = elemData.events ) ) {
15925			return;
15926		}
15927
15928		// Once for each type.namespace in types; type may be omitted
15929		types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
15930		t = types.length;
15931		while ( t-- ) {
15932			tmp = rtypenamespace.exec( types[ t ] ) || [];
15933			type = origType = tmp[ 1 ];
15934			namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
15935
15936			// Unbind all events (on this namespace, if provided) for the element
15937			if ( !type ) {
15938				for ( type in events ) {
15939					jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
15940				}
15941				continue;
15942			}
15943
15944			special = jQuery.event.special[ type ] || {};
15945			type = ( selector ? special.delegateType : special.bindType ) || type;
15946			handlers = events[ type ] || [];
15947			tmp = tmp[ 2 ] &&
15948				new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" );
15949
15950			// Remove matching events
15951			origCount = j = handlers.length;
15952			while ( j-- ) {
15953				handleObj = handlers[ j ];
15954
15955				if ( ( mappedTypes || origType === handleObj.origType ) &&
15956					( !handler || handler.guid === handleObj.guid ) &&
15957					( !tmp || tmp.test( handleObj.namespace ) ) &&
15958					( !selector || selector === handleObj.selector ||
15959						selector === "**" && handleObj.selector ) ) {
15960					handlers.splice( j, 1 );
15961
15962					if ( handleObj.selector ) {
15963						handlers.delegateCount--;
15964					}
15965					if ( special.remove ) {
15966						special.remove.call( elem, handleObj );
15967					}
15968				}
15969			}
15970
15971			// Remove generic event handler if we removed something and no more handlers exist
15972			// (avoids potential for endless recursion during removal of special event handlers)
15973			if ( origCount && !handlers.length ) {
15974				if ( !special.teardown ||
15975					special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
15976
15977					jQuery.removeEvent( elem, type, elemData.handle );
15978				}
15979
15980				delete events[ type ];
15981			}
15982		}
15983
15984		// Remove data and the expando if it's no longer used
15985		if ( jQuery.isEmptyObject( events ) ) {
15986			dataPriv.remove( elem, "handle events" );
15987		}
15988	},
15989
15990	dispatch: function( nativeEvent ) {
15991
15992		// Make a writable jQuery.Event from the native event object
15993		var event = jQuery.event.fix( nativeEvent );
15994
15995		var i, j, ret, matched, handleObj, handlerQueue,
15996			args = new Array( arguments.length ),
15997			handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [],
15998			special = jQuery.event.special[ event.type ] || {};
15999
16000		// Use the fix-ed jQuery.Event rather than the (read-only) native event
16001		args[ 0 ] = event;
16002
16003		for ( i = 1; i < arguments.length; i++ ) {
16004			args[ i ] = arguments[ i ];
16005		}
16006
16007		event.delegateTarget = this;
16008
16009		// Call the preDispatch hook for the mapped type, and let it bail if desired
16010		if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
16011			return;
16012		}
16013
16014		// Determine handlers
16015		handlerQueue = jQuery.event.handlers.call( this, event, handlers );
16016
16017		// Run delegates first; they may want to stop propagation beneath us
16018		i = 0;
16019		while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {
16020			event.currentTarget = matched.elem;
16021
16022			j = 0;
16023			while ( ( handleObj = matched.handlers[ j++ ] ) &&
16024				!event.isImmediatePropagationStopped() ) {
16025
16026				// Triggered event must either 1) have no namespace, or 2) have namespace(s)
16027				// a subset or equal to those in the bound event (both can have no namespace).
16028				if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {
16029
16030					event.handleObj = handleObj;
16031					event.data = handleObj.data;
16032
16033					ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||
16034						handleObj.handler ).apply( matched.elem, args );
16035
16036					if ( ret !== undefined ) {
16037						if ( ( event.result = ret ) === false ) {
16038							event.preventDefault();
16039							event.stopPropagation();
16040						}
16041					}
16042				}
16043			}
16044		}
16045
16046		// Call the postDispatch hook for the mapped type
16047		if ( special.postDispatch ) {
16048			special.postDispatch.call( this, event );
16049		}
16050
16051		return event.result;
16052	},
16053
16054	handlers: function( event, handlers ) {
16055		var i, handleObj, sel, matchedHandlers, matchedSelectors,
16056			handlerQueue = [],
16057			delegateCount = handlers.delegateCount,
16058			cur = event.target;
16059
16060		// Find delegate handlers
16061		if ( delegateCount &&
16062
16063			// Support: IE <=9
16064			// Black-hole SVG <use> instance trees (trac-13180)
16065			cur.nodeType &&
16066
16067			// Support: Firefox <=42
16068			// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)
16069			// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click
16070			// Support: IE 11 only
16071			// ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)
16072			!( event.type === "click" && event.button >= 1 ) ) {
16073
16074			for ( ; cur !== this; cur = cur.parentNode || this ) {
16075
16076				// Don't check non-elements (#13208)
16077				// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
16078				if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
16079					matchedHandlers = [];
16080					matchedSelectors = {};
16081					for ( i = 0; i < delegateCount; i++ ) {
16082						handleObj = handlers[ i ];
16083
16084						// Don't conflict with Object.prototype properties (#13203)
16085						sel = handleObj.selector + " ";
16086
16087						if ( matchedSelectors[ sel ] === undefined ) {
16088							matchedSelectors[ sel ] = handleObj.needsContext ?
16089								jQuery( sel, this ).index( cur ) > -1 :
16090								jQuery.find( sel, this, null, [ cur ] ).length;
16091						}
16092						if ( matchedSelectors[ sel ] ) {
16093							matchedHandlers.push( handleObj );
16094						}
16095					}
16096					if ( matchedHandlers.length ) {
16097						handlerQueue.push( { elem: cur, handlers: matchedHandlers } );
16098					}
16099				}
16100			}
16101		}
16102
16103		// Add the remaining (directly-bound) handlers
16104		cur = this;
16105		if ( delegateCount < handlers.length ) {
16106			handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );
16107		}
16108
16109		return handlerQueue;
16110	},
16111
16112	addProp: function( name, hook ) {
16113		Object.defineProperty( jQuery.Event.prototype, name, {
16114			enumerable: true,
16115			configurable: true,
16116
16117			get: isFunction( hook ) ?
16118				function() {
16119					if ( this.originalEvent ) {
16120							return hook( this.originalEvent );
16121					}
16122				} :
16123				function() {
16124					if ( this.originalEvent ) {
16125							return this.originalEvent[ name ];
16126					}
16127				},
16128
16129			set: function( value ) {
16130				Object.defineProperty( this, name, {
16131					enumerable: true,
16132					configurable: true,
16133					writable: true,
16134					value: value
16135				} );
16136			}
16137		} );
16138	},
16139
16140	fix: function( originalEvent ) {
16141		return originalEvent[ jQuery.expando ] ?
16142			originalEvent :
16143			new jQuery.Event( originalEvent );
16144	},
16145
16146	special: {
16147		load: {
16148
16149			// Prevent triggered image.load events from bubbling to window.load
16150			noBubble: true
16151		},
16152		focus: {
16153
16154			// Fire native event if possible so blur/focus sequence is correct
16155			trigger: function() {
16156				if ( this !== safeActiveElement() && this.focus ) {
16157					this.focus();
16158					return false;
16159				}
16160			},
16161			delegateType: "focusin"
16162		},
16163		blur: {
16164			trigger: function() {
16165				if ( this === safeActiveElement() && this.blur ) {
16166					this.blur();
16167					return false;
16168				}
16169			},
16170			delegateType: "focusout"
16171		},
16172		click: {
16173
16174			// For checkbox, fire native event so checked state will be right
16175			trigger: function() {
16176				if ( this.type === "checkbox" && this.click && nodeName( this, "input" ) ) {
16177					this.click();
16178					return false;
16179				}
16180			},
16181
16182			// For cross-browser consistency, don't fire native .click() on links
16183			_default: function( event ) {
16184				return nodeName( event.target, "a" );
16185			}
16186		},
16187
16188		beforeunload: {
16189			postDispatch: function( event ) {
16190
16191				// Support: Firefox 20+
16192				// Firefox doesn't alert if the returnValue field is not set.
16193				if ( event.result !== undefined && event.originalEvent ) {
16194					event.originalEvent.returnValue = event.result;
16195				}
16196			}
16197		}
16198	}
16199};
16200
16201jQuery.removeEvent = function( elem, type, handle ) {
16202
16203	// This "if" is needed for plain objects
16204	if ( elem.removeEventListener ) {
16205		elem.removeEventListener( type, handle );
16206	}
16207};
16208
16209jQuery.Event = function( src, props ) {
16210
16211	// Allow instantiation without the 'new' keyword
16212	if ( !( this instanceof jQuery.Event ) ) {
16213		return new jQuery.Event( src, props );
16214	}
16215
16216	// Event object
16217	if ( src && src.type ) {
16218		this.originalEvent = src;
16219		this.type = src.type;
16220
16221		// Events bubbling up the document may have been marked as prevented
16222		// by a handler lower down the tree; reflect the correct value.
16223		this.isDefaultPrevented = src.defaultPrevented ||
16224				src.defaultPrevented === undefined &&
16225
16226				// Support: Android <=2.3 only
16227				src.returnValue === false ?
16228			returnTrue :
16229			returnFalse;
16230
16231		// Create target properties
16232		// Support: Safari <=6 - 7 only
16233		// Target should not be a text node (#504, #13143)
16234		this.target = ( src.target && src.target.nodeType === 3 ) ?
16235			src.target.parentNode :
16236			src.target;
16237
16238		this.currentTarget = src.currentTarget;
16239		this.relatedTarget = src.relatedTarget;
16240
16241	// Event type
16242	} else {
16243		this.type = src;
16244	}
16245
16246	// Put explicitly provided properties onto the event object
16247	if ( props ) {
16248		jQuery.extend( this, props );
16249	}
16250
16251	// Create a timestamp if incoming event doesn't have one
16252	this.timeStamp = src && src.timeStamp || Date.now();
16253
16254	// Mark it as fixed
16255	this[ jQuery.expando ] = true;
16256};
16257
16258// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
16259// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
16260jQuery.Event.prototype = {
16261	constructor: jQuery.Event,
16262	isDefaultPrevented: returnFalse,
16263	isPropagationStopped: returnFalse,
16264	isImmediatePropagationStopped: returnFalse,
16265	isSimulated: false,
16266
16267	preventDefault: function() {
16268		var e = this.originalEvent;
16269
16270		this.isDefaultPrevented = returnTrue;
16271
16272		if ( e && !this.isSimulated ) {
16273			e.preventDefault();
16274		}
16275	},
16276	stopPropagation: function() {
16277		var e = this.originalEvent;
16278
16279		this.isPropagationStopped = returnTrue;
16280
16281		if ( e && !this.isSimulated ) {
16282			e.stopPropagation();
16283		}
16284	},
16285	stopImmediatePropagation: function() {
16286		var e = this.originalEvent;
16287
16288		this.isImmediatePropagationStopped = returnTrue;
16289
16290		if ( e && !this.isSimulated ) {
16291			e.stopImmediatePropagation();
16292		}
16293
16294		this.stopPropagation();
16295	}
16296};
16297
16298// Includes all common event props including KeyEvent and MouseEvent specific props
16299jQuery.each( {
16300	altKey: true,
16301	bubbles: true,
16302	cancelable: true,
16303	changedTouches: true,
16304	ctrlKey: true,
16305	detail: true,
16306	eventPhase: true,
16307	metaKey: true,
16308	pageX: true,
16309	pageY: true,
16310	shiftKey: true,
16311	view: true,
16312	"char": true,
16313	charCode: true,
16314	key: true,
16315	keyCode: true,
16316	button: true,
16317	buttons: true,
16318	clientX: true,
16319	clientY: true,
16320	offsetX: true,
16321	offsetY: true,
16322	pointerId: true,
16323	pointerType: true,
16324	screenX: true,
16325	screenY: true,
16326	targetTouches: true,
16327	toElement: true,
16328	touches: true,
16329
16330	which: function( event ) {
16331		var button = event.button;
16332
16333		// Add which for key events
16334		if ( event.which == null && rkeyEvent.test( event.type ) ) {
16335			return event.charCode != null ? event.charCode : event.keyCode;
16336		}
16337
16338		// Add which for click: 1 === left; 2 === middle; 3 === right
16339		if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {
16340			if ( button & 1 ) {
16341				return 1;
16342			}
16343
16344			if ( button & 2 ) {
16345				return 3;
16346			}
16347
16348			if ( button & 4 ) {
16349				return 2;
16350			}
16351
16352			return 0;
16353		}
16354
16355		return event.which;
16356	}
16357}, jQuery.event.addProp );
16358
16359// Create mouseenter/leave events using mouseover/out and event-time checks
16360// so that event delegation works in jQuery.
16361// Do the same for pointerenter/pointerleave and pointerover/pointerout
16362//
16363// Support: Safari 7 only
16364// Safari sends mouseenter too often; see:
16365// https://bugs.chromium.org/p/chromium/issues/detail?id=470258
16366// for the description of the bug (it existed in older Chrome versions as well).
16367jQuery.each( {
16368	mouseenter: "mouseover",
16369	mouseleave: "mouseout",
16370	pointerenter: "pointerover",
16371	pointerleave: "pointerout"
16372}, function( orig, fix ) {
16373	jQuery.event.special[ orig ] = {
16374		delegateType: fix,
16375		bindType: fix,
16376
16377		handle: function( event ) {
16378			var ret,
16379				target = this,
16380				related = event.relatedTarget,
16381				handleObj = event.handleObj;
16382
16383			// For mouseenter/leave call the handler if related is outside the target.
16384			// NB: No relatedTarget if the mouse left/entered the browser window
16385			if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {
16386				event.type = handleObj.origType;
16387				ret = handleObj.handler.apply( this, arguments );
16388				event.type = fix;
16389			}
16390			return ret;
16391		}
16392	};
16393} );
16394
16395jQuery.fn.extend( {
16396
16397	on: function( types, selector, data, fn ) {
16398		return on( this, types, selector, data, fn );
16399	},
16400	one: function( types, selector, data, fn ) {
16401		return on( this, types, selector, data, fn, 1 );
16402	},
16403	off: function( types, selector, fn ) {
16404		var handleObj, type;
16405		if ( types && types.preventDefault && types.handleObj ) {
16406
16407			// ( event )  dispatched jQuery.Event
16408			handleObj = types.handleObj;
16409			jQuery( types.delegateTarget ).off(
16410				handleObj.namespace ?
16411					handleObj.origType + "." + handleObj.namespace :
16412					handleObj.origType,
16413				handleObj.selector,
16414				handleObj.handler
16415			);
16416			return this;
16417		}
16418		if ( typeof types === "object" ) {
16419
16420			// ( types-object [, selector] )
16421			for ( type in types ) {
16422				this.off( type, selector, types[ type ] );
16423			}
16424			return this;
16425		}
16426		if ( selector === false || typeof selector === "function" ) {
16427
16428			// ( types [, fn] )
16429			fn = selector;
16430			selector = undefined;
16431		}
16432		if ( fn === false ) {
16433			fn = returnFalse;
16434		}
16435		return this.each( function() {
16436			jQuery.event.remove( this, types, fn, selector );
16437		} );
16438	}
16439} );
16440
16441
16442var
16443
16444	/* eslint-disable max-len */
16445
16446	// See https://github.com/eslint/eslint/issues/3229
16447	rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,
16448
16449	/* eslint-enable */
16450
16451	// Support: IE <=10 - 11, Edge 12 - 13 only
16452	// In IE/Edge using regex groups here causes severe slowdowns.
16453	// See https://connect.microsoft.com/IE/feedback/details/1736512/
16454	rnoInnerhtml = /<script|<style|<link/i,
16455
16456	// checked="checked" or checked
16457	rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
16458	rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
16459
16460// Prefer a tbody over its parent table for containing new rows
16461function manipulationTarget( elem, content ) {
16462	if ( nodeName( elem, "table" ) &&
16463		nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) {
16464
16465		return jQuery( elem ).children( "tbody" )[ 0 ] || elem;
16466	}
16467
16468	return elem;
16469}
16470
16471// Replace/restore the type attribute of script elements for safe DOM manipulation
16472function disableScript( elem ) {
16473	elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type;
16474	return elem;
16475}
16476function restoreScript( elem ) {
16477	if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) {
16478		elem.type = elem.type.slice( 5 );
16479	} else {
16480		elem.removeAttribute( "type" );
16481	}
16482
16483	return elem;
16484}
16485
16486function cloneCopyEvent( src, dest ) {
16487	var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
16488
16489	if ( dest.nodeType !== 1 ) {
16490		return;
16491	}
16492
16493	// 1. Copy private data: events, handlers, etc.
16494	if ( dataPriv.hasData( src ) ) {
16495		pdataOld = dataPriv.access( src );
16496		pdataCur = dataPriv.set( dest, pdataOld );
16497		events = pdataOld.events;
16498
16499		if ( events ) {
16500			delete pdataCur.handle;
16501			pdataCur.events = {};
16502
16503			for ( type in events ) {
16504				for ( i = 0, l = events[ type ].length; i < l; i++ ) {
16505					jQuery.event.add( dest, type, events[ type ][ i ] );
16506				}
16507			}
16508		}
16509	}
16510
16511	// 2. Copy user data
16512	if ( dataUser.hasData( src ) ) {
16513		udataOld = dataUser.access( src );
16514		udataCur = jQuery.extend( {}, udataOld );
16515
16516		dataUser.set( dest, udataCur );
16517	}
16518}
16519
16520// Fix IE bugs, see support tests
16521function fixInput( src, dest ) {
16522	var nodeName = dest.nodeName.toLowerCase();
16523
16524	// Fails to persist the checked state of a cloned checkbox or radio button.
16525	if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
16526		dest.checked = src.checked;
16527
16528	// Fails to return the selected option to the default selected state when cloning options
16529	} else if ( nodeName === "input" || nodeName === "textarea" ) {
16530		dest.defaultValue = src.defaultValue;
16531	}
16532}
16533
16534function domManip( collection, args, callback, ignored ) {
16535
16536	// Flatten any nested arrays
16537	args = concat.apply( [], args );
16538
16539	var fragment, first, scripts, hasScripts, node, doc,
16540		i = 0,
16541		l = collection.length,
16542		iNoClone = l - 1,
16543		value = args[ 0 ],
16544		valueIsFunction = isFunction( value );
16545
16546	// We can't cloneNode fragments that contain checked, in WebKit
16547	if ( valueIsFunction ||
16548			( l > 1 && typeof value === "string" &&
16549				!support.checkClone && rchecked.test( value ) ) ) {
16550		return collection.each( function( index ) {
16551			var self = collection.eq( index );
16552			if ( valueIsFunction ) {
16553				args[ 0 ] = value.call( this, index, self.html() );
16554			}
16555			domManip( self, args, callback, ignored );
16556		} );
16557	}
16558
16559	if ( l ) {
16560		fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );
16561		first = fragment.firstChild;
16562
16563		if ( fragment.childNodes.length === 1 ) {
16564			fragment = first;
16565		}
16566
16567		// Require either new content or an interest in ignored elements to invoke the callback
16568		if ( first || ignored ) {
16569			scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
16570			hasScripts = scripts.length;
16571
16572			// Use the original fragment for the last item
16573			// instead of the first because it can end up
16574			// being emptied incorrectly in certain situations (#8070).
16575			for ( ; i < l; i++ ) {
16576				node = fragment;
16577
16578				if ( i !== iNoClone ) {
16579					node = jQuery.clone( node, true, true );
16580
16581					// Keep references to cloned scripts for later restoration
16582					if ( hasScripts ) {
16583
16584						// Support: Android <=4.0 only, PhantomJS 1 only
16585						// push.apply(_, arraylike) throws on ancient WebKit
16586						jQuery.merge( scripts, getAll( node, "script" ) );
16587					}
16588				}
16589
16590				callback.call( collection[ i ], node, i );
16591			}
16592
16593			if ( hasScripts ) {
16594				doc = scripts[ scripts.length - 1 ].ownerDocument;
16595
16596				// Reenable scripts
16597				jQuery.map( scripts, restoreScript );
16598
16599				// Evaluate executable scripts on first document insertion
16600				for ( i = 0; i < hasScripts; i++ ) {
16601					node = scripts[ i ];
16602					if ( rscriptType.test( node.type || "" ) &&
16603						!dataPriv.access( node, "globalEval" ) &&
16604						jQuery.contains( doc, node ) ) {
16605
16606						if ( node.src && ( node.type || "" ).toLowerCase()  !== "module" ) {
16607
16608							// Optional AJAX dependency, but won't run scripts if not present
16609							if ( jQuery._evalUrl ) {
16610								jQuery._evalUrl( node.src );
16611							}
16612						} else {
16613							DOMEval( node.textContent.replace( rcleanScript, "" ), doc, node );
16614						}
16615					}
16616				}
16617			}
16618		}
16619	}
16620
16621	return collection;
16622}
16623
16624function remove( elem, selector, keepData ) {
16625	var node,
16626		nodes = selector ? jQuery.filter( selector, elem ) : elem,
16627		i = 0;
16628
16629	for ( ; ( node = nodes[ i ] ) != null; i++ ) {
16630		if ( !keepData && node.nodeType === 1 ) {
16631			jQuery.cleanData( getAll( node ) );
16632		}
16633
16634		if ( node.parentNode ) {
16635			if ( keepData && jQuery.contains( node.ownerDocument, node ) ) {
16636				setGlobalEval( getAll( node, "script" ) );
16637			}
16638			node.parentNode.removeChild( node );
16639		}
16640	}
16641
16642	return elem;
16643}
16644
16645jQuery.extend( {
16646	htmlPrefilter: function( html ) {
16647		return html.replace( rxhtmlTag, "<$1></$2>" );
16648	},
16649
16650	clone: function( elem, dataAndEvents, deepDataAndEvents ) {
16651		var i, l, srcElements, destElements,
16652			clone = elem.cloneNode( true ),
16653			inPage = jQuery.contains( elem.ownerDocument, elem );
16654
16655		// Fix IE cloning issues
16656		if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
16657				!jQuery.isXMLDoc( elem ) ) {
16658
16659			// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2
16660			destElements = getAll( clone );
16661			srcElements = getAll( elem );
16662
16663			for ( i = 0, l = srcElements.length; i < l; i++ ) {
16664				fixInput( srcElements[ i ], destElements[ i ] );
16665			}
16666		}
16667
16668		// Copy the events from the original to the clone
16669		if ( dataAndEvents ) {
16670			if ( deepDataAndEvents ) {
16671				srcElements = srcElements || getAll( elem );
16672				destElements = destElements || getAll( clone );
16673
16674				for ( i = 0, l = srcElements.length; i < l; i++ ) {
16675					cloneCopyEvent( srcElements[ i ], destElements[ i ] );
16676				}
16677			} else {
16678				cloneCopyEvent( elem, clone );
16679			}
16680		}
16681
16682		// Preserve script evaluation history
16683		destElements = getAll( clone, "script" );
16684		if ( destElements.length > 0 ) {
16685			setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
16686		}
16687
16688		// Return the cloned set
16689		return clone;
16690	},
16691
16692	cleanData: function( elems ) {
16693		var data, elem, type,
16694			special = jQuery.event.special,
16695			i = 0;
16696
16697		for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {
16698			if ( acceptData( elem ) ) {
16699				if ( ( data = elem[ dataPriv.expando ] ) ) {
16700					if ( data.events ) {
16701						for ( type in data.events ) {
16702							if ( special[ type ] ) {
16703								jQuery.event.remove( elem, type );
16704
16705							// This is a shortcut to avoid jQuery.event.remove's overhead
16706							} else {
16707								jQuery.removeEvent( elem, type, data.handle );
16708							}
16709						}
16710					}
16711
16712					// Support: Chrome <=35 - 45+
16713					// Assign undefined instead of using delete, see Data#remove
16714					elem[ dataPriv.expando ] = undefined;
16715				}
16716				if ( elem[ dataUser.expando ] ) {
16717
16718					// Support: Chrome <=35 - 45+
16719					// Assign undefined instead of using delete, see Data#remove
16720					elem[ dataUser.expando ] = undefined;
16721				}
16722			}
16723		}
16724	}
16725} );
16726
16727jQuery.fn.extend( {
16728	detach: function( selector ) {
16729		return remove( this, selector, true );
16730	},
16731
16732	remove: function( selector ) {
16733		return remove( this, selector );
16734	},
16735
16736	text: function( value ) {
16737		return access( this, function( value ) {
16738			return value === undefined ?
16739				jQuery.text( this ) :
16740				this.empty().each( function() {
16741					if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
16742						this.textContent = value;
16743					}
16744				} );
16745		}, null, value, arguments.length );
16746	},
16747
16748	append: function() {
16749		return domManip( this, arguments, function( elem ) {
16750			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
16751				var target = manipulationTarget( this, elem );
16752				target.appendChild( elem );
16753			}
16754		} );
16755	},
16756
16757	prepend: function() {
16758		return domManip( this, arguments, function( elem ) {
16759			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
16760				var target = manipulationTarget( this, elem );
16761				target.insertBefore( elem, target.firstChild );
16762			}
16763		} );
16764	},
16765
16766	before: function() {
16767		return domManip( this, arguments, function( elem ) {
16768			if ( this.parentNode ) {
16769				this.parentNode.insertBefore( elem, this );
16770			}
16771		} );
16772	},
16773
16774	after: function() {
16775		return domManip( this, arguments, function( elem ) {
16776			if ( this.parentNode ) {
16777				this.parentNode.insertBefore( elem, this.nextSibling );
16778			}
16779		} );
16780	},
16781
16782	empty: function() {
16783		var elem,
16784			i = 0;
16785
16786		for ( ; ( elem = this[ i ] ) != null; i++ ) {
16787			if ( elem.nodeType === 1 ) {
16788
16789				// Prevent memory leaks
16790				jQuery.cleanData( getAll( elem, false ) );
16791
16792				// Remove any remaining nodes
16793				elem.textContent = "";
16794			}
16795		}
16796
16797		return this;
16798	},
16799
16800	clone: function( dataAndEvents, deepDataAndEvents ) {
16801		dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
16802		deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
16803
16804		return this.map( function() {
16805			return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
16806		} );
16807	},
16808
16809	html: function( value ) {
16810		return access( this, function( value ) {
16811			var elem = this[ 0 ] || {},
16812				i = 0,
16813				l = this.length;
16814
16815			if ( value === undefined && elem.nodeType === 1 ) {
16816				return elem.innerHTML;
16817			}
16818
16819			// See if we can take a shortcut and just use innerHTML
16820			if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
16821				!wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
16822
16823				value = jQuery.htmlPrefilter( value );
16824
16825				try {
16826					for ( ; i < l; i++ ) {
16827						elem = this[ i ] || {};
16828
16829						// Remove element nodes and prevent memory leaks
16830						if ( elem.nodeType === 1 ) {
16831							jQuery.cleanData( getAll( elem, false ) );
16832							elem.innerHTML = value;
16833						}
16834					}
16835
16836					elem = 0;
16837
16838				// If using innerHTML throws an exception, use the fallback method
16839				} catch ( e ) {}
16840			}
16841
16842			if ( elem ) {
16843				this.empty().append( value );
16844			}
16845		}, null, value, arguments.length );
16846	},
16847
16848	replaceWith: function() {
16849		var ignored = [];
16850
16851		// Make the changes, replacing each non-ignored context element with the new content
16852		return domManip( this, arguments, function( elem ) {
16853			var parent = this.parentNode;
16854
16855			if ( jQuery.inArray( this, ignored ) < 0 ) {
16856				jQuery.cleanData( getAll( this ) );
16857				if ( parent ) {
16858					parent.replaceChild( elem, this );
16859				}
16860			}
16861
16862		// Force callback invocation
16863		}, ignored );
16864	}
16865} );
16866
16867jQuery.each( {
16868	appendTo: "append",
16869	prependTo: "prepend",
16870	insertBefore: "before",
16871	insertAfter: "after",
16872	replaceAll: "replaceWith"
16873}, function( name, original ) {
16874	jQuery.fn[ name ] = function( selector ) {
16875		var elems,
16876			ret = [],
16877			insert = jQuery( selector ),
16878			last = insert.length - 1,
16879			i = 0;
16880
16881		for ( ; i <= last; i++ ) {
16882			elems = i === last ? this : this.clone( true );
16883			jQuery( insert[ i ] )[ original ]( elems );
16884
16885			// Support: Android <=4.0 only, PhantomJS 1 only
16886			// .get() because push.apply(_, arraylike) throws on ancient WebKit
16887			push.apply( ret, elems.get() );
16888		}
16889
16890		return this.pushStack( ret );
16891	};
16892} );
16893var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
16894
16895var getStyles = function( elem ) {
16896
16897		// Support: IE <=11 only, Firefox <=30 (#15098, #14150)
16898		// IE throws on elements created in popups
16899		// FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
16900		var view = elem.ownerDocument.defaultView;
16901
16902		if ( !view || !view.opener ) {
16903			view = window;
16904		}
16905
16906		return view.getComputedStyle( elem );
16907	};
16908
16909var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
16910
16911
16912
16913( function() {
16914
16915	// Executing both pixelPosition & boxSizingReliable tests require only one layout
16916	// so they're executed at the same time to save the second computation.
16917	function computeStyleTests() {
16918
16919		// This is a singleton, we need to execute it only once
16920		if ( !div ) {
16921			return;
16922		}
16923
16924		container.style.cssText = "position:absolute;left:-11111px;width:60px;" +
16925			"margin-top:1px;padding:0;border:0";
16926		div.style.cssText =
16927			"position:relative;display:block;box-sizing:border-box;overflow:scroll;" +
16928			"margin:auto;border:1px;padding:1px;" +
16929			"width:60%;top:1%";
16930		documentElement.appendChild( container ).appendChild( div );
16931
16932		var divStyle = window.getComputedStyle( div );
16933		pixelPositionVal = divStyle.top !== "1%";
16934
16935		// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44
16936		reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;
16937
16938		// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3
16939		// Some styles come back with percentage values, even though they shouldn't
16940		div.style.right = "60%";
16941		pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;
16942
16943		// Support: IE 9 - 11 only
16944		// Detect misreporting of content dimensions for box-sizing:border-box elements
16945		boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;
16946
16947		// Support: IE 9 only
16948		// Detect overflow:scroll screwiness (gh-3699)
16949		div.style.position = "absolute";
16950		scrollboxSizeVal = div.offsetWidth === 36 || "absolute";
16951
16952		documentElement.removeChild( container );
16953
16954		// Nullify the div so it wouldn't be stored in the memory and
16955		// it will also be a sign that checks already performed
16956		div = null;
16957	}
16958
16959	function roundPixelMeasures( measure ) {
16960		return Math.round( parseFloat( measure ) );
16961	}
16962
16963	var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,
16964		reliableMarginLeftVal,
16965		container = document.createElement( "div" ),
16966		div = document.createElement( "div" );
16967
16968	// Finish early in limited (non-browser) environments
16969	if ( !div.style ) {
16970		return;
16971	}
16972
16973	// Support: IE <=9 - 11 only
16974	// Style of cloned element affects source element cloned (#8908)
16975	div.style.backgroundClip = "content-box";
16976	div.cloneNode( true ).style.backgroundClip = "";
16977	support.clearCloneStyle = div.style.backgroundClip === "content-box";
16978
16979	jQuery.extend( support, {
16980		boxSizingReliable: function() {
16981			computeStyleTests();
16982			return boxSizingReliableVal;
16983		},
16984		pixelBoxStyles: function() {
16985			computeStyleTests();
16986			return pixelBoxStylesVal;
16987		},
16988		pixelPosition: function() {
16989			computeStyleTests();
16990			return pixelPositionVal;
16991		},
16992		reliableMarginLeft: function() {
16993			computeStyleTests();
16994			return reliableMarginLeftVal;
16995		},
16996		scrollboxSize: function() {
16997			computeStyleTests();
16998			return scrollboxSizeVal;
16999		}
17000	} );
17001} )();
17002
17003
17004function curCSS( elem, name, computed ) {
17005	var width, minWidth, maxWidth, ret,
17006
17007		// Support: Firefox 51+
17008		// Retrieving style before computed somehow
17009		// fixes an issue with getting wrong values
17010		// on detached elements
17011		style = elem.style;
17012
17013	computed = computed || getStyles( elem );
17014
17015	// getPropertyValue is needed for:
17016	//   .css('filter') (IE 9 only, #12537)
17017	//   .css('--customProperty) (#3144)
17018	if ( computed ) {
17019		ret = computed.getPropertyValue( name ) || computed[ name ];
17020
17021		if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
17022			ret = jQuery.style( elem, name );
17023		}
17024
17025		// A tribute to the "awesome hack by Dean Edwards"
17026		// Android Browser returns percentage for some values,
17027		// but width seems to be reliably pixels.
17028		// This is against the CSSOM draft spec:
17029		// https://drafts.csswg.org/cssom/#resolved-values
17030		if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {
17031
17032			// Remember the original values
17033			width = style.width;
17034			minWidth = style.minWidth;
17035			maxWidth = style.maxWidth;
17036
17037			// Put in the new values to get a computed value out
17038			style.minWidth = style.maxWidth = style.width = ret;
17039			ret = computed.width;
17040
17041			// Revert the changed values
17042			style.width = width;
17043			style.minWidth = minWidth;
17044			style.maxWidth = maxWidth;
17045		}
17046	}
17047
17048	return ret !== undefined ?
17049
17050		// Support: IE <=9 - 11 only
17051		// IE returns zIndex value as an integer.
17052		ret + "" :
17053		ret;
17054}
17055
17056
17057function addGetHookIf( conditionFn, hookFn ) {
17058
17059	// Define the hook, we'll check on the first run if it's really needed.
17060	return {
17061		get: function() {
17062			if ( conditionFn() ) {
17063
17064				// Hook not needed (or it's not possible to use it due
17065				// to missing dependency), remove it.
17066				delete this.get;
17067				return;
17068			}
17069
17070			// Hook needed; redefine it so that the support test is not executed again.
17071			return ( this.get = hookFn ).apply( this, arguments );
17072		}
17073	};
17074}
17075
17076
17077var
17078
17079	// Swappable if display is none or starts with table
17080	// except "table", "table-cell", or "table-caption"
17081	// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
17082	rdisplayswap = /^(none|table(?!-c[ea]).+)/,
17083	rcustomProp = /^--/,
17084	cssShow = { position: "absolute", visibility: "hidden", display: "block" },
17085	cssNormalTransform = {
17086		letterSpacing: "0",
17087		fontWeight: "400"
17088	},
17089
17090	cssPrefixes = [ "Webkit", "Moz", "ms" ],
17091	emptyStyle = document.createElement( "div" ).style;
17092
17093// Return a css property mapped to a potentially vendor prefixed property
17094function vendorPropName( name ) {
17095
17096	// Shortcut for names that are not vendor prefixed
17097	if ( name in emptyStyle ) {
17098		return name;
17099	}
17100
17101	// Check for vendor prefixed names
17102	var capName = name[ 0 ].toUpperCase() + name.slice( 1 ),
17103		i = cssPrefixes.length;
17104
17105	while ( i-- ) {
17106		name = cssPrefixes[ i ] + capName;
17107		if ( name in emptyStyle ) {
17108			return name;
17109		}
17110	}
17111}
17112
17113// Return a property mapped along what jQuery.cssProps suggests or to
17114// a vendor prefixed property.
17115function finalPropName( name ) {
17116	var ret = jQuery.cssProps[ name ];
17117	if ( !ret ) {
17118		ret = jQuery.cssProps[ name ] = vendorPropName( name ) || name;
17119	}
17120	return ret;
17121}
17122
17123function setPositiveNumber( elem, value, subtract ) {
17124
17125	// Any relative (+/-) values have already been
17126	// normalized at this point
17127	var matches = rcssNum.exec( value );
17128	return matches ?
17129
17130		// Guard against undefined "subtract", e.g., when used as in cssHooks
17131		Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) :
17132		value;
17133}
17134
17135function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {
17136	var i = dimension === "width" ? 1 : 0,
17137		extra = 0,
17138		delta = 0;
17139
17140	// Adjustment may not be necessary
17141	if ( box === ( isBorderBox ? "border" : "content" ) ) {
17142		return 0;
17143	}
17144
17145	for ( ; i < 4; i += 2 ) {
17146
17147		// Both box models exclude margin
17148		if ( box === "margin" ) {
17149			delta += jQuery.css( elem, box + cssExpand[ i ], true, styles );
17150		}
17151
17152		// If we get here with a content-box, we're seeking "padding" or "border" or "margin"
17153		if ( !isBorderBox ) {
17154
17155			// Add padding
17156			delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
17157
17158			// For "border" or "margin", add border
17159			if ( box !== "padding" ) {
17160				delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
17161
17162			// But still keep track of it otherwise
17163			} else {
17164				extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
17165			}
17166
17167		// If we get here with a border-box (content + padding + border), we're seeking "content" or
17168		// "padding" or "margin"
17169		} else {
17170
17171			// For "content", subtract padding
17172			if ( box === "content" ) {
17173				delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
17174			}
17175
17176			// For "content" or "padding", subtract border
17177			if ( box !== "margin" ) {
17178				delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
17179			}
17180		}
17181	}
17182
17183	// Account for positive content-box scroll gutter when requested by providing computedVal
17184	if ( !isBorderBox && computedVal >= 0 ) {
17185
17186		// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border
17187		// Assuming integer scroll gutter, subtract the rest and round down
17188		delta += Math.max( 0, Math.ceil(
17189			elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -
17190			computedVal -
17191			delta -
17192			extra -
17193			0.5
17194		) );
17195	}
17196
17197	return delta;
17198}
17199
17200function getWidthOrHeight( elem, dimension, extra ) {
17201
17202	// Start with computed style
17203	var styles = getStyles( elem ),
17204		val = curCSS( elem, dimension, styles ),
17205		isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
17206		valueIsBorderBox = isBorderBox;
17207
17208	// Support: Firefox <=54
17209	// Return a confounding non-pixel value or feign ignorance, as appropriate.
17210	if ( rnumnonpx.test( val ) ) {
17211		if ( !extra ) {
17212			return val;
17213		}
17214		val = "auto";
17215	}
17216
17217	// Check for style in case a browser which returns unreliable values
17218	// for getComputedStyle silently falls back to the reliable elem.style
17219	valueIsBorderBox = valueIsBorderBox &&
17220		( support.boxSizingReliable() || val === elem.style[ dimension ] );
17221
17222	// Fall back to offsetWidth/offsetHeight when value is "auto"
17223	// This happens for inline elements with no explicit setting (gh-3571)
17224	// Support: Android <=4.1 - 4.3 only
17225	// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)
17226	if ( val === "auto" ||
17227		!parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) {
17228
17229		val = elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ];
17230
17231		// offsetWidth/offsetHeight provide border-box values
17232		valueIsBorderBox = true;
17233	}
17234
17235	// Normalize "" and auto
17236	val = parseFloat( val ) || 0;
17237
17238	// Adjust for the element's box model
17239	return ( val +
17240		boxModelAdjustment(
17241			elem,
17242			dimension,
17243			extra || ( isBorderBox ? "border" : "content" ),
17244			valueIsBorderBox,
17245			styles,
17246
17247			// Provide the current computed size to request scroll gutter calculation (gh-3589)
17248			val
17249		)
17250	) + "px";
17251}
17252
17253jQuery.extend( {
17254
17255	// Add in style property hooks for overriding the default
17256	// behavior of getting and setting a style property
17257	cssHooks: {
17258		opacity: {
17259			get: function( elem, computed ) {
17260				if ( computed ) {
17261
17262					// We should always get a number back from opacity
17263					var ret = curCSS( elem, "opacity" );
17264					return ret === "" ? "1" : ret;
17265				}
17266			}
17267		}
17268	},
17269
17270	// Don't automatically add "px" to these possibly-unitless properties
17271	cssNumber: {
17272		"animationIterationCount": true,
17273		"columnCount": true,
17274		"fillOpacity": true,
17275		"flexGrow": true,
17276		"flexShrink": true,
17277		"fontWeight": true,
17278		"lineHeight": true,
17279		"opacity": true,
17280		"order": true,
17281		"orphans": true,
17282		"widows": true,
17283		"zIndex": true,
17284		"zoom": true
17285	},
17286
17287	// Add in properties whose names you wish to fix before
17288	// setting or getting the value
17289	cssProps: {},
17290
17291	// Get and set the style property on a DOM Node
17292	style: function( elem, name, value, extra ) {
17293
17294		// Don't set styles on text and comment nodes
17295		if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
17296			return;
17297		}
17298
17299		// Make sure that we're working with the right name
17300		var ret, type, hooks,
17301			origName = camelCase( name ),
17302			isCustomProp = rcustomProp.test( name ),
17303			style = elem.style;
17304
17305		// Make sure that we're working with the right name. We don't
17306		// want to query the value if it is a CSS custom property
17307		// since they are user-defined.
17308		if ( !isCustomProp ) {
17309			name = finalPropName( origName );
17310		}
17311
17312		// Gets hook for the prefixed version, then unprefixed version
17313		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
17314
17315		// Check if we're setting a value
17316		if ( value !== undefined ) {
17317			type = typeof value;
17318
17319			// Convert "+=" or "-=" to relative numbers (#7345)
17320			if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
17321				value = adjustCSS( elem, name, ret );
17322
17323				// Fixes bug #9237
17324				type = "number";
17325			}
17326
17327			// Make sure that null and NaN values aren't set (#7116)
17328			if ( value == null || value !== value ) {
17329				return;
17330			}
17331
17332			// If a number was passed in, add the unit (except for certain CSS properties)
17333			if ( type === "number" ) {
17334				value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" );
17335			}
17336
17337			// background-* props affect original clone's values
17338			if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
17339				style[ name ] = "inherit";
17340			}
17341
17342			// If a hook was provided, use that value, otherwise just set the specified value
17343			if ( !hooks || !( "set" in hooks ) ||
17344				( value = hooks.set( elem, value, extra ) ) !== undefined ) {
17345
17346				if ( isCustomProp ) {
17347					style.setProperty( name, value );
17348				} else {
17349					style[ name ] = value;
17350				}
17351			}
17352
17353		} else {
17354
17355			// If a hook was provided get the non-computed value from there
17356			if ( hooks && "get" in hooks &&
17357				( ret = hooks.get( elem, false, extra ) ) !== undefined ) {
17358
17359				return ret;
17360			}
17361
17362			// Otherwise just get the value from the style object
17363			return style[ name ];
17364		}
17365	},
17366
17367	css: function( elem, name, extra, styles ) {
17368		var val, num, hooks,
17369			origName = camelCase( name ),
17370			isCustomProp = rcustomProp.test( name );
17371
17372		// Make sure that we're working with the right name. We don't
17373		// want to modify the value if it is a CSS custom property
17374		// since they are user-defined.
17375		if ( !isCustomProp ) {
17376			name = finalPropName( origName );
17377		}
17378
17379		// Try prefixed name followed by the unprefixed name
17380		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
17381
17382		// If a hook was provided get the computed value from there
17383		if ( hooks && "get" in hooks ) {
17384			val = hooks.get( elem, true, extra );
17385		}
17386
17387		// Otherwise, if a way to get the computed value exists, use that
17388		if ( val === undefined ) {
17389			val = curCSS( elem, name, styles );
17390		}
17391
17392		// Convert "normal" to computed value
17393		if ( val === "normal" && name in cssNormalTransform ) {
17394			val = cssNormalTransform[ name ];
17395		}
17396
17397		// Make numeric if forced or a qualifier was provided and val looks numeric
17398		if ( extra === "" || extra ) {
17399			num = parseFloat( val );
17400			return extra === true || isFinite( num ) ? num || 0 : val;
17401		}
17402
17403		return val;
17404	}
17405} );
17406
17407jQuery.each( [ "height", "width" ], function( i, dimension ) {
17408	jQuery.cssHooks[ dimension ] = {
17409		get: function( elem, computed, extra ) {
17410			if ( computed ) {
17411
17412				// Certain elements can have dimension info if we invisibly show them
17413				// but it must have a current display style that would benefit
17414				return rdisplayswap.test( jQuery.css( elem, "display" ) ) &&
17415
17416					// Support: Safari 8+
17417					// Table columns in Safari have non-zero offsetWidth & zero
17418					// getBoundingClientRect().width unless display is changed.
17419					// Support: IE <=11 only
17420					// Running getBoundingClientRect on a disconnected node
17421					// in IE throws an error.
17422					( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?
17423						swap( elem, cssShow, function() {
17424							return getWidthOrHeight( elem, dimension, extra );
17425						} ) :
17426						getWidthOrHeight( elem, dimension, extra );
17427			}
17428		},
17429
17430		set: function( elem, value, extra ) {
17431			var matches,
17432				styles = getStyles( elem ),
17433				isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
17434				subtract = extra && boxModelAdjustment(
17435					elem,
17436					dimension,
17437					extra,
17438					isBorderBox,
17439					styles
17440				);
17441
17442			// Account for unreliable border-box dimensions by comparing offset* to computed and
17443			// faking a content-box to get border and padding (gh-3699)
17444			if ( isBorderBox && support.scrollboxSize() === styles.position ) {
17445				subtract -= Math.ceil(
17446					elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -
17447					parseFloat( styles[ dimension ] ) -
17448					boxModelAdjustment( elem, dimension, "border", false, styles ) -
17449					0.5
17450				);
17451			}
17452
17453			// Convert to pixels if value adjustment is needed
17454			if ( subtract && ( matches = rcssNum.exec( value ) ) &&
17455				( matches[ 3 ] || "px" ) !== "px" ) {
17456
17457				elem.style[ dimension ] = value;
17458				value = jQuery.css( elem, dimension );
17459			}
17460
17461			return setPositiveNumber( elem, value, subtract );
17462		}
17463	};
17464} );
17465
17466jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,
17467	function( elem, computed ) {
17468		if ( computed ) {
17469			return ( parseFloat( curCSS( elem, "marginLeft" ) ) ||
17470				elem.getBoundingClientRect().left -
17471					swap( elem, { marginLeft: 0 }, function() {
17472						return elem.getBoundingClientRect().left;
17473					} )
17474				) + "px";
17475		}
17476	}
17477);
17478
17479// These hooks are used by animate to expand properties
17480jQuery.each( {
17481	margin: "",
17482	padding: "",
17483	border: "Width"
17484}, function( prefix, suffix ) {
17485	jQuery.cssHooks[ prefix + suffix ] = {
17486		expand: function( value ) {
17487			var i = 0,
17488				expanded = {},
17489
17490				// Assumes a single number if not a string
17491				parts = typeof value === "string" ? value.split( " " ) : [ value ];
17492
17493			for ( ; i < 4; i++ ) {
17494				expanded[ prefix + cssExpand[ i ] + suffix ] =
17495					parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
17496			}
17497
17498			return expanded;
17499		}
17500	};
17501
17502	if ( prefix !== "margin" ) {
17503		jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
17504	}
17505} );
17506
17507jQuery.fn.extend( {
17508	css: function( name, value ) {
17509		return access( this, function( elem, name, value ) {
17510			var styles, len,
17511				map = {},
17512				i = 0;
17513
17514			if ( Array.isArray( name ) ) {
17515				styles = getStyles( elem );
17516				len = name.length;
17517
17518				for ( ; i < len; i++ ) {
17519					map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
17520				}
17521
17522				return map;
17523			}
17524
17525			return value !== undefined ?
17526				jQuery.style( elem, name, value ) :
17527				jQuery.css( elem, name );
17528		}, name, value, arguments.length > 1 );
17529	}
17530} );
17531
17532
17533function Tween( elem, options, prop, end, easing ) {
17534	return new Tween.prototype.init( elem, options, prop, end, easing );
17535}
17536jQuery.Tween = Tween;
17537
17538Tween.prototype = {
17539	constructor: Tween,
17540	init: function( elem, options, prop, end, easing, unit ) {
17541		this.elem = elem;
17542		this.prop = prop;
17543		this.easing = easing || jQuery.easing._default;
17544		this.options = options;
17545		this.start = this.now = this.cur();
17546		this.end = end;
17547		this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
17548	},
17549	cur: function() {
17550		var hooks = Tween.propHooks[ this.prop ];
17551
17552		return hooks && hooks.get ?
17553			hooks.get( this ) :
17554			Tween.propHooks._default.get( this );
17555	},
17556	run: function( percent ) {
17557		var eased,
17558			hooks = Tween.propHooks[ this.prop ];
17559
17560		if ( this.options.duration ) {
17561			this.pos = eased = jQuery.easing[ this.easing ](
17562				percent, this.options.duration * percent, 0, 1, this.options.duration
17563			);
17564		} else {
17565			this.pos = eased = percent;
17566		}
17567		this.now = ( this.end - this.start ) * eased + this.start;
17568
17569		if ( this.options.step ) {
17570			this.options.step.call( this.elem, this.now, this );
17571		}
17572
17573		if ( hooks && hooks.set ) {
17574			hooks.set( this );
17575		} else {
17576			Tween.propHooks._default.set( this );
17577		}
17578		return this;
17579	}
17580};
17581
17582Tween.prototype.init.prototype = Tween.prototype;
17583
17584Tween.propHooks = {
17585	_default: {
17586		get: function( tween ) {
17587			var result;
17588
17589			// Use a property on the element directly when it is not a DOM element,
17590			// or when there is no matching style property that exists.
17591			if ( tween.elem.nodeType !== 1 ||
17592				tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {
17593				return tween.elem[ tween.prop ];
17594			}
17595
17596			// Passing an empty string as a 3rd parameter to .css will automatically
17597			// attempt a parseFloat and fallback to a string if the parse fails.
17598			// Simple values such as "10px" are parsed to Float;
17599			// complex values such as "rotate(1rad)" are returned as-is.
17600			result = jQuery.css( tween.elem, tween.prop, "" );
17601
17602			// Empty strings, null, undefined and "auto" are converted to 0.
17603			return !result || result === "auto" ? 0 : result;
17604		},
17605		set: function( tween ) {
17606
17607			// Use step hook for back compat.
17608			// Use cssHook if its there.
17609			// Use .style if available and use plain properties where available.
17610			if ( jQuery.fx.step[ tween.prop ] ) {
17611				jQuery.fx.step[ tween.prop ]( tween );
17612			} else if ( tween.elem.nodeType === 1 &&
17613				( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null ||
17614					jQuery.cssHooks[ tween.prop ] ) ) {
17615				jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
17616			} else {
17617				tween.elem[ tween.prop ] = tween.now;
17618			}
17619		}
17620	}
17621};
17622
17623// Support: IE <=9 only
17624// Panic based approach to setting things on disconnected nodes
17625Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
17626	set: function( tween ) {
17627		if ( tween.elem.nodeType && tween.elem.parentNode ) {
17628			tween.elem[ tween.prop ] = tween.now;
17629		}
17630	}
17631};
17632
17633jQuery.easing = {
17634	linear: function( p ) {
17635		return p;
17636	},
17637	swing: function( p ) {
17638		return 0.5 - Math.cos( p * Math.PI ) / 2;
17639	},
17640	_default: "swing"
17641};
17642
17643jQuery.fx = Tween.prototype.init;
17644
17645// Back compat <1.8 extension point
17646jQuery.fx.step = {};
17647
17648
17649
17650
17651var
17652	fxNow, inProgress,
17653	rfxtypes = /^(?:toggle|show|hide)$/,
17654	rrun = /queueHooks$/;
17655
17656function schedule() {
17657	if ( inProgress ) {
17658		if ( document.hidden === false && window.requestAnimationFrame ) {
17659			window.requestAnimationFrame( schedule );
17660		} else {
17661			window.setTimeout( schedule, jQuery.fx.interval );
17662		}
17663
17664		jQuery.fx.tick();
17665	}
17666}
17667
17668// Animations created synchronously will run synchronously
17669function createFxNow() {
17670	window.setTimeout( function() {
17671		fxNow = undefined;
17672	} );
17673	return ( fxNow = Date.now() );
17674}
17675
17676// Generate parameters to create a standard animation
17677function genFx( type, includeWidth ) {
17678	var which,
17679		i = 0,
17680		attrs = { height: type };
17681
17682	// If we include width, step value is 1 to do all cssExpand values,
17683	// otherwise step value is 2 to skip over Left and Right
17684	includeWidth = includeWidth ? 1 : 0;
17685	for ( ; i < 4; i += 2 - includeWidth ) {
17686		which = cssExpand[ i ];
17687		attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
17688	}
17689
17690	if ( includeWidth ) {
17691		attrs.opacity = attrs.width = type;
17692	}
17693
17694	return attrs;
17695}
17696
17697function createTween( value, prop, animation ) {
17698	var tween,
17699		collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ),
17700		index = 0,
17701		length = collection.length;
17702	for ( ; index < length; index++ ) {
17703		if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {
17704
17705			// We're done with this property
17706			return tween;
17707		}
17708	}
17709}
17710
17711function defaultPrefilter( elem, props, opts ) {
17712	var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,
17713		isBox = "width" in props || "height" in props,
17714		anim = this,
17715		orig = {},
17716		style = elem.style,
17717		hidden = elem.nodeType && isHiddenWithinTree( elem ),
17718		dataShow = dataPriv.get( elem, "fxshow" );
17719
17720	// Queue-skipping animations hijack the fx hooks
17721	if ( !opts.queue ) {
17722		hooks = jQuery._queueHooks( elem, "fx" );
17723		if ( hooks.unqueued == null ) {
17724			hooks.unqueued = 0;
17725			oldfire = hooks.empty.fire;
17726			hooks.empty.fire = function() {
17727				if ( !hooks.unqueued ) {
17728					oldfire();
17729				}
17730			};
17731		}
17732		hooks.unqueued++;
17733
17734		anim.always( function() {
17735
17736			// Ensure the complete handler is called before this completes
17737			anim.always( function() {
17738				hooks.unqueued--;
17739				if ( !jQuery.queue( elem, "fx" ).length ) {
17740					hooks.empty.fire();
17741				}
17742			} );
17743		} );
17744	}
17745
17746	// Detect show/hide animations
17747	for ( prop in props ) {
17748		value = props[ prop ];
17749		if ( rfxtypes.test( value ) ) {
17750			delete props[ prop ];
17751			toggle = toggle || value === "toggle";
17752			if ( value === ( hidden ? "hide" : "show" ) ) {
17753
17754				// Pretend to be hidden if this is a "show" and
17755				// there is still data from a stopped show/hide
17756				if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
17757					hidden = true;
17758
17759				// Ignore all other no-op show/hide data
17760				} else {
17761					continue;
17762				}
17763			}
17764			orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
17765		}
17766	}
17767
17768	// Bail out if this is a no-op like .hide().hide()
17769	propTween = !jQuery.isEmptyObject( props );
17770	if ( !propTween && jQuery.isEmptyObject( orig ) ) {
17771		return;
17772	}
17773
17774	// Restrict "overflow" and "display" styles during box animations
17775	if ( isBox && elem.nodeType === 1 ) {
17776
17777		// Support: IE <=9 - 11, Edge 12 - 15
17778		// Record all 3 overflow attributes because IE does not infer the shorthand
17779		// from identically-valued overflowX and overflowY and Edge just mirrors
17780		// the overflowX value there.
17781		opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
17782
17783		// Identify a display type, preferring old show/hide data over the CSS cascade
17784		restoreDisplay = dataShow && dataShow.display;
17785		if ( restoreDisplay == null ) {
17786			restoreDisplay = dataPriv.get( elem, "display" );
17787		}
17788		display = jQuery.css( elem, "display" );
17789		if ( display === "none" ) {
17790			if ( restoreDisplay ) {
17791				display = restoreDisplay;
17792			} else {
17793
17794				// Get nonempty value(s) by temporarily forcing visibility
17795				showHide( [ elem ], true );
17796				restoreDisplay = elem.style.display || restoreDisplay;
17797				display = jQuery.css( elem, "display" );
17798				showHide( [ elem ] );
17799			}
17800		}
17801
17802		// Animate inline elements as inline-block
17803		if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) {
17804			if ( jQuery.css( elem, "float" ) === "none" ) {
17805
17806				// Restore the original display value at the end of pure show/hide animations
17807				if ( !propTween ) {
17808					anim.done( function() {
17809						style.display = restoreDisplay;
17810					} );
17811					if ( restoreDisplay == null ) {
17812						display = style.display;
17813						restoreDisplay = display === "none" ? "" : display;
17814					}
17815				}
17816				style.display = "inline-block";
17817			}
17818		}
17819	}
17820
17821	if ( opts.overflow ) {
17822		style.overflow = "hidden";
17823		anim.always( function() {
17824			style.overflow = opts.overflow[ 0 ];
17825			style.overflowX = opts.overflow[ 1 ];
17826			style.overflowY = opts.overflow[ 2 ];
17827		} );
17828	}
17829
17830	// Implement show/hide animations
17831	propTween = false;
17832	for ( prop in orig ) {
17833
17834		// General show/hide setup for this element animation
17835		if ( !propTween ) {
17836			if ( dataShow ) {
17837				if ( "hidden" in dataShow ) {
17838					hidden = dataShow.hidden;
17839				}
17840			} else {
17841				dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } );
17842			}
17843
17844			// Store hidden/visible for toggle so `.stop().toggle()` "reverses"
17845			if ( toggle ) {
17846				dataShow.hidden = !hidden;
17847			}
17848
17849			// Show elements before animating them
17850			if ( hidden ) {
17851				showHide( [ elem ], true );
17852			}
17853
17854			/* eslint-disable no-loop-func */
17855
17856			anim.done( function() {
17857
17858			/* eslint-enable no-loop-func */
17859
17860				// The final step of a "hide" animation is actually hiding the element
17861				if ( !hidden ) {
17862					showHide( [ elem ] );
17863				}
17864				dataPriv.remove( elem, "fxshow" );
17865				for ( prop in orig ) {
17866					jQuery.style( elem, prop, orig[ prop ] );
17867				}
17868			} );
17869		}
17870
17871		// Per-property setup
17872		propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
17873		if ( !( prop in dataShow ) ) {
17874			dataShow[ prop ] = propTween.start;
17875			if ( hidden ) {
17876				propTween.end = propTween.start;
17877				propTween.start = 0;
17878			}
17879		}
17880	}
17881}
17882
17883function propFilter( props, specialEasing ) {
17884	var index, name, easing, value, hooks;
17885
17886	// camelCase, specialEasing and expand cssHook pass
17887	for ( index in props ) {
17888		name = camelCase( index );
17889		easing = specialEasing[ name ];
17890		value = props[ index ];
17891		if ( Array.isArray( value ) ) {
17892			easing = value[ 1 ];
17893			value = props[ index ] = value[ 0 ];
17894		}
17895
17896		if ( index !== name ) {
17897			props[ name ] = value;
17898			delete props[ index ];
17899		}
17900
17901		hooks = jQuery.cssHooks[ name ];
17902		if ( hooks && "expand" in hooks ) {
17903			value = hooks.expand( value );
17904			delete props[ name ];
17905
17906			// Not quite $.extend, this won't overwrite existing keys.
17907			// Reusing 'index' because we have the correct "name"
17908			for ( index in value ) {
17909				if ( !( index in props ) ) {
17910					props[ index ] = value[ index ];
17911					specialEasing[ index ] = easing;
17912				}
17913			}
17914		} else {
17915			specialEasing[ name ] = easing;
17916		}
17917	}
17918}
17919
17920function Animation( elem, properties, options ) {
17921	var result,
17922		stopped,
17923		index = 0,
17924		length = Animation.prefilters.length,
17925		deferred = jQuery.Deferred().always( function() {
17926
17927			// Don't match elem in the :animated selector
17928			delete tick.elem;
17929		} ),
17930		tick = function() {
17931			if ( stopped ) {
17932				return false;
17933			}
17934			var currentTime = fxNow || createFxNow(),
17935				remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
17936
17937				// Support: Android 2.3 only
17938				// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
17939				temp = remaining / animation.duration || 0,
17940				percent = 1 - temp,
17941				index = 0,
17942				length = animation.tweens.length;
17943
17944			for ( ; index < length; index++ ) {
17945				animation.tweens[ index ].run( percent );
17946			}
17947
17948			deferred.notifyWith( elem, [ animation, percent, remaining ] );
17949
17950			// If there's more to do, yield
17951			if ( percent < 1 && length ) {
17952				return remaining;
17953			}
17954
17955			// If this was an empty animation, synthesize a final progress notification
17956			if ( !length ) {
17957				deferred.notifyWith( elem, [ animation, 1, 0 ] );
17958			}
17959
17960			// Resolve the animation and report its conclusion
17961			deferred.resolveWith( elem, [ animation ] );
17962			return false;
17963		},
17964		animation = deferred.promise( {
17965			elem: elem,
17966			props: jQuery.extend( {}, properties ),
17967			opts: jQuery.extend( true, {
17968				specialEasing: {},
17969				easing: jQuery.easing._default
17970			}, options ),
17971			originalProperties: properties,
17972			originalOptions: options,
17973			startTime: fxNow || createFxNow(),
17974			duration: options.duration,
17975			tweens: [],
17976			createTween: function( prop, end ) {
17977				var tween = jQuery.Tween( elem, animation.opts, prop, end,
17978						animation.opts.specialEasing[ prop ] || animation.opts.easing );
17979				animation.tweens.push( tween );
17980				return tween;
17981			},
17982			stop: function( gotoEnd ) {
17983				var index = 0,
17984
17985					// If we are going to the end, we want to run all the tweens
17986					// otherwise we skip this part
17987					length = gotoEnd ? animation.tweens.length : 0;
17988				if ( stopped ) {
17989					return this;
17990				}
17991				stopped = true;
17992				for ( ; index < length; index++ ) {
17993					animation.tweens[ index ].run( 1 );
17994				}
17995
17996				// Resolve when we played the last frame; otherwise, reject
17997				if ( gotoEnd ) {
17998					deferred.notifyWith( elem, [ animation, 1, 0 ] );
17999					deferred.resolveWith( elem, [ animation, gotoEnd ] );
18000				} else {
18001					deferred.rejectWith( elem, [ animation, gotoEnd ] );
18002				}
18003				return this;
18004			}
18005		} ),
18006		props = animation.props;
18007
18008	propFilter( props, animation.opts.specialEasing );
18009
18010	for ( ; index < length; index++ ) {
18011		result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );
18012		if ( result ) {
18013			if ( isFunction( result.stop ) ) {
18014				jQuery._queueHooks( animation.elem, animation.opts.queue ).stop =
18015					result.stop.bind( result );
18016			}
18017			return result;
18018		}
18019	}
18020
18021	jQuery.map( props, createTween, animation );
18022
18023	if ( isFunction( animation.opts.start ) ) {
18024		animation.opts.start.call( elem, animation );
18025	}
18026
18027	// Attach callbacks from options
18028	animation
18029		.progress( animation.opts.progress )
18030		.done( animation.opts.done, animation.opts.complete )
18031		.fail( animation.opts.fail )
18032		.always( animation.opts.always );
18033
18034	jQuery.fx.timer(
18035		jQuery.extend( tick, {
18036			elem: elem,
18037			anim: animation,
18038			queue: animation.opts.queue
18039		} )
18040	);
18041
18042	return animation;
18043}
18044
18045jQuery.Animation = jQuery.extend( Animation, {
18046
18047	tweeners: {
18048		"*": [ function( prop, value ) {
18049			var tween = this.createTween( prop, value );
18050			adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );
18051			return tween;
18052		} ]
18053	},
18054
18055	tweener: function( props, callback ) {
18056		if ( isFunction( props ) ) {
18057			callback = props;
18058			props = [ "*" ];
18059		} else {
18060			props = props.match( rnothtmlwhite );
18061		}
18062
18063		var prop,
18064			index = 0,
18065			length = props.length;
18066
18067		for ( ; index < length; index++ ) {
18068			prop = props[ index ];
18069			Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];
18070			Animation.tweeners[ prop ].unshift( callback );
18071		}
18072	},
18073
18074	prefilters: [ defaultPrefilter ],
18075
18076	prefilter: function( callback, prepend ) {
18077		if ( prepend ) {
18078			Animation.prefilters.unshift( callback );
18079		} else {
18080			Animation.prefilters.push( callback );
18081		}
18082	}
18083} );
18084
18085jQuery.speed = function( speed, easing, fn ) {
18086	var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
18087		complete: fn || !fn && easing ||
18088			isFunction( speed ) && speed,
18089		duration: speed,
18090		easing: fn && easing || easing && !isFunction( easing ) && easing
18091	};
18092
18093	// Go to the end state if fx are off
18094	if ( jQuery.fx.off ) {
18095		opt.duration = 0;
18096
18097	} else {
18098		if ( typeof opt.duration !== "number" ) {
18099			if ( opt.duration in jQuery.fx.speeds ) {
18100				opt.duration = jQuery.fx.speeds[ opt.duration ];
18101
18102			} else {
18103				opt.duration = jQuery.fx.speeds._default;
18104			}
18105		}
18106	}
18107
18108	// Normalize opt.queue - true/undefined/null -> "fx"
18109	if ( opt.queue == null || opt.queue === true ) {
18110		opt.queue = "fx";
18111	}
18112
18113	// Queueing
18114	opt.old = opt.complete;
18115
18116	opt.complete = function() {
18117		if ( isFunction( opt.old ) ) {
18118			opt.old.call( this );
18119		}
18120
18121		if ( opt.queue ) {
18122			jQuery.dequeue( this, opt.queue );
18123		}
18124	};
18125
18126	return opt;
18127};
18128
18129jQuery.fn.extend( {
18130	fadeTo: function( speed, to, easing, callback ) {
18131
18132		// Show any hidden elements after setting opacity to 0
18133		return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show()
18134
18135			// Animate to the value specified
18136			.end().animate( { opacity: to }, speed, easing, callback );
18137	},
18138	animate: function( prop, speed, easing, callback ) {
18139		var empty = jQuery.isEmptyObject( prop ),
18140			optall = jQuery.speed( speed, easing, callback ),
18141			doAnimation = function() {
18142
18143				// Operate on a copy of prop so per-property easing won't be lost
18144				var anim = Animation( this, jQuery.extend( {}, prop ), optall );
18145
18146				// Empty animations, or finishing resolves immediately
18147				if ( empty || dataPriv.get( this, "finish" ) ) {
18148					anim.stop( true );
18149				}
18150			};
18151			doAnimation.finish = doAnimation;
18152
18153		return empty || optall.queue === false ?
18154			this.each( doAnimation ) :
18155			this.queue( optall.queue, doAnimation );
18156	},
18157	stop: function( type, clearQueue, gotoEnd ) {
18158		var stopQueue = function( hooks ) {
18159			var stop = hooks.stop;
18160			delete hooks.stop;
18161			stop( gotoEnd );
18162		};
18163
18164		if ( typeof type !== "string" ) {
18165			gotoEnd = clearQueue;
18166			clearQueue = type;
18167			type = undefined;
18168		}
18169		if ( clearQueue && type !== false ) {
18170			this.queue( type || "fx", [] );
18171		}
18172
18173		return this.each( function() {
18174			var dequeue = true,
18175				index = type != null && type + "queueHooks",
18176				timers = jQuery.timers,
18177				data = dataPriv.get( this );
18178
18179			if ( index ) {
18180				if ( data[ index ] && data[ index ].stop ) {
18181					stopQueue( data[ index ] );
18182				}
18183			} else {
18184				for ( index in data ) {
18185					if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
18186						stopQueue( data[ index ] );
18187					}
18188				}
18189			}
18190
18191			for ( index = timers.length; index--; ) {
18192				if ( timers[ index ].elem === this &&
18193					( type == null || timers[ index ].queue === type ) ) {
18194
18195					timers[ index ].anim.stop( gotoEnd );
18196					dequeue = false;
18197					timers.splice( index, 1 );
18198				}
18199			}
18200
18201			// Start the next in the queue if the last step wasn't forced.
18202			// Timers currently will call their complete callbacks, which
18203			// will dequeue but only if they were gotoEnd.
18204			if ( dequeue || !gotoEnd ) {
18205				jQuery.dequeue( this, type );
18206			}
18207		} );
18208	},
18209	finish: function( type ) {
18210		if ( type !== false ) {
18211			type = type || "fx";
18212		}
18213		return this.each( function() {
18214			var index,
18215				data = dataPriv.get( this ),
18216				queue = data[ type + "queue" ],
18217				hooks = data[ type + "queueHooks" ],
18218				timers = jQuery.timers,
18219				length = queue ? queue.length : 0;
18220
18221			// Enable finishing flag on private data
18222			data.finish = true;
18223
18224			// Empty the queue first
18225			jQuery.queue( this, type, [] );
18226
18227			if ( hooks && hooks.stop ) {
18228				hooks.stop.call( this, true );
18229			}
18230
18231			// Look for any active animations, and finish them
18232			for ( index = timers.length; index--; ) {
18233				if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
18234					timers[ index ].anim.stop( true );
18235					timers.splice( index, 1 );
18236				}
18237			}
18238
18239			// Look for any animations in the old queue and finish them
18240			for ( index = 0; index < length; index++ ) {
18241				if ( queue[ index ] && queue[ index ].finish ) {
18242					queue[ index ].finish.call( this );
18243				}
18244			}
18245
18246			// Turn off finishing flag
18247			delete data.finish;
18248		} );
18249	}
18250} );
18251
18252jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) {
18253	var cssFn = jQuery.fn[ name ];
18254	jQuery.fn[ name ] = function( speed, easing, callback ) {
18255		return speed == null || typeof speed === "boolean" ?
18256			cssFn.apply( this, arguments ) :
18257			this.animate( genFx( name, true ), speed, easing, callback );
18258	};
18259} );
18260
18261// Generate shortcuts for custom animations
18262jQuery.each( {
18263	slideDown: genFx( "show" ),
18264	slideUp: genFx( "hide" ),
18265	slideToggle: genFx( "toggle" ),
18266	fadeIn: { opacity: "show" },
18267	fadeOut: { opacity: "hide" },
18268	fadeToggle: { opacity: "toggle" }
18269}, function( name, props ) {
18270	jQuery.fn[ name ] = function( speed, easing, callback ) {
18271		return this.animate( props, speed, easing, callback );
18272	};
18273} );
18274
18275jQuery.timers = [];
18276jQuery.fx.tick = function() {
18277	var timer,
18278		i = 0,
18279		timers = jQuery.timers;
18280
18281	fxNow = Date.now();
18282
18283	for ( ; i < timers.length; i++ ) {
18284		timer = timers[ i ];
18285
18286		// Run the timer and safely remove it when done (allowing for external removal)
18287		if ( !timer() && timers[ i ] === timer ) {
18288			timers.splice( i--, 1 );
18289		}
18290	}
18291
18292	if ( !timers.length ) {
18293		jQuery.fx.stop();
18294	}
18295	fxNow = undefined;
18296};
18297
18298jQuery.fx.timer = function( timer ) {
18299	jQuery.timers.push( timer );
18300	jQuery.fx.start();
18301};
18302
18303jQuery.fx.interval = 13;
18304jQuery.fx.start = function() {
18305	if ( inProgress ) {
18306		return;
18307	}
18308
18309	inProgress = true;
18310	schedule();
18311};
18312
18313jQuery.fx.stop = function() {
18314	inProgress = null;
18315};
18316
18317jQuery.fx.speeds = {
18318	slow: 600,
18319	fast: 200,
18320
18321	// Default speed
18322	_default: 400
18323};
18324
18325
18326// Based off of the plugin by Clint Helfers, with permission.
18327// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
18328jQuery.fn.delay = function( time, type ) {
18329	time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
18330	type = type || "fx";
18331
18332	return this.queue( type, function( next, hooks ) {
18333		var timeout = window.setTimeout( next, time );
18334		hooks.stop = function() {
18335			window.clearTimeout( timeout );
18336		};
18337	} );
18338};
18339
18340
18341( function() {
18342	var input = document.createElement( "input" ),
18343		select = document.createElement( "select" ),
18344		opt = select.appendChild( document.createElement( "option" ) );
18345
18346	input.type = "checkbox";
18347
18348	// Support: Android <=4.3 only
18349	// Default value for a checkbox should be "on"
18350	support.checkOn = input.value !== "";
18351
18352	// Support: IE <=11 only
18353	// Must access selectedIndex to make default options select
18354	support.optSelected = opt.selected;
18355
18356	// Support: IE <=11 only
18357	// An input loses its value after becoming a radio
18358	input = document.createElement( "input" );
18359	input.value = "t";
18360	input.type = "radio";
18361	support.radioValue = input.value === "t";
18362} )();
18363
18364
18365var boolHook,
18366	attrHandle = jQuery.expr.attrHandle;
18367
18368jQuery.fn.extend( {
18369	attr: function( name, value ) {
18370		return access( this, jQuery.attr, name, value, arguments.length > 1 );
18371	},
18372
18373	removeAttr: function( name ) {
18374		return this.each( function() {
18375			jQuery.removeAttr( this, name );
18376		} );
18377	}
18378} );
18379
18380jQuery.extend( {
18381	attr: function( elem, name, value ) {
18382		var ret, hooks,
18383			nType = elem.nodeType;
18384
18385		// Don't get/set attributes on text, comment and attribute nodes
18386		if ( nType === 3 || nType === 8 || nType === 2 ) {
18387			return;
18388		}
18389
18390		// Fallback to prop when attributes are not supported
18391		if ( typeof elem.getAttribute === "undefined" ) {
18392			return jQuery.prop( elem, name, value );
18393		}
18394
18395		// Attribute hooks are determined by the lowercase version
18396		// Grab necessary hook if one is defined
18397		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
18398			hooks = jQuery.attrHooks[ name.toLowerCase() ] ||
18399				( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );
18400		}
18401
18402		if ( value !== undefined ) {
18403			if ( value === null ) {
18404				jQuery.removeAttr( elem, name );
18405				return;
18406			}
18407
18408			if ( hooks && "set" in hooks &&
18409				( ret = hooks.set( elem, value, name ) ) !== undefined ) {
18410				return ret;
18411			}
18412
18413			elem.setAttribute( name, value + "" );
18414			return value;
18415		}
18416
18417		if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
18418			return ret;
18419		}
18420
18421		ret = jQuery.find.attr( elem, name );
18422
18423		// Non-existent attributes return null, we normalize to undefined
18424		return ret == null ? undefined : ret;
18425	},
18426
18427	attrHooks: {
18428		type: {
18429			set: function( elem, value ) {
18430				if ( !support.radioValue && value === "radio" &&
18431					nodeName( elem, "input" ) ) {
18432					var val = elem.value;
18433					elem.setAttribute( "type", value );
18434					if ( val ) {
18435						elem.value = val;
18436					}
18437					return value;
18438				}
18439			}
18440		}
18441	},
18442
18443	removeAttr: function( elem, value ) {
18444		var name,
18445			i = 0,
18446
18447			// Attribute names can contain non-HTML whitespace characters
18448			// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
18449			attrNames = value && value.match( rnothtmlwhite );
18450
18451		if ( attrNames && elem.nodeType === 1 ) {
18452			while ( ( name = attrNames[ i++ ] ) ) {
18453				elem.removeAttribute( name );
18454			}
18455		}
18456	}
18457} );
18458
18459// Hooks for boolean attributes
18460boolHook = {
18461	set: function( elem, value, name ) {
18462		if ( value === false ) {
18463
18464			// Remove boolean attributes when set to false
18465			jQuery.removeAttr( elem, name );
18466		} else {
18467			elem.setAttribute( name, name );
18468		}
18469		return name;
18470	}
18471};
18472
18473jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
18474	var getter = attrHandle[ name ] || jQuery.find.attr;
18475
18476	attrHandle[ name ] = function( elem, name, isXML ) {
18477		var ret, handle,
18478			lowercaseName = name.toLowerCase();
18479
18480		if ( !isXML ) {
18481
18482			// Avoid an infinite loop by temporarily removing this function from the getter
18483			handle = attrHandle[ lowercaseName ];
18484			attrHandle[ lowercaseName ] = ret;
18485			ret = getter( elem, name, isXML ) != null ?
18486				lowercaseName :
18487				null;
18488			attrHandle[ lowercaseName ] = handle;
18489		}
18490		return ret;
18491	};
18492} );
18493
18494
18495
18496
18497var rfocusable = /^(?:input|select|textarea|button)$/i,
18498	rclickable = /^(?:a|area)$/i;
18499
18500jQuery.fn.extend( {
18501	prop: function( name, value ) {
18502		return access( this, jQuery.prop, name, value, arguments.length > 1 );
18503	},
18504
18505	removeProp: function( name ) {
18506		return this.each( function() {
18507			delete this[ jQuery.propFix[ name ] || name ];
18508		} );
18509	}
18510} );
18511
18512jQuery.extend( {
18513	prop: function( elem, name, value ) {
18514		var ret, hooks,
18515			nType = elem.nodeType;
18516
18517		// Don't get/set properties on text, comment and attribute nodes
18518		if ( nType === 3 || nType === 8 || nType === 2 ) {
18519			return;
18520		}
18521
18522		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
18523
18524			// Fix name and attach hooks
18525			name = jQuery.propFix[ name ] || name;
18526			hooks = jQuery.propHooks[ name ];
18527		}
18528
18529		if ( value !== undefined ) {
18530			if ( hooks && "set" in hooks &&
18531				( ret = hooks.set( elem, value, name ) ) !== undefined ) {
18532				return ret;
18533			}
18534
18535			return ( elem[ name ] = value );
18536		}
18537
18538		if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
18539			return ret;
18540		}
18541
18542		return elem[ name ];
18543	},
18544
18545	propHooks: {
18546		tabIndex: {
18547			get: function( elem ) {
18548
18549				// Support: IE <=9 - 11 only
18550				// elem.tabIndex doesn't always return the
18551				// correct value when it hasn't been explicitly set
18552				// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
18553				// Use proper attribute retrieval(#12072)
18554				var tabindex = jQuery.find.attr( elem, "tabindex" );
18555
18556				if ( tabindex ) {
18557					return parseInt( tabindex, 10 );
18558				}
18559
18560				if (
18561					rfocusable.test( elem.nodeName ) ||
18562					rclickable.test( elem.nodeName ) &&
18563					elem.href
18564				) {
18565					return 0;
18566				}
18567
18568				return -1;
18569			}
18570		}
18571	},
18572
18573	propFix: {
18574		"for": "htmlFor",
18575		"class": "className"
18576	}
18577} );
18578
18579// Support: IE <=11 only
18580// Accessing the selectedIndex property
18581// forces the browser to respect setting selected
18582// on the option
18583// The getter ensures a default option is selected
18584// when in an optgroup
18585// eslint rule "no-unused-expressions" is disabled for this code
18586// since it considers such accessions noop
18587if ( !support.optSelected ) {
18588	jQuery.propHooks.selected = {
18589		get: function( elem ) {
18590
18591			/* eslint no-unused-expressions: "off" */
18592
18593			var parent = elem.parentNode;
18594			if ( parent && parent.parentNode ) {
18595				parent.parentNode.selectedIndex;
18596			}
18597			return null;
18598		},
18599		set: function( elem ) {
18600
18601			/* eslint no-unused-expressions: "off" */
18602
18603			var parent = elem.parentNode;
18604			if ( parent ) {
18605				parent.selectedIndex;
18606
18607				if ( parent.parentNode ) {
18608					parent.parentNode.selectedIndex;
18609				}
18610			}
18611		}
18612	};
18613}
18614
18615jQuery.each( [
18616	"tabIndex",
18617	"readOnly",
18618	"maxLength",
18619	"cellSpacing",
18620	"cellPadding",
18621	"rowSpan",
18622	"colSpan",
18623	"useMap",
18624	"frameBorder",
18625	"contentEditable"
18626], function() {
18627	jQuery.propFix[ this.toLowerCase() ] = this;
18628} );
18629
18630
18631
18632
18633	// Strip and collapse whitespace according to HTML spec
18634	// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace
18635	function stripAndCollapse( value ) {
18636		var tokens = value.match( rnothtmlwhite ) || [];
18637		return tokens.join( " " );
18638	}
18639
18640
18641function getClass( elem ) {
18642	return elem.getAttribute && elem.getAttribute( "class" ) || "";
18643}
18644
18645function classesToArray( value ) {
18646	if ( Array.isArray( value ) ) {
18647		return value;
18648	}
18649	if ( typeof value === "string" ) {
18650		return value.match( rnothtmlwhite ) || [];
18651	}
18652	return [];
18653}
18654
18655jQuery.fn.extend( {
18656	addClass: function( value ) {
18657		var classes, elem, cur, curValue, clazz, j, finalValue,
18658			i = 0;
18659
18660		if ( isFunction( value ) ) {
18661			return this.each( function( j ) {
18662				jQuery( this ).addClass( value.call( this, j, getClass( this ) ) );
18663			} );
18664		}
18665
18666		classes = classesToArray( value );
18667
18668		if ( classes.length ) {
18669			while ( ( elem = this[ i++ ] ) ) {
18670				curValue = getClass( elem );
18671				cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
18672
18673				if ( cur ) {
18674					j = 0;
18675					while ( ( clazz = classes[ j++ ] ) ) {
18676						if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
18677							cur += clazz + " ";
18678						}
18679					}
18680
18681					// Only assign if different to avoid unneeded rendering.
18682					finalValue = stripAndCollapse( cur );
18683					if ( curValue !== finalValue ) {
18684						elem.setAttribute( "class", finalValue );
18685					}
18686				}
18687			}
18688		}
18689
18690		return this;
18691	},
18692
18693	removeClass: function( value ) {
18694		var classes, elem, cur, curValue, clazz, j, finalValue,
18695			i = 0;
18696
18697		if ( isFunction( value ) ) {
18698			return this.each( function( j ) {
18699				jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );
18700			} );
18701		}
18702
18703		if ( !arguments.length ) {
18704			return this.attr( "class", "" );
18705		}
18706
18707		classes = classesToArray( value );
18708
18709		if ( classes.length ) {
18710			while ( ( elem = this[ i++ ] ) ) {
18711				curValue = getClass( elem );
18712
18713				// This expression is here for better compressibility (see addClass)
18714				cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
18715
18716				if ( cur ) {
18717					j = 0;
18718					while ( ( clazz = classes[ j++ ] ) ) {
18719
18720						// Remove *all* instances
18721						while ( cur.indexOf( " " + clazz + " " ) > -1 ) {
18722							cur = cur.replace( " " + clazz + " ", " " );
18723						}
18724					}
18725
18726					// Only assign if different to avoid unneeded rendering.
18727					finalValue = stripAndCollapse( cur );
18728					if ( curValue !== finalValue ) {
18729						elem.setAttribute( "class", finalValue );
18730					}
18731				}
18732			}
18733		}
18734
18735		return this;
18736	},
18737
18738	toggleClass: function( value, stateVal ) {
18739		var type = typeof value,
18740			isValidValue = type === "string" || Array.isArray( value );
18741
18742		if ( typeof stateVal === "boolean" && isValidValue ) {
18743			return stateVal ? this.addClass( value ) : this.removeClass( value );
18744		}
18745
18746		if ( isFunction( value ) ) {
18747			return this.each( function( i ) {
18748				jQuery( this ).toggleClass(
18749					value.call( this, i, getClass( this ), stateVal ),
18750					stateVal
18751				);
18752			} );
18753		}
18754
18755		return this.each( function() {
18756			var className, i, self, classNames;
18757
18758			if ( isValidValue ) {
18759
18760				// Toggle individual class names
18761				i = 0;
18762				self = jQuery( this );
18763				classNames = classesToArray( value );
18764
18765				while ( ( className = classNames[ i++ ] ) ) {
18766
18767					// Check each className given, space separated list
18768					if ( self.hasClass( className ) ) {
18769						self.removeClass( className );
18770					} else {
18771						self.addClass( className );
18772					}
18773				}
18774
18775			// Toggle whole class name
18776			} else if ( value === undefined || type === "boolean" ) {
18777				className = getClass( this );
18778				if ( className ) {
18779
18780					// Store className if set
18781					dataPriv.set( this, "__className__", className );
18782				}
18783
18784				// If the element has a class name or if we're passed `false`,
18785				// then remove the whole classname (if there was one, the above saved it).
18786				// Otherwise bring back whatever was previously saved (if anything),
18787				// falling back to the empty string if nothing was stored.
18788				if ( this.setAttribute ) {
18789					this.setAttribute( "class",
18790						className || value === false ?
18791						"" :
18792						dataPriv.get( this, "__className__" ) || ""
18793					);
18794				}
18795			}
18796		} );
18797	},
18798
18799	hasClass: function( selector ) {
18800		var className, elem,
18801			i = 0;
18802
18803		className = " " + selector + " ";
18804		while ( ( elem = this[ i++ ] ) ) {
18805			if ( elem.nodeType === 1 &&
18806				( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) {
18807					return true;
18808			}
18809		}
18810
18811		return false;
18812	}
18813} );
18814
18815
18816
18817
18818var rreturn = /\r/g;
18819
18820jQuery.fn.extend( {
18821	val: function( value ) {
18822		var hooks, ret, valueIsFunction,
18823			elem = this[ 0 ];
18824
18825		if ( !arguments.length ) {
18826			if ( elem ) {
18827				hooks = jQuery.valHooks[ elem.type ] ||
18828					jQuery.valHooks[ elem.nodeName.toLowerCase() ];
18829
18830				if ( hooks &&
18831					"get" in hooks &&
18832					( ret = hooks.get( elem, "value" ) ) !== undefined
18833				) {
18834					return ret;
18835				}
18836
18837				ret = elem.value;
18838
18839				// Handle most common string cases
18840				if ( typeof ret === "string" ) {
18841					return ret.replace( rreturn, "" );
18842				}
18843
18844				// Handle cases where value is null/undef or number
18845				return ret == null ? "" : ret;
18846			}
18847
18848			return;
18849		}
18850
18851		valueIsFunction = isFunction( value );
18852
18853		return this.each( function( i ) {
18854			var val;
18855
18856			if ( this.nodeType !== 1 ) {
18857				return;
18858			}
18859
18860			if ( valueIsFunction ) {
18861				val = value.call( this, i, jQuery( this ).val() );
18862			} else {
18863				val = value;
18864			}
18865
18866			// Treat null/undefined as ""; convert numbers to string
18867			if ( val == null ) {
18868				val = "";
18869
18870			} else if ( typeof val === "number" ) {
18871				val += "";
18872
18873			} else if ( Array.isArray( val ) ) {
18874				val = jQuery.map( val, function( value ) {
18875					return value == null ? "" : value + "";
18876				} );
18877			}
18878
18879			hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
18880
18881			// If set returns undefined, fall back to normal setting
18882			if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) {
18883				this.value = val;
18884			}
18885		} );
18886	}
18887} );
18888
18889jQuery.extend( {
18890	valHooks: {
18891		option: {
18892			get: function( elem ) {
18893
18894				var val = jQuery.find.attr( elem, "value" );
18895				return val != null ?
18896					val :
18897
18898					// Support: IE <=10 - 11 only
18899					// option.text throws exceptions (#14686, #14858)
18900					// Strip and collapse whitespace
18901					// https://html.spec.whatwg.org/#strip-and-collapse-whitespace
18902					stripAndCollapse( jQuery.text( elem ) );
18903			}
18904		},
18905		select: {
18906			get: function( elem ) {
18907				var value, option, i,
18908					options = elem.options,
18909					index = elem.selectedIndex,
18910					one = elem.type === "select-one",
18911					values = one ? null : [],
18912					max = one ? index + 1 : options.length;
18913
18914				if ( index < 0 ) {
18915					i = max;
18916
18917				} else {
18918					i = one ? index : 0;
18919				}
18920
18921				// Loop through all the selected options
18922				for ( ; i < max; i++ ) {
18923					option = options[ i ];
18924
18925					// Support: IE <=9 only
18926					// IE8-9 doesn't update selected after form reset (#2551)
18927					if ( ( option.selected || i === index ) &&
18928
18929							// Don't return options that are disabled or in a disabled optgroup
18930							!option.disabled &&
18931							( !option.parentNode.disabled ||
18932								!nodeName( option.parentNode, "optgroup" ) ) ) {
18933
18934						// Get the specific value for the option
18935						value = jQuery( option ).val();
18936
18937						// We don't need an array for one selects
18938						if ( one ) {
18939							return value;
18940						}
18941
18942						// Multi-Selects return an array
18943						values.push( value );
18944					}
18945				}
18946
18947				return values;
18948			},
18949
18950			set: function( elem, value ) {
18951				var optionSet, option,
18952					options = elem.options,
18953					values = jQuery.makeArray( value ),
18954					i = options.length;
18955
18956				while ( i-- ) {
18957					option = options[ i ];
18958
18959					/* eslint-disable no-cond-assign */
18960
18961					if ( option.selected =
18962						jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1
18963					) {
18964						optionSet = true;
18965					}
18966
18967					/* eslint-enable no-cond-assign */
18968				}
18969
18970				// Force browsers to behave consistently when non-matching value is set
18971				if ( !optionSet ) {
18972					elem.selectedIndex = -1;
18973				}
18974				return values;
18975			}
18976		}
18977	}
18978} );
18979
18980// Radios and checkboxes getter/setter
18981jQuery.each( [ "radio", "checkbox" ], function() {
18982	jQuery.valHooks[ this ] = {
18983		set: function( elem, value ) {
18984			if ( Array.isArray( value ) ) {
18985				return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );
18986			}
18987		}
18988	};
18989	if ( !support.checkOn ) {
18990		jQuery.valHooks[ this ].get = function( elem ) {
18991			return elem.getAttribute( "value" ) === null ? "on" : elem.value;
18992		};
18993	}
18994} );
18995
18996
18997
18998
18999// Return jQuery for attributes-only inclusion
19000
19001
19002support.focusin = "onfocusin" in window;
19003
19004
19005var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
19006	stopPropagationCallback = function( e ) {
19007		e.stopPropagation();
19008	};
19009
19010jQuery.extend( jQuery.event, {
19011
19012	trigger: function( event, data, elem, onlyHandlers ) {
19013
19014		var i, cur, tmp, bubbleType, ontype, handle, special, lastElement,
19015			eventPath = [ elem || document ],
19016			type = hasOwn.call( event, "type" ) ? event.type : event,
19017			namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : [];
19018
19019		cur = lastElement = tmp = elem = elem || document;
19020
19021		// Don't do events on text and comment nodes
19022		if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
19023			return;
19024		}
19025
19026		// focus/blur morphs to focusin/out; ensure we're not firing them right now
19027		if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
19028			return;
19029		}
19030
19031		if ( type.indexOf( "." ) > -1 ) {
19032
19033			// Namespaced trigger; create a regexp to match event type in handle()
19034			namespaces = type.split( "." );
19035			type = namespaces.shift();
19036			namespaces.sort();
19037		}
19038		ontype = type.indexOf( ":" ) < 0 && "on" + type;
19039
19040		// Caller can pass in a jQuery.Event object, Object, or just an event type string
19041		event = event[ jQuery.expando ] ?
19042			event :
19043			new jQuery.Event( type, typeof event === "object" && event );
19044
19045		// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
19046		event.isTrigger = onlyHandlers ? 2 : 3;
19047		event.namespace = namespaces.join( "." );
19048		event.rnamespace = event.namespace ?
19049			new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) :
19050			null;
19051
19052		// Clean up the event in case it is being reused
19053		event.result = undefined;
19054		if ( !event.target ) {
19055			event.target = elem;
19056		}
19057
19058		// Clone any incoming data and prepend the event, creating the handler arg list
19059		data = data == null ?
19060			[ event ] :
19061			jQuery.makeArray( data, [ event ] );
19062
19063		// Allow special events to draw outside the lines
19064		special = jQuery.event.special[ type ] || {};
19065		if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
19066			return;
19067		}
19068
19069		// Determine event propagation path in advance, per W3C events spec (#9951)
19070		// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
19071		if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {
19072
19073			bubbleType = special.delegateType || type;
19074			if ( !rfocusMorph.test( bubbleType + type ) ) {
19075				cur = cur.parentNode;
19076			}
19077			for ( ; cur; cur = cur.parentNode ) {
19078				eventPath.push( cur );
19079				tmp = cur;
19080			}
19081
19082			// Only add window if we got to document (e.g., not plain obj or detached DOM)
19083			if ( tmp === ( elem.ownerDocument || document ) ) {
19084				eventPath.push( tmp.defaultView || tmp.parentWindow || window );
19085			}
19086		}
19087
19088		// Fire handlers on the event path
19089		i = 0;
19090		while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {
19091			lastElement = cur;
19092			event.type = i > 1 ?
19093				bubbleType :
19094				special.bindType || type;
19095
19096			// jQuery handler
19097			handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] &&
19098				dataPriv.get( cur, "handle" );
19099			if ( handle ) {
19100				handle.apply( cur, data );
19101			}
19102
19103			// Native handler
19104			handle = ontype && cur[ ontype ];
19105			if ( handle && handle.apply && acceptData( cur ) ) {
19106				event.result = handle.apply( cur, data );
19107				if ( event.result === false ) {
19108					event.preventDefault();
19109				}
19110			}
19111		}
19112		event.type = type;
19113
19114		// If nobody prevented the default action, do it now
19115		if ( !onlyHandlers && !event.isDefaultPrevented() ) {
19116
19117			if ( ( !special._default ||
19118				special._default.apply( eventPath.pop(), data ) === false ) &&
19119				acceptData( elem ) ) {
19120
19121				// Call a native DOM method on the target with the same name as the event.
19122				// Don't do default actions on window, that's where global variables be (#6170)
19123				if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {
19124
19125					// Don't re-trigger an onFOO event when we call its FOO() method
19126					tmp = elem[ ontype ];
19127
19128					if ( tmp ) {
19129						elem[ ontype ] = null;
19130					}
19131
19132					// Prevent re-triggering of the same event, since we already bubbled it above
19133					jQuery.event.triggered = type;
19134
19135					if ( event.isPropagationStopped() ) {
19136						lastElement.addEventListener( type, stopPropagationCallback );
19137					}
19138
19139					elem[ type ]();
19140
19141					if ( event.isPropagationStopped() ) {
19142						lastElement.removeEventListener( type, stopPropagationCallback );
19143					}
19144
19145					jQuery.event.triggered = undefined;
19146
19147					if ( tmp ) {
19148						elem[ ontype ] = tmp;
19149					}
19150				}
19151			}
19152		}
19153
19154		return event.result;
19155	},
19156
19157	// Piggyback on a donor event to simulate a different one
19158	// Used only for `focus(in | out)` events
19159	simulate: function( type, elem, event ) {
19160		var e = jQuery.extend(
19161			new jQuery.Event(),
19162			event,
19163			{
19164				type: type,
19165				isSimulated: true
19166			}
19167		);
19168
19169		jQuery.event.trigger( e, null, elem );
19170	}
19171
19172} );
19173
19174jQuery.fn.extend( {
19175
19176	trigger: function( type, data ) {
19177		return this.each( function() {
19178			jQuery.event.trigger( type, data, this );
19179		} );
19180	},
19181	triggerHandler: function( type, data ) {
19182		var elem = this[ 0 ];
19183		if ( elem ) {
19184			return jQuery.event.trigger( type, data, elem, true );
19185		}
19186	}
19187} );
19188
19189
19190// Support: Firefox <=44
19191// Firefox doesn't have focus(in | out) events
19192// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
19193//
19194// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
19195// focus(in | out) events fire after focus & blur events,
19196// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
19197// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857
19198if ( !support.focusin ) {
19199	jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) {
19200
19201		// Attach a single capturing handler on the document while someone wants focusin/focusout
19202		var handler = function( event ) {
19203			jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );
19204		};
19205
19206		jQuery.event.special[ fix ] = {
19207			setup: function() {
19208				var doc = this.ownerDocument || this,
19209					attaches = dataPriv.access( doc, fix );
19210
19211				if ( !attaches ) {
19212					doc.addEventListener( orig, handler, true );
19213				}
19214				dataPriv.access( doc, fix, ( attaches || 0 ) + 1 );
19215			},
19216			teardown: function() {
19217				var doc = this.ownerDocument || this,
19218					attaches = dataPriv.access( doc, fix ) - 1;
19219
19220				if ( !attaches ) {
19221					doc.removeEventListener( orig, handler, true );
19222					dataPriv.remove( doc, fix );
19223
19224				} else {
19225					dataPriv.access( doc, fix, attaches );
19226				}
19227			}
19228		};
19229	} );
19230}
19231var location = window.location;
19232
19233var nonce = Date.now();
19234
19235var rquery = ( /\?/ );
19236
19237
19238
19239// Cross-browser xml parsing
19240jQuery.parseXML = function( data ) {
19241	var xml;
19242	if ( !data || typeof data !== "string" ) {
19243		return null;
19244	}
19245
19246	// Support: IE 9 - 11 only
19247	// IE throws on parseFromString with invalid input.
19248	try {
19249		xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
19250	} catch ( e ) {
19251		xml = undefined;
19252	}
19253
19254	if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
19255		jQuery.error( "Invalid XML: " + data );
19256	}
19257	return xml;
19258};
19259
19260
19261var
19262	rbracket = /\[\]$/,
19263	rCRLF = /\r?\n/g,
19264	rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
19265	rsubmittable = /^(?:input|select|textarea|keygen)/i;
19266
19267function buildParams( prefix, obj, traditional, add ) {
19268	var name;
19269
19270	if ( Array.isArray( obj ) ) {
19271
19272		// Serialize array item.
19273		jQuery.each( obj, function( i, v ) {
19274			if ( traditional || rbracket.test( prefix ) ) {
19275
19276				// Treat each array item as a scalar.
19277				add( prefix, v );
19278
19279			} else {
19280
19281				// Item is non-scalar (array or object), encode its numeric index.
19282				buildParams(
19283					prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]",
19284					v,
19285					traditional,
19286					add
19287				);
19288			}
19289		} );
19290
19291	} else if ( !traditional && toType( obj ) === "object" ) {
19292
19293		// Serialize object item.
19294		for ( name in obj ) {
19295			buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
19296		}
19297
19298	} else {
19299
19300		// Serialize scalar item.
19301		add( prefix, obj );
19302	}
19303}
19304
19305// Serialize an array of form elements or a set of
19306// key/values into a query string
19307jQuery.param = function( a, traditional ) {
19308	var prefix,
19309		s = [],
19310		add = function( key, valueOrFunction ) {
19311
19312			// If value is a function, invoke it and use its return value
19313			var value = isFunction( valueOrFunction ) ?
19314				valueOrFunction() :
19315				valueOrFunction;
19316
19317			s[ s.length ] = encodeURIComponent( key ) + "=" +
19318				encodeURIComponent( value == null ? "" : value );
19319		};
19320
19321	// If an array was passed in, assume that it is an array of form elements.
19322	if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
19323
19324		// Serialize the form elements
19325		jQuery.each( a, function() {
19326			add( this.name, this.value );
19327		} );
19328
19329	} else {
19330
19331		// If traditional, encode the "old" way (the way 1.3.2 or older
19332		// did it), otherwise encode params recursively.
19333		for ( prefix in a ) {
19334			buildParams( prefix, a[ prefix ], traditional, add );
19335		}
19336	}
19337
19338	// Return the resulting serialization
19339	return s.join( "&" );
19340};
19341
19342jQuery.fn.extend( {
19343	serialize: function() {
19344		return jQuery.param( this.serializeArray() );
19345	},
19346	serializeArray: function() {
19347		return this.map( function() {
19348
19349			// Can add propHook for "elements" to filter or add form elements
19350			var elements = jQuery.prop( this, "elements" );
19351			return elements ? jQuery.makeArray( elements ) : this;
19352		} )
19353		.filter( function() {
19354			var type = this.type;
19355
19356			// Use .is( ":disabled" ) so that fieldset[disabled] works
19357			return this.name && !jQuery( this ).is( ":disabled" ) &&
19358				rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
19359				( this.checked || !rcheckableType.test( type ) );
19360		} )
19361		.map( function( i, elem ) {
19362			var val = jQuery( this ).val();
19363
19364			if ( val == null ) {
19365				return null;
19366			}
19367
19368			if ( Array.isArray( val ) ) {
19369				return jQuery.map( val, function( val ) {
19370					return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
19371				} );
19372			}
19373
19374			return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
19375		} ).get();
19376	}
19377} );
19378
19379
19380var
19381	r20 = /%20/g,
19382	rhash = /#.*$/,
19383	rantiCache = /([?&])_=[^&]*/,
19384	rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
19385
19386	// #7653, #8125, #8152: local protocol detection
19387	rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
19388	rnoContent = /^(?:GET|HEAD)$/,
19389	rprotocol = /^\/\//,
19390
19391	/* Prefilters
19392	 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
19393	 * 2) These are called:
19394	 *    - BEFORE asking for a transport
19395	 *    - AFTER param serialization (s.data is a string if s.processData is true)
19396	 * 3) key is the dataType
19397	 * 4) the catchall symbol "*" can be used
19398	 * 5) execution will start with transport dataType and THEN continue down to "*" if needed
19399	 */
19400	prefilters = {},
19401
19402	/* Transports bindings
19403	 * 1) key is the dataType
19404	 * 2) the catchall symbol "*" can be used
19405	 * 3) selection will start with transport dataType and THEN go to "*" if needed
19406	 */
19407	transports = {},
19408
19409	// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
19410	allTypes = "*/".concat( "*" ),
19411
19412	// Anchor tag for parsing the document origin
19413	originAnchor = document.createElement( "a" );
19414	originAnchor.href = location.href;
19415
19416// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
19417function addToPrefiltersOrTransports( structure ) {
19418
19419	// dataTypeExpression is optional and defaults to "*"
19420	return function( dataTypeExpression, func ) {
19421
19422		if ( typeof dataTypeExpression !== "string" ) {
19423			func = dataTypeExpression;
19424			dataTypeExpression = "*";
19425		}
19426
19427		var dataType,
19428			i = 0,
19429			dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];
19430
19431		if ( isFunction( func ) ) {
19432
19433			// For each dataType in the dataTypeExpression
19434			while ( ( dataType = dataTypes[ i++ ] ) ) {
19435
19436				// Prepend if requested
19437				if ( dataType[ 0 ] === "+" ) {
19438					dataType = dataType.slice( 1 ) || "*";
19439					( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );
19440
19441				// Otherwise append
19442				} else {
19443					( structure[ dataType ] = structure[ dataType ] || [] ).push( func );
19444				}
19445			}
19446		}
19447	};
19448}
19449
19450// Base inspection function for prefilters and transports
19451function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
19452
19453	var inspected = {},
19454		seekingTransport = ( structure === transports );
19455
19456	function inspect( dataType ) {
19457		var selected;
19458		inspected[ dataType ] = true;
19459		jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
19460			var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
19461			if ( typeof dataTypeOrTransport === "string" &&
19462				!seekingTransport && !inspected[ dataTypeOrTransport ] ) {
19463
19464				options.dataTypes.unshift( dataTypeOrTransport );
19465				inspect( dataTypeOrTransport );
19466				return false;
19467			} else if ( seekingTransport ) {
19468				return !( selected = dataTypeOrTransport );
19469			}
19470		} );
19471		return selected;
19472	}
19473
19474	return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
19475}
19476
19477// A special extend for ajax options
19478// that takes "flat" options (not to be deep extended)
19479// Fixes #9887
19480function ajaxExtend( target, src ) {
19481	var key, deep,
19482		flatOptions = jQuery.ajaxSettings.flatOptions || {};
19483
19484	for ( key in src ) {
19485		if ( src[ key ] !== undefined ) {
19486			( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
19487		}
19488	}
19489	if ( deep ) {
19490		jQuery.extend( true, target, deep );
19491	}
19492
19493	return target;
19494}
19495
19496/* Handles responses to an ajax request:
19497 * - finds the right dataType (mediates between content-type and expected dataType)
19498 * - returns the corresponding response
19499 */
19500function ajaxHandleResponses( s, jqXHR, responses ) {
19501
19502	var ct, type, finalDataType, firstDataType,
19503		contents = s.contents,
19504		dataTypes = s.dataTypes;
19505
19506	// Remove auto dataType and get content-type in the process
19507	while ( dataTypes[ 0 ] === "*" ) {
19508		dataTypes.shift();
19509		if ( ct === undefined ) {
19510			ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" );
19511		}
19512	}
19513
19514	// Check if we're dealing with a known content-type
19515	if ( ct ) {
19516		for ( type in contents ) {
19517			if ( contents[ type ] && contents[ type ].test( ct ) ) {
19518				dataTypes.unshift( type );
19519				break;
19520			}
19521		}
19522	}
19523
19524	// Check to see if we have a response for the expected dataType
19525	if ( dataTypes[ 0 ] in responses ) {
19526		finalDataType = dataTypes[ 0 ];
19527	} else {
19528
19529		// Try convertible dataTypes
19530		for ( type in responses ) {
19531			if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) {
19532				finalDataType = type;
19533				break;
19534			}
19535			if ( !firstDataType ) {
19536				firstDataType = type;
19537			}
19538		}
19539
19540		// Or just use first one
19541		finalDataType = finalDataType || firstDataType;
19542	}
19543
19544	// If we found a dataType
19545	// We add the dataType to the list if needed
19546	// and return the corresponding response
19547	if ( finalDataType ) {
19548		if ( finalDataType !== dataTypes[ 0 ] ) {
19549			dataTypes.unshift( finalDataType );
19550		}
19551		return responses[ finalDataType ];
19552	}
19553}
19554
19555/* Chain conversions given the request and the original response
19556 * Also sets the responseXXX fields on the jqXHR instance
19557 */
19558function ajaxConvert( s, response, jqXHR, isSuccess ) {
19559	var conv2, current, conv, tmp, prev,
19560		converters = {},
19561
19562		// Work with a copy of dataTypes in case we need to modify it for conversion
19563		dataTypes = s.dataTypes.slice();
19564
19565	// Create converters map with lowercased keys
19566	if ( dataTypes[ 1 ] ) {
19567		for ( conv in s.converters ) {
19568			converters[ conv.toLowerCase() ] = s.converters[ conv ];
19569		}
19570	}
19571
19572	current = dataTypes.shift();
19573
19574	// Convert to each sequential dataType
19575	while ( current ) {
19576
19577		if ( s.responseFields[ current ] ) {
19578			jqXHR[ s.responseFields[ current ] ] = response;
19579		}
19580
19581		// Apply the dataFilter if provided
19582		if ( !prev && isSuccess && s.dataFilter ) {
19583			response = s.dataFilter( response, s.dataType );
19584		}
19585
19586		prev = current;
19587		current = dataTypes.shift();
19588
19589		if ( current ) {
19590
19591			// There's only work to do if current dataType is non-auto
19592			if ( current === "*" ) {
19593
19594				current = prev;
19595
19596			// Convert response if prev dataType is non-auto and differs from current
19597			} else if ( prev !== "*" && prev !== current ) {
19598
19599				// Seek a direct converter
19600				conv = converters[ prev + " " + current ] || converters[ "* " + current ];
19601
19602				// If none found, seek a pair
19603				if ( !conv ) {
19604					for ( conv2 in converters ) {
19605
19606						// If conv2 outputs current
19607						tmp = conv2.split( " " );
19608						if ( tmp[ 1 ] === current ) {
19609
19610							// If prev can be converted to accepted input
19611							conv = converters[ prev + " " + tmp[ 0 ] ] ||
19612								converters[ "* " + tmp[ 0 ] ];
19613							if ( conv ) {
19614
19615								// Condense equivalence converters
19616								if ( conv === true ) {
19617									conv = converters[ conv2 ];
19618
19619								// Otherwise, insert the intermediate dataType
19620								} else if ( converters[ conv2 ] !== true ) {
19621									current = tmp[ 0 ];
19622									dataTypes.unshift( tmp[ 1 ] );
19623								}
19624								break;
19625							}
19626						}
19627					}
19628				}
19629
19630				// Apply converter (if not an equivalence)
19631				if ( conv !== true ) {
19632
19633					// Unless errors are allowed to bubble, catch and return them
19634					if ( conv && s.throws ) {
19635						response = conv( response );
19636					} else {
19637						try {
19638							response = conv( response );
19639						} catch ( e ) {
19640							return {
19641								state: "parsererror",
19642								error: conv ? e : "No conversion from " + prev + " to " + current
19643							};
19644						}
19645					}
19646				}
19647			}
19648		}
19649	}
19650
19651	return { state: "success", data: response };
19652}
19653
19654jQuery.extend( {
19655
19656	// Counter for holding the number of active queries
19657	active: 0,
19658
19659	// Last-Modified header cache for next request
19660	lastModified: {},
19661	etag: {},
19662
19663	ajaxSettings: {
19664		url: location.href,
19665		type: "GET",
19666		isLocal: rlocalProtocol.test( location.protocol ),
19667		global: true,
19668		processData: true,
19669		async: true,
19670		contentType: "application/x-www-form-urlencoded; charset=UTF-8",
19671
19672		/*
19673		timeout: 0,
19674		data: null,
19675		dataType: null,
19676		username: null,
19677		password: null,
19678		cache: null,
19679		throws: false,
19680		traditional: false,
19681		headers: {},
19682		*/
19683
19684		accepts: {
19685			"*": allTypes,
19686			text: "text/plain",
19687			html: "text/html",
19688			xml: "application/xml, text/xml",
19689			json: "application/json, text/javascript"
19690		},
19691
19692		contents: {
19693			xml: /\bxml\b/,
19694			html: /\bhtml/,
19695			json: /\bjson\b/
19696		},
19697
19698		responseFields: {
19699			xml: "responseXML",
19700			text: "responseText",
19701			json: "responseJSON"
19702		},
19703
19704		// Data converters
19705		// Keys separate source (or catchall "*") and destination types with a single space
19706		converters: {
19707
19708			// Convert anything to text
19709			"* text": String,
19710
19711			// Text to html (true = no transformation)
19712			"text html": true,
19713
19714			// Evaluate text as a json expression
19715			"text json": JSON.parse,
19716
19717			// Parse text as xml
19718			"text xml": jQuery.parseXML
19719		},
19720
19721		// For options that shouldn't be deep extended:
19722		// you can add your own custom options here if
19723		// and when you create one that shouldn't be
19724		// deep extended (see ajaxExtend)
19725		flatOptions: {
19726			url: true,
19727			context: true
19728		}
19729	},
19730
19731	// Creates a full fledged settings object into target
19732	// with both ajaxSettings and settings fields.
19733	// If target is omitted, writes into ajaxSettings.
19734	ajaxSetup: function( target, settings ) {
19735		return settings ?
19736
19737			// Building a settings object
19738			ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
19739
19740			// Extending ajaxSettings
19741			ajaxExtend( jQuery.ajaxSettings, target );
19742	},
19743
19744	ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
19745	ajaxTransport: addToPrefiltersOrTransports( transports ),
19746
19747	// Main method
19748	ajax: function( url, options ) {
19749
19750		// If url is an object, simulate pre-1.5 signature
19751		if ( typeof url === "object" ) {
19752			options = url;
19753			url = undefined;
19754		}
19755
19756		// Force options to be an object
19757		options = options || {};
19758
19759		var transport,
19760
19761			// URL without anti-cache param
19762			cacheURL,
19763
19764			// Response headers
19765			responseHeadersString,
19766			responseHeaders,
19767
19768			// timeout handle
19769			timeoutTimer,
19770
19771			// Url cleanup var
19772			urlAnchor,
19773
19774			// Request state (becomes false upon send and true upon completion)
19775			completed,
19776
19777			// To know if global events are to be dispatched
19778			fireGlobals,
19779
19780			// Loop variable
19781			i,
19782
19783			// uncached part of the url
19784			uncached,
19785
19786			// Create the final options object
19787			s = jQuery.ajaxSetup( {}, options ),
19788
19789			// Callbacks context
19790			callbackContext = s.context || s,
19791
19792			// Context for global events is callbackContext if it is a DOM node or jQuery collection
19793			globalEventContext = s.context &&
19794				( callbackContext.nodeType || callbackContext.jquery ) ?
19795					jQuery( callbackContext ) :
19796					jQuery.event,
19797
19798			// Deferreds
19799			deferred = jQuery.Deferred(),
19800			completeDeferred = jQuery.Callbacks( "once memory" ),
19801
19802			// Status-dependent callbacks
19803			statusCode = s.statusCode || {},
19804
19805			// Headers (they are sent all at once)
19806			requestHeaders = {},
19807			requestHeadersNames = {},
19808
19809			// Default abort message
19810			strAbort = "canceled",
19811
19812			// Fake xhr
19813			jqXHR = {
19814				readyState: 0,
19815
19816				// Builds headers hashtable if needed
19817				getResponseHeader: function( key ) {
19818					var match;
19819					if ( completed ) {
19820						if ( !responseHeaders ) {
19821							responseHeaders = {};
19822							while ( ( match = rheaders.exec( responseHeadersString ) ) ) {
19823								responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ];
19824							}
19825						}
19826						match = responseHeaders[ key.toLowerCase() ];
19827					}
19828					return match == null ? null : match;
19829				},
19830
19831				// Raw string
19832				getAllResponseHeaders: function() {
19833					return completed ? responseHeadersString : null;
19834				},
19835
19836				// Caches the header
19837				setRequestHeader: function( name, value ) {
19838					if ( completed == null ) {
19839						name = requestHeadersNames[ name.toLowerCase() ] =
19840							requestHeadersNames[ name.toLowerCase() ] || name;
19841						requestHeaders[ name ] = value;
19842					}
19843					return this;
19844				},
19845
19846				// Overrides response content-type header
19847				overrideMimeType: function( type ) {
19848					if ( completed == null ) {
19849						s.mimeType = type;
19850					}
19851					return this;
19852				},
19853
19854				// Status-dependent callbacks
19855				statusCode: function( map ) {
19856					var code;
19857					if ( map ) {
19858						if ( completed ) {
19859
19860							// Execute the appropriate callbacks
19861							jqXHR.always( map[ jqXHR.status ] );
19862						} else {
19863
19864							// Lazy-add the new callbacks in a way that preserves old ones
19865							for ( code in map ) {
19866								statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
19867							}
19868						}
19869					}
19870					return this;
19871				},
19872
19873				// Cancel the request
19874				abort: function( statusText ) {
19875					var finalText = statusText || strAbort;
19876					if ( transport ) {
19877						transport.abort( finalText );
19878					}
19879					done( 0, finalText );
19880					return this;
19881				}
19882			};
19883
19884		// Attach deferreds
19885		deferred.promise( jqXHR );
19886
19887		// Add protocol if not provided (prefilters might expect it)
19888		// Handle falsy url in the settings object (#10093: consistency with old signature)
19889		// We also use the url parameter if available
19890		s.url = ( ( url || s.url || location.href ) + "" )
19891			.replace( rprotocol, location.protocol + "//" );
19892
19893		// Alias method option to type as per ticket #12004
19894		s.type = options.method || options.type || s.method || s.type;
19895
19896		// Extract dataTypes list
19897		s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ];
19898
19899		// A cross-domain request is in order when the origin doesn't match the current origin.
19900		if ( s.crossDomain == null ) {
19901			urlAnchor = document.createElement( "a" );
19902
19903			// Support: IE <=8 - 11, Edge 12 - 15
19904			// IE throws exception on accessing the href property if url is malformed,
19905			// e.g. http://example.com:80x/
19906			try {
19907				urlAnchor.href = s.url;
19908
19909				// Support: IE <=8 - 11 only
19910				// Anchor's host property isn't correctly set when s.url is relative
19911				urlAnchor.href = urlAnchor.href;
19912				s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !==
19913					urlAnchor.protocol + "//" + urlAnchor.host;
19914			} catch ( e ) {
19915
19916				// If there is an error parsing the URL, assume it is crossDomain,
19917				// it can be rejected by the transport if it is invalid
19918				s.crossDomain = true;
19919			}
19920		}
19921
19922		// Convert data if not already a string
19923		if ( s.data && s.processData && typeof s.data !== "string" ) {
19924			s.data = jQuery.param( s.data, s.traditional );
19925		}
19926
19927		// Apply prefilters
19928		inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
19929
19930		// If request was aborted inside a prefilter, stop there
19931		if ( completed ) {
19932			return jqXHR;
19933		}
19934
19935		// We can fire global events as of now if asked to
19936		// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
19937		fireGlobals = jQuery.event && s.global;
19938
19939		// Watch for a new set of requests
19940		if ( fireGlobals && jQuery.active++ === 0 ) {
19941			jQuery.event.trigger( "ajaxStart" );
19942		}
19943
19944		// Uppercase the type
19945		s.type = s.type.toUpperCase();
19946
19947		// Determine if request has content
19948		s.hasContent = !rnoContent.test( s.type );
19949
19950		// Save the URL in case we're toying with the If-Modified-Since
19951		// and/or If-None-Match header later on
19952		// Remove hash to simplify url manipulation
19953		cacheURL = s.url.replace( rhash, "" );
19954
19955		// More options handling for requests with no content
19956		if ( !s.hasContent ) {
19957
19958			// Remember the hash so we can put it back
19959			uncached = s.url.slice( cacheURL.length );
19960
19961			// If data is available and should be processed, append data to url
19962			if ( s.data && ( s.processData || typeof s.data === "string" ) ) {
19963				cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data;
19964
19965				// #9682: remove data so that it's not used in an eventual retry
19966				delete s.data;
19967			}
19968
19969			// Add or update anti-cache param if needed
19970			if ( s.cache === false ) {
19971				cacheURL = cacheURL.replace( rantiCache, "$1" );
19972				uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached;
19973			}
19974
19975			// Put hash and anti-cache on the URL that will be requested (gh-1732)
19976			s.url = cacheURL + uncached;
19977
19978		// Change '%20' to '+' if this is encoded form body content (gh-2658)
19979		} else if ( s.data && s.processData &&
19980			( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) {
19981			s.data = s.data.replace( r20, "+" );
19982		}
19983
19984		// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
19985		if ( s.ifModified ) {
19986			if ( jQuery.lastModified[ cacheURL ] ) {
19987				jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
19988			}
19989			if ( jQuery.etag[ cacheURL ] ) {
19990				jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
19991			}
19992		}
19993
19994		// Set the correct header, if data is being sent
19995		if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
19996			jqXHR.setRequestHeader( "Content-Type", s.contentType );
19997		}
19998
19999		// Set the Accepts header for the server, depending on the dataType
20000		jqXHR.setRequestHeader(
20001			"Accept",
20002			s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?
20003				s.accepts[ s.dataTypes[ 0 ] ] +
20004					( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
20005				s.accepts[ "*" ]
20006		);
20007
20008		// Check for headers option
20009		for ( i in s.headers ) {
20010			jqXHR.setRequestHeader( i, s.headers[ i ] );
20011		}
20012
20013		// Allow custom headers/mimetypes and early abort
20014		if ( s.beforeSend &&
20015			( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {
20016
20017			// Abort if not done already and return
20018			return jqXHR.abort();
20019		}
20020
20021		// Aborting is no longer a cancellation
20022		strAbort = "abort";
20023
20024		// Install callbacks on deferreds
20025		completeDeferred.add( s.complete );
20026		jqXHR.done( s.success );
20027		jqXHR.fail( s.error );
20028
20029		// Get transport
20030		transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
20031
20032		// If no transport, we auto-abort
20033		if ( !transport ) {
20034			done( -1, "No Transport" );
20035		} else {
20036			jqXHR.readyState = 1;
20037
20038			// Send global event
20039			if ( fireGlobals ) {
20040				globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
20041			}
20042
20043			// If request was aborted inside ajaxSend, stop there
20044			if ( completed ) {
20045				return jqXHR;
20046			}
20047
20048			// Timeout
20049			if ( s.async && s.timeout > 0 ) {
20050				timeoutTimer = window.setTimeout( function() {
20051					jqXHR.abort( "timeout" );
20052				}, s.timeout );
20053			}
20054
20055			try {
20056				completed = false;
20057				transport.send( requestHeaders, done );
20058			} catch ( e ) {
20059
20060				// Rethrow post-completion exceptions
20061				if ( completed ) {
20062					throw e;
20063				}
20064
20065				// Propagate others as results
20066				done( -1, e );
20067			}
20068		}
20069
20070		// Callback for when everything is done
20071		function done( status, nativeStatusText, responses, headers ) {
20072			var isSuccess, success, error, response, modified,
20073				statusText = nativeStatusText;
20074
20075			// Ignore repeat invocations
20076			if ( completed ) {
20077				return;
20078			}
20079
20080			completed = true;
20081
20082			// Clear timeout if it exists
20083			if ( timeoutTimer ) {
20084				window.clearTimeout( timeoutTimer );
20085			}
20086
20087			// Dereference transport for early garbage collection
20088			// (no matter how long the jqXHR object will be used)
20089			transport = undefined;
20090
20091			// Cache response headers
20092			responseHeadersString = headers || "";
20093
20094			// Set readyState
20095			jqXHR.readyState = status > 0 ? 4 : 0;
20096
20097			// Determine if successful
20098			isSuccess = status >= 200 && status < 300 || status === 304;
20099
20100			// Get response data
20101			if ( responses ) {
20102				response = ajaxHandleResponses( s, jqXHR, responses );
20103			}
20104
20105			// Convert no matter what (that way responseXXX fields are always set)
20106			response = ajaxConvert( s, response, jqXHR, isSuccess );
20107
20108			// If successful, handle type chaining
20109			if ( isSuccess ) {
20110
20111				// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
20112				if ( s.ifModified ) {
20113					modified = jqXHR.getResponseHeader( "Last-Modified" );
20114					if ( modified ) {
20115						jQuery.lastModified[ cacheURL ] = modified;
20116					}
20117					modified = jqXHR.getResponseHeader( "etag" );
20118					if ( modified ) {
20119						jQuery.etag[ cacheURL ] = modified;
20120					}
20121				}
20122
20123				// if no content
20124				if ( status === 204 || s.type === "HEAD" ) {
20125					statusText = "nocontent";
20126
20127				// if not modified
20128				} else if ( status === 304 ) {
20129					statusText = "notmodified";
20130
20131				// If we have data, let's convert it
20132				} else {
20133					statusText = response.state;
20134					success = response.data;
20135					error = response.error;
20136					isSuccess = !error;
20137				}
20138			} else {
20139
20140				// Extract error from statusText and normalize for non-aborts
20141				error = statusText;
20142				if ( status || !statusText ) {
20143					statusText = "error";
20144					if ( status < 0 ) {
20145						status = 0;
20146					}
20147				}
20148			}
20149
20150			// Set data for the fake xhr object
20151			jqXHR.status = status;
20152			jqXHR.statusText = ( nativeStatusText || statusText ) + "";
20153
20154			// Success/Error
20155			if ( isSuccess ) {
20156				deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
20157			} else {
20158				deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
20159			}
20160
20161			// Status-dependent callbacks
20162			jqXHR.statusCode( statusCode );
20163			statusCode = undefined;
20164
20165			if ( fireGlobals ) {
20166				globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
20167					[ jqXHR, s, isSuccess ? success : error ] );
20168			}
20169
20170			// Complete
20171			completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
20172
20173			if ( fireGlobals ) {
20174				globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
20175
20176				// Handle the global AJAX counter
20177				if ( !( --jQuery.active ) ) {
20178					jQuery.event.trigger( "ajaxStop" );
20179				}
20180			}
20181		}
20182
20183		return jqXHR;
20184	},
20185
20186	getJSON: function( url, data, callback ) {
20187		return jQuery.get( url, data, callback, "json" );
20188	},
20189
20190	getScript: function( url, callback ) {
20191		return jQuery.get( url, undefined, callback, "script" );
20192	}
20193} );
20194
20195jQuery.each( [ "get", "post" ], function( i, method ) {
20196	jQuery[ method ] = function( url, data, callback, type ) {
20197
20198		// Shift arguments if data argument was omitted
20199		if ( isFunction( data ) ) {
20200			type = type || callback;
20201			callback = data;
20202			data = undefined;
20203		}
20204
20205		// The url can be an options object (which then must have .url)
20206		return jQuery.ajax( jQuery.extend( {
20207			url: url,
20208			type: method,
20209			dataType: type,
20210			data: data,
20211			success: callback
20212		}, jQuery.isPlainObject( url ) && url ) );
20213	};
20214} );
20215
20216
20217jQuery._evalUrl = function( url ) {
20218	return jQuery.ajax( {
20219		url: url,
20220
20221		// Make this explicit, since user can override this through ajaxSetup (#11264)
20222		type: "GET",
20223		dataType: "script",
20224		cache: true,
20225		async: false,
20226		global: false,
20227		"throws": true
20228	} );
20229};
20230
20231
20232jQuery.fn.extend( {
20233	wrapAll: function( html ) {
20234		var wrap;
20235
20236		if ( this[ 0 ] ) {
20237			if ( isFunction( html ) ) {
20238				html = html.call( this[ 0 ] );
20239			}
20240
20241			// The elements to wrap the target around
20242			wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
20243
20244			if ( this[ 0 ].parentNode ) {
20245				wrap.insertBefore( this[ 0 ] );
20246			}
20247
20248			wrap.map( function() {
20249				var elem = this;
20250
20251				while ( elem.firstElementChild ) {
20252					elem = elem.firstElementChild;
20253				}
20254
20255				return elem;
20256			} ).append( this );
20257		}
20258
20259		return this;
20260	},
20261
20262	wrapInner: function( html ) {
20263		if ( isFunction( html ) ) {
20264			return this.each( function( i ) {
20265				jQuery( this ).wrapInner( html.call( this, i ) );
20266			} );
20267		}
20268
20269		return this.each( function() {
20270			var self = jQuery( this ),
20271				contents = self.contents();
20272
20273			if ( contents.length ) {
20274				contents.wrapAll( html );
20275
20276			} else {
20277				self.append( html );
20278			}
20279		} );
20280	},
20281
20282	wrap: function( html ) {
20283		var htmlIsFunction = isFunction( html );
20284
20285		return this.each( function( i ) {
20286			jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );
20287		} );
20288	},
20289
20290	unwrap: function( selector ) {
20291		this.parent( selector ).not( "body" ).each( function() {
20292			jQuery( this ).replaceWith( this.childNodes );
20293		} );
20294		return this;
20295	}
20296} );
20297
20298
20299jQuery.expr.pseudos.hidden = function( elem ) {
20300	return !jQuery.expr.pseudos.visible( elem );
20301};
20302jQuery.expr.pseudos.visible = function( elem ) {
20303	return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );
20304};
20305
20306
20307
20308
20309jQuery.ajaxSettings.xhr = function() {
20310	try {
20311		return new window.XMLHttpRequest();
20312	} catch ( e ) {}
20313};
20314
20315var xhrSuccessStatus = {
20316
20317		// File protocol always yields status code 0, assume 200
20318		0: 200,
20319
20320		// Support: IE <=9 only
20321		// #1450: sometimes IE returns 1223 when it should be 204
20322		1223: 204
20323	},
20324	xhrSupported = jQuery.ajaxSettings.xhr();
20325
20326support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
20327support.ajax = xhrSupported = !!xhrSupported;
20328
20329jQuery.ajaxTransport( function( options ) {
20330	var callback, errorCallback;
20331
20332	// Cross domain only allowed if supported through XMLHttpRequest
20333	if ( support.cors || xhrSupported && !options.crossDomain ) {
20334		return {
20335			send: function( headers, complete ) {
20336				var i,
20337					xhr = options.xhr();
20338
20339				xhr.open(
20340					options.type,
20341					options.url,
20342					options.async,
20343					options.username,
20344					options.password
20345				);
20346
20347				// Apply custom fields if provided
20348				if ( options.xhrFields ) {
20349					for ( i in options.xhrFields ) {
20350						xhr[ i ] = options.xhrFields[ i ];
20351					}
20352				}
20353
20354				// Override mime type if needed
20355				if ( options.mimeType && xhr.overrideMimeType ) {
20356					xhr.overrideMimeType( options.mimeType );
20357				}
20358
20359				// X-Requested-With header
20360				// For cross-domain requests, seeing as conditions for a preflight are
20361				// akin to a jigsaw puzzle, we simply never set it to be sure.
20362				// (it can always be set on a per-request basis or even using ajaxSetup)
20363				// For same-domain requests, won't change header if already provided.
20364				if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) {
20365					headers[ "X-Requested-With" ] = "XMLHttpRequest";
20366				}
20367
20368				// Set headers
20369				for ( i in headers ) {
20370					xhr.setRequestHeader( i, headers[ i ] );
20371				}
20372
20373				// Callback
20374				callback = function( type ) {
20375					return function() {
20376						if ( callback ) {
20377							callback = errorCallback = xhr.onload =
20378								xhr.onerror = xhr.onabort = xhr.ontimeout =
20379									xhr.onreadystatechange = null;
20380
20381							if ( type === "abort" ) {
20382								xhr.abort();
20383							} else if ( type === "error" ) {
20384
20385								// Support: IE <=9 only
20386								// On a manual native abort, IE9 throws
20387								// errors on any property access that is not readyState
20388								if ( typeof xhr.status !== "number" ) {
20389									complete( 0, "error" );
20390								} else {
20391									complete(
20392
20393										// File: protocol always yields status 0; see #8605, #14207
20394										xhr.status,
20395										xhr.statusText
20396									);
20397								}
20398							} else {
20399								complete(
20400									xhrSuccessStatus[ xhr.status ] || xhr.status,
20401									xhr.statusText,
20402
20403									// Support: IE <=9 only
20404									// IE9 has no XHR2 but throws on binary (trac-11426)
20405									// For XHR2 non-text, let the caller handle it (gh-2498)
20406									( xhr.responseType || "text" ) !== "text"  ||
20407									typeof xhr.responseText !== "string" ?
20408										{ binary: xhr.response } :
20409										{ text: xhr.responseText },
20410									xhr.getAllResponseHeaders()
20411								);
20412							}
20413						}
20414					};
20415				};
20416
20417				// Listen to events
20418				xhr.onload = callback();
20419				errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" );
20420
20421				// Support: IE 9 only
20422				// Use onreadystatechange to replace onabort
20423				// to handle uncaught aborts
20424				if ( xhr.onabort !== undefined ) {
20425					xhr.onabort = errorCallback;
20426				} else {
20427					xhr.onreadystatechange = function() {
20428
20429						// Check readyState before timeout as it changes
20430						if ( xhr.readyState === 4 ) {
20431
20432							// Allow onerror to be called first,
20433							// but that will not handle a native abort
20434							// Also, save errorCallback to a variable
20435							// as xhr.onerror cannot be accessed
20436							window.setTimeout( function() {
20437								if ( callback ) {
20438									errorCallback();
20439								}
20440							} );
20441						}
20442					};
20443				}
20444
20445				// Create the abort callback
20446				callback = callback( "abort" );
20447
20448				try {
20449
20450					// Do send the request (this may raise an exception)
20451					xhr.send( options.hasContent && options.data || null );
20452				} catch ( e ) {
20453
20454					// #14683: Only rethrow if this hasn't been notified as an error yet
20455					if ( callback ) {
20456						throw e;
20457					}
20458				}
20459			},
20460
20461			abort: function() {
20462				if ( callback ) {
20463					callback();
20464				}
20465			}
20466		};
20467	}
20468} );
20469
20470
20471
20472
20473// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)
20474jQuery.ajaxPrefilter( function( s ) {
20475	if ( s.crossDomain ) {
20476		s.contents.script = false;
20477	}
20478} );
20479
20480// Install script dataType
20481jQuery.ajaxSetup( {
20482	accepts: {
20483		script: "text/javascript, application/javascript, " +
20484			"application/ecmascript, application/x-ecmascript"
20485	},
20486	contents: {
20487		script: /\b(?:java|ecma)script\b/
20488	},
20489	converters: {
20490		"text script": function( text ) {
20491			jQuery.globalEval( text );
20492			return text;
20493		}
20494	}
20495} );
20496
20497// Handle cache's special case and crossDomain
20498jQuery.ajaxPrefilter( "script", function( s ) {
20499	if ( s.cache === undefined ) {
20500		s.cache = false;
20501	}
20502	if ( s.crossDomain ) {
20503		s.type = "GET";
20504	}
20505} );
20506
20507// Bind script tag hack transport
20508jQuery.ajaxTransport( "script", function( s ) {
20509
20510	// This transport only deals with cross domain requests
20511	if ( s.crossDomain ) {
20512		var script, callback;
20513		return {
20514			send: function( _, complete ) {
20515				script = jQuery( "<script>" ).prop( {
20516					charset: s.scriptCharset,
20517					src: s.url
20518				} ).on(
20519					"load error",
20520					callback = function( evt ) {
20521						script.remove();
20522						callback = null;
20523						if ( evt ) {
20524							complete( evt.type === "error" ? 404 : 200, evt.type );
20525						}
20526					}
20527				);
20528
20529				// Use native DOM manipulation to avoid our domManip AJAX trickery
20530				document.head.appendChild( script[ 0 ] );
20531			},
20532			abort: function() {
20533				if ( callback ) {
20534					callback();
20535				}
20536			}
20537		};
20538	}
20539} );
20540
20541
20542
20543
20544var oldCallbacks = [],
20545	rjsonp = /(=)\?(?=&|$)|\?\?/;
20546
20547// Default jsonp settings
20548jQuery.ajaxSetup( {
20549	jsonp: "callback",
20550	jsonpCallback: function() {
20551		var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
20552		this[ callback ] = true;
20553		return callback;
20554	}
20555} );
20556
20557// Detect, normalize options and install callbacks for jsonp requests
20558jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
20559
20560	var callbackName, overwritten, responseContainer,
20561		jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
20562			"url" :
20563			typeof s.data === "string" &&
20564				( s.contentType || "" )
20565					.indexOf( "application/x-www-form-urlencoded" ) === 0 &&
20566				rjsonp.test( s.data ) && "data"
20567		);
20568
20569	// Handle iff the expected data type is "jsonp" or we have a parameter to set
20570	if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
20571
20572		// Get callback name, remembering preexisting value associated with it
20573		callbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?
20574			s.jsonpCallback() :
20575			s.jsonpCallback;
20576
20577		// Insert callback into url or form data
20578		if ( jsonProp ) {
20579			s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
20580		} else if ( s.jsonp !== false ) {
20581			s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
20582		}
20583
20584		// Use data converter to retrieve json after script execution
20585		s.converters[ "script json" ] = function() {
20586			if ( !responseContainer ) {
20587				jQuery.error( callbackName + " was not called" );
20588			}
20589			return responseContainer[ 0 ];
20590		};
20591
20592		// Force json dataType
20593		s.dataTypes[ 0 ] = "json";
20594
20595		// Install callback
20596		overwritten = window[ callbackName ];
20597		window[ callbackName ] = function() {
20598			responseContainer = arguments;
20599		};
20600
20601		// Clean-up function (fires after converters)
20602		jqXHR.always( function() {
20603
20604			// If previous value didn't exist - remove it
20605			if ( overwritten === undefined ) {
20606				jQuery( window ).removeProp( callbackName );
20607
20608			// Otherwise restore preexisting value
20609			} else {
20610				window[ callbackName ] = overwritten;
20611			}
20612
20613			// Save back as free
20614			if ( s[ callbackName ] ) {
20615
20616				// Make sure that re-using the options doesn't screw things around
20617				s.jsonpCallback = originalSettings.jsonpCallback;
20618
20619				// Save the callback name for future use
20620				oldCallbacks.push( callbackName );
20621			}
20622
20623			// Call if it was a function and we have a response
20624			if ( responseContainer && isFunction( overwritten ) ) {
20625				overwritten( responseContainer[ 0 ] );
20626			}
20627
20628			responseContainer = overwritten = undefined;
20629		} );
20630
20631		// Delegate to script
20632		return "script";
20633	}
20634} );
20635
20636
20637
20638
20639// Support: Safari 8 only
20640// In Safari 8 documents created via document.implementation.createHTMLDocument
20641// collapse sibling forms: the second one becomes a child of the first one.
20642// Because of that, this security measure has to be disabled in Safari 8.
20643// https://bugs.webkit.org/show_bug.cgi?id=137337
20644support.createHTMLDocument = ( function() {
20645	var body = document.implementation.createHTMLDocument( "" ).body;
20646	body.innerHTML = "<form></form><form></form>";
20647	return body.childNodes.length === 2;
20648} )();
20649
20650
20651// Argument "data" should be string of html
20652// context (optional): If specified, the fragment will be created in this context,
20653// defaults to document
20654// keepScripts (optional): If true, will include scripts passed in the html string
20655jQuery.parseHTML = function( data, context, keepScripts ) {
20656	if ( typeof data !== "string" ) {
20657		return [];
20658	}
20659	if ( typeof context === "boolean" ) {
20660		keepScripts = context;
20661		context = false;
20662	}
20663
20664	var base, parsed, scripts;
20665
20666	if ( !context ) {
20667
20668		// Stop scripts or inline event handlers from being executed immediately
20669		// by using document.implementation
20670		if ( support.createHTMLDocument ) {
20671			context = document.implementation.createHTMLDocument( "" );
20672
20673			// Set the base href for the created document
20674			// so any parsed elements with URLs
20675			// are based on the document's URL (gh-2965)
20676			base = context.createElement( "base" );
20677			base.href = document.location.href;
20678			context.head.appendChild( base );
20679		} else {
20680			context = document;
20681		}
20682	}
20683
20684	parsed = rsingleTag.exec( data );
20685	scripts = !keepScripts && [];
20686
20687	// Single tag
20688	if ( parsed ) {
20689		return [ context.createElement( parsed[ 1 ] ) ];
20690	}
20691
20692	parsed = buildFragment( [ data ], context, scripts );
20693
20694	if ( scripts && scripts.length ) {
20695		jQuery( scripts ).remove();
20696	}
20697
20698	return jQuery.merge( [], parsed.childNodes );
20699};
20700
20701
20702/**
20703 * Load a url into a page
20704 */
20705jQuery.fn.load = function( url, params, callback ) {
20706	var selector, type, response,
20707		self = this,
20708		off = url.indexOf( " " );
20709
20710	if ( off > -1 ) {
20711		selector = stripAndCollapse( url.slice( off ) );
20712		url = url.slice( 0, off );
20713	}
20714
20715	// If it's a function
20716	if ( isFunction( params ) ) {
20717
20718		// We assume that it's the callback
20719		callback = params;
20720		params = undefined;
20721
20722	// Otherwise, build a param string
20723	} else if ( params && typeof params === "object" ) {
20724		type = "POST";
20725	}
20726
20727	// If we have elements to modify, make the request
20728	if ( self.length > 0 ) {
20729		jQuery.ajax( {
20730			url: url,
20731
20732			// If "type" variable is undefined, then "GET" method will be used.
20733			// Make value of this field explicit since
20734			// user can override it through ajaxSetup method
20735			type: type || "GET",
20736			dataType: "html",
20737			data: params
20738		} ).done( function( responseText ) {
20739
20740			// Save response for use in complete callback
20741			response = arguments;
20742
20743			self.html( selector ?
20744
20745				// If a selector was specified, locate the right elements in a dummy div
20746				// Exclude scripts to avoid IE 'Permission Denied' errors
20747				jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :
20748
20749				// Otherwise use the full result
20750				responseText );
20751
20752		// If the request succeeds, this function gets "data", "status", "jqXHR"
20753		// but they are ignored because response was set above.
20754		// If it fails, this function gets "jqXHR", "status", "error"
20755		} ).always( callback && function( jqXHR, status ) {
20756			self.each( function() {
20757				callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );
20758			} );
20759		} );
20760	}
20761
20762	return this;
20763};
20764
20765
20766
20767
20768// Attach a bunch of functions for handling common AJAX events
20769jQuery.each( [
20770	"ajaxStart",
20771	"ajaxStop",
20772	"ajaxComplete",
20773	"ajaxError",
20774	"ajaxSuccess",
20775	"ajaxSend"
20776], function( i, type ) {
20777	jQuery.fn[ type ] = function( fn ) {
20778		return this.on( type, fn );
20779	};
20780} );
20781
20782
20783
20784
20785jQuery.expr.pseudos.animated = function( elem ) {
20786	return jQuery.grep( jQuery.timers, function( fn ) {
20787		return elem === fn.elem;
20788	} ).length;
20789};
20790
20791
20792
20793
20794jQuery.offset = {
20795	setOffset: function( elem, options, i ) {
20796		var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
20797			position = jQuery.css( elem, "position" ),
20798			curElem = jQuery( elem ),
20799			props = {};
20800
20801		// Set position first, in-case top/left are set even on static elem
20802		if ( position === "static" ) {
20803			elem.style.position = "relative";
20804		}
20805
20806		curOffset = curElem.offset();
20807		curCSSTop = jQuery.css( elem, "top" );
20808		curCSSLeft = jQuery.css( elem, "left" );
20809		calculatePosition = ( position === "absolute" || position === "fixed" ) &&
20810			( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1;
20811
20812		// Need to be able to calculate position if either
20813		// top or left is auto and position is either absolute or fixed
20814		if ( calculatePosition ) {
20815			curPosition = curElem.position();
20816			curTop = curPosition.top;
20817			curLeft = curPosition.left;
20818
20819		} else {
20820			curTop = parseFloat( curCSSTop ) || 0;
20821			curLeft = parseFloat( curCSSLeft ) || 0;
20822		}
20823
20824		if ( isFunction( options ) ) {
20825
20826			// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)
20827			options = options.call( elem, i, jQuery.extend( {}, curOffset ) );
20828		}
20829
20830		if ( options.top != null ) {
20831			props.top = ( options.top - curOffset.top ) + curTop;
20832		}
20833		if ( options.left != null ) {
20834			props.left = ( options.left - curOffset.left ) + curLeft;
20835		}
20836
20837		if ( "using" in options ) {
20838			options.using.call( elem, props );
20839
20840		} else {
20841			curElem.css( props );
20842		}
20843	}
20844};
20845
20846jQuery.fn.extend( {
20847
20848	// offset() relates an element's border box to the document origin
20849	offset: function( options ) {
20850
20851		// Preserve chaining for setter
20852		if ( arguments.length ) {
20853			return options === undefined ?
20854				this :
20855				this.each( function( i ) {
20856					jQuery.offset.setOffset( this, options, i );
20857				} );
20858		}
20859
20860		var rect, win,
20861			elem = this[ 0 ];
20862
20863		if ( !elem ) {
20864			return;
20865		}
20866
20867		// Return zeros for disconnected and hidden (display: none) elements (gh-2310)
20868		// Support: IE <=11 only
20869		// Running getBoundingClientRect on a
20870		// disconnected node in IE throws an error
20871		if ( !elem.getClientRects().length ) {
20872			return { top: 0, left: 0 };
20873		}
20874
20875		// Get document-relative position by adding viewport scroll to viewport-relative gBCR
20876		rect = elem.getBoundingClientRect();
20877		win = elem.ownerDocument.defaultView;
20878		return {
20879			top: rect.top + win.pageYOffset,
20880			left: rect.left + win.pageXOffset
20881		};
20882	},
20883
20884	// position() relates an element's margin box to its offset parent's padding box
20885	// This corresponds to the behavior of CSS absolute positioning
20886	position: function() {
20887		if ( !this[ 0 ] ) {
20888			return;
20889		}
20890
20891		var offsetParent, offset, doc,
20892			elem = this[ 0 ],
20893			parentOffset = { top: 0, left: 0 };
20894
20895		// position:fixed elements are offset from the viewport, which itself always has zero offset
20896		if ( jQuery.css( elem, "position" ) === "fixed" ) {
20897
20898			// Assume position:fixed implies availability of getBoundingClientRect
20899			offset = elem.getBoundingClientRect();
20900
20901		} else {
20902			offset = this.offset();
20903
20904			// Account for the *real* offset parent, which can be the document or its root element
20905			// when a statically positioned element is identified
20906			doc = elem.ownerDocument;
20907			offsetParent = elem.offsetParent || doc.documentElement;
20908			while ( offsetParent &&
20909				( offsetParent === doc.body || offsetParent === doc.documentElement ) &&
20910				jQuery.css( offsetParent, "position" ) === "static" ) {
20911
20912				offsetParent = offsetParent.parentNode;
20913			}
20914			if ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {
20915
20916				// Incorporate borders into its offset, since they are outside its content origin
20917				parentOffset = jQuery( offsetParent ).offset();
20918				parentOffset.top += jQuery.css( offsetParent, "borderTopWidth", true );
20919				parentOffset.left += jQuery.css( offsetParent, "borderLeftWidth", true );
20920			}
20921		}
20922
20923		// Subtract parent offsets and element margins
20924		return {
20925			top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
20926			left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
20927		};
20928	},
20929
20930	// This method will return documentElement in the following cases:
20931	// 1) For the element inside the iframe without offsetParent, this method will return
20932	//    documentElement of the parent window
20933	// 2) For the hidden or detached element
20934	// 3) For body or html element, i.e. in case of the html node - it will return itself
20935	//
20936	// but those exceptions were never presented as a real life use-cases
20937	// and might be considered as more preferable results.
20938	//
20939	// This logic, however, is not guaranteed and can change at any point in the future
20940	offsetParent: function() {
20941		return this.map( function() {
20942			var offsetParent = this.offsetParent;
20943
20944			while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) {
20945				offsetParent = offsetParent.offsetParent;
20946			}
20947
20948			return offsetParent || documentElement;
20949		} );
20950	}
20951} );
20952
20953// Create scrollLeft and scrollTop methods
20954jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
20955	var top = "pageYOffset" === prop;
20956
20957	jQuery.fn[ method ] = function( val ) {
20958		return access( this, function( elem, method, val ) {
20959
20960			// Coalesce documents and windows
20961			var win;
20962			if ( isWindow( elem ) ) {
20963				win = elem;
20964			} else if ( elem.nodeType === 9 ) {
20965				win = elem.defaultView;
20966			}
20967
20968			if ( val === undefined ) {
20969				return win ? win[ prop ] : elem[ method ];
20970			}
20971
20972			if ( win ) {
20973				win.scrollTo(
20974					!top ? val : win.pageXOffset,
20975					top ? val : win.pageYOffset
20976				);
20977
20978			} else {
20979				elem[ method ] = val;
20980			}
20981		}, method, val, arguments.length );
20982	};
20983} );
20984
20985// Support: Safari <=7 - 9.1, Chrome <=37 - 49
20986// Add the top/left cssHooks using jQuery.fn.position
20987// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
20988// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347
20989// getComputedStyle returns percent when specified for top/left/bottom/right;
20990// rather than make the css module depend on the offset module, just check for it here
20991jQuery.each( [ "top", "left" ], function( i, prop ) {
20992	jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
20993		function( elem, computed ) {
20994			if ( computed ) {
20995				computed = curCSS( elem, prop );
20996
20997				// If curCSS returns percentage, fallback to offset
20998				return rnumnonpx.test( computed ) ?
20999					jQuery( elem ).position()[ prop ] + "px" :
21000					computed;
21001			}
21002		}
21003	);
21004} );
21005
21006
21007// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
21008jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
21009	jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name },
21010		function( defaultExtra, funcName ) {
21011
21012		// Margin is only for outerHeight, outerWidth
21013		jQuery.fn[ funcName ] = function( margin, value ) {
21014			var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
21015				extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
21016
21017			return access( this, function( elem, type, value ) {
21018				var doc;
21019
21020				if ( isWindow( elem ) ) {
21021
21022					// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)
21023					return funcName.indexOf( "outer" ) === 0 ?
21024						elem[ "inner" + name ] :
21025						elem.document.documentElement[ "client" + name ];
21026				}
21027
21028				// Get document width or height
21029				if ( elem.nodeType === 9 ) {
21030					doc = elem.documentElement;
21031
21032					// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
21033					// whichever is greatest
21034					return Math.max(
21035						elem.body[ "scroll" + name ], doc[ "scroll" + name ],
21036						elem.body[ "offset" + name ], doc[ "offset" + name ],
21037						doc[ "client" + name ]
21038					);
21039				}
21040
21041				return value === undefined ?
21042
21043					// Get width or height on the element, requesting but not forcing parseFloat
21044					jQuery.css( elem, type, extra ) :
21045
21046					// Set width or height on the element
21047					jQuery.style( elem, type, value, extra );
21048			}, type, chainable ? margin : undefined, chainable );
21049		};
21050	} );
21051} );
21052
21053
21054jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " +
21055	"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
21056	"change select submit keydown keypress keyup contextmenu" ).split( " " ),
21057	function( i, name ) {
21058
21059	// Handle event binding
21060	jQuery.fn[ name ] = function( data, fn ) {
21061		return arguments.length > 0 ?
21062			this.on( name, null, data, fn ) :
21063			this.trigger( name );
21064	};
21065} );
21066
21067jQuery.fn.extend( {
21068	hover: function( fnOver, fnOut ) {
21069		return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
21070	}
21071} );
21072
21073
21074
21075
21076jQuery.fn.extend( {
21077
21078	bind: function( types, data, fn ) {
21079		return this.on( types, null, data, fn );
21080	},
21081	unbind: function( types, fn ) {
21082		return this.off( types, null, fn );
21083	},
21084
21085	delegate: function( selector, types, data, fn ) {
21086		return this.on( types, selector, data, fn );
21087	},
21088	undelegate: function( selector, types, fn ) {
21089
21090		// ( namespace ) or ( selector, types [, fn] )
21091		return arguments.length === 1 ?
21092			this.off( selector, "**" ) :
21093			this.off( types, selector || "**", fn );
21094	}
21095} );
21096
21097// Bind a function to a context, optionally partially applying any
21098// arguments.
21099// jQuery.proxy is deprecated to promote standards (specifically Function#bind)
21100// However, it is not slated for removal any time soon
21101jQuery.proxy = function( fn, context ) {
21102	var tmp, args, proxy;
21103
21104	if ( typeof context === "string" ) {
21105		tmp = fn[ context ];
21106		context = fn;
21107		fn = tmp;
21108	}
21109
21110	// Quick check to determine if target is callable, in the spec
21111	// this throws a TypeError, but we will just return undefined.
21112	if ( !isFunction( fn ) ) {
21113		return undefined;
21114	}
21115
21116	// Simulated bind
21117	args = slice.call( arguments, 2 );
21118	proxy = function() {
21119		return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
21120	};
21121
21122	// Set the guid of unique handler to the same of original handler, so it can be removed
21123	proxy.guid = fn.guid = fn.guid || jQuery.guid++;
21124
21125	return proxy;
21126};
21127
21128jQuery.holdReady = function( hold ) {
21129	if ( hold ) {
21130		jQuery.readyWait++;
21131	} else {
21132		jQuery.ready( true );
21133	}
21134};
21135jQuery.isArray = Array.isArray;
21136jQuery.parseJSON = JSON.parse;
21137jQuery.nodeName = nodeName;
21138jQuery.isFunction = isFunction;
21139jQuery.isWindow = isWindow;
21140jQuery.camelCase = camelCase;
21141jQuery.type = toType;
21142
21143jQuery.now = Date.now;
21144
21145jQuery.isNumeric = function( obj ) {
21146
21147	// As of jQuery 3.0, isNumeric is limited to
21148	// strings and numbers (primitives or objects)
21149	// that can be coerced to finite numbers (gh-2662)
21150	var type = jQuery.type( obj );
21151	return ( type === "number" || type === "string" ) &&
21152
21153		// parseFloat NaNs numeric-cast false positives ("")
21154		// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
21155		// subtraction forces infinities to NaN
21156		!isNaN( obj - parseFloat( obj ) );
21157};
21158
21159
21160
21161
21162// Register as a named AMD module, since jQuery can be concatenated with other
21163// files that may use define, but not via a proper concatenation script that
21164// understands anonymous AMD modules. A named AMD is safest and most robust
21165// way to register. Lowercase jquery is used because AMD module names are
21166// derived from file names, and jQuery is normally delivered in a lowercase
21167// file name. Do this after creating the global so that if an AMD module wants
21168// to call noConflict to hide this version of jQuery, it will work.
21169
21170// Note that for maximum portability, libraries that are not jQuery should
21171// declare themselves as anonymous modules, and avoid setting a global if an
21172// AMD loader is present. jQuery is a special case. For more information, see
21173// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
21174
21175if ( true ) {
21176	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function() {
21177		return jQuery;
21178	}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
21179				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
21180}
21181
21182
21183
21184
21185var
21186
21187	// Map over jQuery in case of overwrite
21188	_jQuery = window.jQuery,
21189
21190	// Map over the $ in case of overwrite
21191	_$ = window.$;
21192
21193jQuery.noConflict = function( deep ) {
21194	if ( window.$ === jQuery ) {
21195		window.$ = _$;
21196	}
21197
21198	if ( deep && window.jQuery === jQuery ) {
21199		window.jQuery = _jQuery;
21200	}
21201
21202	return jQuery;
21203};
21204
21205// Expose jQuery and $ identifiers, even in AMD
21206// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
21207// and CommonJS for browser emulators (#13566)
21208if ( !noGlobal ) {
21209	window.jQuery = window.$ = jQuery;
21210}
21211
21212
21213
21214
21215return jQuery;
21216} );
21217
21218
21219/***/ }),
21220
vendor: 5,961 bytes, lines 21221-21408
21221/***/ "./node_modules/lazyload/lazyload.js":
21222/*!*******************************************!*\
21223  !*** ./node_modules/lazyload/lazyload.js ***!
21224  \*******************************************/
21225/*! no static exports found */
21226/***/ (function(module, exports, __webpack_require__) {
21227
21228/* WEBPACK VAR INJECTION */(function(global) {/*!
21229 * Lazy Load - JavaScript plugin for lazy loading images
21230 *
21231 * Copyright (c) 2007-2019 Mika Tuupola
21232 *
21233 * Licensed under the MIT license:
21234 *   http://www.opensource.org/licenses/mit-license.php
21235 *
21236 * Project home:
21237 *   https://appelsiini.net/projects/lazyload
21238 *
21239 * Version: 2.0.0-rc.2
21240 *
21241 */
21242
21243(function (root, factory) {
21244    if (true) {
21245        module.exports = factory(root);
21246    } else {}
21247}) (typeof global !== "undefined" ? global : this.window || this.global, function (root) {
21248
21249    "use strict";
21250
21251    if (true){
21252        root = window;
21253    }
21254
21255    const defaults = {
21256        src: "data-src",
21257        srcset: "data-srcset",
21258        selector: ".lazyload",
21259        root: null,
21260        rootMargin: "0px",
21261        threshold: 0
21262    };
21263
21264    /**
21265    * Merge two or more objects. Returns a new object.
21266    * @private
21267    * @param {Boolean}  deep     If true, do a deep (or recursive) merge [optional]
21268    * @param {Object}   objects  The objects to merge together
21269    * @returns {Object}          Merged values of defaults and options
21270    */
21271    const extend = function ()  {
21272
21273        let extended = {};
21274        let deep = false;
21275        let i = 0;
21276        let length = arguments.length;
21277
21278        /* Check if a deep merge */
21279        if (Object.prototype.toString.call(arguments[0]) === "[object Boolean]") {
21280            deep = arguments[0];
21281            i++;
21282        }
21283
21284        /* Merge the object into the extended object */
21285        let merge = function (obj) {
21286            for (let prop in obj) {
21287                if (Object.prototype.hasOwnProperty.call(obj, prop)) {
21288                    /* If deep merge and property is an object, merge properties */
21289                    if (deep && Object.prototype.toString.call(obj[prop]) === "[object Object]") {
21290                        extended[prop] = extend(true, extended[prop], obj[prop]);
21291                    } else {
21292                        extended[prop] = obj[prop];
21293                    }
21294                }
21295            }
21296        };
21297
21298        /* Loop through each object and conduct a merge */
21299        for (; i < length; i++) {
21300            let obj = arguments[i];
21301            merge(obj);
21302        }
21303
21304        return extended;
21305    };
21306
21307    function LazyLoad(images, options) {
21308        this.settings = extend(defaults, options || {});
21309        this.images = images || document.querySelectorAll(this.settings.selector);
21310        this.observer = null;
21311        this.init();
21312    }
21313
21314    LazyLoad.prototype = {
21315        init: function() {
21316
21317            /* Without observers load everything and bail out early. */
21318            if (!root.IntersectionObserver) {
21319                this.loadImages();
21320                return;
21321            }
21322
21323            let self = this;
21324            let observerConfig = {
21325                root: this.settings.root,
21326                rootMargin: this.settings.rootMargin,
21327                threshold: [this.settings.threshold]
21328            };
21329
21330            this.observer = new IntersectionObserver(function(entries) {
21331                Array.prototype.forEach.call(entries, function (entry) {
21332                    if (entry.isIntersecting) {
21333                        self.observer.unobserve(entry.target);
21334                        let src = entry.target.getAttribute(self.settings.src);
21335                        let srcset = entry.target.getAttribute(self.settings.srcset);
21336                        if ("img" === entry.target.tagName.toLowerCase()) {
21337                            if (src) {
21338                                entry.target.src = src;
21339                            }
21340                            if (srcset) {
21341                                entry.target.srcset = srcset;
21342                            }
21343                        } else {
21344                            entry.target.style.backgroundImage = "url(" + src + ")";
21345                        }
21346                    }
21347                });
21348            }, observerConfig);
21349
21350            Array.prototype.forEach.call(this.images, function (image) {
21351                self.observer.observe(image);
21352            });
21353        },
21354
21355        loadAndDestroy: function () {
21356            if (!this.settings) { return; }
21357            this.loadImages();
21358            this.destroy();
21359        },
21360
21361        loadImages: function () {
21362            if (!this.settings) { return; }
21363
21364            let self = this;
21365            Array.prototype.forEach.call(this.images, function (image) {
21366                let src = image.getAttribute(self.settings.src);
21367                let srcset = image.getAttribute(self.settings.srcset);
21368                if ("img" === image.tagName.toLowerCase()) {
21369                    if (src) {
21370                        image.src = src;
21371                    }
21372                    if (srcset) {
21373                        image.srcset = srcset;
21374                    }
21375                } else {
21376                    image.style.backgroundImage = "url('" + src + "')";
21377                }
21378            });
21379        },
21380
21381        destroy: function () {
21382            if (!this.settings) { return; }
21383            this.observer.disconnect();
21384            this.settings = null;
21385        }
21386    };
21387
21388    root.lazyload = function(images, options) {
21389        return new LazyLoad(images, options);
21390    };
21391
21392    if (root.jQuery) {
21393        const $ = root.jQuery;
21394        $.fn.lazyload = function (options) {
21395            options = options || {};
21396            options.attribute = options.attribute || "data-src";
21397            new LazyLoad($.makeArray(this), options);
21398            return this;
21399        };
21400    }
21401
21402    return LazyLoad;
21403});
21404
21405/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))
21406
21407/***/ }),
21408
vendor: 603 bytes, lines 21409-21427
21409/***/ "./node_modules/nodelist-foreach-polyfill/index.js":
21410/*!*********************************************************!*\
21411  !*** ./node_modules/nodelist-foreach-polyfill/index.js ***!
21412  \*********************************************************/
21413/*! no static exports found */
21414/***/ (function(module, exports) {
21415
21416if (window.NodeList && !NodeList.prototype.forEach) {
21417    NodeList.prototype.forEach = function (callback, thisArg) {
21418        thisArg = thisArg || window;
21419        for (var i = 0; i < this.length; i++) {
21420            callback.call(thisArg, this[i], i, this);
21421        }
21422    };
21423}
21424
21425
21426/***/ }),
21427
vendor: 7,136 bytes, lines 21428-21670
21428/***/ "./node_modules/object-fit-images/dist/ofi.common-js.js":
21429/*!**************************************************************!*\
21430  !*** ./node_modules/object-fit-images/dist/ofi.common-js.js ***!
21431  \**************************************************************/
21432/*! no static exports found */
21433/***/ (function(module, exports, __webpack_require__) {
21434
21435"use strict";
21436/*! npm.im/object-fit-images 3.2.3 */
21437
21438
21439var OFI = 'bfred-it:object-fit-images';
21440var propRegex = /(object-fit|object-position)\s*:\s*([-\w\s%]+)/g;
21441var testImg = typeof Image === 'undefined' ? {style: {'object-position': 1}} : new Image();
21442var supportsObjectFit = 'object-fit' in testImg.style;
21443var supportsObjectPosition = 'object-position' in testImg.style;
21444var supportsOFI = 'background-size' in testImg.style;
21445var supportsCurrentSrc = typeof testImg.currentSrc === 'string';
21446var nativeGetAttribute = testImg.getAttribute;
21447var nativeSetAttribute = testImg.setAttribute;
21448var autoModeEnabled = false;
21449
21450function createPlaceholder(w, h) {
21451	return ("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='" + w + "' height='" + h + "'%3E%3C/svg%3E");
21452}
21453
21454function polyfillCurrentSrc(el) {
21455	if (el.srcset && !supportsCurrentSrc && window.picturefill) {
21456		var pf = window.picturefill._;
21457		// parse srcset with picturefill where currentSrc isn't available
21458		if (!el[pf.ns] || !el[pf.ns].evaled) {
21459			// force synchronous srcset parsing
21460			pf.fillImg(el, {reselect: true});
21461		}
21462
21463		if (!el[pf.ns].curSrc) {
21464			// force picturefill to parse srcset
21465			el[pf.ns].supported = false;
21466			pf.fillImg(el, {reselect: true});
21467		}
21468
21469		// retrieve parsed currentSrc, if any
21470		el.currentSrc = el[pf.ns].curSrc || el.src;
21471	}
21472}
21473
21474function getStyle(el) {
21475	var style = getComputedStyle(el).fontFamily;
21476	var parsed;
21477	var props = {};
21478	while ((parsed = propRegex.exec(style)) !== null) {
21479		props[parsed[1]] = parsed[2];
21480	}
21481	return props;
21482}
21483
21484function setPlaceholder(img, width, height) {
21485	// Default: fill width, no height
21486	var placeholder = createPlaceholder(width || 1, height || 0);
21487
21488	// Only set placeholder if it's different
21489	if (nativeGetAttribute.call(img, 'src') !== placeholder) {
21490		nativeSetAttribute.call(img, 'src', placeholder);
21491	}
21492}
21493
21494function onImageReady(img, callback) {
21495	// naturalWidth is only available when the image headers are loaded,
21496	// this loop will poll it every 100ms.
21497	if (img.naturalWidth) {
21498		callback(img);
21499	} else {
21500		setTimeout(onImageReady, 100, img, callback);
21501	}
21502}
21503
21504function fixOne(el) {
21505	var style = getStyle(el);
21506	var ofi = el[OFI];
21507	style['object-fit'] = style['object-fit'] || 'fill'; // default value
21508
21509	// Avoid running where unnecessary, unless OFI had already done its deed
21510	if (!ofi.img) {
21511		// fill is the default behavior so no action is necessary
21512		if (style['object-fit'] === 'fill') {
21513			return;
21514		}
21515
21516		// Where object-fit is supported and object-position isn't (Safari < 10)
21517		if (
21518			!ofi.skipTest && // unless user wants to apply regardless of browser support
21519			supportsObjectFit && // if browser already supports object-fit
21520			!style['object-position'] // unless object-position is used
21521		) {
21522			return;
21523		}
21524	}
21525
21526	// keep a clone in memory while resetting the original to a blank
21527	if (!ofi.img) {
21528		ofi.img = new Image(el.width, el.height);
21529		ofi.img.srcset = nativeGetAttribute.call(el, "data-ofi-srcset") || el.srcset;
21530		ofi.img.src = nativeGetAttribute.call(el, "data-ofi-src") || el.src;
21531
21532		// preserve for any future cloneNode calls
21533		// https://github.com/bfred-it/object-fit-images/issues/53
21534		nativeSetAttribute.call(el, "data-ofi-src", el.src);
21535		if (el.srcset) {
21536			nativeSetAttribute.call(el, "data-ofi-srcset", el.srcset);
21537		}
21538
21539		setPlaceholder(el, el.naturalWidth || el.width, el.naturalHeight || el.height);
21540
21541		// remove srcset because it overrides src
21542		if (el.srcset) {
21543			el.srcset = '';
21544		}
21545		try {
21546			keepSrcUsable(el);
21547		} catch (err) {
21548			if (window.console) {
21549				console.warn('https://bit.ly/ofi-old-browser');
21550			}
21551		}
21552	}
21553
21554	polyfillCurrentSrc(ofi.img);
21555
21556	el.style.backgroundImage = "url(\"" + ((ofi.img.currentSrc || ofi.img.src).replace(/"/g, '\\"')) + "\")";
21557	el.style.backgroundPosition = style['object-position'] || 'center';
21558	el.style.backgroundRepeat = 'no-repeat';
21559	el.style.backgroundOrigin = 'content-box';
21560
21561	if (/scale-down/.test(style['object-fit'])) {
21562		onImageReady(ofi.img, function () {
21563			if (ofi.img.naturalWidth > el.width || ofi.img.naturalHeight > el.height) {
21564				el.style.backgroundSize = 'contain';
21565			} else {
21566				el.style.backgroundSize = 'auto';
21567			}
21568		});
21569	} else {
21570		el.style.backgroundSize = style['object-fit'].replace('none', 'auto').replace('fill', '100% 100%');
21571	}
21572
21573	onImageReady(ofi.img, function (img) {
21574		setPlaceholder(el, img.naturalWidth, img.naturalHeight);
21575	});
21576}
21577
21578function keepSrcUsable(el) {
21579	var descriptors = {
21580		get: function get(prop) {
21581			return el[OFI].img[prop ? prop : 'src'];
21582		},
21583		set: function set(value, prop) {
21584			el[OFI].img[prop ? prop : 'src'] = value;
21585			nativeSetAttribute.call(el, ("data-ofi-" + prop), value); // preserve for any future cloneNode
21586			fixOne(el);
21587			return value;
21588		}
21589	};
21590	Object.defineProperty(el, 'src', descriptors);
21591	Object.defineProperty(el, 'currentSrc', {
21592		get: function () { return descriptors.get('currentSrc'); }
21593	});
21594	Object.defineProperty(el, 'srcset', {
21595		get: function () { return descriptors.get('srcset'); },
21596		set: function (ss) { return descriptors.set(ss, 'srcset'); }
21597	});
21598}
21599
21600function hijackAttributes() {
21601	function getOfiImageMaybe(el, name) {
21602		return el[OFI] && el[OFI].img && (name === 'src' || name === 'srcset') ? el[OFI].img : el;
21603	}
21604	if (!supportsObjectPosition) {
21605		HTMLImageElement.prototype.getAttribute = function (name) {
21606			return nativeGetAttribute.call(getOfiImageMaybe(this, name), name);
21607		};
21608
21609		HTMLImageElement.prototype.setAttribute = function (name, value) {
21610			return nativeSetAttribute.call(getOfiImageMaybe(this, name), name, String(value));
21611		};
21612	}
21613}
21614
21615function fix(imgs, opts) {
21616	var startAutoMode = !autoModeEnabled && !imgs;
21617	opts = opts || {};
21618	imgs = imgs || 'img';
21619
21620	if ((supportsObjectPosition && !opts.skipTest) || !supportsOFI) {
21621		return false;
21622	}
21623
21624	// use imgs as a selector or just select all images
21625	if (imgs === 'img') {
21626		imgs = document.getElementsByTagName('img');
21627	} else if (typeof imgs === 'string') {
21628		imgs = document.querySelectorAll(imgs);
21629	} else if (!('length' in imgs)) {
21630		imgs = [imgs];
21631	}
21632
21633	// apply fix to all
21634	for (var i = 0; i < imgs.length; i++) {
21635		imgs[i][OFI] = imgs[i][OFI] || {
21636			skipTest: opts.skipTest
21637		};
21638		fixOne(imgs[i]);
21639	}
21640
21641	if (startAutoMode) {
21642		document.body.addEventListener('load', function (e) {
21643			if (e.target.tagName === 'IMG') {
21644				fix(e.target, {
21645					skipTest: opts.skipTest
21646				});
21647			}
21648		}, true);
21649		autoModeEnabled = true;
21650		imgs = 'img'; // reset to a generic selector for watchMQ
21651	}
21652
21653	// if requested, watch media queries for object-fit change
21654	if (opts.watchMQ) {
21655		window.addEventListener('resize', fix.bind(null, imgs, {
21656			skipTest: opts.skipTest
21657		}));
21658	}
21659}
21660
21661fix.supportsObjectFit = supportsObjectFit;
21662fix.supportsObjectPosition = supportsObjectPosition;
21663
21664hijackAttributes();
21665
21666module.exports = fix;
21667
21668
21669/***/ }),
21670
vendor: 36,395 bytes, lines 21671-23024
21671/***/ "./node_modules/perfect-scrollbar/dist/perfect-scrollbar.esm.js":
21672/*!**********************************************************************!*\
21673  !*** ./node_modules/perfect-scrollbar/dist/perfect-scrollbar.esm.js ***!
21674  \**********************************************************************/
21675/*! exports provided: default */
21676/***/ (function(module, __webpack_exports__, __webpack_require__) {
21677
21678"use strict";
21679__webpack_require__.r(__webpack_exports__);
21680/*!
21681 * perfect-scrollbar v1.5.0
21682 * Copyright 2020 Hyunje Jun, MDBootstrap and Contributors
21683 * Licensed under MIT
21684 */
21685
21686function get(element) {
21687  return getComputedStyle(element);
21688}
21689
21690function set(element, obj) {
21691  for (var key in obj) {
21692    var val = obj[key];
21693    if (typeof val === 'number') {
21694      val = val + "px";
21695    }
21696    element.style[key] = val;
21697  }
21698  return element;
21699}
21700
21701function div(className) {
21702  var div = document.createElement('div');
21703  div.className = className;
21704  return div;
21705}
21706
21707var elMatches =
21708  typeof Element !== 'undefined' &&
21709  (Element.prototype.matches ||
21710    Element.prototype.webkitMatchesSelector ||
21711    Element.prototype.mozMatchesSelector ||
21712    Element.prototype.msMatchesSelector);
21713
21714function matches(element, query) {
21715  if (!elMatches) {
21716    throw new Error('No element matching method supported');
21717  }
21718
21719  return elMatches.call(element, query);
21720}
21721
21722function remove(element) {
21723  if (element.remove) {
21724    element.remove();
21725  } else {
21726    if (element.parentNode) {
21727      element.parentNode.removeChild(element);
21728    }
21729  }
21730}
21731
21732function queryChildren(element, selector) {
21733  return Array.prototype.filter.call(element.children, function (child) { return matches(child, selector); }
21734  );
21735}
21736
21737var cls = {
21738  main: 'ps',
21739  rtl: 'ps__rtl',
21740  element: {
21741    thumb: function (x) { return ("ps__thumb-" + x); },
21742    rail: function (x) { return ("ps__rail-" + x); },
21743    consuming: 'ps__child--consume',
21744  },
21745  state: {
21746    focus: 'ps--focus',
21747    clicking: 'ps--clicking',
21748    active: function (x) { return ("ps--active-" + x); },
21749    scrolling: function (x) { return ("ps--scrolling-" + x); },
21750  },
21751};
21752
21753/*
21754 * Helper methods
21755 */
21756var scrollingClassTimeout = { x: null, y: null };
21757
21758function addScrollingClass(i, x) {
21759  var classList = i.element.classList;
21760  var className = cls.state.scrolling(x);
21761
21762  if (classList.contains(className)) {
21763    clearTimeout(scrollingClassTimeout[x]);
21764  } else {
21765    classList.add(className);
21766  }
21767}
21768
21769function removeScrollingClass(i, x) {
21770  scrollingClassTimeout[x] = setTimeout(
21771    function () { return i.isAlive && i.element.classList.remove(cls.state.scrolling(x)); },
21772    i.settings.scrollingThreshold
21773  );
21774}
21775
21776function setScrollingClassInstantly(i, x) {
21777  addScrollingClass(i, x);
21778  removeScrollingClass(i, x);
21779}
21780
21781var EventElement = function EventElement(element) {
21782  this.element = element;
21783  this.handlers = {};
21784};
21785
21786var prototypeAccessors = { isEmpty: { configurable: true } };
21787
21788EventElement.prototype.bind = function bind (eventName, handler) {
21789  if (typeof this.handlers[eventName] === 'undefined') {
21790    this.handlers[eventName] = [];
21791  }
21792  this.handlers[eventName].push(handler);
21793  this.element.addEventListener(eventName, handler, false);
21794};
21795
21796EventElement.prototype.unbind = function unbind (eventName, target) {
21797    var this$1 = this;
21798
21799  this.handlers[eventName] = this.handlers[eventName].filter(function (handler) {
21800    if (target && handler !== target) {
21801      return true;
21802    }
21803    this$1.element.removeEventListener(eventName, handler, false);
21804    return false;
21805  });
21806};
21807
21808EventElement.prototype.unbindAll = function unbindAll () {
21809  for (var name in this.handlers) {
21810    this.unbind(name);
21811  }
21812};
21813
21814prototypeAccessors.isEmpty.get = function () {
21815    var this$1 = this;
21816
21817  return Object.keys(this.handlers).every(
21818    function (key) { return this$1.handlers[key].length === 0; }
21819  );
21820};
21821
21822Object.defineProperties( EventElement.prototype, prototypeAccessors );
21823
21824var EventManager = function EventManager() {
21825  this.eventElements = [];
21826};
21827
21828EventManager.prototype.eventElement = function eventElement (element) {
21829  var ee = this.eventElements.filter(function (ee) { return ee.element === element; })[0];
21830  if (!ee) {
21831    ee = new EventElement(element);
21832    this.eventElements.push(ee);
21833  }
21834  return ee;
21835};
21836
21837EventManager.prototype.bind = function bind (element, eventName, handler) {
21838  this.eventElement(element).bind(eventName, handler);
21839};
21840
21841EventManager.prototype.unbind = function unbind (element, eventName, handler) {
21842  var ee = this.eventElement(element);
21843  ee.unbind(eventName, handler);
21844
21845  if (ee.isEmpty) {
21846    // remove
21847    this.eventElements.splice(this.eventElements.indexOf(ee), 1);
21848  }
21849};
21850
21851EventManager.prototype.unbindAll = function unbindAll () {
21852  this.eventElements.forEach(function (e) { return e.unbindAll(); });
21853  this.eventElements = [];
21854};
21855
21856EventManager.prototype.once = function once (element, eventName, handler) {
21857  var ee = this.eventElement(element);
21858  var onceHandler = function (evt) {
21859    ee.unbind(eventName, onceHandler);
21860    handler(evt);
21861  };
21862  ee.bind(eventName, onceHandler);
21863};
21864
21865function createEvent(name) {
21866  if (typeof window.CustomEvent === 'function') {
21867    return new CustomEvent(name);
21868  } else {
21869    var evt = document.createEvent('CustomEvent');
21870    evt.initCustomEvent(name, false, false, undefined);
21871    return evt;
21872  }
21873}
21874
21875function processScrollDiff(
21876  i,
21877  axis,
21878  diff,
21879  useScrollingClass,
21880  forceFireReachEvent
21881) {
21882  if ( useScrollingClass === void 0 ) useScrollingClass = true;
21883  if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false;
21884
21885  var fields;
21886  if (axis === 'top') {
21887    fields = [
21888      'contentHeight',
21889      'containerHeight',
21890      'scrollTop',
21891      'y',
21892      'up',
21893      'down' ];
21894  } else if (axis === 'left') {
21895    fields = [
21896      'contentWidth',
21897      'containerWidth',
21898      'scrollLeft',
21899      'x',
21900      'left',
21901      'right' ];
21902  } else {
21903    throw new Error('A proper axis should be provided');
21904  }
21905
21906  processScrollDiff$1(i, diff, fields, useScrollingClass, forceFireReachEvent);
21907}
21908
21909function processScrollDiff$1(
21910  i,
21911  diff,
21912  ref,
21913  useScrollingClass,
21914  forceFireReachEvent
21915) {
21916  var contentHeight = ref[0];
21917  var containerHeight = ref[1];
21918  var scrollTop = ref[2];
21919  var y = ref[3];
21920  var up = ref[4];
21921  var down = ref[5];
21922  if ( useScrollingClass === void 0 ) useScrollingClass = true;
21923  if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false;
21924
21925  var element = i.element;
21926
21927  // reset reach
21928  i.reach[y] = null;
21929
21930  // 1 for subpixel rounding
21931  if (element[scrollTop] < 1) {
21932    i.reach[y] = 'start';
21933  }
21934
21935  // 1 for subpixel rounding
21936  if (element[scrollTop] > i[contentHeight] - i[containerHeight] - 1) {
21937    i.reach[y] = 'end';
21938  }
21939
21940  if (diff) {
21941    element.dispatchEvent(createEvent(("ps-scroll-" + y)));
21942
21943    if (diff < 0) {
21944      element.dispatchEvent(createEvent(("ps-scroll-" + up)));
21945    } else if (diff > 0) {
21946      element.dispatchEvent(createEvent(("ps-scroll-" + down)));
21947    }
21948
21949    if (useScrollingClass) {
21950      setScrollingClassInstantly(i, y);
21951    }
21952  }
21953
21954  if (i.reach[y] && (diff || forceFireReachEvent)) {
21955    element.dispatchEvent(createEvent(("ps-" + y + "-reach-" + (i.reach[y]))));
21956  }
21957}
21958
21959function toInt(x) {
21960  return parseInt(x, 10) || 0;
21961}
21962
21963function isEditable(el) {
21964  return (
21965    matches(el, 'input,[contenteditable]') ||
21966    matches(el, 'select,[contenteditable]') ||
21967    matches(el, 'textarea,[contenteditable]') ||
21968    matches(el, 'button,[contenteditable]')
21969  );
21970}
21971
21972function outerWidth(element) {
21973  var styles = get(element);
21974  return (
21975    toInt(styles.width) +
21976    toInt(styles.paddingLeft) +
21977    toInt(styles.paddingRight) +
21978    toInt(styles.borderLeftWidth) +
21979    toInt(styles.borderRightWidth)
21980  );
21981}
21982
21983var env = {
21984  isWebKit:
21985    typeof document !== 'undefined' &&
21986    'WebkitAppearance' in document.documentElement.style,
21987  supportsTouch:
21988    typeof window !== 'undefined' &&
21989    ('ontouchstart' in window ||
21990      ('maxTouchPoints' in window.navigator &&
21991        window.navigator.maxTouchPoints > 0) ||
21992      (window.DocumentTouch && document instanceof window.DocumentTouch)),
21993  supportsIePointer:
21994    typeof navigator !== 'undefined' && navigator.msMaxTouchPoints,
21995  isChrome:
21996    typeof navigator !== 'undefined' &&
21997    /Chrome/i.test(navigator && navigator.userAgent),
21998};
21999
22000function updateGeometry(i) {
22001  var element = i.element;
22002  var roundedScrollTop = Math.floor(element.scrollTop);
22003  var rect = element.getBoundingClientRect();
22004
22005  i.containerWidth = Math.ceil(rect.width);
22006  i.containerHeight = Math.ceil(rect.height);
22007  i.contentWidth = element.scrollWidth;
22008  i.contentHeight = element.scrollHeight;
22009
22010  if (!element.contains(i.scrollbarXRail)) {
22011    // clean up and append
22012    queryChildren(element, cls.element.rail('x')).forEach(function (el) { return remove(el); }
22013    );
22014    element.appendChild(i.scrollbarXRail);
22015  }
22016  if (!element.contains(i.scrollbarYRail)) {
22017    // clean up and append
22018    queryChildren(element, cls.element.rail('y')).forEach(function (el) { return remove(el); }
22019    );
22020    element.appendChild(i.scrollbarYRail);
22021  }
22022
22023  if (
22024    !i.settings.suppressScrollX &&
22025    i.containerWidth + i.settings.scrollXMarginOffset < i.contentWidth
22026  ) {
22027    i.scrollbarXActive = true;
22028    i.railXWidth = i.containerWidth - i.railXMarginWidth;
22029    i.railXRatio = i.containerWidth / i.railXWidth;
22030    i.scrollbarXWidth = getThumbSize(
22031      i,
22032      toInt((i.railXWidth * i.containerWidth) / i.contentWidth)
22033    );
22034    i.scrollbarXLeft = toInt(
22035      ((i.negativeScrollAdjustment + element.scrollLeft) *
22036        (i.railXWidth - i.scrollbarXWidth)) /
22037        (i.contentWidth - i.containerWidth)
22038    );
22039  } else {
22040    i.scrollbarXActive = false;
22041  }
22042
22043  if (
22044    !i.settings.suppressScrollY &&
22045    i.containerHeight + i.settings.scrollYMarginOffset < i.contentHeight
22046  ) {
22047    i.scrollbarYActive = true;
22048    i.railYHeight = i.containerHeight - i.railYMarginHeight;
22049    i.railYRatio = i.containerHeight / i.railYHeight;
22050    i.scrollbarYHeight = getThumbSize(
22051      i,
22052      toInt((i.railYHeight * i.containerHeight) / i.contentHeight)
22053    );
22054    i.scrollbarYTop = toInt(
22055      (roundedScrollTop * (i.railYHeight - i.scrollbarYHeight)) /
22056        (i.contentHeight - i.containerHeight)
22057    );
22058  } else {
22059    i.scrollbarYActive = false;
22060  }
22061
22062  if (i.scrollbarXLeft >= i.railXWidth - i.scrollbarXWidth) {
22063    i.scrollbarXLeft = i.railXWidth - i.scrollbarXWidth;
22064  }
22065  if (i.scrollbarYTop >= i.railYHeight - i.scrollbarYHeight) {
22066    i.scrollbarYTop = i.railYHeight - i.scrollbarYHeight;
22067  }
22068
22069  updateCss(element, i);
22070
22071  if (i.scrollbarXActive) {
22072    element.classList.add(cls.state.active('x'));
22073  } else {
22074    element.classList.remove(cls.state.active('x'));
22075    i.scrollbarXWidth = 0;
22076    i.scrollbarXLeft = 0;
22077    element.scrollLeft = i.isRtl === true ? i.contentWidth : 0;
22078  }
22079  if (i.scrollbarYActive) {
22080    element.classList.add(cls.state.active('y'));
22081  } else {
22082    element.classList.remove(cls.state.active('y'));
22083    i.scrollbarYHeight = 0;
22084    i.scrollbarYTop = 0;
22085    element.scrollTop = 0;
22086  }
22087}
22088
22089function getThumbSize(i, thumbSize) {
22090  if (i.settings.minScrollbarLength) {
22091    thumbSize = Math.max(thumbSize, i.settings.minScrollbarLength);
22092  }
22093  if (i.settings.maxScrollbarLength) {
22094    thumbSize = Math.min(thumbSize, i.settings.maxScrollbarLength);
22095  }
22096  return thumbSize;
22097}
22098
22099function updateCss(element, i) {
22100  var xRailOffset = { width: i.railXWidth };
22101  var roundedScrollTop = Math.floor(element.scrollTop);
22102
22103  if (i.isRtl) {
22104    xRailOffset.left =
22105      i.negativeScrollAdjustment +
22106      element.scrollLeft +
22107      i.containerWidth -
22108      i.contentWidth;
22109  } else {
22110    xRailOffset.left = element.scrollLeft;
22111  }
22112  if (i.isScrollbarXUsingBottom) {
22113    xRailOffset.bottom = i.scrollbarXBottom - roundedScrollTop;
22114  } else {
22115    xRailOffset.top = i.scrollbarXTop + roundedScrollTop;
22116  }
22117  set(i.scrollbarXRail, xRailOffset);
22118
22119  var yRailOffset = { top: roundedScrollTop, height: i.railYHeight };
22120  if (i.isScrollbarYUsingRight) {
22121    if (i.isRtl) {
22122      yRailOffset.right =
22123        i.contentWidth -
22124        (i.negativeScrollAdjustment + element.scrollLeft) -
22125        i.scrollbarYRight -
22126        i.scrollbarYOuterWidth -
22127        9;
22128    } else {
22129      yRailOffset.right = i.scrollbarYRight - element.scrollLeft;
22130    }
22131  } else {
22132    if (i.isRtl) {
22133      yRailOffset.left =
22134        i.negativeScrollAdjustment +
22135        element.scrollLeft +
22136        i.containerWidth * 2 -
22137        i.contentWidth -
22138        i.scrollbarYLeft -
22139        i.scrollbarYOuterWidth;
22140    } else {
22141      yRailOffset.left = i.scrollbarYLeft + element.scrollLeft;
22142    }
22143  }
22144  set(i.scrollbarYRail, yRailOffset);
22145
22146  set(i.scrollbarX, {
22147    left: i.scrollbarXLeft,
22148    width: i.scrollbarXWidth - i.railBorderXWidth,
22149  });
22150  set(i.scrollbarY, {
22151    top: i.scrollbarYTop,
22152    height: i.scrollbarYHeight - i.railBorderYWidth,
22153  });
22154}
22155
22156function clickRail(i) {
22157  var element = i.element;
22158
22159  i.event.bind(i.scrollbarY, 'mousedown', function (e) { return e.stopPropagation(); });
22160  i.event.bind(i.scrollbarYRail, 'mousedown', function (e) {
22161    var positionTop =
22162      e.pageY -
22163      window.pageYOffset -
22164      i.scrollbarYRail.getBoundingClientRect().top;
22165    var direction = positionTop > i.scrollbarYTop ? 1 : -1;
22166
22167    i.element.scrollTop += direction * i.containerHeight;
22168    updateGeometry(i);
22169
22170    e.stopPropagation();
22171  });
22172
22173  i.event.bind(i.scrollbarX, 'mousedown', function (e) { return e.stopPropagation(); });
22174  i.event.bind(i.scrollbarXRail, 'mousedown', function (e) {
22175    var positionLeft =
22176      e.pageX -
22177      window.pageXOffset -
22178      i.scrollbarXRail.getBoundingClientRect().left;
22179    var direction = positionLeft > i.scrollbarXLeft ? 1 : -1;
22180
22181    i.element.scrollLeft += direction * i.containerWidth;
22182    updateGeometry(i);
22183
22184    e.stopPropagation();
22185  });
22186}
22187
22188function dragThumb(i) {
22189  bindMouseScrollHandler(i, [
22190    'containerWidth',
22191    'contentWidth',
22192    'pageX',
22193    'railXWidth',
22194    'scrollbarX',
22195    'scrollbarXWidth',
22196    'scrollLeft',
22197    'x',
22198    'scrollbarXRail' ]);
22199  bindMouseScrollHandler(i, [
22200    'containerHeight',
22201    'contentHeight',
22202    'pageY',
22203    'railYHeight',
22204    'scrollbarY',
22205    'scrollbarYHeight',
22206    'scrollTop',
22207    'y',
22208    'scrollbarYRail' ]);
22209}
22210
22211function bindMouseScrollHandler(
22212  i,
22213  ref
22214) {
22215  var containerHeight = ref[0];
22216  var contentHeight = ref[1];
22217  var pageY = ref[2];
22218  var railYHeight = ref[3];
22219  var scrollbarY = ref[4];
22220  var scrollbarYHeight = ref[5];
22221  var scrollTop = ref[6];
22222  var y = ref[7];
22223  var scrollbarYRail = ref[8];
22224
22225  var element = i.element;
22226
22227  var startingScrollTop = null;
22228  var startingMousePageY = null;
22229  var scrollBy = null;
22230
22231  function mouseMoveHandler(e) {
22232    if (e.touches && e.touches[0]) {
22233      e[pageY] = e.touches[0].pageY;
22234    }
22235    element[scrollTop] =
22236      startingScrollTop + scrollBy * (e[pageY] - startingMousePageY);
22237    addScrollingClass(i, y);
22238    updateGeometry(i);
22239
22240    e.stopPropagation();
22241    e.preventDefault();
22242  }
22243
22244  function mouseUpHandler() {
22245    removeScrollingClass(i, y);
22246    i[scrollbarYRail].classList.remove(cls.state.clicking);
22247    i.event.unbind(i.ownerDocument, 'mousemove', mouseMoveHandler);
22248  }
22249
22250  function bindMoves(e, touchMode) {
22251    startingScrollTop = element[scrollTop];
22252    if (touchMode && e.touches) {
22253      e[pageY] = e.touches[0].pageY;
22254    }
22255    startingMousePageY = e[pageY];
22256    scrollBy =
22257      (i[contentHeight] - i[containerHeight]) /
22258      (i[railYHeight] - i[scrollbarYHeight]);
22259    if (!touchMode) {
22260      i.event.bind(i.ownerDocument, 'mousemove', mouseMoveHandler);
22261      i.event.once(i.ownerDocument, 'mouseup', mouseUpHandler);
22262      e.preventDefault();
22263    } else {
22264      i.event.bind(i.ownerDocument, 'touchmove', mouseMoveHandler);
22265    }
22266
22267    i[scrollbarYRail].classList.add(cls.state.clicking);
22268
22269    e.stopPropagation();
22270  }
22271
22272  i.event.bind(i[scrollbarY], 'mousedown', function (e) {
22273    bindMoves(e);
22274  });
22275  i.event.bind(i[scrollbarY], 'touchstart', function (e) {
22276    bindMoves(e, true);
22277  });
22278}
22279
22280function keyboard(i) {
22281  var element = i.element;
22282
22283  var elementHovered = function () { return matches(element, ':hover'); };
22284  var scrollbarFocused = function () { return matches(i.scrollbarX, ':focus') || matches(i.scrollbarY, ':focus'); };
22285
22286  function shouldPreventDefault(deltaX, deltaY) {
22287    var scrollTop = Math.floor(element.scrollTop);
22288    if (deltaX === 0) {
22289      if (!i.scrollbarYActive) {
22290        return false;
22291      }
22292      if (
22293        (scrollTop === 0 && deltaY > 0) ||
22294        (scrollTop >= i.contentHeight - i.containerHeight && deltaY < 0)
22295      ) {
22296        return !i.settings.wheelPropagation;
22297      }
22298    }
22299
22300    var scrollLeft = element.scrollLeft;
22301    if (deltaY === 0) {
22302      if (!i.scrollbarXActive) {
22303        return false;
22304      }
22305      if (
22306        (scrollLeft === 0 && deltaX < 0) ||
22307        (scrollLeft >= i.contentWidth - i.containerWidth && deltaX > 0)
22308      ) {
22309        return !i.settings.wheelPropagation;
22310      }
22311    }
22312    return true;
22313  }
22314
22315  i.event.bind(i.ownerDocument, 'keydown', function (e) {
22316    if (
22317      (e.isDefaultPrevented && e.isDefaultPrevented()) ||
22318      e.defaultPrevented
22319    ) {
22320      return;
22321    }
22322
22323    if (!elementHovered() && !scrollbarFocused()) {
22324      return;
22325    }
22326
22327    var activeElement = document.activeElement
22328      ? document.activeElement
22329      : i.ownerDocument.activeElement;
22330    if (activeElement) {
22331      if (activeElement.tagName === 'IFRAME') {
22332        activeElement = activeElement.contentDocument.activeElement;
22333      } else {
22334        // go deeper if element is a webcomponent
22335        while (activeElement.shadowRoot) {
22336          activeElement = activeElement.shadowRoot.activeElement;
22337        }
22338      }
22339      if (isEditable(activeElement)) {
22340        return;
22341      }
22342    }
22343
22344    var deltaX = 0;
22345    var deltaY = 0;
22346
22347    switch (e.which) {
22348      case 37: // left
22349        if (e.metaKey) {
22350          deltaX = -i.contentWidth;
22351        } else if (e.altKey) {
22352          deltaX = -i.containerWidth;
22353        } else {
22354          deltaX = -30;
22355        }
22356        break;
22357      case 38: // up
22358        if (e.metaKey) {
22359          deltaY = i.contentHeight;
22360        } else if (e.altKey) {
22361          deltaY = i.containerHeight;
22362        } else {
22363          deltaY = 30;
22364        }
22365        break;
22366      case 39: // right
22367        if (e.metaKey) {
22368          deltaX = i.contentWidth;
22369        } else if (e.altKey) {
22370          deltaX = i.containerWidth;
22371        } else {
22372          deltaX = 30;
22373        }
22374        break;
22375      case 40: // down
22376        if (e.metaKey) {
22377          deltaY = -i.contentHeight;
22378        } else if (e.altKey) {
22379          deltaY = -i.containerHeight;
22380        } else {
22381          deltaY = -30;
22382        }
22383        break;
22384      case 32: // space bar
22385        if (e.shiftKey) {
22386          deltaY = i.containerHeight;
22387        } else {
22388          deltaY = -i.containerHeight;
22389        }
22390        break;
22391      case 33: // page up
22392        deltaY = i.containerHeight;
22393        break;
22394      case 34: // page down
22395        deltaY = -i.containerHeight;
22396        break;
22397      case 36: // home
22398        deltaY = i.contentHeight;
22399        break;
22400      case 35: // end
22401        deltaY = -i.contentHeight;
22402        break;
22403      default:
22404        return;
22405    }
22406
22407    if (i.settings.suppressScrollX && deltaX !== 0) {
22408      return;
22409    }
22410    if (i.settings.suppressScrollY && deltaY !== 0) {
22411      return;
22412    }
22413
22414    element.scrollTop -= deltaY;
22415    element.scrollLeft += deltaX;
22416    updateGeometry(i);
22417
22418    if (shouldPreventDefault(deltaX, deltaY)) {
22419      e.preventDefault();
22420    }
22421  });
22422}
22423
22424function wheel(i) {
22425  var element = i.element;
22426
22427  function shouldPreventDefault(deltaX, deltaY) {
22428    var roundedScrollTop = Math.floor(element.scrollTop);
22429    var isTop = element.scrollTop === 0;
22430    var isBottom =
22431      roundedScrollTop + element.offsetHeight === element.scrollHeight;
22432    var isLeft = element.scrollLeft === 0;
22433    var isRight =
22434      element.scrollLeft + element.offsetWidth === element.scrollWidth;
22435
22436    var hitsBound;
22437
22438    // pick axis with primary direction
22439    if (Math.abs(deltaY) > Math.abs(deltaX)) {
22440      hitsBound = isTop || isBottom;
22441    } else {
22442      hitsBound = isLeft || isRight;
22443    }
22444
22445    return hitsBound ? !i.settings.wheelPropagation : true;
22446  }
22447
22448  function getDeltaFromEvent(e) {
22449    var deltaX = e.deltaX;
22450    var deltaY = -1 * e.deltaY;
22451
22452    if (typeof deltaX === 'undefined' || typeof deltaY === 'undefined') {
22453      // OS X Safari
22454      deltaX = (-1 * e.wheelDeltaX) / 6;
22455      deltaY = e.wheelDeltaY / 6;
22456    }
22457
22458    if (e.deltaMode && e.deltaMode === 1) {
22459      // Firefox in deltaMode 1: Line scrolling
22460      deltaX *= 10;
22461      deltaY *= 10;
22462    }
22463
22464    if (deltaX !== deltaX && deltaY !== deltaY /* NaN checks */) {
22465      // IE in some mouse drivers
22466      deltaX = 0;
22467      deltaY = e.wheelDelta;
22468    }
22469
22470    if (e.shiftKey) {
22471      // reverse axis with shift key
22472      return [-deltaY, -deltaX];
22473    }
22474    return [deltaX, deltaY];
22475  }
22476
22477  function shouldBeConsumedByChild(target, deltaX, deltaY) {
22478    // FIXME: this is a workaround for <select> issue in FF and IE #571
22479    if (!env.isWebKit && element.querySelector('select:focus')) {
22480      return true;
22481    }
22482
22483    if (!element.contains(target)) {
22484      return false;
22485    }
22486
22487    var cursor = target;
22488
22489    while (cursor && cursor !== element) {
22490      if (cursor.classList.contains(cls.element.consuming)) {
22491        return true;
22492      }
22493
22494      var style = get(cursor);
22495
22496      // if deltaY && vertical scrollable
22497      if (deltaY && style.overflowY.match(/(scroll|auto)/)) {
22498        var maxScrollTop = cursor.scrollHeight - cursor.clientHeight;
22499        if (maxScrollTop > 0) {
22500          if (
22501            (cursor.scrollTop > 0 && deltaY < 0) ||
22502            (cursor.scrollTop < maxScrollTop && deltaY > 0)
22503          ) {
22504            return true;
22505          }
22506        }
22507      }
22508      // if deltaX && horizontal scrollable
22509      if (deltaX && style.overflowX.match(/(scroll|auto)/)) {
22510        var maxScrollLeft = cursor.scrollWidth - cursor.clientWidth;
22511        if (maxScrollLeft > 0) {
22512          if (
22513            (cursor.scrollLeft > 0 && deltaX < 0) ||
22514            (cursor.scrollLeft < maxScrollLeft && deltaX > 0)
22515          ) {
22516            return true;
22517          }
22518        }
22519      }
22520
22521      cursor = cursor.parentNode;
22522    }
22523
22524    return false;
22525  }
22526
22527  function mousewheelHandler(e) {
22528    var ref = getDeltaFromEvent(e);
22529    var deltaX = ref[0];
22530    var deltaY = ref[1];
22531
22532    if (shouldBeConsumedByChild(e.target, deltaX, deltaY)) {
22533      return;
22534    }
22535
22536    var shouldPrevent = false;
22537    if (!i.settings.useBothWheelAxes) {
22538      // deltaX will only be used for horizontal scrolling and deltaY will
22539      // only be used for vertical scrolling - this is the default
22540      element.scrollTop -= deltaY * i.settings.wheelSpeed;
22541      element.scrollLeft += deltaX * i.settings.wheelSpeed;
22542    } else if (i.scrollbarYActive && !i.scrollbarXActive) {
22543      // only vertical scrollbar is active and useBothWheelAxes option is
22544      // active, so let's scroll vertical bar using both mouse wheel axes
22545      if (deltaY) {
22546        element.scrollTop -= deltaY * i.settings.wheelSpeed;
22547      } else {
22548        element.scrollTop += deltaX * i.settings.wheelSpeed;
22549      }
22550      shouldPrevent = true;
22551    } else if (i.scrollbarXActive && !i.scrollbarYActive) {
22552      // useBothWheelAxes and only horizontal bar is active, so use both
22553      // wheel axes for horizontal bar
22554      if (deltaX) {
22555        element.scrollLeft += deltaX * i.settings.wheelSpeed;
22556      } else {
22557        element.scrollLeft -= deltaY * i.settings.wheelSpeed;
22558      }
22559      shouldPrevent = true;
22560    }
22561
22562    updateGeometry(i);
22563
22564    shouldPrevent = shouldPrevent || shouldPreventDefault(deltaX, deltaY);
22565    if (shouldPrevent && !e.ctrlKey) {
22566      e.stopPropagation();
22567      e.preventDefault();
22568    }
22569  }
22570
22571  if (typeof window.onwheel !== 'undefined') {
22572    i.event.bind(element, 'wheel', mousewheelHandler);
22573  } else if (typeof window.onmousewheel !== 'undefined') {
22574    i.event.bind(element, 'mousewheel', mousewheelHandler);
22575  }
22576}
22577
22578function touch(i) {
22579  if (!env.supportsTouch && !env.supportsIePointer) {
22580    return;
22581  }
22582
22583  var element = i.element;
22584
22585  function shouldPrevent(deltaX, deltaY) {
22586    var scrollTop = Math.floor(element.scrollTop);
22587    var scrollLeft = element.scrollLeft;
22588    var magnitudeX = Math.abs(deltaX);
22589    var magnitudeY = Math.abs(deltaY);
22590
22591    if (magnitudeY > magnitudeX) {
22592      // user is perhaps trying to swipe up/down the page
22593
22594      if (
22595        (deltaY < 0 && scrollTop === i.contentHeight - i.containerHeight) ||
22596        (deltaY > 0 && scrollTop === 0)
22597      ) {
22598        // set prevent for mobile Chrome refresh
22599        return window.scrollY === 0 && deltaY > 0 && env.isChrome;
22600      }
22601    } else if (magnitudeX > magnitudeY) {
22602      // user is perhaps trying to swipe left/right across the page
22603
22604      if (
22605        (deltaX < 0 && scrollLeft === i.contentWidth - i.containerWidth) ||
22606        (deltaX > 0 && scrollLeft === 0)
22607      ) {
22608        return true;
22609      }
22610    }
22611
22612    return true;
22613  }
22614
22615  function applyTouchMove(differenceX, differenceY) {
22616    element.scrollTop -= differenceY;
22617    element.scrollLeft -= differenceX;
22618
22619    updateGeometry(i);
22620  }
22621
22622  var startOffset = {};
22623  var startTime = 0;
22624  var speed = {};
22625  var easingLoop = null;
22626
22627  function getTouch(e) {
22628    if (e.targetTouches) {
22629      return e.targetTouches[0];
22630    } else {
22631      // Maybe IE pointer
22632      return e;
22633    }
22634  }
22635
22636  function shouldHandle(e) {
22637    if (e.pointerType && e.pointerType === 'pen' && e.buttons === 0) {
22638      return false;
22639    }
22640    if (e.targetTouches && e.targetTouches.length === 1) {
22641      return true;
22642    }
22643    if (
22644      e.pointerType &&
22645      e.pointerType !== 'mouse' &&
22646      e.pointerType !== e.MSPOINTER_TYPE_MOUSE
22647    ) {
22648      return true;
22649    }
22650    return false;
22651  }
22652
22653  function touchStart(e) {
22654    if (!shouldHandle(e)) {
22655      return;
22656    }
22657
22658    var touch = getTouch(e);
22659
22660    startOffset.pageX = touch.pageX;
22661    startOffset.pageY = touch.pageY;
22662
22663    startTime = new Date().getTime();
22664
22665    if (easingLoop !== null) {
22666      clearInterval(easingLoop);
22667    }
22668  }
22669
22670  function shouldBeConsumedByChild(target, deltaX, deltaY) {
22671    if (!element.contains(target)) {
22672      return false;
22673    }
22674
22675    var cursor = target;
22676
22677    while (cursor && cursor !== element) {
22678      if (cursor.classList.contains(cls.element.consuming)) {
22679        return true;
22680      }
22681
22682      var style = get(cursor);
22683
22684      // if deltaY && vertical scrollable
22685      if (deltaY && style.overflowY.match(/(scroll|auto)/)) {
22686        var maxScrollTop = cursor.scrollHeight - cursor.clientHeight;
22687        if (maxScrollTop > 0) {
22688          if (
22689            (cursor.scrollTop > 0 && deltaY < 0) ||
22690            (cursor.scrollTop < maxScrollTop && deltaY > 0)
22691          ) {
22692            return true;
22693          }
22694        }
22695      }
22696      // if deltaX && horizontal scrollable
22697      if (deltaX && style.overflowX.match(/(scroll|auto)/)) {
22698        var maxScrollLeft = cursor.scrollWidth - cursor.clientWidth;
22699        if (maxScrollLeft > 0) {
22700          if (
22701            (cursor.scrollLeft > 0 && deltaX < 0) ||
22702            (cursor.scrollLeft < maxScrollLeft && deltaX > 0)
22703          ) {
22704            return true;
22705          }
22706        }
22707      }
22708
22709      cursor = cursor.parentNode;
22710    }
22711
22712    return false;
22713  }
22714
22715  function touchMove(e) {
22716    if (shouldHandle(e)) {
22717      var touch = getTouch(e);
22718
22719      var currentOffset = { pageX: touch.pageX, pageY: touch.pageY };
22720
22721      var differenceX = currentOffset.pageX - startOffset.pageX;
22722      var differenceY = currentOffset.pageY - startOffset.pageY;
22723
22724      if (shouldBeConsumedByChild(e.target, differenceX, differenceY)) {
22725        return;
22726      }
22727
22728      applyTouchMove(differenceX, differenceY);
22729      startOffset = currentOffset;
22730
22731      var currentTime = new Date().getTime();
22732
22733      var timeGap = currentTime - startTime;
22734      if (timeGap > 0) {
22735        speed.x = differenceX / timeGap;
22736        speed.y = differenceY / timeGap;
22737        startTime = currentTime;
22738      }
22739
22740      if (shouldPrevent(differenceX, differenceY)) {
22741        e.preventDefault();
22742      }
22743    }
22744  }
22745  function touchEnd() {
22746    if (i.settings.swipeEasing) {
22747      clearInterval(easingLoop);
22748      easingLoop = setInterval(function() {
22749        if (i.isInitialized) {
22750          clearInterval(easingLoop);
22751          return;
22752        }
22753
22754        if (!speed.x && !speed.y) {
22755          clearInterval(easingLoop);
22756          return;
22757        }
22758
22759        if (Math.abs(speed.x) < 0.01 && Math.abs(speed.y) < 0.01) {
22760          clearInterval(easingLoop);
22761          return;
22762        }
22763
22764        applyTouchMove(speed.x * 30, speed.y * 30);
22765
22766        speed.x *= 0.8;
22767        speed.y *= 0.8;
22768      }, 10);
22769    }
22770  }
22771
22772  if (env.supportsTouch) {
22773    i.event.bind(element, 'touchstart', touchStart);
22774    i.event.bind(element, 'touchmove', touchMove);
22775    i.event.bind(element, 'touchend', touchEnd);
22776  } else if (env.supportsIePointer) {
22777    if (window.PointerEvent) {
22778      i.event.bind(element, 'pointerdown', touchStart);
22779      i.event.bind(element, 'pointermove', touchMove);
22780      i.event.bind(element, 'pointerup', touchEnd);
22781    } else if (window.MSPointerEvent) {
22782      i.event.bind(element, 'MSPointerDown', touchStart);
22783      i.event.bind(element, 'MSPointerMove', touchMove);
22784      i.event.bind(element, 'MSPointerUp', touchEnd);
22785    }
22786  }
22787}
22788
22789var defaultSettings = function () { return ({
22790  handlers: ['click-rail', 'drag-thumb', 'keyboard', 'wheel', 'touch'],
22791  maxScrollbarLength: null,
22792  minScrollbarLength: null,
22793  scrollingThreshold: 1000,
22794  scrollXMarginOffset: 0,
22795  scrollYMarginOffset: 0,
22796  suppressScrollX: false,
22797  suppressScrollY: false,
22798  swipeEasing: true,
22799  useBothWheelAxes: false,
22800  wheelPropagation: true,
22801  wheelSpeed: 1,
22802}); };
22803
22804var handlers = {
22805  'click-rail': clickRail,
22806  'drag-thumb': dragThumb,
22807  keyboard: keyboard,
22808  wheel: wheel,
22809  touch: touch,
22810};
22811
22812var PerfectScrollbar = function PerfectScrollbar(element, userSettings) {
22813  var this$1 = this;
22814  if ( userSettings === void 0 ) userSettings = {};
22815
22816  if (typeof element === 'string') {
22817    element = document.querySelector(element);
22818  }
22819
22820  if (!element || !element.nodeName) {
22821    throw new Error('no element is specified to initialize PerfectScrollbar');
22822  }
22823
22824  this.element = element;
22825
22826  element.classList.add(cls.main);
22827
22828  this.settings = defaultSettings();
22829  for (var key in userSettings) {
22830    this.settings[key] = userSettings[key];
22831  }
22832
22833  this.containerWidth = null;
22834  this.containerHeight = null;
22835  this.contentWidth = null;
22836  this.contentHeight = null;
22837
22838  var focus = function () { return element.classList.add(cls.state.focus); };
22839  var blur = function () { return element.classList.remove(cls.state.focus); };
22840
22841  this.isRtl = get(element).direction === 'rtl';
22842  if (this.isRtl === true) {
22843    element.classList.add(cls.rtl);
22844  }
22845  this.isNegativeScroll = (function () {
22846    var originalScrollLeft = element.scrollLeft;
22847    var result = null;
22848    element.scrollLeft = -1;
22849    result = element.scrollLeft < 0;
22850    element.scrollLeft = originalScrollLeft;
22851    return result;
22852  })();
22853  this.negativeScrollAdjustment = this.isNegativeScroll
22854    ? element.scrollWidth - element.clientWidth
22855    : 0;
22856  this.event = new EventManager();
22857  this.ownerDocument = element.ownerDocument || document;
22858
22859  this.scrollbarXRail = div(cls.element.rail('x'));
22860  element.appendChild(this.scrollbarXRail);
22861  this.scrollbarX = div(cls.element.thumb('x'));
22862  this.scrollbarXRail.appendChild(this.scrollbarX);
22863  this.scrollbarX.setAttribute('tabindex', 0);
22864  this.event.bind(this.scrollbarX, 'focus', focus);
22865  this.event.bind(this.scrollbarX, 'blur', blur);
22866  this.scrollbarXActive = null;
22867  this.scrollbarXWidth = null;
22868  this.scrollbarXLeft = null;
22869  var railXStyle = get(this.scrollbarXRail);
22870  this.scrollbarXBottom = parseInt(railXStyle.bottom, 10);
22871  if (isNaN(this.scrollbarXBottom)) {
22872    this.isScrollbarXUsingBottom = false;
22873    this.scrollbarXTop = toInt(railXStyle.top);
22874  } else {
22875    this.isScrollbarXUsingBottom = true;
22876  }
22877  this.railBorderXWidth =
22878    toInt(railXStyle.borderLeftWidth) + toInt(railXStyle.borderRightWidth);
22879  // Set rail to display:block to calculate margins
22880  set(this.scrollbarXRail, { display: 'block' });
22881  this.railXMarginWidth =
22882    toInt(railXStyle.marginLeft) + toInt(railXStyle.marginRight);
22883  set(this.scrollbarXRail, { display: '' });
22884  this.railXWidth = null;
22885  this.railXRatio = null;
22886
22887  this.scrollbarYRail = div(cls.element.rail('y'));
22888  element.appendChild(this.scrollbarYRail);
22889  this.scrollbarY = div(cls.element.thumb('y'));
22890  this.scrollbarYRail.appendChild(this.scrollbarY);
22891  this.scrollbarY.setAttribute('tabindex', 0);
22892  this.event.bind(this.scrollbarY, 'focus', focus);
22893  this.event.bind(this.scrollbarY, 'blur', blur);
22894  this.scrollbarYActive = null;
22895  this.scrollbarYHeight = null;
22896  this.scrollbarYTop = null;
22897  var railYStyle = get(this.scrollbarYRail);
22898  this.scrollbarYRight = parseInt(railYStyle.right, 10);
22899  if (isNaN(this.scrollbarYRight)) {
22900    this.isScrollbarYUsingRight = false;
22901    this.scrollbarYLeft = toInt(railYStyle.left);
22902  } else {
22903    this.isScrollbarYUsingRight = true;
22904  }
22905  this.scrollbarYOuterWidth = this.isRtl ? outerWidth(this.scrollbarY) : null;
22906  this.railBorderYWidth =
22907    toInt(railYStyle.borderTopWidth) + toInt(railYStyle.borderBottomWidth);
22908  set(this.scrollbarYRail, { display: 'block' });
22909  this.railYMarginHeight =
22910    toInt(railYStyle.marginTop) + toInt(railYStyle.marginBottom);
22911  set(this.scrollbarYRail, { display: '' });
22912  this.railYHeight = null;
22913  this.railYRatio = null;
22914
22915  this.reach = {
22916    x:
22917      element.scrollLeft <= 0
22918        ? 'start'
22919        : element.scrollLeft >= this.contentWidth - this.containerWidth
22920        ? 'end'
22921        : null,
22922    y:
22923      element.scrollTop <= 0
22924        ? 'start'
22925        : element.scrollTop >= this.contentHeight - this.containerHeight
22926        ? 'end'
22927        : null,
22928  };
22929
22930  this.isAlive = true;
22931
22932  this.settings.handlers.forEach(function (handlerName) { return handlers[handlerName](this$1); });
22933
22934  this.lastScrollTop = Math.floor(element.scrollTop); // for onScroll only
22935  this.lastScrollLeft = element.scrollLeft; // for onScroll only
22936  this.event.bind(this.element, 'scroll', function (e) { return this$1.onScroll(e); });
22937  updateGeometry(this);
22938};
22939
22940PerfectScrollbar.prototype.update = function update () {
22941  if (!this.isAlive) {
22942    return;
22943  }
22944
22945  // Recalcuate negative scrollLeft adjustment
22946  this.negativeScrollAdjustment = this.isNegativeScroll
22947    ? this.element.scrollWidth - this.element.clientWidth
22948    : 0;
22949
22950  // Recalculate rail margins
22951  set(this.scrollbarXRail, { display: 'block' });
22952  set(this.scrollbarYRail, { display: 'block' });
22953  this.railXMarginWidth =
22954    toInt(get(this.scrollbarXRail).marginLeft) +
22955    toInt(get(this.scrollbarXRail).marginRight);
22956  this.railYMarginHeight =
22957    toInt(get(this.scrollbarYRail).marginTop) +
22958    toInt(get(this.scrollbarYRail).marginBottom);
22959
22960  // Hide scrollbars not to affect scrollWidth and scrollHeight
22961  set(this.scrollbarXRail, { display: 'none' });
22962  set(this.scrollbarYRail, { display: 'none' });
22963
22964  updateGeometry(this);
22965
22966  processScrollDiff(this, 'top', 0, false, true);
22967  processScrollDiff(this, 'left', 0, false, true);
22968
22969  set(this.scrollbarXRail, { display: '' });
22970  set(this.scrollbarYRail, { display: '' });
22971};
22972
22973PerfectScrollbar.prototype.onScroll = function onScroll (e) {
22974  if (!this.isAlive) {
22975    return;
22976  }
22977
22978  updateGeometry(this);
22979  processScrollDiff(this, 'top', this.element.scrollTop - this.lastScrollTop);
22980  processScrollDiff(
22981    this,
22982    'left',
22983    this.element.scrollLeft - this.lastScrollLeft
22984  );
22985
22986  this.lastScrollTop = Math.floor(this.element.scrollTop);
22987  this.lastScrollLeft = this.element.scrollLeft;
22988};
22989
22990PerfectScrollbar.prototype.destroy = function destroy () {
22991  if (!this.isAlive) {
22992    return;
22993  }
22994
22995  this.event.unbindAll();
22996  remove(this.scrollbarX);
22997  remove(this.scrollbarY);
22998  remove(this.scrollbarXRail);
22999  remove(this.scrollbarYRail);
23000  this.removePsClasses();
23001
23002  // unset elements
23003  this.element = null;
23004  this.scrollbarX = null;
23005  this.scrollbarY = null;
23006  this.scrollbarXRail = null;
23007  this.scrollbarYRail = null;
23008
23009  this.isAlive = false;
23010};
23011
23012PerfectScrollbar.prototype.removePsClasses = function removePsClasses () {
23013  this.element.className = this.element.className
23014    .split(' ')
23015    .filter(function (name) { return !name.match(/^ps([-_].+|)$/); })
23016    .join(' ');
23017};
23018
23019/* harmony default export */ __webpack_exports__["default"] = (PerfectScrollbar);
23020//# sourceMappingURL=perfect-scrollbar.esm.js.map
23021
23022
23023/***/ }),
23024
vendor: 24,435 bytes, lines 23025-23762
23025/***/ "./node_modules/regenerator-runtime/runtime.js":
23026/*!*****************************************************!*\
23027  !*** ./node_modules/regenerator-runtime/runtime.js ***!
23028  \*****************************************************/
23029/*! no static exports found */
23030/***/ (function(module, exports) {
23031
23032/**
23033 * Copyright (c) 2014-present, Facebook, Inc.
23034 *
23035 * This source code is licensed under the MIT license found in the
23036 * LICENSE file in the root directory of this source tree.
23037 */
23038
23039!(function(global) {
23040  "use strict";
23041
23042  var Op = Object.prototype;
23043  var hasOwn = Op.hasOwnProperty;
23044  var undefined; // More compressible than void 0.
23045  var $Symbol = typeof Symbol === "function" ? Symbol : {};
23046  var iteratorSymbol = $Symbol.iterator || "@@iterator";
23047  var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator";
23048  var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
23049
23050  var inModule = typeof module === "object";
23051  var runtime = global.regeneratorRuntime;
23052  if (runtime) {
23053    if (inModule) {
23054      // If regeneratorRuntime is defined globally and we're in a module,
23055      // make the exports object identical to regeneratorRuntime.
23056      module.exports = runtime;
23057    }
23058    // Don't bother evaluating the rest of this file if the runtime was
23059    // already defined globally.
23060    return;
23061  }
23062
23063  // Define the runtime globally (as expected by generated code) as either
23064  // module.exports (if we're in a module) or a new, empty object.
23065  runtime = global.regeneratorRuntime = inModule ? module.exports : {};
23066
23067  function wrap(innerFn, outerFn, self, tryLocsList) {
23068    // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.
23069    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;
23070    var generator = Object.create(protoGenerator.prototype);
23071    var context = new Context(tryLocsList || []);
23072
23073    // The ._invoke method unifies the implementations of the .next,
23074    // .throw, and .return methods.
23075    generator._invoke = makeInvokeMethod(innerFn, self, context);
23076
23077    return generator;
23078  }
23079  runtime.wrap = wrap;
23080
23081  // Try/catch helper to minimize deoptimizations. Returns a completion
23082  // record like context.tryEntries[i].completion. This interface could
23083  // have been (and was previously) designed to take a closure to be
23084  // invoked without arguments, but in all the cases we care about we
23085  // already have an existing method we want to call, so there's no need
23086  // to create a new function object. We can even get away with assuming
23087  // the method takes exactly one argument, since that happens to be true
23088  // in every case, so we don't have to touch the arguments object. The
23089  // only additional allocation required is the completion record, which
23090  // has a stable shape and so hopefully should be cheap to allocate.
23091  function tryCatch(fn, obj, arg) {
23092    try {
23093      return { type: "normal", arg: fn.call(obj, arg) };
23094    } catch (err) {
23095      return { type: "throw", arg: err };
23096    }
23097  }
23098
23099  var GenStateSuspendedStart = "suspendedStart";
23100  var GenStateSuspendedYield = "suspendedYield";
23101  var GenStateExecuting = "executing";
23102  var GenStateCompleted = "completed";
23103
23104  // Returning this object from the innerFn has the same effect as
23105  // breaking out of the dispatch switch statement.
23106  var ContinueSentinel = {};
23107
23108  // Dummy constructor functions that we use as the .constructor and
23109  // .constructor.prototype properties for functions that return Generator
23110  // objects. For full spec compliance, you may wish to configure your
23111  // minifier not to mangle the names of these two functions.
23112  function Generator() {}
23113  function GeneratorFunction() {}
23114  function GeneratorFunctionPrototype() {}
23115
23116  // This is a polyfill for %IteratorPrototype% for environments that
23117  // don't natively support it.
23118  var IteratorPrototype = {};
23119  IteratorPrototype[iteratorSymbol] = function () {
23120    return this;
23121  };
23122
23123  var getProto = Object.getPrototypeOf;
23124  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));
23125  if (NativeIteratorPrototype &&
23126      NativeIteratorPrototype !== Op &&
23127      hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {
23128    // This environment has a native %IteratorPrototype%; use it instead
23129    // of the polyfill.
23130    IteratorPrototype = NativeIteratorPrototype;
23131  }
23132
23133  var Gp = GeneratorFunctionPrototype.prototype =
23134    Generator.prototype = Object.create(IteratorPrototype);
23135  GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;
23136  GeneratorFunctionPrototype.constructor = GeneratorFunction;
23137  GeneratorFunctionPrototype[toStringTagSymbol] =
23138    GeneratorFunction.displayName = "GeneratorFunction";
23139
23140  // Helper for defining the .next, .throw, and .return methods of the
23141  // Iterator interface in terms of a single ._invoke method.
23142  function defineIteratorMethods(prototype) {
23143    ["next", "throw", "return"].forEach(function(method) {
23144      prototype[method] = function(arg) {
23145        return this._invoke(method, arg);
23146      };
23147    });
23148  }
23149
23150  runtime.isGeneratorFunction = function(genFun) {
23151    var ctor = typeof genFun === "function" && genFun.constructor;
23152    return ctor
23153      ? ctor === GeneratorFunction ||
23154        // For the native GeneratorFunction constructor, the best we can
23155        // do is to check its .name property.
23156        (ctor.displayName || ctor.name) === "GeneratorFunction"
23157      : false;
23158  };
23159
23160  runtime.mark = function(genFun) {
23161    if (Object.setPrototypeOf) {
23162      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);
23163    } else {
23164      genFun.__proto__ = GeneratorFunctionPrototype;
23165      if (!(toStringTagSymbol in genFun)) {
23166        genFun[toStringTagSymbol] = "GeneratorFunction";
23167      }
23168    }
23169    genFun.prototype = Object.create(Gp);
23170    return genFun;
23171  };
23172
23173  // Within the body of any async function, `await x` is transformed to
23174  // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test
23175  // `hasOwn.call(value, "__await")` to determine if the yielded value is
23176  // meant to be awaited.
23177  runtime.awrap = function(arg) {
23178    return { __await: arg };
23179  };
23180
23181  function AsyncIterator(generator) {
23182    function invoke(method, arg, resolve, reject) {
23183      var record = tryCatch(generator[method], generator, arg);
23184      if (record.type === "throw") {
23185        reject(record.arg);
23186      } else {
23187        var result = record.arg;
23188        var value = result.value;
23189        if (value &&
23190            typeof value === "object" &&
23191            hasOwn.call(value, "__await")) {
23192          return Promise.resolve(value.__await).then(function(value) {
23193            invoke("next", value, resolve, reject);
23194          }, function(err) {
23195            invoke("throw", err, resolve, reject);
23196          });
23197        }
23198
23199        return Promise.resolve(value).then(function(unwrapped) {
23200          // When a yielded Promise is resolved, its final value becomes
23201          // the .value of the Promise<{value,done}> result for the
23202          // current iteration. If the Promise is rejected, however, the
23203          // result for this iteration will be rejected with the same
23204          // reason. Note that rejections of yielded Promises are not
23205          // thrown back into the generator function, as is the case
23206          // when an awaited Promise is rejected. This difference in
23207          // behavior between yield and await is important, because it
23208          // allows the consumer to decide what to do with the yielded
23209          // rejection (swallow it and continue, manually .throw it back
23210          // into the generator, abandon iteration, whatever). With
23211          // await, by contrast, there is no opportunity to examine the
23212          // rejection reason outside the generator function, so the
23213          // only option is to throw it from the await expression, and
23214          // let the generator function handle the exception.
23215          result.value = unwrapped;
23216          resolve(result);
23217        }, reject);
23218      }
23219    }
23220
23221    var previousPromise;
23222
23223    function enqueue(method, arg) {
23224      function callInvokeWithMethodAndArg() {
23225        return new Promise(function(resolve, reject) {
23226          invoke(method, arg, resolve, reject);
23227        });
23228      }
23229
23230      return previousPromise =
23231        // If enqueue has been called before, then we want to wait until
23232        // all previous Promises have been resolved before calling invoke,
23233        // so that results are always delivered in the correct order. If
23234        // enqueue has not been called before, then it is important to
23235        // call invoke immediately, without waiting on a callback to fire,
23236        // so that the async generator function has the opportunity to do
23237        // any necessary setup in a predictable way. This predictability
23238        // is why the Promise constructor synchronously invokes its
23239        // executor callback, and why async functions synchronously
23240        // execute code before the first await. Since we implement simple
23241        // async functions in terms of async generators, it is especially
23242        // important to get this right, even though it requires care.
23243        previousPromise ? previousPromise.then(
23244          callInvokeWithMethodAndArg,
23245          // Avoid propagating failures to Promises returned by later
23246          // invocations of the iterator.
23247          callInvokeWithMethodAndArg
23248        ) : callInvokeWithMethodAndArg();
23249    }
23250
23251    // Define the unified helper method that is used to implement .next,
23252    // .throw, and .return (see defineIteratorMethods).
23253    this._invoke = enqueue;
23254  }
23255
23256  defineIteratorMethods(AsyncIterator.prototype);
23257  AsyncIterator.prototype[asyncIteratorSymbol] = function () {
23258    return this;
23259  };
23260  runtime.AsyncIterator = AsyncIterator;
23261
23262  // Note that simple async functions are implemented on top of
23263  // AsyncIterator objects; they just return a Promise for the value of
23264  // the final result produced by the iterator.
23265  runtime.async = function(innerFn, outerFn, self, tryLocsList) {
23266    var iter = new AsyncIterator(
23267      wrap(innerFn, outerFn, self, tryLocsList)
23268    );
23269
23270    return runtime.isGeneratorFunction(outerFn)
23271      ? iter // If outerFn is a generator, return the full iterator.
23272      : iter.next().then(function(result) {
23273          return result.done ? result.value : iter.next();
23274        });
23275  };
23276
23277  function makeInvokeMethod(innerFn, self, context) {
23278    var state = GenStateSuspendedStart;
23279
23280    return function invoke(method, arg) {
23281      if (state === GenStateExecuting) {
23282        throw new Error("Generator is already running");
23283      }
23284
23285      if (state === GenStateCompleted) {
23286        if (method === "throw") {
23287          throw arg;
23288        }
23289
23290        // Be forgiving, per 25.3.3.3.3 of the spec:
23291        // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume
23292        return doneResult();
23293      }
23294
23295      context.method = method;
23296      context.arg = arg;
23297
23298      while (true) {
23299        var delegate = context.delegate;
23300        if (delegate) {
23301          var delegateResult = maybeInvokeDelegate(delegate, context);
23302          if (delegateResult) {
23303            if (delegateResult === ContinueSentinel) continue;
23304            return delegateResult;
23305          }
23306        }
23307
23308        if (context.method === "next") {
23309          // Setting context._sent for legacy support of Babel's
23310          // function.sent implementation.
23311          context.sent = context._sent = context.arg;
23312
23313        } else if (context.method === "throw") {
23314          if (state === GenStateSuspendedStart) {
23315            state = GenStateCompleted;
23316            throw context.arg;
23317          }
23318
23319          context.dispatchException(context.arg);
23320
23321        } else if (context.method === "return") {
23322          context.abrupt("return", context.arg);
23323        }
23324
23325        state = GenStateExecuting;
23326
23327        var record = tryCatch(innerFn, self, context);
23328        if (record.type === "normal") {
23329          // If an exception is thrown from innerFn, we leave state ===
23330          // GenStateExecuting and loop back for another invocation.
23331          state = context.done
23332            ? GenStateCompleted
23333            : GenStateSuspendedYield;
23334
23335          if (record.arg === ContinueSentinel) {
23336            continue;
23337          }
23338
23339          return {
23340            value: record.arg,
23341            done: context.done
23342          };
23343
23344        } else if (record.type === "throw") {
23345          state = GenStateCompleted;
23346          // Dispatch the exception by looping back around to the
23347          // context.dispatchException(context.arg) call above.
23348          context.method = "throw";
23349          context.arg = record.arg;
23350        }
23351      }
23352    };
23353  }
23354
23355  // Call delegate.iterator[context.method](context.arg) and handle the
23356  // result, either by returning a { value, done } result from the
23357  // delegate iterator, or by modifying context.method and context.arg,
23358  // setting context.delegate to null, and returning the ContinueSentinel.
23359  function maybeInvokeDelegate(delegate, context) {
23360    var method = delegate.iterator[context.method];
23361    if (method === undefined) {
23362      // A .throw or .return when the delegate iterator has no .throw
23363      // method always terminates the yield* loop.
23364      context.delegate = null;
23365
23366      if (context.method === "throw") {
23367        if (delegate.iterator.return) {
23368          // If the delegate iterator has a return method, give it a
23369          // chance to clean up.
23370          context.method = "return";
23371          context.arg = undefined;
23372          maybeInvokeDelegate(delegate, context);
23373
23374          if (context.method === "throw") {
23375            // If maybeInvokeDelegate(context) changed context.method from
23376            // "return" to "throw", let that override the TypeError below.
23377            return ContinueSentinel;
23378          }
23379        }
23380
23381        context.method = "throw";
23382        context.arg = new TypeError(
23383          "The iterator does not provide a 'throw' method");
23384      }
23385
23386      return ContinueSentinel;
23387    }
23388
23389    var record = tryCatch(method, delegate.iterator, context.arg);
23390
23391    if (record.type === "throw") {
23392      context.method = "throw";
23393      context.arg = record.arg;
23394      context.delegate = null;
23395      return ContinueSentinel;
23396    }
23397
23398    var info = record.arg;
23399
23400    if (! info) {
23401      context.method = "throw";
23402      context.arg = new TypeError("iterator result is not an object");
23403      context.delegate = null;
23404      return ContinueSentinel;
23405    }
23406
23407    if (info.done) {
23408      // Assign the result of the finished delegate to the temporary
23409      // variable specified by delegate.resultName (see delegateYield).
23410      context[delegate.resultName] = info.value;
23411
23412      // Resume execution at the desired location (see delegateYield).
23413      context.next = delegate.nextLoc;
23414
23415      // If context.method was "throw" but the delegate handled the
23416      // exception, let the outer generator proceed normally. If
23417      // context.method was "next", forget context.arg since it has been
23418      // "consumed" by the delegate iterator. If context.method was
23419      // "return", allow the original .return call to continue in the
23420      // outer generator.
23421      if (context.method !== "return") {
23422        context.method = "next";
23423        context.arg = undefined;
23424      }
23425
23426    } else {
23427      // Re-yield the result returned by the delegate method.
23428      return info;
23429    }
23430
23431    // The delegate iterator is finished, so forget it and continue with
23432    // the outer generator.
23433    context.delegate = null;
23434    return ContinueSentinel;
23435  }
23436
23437  // Define Generator.prototype.{next,throw,return} in terms of the
23438  // unified ._invoke helper method.
23439  defineIteratorMethods(Gp);
23440
23441  Gp[toStringTagSymbol] = "Generator";
23442
23443  // A Generator should always return itself as the iterator object when the
23444  // @@iterator function is called on it. Some browsers' implementations of the
23445  // iterator prototype chain incorrectly implement this, causing the Generator
23446  // object to not be returned from this call. This ensures that doesn't happen.
23447  // See https://github.com/facebook/regenerator/issues/274 for more details.
23448  Gp[iteratorSymbol] = function() {
23449    return this;
23450  };
23451
23452  Gp.toString = function() {
23453    return "[object Generator]";
23454  };
23455
23456  function pushTryEntry(locs) {
23457    var entry = { tryLoc: locs[0] };
23458
23459    if (1 in locs) {
23460      entry.catchLoc = locs[1];
23461    }
23462
23463    if (2 in locs) {
23464      entry.finallyLoc = locs[2];
23465      entry.afterLoc = locs[3];
23466    }
23467
23468    this.tryEntries.push(entry);
23469  }
23470
23471  function resetTryEntry(entry) {
23472    var record = entry.completion || {};
23473    record.type = "normal";
23474    delete record.arg;
23475    entry.completion = record;
23476  }
23477
23478  function Context(tryLocsList) {
23479    // The root entry object (effectively a try statement without a catch
23480    // or a finally block) gives us a place to store values thrown from
23481    // locations where there is no enclosing try statement.
23482    this.tryEntries = [{ tryLoc: "root" }];
23483    tryLocsList.forEach(pushTryEntry, this);
23484    this.reset(true);
23485  }
23486
23487  runtime.keys = function(object) {
23488    var keys = [];
23489    for (var key in object) {
23490      keys.push(key);
23491    }
23492    keys.reverse();
23493
23494    // Rather than returning an object with a next method, we keep
23495    // things simple and return the next function itself.
23496    return function next() {
23497      while (keys.length) {
23498        var key = keys.pop();
23499        if (key in object) {
23500          next.value = key;
23501          next.done = false;
23502          return next;
23503        }
23504      }
23505
23506      // To avoid creating an additional object, we just hang the .value
23507      // and .done properties off the next function object itself. This
23508      // also ensures that the minifier will not anonymize the function.
23509      next.done = true;
23510      return next;
23511    };
23512  };
23513
23514  function values(iterable) {
23515    if (iterable) {
23516      var iteratorMethod = iterable[iteratorSymbol];
23517      if (iteratorMethod) {
23518        return iteratorMethod.call(iterable);
23519      }
23520
23521      if (typeof iterable.next === "function") {
23522        return iterable;
23523      }
23524
23525      if (!isNaN(iterable.length)) {
23526        var i = -1, next = function next() {
23527          while (++i < iterable.length) {
23528            if (hasOwn.call(iterable, i)) {
23529              next.value = iterable[i];
23530              next.done = false;
23531              return next;
23532            }
23533          }
23534
23535          next.value = undefined;
23536          next.done = true;
23537
23538          return next;
23539        };
23540
23541        return next.next = next;
23542      }
23543    }
23544
23545    // Return an iterator with no values.
23546    return { next: doneResult };
23547  }
23548  runtime.values = values;
23549
23550  function doneResult() {
23551    return { value: undefined, done: true };
23552  }
23553
23554  Context.prototype = {
23555    constructor: Context,
23556
23557    reset: function(skipTempReset) {
23558      this.prev = 0;
23559      this.next = 0;
23560      // Resetting context._sent for legacy support of Babel's
23561      // function.sent implementation.
23562      this.sent = this._sent = undefined;
23563      this.done = false;
23564      this.delegate = null;
23565
23566      this.method = "next";
23567      this.arg = undefined;
23568
23569      this.tryEntries.forEach(resetTryEntry);
23570
23571      if (!skipTempReset) {
23572        for (var name in this) {
23573          // Not sure about the optimal order of these conditions:
23574          if (name.charAt(0) === "t" &&
23575              hasOwn.call(this, name) &&
23576              !isNaN(+name.slice(1))) {
23577            this[name] = undefined;
23578          }
23579        }
23580      }
23581    },
23582
23583    stop: function() {
23584      this.done = true;
23585
23586      var rootEntry = this.tryEntries[0];
23587      var rootRecord = rootEntry.completion;
23588      if (rootRecord.type === "throw") {
23589        throw rootRecord.arg;
23590      }
23591
23592      return this.rval;
23593    },
23594
23595    dispatchException: function(exception) {
23596      if (this.done) {
23597        throw exception;
23598      }
23599
23600      var context = this;
23601      function handle(loc, caught) {
23602        record.type = "throw";
23603        record.arg = exception;
23604        context.next = loc;
23605
23606        if (caught) {
23607          // If the dispatched exception was caught by a catch block,
23608          // then let that catch block handle the exception normally.
23609          context.method = "next";
23610          context.arg = undefined;
23611        }
23612
23613        return !! caught;
23614      }
23615
23616      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
23617        var entry = this.tryEntries[i];
23618        var record = entry.completion;
23619
23620        if (entry.tryLoc === "root") {
23621          // Exception thrown outside of any try block that could handle
23622          // it, so set the completion value of the entire function to
23623          // throw the exception.
23624          return handle("end");
23625        }
23626
23627        if (entry.tryLoc <= this.prev) {
23628          var hasCatch = hasOwn.call(entry, "catchLoc");
23629          var hasFinally = hasOwn.call(entry, "finallyLoc");
23630
23631          if (hasCatch && hasFinally) {
23632            if (this.prev < entry.catchLoc) {
23633              return handle(entry.catchLoc, true);
23634            } else if (this.prev < entry.finallyLoc) {
23635              return handle(entry.finallyLoc);
23636            }
23637
23638          } else if (hasCatch) {
23639            if (this.prev < entry.catchLoc) {
23640              return handle(entry.catchLoc, true);
23641            }
23642
23643          } else if (hasFinally) {
23644            if (this.prev < entry.finallyLoc) {
23645              return handle(entry.finallyLoc);
23646            }
23647
23648          } else {
23649            throw new Error("try statement without catch or finally");
23650          }
23651        }
23652      }
23653    },
23654
23655    abrupt: function(type, arg) {
23656      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
23657        var entry = this.tryEntries[i];
23658        if (entry.tryLoc <= this.prev &&
23659            hasOwn.call(entry, "finallyLoc") &&
23660            this.prev < entry.finallyLoc) {
23661          var finallyEntry = entry;
23662          break;
23663        }
23664      }
23665
23666      if (finallyEntry &&
23667          (type === "break" ||
23668           type === "continue") &&
23669          finallyEntry.tryLoc <= arg &&
23670          arg <= finallyEntry.finallyLoc) {
23671        // Ignore the finally entry if control is not jumping to a
23672        // location outside the try/catch block.
23673        finallyEntry = null;
23674      }
23675
23676      var record = finallyEntry ? finallyEntry.completion : {};
23677      record.type = type;
23678      record.arg = arg;
23679
23680      if (finallyEntry) {
23681        this.method = "next";
23682        this.next = finallyEntry.finallyLoc;
23683        return ContinueSentinel;
23684      }
23685
23686      return this.complete(record);
23687    },
23688
23689    complete: function(record, afterLoc) {
23690      if (record.type === "throw") {
23691        throw record.arg;
23692      }
23693
23694      if (record.type === "break" ||
23695          record.type === "continue") {
23696        this.next = record.arg;
23697      } else if (record.type === "return") {
23698        this.rval = this.arg = record.arg;
23699        this.method = "return";
23700        this.next = "end";
23701      } else if (record.type === "normal" && afterLoc) {
23702        this.next = afterLoc;
23703      }
23704
23705      return ContinueSentinel;
23706    },
23707
23708    finish: function(finallyLoc) {
23709      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
23710        var entry = this.tryEntries[i];
23711        if (entry.finallyLoc === finallyLoc) {
23712          this.complete(entry.completion, entry.afterLoc);
23713          resetTryEntry(entry);
23714          return ContinueSentinel;
23715        }
23716      }
23717    },
23718
23719    "catch": function(tryLoc) {
23720      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
23721        var entry = this.tryEntries[i];
23722        if (entry.tryLoc === tryLoc) {
23723          var record = entry.completion;
23724          if (record.type === "throw") {
23725            var thrown = record.arg;
23726            resetTryEntry(entry);
23727          }
23728          return thrown;
23729        }
23730      }
23731
23732      // The context.catch method must only be called with a location
23733      // argument that corresponds to a known catch block.
23734      throw new Error("illegal catch attempt");
23735    },
23736
23737    delegateYield: function(iterable, resultName, nextLoc) {
23738      this.delegate = {
23739        iterator: values(iterable),
23740        resultName: resultName,
23741        nextLoc: nextLoc
23742      };
23743
23744      if (this.method === "next") {
23745        // Deliberately forget the last sent value so that we don't
23746        // accidentally pass it on to the delegate.
23747        this.arg = undefined;
23748      }
23749
23750      return ContinueSentinel;
23751    }
23752  };
23753})(
23754  // In sloppy mode, unbound `this` refers to the global object, fallback to
23755  // Function constructor if we're in global strict mode. That is sadly a form
23756  // of indirect eval which violates Content Security Policy.
23757  (function() { return this })() || Function("return this")()
23758);
23759
23760
23761/***/ }),
23762
vendor: 105,434 bytes, lines 23763-26562
23763/***/ "./node_modules/scrollmagic/scrollmagic/uncompressed/ScrollMagic.js":
23764/*!**************************************************************************!*\
23765  !*** ./node_modules/scrollmagic/scrollmagic/uncompressed/ScrollMagic.js ***!
23766  \**************************************************************************/
23767/*! no static exports found */
23768/***/ (function(module, exports, __webpack_require__) {
23769
23770var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
23771 * ScrollMagic v2.0.6 (2018-10-08)
23772 * The javascript library for magical scroll interactions.
23773 * (c) 2018 Jan Paepke (@janpaepke)
23774 * Project Website: http://scrollmagic.io
23775 * 
23776 * @version 2.0.6
23777 * @license Dual licensed under MIT license and GPL.
23778 * @author Jan Paepke - [email protected]
23779 *
23780 * @file ScrollMagic main library.
23781 */
23782/**
23783 * @namespace ScrollMagic
23784 */
23785(function (root, factory) {
23786	if (true) {
23787		// AMD. Register as an anonymous module.
23788		!(__WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
23789				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
23790				(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :
23791				__WEBPACK_AMD_DEFINE_FACTORY__),
23792				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
23793	} else {}
23794}(this, function () {
23795	"use strict";
23796
23797	var ScrollMagic = function () {
23798		_util.log(2, '(COMPATIBILITY NOTICE) -> As of ScrollMagic 2.0.0 you need to use \'new ScrollMagic.Controller()\' to create a new controller instance. Use \'new ScrollMagic.Scene()\' to instance a scene.');
23799	};
23800
23801	ScrollMagic.version = "2.0.6";
23802
23803	// TODO: temporary workaround for chrome's scroll jitter bug
23804	window.addEventListener("mousewheel", function () {});
23805
23806	// global const
23807	var PIN_SPACER_ATTRIBUTE = "data-scrollmagic-pin-spacer";
23808
23809	/**
23810	 * The main class that is needed once per scroll container.
23811	 *
23812	 * @class
23813	 *
23814	 * @example
23815	 * // basic initialization
23816	 * var controller = new ScrollMagic.Controller();
23817	 *
23818	 * // passing options
23819	 * var controller = new ScrollMagic.Controller({container: "#myContainer", loglevel: 3});
23820	 *
23821	 * @param {object} [options] - An object containing one or more options for the controller.
23822	 * @param {(string|object)} [options.container=window] - A selector, DOM object that references the main container for scrolling.
23823	 * @param {boolean} [options.vertical=true] - Sets the scroll mode to vertical (`true`) or horizontal (`false`) scrolling.
23824	 * @param {object} [options.globalSceneOptions={}] - These options will be passed to every Scene that is added to the controller using the addScene method. For more information on Scene options see {@link ScrollMagic.Scene}.
23825	 * @param {number} [options.loglevel=2] Loglevel for debugging. Note that logging is disabled in the minified version of ScrollMagic.
23826	 ** `0` => silent
23827	 ** `1` => errors
23828	 ** `2` => errors, warnings
23829	 ** `3` => errors, warnings, debuginfo
23830	 * @param {boolean} [options.refreshInterval=100] - Some changes don't call events by default, like changing the container size or moving a scene trigger element.  
23831	 This interval polls these parameters to fire the necessary events.  
23832	 If you don't use custom containers, trigger elements or have static layouts, where the positions of the trigger elements don't change, you can set this to 0 disable interval checking and improve performance.
23833	 *
23834	 */
23835	ScrollMagic.Controller = function (options) {
23836/*
23837	 * ----------------------------------------------------------------
23838	 * settings
23839	 * ----------------------------------------------------------------
23840	 */
23841		var
23842		NAMESPACE = 'ScrollMagic.Controller',
23843			SCROLL_DIRECTION_FORWARD = 'FORWARD',
23844			SCROLL_DIRECTION_REVERSE = 'REVERSE',
23845			SCROLL_DIRECTION_PAUSED = 'PAUSED',
23846			DEFAULT_OPTIONS = CONTROLLER_OPTIONS.defaults;
23847
23848/*
23849	 * ----------------------------------------------------------------
23850	 * private vars
23851	 * ----------------------------------------------------------------
23852	 */
23853		var
23854		Controller = this,
23855			_options = _util.extend({}, DEFAULT_OPTIONS, options),
23856			_sceneObjects = [],
23857			_updateScenesOnNextCycle = false,
23858			// can be boolean (true => all scenes) or an array of scenes to be updated
23859			_scrollPos = 0,
23860			_scrollDirection = SCROLL_DIRECTION_PAUSED,
23861			_isDocument = true,
23862			_viewPortSize = 0,
23863			_enabled = true,
23864			_updateTimeout, _refreshTimeout;
23865
23866/*
23867	 * ----------------------------------------------------------------
23868	 * private functions
23869	 * ----------------------------------------------------------------
23870	 */
23871
23872		/**
23873		 * Internal constructor function of the ScrollMagic Controller
23874		 * @private
23875		 */
23876		var construct = function () {
23877			for (var key in _options) {
23878				if (!DEFAULT_OPTIONS.hasOwnProperty(key)) {
23879					log(2, "WARNING: Unknown option \"" + key + "\"");
23880					delete _options[key];
23881				}
23882			}
23883			_options.container = _util.get.elements(_options.container)[0];
23884			// check ScrollContainer
23885			if (!_options.container) {
23886				log(1, "ERROR creating object " + NAMESPACE + ": No valid scroll container supplied");
23887				throw NAMESPACE + " init failed."; // cancel
23888			}
23889			_isDocument = _options.container === window || _options.container === document.body || !document.body.contains(_options.container);
23890			// normalize to window
23891			if (_isDocument) {
23892				_options.container = window;
23893			}
23894			// update container size immediately
23895			_viewPortSize = getViewportSize();
23896			// set event handlers
23897			_options.container.addEventListener("resize", onChange);
23898			_options.container.addEventListener("scroll", onChange);
23899
23900			var ri = parseInt(_options.refreshInterval, 10);
23901			_options.refreshInterval = _util.type.Number(ri) ? ri : DEFAULT_OPTIONS.refreshInterval;
23902			scheduleRefresh();
23903
23904			log(3, "added new " + NAMESPACE + " controller (v" + ScrollMagic.version + ")");
23905		};
23906
23907		/**
23908		 * Schedule the next execution of the refresh function
23909		 * @private
23910		 */
23911		var scheduleRefresh = function () {
23912			if (_options.refreshInterval > 0) {
23913				_refreshTimeout = window.setTimeout(refresh, _options.refreshInterval);
23914			}
23915		};
23916
23917		/**
23918		 * Default function to get scroll pos - overwriteable using `Controller.scrollPos(newFunction)`
23919		 * @private
23920		 */
23921		var getScrollPos = function () {
23922			return _options.vertical ? _util.get.scrollTop(_options.container) : _util.get.scrollLeft(_options.container);
23923		};
23924
23925		/**
23926		 * Returns the current viewport Size (width vor horizontal, height for vertical)
23927		 * @private
23928		 */
23929		var getViewportSize = function () {
23930			return _options.vertical ? _util.get.height(_options.container) : _util.get.width(_options.container);
23931		};
23932
23933		/**
23934		 * Default function to set scroll pos - overwriteable using `Controller.scrollTo(newFunction)`
23935		 * Make available publicly for pinned mousewheel workaround.
23936		 * @private
23937		 */
23938		var setScrollPos = this._setScrollPos = function (pos) {
23939			if (_options.vertical) {
23940				if (_isDocument) {
23941					window.scrollTo(_util.get.scrollLeft(), pos);
23942				} else {
23943					_options.container.scrollTop = pos;
23944				}
23945			} else {
23946				if (_isDocument) {
23947					window.scrollTo(pos, _util.get.scrollTop());
23948				} else {
23949					_options.container.scrollLeft = pos;
23950				}
23951			}
23952		};
23953
23954		/**
23955		 * Handle updates in cycles instead of on scroll (performance)
23956		 * @private
23957		 */
23958		var updateScenes = function () {
23959			if (_enabled && _updateScenesOnNextCycle) {
23960				// determine scenes to update
23961				var scenesToUpdate = _util.type.Array(_updateScenesOnNextCycle) ? _updateScenesOnNextCycle : _sceneObjects.slice(0);
23962				// reset scenes
23963				_updateScenesOnNextCycle = false;
23964				var oldScrollPos = _scrollPos;
23965				// update scroll pos now instead of onChange, as it might have changed since scheduling (i.e. in-browser smooth scroll)
23966				_scrollPos = Controller.scrollPos();
23967				var deltaScroll = _scrollPos - oldScrollPos;
23968				if (deltaScroll !== 0) { // scroll position changed?
23969					_scrollDirection = (deltaScroll > 0) ? SCROLL_DIRECTION_FORWARD : SCROLL_DIRECTION_REVERSE;
23970				}
23971				// reverse order of scenes if scrolling reverse
23972				if (_scrollDirection === SCROLL_DIRECTION_REVERSE) {
23973					scenesToUpdate.reverse();
23974				}
23975				// update scenes
23976				scenesToUpdate.forEach(function (scene, index) {
23977					log(3, "updating Scene " + (index + 1) + "/" + scenesToUpdate.length + " (" + _sceneObjects.length + " total)");
23978					scene.update(true);
23979				});
23980				if (scenesToUpdate.length === 0 && _options.loglevel >= 3) {
23981					log(3, "updating 0 Scenes (nothing added to controller)");
23982				}
23983			}
23984		};
23985
23986		/**
23987		 * Initializes rAF callback
23988		 * @private
23989		 */
23990		var debounceUpdate = function () {
23991			_updateTimeout = _util.rAF(updateScenes);
23992		};
23993
23994		/**
23995		 * Handles Container changes
23996		 * @private
23997		 */
23998		var onChange = function (e) {
23999			log(3, "event fired causing an update:", e.type);
24000			if (e.type == "resize") {
24001				// resize
24002				_viewPortSize = getViewportSize();
24003				_scrollDirection = SCROLL_DIRECTION_PAUSED;
24004			}
24005			// schedule update
24006			if (_updateScenesOnNextCycle !== true) {
24007				_updateScenesOnNextCycle = true;
24008				debounceUpdate();
24009			}
24010		};
24011
24012		var refresh = function () {
24013			if (!_isDocument) {
24014				// simulate resize event. Only works for viewport relevant param (performance)
24015				if (_viewPortSize != getViewportSize()) {
24016					var resizeEvent;
24017					try {
24018						resizeEvent = new Event('resize', {
24019							bubbles: false,
24020							cancelable: false
24021						});
24022					} catch (e) { // stupid IE
24023						resizeEvent = document.createEvent("Event");
24024						resizeEvent.initEvent("resize", false, false);
24025					}
24026					_options.container.dispatchEvent(resizeEvent);
24027				}
24028			}
24029			_sceneObjects.forEach(function (scene, index) { // refresh all scenes
24030				scene.refresh();
24031			});
24032			scheduleRefresh();
24033		};
24034
24035		/**
24036		 * Send a debug message to the console.
24037		 * provided publicly with _log for plugins
24038		 * @private
24039		 *
24040		 * @param {number} loglevel - The loglevel required to initiate output for the message.
24041		 * @param {...mixed} output - One or more variables that should be passed to the console.
24042		 */
24043		var log = this._log = function (loglevel, output) {
24044			if (_options.loglevel >= loglevel) {
24045				Array.prototype.splice.call(arguments, 1, 0, "(" + NAMESPACE + ") ->");
24046				_util.log.apply(window, arguments);
24047			}
24048		};
24049		// for scenes we have getters for each option, but for the controller we don't, so we need to make it available externally for plugins
24050		this._options = _options;
24051
24052		/**
24053		 * Sort scenes in ascending order of their start offset.
24054		 * @private
24055		 *
24056		 * @param {array} ScenesArray - an array of ScrollMagic Scenes that should be sorted
24057		 * @return {array} The sorted array of Scenes.
24058		 */
24059		var sortScenes = function (ScenesArray) {
24060			if (ScenesArray.length <= 1) {
24061				return ScenesArray;
24062			} else {
24063				var scenes = ScenesArray.slice(0);
24064				scenes.sort(function (a, b) {
24065					return a.scrollOffset() > b.scrollOffset() ? 1 : -1;
24066				});
24067				return scenes;
24068			}
24069		};
24070
24071		/**
24072		 * ----------------------------------------------------------------
24073		 * public functions
24074		 * ----------------------------------------------------------------
24075		 */
24076
24077		/**
24078		 * Add one ore more scene(s) to the controller.  
24079		 * This is the equivalent to `Scene.addTo(controller)`.
24080		 * @public
24081		 * @example
24082		 * // with a previously defined scene
24083		 * controller.addScene(scene);
24084		 *
24085		 * // with a newly created scene.
24086		 * controller.addScene(new ScrollMagic.Scene({duration : 0}));
24087		 *
24088		 * // adding multiple scenes
24089		 * controller.addScene([scene, scene2, new ScrollMagic.Scene({duration : 0})]);
24090		 *
24091		 * @param {(ScrollMagic.Scene|array)} newScene - ScrollMagic Scene or Array of Scenes to be added to the controller.
24092		 * @return {Controller} Parent object for chaining.
24093		 */
24094		this.addScene = function (newScene) {
24095			if (_util.type.Array(newScene)) {
24096				newScene.forEach(function (scene, index) {
24097					Controller.addScene(scene);
24098				});
24099			} else if (newScene instanceof ScrollMagic.Scene) {
24100				if (newScene.controller() !== Controller) {
24101					newScene.addTo(Controller);
24102				} else if (_sceneObjects.indexOf(newScene) < 0) {
24103					// new scene
24104					_sceneObjects.push(newScene); // add to array
24105					_sceneObjects = sortScenes(_sceneObjects); // sort
24106					newScene.on("shift.controller_sort", function () { // resort whenever scene moves
24107						_sceneObjects = sortScenes(_sceneObjects);
24108					});
24109					// insert Global defaults.
24110					for (var key in _options.globalSceneOptions) {
24111						if (newScene[key]) {
24112							newScene[key].call(newScene, _options.globalSceneOptions[key]);
24113						}
24114					}
24115					log(3, "adding Scene (now " + _sceneObjects.length + " total)");
24116				}
24117			} else {
24118				log(1, "ERROR: invalid argument supplied for '.addScene()'");
24119			}
24120			return Controller;
24121		};
24122
24123		/**
24124		 * Remove one ore more scene(s) from the controller.  
24125		 * This is the equivalent to `Scene.remove()`.
24126		 * @public
24127		 * @example
24128		 * // remove a scene from the controller
24129		 * controller.removeScene(scene);
24130		 *
24131		 * // remove multiple scenes from the controller
24132		 * controller.removeScene([scene, scene2, scene3]);
24133		 *
24134		 * @param {(ScrollMagic.Scene|array)} Scene - ScrollMagic Scene or Array of Scenes to be removed from the controller.
24135		 * @returns {Controller} Parent object for chaining.
24136		 */
24137		this.removeScene = function (Scene) {
24138			if (_util.type.Array(Scene)) {
24139				Scene.forEach(function (scene, index) {
24140					Controller.removeScene(scene);
24141				});
24142			} else {
24143				var index = _sceneObjects.indexOf(Scene);
24144				if (index > -1) {
24145					Scene.off("shift.controller_sort");
24146					_sceneObjects.splice(index, 1);
24147					log(3, "removing Scene (now " + _sceneObjects.length + " left)");
24148					Scene.remove();
24149				}
24150			}
24151			return Controller;
24152		};
24153
24154		/**
24155		 * Update one ore more scene(s) according to the scroll position of the container.  
24156		 * This is the equivalent to `Scene.update()`.  
24157		 * The update method calculates the scene's start and end position (based on the trigger element, trigger hook, duration and offset) and checks it against the current scroll position of the container.  
24158		 * It then updates the current scene state accordingly (or does nothing, if the state is already correct) – Pins will be set to their correct position and tweens will be updated to their correct progress.  
24159		 * _**Note:** This method gets called constantly whenever Controller detects a change. The only application for you is if you change something outside of the realm of ScrollMagic, like moving the trigger or changing tween parameters._
24160		 * @public
24161		 * @example
24162		 * // update a specific scene on next cycle
24163		 * controller.updateScene(scene);
24164		 *
24165		 * // update a specific scene immediately
24166		 * controller.updateScene(scene, true);
24167		 *
24168		 * // update multiple scenes scene on next cycle
24169		 * controller.updateScene([scene1, scene2, scene3]);
24170		 *
24171		 * @param {ScrollMagic.Scene} Scene - ScrollMagic Scene or Array of Scenes that is/are supposed to be updated.
24172		 * @param {boolean} [immediately=false] - If `true` the update will be instant, if `false` it will wait until next update cycle.  
24173		 This is useful when changing multiple properties of the scene - this way it will only be updated once all new properties are set (updateScenes).
24174		 * @return {Controller} Parent object for chaining.
24175		 */
24176		this.updateScene = function (Scene, immediately) {
24177			if (_util.type.Array(Scene)) {
24178				Scene.forEach(function (scene, index) {
24179					Controller.updateScene(scene, immediately);
24180				});
24181			} else {
24182				if (immediately) {
24183					Scene.update(true);
24184				} else if (_updateScenesOnNextCycle !== true && Scene instanceof ScrollMagic.Scene) { // if _updateScenesOnNextCycle is true, all connected scenes are already scheduled for update
24185					// prep array for next update cycle
24186					_updateScenesOnNextCycle = _updateScenesOnNextCycle || [];
24187					if (_updateScenesOnNextCycle.indexOf(Scene) == -1) {
24188						_updateScenesOnNextCycle.push(Scene);
24189					}
24190					_updateScenesOnNextCycle = sortScenes(_updateScenesOnNextCycle); // sort
24191					debounceUpdate();
24192				}
24193			}
24194			return Controller;
24195		};
24196
24197		/**
24198		 * Updates the controller params and calls updateScene on every scene, that is attached to the controller.  
24199		 * See `Controller.updateScene()` for more information about what this means.  
24200		 * In most cases you will not need this function, as it is called constantly, whenever ScrollMagic detects a state change event, like resize or scroll.  
24201		 * The only application for this method is when ScrollMagic fails to detect these events.  
24202		 * One application is with some external scroll libraries (like iScroll) that move an internal container to a negative offset instead of actually scrolling. In this case the update on the controller needs to be called whenever the child container's position changes.
24203		 * For this case there will also be the need to provide a custom function to calculate the correct scroll position. See `Controller.scrollPos()` for details.
24204		 * @public
24205		 * @example
24206		 * // update the controller on next cycle (saves performance due to elimination of redundant updates)
24207		 * controller.update();
24208		 *
24209		 * // update the controller immediately
24210		 * controller.update(true);
24211		 *
24212		 * @param {boolean} [immediately=false] - If `true` the update will be instant, if `false` it will wait until next update cycle (better performance)
24213		 * @return {Controller} Parent object for chaining.
24214		 */
24215		this.update = function (immediately) {
24216			onChange({
24217				type: "resize"
24218			}); // will update size and set _updateScenesOnNextCycle to true
24219			if (immediately) {
24220				updateScenes();
24221			}
24222			return Controller;
24223		};
24224
24225		/**
24226		 * Scroll to a numeric scroll offset, a DOM element, the start of a scene or provide an alternate method for scrolling.  
24227		 * For vertical controllers it will change the top scroll offset and for horizontal applications it will change the left offset.
24228		 * @public
24229		 *
24230		 * @since 1.1.0
24231		 * @example
24232		 * // scroll to an offset of 100
24233		 * controller.scrollTo(100);
24234		 *
24235		 * // scroll to a DOM element
24236		 * controller.scrollTo("#anchor");
24237		 *
24238		 * // scroll to the beginning of a scene
24239		 * var scene = new ScrollMagic.Scene({offset: 200});
24240		 * controller.scrollTo(scene);
24241		 *
24242		 * // define a new scroll position modification function (jQuery animate instead of jump)
24243		 * controller.scrollTo(function (newScrollPos) {
24244		 *	$("html, body").animate({scrollTop: newScrollPos});
24245		 * });
24246		 * controller.scrollTo(100); // call as usual, but the new function will be used instead
24247		 *
24248		 * // define a new scroll function with an additional parameter
24249		 * controller.scrollTo(function (newScrollPos, message) {
24250		 *  console.log(message);
24251		 *	$(this).animate({scrollTop: newScrollPos});
24252		 * });
24253		 * // call as usual, but supply an extra parameter to the defined custom function
24254		 * controller.scrollTo(100, "my message");
24255		 *
24256		 * // define a new scroll function with an additional parameter containing multiple variables
24257		 * controller.scrollTo(function (newScrollPos, options) {
24258		 *  someGlobalVar = options.a + options.b;
24259		 *	$(this).animate({scrollTop: newScrollPos});
24260		 * });
24261		 * // call as usual, but supply an extra parameter containing multiple options
24262		 * controller.scrollTo(100, {a: 1, b: 2});
24263		 *
24264		 * // define a new scroll function with a callback supplied as an additional parameter
24265		 * controller.scrollTo(function (newScrollPos, callback) {
24266		 *	$(this).animate({scrollTop: newScrollPos}, 400, "swing", callback);
24267		 * });
24268		 * // call as usual, but supply an extra parameter, which is used as a callback in the previously defined custom scroll function
24269		 * controller.scrollTo(100, function() {
24270		 *	console.log("scroll has finished.");
24271		 * });
24272		 *
24273		 * @param {mixed} scrollTarget - The supplied argument can be one of these types:
24274		 * 1. `number` -> The container will scroll to this new scroll offset.
24275		 * 2. `string` or `object` -> Can be a selector or a DOM object.  
24276		 *  The container will scroll to the position of this element.
24277		 * 3. `ScrollMagic Scene` -> The container will scroll to the start of this scene.
24278		 * 4. `function` -> This function will be used for future scroll position modifications.  
24279		 *  This provides a way for you to change the behaviour of scrolling and adding new behaviour like animation. The function receives the new scroll position as a parameter and a reference to the container element using `this`.  
24280		 *  It may also optionally receive an optional additional parameter (see below)  
24281		 *  _**NOTE:**  
24282		 *  All other options will still work as expected, using the new function to scroll._
24283		 * @param {mixed} [additionalParameter] - If a custom scroll function was defined (see above 4.), you may want to supply additional parameters to it, when calling it. You can do this using this parameter – see examples for details. Please note, that this parameter will have no effect, if you use the default scrolling function.
24284		 * @returns {Controller} Parent object for chaining.
24285		 */
24286		this.scrollTo = function (scrollTarget, additionalParameter) {
24287			if (_util.type.Number(scrollTarget)) { // excecute
24288				setScrollPos.call(_options.container, scrollTarget, additionalParameter);
24289			} else if (scrollTarget instanceof ScrollMagic.Scene) { // scroll to scene
24290				if (scrollTarget.controller() === Controller) { // check if the controller is associated with this scene
24291					Controller.scrollTo(scrollTarget.scrollOffset(), additionalParameter);
24292				} else {
24293					log(2, "scrollTo(): The supplied scene does not belong to this controller. Scroll cancelled.", scrollTarget);
24294				}
24295			} else if (_util.type.Function(scrollTarget)) { // assign new scroll function
24296				setScrollPos = scrollTarget;
24297			} else { // scroll to element
24298				var elem = _util.get.elements(scrollTarget)[0];
24299				if (elem) {
24300					// if parent is pin spacer, use spacer position instead so correct start position is returned for pinned elements.
24301					while (elem.parentNode.hasAttribute(PIN_SPACER_ATTRIBUTE)) {
24302						elem = elem.parentNode;
24303					}
24304
24305					var
24306					param = _options.vertical ? "top" : "left",
24307						// which param is of interest ?
24308						containerOffset = _util.get.offset(_options.container),
24309						// container position is needed because element offset is returned in relation to document, not in relation to container.
24310						elementOffset = _util.get.offset(elem);
24311
24312					if (!_isDocument) { // container is not the document root, so substract scroll Position to get correct trigger element position relative to scrollcontent
24313						containerOffset[param] -= Controller.scrollPos();
24314					}
24315
24316					Controller.scrollTo(elementOffset[param] - containerOffset[param], additionalParameter);
24317				} else {
24318					log(2, "scrollTo(): The supplied argument is invalid. Scroll cancelled.", scrollTarget);
24319				}
24320			}
24321			return Controller;
24322		};
24323
24324		/**
24325		 * **Get** the current scrollPosition or **Set** a new method to calculate it.  
24326		 * -> **GET**:
24327		 * When used as a getter this function will return the current scroll position.  
24328		 * To get a cached value use Controller.info("scrollPos"), which will be updated in the update cycle.  
24329		 * For vertical controllers it will return the top scroll offset and for horizontal applications it will return the left offset.
24330		 *
24331		 * -> **SET**:
24332		 * When used as a setter this method prodes a way to permanently overwrite the controller's scroll position calculation.  
24333		 * A typical usecase is when the scroll position is not reflected by the containers scrollTop or scrollLeft values, but for example by the inner offset of a child container.  
24334		 * Moving a child container inside a parent is a commonly used method for several scrolling frameworks, including iScroll.  
24335		 * By providing an alternate calculation function you can make sure ScrollMagic receives the correct scroll position.  
24336		 * Please also bear in mind that your function should return y values for vertical scrolls an x for horizontals.
24337		 *
24338		 * To change the current scroll position please use `Controller.scrollTo()`.
24339		 * @public
24340		 *
24341		 * @example
24342		 * // get the current scroll Position
24343		 * var scrollPos = controller.scrollPos();
24344		 *
24345		 * // set a new scroll position calculation method
24346		 * controller.scrollPos(function () {
24347		 *	return this.info("vertical") ? -mychildcontainer.y : -mychildcontainer.x
24348		 * });
24349		 *
24350		 * @param {function} [scrollPosMethod] - The function to be used for the scroll position calculation of the container.
24351		 * @returns {(number|Controller)} Current scroll position or parent object for chaining.
24352		 */
24353		this.scrollPos = function (scrollPosMethod) {
24354			if (!arguments.length) { // get
24355				return getScrollPos.call(Controller);
24356			} else { // set
24357				if (_util.type.Function(scrollPosMethod)) {
24358					getScrollPos = scrollPosMethod;
24359				} else {
24360					log(2, "Provided value for method 'scrollPos' is not a function. To change the current scroll position use 'scrollTo()'.");
24361				}
24362			}
24363			return Controller;
24364		};
24365
24366		/**
24367		 * **Get** all infos or one in particular about the controller.
24368		 * @public
24369		 * @example
24370		 * // returns the current scroll position (number)
24371		 * var scrollPos = controller.info("scrollPos");
24372		 *
24373		 * // returns all infos as an object
24374		 * var infos = controller.info();
24375		 *
24376		 * @param {string} [about] - If passed only this info will be returned instead of an object containing all.  
24377		 Valid options are:
24378		 ** `"size"` => the current viewport size of the container
24379		 ** `"vertical"` => true if vertical scrolling, otherwise false
24380		 ** `"scrollPos"` => the current scroll position
24381		 ** `"scrollDirection"` => the last known direction of the scroll
24382		 ** `"container"` => the container element
24383		 ** `"isDocument"` => true if container element is the document.
24384		 * @returns {(mixed|object)} The requested info(s).
24385		 */
24386		this.info = function (about) {
24387			var values = {
24388				size: _viewPortSize,
24389				// contains height or width (in regard to orientation);
24390				vertical: _options.vertical,
24391				scrollPos: _scrollPos,
24392				scrollDirection: _scrollDirection,
24393				container: _options.container,
24394				isDocument: _isDocument
24395			};
24396			if (!arguments.length) { // get all as an object
24397				return values;
24398			} else if (values[about] !== undefined) {
24399				return values[about];
24400			} else {
24401				log(1, "ERROR: option \"" + about + "\" is not available");
24402				return;
24403			}
24404		};
24405
24406		/**
24407		 * **Get** or **Set** the current loglevel option value.
24408		 * @public
24409		 *
24410		 * @example
24411		 * // get the current value
24412		 * var loglevel = controller.loglevel();
24413		 *
24414		 * // set a new value
24415		 * controller.loglevel(3);
24416		 *
24417		 * @param {number} [newLoglevel] - The new loglevel setting of the Controller. `[0-3]`
24418		 * @returns {(number|Controller)} Current loglevel or parent object for chaining.
24419		 */
24420		this.loglevel = function (newLoglevel) {
24421			if (!arguments.length) { // get
24422				return _options.loglevel;
24423			} else if (_options.loglevel != newLoglevel) { // set
24424				_options.loglevel = newLoglevel;
24425			}
24426			return Controller;
24427		};
24428
24429		/**
24430		 * **Get** or **Set** the current enabled state of the controller.  
24431		 * This can be used to disable all Scenes connected to the controller without destroying or removing them.
24432		 * @public
24433		 *
24434		 * @example
24435		 * // get the current value
24436		 * var enabled = controller.enabled();
24437		 *
24438		 * // disable the controller
24439		 * controller.enabled(false);
24440		 *
24441		 * @param {boolean} [newState] - The new enabled state of the controller `true` or `false`.
24442		 * @returns {(boolean|Controller)} Current enabled state or parent object for chaining.
24443		 */
24444		this.enabled = function (newState) {
24445			if (!arguments.length) { // get
24446				return _enabled;
24447			} else if (_enabled != newState) { // set
24448				_enabled = !! newState;
24449				Controller.updateScene(_sceneObjects, true);
24450			}
24451			return Controller;
24452		};
24453
24454		/**
24455		 * Destroy the Controller, all Scenes and everything.
24456		 * @public
24457		 *
24458		 * @example
24459		 * // without resetting the scenes
24460		 * controller = controller.destroy();
24461		 *
24462		 * // with scene reset
24463		 * controller = controller.destroy(true);
24464		 *
24465		 * @param {boolean} [resetScenes=false] - If `true` the pins and tweens (if existent) of all scenes will be reset.
24466		 * @returns {null} Null to unset handler variables.
24467		 */
24468		this.destroy = function (resetScenes) {
24469			window.clearTimeout(_refreshTimeout);
24470			var i = _sceneObjects.length;
24471			while (i--) {
24472				_sceneObjects[i].destroy(resetScenes);
24473			}
24474			_options.container.removeEventListener("resize", onChange);
24475			_options.container.removeEventListener("scroll", onChange);
24476			_util.cAF(_updateTimeout);
24477			log(3, "destroyed " + NAMESPACE + " (reset: " + (resetScenes ? "true" : "false") + ")");
24478			return null;
24479		};
24480
24481		// INIT
24482		construct();
24483		return Controller;
24484	};
24485
24486	// store pagewide controller options
24487	var CONTROLLER_OPTIONS = {
24488		defaults: {
24489			container: window,
24490			vertical: true,
24491			globalSceneOptions: {},
24492			loglevel: 2,
24493			refreshInterval: 100
24494		}
24495	};
24496/*
24497 * method used to add an option to ScrollMagic Scenes.
24498 */
24499	ScrollMagic.Controller.addOption = function (name, defaultValue) {
24500		CONTROLLER_OPTIONS.defaults[name] = defaultValue;
24501	};
24502	// instance extension function for plugins
24503	ScrollMagic.Controller.extend = function (extension) {
24504		var oldClass = this;
24505		ScrollMagic.Controller = function () {
24506			oldClass.apply(this, arguments);
24507			this.$super = _util.extend({}, this); // copy parent state
24508			return extension.apply(this, arguments) || this;
24509		};
24510		_util.extend(ScrollMagic.Controller, oldClass); // copy properties
24511		ScrollMagic.Controller.prototype = oldClass.prototype; // copy prototype
24512		ScrollMagic.Controller.prototype.constructor = ScrollMagic.Controller; // restore constructor
24513	};
24514
24515
24516	/**
24517	 * A Scene defines where the controller should react and how.
24518	 *
24519	 * @class
24520	 *
24521	 * @example
24522	 * // create a standard scene and add it to a controller
24523	 * new ScrollMagic.Scene()
24524	 *		.addTo(controller);
24525	 *
24526	 * // create a scene with custom options and assign a handler to it.
24527	 * var scene = new ScrollMagic.Scene({
24528	 * 		duration: 100,
24529	 *		offset: 200,
24530	 *		triggerHook: "onEnter",
24531	 *		reverse: false
24532	 * });
24533	 *
24534	 * @param {object} [options] - Options for the Scene. The options can be updated at any time.  
24535	 Instead of setting the options for each scene individually you can also set them globally in the controller as the controllers `globalSceneOptions` option. The object accepts the same properties as the ones below.  
24536	 When a scene is added to the controller the options defined using the Scene constructor will be overwritten by those set in `globalSceneOptions`.
24537	 * @param {(number|function)} [options.duration=0] - The duration of the scene. 
24538	 If `0` tweens will auto-play when reaching the scene start point, pins will be pinned indefinetly starting at the start position.  
24539	 A function retuning the duration value is also supported. Please see `Scene.duration()` for details.
24540	 * @param {number} [options.offset=0] - Offset Value for the Trigger Position. If no triggerElement is defined this will be the scroll distance from the start of the page, after which the scene will start.
24541	 * @param {(string|object)} [options.triggerElement=null] - Selector or DOM object that defines the start of the scene. If undefined the scene will start right at the start of the page (unless an offset is set).
24542	 * @param {(number|string)} [options.triggerHook="onCenter"] - Can be a number between 0 and 1 defining the position of the trigger Hook in relation to the viewport.  
24543	 Can also be defined using a string:
24544	 ** `"onEnter"` => `1`
24545	 ** `"onCenter"` => `0.5`
24546	 ** `"onLeave"` => `0`
24547	 * @param {boolean} [options.reverse=true] - Should the scene reverse, when scrolling up?
24548	 * @param {number} [options.loglevel=2] - Loglevel for debugging. Note that logging is disabled in the minified version of ScrollMagic.
24549	 ** `0` => silent
24550	 ** `1` => errors
24551	 ** `2` => errors, warnings
24552	 ** `3` => errors, warnings, debuginfo
24553	 * 
24554	 */
24555	ScrollMagic.Scene = function (options) {
24556
24557/*
24558	 * ----------------------------------------------------------------
24559	 * settings
24560	 * ----------------------------------------------------------------
24561	 */
24562
24563		var
24564		NAMESPACE = 'ScrollMagic.Scene',
24565			SCENE_STATE_BEFORE = 'BEFORE',
24566			SCENE_STATE_DURING = 'DURING',
24567			SCENE_STATE_AFTER = 'AFTER',
24568			DEFAULT_OPTIONS = SCENE_OPTIONS.defaults;
24569
24570/*
24571	 * ----------------------------------------------------------------
24572	 * private vars
24573	 * ----------------------------------------------------------------
24574	 */
24575
24576		var
24577		Scene = this,
24578			_options = _util.extend({}, DEFAULT_OPTIONS, options),
24579			_state = SCENE_STATE_BEFORE,
24580			_progress = 0,
24581			_scrollOffset = {
24582				start: 0,
24583				end: 0
24584			},
24585			// reflects the controllers's scroll position for the start and end of the scene respectively
24586			_triggerPos = 0,
24587			_enabled = true,
24588			_durationUpdateMethod, _controller;
24589
24590		/**
24591		 * Internal constructor function of the ScrollMagic Scene
24592		 * @private
24593		 */
24594		var construct = function () {
24595			for (var key in _options) { // check supplied options
24596				if (!DEFAULT_OPTIONS.hasOwnProperty(key)) {
24597					log(2, "WARNING: Unknown option \"" + key + "\"");
24598					delete _options[key];
24599				}
24600			}
24601			// add getters/setters for all possible options
24602			for (var optionName in DEFAULT_OPTIONS) {
24603				addSceneOption(optionName);
24604			}
24605			// validate all options
24606			validateOption();
24607		};
24608
24609/*
24610 * ----------------------------------------------------------------
24611 * Event Management
24612 * ----------------------------------------------------------------
24613 */
24614
24615		var _listeners = {};
24616		/**
24617		 * Scene start event.  
24618		 * Fires whenever the scroll position its the starting point of the scene.  
24619		 * It will also fire when scrolling back up going over the start position of the scene. If you want something to happen only when scrolling down/right, use the scrollDirection parameter passed to the callback.
24620		 *
24621		 * For details on this event and the order in which it is fired, please review the {@link Scene.progress} method.
24622		 *
24623		 * @event ScrollMagic.Scene#start
24624		 *
24625		 * @example
24626		 * scene.on("start", function (event) {
24627		 * 	console.log("Hit start point of scene.");
24628		 * });
24629		 *
24630		 * @property {object} event - The event Object passed to each callback
24631		 * @property {string} event.type - The name of the event
24632		 * @property {Scene} event.target - The Scene object that triggered this event
24633		 * @property {number} event.progress - Reflects the current progress of the scene
24634		 * @property {string} event.state - The current state of the scene `"BEFORE"` or `"DURING"`
24635		 * @property {string} event.scrollDirection - Indicates which way we are scrolling `"PAUSED"`, `"FORWARD"` or `"REVERSE"`
24636		 */
24637		/**
24638		 * Scene end event.  
24639		 * Fires whenever the scroll position its the ending point of the scene.  
24640		 * It will also fire when scrolling back up from after the scene and going over its end position. If you want something to happen only when scrolling down/right, use the scrollDirection parameter passed to the callback.
24641		 *
24642		 * For details on this event and the order in which it is fired, please review the {@link Scene.progress} method.
24643		 *
24644		 * @event ScrollMagic.Scene#end
24645		 *
24646		 * @example
24647		 * scene.on("end", function (event) {
24648		 * 	console.log("Hit end point of scene.");
24649		 * });
24650		 *
24651		 * @property {object} event - The event Object passed to each callback
24652		 * @property {string} event.type - The name of the event
24653		 * @property {Scene} event.target - The Scene object that triggered this event
24654		 * @property {number} event.progress - Reflects the current progress of the scene
24655		 * @property {string} event.state - The current state of the scene `"DURING"` or `"AFTER"`
24656		 * @property {string} event.scrollDirection - Indicates which way we are scrolling `"PAUSED"`, `"FORWARD"` or `"REVERSE"`
24657		 */
24658		/**
24659		 * Scene enter event.  
24660		 * Fires whenever the scene enters the "DURING" state.  
24661		 * Keep in mind that it doesn't matter if the scene plays forward or backward: This event always fires when the scene enters its active scroll timeframe, regardless of the scroll-direction.
24662		 *
24663		 * For details on this event and the order in which it is fired, please review the {@link Scene.progress} method.
24664		 *
24665		 * @event ScrollMagic.Scene#enter
24666		 *
24667		 * @example
24668		 * scene.on("enter", function (event) {
24669		 * 	console.log("Scene entered.");
24670		 * });
24671		 *
24672		 * @property {object} event - The event Object passed to each callback
24673		 * @property {string} event.type - The name of the event
24674		 * @property {Scene} event.target - The Scene object that triggered this event
24675		 * @property {number} event.progress - Reflects the current progress of the scene
24676		 * @property {string} event.state - The current state of the scene - always `"DURING"`
24677		 * @property {string} event.scrollDirection - Indicates which way we are scrolling `"PAUSED"`, `"FORWARD"` or `"REVERSE"`
24678		 */
24679		/**
24680		 * Scene leave event.  
24681		 * Fires whenever the scene's state goes from "DURING" to either "BEFORE" or "AFTER".  
24682		 * Keep in mind that it doesn't matter if the scene plays forward or backward: This event always fires when the scene leaves its active scroll timeframe, regardless of the scroll-direction.
24683		 *
24684		 * For details on this event and the order in which it is fired, please review the {@link Scene.progress} method.
24685		 *
24686		 * @event ScrollMagic.Scene#leave
24687		 *
24688		 * @example
24689		 * scene.on("leave", function (event) {
24690		 * 	console.log("Scene left.");
24691		 * });
24692		 *
24693		 * @property {object} event - The event Object passed to each callback
24694		 * @property {string} event.type - The name of the event
24695		 * @property {Scene} event.target - The Scene object that triggered this event
24696		 * @property {number} event.progress - Reflects the current progress of the scene
24697		 * @property {string} event.state - The current state of the scene `"BEFORE"` or `"AFTER"`
24698		 * @property {string} event.scrollDirection - Indicates which way we are scrolling `"PAUSED"`, `"FORWARD"` or `"REVERSE"`
24699		 */
24700		/**
24701		 * Scene update event.  
24702		 * Fires whenever the scene is updated (but not necessarily changes the progress).
24703		 *
24704		 * @event ScrollMagic.Scene#update
24705		 *
24706		 * @example
24707		 * scene.on("update", function (event) {
24708		 * 	console.log("Scene updated.");
24709		 * });
24710		 *
24711		 * @property {object} event - The event Object passed to each callback
24712		 * @property {string} event.type - The name of the event
24713		 * @property {Scene} event.target - The Scene object that triggered this event
24714		 * @property {number} event.startPos - The starting position of the scene (in relation to the conainer)
24715		 * @property {number} event.endPos - The ending position of the scene (in relation to the conainer)
24716		 * @property {number} event.scrollPos - The current scroll position of the container
24717		 */
24718		/**
24719		 * Scene progress event.  
24720		 * Fires whenever the progress of the scene changes.
24721		 *
24722		 * For details on this event and the order in which it is fired, please review the {@link Scene.progress} method.
24723		 *
24724		 * @event ScrollMagic.Scene#progress
24725		 *
24726		 * @example
24727		 * scene.on("progress", function (event) {
24728		 * 	console.log("Scene progress changed to " + event.progress);
24729		 * });
24730		 *
24731		 * @property {object} event - The event Object passed to each callback
24732		 * @property {string} event.type - The name of the event
24733		 * @property {Scene} event.target - The Scene object that triggered this event
24734		 * @property {number} event.progress - Reflects the current progress of the scene
24735		 * @property {string} event.state - The current state of the scene `"BEFORE"`, `"DURING"` or `"AFTER"`
24736		 * @property {string} event.scrollDirection - Indicates which way we are scrolling `"PAUSED"`, `"FORWARD"` or `"REVERSE"`
24737		 */
24738		/**
24739		 * Scene change event.  
24740		 * Fires whenvever a property of the scene is changed.
24741		 *
24742		 * @event ScrollMagic.Scene#change
24743		 *
24744		 * @example
24745		 * scene.on("change", function (event) {
24746		 * 	console.log("Scene Property \"" + event.what + "\" changed to " + event.newval);
24747		 * });
24748		 *
24749		 * @property {object} event - The event Object passed to each callback
24750		 * @property {string} event.type - The name of the event
24751		 * @property {Scene} event.target - The Scene object that triggered this event
24752		 * @property {string} event.what - Indicates what value has been changed
24753		 * @property {mixed} event.newval - The new value of the changed property
24754		 */
24755		/**
24756		 * Scene shift event.  
24757		 * Fires whenvever the start or end **scroll offset** of the scene change.
24758		 * This happens explicitely, when one of these values change: `offset`, `duration` or `triggerHook`.
24759		 * It will fire implicitly when the `triggerElement` changes, if the new element has a different position (most cases).
24760		 * It will also fire implicitly when the size of the container changes and the triggerHook is anything other than `onLeave`.
24761		 *
24762		 * @event ScrollMagic.Scene#shift
24763		 * @since 1.1.0
24764		 *
24765		 * @example
24766		 * scene.on("shift", function (event) {
24767		 * 	console.log("Scene moved, because the " + event.reason + " has changed.)");
24768		 * });
24769		 *
24770		 * @property {object} event - The event Object passed to each callback
24771		 * @property {string} event.type - The name of the event
24772		 * @property {Scene} event.target - The Scene object that triggered this event
24773		 * @property {string} event.reason - Indicates why the scene has shifted
24774		 */
24775		/**
24776		 * Scene destroy event.  
24777		 * Fires whenvever the scene is destroyed.
24778		 * This can be used to tidy up custom behaviour used in events.
24779		 *
24780		 * @event ScrollMagic.Scene#destroy
24781		 * @since 1.1.0
24782		 *
24783		 * @example
24784		 * scene.on("enter", function (event) {
24785		 *        // add custom action
24786		 *        $("#my-elem").left("200");
24787		 *      })
24788		 *      .on("destroy", function (event) {
24789		 *        // reset my element to start position
24790		 *        if (event.reset) {
24791		 *          $("#my-elem").left("0");
24792		 *        }
24793		 *      });
24794		 *
24795		 * @property {object} event - The event Object passed to each callback
24796		 * @property {string} event.type - The name of the event
24797		 * @property {Scene} event.target - The Scene object that triggered this event
24798		 * @property {boolean} event.reset - Indicates if the destroy method was called with reset `true` or `false`.
24799		 */
24800		/**
24801		 * Scene add event.  
24802		 * Fires when the scene is added to a controller.
24803		 * This is mostly used by plugins to know that change might be due.
24804		 *
24805		 * @event ScrollMagic.Scene#add
24806		 * @since 2.0.0
24807		 *
24808		 * @example
24809		 * scene.on("add", function (event) {
24810		 * 	console.log('Scene was added to a new controller.');
24811		 * });
24812		 *
24813		 * @property {object} event - The event Object passed to each callback
24814		 * @property {string} event.type - The name of the event
24815		 * @property {Scene} event.target - The Scene object that triggered this event
24816		 * @property {boolean} event.controller - The controller object the scene was added to.
24817		 */
24818		/**
24819		 * Scene remove event.  
24820		 * Fires when the scene is removed from a controller.
24821		 * This is mostly used by plugins to know that change might be due.
24822		 *
24823		 * @event ScrollMagic.Scene#remove
24824		 * @since 2.0.0
24825		 *
24826		 * @example
24827		 * scene.on("remove", function (event) {
24828		 * 	console.log('Scene was removed from its controller.');
24829		 * });
24830		 *
24831		 * @property {object} event - The event Object passed to each callback
24832		 * @property {string} event.type - The name of the event
24833		 * @property {Scene} event.target - The Scene object that triggered this event
24834		 */
24835
24836		/**
24837		 * Add one ore more event listener.  
24838		 * The callback function will be fired at the respective event, and an object containing relevant data will be passed to the callback.
24839		 * @method ScrollMagic.Scene#on
24840		 *
24841		 * @example
24842		 * function callback (event) {
24843		 * 		console.log("Event fired! (" + event.type + ")");
24844		 * }
24845		 * // add listeners
24846		 * scene.on("change update progress start end enter leave", callback);
24847		 *
24848		 * @param {string} names - The name or names of the event the callback should be attached to.
24849		 * @param {function} callback - A function that should be executed, when the event is dispatched. An event object will be passed to the callback.
24850		 * @returns {Scene} Parent object for chaining.
24851		 */
24852		this.on = function (names, callback) {
24853			if (_util.type.Function(callback)) {
24854				names = names.trim().split(' ');
24855				names.forEach(function (fullname) {
24856					var
24857					nameparts = fullname.split('.'),
24858						eventname = nameparts[0],
24859						namespace = nameparts[1];
24860					if (eventname != "*") { // disallow wildcards
24861						if (!_listeners[eventname]) {
24862							_listeners[eventname] = [];
24863						}
24864						_listeners[eventname].push({
24865							namespace: namespace || '',
24866							callback: callback
24867						});
24868					}
24869				});
24870			} else {
24871				log(1, "ERROR when calling '.on()': Supplied callback for '" + names + "' is not a valid function!");
24872			}
24873			return Scene;
24874		};
24875
24876		/**
24877		 * Remove one or more event listener.
24878		 * @method ScrollMagic.Scene#off
24879		 *
24880		 * @example
24881		 * function callback (event) {
24882		 * 		console.log("Event fired! (" + event.type + ")");
24883		 * }
24884		 * // add listeners
24885		 * scene.on("change update", callback);
24886		 * // remove listeners
24887		 * scene.off("change update", callback);
24888		 *
24889		 * @param {string} names - The name or names of the event that should be removed.
24890		 * @param {function} [callback] - A specific callback function that should be removed. If none is passed all callbacks to the event listener will be removed.
24891		 * @returns {Scene} Parent object for chaining.
24892		 */
24893		this.off = function (names, callback) {
24894			if (!names) {
24895				log(1, "ERROR: Invalid event name supplied.");
24896				return Scene;
24897			}
24898			names = names.trim().split(' ');
24899			names.forEach(function (fullname, key) {
24900				var
24901				nameparts = fullname.split('.'),
24902					eventname = nameparts[0],
24903					namespace = nameparts[1] || '',
24904					removeList = eventname === '*' ? Object.keys(_listeners) : [eventname];
24905				removeList.forEach(function (remove) {
24906					var
24907					list = _listeners[remove] || [],
24908						i = list.length;
24909					while (i--) {
24910						var listener = list[i];
24911						if (listener && (namespace === listener.namespace || namespace === '*') && (!callback || callback == listener.callback)) {
24912							list.splice(i, 1);
24913						}
24914					}
24915					if (!list.length) {
24916						delete _listeners[remove];
24917					}
24918				});
24919			});
24920			return Scene;
24921		};
24922
24923		/**
24924		 * Trigger an event.
24925		 * @method ScrollMagic.Scene#trigger
24926		 *
24927		 * @example
24928		 * this.trigger("change");
24929		 *
24930		 * @param {string} name - The name of the event that should be triggered.
24931		 * @param {object} [vars] - An object containing info that should be passed to the callback.
24932		 * @returns {Scene} Parent object for chaining.
24933		 */
24934		this.trigger = function (name, vars) {
24935			if (name) {
24936				var
24937				nameparts = name.trim().split('.'),
24938					eventname = nameparts[0],
24939					namespace = nameparts[1],
24940					listeners = _listeners[eventname];
24941				log(3, 'event fired:', eventname, vars ? "->" : '', vars || '');
24942				if (listeners) {
24943					listeners.forEach(function (listener, key) {
24944						if (!namespace || namespace === listener.namespace) {
24945							listener.callback.call(Scene, new ScrollMagic.Event(eventname, listener.namespace, Scene, vars));
24946						}
24947					});
24948				}
24949			} else {
24950				log(1, "ERROR: Invalid event name supplied.");
24951			}
24952			return Scene;
24953		};
24954
24955		// set event listeners
24956		Scene.on("change.internal", function (e) {
24957			if (e.what !== "loglevel" && e.what !== "tweenChanges") { // no need for a scene update scene with these options...
24958				if (e.what === "triggerElement") {
24959					updateTriggerElementPosition();
24960				} else if (e.what === "reverse") { // the only property left that may have an impact on the current scene state. Everything else is handled by the shift event.
24961					Scene.update();
24962				}
24963			}
24964		}).on("shift.internal", function (e) {
24965			updateScrollOffset();
24966			Scene.update(); // update scene to reflect new position
24967		});
24968
24969		/**
24970		 * Send a debug message to the console.
24971		 * @private
24972		 * but provided publicly with _log for plugins
24973		 *
24974		 * @param {number} loglevel - The loglevel required to initiate output for the message.
24975		 * @param {...mixed} output - One or more variables that should be passed to the console.
24976		 */
24977		var log = this._log = function (loglevel, output) {
24978			if (_options.loglevel >= loglevel) {
24979				Array.prototype.splice.call(arguments, 1, 0, "(" + NAMESPACE + ") ->");
24980				_util.log.apply(window, arguments);
24981			}
24982		};
24983
24984		/**
24985		 * Add the scene to a controller.  
24986		 * This is the equivalent to `Controller.addScene(scene)`.
24987		 * @method ScrollMagic.Scene#addTo
24988		 *
24989		 * @example
24990		 * // add a scene to a ScrollMagic Controller
24991		 * scene.addTo(controller);
24992		 *
24993		 * @param {ScrollMagic.Controller} controller - The controller to which the scene should be added.
24994		 * @returns {Scene} Parent object for chaining.
24995		 */
24996		this.addTo = function (controller) {
24997			if (!(controller instanceof ScrollMagic.Controller)) {
24998				log(1, "ERROR: supplied argument of 'addTo()' is not a valid ScrollMagic Controller");
24999			} else if (_controller != controller) {
25000				// new controller
25001				if (_controller) { // was associated to a different controller before, so remove it...
25002					_controller.removeScene(Scene);
25003				}
25004				_controller = controller;
25005				validateOption();
25006				updateDuration(true);
25007				updateTriggerElementPosition(true);
25008				updateScrollOffset();
25009				_controller.info("container").addEventListener('resize', onContainerResize);
25010				controller.addScene(Scene);
25011				Scene.trigger("add", {
25012					controller: _controller
25013				});
25014				log(3, "added " + NAMESPACE + " to controller");
25015				Scene.update();
25016			}
25017			return Scene;
25018		};
25019
25020		/**
25021		 * **Get** or **Set** the current enabled state of the scene.  
25022		 * This can be used to disable this scene without removing or destroying it.
25023		 * @method ScrollMagic.Scene#enabled
25024		 *
25025		 * @example
25026		 * // get the current value
25027		 * var enabled = scene.enabled();
25028		 *
25029		 * // disable the scene
25030		 * scene.enabled(false);
25031		 *
25032		 * @param {boolean} [newState] - The new enabled state of the scene `true` or `false`.
25033		 * @returns {(boolean|Scene)} Current enabled state or parent object for chaining.
25034		 */
25035		this.enabled = function (newState) {
25036			if (!arguments.length) { // get
25037				return _enabled;
25038			} else if (_enabled != newState) { // set
25039				_enabled = !! newState;
25040				Scene.update(true);
25041			}
25042			return Scene;
25043		};
25044
25045		/**
25046		 * Remove the scene from the controller.  
25047		 * This is the equivalent to `Controller.removeScene(scene)`.
25048		 * The scene will not be updated anymore until you readd it to a controller.
25049		 * To remove the pin or the tween you need to call removeTween() or removePin() respectively.
25050		 * @method ScrollMagic.Scene#remove
25051		 * @example
25052		 * // remove the scene from its controller
25053		 * scene.remove();
25054		 *
25055		 * @returns {Scene} Parent object for chaining.
25056		 */
25057		this.remove = function () {
25058			if (_controller) {
25059				_controller.info("container").removeEventListener('resize', onContainerResize);
25060				var tmpParent = _controller;
25061				_controller = undefined;
25062				tmpParent.removeScene(Scene);
25063				Scene.trigger("remove");
25064				log(3, "removed " + NAMESPACE + " from controller");
25065			}
25066			return Scene;
25067		};
25068
25069		/**
25070		 * Destroy the scene and everything.
25071		 * @method ScrollMagic.Scene#destroy
25072		 * @example
25073		 * // destroy the scene without resetting the pin and tween to their initial positions
25074		 * scene = scene.destroy();
25075		 *
25076		 * // destroy the scene and reset the pin and tween
25077		 * scene = scene.destroy(true);
25078		 *
25079		 * @param {boolean} [reset=false] - If `true` the pin and tween (if existent) will be reset.
25080		 * @returns {null} Null to unset handler variables.
25081		 */
25082		this.destroy = function (reset) {
25083			Scene.trigger("destroy", {
25084				reset: reset
25085			});
25086			Scene.remove();
25087			Scene.off("*.*");
25088			log(3, "destroyed " + NAMESPACE + " (reset: " + (reset ? "true" : "false") + ")");
25089			return null;
25090		};
25091
25092
25093		/**
25094		 * Updates the Scene to reflect the current state.  
25095		 * This is the equivalent to `Controller.updateScene(scene, immediately)`.  
25096		 * The update method calculates the scene's start and end position (based on the trigger element, trigger hook, duration and offset) and checks it against the current scroll position of the container.  
25097		 * It then updates the current scene state accordingly (or does nothing, if the state is already correct) – Pins will be set to their correct position and tweens will be updated to their correct progress.
25098		 * This means an update doesn't necessarily result in a progress change. The `progress` event will be fired if the progress has indeed changed between this update and the last.  
25099		 * _**NOTE:** This method gets called constantly whenever ScrollMagic detects a change. The only application for you is if you change something outside of the realm of ScrollMagic, like moving the trigger or changing tween parameters._
25100		 * @method ScrollMagic.Scene#update
25101		 * @example
25102		 * // update the scene on next tick
25103		 * scene.update();
25104		 *
25105		 * // update the scene immediately
25106		 * scene.update(true);
25107		 *
25108		 * @fires Scene.update
25109		 *
25110		 * @param {boolean} [immediately=false] - If `true` the update will be instant, if `false` it will wait until next update cycle (better performance).
25111		 * @returns {Scene} Parent object for chaining.
25112		 */
25113		this.update = function (immediately) {
25114			if (_controller) {
25115				if (immediately) {
25116					if (_controller.enabled() && _enabled) {
25117						var
25118						scrollPos = _controller.info("scrollPos"),
25119							newProgress;
25120
25121						if (_options.duration > 0) {
25122							newProgress = (scrollPos - _scrollOffset.start) / (_scrollOffset.end - _scrollOffset.start);
25123						} else {
25124							newProgress = scrollPos >= _scrollOffset.start ? 1 : 0;
25125						}
25126
25127						Scene.trigger("update", {
25128							startPos: _scrollOffset.start,
25129							endPos: _scrollOffset.end,
25130							scrollPos: scrollPos
25131						});
25132
25133						Scene.progress(newProgress);
25134					} else if (_pin && _state === SCENE_STATE_DURING) {
25135						updatePinState(true); // unpin in position
25136					}
25137				} else {
25138					_controller.updateScene(Scene, false);
25139				}
25140			}
25141			return Scene;
25142		};
25143
25144		/**
25145		 * Updates dynamic scene variables like the trigger element position or the duration.
25146		 * This method is automatically called in regular intervals from the controller. See {@link ScrollMagic.Controller} option `refreshInterval`.
25147		 * 
25148		 * You can call it to minimize lag, for example when you intentionally change the position of the triggerElement.
25149		 * If you don't it will simply be updated in the next refresh interval of the container, which is usually sufficient.
25150		 *
25151		 * @method ScrollMagic.Scene#refresh
25152		 * @since 1.1.0
25153		 * @example
25154		 * scene = new ScrollMagic.Scene({triggerElement: "#trigger"});
25155		 * 
25156		 * // change the position of the trigger
25157		 * $("#trigger").css("top", 500);
25158		 * // immediately let the scene know of this change
25159		 * scene.refresh();
25160		 *
25161		 * @fires {@link Scene.shift}, if the trigger element position or the duration changed
25162		 * @fires {@link Scene.change}, if the duration changed
25163		 *
25164		 * @returns {Scene} Parent object for chaining.
25165		 */
25166		this.refresh = function () {
25167			updateDuration();
25168			updateTriggerElementPosition();
25169			// update trigger element position
25170			return Scene;
25171		};
25172
25173		/**
25174		 * **Get** or **Set** the scene's progress.  
25175		 * Usually it shouldn't be necessary to use this as a setter, as it is set automatically by scene.update().  
25176		 * The order in which the events are fired depends on the duration of the scene:
25177		 *  1. Scenes with `duration == 0`:  
25178		 *  Scenes that have no duration by definition have no ending. Thus the `end` event will never be fired.  
25179		 *  When the trigger position of the scene is passed the events are always fired in this order:  
25180		 *  `enter`, `start`, `progress` when scrolling forward  
25181		 *  and  
25182		 *  `progress`, `start`, `leave` when scrolling in reverse
25183		 *  2. Scenes with `duration > 0`:  
25184		 *  Scenes with a set duration have a defined start and end point.  
25185		 *  When scrolling past the start position of the scene it will fire these events in this order:  
25186		 *  `enter`, `start`, `progress`  
25187		 *  When continuing to scroll and passing the end point it will fire these events:  
25188		 *  `progress`, `end`, `leave`  
25189		 *  When reversing through the end point these events are fired:  
25190		 *  `enter`, `end`, `progress`  
25191		 *  And when continuing to scroll past the start position in reverse it will fire:  
25192		 *  `progress`, `start`, `leave`  
25193		 *  In between start and end the `progress` event will be called constantly, whenever the progress changes.
25194		 * 
25195		 * In short:  
25196		 * `enter` events will always trigger **before** the progress update and `leave` envents will trigger **after** the progress update.  
25197		 * `start` and `end` will always trigger at their respective position.
25198		 * 
25199		 * Please review the event descriptions for details on the events and the event object that is passed to the callback.
25200		 * 
25201		 * @method ScrollMagic.Scene#progress
25202		 * @example
25203		 * // get the current scene progress
25204		 * var progress = scene.progress();
25205		 *
25206		 * // set new scene progress
25207		 * scene.progress(0.3);
25208		 *
25209		 * @fires {@link Scene.enter}, when used as setter
25210		 * @fires {@link Scene.start}, when used as setter
25211		 * @fires {@link Scene.progress}, when used as setter
25212		 * @fires {@link Scene.end}, when used as setter
25213		 * @fires {@link Scene.leave}, when used as setter
25214		 *
25215		 * @param {number} [progress] - The new progress value of the scene `[0-1]`.
25216		 * @returns {number} `get` -  Current scene progress.
25217		 * @returns {Scene} `set` -  Parent object for chaining.
25218		 */
25219		this.progress = function (progress) {
25220			if (!arguments.length) { // get
25221				return _progress;
25222			} else { // set
25223				var
25224				doUpdate = false,
25225					oldState = _state,
25226					scrollDirection = _controller ? _controller.info("scrollDirection") : 'PAUSED',
25227					reverseOrForward = _options.reverse || progress >= _progress;
25228				if (_options.duration === 0) {
25229					// zero duration scenes
25230					doUpdate = _progress != progress;
25231					_progress = progress < 1 && reverseOrForward ? 0 : 1;
25232					_state = _progress === 0 ? SCENE_STATE_BEFORE : SCENE_STATE_DURING;
25233				} else {
25234					// scenes with start and end
25235					if (progress < 0 && _state !== SCENE_STATE_BEFORE && reverseOrForward) {
25236						// go back to initial state
25237						_progress = 0;
25238						_state = SCENE_STATE_BEFORE;
25239						doUpdate = true;
25240					} else if (progress >= 0 && progress < 1 && reverseOrForward) {
25241						_progress = progress;
25242						_state = SCENE_STATE_DURING;
25243						doUpdate = true;
25244					} else if (progress >= 1 && _state !== SCENE_STATE_AFTER) {
25245						_progress = 1;
25246						_state = SCENE_STATE_AFTER;
25247						doUpdate = true;
25248					} else if (_state === SCENE_STATE_DURING && !reverseOrForward) {
25249						updatePinState(); // in case we scrolled backwards mid-scene and reverse is disabled => update the pin position, so it doesn't move back as well.
25250					}
25251				}
25252				if (doUpdate) {
25253					// fire events
25254					var
25255					eventVars = {
25256						progress: _progress,
25257						state: _state,
25258						scrollDirection: scrollDirection
25259					},
25260						stateChanged = _state != oldState;
25261
25262					var trigger = function (eventName) { // tmp helper to simplify code
25263						Scene.trigger(eventName, eventVars);
25264					};
25265
25266					if (stateChanged) { // enter events
25267						if (oldState !== SCENE_STATE_DURING) {
25268							trigger("enter");
25269							trigger(oldState === SCENE_STATE_BEFORE ? "start" : "end");
25270						}
25271					}
25272					trigger("progress");
25273					if (stateChanged) { // leave events
25274						if (_state !== SCENE_STATE_DURING) {
25275							trigger(_state === SCENE_STATE_BEFORE ? "start" : "end");
25276							trigger("leave");
25277						}
25278					}
25279				}
25280
25281				return Scene;
25282			}
25283		};
25284
25285
25286		/**
25287		 * Update the start and end scrollOffset of the container.
25288		 * The positions reflect what the controller's scroll position will be at the start and end respectively.
25289		 * Is called, when:
25290		 *   - Scene event "change" is called with: offset, triggerHook, duration 
25291		 *   - scroll container event "resize" is called
25292		 *   - the position of the triggerElement changes
25293		 *   - the controller changes -> addTo()
25294		 * @private
25295		 */
25296		var updateScrollOffset = function () {
25297			_scrollOffset = {
25298				start: _triggerPos + _options.offset
25299			};
25300			if (_controller && _options.triggerElement) {
25301				// take away triggerHook portion to get relative to top
25302				_scrollOffset.start -= _controller.info("size") * _options.triggerHook;
25303			}
25304			_scrollOffset.end = _scrollOffset.start + _options.duration;
25305		};
25306
25307		/**
25308		 * Updates the duration if set to a dynamic function.
25309		 * This method is called when the scene is added to a controller and in regular intervals from the controller through scene.refresh().
25310		 * 
25311		 * @fires {@link Scene.change}, if the duration changed
25312		 * @fires {@link Scene.shift}, if the duration changed
25313		 *
25314		 * @param {boolean} [suppressEvents=false] - If true the shift event will be suppressed.
25315		 * @private
25316		 */
25317		var updateDuration = function (suppressEvents) {
25318			// update duration
25319			if (_durationUpdateMethod) {
25320				var varname = "duration";
25321				if (changeOption(varname, _durationUpdateMethod.call(Scene)) && !suppressEvents) { // set
25322					Scene.trigger("change", {
25323						what: varname,
25324						newval: _options[varname]
25325					});
25326					Scene.trigger("shift", {
25327						reason: varname
25328					});
25329				}
25330			}
25331		};
25332
25333		/**
25334		 * Updates the position of the triggerElement, if present.
25335		 * This method is called ...
25336		 *  - ... when the triggerElement is changed
25337		 *  - ... when the scene is added to a (new) controller
25338		 *  - ... in regular intervals from the controller through scene.refresh().
25339		 * 
25340		 * @fires {@link Scene.shift}, if the position changed
25341		 *
25342		 * @param {boolean} [suppressEvents=false] - If true the shift event will be suppressed.
25343		 * @private
25344		 */
25345		var updateTriggerElementPosition = function (suppressEvents) {
25346			var
25347			elementPos = 0,
25348				telem = _options.triggerElement;
25349			if (_controller && (telem || _triggerPos > 0)) { // either an element exists or was removed and the triggerPos is still > 0
25350				if (telem) { // there currently a triggerElement set
25351					if (telem.parentNode) { // check if element is still attached to DOM
25352						var
25353						controllerInfo = _controller.info(),
25354							containerOffset = _util.get.offset(controllerInfo.container),
25355							// container position is needed because element offset is returned in relation to document, not in relation to container.
25356							param = controllerInfo.vertical ? "top" : "left"; // which param is of interest ?
25357						// if parent is spacer, use spacer position instead so correct start position is returned for pinned elements.
25358						while (telem.parentNode.hasAttribute(PIN_SPACER_ATTRIBUTE)) {
25359							telem = telem.parentNode;
25360						}
25361
25362						var elementOffset = _util.get.offset(telem);
25363
25364						if (!controllerInfo.isDocument) { // container is not the document root, so substract scroll Position to get correct trigger element position relative to scrollcontent
25365							containerOffset[param] -= _controller.scrollPos();
25366						}
25367
25368						elementPos = elementOffset[param] - containerOffset[param];
25369
25370					} else { // there was an element, but it was removed from DOM
25371						log(2, "WARNING: triggerElement was removed from DOM and will be reset to", undefined);
25372						Scene.triggerElement(undefined); // unset, so a change event is triggered
25373					}
25374				}
25375
25376				var changed = elementPos != _triggerPos;
25377				_triggerPos = elementPos;
25378				if (changed && !suppressEvents) {
25379					Scene.trigger("shift", {
25380						reason: "triggerElementPosition"
25381					});
25382				}
25383			}
25384		};
25385
25386		/**
25387		 * Trigger a shift event, when the container is resized and the triggerHook is > 1.
25388		 * @private
25389		 */
25390		var onContainerResize = function (e) {
25391			if (_options.triggerHook > 0) {
25392				Scene.trigger("shift", {
25393					reason: "containerResize"
25394				});
25395			}
25396		};
25397
25398
25399		var _validate = _util.extend(SCENE_OPTIONS.validate, {
25400			// validation for duration handled internally for reference to private var _durationMethod
25401			duration: function (val) {
25402				if (_util.type.String(val) && val.match(/^(\.|\d)*\d+%$/)) {
25403					// percentage value
25404					var perc = parseFloat(val) / 100;
25405					val = function () {
25406						return _controller ? _controller.info("size") * perc : 0;
25407					};
25408				}
25409				if (_util.type.Function(val)) {
25410					// function
25411					_durationUpdateMethod = val;
25412					try {
25413						val = parseFloat(_durationUpdateMethod());
25414					} catch (e) {
25415						val = -1; // will cause error below
25416					}
25417				}
25418				// val has to be float
25419				val = parseFloat(val);
25420				if (!_util.type.Number(val) || val < 0) {
25421					if (_durationUpdateMethod) {
25422						_durationUpdateMethod = undefined;
25423						throw ["Invalid return value of supplied function for option \"duration\":", val];
25424					} else {
25425						throw ["Invalid value for option \"duration\":", val];
25426					}
25427				}
25428				return val;
25429			}
25430		});
25431
25432		/**
25433		 * Checks the validity of a specific or all options and reset to default if neccessary.
25434		 * @private
25435		 */
25436		var validateOption = function (check) {
25437			check = arguments.length ? [check] : Object.keys(_validate);
25438			check.forEach(function (optionName, key) {
25439				var value;
25440				if (_validate[optionName]) { // there is a validation method for this option
25441					try { // validate value
25442						value = _validate[optionName](_options[optionName]);
25443					} catch (e) { // validation failed -> reset to default
25444						value = DEFAULT_OPTIONS[optionName];
25445						var logMSG = _util.type.String(e) ? [e] : e;
25446						if (_util.type.Array(logMSG)) {
25447							logMSG[0] = "ERROR: " + logMSG[0];
25448							logMSG.unshift(1); // loglevel 1 for error msg
25449							log.apply(this, logMSG);
25450						} else {
25451							log(1, "ERROR: Problem executing validation callback for option '" + optionName + "':", e.message);
25452						}
25453					} finally {
25454						_options[optionName] = value;
25455					}
25456				}
25457			});
25458		};
25459
25460		/**
25461		 * Helper used by the setter/getters for scene options
25462		 * @private
25463		 */
25464		var changeOption = function (varname, newval) {
25465			var
25466			changed = false,
25467				oldval = _options[varname];
25468			if (_options[varname] != newval) {
25469				_options[varname] = newval;
25470				validateOption(varname); // resets to default if necessary
25471				changed = oldval != _options[varname];
25472			}
25473			return changed;
25474		};
25475
25476		// generate getters/setters for all options
25477		var addSceneOption = function (optionName) {
25478			if (!Scene[optionName]) {
25479				Scene[optionName] = function (newVal) {
25480					if (!arguments.length) { // get
25481						return _options[optionName];
25482					} else {
25483						if (optionName === "duration") { // new duration is set, so any previously set function must be unset
25484							_durationUpdateMethod = undefined;
25485						}
25486						if (changeOption(optionName, newVal)) { // set
25487							Scene.trigger("change", {
25488								what: optionName,
25489								newval: _options[optionName]
25490							});
25491							if (SCENE_OPTIONS.shifts.indexOf(optionName) > -1) {
25492								Scene.trigger("shift", {
25493									reason: optionName
25494								});
25495							}
25496						}
25497					}
25498					return Scene;
25499				};
25500			}
25501		};
25502
25503		/**
25504		 * **Get** or **Set** the duration option value.
25505		 * As a setter it also accepts a function returning a numeric value.  
25506		 * This is particularly useful for responsive setups.
25507		 *
25508		 * The duration is updated using the supplied function every time `Scene.refresh()` is called, which happens periodically from the controller (see ScrollMagic.Controller option `refreshInterval`).  
25509		 * _**NOTE:** Be aware that it's an easy way to kill performance, if you supply a function that has high CPU demand.  
25510		 * Even for size and position calculations it is recommended to use a variable to cache the value. (see example)  
25511		 * This counts double if you use the same function for multiple scenes._
25512		 *
25513		 * @method ScrollMagic.Scene#duration
25514		 * @example
25515		 * // get the current duration value
25516		 * var duration = scene.duration();
25517		 *
25518		 * // set a new duration
25519		 * scene.duration(300);
25520		 *
25521		 * // use a function to automatically adjust the duration to the window height.
25522		 * var durationValueCache;
25523		 * function getDuration () {
25524		 *   return durationValueCache;
25525		 * }
25526		 * function updateDuration (e) {
25527		 *   durationValueCache = window.innerHeight;
25528		 * }
25529		 * $(window).on("resize", updateDuration); // update the duration when the window size changes
25530		 * $(window).triggerHandler("resize"); // set to initial value
25531		 * scene.duration(getDuration); // supply duration method
25532		 *
25533		 * @fires {@link Scene.change}, when used as setter
25534		 * @fires {@link Scene.shift}, when used as setter
25535		 * @param {(number|function)} [newDuration] - The new duration of the scene.
25536		 * @returns {number} `get` -  Current scene duration.
25537		 * @returns {Scene} `set` -  Parent object for chaining.
25538		 */
25539
25540		/**
25541		 * **Get** or **Set** the offset option value.
25542		 * @method ScrollMagic.Scene#offset
25543		 * @example
25544		 * // get the current offset
25545		 * var offset = scene.offset();
25546		 *
25547		 * // set a new offset
25548		 * scene.offset(100);
25549		 *
25550		 * @fires {@link Scene.change}, when used as setter
25551		 * @fires {@link Scene.shift}, when used as setter
25552		 * @param {number} [newOffset] - The new offset of the scene.
25553		 * @returns {number} `get` -  Current scene offset.
25554		 * @returns {Scene} `set` -  Parent object for chaining.
25555		 */
25556
25557		/**
25558		 * **Get** or **Set** the triggerElement option value.
25559		 * Does **not** fire `Scene.shift`, because changing the trigger Element doesn't necessarily mean the start position changes. This will be determined in `Scene.refresh()`, which is automatically triggered.
25560		 * @method ScrollMagic.Scene#triggerElement
25561		 * @example
25562		 * // get the current triggerElement
25563		 * var triggerElement = scene.triggerElement();
25564		 *
25565		 * // set a new triggerElement using a selector
25566		 * scene.triggerElement("#trigger");
25567		 * // set a new triggerElement using a DOM object
25568		 * scene.triggerElement(document.getElementById("trigger"));
25569		 *
25570		 * @fires {@link Scene.change}, when used as setter
25571		 * @param {(string|object)} [newTriggerElement] - The new trigger element for the scene.
25572		 * @returns {(string|object)} `get` -  Current triggerElement.
25573		 * @returns {Scene} `set` -  Parent object for chaining.
25574		 */
25575
25576		/**
25577		 * **Get** or **Set** the triggerHook option value.
25578		 * @method ScrollMagic.Scene#triggerHook
25579		 * @example
25580		 * // get the current triggerHook value
25581		 * var triggerHook = scene.triggerHook();
25582		 *
25583		 * // set a new triggerHook using a string
25584		 * scene.triggerHook("onLeave");
25585		 * // set a new triggerHook using a number
25586		 * scene.triggerHook(0.7);
25587		 *
25588		 * @fires {@link Scene.change}, when used as setter
25589		 * @fires {@link Scene.shift}, when used as setter
25590		 * @param {(number|string)} [newTriggerHook] - The new triggerHook of the scene. See {@link Scene} parameter description for value options.
25591		 * @returns {number} `get` -  Current triggerHook (ALWAYS numerical).
25592		 * @returns {Scene} `set` -  Parent object for chaining.
25593		 */
25594
25595		/**
25596		 * **Get** or **Set** the reverse option value.
25597		 * @method ScrollMagic.Scene#reverse
25598		 * @example
25599		 * // get the current reverse option
25600		 * var reverse = scene.reverse();
25601		 *
25602		 * // set new reverse option
25603		 * scene.reverse(false);
25604		 *
25605		 * @fires {@link Scene.change}, when used as setter
25606		 * @param {boolean} [newReverse] - The new reverse setting of the scene.
25607		 * @returns {boolean} `get` -  Current reverse option value.
25608		 * @returns {Scene} `set` -  Parent object for chaining.
25609		 */
25610
25611		/**
25612		 * **Get** or **Set** the loglevel option value.
25613		 * @method ScrollMagic.Scene#loglevel
25614		 * @example
25615		 * // get the current loglevel
25616		 * var loglevel = scene.loglevel();
25617		 *
25618		 * // set new loglevel
25619		 * scene.loglevel(3);
25620		 *
25621		 * @fires {@link Scene.change}, when used as setter
25622		 * @param {number} [newLoglevel] - The new loglevel setting of the scene. `[0-3]`
25623		 * @returns {number} `get` -  Current loglevel.
25624		 * @returns {Scene} `set` -  Parent object for chaining.
25625		 */
25626
25627		/**
25628		 * **Get** the associated controller.
25629		 * @method ScrollMagic.Scene#controller
25630		 * @example
25631		 * // get the controller of a scene
25632		 * var controller = scene.controller();
25633		 *
25634		 * @returns {ScrollMagic.Controller} Parent controller or `undefined`
25635		 */
25636		this.controller = function () {
25637			return _controller;
25638		};
25639
25640		/**
25641		 * **Get** the current state.
25642		 * @method ScrollMagic.Scene#state
25643		 * @example
25644		 * // get the current state
25645		 * var state = scene.state();
25646		 *
25647		 * @returns {string} `"BEFORE"`, `"DURING"` or `"AFTER"`
25648		 */
25649		this.state = function () {
25650			return _state;
25651		};
25652
25653		/**
25654		 * **Get** the current scroll offset for the start of the scene.  
25655		 * Mind, that the scrollOffset is related to the size of the container, if `triggerHook` is bigger than `0` (or `"onLeave"`).  
25656		 * This means, that resizing the container or changing the `triggerHook` will influence the scene's start offset.
25657		 * @method ScrollMagic.Scene#scrollOffset
25658		 * @example
25659		 * // get the current scroll offset for the start and end of the scene.
25660		 * var start = scene.scrollOffset();
25661		 * var end = scene.scrollOffset() + scene.duration();
25662		 * console.log("the scene starts at", start, "and ends at", end);
25663		 *
25664		 * @returns {number} The scroll offset (of the container) at which the scene will trigger. Y value for vertical and X value for horizontal scrolls.
25665		 */
25666		this.scrollOffset = function () {
25667			return _scrollOffset.start;
25668		};
25669
25670		/**
25671		 * **Get** the trigger position of the scene (including the value of the `offset` option).  
25672		 * @method ScrollMagic.Scene#triggerPosition
25673		 * @example
25674		 * // get the scene's trigger position
25675		 * var triggerPosition = scene.triggerPosition();
25676		 *
25677		 * @returns {number} Start position of the scene. Top position value for vertical and left position value for horizontal scrolls.
25678		 */
25679		this.triggerPosition = function () {
25680			var pos = _options.offset; // the offset is the basis
25681			if (_controller) {
25682				// get the trigger position
25683				if (_options.triggerElement) {
25684					// Element as trigger
25685					pos += _triggerPos;
25686				} else {
25687					// return the height of the triggerHook to start at the beginning
25688					pos += _controller.info("size") * Scene.triggerHook();
25689				}
25690			}
25691			return pos;
25692		};
25693
25694		var
25695		_pin, _pinOptions;
25696
25697		Scene.on("shift.internal", function (e) {
25698			var durationChanged = e.reason === "duration";
25699			if ((_state === SCENE_STATE_AFTER && durationChanged) || (_state === SCENE_STATE_DURING && _options.duration === 0)) {
25700				// if [duration changed after a scene (inside scene progress updates pin position)] or [duration is 0, we are in pin phase and some other value changed].
25701				updatePinState();
25702			}
25703			if (durationChanged) {
25704				updatePinDimensions();
25705			}
25706		}).on("progress.internal", function (e) {
25707			updatePinState();
25708		}).on("add.internal", function (e) {
25709			updatePinDimensions();
25710		}).on("destroy.internal", function (e) {
25711			Scene.removePin(e.reset);
25712		});
25713		/**
25714		 * Update the pin state.
25715		 * @private
25716		 */
25717		var updatePinState = function (forceUnpin) {
25718			if (_pin && _controller) {
25719				var
25720				containerInfo = _controller.info(),
25721					pinTarget = _pinOptions.spacer.firstChild; // may be pin element or another spacer, if cascading pins
25722				if (!forceUnpin && _state === SCENE_STATE_DURING) { // during scene or if duration is 0 and we are past the trigger
25723					// pinned state
25724					if (_util.css(pinTarget, "position") != "fixed") {
25725						// change state before updating pin spacer (position changes due to fixed collapsing might occur.)
25726						_util.css(pinTarget, {
25727							"position": "fixed"
25728						});
25729						// update pin spacer
25730						updatePinDimensions();
25731					}
25732
25733					var
25734					fixedPos = _util.get.offset(_pinOptions.spacer, true),
25735						// get viewport position of spacer
25736						scrollDistance = _options.reverse || _options.duration === 0 ? containerInfo.scrollPos - _scrollOffset.start // quicker
25737						: Math.round(_progress * _options.duration * 10) / 10; // if no reverse and during pin the position needs to be recalculated using the progress
25738					// add scrollDistance
25739					fixedPos[containerInfo.vertical ? "top" : "left"] += scrollDistance;
25740
25741					// set new values
25742					_util.css(_pinOptions.spacer.firstChild, {
25743						top: fixedPos.top,
25744						left: fixedPos.left
25745					});
25746				} else {
25747					// unpinned state
25748					var
25749					newCSS = {
25750						position: _pinOptions.inFlow ? "relative" : "absolute",
25751						top: 0,
25752						left: 0
25753					},
25754						change = _util.css(pinTarget, "position") != newCSS.position;
25755
25756					if (!_pinOptions.pushFollowers) {
25757						newCSS[containerInfo.vertical ? "top" : "left"] = _options.duration * _progress;
25758					} else if (_options.duration > 0) { // only concerns scenes with duration
25759						if (_state === SCENE_STATE_AFTER && parseFloat(_util.css(_pinOptions.spacer, "padding-top")) === 0) {
25760							change = true; // if in after state but havent updated spacer yet (jumped past pin)
25761						} else if (_state === SCENE_STATE_BEFORE && parseFloat(_util.css(_pinOptions.spacer, "padding-bottom")) === 0) { // before
25762							change = true; // jumped past fixed state upward direction
25763						}
25764					}
25765					// set new values
25766					_util.css(pinTarget, newCSS);
25767					if (change) {
25768						// update pin spacer if state changed
25769						updatePinDimensions();
25770					}
25771				}
25772			}
25773		};
25774
25775		/**
25776		 * Update the pin spacer and/or element size.
25777		 * The size of the spacer needs to be updated whenever the duration of the scene changes, if it is to push down following elements.
25778		 * @private
25779		 */
25780		var updatePinDimensions = function () {
25781			if (_pin && _controller && _pinOptions.inFlow) { // no spacerresize, if original position is absolute
25782				var
25783				after = (_state === SCENE_STATE_AFTER),
25784					before = (_state === SCENE_STATE_BEFORE),
25785					during = (_state === SCENE_STATE_DURING),
25786					vertical = _controller.info("vertical"),
25787					pinTarget = _pinOptions.spacer.firstChild,
25788					// usually the pined element but can also be another spacer (cascaded pins)
25789					marginCollapse = _util.isMarginCollapseType(_util.css(_pinOptions.spacer, "display")),
25790					css = {};
25791
25792				// set new size
25793				// if relsize: spacer -> pin | else: pin -> spacer
25794				if (_pinOptions.relSize.width || _pinOptions.relSize.autoFullWidth) {
25795					if (during) {
25796						_util.css(_pin, {
25797							"width": _util.get.width(_pinOptions.spacer)
25798						});
25799					} else {
25800						_util.css(_pin, {
25801							"width": "100%"
25802						});
25803					}
25804				} else {
25805					// minwidth is needed for cascaded pins.
25806					css["min-width"] = _util.get.width(vertical ? _pin : pinTarget, true, true);
25807					css.width = during ? css["min-width"] : "auto";
25808				}
25809				if (_pinOptions.relSize.height) {
25810					if (during) {
25811						// the only padding the spacer should ever include is the duration (if pushFollowers = true), so we need to substract that.
25812						_util.css(_pin, {
25813							"height": _util.get.height(_pinOptions.spacer) - (_pinOptions.pushFollowers ? _options.duration : 0)
25814						});
25815					} else {
25816						_util.css(_pin, {
25817							"height": "100%"
25818						});
25819					}
25820				} else {
25821					// margin is only included if it's a cascaded pin to resolve an IE9 bug
25822					css["min-height"] = _util.get.height(vertical ? pinTarget : _pin, true, !marginCollapse); // needed for cascading pins
25823					css.height = during ? css["min-height"] : "auto";
25824				}
25825
25826				// add space for duration if pushFollowers is true
25827				if (_pinOptions.pushFollowers) {
25828					css["padding" + (vertical ? "Top" : "Left")] = _options.duration * _progress;
25829					css["padding" + (vertical ? "Bottom" : "Right")] = _options.duration * (1 - _progress);
25830				}
25831				_util.css(_pinOptions.spacer, css);
25832			}
25833		};
25834
25835		/**
25836		 * Updates the Pin state (in certain scenarios)
25837		 * If the controller container is not the document and we are mid-pin-phase scrolling or resizing the main document can result to wrong pin positions.
25838		 * So this function is called on resize and scroll of the document.
25839		 * @private
25840		 */
25841		var updatePinInContainer = function () {
25842			if (_controller && _pin && _state === SCENE_STATE_DURING && !_controller.info("isDocument")) {
25843				updatePinState();
25844			}
25845		};
25846
25847		/**
25848		 * Updates the Pin spacer size state (in certain scenarios)
25849		 * If container is resized during pin and relatively sized the size of the pin might need to be updated...
25850		 * So this function is called on resize of the container.
25851		 * @private
25852		 */
25853		var updateRelativePinSpacer = function () {
25854			if (_controller && _pin && // well, duh
25855			_state === SCENE_STATE_DURING && // element in pinned state?
25856			( // is width or height relatively sized, but not in relation to body? then we need to recalc.
25857			((_pinOptions.relSize.width || _pinOptions.relSize.autoFullWidth) && _util.get.width(window) != _util.get.width(_pinOptions.spacer.parentNode)) || (_pinOptions.relSize.height && _util.get.height(window) != _util.get.height(_pinOptions.spacer.parentNode)))) {
25858				updatePinDimensions();
25859			}
25860		};
25861
25862		/**
25863		 * Is called, when the mousewhel is used while over a pinned element inside a div container.
25864		 * If the scene is in fixed state scroll events would be counted towards the body. This forwards the event to the scroll container.
25865		 * @private
25866		 */
25867		var onMousewheelOverPin = function (e) {
25868			if (_controller && _pin && _state === SCENE_STATE_DURING && !_controller.info("isDocument")) { // in pin state
25869				e.preventDefault();
25870				_controller._setScrollPos(_controller.info("scrollPos") - ((e.wheelDelta || e[_controller.info("vertical") ? "wheelDeltaY" : "wheelDeltaX"]) / 3 || -e.detail * 30));
25871			}
25872		};
25873
25874		/**
25875		 * Pin an element for the duration of the tween.  
25876		 * If the scene duration is 0 the element will only be unpinned, if the user scrolls back past the start position.  
25877		 * Make sure only one pin is applied to an element at the same time.
25878		 * An element can be pinned multiple times, but only successively.
25879		 * _**NOTE:** The option `pushFollowers` has no effect, when the scene duration is 0._
25880		 * @method ScrollMagic.Scene#setPin
25881		 * @example
25882		 * // pin element and push all following elements down by the amount of the pin duration.
25883		 * scene.setPin("#pin");
25884		 *
25885		 * // pin element and keeping all following elements in their place. The pinned element will move past them.
25886		 * scene.setPin("#pin", {pushFollowers: false});
25887		 *
25888		 * @param {(string|object)} element - A Selector targeting an element or a DOM object that is supposed to be pinned.
25889		 * @param {object} [settings] - settings for the pin
25890		 * @param {boolean} [settings.pushFollowers=true] - If `true` following elements will be "pushed" down for the duration of the pin, if `false` the pinned element will just scroll past them.  
25891		 Ignored, when duration is `0`.
25892		 * @param {string} [settings.spacerClass="scrollmagic-pin-spacer"] - Classname of the pin spacer element, which is used to replace the element.
25893		 *
25894		 * @returns {Scene} Parent object for chaining.
25895		 */
25896		this.setPin = function (element, settings) {
25897			var
25898			defaultSettings = {
25899				pushFollowers: true,
25900				spacerClass: "scrollmagic-pin-spacer"
25901			};
25902			settings = _util.extend({}, defaultSettings, settings);
25903
25904			// validate Element
25905			element = _util.get.elements(element)[0];
25906			if (!element) {
25907				log(1, "ERROR calling method 'setPin()': Invalid pin element supplied.");
25908				return Scene; // cancel
25909			} else if (_util.css(element, "position") === "fixed") {
25910				log(1, "ERROR calling method 'setPin()': Pin does not work with elements that are positioned 'fixed'.");
25911				return Scene; // cancel
25912			}
25913
25914			if (_pin) { // preexisting pin?
25915				if (_pin === element) {
25916					// same pin we already have -> do nothing
25917					return Scene; // cancel
25918				} else {
25919					// kill old pin
25920					Scene.removePin();
25921				}
25922
25923			}
25924			_pin = element;
25925
25926			var
25927			parentDisplay = _pin.parentNode.style.display,
25928				boundsParams = ["top", "left", "bottom", "right", "margin", "marginLeft", "marginRight", "marginTop", "marginBottom"];
25929
25930			_pin.parentNode.style.display = 'none'; // hack start to force css to return stylesheet values instead of calculated px values.
25931			var
25932			inFlow = _util.css(_pin, "position") != "absolute",
25933				pinCSS = _util.css(_pin, boundsParams.concat(["display"])),
25934				sizeCSS = _util.css(_pin, ["width", "height"]);
25935			_pin.parentNode.style.display = parentDisplay; // hack end.
25936			if (!inFlow && settings.pushFollowers) {
25937				log(2, "WARNING: If the pinned element is positioned absolutely pushFollowers will be disabled.");
25938				settings.pushFollowers = false;
25939			}
25940			window.setTimeout(function () { // wait until all finished, because with responsive duration it will only be set after scene is added to controller
25941				if (_pin && _options.duration === 0 && settings.pushFollowers) {
25942					log(2, "WARNING: pushFollowers =", true, "has no effect, when scene duration is 0.");
25943				}
25944			}, 0);
25945
25946			// create spacer and insert
25947			var
25948			spacer = _pin.parentNode.insertBefore(document.createElement('div'), _pin),
25949				spacerCSS = _util.extend(pinCSS, {
25950					position: inFlow ? "relative" : "absolute",
25951					boxSizing: "content-box",
25952					mozBoxSizing: "content-box",
25953					webkitBoxSizing: "content-box"
25954				});
25955
25956			if (!inFlow) { // copy size if positioned absolutely, to work for bottom/right positioned elements.
25957				_util.extend(spacerCSS, _util.css(_pin, ["width", "height"]));
25958			}
25959
25960			_util.css(spacer, spacerCSS);
25961			spacer.setAttribute(PIN_SPACER_ATTRIBUTE, "");
25962			_util.addClass(spacer, settings.spacerClass);
25963
25964			// set the pin Options
25965			_pinOptions = {
25966				spacer: spacer,
25967				relSize: { // save if size is defined using % values. if so, handle spacer resize differently...
25968					width: sizeCSS.width.slice(-1) === "%",
25969					height: sizeCSS.height.slice(-1) === "%",
25970					autoFullWidth: sizeCSS.width === "auto" && inFlow && _util.isMarginCollapseType(pinCSS.display)
25971				},
25972				pushFollowers: settings.pushFollowers,
25973				inFlow: inFlow,
25974				// stores if the element takes up space in the document flow
25975			};
25976
25977			if (!_pin.___origStyle) {
25978				_pin.___origStyle = {};
25979				var
25980				pinInlineCSS = _pin.style,
25981					copyStyles = boundsParams.concat(["width", "height", "position", "boxSizing", "mozBoxSizing", "webkitBoxSizing"]);
25982				copyStyles.forEach(function (val) {
25983					_pin.___origStyle[val] = pinInlineCSS[val] || "";
25984				});
25985			}
25986
25987			// if relative size, transfer it to spacer and make pin calculate it...
25988			if (_pinOptions.relSize.width) {
25989				_util.css(spacer, {
25990					width: sizeCSS.width
25991				});
25992			}
25993			if (_pinOptions.relSize.height) {
25994				_util.css(spacer, {
25995					height: sizeCSS.height
25996				});
25997			}
25998
25999			// now place the pin element inside the spacer	
26000			spacer.appendChild(_pin);
26001			// and set new css
26002			_util.css(_pin, {
26003				position: inFlow ? "relative" : "absolute",
26004				margin: "auto",
26005				top: "auto",
26006				left: "auto",
26007				bottom: "auto",
26008				right: "auto"
26009			});
26010
26011			if (_pinOptions.relSize.width || _pinOptions.relSize.autoFullWidth) {
26012				_util.css(_pin, {
26013					boxSizing: "border-box",
26014					mozBoxSizing: "border-box",
26015					webkitBoxSizing: "border-box"
26016				});
26017			}
26018
26019			// add listener to document to update pin position in case controller is not the document.
26020			window.addEventListener('scroll', updatePinInContainer);
26021			window.addEventListener('resize', updatePinInContainer);
26022			window.addEventListener('resize', updateRelativePinSpacer);
26023			// add mousewheel listener to catch scrolls over fixed elements
26024			_pin.addEventListener("mousewheel", onMousewheelOverPin);
26025			_pin.addEventListener("DOMMouseScroll", onMousewheelOverPin);
26026
26027			log(3, "added pin");
26028
26029			// finally update the pin to init
26030			updatePinState();
26031
26032			return Scene;
26033		};
26034
26035		/**
26036		 * Remove the pin from the scene.
26037		 * @method ScrollMagic.Scene#removePin
26038		 * @example
26039		 * // remove the pin from the scene without resetting it (the spacer is not removed)
26040		 * scene.removePin();
26041		 *
26042		 * // remove the pin from the scene and reset the pin element to its initial position (spacer is removed)
26043		 * scene.removePin(true);
26044		 *
26045		 * @param {boolean} [reset=false] - If `false` the spacer will not be removed and the element's position will not be reset.
26046		 * @returns {Scene} Parent object for chaining.
26047		 */
26048		this.removePin = function (reset) {
26049			if (_pin) {
26050				if (_state === SCENE_STATE_DURING) {
26051					updatePinState(true); // force unpin at position
26052				}
26053				if (reset || !_controller) { // if there's no controller no progress was made anyway...
26054					var pinTarget = _pinOptions.spacer.firstChild; // usually the pin element, but may be another spacer (cascaded pins)...
26055					if (pinTarget.hasAttribute(PIN_SPACER_ATTRIBUTE)) { // copy margins to child spacer
26056						var
26057						style = _pinOptions.spacer.style,
26058							values = ["margin", "marginLeft", "marginRight", "marginTop", "marginBottom"],
26059							margins = {};
26060						values.forEach(function (val) {
26061							margins[val] = style[val] || "";
26062						});
26063						_util.css(pinTarget, margins);
26064					}
26065					_pinOptions.spacer.parentNode.insertBefore(pinTarget, _pinOptions.spacer);
26066					_pinOptions.spacer.parentNode.removeChild(_pinOptions.spacer);
26067					if (!_pin.parentNode.hasAttribute(PIN_SPACER_ATTRIBUTE)) { // if it's the last pin for this element -> restore inline styles
26068						// TODO: only correctly set for first pin (when cascading) - how to fix?
26069						_util.css(_pin, _pin.___origStyle);
26070						delete _pin.___origStyle;
26071					}
26072				}
26073				window.removeEventListener('scroll', updatePinInContainer);
26074				window.removeEventListener('resize', updatePinInContainer);
26075				window.removeEventListener('resize', updateRelativePinSpacer);
26076				_pin.removeEventListener("mousewheel", onMousewheelOverPin);
26077				_pin.removeEventListener("DOMMouseScroll", onMousewheelOverPin);
26078				_pin = undefined;
26079				log(3, "removed pin (reset: " + (reset ? "true" : "false") + ")");
26080			}
26081			return Scene;
26082		};
26083
26084
26085		var
26086		_cssClasses, _cssClassElems = [];
26087
26088		Scene.on("destroy.internal", function (e) {
26089			Scene.removeClassToggle(e.reset);
26090		});
26091		/**
26092		 * Define a css class modification while the scene is active.  
26093		 * When the scene triggers the classes will be added to the supplied element and removed, when the scene is over.
26094		 * If the scene duration is 0 the classes will only be removed if the user scrolls back past the start position.
26095		 * @method ScrollMagic.Scene#setClassToggle
26096		 * @example
26097		 * // add the class 'myclass' to the element with the id 'my-elem' for the duration of the scene
26098		 * scene.setClassToggle("#my-elem", "myclass");
26099		 *
26100		 * // add multiple classes to multiple elements defined by the selector '.classChange'
26101		 * scene.setClassToggle(".classChange", "class1 class2 class3");
26102		 *
26103		 * @param {(string|object)} element - A Selector targeting one or more elements or a DOM object that is supposed to be modified.
26104		 * @param {string} classes - One or more Classnames (separated by space) that should be added to the element during the scene.
26105		 *
26106		 * @returns {Scene} Parent object for chaining.
26107		 */
26108		this.setClassToggle = function (element, classes) {
26109			var elems = _util.get.elements(element);
26110			if (elems.length === 0 || !_util.type.String(classes)) {
26111				log(1, "ERROR calling method 'setClassToggle()': Invalid " + (elems.length === 0 ? "element" : "classes") + " supplied.");
26112				return Scene;
26113			}
26114			if (_cssClassElems.length > 0) {
26115				// remove old ones
26116				Scene.removeClassToggle();
26117			}
26118			_cssClasses = classes;
26119			_cssClassElems = elems;
26120			Scene.on("enter.internal_class leave.internal_class", function (e) {
26121				var toggle = e.type === "enter" ? _util.addClass : _util.removeClass;
26122				_cssClassElems.forEach(function (elem, key) {
26123					toggle(elem, _cssClasses);
26124				});
26125			});
26126			return Scene;
26127		};
26128
26129		/**
26130		 * Remove the class binding from the scene.
26131		 * @method ScrollMagic.Scene#removeClassToggle
26132		 * @example
26133		 * // remove class binding from the scene without reset
26134		 * scene.removeClassToggle();
26135		 *
26136		 * // remove class binding and remove the changes it caused
26137		 * scene.removeClassToggle(true);
26138		 *
26139		 * @param {boolean} [reset=false] - If `false` and the classes are currently active, they will remain on the element. If `true` they will be removed.
26140		 * @returns {Scene} Parent object for chaining.
26141		 */
26142		this.removeClassToggle = function (reset) {
26143			if (reset) {
26144				_cssClassElems.forEach(function (elem, key) {
26145					_util.removeClass(elem, _cssClasses);
26146				});
26147			}
26148			Scene.off("start.internal_class end.internal_class");
26149			_cssClasses = undefined;
26150			_cssClassElems = [];
26151			return Scene;
26152		};
26153
26154		// INIT
26155		construct();
26156		return Scene;
26157	};
26158
26159	// store pagewide scene options
26160	var SCENE_OPTIONS = {
26161		defaults: {
26162			duration: 0,
26163			offset: 0,
26164			triggerElement: undefined,
26165			triggerHook: 0.5,
26166			reverse: true,
26167			loglevel: 2
26168		},
26169		validate: {
26170			offset: function (val) {
26171				val = parseFloat(val);
26172				if (!_util.type.Number(val)) {
26173					throw ["Invalid value for option \"offset\":", val];
26174				}
26175				return val;
26176			},
26177			triggerElement: function (val) {
26178				val = val || undefined;
26179				if (val) {
26180					var elem = _util.get.elements(val)[0];
26181					if (elem && elem.parentNode) {
26182						val = elem;
26183					} else {
26184						throw ["Element defined in option \"triggerElement\" was not found:", val];
26185					}
26186				}
26187				return val;
26188			},
26189			triggerHook: function (val) {
26190				var translate = {
26191					"onCenter": 0.5,
26192					"onEnter": 1,
26193					"onLeave": 0
26194				};
26195				if (_util.type.Number(val)) {
26196					val = Math.max(0, Math.min(parseFloat(val), 1)); //  make sure its betweeen 0 and 1
26197				} else if (val in translate) {
26198					val = translate[val];
26199				} else {
26200					throw ["Invalid value for option \"triggerHook\": ", val];
26201				}
26202				return val;
26203			},
26204			reverse: function (val) {
26205				return !!val; // force boolean
26206			},
26207			loglevel: function (val) {
26208				val = parseInt(val);
26209				if (!_util.type.Number(val) || val < 0 || val > 3) {
26210					throw ["Invalid value for option \"loglevel\":", val];
26211				}
26212				return val;
26213			}
26214		},
26215		// holder for  validation methods. duration validation is handled in 'getters-setters.js'
26216		shifts: ["duration", "offset", "triggerHook"],
26217		// list of options that trigger a `shift` event
26218	};
26219/*
26220 * method used to add an option to ScrollMagic Scenes.
26221 * TODO: DOC (private for dev)
26222 */
26223	ScrollMagic.Scene.addOption = function (name, defaultValue, validationCallback, shifts) {
26224		if (!(name in SCENE_OPTIONS.defaults)) {
26225			SCENE_OPTIONS.defaults[name] = defaultValue;
26226			SCENE_OPTIONS.validate[name] = validationCallback;
26227			if (shifts) {
26228				SCENE_OPTIONS.shifts.push(name);
26229			}
26230		} else {
26231			ScrollMagic._util.log(1, "[static] ScrollMagic.Scene -> Cannot add Scene option '" + name + "', because it already exists.");
26232		}
26233	};
26234	// instance extension function for plugins
26235	// TODO: DOC (private for dev)
26236	ScrollMagic.Scene.extend = function (extension) {
26237		var oldClass = this;
26238		ScrollMagic.Scene = function () {
26239			oldClass.apply(this, arguments);
26240			this.$super = _util.extend({}, this); // copy parent state
26241			return extension.apply(this, arguments) || this;
26242		};
26243		_util.extend(ScrollMagic.Scene, oldClass); // copy properties
26244		ScrollMagic.Scene.prototype = oldClass.prototype; // copy prototype
26245		ScrollMagic.Scene.prototype.constructor = ScrollMagic.Scene; // restore constructor
26246	};
26247
26248
26249
26250	/**
26251	 * TODO: DOCS (private for dev)
26252	 * @class
26253	 * @private
26254	 */
26255
26256	ScrollMagic.Event = function (type, namespace, target, vars) {
26257		vars = vars || {};
26258		for (var key in vars) {
26259			this[key] = vars[key];
26260		}
26261		this.type = type;
26262		this.target = this.currentTarget = target;
26263		this.namespace = namespace || '';
26264		this.timeStamp = this.timestamp = Date.now();
26265		return this;
26266	};
26267
26268/*
26269 * TODO: DOCS (private for dev)
26270 */
26271
26272	var _util = ScrollMagic._util = (function (window) {
26273		var U = {},
26274			i;
26275
26276		/**
26277		 * ------------------------------
26278		 * internal helpers
26279		 * ------------------------------
26280		 */
26281
26282		// parse float and fall back to 0.
26283		var floatval = function (number) {
26284			return parseFloat(number) || 0;
26285		};
26286		// get current style IE safe (otherwise IE would return calculated values for 'auto')
26287		var _getComputedStyle = function (elem) {
26288			return elem.currentStyle ? elem.currentStyle : window.getComputedStyle(elem);
26289		};
26290
26291		// get element dimension (width or height)
26292		var _dimension = function (which, elem, outer, includeMargin) {
26293			elem = (elem === document) ? window : elem;
26294			if (elem === window) {
26295				includeMargin = false;
26296			} else if (!_type.DomElement(elem)) {
26297				return 0;
26298			}
26299			which = which.charAt(0).toUpperCase() + which.substr(1).toLowerCase();
26300			var dimension = (outer ? elem['offset' + which] || elem['outer' + which] : elem['client' + which] || elem['inner' + which]) || 0;
26301			if (outer && includeMargin) {
26302				var style = _getComputedStyle(elem);
26303				dimension += which === 'Height' ? floatval(style.marginTop) + floatval(style.marginBottom) : floatval(style.marginLeft) + floatval(style.marginRight);
26304			}
26305			return dimension;
26306		};
26307		// converts 'margin-top' into 'marginTop'
26308		var _camelCase = function (str) {
26309			return str.replace(/^[^a-z]+([a-z])/g, '$1').replace(/-([a-z])/g, function (g) {
26310				return g[1].toUpperCase();
26311			});
26312		};
26313
26314		/**
26315		 * ------------------------------
26316		 * external helpers
26317		 * ------------------------------
26318		 */
26319
26320		// extend obj – same as jQuery.extend({}, objA, objB)
26321		U.extend = function (obj) {
26322			obj = obj || {};
26323			for (i = 1; i < arguments.length; i++) {
26324				if (!arguments[i]) {
26325					continue;
26326				}
26327				for (var key in arguments[i]) {
26328					if (arguments[i].hasOwnProperty(key)) {
26329						obj[key] = arguments[i][key];
26330					}
26331				}
26332			}
26333			return obj;
26334		};
26335
26336		// check if a css display type results in margin-collapse or not
26337		U.isMarginCollapseType = function (str) {
26338			return ["block", "flex", "list-item", "table", "-webkit-box"].indexOf(str) > -1;
26339		};
26340
26341		// implementation of requestAnimationFrame
26342		// based on https://gist.github.com/paulirish/1579671
26343		var
26344		lastTime = 0,
26345			vendors = ['ms', 'moz', 'webkit', 'o'];
26346		var _requestAnimationFrame = window.requestAnimationFrame;
26347		var _cancelAnimationFrame = window.cancelAnimationFrame;
26348		// try vendor prefixes if the above doesn't work
26349		for (i = 0; !_requestAnimationFrame && i < vendors.length; ++i) {
26350			_requestAnimationFrame = window[vendors[i] + 'RequestAnimationFrame'];
26351			_cancelAnimationFrame = window[vendors[i] + 'CancelAnimationFrame'] || window[vendors[i] + 'CancelRequestAnimationFrame'];
26352		}
26353
26354		// fallbacks
26355		if (!_requestAnimationFrame) {
26356			_requestAnimationFrame = function (callback) {
26357				var
26358				currTime = new Date().getTime(),
26359					timeToCall = Math.max(0, 16 - (currTime - lastTime)),
26360					id = window.setTimeout(function () {
26361						callback(currTime + timeToCall);
26362					}, timeToCall);
26363				lastTime = currTime + timeToCall;
26364				return id;
26365			};
26366		}
26367		if (!_cancelAnimationFrame) {
26368			_cancelAnimationFrame = function (id) {
26369				window.clearTimeout(id);
26370			};
26371		}
26372		U.rAF = _requestAnimationFrame.bind(window);
26373		U.cAF = _cancelAnimationFrame.bind(window);
26374
26375		var
26376		loglevels = ["error", "warn", "log"],
26377			console = window.console || {};
26378
26379		console.log = console.log ||
26380		function () {}; // no console log, well - do nothing then...
26381		// make sure methods for all levels exist.
26382		for (i = 0; i < loglevels.length; i++) {
26383			var method = loglevels[i];
26384			if (!console[method]) {
26385				console[method] = console.log; // prefer .log over nothing
26386			}
26387		}
26388		U.log = function (loglevel) {
26389			if (loglevel > loglevels.length || loglevel <= 0) loglevel = loglevels.length;
26390			var now = new Date(),
26391				time = ("0" + now.getHours()).slice(-2) + ":" + ("0" + now.getMinutes()).slice(-2) + ":" + ("0" + now.getSeconds()).slice(-2) + ":" + ("00" + now.getMilliseconds()).slice(-3),
26392				method = loglevels[loglevel - 1],
26393				args = Array.prototype.splice.call(arguments, 1),
26394				func = Function.prototype.bind.call(console[method], console);
26395			args.unshift(time);
26396			func.apply(console, args);
26397		};
26398
26399		/**
26400		 * ------------------------------
26401		 * type testing
26402		 * ------------------------------
26403		 */
26404
26405		var _type = U.type = function (v) {
26406			return Object.prototype.toString.call(v).replace(/^\[object (.+)\]$/, "$1").toLowerCase();
26407		};
26408		_type.String = function (v) {
26409			return _type(v) === 'string';
26410		};
26411		_type.Function = function (v) {
26412			return _type(v) === 'function';
26413		};
26414		_type.Array = function (v) {
26415			return Array.isArray(v);
26416		};
26417		_type.Number = function (v) {
26418			return !_type.Array(v) && (v - parseFloat(v) + 1) >= 0;
26419		};
26420		_type.DomElement = function (o) {
26421			return (
26422			typeof HTMLElement === "object" ? o instanceof HTMLElement : //DOM2
26423			o && typeof o === "object" && o !== null && o.nodeType === 1 && typeof o.nodeName === "string");
26424		};
26425
26426		/**
26427		 * ------------------------------
26428		 * DOM Element info
26429		 * ------------------------------
26430		 */
26431		// always returns a list of matching DOM elements, from a selector, a DOM element or an list of elements or even an array of selectors
26432		var _get = U.get = {};
26433		_get.elements = function (selector) {
26434			var arr = [];
26435			if (_type.String(selector)) {
26436				try {
26437					selector = document.querySelectorAll(selector);
26438				} catch (e) { // invalid selector
26439					return arr;
26440				}
26441			}
26442			if (_type(selector) === 'nodelist' || _type.Array(selector)) {
26443				for (var i = 0, ref = arr.length = selector.length; i < ref; i++) { // list of elements
26444					var elem = selector[i];
26445					arr[i] = _type.DomElement(elem) ? elem : _get.elements(elem); // if not an element, try to resolve recursively
26446				}
26447			} else if (_type.DomElement(selector) || selector === document || selector === window) {
26448				arr = [selector]; // only the element
26449			}
26450			return arr;
26451		};
26452		// get scroll top value
26453		_get.scrollTop = function (elem) {
26454			return (elem && typeof elem.scrollTop === 'number') ? elem.scrollTop : window.pageYOffset || 0;
26455		};
26456		// get scroll left value
26457		_get.scrollLeft = function (elem) {
26458			return (elem && typeof elem.scrollLeft === 'number') ? elem.scrollLeft : window.pageXOffset || 0;
26459		};
26460		// get element height
26461		_get.width = function (elem, outer, includeMargin) {
26462			return _dimension('width', elem, outer, includeMargin);
26463		};
26464		// get element width
26465		_get.height = function (elem, outer, includeMargin) {
26466			return _dimension('height', elem, outer, includeMargin);
26467		};
26468
26469		// get element position (optionally relative to viewport)
26470		_get.offset = function (elem, relativeToViewport) {
26471			var offset = {
26472				top: 0,
26473				left: 0
26474			};
26475			if (elem && elem.getBoundingClientRect) { // check if available
26476				var rect = elem.getBoundingClientRect();
26477				offset.top = rect.top;
26478				offset.left = rect.left;
26479				if (!relativeToViewport) { // clientRect is by default relative to viewport...
26480					offset.top += _get.scrollTop();
26481					offset.left += _get.scrollLeft();
26482				}
26483			}
26484			return offset;
26485		};
26486
26487		/**
26488		 * ------------------------------
26489		 * DOM Element manipulation
26490		 * ------------------------------
26491		 */
26492
26493		U.addClass = function (elem, classname) {
26494			if (classname) {
26495				if (elem.classList) elem.classList.add(classname);
26496				else elem.className += ' ' + classname;
26497			}
26498		};
26499		U.removeClass = function (elem, classname) {
26500			if (classname) {
26501				if (elem.classList) elem.classList.remove(classname);
26502				else elem.className = elem.className.replace(new RegExp('(^|\\b)' + classname.split(' ').join('|') + '(\\b|$)', 'gi'), ' ');
26503			}
26504		};
26505		// if options is string -> returns css value
26506		// if options is array -> returns object with css value pairs
26507		// if options is object -> set new css values
26508		U.css = function (elem, options) {
26509			if (_type.String(options)) {
26510				return _getComputedStyle(elem)[_camelCase(options)];
26511			} else if (_type.Array(options)) {
26512				var
26513				obj = {},
26514					style = _getComputedStyle(elem);
26515				options.forEach(function (option, key) {
26516					obj[option] = style[_camelCase(option)];
26517				});
26518				return obj;
26519			} else {
26520				for (var option in options) {
26521					var val = options[option];
26522					if (val == parseFloat(val)) { // assume pixel for seemingly numerical values
26523						val += 'px';
26524					}
26525					elem.style[_camelCase(option)] = val;
26526				}
26527			}
26528		};
26529
26530		return U;
26531	}(window || {}));
26532
26533	ScrollMagic.Scene.prototype.addIndicators = function () {
26534		ScrollMagic._util.log(1, '(ScrollMagic.Scene) -> ERROR calling addIndicators() due to missing Plugin \'debug.addIndicators\'. Please make sure to include plugins/debug.addIndicators.js');
26535		return this;
26536	}
26537	ScrollMagic.Scene.prototype.removeIndicators = function () {
26538		ScrollMagic._util.log(1, '(ScrollMagic.Scene) -> ERROR calling removeIndicators() due to missing Plugin \'debug.addIndicators\'. Please make sure to include plugins/debug.addIndicators.js');
26539		return this;
26540	}
26541	ScrollMagic.Scene.prototype.setTween = function () {
26542		ScrollMagic._util.log(1, '(ScrollMagic.Scene) -> ERROR calling setTween() due to missing Plugin \'animation.gsap\'. Please make sure to include plugins/animation.gsap.js');
26543		return this;
26544	}
26545	ScrollMagic.Scene.prototype.removeTween = function () {
26546		ScrollMagic._util.log(1, '(ScrollMagic.Scene) -> ERROR calling removeTween() due to missing Plugin \'animation.gsap\'. Please make sure to include plugins/animation.gsap.js');
26547		return this;
26548	}
26549	ScrollMagic.Scene.prototype.setVelocity = function () {
26550		ScrollMagic._util.log(1, '(ScrollMagic.Scene) -> ERROR calling setVelocity() due to missing Plugin \'animation.velocity\'. Please make sure to include plugins/animation.velocity.js');
26551		return this;
26552	}
26553	ScrollMagic.Scene.prototype.removeVelocity = function () {
26554		ScrollMagic._util.log(1, '(ScrollMagic.Scene) -> ERROR calling removeVelocity() due to missing Plugin \'animation.velocity\'. Please make sure to include plugins/animation.velocity.js');
26555		return this;
26556	}
26557
26558	return ScrollMagic;
26559}));
26560
26561/***/ }),
26562
vendor: 7,344 bytes, lines 26563-26576
26563/***/ "./node_modules/smooth-scroll/dist/smooth-scroll.polyfills.min.js":
26564/*!************************************************************************!*\
26565  !*** ./node_modules/smooth-scroll/dist/smooth-scroll.polyfills.min.js ***!
26566  \************************************************************************/
26567/*! no static exports found */
26568/***/ (function(module, exports, __webpack_require__) {
26569
26570/* WEBPACK VAR INJECTION */(function(global) {var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! smooth-scroll v16.1.2 | (c) 2020 Chris Ferdinandi | MIT License | http://github.com/cferdinandi/smooth-scroll */
26571window.Element&&!Element.prototype.closest&&(Element.prototype.closest=function(e){var t,n=(this.document||this.ownerDocument).querySelectorAll(e),o=this;do{for(t=n.length;0<=--t&&n.item(t)!==o;);}while(t<0&&(o=o.parentElement));return o}),(function(){if("function"==typeof window.CustomEvent)return;function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var n=document.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}e.prototype=window.Event.prototype,window.CustomEvent=e})(),(function(){for(var r=0,e=["ms","moz","webkit","o"],t=0;t<e.length&&!window.requestAnimationFrame;++t)window.requestAnimationFrame=window[e[t]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[e[t]+"CancelAnimationFrame"]||window[e[t]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(e,t){var n=(new Date).getTime(),o=Math.max(0,16-(n-r)),a=window.setTimeout((function(){e(n+o)}),o);return r=n+o,a}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(e){clearTimeout(e)})})(),(function(e,t){ true?!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function(){return t(e)}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
26572				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)):undefined})("undefined"!=typeof global?global:"undefined"!=typeof window?window:this,(function(q){"use strict";var I={ignore:"[data-scroll-ignore]",header:null,topOnEmptyHash:!0,speed:500,speedAsDuration:!1,durationMax:null,durationMin:null,clip:!0,offset:0,easing:"easeInOutCubic",customEasing:null,updateURL:!0,popstate:!0,emitEvents:!0},F=function(){var n={};return Array.prototype.forEach.call(arguments,(function(e){for(var t in e){if(!e.hasOwnProperty(t))return;n[t]=e[t]}})),n},r=function(e){"#"===e.charAt(0)&&(e=e.substr(1));for(var t,n=String(e),o=n.length,a=-1,r="",i=n.charCodeAt(0);++a<o;){if(0===(t=n.charCodeAt(a)))throw new InvalidCharacterError("Invalid character: the input contains U+0000.");1<=t&&t<=31||127==t||0===a&&48<=t&&t<=57||1===a&&48<=t&&t<=57&&45===i?r+="\\"+t.toString(16)+" ":r+=128<=t||45===t||95===t||48<=t&&t<=57||65<=t&&t<=90||97<=t&&t<=122?n.charAt(a):"\\"+n.charAt(a)}return"#"+r},L=function(){return Math.max(document.body.scrollHeight,document.documentElement.scrollHeight,document.body.offsetHeight,document.documentElement.offsetHeight,document.body.clientHeight,document.documentElement.clientHeight)},x=function(e){return e?(t=e,parseInt(q.getComputedStyle(t).height,10)+e.offsetTop):0;var t},H=function(e,t,n,o){if(t.emitEvents&&"function"==typeof q.CustomEvent){var a=new CustomEvent(e,{bubbles:!0,detail:{anchor:n,toggle:o}});document.dispatchEvent(a)}};return function(o,e){var A,a,O,C,M={};M.cancelScroll=function(e){cancelAnimationFrame(C),C=null,e||H("scrollCancel",A)},M.animateScroll=function(i,c,e){M.cancelScroll();var s=F(A||I,e||{}),u="[object Number]"===Object.prototype.toString.call(i),t=u||!i.tagName?null:i;if(u||t){var l=q.pageYOffset;s.header&&!O&&(O=document.querySelector(s.header));var n,o,a,m,r,d,f,h,p=x(O),g=u?i:(function(e,t,n,o){var a=0;if(e.offsetParent)for(;a+=e.offsetTop,e=e.offsetParent;);return a=Math.max(a-t-n,0),o&&(a=Math.min(a,L()-q.innerHeight)),a})(t,p,parseInt("function"==typeof s.offset?s.offset(i,c):s.offset,10),s.clip),y=g-l,v=L(),w=0,S=(n=y,a=(o=s).speedAsDuration?o.speed:Math.abs(n/1e3*o.speed),o.durationMax&&a>o.durationMax?o.durationMax:o.durationMin&&a<o.durationMin?o.durationMin:parseInt(a,10)),E=function(e,t){var n,o,a,r=q.pageYOffset;if(e==t||r==t||(l<t&&q.innerHeight+r)>=v)return M.cancelScroll(!0),o=t,a=u,0===(n=i)&&document.body.focus(),a||(n.focus(),document.activeElement!==n&&(n.setAttribute("tabindex","-1"),n.focus(),n.style.outline="none"),q.scrollTo(0,o)),H("scrollStop",s,i,c),!(C=m=null)},b=function(e){var t,n,o;m||(m=e),w+=e-m,d=l+y*(n=r=1<(r=0===S?0:w/S)?1:r,"easeInQuad"===(t=s).easing&&(o=n*n),"easeOutQuad"===t.easing&&(o=n*(2-n)),"easeInOutQuad"===t.easing&&(o=n<.5?2*n*n:(4-2*n)*n-1),"easeInCubic"===t.easing&&(o=n*n*n),"easeOutCubic"===t.easing&&(o=--n*n*n+1),"easeInOutCubic"===t.easing&&(o=n<.5?4*n*n*n:(n-1)*(2*n-2)*(2*n-2)+1),"easeInQuart"===t.easing&&(o=n*n*n*n),"easeOutQuart"===t.easing&&(o=1- --n*n*n*n),"easeInOutQuart"===t.easing&&(o=n<.5?8*n*n*n*n:1-8*--n*n*n*n),"easeInQuint"===t.easing&&(o=n*n*n*n*n),"easeOutQuint"===t.easing&&(o=1+--n*n*n*n*n),"easeInOutQuint"===t.easing&&(o=n<.5?16*n*n*n*n*n:1+16*--n*n*n*n*n),t.customEasing&&(o=t.customEasing(n)),o||n),q.scrollTo(0,Math.floor(d)),E(d,g)||(C=q.requestAnimationFrame(b),m=e)};0===q.pageYOffset&&q.scrollTo(0,0),f=i,h=s,u||history.pushState&&h.updateURL&&history.pushState({smoothScroll:JSON.stringify(h),anchor:f.id},document.title,f===document.documentElement?"#top":"#"+f.id),"matchMedia"in q&&q.matchMedia("(prefers-reduced-motion)").matches?q.scrollTo(0,Math.floor(g)):(H("scrollStart",s,i,c),M.cancelScroll(!0),q.requestAnimationFrame(b))}};var t=function(e){if(!e.defaultPrevented&&!(0!==e.button||e.metaKey||e.ctrlKey||e.shiftKey)&&"closest"in e.target&&(a=e.target.closest(o))&&"a"===a.tagName.toLowerCase()&&!e.target.closest(A.ignore)&&a.hostname===q.location.hostname&&a.pathname===q.location.pathname&&/#/.test(a.href)){var t,n;try{t=r(decodeURIComponent(a.hash))}catch(e){t=r(a.hash)}if("#"===t){if(!A.topOnEmptyHash)return;n=document.documentElement}else n=document.querySelector(t);(n=n||"#top"!==t?n:document.documentElement)&&(e.preventDefault(),(function(e){if(history.replaceState&&e.updateURL&&!history.state){var t=q.location.hash;t=t||"",history.replaceState({smoothScroll:JSON.stringify(e),anchor:t||q.pageYOffset},document.title,t||q.location.href)}})(A),M.animateScroll(n,a))}},n=function(e){if(null!==history.state&&history.state.smoothScroll&&history.state.smoothScroll===JSON.stringify(A)){var t=history.state.anchor;"string"==typeof t&&t&&!(t=document.querySelector(r(history.state.anchor)))||M.animateScroll(t,null,{updateURL:!1})}};M.destroy=function(){A&&(document.removeEventListener("click",t,!1),q.removeEventListener("popstate",n,!1),M.cancelScroll(),C=O=a=A=null)};return (function(){if(!("querySelector"in document&&"addEventListener"in q&&"requestAnimationFrame"in q&&"closest"in q.Element.prototype))throw"Smooth Scroll: This browser does not support the required JavaScript methods and browser APIs.";M.destroy(),A=F(I,e||{}),O=A.header?document.querySelector(A.header):null,document.addEventListener("click",t,!1),A.updateURL&&A.popstate&&q.addEventListener("popstate",n,!1)})(),M}}));
26573/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))
26574
26575/***/ }),
26576
vendor: 2,422 bytes, lines 26577-26665
26577/***/ "./node_modules/ssr-window/dist/ssr-window.esm.js":
26578/*!********************************************************!*\
26579  !*** ./node_modules/ssr-window/dist/ssr-window.esm.js ***!
26580  \********************************************************/
26581/*! exports provided: window, document */
26582/***/ (function(module, __webpack_exports__, __webpack_require__) {
26583
26584"use strict";
26585__webpack_require__.r(__webpack_exports__);
26586/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "window", function() { return win; });
26587/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "document", function() { return doc; });
26588/**
26589 * SSR Window 1.0.1
26590 * Better handling for window object in SSR environment
26591 * https://github.com/nolimits4web/ssr-window
26592 *
26593 * Copyright 2018, Vladimir Kharlampidi
26594 *
26595 * Licensed under MIT
26596 *
26597 * Released on: July 18, 2018
26598 */
26599var doc = (typeof document === 'undefined') ? {
26600  body: {},
26601  addEventListener: function addEventListener() {},
26602  removeEventListener: function removeEventListener() {},
26603  activeElement: {
26604    blur: function blur() {},
26605    nodeName: '',
26606  },
26607  querySelector: function querySelector() {
26608    return null;
26609  },
26610  querySelectorAll: function querySelectorAll() {
26611    return [];
26612  },
26613  getElementById: function getElementById() {
26614    return null;
26615  },
26616  createEvent: function createEvent() {
26617    return {
26618      initEvent: function initEvent() {},
26619    };
26620  },
26621  createElement: function createElement() {
26622    return {
26623      children: [],
26624      childNodes: [],
26625      style: {},
26626      setAttribute: function setAttribute() {},
26627      getElementsByTagName: function getElementsByTagName() {
26628        return [];
26629      },
26630    };
26631  },
26632  location: { hash: '' },
26633} : document; // eslint-disable-line
26634
26635var win = (typeof window === 'undefined') ? {
26636  document: doc,
26637  navigator: {
26638    userAgent: '',
26639  },
26640  location: {},
26641  history: {},
26642  CustomEvent: function CustomEvent() {
26643    return this;
26644  },
26645  addEventListener: function addEventListener() {},
26646  removeEventListener: function removeEventListener() {},
26647  getComputedStyle: function getComputedStyle() {
26648    return {
26649      getPropertyValue: function getPropertyValue() {
26650        return '';
26651      },
26652    };
26653  },
26654  Image: function Image() {},
26655  Date: function Date() {},
26656  screen: {},
26657  setTimeout: function setTimeout() {},
26658  clearTimeout: function clearTimeout() {},
26659} : window; // eslint-disable-line
26660
26661
26662
26663
26664/***/ }),
26665
vendor: 6,525 bytes, lines 26666-26779
26666/***/ "./node_modules/svg4everybody/dist/svg4everybody.js":
26667/*!**********************************************************!*\
26668  !*** ./node_modules/svg4everybody/dist/svg4everybody.js ***!
26669  \**********************************************************/
26670/*! no static exports found */
26671/***/ (function(module, exports, __webpack_require__) {
26672
26673var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!function(root, factory) {
26674     true ? // AMD. Register as an anonymous module unless amdModuleId is set
26675    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function() {
26676        return root.svg4everybody = factory();
26677    }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
26678				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
26679}(this, function() {
26680    /*! svg4everybody v2.1.9 | github.com/jonathantneal/svg4everybody */
26681    function embed(parent, svg, target) {
26682        // if the target exists
26683        if (target) {
26684            // create a document fragment to hold the contents of the target
26685            var fragment = document.createDocumentFragment(), viewBox = !svg.hasAttribute("viewBox") && target.getAttribute("viewBox");
26686            // conditionally set the viewBox on the svg
26687            viewBox && svg.setAttribute("viewBox", viewBox);
26688            // copy the contents of the clone into the fragment
26689            for (// clone the target
26690            var clone = target.cloneNode(!0); clone.childNodes.length; ) {
26691                fragment.appendChild(clone.firstChild);
26692            }
26693            // append the fragment into the svg
26694            parent.appendChild(fragment);
26695        }
26696    }
26697    function loadreadystatechange(xhr) {
26698        // listen to changes in the request
26699        xhr.onreadystatechange = function() {
26700            // if the request is ready
26701            if (4 === xhr.readyState) {
26702                // get the cached html document
26703                var cachedDocument = xhr._cachedDocument;
26704                // ensure the cached html document based on the xhr response
26705                cachedDocument || (cachedDocument = xhr._cachedDocument = document.implementation.createHTMLDocument(""), 
26706                cachedDocument.body.innerHTML = xhr.responseText, xhr._cachedTarget = {}), // clear the xhr embeds list and embed each item
26707                xhr._embeds.splice(0).map(function(item) {
26708                    // get the cached target
26709                    var target = xhr._cachedTarget[item.id];
26710                    // ensure the cached target
26711                    target || (target = xhr._cachedTarget[item.id] = cachedDocument.getElementById(item.id)), 
26712                    // embed the target into the svg
26713                    embed(item.parent, item.svg, target);
26714                });
26715            }
26716        }, // test the ready state change immediately
26717        xhr.onreadystatechange();
26718    }
26719    function svg4everybody(rawopts) {
26720        function oninterval() {
26721            // while the index exists in the live <use> collection
26722            for (// get the cached <use> index
26723            var index = 0; index < uses.length; ) {
26724                // get the current <use>
26725                var use = uses[index], parent = use.parentNode, svg = getSVGAncestor(parent), src = use.getAttribute("xlink:href") || use.getAttribute("href");
26726                if (!src && opts.attributeName && (src = use.getAttribute(opts.attributeName)), 
26727                svg && src) {
26728                    if (polyfill) {
26729                        if (!opts.validate || opts.validate(src, svg, use)) {
26730                            // remove the <use> element
26731                            parent.removeChild(use);
26732                            // parse the src and get the url and id
26733                            var srcSplit = src.split("#"), url = srcSplit.shift(), id = srcSplit.join("#");
26734                            // if the link is external
26735                            if (url.length) {
26736                                // get the cached xhr request
26737                                var xhr = requests[url];
26738                                // ensure the xhr request exists
26739                                xhr || (xhr = requests[url] = new XMLHttpRequest(), xhr.open("GET", url), xhr.send(), 
26740                                xhr._embeds = []), // add the svg and id as an item to the xhr embeds list
26741                                xhr._embeds.push({
26742                                    parent: parent,
26743                                    svg: svg,
26744                                    id: id
26745                                }), // prepare the xhr ready state change event
26746                                loadreadystatechange(xhr);
26747                            } else {
26748                                // embed the local id into the svg
26749                                embed(parent, svg, document.getElementById(id));
26750                            }
26751                        } else {
26752                            // increase the index when the previous value was not "valid"
26753                            ++index, ++numberOfSvgUseElementsToBypass;
26754                        }
26755                    }
26756                } else {
26757                    // increase the index when the previous value was not "valid"
26758                    ++index;
26759                }
26760            }
26761            // continue the interval
26762            (!uses.length || uses.length - numberOfSvgUseElementsToBypass > 0) && requestAnimationFrame(oninterval, 67);
26763        }
26764        var polyfill, opts = Object(rawopts), newerIEUA = /\bTrident\/[567]\b|\bMSIE (?:9|10)\.0\b/, webkitUA = /\bAppleWebKit\/(\d+)\b/, olderEdgeUA = /\bEdge\/12\.(\d+)\b/, edgeUA = /\bEdge\/.(\d+)\b/, inIframe = window.top !== window.self;
26765        polyfill = "polyfill" in opts ? opts.polyfill : newerIEUA.test(navigator.userAgent) || (navigator.userAgent.match(olderEdgeUA) || [])[1] < 10547 || (navigator.userAgent.match(webkitUA) || [])[1] < 537 || edgeUA.test(navigator.userAgent) && inIframe;
26766        // create xhr requests object
26767        var requests = {}, requestAnimationFrame = window.requestAnimationFrame || setTimeout, uses = document.getElementsByTagName("use"), numberOfSvgUseElementsToBypass = 0;
26768        // conditionally start the interval if the polyfill is active
26769        polyfill && oninterval();
26770    }
26771    function getSVGAncestor(node) {
26772        for (var svg = node; "svg" !== svg.nodeName.toLowerCase() && (svg = svg.parentNode); ) {}
26773        return svg;
26774    }
26775    return svg4everybody;
26776});
26777
26778/***/ }),
26779
vendor: 251,282 bytes, lines 26780-33927
26780/***/ "./node_modules/swiper/dist/js/swiper.esm.bundle.js":
26781/*!**********************************************************!*\
26782  !*** ./node_modules/swiper/dist/js/swiper.esm.bundle.js ***!
26783  \**********************************************************/
26784/*! exports provided: default */
26785/***/ (function(module, __webpack_exports__, __webpack_require__) {
26786
26787"use strict";
26788__webpack_require__.r(__webpack_exports__);
26789/* harmony import */ var dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! dom7/dist/dom7.modular */ "./node_modules/dom7/dist/dom7.modular.js");
26790/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/dist/ssr-window.esm.js");
26791var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
26792
26793var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
26794
26795function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
26796
26797function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
26798
26799function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
26800
26801/**
26802 * Swiper 4.4.6
26803 * Most modern mobile touch slider and framework with hardware accelerated transitions
26804 * http://www.idangero.us/swiper/
26805 *
26806 * Copyright 2014-2018 Vladimir Kharlampidi
26807 *
26808 * Released under the MIT License
26809 *
26810 * Released on: December 19, 2018
26811 */
26812
26813
26814
26815
26816var Methods = {
26817  addClass: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["addClass"],
26818  removeClass: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["removeClass"],
26819  hasClass: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["hasClass"],
26820  toggleClass: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["toggleClass"],
26821  attr: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["attr"],
26822  removeAttr: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["removeAttr"],
26823  data: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["data"],
26824  transform: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["transform"],
26825  transition: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["transition"],
26826  on: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["on"],
26827  off: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["off"],
26828  trigger: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["trigger"],
26829  transitionEnd: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["transitionEnd"],
26830  outerWidth: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["outerWidth"],
26831  outerHeight: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["outerHeight"],
26832  offset: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["offset"],
26833  css: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["css"],
26834  each: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["each"],
26835  html: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["html"],
26836  text: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["text"],
26837  is: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["is"],
26838  index: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["index"],
26839  eq: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["eq"],
26840  append: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["append"],
26841  prepend: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["prepend"],
26842  next: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["next"],
26843  nextAll: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["nextAll"],
26844  prev: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["prev"],
26845  prevAll: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["prevAll"],
26846  parent: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["parent"],
26847  parents: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["parents"],
26848  closest: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["closest"],
26849  find: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["find"],
26850  children: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["children"],
26851  remove: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["remove"],
26852  add: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["add"],
26853  styles: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["styles"]
26854};
26855
26856Object.keys(Methods).forEach(function (methodName) {
26857  dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"].fn[methodName] = Methods[methodName];
26858});
26859
26860var Utils = {
26861  deleteProps: function deleteProps(obj) {
26862    var object = obj;
26863    Object.keys(object).forEach(function (key) {
26864      try {
26865        object[key] = null;
26866      } catch (e) {
26867        // no getter for object
26868      }
26869      try {
26870        delete object[key];
26871      } catch (e) {
26872        // something got wrong
26873      }
26874    });
26875  },
26876  nextTick: function nextTick(callback) {
26877    var delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
26878
26879    return setTimeout(callback, delay);
26880  },
26881  now: function now() {
26882    return Date.now();
26883  },
26884  getTranslate: function getTranslate(el) {
26885    var axis = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'x';
26886
26887    var matrix = void 0;
26888    var curTransform = void 0;
26889    var transformMatrix = void 0;
26890
26891    var curStyle = ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].getComputedStyle(el, null);
26892
26893    if (ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].WebKitCSSMatrix) {
26894      curTransform = curStyle.transform || curStyle.webkitTransform;
26895      if (curTransform.split(',').length > 6) {
26896        curTransform = curTransform.split(', ').map(function (a) {
26897          return a.replace(',', '.');
26898        }).join(', ');
26899      }
26900      // Some old versions of Webkit choke when 'none' is passed; pass
26901      // empty string instead in this case
26902      transformMatrix = new ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);
26903    } else {
26904      transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');
26905      matrix = transformMatrix.toString().split(',');
26906    }
26907
26908    if (axis === 'x') {
26909      // Latest Chrome and webkits Fix
26910      if (ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].WebKitCSSMatrix) curTransform = transformMatrix.m41;
26911      // Crazy IE10 Matrix
26912      else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);
26913        // Normal Browsers
26914        else curTransform = parseFloat(matrix[4]);
26915    }
26916    if (axis === 'y') {
26917      // Latest Chrome and webkits Fix
26918      if (ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].WebKitCSSMatrix) curTransform = transformMatrix.m42;
26919      // Crazy IE10 Matrix
26920      else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);
26921        // Normal Browsers
26922        else curTransform = parseFloat(matrix[5]);
26923    }
26924    return curTransform || 0;
26925  },
26926  parseUrlQuery: function parseUrlQuery(url) {
26927    var query = {};
26928    var urlToParse = url || ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].location.href;
26929    var i = void 0;
26930    var params = void 0;
26931    var param = void 0;
26932    var length = void 0;
26933    if (typeof urlToParse === 'string' && urlToParse.length) {
26934      urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\S*\?/, '') : '';
26935      params = urlToParse.split('&').filter(function (paramsPart) {
26936        return paramsPart !== '';
26937      });
26938      length = params.length;
26939
26940      for (i = 0; i < length; i += 1) {
26941        param = params[i].replace(/#\S+/g, '').split('=');
26942        query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || '';
26943      }
26944    }
26945    return query;
26946  },
26947  isObject: function isObject(o) {
26948    return (typeof o === 'undefined' ? 'undefined' : _typeof(o)) === 'object' && o !== null && o.constructor && o.constructor === Object;
26949  },
26950  extend: function extend() {
26951    var to = Object(arguments.length <= 0 ? undefined : arguments[0]);
26952    for (var i = 1; i < arguments.length; i += 1) {
26953      var nextSource = arguments.length <= i ? undefined : arguments[i];
26954      if (nextSource !== undefined && nextSource !== null) {
26955        var keysArray = Object.keys(Object(nextSource));
26956        for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {
26957          var nextKey = keysArray[nextIndex];
26958          var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
26959          if (desc !== undefined && desc.enumerable) {
26960            if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {
26961              Utils.extend(to[nextKey], nextSource[nextKey]);
26962            } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {
26963              to[nextKey] = {};
26964              Utils.extend(to[nextKey], nextSource[nextKey]);
26965            } else {
26966              to[nextKey] = nextSource[nextKey];
26967            }
26968          }
26969        }
26970      }
26971    }
26972    return to;
26973  }
26974};
26975
26976var Support = function Support() {
26977  var testDiv = ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].createElement('div');
26978  return {
26979    touch: ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].Modernizr && ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].Modernizr.touch === true || function checkTouch() {
26980      return !!(ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].navigator.maxTouchPoints > 0 || 'ontouchstart' in ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"] || ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].DocumentTouch && ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"] instanceof ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].DocumentTouch);
26981    }(),
26982
26983    pointerEvents: !!(ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].navigator.pointerEnabled || ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].PointerEvent || 'maxTouchPoints' in ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].navigator),
26984    prefixedPointerEvents: !!ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].navigator.msPointerEnabled,
26985
26986    transition: function checkTransition() {
26987      var style = testDiv.style;
26988      return 'transition' in style || 'webkitTransition' in style || 'MozTransition' in style;
26989    }(),
26990    transforms3d: ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].Modernizr && ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].Modernizr.csstransforms3d === true || function checkTransforms3d() {
26991      var style = testDiv.style;
26992      return 'webkitPerspective' in style || 'MozPerspective' in style || 'OPerspective' in style || 'MsPerspective' in style || 'perspective' in style;
26993    }(),
26994
26995    flexbox: function checkFlexbox() {
26996      var style = testDiv.style;
26997      var styles$$1 = 'alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient'.split(' ');
26998      for (var i = 0; i < styles$$1.length; i += 1) {
26999        if (styles$$1[i] in style) return true;
27000      }
27001      return false;
27002    }(),
27003
27004    observer: function checkObserver() {
27005      return 'MutationObserver' in ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"] || 'WebkitMutationObserver' in ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"];
27006    }(),
27007
27008    passiveListener: function checkPassiveListener() {
27009      var supportsPassive = false;
27010      try {
27011        var opts = Object.defineProperty({}, 'passive', {
27012          // eslint-disable-next-line
27013          get: function get() {
27014            supportsPassive = true;
27015          }
27016        });
27017        ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].addEventListener('testPassiveListener', null, opts);
27018      } catch (e) {
27019        // No support
27020      }
27021      return supportsPassive;
27022    }(),
27023
27024    gestures: function checkGestures() {
27025      return 'ongesturestart' in ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"];
27026    }()
27027  };
27028}();
27029
27030var SwiperClass = function () {
27031  function SwiperClass() {
27032    var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
27033
27034    _classCallCheck(this, SwiperClass);
27035
27036    var self = this;
27037    self.params = params;
27038
27039    // Events
27040    self.eventsListeners = {};
27041
27042    if (self.params && self.params.on) {
27043      Object.keys(self.params.on).forEach(function (eventName) {
27044        self.on(eventName, self.params.on[eventName]);
27045      });
27046    }
27047  }
27048
27049  _createClass(SwiperClass, [{
27050    key: 'on',
27051    value: function on(events, handler, priority) {
27052      var self = this;
27053      if (typeof handler !== 'function') return self;
27054      var method = priority ? 'unshift' : 'push';
27055      events.split(' ').forEach(function (event) {
27056        if (!self.eventsListeners[event]) self.eventsListeners[event] = [];
27057        self.eventsListeners[event][method](handler);
27058      });
27059      return self;
27060    }
27061  }, {
27062    key: 'once',
27063    value: function once(events, handler, priority) {
27064      var self = this;
27065      if (typeof handler !== 'function') return self;
27066      function onceHandler() {
27067        for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
27068          args[_key] = arguments[_key];
27069        }
27070
27071        handler.apply(self, args);
27072        self.off(events, onceHandler);
27073      }
27074      return self.on(events, onceHandler, priority);
27075    }
27076  }, {
27077    key: 'off',
27078    value: function off(events, handler) {
27079      var self = this;
27080      if (!self.eventsListeners) return self;
27081      events.split(' ').forEach(function (event) {
27082        if (typeof handler === 'undefined') {
27083          self.eventsListeners[event] = [];
27084        } else if (self.eventsListeners[event] && self.eventsListeners[event].length) {
27085          self.eventsListeners[event].forEach(function (eventHandler, index$$1) {
27086            if (eventHandler === handler) {
27087              self.eventsListeners[event].splice(index$$1, 1);
27088            }
27089          });
27090        }
27091      });
27092      return self;
27093    }
27094  }, {
27095    key: 'emit',
27096    value: function emit() {
27097      var self = this;
27098      if (!self.eventsListeners) return self;
27099      var events = void 0;
27100      var data$$1 = void 0;
27101      var context = void 0;
27102
27103      for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
27104        args[_key2] = arguments[_key2];
27105      }
27106
27107      if (typeof args[0] === 'string' || Array.isArray(args[0])) {
27108        events = args[0];
27109        data$$1 = args.slice(1, args.length);
27110        context = self;
27111      } else {
27112        events = args[0].events;
27113        data$$1 = args[0].data;
27114        context = args[0].context || self;
27115      }
27116      var eventsArray = Array.isArray(events) ? events : events.split(' ');
27117      eventsArray.forEach(function (event) {
27118        if (self.eventsListeners && self.eventsListeners[event]) {
27119          var handlers = [];
27120          self.eventsListeners[event].forEach(function (eventHandler) {
27121            handlers.push(eventHandler);
27122          });
27123          handlers.forEach(function (eventHandler) {
27124            eventHandler.apply(context, data$$1);
27125          });
27126        }
27127      });
27128      return self;
27129    }
27130  }, {
27131    key: 'useModulesParams',
27132    value: function useModulesParams(instanceParams) {
27133      var instance = this;
27134      if (!instance.modules) return;
27135      Object.keys(instance.modules).forEach(function (moduleName) {
27136        var module = instance.modules[moduleName];
27137        // Extend params
27138        if (module.params) {
27139          Utils.extend(instanceParams, module.params);
27140        }
27141      });
27142    }
27143  }, {
27144    key: 'useModules',
27145    value: function useModules() {
27146      var modulesParams = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
27147
27148      var instance = this;
27149      if (!instance.modules) return;
27150      Object.keys(instance.modules).forEach(function (moduleName) {
27151        var module = instance.modules[moduleName];
27152        var moduleParams = modulesParams[moduleName] || {};
27153        // Extend instance methods and props
27154        if (module.instance) {
27155          Object.keys(module.instance).forEach(function (modulePropName) {
27156            var moduleProp = module.instance[modulePropName];
27157            if (typeof moduleProp === 'function') {
27158              instance[modulePropName] = moduleProp.bind(instance);
27159            } else {
27160              instance[modulePropName] = moduleProp;
27161            }
27162          });
27163        }
27164        // Add event listeners
27165        if (module.on && instance.on) {
27166          Object.keys(module.on).forEach(function (moduleEventName) {
27167            instance.on(moduleEventName, module.on[moduleEventName]);
27168          });
27169        }
27170
27171        // Module create callback
27172        if (module.create) {
27173          module.create.bind(instance)(moduleParams);
27174        }
27175      });
27176    }
27177  }], [{
27178    key: 'installModule',
27179    value: function installModule(module) {
27180      var Class = this;
27181      if (!Class.prototype.modules) Class.prototype.modules = {};
27182      var name = module.name || Object.keys(Class.prototype.modules).length + '_' + Utils.now();
27183      Class.prototype.modules[name] = module;
27184      // Prototype
27185      if (module.proto) {
27186        Object.keys(module.proto).forEach(function (key) {
27187          Class.prototype[key] = module.proto[key];
27188        });
27189      }
27190      // Class
27191      if (module.static) {
27192        Object.keys(module.static).forEach(function (key) {
27193          Class[key] = module.static[key];
27194        });
27195      }
27196      // Callback
27197      if (module.install) {
27198        for (var _len3 = arguments.length, params = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
27199          params[_key3 - 1] = arguments[_key3];
27200        }
27201
27202        module.install.apply(Class, params);
27203      }
27204      return Class;
27205    }
27206  }, {
27207    key: 'use',
27208    value: function use(module) {
27209      var Class = this;
27210      if (Array.isArray(module)) {
27211        module.forEach(function (m) {
27212          return Class.installModule(m);
27213        });
27214        return Class;
27215      }
27216
27217      for (var _len4 = arguments.length, params = Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {
27218        params[_key4 - 1] = arguments[_key4];
27219      }
27220
27221      return Class.installModule.apply(Class, [module].concat(params));
27222    }
27223  }, {
27224    key: 'components',
27225    set: function set(components) {
27226      var Class = this;
27227      if (!Class.use) return;
27228      Class.use(components);
27229    }
27230  }]);
27231
27232  return SwiperClass;
27233}();
27234
27235function updateSize() {
27236  var swiper = this;
27237  var width = void 0;
27238  var height = void 0;
27239  var $el = swiper.$el;
27240  if (typeof swiper.params.width !== 'undefined') {
27241    width = swiper.params.width;
27242  } else {
27243    width = $el[0].clientWidth;
27244  }
27245  if (typeof swiper.params.height !== 'undefined') {
27246    height = swiper.params.height;
27247  } else {
27248    height = $el[0].clientHeight;
27249  }
27250  if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {
27251    return;
27252  }
27253
27254  // Subtract paddings
27255  width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10);
27256  height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10);
27257
27258  Utils.extend(swiper, {
27259    width: width,
27260    height: height,
27261    size: swiper.isHorizontal() ? width : height
27262  });
27263}
27264
27265function updateSlides() {
27266  var swiper = this;
27267  var params = swiper.params;
27268
27269  var $wrapperEl = swiper.$wrapperEl,
27270      swiperSize = swiper.size,
27271      rtl = swiper.rtlTranslate,
27272      wrongRTL = swiper.wrongRTL;
27273
27274  var isVirtual = swiper.virtual && params.virtual.enabled;
27275  var previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;
27276  var slides = $wrapperEl.children('.' + swiper.params.slideClass);
27277  var slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;
27278  var snapGrid = [];
27279  var slidesGrid = [];
27280  var slidesSizesGrid = [];
27281
27282  var offsetBefore = params.slidesOffsetBefore;
27283  if (typeof offsetBefore === 'function') {
27284    offsetBefore = params.slidesOffsetBefore.call(swiper);
27285  }
27286
27287  var offsetAfter = params.slidesOffsetAfter;
27288  if (typeof offsetAfter === 'function') {
27289    offsetAfter = params.slidesOffsetAfter.call(swiper);
27290  }
27291
27292  var previousSnapGridLength = swiper.snapGrid.length;
27293  var previousSlidesGridLength = swiper.snapGrid.length;
27294
27295  var spaceBetween = params.spaceBetween;
27296  var slidePosition = -offsetBefore;
27297  var prevSlideSize = 0;
27298  var index$$1 = 0;
27299  if (typeof swiperSize === 'undefined') {
27300    return;
27301  }
27302  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {
27303    spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;
27304  }
27305
27306  swiper.virtualSize = -spaceBetween;
27307
27308  // reset margins
27309  if (rtl) slides.css({ marginLeft: '', marginTop: '' });else slides.css({ marginRight: '', marginBottom: '' });
27310
27311  var slidesNumberEvenToRows = void 0;
27312  if (params.slidesPerColumn > 1) {
27313    if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {
27314      slidesNumberEvenToRows = slidesLength;
27315    } else {
27316      slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;
27317    }
27318    if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {
27319      slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);
27320    }
27321  }
27322
27323  // Calc slides
27324  var slideSize = void 0;
27325  var slidesPerColumn = params.slidesPerColumn;
27326  var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;
27327  var numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);
27328  for (var i = 0; i < slidesLength; i += 1) {
27329    slideSize = 0;
27330    var _slide = slides.eq(i);
27331    if (params.slidesPerColumn > 1) {
27332      // Set slides order
27333      var newSlideOrderIndex = void 0;
27334      var column = void 0;
27335      var row = void 0;
27336      if (params.slidesPerColumnFill === 'column') {
27337        column = Math.floor(i / slidesPerColumn);
27338        row = i - column * slidesPerColumn;
27339        if (column > numFullColumns || column === numFullColumns && row === slidesPerColumn - 1) {
27340          row += 1;
27341          if (row >= slidesPerColumn) {
27342            row = 0;
27343            column += 1;
27344          }
27345        }
27346        newSlideOrderIndex = column + row * slidesNumberEvenToRows / slidesPerColumn;
27347        _slide.css({
27348          '-webkit-box-ordinal-group': newSlideOrderIndex,
27349          '-moz-box-ordinal-group': newSlideOrderIndex,
27350          '-ms-flex-order': newSlideOrderIndex,
27351          '-webkit-order': newSlideOrderIndex,
27352          order: newSlideOrderIndex
27353        });
27354      } else {
27355        row = Math.floor(i / slidesPerRow);
27356        column = i - row * slidesPerRow;
27357      }
27358      _slide.css('margin-' + (swiper.isHorizontal() ? 'top' : 'left'), row !== 0 && params.spaceBetween && params.spaceBetween + 'px').attr('data-swiper-column', column).attr('data-swiper-row', row);
27359    }
27360    if (_slide.css('display') === 'none') continue; // eslint-disable-line
27361
27362    if (params.slidesPerView === 'auto') {
27363      var slideStyles = ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].getComputedStyle(_slide[0], null);
27364      var currentTransform = _slide[0].style.transform;
27365      var currentWebKitTransform = _slide[0].style.webkitTransform;
27366      if (currentTransform) {
27367        _slide[0].style.transform = 'none';
27368      }
27369      if (currentWebKitTransform) {
27370        _slide[0].style.webkitTransform = 'none';
27371      }
27372      if (params.roundLengths) {
27373        slideSize = swiper.isHorizontal() ? _slide.outerWidth(true) : _slide.outerHeight(true);
27374      } else {
27375        // eslint-disable-next-line
27376        if (swiper.isHorizontal()) {
27377          var width = parseFloat(slideStyles.getPropertyValue('width'));
27378          var paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left'));
27379          var paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right'));
27380          var marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left'));
27381          var marginRight = parseFloat(slideStyles.getPropertyValue('margin-right'));
27382          var boxSizing = slideStyles.getPropertyValue('box-sizing');
27383          if (boxSizing && boxSizing === 'border-box') {
27384            slideSize = width + marginLeft + marginRight;
27385          } else {
27386            slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight;
27387          }
27388        } else {
27389          var height = parseFloat(slideStyles.getPropertyValue('height'));
27390          var paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top'));
27391          var paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom'));
27392          var marginTop = parseFloat(slideStyles.getPropertyValue('margin-top'));
27393          var marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom'));
27394          var _boxSizing = slideStyles.getPropertyValue('box-sizing');
27395          if (_boxSizing && _boxSizing === 'border-box') {
27396            slideSize = height + marginTop + marginBottom;
27397          } else {
27398            slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom;
27399          }
27400        }
27401      }
27402      if (currentTransform) {
27403        _slide[0].style.transform = currentTransform;
27404      }
27405      if (currentWebKitTransform) {
27406        _slide[0].style.webkitTransform = currentWebKitTransform;
27407      }
27408      if (params.roundLengths) slideSize = Math.floor(slideSize);
27409    } else {
27410      slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;
27411      if (params.roundLengths) slideSize = Math.floor(slideSize);
27412
27413      if (slides[i]) {
27414        if (swiper.isHorizontal()) {
27415          slides[i].style.width = slideSize + 'px';
27416        } else {
27417          slides[i].style.height = slideSize + 'px';
27418        }
27419      }
27420    }
27421    if (slides[i]) {
27422      slides[i].swiperSlideSize = slideSize;
27423    }
27424    slidesSizesGrid.push(slideSize);
27425
27426    if (params.centeredSlides) {
27427      slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;
27428      if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
27429      if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
27430      if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;
27431      if (params.roundLengths) slidePosition = Math.floor(slidePosition);
27432      if (index$$1 % params.slidesPerGroup === 0) snapGrid.push(slidePosition);
27433      slidesGrid.push(slidePosition);
27434    } else {
27435      if (params.roundLengths) slidePosition = Math.floor(slidePosition);
27436      if (index$$1 % params.slidesPerGroup === 0) snapGrid.push(slidePosition);
27437      slidesGrid.push(slidePosition);
27438      slidePosition = slidePosition + slideSize + spaceBetween;
27439    }
27440
27441    swiper.virtualSize += slideSize + spaceBetween;
27442
27443    prevSlideSize = slideSize;
27444
27445    index$$1 += 1;
27446  }
27447  swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;
27448  var newSlidesGrid = void 0;
27449
27450  if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {
27451    $wrapperEl.css({ width: swiper.virtualSize + params.spaceBetween + 'px' });
27452  }
27453  if (!Support.flexbox || params.setWrapperSize) {
27454    if (swiper.isHorizontal()) $wrapperEl.css({ width: swiper.virtualSize + params.spaceBetween + 'px' });else $wrapperEl.css({ height: swiper.virtualSize + params.spaceBetween + 'px' });
27455  }
27456
27457  if (params.slidesPerColumn > 1) {
27458    swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;
27459    swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;
27460    if (swiper.isHorizontal()) $wrapperEl.css({ width: swiper.virtualSize + params.spaceBetween + 'px' });else $wrapperEl.css({ height: swiper.virtualSize + params.spaceBetween + 'px' });
27461    if (params.centeredSlides) {
27462      newSlidesGrid = [];
27463      for (var _i = 0; _i < snapGrid.length; _i += 1) {
27464        var slidesGridItem = snapGrid[_i];
27465        if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);
27466        if (snapGrid[_i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);
27467      }
27468      snapGrid = newSlidesGrid;
27469    }
27470  }
27471
27472  // Remove last grid elements depending on width
27473  if (!params.centeredSlides) {
27474    newSlidesGrid = [];
27475    for (var _i2 = 0; _i2 < snapGrid.length; _i2 += 1) {
27476      var _slidesGridItem = snapGrid[_i2];
27477      if (params.roundLengths) _slidesGridItem = Math.floor(_slidesGridItem);
27478      if (snapGrid[_i2] <= swiper.virtualSize - swiperSize) {
27479        newSlidesGrid.push(_slidesGridItem);
27480      }
27481    }
27482    snapGrid = newSlidesGrid;
27483    if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {
27484      snapGrid.push(swiper.virtualSize - swiperSize);
27485    }
27486  }
27487  if (snapGrid.length === 0) snapGrid = [0];
27488
27489  if (params.spaceBetween !== 0) {
27490    if (swiper.isHorizontal()) {
27491      if (rtl) slides.css({ marginLeft: spaceBetween + 'px' });else slides.css({ marginRight: spaceBetween + 'px' });
27492    } else slides.css({ marginBottom: spaceBetween + 'px' });
27493  }
27494
27495  if (params.centerInsufficientSlides) {
27496    var allSlidesSize = 0;
27497    slidesSizesGrid.forEach(function (slideSizeValue) {
27498      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);
27499    });
27500    allSlidesSize -= params.spaceBetween;
27501    if (allSlidesSize < swiperSize) {
27502      var allSlidesOffset = (swiperSize - allSlidesSize) / 2;
27503      snapGrid.forEach(function (snap, snapIndex) {
27504        snapGrid[snapIndex] = snap - allSlidesOffset;
27505      });
27506      slidesGrid.forEach(function (snap, snapIndex) {
27507        slidesGrid[snapIndex] = snap + allSlidesOffset;
27508      });
27509    }
27510  }
27511
27512  Utils.extend(swiper, {
27513    slides: slides,
27514    snapGrid: snapGrid,
27515    slidesGrid: slidesGrid,
27516    slidesSizesGrid: slidesSizesGrid
27517  });
27518
27519  if (slidesLength !== previousSlidesLength) {
27520    swiper.emit('slidesLengthChange');
27521  }
27522  if (snapGrid.length !== previousSnapGridLength) {
27523    if (swiper.params.watchOverflow) swiper.checkOverflow();
27524    swiper.emit('snapGridLengthChange');
27525  }
27526  if (slidesGrid.length !== previousSlidesGridLength) {
27527    swiper.emit('slidesGridLengthChange');
27528  }
27529
27530  if (params.watchSlidesProgress || params.watchSlidesVisibility) {
27531    swiper.updateSlidesOffset();
27532  }
27533}
27534
27535function updateAutoHeight(speed) {
27536  var swiper = this;
27537  var activeSlides = [];
27538  var newHeight = 0;
27539  var i = void 0;
27540  if (typeof speed === 'number') {
27541    swiper.setTransition(speed);
27542  } else if (speed === true) {
27543    swiper.setTransition(swiper.params.speed);
27544  }
27545  // Find slides currently in view
27546  if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {
27547    for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {
27548      var index$$1 = swiper.activeIndex + i;
27549      if (index$$1 > swiper.slides.length) break;
27550      activeSlides.push(swiper.slides.eq(index$$1)[0]);
27551    }
27552  } else {
27553    activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);
27554  }
27555
27556  // Find new height from highest slide in view
27557  for (i = 0; i < activeSlides.length; i += 1) {
27558    if (typeof activeSlides[i] !== 'undefined') {
27559      var height = activeSlides[i].offsetHeight;
27560      newHeight = height > newHeight ? height : newHeight;
27561    }
27562  }
27563
27564  // Update Height
27565  if (newHeight) swiper.$wrapperEl.css('height', newHeight + 'px');
27566}
27567
27568function updateSlidesOffset() {
27569  var swiper = this;
27570  var slides = swiper.slides;
27571  for (var i = 0; i < slides.length; i += 1) {
27572    slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;
27573  }
27574}
27575
27576function updateSlidesProgress() {
27577  var translate = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this && this.translate || 0;
27578
27579  var swiper = this;
27580  var params = swiper.params;
27581
27582  var slides = swiper.slides,
27583      rtl = swiper.rtlTranslate;
27584
27585
27586  if (slides.length === 0) return;
27587  if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();
27588
27589  var offsetCenter = -translate;
27590  if (rtl) offsetCenter = translate;
27591
27592  // Visible Slides
27593  slides.removeClass(params.slideVisibleClass);
27594
27595  swiper.visibleSlidesIndexes = [];
27596  swiper.visibleSlides = [];
27597
27598  for (var i = 0; i < slides.length; i += 1) {
27599    var _slide2 = slides[i];
27600    var slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - _slide2.swiperSlideOffset) / (_slide2.swiperSlideSize + params.spaceBetween);
27601    if (params.watchSlidesVisibility) {
27602      var slideBefore = -(offsetCenter - _slide2.swiperSlideOffset);
27603      var slideAfter = slideBefore + swiper.slidesSizesGrid[i];
27604      var isVisible = slideBefore >= 0 && slideBefore < swiper.size || slideAfter > 0 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;
27605      if (isVisible) {
27606        swiper.visibleSlides.push(_slide2);
27607        swiper.visibleSlidesIndexes.push(i);
27608        slides.eq(i).addClass(params.slideVisibleClass);
27609      }
27610    }
27611    _slide2.progress = rtl ? -slideProgress : slideProgress;
27612  }
27613  swiper.visibleSlides = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(swiper.visibleSlides);
27614}
27615
27616function updateProgress() {
27617  var translate = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this && this.translate || 0;
27618
27619  var swiper = this;
27620  var params = swiper.params;
27621
27622  var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
27623  var progress = swiper.progress,
27624      isBeginning = swiper.isBeginning,
27625      isEnd = swiper.isEnd;
27626
27627  var wasBeginning = isBeginning;
27628  var wasEnd = isEnd;
27629  if (translatesDiff === 0) {
27630    progress = 0;
27631    isBeginning = true;
27632    isEnd = true;
27633  } else {
27634    progress = (translate - swiper.minTranslate()) / translatesDiff;
27635    isBeginning = progress <= 0;
27636    isEnd = progress >= 1;
27637  }
27638  Utils.extend(swiper, {
27639    progress: progress,
27640    isBeginning: isBeginning,
27641    isEnd: isEnd
27642  });
27643
27644  if (params.watchSlidesProgress || params.watchSlidesVisibility) swiper.updateSlidesProgress(translate);
27645
27646  if (isBeginning && !wasBeginning) {
27647    swiper.emit('reachBeginning toEdge');
27648  }
27649  if (isEnd && !wasEnd) {
27650    swiper.emit('reachEnd toEdge');
27651  }
27652  if (wasBeginning && !isBeginning || wasEnd && !isEnd) {
27653    swiper.emit('fromEdge');
27654  }
27655
27656  swiper.emit('progress', progress);
27657}
27658
27659function updateSlidesClasses() {
27660  var swiper = this;
27661
27662  var slides = swiper.slides,
27663      params = swiper.params,
27664      $wrapperEl = swiper.$wrapperEl,
27665      activeIndex = swiper.activeIndex,
27666      realIndex = swiper.realIndex;
27667
27668  var isVirtual = swiper.virtual && params.virtual.enabled;
27669
27670  slides.removeClass(params.slideActiveClass + ' ' + params.slideNextClass + ' ' + params.slidePrevClass + ' ' + params.slideDuplicateActiveClass + ' ' + params.slideDuplicateNextClass + ' ' + params.slideDuplicatePrevClass);
27671
27672  var activeSlide = void 0;
27673  if (isVirtual) {
27674    activeSlide = swiper.$wrapperEl.find('.' + params.slideClass + '[data-swiper-slide-index="' + activeIndex + '"]');
27675  } else {
27676    activeSlide = slides.eq(activeIndex);
27677  }
27678
27679  // Active classes
27680  activeSlide.addClass(params.slideActiveClass);
27681
27682  if (params.loop) {
27683    // Duplicate to all looped slides
27684    if (activeSlide.hasClass(params.slideDuplicateClass)) {
27685      $wrapperEl.children('.' + params.slideClass + ':not(.' + params.slideDuplicateClass + ')[data-swiper-slide-index="' + realIndex + '"]').addClass(params.slideDuplicateActiveClass);
27686    } else {
27687      $wrapperEl.children('.' + params.slideClass + '.' + params.slideDuplicateClass + '[data-swiper-slide-index="' + realIndex + '"]').addClass(params.slideDuplicateActiveClass);
27688    }
27689  }
27690  // Next Slide
27691  var nextSlide = activeSlide.nextAll('.' + params.slideClass).eq(0).addClass(params.slideNextClass);
27692  if (params.loop && nextSlide.length === 0) {
27693    nextSlide = slides.eq(0);
27694    nextSlide.addClass(params.slideNextClass);
27695  }
27696  // Prev Slide
27697  var prevSlide = activeSlide.prevAll('.' + params.slideClass).eq(0).addClass(params.slidePrevClass);
27698  if (params.loop && prevSlide.length === 0) {
27699    prevSlide = slides.eq(-1);
27700    prevSlide.addClass(params.slidePrevClass);
27701  }
27702  if (params.loop) {
27703    // Duplicate to all looped slides
27704    if (nextSlide.hasClass(params.slideDuplicateClass)) {
27705      $wrapperEl.children('.' + params.slideClass + ':not(.' + params.slideDuplicateClass + ')[data-swiper-slide-index="' + nextSlide.attr('data-swiper-slide-index') + '"]').addClass(params.slideDuplicateNextClass);
27706    } else {
27707      $wrapperEl.children('.' + params.slideClass + '.' + params.slideDuplicateClass + '[data-swiper-slide-index="' + nextSlide.attr('data-swiper-slide-index') + '"]').addClass(params.slideDuplicateNextClass);
27708    }
27709    if (prevSlide.hasClass(params.slideDuplicateClass)) {
27710      $wrapperEl.children('.' + params.slideClass + ':not(.' + params.slideDuplicateClass + ')[data-swiper-slide-index="' + prevSlide.attr('data-swiper-slide-index') + '"]').addClass(params.slideDuplicatePrevClass);
27711    } else {
27712      $wrapperEl.children('.' + params.slideClass + '.' + params.slideDuplicateClass + '[data-swiper-slide-index="' + prevSlide.attr('data-swiper-slide-index') + '"]').addClass(params.slideDuplicatePrevClass);
27713    }
27714  }
27715}
27716
27717function updateActiveIndex(newActiveIndex) {
27718  var swiper = this;
27719  var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
27720  var slidesGrid = swiper.slidesGrid,
27721      snapGrid = swiper.snapGrid,
27722      params = swiper.params,
27723      previousIndex = swiper.activeIndex,
27724      previousRealIndex = swiper.realIndex,
27725      previousSnapIndex = swiper.snapIndex;
27726
27727  var activeIndex = newActiveIndex;
27728  var snapIndex = void 0;
27729  if (typeof activeIndex === 'undefined') {
27730    for (var i = 0; i < slidesGrid.length; i += 1) {
27731      if (typeof slidesGrid[i + 1] !== 'undefined') {
27732        if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {
27733          activeIndex = i;
27734        } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {
27735          activeIndex = i + 1;
27736        }
27737      } else if (translate >= slidesGrid[i]) {
27738        activeIndex = i;
27739      }
27740    }
27741    // Normalize slideIndex
27742    if (params.normalizeSlideIndex) {
27743      if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;
27744    }
27745  }
27746  if (snapGrid.indexOf(translate) >= 0) {
27747    snapIndex = snapGrid.indexOf(translate);
27748  } else {
27749    snapIndex = Math.floor(activeIndex / params.slidesPerGroup);
27750  }
27751  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
27752  if (activeIndex === previousIndex) {
27753    if (snapIndex !== previousSnapIndex) {
27754      swiper.snapIndex = snapIndex;
27755      swiper.emit('snapIndexChange');
27756    }
27757    return;
27758  }
27759
27760  // Get real index
27761  var realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);
27762
27763  Utils.extend(swiper, {
27764    snapIndex: snapIndex,
27765    realIndex: realIndex,
27766    previousIndex: previousIndex,
27767    activeIndex: activeIndex
27768  });
27769  swiper.emit('activeIndexChange');
27770  swiper.emit('snapIndexChange');
27771  if (previousRealIndex !== realIndex) {
27772    swiper.emit('realIndexChange');
27773  }
27774  swiper.emit('slideChange');
27775}
27776
27777function updateClickedSlide(e) {
27778  var swiper = this;
27779  var params = swiper.params;
27780  var slide = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(e.target).closest('.' + params.slideClass)[0];
27781  var slideFound = false;
27782  if (slide) {
27783    for (var i = 0; i < swiper.slides.length; i += 1) {
27784      if (swiper.slides[i] === slide) slideFound = true;
27785    }
27786  }
27787
27788  if (slide && slideFound) {
27789    swiper.clickedSlide = slide;
27790    if (swiper.virtual && swiper.params.virtual.enabled) {
27791      swiper.clickedIndex = parseInt(Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(slide).attr('data-swiper-slide-index'), 10);
27792    } else {
27793      swiper.clickedIndex = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(slide).index();
27794    }
27795  } else {
27796    swiper.clickedSlide = undefined;
27797    swiper.clickedIndex = undefined;
27798    return;
27799  }
27800  if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {
27801    swiper.slideToClickedSlide();
27802  }
27803}
27804
27805var update = {
27806  updateSize: updateSize,
27807  updateSlides: updateSlides,
27808  updateAutoHeight: updateAutoHeight,
27809  updateSlidesOffset: updateSlidesOffset,
27810  updateSlidesProgress: updateSlidesProgress,
27811  updateProgress: updateProgress,
27812  updateSlidesClasses: updateSlidesClasses,
27813  updateActiveIndex: updateActiveIndex,
27814  updateClickedSlide: updateClickedSlide
27815};
27816
27817function getTranslate() {
27818  var axis = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.isHorizontal() ? 'x' : 'y';
27819
27820  var swiper = this;
27821
27822  var params = swiper.params,
27823      rtl = swiper.rtlTranslate,
27824      translate = swiper.translate,
27825      $wrapperEl = swiper.$wrapperEl;
27826
27827
27828  if (params.virtualTranslate) {
27829    return rtl ? -translate : translate;
27830  }
27831
27832  var currentTranslate = Utils.getTranslate($wrapperEl[0], axis);
27833  if (rtl) currentTranslate = -currentTranslate;
27834
27835  return currentTranslate || 0;
27836}
27837
27838function setTranslate(translate, byController) {
27839  var swiper = this;
27840  var rtl = swiper.rtlTranslate,
27841      params = swiper.params,
27842      $wrapperEl = swiper.$wrapperEl,
27843      progress = swiper.progress;
27844
27845  var x = 0;
27846  var y = 0;
27847  var z = 0;
27848
27849  if (swiper.isHorizontal()) {
27850    x = rtl ? -translate : translate;
27851  } else {
27852    y = translate;
27853  }
27854
27855  if (params.roundLengths) {
27856    x = Math.floor(x);
27857    y = Math.floor(y);
27858  }
27859
27860  if (!params.virtualTranslate) {
27861    if (Support.transforms3d) $wrapperEl.transform('translate3d(' + x + 'px, ' + y + 'px, ' + z + 'px)');else $wrapperEl.transform('translate(' + x + 'px, ' + y + 'px)');
27862  }
27863  swiper.previousTranslate = swiper.translate;
27864  swiper.translate = swiper.isHorizontal() ? x : y;
27865
27866  // Check if we need to update progress
27867  var newProgress = void 0;
27868  var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
27869  if (translatesDiff === 0) {
27870    newProgress = 0;
27871  } else {
27872    newProgress = (translate - swiper.minTranslate()) / translatesDiff;
27873  }
27874  if (newProgress !== progress) {
27875    swiper.updateProgress(translate);
27876  }
27877
27878  swiper.emit('setTranslate', swiper.translate, byController);
27879}
27880
27881function minTranslate() {
27882  return -this.snapGrid[0];
27883}
27884
27885function maxTranslate() {
27886  return -this.snapGrid[this.snapGrid.length - 1];
27887}
27888
27889var translate = {
27890  getTranslate: getTranslate,
27891  setTranslate: setTranslate,
27892  minTranslate: minTranslate,
27893  maxTranslate: maxTranslate
27894};
27895
27896function setTransition(duration, byController) {
27897  var swiper = this;
27898
27899  swiper.$wrapperEl.transition(duration);
27900
27901  swiper.emit('setTransition', duration, byController);
27902}
27903
27904function transitionStart() {
27905  var runCallbacks = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
27906  var direction = arguments[1];
27907
27908  var swiper = this;
27909  var activeIndex = swiper.activeIndex,
27910      params = swiper.params,
27911      previousIndex = swiper.previousIndex;
27912
27913  if (params.autoHeight) {
27914    swiper.updateAutoHeight();
27915  }
27916
27917  var dir = direction;
27918  if (!dir) {
27919    if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';
27920  }
27921
27922  swiper.emit('transitionStart');
27923
27924  if (runCallbacks && activeIndex !== previousIndex) {
27925    if (dir === 'reset') {
27926      swiper.emit('slideResetTransitionStart');
27927      return;
27928    }
27929    swiper.emit('slideChangeTransitionStart');
27930    if (dir === 'next') {
27931      swiper.emit('slideNextTransitionStart');
27932    } else {
27933      swiper.emit('slidePrevTransitionStart');
27934    }
27935  }
27936}
27937
27938function transitionEnd$1() {
27939  var runCallbacks = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
27940  var direction = arguments[1];
27941
27942  var swiper = this;
27943  var activeIndex = swiper.activeIndex,
27944      previousIndex = swiper.previousIndex;
27945
27946  swiper.animating = false;
27947  swiper.setTransition(0);
27948
27949  var dir = direction;
27950  if (!dir) {
27951    if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';
27952  }
27953
27954  swiper.emit('transitionEnd');
27955
27956  if (runCallbacks && activeIndex !== previousIndex) {
27957    if (dir === 'reset') {
27958      swiper.emit('slideResetTransitionEnd');
27959      return;
27960    }
27961    swiper.emit('slideChangeTransitionEnd');
27962    if (dir === 'next') {
27963      swiper.emit('slideNextTransitionEnd');
27964    } else {
27965      swiper.emit('slidePrevTransitionEnd');
27966    }
27967  }
27968}
27969
27970var transition$1 = {
27971  setTransition: setTransition,
27972  transitionStart: transitionStart,
27973  transitionEnd: transitionEnd$1
27974};
27975
27976function slideTo() {
27977  var index$$1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
27978  var speed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.params.speed;
27979  var runCallbacks = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
27980  var internal = arguments[3];
27981
27982  var swiper = this;
27983  var slideIndex = index$$1;
27984  if (slideIndex < 0) slideIndex = 0;
27985
27986  var params = swiper.params,
27987      snapGrid = swiper.snapGrid,
27988      slidesGrid = swiper.slidesGrid,
27989      previousIndex = swiper.previousIndex,
27990      activeIndex = swiper.activeIndex,
27991      rtl = swiper.rtlTranslate;
27992
27993  if (swiper.animating && params.preventInteractionOnTransition) {
27994    return false;
27995  }
27996
27997  var snapIndex = Math.floor(slideIndex / params.slidesPerGroup);
27998  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
27999
28000  if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {
28001    swiper.emit('beforeSlideChangeStart');
28002  }
28003
28004  var translate = -snapGrid[snapIndex];
28005
28006  // Update progress
28007  swiper.updateProgress(translate);
28008
28009  // Normalize slideIndex
28010  if (params.normalizeSlideIndex) {
28011    for (var i = 0; i < slidesGrid.length; i += 1) {
28012      if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {
28013        slideIndex = i;
28014      }
28015    }
28016  }
28017  // Directions locks
28018  if (swiper.initialized && slideIndex !== activeIndex) {
28019    if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {
28020      return false;
28021    }
28022    if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {
28023      if ((activeIndex || 0) !== slideIndex) return false;
28024    }
28025  }
28026
28027  var direction = void 0;
28028  if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';
28029
28030  // Update Index
28031  if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {
28032    swiper.updateActiveIndex(slideIndex);
28033    // Update Height
28034    if (params.autoHeight) {
28035      swiper.updateAutoHeight();
28036    }
28037    swiper.updateSlidesClasses();
28038    if (params.effect !== 'slide') {
28039      swiper.setTranslate(translate);
28040    }
28041    if (direction !== 'reset') {
28042      swiper.transitionStart(runCallbacks, direction);
28043      swiper.transitionEnd(runCallbacks, direction);
28044    }
28045    return false;
28046  }
28047
28048  if (speed === 0 || !Support.transition) {
28049    swiper.setTransition(0);
28050    swiper.setTranslate(translate);
28051    swiper.updateActiveIndex(slideIndex);
28052    swiper.updateSlidesClasses();
28053    swiper.emit('beforeTransitionStart', speed, internal);
28054    swiper.transitionStart(runCallbacks, direction);
28055    swiper.transitionEnd(runCallbacks, direction);
28056  } else {
28057    swiper.setTransition(speed);
28058    swiper.setTranslate(translate);
28059    swiper.updateActiveIndex(slideIndex);
28060    swiper.updateSlidesClasses();
28061    swiper.emit('beforeTransitionStart', speed, internal);
28062    swiper.transitionStart(runCallbacks, direction);
28063    if (!swiper.animating) {
28064      swiper.animating = true;
28065      if (!swiper.onSlideToWrapperTransitionEnd) {
28066        swiper.onSlideToWrapperTransitionEnd = function transitionEnd$$1(e) {
28067          if (!swiper || swiper.destroyed) return;
28068          if (e.target !== this) return;
28069          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
28070          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
28071          swiper.onSlideToWrapperTransitionEnd = null;
28072          delete swiper.onSlideToWrapperTransitionEnd;
28073          swiper.transitionEnd(runCallbacks, direction);
28074        };
28075      }
28076      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
28077      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
28078    }
28079  }
28080
28081  return true;
28082}
28083
28084function slideToLoop() {
28085  var index$$1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
28086  var speed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.params.speed;
28087  var runCallbacks = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
28088  var internal = arguments[3];
28089
28090  var swiper = this;
28091  var newIndex = index$$1;
28092  if (swiper.params.loop) {
28093    newIndex += swiper.loopedSlides;
28094  }
28095
28096  return swiper.slideTo(newIndex, speed, runCallbacks, internal);
28097}
28098
28099/* eslint no-unused-vars: "off" */
28100function slideNext() {
28101  var speed = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.params.speed;
28102  var runCallbacks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
28103  var internal = arguments[2];
28104
28105  var swiper = this;
28106  var params = swiper.params,
28107      animating = swiper.animating;
28108
28109  if (params.loop) {
28110    if (animating) return false;
28111    swiper.loopFix();
28112    // eslint-disable-next-line
28113    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
28114    return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal);
28115  }
28116  return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal);
28117}
28118
28119/* eslint no-unused-vars: "off" */
28120function slidePrev() {
28121  var speed = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.params.speed;
28122  var runCallbacks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
28123  var internal = arguments[2];
28124
28125  var swiper = this;
28126  var params = swiper.params,
28127      animating = swiper.animating,
28128      snapGrid = swiper.snapGrid,
28129      slidesGrid = swiper.slidesGrid,
28130      rtlTranslate = swiper.rtlTranslate;
28131
28132
28133  if (params.loop) {
28134    if (animating) return false;
28135    swiper.loopFix();
28136    // eslint-disable-next-line
28137    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
28138  }
28139  var translate = rtlTranslate ? swiper.translate : -swiper.translate;
28140  function normalize(val) {
28141    if (val < 0) return -Math.floor(Math.abs(val));
28142    return Math.floor(val);
28143  }
28144  var normalizedTranslate = normalize(translate);
28145  var normalizedSnapGrid = snapGrid.map(function (val) {
28146    return normalize(val);
28147  });
28148  var normalizedSlidesGrid = slidesGrid.map(function (val) {
28149    return normalize(val);
28150  });
28151
28152  var currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];
28153  var prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];
28154  var prevIndex = void 0;
28155  if (typeof prevSnap !== 'undefined') {
28156    prevIndex = slidesGrid.indexOf(prevSnap);
28157    if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;
28158  }
28159  return swiper.slideTo(prevIndex, speed, runCallbacks, internal);
28160}
28161
28162/* eslint no-unused-vars: "off" */
28163function slideReset() {
28164  var speed = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.params.speed;
28165  var runCallbacks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
28166  var internal = arguments[2];
28167
28168  var swiper = this;
28169  return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);
28170}
28171
28172/* eslint no-unused-vars: "off" */
28173function slideToClosest() {
28174  var speed = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.params.speed;
28175  var runCallbacks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
28176  var internal = arguments[2];
28177
28178  var swiper = this;
28179  var index$$1 = swiper.activeIndex;
28180  var snapIndex = Math.floor(index$$1 / swiper.params.slidesPerGroup);
28181
28182  if (snapIndex < swiper.snapGrid.length - 1) {
28183    var _translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
28184
28185    var currentSnap = swiper.snapGrid[snapIndex];
28186    var nextSnap = swiper.snapGrid[snapIndex + 1];
28187
28188    if (_translate - currentSnap > (nextSnap - currentSnap) / 2) {
28189      index$$1 = swiper.params.slidesPerGroup;
28190    }
28191  }
28192
28193  return swiper.slideTo(index$$1, speed, runCallbacks, internal);
28194}
28195
28196function slideToClickedSlide() {
28197  var swiper = this;
28198  var params = swiper.params,
28199      $wrapperEl = swiper.$wrapperEl;
28200
28201
28202  var slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;
28203  var slideToIndex = swiper.clickedIndex;
28204  var realIndex = void 0;
28205  if (params.loop) {
28206    if (swiper.animating) return;
28207    realIndex = parseInt(Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);
28208    if (params.centeredSlides) {
28209      if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {
28210        swiper.loopFix();
28211        slideToIndex = $wrapperEl.children('.' + params.slideClass + '[data-swiper-slide-index="' + realIndex + '"]:not(.' + params.slideDuplicateClass + ')').eq(0).index();
28212
28213        Utils.nextTick(function () {
28214          swiper.slideTo(slideToIndex);
28215        });
28216      } else {
28217        swiper.slideTo(slideToIndex);
28218      }
28219    } else if (slideToIndex > swiper.slides.length - slidesPerView) {
28220      swiper.loopFix();
28221      slideToIndex = $wrapperEl.children('.' + params.slideClass + '[data-swiper-slide-index="' + realIndex + '"]:not(.' + params.slideDuplicateClass + ')').eq(0).index();
28222
28223      Utils.nextTick(function () {
28224        swiper.slideTo(slideToIndex);
28225      });
28226    } else {
28227      swiper.slideTo(slideToIndex);
28228    }
28229  } else {
28230    swiper.slideTo(slideToIndex);
28231  }
28232}
28233
28234var slide = {
28235  slideTo: slideTo,
28236  slideToLoop: slideToLoop,
28237  slideNext: slideNext,
28238  slidePrev: slidePrev,
28239  slideReset: slideReset,
28240  slideToClosest: slideToClosest,
28241  slideToClickedSlide: slideToClickedSlide
28242};
28243
28244function loopCreate() {
28245  var swiper = this;
28246  var params = swiper.params,
28247      $wrapperEl = swiper.$wrapperEl;
28248  // Remove duplicated slides
28249
28250  $wrapperEl.children('.' + params.slideClass + '.' + params.slideDuplicateClass).remove();
28251
28252  var slides = $wrapperEl.children('.' + params.slideClass);
28253
28254  if (params.loopFillGroupWithBlank) {
28255    var blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;
28256    if (blankSlidesNum !== params.slidesPerGroup) {
28257      for (var i = 0; i < blankSlidesNum; i += 1) {
28258        var blankNode = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].createElement('div')).addClass(params.slideClass + ' ' + params.slideBlankClass);
28259        $wrapperEl.append(blankNode);
28260      }
28261      slides = $wrapperEl.children('.' + params.slideClass);
28262    }
28263  }
28264
28265  if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;
28266
28267  swiper.loopedSlides = parseInt(params.loopedSlides || params.slidesPerView, 10);
28268  swiper.loopedSlides += params.loopAdditionalSlides;
28269  if (swiper.loopedSlides > slides.length) {
28270    swiper.loopedSlides = slides.length;
28271  }
28272
28273  var prependSlides = [];
28274  var appendSlides = [];
28275  slides.each(function (index$$1, el) {
28276    var slide = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(el);
28277    if (index$$1 < swiper.loopedSlides) appendSlides.push(el);
28278    if (index$$1 < slides.length && index$$1 >= slides.length - swiper.loopedSlides) prependSlides.push(el);
28279    slide.attr('data-swiper-slide-index', index$$1);
28280  });
28281  for (var _i3 = 0; _i3 < appendSlides.length; _i3 += 1) {
28282    $wrapperEl.append(Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(appendSlides[_i3].cloneNode(true)).addClass(params.slideDuplicateClass));
28283  }
28284  for (var _i4 = prependSlides.length - 1; _i4 >= 0; _i4 -= 1) {
28285    $wrapperEl.prepend(Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(prependSlides[_i4].cloneNode(true)).addClass(params.slideDuplicateClass));
28286  }
28287}
28288
28289function loopFix() {
28290  var swiper = this;
28291  var params = swiper.params,
28292      activeIndex = swiper.activeIndex,
28293      slides = swiper.slides,
28294      loopedSlides = swiper.loopedSlides,
28295      allowSlidePrev = swiper.allowSlidePrev,
28296      allowSlideNext = swiper.allowSlideNext,
28297      snapGrid = swiper.snapGrid,
28298      rtl = swiper.rtlTranslate;
28299
28300  var newIndex = void 0;
28301  swiper.allowSlidePrev = true;
28302  swiper.allowSlideNext = true;
28303
28304  var snapTranslate = -snapGrid[activeIndex];
28305  var diff = snapTranslate - swiper.getTranslate();
28306
28307  // Fix For Negative Oversliding
28308  if (activeIndex < loopedSlides) {
28309    newIndex = slides.length - loopedSlides * 3 + activeIndex;
28310    newIndex += loopedSlides;
28311    var slideChanged = swiper.slideTo(newIndex, 0, false, true);
28312    if (slideChanged && diff !== 0) {
28313      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
28314    }
28315  } else if (params.slidesPerView === 'auto' && activeIndex >= loopedSlides * 2 || activeIndex >= slides.length - loopedSlides) {
28316    // Fix For Positive Oversliding
28317    newIndex = -slides.length + activeIndex + loopedSlides;
28318    newIndex += loopedSlides;
28319    var _slideChanged = swiper.slideTo(newIndex, 0, false, true);
28320    if (_slideChanged && diff !== 0) {
28321      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
28322    }
28323  }
28324  swiper.allowSlidePrev = allowSlidePrev;
28325  swiper.allowSlideNext = allowSlideNext;
28326}
28327
28328function loopDestroy() {
28329  var swiper = this;
28330  var $wrapperEl = swiper.$wrapperEl,
28331      params = swiper.params,
28332      slides = swiper.slides;
28333
28334  $wrapperEl.children('.' + params.slideClass + '.' + params.slideDuplicateClass + ',.' + params.slideClass + '.' + params.slideBlankClass).remove();
28335  slides.removeAttr('data-swiper-slide-index');
28336}
28337
28338var loop = {
28339  loopCreate: loopCreate,
28340  loopFix: loopFix,
28341  loopDestroy: loopDestroy
28342};
28343
28344function setGrabCursor(moving) {
28345  var swiper = this;
28346  if (Support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked) return;
28347  var el = swiper.el;
28348  el.style.cursor = 'move';
28349  el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';
28350  el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';
28351  el.style.cursor = moving ? 'grabbing' : 'grab';
28352}
28353
28354function unsetGrabCursor() {
28355  var swiper = this;
28356  if (Support.touch || swiper.params.watchOverflow && swiper.isLocked) return;
28357  swiper.el.style.cursor = '';
28358}
28359
28360var grabCursor = {
28361  setGrabCursor: setGrabCursor,
28362  unsetGrabCursor: unsetGrabCursor
28363};
28364
28365function appendSlide(slides) {
28366  var swiper = this;
28367  var $wrapperEl = swiper.$wrapperEl,
28368      params = swiper.params;
28369
28370  if (params.loop) {
28371    swiper.loopDestroy();
28372  }
28373  if ((typeof slides === 'undefined' ? 'undefined' : _typeof(slides)) === 'object' && 'length' in slides) {
28374    for (var i = 0; i < slides.length; i += 1) {
28375      if (slides[i]) $wrapperEl.append(slides[i]);
28376    }
28377  } else {
28378    $wrapperEl.append(slides);
28379  }
28380  if (params.loop) {
28381    swiper.loopCreate();
28382  }
28383  if (!(params.observer && Support.observer)) {
28384    swiper.update();
28385  }
28386}
28387
28388function prependSlide(slides) {
28389  var swiper = this;
28390  var params = swiper.params,
28391      $wrapperEl = swiper.$wrapperEl,
28392      activeIndex = swiper.activeIndex;
28393
28394
28395  if (params.loop) {
28396    swiper.loopDestroy();
28397  }
28398  var newActiveIndex = activeIndex + 1;
28399  if ((typeof slides === 'undefined' ? 'undefined' : _typeof(slides)) === 'object' && 'length' in slides) {
28400    for (var i = 0; i < slides.length; i += 1) {
28401      if (slides[i]) $wrapperEl.prepend(slides[i]);
28402    }
28403    newActiveIndex = activeIndex + slides.length;
28404  } else {
28405    $wrapperEl.prepend(slides);
28406  }
28407  if (params.loop) {
28408    swiper.loopCreate();
28409  }
28410  if (!(params.observer && Support.observer)) {
28411    swiper.update();
28412  }
28413  swiper.slideTo(newActiveIndex, 0, false);
28414}
28415
28416function addSlide(index$$1, slides) {
28417  var swiper = this;
28418  var $wrapperEl = swiper.$wrapperEl,
28419      params = swiper.params,
28420      activeIndex = swiper.activeIndex;
28421
28422  var activeIndexBuffer = activeIndex;
28423  if (params.loop) {
28424    activeIndexBuffer -= swiper.loopedSlides;
28425    swiper.loopDestroy();
28426    swiper.slides = $wrapperEl.children('.' + params.slideClass);
28427  }
28428  var baseLength = swiper.slides.length;
28429  if (index$$1 <= 0) {
28430    swiper.prependSlide(slides);
28431    return;
28432  }
28433  if (index$$1 >= baseLength) {
28434    swiper.appendSlide(slides);
28435    return;
28436  }
28437  var newActiveIndex = activeIndexBuffer > index$$1 ? activeIndexBuffer + 1 : activeIndexBuffer;
28438
28439  var slidesBuffer = [];
28440  for (var i = baseLength - 1; i >= index$$1; i -= 1) {
28441    var currentSlide = swiper.slides.eq(i);
28442    currentSlide.remove();
28443    slidesBuffer.unshift(currentSlide);
28444  }
28445
28446  if ((typeof slides === 'undefined' ? 'undefined' : _typeof(slides)) === 'object' && 'length' in slides) {
28447    for (var _i5 = 0; _i5 < slides.length; _i5 += 1) {
28448      if (slides[_i5]) $wrapperEl.append(slides[_i5]);
28449    }
28450    newActiveIndex = activeIndexBuffer > index$$1 ? activeIndexBuffer + slides.length : activeIndexBuffer;
28451  } else {
28452    $wrapperEl.append(slides);
28453  }
28454
28455  for (var _i6 = 0; _i6 < slidesBuffer.length; _i6 += 1) {
28456    $wrapperEl.append(slidesBuffer[_i6]);
28457  }
28458
28459  if (params.loop) {
28460    swiper.loopCreate();
28461  }
28462  if (!(params.observer && Support.observer)) {
28463    swiper.update();
28464  }
28465  if (params.loop) {
28466    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
28467  } else {
28468    swiper.slideTo(newActiveIndex, 0, false);
28469  }
28470}
28471
28472function removeSlide(slidesIndexes) {
28473  var swiper = this;
28474  var params = swiper.params,
28475      $wrapperEl = swiper.$wrapperEl,
28476      activeIndex = swiper.activeIndex;
28477
28478
28479  var activeIndexBuffer = activeIndex;
28480  if (params.loop) {
28481    activeIndexBuffer -= swiper.loopedSlides;
28482    swiper.loopDestroy();
28483    swiper.slides = $wrapperEl.children('.' + params.slideClass);
28484  }
28485  var newActiveIndex = activeIndexBuffer;
28486  var indexToRemove = void 0;
28487
28488  if ((typeof slidesIndexes === 'undefined' ? 'undefined' : _typeof(slidesIndexes)) === 'object' && 'length' in slidesIndexes) {
28489    for (var i = 0; i < slidesIndexes.length; i += 1) {
28490      indexToRemove = slidesIndexes[i];
28491      if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();
28492      if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
28493    }
28494    newActiveIndex = Math.max(newActiveIndex, 0);
28495  } else {
28496    indexToRemove = slidesIndexes;
28497    if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();
28498    if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
28499    newActiveIndex = Math.max(newActiveIndex, 0);
28500  }
28501
28502  if (params.loop) {
28503    swiper.loopCreate();
28504  }
28505
28506  if (!(params.observer && Support.observer)) {
28507    swiper.update();
28508  }
28509  if (params.loop) {
28510    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
28511  } else {
28512    swiper.slideTo(newActiveIndex, 0, false);
28513  }
28514}
28515
28516function removeAllSlides() {
28517  var swiper = this;
28518
28519  var slidesIndexes = [];
28520  for (var i = 0; i < swiper.slides.length; i += 1) {
28521    slidesIndexes.push(i);
28522  }
28523  swiper.removeSlide(slidesIndexes);
28524}
28525
28526var manipulation = {
28527  appendSlide: appendSlide,
28528  prependSlide: prependSlide,
28529  addSlide: addSlide,
28530  removeSlide: removeSlide,
28531  removeAllSlides: removeAllSlides
28532};
28533
28534var Device = function Device() {
28535  var ua = ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].navigator.userAgent;
28536
28537  var device = {
28538    ios: false,
28539    android: false,
28540    androidChrome: false,
28541    desktop: false,
28542    windows: false,
28543    iphone: false,
28544    ipod: false,
28545    ipad: false,
28546    cordova: ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].cordova || ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].phonegap,
28547    phonegap: ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].cordova || ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].phonegap
28548  };
28549
28550  var windows = ua.match(/(Windows Phone);?[\s\/]+([\d.]+)?/); // eslint-disable-line
28551  var android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line
28552  var ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
28553  var ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/);
28554  var iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/);
28555
28556  // Windows
28557  if (windows) {
28558    device.os = 'windows';
28559    device.osVersion = windows[2];
28560    device.windows = true;
28561  }
28562  // Android
28563  if (android && !windows) {
28564    device.os = 'android';
28565    device.osVersion = android[2];
28566    device.android = true;
28567    device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;
28568  }
28569  if (ipad || iphone || ipod) {
28570    device.os = 'ios';
28571    device.ios = true;
28572  }
28573  // iOS
28574  if (iphone && !ipod) {
28575    device.osVersion = iphone[2].replace(/_/g, '.');
28576    device.iphone = true;
28577  }
28578  if (ipad) {
28579    device.osVersion = ipad[2].replace(/_/g, '.');
28580    device.ipad = true;
28581  }
28582  if (ipod) {
28583    device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;
28584    device.iphone = true;
28585  }
28586  // iOS 8+ changed UA
28587  if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {
28588    if (device.osVersion.split('.')[0] === '10') {
28589      device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];
28590    }
28591  }
28592
28593  // Desktop
28594  device.desktop = !(device.os || device.android || device.webView);
28595
28596  // Webview
28597  device.webView = (iphone || ipad || ipod) && ua.match(/.*AppleWebKit(?!.*Safari)/i);
28598
28599  // Minimal UI
28600  if (device.os && device.os === 'ios') {
28601    var osVersionArr = device.osVersion.split('.');
28602    var metaViewport = ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].querySelector('meta[name="viewport"]');
28603    device.minimalUi = !device.webView && (ipod || iphone) && (osVersionArr[0] * 1 === 7 ? osVersionArr[1] * 1 >= 1 : osVersionArr[0] * 1 > 7) && metaViewport && metaViewport.getAttribute('content').indexOf('minimal-ui') >= 0;
28604  }
28605
28606  // Pixel Ratio
28607  device.pixelRatio = ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].devicePixelRatio || 1;
28608
28609  // Export object
28610  return device;
28611}();
28612
28613function onTouchStart(event) {
28614  var swiper = this;
28615  var data$$1 = swiper.touchEventsData;
28616  var params = swiper.params,
28617      touches = swiper.touches;
28618
28619  if (swiper.animating && params.preventInteractionOnTransition) {
28620    return;
28621  }
28622  var e = event;
28623  if (e.originalEvent) e = e.originalEvent;
28624  data$$1.isTouchEvent = e.type === 'touchstart';
28625  if (!data$$1.isTouchEvent && 'which' in e && e.which === 3) return;
28626  if (!data$$1.isTouchEvent && 'button' in e && e.button > 0) return;
28627  if (data$$1.isTouched && data$$1.isMoved) return;
28628  if (params.noSwiping && Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(e.target).closest(params.noSwipingSelector ? params.noSwipingSelector : '.' + params.noSwipingClass)[0]) {
28629    swiper.allowClick = true;
28630    return;
28631  }
28632  if (params.swipeHandler) {
28633    if (!Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(e).closest(params.swipeHandler)[0]) return;
28634  }
28635
28636  touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
28637  touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
28638  var startX = touches.currentX;
28639  var startY = touches.currentY;
28640
28641  // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore
28642
28643  var edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;
28644  var edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;
28645  if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].screen.width - edgeSwipeThreshold)) {
28646    return;
28647  }
28648
28649  Utils.extend(data$$1, {
28650    isTouched: true,
28651    isMoved: false,
28652    allowTouchCallbacks: true,
28653    isScrolling: undefined,
28654    startMoving: undefined
28655  });
28656
28657  touches.startX = startX;
28658  touches.startY = startY;
28659  data$$1.touchStartTime = Utils.now();
28660  swiper.allowClick = true;
28661  swiper.updateSize();
28662  swiper.swipeDirection = undefined;
28663  if (params.threshold > 0) data$$1.allowThresholdMove = false;
28664  if (e.type !== 'touchstart') {
28665    var preventDefault = true;
28666    if (Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(e.target).is(data$$1.formElements)) preventDefault = false;
28667    if (ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].activeElement && Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].activeElement).is(data$$1.formElements) && ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].activeElement !== e.target) {
28668      ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].activeElement.blur();
28669    }
28670
28671    var shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;
28672    if (params.touchStartForcePreventDefault || shouldPreventDefault) {
28673      e.preventDefault();
28674    }
28675  }
28676  swiper.emit('touchStart', e);
28677}
28678
28679function onTouchMove(event) {
28680  var swiper = this;
28681  var data$$1 = swiper.touchEventsData;
28682  var params = swiper.params,
28683      touches = swiper.touches,
28684      rtl = swiper.rtlTranslate;
28685
28686  var e = event;
28687  if (e.originalEvent) e = e.originalEvent;
28688  if (!data$$1.isTouched) {
28689    if (data$$1.startMoving && data$$1.isScrolling) {
28690      swiper.emit('touchMoveOpposite', e);
28691    }
28692    return;
28693  }
28694  if (data$$1.isTouchEvent && e.type === 'mousemove') return;
28695  var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
28696  var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
28697  if (e.preventedByNestedSwiper) {
28698    touches.startX = pageX;
28699    touches.startY = pageY;
28700    return;
28701  }
28702  if (!swiper.allowTouchMove) {
28703    // isMoved = true;
28704    swiper.allowClick = false;
28705    if (data$$1.isTouched) {
28706      Utils.extend(touches, {
28707        startX: pageX,
28708        startY: pageY,
28709        currentX: pageX,
28710        currentY: pageY
28711      });
28712      data$$1.touchStartTime = Utils.now();
28713    }
28714    return;
28715  }
28716  if (data$$1.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {
28717    if (swiper.isVertical()) {
28718      // Vertical
28719      if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {
28720        data$$1.isTouched = false;
28721        data$$1.isMoved = false;
28722        return;
28723      }
28724    } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {
28725      return;
28726    }
28727  }
28728  if (data$$1.isTouchEvent && ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].activeElement) {
28729    if (e.target === ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].activeElement && Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(e.target).is(data$$1.formElements)) {
28730      data$$1.isMoved = true;
28731      swiper.allowClick = false;
28732      return;
28733    }
28734  }
28735  if (data$$1.allowTouchCallbacks) {
28736    swiper.emit('touchMove', e);
28737  }
28738  if (e.targetTouches && e.targetTouches.length > 1) return;
28739
28740  touches.currentX = pageX;
28741  touches.currentY = pageY;
28742
28743  var diffX = touches.currentX - touches.startX;
28744  var diffY = touches.currentY - touches.startY;
28745  if (swiper.params.threshold && Math.sqrt(Math.pow(diffX, 2) + Math.pow(diffY, 2)) < swiper.params.threshold) return;
28746
28747  if (typeof data$$1.isScrolling === 'undefined') {
28748    var touchAngle = void 0;
28749    if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {
28750      data$$1.isScrolling = false;
28751    } else {
28752      // eslint-disable-next-line
28753      if (diffX * diffX + diffY * diffY >= 25) {
28754        touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;
28755        data$$1.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;
28756      }
28757    }
28758  }
28759  if (data$$1.isScrolling) {
28760    swiper.emit('touchMoveOpposite', e);
28761  }
28762  if (typeof data$$1.startMoving === 'undefined') {
28763    if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {
28764      data$$1.startMoving = true;
28765    }
28766  }
28767  if (data$$1.isScrolling) {
28768    data$$1.isTouched = false;
28769    return;
28770  }
28771  if (!data$$1.startMoving) {
28772    return;
28773  }
28774  swiper.allowClick = false;
28775  e.preventDefault();
28776  if (params.touchMoveStopPropagation && !params.nested) {
28777    e.stopPropagation();
28778  }
28779
28780  if (!data$$1.isMoved) {
28781    if (params.loop) {
28782      swiper.loopFix();
28783    }
28784    data$$1.startTranslate = swiper.getTranslate();
28785    swiper.setTransition(0);
28786    if (swiper.animating) {
28787      swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');
28788    }
28789    data$$1.allowMomentumBounce = false;
28790    // Grab Cursor
28791    if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
28792      swiper.setGrabCursor(true);
28793    }
28794    swiper.emit('sliderFirstMove', e);
28795  }
28796  swiper.emit('sliderMove', e);
28797  data$$1.isMoved = true;
28798
28799  var diff = swiper.isHorizontal() ? diffX : diffY;
28800  touches.diff = diff;
28801
28802  diff *= params.touchRatio;
28803  if (rtl) diff = -diff;
28804
28805  swiper.swipeDirection = diff > 0 ? 'prev' : 'next';
28806  data$$1.currentTranslate = diff + data$$1.startTranslate;
28807
28808  var disableParentSwiper = true;
28809  var resistanceRatio = params.resistanceRatio;
28810  if (params.touchReleaseOnEdges) {
28811    resistanceRatio = 0;
28812  }
28813  if (diff > 0 && data$$1.currentTranslate > swiper.minTranslate()) {
28814    disableParentSwiper = false;
28815    if (params.resistance) data$$1.currentTranslate = swiper.minTranslate() - 1 + Math.pow(-swiper.minTranslate() + data$$1.startTranslate + diff, resistanceRatio);
28816  } else if (diff < 0 && data$$1.currentTranslate < swiper.maxTranslate()) {
28817    disableParentSwiper = false;
28818    if (params.resistance) data$$1.currentTranslate = swiper.maxTranslate() + 1 - Math.pow(swiper.maxTranslate() - data$$1.startTranslate - diff, resistanceRatio);
28819  }
28820
28821  if (disableParentSwiper) {
28822    e.preventedByNestedSwiper = true;
28823  }
28824
28825  // Directions locks
28826  if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data$$1.currentTranslate < data$$1.startTranslate) {
28827    data$$1.currentTranslate = data$$1.startTranslate;
28828  }
28829  if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data$$1.currentTranslate > data$$1.startTranslate) {
28830    data$$1.currentTranslate = data$$1.startTranslate;
28831  }
28832
28833  // Threshold
28834  if (params.threshold > 0) {
28835    if (Math.abs(diff) > params.threshold || data$$1.allowThresholdMove) {
28836      if (!data$$1.allowThresholdMove) {
28837        data$$1.allowThresholdMove = true;
28838        touches.startX = touches.currentX;
28839        touches.startY = touches.currentY;
28840        data$$1.currentTranslate = data$$1.startTranslate;
28841        touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;
28842        return;
28843      }
28844    } else {
28845      data$$1.currentTranslate = data$$1.startTranslate;
28846      return;
28847    }
28848  }
28849
28850  if (!params.followFinger) return;
28851
28852  // Update active index in free mode
28853  if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {
28854    swiper.updateActiveIndex();
28855    swiper.updateSlidesClasses();
28856  }
28857  if (params.freeMode) {
28858    // Velocity
28859    if (data$$1.velocities.length === 0) {
28860      data$$1.velocities.push({
28861        position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],
28862        time: data$$1.touchStartTime
28863      });
28864    }
28865    data$$1.velocities.push({
28866      position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],
28867      time: Utils.now()
28868    });
28869  }
28870  // Update progress
28871  swiper.updateProgress(data$$1.currentTranslate);
28872  // Update translate
28873  swiper.setTranslate(data$$1.currentTranslate);
28874}
28875
28876function onTouchEnd(event) {
28877  var swiper = this;
28878  var data$$1 = swiper.touchEventsData;
28879
28880  var params = swiper.params,
28881      touches = swiper.touches,
28882      rtl = swiper.rtlTranslate,
28883      $wrapperEl = swiper.$wrapperEl,
28884      slidesGrid = swiper.slidesGrid,
28885      snapGrid = swiper.snapGrid;
28886
28887  var e = event;
28888  if (e.originalEvent) e = e.originalEvent;
28889  if (data$$1.allowTouchCallbacks) {
28890    swiper.emit('touchEnd', e);
28891  }
28892  data$$1.allowTouchCallbacks = false;
28893  if (!data$$1.isTouched) {
28894    if (data$$1.isMoved && params.grabCursor) {
28895      swiper.setGrabCursor(false);
28896    }
28897    data$$1.isMoved = false;
28898    data$$1.startMoving = false;
28899    return;
28900  }
28901  // Return Grab Cursor
28902  if (params.grabCursor && data$$1.isMoved && data$$1.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
28903    swiper.setGrabCursor(false);
28904  }
28905
28906  // Time diff
28907  var touchEndTime = Utils.now();
28908  var timeDiff = touchEndTime - data$$1.touchStartTime;
28909
28910  // Tap, doubleTap, Click
28911  if (swiper.allowClick) {
28912    swiper.updateClickedSlide(e);
28913    swiper.emit('tap', e);
28914    if (timeDiff < 300 && touchEndTime - data$$1.lastClickTime > 300) {
28915      if (data$$1.clickTimeout) clearTimeout(data$$1.clickTimeout);
28916      data$$1.clickTimeout = Utils.nextTick(function () {
28917        if (!swiper || swiper.destroyed) return;
28918        swiper.emit('click', e);
28919      }, 300);
28920    }
28921    if (timeDiff < 300 && touchEndTime - data$$1.lastClickTime < 300) {
28922      if (data$$1.clickTimeout) clearTimeout(data$$1.clickTimeout);
28923      swiper.emit('doubleTap', e);
28924    }
28925  }
28926
28927  data$$1.lastClickTime = Utils.now();
28928  Utils.nextTick(function () {
28929    if (!swiper.destroyed) swiper.allowClick = true;
28930  });
28931
28932  if (!data$$1.isTouched || !data$$1.isMoved || !swiper.swipeDirection || touches.diff === 0 || data$$1.currentTranslate === data$$1.startTranslate) {
28933    data$$1.isTouched = false;
28934    data$$1.isMoved = false;
28935    data$$1.startMoving = false;
28936    return;
28937  }
28938  data$$1.isTouched = false;
28939  data$$1.isMoved = false;
28940  data$$1.startMoving = false;
28941
28942  var currentPos = void 0;
28943  if (params.followFinger) {
28944    currentPos = rtl ? swiper.translate : -swiper.translate;
28945  } else {
28946    currentPos = -data$$1.currentTranslate;
28947  }
28948
28949  if (params.freeMode) {
28950    if (currentPos < -swiper.minTranslate()) {
28951      swiper.slideTo(swiper.activeIndex);
28952      return;
28953    }
28954    if (currentPos > -swiper.maxTranslate()) {
28955      if (swiper.slides.length < snapGrid.length) {
28956        swiper.slideTo(snapGrid.length - 1);
28957      } else {
28958        swiper.slideTo(swiper.slides.length - 1);
28959      }
28960      return;
28961    }
28962
28963    if (params.freeModeMomentum) {
28964      if (data$$1.velocities.length > 1) {
28965        var lastMoveEvent = data$$1.velocities.pop();
28966        var velocityEvent = data$$1.velocities.pop();
28967
28968        var distance = lastMoveEvent.position - velocityEvent.position;
28969        var time = lastMoveEvent.time - velocityEvent.time;
28970        swiper.velocity = distance / time;
28971        swiper.velocity /= 2;
28972        if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {
28973          swiper.velocity = 0;
28974        }
28975        // this implies that the user stopped moving a finger then released.
28976        // There would be no events with distance zero, so the last event is stale.
28977        if (time > 150 || Utils.now() - lastMoveEvent.time > 300) {
28978          swiper.velocity = 0;
28979        }
28980      } else {
28981        swiper.velocity = 0;
28982      }
28983      swiper.velocity *= params.freeModeMomentumVelocityRatio;
28984
28985      data$$1.velocities.length = 0;
28986      var momentumDuration = 1000 * params.freeModeMomentumRatio;
28987      var momentumDistance = swiper.velocity * momentumDuration;
28988
28989      var newPosition = swiper.translate + momentumDistance;
28990      if (rtl) newPosition = -newPosition;
28991
28992      var doBounce = false;
28993      var afterBouncePosition = void 0;
28994      var bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;
28995      var needsLoopFix = void 0;
28996      if (newPosition < swiper.maxTranslate()) {
28997        if (params.freeModeMomentumBounce) {
28998          if (newPosition + swiper.maxTranslate() < -bounceAmount) {
28999            newPosition = swiper.maxTranslate() - bounceAmount;
29000          }
29001          afterBouncePosition = swiper.maxTranslate();
29002          doBounce = true;
29003          data$$1.allowMomentumBounce = true;
29004        } else {
29005          newPosition = swiper.maxTranslate();
29006        }
29007        if (params.loop && params.centeredSlides) needsLoopFix = true;
29008      } else if (newPosition > swiper.minTranslate()) {
29009        if (params.freeModeMomentumBounce) {
29010          if (newPosition - swiper.minTranslate() > bounceAmount) {
29011            newPosition = swiper.minTranslate() + bounceAmount;
29012          }
29013          afterBouncePosition = swiper.minTranslate();
29014          doBounce = true;
29015          data$$1.allowMomentumBounce = true;
29016        } else {
29017          newPosition = swiper.minTranslate();
29018        }
29019        if (params.loop && params.centeredSlides) needsLoopFix = true;
29020      } else if (params.freeModeSticky) {
29021        var nextSlide = void 0;
29022        for (var j = 0; j < snapGrid.length; j += 1) {
29023          if (snapGrid[j] > -newPosition) {
29024            nextSlide = j;
29025            break;
29026          }
29027        }
29028
29029        if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {
29030          newPosition = snapGrid[nextSlide];
29031        } else {
29032          newPosition = snapGrid[nextSlide - 1];
29033        }
29034        newPosition = -newPosition;
29035      }
29036      if (needsLoopFix) {
29037        swiper.once('transitionEnd', function () {
29038          swiper.loopFix();
29039        });
29040      }
29041      // Fix duration
29042      if (swiper.velocity !== 0) {
29043        if (rtl) {
29044          momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);
29045        } else {
29046          momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);
29047        }
29048      } else if (params.freeModeSticky) {
29049        swiper.slideToClosest();
29050        return;
29051      }
29052
29053      if (params.freeModeMomentumBounce && doBounce) {
29054        swiper.updateProgress(afterBouncePosition);
29055        swiper.setTransition(momentumDuration);
29056        swiper.setTranslate(newPosition);
29057        swiper.transitionStart(true, swiper.swipeDirection);
29058        swiper.animating = true;
29059        $wrapperEl.transitionEnd(function () {
29060          if (!swiper || swiper.destroyed || !data$$1.allowMomentumBounce) return;
29061          swiper.emit('momentumBounce');
29062
29063          swiper.setTransition(params.speed);
29064          swiper.setTranslate(afterBouncePosition);
29065          $wrapperEl.transitionEnd(function () {
29066            if (!swiper || swiper.destroyed) return;
29067            swiper.transitionEnd();
29068          });
29069        });
29070      } else if (swiper.velocity) {
29071        swiper.updateProgress(newPosition);
29072        swiper.setTransition(momentumDuration);
29073        swiper.setTranslate(newPosition);
29074        swiper.transitionStart(true, swiper.swipeDirection);
29075        if (!swiper.animating) {
29076          swiper.animating = true;
29077          $wrapperEl.transitionEnd(function () {
29078            if (!swiper || swiper.destroyed) return;
29079            swiper.transitionEnd();
29080          });
29081        }
29082      } else {
29083        swiper.updateProgress(newPosition);
29084      }
29085
29086      swiper.updateActiveIndex();
29087      swiper.updateSlidesClasses();
29088    } else if (params.freeModeSticky) {
29089      swiper.slideToClosest();
29090      return;
29091    }
29092
29093    if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {
29094      swiper.updateProgress();
29095      swiper.updateActiveIndex();
29096      swiper.updateSlidesClasses();
29097    }
29098    return;
29099  }
29100
29101  // Find current slide
29102  var stopIndex = 0;
29103  var groupSize = swiper.slidesSizesGrid[0];
29104  for (var i = 0; i < slidesGrid.length; i += params.slidesPerGroup) {
29105    if (typeof slidesGrid[i + params.slidesPerGroup] !== 'undefined') {
29106      if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + params.slidesPerGroup]) {
29107        stopIndex = i;
29108        groupSize = slidesGrid[i + params.slidesPerGroup] - slidesGrid[i];
29109      }
29110    } else if (currentPos >= slidesGrid[i]) {
29111      stopIndex = i;
29112      groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];
29113    }
29114  }
29115
29116  // Find current slide size
29117  var ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;
29118
29119  if (timeDiff > params.longSwipesMs) {
29120    // Long touches
29121    if (!params.longSwipes) {
29122      swiper.slideTo(swiper.activeIndex);
29123      return;
29124    }
29125    if (swiper.swipeDirection === 'next') {
29126      if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + params.slidesPerGroup);else swiper.slideTo(stopIndex);
29127    }
29128    if (swiper.swipeDirection === 'prev') {
29129      if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + params.slidesPerGroup);else swiper.slideTo(stopIndex);
29130    }
29131  } else {
29132    // Short swipes
29133    if (!params.shortSwipes) {
29134      swiper.slideTo(swiper.activeIndex);
29135      return;
29136    }
29137    if (swiper.swipeDirection === 'next') {
29138      swiper.slideTo(stopIndex + params.slidesPerGroup);
29139    }
29140    if (swiper.swipeDirection === 'prev') {
29141      swiper.slideTo(stopIndex);
29142    }
29143  }
29144}
29145
29146function onResize() {
29147  var swiper = this;
29148
29149  var params = swiper.params,
29150      el = swiper.el;
29151
29152
29153  if (el && el.offsetWidth === 0) return;
29154
29155  // Breakpoints
29156  if (params.breakpoints) {
29157    swiper.setBreakpoint();
29158  }
29159
29160  // Save locks
29161  var allowSlideNext = swiper.allowSlideNext,
29162      allowSlidePrev = swiper.allowSlidePrev,
29163      snapGrid = swiper.snapGrid;
29164
29165  // Disable locks on resize
29166
29167  swiper.allowSlideNext = true;
29168  swiper.allowSlidePrev = true;
29169
29170  swiper.updateSize();
29171  swiper.updateSlides();
29172
29173  if (params.freeMode) {
29174    var newTranslate = Math.min(Math.max(swiper.translate, swiper.maxTranslate()), swiper.minTranslate());
29175    swiper.setTranslate(newTranslate);
29176    swiper.updateActiveIndex();
29177    swiper.updateSlidesClasses();
29178
29179    if (params.autoHeight) {
29180      swiper.updateAutoHeight();
29181    }
29182  } else {
29183    swiper.updateSlidesClasses();
29184    if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {
29185      swiper.slideTo(swiper.slides.length - 1, 0, false, true);
29186    } else {
29187      swiper.slideTo(swiper.activeIndex, 0, false, true);
29188    }
29189  }
29190  // Return locks after resize
29191  swiper.allowSlidePrev = allowSlidePrev;
29192  swiper.allowSlideNext = allowSlideNext;
29193
29194  if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {
29195    swiper.checkOverflow();
29196  }
29197}
29198
29199function onClick(e) {
29200  var swiper = this;
29201  if (!swiper.allowClick) {
29202    if (swiper.params.preventClicks) e.preventDefault();
29203    if (swiper.params.preventClicksPropagation && swiper.animating) {
29204      e.stopPropagation();
29205      e.stopImmediatePropagation();
29206    }
29207  }
29208}
29209
29210function attachEvents() {
29211  var swiper = this;
29212  var params = swiper.params,
29213      touchEvents = swiper.touchEvents,
29214      el = swiper.el,
29215      wrapperEl = swiper.wrapperEl;
29216
29217
29218  {
29219    swiper.onTouchStart = onTouchStart.bind(swiper);
29220    swiper.onTouchMove = onTouchMove.bind(swiper);
29221    swiper.onTouchEnd = onTouchEnd.bind(swiper);
29222  }
29223
29224  swiper.onClick = onClick.bind(swiper);
29225
29226  var target = params.touchEventsTarget === 'container' ? el : wrapperEl;
29227  var capture = !!params.nested;
29228
29229  // Touch Events
29230  {
29231    if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) {
29232      target.addEventListener(touchEvents.start, swiper.onTouchStart, false);
29233      ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].addEventListener(touchEvents.move, swiper.onTouchMove, capture);
29234      ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].addEventListener(touchEvents.end, swiper.onTouchEnd, false);
29235    } else {
29236      if (Support.touch) {
29237        var passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
29238        target.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);
29239        target.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture: capture } : capture);
29240        target.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);
29241      }
29242      if (params.simulateTouch && !Device.ios && !Device.android || params.simulateTouch && !Support.touch && Device.ios) {
29243        target.addEventListener('mousedown', swiper.onTouchStart, false);
29244        ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].addEventListener('mousemove', swiper.onTouchMove, capture);
29245        ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].addEventListener('mouseup', swiper.onTouchEnd, false);
29246      }
29247    }
29248    // Prevent Links Clicks
29249    if (params.preventClicks || params.preventClicksPropagation) {
29250      target.addEventListener('click', swiper.onClick, true);
29251    }
29252  }
29253
29254  // Resize handler
29255  swiper.on(Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);
29256}
29257
29258function detachEvents() {
29259  var swiper = this;
29260
29261  var params = swiper.params,
29262      touchEvents = swiper.touchEvents,
29263      el = swiper.el,
29264      wrapperEl = swiper.wrapperEl;
29265
29266
29267  var target = params.touchEventsTarget === 'container' ? el : wrapperEl;
29268  var capture = !!params.nested;
29269
29270  // Touch Events
29271  {
29272    if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) {
29273      target.removeEventListener(touchEvents.start, swiper.onTouchStart, false);
29274      ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].removeEventListener(touchEvents.move, swiper.onTouchMove, capture);
29275      ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].removeEventListener(touchEvents.end, swiper.onTouchEnd, false);
29276    } else {
29277      if (Support.touch) {
29278        var passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
29279        target.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);
29280        target.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);
29281        target.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);
29282      }
29283      if (params.simulateTouch && !Device.ios && !Device.android || params.simulateTouch && !Support.touch && Device.ios) {
29284        target.removeEventListener('mousedown', swiper.onTouchStart, false);
29285        ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].removeEventListener('mousemove', swiper.onTouchMove, capture);
29286        ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].removeEventListener('mouseup', swiper.onTouchEnd, false);
29287      }
29288    }
29289    // Prevent Links Clicks
29290    if (params.preventClicks || params.preventClicksPropagation) {
29291      target.removeEventListener('click', swiper.onClick, true);
29292    }
29293  }
29294
29295  // Resize handler
29296  swiper.off(Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize);
29297}
29298
29299var events = {
29300  attachEvents: attachEvents,
29301  detachEvents: detachEvents
29302};
29303
29304function setBreakpoint() {
29305  var swiper = this;
29306  var activeIndex = swiper.activeIndex,
29307      initialized = swiper.initialized,
29308      _swiper$loopedSlides = swiper.loopedSlides,
29309      loopedSlides = _swiper$loopedSlides === undefined ? 0 : _swiper$loopedSlides,
29310      params = swiper.params;
29311
29312  var breakpoints = params.breakpoints;
29313  if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;
29314
29315  // Set breakpoint for window width and update parameters
29316  var breakpoint = swiper.getBreakpoint(breakpoints);
29317
29318  if (breakpoint && swiper.currentBreakpoint !== breakpoint) {
29319    var breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;
29320    if (breakpointOnlyParams) {
29321      ['slidesPerView', 'spaceBetween', 'slidesPerGroup'].forEach(function (param) {
29322        var paramValue = breakpointOnlyParams[param];
29323        if (typeof paramValue === 'undefined') return;
29324        if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {
29325          breakpointOnlyParams[param] = 'auto';
29326        } else if (param === 'slidesPerView') {
29327          breakpointOnlyParams[param] = parseFloat(paramValue);
29328        } else {
29329          breakpointOnlyParams[param] = parseInt(paramValue, 10);
29330        }
29331      });
29332    }
29333
29334    var breakpointParams = breakpointOnlyParams || swiper.originalParams;
29335    var needsReLoop = params.loop && breakpointParams.slidesPerView !== params.slidesPerView;
29336
29337    Utils.extend(swiper.params, breakpointParams);
29338
29339    Utils.extend(swiper, {
29340      allowTouchMove: swiper.params.allowTouchMove,
29341      allowSlideNext: swiper.params.allowSlideNext,
29342      allowSlidePrev: swiper.params.allowSlidePrev
29343    });
29344
29345    swiper.currentBreakpoint = breakpoint;
29346
29347    if (needsReLoop && initialized) {
29348      swiper.loopDestroy();
29349      swiper.loopCreate();
29350      swiper.updateSlides();
29351      swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);
29352    }
29353    swiper.emit('breakpoint', breakpointParams);
29354  }
29355}
29356
29357function getBreakpoint(breakpoints) {
29358  var swiper = this;
29359  // Get breakpoint for window width
29360  if (!breakpoints) return undefined;
29361  var breakpoint = false;
29362  var points = [];
29363  Object.keys(breakpoints).forEach(function (point) {
29364    points.push(point);
29365  });
29366  points.sort(function (a, b) {
29367    return parseInt(a, 10) - parseInt(b, 10);
29368  });
29369  for (var i = 0; i < points.length; i += 1) {
29370    var point = points[i];
29371    if (swiper.params.breakpointsInverse) {
29372      if (point <= ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].innerWidth) {
29373        breakpoint = point;
29374      }
29375    } else if (point >= ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].innerWidth && !breakpoint) {
29376      breakpoint = point;
29377    }
29378  }
29379  return breakpoint || 'max';
29380}
29381
29382var breakpoints = { setBreakpoint: setBreakpoint, getBreakpoint: getBreakpoint };
29383
29384var Browser = function Browser() {
29385  function isSafari() {
29386    var ua = ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].navigator.userAgent.toLowerCase();
29387    return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;
29388  }
29389  return {
29390    isIE: !!ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].navigator.userAgent.match(/Trident/g) || !!ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].navigator.userAgent.match(/MSIE/g),
29391    isEdge: !!ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].navigator.userAgent.match(/Edge/g),
29392    isSafari: isSafari(),
29393    isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].navigator.userAgent)
29394  };
29395}();
29396
29397function addClasses() {
29398  var swiper = this;
29399  var classNames = swiper.classNames,
29400      params = swiper.params,
29401      rtl = swiper.rtl,
29402      $el = swiper.$el;
29403
29404  var suffixes = [];
29405
29406  suffixes.push(params.direction);
29407
29408  if (params.freeMode) {
29409    suffixes.push('free-mode');
29410  }
29411  if (!Support.flexbox) {
29412    suffixes.push('no-flexbox');
29413  }
29414  if (params.autoHeight) {
29415    suffixes.push('autoheight');
29416  }
29417  if (rtl) {
29418    suffixes.push('rtl');
29419  }
29420  if (params.slidesPerColumn > 1) {
29421    suffixes.push('multirow');
29422  }
29423  if (Device.android) {
29424    suffixes.push('android');
29425  }
29426  if (Device.ios) {
29427    suffixes.push('ios');
29428  }
29429  // WP8 Touch Events Fix
29430  if ((Browser.isIE || Browser.isEdge) && (Support.pointerEvents || Support.prefixedPointerEvents)) {
29431    suffixes.push('wp8-' + params.direction);
29432  }
29433
29434  suffixes.forEach(function (suffix) {
29435    classNames.push(params.containerModifierClass + suffix);
29436  });
29437
29438  $el.addClass(classNames.join(' '));
29439}
29440
29441function removeClasses() {
29442  var swiper = this;
29443  var $el = swiper.$el,
29444      classNames = swiper.classNames;
29445
29446
29447  $el.removeClass(classNames.join(' '));
29448}
29449
29450var classes = { addClasses: addClasses, removeClasses: removeClasses };
29451
29452function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {
29453  var image = void 0;
29454  function onReady() {
29455    if (callback) callback();
29456  }
29457  if (!imageEl.complete || !checkForComplete) {
29458    if (src) {
29459      image = new ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].Image();
29460      image.onload = onReady;
29461      image.onerror = onReady;
29462      if (sizes) {
29463        image.sizes = sizes;
29464      }
29465      if (srcset) {
29466        image.srcset = srcset;
29467      }
29468      if (src) {
29469        image.src = src;
29470      }
29471    } else {
29472      onReady();
29473    }
29474  } else {
29475    // image already loaded...
29476    onReady();
29477  }
29478}
29479
29480function preloadImages() {
29481  var swiper = this;
29482  swiper.imagesToLoad = swiper.$el.find('img');
29483  function onReady() {
29484    if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;
29485    if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;
29486    if (swiper.imagesLoaded === swiper.imagesToLoad.length) {
29487      if (swiper.params.updateOnImagesReady) swiper.update();
29488      swiper.emit('imagesReady');
29489    }
29490  }
29491  for (var i = 0; i < swiper.imagesToLoad.length; i += 1) {
29492    var imageEl = swiper.imagesToLoad[i];
29493    swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);
29494  }
29495}
29496
29497var images = {
29498  loadImage: loadImage,
29499  preloadImages: preloadImages
29500};
29501
29502function checkOverflow() {
29503  var swiper = this;
29504  var wasLocked = swiper.isLocked;
29505
29506  swiper.isLocked = swiper.snapGrid.length === 1;
29507  swiper.allowSlideNext = !swiper.isLocked;
29508  swiper.allowSlidePrev = !swiper.isLocked;
29509
29510  // events
29511  if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');
29512
29513  if (wasLocked && wasLocked !== swiper.isLocked) {
29514    swiper.isEnd = false;
29515    swiper.navigation.update();
29516  }
29517}
29518
29519var checkOverflow$1 = { checkOverflow: checkOverflow };
29520
29521var defaults = {
29522  init: true,
29523  direction: 'horizontal',
29524  touchEventsTarget: 'container',
29525  initialSlide: 0,
29526  speed: 300,
29527  //
29528  preventInteractionOnTransition: false,
29529
29530  // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView).
29531  edgeSwipeDetection: false,
29532  edgeSwipeThreshold: 20,
29533
29534  // Free mode
29535  freeMode: false,
29536  freeModeMomentum: true,
29537  freeModeMomentumRatio: 1,
29538  freeModeMomentumBounce: true,
29539  freeModeMomentumBounceRatio: 1,
29540  freeModeMomentumVelocityRatio: 1,
29541  freeModeSticky: false,
29542  freeModeMinimumVelocity: 0.02,
29543
29544  // Autoheight
29545  autoHeight: false,
29546
29547  // Set wrapper width
29548  setWrapperSize: false,
29549
29550  // Virtual Translate
29551  virtualTranslate: false,
29552
29553  // Effects
29554  effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'
29555
29556  // Breakpoints
29557  breakpoints: undefined,
29558  breakpointsInverse: false,
29559
29560  // Slides grid
29561  spaceBetween: 0,
29562  slidesPerView: 1,
29563  slidesPerColumn: 1,
29564  slidesPerColumnFill: 'column',
29565  slidesPerGroup: 1,
29566  centeredSlides: false,
29567  slidesOffsetBefore: 0, // in px
29568  slidesOffsetAfter: 0, // in px
29569  normalizeSlideIndex: true,
29570  centerInsufficientSlides: false,
29571
29572  // Disable swiper and hide navigation when container not overflow
29573  watchOverflow: false,
29574
29575  // Round length
29576  roundLengths: false,
29577
29578  // Touches
29579  touchRatio: 1,
29580  touchAngle: 45,
29581  simulateTouch: true,
29582  shortSwipes: true,
29583  longSwipes: true,
29584  longSwipesRatio: 0.5,
29585  longSwipesMs: 300,
29586  followFinger: true,
29587  allowTouchMove: true,
29588  threshold: 0,
29589  touchMoveStopPropagation: true,
29590  touchStartPreventDefault: true,
29591  touchStartForcePreventDefault: false,
29592  touchReleaseOnEdges: false,
29593
29594  // Unique Navigation Elements
29595  uniqueNavElements: true,
29596
29597  // Resistance
29598  resistance: true,
29599  resistanceRatio: 0.85,
29600
29601  // Progress
29602  watchSlidesProgress: false,
29603  watchSlidesVisibility: false,
29604
29605  // Cursor
29606  grabCursor: false,
29607
29608  // Clicks
29609  preventClicks: true,
29610  preventClicksPropagation: true,
29611  slideToClickedSlide: false,
29612
29613  // Images
29614  preloadImages: true,
29615  updateOnImagesReady: true,
29616
29617  // loop
29618  loop: false,
29619  loopAdditionalSlides: 0,
29620  loopedSlides: null,
29621  loopFillGroupWithBlank: false,
29622
29623  // Swiping/no swiping
29624  allowSlidePrev: true,
29625  allowSlideNext: true,
29626  swipeHandler: null, // '.swipe-handler',
29627  noSwiping: true,
29628  noSwipingClass: 'swiper-no-swiping',
29629  noSwipingSelector: null,
29630
29631  // Passive Listeners
29632  passiveListeners: true,
29633
29634  // NS
29635  containerModifierClass: 'swiper-container-', // NEW
29636  slideClass: 'swiper-slide',
29637  slideBlankClass: 'swiper-slide-invisible-blank',
29638  slideActiveClass: 'swiper-slide-active',
29639  slideDuplicateActiveClass: 'swiper-slide-duplicate-active',
29640  slideVisibleClass: 'swiper-slide-visible',
29641  slideDuplicateClass: 'swiper-slide-duplicate',
29642  slideNextClass: 'swiper-slide-next',
29643  slideDuplicateNextClass: 'swiper-slide-duplicate-next',
29644  slidePrevClass: 'swiper-slide-prev',
29645  slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',
29646  wrapperClass: 'swiper-wrapper',
29647
29648  // Callbacks
29649  runCallbacksOnInit: true
29650};
29651
29652var prototypes = {
29653  update: update,
29654  translate: translate,
29655  transition: transition$1,
29656  slide: slide,
29657  loop: loop,
29658  grabCursor: grabCursor,
29659  manipulation: manipulation,
29660  events: events,
29661  breakpoints: breakpoints,
29662  checkOverflow: checkOverflow$1,
29663  classes: classes,
29664  images: images
29665};
29666
29667var extendedDefaults = {};
29668
29669var Swiper = function (_SwiperClass) {
29670  _inherits(Swiper, _SwiperClass);
29671
29672  function Swiper() {
29673    var _ret3;
29674
29675    _classCallCheck(this, Swiper);
29676
29677    var el = void 0;
29678    var params = void 0;
29679
29680    for (var _len5 = arguments.length, args = Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
29681      args[_key5] = arguments[_key5];
29682    }
29683
29684    if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {
29685      params = args[0];
29686    } else {
29687      el = args[0];
29688      params = args[1];
29689    }
29690    if (!params) params = {};
29691
29692    params = Utils.extend({}, params);
29693    if (el && !params.el) params.el = el;
29694
29695    var _this = _possibleConstructorReturn(this, (Swiper.__proto__ || Object.getPrototypeOf(Swiper)).call(this, params));
29696
29697    Object.keys(prototypes).forEach(function (prototypeGroup) {
29698      Object.keys(prototypes[prototypeGroup]).forEach(function (protoMethod) {
29699        if (!Swiper.prototype[protoMethod]) {
29700          Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];
29701        }
29702      });
29703    });
29704
29705    // Swiper Instance
29706    var swiper = _this;
29707    if (typeof swiper.modules === 'undefined') {
29708      swiper.modules = {};
29709    }
29710    Object.keys(swiper.modules).forEach(function (moduleName) {
29711      var module = swiper.modules[moduleName];
29712      if (module.params) {
29713        var moduleParamName = Object.keys(module.params)[0];
29714        var moduleParams = module.params[moduleParamName];
29715        if ((typeof moduleParams === 'undefined' ? 'undefined' : _typeof(moduleParams)) !== 'object' || moduleParams === null) return;
29716        if (!(moduleParamName in params && 'enabled' in moduleParams)) return;
29717        if (params[moduleParamName] === true) {
29718          params[moduleParamName] = { enabled: true };
29719        }
29720        if (_typeof(params[moduleParamName]) === 'object' && !('enabled' in params[moduleParamName])) {
29721          params[moduleParamName].enabled = true;
29722        }
29723        if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };
29724      }
29725    });
29726
29727    // Extend defaults with modules params
29728    var swiperParams = Utils.extend({}, defaults);
29729    swiper.useModulesParams(swiperParams);
29730
29731    // Extend defaults with passed params
29732    swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params);
29733    swiper.originalParams = Utils.extend({}, swiper.params);
29734    swiper.passedParams = Utils.extend({}, params);
29735
29736    // Save Dom lib
29737    swiper.$ = dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"];
29738
29739    // Find el
29740    var $el = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(swiper.params.el);
29741    el = $el[0];
29742
29743    if (!el) {
29744      var _ret;
29745
29746      return _ret = undefined, _possibleConstructorReturn(_this, _ret);
29747    }
29748
29749    if ($el.length > 1) {
29750      var _ret2;
29751
29752      var swipers = [];
29753      $el.each(function (index$$1, containerEl) {
29754        var newParams = Utils.extend({}, params, { el: containerEl });
29755        swipers.push(new Swiper(newParams));
29756      });
29757      return _ret2 = swipers, _possibleConstructorReturn(_this, _ret2);
29758    }
29759
29760    el.swiper = swiper;
29761    $el.data('swiper', swiper);
29762
29763    // Find Wrapper
29764    var $wrapperEl = $el.children('.' + swiper.params.wrapperClass);
29765
29766    // Extend Swiper
29767    Utils.extend(swiper, {
29768      $el: $el,
29769      el: el,
29770      $wrapperEl: $wrapperEl,
29771      wrapperEl: $wrapperEl[0],
29772
29773      // Classes
29774      classNames: [],
29775
29776      // Slides
29777      slides: Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(),
29778      slidesGrid: [],
29779      snapGrid: [],
29780      slidesSizesGrid: [],
29781
29782      // isDirection
29783      isHorizontal: function isHorizontal() {
29784        return swiper.params.direction === 'horizontal';
29785      },
29786      isVertical: function isVertical() {
29787        return swiper.params.direction === 'vertical';
29788      },
29789
29790      // RTL
29791      rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',
29792      rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),
29793      wrongRTL: $wrapperEl.css('display') === '-webkit-box',
29794
29795      // Indexes
29796      activeIndex: 0,
29797      realIndex: 0,
29798
29799      //
29800      isBeginning: true,
29801      isEnd: false,
29802
29803      // Props
29804      translate: 0,
29805      previousTranslate: 0,
29806      progress: 0,
29807      velocity: 0,
29808      animating: false,
29809
29810      // Locks
29811      allowSlideNext: swiper.params.allowSlideNext,
29812      allowSlidePrev: swiper.params.allowSlidePrev,
29813
29814      // Touch Events
29815      touchEvents: function touchEvents() {
29816        var touch = ['touchstart', 'touchmove', 'touchend'];
29817        var desktop = ['mousedown', 'mousemove', 'mouseup'];
29818        if (Support.pointerEvents) {
29819          desktop = ['pointerdown', 'pointermove', 'pointerup'];
29820        } else if (Support.prefixedPointerEvents) {
29821          desktop = ['MSPointerDown', 'MSPointerMove', 'MSPointerUp'];
29822        }
29823        swiper.touchEventsTouch = {
29824          start: touch[0],
29825          move: touch[1],
29826          end: touch[2]
29827        };
29828        swiper.touchEventsDesktop = {
29829          start: desktop[0],
29830          move: desktop[1],
29831          end: desktop[2]
29832        };
29833        return Support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;
29834      }(),
29835      touchEventsData: {
29836        isTouched: undefined,
29837        isMoved: undefined,
29838        allowTouchCallbacks: undefined,
29839        touchStartTime: undefined,
29840        isScrolling: undefined,
29841        currentTranslate: undefined,
29842        startTranslate: undefined,
29843        allowThresholdMove: undefined,
29844        // Form elements to match
29845        formElements: 'input, select, option, textarea, button, video',
29846        // Last click time
29847        lastClickTime: Utils.now(),
29848        clickTimeout: undefined,
29849        // Velocities
29850        velocities: [],
29851        allowMomentumBounce: undefined,
29852        isTouchEvent: undefined,
29853        startMoving: undefined
29854      },
29855
29856      // Clicks
29857      allowClick: true,
29858
29859      // Touches
29860      allowTouchMove: swiper.params.allowTouchMove,
29861
29862      touches: {
29863        startX: 0,
29864        startY: 0,
29865        currentX: 0,
29866        currentY: 0,
29867        diff: 0
29868      },
29869
29870      // Images
29871      imagesToLoad: [],
29872      imagesLoaded: 0
29873
29874    });
29875
29876    // Install Modules
29877    swiper.useModules();
29878
29879    // Init
29880    if (swiper.params.init) {
29881      swiper.init();
29882    }
29883
29884    // Return app instance
29885    return _ret3 = swiper, _possibleConstructorReturn(_this, _ret3);
29886  }
29887
29888  _createClass(Swiper, [{
29889    key: 'slidesPerViewDynamic',
29890    value: function slidesPerViewDynamic() {
29891      var swiper = this;
29892      var params = swiper.params,
29893          slides = swiper.slides,
29894          slidesGrid = swiper.slidesGrid,
29895          swiperSize = swiper.size,
29896          activeIndex = swiper.activeIndex;
29897
29898      var spv = 1;
29899      if (params.centeredSlides) {
29900        var slideSize = slides[activeIndex].swiperSlideSize;
29901        var breakLoop = void 0;
29902        for (var i = activeIndex + 1; i < slides.length; i += 1) {
29903          if (slides[i] && !breakLoop) {
29904            slideSize += slides[i].swiperSlideSize;
29905            spv += 1;
29906            if (slideSize > swiperSize) breakLoop = true;
29907          }
29908        }
29909        for (var _i7 = activeIndex - 1; _i7 >= 0; _i7 -= 1) {
29910          if (slides[_i7] && !breakLoop) {
29911            slideSize += slides[_i7].swiperSlideSize;
29912            spv += 1;
29913            if (slideSize > swiperSize) breakLoop = true;
29914          }
29915        }
29916      } else {
29917        for (var _i8 = activeIndex + 1; _i8 < slides.length; _i8 += 1) {
29918          if (slidesGrid[_i8] - slidesGrid[activeIndex] < swiperSize) {
29919            spv += 1;
29920          }
29921        }
29922      }
29923      return spv;
29924    }
29925  }, {
29926    key: 'update',
29927    value: function update() {
29928      var swiper = this;
29929      if (!swiper || swiper.destroyed) return;
29930      var snapGrid = swiper.snapGrid,
29931          params = swiper.params;
29932      // Breakpoints
29933
29934      if (params.breakpoints) {
29935        swiper.setBreakpoint();
29936      }
29937      swiper.updateSize();
29938      swiper.updateSlides();
29939      swiper.updateProgress();
29940      swiper.updateSlidesClasses();
29941
29942      function setTranslate() {
29943        var translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;
29944        var newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());
29945        swiper.setTranslate(newTranslate);
29946        swiper.updateActiveIndex();
29947        swiper.updateSlidesClasses();
29948      }
29949      var translated = void 0;
29950      if (swiper.params.freeMode) {
29951        setTranslate();
29952        if (swiper.params.autoHeight) {
29953          swiper.updateAutoHeight();
29954        }
29955      } else {
29956        if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {
29957          translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);
29958        } else {
29959          translated = swiper.slideTo(swiper.activeIndex, 0, false, true);
29960        }
29961        if (!translated) {
29962          setTranslate();
29963        }
29964      }
29965      if (params.watchOverflow && snapGrid !== swiper.snapGrid) {
29966        swiper.checkOverflow();
29967      }
29968      swiper.emit('update');
29969    }
29970  }, {
29971    key: 'init',
29972    value: function init() {
29973      var swiper = this;
29974      if (swiper.initialized) return;
29975
29976      swiper.emit('beforeInit');
29977
29978      // Set breakpoint
29979      if (swiper.params.breakpoints) {
29980        swiper.setBreakpoint();
29981      }
29982
29983      // Add Classes
29984      swiper.addClasses();
29985
29986      // Create loop
29987      if (swiper.params.loop) {
29988        swiper.loopCreate();
29989      }
29990
29991      // Update size
29992      swiper.updateSize();
29993
29994      // Update slides
29995      swiper.updateSlides();
29996
29997      if (swiper.params.watchOverflow) {
29998        swiper.checkOverflow();
29999      }
30000
30001      // Set Grab Cursor
30002      if (swiper.params.grabCursor) {
30003        swiper.setGrabCursor();
30004      }
30005
30006      if (swiper.params.preloadImages) {
30007        swiper.preloadImages();
30008      }
30009
30010      // Slide To Initial Slide
30011      if (swiper.params.loop) {
30012        swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);
30013      } else {
30014        swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);
30015      }
30016
30017      // Attach events
30018      swiper.attachEvents();
30019
30020      // Init Flag
30021      swiper.initialized = true;
30022
30023      // Emit
30024      swiper.emit('init');
30025    }
30026  }, {
30027    key: 'destroy',
30028    value: function destroy() {
30029      var deleteInstance = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
30030      var cleanStyles = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
30031
30032      var swiper = this;
30033      var params = swiper.params,
30034          $el = swiper.$el,
30035          $wrapperEl = swiper.$wrapperEl,
30036          slides = swiper.slides;
30037
30038
30039      if (typeof swiper.params === 'undefined' || swiper.destroyed) {
30040        return null;
30041      }
30042
30043      swiper.emit('beforeDestroy');
30044
30045      // Init Flag
30046      swiper.initialized = false;
30047
30048      // Detach events
30049      swiper.detachEvents();
30050
30051      // Destroy loop
30052      if (params.loop) {
30053        swiper.loopDestroy();
30054      }
30055
30056      // Cleanup styles
30057      if (cleanStyles) {
30058        swiper.removeClasses();
30059        $el.removeAttr('style');
30060        $wrapperEl.removeAttr('style');
30061        if (slides && slides.length) {
30062          slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index').removeAttr('data-swiper-column').removeAttr('data-swiper-row');
30063        }
30064      }
30065
30066      swiper.emit('destroy');
30067
30068      // Detach emitter events
30069      Object.keys(swiper.eventsListeners).forEach(function (eventName) {
30070        swiper.off(eventName);
30071      });
30072
30073      if (deleteInstance !== false) {
30074        swiper.$el[0].swiper = null;
30075        swiper.$el.data('swiper', null);
30076        Utils.deleteProps(swiper);
30077      }
30078      swiper.destroyed = true;
30079
30080      return null;
30081    }
30082  }], [{
30083    key: 'extendDefaults',
30084    value: function extendDefaults(newDefaults) {
30085      Utils.extend(extendedDefaults, newDefaults);
30086    }
30087  }, {
30088    key: 'extendedDefaults',
30089    get: function get() {
30090      return extendedDefaults;
30091    }
30092  }, {
30093    key: 'defaults',
30094    get: function get() {
30095      return defaults;
30096    }
30097  }, {
30098    key: 'Class',
30099    get: function get() {
30100      return SwiperClass;
30101    }
30102  }, {
30103    key: '$',
30104    get: function get() {
30105      return dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"];
30106    }
30107  }]);
30108
30109  return Swiper;
30110}(SwiperClass);
30111
30112var Device$1 = {
30113  name: 'device',
30114  proto: {
30115    device: Device
30116  },
30117  static: {
30118    device: Device
30119  }
30120};
30121
30122var Support$1 = {
30123  name: 'support',
30124  proto: {
30125    support: Support
30126  },
30127  static: {
30128    support: Support
30129  }
30130};
30131
30132var Browser$1 = {
30133  name: 'browser',
30134  proto: {
30135    browser: Browser
30136  },
30137  static: {
30138    browser: Browser
30139  }
30140};
30141
30142var Resize = {
30143  name: 'resize',
30144  create: function create() {
30145    var swiper = this;
30146    Utils.extend(swiper, {
30147      resize: {
30148        resizeHandler: function resizeHandler() {
30149          if (!swiper || swiper.destroyed || !swiper.initialized) return;
30150          swiper.emit('beforeResize');
30151          swiper.emit('resize');
30152        },
30153        orientationChangeHandler: function orientationChangeHandler() {
30154          if (!swiper || swiper.destroyed || !swiper.initialized) return;
30155          swiper.emit('orientationchange');
30156        }
30157      }
30158    });
30159  },
30160
30161  on: {
30162    init: function init() {
30163      var swiper = this;
30164      // Emit resize
30165      ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].addEventListener('resize', swiper.resize.resizeHandler);
30166
30167      // Emit orientationchange
30168      ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].addEventListener('orientationchange', swiper.resize.orientationChangeHandler);
30169    },
30170    destroy: function destroy() {
30171      var swiper = this;
30172      ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].removeEventListener('resize', swiper.resize.resizeHandler);
30173      ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);
30174    }
30175  }
30176};
30177
30178var Observer = {
30179  func: ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].MutationObserver || ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].WebkitMutationObserver,
30180  attach: function attach(target) {
30181    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
30182
30183    var swiper = this;
30184
30185    var ObserverFunc = Observer.func;
30186    var observer = new ObserverFunc(function (mutations) {
30187      // The observerUpdate event should only be triggered
30188      // once despite the number of mutations.  Additional
30189      // triggers are redundant and are very costly
30190      if (mutations.length === 1) {
30191        swiper.emit('observerUpdate', mutations[0]);
30192        return;
30193      }
30194      var observerUpdate = function observerUpdate() {
30195        swiper.emit('observerUpdate', mutations[0]);
30196      };
30197
30198      if (ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].requestAnimationFrame) {
30199        ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].requestAnimationFrame(observerUpdate);
30200      } else {
30201        ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].setTimeout(observerUpdate, 0);
30202      }
30203    });
30204
30205    observer.observe(target, {
30206      attributes: typeof options.attributes === 'undefined' ? true : options.attributes,
30207      childList: typeof options.childList === 'undefined' ? true : options.childList,
30208      characterData: typeof options.characterData === 'undefined' ? true : options.characterData
30209    });
30210
30211    swiper.observer.observers.push(observer);
30212  },
30213  init: function init() {
30214    var swiper = this;
30215    if (!Support.observer || !swiper.params.observer) return;
30216    if (swiper.params.observeParents) {
30217      var containerParents = swiper.$el.parents();
30218      for (var i = 0; i < containerParents.length; i += 1) {
30219        swiper.observer.attach(containerParents[i]);
30220      }
30221    }
30222    // Observe container
30223    swiper.observer.attach(swiper.$el[0], { childList: swiper.params.observeSlideChildren });
30224
30225    // Observe wrapper
30226    swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false });
30227  },
30228  destroy: function destroy() {
30229    var swiper = this;
30230    swiper.observer.observers.forEach(function (observer) {
30231      observer.disconnect();
30232    });
30233    swiper.observer.observers = [];
30234  }
30235};
30236
30237var Observer$1 = {
30238  name: 'observer',
30239  params: {
30240    observer: false,
30241    observeParents: false,
30242    observeSlideChildren: false
30243  },
30244  create: function create() {
30245    var swiper = this;
30246    Utils.extend(swiper, {
30247      observer: {
30248        init: Observer.init.bind(swiper),
30249        attach: Observer.attach.bind(swiper),
30250        destroy: Observer.destroy.bind(swiper),
30251        observers: []
30252      }
30253    });
30254  },
30255
30256  on: {
30257    init: function init() {
30258      var swiper = this;
30259      swiper.observer.init();
30260    },
30261    destroy: function destroy() {
30262      var swiper = this;
30263      swiper.observer.destroy();
30264    }
30265  }
30266};
30267
30268var Virtual = {
30269  update: function update(force) {
30270    var swiper = this;
30271    var _swiper$params = swiper.params,
30272        slidesPerView = _swiper$params.slidesPerView,
30273        slidesPerGroup = _swiper$params.slidesPerGroup,
30274        centeredSlides = _swiper$params.centeredSlides;
30275    var _swiper$params$virtua = swiper.params.virtual,
30276        addSlidesBefore = _swiper$params$virtua.addSlidesBefore,
30277        addSlidesAfter = _swiper$params$virtua.addSlidesAfter;
30278    var _swiper$virtual = swiper.virtual,
30279        previousFrom = _swiper$virtual.from,
30280        previousTo = _swiper$virtual.to,
30281        slides = _swiper$virtual.slides,
30282        previousSlidesGrid = _swiper$virtual.slidesGrid,
30283        renderSlide = _swiper$virtual.renderSlide,
30284        previousOffset = _swiper$virtual.offset;
30285
30286    swiper.updateActiveIndex();
30287    var activeIndex = swiper.activeIndex || 0;
30288
30289    var offsetProp = void 0;
30290    if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';
30291
30292    var slidesAfter = void 0;
30293    var slidesBefore = void 0;
30294    if (centeredSlides) {
30295      slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;
30296      slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;
30297    } else {
30298      slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore;
30299      slidesBefore = slidesPerGroup + addSlidesAfter;
30300    }
30301    var from = Math.max((activeIndex || 0) - slidesBefore, 0);
30302    var to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);
30303    var offset$$1 = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);
30304
30305    Utils.extend(swiper.virtual, {
30306      from: from,
30307      to: to,
30308      offset: offset$$1,
30309      slidesGrid: swiper.slidesGrid
30310    });
30311
30312    function onRendered() {
30313      swiper.updateSlides();
30314      swiper.updateProgress();
30315      swiper.updateSlidesClasses();
30316      if (swiper.lazy && swiper.params.lazy.enabled) {
30317        swiper.lazy.load();
30318      }
30319    }
30320
30321    if (previousFrom === from && previousTo === to && !force) {
30322      if (swiper.slidesGrid !== previousSlidesGrid && offset$$1 !== previousOffset) {
30323        swiper.slides.css(offsetProp, offset$$1 + 'px');
30324      }
30325      swiper.updateProgress();
30326      return;
30327    }
30328    if (swiper.params.virtual.renderExternal) {
30329      swiper.params.virtual.renderExternal.call(swiper, {
30330        offset: offset$$1,
30331        from: from,
30332        to: to,
30333        slides: function getSlides() {
30334          var slidesToRender = [];
30335          for (var i = from; i <= to; i += 1) {
30336            slidesToRender.push(slides[i]);
30337          }
30338          return slidesToRender;
30339        }()
30340      });
30341      onRendered();
30342      return;
30343    }
30344    var prependIndexes = [];
30345    var appendIndexes = [];
30346    if (force) {
30347      swiper.$wrapperEl.find('.' + swiper.params.slideClass).remove();
30348    } else {
30349      for (var i = previousFrom; i <= previousTo; i += 1) {
30350        if (i < from || i > to) {
30351          swiper.$wrapperEl.find('.' + swiper.params.slideClass + '[data-swiper-slide-index="' + i + '"]').remove();
30352        }
30353      }
30354    }
30355    for (var _i9 = 0; _i9 < slides.length; _i9 += 1) {
30356      if (_i9 >= from && _i9 <= to) {
30357        if (typeof previousTo === 'undefined' || force) {
30358          appendIndexes.push(_i9);
30359        } else {
30360          if (_i9 > previousTo) appendIndexes.push(_i9);
30361          if (_i9 < previousFrom) prependIndexes.push(_i9);
30362        }
30363      }
30364    }
30365    appendIndexes.forEach(function (index$$1) {
30366      swiper.$wrapperEl.append(renderSlide(slides[index$$1], index$$1));
30367    });
30368    prependIndexes.sort(function (a, b) {
30369      return b - a;
30370    }).forEach(function (index$$1) {
30371      swiper.$wrapperEl.prepend(renderSlide(slides[index$$1], index$$1));
30372    });
30373    swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, offset$$1 + 'px');
30374    onRendered();
30375  },
30376  renderSlide: function renderSlide(slide, index$$1) {
30377    var swiper = this;
30378    var params = swiper.params.virtual;
30379    if (params.cache && swiper.virtual.cache[index$$1]) {
30380      return swiper.virtual.cache[index$$1];
30381    }
30382    var $slideEl = params.renderSlide ? Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(params.renderSlide.call(swiper, slide, index$$1)) : Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])('<div class="' + swiper.params.slideClass + '" data-swiper-slide-index="' + index$$1 + '">' + slide + '</div>');
30383    if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index$$1);
30384    if (params.cache) swiper.virtual.cache[index$$1] = $slideEl;
30385    return $slideEl;
30386  },
30387  appendSlide: function appendSlide(slide) {
30388    var swiper = this;
30389    swiper.virtual.slides.push(slide);
30390    swiper.virtual.update(true);
30391  },
30392  prependSlide: function prependSlide(slide) {
30393    var swiper = this;
30394    swiper.virtual.slides.unshift(slide);
30395    if (swiper.params.virtual.cache) {
30396      var cache = swiper.virtual.cache;
30397      var newCache = {};
30398      Object.keys(cache).forEach(function (cachedIndex) {
30399        newCache[cachedIndex + 1] = cache[cachedIndex];
30400      });
30401      swiper.virtual.cache = newCache;
30402    }
30403    swiper.virtual.update(true);
30404    swiper.slideNext(0);
30405  }
30406};
30407
30408var Virtual$1 = {
30409  name: 'virtual',
30410  params: {
30411    virtual: {
30412      enabled: false,
30413      slides: [],
30414      cache: true,
30415      renderSlide: null,
30416      renderExternal: null,
30417      addSlidesBefore: 0,
30418      addSlidesAfter: 0
30419    }
30420  },
30421  create: function create() {
30422    var swiper = this;
30423    Utils.extend(swiper, {
30424      virtual: {
30425        update: Virtual.update.bind(swiper),
30426        appendSlide: Virtual.appendSlide.bind(swiper),
30427        prependSlide: Virtual.prependSlide.bind(swiper),
30428        renderSlide: Virtual.renderSlide.bind(swiper),
30429        slides: swiper.params.virtual.slides,
30430        cache: {}
30431      }
30432    });
30433  },
30434
30435  on: {
30436    beforeInit: function beforeInit() {
30437      var swiper = this;
30438      if (!swiper.params.virtual.enabled) return;
30439      swiper.classNames.push(swiper.params.containerModifierClass + 'virtual');
30440      var overwriteParams = {
30441        watchSlidesProgress: true
30442      };
30443      Utils.extend(swiper.params, overwriteParams);
30444      Utils.extend(swiper.originalParams, overwriteParams);
30445
30446      if (!swiper.params.initialSlide) {
30447        swiper.virtual.update();
30448      }
30449    },
30450    setTranslate: function setTranslate() {
30451      var swiper = this;
30452      if (!swiper.params.virtual.enabled) return;
30453      swiper.virtual.update();
30454    }
30455  }
30456};
30457
30458var Keyboard = {
30459  handle: function handle(event) {
30460    var swiper = this;
30461    var rtl = swiper.rtlTranslate;
30462
30463    var e = event;
30464    if (e.originalEvent) e = e.originalEvent; // jquery fix
30465    var kc = e.keyCode || e.charCode;
30466    // Directions locks
30467    if (!swiper.allowSlideNext && (swiper.isHorizontal() && kc === 39 || swiper.isVertical() && kc === 40)) {
30468      return false;
30469    }
30470    if (!swiper.allowSlidePrev && (swiper.isHorizontal() && kc === 37 || swiper.isVertical() && kc === 38)) {
30471      return false;
30472    }
30473    if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {
30474      return undefined;
30475    }
30476    if (ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].activeElement && ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].activeElement.nodeName && (ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].activeElement.nodeName.toLowerCase() === 'input' || ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].activeElement.nodeName.toLowerCase() === 'textarea')) {
30477      return undefined;
30478    }
30479    if (swiper.params.keyboard.onlyInViewport && (kc === 37 || kc === 39 || kc === 38 || kc === 40)) {
30480      var inView = false;
30481      // Check that swiper should be inside of visible area of window
30482      if (swiper.$el.parents('.' + swiper.params.slideClass).length > 0 && swiper.$el.parents('.' + swiper.params.slideActiveClass).length === 0) {
30483        return undefined;
30484      }
30485      var windowWidth = ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].innerWidth;
30486      var windowHeight = ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].innerHeight;
30487      var swiperOffset = swiper.$el.offset();
30488      if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;
30489      var 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]];
30490      for (var i = 0; i < swiperCoord.length; i += 1) {
30491        var point = swiperCoord[i];
30492        if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {
30493          inView = true;
30494        }
30495      }
30496      if (!inView) return undefined;
30497    }
30498    if (swiper.isHorizontal()) {
30499      if (kc === 37 || kc === 39) {
30500        if (e.preventDefault) e.preventDefault();else e.returnValue = false;
30501      }
30502      if (kc === 39 && !rtl || kc === 37 && rtl) swiper.slideNext();
30503      if (kc === 37 && !rtl || kc === 39 && rtl) swiper.slidePrev();
30504    } else {
30505      if (kc === 38 || kc === 40) {
30506        if (e.preventDefault) e.preventDefault();else e.returnValue = false;
30507      }
30508      if (kc === 40) swiper.slideNext();
30509      if (kc === 38) swiper.slidePrev();
30510    }
30511    swiper.emit('keyPress', kc);
30512    return undefined;
30513  },
30514  enable: function enable() {
30515    var swiper = this;
30516    if (swiper.keyboard.enabled) return;
30517    Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"]).on('keydown', swiper.keyboard.handle);
30518    swiper.keyboard.enabled = true;
30519  },
30520  disable: function disable() {
30521    var swiper = this;
30522    if (!swiper.keyboard.enabled) return;
30523    Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"]).off('keydown', swiper.keyboard.handle);
30524    swiper.keyboard.enabled = false;
30525  }
30526};
30527
30528var Keyboard$1 = {
30529  name: 'keyboard',
30530  params: {
30531    keyboard: {
30532      enabled: false,
30533      onlyInViewport: true
30534    }
30535  },
30536  create: function create() {
30537    var swiper = this;
30538    Utils.extend(swiper, {
30539      keyboard: {
30540        enabled: false,
30541        enable: Keyboard.enable.bind(swiper),
30542        disable: Keyboard.disable.bind(swiper),
30543        handle: Keyboard.handle.bind(swiper)
30544      }
30545    });
30546  },
30547
30548  on: {
30549    init: function init() {
30550      var swiper = this;
30551      if (swiper.params.keyboard.enabled) {
30552        swiper.keyboard.enable();
30553      }
30554    },
30555    destroy: function destroy() {
30556      var swiper = this;
30557      if (swiper.keyboard.enabled) {
30558        swiper.keyboard.disable();
30559      }
30560    }
30561  }
30562};
30563
30564function isEventSupported() {
30565  var eventName = 'onwheel';
30566  var isSupported = eventName in ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"];
30567
30568  if (!isSupported) {
30569    var element = ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].createElement('div');
30570    element.setAttribute(eventName, 'return;');
30571    isSupported = typeof element[eventName] === 'function';
30572  }
30573
30574  if (!isSupported && ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].implementation && ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].implementation.hasFeature
30575  // always returns true in newer browsers as per the standard.
30576  // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature
30577  && ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].implementation.hasFeature('', '') !== true) {
30578    // This is the only way to test support for the `wheel` event in IE9+.
30579    isSupported = ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].implementation.hasFeature('Events.wheel', '3.0');
30580  }
30581
30582  return isSupported;
30583}
30584var Mousewheel = {
30585  lastScrollTime: Utils.now(),
30586  event: function getEvent() {
30587    if (ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';
30588    return isEventSupported() ? 'wheel' : 'mousewheel';
30589  }(),
30590  normalize: function normalize(e) {
30591    // Reasonable defaults
30592    var PIXEL_STEP = 10;
30593    var LINE_HEIGHT = 40;
30594    var PAGE_HEIGHT = 800;
30595
30596    var sX = 0;
30597    var sY = 0; // spinX, spinY
30598    var pX = 0;
30599    var pY = 0; // pixelX, pixelY
30600
30601    // Legacy
30602    if ('detail' in e) {
30603      sY = e.detail;
30604    }
30605    if ('wheelDelta' in e) {
30606      sY = -e.wheelDelta / 120;
30607    }
30608    if ('wheelDeltaY' in e) {
30609      sY = -e.wheelDeltaY / 120;
30610    }
30611    if ('wheelDeltaX' in e) {
30612      sX = -e.wheelDeltaX / 120;
30613    }
30614
30615    // side scrolling on FF with DOMMouseScroll
30616    if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {
30617      sX = sY;
30618      sY = 0;
30619    }
30620
30621    pX = sX * PIXEL_STEP;
30622    pY = sY * PIXEL_STEP;
30623
30624    if ('deltaY' in e) {
30625      pY = e.deltaY;
30626    }
30627    if ('deltaX' in e) {
30628      pX = e.deltaX;
30629    }
30630
30631    if ((pX || pY) && e.deltaMode) {
30632      if (e.deltaMode === 1) {
30633        // delta in LINE units
30634        pX *= LINE_HEIGHT;
30635        pY *= LINE_HEIGHT;
30636      } else {
30637        // delta in PAGE units
30638        pX *= PAGE_HEIGHT;
30639        pY *= PAGE_HEIGHT;
30640      }
30641    }
30642
30643    // Fall-back if spin cannot be determined
30644    if (pX && !sX) {
30645      sX = pX < 1 ? -1 : 1;
30646    }
30647    if (pY && !sY) {
30648      sY = pY < 1 ? -1 : 1;
30649    }
30650
30651    return {
30652      spinX: sX,
30653      spinY: sY,
30654      pixelX: pX,
30655      pixelY: pY
30656    };
30657  },
30658  handleMouseEnter: function handleMouseEnter() {
30659    var swiper = this;
30660    swiper.mouseEntered = true;
30661  },
30662  handleMouseLeave: function handleMouseLeave() {
30663    var swiper = this;
30664    swiper.mouseEntered = false;
30665  },
30666  handle: function handle(event) {
30667    var e = event;
30668    var swiper = this;
30669    var params = swiper.params.mousewheel;
30670
30671    if (!swiper.mouseEntered && !params.releaseOnEdges) return true;
30672
30673    if (e.originalEvent) e = e.originalEvent; // jquery fix
30674    var delta = 0;
30675    var rtlFactor = swiper.rtlTranslate ? -1 : 1;
30676
30677    var data$$1 = Mousewheel.normalize(e);
30678
30679    if (params.forceToAxis) {
30680      if (swiper.isHorizontal()) {
30681        if (Math.abs(data$$1.pixelX) > Math.abs(data$$1.pixelY)) delta = data$$1.pixelX * rtlFactor;else return true;
30682      } else if (Math.abs(data$$1.pixelY) > Math.abs(data$$1.pixelX)) delta = data$$1.pixelY;else return true;
30683    } else {
30684      delta = Math.abs(data$$1.pixelX) > Math.abs(data$$1.pixelY) ? -data$$1.pixelX * rtlFactor : -data$$1.pixelY;
30685    }
30686
30687    if (delta === 0) return true;
30688
30689    if (params.invert) delta = -delta;
30690
30691    if (!swiper.params.freeMode) {
30692      if (Utils.now() - swiper.mousewheel.lastScrollTime > 60) {
30693        if (delta < 0) {
30694          if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {
30695            swiper.slideNext();
30696            swiper.emit('scroll', e);
30697          } else if (params.releaseOnEdges) return true;
30698        } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {
30699          swiper.slidePrev();
30700          swiper.emit('scroll', e);
30701        } else if (params.releaseOnEdges) return true;
30702      }
30703      swiper.mousewheel.lastScrollTime = new ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].Date().getTime();
30704    } else {
30705      // Freemode or scrollContainer:
30706      if (swiper.params.loop) {
30707        swiper.loopFix();
30708      }
30709      var position = swiper.getTranslate() + delta * params.sensitivity;
30710      var wasBeginning = swiper.isBeginning;
30711      var wasEnd = swiper.isEnd;
30712
30713      if (position >= swiper.minTranslate()) position = swiper.minTranslate();
30714      if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();
30715
30716      swiper.setTransition(0);
30717      swiper.setTranslate(position);
30718      swiper.updateProgress();
30719      swiper.updateActiveIndex();
30720      swiper.updateSlidesClasses();
30721
30722      if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {
30723        swiper.updateSlidesClasses();
30724      }
30725
30726      if (swiper.params.freeModeSticky) {
30727        clearTimeout(swiper.mousewheel.timeout);
30728        swiper.mousewheel.timeout = Utils.nextTick(function () {
30729          swiper.slideToClosest();
30730        }, 300);
30731      }
30732      // Emit event
30733      swiper.emit('scroll', e);
30734
30735      // Stop autoplay
30736      if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();
30737      // Return page scroll on edge positions
30738      if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;
30739    }
30740
30741    if (e.preventDefault) e.preventDefault();else e.returnValue = false;
30742    return false;
30743  },
30744  enable: function enable() {
30745    var swiper = this;
30746    if (!Mousewheel.event) return false;
30747    if (swiper.mousewheel.enabled) return false;
30748    var target = swiper.$el;
30749    if (swiper.params.mousewheel.eventsTarged !== 'container') {
30750      target = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(swiper.params.mousewheel.eventsTarged);
30751    }
30752    target.on('mouseenter', swiper.mousewheel.handleMouseEnter);
30753    target.on('mouseleave', swiper.mousewheel.handleMouseLeave);
30754    target.on(Mousewheel.event, swiper.mousewheel.handle);
30755    swiper.mousewheel.enabled = true;
30756    return true;
30757  },
30758  disable: function disable() {
30759    var swiper = this;
30760    if (!Mousewheel.event) return false;
30761    if (!swiper.mousewheel.enabled) return false;
30762    var target = swiper.$el;
30763    if (swiper.params.mousewheel.eventsTarged !== 'container') {
30764      target = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(swiper.params.mousewheel.eventsTarged);
30765    }
30766    target.off(Mousewheel.event, swiper.mousewheel.handle);
30767    swiper.mousewheel.enabled = false;
30768    return true;
30769  }
30770};
30771
30772var Mousewheel$1 = {
30773  name: 'mousewheel',
30774  params: {
30775    mousewheel: {
30776      enabled: false,
30777      releaseOnEdges: false,
30778      invert: false,
30779      forceToAxis: false,
30780      sensitivity: 1,
30781      eventsTarged: 'container'
30782    }
30783  },
30784  create: function create() {
30785    var swiper = this;
30786    Utils.extend(swiper, {
30787      mousewheel: {
30788        enabled: false,
30789        enable: Mousewheel.enable.bind(swiper),
30790        disable: Mousewheel.disable.bind(swiper),
30791        handle: Mousewheel.handle.bind(swiper),
30792        handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper),
30793        handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper),
30794        lastScrollTime: Utils.now()
30795      }
30796    });
30797  },
30798
30799  on: {
30800    init: function init() {
30801      var swiper = this;
30802      if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable();
30803    },
30804    destroy: function destroy() {
30805      var swiper = this;
30806      if (swiper.mousewheel.enabled) swiper.mousewheel.disable();
30807    }
30808  }
30809};
30810
30811var Navigation = {
30812  update: function update() {
30813    // Update Navigation Buttons
30814    var swiper = this;
30815    var params = swiper.params.navigation;
30816
30817    if (swiper.params.loop) return;
30818    var _swiper$navigation = swiper.navigation,
30819        $nextEl = _swiper$navigation.$nextEl,
30820        $prevEl = _swiper$navigation.$prevEl;
30821
30822
30823    if ($prevEl && $prevEl.length > 0) {
30824      if (swiper.isBeginning) {
30825        $prevEl.addClass(params.disabledClass);
30826      } else {
30827        $prevEl.removeClass(params.disabledClass);
30828      }
30829      $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
30830    }
30831    if ($nextEl && $nextEl.length > 0) {
30832      if (swiper.isEnd) {
30833        $nextEl.addClass(params.disabledClass);
30834      } else {
30835        $nextEl.removeClass(params.disabledClass);
30836      }
30837      $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
30838    }
30839  },
30840  onPrevClick: function onPrevClick(e) {
30841    var swiper = this;
30842    e.preventDefault();
30843    if (swiper.isBeginning && !swiper.params.loop) return;
30844    swiper.slidePrev();
30845  },
30846  onNextClick: function onNextClick(e) {
30847    var swiper = this;
30848    e.preventDefault();
30849    if (swiper.isEnd && !swiper.params.loop) return;
30850    swiper.slideNext();
30851  },
30852  init: function init() {
30853    var swiper = this;
30854    var params = swiper.params.navigation;
30855    if (!(params.nextEl || params.prevEl)) return;
30856
30857    var $nextEl = void 0;
30858    var $prevEl = void 0;
30859    if (params.nextEl) {
30860      $nextEl = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(params.nextEl);
30861      if (swiper.params.uniqueNavElements && typeof params.nextEl === 'string' && $nextEl.length > 1 && swiper.$el.find(params.nextEl).length === 1) {
30862        $nextEl = swiper.$el.find(params.nextEl);
30863      }
30864    }
30865    if (params.prevEl) {
30866      $prevEl = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(params.prevEl);
30867      if (swiper.params.uniqueNavElements && typeof params.prevEl === 'string' && $prevEl.length > 1 && swiper.$el.find(params.prevEl).length === 1) {
30868        $prevEl = swiper.$el.find(params.prevEl);
30869      }
30870    }
30871
30872    if ($nextEl && $nextEl.length > 0) {
30873      $nextEl.on('click', swiper.navigation.onNextClick);
30874    }
30875    if ($prevEl && $prevEl.length > 0) {
30876      $prevEl.on('click', swiper.navigation.onPrevClick);
30877    }
30878
30879    Utils.extend(swiper.navigation, {
30880      $nextEl: $nextEl,
30881      nextEl: $nextEl && $nextEl[0],
30882      $prevEl: $prevEl,
30883      prevEl: $prevEl && $prevEl[0]
30884    });
30885  },
30886  destroy: function destroy() {
30887    var swiper = this;
30888    var _swiper$navigation2 = swiper.navigation,
30889        $nextEl = _swiper$navigation2.$nextEl,
30890        $prevEl = _swiper$navigation2.$prevEl;
30891
30892    if ($nextEl && $nextEl.length) {
30893      $nextEl.off('click', swiper.navigation.onNextClick);
30894      $nextEl.removeClass(swiper.params.navigation.disabledClass);
30895    }
30896    if ($prevEl && $prevEl.length) {
30897      $prevEl.off('click', swiper.navigation.onPrevClick);
30898      $prevEl.removeClass(swiper.params.navigation.disabledClass);
30899    }
30900  }
30901};
30902
30903var Navigation$1 = {
30904  name: 'navigation',
30905  params: {
30906    navigation: {
30907      nextEl: null,
30908      prevEl: null,
30909
30910      hideOnClick: false,
30911      disabledClass: 'swiper-button-disabled',
30912      hiddenClass: 'swiper-button-hidden',
30913      lockClass: 'swiper-button-lock'
30914    }
30915  },
30916  create: function create() {
30917    var swiper = this;
30918    Utils.extend(swiper, {
30919      navigation: {
30920        init: Navigation.init.bind(swiper),
30921        update: Navigation.update.bind(swiper),
30922        destroy: Navigation.destroy.bind(swiper),
30923        onNextClick: Navigation.onNextClick.bind(swiper),
30924        onPrevClick: Navigation.onPrevClick.bind(swiper)
30925      }
30926    });
30927  },
30928
30929  on: {
30930    init: function init() {
30931      var swiper = this;
30932      swiper.navigation.init();
30933      swiper.navigation.update();
30934    },
30935    toEdge: function toEdge() {
30936      var swiper = this;
30937      swiper.navigation.update();
30938    },
30939    fromEdge: function fromEdge() {
30940      var swiper = this;
30941      swiper.navigation.update();
30942    },
30943    destroy: function destroy() {
30944      var swiper = this;
30945      swiper.navigation.destroy();
30946    },
30947    click: function click(e) {
30948      var swiper = this;
30949      var _swiper$navigation3 = swiper.navigation,
30950          $nextEl = _swiper$navigation3.$nextEl,
30951          $prevEl = _swiper$navigation3.$prevEl;
30952
30953      if (swiper.params.navigation.hideOnClick && !Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(e.target).is($prevEl) && !Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(e.target).is($nextEl)) {
30954        if ($nextEl) $nextEl.toggleClass(swiper.params.navigation.hiddenClass);
30955        if ($prevEl) $prevEl.toggleClass(swiper.params.navigation.hiddenClass);
30956      }
30957    }
30958  }
30959};
30960
30961var Pagination = {
30962  update: function update() {
30963    // Render || Update Pagination bullets/items
30964    var swiper = this;
30965    var rtl = swiper.rtl;
30966    var params = swiper.params.pagination;
30967    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;
30968    var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
30969    var $el = swiper.pagination.$el;
30970    // Current/Total
30971    var current = void 0;
30972    var total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
30973    if (swiper.params.loop) {
30974      current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);
30975      if (current > slidesLength - 1 - swiper.loopedSlides * 2) {
30976        current -= slidesLength - swiper.loopedSlides * 2;
30977      }
30978      if (current > total - 1) current -= total;
30979      if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;
30980    } else if (typeof swiper.snapIndex !== 'undefined') {
30981      current = swiper.snapIndex;
30982    } else {
30983      current = swiper.activeIndex || 0;
30984    }
30985    // Types
30986    if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {
30987      var bullets = swiper.pagination.bullets;
30988      var firstIndex = void 0;
30989      var lastIndex = void 0;
30990      var midIndex = void 0;
30991      if (params.dynamicBullets) {
30992        swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);
30993        $el.css(swiper.isHorizontal() ? 'width' : 'height', swiper.pagination.bulletSize * (params.dynamicMainBullets + 4) + 'px');
30994        if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {
30995          swiper.pagination.dynamicBulletIndex += current - swiper.previousIndex;
30996          if (swiper.pagination.dynamicBulletIndex > params.dynamicMainBullets - 1) {
30997            swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;
30998          } else if (swiper.pagination.dynamicBulletIndex < 0) {
30999            swiper.pagination.dynamicBulletIndex = 0;
31000          }
31001        }
31002        firstIndex = current - swiper.pagination.dynamicBulletIndex;
31003        lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);
31004        midIndex = (lastIndex + firstIndex) / 2;
31005      }
31006      bullets.removeClass(params.bulletActiveClass + ' ' + params.bulletActiveClass + '-next ' + params.bulletActiveClass + '-next-next ' + params.bulletActiveClass + '-prev ' + params.bulletActiveClass + '-prev-prev ' + params.bulletActiveClass + '-main');
31007      if ($el.length > 1) {
31008        bullets.each(function (index$$1, bullet) {
31009          var $bullet = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(bullet);
31010          var bulletIndex = $bullet.index();
31011          if (bulletIndex === current) {
31012            $bullet.addClass(params.bulletActiveClass);
31013          }
31014          if (params.dynamicBullets) {
31015            if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {
31016              $bullet.addClass(params.bulletActiveClass + '-main');
31017            }
31018            if (bulletIndex === firstIndex) {
31019              $bullet.prev().addClass(params.bulletActiveClass + '-prev').prev().addClass(params.bulletActiveClass + '-prev-prev');
31020            }
31021            if (bulletIndex === lastIndex) {
31022              $bullet.next().addClass(params.bulletActiveClass + '-next').next().addClass(params.bulletActiveClass + '-next-next');
31023            }
31024          }
31025        });
31026      } else {
31027        var $bullet = bullets.eq(current);
31028        $bullet.addClass(params.bulletActiveClass);
31029        if (params.dynamicBullets) {
31030          var $firstDisplayedBullet = bullets.eq(firstIndex);
31031          var $lastDisplayedBullet = bullets.eq(lastIndex);
31032          for (var i = firstIndex; i <= lastIndex; i += 1) {
31033            bullets.eq(i).addClass(params.bulletActiveClass + '-main');
31034          }
31035          $firstDisplayedBullet.prev().addClass(params.bulletActiveClass + '-prev').prev().addClass(params.bulletActiveClass + '-prev-prev');
31036          $lastDisplayedBullet.next().addClass(params.bulletActiveClass + '-next').next().addClass(params.bulletActiveClass + '-next-next');
31037        }
31038      }
31039      if (params.dynamicBullets) {
31040        var dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);
31041        var bulletsOffset = (swiper.pagination.bulletSize * dynamicBulletsLength - swiper.pagination.bulletSize) / 2 - midIndex * swiper.pagination.bulletSize;
31042        var offsetProp = rtl ? 'right' : 'left';
31043        bullets.css(swiper.isHorizontal() ? offsetProp : 'top', bulletsOffset + 'px');
31044      }
31045    }
31046    if (params.type === 'fraction') {
31047      $el.find('.' + params.currentClass).text(params.formatFractionCurrent(current + 1));
31048      $el.find('.' + params.totalClass).text(params.formatFractionTotal(total));
31049    }
31050    if (params.type === 'progressbar') {
31051      var progressbarDirection = void 0;
31052      if (params.progressbarOpposite) {
31053        progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';
31054      } else {
31055        progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';
31056      }
31057      var scale = (current + 1) / total;
31058      var scaleX = 1;
31059      var scaleY = 1;
31060      if (progressbarDirection === 'horizontal') {
31061        scaleX = scale;
31062      } else {
31063        scaleY = scale;
31064      }
31065      $el.find('.' + params.progressbarFillClass).transform('translate3d(0,0,0) scaleX(' + scaleX + ') scaleY(' + scaleY + ')').transition(swiper.params.speed);
31066    }
31067    if (params.type === 'custom' && params.renderCustom) {
31068      $el.html(params.renderCustom(swiper, current + 1, total));
31069      swiper.emit('paginationRender', swiper, $el[0]);
31070    } else {
31071      swiper.emit('paginationUpdate', swiper, $el[0]);
31072    }
31073    $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
31074  },
31075  render: function render() {
31076    // Render Container
31077    var swiper = this;
31078    var params = swiper.params.pagination;
31079    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;
31080    var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
31081
31082    var $el = swiper.pagination.$el;
31083    var paginationHTML = '';
31084    if (params.type === 'bullets') {
31085      var numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
31086      for (var i = 0; i < numberOfBullets; i += 1) {
31087        if (params.renderBullet) {
31088          paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);
31089        } else {
31090          paginationHTML += '<' + params.bulletElement + ' class="' + params.bulletClass + '"></' + params.bulletElement + '>';
31091        }
31092      }
31093      $el.html(paginationHTML);
31094      swiper.pagination.bullets = $el.find('.' + params.bulletClass);
31095    }
31096    if (params.type === 'fraction') {
31097      if (params.renderFraction) {
31098        paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);
31099      } else {
31100        paginationHTML = '<span class="' + params.currentClass + '"></span>' + ' / ' + ('<span class="' + params.totalClass + '"></span>');
31101      }
31102      $el.html(paginationHTML);
31103    }
31104    if (params.type === 'progressbar') {
31105      if (params.renderProgressbar) {
31106        paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);
31107      } else {
31108        paginationHTML = '<span class="' + params.progressbarFillClass + '"></span>';
31109      }
31110      $el.html(paginationHTML);
31111    }
31112    if (params.type !== 'custom') {
31113      swiper.emit('paginationRender', swiper.pagination.$el[0]);
31114    }
31115  },
31116  init: function init() {
31117    var swiper = this;
31118    var params = swiper.params.pagination;
31119    if (!params.el) return;
31120
31121    var $el = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(params.el);
31122    if ($el.length === 0) return;
31123
31124    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && swiper.$el.find(params.el).length === 1) {
31125      $el = swiper.$el.find(params.el);
31126    }
31127
31128    if (params.type === 'bullets' && params.clickable) {
31129      $el.addClass(params.clickableClass);
31130    }
31131
31132    $el.addClass(params.modifierClass + params.type);
31133
31134    if (params.type === 'bullets' && params.dynamicBullets) {
31135      $el.addClass('' + params.modifierClass + params.type + '-dynamic');
31136      swiper.pagination.dynamicBulletIndex = 0;
31137      if (params.dynamicMainBullets < 1) {
31138        params.dynamicMainBullets = 1;
31139      }
31140    }
31141    if (params.type === 'progressbar' && params.progressbarOpposite) {
31142      $el.addClass(params.progressbarOppositeClass);
31143    }
31144
31145    if (params.clickable) {
31146      $el.on('click', '.' + params.bulletClass, function onClick(e) {
31147        e.preventDefault();
31148        var index$$1 = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(this).index() * swiper.params.slidesPerGroup;
31149        if (swiper.params.loop) index$$1 += swiper.loopedSlides;
31150        swiper.slideTo(index$$1);
31151      });
31152    }
31153
31154    Utils.extend(swiper.pagination, {
31155      $el: $el,
31156      el: $el[0]
31157    });
31158  },
31159  destroy: function destroy() {
31160    var swiper = this;
31161    var params = swiper.params.pagination;
31162    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;
31163    var $el = swiper.pagination.$el;
31164
31165    $el.removeClass(params.hiddenClass);
31166    $el.removeClass(params.modifierClass + params.type);
31167    if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);
31168    if (params.clickable) {
31169      $el.off('click', '.' + params.bulletClass);
31170    }
31171  }
31172};
31173
31174var Pagination$1 = {
31175  name: 'pagination',
31176  params: {
31177    pagination: {
31178      el: null,
31179      bulletElement: 'span',
31180      clickable: false,
31181      hideOnClick: false,
31182      renderBullet: null,
31183      renderProgressbar: null,
31184      renderFraction: null,
31185      renderCustom: null,
31186      progressbarOpposite: false,
31187      type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'
31188      dynamicBullets: false,
31189      dynamicMainBullets: 1,
31190      formatFractionCurrent: function formatFractionCurrent(number) {
31191        return number;
31192      },
31193      formatFractionTotal: function formatFractionTotal(number) {
31194        return number;
31195      },
31196      bulletClass: 'swiper-pagination-bullet',
31197      bulletActiveClass: 'swiper-pagination-bullet-active',
31198      modifierClass: 'swiper-pagination-', // NEW
31199      currentClass: 'swiper-pagination-current',
31200      totalClass: 'swiper-pagination-total',
31201      hiddenClass: 'swiper-pagination-hidden',
31202      progressbarFillClass: 'swiper-pagination-progressbar-fill',
31203      progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',
31204      clickableClass: 'swiper-pagination-clickable', // NEW
31205      lockClass: 'swiper-pagination-lock'
31206    }
31207  },
31208  create: function create() {
31209    var swiper = this;
31210    Utils.extend(swiper, {
31211      pagination: {
31212        init: Pagination.init.bind(swiper),
31213        render: Pagination.render.bind(swiper),
31214        update: Pagination.update.bind(swiper),
31215        destroy: Pagination.destroy.bind(swiper),
31216        dynamicBulletIndex: 0
31217      }
31218    });
31219  },
31220
31221  on: {
31222    init: function init() {
31223      var swiper = this;
31224      swiper.pagination.init();
31225      swiper.pagination.render();
31226      swiper.pagination.update();
31227    },
31228    activeIndexChange: function activeIndexChange() {
31229      var swiper = this;
31230      if (swiper.params.loop) {
31231        swiper.pagination.update();
31232      } else if (typeof swiper.snapIndex === 'undefined') {
31233        swiper.pagination.update();
31234      }
31235    },
31236    snapIndexChange: function snapIndexChange() {
31237      var swiper = this;
31238      if (!swiper.params.loop) {
31239        swiper.pagination.update();
31240      }
31241    },
31242    slidesLengthChange: function slidesLengthChange() {
31243      var swiper = this;
31244      if (swiper.params.loop) {
31245        swiper.pagination.render();
31246        swiper.pagination.update();
31247      }
31248    },
31249    snapGridLengthChange: function snapGridLengthChange() {
31250      var swiper = this;
31251      if (!swiper.params.loop) {
31252        swiper.pagination.render();
31253        swiper.pagination.update();
31254      }
31255    },
31256    destroy: function destroy() {
31257      var swiper = this;
31258      swiper.pagination.destroy();
31259    },
31260    click: function click(e) {
31261      var swiper = this;
31262      if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && swiper.pagination.$el.length > 0 && !Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(e.target).hasClass(swiper.params.pagination.bulletClass)) {
31263        swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);
31264      }
31265    }
31266  }
31267};
31268
31269var Scrollbar = {
31270  setTranslate: function setTranslate() {
31271    var swiper = this;
31272    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
31273    var scrollbar = swiper.scrollbar,
31274        rtl = swiper.rtlTranslate,
31275        progress = swiper.progress;
31276    var dragSize = scrollbar.dragSize,
31277        trackSize = scrollbar.trackSize,
31278        $dragEl = scrollbar.$dragEl,
31279        $el = scrollbar.$el;
31280
31281    var params = swiper.params.scrollbar;
31282
31283    var newSize = dragSize;
31284    var newPos = (trackSize - dragSize) * progress;
31285    if (rtl) {
31286      newPos = -newPos;
31287      if (newPos > 0) {
31288        newSize = dragSize - newPos;
31289        newPos = 0;
31290      } else if (-newPos + dragSize > trackSize) {
31291        newSize = trackSize + newPos;
31292      }
31293    } else if (newPos < 0) {
31294      newSize = dragSize + newPos;
31295      newPos = 0;
31296    } else if (newPos + dragSize > trackSize) {
31297      newSize = trackSize - newPos;
31298    }
31299    if (swiper.isHorizontal()) {
31300      if (Support.transforms3d) {
31301        $dragEl.transform('translate3d(' + newPos + 'px, 0, 0)');
31302      } else {
31303        $dragEl.transform('translateX(' + newPos + 'px)');
31304      }
31305      $dragEl[0].style.width = newSize + 'px';
31306    } else {
31307      if (Support.transforms3d) {
31308        $dragEl.transform('translate3d(0px, ' + newPos + 'px, 0)');
31309      } else {
31310        $dragEl.transform('translateY(' + newPos + 'px)');
31311      }
31312      $dragEl[0].style.height = newSize + 'px';
31313    }
31314    if (params.hide) {
31315      clearTimeout(swiper.scrollbar.timeout);
31316      $el[0].style.opacity = 1;
31317      swiper.scrollbar.timeout = setTimeout(function () {
31318        $el[0].style.opacity = 0;
31319        $el.transition(400);
31320      }, 1000);
31321    }
31322  },
31323  setTransition: function setTransition(duration) {
31324    var swiper = this;
31325    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
31326    swiper.scrollbar.$dragEl.transition(duration);
31327  },
31328  updateSize: function updateSize() {
31329    var swiper = this;
31330    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
31331
31332    var scrollbar = swiper.scrollbar;
31333    var $dragEl = scrollbar.$dragEl,
31334        $el = scrollbar.$el;
31335
31336
31337    $dragEl[0].style.width = '';
31338    $dragEl[0].style.height = '';
31339    var trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;
31340
31341    var divider = swiper.size / swiper.virtualSize;
31342    var moveDivider = divider * (trackSize / swiper.size);
31343    var dragSize = void 0;
31344    if (swiper.params.scrollbar.dragSize === 'auto') {
31345      dragSize = trackSize * divider;
31346    } else {
31347      dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);
31348    }
31349
31350    if (swiper.isHorizontal()) {
31351      $dragEl[0].style.width = dragSize + 'px';
31352    } else {
31353      $dragEl[0].style.height = dragSize + 'px';
31354    }
31355
31356    if (divider >= 1) {
31357      $el[0].style.display = 'none';
31358    } else {
31359      $el[0].style.display = '';
31360    }
31361    if (swiper.params.scrollbarHide) {
31362      $el[0].style.opacity = 0;
31363    }
31364    Utils.extend(scrollbar, {
31365      trackSize: trackSize,
31366      divider: divider,
31367      moveDivider: moveDivider,
31368      dragSize: dragSize
31369    });
31370    scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);
31371  },
31372  setDragPosition: function setDragPosition(e) {
31373    var swiper = this;
31374    var scrollbar = swiper.scrollbar,
31375        rtl = swiper.rtlTranslate;
31376    var $el = scrollbar.$el,
31377        dragSize = scrollbar.dragSize,
31378        trackSize = scrollbar.trackSize;
31379
31380
31381    var pointerPosition = void 0;
31382    if (swiper.isHorizontal()) {
31383      pointerPosition = e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX || e.clientX;
31384    } else {
31385      pointerPosition = e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY || e.clientY;
31386    }
31387    var positionRatio = void 0;
31388    positionRatio = (pointerPosition - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - dragSize / 2) / (trackSize - dragSize);
31389    positionRatio = Math.max(Math.min(positionRatio, 1), 0);
31390    if (rtl) {
31391      positionRatio = 1 - positionRatio;
31392    }
31393
31394    var position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;
31395
31396    swiper.updateProgress(position);
31397    swiper.setTranslate(position);
31398    swiper.updateActiveIndex();
31399    swiper.updateSlidesClasses();
31400  },
31401  onDragStart: function onDragStart(e) {
31402    var swiper = this;
31403    var params = swiper.params.scrollbar;
31404    var scrollbar = swiper.scrollbar,
31405        $wrapperEl = swiper.$wrapperEl;
31406    var $el = scrollbar.$el,
31407        $dragEl = scrollbar.$dragEl;
31408
31409    swiper.scrollbar.isTouched = true;
31410    e.preventDefault();
31411    e.stopPropagation();
31412
31413    $wrapperEl.transition(100);
31414    $dragEl.transition(100);
31415    scrollbar.setDragPosition(e);
31416
31417    clearTimeout(swiper.scrollbar.dragTimeout);
31418
31419    $el.transition(0);
31420    if (params.hide) {
31421      $el.css('opacity', 1);
31422    }
31423    swiper.emit('scrollbarDragStart', e);
31424  },
31425  onDragMove: function onDragMove(e) {
31426    var swiper = this;
31427    var scrollbar = swiper.scrollbar,
31428        $wrapperEl = swiper.$wrapperEl;
31429    var $el = scrollbar.$el,
31430        $dragEl = scrollbar.$dragEl;
31431
31432
31433    if (!swiper.scrollbar.isTouched) return;
31434    if (e.preventDefault) e.preventDefault();else e.returnValue = false;
31435    scrollbar.setDragPosition(e);
31436    $wrapperEl.transition(0);
31437    $el.transition(0);
31438    $dragEl.transition(0);
31439    swiper.emit('scrollbarDragMove', e);
31440  },
31441  onDragEnd: function onDragEnd(e) {
31442    var swiper = this;
31443
31444    var params = swiper.params.scrollbar;
31445    var scrollbar = swiper.scrollbar;
31446    var $el = scrollbar.$el;
31447
31448
31449    if (!swiper.scrollbar.isTouched) return;
31450    swiper.scrollbar.isTouched = false;
31451    if (params.hide) {
31452      clearTimeout(swiper.scrollbar.dragTimeout);
31453      swiper.scrollbar.dragTimeout = Utils.nextTick(function () {
31454        $el.css('opacity', 0);
31455        $el.transition(400);
31456      }, 1000);
31457    }
31458    swiper.emit('scrollbarDragEnd', e);
31459    if (params.snapOnRelease) {
31460      swiper.slideToClosest();
31461    }
31462  },
31463  enableDraggable: function enableDraggable() {
31464    var swiper = this;
31465    if (!swiper.params.scrollbar.el) return;
31466    var scrollbar = swiper.scrollbar,
31467        touchEventsTouch = swiper.touchEventsTouch,
31468        touchEventsDesktop = swiper.touchEventsDesktop,
31469        params = swiper.params;
31470
31471    var $el = scrollbar.$el;
31472    var target = $el[0];
31473    var activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;
31474    var passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
31475    if (!Support.touch) {
31476      target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);
31477      ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);
31478      ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);
31479    } else {
31480      target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);
31481      target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);
31482      target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);
31483    }
31484  },
31485  disableDraggable: function disableDraggable() {
31486    var swiper = this;
31487    if (!swiper.params.scrollbar.el) return;
31488    var scrollbar = swiper.scrollbar,
31489        touchEventsTouch = swiper.touchEventsTouch,
31490        touchEventsDesktop = swiper.touchEventsDesktop,
31491        params = swiper.params;
31492
31493    var $el = scrollbar.$el;
31494    var target = $el[0];
31495    var activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;
31496    var passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
31497    if (!Support.touch) {
31498      target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);
31499      ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);
31500      ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);
31501    } else {
31502      target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);
31503      target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);
31504      target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);
31505    }
31506  },
31507  init: function init() {
31508    var swiper = this;
31509    if (!swiper.params.scrollbar.el) return;
31510    var scrollbar = swiper.scrollbar,
31511        $swiperEl = swiper.$el;
31512
31513    var params = swiper.params.scrollbar;
31514
31515    var $el = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(params.el);
31516    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {
31517      $el = $swiperEl.find(params.el);
31518    }
31519
31520    var $dragEl = $el.find('.' + swiper.params.scrollbar.dragClass);
31521    if ($dragEl.length === 0) {
31522      $dragEl = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])('<div class="' + swiper.params.scrollbar.dragClass + '"></div>');
31523      $el.append($dragEl);
31524    }
31525
31526    Utils.extend(scrollbar, {
31527      $el: $el,
31528      el: $el[0],
31529      $dragEl: $dragEl,
31530      dragEl: $dragEl[0]
31531    });
31532
31533    if (params.draggable) {
31534      scrollbar.enableDraggable();
31535    }
31536  },
31537  destroy: function destroy() {
31538    var swiper = this;
31539    swiper.scrollbar.disableDraggable();
31540  }
31541};
31542
31543var Scrollbar$1 = {
31544  name: 'scrollbar',
31545  params: {
31546    scrollbar: {
31547      el: null,
31548      dragSize: 'auto',
31549      hide: false,
31550      draggable: false,
31551      snapOnRelease: true,
31552      lockClass: 'swiper-scrollbar-lock',
31553      dragClass: 'swiper-scrollbar-drag'
31554    }
31555  },
31556  create: function create() {
31557    var swiper = this;
31558    Utils.extend(swiper, {
31559      scrollbar: {
31560        init: Scrollbar.init.bind(swiper),
31561        destroy: Scrollbar.destroy.bind(swiper),
31562        updateSize: Scrollbar.updateSize.bind(swiper),
31563        setTranslate: Scrollbar.setTranslate.bind(swiper),
31564        setTransition: Scrollbar.setTransition.bind(swiper),
31565        enableDraggable: Scrollbar.enableDraggable.bind(swiper),
31566        disableDraggable: Scrollbar.disableDraggable.bind(swiper),
31567        setDragPosition: Scrollbar.setDragPosition.bind(swiper),
31568        onDragStart: Scrollbar.onDragStart.bind(swiper),
31569        onDragMove: Scrollbar.onDragMove.bind(swiper),
31570        onDragEnd: Scrollbar.onDragEnd.bind(swiper),
31571        isTouched: false,
31572        timeout: null,
31573        dragTimeout: null
31574      }
31575    });
31576  },
31577
31578  on: {
31579    init: function init() {
31580      var swiper = this;
31581      swiper.scrollbar.init();
31582      swiper.scrollbar.updateSize();
31583      swiper.scrollbar.setTranslate();
31584    },
31585    update: function update() {
31586      var swiper = this;
31587      swiper.scrollbar.updateSize();
31588    },
31589    resize: function resize() {
31590      var swiper = this;
31591      swiper.scrollbar.updateSize();
31592    },
31593    observerUpdate: function observerUpdate() {
31594      var swiper = this;
31595      swiper.scrollbar.updateSize();
31596    },
31597    setTranslate: function setTranslate() {
31598      var swiper = this;
31599      swiper.scrollbar.setTranslate();
31600    },
31601    setTransition: function setTransition(duration) {
31602      var swiper = this;
31603      swiper.scrollbar.setTransition(duration);
31604    },
31605    destroy: function destroy() {
31606      var swiper = this;
31607      swiper.scrollbar.destroy();
31608    }
31609  }
31610};
31611
31612var Parallax = {
31613  setTransform: function setTransform(el, progress) {
31614    var swiper = this;
31615    var rtl = swiper.rtl;
31616
31617
31618    var $el = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(el);
31619    var rtlFactor = rtl ? -1 : 1;
31620
31621    var p = $el.attr('data-swiper-parallax') || '0';
31622    var x = $el.attr('data-swiper-parallax-x');
31623    var y = $el.attr('data-swiper-parallax-y');
31624    var scale = $el.attr('data-swiper-parallax-scale');
31625    var opacity = $el.attr('data-swiper-parallax-opacity');
31626
31627    if (x || y) {
31628      x = x || '0';
31629      y = y || '0';
31630    } else if (swiper.isHorizontal()) {
31631      x = p;
31632      y = '0';
31633    } else {
31634      y = p;
31635      x = '0';
31636    }
31637
31638    if (x.indexOf('%') >= 0) {
31639      x = parseInt(x, 10) * progress * rtlFactor + '%';
31640    } else {
31641      x = x * progress * rtlFactor + 'px';
31642    }
31643    if (y.indexOf('%') >= 0) {
31644      y = parseInt(y, 10) * progress + '%';
31645    } else {
31646      y = y * progress + 'px';
31647    }
31648
31649    if (typeof opacity !== 'undefined' && opacity !== null) {
31650      var currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));
31651      $el[0].style.opacity = currentOpacity;
31652    }
31653    if (typeof scale === 'undefined' || scale === null) {
31654      $el.transform('translate3d(' + x + ', ' + y + ', 0px)');
31655    } else {
31656      var currentScale = scale - (scale - 1) * (1 - Math.abs(progress));
31657      $el.transform('translate3d(' + x + ', ' + y + ', 0px) scale(' + currentScale + ')');
31658    }
31659  },
31660  setTranslate: function setTranslate() {
31661    var swiper = this;
31662    var $el = swiper.$el,
31663        slides = swiper.slides,
31664        progress = swiper.progress,
31665        snapGrid = swiper.snapGrid;
31666
31667    $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]').each(function (index$$1, el) {
31668      swiper.parallax.setTransform(el, progress);
31669    });
31670    slides.each(function (slideIndex, slideEl) {
31671      var slideProgress = slideEl.progress;
31672      if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {
31673        slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);
31674      }
31675      slideProgress = Math.min(Math.max(slideProgress, -1), 1);
31676      Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]').each(function (index$$1, el) {
31677        swiper.parallax.setTransform(el, slideProgress);
31678      });
31679    });
31680  },
31681  setTransition: function setTransition() {
31682    var duration = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.params.speed;
31683
31684    var swiper = this;
31685    var $el = swiper.$el;
31686
31687    $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]').each(function (index$$1, parallaxEl) {
31688      var $parallaxEl = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(parallaxEl);
31689      var parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;
31690      if (duration === 0) parallaxDuration = 0;
31691      $parallaxEl.transition(parallaxDuration);
31692    });
31693  }
31694};
31695
31696var Parallax$1 = {
31697  name: 'parallax',
31698  params: {
31699    parallax: {
31700      enabled: false
31701    }
31702  },
31703  create: function create() {
31704    var swiper = this;
31705    Utils.extend(swiper, {
31706      parallax: {
31707        setTransform: Parallax.setTransform.bind(swiper),
31708        setTranslate: Parallax.setTranslate.bind(swiper),
31709        setTransition: Parallax.setTransition.bind(swiper)
31710      }
31711    });
31712  },
31713
31714  on: {
31715    beforeInit: function beforeInit() {
31716      var swiper = this;
31717      if (!swiper.params.parallax.enabled) return;
31718      swiper.params.watchSlidesProgress = true;
31719      swiper.originalParams.watchSlidesProgress = true;
31720    },
31721    init: function init() {
31722      var swiper = this;
31723      if (!swiper.params.parallax) return;
31724      swiper.parallax.setTranslate();
31725    },
31726    setTranslate: function setTranslate() {
31727      var swiper = this;
31728      if (!swiper.params.parallax) return;
31729      swiper.parallax.setTranslate();
31730    },
31731    setTransition: function setTransition(duration) {
31732      var swiper = this;
31733      if (!swiper.params.parallax) return;
31734      swiper.parallax.setTransition(duration);
31735    }
31736  }
31737};
31738
31739var Zoom = {
31740  // Calc Scale From Multi-touches
31741  getDistanceBetweenTouches: function getDistanceBetweenTouches(e) {
31742    if (e.targetTouches.length < 2) return 1;
31743    var x1 = e.targetTouches[0].pageX;
31744    var y1 = e.targetTouches[0].pageY;
31745    var x2 = e.targetTouches[1].pageX;
31746    var y2 = e.targetTouches[1].pageY;
31747    var distance = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));
31748    return distance;
31749  },
31750
31751  // Events
31752  onGestureStart: function onGestureStart(e) {
31753    var swiper = this;
31754    var params = swiper.params.zoom;
31755    var zoom = swiper.zoom;
31756    var gesture = zoom.gesture;
31757
31758    zoom.fakeGestureTouched = false;
31759    zoom.fakeGestureMoved = false;
31760    if (!Support.gestures) {
31761      if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) {
31762        return;
31763      }
31764      zoom.fakeGestureTouched = true;
31765      gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);
31766    }
31767    if (!gesture.$slideEl || !gesture.$slideEl.length) {
31768      gesture.$slideEl = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(e.target).closest('.swiper-slide');
31769      if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
31770      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');
31771      gesture.$imageWrapEl = gesture.$imageEl.parent('.' + params.containerClass);
31772      gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
31773      if (gesture.$imageWrapEl.length === 0) {
31774        gesture.$imageEl = undefined;
31775        return;
31776      }
31777    }
31778    gesture.$imageEl.transition(0);
31779    swiper.zoom.isScaling = true;
31780  },
31781  onGestureChange: function onGestureChange(e) {
31782    var swiper = this;
31783    var params = swiper.params.zoom;
31784    var zoom = swiper.zoom;
31785    var gesture = zoom.gesture;
31786
31787    if (!Support.gestures) {
31788      if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) {
31789        return;
31790      }
31791      zoom.fakeGestureMoved = true;
31792      gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);
31793    }
31794    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
31795    if (Support.gestures) {
31796      zoom.scale = e.scale * zoom.currentScale;
31797    } else {
31798      zoom.scale = gesture.scaleMove / gesture.scaleStart * zoom.currentScale;
31799    }
31800    if (zoom.scale > gesture.maxRatio) {
31801      zoom.scale = gesture.maxRatio - 1 + Math.pow(zoom.scale - gesture.maxRatio + 1, 0.5);
31802    }
31803    if (zoom.scale < params.minRatio) {
31804      zoom.scale = params.minRatio + 1 - Math.pow(params.minRatio - zoom.scale + 1, 0.5);
31805    }
31806    gesture.$imageEl.transform('translate3d(0,0,0) scale(' + zoom.scale + ')');
31807  },
31808  onGestureEnd: function onGestureEnd(e) {
31809    var swiper = this;
31810    var params = swiper.params.zoom;
31811    var zoom = swiper.zoom;
31812    var gesture = zoom.gesture;
31813
31814    if (!Support.gestures) {
31815      if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {
31816        return;
31817      }
31818      if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android) {
31819        return;
31820      }
31821      zoom.fakeGestureTouched = false;
31822      zoom.fakeGestureMoved = false;
31823    }
31824    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
31825    zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);
31826    gesture.$imageEl.transition(swiper.params.speed).transform('translate3d(0,0,0) scale(' + zoom.scale + ')');
31827    zoom.currentScale = zoom.scale;
31828    zoom.isScaling = false;
31829    if (zoom.scale === 1) gesture.$slideEl = undefined;
31830  },
31831  onTouchStart: function onTouchStart(e) {
31832    var swiper = this;
31833    var zoom = swiper.zoom;
31834    var gesture = zoom.gesture,
31835        image = zoom.image;
31836
31837    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
31838    if (image.isTouched) return;
31839    if (Device.android) e.preventDefault();
31840    image.isTouched = true;
31841    image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
31842    image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
31843  },
31844  onTouchMove: function onTouchMove(e) {
31845    var swiper = this;
31846    var zoom = swiper.zoom;
31847    var gesture = zoom.gesture,
31848        image = zoom.image,
31849        velocity = zoom.velocity;
31850
31851    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
31852    swiper.allowClick = false;
31853    if (!image.isTouched || !gesture.$slideEl) return;
31854
31855    if (!image.isMoved) {
31856      image.width = gesture.$imageEl[0].offsetWidth;
31857      image.height = gesture.$imageEl[0].offsetHeight;
31858      image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0;
31859      image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0;
31860      gesture.slideWidth = gesture.$slideEl[0].offsetWidth;
31861      gesture.slideHeight = gesture.$slideEl[0].offsetHeight;
31862      gesture.$imageWrapEl.transition(0);
31863      if (swiper.rtl) {
31864        image.startX = -image.startX;
31865        image.startY = -image.startY;
31866      }
31867    }
31868    // Define if we need image drag
31869    var scaledWidth = image.width * zoom.scale;
31870    var scaledHeight = image.height * zoom.scale;
31871
31872    if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;
31873
31874    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);
31875    image.maxX = -image.minX;
31876    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);
31877    image.maxY = -image.minY;
31878
31879    image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
31880    image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
31881
31882    if (!image.isMoved && !zoom.isScaling) {
31883      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)) {
31884        image.isTouched = false;
31885        return;
31886      }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)) {
31887        image.isTouched = false;
31888        return;
31889      }
31890    }
31891    e.preventDefault();
31892    e.stopPropagation();
31893
31894    image.isMoved = true;
31895    image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;
31896    image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;
31897
31898    if (image.currentX < image.minX) {
31899      image.currentX = image.minX + 1 - Math.pow(image.minX - image.currentX + 1, 0.8);
31900    }
31901    if (image.currentX > image.maxX) {
31902      image.currentX = image.maxX - 1 + Math.pow(image.currentX - image.maxX + 1, 0.8);
31903    }
31904
31905    if (image.currentY < image.minY) {
31906      image.currentY = image.minY + 1 - Math.pow(image.minY - image.currentY + 1, 0.8);
31907    }
31908    if (image.currentY > image.maxY) {
31909      image.currentY = image.maxY - 1 + Math.pow(image.currentY - image.maxY + 1, 0.8);
31910    }
31911
31912    // Velocity
31913    if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;
31914    if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;
31915    if (!velocity.prevTime) velocity.prevTime = Date.now();
31916    velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;
31917    velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;
31918    if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;
31919    if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;
31920    velocity.prevPositionX = image.touchesCurrent.x;
31921    velocity.prevPositionY = image.touchesCurrent.y;
31922    velocity.prevTime = Date.now();
31923
31924    gesture.$imageWrapEl.transform('translate3d(' + image.currentX + 'px, ' + image.currentY + 'px,0)');
31925  },
31926  onTouchEnd: function onTouchEnd() {
31927    var swiper = this;
31928    var zoom = swiper.zoom;
31929    var gesture = zoom.gesture,
31930        image = zoom.image,
31931        velocity = zoom.velocity;
31932
31933    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
31934    if (!image.isTouched || !image.isMoved) {
31935      image.isTouched = false;
31936      image.isMoved = false;
31937      return;
31938    }
31939    image.isTouched = false;
31940    image.isMoved = false;
31941    var momentumDurationX = 300;
31942    var momentumDurationY = 300;
31943    var momentumDistanceX = velocity.x * momentumDurationX;
31944    var newPositionX = image.currentX + momentumDistanceX;
31945    var momentumDistanceY = velocity.y * momentumDurationY;
31946    var newPositionY = image.currentY + momentumDistanceY;
31947
31948    // Fix duration
31949    if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);
31950    if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);
31951    var momentumDuration = Math.max(momentumDurationX, momentumDurationY);
31952
31953    image.currentX = newPositionX;
31954    image.currentY = newPositionY;
31955
31956    // Define if we need image drag
31957    var scaledWidth = image.width * zoom.scale;
31958    var scaledHeight = image.height * zoom.scale;
31959    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);
31960    image.maxX = -image.minX;
31961    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);
31962    image.maxY = -image.minY;
31963    image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);
31964    image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);
31965
31966    gesture.$imageWrapEl.transition(momentumDuration).transform('translate3d(' + image.currentX + 'px, ' + image.currentY + 'px,0)');
31967  },
31968  onTransitionEnd: function onTransitionEnd() {
31969    var swiper = this;
31970    var zoom = swiper.zoom;
31971    var gesture = zoom.gesture;
31972
31973    if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {
31974      gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');
31975      gesture.$imageWrapEl.transform('translate3d(0,0,0)');
31976
31977      zoom.scale = 1;
31978      zoom.currentScale = 1;
31979
31980      gesture.$slideEl = undefined;
31981      gesture.$imageEl = undefined;
31982      gesture.$imageWrapEl = undefined;
31983    }
31984  },
31985
31986  // Toggle Zoom
31987  toggle: function toggle(e) {
31988    var swiper = this;
31989    var zoom = swiper.zoom;
31990
31991    if (zoom.scale && zoom.scale !== 1) {
31992      // Zoom Out
31993      zoom.out();
31994    } else {
31995      // Zoom In
31996      zoom.in(e);
31997    }
31998  },
31999  in: function _in(e) {
32000    var swiper = this;
32001
32002    var zoom = swiper.zoom;
32003    var params = swiper.params.zoom;
32004    var gesture = zoom.gesture,
32005        image = zoom.image;
32006
32007
32008    if (!gesture.$slideEl) {
32009      gesture.$slideEl = swiper.clickedSlide ? Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(swiper.clickedSlide) : swiper.slides.eq(swiper.activeIndex);
32010      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');
32011      gesture.$imageWrapEl = gesture.$imageEl.parent('.' + params.containerClass);
32012    }
32013    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
32014
32015    gesture.$slideEl.addClass('' + params.zoomedSlideClass);
32016
32017    var touchX = void 0;
32018    var touchY = void 0;
32019    var offsetX = void 0;
32020    var offsetY = void 0;
32021    var diffX = void 0;
32022    var diffY = void 0;
32023    var translateX = void 0;
32024    var translateY = void 0;
32025    var imageWidth = void 0;
32026    var imageHeight = void 0;
32027    var scaledWidth = void 0;
32028    var scaledHeight = void 0;
32029    var translateMinX = void 0;
32030    var translateMinY = void 0;
32031    var translateMaxX = void 0;
32032    var translateMaxY = void 0;
32033    var slideWidth = void 0;
32034    var slideHeight = void 0;
32035
32036    if (typeof image.touchesStart.x === 'undefined' && e) {
32037      touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;
32038      touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;
32039    } else {
32040      touchX = image.touchesStart.x;
32041      touchY = image.touchesStart.y;
32042    }
32043
32044    zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
32045    zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
32046    if (e) {
32047      slideWidth = gesture.$slideEl[0].offsetWidth;
32048      slideHeight = gesture.$slideEl[0].offsetHeight;
32049      offsetX = gesture.$slideEl.offset().left;
32050      offsetY = gesture.$slideEl.offset().top;
32051      diffX = offsetX + slideWidth / 2 - touchX;
32052      diffY = offsetY + slideHeight / 2 - touchY;
32053
32054      imageWidth = gesture.$imageEl[0].offsetWidth;
32055      imageHeight = gesture.$imageEl[0].offsetHeight;
32056      scaledWidth = imageWidth * zoom.scale;
32057      scaledHeight = imageHeight * zoom.scale;
32058
32059      translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);
32060      translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);
32061      translateMaxX = -translateMinX;
32062      translateMaxY = -translateMinY;
32063
32064      translateX = diffX * zoom.scale;
32065      translateY = diffY * zoom.scale;
32066
32067      if (translateX < translateMinX) {
32068        translateX = translateMinX;
32069      }
32070      if (translateX > translateMaxX) {
32071        translateX = translateMaxX;
32072      }
32073
32074      if (translateY < translateMinY) {
32075        translateY = translateMinY;
32076      }
32077      if (translateY > translateMaxY) {
32078        translateY = translateMaxY;
32079      }
32080    } else {
32081      translateX = 0;
32082      translateY = 0;
32083    }
32084    gesture.$imageWrapEl.transition(300).transform('translate3d(' + translateX + 'px, ' + translateY + 'px,0)');
32085    gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(' + zoom.scale + ')');
32086  },
32087  out: function out() {
32088    var swiper = this;
32089
32090    var zoom = swiper.zoom;
32091    var params = swiper.params.zoom;
32092    var gesture = zoom.gesture;
32093
32094
32095    if (!gesture.$slideEl) {
32096      gesture.$slideEl = swiper.clickedSlide ? Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(swiper.clickedSlide) : swiper.slides.eq(swiper.activeIndex);
32097      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');
32098      gesture.$imageWrapEl = gesture.$imageEl.parent('.' + params.containerClass);
32099    }
32100    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
32101
32102    zoom.scale = 1;
32103    zoom.currentScale = 1;
32104    gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');
32105    gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');
32106    gesture.$slideEl.removeClass('' + params.zoomedSlideClass);
32107    gesture.$slideEl = undefined;
32108  },
32109
32110  // Attach/Detach Events
32111  enable: function enable() {
32112    var swiper = this;
32113    var zoom = swiper.zoom;
32114    if (zoom.enabled) return;
32115    zoom.enabled = true;
32116
32117    var passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;
32118
32119    // Scale image
32120    if (Support.gestures) {
32121      swiper.$wrapperEl.on('gesturestart', '.swiper-slide', zoom.onGestureStart, passiveListener);
32122      swiper.$wrapperEl.on('gesturechange', '.swiper-slide', zoom.onGestureChange, passiveListener);
32123      swiper.$wrapperEl.on('gestureend', '.swiper-slide', zoom.onGestureEnd, passiveListener);
32124    } else if (swiper.touchEvents.start === 'touchstart') {
32125      swiper.$wrapperEl.on(swiper.touchEvents.start, '.swiper-slide', zoom.onGestureStart, passiveListener);
32126      swiper.$wrapperEl.on(swiper.touchEvents.move, '.swiper-slide', zoom.onGestureChange, passiveListener);
32127      swiper.$wrapperEl.on(swiper.touchEvents.end, '.swiper-slide', zoom.onGestureEnd, passiveListener);
32128    }
32129
32130    // Move image
32131    swiper.$wrapperEl.on(swiper.touchEvents.move, '.' + swiper.params.zoom.containerClass, zoom.onTouchMove);
32132  },
32133  disable: function disable() {
32134    var swiper = this;
32135    var zoom = swiper.zoom;
32136    if (!zoom.enabled) return;
32137
32138    swiper.zoom.enabled = false;
32139
32140    var passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;
32141
32142    // Scale image
32143    if (Support.gestures) {
32144      swiper.$wrapperEl.off('gesturestart', '.swiper-slide', zoom.onGestureStart, passiveListener);
32145      swiper.$wrapperEl.off('gesturechange', '.swiper-slide', zoom.onGestureChange, passiveListener);
32146      swiper.$wrapperEl.off('gestureend', '.swiper-slide', zoom.onGestureEnd, passiveListener);
32147    } else if (swiper.touchEvents.start === 'touchstart') {
32148      swiper.$wrapperEl.off(swiper.touchEvents.start, '.swiper-slide', zoom.onGestureStart, passiveListener);
32149      swiper.$wrapperEl.off(swiper.touchEvents.move, '.swiper-slide', zoom.onGestureChange, passiveListener);
32150      swiper.$wrapperEl.off(swiper.touchEvents.end, '.swiper-slide', zoom.onGestureEnd, passiveListener);
32151    }
32152
32153    // Move image
32154    swiper.$wrapperEl.off(swiper.touchEvents.move, '.' + swiper.params.zoom.containerClass, zoom.onTouchMove);
32155  }
32156};
32157
32158var Zoom$1 = {
32159  name: 'zoom',
32160  params: {
32161    zoom: {
32162      enabled: false,
32163      maxRatio: 3,
32164      minRatio: 1,
32165      toggle: true,
32166      containerClass: 'swiper-zoom-container',
32167      zoomedSlideClass: 'swiper-slide-zoomed'
32168    }
32169  },
32170  create: function create() {
32171    var swiper = this;
32172    var zoom = {
32173      enabled: false,
32174      scale: 1,
32175      currentScale: 1,
32176      isScaling: false,
32177      gesture: {
32178        $slideEl: undefined,
32179        slideWidth: undefined,
32180        slideHeight: undefined,
32181        $imageEl: undefined,
32182        $imageWrapEl: undefined,
32183        maxRatio: 3
32184      },
32185      image: {
32186        isTouched: undefined,
32187        isMoved: undefined,
32188        currentX: undefined,
32189        currentY: undefined,
32190        minX: undefined,
32191        minY: undefined,
32192        maxX: undefined,
32193        maxY: undefined,
32194        width: undefined,
32195        height: undefined,
32196        startX: undefined,
32197        startY: undefined,
32198        touchesStart: {},
32199        touchesCurrent: {}
32200      },
32201      velocity: {
32202        x: undefined,
32203        y: undefined,
32204        prevPositionX: undefined,
32205        prevPositionY: undefined,
32206        prevTime: undefined
32207      }
32208    };
32209
32210    'onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out'.split(' ').forEach(function (methodName) {
32211      zoom[methodName] = Zoom[methodName].bind(swiper);
32212    });
32213    Utils.extend(swiper, {
32214      zoom: zoom
32215    });
32216
32217    var scale = 1;
32218    Object.defineProperty(swiper.zoom, 'scale', {
32219      get: function get() {
32220        return scale;
32221      },
32222      set: function set(value) {
32223        if (scale !== value) {
32224          var imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;
32225          var slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined;
32226          swiper.emit('zoomChange', value, imageEl, slideEl);
32227        }
32228        scale = value;
32229      }
32230    });
32231  },
32232
32233  on: {
32234    init: function init() {
32235      var swiper = this;
32236      if (swiper.params.zoom.enabled) {
32237        swiper.zoom.enable();
32238      }
32239    },
32240    destroy: function destroy() {
32241      var swiper = this;
32242      swiper.zoom.disable();
32243    },
32244    touchStart: function touchStart(e) {
32245      var swiper = this;
32246      if (!swiper.zoom.enabled) return;
32247      swiper.zoom.onTouchStart(e);
32248    },
32249    touchEnd: function touchEnd(e) {
32250      var swiper = this;
32251      if (!swiper.zoom.enabled) return;
32252      swiper.zoom.onTouchEnd(e);
32253    },
32254    doubleTap: function doubleTap(e) {
32255      var swiper = this;
32256      if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {
32257        swiper.zoom.toggle(e);
32258      }
32259    },
32260    transitionEnd: function transitionEnd() {
32261      var swiper = this;
32262      if (swiper.zoom.enabled && swiper.params.zoom.enabled) {
32263        swiper.zoom.onTransitionEnd();
32264      }
32265    }
32266  }
32267};
32268
32269var Lazy = {
32270  loadInSlide: function loadInSlide(index$$1) {
32271    var loadInDuplicate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
32272
32273    var swiper = this;
32274    var params = swiper.params.lazy;
32275    if (typeof index$$1 === 'undefined') return;
32276    if (swiper.slides.length === 0) return;
32277    var isVirtual = swiper.virtual && swiper.params.virtual.enabled;
32278
32279    var $slideEl = isVirtual ? swiper.$wrapperEl.children('.' + swiper.params.slideClass + '[data-swiper-slide-index="' + index$$1 + '"]') : swiper.slides.eq(index$$1);
32280
32281    var $images = $slideEl.find('.' + params.elementClass + ':not(.' + params.loadedClass + '):not(.' + params.loadingClass + ')');
32282    if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {
32283      $images = $images.add($slideEl[0]);
32284    }
32285    if ($images.length === 0) return;
32286
32287    $images.each(function (imageIndex, imageEl) {
32288      var $imageEl = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(imageEl);
32289      $imageEl.addClass(params.loadingClass);
32290
32291      var background = $imageEl.attr('data-background');
32292      var src = $imageEl.attr('data-src');
32293      var srcset = $imageEl.attr('data-srcset');
32294      var sizes = $imageEl.attr('data-sizes');
32295
32296      swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, function () {
32297        if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) return;
32298        if (background) {
32299          $imageEl.css('background-image', 'url("' + background + '")');
32300          $imageEl.removeAttr('data-background');
32301        } else {
32302          if (srcset) {
32303            $imageEl.attr('srcset', srcset);
32304            $imageEl.removeAttr('data-srcset');
32305          }
32306          if (sizes) {
32307            $imageEl.attr('sizes', sizes);
32308            $imageEl.removeAttr('data-sizes');
32309          }
32310          if (src) {
32311            $imageEl.attr('src', src);
32312            $imageEl.removeAttr('data-src');
32313          }
32314        }
32315
32316        $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);
32317        $slideEl.find('.' + params.preloaderClass).remove();
32318        if (swiper.params.loop && loadInDuplicate) {
32319          var slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');
32320          if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {
32321            var originalSlide = swiper.$wrapperEl.children('[data-swiper-slide-index="' + slideOriginalIndex + '"]:not(.' + swiper.params.slideDuplicateClass + ')');
32322            swiper.lazy.loadInSlide(originalSlide.index(), false);
32323          } else {
32324            var duplicatedSlide = swiper.$wrapperEl.children('.' + swiper.params.slideDuplicateClass + '[data-swiper-slide-index="' + slideOriginalIndex + '"]');
32325            swiper.lazy.loadInSlide(duplicatedSlide.index(), false);
32326          }
32327        }
32328        swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);
32329      });
32330
32331      swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);
32332    });
32333  },
32334  load: function load() {
32335    var swiper = this;
32336    var $wrapperEl = swiper.$wrapperEl,
32337        swiperParams = swiper.params,
32338        slides = swiper.slides,
32339        activeIndex = swiper.activeIndex;
32340
32341    var isVirtual = swiper.virtual && swiperParams.virtual.enabled;
32342    var params = swiperParams.lazy;
32343
32344    var slidesPerView = swiperParams.slidesPerView;
32345    if (slidesPerView === 'auto') {
32346      slidesPerView = 0;
32347    }
32348
32349    function slideExist(index$$1) {
32350      if (isVirtual) {
32351        if ($wrapperEl.children('.' + swiperParams.slideClass + '[data-swiper-slide-index="' + index$$1 + '"]').length) {
32352          return true;
32353        }
32354      } else if (slides[index$$1]) return true;
32355      return false;
32356    }
32357    function slideIndex(slideEl) {
32358      if (isVirtual) {
32359        return Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(slideEl).attr('data-swiper-slide-index');
32360      }
32361      return Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(slideEl).index();
32362    }
32363
32364    if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true;
32365    if (swiper.params.watchSlidesVisibility) {
32366      $wrapperEl.children('.' + swiperParams.slideVisibleClass).each(function (elIndex, slideEl) {
32367        var index$$1 = isVirtual ? Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(slideEl).attr('data-swiper-slide-index') : Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(slideEl).index();
32368        swiper.lazy.loadInSlide(index$$1);
32369      });
32370    } else if (slidesPerView > 1) {
32371      for (var i = activeIndex; i < activeIndex + slidesPerView; i += 1) {
32372        if (slideExist(i)) swiper.lazy.loadInSlide(i);
32373      }
32374    } else {
32375      swiper.lazy.loadInSlide(activeIndex);
32376    }
32377    if (params.loadPrevNext) {
32378      if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) {
32379        var amount = params.loadPrevNextAmount;
32380        var spv = slidesPerView;
32381        var maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);
32382        var minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);
32383        // Next Slides
32384        for (var _i10 = activeIndex + slidesPerView; _i10 < maxIndex; _i10 += 1) {
32385          if (slideExist(_i10)) swiper.lazy.loadInSlide(_i10);
32386        }
32387        // Prev Slides
32388        for (var _i11 = minIndex; _i11 < activeIndex; _i11 += 1) {
32389          if (slideExist(_i11)) swiper.lazy.loadInSlide(_i11);
32390        }
32391      } else {
32392        var nextSlide = $wrapperEl.children('.' + swiperParams.slideNextClass);
32393        if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide));
32394
32395        var prevSlide = $wrapperEl.children('.' + swiperParams.slidePrevClass);
32396        if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide));
32397      }
32398    }
32399  }
32400};
32401
32402var Lazy$1 = {
32403  name: 'lazy',
32404  params: {
32405    lazy: {
32406      enabled: false,
32407      loadPrevNext: false,
32408      loadPrevNextAmount: 1,
32409      loadOnTransitionStart: false,
32410
32411      elementClass: 'swiper-lazy',
32412      loadingClass: 'swiper-lazy-loading',
32413      loadedClass: 'swiper-lazy-loaded',
32414      preloaderClass: 'swiper-lazy-preloader'
32415    }
32416  },
32417  create: function create() {
32418    var swiper = this;
32419    Utils.extend(swiper, {
32420      lazy: {
32421        initialImageLoaded: false,
32422        load: Lazy.load.bind(swiper),
32423        loadInSlide: Lazy.loadInSlide.bind(swiper)
32424      }
32425    });
32426  },
32427
32428  on: {
32429    beforeInit: function beforeInit() {
32430      var swiper = this;
32431      if (swiper.params.lazy.enabled && swiper.params.preloadImages) {
32432        swiper.params.preloadImages = false;
32433      }
32434    },
32435    init: function init() {
32436      var swiper = this;
32437      if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {
32438        swiper.lazy.load();
32439      }
32440    },
32441    scroll: function scroll() {
32442      var swiper = this;
32443      if (swiper.params.freeMode && !swiper.params.freeModeSticky) {
32444        swiper.lazy.load();
32445      }
32446    },
32447    resize: function resize() {
32448      var swiper = this;
32449      if (swiper.params.lazy.enabled) {
32450        swiper.lazy.load();
32451      }
32452    },
32453    scrollbarDragMove: function scrollbarDragMove() {
32454      var swiper = this;
32455      if (swiper.params.lazy.enabled) {
32456        swiper.lazy.load();
32457      }
32458    },
32459    transitionStart: function transitionStart() {
32460      var swiper = this;
32461      if (swiper.params.lazy.enabled) {
32462        if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded) {
32463          swiper.lazy.load();
32464        }
32465      }
32466    },
32467    transitionEnd: function transitionEnd() {
32468      var swiper = this;
32469      if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {
32470        swiper.lazy.load();
32471      }
32472    }
32473  }
32474};
32475
32476/* eslint no-bitwise: ["error", { "allow": [">>"] }] */
32477
32478var Controller = {
32479  LinearSpline: function LinearSpline(x, y) {
32480    var binarySearch = function search() {
32481      var maxIndex = void 0;
32482      var minIndex = void 0;
32483      var guess = void 0;
32484      return function (array, val) {
32485        minIndex = -1;
32486        maxIndex = array.length;
32487        while (maxIndex - minIndex > 1) {
32488          guess = maxIndex + minIndex >> 1;
32489          if (array[guess] <= val) {
32490            minIndex = guess;
32491          } else {
32492            maxIndex = guess;
32493          }
32494        }
32495        return maxIndex;
32496      };
32497    }();
32498    this.x = x;
32499    this.y = y;
32500    this.lastIndex = x.length - 1;
32501    // Given an x value (x2), return the expected y2 value:
32502    // (x1,y1) is the known point before given value,
32503    // (x3,y3) is the known point after given value.
32504    var i1 = void 0;
32505    var i3 = void 0;
32506
32507    this.interpolate = function interpolate(x2) {
32508      if (!x2) return 0;
32509
32510      // Get the indexes of x1 and x3 (the array indexes before and after given x2):
32511      i3 = binarySearch(this.x, x2);
32512      i1 = i3 - 1;
32513
32514      // We have our indexes i1 & i3, so we can calculate already:
32515      // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1
32516      return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];
32517    };
32518    return this;
32519  },
32520  // xxx: for now i will just save one spline function to to
32521  getInterpolateFunction: function getInterpolateFunction(c) {
32522    var swiper = this;
32523    if (!swiper.controller.spline) {
32524      swiper.controller.spline = swiper.params.loop ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid) : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);
32525    }
32526  },
32527  setTranslate: function setTranslate(_setTranslate, byController) {
32528    var swiper = this;
32529    var controlled = swiper.controller.control;
32530    var multiplier = void 0;
32531    var controlledTranslate = void 0;
32532    function setControlledTranslate(c) {
32533      // this will create an Interpolate function based on the snapGrids
32534      // x is the Grid of the scrolled scroller and y will be the controlled scroller
32535      // it makes sense to create this only once and recall it for the interpolation
32536      // the function does a lot of value caching for performance
32537      var translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;
32538      if (swiper.params.controller.by === 'slide') {
32539        swiper.controller.getInterpolateFunction(c);
32540        // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid
32541        // but it did not work out
32542        controlledTranslate = -swiper.controller.spline.interpolate(-translate);
32543      }
32544
32545      if (!controlledTranslate || swiper.params.controller.by === 'container') {
32546        multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());
32547        controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();
32548      }
32549
32550      if (swiper.params.controller.inverse) {
32551        controlledTranslate = c.maxTranslate() - controlledTranslate;
32552      }
32553      c.updateProgress(controlledTranslate);
32554      c.setTranslate(controlledTranslate, swiper);
32555      c.updateActiveIndex();
32556      c.updateSlidesClasses();
32557    }
32558    if (Array.isArray(controlled)) {
32559      for (var i = 0; i < controlled.length; i += 1) {
32560        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
32561          setControlledTranslate(controlled[i]);
32562        }
32563      }
32564    } else if (controlled instanceof Swiper && byController !== controlled) {
32565      setControlledTranslate(controlled);
32566    }
32567  },
32568  setTransition: function setTransition(duration, byController) {
32569    var swiper = this;
32570    var controlled = swiper.controller.control;
32571    var i = void 0;
32572    function setControlledTransition(c) {
32573      c.setTransition(duration, swiper);
32574      if (duration !== 0) {
32575        c.transitionStart();
32576        if (c.params.autoHeight) {
32577          Utils.nextTick(function () {
32578            c.updateAutoHeight();
32579          });
32580        }
32581        c.$wrapperEl.transitionEnd(function () {
32582          if (!controlled) return;
32583          if (c.params.loop && swiper.params.controller.by === 'slide') {
32584            c.loopFix();
32585          }
32586          c.transitionEnd();
32587        });
32588      }
32589    }
32590    if (Array.isArray(controlled)) {
32591      for (i = 0; i < controlled.length; i += 1) {
32592        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
32593          setControlledTransition(controlled[i]);
32594        }
32595      }
32596    } else if (controlled instanceof Swiper && byController !== controlled) {
32597      setControlledTransition(controlled);
32598    }
32599  }
32600};
32601var Controller$1 = {
32602  name: 'controller',
32603  params: {
32604    controller: {
32605      control: undefined,
32606      inverse: false,
32607      by: 'slide' // or 'container'
32608    }
32609  },
32610  create: function create() {
32611    var swiper = this;
32612    Utils.extend(swiper, {
32613      controller: {
32614        control: swiper.params.controller.control,
32615        getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper),
32616        setTranslate: Controller.setTranslate.bind(swiper),
32617        setTransition: Controller.setTransition.bind(swiper)
32618      }
32619    });
32620  },
32621
32622  on: {
32623    update: function update() {
32624      var swiper = this;
32625      if (!swiper.controller.control) return;
32626      if (swiper.controller.spline) {
32627        swiper.controller.spline = undefined;
32628        delete swiper.controller.spline;
32629      }
32630    },
32631    resize: function resize() {
32632      var swiper = this;
32633      if (!swiper.controller.control) return;
32634      if (swiper.controller.spline) {
32635        swiper.controller.spline = undefined;
32636        delete swiper.controller.spline;
32637      }
32638    },
32639    observerUpdate: function observerUpdate() {
32640      var swiper = this;
32641      if (!swiper.controller.control) return;
32642      if (swiper.controller.spline) {
32643        swiper.controller.spline = undefined;
32644        delete swiper.controller.spline;
32645      }
32646    },
32647    setTranslate: function setTranslate(translate, byController) {
32648      var swiper = this;
32649      if (!swiper.controller.control) return;
32650      swiper.controller.setTranslate(translate, byController);
32651    },
32652    setTransition: function setTransition(duration, byController) {
32653      var swiper = this;
32654      if (!swiper.controller.control) return;
32655      swiper.controller.setTransition(duration, byController);
32656    }
32657  }
32658};
32659
32660var a11y = {
32661  makeElFocusable: function makeElFocusable($el) {
32662    $el.attr('tabIndex', '0');
32663    return $el;
32664  },
32665  addElRole: function addElRole($el, role) {
32666    $el.attr('role', role);
32667    return $el;
32668  },
32669  addElLabel: function addElLabel($el, label) {
32670    $el.attr('aria-label', label);
32671    return $el;
32672  },
32673  disableEl: function disableEl($el) {
32674    $el.attr('aria-disabled', true);
32675    return $el;
32676  },
32677  enableEl: function enableEl($el) {
32678    $el.attr('aria-disabled', false);
32679    return $el;
32680  },
32681  onEnterKey: function onEnterKey(e) {
32682    var swiper = this;
32683    var params = swiper.params.a11y;
32684    if (e.keyCode !== 13) return;
32685    var $targetEl = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(e.target);
32686    if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {
32687      if (!(swiper.isEnd && !swiper.params.loop)) {
32688        swiper.slideNext();
32689      }
32690      if (swiper.isEnd) {
32691        swiper.a11y.notify(params.lastSlideMessage);
32692      } else {
32693        swiper.a11y.notify(params.nextSlideMessage);
32694      }
32695    }
32696    if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {
32697      if (!(swiper.isBeginning && !swiper.params.loop)) {
32698        swiper.slidePrev();
32699      }
32700      if (swiper.isBeginning) {
32701        swiper.a11y.notify(params.firstSlideMessage);
32702      } else {
32703        swiper.a11y.notify(params.prevSlideMessage);
32704      }
32705    }
32706    if (swiper.pagination && $targetEl.is('.' + swiper.params.pagination.bulletClass)) {
32707      $targetEl[0].click();
32708    }
32709  },
32710  notify: function notify(message) {
32711    var swiper = this;
32712    var notification = swiper.a11y.liveRegion;
32713    if (notification.length === 0) return;
32714    notification.html('');
32715    notification.html(message);
32716  },
32717  updateNavigation: function updateNavigation() {
32718    var swiper = this;
32719
32720    if (swiper.params.loop) return;
32721    var _swiper$navigation4 = swiper.navigation,
32722        $nextEl = _swiper$navigation4.$nextEl,
32723        $prevEl = _swiper$navigation4.$prevEl;
32724
32725
32726    if ($prevEl && $prevEl.length > 0) {
32727      if (swiper.isBeginning) {
32728        swiper.a11y.disableEl($prevEl);
32729      } else {
32730        swiper.a11y.enableEl($prevEl);
32731      }
32732    }
32733    if ($nextEl && $nextEl.length > 0) {
32734      if (swiper.isEnd) {
32735        swiper.a11y.disableEl($nextEl);
32736      } else {
32737        swiper.a11y.enableEl($nextEl);
32738      }
32739    }
32740  },
32741  updatePagination: function updatePagination() {
32742    var swiper = this;
32743    var params = swiper.params.a11y;
32744    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
32745      swiper.pagination.bullets.each(function (bulletIndex, bulletEl) {
32746        var $bulletEl = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(bulletEl);
32747        swiper.a11y.makeElFocusable($bulletEl);
32748        swiper.a11y.addElRole($bulletEl, 'button');
32749        swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/{{index}}/, $bulletEl.index() + 1));
32750      });
32751    }
32752  },
32753  init: function init() {
32754    var swiper = this;
32755
32756    swiper.$el.append(swiper.a11y.liveRegion);
32757
32758    // Navigation
32759    var params = swiper.params.a11y;
32760    var $nextEl = void 0;
32761    var $prevEl = void 0;
32762    if (swiper.navigation && swiper.navigation.$nextEl) {
32763      $nextEl = swiper.navigation.$nextEl;
32764    }
32765    if (swiper.navigation && swiper.navigation.$prevEl) {
32766      $prevEl = swiper.navigation.$prevEl;
32767    }
32768    if ($nextEl) {
32769      swiper.a11y.makeElFocusable($nextEl);
32770      swiper.a11y.addElRole($nextEl, 'button');
32771      swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);
32772      $nextEl.on('keydown', swiper.a11y.onEnterKey);
32773    }
32774    if ($prevEl) {
32775      swiper.a11y.makeElFocusable($prevEl);
32776      swiper.a11y.addElRole($prevEl, 'button');
32777      swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);
32778      $prevEl.on('keydown', swiper.a11y.onEnterKey);
32779    }
32780
32781    // Pagination
32782    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
32783      swiper.pagination.$el.on('keydown', '.' + swiper.params.pagination.bulletClass, swiper.a11y.onEnterKey);
32784    }
32785  },
32786  destroy: function destroy() {
32787    var swiper = this;
32788    if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) swiper.a11y.liveRegion.remove();
32789
32790    var $nextEl = void 0;
32791    var $prevEl = void 0;
32792    if (swiper.navigation && swiper.navigation.$nextEl) {
32793      $nextEl = swiper.navigation.$nextEl;
32794    }
32795    if (swiper.navigation && swiper.navigation.$prevEl) {
32796      $prevEl = swiper.navigation.$prevEl;
32797    }
32798    if ($nextEl) {
32799      $nextEl.off('keydown', swiper.a11y.onEnterKey);
32800    }
32801    if ($prevEl) {
32802      $prevEl.off('keydown', swiper.a11y.onEnterKey);
32803    }
32804
32805    // Pagination
32806    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
32807      swiper.pagination.$el.off('keydown', '.' + swiper.params.pagination.bulletClass, swiper.a11y.onEnterKey);
32808    }
32809  }
32810};
32811var A11y = {
32812  name: 'a11y',
32813  params: {
32814    a11y: {
32815      enabled: true,
32816      notificationClass: 'swiper-notification',
32817      prevSlideMessage: 'Previous slide',
32818      nextSlideMessage: 'Next slide',
32819      firstSlideMessage: 'This is the first slide',
32820      lastSlideMessage: 'This is the last slide',
32821      paginationBulletMessage: 'Go to slide {{index}}'
32822    }
32823  },
32824  create: function create() {
32825    var swiper = this;
32826    Utils.extend(swiper, {
32827      a11y: {
32828        liveRegion: Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])('<span class="' + swiper.params.a11y.notificationClass + '" aria-live="assertive" aria-atomic="true"></span>')
32829      }
32830    });
32831    Object.keys(a11y).forEach(function (methodName) {
32832      swiper.a11y[methodName] = a11y[methodName].bind(swiper);
32833    });
32834  },
32835
32836  on: {
32837    init: function init() {
32838      var swiper = this;
32839      if (!swiper.params.a11y.enabled) return;
32840      swiper.a11y.init();
32841      swiper.a11y.updateNavigation();
32842    },
32843    toEdge: function toEdge() {
32844      var swiper = this;
32845      if (!swiper.params.a11y.enabled) return;
32846      swiper.a11y.updateNavigation();
32847    },
32848    fromEdge: function fromEdge() {
32849      var swiper = this;
32850      if (!swiper.params.a11y.enabled) return;
32851      swiper.a11y.updateNavigation();
32852    },
32853    paginationUpdate: function paginationUpdate() {
32854      var swiper = this;
32855      if (!swiper.params.a11y.enabled) return;
32856      swiper.a11y.updatePagination();
32857    },
32858    destroy: function destroy() {
32859      var swiper = this;
32860      if (!swiper.params.a11y.enabled) return;
32861      swiper.a11y.destroy();
32862    }
32863  }
32864};
32865
32866var History = {
32867  init: function init() {
32868    var swiper = this;
32869    if (!swiper.params.history) return;
32870    if (!ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].history || !ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].history.pushState) {
32871      swiper.params.history.enabled = false;
32872      swiper.params.hashNavigation.enabled = true;
32873      return;
32874    }
32875    var history = swiper.history;
32876    history.initialized = true;
32877    history.paths = History.getPathValues();
32878    if (!history.paths.key && !history.paths.value) return;
32879    history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);
32880    if (!swiper.params.history.replaceState) {
32881      ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].addEventListener('popstate', swiper.history.setHistoryPopState);
32882    }
32883  },
32884  destroy: function destroy() {
32885    var swiper = this;
32886    if (!swiper.params.history.replaceState) {
32887      ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].removeEventListener('popstate', swiper.history.setHistoryPopState);
32888    }
32889  },
32890  setHistoryPopState: function setHistoryPopState() {
32891    var swiper = this;
32892    swiper.history.paths = History.getPathValues();
32893    swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);
32894  },
32895  getPathValues: function getPathValues() {
32896    var pathArray = ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].location.pathname.slice(1).split('/').filter(function (part) {
32897      return part !== '';
32898    });
32899    var total = pathArray.length;
32900    var key = pathArray[total - 2];
32901    var value = pathArray[total - 1];
32902    return { key: key, value: value };
32903  },
32904  setHistory: function setHistory(key, index$$1) {
32905    var swiper = this;
32906    if (!swiper.history.initialized || !swiper.params.history.enabled) return;
32907    var slide = swiper.slides.eq(index$$1);
32908    var value = History.slugify(slide.attr('data-history'));
32909    if (!ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].location.pathname.includes(key)) {
32910      value = key + '/' + value;
32911    }
32912    var currentState = ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].history.state;
32913    if (currentState && currentState.value === value) {
32914      return;
32915    }
32916    if (swiper.params.history.replaceState) {
32917      ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].history.replaceState({ value: value }, null, value);
32918    } else {
32919      ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].history.pushState({ value: value }, null, value);
32920    }
32921  },
32922  slugify: function slugify(text$$1) {
32923    return text$$1.toString().toLowerCase().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');
32924  },
32925  scrollToSlide: function scrollToSlide(speed, value, runCallbacks) {
32926    var swiper = this;
32927    if (value) {
32928      for (var i = 0, length = swiper.slides.length; i < length; i += 1) {
32929        var _slide3 = swiper.slides.eq(i);
32930        var slideHistory = History.slugify(_slide3.attr('data-history'));
32931        if (slideHistory === value && !_slide3.hasClass(swiper.params.slideDuplicateClass)) {
32932          var index$$1 = _slide3.index();
32933          swiper.slideTo(index$$1, speed, runCallbacks);
32934        }
32935      }
32936    } else {
32937      swiper.slideTo(0, speed, runCallbacks);
32938    }
32939  }
32940};
32941
32942var History$1 = {
32943  name: 'history',
32944  params: {
32945    history: {
32946      enabled: false,
32947      replaceState: false,
32948      key: 'slides'
32949    }
32950  },
32951  create: function create() {
32952    var swiper = this;
32953    Utils.extend(swiper, {
32954      history: {
32955        init: History.init.bind(swiper),
32956        setHistory: History.setHistory.bind(swiper),
32957        setHistoryPopState: History.setHistoryPopState.bind(swiper),
32958        scrollToSlide: History.scrollToSlide.bind(swiper),
32959        destroy: History.destroy.bind(swiper)
32960      }
32961    });
32962  },
32963
32964  on: {
32965    init: function init() {
32966      var swiper = this;
32967      if (swiper.params.history.enabled) {
32968        swiper.history.init();
32969      }
32970    },
32971    destroy: function destroy() {
32972      var swiper = this;
32973      if (swiper.params.history.enabled) {
32974        swiper.history.destroy();
32975      }
32976    },
32977    transitionEnd: function transitionEnd() {
32978      var swiper = this;
32979      if (swiper.history.initialized) {
32980        swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);
32981      }
32982    }
32983  }
32984};
32985
32986var HashNavigation = {
32987  onHashCange: function onHashCange() {
32988    var swiper = this;
32989    var newHash = ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].location.hash.replace('#', '');
32990    var activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');
32991    if (newHash !== activeSlideHash) {
32992      var newIndex = swiper.$wrapperEl.children('.' + swiper.params.slideClass + '[data-hash="' + newHash + '"]').index();
32993      if (typeof newIndex === 'undefined') return;
32994      swiper.slideTo(newIndex);
32995    }
32996  },
32997  setHash: function setHash() {
32998    var swiper = this;
32999    if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) return;
33000    if (swiper.params.hashNavigation.replaceState && ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].history && ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].history.replaceState) {
33001      ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].history.replaceState(null, null, '#' + swiper.slides.eq(swiper.activeIndex).attr('data-hash') || '');
33002    } else {
33003      var _slide4 = swiper.slides.eq(swiper.activeIndex);
33004      var hash = _slide4.attr('data-hash') || _slide4.attr('data-history');
33005      ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].location.hash = hash || '';
33006    }
33007  },
33008  init: function init() {
33009    var swiper = this;
33010    if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;
33011    swiper.hashNavigation.initialized = true;
33012    var hash = ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].location.hash.replace('#', '');
33013    if (hash) {
33014      var speed = 0;
33015      for (var i = 0, length = swiper.slides.length; i < length; i += 1) {
33016        var _slide5 = swiper.slides.eq(i);
33017        var slideHash = _slide5.attr('data-hash') || _slide5.attr('data-history');
33018        if (slideHash === hash && !_slide5.hasClass(swiper.params.slideDuplicateClass)) {
33019          var index$$1 = _slide5.index();
33020          swiper.slideTo(index$$1, speed, swiper.params.runCallbacksOnInit, true);
33021        }
33022      }
33023    }
33024    if (swiper.params.hashNavigation.watchState) {
33025      Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"]).on('hashchange', swiper.hashNavigation.onHashCange);
33026    }
33027  },
33028  destroy: function destroy() {
33029    var swiper = this;
33030    if (swiper.params.hashNavigation.watchState) {
33031      Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"]).off('hashchange', swiper.hashNavigation.onHashCange);
33032    }
33033  }
33034};
33035var HashNavigation$1 = {
33036  name: 'hash-navigation',
33037  params: {
33038    hashNavigation: {
33039      enabled: false,
33040      replaceState: false,
33041      watchState: false
33042    }
33043  },
33044  create: function create() {
33045    var swiper = this;
33046    Utils.extend(swiper, {
33047      hashNavigation: {
33048        initialized: false,
33049        init: HashNavigation.init.bind(swiper),
33050        destroy: HashNavigation.destroy.bind(swiper),
33051        setHash: HashNavigation.setHash.bind(swiper),
33052        onHashCange: HashNavigation.onHashCange.bind(swiper)
33053      }
33054    });
33055  },
33056
33057  on: {
33058    init: function init() {
33059      var swiper = this;
33060      if (swiper.params.hashNavigation.enabled) {
33061        swiper.hashNavigation.init();
33062      }
33063    },
33064    destroy: function destroy() {
33065      var swiper = this;
33066      if (swiper.params.hashNavigation.enabled) {
33067        swiper.hashNavigation.destroy();
33068      }
33069    },
33070    transitionEnd: function transitionEnd() {
33071      var swiper = this;
33072      if (swiper.hashNavigation.initialized) {
33073        swiper.hashNavigation.setHash();
33074      }
33075    }
33076  }
33077};
33078
33079/* eslint no-underscore-dangle: "off" */
33080
33081var Autoplay = {
33082  run: function run() {
33083    var swiper = this;
33084    var $activeSlideEl = swiper.slides.eq(swiper.activeIndex);
33085    var delay = swiper.params.autoplay.delay;
33086    if ($activeSlideEl.attr('data-swiper-autoplay')) {
33087      delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;
33088    }
33089    swiper.autoplay.timeout = Utils.nextTick(function () {
33090      if (swiper.params.autoplay.reverseDirection) {
33091        if (swiper.params.loop) {
33092          swiper.loopFix();
33093          swiper.slidePrev(swiper.params.speed, true, true);
33094          swiper.emit('autoplay');
33095        } else if (!swiper.isBeginning) {
33096          swiper.slidePrev(swiper.params.speed, true, true);
33097          swiper.emit('autoplay');
33098        } else if (!swiper.params.autoplay.stopOnLastSlide) {
33099          swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);
33100          swiper.emit('autoplay');
33101        } else {
33102          swiper.autoplay.stop();
33103        }
33104      } else if (swiper.params.loop) {
33105        swiper.loopFix();
33106        swiper.slideNext(swiper.params.speed, true, true);
33107        swiper.emit('autoplay');
33108      } else if (!swiper.isEnd) {
33109        swiper.slideNext(swiper.params.speed, true, true);
33110        swiper.emit('autoplay');
33111      } else if (!swiper.params.autoplay.stopOnLastSlide) {
33112        swiper.slideTo(0, swiper.params.speed, true, true);
33113        swiper.emit('autoplay');
33114      } else {
33115        swiper.autoplay.stop();
33116      }
33117    }, delay);
33118  },
33119  start: function start() {
33120    var swiper = this;
33121    if (typeof swiper.autoplay.timeout !== 'undefined') return false;
33122    if (swiper.autoplay.running) return false;
33123    swiper.autoplay.running = true;
33124    swiper.emit('autoplayStart');
33125    swiper.autoplay.run();
33126    return true;
33127  },
33128  stop: function stop() {
33129    var swiper = this;
33130    if (!swiper.autoplay.running) return false;
33131    if (typeof swiper.autoplay.timeout === 'undefined') return false;
33132
33133    if (swiper.autoplay.timeout) {
33134      clearTimeout(swiper.autoplay.timeout);
33135      swiper.autoplay.timeout = undefined;
33136    }
33137    swiper.autoplay.running = false;
33138    swiper.emit('autoplayStop');
33139    return true;
33140  },
33141  pause: function pause(speed) {
33142    var swiper = this;
33143    if (!swiper.autoplay.running) return;
33144    if (swiper.autoplay.paused) return;
33145    if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout);
33146    swiper.autoplay.paused = true;
33147    if (speed === 0 || !swiper.params.autoplay.waitForTransition) {
33148      swiper.autoplay.paused = false;
33149      swiper.autoplay.run();
33150    } else {
33151      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);
33152      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);
33153    }
33154  }
33155};
33156
33157var Autoplay$1 = {
33158  name: 'autoplay',
33159  params: {
33160    autoplay: {
33161      enabled: false,
33162      delay: 3000,
33163      waitForTransition: true,
33164      disableOnInteraction: true,
33165      stopOnLastSlide: false,
33166      reverseDirection: false
33167    }
33168  },
33169  create: function create() {
33170    var swiper = this;
33171    Utils.extend(swiper, {
33172      autoplay: {
33173        running: false,
33174        paused: false,
33175        run: Autoplay.run.bind(swiper),
33176        start: Autoplay.start.bind(swiper),
33177        stop: Autoplay.stop.bind(swiper),
33178        pause: Autoplay.pause.bind(swiper),
33179        onTransitionEnd: function onTransitionEnd(e) {
33180          if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;
33181          if (e.target !== this) return;
33182          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);
33183          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);
33184          swiper.autoplay.paused = false;
33185          if (!swiper.autoplay.running) {
33186            swiper.autoplay.stop();
33187          } else {
33188            swiper.autoplay.run();
33189          }
33190        }
33191      }
33192    });
33193  },
33194
33195  on: {
33196    init: function init() {
33197      var swiper = this;
33198      if (swiper.params.autoplay.enabled) {
33199        swiper.autoplay.start();
33200      }
33201    },
33202    beforeTransitionStart: function beforeTransitionStart(speed, internal) {
33203      var swiper = this;
33204      if (swiper.autoplay.running) {
33205        if (internal || !swiper.params.autoplay.disableOnInteraction) {
33206          swiper.autoplay.pause(speed);
33207        } else {
33208          swiper.autoplay.stop();
33209        }
33210      }
33211    },
33212    sliderFirstMove: function sliderFirstMove() {
33213      var swiper = this;
33214      if (swiper.autoplay.running) {
33215        if (swiper.params.autoplay.disableOnInteraction) {
33216          swiper.autoplay.stop();
33217        } else {
33218          swiper.autoplay.pause();
33219        }
33220      }
33221    },
33222    destroy: function destroy() {
33223      var swiper = this;
33224      if (swiper.autoplay.running) {
33225        swiper.autoplay.stop();
33226      }
33227    }
33228  }
33229};
33230
33231var Fade = {
33232  setTranslate: function setTranslate() {
33233    var swiper = this;
33234    var slides = swiper.slides;
33235
33236    for (var i = 0; i < slides.length; i += 1) {
33237      var $slideEl = swiper.slides.eq(i);
33238      var offset$$1 = $slideEl[0].swiperSlideOffset;
33239      var tx = -offset$$1;
33240      if (!swiper.params.virtualTranslate) tx -= swiper.translate;
33241      var ty = 0;
33242      if (!swiper.isHorizontal()) {
33243        ty = tx;
33244        tx = 0;
33245      }
33246      var slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs($slideEl[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);
33247      $slideEl.css({
33248        opacity: slideOpacity
33249      }).transform('translate3d(' + tx + 'px, ' + ty + 'px, 0px)');
33250    }
33251  },
33252  setTransition: function setTransition(duration) {
33253    var swiper = this;
33254    var slides = swiper.slides,
33255        $wrapperEl = swiper.$wrapperEl;
33256
33257    slides.transition(duration);
33258    if (swiper.params.virtualTranslate && duration !== 0) {
33259      var eventTriggered = false;
33260      slides.transitionEnd(function () {
33261        if (eventTriggered) return;
33262        if (!swiper || swiper.destroyed) return;
33263        eventTriggered = true;
33264        swiper.animating = false;
33265        var triggerEvents = ['webkitTransitionEnd', 'transitionend'];
33266        for (var i = 0; i < triggerEvents.length; i += 1) {
33267          $wrapperEl.trigger(triggerEvents[i]);
33268        }
33269      });
33270    }
33271  }
33272};
33273
33274var EffectFade = {
33275  name: 'effect-fade',
33276  params: {
33277    fadeEffect: {
33278      crossFade: false
33279    }
33280  },
33281  create: function create() {
33282    var swiper = this;
33283    Utils.extend(swiper, {
33284      fadeEffect: {
33285        setTranslate: Fade.setTranslate.bind(swiper),
33286        setTransition: Fade.setTransition.bind(swiper)
33287      }
33288    });
33289  },
33290
33291  on: {
33292    beforeInit: function beforeInit() {
33293      var swiper = this;
33294      if (swiper.params.effect !== 'fade') return;
33295      swiper.classNames.push(swiper.params.containerModifierClass + 'fade');
33296      var overwriteParams = {
33297        slidesPerView: 1,
33298        slidesPerColumn: 1,
33299        slidesPerGroup: 1,
33300        watchSlidesProgress: true,
33301        spaceBetween: 0,
33302        virtualTranslate: true
33303      };
33304      Utils.extend(swiper.params, overwriteParams);
33305      Utils.extend(swiper.originalParams, overwriteParams);
33306    },
33307    setTranslate: function setTranslate() {
33308      var swiper = this;
33309      if (swiper.params.effect !== 'fade') return;
33310      swiper.fadeEffect.setTranslate();
33311    },
33312    setTransition: function setTransition(duration) {
33313      var swiper = this;
33314      if (swiper.params.effect !== 'fade') return;
33315      swiper.fadeEffect.setTransition(duration);
33316    }
33317  }
33318};
33319
33320var Cube = {
33321  setTranslate: function setTranslate() {
33322    var swiper = this;
33323    var $el = swiper.$el,
33324        $wrapperEl = swiper.$wrapperEl,
33325        slides = swiper.slides,
33326        swiperWidth = swiper.width,
33327        swiperHeight = swiper.height,
33328        rtl = swiper.rtlTranslate,
33329        swiperSize = swiper.size;
33330
33331    var params = swiper.params.cubeEffect;
33332    var isHorizontal = swiper.isHorizontal();
33333    var isVirtual = swiper.virtual && swiper.params.virtual.enabled;
33334    var wrapperRotate = 0;
33335    var $cubeShadowEl = void 0;
33336    if (params.shadow) {
33337      if (isHorizontal) {
33338        $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');
33339        if ($cubeShadowEl.length === 0) {
33340          $cubeShadowEl = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])('<div class="swiper-cube-shadow"></div>');
33341          $wrapperEl.append($cubeShadowEl);
33342        }
33343        $cubeShadowEl.css({ height: swiperWidth + 'px' });
33344      } else {
33345        $cubeShadowEl = $el.find('.swiper-cube-shadow');
33346        if ($cubeShadowEl.length === 0) {
33347          $cubeShadowEl = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])('<div class="swiper-cube-shadow"></div>');
33348          $el.append($cubeShadowEl);
33349        }
33350      }
33351    }
33352    for (var i = 0; i < slides.length; i += 1) {
33353      var $slideEl = slides.eq(i);
33354      var slideIndex = i;
33355      if (isVirtual) {
33356        slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);
33357      }
33358      var slideAngle = slideIndex * 90;
33359      var round = Math.floor(slideAngle / 360);
33360      if (rtl) {
33361        slideAngle = -slideAngle;
33362        round = Math.floor(-slideAngle / 360);
33363      }
33364      var progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
33365      var tx = 0;
33366      var ty = 0;
33367      var tz = 0;
33368      if (slideIndex % 4 === 0) {
33369        tx = -round * 4 * swiperSize;
33370        tz = 0;
33371      } else if ((slideIndex - 1) % 4 === 0) {
33372        tx = 0;
33373        tz = -round * 4 * swiperSize;
33374      } else if ((slideIndex - 2) % 4 === 0) {
33375        tx = swiperSize + round * 4 * swiperSize;
33376        tz = swiperSize;
33377      } else if ((slideIndex - 3) % 4 === 0) {
33378        tx = -swiperSize;
33379        tz = 3 * swiperSize + swiperSize * 4 * round;
33380      }
33381      if (rtl) {
33382        tx = -tx;
33383      }
33384
33385      if (!isHorizontal) {
33386        ty = tx;
33387        tx = 0;
33388      }
33389
33390      var transform$$1 = 'rotateX(' + (isHorizontal ? 0 : -slideAngle) + 'deg) rotateY(' + (isHorizontal ? slideAngle : 0) + 'deg) translate3d(' + tx + 'px, ' + ty + 'px, ' + tz + 'px)';
33391      if (progress <= 1 && progress > -1) {
33392        wrapperRotate = slideIndex * 90 + progress * 90;
33393        if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;
33394      }
33395      $slideEl.transform(transform$$1);
33396      if (params.slideShadows) {
33397        // Set shadows
33398        var shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
33399        var shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
33400        if (shadowBefore.length === 0) {
33401          shadowBefore = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])('<div class="swiper-slide-shadow-' + (isHorizontal ? 'left' : 'top') + '"></div>');
33402          $slideEl.append(shadowBefore);
33403        }
33404        if (shadowAfter.length === 0) {
33405          shadowAfter = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])('<div class="swiper-slide-shadow-' + (isHorizontal ? 'right' : 'bottom') + '"></div>');
33406          $slideEl.append(shadowAfter);
33407        }
33408        if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);
33409        if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);
33410      }
33411    }
33412    $wrapperEl.css({
33413      '-webkit-transform-origin': '50% 50% -' + swiperSize / 2 + 'px',
33414      '-moz-transform-origin': '50% 50% -' + swiperSize / 2 + 'px',
33415      '-ms-transform-origin': '50% 50% -' + swiperSize / 2 + 'px',
33416      'transform-origin': '50% 50% -' + swiperSize / 2 + 'px'
33417    });
33418
33419    if (params.shadow) {
33420      if (isHorizontal) {
33421        $cubeShadowEl.transform('translate3d(0px, ' + (swiperWidth / 2 + params.shadowOffset) + 'px, ' + -swiperWidth / 2 + 'px) rotateX(90deg) rotateZ(0deg) scale(' + params.shadowScale + ')');
33422      } else {
33423        var shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;
33424        var multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);
33425        var scale1 = params.shadowScale;
33426        var scale2 = params.shadowScale / multiplier;
33427        var offset$$1 = params.shadowOffset;
33428        $cubeShadowEl.transform('scale3d(' + scale1 + ', 1, ' + scale2 + ') translate3d(0px, ' + (swiperHeight / 2 + offset$$1) + 'px, ' + -swiperHeight / 2 / scale2 + 'px) rotateX(-90deg)');
33429      }
33430    }
33431    var zFactor = Browser.isSafari || Browser.isUiWebView ? -swiperSize / 2 : 0;
33432    $wrapperEl.transform('translate3d(0px,0,' + zFactor + 'px) rotateX(' + (swiper.isHorizontal() ? 0 : wrapperRotate) + 'deg) rotateY(' + (swiper.isHorizontal() ? -wrapperRotate : 0) + 'deg)');
33433  },
33434  setTransition: function setTransition(duration) {
33435    var swiper = this;
33436    var $el = swiper.$el,
33437        slides = swiper.slides;
33438
33439    slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);
33440    if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {
33441      $el.find('.swiper-cube-shadow').transition(duration);
33442    }
33443  }
33444};
33445
33446var EffectCube = {
33447  name: 'effect-cube',
33448  params: {
33449    cubeEffect: {
33450      slideShadows: true,
33451      shadow: true,
33452      shadowOffset: 20,
33453      shadowScale: 0.94
33454    }
33455  },
33456  create: function create() {
33457    var swiper = this;
33458    Utils.extend(swiper, {
33459      cubeEffect: {
33460        setTranslate: Cube.setTranslate.bind(swiper),
33461        setTransition: Cube.setTransition.bind(swiper)
33462      }
33463    });
33464  },
33465
33466  on: {
33467    beforeInit: function beforeInit() {
33468      var swiper = this;
33469      if (swiper.params.effect !== 'cube') return;
33470      swiper.classNames.push(swiper.params.containerModifierClass + 'cube');
33471      swiper.classNames.push(swiper.params.containerModifierClass + '3d');
33472      var overwriteParams = {
33473        slidesPerView: 1,
33474        slidesPerColumn: 1,
33475        slidesPerGroup: 1,
33476        watchSlidesProgress: true,
33477        resistanceRatio: 0,
33478        spaceBetween: 0,
33479        centeredSlides: false,
33480        virtualTranslate: true
33481      };
33482      Utils.extend(swiper.params, overwriteParams);
33483      Utils.extend(swiper.originalParams, overwriteParams);
33484    },
33485    setTranslate: function setTranslate() {
33486      var swiper = this;
33487      if (swiper.params.effect !== 'cube') return;
33488      swiper.cubeEffect.setTranslate();
33489    },
33490    setTransition: function setTransition(duration) {
33491      var swiper = this;
33492      if (swiper.params.effect !== 'cube') return;
33493      swiper.cubeEffect.setTransition(duration);
33494    }
33495  }
33496};
33497
33498var Flip = {
33499  setTranslate: function setTranslate() {
33500    var swiper = this;
33501    var slides = swiper.slides,
33502        rtl = swiper.rtlTranslate;
33503
33504    for (var i = 0; i < slides.length; i += 1) {
33505      var $slideEl = slides.eq(i);
33506      var progress = $slideEl[0].progress;
33507      if (swiper.params.flipEffect.limitRotation) {
33508        progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
33509      }
33510      var offset$$1 = $slideEl[0].swiperSlideOffset;
33511      var rotate = -180 * progress;
33512      var rotateY = rotate;
33513      var rotateX = 0;
33514      var tx = -offset$$1;
33515      var ty = 0;
33516      if (!swiper.isHorizontal()) {
33517        ty = tx;
33518        tx = 0;
33519        rotateX = -rotateY;
33520        rotateY = 0;
33521      } else if (rtl) {
33522        rotateY = -rotateY;
33523      }
33524
33525      $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;
33526
33527      if (swiper.params.flipEffect.slideShadows) {
33528        // Set shadows
33529        var shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
33530        var shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
33531        if (shadowBefore.length === 0) {
33532          shadowBefore = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])('<div class="swiper-slide-shadow-' + (swiper.isHorizontal() ? 'left' : 'top') + '"></div>');
33533          $slideEl.append(shadowBefore);
33534        }
33535        if (shadowAfter.length === 0) {
33536          shadowAfter = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])('<div class="swiper-slide-shadow-' + (swiper.isHorizontal() ? 'right' : 'bottom') + '"></div>');
33537          $slideEl.append(shadowAfter);
33538        }
33539        if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);
33540        if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);
33541      }
33542      $slideEl.transform('translate3d(' + tx + 'px, ' + ty + 'px, 0px) rotateX(' + rotateX + 'deg) rotateY(' + rotateY + 'deg)');
33543    }
33544  },
33545  setTransition: function setTransition(duration) {
33546    var swiper = this;
33547    var slides = swiper.slides,
33548        activeIndex = swiper.activeIndex,
33549        $wrapperEl = swiper.$wrapperEl;
33550
33551    slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);
33552    if (swiper.params.virtualTranslate && duration !== 0) {
33553      var eventTriggered = false;
33554      // eslint-disable-next-line
33555      slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {
33556        if (eventTriggered) return;
33557        if (!swiper || swiper.destroyed) return;
33558        // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;
33559        eventTriggered = true;
33560        swiper.animating = false;
33561        var triggerEvents = ['webkitTransitionEnd', 'transitionend'];
33562        for (var i = 0; i < triggerEvents.length; i += 1) {
33563          $wrapperEl.trigger(triggerEvents[i]);
33564        }
33565      });
33566    }
33567  }
33568};
33569
33570var EffectFlip = {
33571  name: 'effect-flip',
33572  params: {
33573    flipEffect: {
33574      slideShadows: true,
33575      limitRotation: true
33576    }
33577  },
33578  create: function create() {
33579    var swiper = this;
33580    Utils.extend(swiper, {
33581      flipEffect: {
33582        setTranslate: Flip.setTranslate.bind(swiper),
33583        setTransition: Flip.setTransition.bind(swiper)
33584      }
33585    });
33586  },
33587
33588  on: {
33589    beforeInit: function beforeInit() {
33590      var swiper = this;
33591      if (swiper.params.effect !== 'flip') return;
33592      swiper.classNames.push(swiper.params.containerModifierClass + 'flip');
33593      swiper.classNames.push(swiper.params.containerModifierClass + '3d');
33594      var overwriteParams = {
33595        slidesPerView: 1,
33596        slidesPerColumn: 1,
33597        slidesPerGroup: 1,
33598        watchSlidesProgress: true,
33599        spaceBetween: 0,
33600        virtualTranslate: true
33601      };
33602      Utils.extend(swiper.params, overwriteParams);
33603      Utils.extend(swiper.originalParams, overwriteParams);
33604    },
33605    setTranslate: function setTranslate() {
33606      var swiper = this;
33607      if (swiper.params.effect !== 'flip') return;
33608      swiper.flipEffect.setTranslate();
33609    },
33610    setTransition: function setTransition(duration) {
33611      var swiper = this;
33612      if (swiper.params.effect !== 'flip') return;
33613      swiper.flipEffect.setTransition(duration);
33614    }
33615  }
33616};
33617
33618var Coverflow = {
33619  setTranslate: function setTranslate() {
33620    var swiper = this;
33621    var swiperWidth = swiper.width,
33622        swiperHeight = swiper.height,
33623        slides = swiper.slides,
33624        $wrapperEl = swiper.$wrapperEl,
33625        slidesSizesGrid = swiper.slidesSizesGrid;
33626
33627    var params = swiper.params.coverflowEffect;
33628    var isHorizontal = swiper.isHorizontal();
33629    var transform$$1 = swiper.translate;
33630    var center = isHorizontal ? -transform$$1 + swiperWidth / 2 : -transform$$1 + swiperHeight / 2;
33631    var rotate = isHorizontal ? params.rotate : -params.rotate;
33632    var translate = params.depth;
33633    // Each slide offset from center
33634    for (var i = 0, length = slides.length; i < length; i += 1) {
33635      var $slideEl = slides.eq(i);
33636      var slideSize = slidesSizesGrid[i];
33637      var slideOffset = $slideEl[0].swiperSlideOffset;
33638      var offsetMultiplier = (center - slideOffset - slideSize / 2) / slideSize * params.modifier;
33639
33640      var rotateY = isHorizontal ? rotate * offsetMultiplier : 0;
33641      var rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;
33642      // var rotateZ = 0
33643      var translateZ = -translate * Math.abs(offsetMultiplier);
33644
33645      var translateY = isHorizontal ? 0 : params.stretch * offsetMultiplier;
33646      var translateX = isHorizontal ? params.stretch * offsetMultiplier : 0;
33647
33648      // Fix for ultra small values
33649      if (Math.abs(translateX) < 0.001) translateX = 0;
33650      if (Math.abs(translateY) < 0.001) translateY = 0;
33651      if (Math.abs(translateZ) < 0.001) translateZ = 0;
33652      if (Math.abs(rotateY) < 0.001) rotateY = 0;
33653      if (Math.abs(rotateX) < 0.001) rotateX = 0;
33654
33655      var slideTransform = 'translate3d(' + translateX + 'px,' + translateY + 'px,' + translateZ + 'px)  rotateX(' + rotateX + 'deg) rotateY(' + rotateY + 'deg)';
33656
33657      $slideEl.transform(slideTransform);
33658      $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;
33659      if (params.slideShadows) {
33660        // Set shadows
33661        var $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
33662        var $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
33663        if ($shadowBeforeEl.length === 0) {
33664          $shadowBeforeEl = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])('<div class="swiper-slide-shadow-' + (isHorizontal ? 'left' : 'top') + '"></div>');
33665          $slideEl.append($shadowBeforeEl);
33666        }
33667        if ($shadowAfterEl.length === 0) {
33668          $shadowAfterEl = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])('<div class="swiper-slide-shadow-' + (isHorizontal ? 'right' : 'bottom') + '"></div>');
33669          $slideEl.append($shadowAfterEl);
33670        }
33671        if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;
33672        if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;
33673      }
33674    }
33675
33676    // Set correct perspective for IE10
33677    if (Support.pointerEvents || Support.prefixedPointerEvents) {
33678      var ws = $wrapperEl[0].style;
33679      ws.perspectiveOrigin = center + 'px 50%';
33680    }
33681  },
33682  setTransition: function setTransition(duration) {
33683    var swiper = this;
33684    swiper.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);
33685  }
33686};
33687
33688var EffectCoverflow = {
33689  name: 'effect-coverflow',
33690  params: {
33691    coverflowEffect: {
33692      rotate: 50,
33693      stretch: 0,
33694      depth: 100,
33695      modifier: 1,
33696      slideShadows: true
33697    }
33698  },
33699  create: function create() {
33700    var swiper = this;
33701    Utils.extend(swiper, {
33702      coverflowEffect: {
33703        setTranslate: Coverflow.setTranslate.bind(swiper),
33704        setTransition: Coverflow.setTransition.bind(swiper)
33705      }
33706    });
33707  },
33708
33709  on: {
33710    beforeInit: function beforeInit() {
33711      var swiper = this;
33712      if (swiper.params.effect !== 'coverflow') return;
33713
33714      swiper.classNames.push(swiper.params.containerModifierClass + 'coverflow');
33715      swiper.classNames.push(swiper.params.containerModifierClass + '3d');
33716
33717      swiper.params.watchSlidesProgress = true;
33718      swiper.originalParams.watchSlidesProgress = true;
33719    },
33720    setTranslate: function setTranslate() {
33721      var swiper = this;
33722      if (swiper.params.effect !== 'coverflow') return;
33723      swiper.coverflowEffect.setTranslate();
33724    },
33725    setTransition: function setTransition(duration) {
33726      var swiper = this;
33727      if (swiper.params.effect !== 'coverflow') return;
33728      swiper.coverflowEffect.setTransition(duration);
33729    }
33730  }
33731};
33732
33733var Thumbs = {
33734  init: function init() {
33735    var swiper = this;
33736    var thumbsParams = swiper.params.thumbs;
33737
33738    var SwiperClass = swiper.constructor;
33739    if (thumbsParams.swiper instanceof SwiperClass) {
33740      swiper.thumbs.swiper = thumbsParams.swiper;
33741      Utils.extend(swiper.thumbs.swiper.originalParams, {
33742        watchSlidesProgress: true,
33743        slideToClickedSlide: false
33744      });
33745      Utils.extend(swiper.thumbs.swiper.params, {
33746        watchSlidesProgress: true,
33747        slideToClickedSlide: false
33748      });
33749    } else if (Utils.isObject(thumbsParams.swiper)) {
33750      swiper.thumbs.swiper = new SwiperClass(Utils.extend({}, thumbsParams.swiper, {
33751        watchSlidesVisibility: true,
33752        watchSlidesProgress: true,
33753        slideToClickedSlide: false
33754      }));
33755      swiper.thumbs.swiperCreated = true;
33756    }
33757    swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);
33758    swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);
33759  },
33760  onThumbClick: function onThumbClick() {
33761    var swiper = this;
33762    var thumbsSwiper = swiper.thumbs.swiper;
33763    if (!thumbsSwiper) return;
33764    var clickedIndex = thumbsSwiper.clickedIndex;
33765    var clickedSlide = thumbsSwiper.clickedSlide;
33766    if (clickedSlide && Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;
33767    if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;
33768    var slideToIndex = void 0;
33769    if (thumbsSwiper.params.loop) {
33770      slideToIndex = parseInt(Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);
33771    } else {
33772      slideToIndex = clickedIndex;
33773    }
33774    if (swiper.params.loop) {
33775      var currentIndex = swiper.activeIndex;
33776      if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {
33777        swiper.loopFix();
33778        // eslint-disable-next-line
33779        swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
33780        currentIndex = swiper.activeIndex;
33781      }
33782      var prevIndex = swiper.slides.eq(currentIndex).prevAll('[data-swiper-slide-index="' + slideToIndex + '"]').eq(0).index();
33783      var nextIndex = swiper.slides.eq(currentIndex).nextAll('[data-swiper-slide-index="' + slideToIndex + '"]').eq(0).index();
33784      if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex;
33785    }
33786    swiper.slideTo(slideToIndex);
33787  },
33788  update: function update(initial) {
33789    var swiper = this;
33790    var thumbsSwiper = swiper.thumbs.swiper;
33791    if (!thumbsSwiper) return;
33792
33793    var slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;
33794
33795    if (swiper.realIndex !== thumbsSwiper.realIndex) {
33796      var currentThumbsIndex = thumbsSwiper.activeIndex;
33797      var newThumbsIndex = void 0;
33798      if (thumbsSwiper.params.loop) {
33799        if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {
33800          thumbsSwiper.loopFix();
33801          // eslint-disable-next-line
33802          thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;
33803          currentThumbsIndex = thumbsSwiper.activeIndex;
33804        }
33805        // Find actual thumbs index to slide to
33806        var prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll('[data-swiper-slide-index="' + swiper.realIndex + '"]').eq(0).index();
33807        var nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll('[data-swiper-slide-index="' + swiper.realIndex + '"]').eq(0).index();
33808        if (typeof prevThumbsIndex === 'undefined') newThumbsIndex = nextThumbsIndex;else if (typeof nextThumbsIndex === 'undefined') newThumbsIndex = prevThumbsIndex;else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) newThumbsIndex = currentThumbsIndex;else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) newThumbsIndex = nextThumbsIndex;else newThumbsIndex = prevThumbsIndex;
33809      } else {
33810        newThumbsIndex = swiper.realIndex;
33811      }
33812      if (thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {
33813        if (thumbsSwiper.params.centeredSlides) {
33814          if (newThumbsIndex > currentThumbsIndex) {
33815            newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;
33816          } else {
33817            newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;
33818          }
33819        } else if (newThumbsIndex > currentThumbsIndex) {
33820          newThumbsIndex = newThumbsIndex - slidesPerView + 1;
33821        }
33822        thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);
33823      }
33824    }
33825
33826    // Activate thumbs
33827    var thumbsToActivate = 1;
33828    var thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;
33829
33830    if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {
33831      thumbsToActivate = swiper.params.slidesPerView;
33832    }
33833
33834    thumbsSwiper.slides.removeClass(thumbActiveClass);
33835    if (thumbsSwiper.params.loop) {
33836      for (var i = 0; i < thumbsToActivate; i += 1) {
33837        thumbsSwiper.$wrapperEl.children('[data-swiper-slide-index="' + (swiper.realIndex + i) + '"]').addClass(thumbActiveClass);
33838      }
33839    } else {
33840      for (var _i12 = 0; _i12 < thumbsToActivate; _i12 += 1) {
33841        thumbsSwiper.slides.eq(swiper.realIndex + _i12).addClass(thumbActiveClass);
33842      }
33843    }
33844  }
33845};
33846var Thumbs$1 = {
33847  name: 'thumbs',
33848  params: {
33849    thumbs: {
33850      swiper: null,
33851      slideThumbActiveClass: 'swiper-slide-thumb-active',
33852      thumbsContainerClass: 'swiper-container-thumbs'
33853    }
33854  },
33855  create: function create() {
33856    var swiper = this;
33857    Utils.extend(swiper, {
33858      thumbs: {
33859        swiper: null,
33860        init: Thumbs.init.bind(swiper),
33861        update: Thumbs.update.bind(swiper),
33862        onThumbClick: Thumbs.onThumbClick.bind(swiper)
33863      }
33864    });
33865  },
33866
33867  on: {
33868    beforeInit: function beforeInit() {
33869      var swiper = this;
33870      var thumbs = swiper.params.thumbs;
33871
33872      if (!thumbs || !thumbs.swiper) return;
33873      swiper.thumbs.init();
33874      swiper.thumbs.update(true);
33875    },
33876    slideChange: function slideChange() {
33877      var swiper = this;
33878      if (!swiper.thumbs.swiper) return;
33879      swiper.thumbs.update();
33880    },
33881    update: function update() {
33882      var swiper = this;
33883      if (!swiper.thumbs.swiper) return;
33884      swiper.thumbs.update();
33885    },
33886    resize: function resize() {
33887      var swiper = this;
33888      if (!swiper.thumbs.swiper) return;
33889      swiper.thumbs.update();
33890    },
33891    observerUpdate: function observerUpdate() {
33892      var swiper = this;
33893      if (!swiper.thumbs.swiper) return;
33894      swiper.thumbs.update();
33895    },
33896    setTransition: function setTransition(duration) {
33897      var swiper = this;
33898      var thumbsSwiper = swiper.thumbs.swiper;
33899      if (!thumbsSwiper) return;
33900      thumbsSwiper.setTransition(duration);
33901    },
33902    beforeDestroy: function beforeDestroy() {
33903      var swiper = this;
33904      var thumbsSwiper = swiper.thumbs.swiper;
33905      if (!thumbsSwiper) return;
33906      if (swiper.thumbs.swiperCreated && thumbsSwiper) {
33907        thumbsSwiper.destroy();
33908      }
33909    }
33910  }
33911};
33912
33913// Swiper Class
33914
33915var components = [Device$1, Support$1, Browser$1, Resize, Observer$1, Virtual$1, Keyboard$1, Mousewheel$1, Navigation$1, Pagination$1, Scrollbar$1, Parallax$1, Zoom$1, Lazy$1, Controller$1, A11y, History$1, HashNavigation$1, Autoplay$1, EffectFade, EffectCube, EffectFlip, EffectCoverflow, Thumbs$1];
33916
33917if (typeof Swiper.use === 'undefined') {
33918  Swiper.use = Swiper.Class.use;
33919  Swiper.installModule = Swiper.Class.installModule;
33920}
33921
33922Swiper.use(components);
33923
33924/* harmony default export */ __webpack_exports__["default"] = (Swiper);
33925
33926/***/ }),
33927
vendor: 41,478 bytes, lines 33928-34832
33928/***/ "./node_modules/ua-parser-js/src/ua-parser.js":
33929/*!****************************************************!*\
33930  !*** ./node_modules/ua-parser-js/src/ua-parser.js ***!
33931  \****************************************************/
33932/*! no static exports found */
33933/***/ (function(module, exports, __webpack_require__) {
33934
33935var __WEBPACK_AMD_DEFINE_RESULT__;/*!
33936 * UAParser.js v0.7.20
33937 * Lightweight JavaScript-based User-Agent string parser
33938 * https://github.com/faisalman/ua-parser-js
33939 *
33940 * Copyright © 2012-2019 Faisal Salman <[email protected]>
33941 * Licensed under MIT License
33942 */
33943
33944(function (window, undefined) {
33945
33946    'use strict';
33947
33948    //////////////
33949    // Constants
33950    /////////////
33951
33952
33953    var LIBVERSION  = '0.7.20',
33954        EMPTY       = '',
33955        UNKNOWN     = '?',
33956        FUNC_TYPE   = 'function',
33957        UNDEF_TYPE  = 'undefined',
33958        OBJ_TYPE    = 'object',
33959        STR_TYPE    = 'string',
33960        MAJOR       = 'major', // deprecated
33961        MODEL       = 'model',
33962        NAME        = 'name',
33963        TYPE        = 'type',
33964        VENDOR      = 'vendor',
33965        VERSION     = 'version',
33966        ARCHITECTURE= 'architecture',
33967        CONSOLE     = 'console',
33968        MOBILE      = 'mobile',
33969        TABLET      = 'tablet',
33970        SMARTTV     = 'smarttv',
33971        WEARABLE    = 'wearable',
33972        EMBEDDED    = 'embedded';
33973
33974
33975    ///////////
33976    // Helper
33977    //////////
33978
33979
33980    var util = {
33981        extend : function (regexes, extensions) {
33982            var mergedRegexes = {};
33983            for (var i in regexes) {
33984                if (extensions[i] && extensions[i].length % 2 === 0) {
33985                    mergedRegexes[i] = extensions[i].concat(regexes[i]);
33986                } else {
33987                    mergedRegexes[i] = regexes[i];
33988                }
33989            }
33990            return mergedRegexes;
33991        },
33992        has : function (str1, str2) {
33993          if (typeof str1 === "string") {
33994            return str2.toLowerCase().indexOf(str1.toLowerCase()) !== -1;
33995          } else {
33996            return false;
33997          }
33998        },
33999        lowerize : function (str) {
34000            return str.toLowerCase();
34001        },
34002        major : function (version) {
34003            return typeof(version) === STR_TYPE ? version.replace(/[^\d\.]/g,'').split(".")[0] : undefined;
34004        },
34005        trim : function (str) {
34006          return str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
34007        }
34008    };
34009
34010
34011    ///////////////
34012    // Map helper
34013    //////////////
34014
34015
34016    var mapper = {
34017
34018        rgx : function (ua, arrays) {
34019
34020            var i = 0, j, k, p, q, matches, match;
34021
34022            // loop through all regexes maps
34023            while (i < arrays.length && !matches) {
34024
34025                var regex = arrays[i],       // even sequence (0,2,4,..)
34026                    props = arrays[i + 1];   // odd sequence (1,3,5,..)
34027                j = k = 0;
34028
34029                // try matching uastring with regexes
34030                while (j < regex.length && !matches) {
34031
34032                    matches = regex[j++].exec(ua);
34033
34034                    if (!!matches) {
34035                        for (p = 0; p < props.length; p++) {
34036                            match = matches[++k];
34037                            q = props[p];
34038                            // check if given property is actually array
34039                            if (typeof q === OBJ_TYPE && q.length > 0) {
34040                                if (q.length == 2) {
34041                                    if (typeof q[1] == FUNC_TYPE) {
34042                                        // assign modified match
34043                                        this[q[0]] = q[1].call(this, match);
34044                                    } else {
34045                                        // assign given value, ignore regex match
34046                                        this[q[0]] = q[1];
34047                                    }
34048                                } else if (q.length == 3) {
34049                                    // check whether function or regex
34050                                    if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {
34051                                        // call function (usually string mapper)
34052                                        this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;
34053                                    } else {
34054                                        // sanitize match using given regex
34055                                        this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;
34056                                    }
34057                                } else if (q.length == 4) {
34058                                        this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;
34059                                }
34060                            } else {
34061                                this[q] = match ? match : undefined;
34062                            }
34063                        }
34064                    }
34065                }
34066                i += 2;
34067            }
34068        },
34069
34070        str : function (str, map) {
34071
34072            for (var i in map) {
34073                // check if array
34074                if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {
34075                    for (var j = 0; j < map[i].length; j++) {
34076                        if (util.has(map[i][j], str)) {
34077                            return (i === UNKNOWN) ? undefined : i;
34078                        }
34079                    }
34080                } else if (util.has(map[i], str)) {
34081                    return (i === UNKNOWN) ? undefined : i;
34082                }
34083            }
34084            return str;
34085        }
34086    };
34087
34088
34089    ///////////////
34090    // String map
34091    //////////////
34092
34093
34094    var maps = {
34095
34096        browser : {
34097            oldsafari : {
34098                version : {
34099                    '1.0'   : '/8',
34100                    '1.2'   : '/1',
34101                    '1.3'   : '/3',
34102                    '2.0'   : '/412',
34103                    '2.0.2' : '/416',
34104                    '2.0.3' : '/417',
34105                    '2.0.4' : '/419',
34106                    '?'     : '/'
34107                }
34108            }
34109        },
34110
34111        device : {
34112            amazon : {
34113                model : {
34114                    'Fire Phone' : ['SD', 'KF']
34115                }
34116            },
34117            sprint : {
34118                model : {
34119                    'Evo Shift 4G' : '7373KT'
34120                },
34121                vendor : {
34122                    'HTC'       : 'APA',
34123                    'Sprint'    : 'Sprint'
34124                }
34125            }
34126        },
34127
34128        os : {
34129            windows : {
34130                version : {
34131                    'ME'        : '4.90',
34132                    'NT 3.11'   : 'NT3.51',
34133                    'NT 4.0'    : 'NT4.0',
34134                    '2000'      : 'NT 5.0',
34135                    'XP'        : ['NT 5.1', 'NT 5.2'],
34136                    'Vista'     : 'NT 6.0',
34137                    '7'         : 'NT 6.1',
34138                    '8'         : 'NT 6.2',
34139                    '8.1'       : 'NT 6.3',
34140                    '10'        : ['NT 6.4', 'NT 10.0'],
34141                    'RT'        : 'ARM'
34142                }
34143            }
34144        }
34145    };
34146
34147
34148    //////////////
34149    // Regex map
34150    /////////////
34151
34152
34153    var regexes = {
34154
34155        browser : [[
34156
34157            // Presto based
34158            /(opera\smini)\/([\w\.-]+)/i,                                       // Opera Mini
34159            /(opera\s[mobiletab]+).+version\/([\w\.-]+)/i,                      // Opera Mobi/Tablet
34160            /(opera).+version\/([\w\.]+)/i,                                     // Opera > 9.80
34161            /(opera)[\/\s]+([\w\.]+)/i                                          // Opera < 9.80
34162            ], [NAME, VERSION], [
34163
34164            /(opios)[\/\s]+([\w\.]+)/i                                          // Opera mini on iphone >= 8.0
34165            ], [[NAME, 'Opera Mini'], VERSION], [
34166
34167            /\s(opr)\/([\w\.]+)/i                                               // Opera Webkit
34168            ], [[NAME, 'Opera'], VERSION], [
34169
34170            // Mixed
34171            /(kindle)\/([\w\.]+)/i,                                             // Kindle
34172            /(lunascape|maxthon|netfront|jasmine|blazer)[\/\s]?([\w\.]*)/i,
34173                                                                                // Lunascape/Maxthon/Netfront/Jasmine/Blazer
34174
34175            // Trident based
34176            /(avant\s|iemobile|slim|baidu)(?:browser)?[\/\s]?([\w\.]*)/i,
34177                                                                                // Avant/IEMobile/SlimBrowser/Baidu
34178            /(?:ms|\()(ie)\s([\w\.]+)/i,                                        // Internet Explorer
34179
34180            // Webkit/KHTML based
34181            /(rekonq)\/([\w\.]*)/i,                                             // Rekonq
34182            /(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon)\/([\w\.-]+)/i
34183                                                                                // Chromium/Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon
34184            ], [NAME, VERSION], [
34185
34186            /(konqueror)\/([\w\.]+)/i                                           // Konqueror
34187            ], [[NAME, 'Konqueror'], VERSION], [
34188
34189            /(trident).+rv[:\s]([\w\.]+).+like\sgecko/i                         // IE11
34190            ], [[NAME, 'IE'], VERSION], [
34191
34192            /(edge|edgios|edga|edg)\/((\d+)?[\w\.]+)/i                          // Microsoft Edge
34193            ], [[NAME, 'Edge'], VERSION], [
34194
34195            /(yabrowser)\/([\w\.]+)/i                                           // Yandex
34196            ], [[NAME, 'Yandex'], VERSION], [
34197
34198            /(puffin)\/([\w\.]+)/i                                              // Puffin
34199            ], [[NAME, 'Puffin'], VERSION], [
34200
34201            /(focus)\/([\w\.]+)/i                                               // Firefox Focus
34202            ], [[NAME, 'Firefox Focus'], VERSION], [
34203
34204            /(opt)\/([\w\.]+)/i                                                 // Opera Touch
34205            ], [[NAME, 'Opera Touch'], VERSION], [
34206
34207            /((?:[\s\/])uc?\s?browser|(?:juc.+)ucweb)[\/\s]?([\w\.]+)/i         // UCBrowser
34208            ], [[NAME, 'UCBrowser'], VERSION], [
34209
34210            /(comodo_dragon)\/([\w\.]+)/i                                       // Comodo Dragon
34211            ], [[NAME, /_/g, ' '], VERSION], [
34212
34213            /(windowswechat qbcore)\/([\w\.]+)/i                                // WeChat Desktop for Windows Built-in Browser
34214            ], [[NAME, 'WeChat(Win) Desktop'], VERSION], [
34215
34216            /(micromessenger)\/([\w\.]+)/i                                      // WeChat
34217            ], [[NAME, 'WeChat'], VERSION], [
34218
34219            /(brave)\/([\w\.]+)/i                                              // Brave browser
34220            ], [[NAME, 'Brave'], VERSION], [
34221
34222            /(qqbrowserlite)\/([\w\.]+)/i                                       // QQBrowserLite
34223            ], [NAME, VERSION], [
34224
34225            /(QQ)\/([\d\.]+)/i                                                  // QQ, aka ShouQ
34226            ], [NAME, VERSION], [
34227
34228            /m?(qqbrowser)[\/\s]?([\w\.]+)/i                                    // QQBrowser
34229            ], [NAME, VERSION], [
34230
34231            /(BIDUBrowser)[\/\s]?([\w\.]+)/i                                    // Baidu Browser
34232            ], [NAME, VERSION], [
34233
34234            /(2345Explorer)[\/\s]?([\w\.]+)/i                                   // 2345 Browser
34235            ], [NAME, VERSION], [
34236
34237            /(MetaSr)[\/\s]?([\w\.]+)/i                                         // SouGouBrowser
34238            ], [NAME], [
34239
34240            /(LBBROWSER)/i                                      // LieBao Browser
34241            ], [NAME], [
34242
34243            /xiaomi\/miuibrowser\/([\w\.]+)/i                                   // MIUI Browser
34244            ], [VERSION, [NAME, 'MIUI Browser']], [
34245
34246            /;fbav\/([\w\.]+);/i                                                // Facebook App for iOS & Android
34247            ], [VERSION, [NAME, 'Facebook']], [
34248
34249            /safari\s(line)\/([\w\.]+)/i,                                       // Line App for iOS
34250            /android.+(line)\/([\w\.]+)\/iab/i                                  // Line App for Android
34251            ], [NAME, VERSION], [
34252
34253            /headlesschrome(?:\/([\w\.]+)|\s)/i                                 // Chrome Headless
34254            ], [VERSION, [NAME, 'Chrome Headless']], [
34255
34256            /\swv\).+(chrome)\/([\w\.]+)/i                                      // Chrome WebView
34257            ], [[NAME, /(.+)/, '$1 WebView'], VERSION], [
34258
34259            /((?:oculus|samsung)browser)\/([\w\.]+)/i
34260            ], [[NAME, /(.+(?:g|us))(.+)/, '$1 $2'], VERSION], [                // Oculus / Samsung Browser
34261
34262            /android.+version\/([\w\.]+)\s+(?:mobile\s?safari|safari)*/i        // Android Browser
34263            ], [VERSION, [NAME, 'Android Browser']], [
34264
34265            /(sailfishbrowser)\/([\w\.]+)/i                                     // Sailfish Browser
34266            ], [[NAME, 'Sailfish Browser'], VERSION], [
34267
34268            /(chrome|omniweb|arora|[tizenoka]{5}\s?browser)\/v?([\w\.]+)/i
34269                                                                                // Chrome/OmniWeb/Arora/Tizen/Nokia
34270            ], [NAME, VERSION], [
34271
34272            /(dolfin)\/([\w\.]+)/i                                              // Dolphin
34273            ], [[NAME, 'Dolphin'], VERSION], [
34274
34275            /((?:android.+)crmo|crios)\/([\w\.]+)/i                             // Chrome for Android/iOS
34276            ], [[NAME, 'Chrome'], VERSION], [
34277
34278            /(coast)\/([\w\.]+)/i                                               // Opera Coast
34279            ], [[NAME, 'Opera Coast'], VERSION], [
34280
34281            /fxios\/([\w\.-]+)/i                                                // Firefox for iOS
34282            ], [VERSION, [NAME, 'Firefox']], [
34283
34284            /version\/([\w\.]+).+?mobile\/\w+\s(safari)/i                       // Mobile Safari
34285            ], [VERSION, [NAME, 'Mobile Safari']], [
34286
34287            /version\/([\w\.]+).+?(mobile\s?safari|safari)/i                    // Safari & Safari Mobile
34288            ], [VERSION, NAME], [
34289
34290            /webkit.+?(gsa)\/([\w\.]+).+?(mobile\s?safari|safari)(\/[\w\.]+)/i  // Google Search Appliance on iOS
34291            ], [[NAME, 'GSA'], VERSION], [
34292
34293            /webkit.+?(mobile\s?safari|safari)(\/[\w\.]+)/i                     // Safari < 3.0
34294            ], [NAME, [VERSION, mapper.str, maps.browser.oldsafari.version]], [
34295
34296            /(webkit|khtml)\/([\w\.]+)/i
34297            ], [NAME, VERSION], [
34298
34299            // Gecko based
34300            /(navigator|netscape)\/([\w\.-]+)/i                                 // Netscape
34301            ], [[NAME, 'Netscape'], VERSION], [
34302            /(swiftfox)/i,                                                      // Swiftfox
34303            /(icedragon|iceweasel|camino|chimera|fennec|maemo\sbrowser|minimo|conkeror)[\/\s]?([\w\.\+]+)/i,
34304                                                                                // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror
34305            /(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([\w\.-]+)$/i,
34306
34307                                                                                // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix
34308            /(mozilla)\/([\w\.]+).+rv\:.+gecko\/\d+/i,                          // Mozilla
34309
34310            // Other
34311            /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir)[\/\s]?([\w\.]+)/i,
34312                                                                                // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir
34313            /(links)\s\(([\w\.]+)/i,                                            // Links
34314            /(gobrowser)\/?([\w\.]*)/i,                                         // GoBrowser
34315            /(ice\s?browser)\/v?([\w\._]+)/i,                                   // ICE Browser
34316            /(mosaic)[\/\s]([\w\.]+)/i                                          // Mosaic
34317            ], [NAME, VERSION]
34318        ],
34319
34320        cpu : [[
34321
34322            /(?:(amd|x(?:(?:86|64)[_-])?|wow|win)64)[;\)]/i                     // AMD64
34323            ], [[ARCHITECTURE, 'amd64']], [
34324
34325            /(ia32(?=;))/i                                                      // IA32 (quicktime)
34326            ], [[ARCHITECTURE, util.lowerize]], [
34327
34328            /((?:i[346]|x)86)[;\)]/i                                            // IA32
34329            ], [[ARCHITECTURE, 'ia32']], [
34330
34331            // PocketPC mistakenly identified as PowerPC
34332            /windows\s(ce|mobile);\sppc;/i
34333            ], [[ARCHITECTURE, 'arm']], [
34334
34335            /((?:ppc|powerpc)(?:64)?)(?:\smac|;|\))/i                           // PowerPC
34336            ], [[ARCHITECTURE, /ower/, '', util.lowerize]], [
34337
34338            /(sun4\w)[;\)]/i                                                    // SPARC
34339            ], [[ARCHITECTURE, 'sparc']], [
34340
34341            /((?:avr32|ia64(?=;))|68k(?=\))|arm(?:64|(?=v\d+[;l]))|(?=atmel\s)avr|(?:irix|mips|sparc)(?:64)?(?=;)|pa-risc)/i
34342                                                                                // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC
34343            ], [[ARCHITECTURE, util.lowerize]]
34344        ],
34345
34346        device : [[
34347
34348            /\((ipad|playbook);[\w\s\),;-]+(rim|apple)/i                        // iPad/PlayBook
34349            ], [MODEL, VENDOR, [TYPE, TABLET]], [
34350
34351            /applecoremedia\/[\w\.]+ \((ipad)/                                  // iPad
34352            ], [MODEL, [VENDOR, 'Apple'], [TYPE, TABLET]], [
34353
34354            /(apple\s{0,1}tv)/i                                                 // Apple TV
34355            ], [[MODEL, 'Apple TV'], [VENDOR, 'Apple']], [
34356
34357            /(archos)\s(gamepad2?)/i,                                           // Archos
34358            /(hp).+(touchpad)/i,                                                // HP TouchPad
34359            /(hp).+(tablet)/i,                                                  // HP Tablet
34360            /(kindle)\/([\w\.]+)/i,                                             // Kindle
34361            /\s(nook)[\w\s]+build\/(\w+)/i,                                     // Nook
34362            /(dell)\s(strea[kpr\s\d]*[\dko])/i                                  // Dell Streak
34363            ], [VENDOR, MODEL, [TYPE, TABLET]], [
34364
34365            /(kf[A-z]+)\sbuild\/.+silk\//i                                      // Kindle Fire HD
34366            ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [
34367            /(sd|kf)[0349hijorstuw]+\sbuild\/.+silk\//i                         // Fire Phone
34368            ], [[MODEL, mapper.str, maps.device.amazon.model], [VENDOR, 'Amazon'], [TYPE, MOBILE]], [
34369            /android.+aft([bms])\sbuild/i                                       // Fire TV
34370            ], [MODEL, [VENDOR, 'Amazon'], [TYPE, SMARTTV]], [
34371
34372            /\((ip[honed|\s\w*]+);.+(apple)/i                                   // iPod/iPhone
34373            ], [MODEL, VENDOR, [TYPE, MOBILE]], [
34374            /\((ip[honed|\s\w*]+);/i                                            // iPod/iPhone
34375            ], [MODEL, [VENDOR, 'Apple'], [TYPE, MOBILE]], [
34376
34377            /(blackberry)[\s-]?(\w+)/i,                                         // BlackBerry
34378            /(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[\s_-]?([\w-]*)/i,
34379                                                                                // BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron
34380            /(hp)\s([\w\s]+\w)/i,                                               // HP iPAQ
34381            /(asus)-?(\w+)/i                                                    // Asus
34382            ], [VENDOR, MODEL, [TYPE, MOBILE]], [
34383            /\(bb10;\s(\w+)/i                                                   // BlackBerry 10
34384            ], [MODEL, [VENDOR, 'BlackBerry'], [TYPE, MOBILE]], [
34385                                                                                // Asus Tablets
34386            /android.+(transfo[prime\s]{4,10}\s\w+|eeepc|slider\s\w+|nexus 7|padfone|p00c)/i
34387            ], [MODEL, [VENDOR, 'Asus'], [TYPE, TABLET]], [
34388
34389            /(sony)\s(tablet\s[ps])\sbuild\//i,                                  // Sony
34390            /(sony)?(?:sgp.+)\sbuild\//i
34391            ], [[VENDOR, 'Sony'], [MODEL, 'Xperia Tablet'], [TYPE, TABLET]], [
34392            /android.+\s([c-g]\d{4}|so[-l]\w+)(?=\sbuild\/|\).+chrome\/(?![1-6]{0,1}\d\.))/i
34393            ], [MODEL, [VENDOR, 'Sony'], [TYPE, MOBILE]], [
34394
34395            /\s(ouya)\s/i,                                                      // Ouya
34396            /(nintendo)\s([wids3u]+)/i                                          // Nintendo
34397            ], [VENDOR, MODEL, [TYPE, CONSOLE]], [
34398
34399            /android.+;\s(shield)\sbuild/i                                      // Nvidia
34400            ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [
34401
34402            /(playstation\s[34portablevi]+)/i                                   // Playstation
34403            ], [MODEL, [VENDOR, 'Sony'], [TYPE, CONSOLE]], [
34404
34405            /(sprint\s(\w+))/i                                                  // Sprint Phones
34406            ], [[VENDOR, mapper.str, maps.device.sprint.vendor], [MODEL, mapper.str, maps.device.sprint.model], [TYPE, MOBILE]], [
34407
34408            /(htc)[;_\s-]+([\w\s]+(?=\)|\sbuild)|\w+)/i,                        // HTC
34409            /(zte)-(\w*)/i,                                                     // ZTE
34410            /(alcatel|geeksphone|nexian|panasonic|(?=;\s)sony)[_\s-]?([\w-]*)/i
34411                                                                                // Alcatel/GeeksPhone/Nexian/Panasonic/Sony
34412            ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [
34413
34414            /(nexus\s9)/i                                                       // HTC Nexus 9
34415            ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [
34416
34417            /d\/huawei([\w\s-]+)[;\)]/i,
34418            /(nexus\s6p)/i                                                      // Huawei
34419            ], [MODEL, [VENDOR, 'Huawei'], [TYPE, MOBILE]], [
34420
34421            /(microsoft);\s(lumia[\s\w]+)/i                                     // Microsoft Lumia
34422            ], [VENDOR, MODEL, [TYPE, MOBILE]], [
34423
34424            /[\s\(;](xbox(?:\sone)?)[\s\);]/i                                   // Microsoft Xbox
34425            ], [MODEL, [VENDOR, 'Microsoft'], [TYPE, CONSOLE]], [
34426            /(kin\.[onetw]{3})/i                                                // Microsoft Kin
34427            ], [[MODEL, /\./g, ' '], [VENDOR, 'Microsoft'], [TYPE, MOBILE]], [
34428
34429                                                                                // Motorola
34430            /\s(milestone|droid(?:[2-4x]|\s(?:bionic|x2|pro|razr))?:?(\s4g)?)[\w\s]+build\//i,
34431            /mot[\s-]?(\w*)/i,
34432            /(XT\d{3,4}) build\//i,
34433            /(nexus\s6)/i
34434            ], [MODEL, [VENDOR, 'Motorola'], [TYPE, MOBILE]], [
34435            /android.+\s(mz60\d|xoom[\s2]{0,2})\sbuild\//i
34436            ], [MODEL, [VENDOR, 'Motorola'], [TYPE, TABLET]], [
34437
34438            /hbbtv\/\d+\.\d+\.\d+\s+\([\w\s]*;\s*(\w[^;]*);([^;]*)/i            // HbbTV devices
34439            ], [[VENDOR, util.trim], [MODEL, util.trim], [TYPE, SMARTTV]], [
34440
34441            /hbbtv.+maple;(\d+)/i
34442            ], [[MODEL, /^/, 'SmartTV'], [VENDOR, 'Samsung'], [TYPE, SMARTTV]], [
34443
34444            /\(dtv[\);].+(aquos)/i                                              // Sharp
34445            ], [MODEL, [VENDOR, 'Sharp'], [TYPE, SMARTTV]], [
34446
34447            /android.+((sch-i[89]0\d|shw-m380s|gt-p\d{4}|gt-n\d+|sgh-t8[56]9|nexus 10))/i,
34448            /((SM-T\w+))/i
34449            ], [[VENDOR, 'Samsung'], MODEL, [TYPE, TABLET]], [                  // Samsung
34450            /smart-tv.+(samsung)/i
34451            ], [VENDOR, [TYPE, SMARTTV], MODEL], [
34452            /((s[cgp]h-\w+|gt-\w+|galaxy\snexus|sm-\w[\w\d]+))/i,
34453            /(sam[sung]*)[\s-]*(\w+-?[\w-]*)/i,
34454            /sec-((sgh\w+))/i
34455            ], [[VENDOR, 'Samsung'], MODEL, [TYPE, MOBILE]], [
34456
34457            /sie-(\w*)/i                                                        // Siemens
34458            ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [
34459
34460            /(maemo|nokia).*(n900|lumia\s\d+)/i,                                // Nokia
34461            /(nokia)[\s_-]?([\w-]*)/i
34462            ], [[VENDOR, 'Nokia'], MODEL, [TYPE, MOBILE]], [
34463
34464            /android[x\d\.\s;]+\s([ab][1-7]\-?[0178a]\d\d?)/i                   // Acer
34465            ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [
34466
34467            /android.+([vl]k\-?\d{3})\s+build/i                                 // LG Tablet
34468            ], [MODEL, [VENDOR, 'LG'], [TYPE, TABLET]], [
34469            /android\s3\.[\s\w;-]{10}(lg?)-([06cv9]{3,4})/i                     // LG Tablet
34470            ], [[VENDOR, 'LG'], MODEL, [TYPE, TABLET]], [
34471            /(lg) netcast\.tv/i                                                 // LG SmartTV
34472            ], [VENDOR, MODEL, [TYPE, SMARTTV]], [
34473            /(nexus\s[45])/i,                                                   // LG
34474            /lg[e;\s\/-]+(\w*)/i,
34475            /android.+lg(\-?[\d\w]+)\s+build/i
34476            ], [MODEL, [VENDOR, 'LG'], [TYPE, MOBILE]], [
34477
34478            /(lenovo)\s?(s(?:5000|6000)(?:[\w-]+)|tab(?:[\s\w]+))/i             // Lenovo tablets
34479            ], [VENDOR, MODEL, [TYPE, TABLET]], [
34480            /android.+(ideatab[a-z0-9\-\s]+)/i                                  // Lenovo
34481            ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [
34482            /(lenovo)[_\s-]?([\w-]+)/i
34483            ], [VENDOR, MODEL, [TYPE, MOBILE]], [
34484
34485            /linux;.+((jolla));/i                                               // Jolla
34486            ], [VENDOR, MODEL, [TYPE, MOBILE]], [
34487
34488            /((pebble))app\/[\d\.]+\s/i                                         // Pebble
34489            ], [VENDOR, MODEL, [TYPE, WEARABLE]], [
34490
34491            /android.+;\s(oppo)\s?([\w\s]+)\sbuild/i                            // OPPO
34492            ], [VENDOR, MODEL, [TYPE, MOBILE]], [
34493
34494            /crkey/i                                                            // Google Chromecast
34495            ], [[MODEL, 'Chromecast'], [VENDOR, 'Google']], [
34496
34497            /android.+;\s(glass)\s\d/i                                          // Google Glass
34498            ], [MODEL, [VENDOR, 'Google'], [TYPE, WEARABLE]], [
34499
34500            /android.+;\s(pixel c)[\s)]/i                                       // Google Pixel C
34501            ], [MODEL, [VENDOR, 'Google'], [TYPE, TABLET]], [
34502
34503            /android.+;\s(pixel( [23])?( xl)?)[\s)]/i                              // Google Pixel
34504            ], [MODEL, [VENDOR, 'Google'], [TYPE, MOBILE]], [
34505
34506            /android.+;\s(\w+)\s+build\/hm\1/i,                                 // Xiaomi Hongmi 'numeric' models
34507            /android.+(hm[\s\-_]*note?[\s_]*(?:\d\w)?)\s+build/i,               // Xiaomi Hongmi
34508            /android.+(mi[\s\-_]*(?:a\d|one|one[\s_]plus|note lte)?[\s_]*(?:\d?\w?)[\s_]*(?:plus)?)\s+build/i,    
34509                                                                                // Xiaomi Mi
34510            /android.+(redmi[\s\-_]*(?:note)?(?:[\s_]*[\w\s]+))\s+build/i       // Redmi Phones
34511            ], [[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, MOBILE]], [
34512            /android.+(mi[\s\-_]*(?:pad)(?:[\s_]*[\w\s]+))\s+build/i            // Mi Pad tablets
34513            ],[[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, TABLET]], [
34514            /android.+;\s(m[1-5]\snote)\sbuild/i                                // Meizu
34515            ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [
34516            /(mz)-([\w-]{2,})/i
34517            ], [[VENDOR, 'Meizu'], MODEL, [TYPE, MOBILE]], [
34518
34519            /android.+a000(1)\s+build/i,                                        // OnePlus
34520            /android.+oneplus\s(a\d{4})\s+build/i
34521            ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [
34522
34523            /android.+[;\/]\s*(RCT[\d\w]+)\s+build/i                            // RCA Tablets
34524            ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [
34525
34526            /android.+[;\/\s]+(Venue[\d\s]{2,7})\s+build/i                      // Dell Venue Tablets
34527            ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [
34528
34529            /android.+[;\/]\s*(Q[T|M][\d\w]+)\s+build/i                         // Verizon Tablet
34530            ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [
34531
34532            /android.+[;\/]\s+(Barnes[&\s]+Noble\s+|BN[RT])(V?.*)\s+build/i     // Barnes & Noble Tablet
34533            ], [[VENDOR, 'Barnes & Noble'], MODEL, [TYPE, TABLET]], [
34534
34535            /android.+[;\/]\s+(TM\d{3}.*\b)\s+build/i                           // Barnes & Noble Tablet
34536            ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [
34537
34538            /android.+;\s(k88)\sbuild/i                                         // ZTE K Series Tablet
34539            ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [
34540
34541            /android.+[;\/]\s*(gen\d{3})\s+build.*49h/i                         // Swiss GEN Mobile
34542            ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [
34543
34544            /android.+[;\/]\s*(zur\d{3})\s+build/i                              // Swiss ZUR Tablet
34545            ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [
34546
34547            /android.+[;\/]\s*((Zeki)?TB.*\b)\s+build/i                         // Zeki Tablets
34548            ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [
34549
34550            /(android).+[;\/]\s+([YR]\d{2})\s+build/i,
34551            /android.+[;\/]\s+(Dragon[\-\s]+Touch\s+|DT)(\w{5})\sbuild/i        // Dragon Touch Tablet
34552            ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [
34553
34554            /android.+[;\/]\s*(NS-?\w{0,9})\sbuild/i                            // Insignia Tablets
34555            ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [
34556
34557            /android.+[;\/]\s*((NX|Next)-?\w{0,9})\s+build/i                    // NextBook Tablets
34558            ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [
34559
34560            /android.+[;\/]\s*(Xtreme\_)?(V(1[045]|2[015]|30|40|60|7[05]|90))\s+build/i
34561            ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [                    // Voice Xtreme Phones
34562
34563            /android.+[;\/]\s*(LVTEL\-)?(V1[12])\s+build/i                     // LvTel Phones
34564            ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [
34565
34566            /android.+;\s(PH-1)\s/i
34567            ], [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], [                // Essential PH-1
34568
34569            /android.+[;\/]\s*(V(100MD|700NA|7011|917G).*\b)\s+build/i          // Envizen Tablets
34570            ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [
34571
34572            /android.+[;\/]\s*(Le[\s\-]+Pan)[\s\-]+(\w{1,9})\s+build/i          // Le Pan Tablets
34573            ], [VENDOR, MODEL, [TYPE, TABLET]], [
34574
34575            /android.+[;\/]\s*(Trio[\s\-]*.*)\s+build/i                         // MachSpeed Tablets
34576            ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [
34577
34578            /android.+[;\/]\s*(Trinity)[\-\s]*(T\d{3})\s+build/i                // Trinity Tablets
34579            ], [VENDOR, MODEL, [TYPE, TABLET]], [
34580
34581            /android.+[;\/]\s*TU_(1491)\s+build/i                               // Rotor Tablets
34582            ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [
34583
34584            /android.+(KS(.+))\s+build/i                                        // Amazon Kindle Tablets
34585            ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [
34586
34587            /android.+(Gigaset)[\s\-]+(Q\w{1,9})\s+build/i                      // Gigaset Tablets
34588            ], [VENDOR, MODEL, [TYPE, TABLET]], [
34589
34590            /\s(tablet|tab)[;\/]/i,                                             // Unidentifiable Tablet
34591            /\s(mobile)(?:[;\/]|\ssafari)/i                                     // Unidentifiable Mobile
34592            ], [[TYPE, util.lowerize], VENDOR, MODEL], [
34593
34594            /[\s\/\(](smart-?tv)[;\)]/i                                         // SmartTV
34595            ], [[TYPE, SMARTTV]], [
34596
34597            /(android[\w\.\s\-]{0,9});.+build/i                                 // Generic Android Device
34598            ], [MODEL, [VENDOR, 'Generic']]
34599        ],
34600
34601        engine : [[
34602
34603            /windows.+\sedge\/([\w\.]+)/i                                       // EdgeHTML
34604            ], [VERSION, [NAME, 'EdgeHTML']], [
34605
34606            /webkit\/537\.36.+chrome\/(?!27)/i                                  // Blink
34607            ], [[NAME, 'Blink']], [
34608
34609            /(presto)\/([\w\.]+)/i,                                             // Presto
34610            /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i,     
34611                                                                                // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna
34612            /(khtml|tasman|links)[\/\s]\(?([\w\.]+)/i,                          // KHTML/Tasman/Links
34613            /(icab)[\/\s]([23]\.[\d\.]+)/i                                      // iCab
34614            ], [NAME, VERSION], [
34615
34616            /rv\:([\w\.]{1,9}).+(gecko)/i                                       // Gecko
34617            ], [VERSION, NAME]
34618        ],
34619
34620        os : [[
34621
34622            // Windows based
34623            /microsoft\s(windows)\s(vista|xp)/i                                 // Windows (iTunes)
34624            ], [NAME, VERSION], [
34625            /(windows)\snt\s6\.2;\s(arm)/i,                                     // Windows RT
34626            /(windows\sphone(?:\sos)*)[\s\/]?([\d\.\s\w]*)/i,                   // Windows Phone
34627            /(windows\smobile|windows)[\s\/]?([ntce\d\.\s]+\w)/i
34628            ], [NAME, [VERSION, mapper.str, maps.os.windows.version]], [
34629            /(win(?=3|9|n)|win\s9x\s)([nt\d\.]+)/i
34630            ], [[NAME, 'Windows'], [VERSION, mapper.str, maps.os.windows.version]], [
34631
34632            // Mobile/Embedded OS
34633            /\((bb)(10);/i                                                      // BlackBerry 10
34634            ], [[NAME, 'BlackBerry'], VERSION], [
34635            /(blackberry)\w*\/?([\w\.]*)/i,                                     // Blackberry
34636            /(tizen)[\/\s]([\w\.]+)/i,                                          // Tizen
34637            /(android|webos|palm\sos|qnx|bada|rim\stablet\sos|meego|sailfish|contiki)[\/\s-]?([\w\.]*)/i
34638                                                                                // Android/WebOS/Palm/QNX/Bada/RIM/MeeGo/Contiki/Sailfish OS
34639            ], [NAME, VERSION], [
34640            /(symbian\s?os|symbos|s60(?=;))[\/\s-]?([\w\.]*)/i                  // Symbian
34641            ], [[NAME, 'Symbian'], VERSION], [
34642            /\((series40);/i                                                    // Series 40
34643            ], [NAME], [
34644            /mozilla.+\(mobile;.+gecko.+firefox/i                               // Firefox OS
34645            ], [[NAME, 'Firefox OS'], VERSION], [
34646
34647            // Console
34648            /(nintendo|playstation)\s([wids34portablevu]+)/i,                   // Nintendo/Playstation
34649
34650            // GNU/Linux based
34651            /(mint)[\/\s\(]?(\w*)/i,                                            // Mint
34652            /(mageia|vectorlinux)[;\s]/i,                                       // Mageia/VectorLinux
34653            /(joli|[kxln]?ubuntu|debian|suse|opensuse|gentoo|(?=\s)arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\/\s-]?(?!chrom)([\w\.-]*)/i,
34654                                                                                // Joli/Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware
34655                                                                                // Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus
34656            /(hurd|linux)\s?([\w\.]*)/i,                                        // Hurd/Linux
34657            /(gnu)\s?([\w\.]*)/i                                                // GNU
34658            ], [NAME, VERSION], [
34659
34660            /(cros)\s[\w]+\s([\w\.]+\w)/i                                       // Chromium OS
34661            ], [[NAME, 'Chromium OS'], VERSION],[
34662
34663            // Solaris
34664            /(sunos)\s?([\w\.\d]*)/i                                            // Solaris
34665            ], [[NAME, 'Solaris'], VERSION], [
34666
34667            // BSD based
34668            /\s([frentopc-]{0,4}bsd|dragonfly)\s?([\w\.]*)/i                    // FreeBSD/NetBSD/OpenBSD/PC-BSD/DragonFly
34669            ], [NAME, VERSION],[
34670
34671            /(haiku)\s(\w+)/i                                                   // Haiku
34672            ], [NAME, VERSION],[
34673
34674            /cfnetwork\/.+darwin/i,
34675            /ip[honead]{2,4}(?:.*os\s([\w]+)\slike\smac|;\sopera)/i             // iOS
34676            ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [
34677
34678            /(mac\sos\sx)\s?([\w\s\.]*)/i,
34679            /(macintosh|mac(?=_powerpc)\s)/i                                    // Mac OS
34680            ], [[NAME, 'Mac OS'], [VERSION, /_/g, '.']], [
34681
34682            // Other
34683            /((?:open)?solaris)[\/\s-]?([\w\.]*)/i,                             // Solaris
34684            /(aix)\s((\d)(?=\.|\)|\s)[\w\.])*/i,                                // AIX
34685            /(plan\s9|minix|beos|os\/2|amigaos|morphos|risc\sos|openvms|fuchsia)/i,
34686                                                                                // Plan9/Minix/BeOS/OS2/AmigaOS/MorphOS/RISCOS/OpenVMS/Fuchsia
34687            /(unix)\s?([\w\.]*)/i                                               // UNIX
34688            ], [NAME, VERSION]
34689        ]
34690    };
34691
34692
34693    /////////////////
34694    // Constructor
34695    ////////////////
34696    var UAParser = function (uastring, extensions) {
34697
34698        if (typeof uastring === 'object') {
34699            extensions = uastring;
34700            uastring = undefined;
34701        }
34702
34703        if (!(this instanceof UAParser)) {
34704            return new UAParser(uastring, extensions).getResult();
34705        }
34706
34707        var ua = uastring || ((window && window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY);
34708        var rgxmap = extensions ? util.extend(regexes, extensions) : regexes;
34709
34710        this.getBrowser = function () {
34711            var browser = { name: undefined, version: undefined };
34712            mapper.rgx.call(browser, ua, rgxmap.browser);
34713            browser.major = util.major(browser.version); // deprecated
34714            return browser;
34715        };
34716        this.getCPU = function () {
34717            var cpu = { architecture: undefined };
34718            mapper.rgx.call(cpu, ua, rgxmap.cpu);
34719            return cpu;
34720        };
34721        this.getDevice = function () {
34722            var device = { vendor: undefined, model: undefined, type: undefined };
34723            mapper.rgx.call(device, ua, rgxmap.device);
34724            return device;
34725        };
34726        this.getEngine = function () {
34727            var engine = { name: undefined, version: undefined };
34728            mapper.rgx.call(engine, ua, rgxmap.engine);
34729            return engine;
34730        };
34731        this.getOS = function () {
34732            var os = { name: undefined, version: undefined };
34733            mapper.rgx.call(os, ua, rgxmap.os);
34734            return os;
34735        };
34736        this.getResult = function () {
34737            return {
34738                ua      : this.getUA(),
34739                browser : this.getBrowser(),
34740                engine  : this.getEngine(),
34741                os      : this.getOS(),
34742                device  : this.getDevice(),
34743                cpu     : this.getCPU()
34744            };
34745        };
34746        this.getUA = function () {
34747            return ua;
34748        };
34749        this.setUA = function (uastring) {
34750            ua = uastring;
34751            return this;
34752        };
34753        return this;
34754    };
34755
34756    UAParser.VERSION = LIBVERSION;
34757    UAParser.BROWSER = {
34758        NAME    : NAME,
34759        MAJOR   : MAJOR, // deprecated
34760        VERSION : VERSION
34761    };
34762    UAParser.CPU = {
34763        ARCHITECTURE : ARCHITECTURE
34764    };
34765    UAParser.DEVICE = {
34766        MODEL   : MODEL,
34767        VENDOR  : VENDOR,
34768        TYPE    : TYPE,
34769        CONSOLE : CONSOLE,
34770        MOBILE  : MOBILE,
34771        SMARTTV : SMARTTV,
34772        TABLET  : TABLET,
34773        WEARABLE: WEARABLE,
34774        EMBEDDED: EMBEDDED
34775    };
34776    UAParser.ENGINE = {
34777        NAME    : NAME,
34778        VERSION : VERSION
34779    };
34780    UAParser.OS = {
34781        NAME    : NAME,
34782        VERSION : VERSION
34783    };
34784
34785    ///////////
34786    // Export
34787    //////////
34788
34789
34790    // check js environment
34791    if (typeof(exports) !== UNDEF_TYPE) {
34792        // nodejs env
34793        if (typeof module !== UNDEF_TYPE && module.exports) {
34794            exports = module.exports = UAParser;
34795        }
34796        exports.UAParser = UAParser;
34797    } else {
34798        // requirejs env (optional)
34799        if (true) {
34800            !(__WEBPACK_AMD_DEFINE_RESULT__ = (function () {
34801                return UAParser;
34802            }).call(exports, __webpack_require__, exports, module),
34803				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
34804        } else {}
34805    }
34806
34807    // jQuery/Zepto specific (optional)
34808    // Note:
34809    //   In AMD env the global scope should be kept clean, but jQuery is an exception.
34810    //   jQuery always exports to global scope, unless jQuery.noConflict(true) is used,
34811    //   and we should catch that.
34812    var $ = window && (window.jQuery || window.Zepto);
34813    if (typeof $ !== UNDEF_TYPE && !$.ua) {
34814        var parser = new UAParser();
34815        $.ua = parser.getResult();
34816        $.ua.get = function () {
34817            return parser.getUA();
34818        };
34819        $.ua.set = function (uastring) {
34820            parser.setUA(uastring);
34821            var result = parser.getResult();
34822            for (var prop in result) {
34823                $.ua[prop] = result[prop];
34824            }
34825        };
34826    }
34827
34828})(typeof window === 'object' ? window : this);
34829
34830
34831/***/ }),
34832
vendor: 738 bytes, lines 34833-34862
34833/***/ "./node_modules/webpack/buildin/global.js":
34834/*!***********************************!*\
34835  !*** (webpack)/buildin/global.js ***!
34836  \***********************************/
34837/*! no static exports found */
34838/***/ (function(module, exports) {
34839
34840var g;
34841
34842// This works in non-strict mode
34843g = (function() {
34844	return this;
34845})();
34846
34847try {
34848	// This works if eval is allowed (see CSP)
34849	g = g || Function("return this")() || (1, eval)("this");
34850} catch (e) {
34851	// This works if the window reference is available
34852	if (typeof window === "object") g = window;
34853}
34854
34855// g can still be undefined, but nothing to do about it...
34856// We return undefined, instead of nothing here, so it's
34857// easier to handle this case. if(!global) { ...}
34858
34859module.exports = g;
34860
34861
34862/***/ })
34862
34863
34864}]);
34865//# sourceMappingURL=vendor.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.