PageSourceSearch

https://www.lafrancaise-mailles.fr/cdn/shop/t/78/assets/index.bundle.js?v=28315756741163670511790946417

js lafrancaise-mailles.fr collected 2026-10-08 22:51:02 UTC 1,024,586 bytes, 10,871 lines download raw bytes

1(()=>{var __webpack_modules__={"../node_modules/swiper/modules/a11y.mjs"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval(`{__webpack_require__.r(__webpack_exports__);
2/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3/* harmony export */   "default": () => (/* binding */ A11y)
4/* harmony export */ });
5/* harmony import */ var _shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/ssr-window.esm.mjs */ "../node_modules/swiper/shared/ssr-window.esm.mjs");
6/* harmony import */ var _shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/classes-to-selector.mjs */ "../node_modules/swiper/shared/classes-to-selector.mjs");
7/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/utils.mjs */ "../node_modules/swiper/shared/utils.mjs");
8
9
10
11
12function A11y(_ref) {
13  let {
14    swiper,
15    extendParams,
16    on
17  } = _ref;
18  extendParams({
19    a11y: {
20      enabled: true,
21      notificationClass: 'swiper-notification',
22      prevSlideMessage: 'Previous slide',
23      nextSlideMessage: 'Next slide',
24      firstSlideMessage: 'This is the first slide',
25      lastSlideMessage: 'This is the last slide',
26      paginationBulletMessage: 'Go to slide {{index}}',
27      slideLabelMessage: '{{index}} / {{slidesLength}}',
28      containerMessage: null,
29      containerRoleDescriptionMessage: null,
30      containerRole: null,
31      itemRoleDescriptionMessage: null,
32      slideRole: 'group',
33      id: null,
34      scrollOnFocus: true
35    }
36  });
37  swiper.a11y = {
38    clicked: false
39  };
40  let liveRegion = null;
41  let preventFocusHandler;
42  let focusTargetSlideEl;
43  let visibilityChangedTimestamp = new Date().getTime();
44  function notify(message) {
45    const notification = liveRegion;
46    if (notification.length === 0) return;
47    (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.s)(notification, message);
48  }
49  function getRandomNumber(size) {
50    if (size === void 0) {
51      size = 16;
52    }
53    const randomChar = () => Math.round(16 * Math.random()).toString(16);
54    return 'x'.repeat(size).replace(/x/g, randomChar);
55  }
56  function makeElFocusable(el) {
57    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
58    el.forEach(subEl => {
59      subEl.setAttribute('tabIndex', '0');
60    });
61  }
62  function makeElNotFocusable(el) {
63    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
64    el.forEach(subEl => {
65      subEl.setAttribute('tabIndex', '-1');
66    });
67  }
68  function addElRole(el, role) {
69    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
70    el.forEach(subEl => {
71      subEl.setAttribute('role', role);
72    });
73  }
74  function addElRoleDescription(el, description) {
75    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
76    el.forEach(subEl => {
77      subEl.setAttribute('aria-roledescription', description);
78    });
79  }
80  function addElControls(el, controls) {
81    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
82    el.forEach(subEl => {
83      subEl.setAttribute('aria-controls', controls);
84    });
85  }
86  function addElLabel(el, label) {
87    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
88    el.forEach(subEl => {
89      subEl.setAttribute('aria-label', label);
90    });
91  }
92  function addElId(el, id) {
93    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
94    el.forEach(subEl => {
95      subEl.setAttribute('id', id);
96    });
97  }
98  function addElLive(el, live) {
99    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
100    el.forEach(subEl => {
101      subEl.setAttribute('aria-live', live);
102    });
103  }
104  function disableEl(el) {
105    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
106    el.forEach(subEl => {
107      subEl.setAttribute('aria-disabled', true);
108    });
109  }
110  function enableEl(el) {
111    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
112    el.forEach(subEl => {
113      subEl.setAttribute('aria-disabled', false);
114    });
115  }
116  function onEnterOrSpaceKey(e) {
117    if (e.keyCode !== 13 && e.keyCode !== 32) return;
118    const params = swiper.params.a11y;
119    const targetEl = e.target;
120    if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) {
121      if (!e.target.matches((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_1__.c)(swiper.params.pagination.bulletClass))) return;
122    }
123    if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) {
124      const prevEls = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(swiper.navigation.prevEl);
125      const nextEls = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(swiper.navigation.nextEl);
126      if (nextEls.includes(targetEl)) {
127        if (!(swiper.isEnd && !swiper.params.loop)) {
128          swiper.slideNext();
129        }
130        if (swiper.isEnd) {
131          notify(params.lastSlideMessage);
132        } else {
133          notify(params.nextSlideMessage);
134        }
135      }
136      if (prevEls.includes(targetEl)) {
137        if (!(swiper.isBeginning && !swiper.params.loop)) {
138          swiper.slidePrev();
139        }
140        if (swiper.isBeginning) {
141          notify(params.firstSlideMessage);
142        } else {
143          notify(params.prevSlideMessage);
144        }
145      }
146    }
147    if (swiper.pagination && targetEl.matches((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_1__.c)(swiper.params.pagination.bulletClass))) {
148      targetEl.click();
149    }
150  }
151  function updateNavigation() {
152    if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;
153    const {
154      nextEl,
155      prevEl
156    } = swiper.navigation;
157    if (prevEl) {
158      if (swiper.isBeginning) {
159        disableEl(prevEl);
160        makeElNotFocusable(prevEl);
161      } else {
162        enableEl(prevEl);
163        makeElFocusable(prevEl);
164      }
165    }
166    if (nextEl) {
167      if (swiper.isEnd) {
168        disableEl(nextEl);
169        makeElNotFocusable(nextEl);
170      } else {
171        enableEl(nextEl);
172        makeElFocusable(nextEl);
173      }
174    }
175  }
176  function hasPagination() {
177    return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;
178  }
179  function hasClickablePagination() {
180    return hasPagination() && swiper.params.pagination.clickable;
181  }
182  function updatePagination() {
183    const params = swiper.params.a11y;
184    if (!hasPagination()) return;
vendor: 8,086 bytes, lines 185-386
185    swiper.pagination.bullets.forEach(bulletEl => {
186      if (swiper.params.pagination.clickable) {
187        makeElFocusable(bulletEl);
188        if (!swiper.params.pagination.renderBullet) {
189          addElRole(bulletEl, 'button');
190          addElLabel(bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.i)(bulletEl) + 1));
191        }
192      }
193      if (bulletEl.matches((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_1__.c)(swiper.params.pagination.bulletActiveClass))) {
194        bulletEl.setAttribute('aria-current', 'true');
195      } else {
196        bulletEl.removeAttribute('aria-current');
197      }
198    });
199  }
200  const initNavEl = (el, wrapperId, message) => {
201    makeElFocusable(el);
202    if (el.tagName !== 'BUTTON') {
203      addElRole(el, 'button');
204      el.addEventListener('keydown', onEnterOrSpaceKey);
205    }
206    addElLabel(el, message);
207    addElControls(el, wrapperId);
208  };
209  const handlePointerDown = e => {
210    if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) {
211      preventFocusHandler = true;
212    }
213    swiper.a11y.clicked = true;
214  };
215  const handlePointerUp = () => {
216    preventFocusHandler = false;
217    requestAnimationFrame(() => {
218      requestAnimationFrame(() => {
219        if (!swiper.destroyed) {
220          swiper.a11y.clicked = false;
221        }
222      });
223    });
224  };
225  const onVisibilityChange = e => {
226    visibilityChangedTimestamp = new Date().getTime();
227  };
228  const handleFocus = e => {
229    if (swiper.a11y.clicked || !swiper.params.a11y.scrollOnFocus) return;
230    if (new Date().getTime() - visibilityChangedTimestamp < 100) return;
231    const slideEl = e.target.closest(\`.\${swiper.params.slideClass}, swiper-slide\`);
232    if (!slideEl || !swiper.slides.includes(slideEl)) return;
233    focusTargetSlideEl = slideEl;
234    const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;
235    const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);
236    if (isActive || isVisible) return;
237    if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;
238    if (swiper.isHorizontal()) {
239      swiper.el.scrollLeft = 0;
240    } else {
241      swiper.el.scrollTop = 0;
242    }
243    requestAnimationFrame(() => {
244      if (preventFocusHandler) return;
245      if (swiper.params.loop) {
246        swiper.slideToLoop(swiper.getSlideIndexWhenGrid(parseInt(slideEl.getAttribute('data-swiper-slide-index'))), 0);
247      } else {
248        swiper.slideTo(swiper.getSlideIndexWhenGrid(swiper.slides.indexOf(slideEl)), 0);
249      }
250      preventFocusHandler = false;
251    });
252  };
253  const initSlides = () => {
254    const params = swiper.params.a11y;
255    if (params.itemRoleDescriptionMessage) {
256      addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage);
257    }
258    if (params.slideRole) {
259      addElRole(swiper.slides, params.slideRole);
260    }
261    const slidesLength = swiper.slides.length;
262    if (params.slideLabelMessage) {
263      swiper.slides.forEach((slideEl, index) => {
264        const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index;
265        const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);
266        addElLabel(slideEl, ariaLabelMessage);
267      });
268    }
269  };
270  const init = () => {
271    const params = swiper.params.a11y;
272    swiper.el.append(liveRegion);
273
274    // Container
275    const containerEl = swiper.el;
276    if (params.containerRoleDescriptionMessage) {
277      addElRoleDescription(containerEl, params.containerRoleDescriptionMessage);
278    }
279    if (params.containerMessage) {
280      addElLabel(containerEl, params.containerMessage);
281    }
282    if (params.containerRole) {
283      addElRole(containerEl, params.containerRole);
284    }
285
286    // Wrapper
287    const wrapperEl = swiper.wrapperEl;
288    const wrapperId = params.id || wrapperEl.getAttribute('id') || \`swiper-wrapper-\${getRandomNumber(16)}\`;
289    const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';
290    addElId(wrapperEl, wrapperId);
291    addElLive(wrapperEl, live);
292
293    // Slide
294    initSlides();
295
296    // Navigation
297    let {
298      nextEl,
299      prevEl
300    } = swiper.navigation ? swiper.navigation : {};
301    nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(nextEl);
302    prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(prevEl);
303    if (nextEl) {
304      nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage));
305    }
306    if (prevEl) {
307      prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage));
308    }
309
310    // Pagination
311    if (hasClickablePagination()) {
312      const paginationEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(swiper.pagination.el);
313      paginationEl.forEach(el => {
314        el.addEventListener('keydown', onEnterOrSpaceKey);
315      });
316    }
317
318    // Tab focus
319    const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
320    document.addEventListener('visibilitychange', onVisibilityChange);
321    swiper.el.addEventListener('focus', handleFocus, true);
322    swiper.el.addEventListener('focus', handleFocus, true);
323    swiper.el.addEventListener('pointerdown', handlePointerDown, true);
324    swiper.el.addEventListener('pointerup', handlePointerUp, true);
325  };
326  function destroy() {
327    if (liveRegion) liveRegion.remove();
328    let {
329      nextEl,
330      prevEl
331    } = swiper.navigation ? swiper.navigation : {};
332    nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(nextEl);
333    prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(prevEl);
334    if (nextEl) {
335      nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));
336    }
337    if (prevEl) {
338      prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));
339    }
340
341    // Pagination
342    if (hasClickablePagination()) {
343      const paginationEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(swiper.pagination.el);
344      paginationEl.forEach(el => {
345        el.removeEventListener('keydown', onEnterOrSpaceKey);
346      });
347    }
348    const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
349    document.removeEventListener('visibilitychange', onVisibilityChange);
350    // Tab focus
351    if (swiper.el && typeof swiper.el !== 'string') {
352      swiper.el.removeEventListener('focus', handleFocus, true);
353      swiper.el.removeEventListener('pointerdown', handlePointerDown, true);
354      swiper.el.removeEventListener('pointerup', handlePointerUp, true);
355    }
356  }
357  on('beforeInit', () => {
358    liveRegion = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.c)('span', swiper.params.a11y.notificationClass);
359    liveRegion.setAttribute('aria-live', 'assertive');
360    liveRegion.setAttribute('aria-atomic', 'true');
361  });
362  on('afterInit', () => {
363    if (!swiper.params.a11y.enabled) return;
364    init();
365  });
366  on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {
367    if (!swiper.params.a11y.enabled) return;
368    initSlides();
369  });
370  on('fromEdge toEdge afterInit lock unlock', () => {
371    if (!swiper.params.a11y.enabled) return;
372    updateNavigation();
373  });
374  on('paginationUpdate', () => {
375    if (!swiper.params.a11y.enabled) return;
376    updatePagination();
377  });
378  on('destroy', () => {
379    if (!swiper.params.a11y.enabled) return;
380    destroy();
381  });
382}
383
384
385//# sourceURL=[module]
386//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9tb2R1bGVzL2ExMXkubWpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBZ0U7QUFDVztBQUM0Qzs7QUFFdkg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDLE9BQU87QUFDckQsNEJBQTRCLFFBQVEsSUFBSSxjQUFjO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLG9EQUFZO0FBQ2hCO0FBQ0E7QUFDQTtBQUNB
vendor: 1,725 bytes, line 386
386O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsb0RBQWlCO0FBQzFCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLFNBQVMsb0RBQWlCO0FBQzFCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLFNBQVMsb0RBQWlCO0FBQzFCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLFNBQVMsb0RBQWlCO0FBQzFCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLFNBQVMsb0RBQWlCO0FBQzFCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLFNBQVMsb0RBQWlCO0FBQzFCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLFNBQVMsb0RBQWlCO0FBQzFCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLFNBQVMsb0RBQWlCO0FBQzFCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLFNBQVMsb0RBQWlCO0FBQzFCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLFNBQVMsb0RBQWlCO0FBQzFCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLGtFQUFpQjtBQUM3QztBQUNBO0FBQ0Esc0JBQXNCLG9EQUFpQjtBQUN2QyxzQkFBc0Isb0RBQWlCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEMsa0VBQWlCO0FBQy9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlFQUF5RSxFQUFFLE9BQU8sRUFBRSxHQUFHLG9EQUFZO0FBQ25HO0FBQ0E7QUFDQSwyQkFBMkIsa0VBQWlCO0FBQzVDO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUMseUJBQXlCO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQ
386SxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFFQUFxRSxFQUFFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxjQUFjLEVBQUU7QUFDaEk7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxxRkFBcUYsb0JBQW9CO0FBQ3pHO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOLGFBQWEsb0RBQWlCO0FBQzlCLGFBQWEsb0RBQWlCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMkJBQTJCLG9EQUFpQjtBQUM1QztBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0EscUJBQXFCLDZEQUFXO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ04sYUFBYSxvREFBaUI7QUFDOUIsYUFBYSxvREFBaUI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSwyQkFBMkIsb0RBQWlCO0FBQzVDO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxxQkFBcUIsNkRBQVc7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLG9EQUFhO0FBQzlCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFMkIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9tb2R1bGVzL2ExMXkubWpzPzQxZTYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZyBhcyBnZXREb2N1bWVudCB9IGZyb20gJy4uL3NoYXJlZC9zc3Itd2luZG93LmVzbS5tanMnO1xuaW1wb3J0IHsgYyBhcyBjbGFzc2VzVG9TZWxlY3RvciB9IGZyb20gJy4uL3NoYXJlZC9jbGFzc2VzLXRvLXNlbGVjdG9yLm1qcyc7XG5pbXBvcnQgeyBjIGFzIGNyZWF0ZUVsZW1lbnQsIGkgYXMgZWxlbWVudEluZGV4LCBtIGFzIG1ha2VFbGVtZW50c0FycmF5LCBzIGFzIHNldElubmVySFRNTCB9IGZyb20gJy4uL3NoYXJlZC91dGlscy5tanMnO1xuXG5mdW5jdGlvbiBBMTF5KF9yZWYpIHtcbiAgbGV0IHtcbiAgICBzd2lwZXIsXG4gICAgZXh0ZW5kUGFyYW1zLFxuICAgIG9uXG4gIH0gPSBfcmVmO1xuICBleHRlbmRQYXJhbXMoe1xuICAgIGExMXk6IHtcbiAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICBub3RpZmljYXRpb25DbGFzczogJ3N3aXBlci1ub3RpZmljYXRpb24nLFxuICAgICAgcHJldlNsaWRlTWVzc2FnZTogJ1ByZXZpb3VzIHNsaWRlJyxcbiAgICAgIG5leHRTbGlkZU1lc3NhZ2U6ICdOZXh0IHNsaWRlJyxcbiAgICAgIGZpcnN0U2xpZGVNZXNzYWdlOiAnVGhpcyBpcyB0aGUgZmlyc3Qgc2xpZGUnLFxuICAgICAgbGFzdFNsaWRlTWVzc2FnZTogJ1RoaXMgaXMgdGhlIGxhc3Qgc2xpZGUnLFxuICAgICAgcGFnaW5hdGlvbkJ1bGxldE1lc3NhZ2U6ICdHbyB0byBzbGlkZSB7e2luZGV4fX0nLFxuICAgICAgc2xpZGVMYWJlbE1lc3NhZ2U6ICd7e2luZGV4fX0gLyB7e3NsaWRlc0xlbmd0aH19JyxcbiAgICAgIGNvbnRhaW5lck1lc3NhZ2U6IG51bGwsXG4gICAgICBjb250YWluZXJSb2xlRGVzY3JpcHRpb25NZXNzYWdlOiBudWxsLFxuICAgICAgY29udGFpbmVyUm9sZTogbnVsbCxcbiAgICAgIGl0ZW1Sb2xlRGVzY3JpcHRpb25NZXNzYWdlOiBudWxsLFxuICAgICAgc2xpZGVSb2xlOiAnZ3JvdXAnLFxuICAgICAgaWQ6IG51bGwsXG4gICAgICBzY3JvbGxPbkZvY3VzOiB0cnVlXG4gICAgfVxuICB9KTtcbiAgc3dpcGVyLmExMXkgPSB7XG4gICAgY2xpY2tlZDogZmFsc2VcbiAgfTtcbiAgbGV0IGxpdmVSZWdpb24gPSBudWxsO1xuICBsZXQgcHJldmVudEZvY3VzSGFuZGxlcjtcbiAgbGV0IGZvY3VzVGFyZ2V0U2xpZGVFbDtcbiAgbGV0IHZpc2liaWxpdHlDaGFuZ2VkVGltZXN0YW1wID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gIGZ1bmN0aW9uIG5vdGlmeShtZXNzYWdlKSB7XG4gICAgY29uc3Qgbm90aWZpY2F0aW9uID0gbGl2ZVJlZ2lvbjtcbiAgICBpZiAobm90aWZpY2F0aW9uLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIHNldElubmVySFRNTChub3RpZmljYXRpb24sIG1lc3NhZ2UpO1xuICB9XG4gIGZ1bmN0aW9uIGdldFJhbmRvbU51bWJlcihzaXplKSB7XG4gICAgaWYgKHNpemUgPT09IHZvaWQgMCkge1xuICAgICAgc2l6ZSA9IDE2O1xuICAgIH1cbiAgICBjb25zdCByYW5kb21DaGFyID0gKCkgPT4gTWF0aC5yb3VuZCgxNiAqIE1hdGgucmFuZG9tKCkpLnRvU3RyaW5nKDE2KTtcbiAgICByZXR1cm4gJ3gnLnJlcGVhdChzaXplKS5yZXBsYWNlKC94L2csIHJhbmRvbUNoYXIpO1xuICB9XG4gIGZ1bmN0aW9uIG1ha2VFbEZvY3VzYWJsZShlbCkge1xuICAgIGVsID0gbWFrZUVsZW1lbnRzQXJyYXkoZWwpO1xuICAgIGVsLmZvckVhY2goc3ViRWwgPT4ge1xuICAgICAgc3ViRWwuc2V0QXR0cmlidXRlKCd0YWJJbmRleCcsICcwJyk7XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gbWFrZUVsTm90Rm9jdXNhYmxlKGVsKSB7XG4gICAgZWwgPSBtYWtlRWxlbWVudHNBcnJheShlbCk7XG4gICAgZWwuZm9yRWFjaChzdWJFbCA9PiB7XG4gICAgICBzdWJFbC5zZXRBdHRyaWJ1dGUoJ3RhYkluZGV4JywgJy0xJyk7XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gYWRkRWxSb2xlKGVsLCByb2xlKSB7XG4gICAgZWwgPSBtYWtlRWxlbWVudHNBcnJheShlbCk7XG4gICAgZWwuZm9yRWFjaChzdWJFbCA9PiB7XG4gICAgICBzdWJFbC5zZXRBdHRyaWJ1dGUoJ3JvbGUnLCByb2xlKTtcbiAgICB9KTtcbiAgfVxuICBmdW5jdGlvbiBhZGRFbFJvbGVEZXNjcmlwdGlvbihlbCwgZGVzY3JpcHRpb24pIHtcbiAgICBlbCA9IG1ha2VFbGVtZW50c0FycmF5KGVsKTtcbiAgICBlbC5mb3JFYWNoKHN1YkVsID0+IHtcbiAgICAgIHN1YkVsLnNldEF0dHJpYnV0ZSgnYXJpYS1yb2xlZGVzY3JpcHRpb24nLCBkZXNjcmlwdGlvbik7XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gYWRkRWxDb250cm9scyhlbCwgY29udHJvbHMpIHtcbiAgICBlbCA9IG1ha2VFbGVtZW50c0FycmF5KGVsKTtcbiAgICBlbC5mb3JFYWNoKHN1YkVsID0+IHtcbiAgICAgIHN1YkVsLnNldEF0dHJpYnV0ZSgnYXJpYS1jb250cm9scycsIGNvbnRyb2xzKTtcbiAgICB9KTtcbiAgfVxuICBmdW5jdGlvbiBhZGR
386FbExhYmVsKGVsLCBsYWJlbCkge1xuICAgIGVsID0gbWFrZUVsZW1lbnRzQXJyYXkoZWwpO1xuICAgIGVsLmZvckVhY2goc3ViRWwgPT4ge1xuICAgICAgc3ViRWwuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgbGFiZWwpO1xuICAgIH0pO1xuICB9XG4gIGZ1bmN0aW9uIGFkZEVsSWQoZWwsIGlkKSB7XG4gICAgZWwgPSBtYWtlRWxlbWVudHNBcnJheShlbCk7XG4gICAgZWwuZm9yRWFjaChzdWJFbCA9PiB7XG4gICAgICBzdWJFbC5zZXRBdHRyaWJ1dGUoJ2lkJywgaWQpO1xuICAgIH0pO1xuICB9XG4gIGZ1bmN0aW9uIGFkZEVsTGl2ZShlbCwgbGl2ZSkge1xuICAgIGVsID0gbWFrZUVsZW1lbnRzQXJyYXkoZWwpO1xuICAgIGVsLmZvckVhY2goc3ViRWwgPT4ge1xuICAgICAgc3ViRWwuc2V0QXR0cmlidXRlKCdhcmlhLWxpdmUnLCBsaXZlKTtcbiAgICB9KTtcbiAgfVxuICBmdW5jdGlvbiBkaXNhYmxlRWwoZWwpIHtcbiAgICBlbCA9IG1ha2VFbGVtZW50c0FycmF5KGVsKTtcbiAgICBlbC5mb3JFYWNoKHN1YkVsID0+IHtcbiAgICAgIHN1YkVsLnNldEF0dHJpYnV0ZSgnYXJpYS1kaXNhYmxlZCcsIHRydWUpO1xuICAgIH0pO1xuICB9XG4gIGZ1bmN0aW9uIGVuYWJsZUVsKGVsKSB7XG4gICAgZWwgPSBtYWtlRWxlbWVudHNBcnJheShlbCk7XG4gICAgZWwuZm9yRWFjaChzdWJFbCA9PiB7XG4gICAgICBzdWJFbC5zZXRBdHRyaWJ1dGUoJ2FyaWEtZGlzYWJsZWQnLCBmYWxzZSk7XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gb25FbnRlck9yU3BhY2VLZXkoZSkge1xuICAgIGlmIChlLmtleUNvZGUgIT09IDEzICYmIGUua2V5Q29kZSAhPT0gMzIpIHJldHVybjtcbiAgICBjb25zdCBwYXJhbXMgPSBzd2lwZXIucGFyYW1zLmExMXk7XG4gICAgY29uc3QgdGFyZ2V0RWwgPSBlLnRhcmdldDtcbiAgICBpZiAoc3dpcGVyLnBhZ2luYXRpb24gJiYgc3dpcGVyLnBhZ2luYXRpb24uZWwgJiYgKHRhcmdldEVsID09PSBzd2lwZXIucGFnaW5hdGlvbi5lbCB8fCBzd2lwZXIucGFnaW5hdGlvbi5lbC5jb250YWlucyhlLnRhcmdldCkpKSB7XG4gICAgICBpZiAoIWUudGFyZ2V0Lm1hdGNoZXMoY2xhc3Nlc1RvU2VsZWN0b3Ioc3dpcGVyLnBhcmFtcy5wYWdpbmF0aW9uLmJ1bGxldENsYXNzKSkpIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHN3aXBlci5uYXZpZ2F0aW9uICYmIHN3aXBlci5uYXZpZ2F0aW9uLnByZXZFbCAmJiBzd2lwZXIubmF2aWdhdGlvbi5uZXh0RWwpIHtcbiAgICAgIGNvbnN0IHByZXZFbHMgPSBtYWtlRWxlbWVudHNBcnJheShzd2lwZXIubmF2aWdhdGlvbi5wcmV2RWwpO1xuICAgICAgY29uc3QgbmV4dEVscyA9IG1ha2VFbGVtZW50c0FycmF5KHN3aXBlci5uYXZpZ2F0aW9uLm5leHRFbCk7XG4gICAgICBpZiAobmV4dEVscy5pbmNsdWRlcyh0YXJnZXRFbCkpIHtcbiAgICAgICAgaWYgKCEoc3dpcGVyLmlzRW5kICYmICFzd2lwZXIucGFyYW1zLmxvb3ApKSB7XG4gICAgICAgICAgc3dpcGVyLnNsaWRlTmV4dCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzd2lwZXIuaXNFbmQpIHtcbiAgICAgICAgICBub3RpZnkocGFyYW1zLmxhc3RTbGlkZU1lc3NhZ2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5vdGlmeShwYXJhbXMubmV4dFNsaWRlTWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChwcmV2RWxzLmluY2x1ZGVzKHRhcmdldEVsKSkge1xuICAgICAgICBpZiAoIShzd2lwZXIuaXNCZWdpbm5pbmcgJiYgIXN3aXBlci5wYXJhbXMubG9vcCkpIHtcbiAgICAgICAgICBzd2lwZXIuc2xpZGVQcmV2KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN3aXBlci5pc0JlZ2lubmluZykge1xuICAgICAgICAgIG5vdGlmeShwYXJhbXMuZmlyc3RTbGlkZU1lc3NhZ2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5vdGlmeShwYXJhbXMucHJldlNsaWRlTWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHN3aXBlci5wYWdpbmF0aW9uICYmIHRhcmdldEVsLm1hdGNoZXMoY2xhc3Nlc1RvU2VsZWN0b3Ioc3dpcGVyLnBhcmFtcy5wYWdpbmF0aW9uLmJ1bGxldENsYXNzKSkpIHtcbiAgICAgIHRhcmdldEVsLmNsaWNrKCk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIHVwZGF0ZU5hdmlnYXRpb24oKSB7XG4gICAgaWYgKHN3aXBlci5wYXJhbXMubG9vcCB8fCBzd2lwZXIucGFyYW1zLnJld2luZCB8fCAhc3dpcGVyLm5hdmlnYXRpb24pIHJldHVybjtcbiAgICBjb25zdCB7XG4gICAgICBuZXh0RWwsXG4gICAgICBwcmV2RWxcbiAgICB9ID0gc3dpcGVyLm5hdmlnYXRpb247XG4gICAgaWYgKHByZXZFbCkge1xuICAgICAgaWYgKHN3aXBlci5pc0JlZ2lubmluZykge1xuICAgICAgICBkaXNhYmxlRWwocHJldkVsKTtcbiAgICAgICAgbWFrZUVsTm90Rm9jdXNhYmxlKHByZXZFbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbmFibGVFbChwcmV2RWwpO1xuICAgICAgICBtYWtlRWxGb2N1c2FibGUocHJldkVsKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG5leHRFbCkge1xuICAgICAgaWYgKHN3aXBlci5pc0VuZCkge1xuICAgICAgICBkaXNhYmxlRWwobmV4dEVsKTtcbiAgICAgICAgbWFrZUVsTm90Rm9jdXNhYmxlKG5leHRFbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbmFibGVFbChuZXh0RWwpO1xuICAgICAgICBtYWtlRWxGb2N1c2FibGUobmV4dEVsKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gaGFzUGFnaW5hdGlvbigpIHtcbiAgICByZXR1cm4gc3dpcGVyLnBhZ2luYXRpb24gJiYgc3dpcGVyLnBhZ2luYXRpb24uYnVsbGV0cyAmJiBzd2lwZXIucGFnaW5hdGlvbi5idWxsZXRzLmxlbmd0aDtcbiAgfVxuICBmdW5jdGlvbiBoYXNDbGlja2FibGVQYWdpbmF0aW9uKCkge1xuICAgIHJldHVybiBoYXNQYWdpbmF0aW9uKCkgJiYgc3dpcGVyLnBhcmFtcy5wYWdpbmF0aW9uLmNsaWNrYWJsZTtcbiAgfVxuICBmdW5jdGlvbiB1cGRhdGVQYWdpbmF0aW9uKCkge1xuICAgIGNvbnN0IHBhcmFtcyA9IHN3aXBlci5wYXJhbXMuYTExeTtcbiAgICBpZiAoIWhhc1BhZ2luYXRpb24oKSkgcmV0dXJuO1xuICAgIHN3aXBlci5wYWdpbmF0aW9uLmJ1bGxldHMuZm9yRWFjaChidWxsZXRFbCA9PiB7XG4gICAgICBpZiAoc3dpcGVyLnBhcmFtcy5wYWdpbmF0aW9uLm
386NsaWNrYWJsZSkge1xuICAgICAgICBtYWtlRWxGb2N1c2FibGUoYnVsbGV0RWwpO1xuICAgICAgICBpZiAoIXN3aXBlci5wYXJhbXMucGFnaW5hdGlvbi5yZW5kZXJCdWxsZXQpIHtcbiAgICAgICAgICBhZGRFbFJvbGUoYnVsbGV0RWwsICdidXR0b24nKTtcbiAgICAgICAgICBhZGRFbExhYmVsKGJ1bGxldEVsLCBwYXJhbXMucGFnaW5hdGlvbkJ1bGxldE1lc3NhZ2UucmVwbGFjZSgvXFx7XFx7aW5kZXhcXH1cXH0vLCBlbGVtZW50SW5kZXgoYnVsbGV0RWwpICsgMSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoYnVsbGV0RWwubWF0Y2hlcyhjbGFzc2VzVG9TZWxlY3Rvcihzd2lwZXIucGFyYW1zLnBhZ2luYXRpb24uYnVsbGV0QWN0aXZlQ2xhc3MpKSkge1xuICAgICAgICBidWxsZXRFbC5zZXRBdHRyaWJ1dGUoJ2FyaWEtY3VycmVudCcsICd0cnVlJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBidWxsZXRFbC5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtY3VycmVudCcpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIGNvbnN0IGluaXROYXZFbCA9IChlbCwgd3JhcHBlcklkLCBtZXNzYWdlKSA9PiB7XG4gICAgbWFrZUVsRm9jdXNhYmxlKGVsKTtcbiAgICBpZiAoZWwudGFnTmFtZSAhPT0gJ0JVVFRPTicpIHtcbiAgICAgIGFkZEVsUm9sZShlbCwgJ2J1dHRvbicpO1xuICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIG9uRW50ZXJPclNwYWNlS2V5KTtcbiAgICB9XG4gICAgYWRkRWxMYWJlbChlbCwgbWVzc2FnZSk7XG4gICAgYWRkRWxDb250cm9scyhlbCwgd3JhcHBlcklkKTtcbiAgfTtcbiAgY29uc3QgaGFuZGxlUG9pbnRlckRvd24gPSBlID0+IHtcbiAgICBpZiAoZm9jdXNUYXJnZXRTbGlkZUVsICYmIGZvY3VzVGFyZ2V0U2xpZGVFbCAhPT0gZS50YXJnZXQgJiYgIWZvY3VzVGFyZ2V0U2xpZGVFbC5jb250YWlucyhlLnRhcmdldCkpIHtcbiAgICAgIHByZXZlbnRGb2N1c0hhbmRsZXIgPSB0cnVlO1xuICAgIH1cbiAgICBzd2lwZXIuYTExeS5jbGlja2VkID0gdHJ1ZTtcbiAgfTtcbiAgY29uc3QgaGFuZGxlUG9pbnRlclVwID0gKCkgPT4ge1xuICAgIHByZXZlbnRGb2N1c0hhbmRsZXIgPSBmYWxzZTtcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgaWYgKCFzd2lwZXIuZGVzdHJveWVkKSB7XG4gICAgICAgICAgc3dpcGVyLmExMXkuY2xpY2tlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfTtcbiAgY29uc3Qgb25WaXNpYmlsaXR5Q2hhbmdlID0gZSA9PiB7XG4gICAgdmlzaWJpbGl0eUNoYW5nZWRUaW1lc3RhbXAgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgfTtcbiAgY29uc3QgaGFuZGxlRm9jdXMgPSBlID0+IHtcbiAgICBpZiAoc3dpcGVyLmExMXkuY2xpY2tlZCB8fCAhc3dpcGVyLnBhcmFtcy5hMTF5LnNjcm9sbE9uRm9jdXMpIHJldHVybjtcbiAgICBpZiAobmV3IERhdGUoKS5nZXRUaW1lKCkgLSB2aXNpYmlsaXR5Q2hhbmdlZFRpbWVzdGFtcCA8IDEwMCkgcmV0dXJuO1xuICAgIGNvbnN0IHNsaWRlRWwgPSBlLnRhcmdldC5jbG9zZXN0KGAuJHtzd2lwZXIucGFyYW1zLnNsaWRlQ2xhc3N9LCBzd2lwZXItc2xpZGVgKTtcbiAgICBpZiAoIXNsaWRlRWwgfHwgIXN3aXBlci5zbGlkZXMuaW5jbHVkZXMoc2xpZGVFbCkpIHJldHVybjtcbiAgICBmb2N1c1RhcmdldFNsaWRlRWwgPSBzbGlkZUVsO1xuICAgIGNvbnN0IGlzQWN0aXZlID0gc3dpcGVyLnNsaWRlcy5pbmRleE9mKHNsaWRlRWwpID09PSBzd2lwZXIuYWN0aXZlSW5kZXg7XG4gICAgY29uc3QgaXNWaXNpYmxlID0gc3dpcGVyLnBhcmFtcy53YXRjaFNsaWRlc1Byb2dyZXNzICYmIHN3aXBlci52aXNpYmxlU2xpZGVzICYmIHN3aXBlci52aXNpYmxlU2xpZGVzLmluY2x1ZGVzKHNsaWRlRWwpO1xuICAgIGlmIChpc0FjdGl2ZSB8fCBpc1Zpc2libGUpIHJldHVybjtcbiAgICBpZiAoZS5zb3VyY2VDYXBhYmlsaXRpZXMgJiYgZS5zb3VyY2VDYXBhYmlsaXRpZXMuZmlyZXNUb3VjaEV2ZW50cykgcmV0dXJuO1xuICAgIGlmIChzd2lwZXIuaXNIb3Jpem9udGFsKCkpIHtcbiAgICAgIHN3aXBlci5lbC5zY3JvbGxMZWZ0ID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgc3dpcGVyLmVsLnNjcm9sbFRvcCA9IDA7XG4gICAgfVxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICBpZiAocHJldmVudEZvY3VzSGFuZGxlcikgcmV0dXJuO1xuICAgICAgaWYgKHN3aXBlci5wYXJhbXMubG9vcCkge1xuICAgICAgICBzd2lwZXIuc2xpZGVUb0xvb3Aoc3dpcGVyLmdldFNsaWRlSW5kZXhXaGVuR3JpZChwYXJzZUludChzbGlkZUVsLmdldEF0dHJpYnV0ZSgnZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgnKSkpLCAwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN3aXBlci5zbGlkZVRvKHN3aXBlci5nZXRTbGlkZUluZGV4V2hlbkdyaWQoc3dpcGVyLnNsaWRlcy5pbmRleE9mKHNsaWRlRWwpKSwgMCk7XG4gICAgICB9XG4gICAgICBwcmV2ZW50Rm9jdXNIYW5kbGVyID0gZmFsc2U7XG4gICAgfSk7XG4gIH07XG4gIGNvbnN0IGluaXRTbGlkZXMgPSAoKSA9PiB7XG4gICAgY29uc3QgcGFyYW1zID0gc3dpcGVyLnBhcmFtcy5hMTF5O1xuICAgIGlmIChwYXJhbXMuaXRlbVJvbGVEZXNjcmlwdGlvbk1lc3NhZ2UpIHtcbiAgICAgIGFkZEVsUm9sZURlc2NyaXB0aW9uKHN3aXBlci5zbGlkZXMsIHBhcmFtcy5pdGVtUm9sZURlc2NyaXB0aW9uTWVzc2FnZSk7XG4gICAgfVxuICAgIGlmIChwYXJhbXMuc2xpZGVSb2xlKSB7XG4gICAgICBhZGRFbFJvbGUoc3dpcGVyLnNsaWRlcywgcGFyYW1zLnNsaWRlUm9sZSk7XG4gICAgfVxuICAgIGNvbnN0IHNsaWRlc0xlbmd0aCA9IHN3aXBlci5zbGlkZXMubGVuZ3RoO1xuICAgIGlmIChwYXJhbXMuc2xpZGVMYWJlbE1lc3NhZ2UpIHtcbiAgICAgIHN3aXBlci5zbGlkZXMuZm9yRWFjaCgoc2xpZGVFbCwgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3Qgc2xpZGVJbmRleCA9IHN3aXBlci5wYXJhbXMubG9vcCA/IHBhcnNlSW50KHNsaWRlRWwuZ2V0QXR0cmlidXRlKCdkYXRhLXN3aXBlci1zbGlkZS1pbmRleCcpLCAxMCkgOiBpbmRleDtcbiAgICAgICAgY29uc3QgYXJpYUxhYmVsTWVzc2FnZSA9IHBhcmFtcy5zbGlkZUxhYmVsTWVzc2FnZS5yZXBsYWNlKC9cXHtcXHtpbmRleFxcfVxcfS8sIHNsaWRlSW5kZXggKyAxKS5yZXBsYWNlKC9cXHtcXHtzbGlkZXNMZW5ndGhcXH1cXH0vLCBzbGlkZXNMZW5ndGgpO1xuICAgICAgICBhZGRFbExhYmVsKHNsaWRlRWwsIGFyaWFMYWJlbE1lc3NhZ2UpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuICBjb25zdCBpbml0ID0gKCkgPT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IHN3aXBlci5wYXJhbXMuYTExeTtcbiAgICBzd2lwZXIuZWwuYXBwZW5kKGxpdmVSZWdpb24pO1xuXG4gICAgLy8gQ29udGFpbmVyXG4gICAgY29uc3QgY29udGFpbmVyRWwgPSBzd2lwZXIuZWw7XG4gICAgaWYgKHBhcmFtcy5jb250YWluZXJSb2xlRGVzY3JpcHRpb25NZXNzYWdlKSB7XG4gICAgICBhZGRFbFJvbGVEZXNjcmlwdGlvbihjb250YWluZXJFbCwgcGFyYW1zLmNvbnRhaW5lclJvbGVEZXNjcmlwdGlvbk1lc3NhZ2UpO1xuICAgIH1cbiAgICBpZiAocGFyYW1zLmNvbnRhaW5lck1lc3NhZ2UpIHtcbiAgICAgIGFkZEVsTGFiZWwoY29udGFpbmVyRWwsIHBhcmFtcy5jb250YWluZXJNZXNzYWdlKTtcbiAgICB9XG4gICAgaWYgKHBhcmFtcy5jb250YWluZXJSb2xlKSB7XG4gICAgICBhZGRFbFJvbGUoY29udGFpbmVyRWwsIHBhcmFtcy5jb250YWluZXJSb2xlKTtcbiAgICB9XG5cbiAgICAvLyBXcmFwcGVyXG4gICAgY29uc3Qgd3JhcHBlckVsID0gc3dpcGVyLndyYXBwZXJFbDtcbiAgICBjb25zdCB3cmFwcGVySWQgPSBwYXJhbXMuaWQgfHwgd3JhcHBlckVsLmdldEF0dHJpYnV0ZSgnaWQnKSB8fCBgc3dpcGVyLXdyYXBwZXItJHtnZXRSYW5kb21OdW1iZXIoMTYpfWA7XG4gICAgY29uc3QgbGl2ZSA9IHN3aXBlci5wYXJhbXMuYXV0b3BsYXkgJiYgc3dpcGVyLnBhcmFtcy5hdXRvcGxheS5lbmFibGVkID8gJ29mZicgOiAncG9saXRlJztcbiAgICBhZGRFbElkKHdyYXBwZXJFbCwgd3JhcHBlcklkKTtcbiAgICBhZGRFbExpdmUod3JhcHBlckVsLCBsaXZlKTtcblxuICAgIC8vIFNsaWRlXG4gICAgaW5pdFNsaWRlcygpO1xuXG4gICAgLy8gTmF2aWdhdGlvblxuICAgIGxldCB7XG4gICAgICBuZXh0RWwsXG4gICAgICBwcmV2RWxcbiAgICB9ID0gc3dpcGVyLm5hdmlnYXRpb24gPyBzd2lwZXIubmF2aWdhdGlvbiA6IHt9O1xuICAgIG5leHRFbCA9IG1ha2VFbGVtZW50c0FycmF5KG5leHRFbCk7XG4gICAgcHJldkVsID0gbWFrZUVsZW1lbnRzQXJyYXkocHJldkVsKTtcbiAgICBpZiAobmV4dEVsKSB7XG4gICAgICBuZXh0RWwuZm9yRWFjaChlbCA9PiBpbml0TmF2RWwoZWwsIHdyYXBwZXJJZCwgcGFyYW1zLm5leHRTbGlkZU1lc3NhZ2UpKTtcbiAgICB9XG4gICAgaWYgKHByZXZFbCkge1xuICAgICAgcHJldkVsLmZvckVhY2goZWwgPT4gaW5pdE5hdkVsKGVsLCB3cmFwcGVySWQsIHBhcmFtcy5wcmV2U2xpZGVNZXNzYWdlKSk7XG4gICAgfVxuXG4gICAgLy8gUGFnaW5hdGlvblxuICAgIGlmIChoYXNDbGlja2FibGVQYWdpbmF0aW9uKCkpIHtcbiAgICAgIGNvbnN0IHBhZ2luYXRpb25FbCA9IG1ha2VFbGVtZW50c0FycmF5KHN3aXBlci5wYWdpbmF0aW9uLmVsKTtcbiAgICAgIHBhZ2luYXRpb25FbC5mb3JFYWNoKGVsID0+IHtcbiAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIG9uRW50ZXJPclNwYWNlS2V5KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFRhYiBmb2N1c1xuICAgIGNvbnN0IGRvY3VtZW50ID0gZ2V0RG9jdW1lbnQoKTtcbiAgICBkb2
vendor: 14,966 bytes, lines 386-699
386N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd2aXNpYmlsaXR5Y2hhbmdlJywgb25WaXNpYmlsaXR5Q2hhbmdlKTtcbiAgICBzd2lwZXIuZWwuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCBoYW5kbGVGb2N1cywgdHJ1ZSk7XG4gICAgc3dpcGVyLmVsLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgaGFuZGxlRm9jdXMsIHRydWUpO1xuICAgIHN3aXBlci5lbC5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVyZG93bicsIGhhbmRsZVBvaW50ZXJEb3duLCB0cnVlKTtcbiAgICBzd2lwZXIuZWwuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcnVwJywgaGFuZGxlUG9pbnRlclVwLCB0cnVlKTtcbiAgfTtcbiAgZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICBpZiAobGl2ZVJlZ2lvbikgbGl2ZVJlZ2lvbi5yZW1vdmUoKTtcbiAgICBsZXQge1xuICAgICAgbmV4dEVsLFxuICAgICAgcHJldkVsXG4gICAgfSA9IHN3aXBlci5uYXZpZ2F0aW9uID8gc3dpcGVyLm5hdmlnYXRpb24gOiB7fTtcbiAgICBuZXh0RWwgPSBtYWtlRWxlbWVudHNBcnJheShuZXh0RWwpO1xuICAgIHByZXZFbCA9IG1ha2VFbGVtZW50c0FycmF5KHByZXZFbCk7XG4gICAgaWYgKG5leHRFbCkge1xuICAgICAgbmV4dEVsLmZvckVhY2goZWwgPT4gZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIG9uRW50ZXJPclNwYWNlS2V5KSk7XG4gICAgfVxuICAgIGlmIChwcmV2RWwpIHtcbiAgICAgIHByZXZFbC5mb3JFYWNoKGVsID0+IGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBvbkVudGVyT3JTcGFjZUtleSkpO1xuICAgIH1cblxuICAgIC8vIFBhZ2luYXRpb25cbiAgICBpZiAoaGFzQ2xpY2thYmxlUGFnaW5hdGlvbigpKSB7XG4gICAgICBjb25zdCBwYWdpbmF0aW9uRWwgPSBtYWtlRWxlbWVudHNBcnJheShzd2lwZXIucGFnaW5hdGlvbi5lbCk7XG4gICAgICBwYWdpbmF0aW9uRWwuZm9yRWFjaChlbCA9PiB7XG4gICAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBvbkVudGVyT3JTcGFjZUtleSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgZG9jdW1lbnQgPSBnZXREb2N1bWVudCgpO1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Zpc2liaWxpdHljaGFuZ2UnLCBvblZpc2liaWxpdHlDaGFuZ2UpO1xuICAgIC8vIFRhYiBmb2N1c1xuICAgIGlmIChzd2lwZXIuZWwgJiYgdHlwZW9mIHN3aXBlci5lbCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHN3aXBlci5lbC5yZW1vdmVFdmVudExpc3RlbmVyKCdmb2N1cycsIGhhbmRsZUZvY3VzLCB0cnVlKTtcbiAgICAgIHN3aXBlci5lbC5yZW1vdmVFdmVudExpc3RlbmVyKCdwb2ludGVyZG93bicsIGhhbmRsZVBvaW50ZXJEb3duLCB0cnVlKTtcbiAgICAgIHN3aXBlci5lbC5yZW1vdmVFdmVudExpc3RlbmVyKCdwb2ludGVydXAnLCBoYW5kbGVQb2ludGVyVXAsIHRydWUpO1xuICAgIH1cbiAgfVxuICBvbignYmVmb3JlSW5pdCcsICgpID0+IHtcbiAgICBsaXZlUmVnaW9uID0gY3JlYXRlRWxlbWVudCgnc3BhbicsIHN3aXBlci5wYXJhbXMuYTExeS5ub3RpZmljYXRpb25DbGFzcyk7XG4gICAgbGl2ZVJlZ2lvbi5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGl2ZScsICdhc3NlcnRpdmUnKTtcbiAgICBsaXZlUmVnaW9uLnNldEF0dHJpYnV0ZSgnYXJpYS1hdG9taWMnLCAndHJ1ZScpO1xuICB9KTtcbiAgb24oJ2FmdGVySW5pdCcsICgpID0+IHtcbiAgICBpZiAoIXN3aXBlci5wYXJhbXMuYTExeS5lbmFibGVkKSByZXR1cm47XG4gICAgaW5pdCgpO1xuICB9KTtcbiAgb24oJ3NsaWRlc0xlbmd0aENoYW5nZSBzbmFwR3JpZExlbmd0aENoYW5nZSBzbGlkZXNHcmlkTGVuZ3RoQ2hhbmdlJywgKCkgPT4ge1xuICAgIGlmICghc3dpcGVyLnBhcmFtcy5hMTF5LmVuYWJsZWQpIHJldHVybjtcbiAgICBpbml0U2xpZGVzKCk7XG4gIH0pO1xuICBvbignZnJvbUVkZ2UgdG9FZGdlIGFmdGVySW5pdCBsb2NrIHVubG9jaycsICgpID0+IHtcbiAgICBpZiAoIXN3aXBlci5wYXJhbXMuYTExeS5lbmFibGVkKSByZXR1cm47XG4gICAgdXBkYXRlTmF2aWdhdGlvbigpO1xuICB9KTtcbiAgb24oJ3BhZ2luYXRpb25VcGRhdGUnLCAoKSA9PiB7XG4gICAgaWYgKCFzd2lwZXIucGFyYW1zLmExMXkuZW5hYmxlZCkgcmV0dXJuO1xuICAgIHVwZGF0ZVBhZ2luYXRpb24oKTtcbiAgfSk7XG4gIG9uKCdkZXN0cm95JywgKCkgPT4ge1xuICAgIGlmICghc3dpcGVyLnBhcmFtcy5hMTF5LmVuYWJsZWQpIHJldHVybjtcbiAgICBkZXN0cm95KCk7XG4gIH0pO1xufVxuXG5leHBvcnQgeyBBMTF5IGFzIGRlZmF1bHQgfTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=
387//# sourceURL=webpack-internal:///../node_modules/swiper/modules/a11y.mjs
388
389}`)},"../node_modules/swiper/modules/autoplay.mjs"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval(`{__webpack_require__.r(__webpack_exports__);
390/* harmony export */ __webpack_require__.d(__webpack_exports__, {
391/* harmony export */   "default": () => (/* binding */ Autoplay)
392/* harmony export */ });
393/* harmony import */ var _shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/ssr-window.esm.mjs */ "../node_modules/swiper/shared/ssr-window.esm.mjs");
394
395
396/* eslint no-underscore-dangle: "off" */
397/* eslint no-use-before-define: "off" */
398function Autoplay(_ref) {
399  let {
400    swiper,
401    extendParams,
402    on,
403    emit,
404    params
405  } = _ref;
406  swiper.autoplay = {
407    running: false,
408    paused: false,
409    timeLeft: 0
410  };
411  extendParams({
412    autoplay: {
413      enabled: false,
414      delay: 3000,
415      waitForTransition: true,
416      disableOnInteraction: false,
417      stopOnLastSlide: false,
418      reverseDirection: false,
419      pauseOnMouseEnter: false
420    }
421  });
422  let timeout;
423  let raf;
424  let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;
425  let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;
426  let autoplayTimeLeft;
427  let autoplayStartTime = new Date().getTime();
428  let wasPaused;
429  let isTouched;
430  let pausedByTouch;
431  let touchStartTimeout;
432  let slideChanged;
433  let pausedByInteraction;
434  let pausedByPointerEnter;
435  function onTransitionEnd(e) {
436    if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;
437    if (e.target !== swiper.wrapperEl) return;
438    swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd);
439    if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) {
440      return;
441    }
442    resume();
443  }
444  const calcTimeLeft = () => {
445    if (swiper.destroyed || !swiper.autoplay.running) return;
446    if (swiper.autoplay.paused) {
447      wasPaused = true;
448    } else if (wasPaused) {
449      autoplayDelayCurrent = autoplayTimeLeft;
450      wasPaused = false;
451    }
452    const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();
453    swiper.autoplay.timeLeft = timeLeft;
454    emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);
455    raf = requestAnimationFrame(() => {
456      calcTimeLeft();
457    });
458  };
459  const getSlideDelay = () => {
460    let activeSlideEl;
461    if (swiper.virtual && swiper.params.virtual.enabled) {
462      activeSlideEl = swiper.slides.find(slideEl => slideEl.classList.contains('swiper-slide-active'));
463    } else {
464      activeSlideEl = swiper.slides[swiper.activeIndex];
465    }
466    if (!activeSlideEl) return undefined;
467    const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);
468    return currentSlideDelay;
469  };
470  const run = delayForce => {
471    if (swiper.destroyed || !swiper.autoplay.running) return;
472    cancelAnimationFrame(raf);
473    calcTimeLeft();
474    let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce;
475    autoplayDelayTotal = swiper.params.autoplay.delay;
476    autoplayDelayCurrent = swiper.params.autoplay.delay;
477    const currentSlideDelay = getSlideDelay();
478    if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') {
479      delay = currentSlideDelay;
480      autoplayDelayTotal = currentSlideDelay;
481      autoplayDelayCurrent = currentSlideDelay;
482    }
483    autoplayTimeLeft = delay;
484    const speed = swiper.params.speed;
485    const proceed = () => {
486      if (!swiper || swiper.destroyed) return;
487      if (swiper.params.autoplay.reverseDirection) {
488        if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {
489          swiper.slidePrev(speed, true, true);
490          emit('autoplay');
491        } else if (!swiper.params.autoplay.stopOnLastSlide) {
492          swiper.slideTo(swiper.slides.length - 1, speed, true, true);
493          emit('autoplay');
494        }
495      } else {
496        if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {
497          swiper.slideNext(speed, true, true);
498          emit('autoplay');
499        } else if (!swiper.params.autoplay.stopOnLastSlide) {
500          swiper.slideTo(0, speed, true, true);
501          emit('autoplay');
502        }
503      }
504      if (swiper.params.cssMode) {
505        autoplayStartTime = new Date().getTime();
506        requestAnimationFrame(() => {
507          run();
508        });
509      }
510    };
511    if (delay > 0) {
512      clearTimeout(timeout);
513      timeout = setTimeout(() => {
514        proceed();
515      }, delay);
516    } else {
517      requestAnimationFrame(() => {
518        proceed();
519      });
520    }
521
522    // eslint-disable-next-line
523    return delay;
524  };
525  const start = () => {
526    autoplayStartTime = new Date().getTime();
527    swiper.autoplay.running = true;
528    run();
529    emit('autoplayStart');
530  };
531  const stop = () => {
532    swiper.autoplay.running = false;
533    clearTimeout(timeout);
534    cancelAnimationFrame(raf);
535    emit('autoplayStop');
536  };
537  const pause = (internal, reset) => {
538    if (swiper.destroyed || !swiper.autoplay.running) return;
539    clearTimeout(timeout);
540    if (!internal) {
541      pausedByInteraction = true;
542    }
543    const proceed = () => {
544      emit('autoplayPause');
545      if (swiper.params.autoplay.waitForTransition) {
546        swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd);
547      } else {
548        resume();
549      }
550    };
551    swiper.autoplay.paused = true;
552    if (reset) {
553      if (slideChanged) {
554        autoplayTimeLeft = swiper.params.autoplay.delay;
555      }
556      slideChanged = false;
557      proceed();
558      return;
559    }
560    const delay = autoplayTimeLeft || swiper.params.autoplay.delay;
561    autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);
562    if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;
563    if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;
564    proceed();
565  };
566  const resume = () => {
567    if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;
568    autoplayStartTime = new Date().getTime();
569    if (pausedByInteraction) {
570      pausedByInteraction = false;
571      run(autoplayTimeLeft);
572    } else {
573      run();
574    }
575    swiper.autoplay.paused = false;
576    emit('autoplayResume');
577  };
578  const onVisibilityChange = () => {
579    if (swiper.destroyed || !swiper.autoplay.running) return;
580    const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
581    if (document.visibilityState === 'hidden') {
582      pausedByInteraction = true;
583      pause(true);
584    }
585    if (document.visibilityState === 'visible') {
586      resume();
587    }
588  };
589  const onPointerEnter = e => {
590    if (e.pointerType !== 'mouse') return;
591    pausedByInteraction = true;
592    pausedByPointerEnter = true;
593    if (swiper.animating || swiper.autoplay.paused) return;
594    pause(true);
595  };
596  const onPointerLeave = e => {
597    if (e.pointerType !== 'mouse') return;
598    pausedByPointerEnter = false;
599    if (swiper.autoplay.paused) {
600      resume();
601    }
602  };
603  const attachMouseEvents = () => {
604    if (swiper.params.autoplay.pauseOnMouseEnter) {
605      swiper.el.addEventListener('pointerenter', onPointerEnter);
606      swiper.el.addEventListener('pointerleave', onPointerLeave);
607    }
608  };
609  const detachMouseEvents = () => {
610    if (swiper.el && typeof swiper.el !== 'string') {
611      swiper.el.removeEventListener('pointerenter', onPointerEnter);
612      swiper.el.removeEventListener('pointerleave', onPointerLeave);
613    }
614  };
615  const attachDocumentEvents = () => {
616    const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
617    document.addEventListener('visibilitychange', onVisibilityChange);
618  };
619  const detachDocumentEvents = () => {
620    const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
621    document.removeEventListener('visibilitychange', onVisibilityChange);
622  };
623  on('init', () => {
624    if (swiper.params.autoplay.enabled) {
625      attachMouseEvents();
626      attachDocumentEvents();
627      start();
628    }
629  });
630  on('destroy', () => {
631    detachMouseEvents();
632    detachDocumentEvents();
633    if (swiper.autoplay.running) {
634      stop();
635    }
636  });
637  on('_freeModeStaticRelease', () => {
638    if (pausedByTouch || pausedByInteraction) {
639      resume();
640    }
641  });
642  on('_freeModeNoMomentumRelease', () => {
643    if (!swiper.params.autoplay.disableOnInteraction) {
644      pause(true, true);
645    } else {
646      stop();
647    }
648  });
649  on('beforeTransitionStart', (_s, speed, internal) => {
650    if (swiper.destroyed || !swiper.autoplay.running) return;
651    if (internal || !swiper.params.autoplay.disableOnInteraction) {
652      pause(true, true);
653    } else {
654      stop();
655    }
656  });
657  on('sliderFirstMove', () => {
658    if (swiper.destroyed || !swiper.autoplay.running) return;
659    if (swiper.params.autoplay.disableOnInteraction) {
660      stop();
661      return;
662    }
663    isTouched = true;
664    pausedByTouch = false;
665    pausedByInteraction = false;
666    touchStartTimeout = setTimeout(() => {
667      pausedByInteraction = true;
668      pausedByTouch = true;
669      pause(true);
670    }, 200);
671  });
672  on('touchEnd', () => {
673    if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;
674    clearTimeout(touchStartTimeout);
675    clearTimeout(timeout);
676    if (swiper.params.autoplay.disableOnInteraction) {
677      pausedByTouch = false;
678      isTouched = false;
679      return;
680    }
681    if (pausedByTouch && swiper.params.cssMode) resume();
682    pausedByTouch = false;
683    isTouched = false;
684  });
685  on('slideChange', () => {
686    if (swiper.destroyed || !swiper.autoplay.running) return;
687    slideChanged = true;
688  });
689  Object.assign(swiper.autoplay, {
690    start,
691    stop,
692    pause,
693    resume
694  });
695}
696
697
698//# sourceURL=[module]
699//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9tb2R1bGVzL2F1dG9wbGF5Lm1qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFnRTs7QUFFaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxNQUFNO0FBQ047QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsNkRBQVc7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQiw2REFBVztBQUNoQztBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsNkRBQVc7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEd
699BQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUUrQiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvc3dpcGVyL21vZHVsZXMvYXV0b3BsYXkubWpzP2Q3NzIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZyBhcyBnZXREb2N1bWVudCB9IGZyb20gJy4uL3NoYXJlZC9zc3Itd2luZG93LmVzbS5tanMnO1xuXG4vKiBlc2xpbnQgbm8tdW5kZXJzY29yZS1kYW5nbGU6IFwib2ZmXCIgKi9cbi8qIGVzbGludCBuby11c2UtYmVmb3JlLWRlZmluZTogXCJvZmZcIiAqL1xuZnVuY3Rpb24gQXV0b3BsYXkoX3JlZikge1xuICBsZXQge1xuICAgIHN3aXBlcixcbiAgICBleHRlbmRQYXJhbXMsXG4gICAgb24sXG4gICAgZW1pdCxcbiAgICBwYXJhbXNcbiAgfSA9IF9yZWY7XG4gIHN3aXBlci5hdXRvcGxheSA9IHtcbiAgICBydW5uaW5nOiBmYWxzZSxcbiAgICBwYXVzZWQ6IGZhbHNlLFxuICAgIHRpbWVMZWZ0OiAwXG4gIH07XG4gIGV4dGVuZFBhcmFtcyh7XG4gICAgYXV0b3BsYXk6IHtcbiAgICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgICAgZGVsYXk6IDMwMDAsXG4gICAgICB3YWl0Rm9yVHJhbnNpdGlvbjogdHJ1ZSxcbiAgICAgIGRpc2FibGVPbkludGVyYWN0aW9uOiBmYWxzZSxcbiAgICAgIHN0b3BPbkxhc3RTbGlkZTogZmFsc2UsXG4gICAgICByZXZlcnNlRGlyZWN0aW9uOiBmYWxzZSxcbiAgICAgIHBhdXNlT25Nb3VzZUVudGVyOiBmYWxzZVxuICAgIH1cbiAgfSk7XG4gIGxldCB0aW1lb3V0O1xuICBsZXQgcmFmO1xuICBsZXQgYXV0b3BsYXlEZWxheVRvdGFsID0gcGFyYW1zICYmIHBhcmFtcy5hdXRvcGxheSA/IHBhcmFtcy5hdXRvcGxheS5kZWxheSA6IDMwMDA7XG4gIGxldCBhdXRvcGxheURlbGF5Q3VycmVudCA9IHBhcmFtcyAmJiBwYXJhbXMuYXV0b3BsYXkgPyBwYXJhbXMuYXV0b3BsYXkuZGVsYXkgOiAzMDAwO1xuICBsZXQgYXV0b3BsYXlUaW1lTGVmdDtcbiAgbGV0IGF1dG9wbGF5U3RhcnRUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gIGxldCB3YXNQYXVzZWQ7XG4gIGxldCBpc1RvdWNoZWQ7XG4gIGxldCBwYXVzZWRCeVRvdWNoO1xuICBsZXQgdG91Y2hTdGFydFRpbWVvdXQ7XG4gIGxldCBzbGlkZUNoYW5nZWQ7XG4gIGxldCBwYXVzZWRCeUludGVyYWN0aW9uO1xuICBsZXQgcGF1c2VkQnlQb2ludGVyRW50ZXI7XG4gIGZ1bmN0aW9uIG9uVHJhbnNpdGlvbkVuZChlKSB7XG4gICAgaWYgKCFzd2lwZXIgfHwgc3dpcGVyLmRlc3Ryb3llZCB8fCAhc3dpcGVyLndyYXBwZXJFbCkgcmV0dXJuO1xuICAgIGlmIChlLnRhcmdldCAhPT0gc3dpcGVyLndyYXBwZXJFbCkgcmV0dXJuO1xuICAgIHN3aXBlci53cmFwcGVyRWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIG9uVHJhbnNpdGlvbkVuZCk7XG4gICAgaWYgKHBhdXNlZEJ5UG9pbnRlckVudGVyIHx8IGUuZGV0YWlsICYmIGUuZGV0YWlsLmJ5U3dpcGVyVG91Y2hNb3ZlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHJlc3VtZSgpO1xuICB9XG4gIGNvbnN0IGNhbGNUaW1lTGVmdCA9ICgpID0+IHtcbiAgICBpZiAoc3dpcGVyLmRlc3Ryb3llZCB8fCAhc3dpcGVyLmF1dG9wbGF5LnJ1bm5pbmcpIHJldHVybjtcbiAgICBpZiAoc3dpcGVyLmF1dG9wbGF5LnBhdXNlZCkge1xuICAgICAgd2FzUGF1c2VkID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKHdhc1BhdXNlZCkge1xuICAgICAgYXV0b3BsYXlEZWxheUN1cnJlbnQgPSBhdXRvcGxheVRpbWVMZWZ0O1xuICAgICAgd2FzUGF1c2VkID0gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IHRpbWVMZWZ0ID0gc3dpcGVyLmF1dG9wbGF5LnBhdXNlZCA/IGF1dG9wbGF5VGltZUxlZnQgOiBhdXRvcGxheVN0YXJ0VGltZSArIGF1dG9wbGF5RGVsYXlDdXJyZW50IC0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgc3dpcGVyLmF1dG9wbGF5LnRpbWVMZWZ0ID0gdGltZUxlZnQ7XG4gICAgZW1pdCgnYXV0b3BsYXlUaW1lTGVmdCcsIHRpbWVMZWZ0LCB0aW1lTGVmdCAvIGF1dG9wbGF5RGVsYXlUb3RhbCk7XG4gICAgcmFmID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgIGNhbGNUaW1lTGVmdCgpO1xuICAgIH0pO1xuICB9O1xuICBjb25zdCBnZXRTbGlkZURlbGF5ID0gKCkgPT4ge1xuICAgIGxldCBhY3RpdmVTbGlkZUVsO1xuICAgIGlmIChzd2lwZXIudmlydHVhbCAmJiBzd2lwZXIucGFyYW1zLnZpcnR1YWwuZW5hYmxlZCkge1xuICAgICAgYWN0aXZlU2xpZGVFbCA9IHN3aXBlci5zbGlkZXMuZmluZChzbGlkZUVsID0+IHNsaWRlRWwuY2xhc3NMaXN0LmNvbnRhaW5zKCdzd2lwZXItc2xpZGUtYWN0aXZlJykpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhY3RpdmVTbGlkZUVsID0gc3dpcGVyLnNsaWRlc1tzd2lwZXIuYWN0aXZlSW5kZXhdO1xuICAgIH1cbiAgICBpZiAoIWFjdGl2ZVNsaWRlRWwpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgY29uc3QgY3VycmVudFNsaWRlRGVsYXkgPSBwYXJzZUludChhY3RpdmVTbGlkZUVsLmdldEF0dHJpYnV0ZSgnZGF0YS1zd2lwZXItYXV0b3BsYXknKSwgMTApO1xuICAgIHJldHVybiBjdXJyZW50U2xpZGVEZWxheTtcbiAgfTtcbiAgY29uc3QgcnVuID0gZGVsYXlGb3JjZSA9PiB7XG4gICAgaWYgKHN3aXBlci5kZXN0cm95ZWQgfHwgIXN3aXBlci5hdXRvcGxheS5ydW5uaW5nKSByZXR1cm47XG4gICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmFmKTtcbiAgICBjYWxjVGltZUxlZnQoKTtcbiAgICBsZXQgZGVsYXkgPSB0eXBlb2YgZGVsYXlGb3JjZSA9PT0gJ3VuZGVmaW5lZCcgPyBzd2lwZXIucGFyYW1zLmF1dG9wbGF5LmRlbGF5IDogZGVsYXlGb3JjZTtcbiAgICBhdXRvcGxheURlbGF5VG90YWwgPSBzd2lwZXIucGFyYW1zLmF1dG9wbGF5LmRlbGF5O1xuICAgIGF1dG9wbGF5RGVsYXlDdXJyZW50ID0gc3dpcGVyLnBhcmFtcy5hdXRvcGxheS5kZWxheTtcbiAgICBjb25zdCBjdXJyZW50U2xpZGVEZWxheSA9IGdldFNsaWRlRGVsYXkoKTtcbiAgICBpZiAoIU51bWJlci5pc05hTihjdXJyZW50U2xpZGVEZWxheSkgJiYgY3VycmVudFNsaWRlRGVsYXkgPiAwICYmIHR5cGVvZiBkZWxheUZvcmNlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgZGVsYXkgPSBjdXJyZW50U2xpZGVEZWxheTtcbiAgICAgIGF1dG9wbGF5RGVsYXlUb3RhbCA9IGN1cnJlbnRTbGlkZURlbGF5O1xuICAgICAgYXV0b3BsYXlEZWxheUN1cnJlbnQgPSBjdXJyZW50U2xpZGVEZWxheTtcbiAgICB9XG4gICAgYXV0b3BsYXlUaW1lTGVmdCA9IGRlbGF5O1xuICAgIGNvbnN0IHNwZWVkID0gc3dpcGVyLnBhcmFtcy5zcGVlZDtcbiAgICBjb25zdCBwcm9jZWVkID0gKCkgPT4ge1xuICAgICAgaWYgKCFzd2lwZXIgfHwgc3dpcGVyLmRlc3Ryb3llZCkgcmV0dXJuO1xuICAgICAgaWYgKHN3aXBlci5wYXJhbXMuYXV0b3BsYXkucmV2ZXJzZURpcmVjdGlvbikge1xuICAgICAgICBpZiAoIXN3aXBlci5pc0JlZ2lubmluZyB8fCBzd2lwZXIucGFyYW1zLmxvb3AgfHwgc3dpcGVyLnBhcmFtcy5yZXdpbmQpIHtcbiAgICAgICAgICBzd2lwZXIuc2xpZGVQcmV2KHNwZWVkLCB0cnVlLCB0cnVlKTtcbiAgICAgICAgICBlbWl0KCdhdXRvcGxheScpO1xuICAgICAgICB9IGVsc2UgaWYgKCFzd2lwZXIucGFyYW1zLmF1dG9wbGF5LnN0b3BPbkxhc3RTbGlkZSkge1xuICAgICAgICAgI
699HN3aXBlci5zbGlkZVRvKHN3aXBlci5zbGlkZXMubGVuZ3RoIC0gMSwgc3BlZWQsIHRydWUsIHRydWUpO1xuICAgICAgICAgIGVtaXQoJ2F1dG9wbGF5Jyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghc3dpcGVyLmlzRW5kIHx8IHN3aXBlci5wYXJhbXMubG9vcCB8fCBzd2lwZXIucGFyYW1zLnJld2luZCkge1xuICAgICAgICAgIHN3aXBlci5zbGlkZU5leHQoc3BlZWQsIHRydWUsIHRydWUpO1xuICAgICAgICAgIGVtaXQoJ2F1dG9wbGF5Jyk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXN3aXBlci5wYXJhbXMuYXV0b3BsYXkuc3RvcE9uTGFzdFNsaWRlKSB7XG4gICAgICAgICAgc3dpcGVyLnNsaWRlVG8oMCwgc3BlZWQsIHRydWUsIHRydWUpO1xuICAgICAgICAgIGVtaXQoJ2F1dG9wbGF5Jyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChzd2lwZXIucGFyYW1zLmNzc01vZGUpIHtcbiAgICAgICAgYXV0b3BsYXlTdGFydFRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICBydW4oKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfTtcbiAgICBpZiAoZGVsYXkgPiAwKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHByb2NlZWQoKTtcbiAgICAgIH0sIGRlbGF5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgcHJvY2VlZCgpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgcmV0dXJuIGRlbGF5O1xuICB9O1xuICBjb25zdCBzdGFydCA9ICgpID0+IHtcbiAgICBhdXRvcGxheVN0YXJ0VGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgIHN3aXBlci5hdXRvcGxheS5ydW5uaW5nID0gdHJ1ZTtcbiAgICBydW4oKTtcbiAgICBlbWl0KCdhdXRvcGxheVN0YXJ0Jyk7XG4gIH07XG4gIGNvbnN0IHN0b3AgPSAoKSA9PiB7XG4gICAgc3dpcGVyLmF1dG9wbGF5LnJ1bm5pbmcgPSBmYWxzZTtcbiAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmFmKTtcbiAgICBlbWl0KCdhdXRvcGxheVN0b3AnKTtcbiAgfTtcbiAgY29uc3QgcGF1c2UgPSAoaW50ZXJuYWwsIHJlc2V0KSA9PiB7XG4gICAgaWYgKHN3aXBlci5kZXN0cm95ZWQgfHwgIXN3aXBlci5hdXRvcGxheS5ydW5uaW5nKSByZXR1cm47XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgIHBhdXNlZEJ5SW50ZXJhY3Rpb24gPSB0cnVlO1xuICAgIH1cbiAgICBjb25zdCBwcm9jZWVkID0gKCkgPT4ge1xuICAgICAgZW1pdCgnYXV0b3BsYXlQYXVzZScpO1xuICAgICAgaWYgKHN3aXBlci5wYXJhbXMuYXV0b3BsYXkud2FpdEZvclRyYW5zaXRpb24pIHtcbiAgICAgICAgc3dpcGVyLndyYXBwZXJFbC5hZGRFdmVudExpc3RlbmVyKCd0cmFuc2l0aW9uZW5kJywgb25UcmFuc2l0aW9uRW5kKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VtZSgpO1xuICAgICAgfVxuICAgIH07XG4gICAgc3dpcGVyLmF1dG9wbGF5LnBhdXNlZCA9IHRydWU7XG4gICAgaWYgKHJlc2V0KSB7XG4gICAgICBpZiAoc2xpZGVDaGFuZ2VkKSB7XG4gICAgICAgIGF1dG9wbGF5VGltZUxlZnQgPSBzd2lwZXIucGFyYW1zLmF1dG9wbGF5LmRlbGF5O1xuICAgICAgfVxuICAgICAgc2xpZGVDaGFuZ2VkID0gZmFsc2U7XG4gICAgICBwcm9jZWVkKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGRlbGF5ID0gYXV0b3BsYXlUaW1lTGVmdCB8fCBzd2lwZXIucGFyYW1zLmF1dG9wbGF5LmRlbGF5O1xuICAgIGF1dG9wbGF5VGltZUxlZnQgPSBkZWxheSAtIChuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIGF1dG9wbGF5U3RhcnRUaW1lKTtcbiAgICBpZiAoc3dpcGVyLmlzRW5kICYmIGF1dG9wbGF5VGltZUxlZnQgPCAwICYmICFzd2lwZXIucGFyYW1zLmxvb3ApIHJldHVybjtcbiAgICBpZiAoYXV0b3BsYXlUaW1lTGVmdCA8IDApIGF1dG9wbGF5VGltZUxlZnQgPSAwO1xuICAgIHByb2NlZWQoKTtcbiAgfTtcbiAgY29uc3QgcmVzdW1lID0gKCkgPT4ge1xuICAgIGlmIChzd2lwZXIuaXNFbmQgJiYgYXV0b3BsYXlUaW1lTGVmdCA8IDAgJiYgIXN3aXBlci5wYXJhbXMubG9vcCB8fCBzd2lwZXIuZGVzdHJveWVkIHx8ICFzd2lwZXIuYXV0b3BsYXkucnVubmluZykgcmV0dXJuO1xuICAgIGF1dG9wbGF5U3RhcnRUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgaWYgKHBhdXNlZEJ5SW50ZXJhY3Rpb24pIHtcbiAgICAgIHBhdXNlZEJ5SW50ZXJhY3Rpb24gPSBmYWxzZTtcbiAgICAgIHJ1bihhdXRvcGxheVRpbWVMZWZ0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcnVuKCk7XG4gICAgfVxuICAgIHN3aXBlci5hdXRvcGxheS5wYXVzZWQgPSBmYWxzZTtcbiAgICBlbWl0KCdhdXRvcGxheVJlc3VtZScpO1xuICB9O1xuICBjb25zdCBvblZpc2liaWxpdHlDaGFuZ2UgPSAoKSA9PiB7XG4gICAgaWYgKHN3aXBlci5kZXN0cm95ZWQgfHwgIXN3aXBlci5hdXRvcGxheS5ydW5uaW5nKSByZXR1cm47XG4gICAgY29uc3QgZG9jdW1lbnQgPSBnZXREb2N1bWVudCgpO1xuICAgIGlmIChkb2N1bWVudC52aXNpYmlsaXR5U3RhdGUgPT09ICdoaWRkZW4nKSB7XG4gICAgICBwYXVzZWRCeUludGVyYWN0aW9uID0gdHJ1ZTtcbiAgICAgIHBhdXNlKHRydWUpO1xuICAgIH1cbiAgICBpZiAoZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlID09PSAndmlzaWJsZScpIHtcbiAgICAgIHJlc3VtZSgpO1xuICAgIH1cbiAgfTtcbiAgY29uc3Qgb25Qb2ludGVyRW50ZXIgPSBlID0+IHtcbiAgICBpZiAoZS5wb2ludGVyVHlwZSAhPT0gJ21vdXNlJykgcmV0dXJuO1xuICAgIHBhdXNlZEJ5SW50ZXJhY3Rpb24gPSB0cnVlO1xuICAgIHBhdXNlZEJ5UG9pbnRlckVudGVyID0gdHJ1ZTtcbiAgICBpZiAoc3dpcGVyLmFuaW1hdGluZyB8fCBzd2lwZXIuYXV0b3BsYXkucGF1c2VkKSByZXR1cm47XG4gICAgcGF1c2UodHJ1ZSk7XG4gIH07XG4gIGNvbnN0IG9uUG9pbnRlckxlYXZlID0gZSA9PiB7XG4gICAgaWYgKGUucG9pbnRlclR5cGUgIT09ICdtb3VzZScpIHJldHVybjtcbiAgICBwYXVzZWRCeVBvaW50ZXJFbnRlciA9IGZhbHNlO1xuICAgIGlmIChzd2lwZXIuYXV0b3BsYXkucGF1c2VkKSB7XG4gICAgICByZXN1bWUoKTtcbiAgICB9XG4gI
699H07XG4gIGNvbnN0IGF0dGFjaE1vdXNlRXZlbnRzID0gKCkgPT4ge1xuICAgIGlmIChzd2lwZXIucGFyYW1zLmF1dG9wbGF5LnBhdXNlT25Nb3VzZUVudGVyKSB7XG4gICAgICBzd2lwZXIuZWwuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcmVudGVyJywgb25Qb2ludGVyRW50ZXIpO1xuICAgICAgc3dpcGVyLmVsLmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJsZWF2ZScsIG9uUG9pbnRlckxlYXZlKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IGRldGFjaE1vdXNlRXZlbnRzID0gKCkgPT4ge1xuICAgIGlmIChzd2lwZXIuZWwgJiYgdHlwZW9mIHN3aXBlci5lbCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHN3aXBlci5lbC5yZW1vdmVFdmVudExpc3RlbmVyKCdwb2ludGVyZW50ZXInLCBvblBvaW50ZXJFbnRlcik7XG4gICAgICBzd2lwZXIuZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigncG9pbnRlcmxlYXZlJywgb25Qb2ludGVyTGVhdmUpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgYXR0YWNoRG9jdW1lbnRFdmVudHMgPSAoKSA9PiB7XG4gICAgY29uc3QgZG9jdW1lbnQgPSBnZXREb2N1bWVudCgpO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Zpc2liaWxpdHljaGFuZ2UnLCBvblZpc2liaWxpdHlDaGFuZ2UpO1xuICB9O1xuICBjb25zdCBkZXRhY2hEb2N1bWVudEV2ZW50cyA9ICgpID0+IHtcbiAgICBjb25zdCBkb2N1bWVudCA9IGdldERvY3VtZW50KCk7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndmlzaWJpbGl0eWNoYW5nZScsIG9uVmlzaWJpbGl0eUNoYW5nZSk7XG4gIH07XG4gIG9uKCdpbml0JywgKCkgPT4ge1xuICAgIGlmIChzd2lwZXIucGFyYW1zLmF1dG9wbGF5LmVuYWJsZWQpIHtcbiAgICAgIGF0dGFjaE1vdXNlRXZlbnRzKCk7XG4gICAgICBhdHRhY2hEb2N1bWVudEV2ZW50cygpO1xuICAgICAgc3RhcnQoKTtcbiAgICB9XG4gIH0pO1xuICBvbignZGVzdHJveScsICgpID0+IHtcbiAgICBkZXRhY2hNb3VzZUV2ZW50cygpO1xuICAgIGRldGFjaERvY3VtZW50RXZlbnRzKCk7XG4gICAgaWYgKHN3aXBlci5hdXRvcGxheS5ydW5uaW5nKSB7XG4gICAgICBzdG9wKCk7XG4gICAgfVxuICB9KTtcbiAgb24oJ19mcmVlTW9kZVN0YXRpY1JlbGVhc2UnLCAoKSA9PiB7XG4gICAgaWYgKHBhdXNlZEJ5VG91Y2ggfHwgcGF1c2VkQnlJbnRlcmFjdGlvbikge1xuICAgICAgcmVzdW1lKCk7XG4gICAgfVxuICB9KTtcbiAgb24oJ19mcmVlTW9kZU5vTW9tZW50dW1SZWxlYXNlJywgKCkgPT4ge1xuICAgIGlmICghc3dpcGVyLnBhcmFtcy5hdXRvcGxheS5kaXNhYmxlT25JbnRlcmFjdGlvbikge1xuICAgICAgcGF1c2UodHJ1ZSwgdHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0b3AoKTtcbiAgICB9XG4gIH0pO1xuICBvbignYmVmb3JlVHJhbnNpdGlvblN0YXJ0JywgKF9zLCBzcGVlZCwgaW50ZXJuYWwpID0+IHtcbiAgICBpZiAoc3dpcGVyLmRlc3Ryb3llZCB8fCAhc3dpcGVyLmF1dG9wbGF5LnJ1bm5pbmcpIHJldHVybjtcbiAgICBpZiAoaW50ZXJuYWwgfHwgIXN3aXBlci5wYXJhbXMuYXV0b3BsYXkuZGlzYWJsZU9uSW50ZXJhY3Rpb24pIHtcbiAgICAgIHBhdXNlKHRydWUsIHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdG9wKCk7XG4gICAgfVxuICB9KTtcbiAgb24oJ3NsaWRlckZpcnN0TW92ZScsICgpID0+IHtcbiAgICBpZiAoc3dpcGVyLmRlc3Ryb3llZCB8fCAhc3dpcGVyLmF1dG9wbGF5LnJ1bm5pbmcpIHJldHVybjtcbiAgICBpZiAoc3dpcGVyLnBhcmFtcy5hdXRvcGxheS5kaXNhYmxlT25JbnRlcmFjdGlvbikge1xuICAgICAgc3RvcCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpc1RvdWNoZWQgPSB0cnVlO1xuICAgIHBhdXNlZEJ5VG91Y2ggPSBmYWxzZTtcbiAgICBwYXVzZWRCeUludGVyYWN0aW9uID0gZmFsc2U7XG4gICAgdG91Y2hTdGFydFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHBhdXNlZEJ5SW50ZXJhY3Rpb24gPSB0cnVlO1xuICAgICAgcGF1c2VkQnlUb3VjaCA9IHRydWU7XG4gICAgICBwYXVzZSh0cnVlKTtcbiAgICB9LCAyMDApO1xuICB9KTtcbiAgb24oJ3RvdWNoRW5kJywgKCkgPT4ge1xuICAgIGlmIChzd2lwZXIuZGVzdHJveWVkIHx8ICFzd2lwZXIuYXV0b3BsYXkucnVubmluZyB8fCAhaXNUb3VjaGVkKSByZXR1cm47XG4gICAgY2xlYXJUaW1lb3V0KHRvdWNoU3RhcnRUaW1lb3V0KTtcbiAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgaWYgKHN3aXBlci5wYXJhbXMuYXV0b3BsYXkuZGlzYWJsZU9uSW50ZXJhY3Rpb24pIHtcbiAgICAgIHBhdXNlZEJ5VG91Y2ggPSBmYWxzZTtcbiAgICAgIGlzVG91Y2hlZCA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAocGF1c2VkQnlUb3VjaCAmJiBzd2lwZXIucGFyYW1zLmNzc01vZGUpIHJlc3VtZSgpO1xuICAgIHBhdXNlZEJ5VG91Y2ggPSBmYWxzZTtcbiAgICBpc1RvdWNoZWQgPSBmYWxzZTtcbiAgfSk7XG4gIG9uKCdzbGlkZUNoYW5nZScsICgpID0+IHtcbiAgICBpZiAoc3dpcGVyLmRlc3Ryb3llZCB8fCAhc3dpcGVyLmF1dG9wbGF5LnJ1bm5pbmcpIHJldHVybjtcbiAgICBzbGlkZUNoYW5nZWQgPSB0cnVlO1xuICB9KTtcbiAgT2JqZWN0LmFzc2lnbihzd2lwZXIuYXV0b3BsYXksIHtcbiAgICBzdGFydCxcbiAgICBzdG9wLFxuICAgIHBhdXNlLFxuICAgIHJlc3VtZVxuICB9KTtcbn1cblxuZXhwb3J0IHsgQXV0b3BsYXkgYXMgZGVmYXVsdCB9O1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==
700//# sourceURL=webpack-internal:///../node_modules/swiper/modules/autoplay.mjs
701
702}`)},"../node_modules/swiper/modules/controller.mjs"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval(`{__webpack_require__.r(__webpack_exports__);
703/* harmony export */ __webpack_require__.d(__webpack_exports__, {
704/* harmony export */   "default": () => (/* binding */ Controller)
705/* harmony export */ });
706/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/utils.mjs */ "../node_modules/swiper/shared/utils.mjs");
707
708
709/* eslint no-bitwise: ["error", { "allow": [">>"] }] */
710function Controller(_ref) {
711  let {
712    swiper,
713    extendParams,
714    on
715  } = _ref;
716  extendParams({
717    controller: {
718      control: undefined,
719      inverse: false,
720      by: 'slide' // or 'container'
721    }
722  });
723
724  swiper.controller = {
725    control: undefined
726  };
727  function LinearSpline(x, y) {
728    const binarySearch = function search() {
729      let maxIndex;
730      let minIndex;
731      let guess;
732      return (array, val) => {
733        minIndex = -1;
734        maxIndex = array.length;
735        while (maxIndex - minIndex > 1) {
vendor: 4,821 bytes, lines 736-855
736          guess = maxIndex + minIndex >> 1;
737          if (array[guess] <= val) {
738            minIndex = guess;
739          } else {
740            maxIndex = guess;
741          }
742        }
743        return maxIndex;
744      };
745    }();
746    this.x = x;
747    this.y = y;
748    this.lastIndex = x.length - 1;
749    // Given an x value (x2), return the expected y2 value:
750    // (x1,y1) is the known point before given value,
751    // (x3,y3) is the known point after given value.
752    let i1;
753    let i3;
754    this.interpolate = function interpolate(x2) {
755      if (!x2) return 0;
756
757      // Get the indexes of x1 and x3 (the array indexes before and after given x2):
758      i3 = binarySearch(this.x, x2);
759      i1 = i3 - 1;
760
761      // We have our indexes i1 & i3, so we can calculate already:
762      // y2 := ((x2\u2212x1) \xD7 (y3\u2212y1)) \xF7 (x3\u2212x1) + y1
763      return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];
764    };
765    return this;
766  }
767  function getInterpolateFunction(c) {
768    swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);
769  }
770  function setTranslate(_t, byController) {
771    const controlled = swiper.controller.control;
772    let multiplier;
773    let controlledTranslate;
774    const Swiper = swiper.constructor;
775    function setControlledTranslate(c) {
776      if (c.destroyed) return;
777
778      // this will create an Interpolate function based on the snapGrids
779      // x is the Grid of the scrolled scroller and y will be the controlled scroller
780      // it makes sense to create this only once and recall it for the interpolation
781      // the function does a lot of value caching for performance
782      const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;
783      if (swiper.params.controller.by === 'slide') {
784        getInterpolateFunction(c);
785        // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid
786        // but it did not work out
787        controlledTranslate = -swiper.controller.spline.interpolate(-translate);
788      }
789      if (!controlledTranslate || swiper.params.controller.by === 'container') {
790        multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());
791        if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) {
792          multiplier = 1;
793        }
794        controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();
795      }
796      if (swiper.params.controller.inverse) {
797        controlledTranslate = c.maxTranslate() - controlledTranslate;
798      }
799      c.updateProgress(controlledTranslate);
800      c.setTranslate(controlledTranslate, swiper);
801      c.updateActiveIndex();
802      c.updateSlidesClasses();
803    }
804    if (Array.isArray(controlled)) {
805      for (let i = 0; i < controlled.length; i += 1) {
806        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
807          setControlledTranslate(controlled[i]);
808        }
809      }
810    } else if (controlled instanceof Swiper && byController !== controlled) {
811      setControlledTranslate(controlled);
812    }
813  }
814  function setTransition(duration, byController) {
815    const Swiper = swiper.constructor;
816    const controlled = swiper.controller.control;
817    let i;
818    function setControlledTransition(c) {
819      if (c.destroyed) return;
820      c.setTransition(duration, swiper);
821      if (duration !== 0) {
822        c.transitionStart();
823        if (c.params.autoHeight) {
824          (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.n)(() => {
825            c.updateAutoHeight();
826          });
827        }
828        (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.l)(c.wrapperEl, () => {
829          if (!controlled) return;
830          c.transitionEnd();
831        });
832      }
833    }
834    if (Array.isArray(controlled)) {
835      for (i = 0; i < controlled.length; i += 1) {
836        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
837          setControlledTransition(controlled[i]);
838        }
839      }
840    } else if (controlled instanceof Swiper && byController !== controlled) {
841      setControlledTransition(controlled);
842    }
843  }
844  function removeSpline() {
845    if (!swiper.controller.control) return;
846    if (swiper.controller.spline) {
847      swiper.controller.spline = undefined;
848      delete swiper.controller.spline;
849    }
850  }
851  on('beforeInit', () => {
852    if (typeof window !== 'undefined' && (
853    // eslint-disable-line
854    typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) {
855      const controlElements = typeof swiper.params.controller.control === 'string' ? [...document.querySelectorAll(swiper.params.controller.control)] : [swiper.params.controller.control];
856      controlElements.forEach(controlElement => {
857        if (!swiper.controller.control) swiper.controller.control = [];
858        if (controlElement && controlElement.swiper) {
859          swiper.controller.control.push(controlElement.swiper);
860        } else if (controlElement) {
861          const eventName = \`\${swiper.params.eventsPrefix}init\`;
862          const onControllerSwiper = e => {
863            swiper.controller.control.push(e.detail[0]);
864            swiper.update();
865            controlElement.removeEventListener(eventName, onControllerSwiper);
866          };
867          controlElement.addEventListener(eventName, onControllerSwiper);
868        }
869      });
870      return;
871    }
872    swiper.controller.control = swiper.params.controller.control;
873  });
874  on('update', () => {
875    removeSpline();
876  });
877  on('resize', () => {
878    removeSpline();
879  });
880  on('observerUpdate', () => {
881    removeSpline();
882  });
883  on('setTranslate', (_s, translate, byController) => {
884    if (!swiper.controller.control || swiper.controller.control.destroyed) return;
885    swiper.controller.setTranslate(translate, byController);
886  });
887  on('setTransition', (_s, duration, byController) => {
888    if (!swiper.controller.control || swiper.controller.control.destroyed) return;
889    swiper.controller.setTransition(duration, byController);
890  });
891  Object.assign(swiper.controller, {
892    setTranslate,
893    setTransition
894  });
895}
896
897
898//# sourceURL=[module]
899//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9tb2R1bGVzL2NvbnRyb2xsZXIubWpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQStFOztBQUUvRSxrQ0FBa0MsaUJBQWlCO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLHVCQUF1QjtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsb0RBQVE7QUFDbEI7QUFDQSxXQUFXO0FBQ1g7QUFDQSxRQUFRLG9EQUFvQjtBQUM1QjtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQix1QkFBdUI7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1YsK0JBQStCLDJCQUEyQjtBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRWlDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9zd2lwZXIvbW9kdWxlcy9jb250cm9sbGVyLm1qcz83MTgwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG4gYXMgbmV4dFRpY2ssIGwgYXMgZWxlbWVudFRyYW5zaXRpb25FbmQgfSBmcm9tICcuLi9zaGFyZWQvdXRpbHMubWpzJztcblxuLyogZXNsaW50IG5vLWJpdHdpc2U6IFtcImVycm9yXCIsIHsgXCJhbGxvd1wiOiBbXCI+PlwiXSB9XSAqL1xuZnVuY3Rpb24gQ29udHJvbGxlcihfcmVmKSB7XG4gIGxldCB7XG4gICAgc3dpcGVyLFxuICAgIGV4dGVuZFBhcmFtcyxcbiAgICBvblxuICB9ID0gX3JlZjtcbiAgZXh0ZW5kUGFyYW1zKHtcbiAgICBjb250cm9sbGVyOiB7XG4gICAgICBjb250cm9sOiB1bmRlZmluZWQsXG4gICAgICBpbnZlcnNlOiBmYWxzZSxcbiAgICAgIGJ5OiAnc2xpZGUnIC8vIG9yICdjb250YWluZXInXG4gICAgfVxuICB9KTtcblxuICBzd2lwZXIuY29udHJvbGxlciA9IHtcbiAgICBjb250cm9sOiB1bmRlZmluZWRcbiAgfTtcbiAgZnVuY3Rpb24gTGluZWFyU3BsaW5lKHgsIHkpIHtcbiAgICBjb25zdCBiaW5hcnlTZWFyY2ggPSBmdW5jdGlvbiBzZWFyY2goKSB7XG4gICAgICBsZXQgbWF4SW5kZXg7XG4gICAgICBsZXQgbWluSW5kZXg7XG4gICAgICBsZXQgZ3Vlc3M7XG4gICAgICByZXR1cm4gKGFycmF5LCB2YWwpID0+IHtcbiAgICAgICAgbWluSW5kZXggPSAtMTtcbiAgICAgICAgbWF4SW5kZXggPSBhcnJheS5sZW5ndGg7XG4gICAgICAgI
899HdoaWxlIChtYXhJbmRleCAtIG1pbkluZGV4ID4gMSkge1xuICAgICAgICAgIGd1ZXNzID0gbWF4SW5kZXggKyBtaW5JbmRleCA+PiAxO1xuICAgICAgICAgIGlmIChhcnJheVtndWVzc10gPD0gdmFsKSB7XG4gICAgICAgICAgICBtaW5JbmRleCA9IGd1ZXNzO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtYXhJbmRleCA9IGd1ZXNzO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWF4SW5kZXg7XG4gICAgICB9O1xuICAgIH0oKTtcbiAgICB0aGlzLnggPSB4O1xuICAgIHRoaXMueSA9IHk7XG4gICAgdGhpcy5sYXN0SW5kZXggPSB4Lmxlbmd0aCAtIDE7XG4gICAgLy8gR2l2ZW4gYW4geCB2YWx1ZSAoeDIpLCByZXR1cm4gdGhlIGV4cGVjdGVkIHkyIHZhbHVlOlxuICAgIC8vICh4MSx5MSkgaXMgdGhlIGtub3duIHBvaW50IGJlZm9yZSBnaXZlbiB2YWx1ZSxcbiAgICAvLyAoeDMseTMpIGlzIHRoZSBrbm93biBwb2ludCBhZnRlciBnaXZlbiB2YWx1ZS5cbiAgICBsZXQgaTE7XG4gICAgbGV0IGkzO1xuICAgIHRoaXMuaW50ZXJwb2xhdGUgPSBmdW5jdGlvbiBpbnRlcnBvbGF0ZSh4Mikge1xuICAgICAgaWYgKCF4MikgcmV0dXJuIDA7XG5cbiAgICAgIC8vIEdldCB0aGUgaW5kZXhlcyBvZiB4MSBhbmQgeDMgKHRoZSBhcnJheSBpbmRleGVzIGJlZm9yZSBhbmQgYWZ0ZXIgZ2l2ZW4geDIpOlxuICAgICAgaTMgPSBiaW5hcnlTZWFyY2godGhpcy54LCB4Mik7XG4gICAgICBpMSA9IGkzIC0gMTtcblxuICAgICAgLy8gV2UgaGF2ZSBvdXIgaW5kZXhlcyBpMSAmIGkzLCBzbyB3ZSBjYW4gY2FsY3VsYXRlIGFscmVhZHk6XG4gICAgICAvLyB5MiA6PSAoKHgy4oiSeDEpIMOXICh5M+KIknkxKSkgw7cgKHgz4oiSeDEpICsgeTFcbiAgICAgIHJldHVybiAoeDIgLSB0aGlzLnhbaTFdKSAqICh0aGlzLnlbaTNdIC0gdGhpcy55W2kxXSkgLyAodGhpcy54W2kzXSAtIHRoaXMueFtpMV0pICsgdGhpcy55W2kxXTtcbiAgICB9O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIGZ1bmN0aW9uIGdldEludGVycG9sYXRlRnVuY3Rpb24oYykge1xuICAgIHN3aXBlci5jb250cm9sbGVyLnNwbGluZSA9IHN3aXBlci5wYXJhbXMubG9vcCA/IG5ldyBMaW5lYXJTcGxpbmUoc3dpcGVyLnNsaWRlc0dyaWQsIGMuc2xpZGVzR3JpZCkgOiBuZXcgTGluZWFyU3BsaW5lKHN3aXBlci5zbmFwR3JpZCwgYy5zbmFwR3JpZCk7XG4gIH1cbiAgZnVuY3Rpb24gc2V0VHJhbnNsYXRlKF90LCBieUNvbnRyb2xsZXIpIHtcbiAgICBjb25zdCBjb250cm9sbGVkID0gc3dpcGVyLmNvbnRyb2xsZXIuY29udHJvbDtcbiAgICBsZXQgbXVsdGlwbGllcjtcbiAgICBsZXQgY29udHJvbGxlZFRyYW5zbGF0ZTtcbiAgICBjb25zdCBTd2lwZXIgPSBzd2lwZXIuY29uc3RydWN0b3I7XG4gICAgZnVuY3Rpb24gc2V0Q29udHJvbGxlZFRyYW5zbGF0ZShjKSB7XG4gICAgICBpZiAoYy5kZXN0cm95ZWQpIHJldHVybjtcblxuICAgICAgLy8gdGhpcyB3aWxsIGNyZWF0ZSBhbiBJbnRlcnBvbGF0ZSBmdW5jdGlvbiBiYXNlZCBvbiB0aGUgc25hcEdyaWRzXG4gICAgICAvLyB4IGlzIHRoZSBHcmlkIG9mIHRoZSBzY3JvbGxlZCBzY3JvbGxlciBhbmQgeSB3aWxsIGJlIHRoZSBjb250cm9sbGVkIHNjcm9sbGVyXG4gICAgICAvLyBpdCBtYWtlcyBzZW5zZSB0byBjcmVhdGUgdGhpcyBvbmx5IG9uY2UgYW5kIHJlY2FsbCBpdCBmb3IgdGhlIGludGVycG9sYXRpb25cbiAgICAgIC8vIHRoZSBmdW5jdGlvbiBkb2VzIGEgbG90IG9mIHZhbHVlIGNhY2hpbmcgZm9yIHBlcmZvcm1hbmNlXG4gICAgICBjb25zdCB0cmFuc2xhdGUgPSBzd2lwZXIucnRsVHJhbnNsYXRlID8gLXN3aXBlci50cmFuc2xhdGUgOiBzd2lwZXIudHJhbnNsYXRlO1xuICAgICAgaWYgKHN3aXBlci5wYXJhbXMuY29udHJvbGxlci5ieSA9PT0gJ3NsaWRlJykge1xuICAgICAgICBnZXRJbnRlcnBvbGF0ZUZ1bmN0aW9uKGMpO1xuICAgICAgICAvLyBpIGFtIG5vdCBzdXJlIHdoeSB0aGUgdmFsdWVzIGhhdmUgdG8gYmUgbXVsdGlwbGljYXRlZCB0aGlzIHdheSwgdHJpZWQgdG8gaW52ZXJ0IHRoZSBzbmFwR3JpZFxuICAgICAgICAvLyBidXQgaXQgZGlkIG5vdCB3b3JrIG91dFxuICAgICAgICBjb250cm9sbGVkVHJhbnNsYXRlID0gLXN3aXBlci5jb250cm9sbGVyLnNwbGluZS5pbnRlcnBvbGF0ZSgtdHJhbnNsYXRlKTtcbiAgICAgIH1cbiAgICAgIGlmICghY29udHJvbGxlZFRyYW5zbGF0ZSB8fCBzd2lwZXIucGFyYW1zLmNvbnRyb2xsZXIuYnkgPT09ICdjb250YWluZXInKSB7XG4gICAgICAgIG11bHRpcGxpZXIgPSAoYy5tYXhUcmFuc2xhdGUoKSAtIGMubWluVHJhbnNsYXRlKCkpIC8gKHN3aXBlci5tYXhUcmFuc2xhdGUoKSAtIHN3aXBlci5taW5UcmFuc2xhdGUoKSk7XG4gICAgICAgIGlmIChOdW1iZXIuaXNOYU4obXVsdGlwbGllcikgfHwgIU51bWJlci5pc0Zpbml0ZShtdWx0aXBsaWVyKSkge1xuICAgICAgICAgIG11bHRpcGxpZXIgPSAxO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRyb2xsZWRUcmFuc2xhdGUgPSAodHJhbnNsYXRlIC0gc3dpcGVyLm1pblRyYW5zbGF0ZSgpKSAqIG11bHRpcGxpZXIgKyBjLm1pblRyYW5zbGF0ZSgpO1xuICAgICAgfVxuICAgICAgaWYgKHN3aXBlci5wYXJhbXMuY29udHJvbGxlci5pbnZlcnNlKSB7XG4gICAgICAgIGNvbnRyb2xsZWRUcmFuc2xhdGUgPSBjLm1heFRyYW5zbGF0ZSgpIC0gY29udHJvbGxlZFRyYW5zbGF0ZTtcbiAgICAgIH1cbiAgICAgIGMudXBkYXRlUHJvZ3Jlc3MoY29udHJvbGxlZFRyYW5zbGF0ZSk7XG4gICAgICBjLnNldFRyYW5zbGF0ZShjb250cm9sbGVkVHJhbnNsYXRlLCBzd2lwZXIpO1xuICAgICAgYy51cGRhdGVBY3RpdmVJbmRleCgpO1xuICAgICAgYy51cGRhdGVTbGlkZXNDbGFzc2VzKCk7XG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KGNvbnRyb2xsZWQpKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbnRyb2xsZWQubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgaWYgKGNvbnRyb2xsZWRbaV0gIT09IGJ5Q29udHJvbGxlciAmJiBjb250cm9sbGVkW2ldIGluc3RhbmNlb2YgU3dpcGVyKSB7XG4gICAgICAgICAgc2V0Q29udHJvbGxlZFRyYW5zbGF0ZShjb250cm9sbGVkW2ldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY29udHJvbGxlZCBpbnN0YW5jZW9mIFN3aXBlciAmJiBieUNvbnRyb2xsZXIgIT09IGNvbnRyb2xsZWQpIHtcbiAgICAgIHNldENvbnRyb2xsZWRUcmFuc2xhdGUoY29udHJvbGxlZCk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIHNldFRyYW5zaXRpb24oZHVyYXRpb24sIGJ5Q29udHJvbGxlcikge1xuICAgIGNvbnN0IFN3aXBlciA9IHN3aXBlci5jb25zdHJ1Y3RvcjtcbiAgICBjb25zdCBjb250cm9sbGVkID0gc3dpcGVyLmNvbnRyb2xsZXIuY29udHJvbDtcbiAgICBsZXQgaTtcbiAgICBmdW5jdGlvbiBzZXRDb250cm9sbGVkVHJhbnNpdGlvbihjKSB7XG4gICAgICBpZiAoYy5kZXN0cm95ZWQpIHJldHVybjtcbiAgICAgIGMuc2V0VHJhbnNpdGlvbihkdXJhdGlvbiwgc3dpcGVyKTtcbiAgICAgIGlmIChkdXJhdGlvbiAhPT0gMCkge1xuICAgICAgICBjLnRyYW5zaXRpb25TdGFydCgpO1xuICAgICAgICBpZiAoYy5wYXJhbXMuYXV0b0hlaWdodCkge1xuICAgICAgICAgIG5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGMudXBkYXRlQXV0b0hlaWdodCgpO1xuICAgICAgICAgI
899H0pO1xuICAgICAgICB9XG4gICAgICAgIGVsZW1lbnRUcmFuc2l0aW9uRW5kKGMud3JhcHBlckVsLCAoKSA9PiB7XG4gICAgICAgICAgaWYgKCFjb250cm9sbGVkKSByZXR1cm47XG4gICAgICAgICAgYy50cmFuc2l0aW9uRW5kKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheShjb250cm9sbGVkKSkge1xuICAgICAgZm9yIChpID0gMDsgaSA8IGNvbnRyb2xsZWQubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgaWYgKGNvbnRyb2xsZWRbaV0gIT09IGJ5Q29udHJvbGxlciAmJiBjb250cm9sbGVkW2ldIGluc3RhbmNlb2YgU3dpcGVyKSB7XG4gICAgICAgICAgc2V0Q29udHJvbGxlZFRyYW5zaXRpb24oY29udHJvbGxlZFtpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNvbnRyb2xsZWQgaW5zdGFuY2VvZiBTd2lwZXIgJiYgYnlDb250cm9sbGVyICE9PSBjb250cm9sbGVkKSB7XG4gICAgICBzZXRDb250cm9sbGVkVHJhbnNpdGlvbihjb250cm9sbGVkKTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gcmVtb3ZlU3BsaW5lKCkge1xuICAgIGlmICghc3dpcGVyLmNvbnRyb2xsZXIuY29udHJvbCkgcmV0dXJuO1xuICAgIGlmIChzd2lwZXIuY29udHJvbGxlci5zcGxpbmUpIHtcbiAgICAgIHN3aXBlci5jb250cm9sbGVyLnNwbGluZSA9IHVuZGVmaW5lZDtcbiAgICAgIGRlbGV0ZSBzd2lwZXIuY29udHJvbGxlci5zcGxpbmU7XG4gICAgfVxuICB9XG4gIG9uKCdiZWZvcmVJbml0JywgKCkgPT4ge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiAoXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICAgIHR5cGVvZiBzd2lwZXIucGFyYW1zLmNvbnRyb2xsZXIuY29udHJvbCA9PT0gJ3N0cmluZycgfHwgc3dpcGVyLnBhcmFtcy5jb250cm9sbGVyLmNvbnRyb2wgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkpIHtcbiAgICAgIGNvbnN0IGNvbnRyb2xFbGVtZW50cyA9IHR5cGVvZiBzd2lwZXIucGFyYW1zLmNvbnRyb2xsZXIuY29udHJvbCA9PT0gJ3N0cmluZycgPyBbLi4uZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChzd2lwZXIucGFyYW1zLmNvbnRyb2xsZXIuY29udHJvbCldIDogW3N3aXBlci5wYXJhbXMuY29udHJvbGxlci5jb250cm9sXTtcbiAgICAgIGNvbnRyb2xFbGVtZW50cy5mb3JFYWNoKGNvbnRyb2xFbGVtZW50ID0+IHtcbiAgICAgICAgaWYgKCFzd2lwZXIuY29udHJvbGxlci5jb250cm9sKSBzd2lwZXIuY29udHJvbGxlci5jb250cm9sID0gW107XG4gICAgICAgIGlmIChjb250cm9sRWxlbWVudCAmJiBjb250cm9sRWxlbWVudC5zd2lwZXIp
vendor: 5,805 bytes, lines 899-983
899IHtcbiAgICAgICAgICBzd2lwZXIuY29udHJvbGxlci5jb250cm9sLnB1c2goY29udHJvbEVsZW1lbnQuc3dpcGVyKTtcbiAgICAgICAgfSBlbHNlIGlmIChjb250cm9sRWxlbWVudCkge1xuICAgICAgICAgIGNvbnN0IGV2ZW50TmFtZSA9IGAke3N3aXBlci5wYXJhbXMuZXZlbnRzUHJlZml4fWluaXRgO1xuICAgICAgICAgIGNvbnN0IG9uQ29udHJvbGxlclN3aXBlciA9IGUgPT4ge1xuICAgICAgICAgICAgc3dpcGVyLmNvbnRyb2xsZXIuY29udHJvbC5wdXNoKGUuZGV0YWlsWzBdKTtcbiAgICAgICAgICAgIHN3aXBlci51cGRhdGUoKTtcbiAgICAgICAgICAgIGNvbnRyb2xFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBvbkNvbnRyb2xsZXJTd2lwZXIpO1xuICAgICAgICAgIH07XG4gICAgICAgICAgY29udHJvbEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIG9uQ29udHJvbGxlclN3aXBlcik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzd2lwZXIuY29udHJvbGxlci5jb250cm9sID0gc3dpcGVyLnBhcmFtcy5jb250cm9sbGVyLmNvbnRyb2w7XG4gIH0pO1xuICBvbigndXBkYXRlJywgKCkgPT4ge1xuICAgIHJlbW92ZVNwbGluZSgpO1xuICB9KTtcbiAgb24oJ3Jlc2l6ZScsICgpID0+IHtcbiAgICByZW1vdmVTcGxpbmUoKTtcbiAgfSk7XG4gIG9uKCdvYnNlcnZlclVwZGF0ZScsICgpID0+IHtcbiAgICByZW1vdmVTcGxpbmUoKTtcbiAgfSk7XG4gIG9uKCdzZXRUcmFuc2xhdGUnLCAoX3MsIHRyYW5zbGF0ZSwgYnlDb250cm9sbGVyKSA9PiB7XG4gICAgaWYgKCFzd2lwZXIuY29udHJvbGxlci5jb250cm9sIHx8IHN3aXBlci5jb250cm9sbGVyLmNvbnRyb2wuZGVzdHJveWVkKSByZXR1cm47XG4gICAgc3dpcGVyLmNvbnRyb2xsZXIuc2V0VHJhbnNsYXRlKHRyYW5zbGF0ZSwgYnlDb250cm9sbGVyKTtcbiAgfSk7XG4gIG9uKCdzZXRUcmFuc2l0aW9uJywgKF9zLCBkdXJhdGlvbiwgYnlDb250cm9sbGVyKSA9PiB7XG4gICAgaWYgKCFzd2lwZXIuY29udHJvbGxlci5jb250cm9sIHx8IHN3aXBlci5jb250cm9sbGVyLmNvbnRyb2wuZGVzdHJveWVkKSByZXR1cm47XG4gICAgc3dpcGVyLmNvbnRyb2xsZXIuc2V0VHJhbnNpdGlvbihkdXJhdGlvbiwgYnlDb250cm9sbGVyKTtcbiAgfSk7XG4gIE9iamVjdC5hc3NpZ24oc3dpcGVyLmNvbnRyb2xsZXIsIHtcbiAgICBzZXRUcmFuc2xhdGUsXG4gICAgc2V0VHJhbnNpdGlvblxuICB9KTtcbn1cblxuZXhwb3J0IHsgQ29udHJvbGxlciBhcyBkZWZhdWx0IH07XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9
900//# sourceURL=webpack-internal:///../node_modules/swiper/modules/controller.mjs
901
902}`)},"../node_modules/swiper/modules/effect-cards.mjs"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval(`{__webpack_require__.r(__webpack_exports__);
903/* harmony export */ __webpack_require__.d(__webpack_exports__, {
904/* harmony export */   "default": () => (/* binding */ EffectCards)
905/* harmony export */ });
906/* harmony import */ var _shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/create-shadow.mjs */ "../node_modules/swiper/shared/create-shadow.mjs");
907/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "../node_modules/swiper/shared/effect-init.mjs");
908/* harmony import */ var _shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/effect-target.mjs */ "../node_modules/swiper/shared/effect-target.mjs");
909/* harmony import */ var _shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shared/effect-virtual-transition-end.mjs */ "../node_modules/swiper/shared/effect-virtual-transition-end.mjs");
910/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../shared/utils.mjs */ "../node_modules/swiper/shared/utils.mjs");
911
912
913
914
915
916
917function EffectCards(_ref) {
918  let {
919    swiper,
920    extendParams,
921    on
922  } = _ref;
923  extendParams({
924    cardsEffect: {
925      slideShadows: true,
926      rotate: true,
927      perSlideRotate: 2,
928      perSlideOffset: 8
929    }
930  });
931  const setTranslate = () => {
932    const {
933      slides,
934      activeIndex,
935      rtlTranslate: rtl
936    } = swiper;
937    const params = swiper.params.cardsEffect;
938    const {
939      startTranslate,
940      isTouched
941    } = swiper.touchEventsData;
942    const currentTranslate = rtl ? -swiper.translate : swiper.translate;
943    for (let i = 0; i < slides.length; i += 1) {
944      const slideEl = slides[i];
945      const slideProgress = slideEl.progress;
946      const progress = Math.min(Math.max(slideProgress, -4), 4);
947      let offset = slideEl.swiperSlideOffset;
948      if (swiper.params.centeredSlides && !swiper.params.cssMode) {
949        swiper.wrapperEl.style.transform = \`translateX(\${swiper.minTranslate()}px)\`;
950      }
951      if (swiper.params.centeredSlides && swiper.params.cssMode) {
952        offset -= slides[0].swiperSlideOffset;
953      }
954      let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;
955      let tY = 0;
956      const tZ = -100 * Math.abs(progress);
957      let scale = 1;
958      let rotate = -params.perSlideRotate * progress;
959      let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;
960      const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;
961      const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;
962      const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;
963      if (isSwipeToNext || isSwipeToPrev) {
964        const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;
965        rotate += -28 * progress * subProgress;
966        scale += -0.5 * subProgress;
967        tXAdd += 96 * subProgress;
968        tY = \`\${-25 * subProgress * Math.abs(progress)}%\`;
969      }
970      if (progress < 0) {
971        // next
972        tX = \`calc(\${tX}px \${rtl ? '-' : '+'} (\${tXAdd * Math.abs(progress)}%))\`;
973      } else if (progress > 0) {
974        // prev
975        tX = \`calc(\${tX}px \${rtl ? '-' : '+'} (-\${tXAdd * Math.abs(progress)}%))\`;
976      } else {
977        tX = \`\${tX}px\`;
978      }
979      if (!swiper.isHorizontal()) {
980        const prevY = tY;
981        tY = tX;
982        tX = prevY;
983      }
984      const scaleString = progress < 0 ? \`\${1 + (1 - scale) * progress}\` : \`\${1 - (1 - scale) * progress}\`;
985
986      /* eslint-disable */
987      const transform = \`
988        translate3d(\${tX}, \${tY}, \${tZ}px)
989        rotateZ(\${params.rotate ? rtl ? -rotate : rotate : 0}deg)
990        scale(\${scaleString})
991      \`;
992      /* eslint-enable */
993
994      if (params.slideShadows) {
995        // Set shadows
996        let shadowEl = slideEl.querySelector('.swiper-slide-shadow');
997        if (!shadowEl) {
998          shadowEl = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('cards', slideEl);
999        }
1000        if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);
1001      }
1002      slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;
1003      const targetEl = (0,_shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__.e)(params, slideEl);
1004      targetEl.style.transform = transform;
1005    }
1006  };
1007  const setTransition = duration => {
1008    const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__.g)(slideEl));
1009    transformElements.forEach(el => {
1010      el.style.transitionDuration = \`\${duration}ms\`;
1011      el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {
1012        shadowEl.style.transitionDuration = \`\${duration}ms\`;
1013      });
1014    });
1015    (0,_shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_3__.e)({
1016      swiper,
1017      duration,
1018      transformElements
1019    });
1020  };
1021  (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__.e)({
1022    effect: 'cards',
1023    swiper,
1024    on,
1025    setTranslate,
1026    setTransition,
1027    perspective: () => true,
1028    overwriteParams: () => ({
1029      _loopSwapReset: false,
1030      watchSlidesProgress: true,
1031      loopAdditionalSlides: swiper.params.cardsEffect.rotate ? 3 : 2,
1032      centeredSlides: true,
1033      virtualTranslate: !swiper.params.cssMode
1034    })
1035  });
1036}
1037
1038
1039//# sourceURL=[module]
1040//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9tb2R1bGVzL2VmZmVjdC1jYXJkcy5tanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQWdFO0FBQ0o7QUFDSTtBQUM4QjtBQUMvQjs7QUFFL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0Esb0JBQW9CLG1CQUFtQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseURBQXlELHNCQUFzQjtBQUMvRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsdUNBQXVDO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixHQUFHLEtBQUssaUJBQWlCLEdBQUcsMkJBQTJCO0FBQzVFLFFBQVE7QUFDUjtBQUNBLHFCQUFxQixHQUFHLEtBQUssaUJBQWlCLElBQUksMkJBQTJCO0FBQzdFLFFBQVE7QUFDUixnQkFBZ0IsR0FBRztBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEMsMkJBQTJCLE9BQU8sMkJBQTJCOztBQUV6RztBQUNBO0FBQ0Esc0JBQXNCLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRztBQUN2QyxrQkFBa0IsMkNBQTJDO0FBQzdELGdCQUFnQixZQUFZO0FBQzVCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsNERBQVk7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsNERBQVk7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyREFBMkQsb0RBQW1CO0FBQzlFO0FBQ0EsdUNBQXVDLFNBQVM7QUFDaEQ7QUFDQSwrQ0FBK0MsU0FBUztBQUN4RCxPQUFPO0FBQ1AsS0FBSztBQUNMLElBQUksNEVBQTBCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEVBQUUsMERBQVU7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIOztBQUVrQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvc3dpcGVyL21vZHVsZXMvZWZmZWN0LWNhcmRzLm1qcz9kYzQwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGMgYXMgY3JlYXRlU2hhZG93IH0gZnJvbSAnLi4vc2hhcmVkL2NyZWF0ZS1zaGFkb3cubWpzJztcbmltcG9ydCB7IGUgYXMgZWZmZWN0SW5pdCB9IGZyb20gJy4uL3NoYXJlZC9lZmZlY3QtaW5pdC5tanMnO1xuaW1wb3J0IHsgZSBhcyBlZmZlY3RUYXJnZXQgfSBmcm9tICcuLi9zaGFyZWQvZWZmZWN0LXRhcmdldC5tanMnO1xuaW1wb3J0IHsgZSBhcyBlZmZlY3RWaXJ0dWFsVHJhbnNpdGlvbkVuZCB9IGZyb20gJy4uL3NoYXJlZC9lZmZlY3QtdmlydHVhbC10cmFuc2l0aW9uLWVuZC5tanMnO1xuaW1wb3J0IHsgZyBhcyBnZXRTbGlkZVRyYW5zZm9ybUVsIH0gZnJvbSAnLi4vc2hhcmVkL3V0aWxzLm1qcyc7XG5cbmZ1bmN0aW9uIEVmZmVjdENhcmRzKF9yZWYpIHtcbiAgbGV0IHtcbiAgICBzd2lwZXIsXG4gICAgZXh0ZW5kUGFyYW1zLFxuICAgIG9uXG4gIH0gPSBfcmVmO1xuICBleHRlbmRQYXJhbXMoe1xuICAgIGNhcmRzRWZmZWN0OiB7XG4gICAgICBzbGlkZVNoYWRvd3M6IHRydWUsXG4gICAgICByb3RhdGU6IHRydWUsXG4gICAgICBwZXJTbGlkZVJvdGF0ZTogMixcbiAgICAgIHBlclNsaWRlT2Zmc2V0OiA4XG4gICAgfVxuICB9KTtcbiAgY29uc3Qgc2V0VHJhbnNsYXRlID0gKCkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHNsaWRlcyxcbiAgICAgIGFjdGl2ZUluZGV4LFxuICAgICAgcnRsVHJhbnNsYXRlOiBydGxcbiAgICB9ID0gc3dpcGVyO1xuICAgIGNvbnN0IHBhcmFtcyA9IHN3aXBlci5wYXJhbXMuY2FyZHNFZmZlY3Q7XG4gICAgY29uc3Qge1xuICAgICAgc3RhcnRUcmFuc2xhdGUsXG4gICAgICBpc1RvdWNoZWRcbiAgICB9ID0gc3dpcGVyLnRvdWNoRXZlbnRzRGF0YTtcbiAgICBjb25zdCBjdXJyZW50VHJhbnNsYXRlID0gcnRsID8gLXN3aXBlci50cmFuc2xhdGUgOiBzd2lwZXIudHJhbnNsYXRlO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2xpZGVzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBjb25zdCBzbGlkZUVsID0gc2xpZGVzW2ldO1xuICAgICAgY29uc3Qgc2xpZGVQcm9ncmVzcyA9IHNsaWRlRWwucHJvZ3Jlc3M7XG4gICAgICBjb25zdCBwcm9ncmVzcyA9IE1hdGgubWluKE1hdGgubWF4KHNsaWRlUHJvZ3Jlc3MsIC00KSwgNCk7XG4gICAgICBsZXQgb2Zmc2V0ID0gc2xpZGVFbC5zd2lwZXJTbGlkZU9mZnNldDtcbiAgICAgIGlmIChzd2lwZXIucGFyYW1zLmNlbnRlcmVkU2xpZGVzICYmICFzd2lwZXIucGFyYW1zLmNzc01vZGUpIHtcbiAgICAgICAgc3dpcGVyLndyYXBwZXJFbC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlWCgke3N3aXBlci5taW5UcmFuc2xhdGUoKX1weClgO1xuICAgICAgfVxuICAgICAgaWYgKHN3aXBlci5wYXJhbXMuY2VudGVyZWRTbGlkZXMgJiYgc3dpcGVyLnBhcmFtcy5jc3NNb2RlKSB7XG4gICAgICAgIG9mZnNldCAtPSBzbGlkZXNbMF0uc3dpcGVyU2xpZGVPZmZzZXQ7XG4gICAgICB9XG4gICAgICBsZXQgdFggPSBzd2lwZXIucGFyYW1zLmNzc01vZGUgPyAtb2Zmc2V0IC0gc3dpcGVyLnRyYW5zbGF0ZSA6IC1vZmZzZXQ7XG4gICAgICBsZXQgdFkgPSAwO1xuICAgICAgY29uc3QgdFogPSAtMTAwICogTWF0aC5hYnMocHJvZ3Jlc3MpO1xuICAgICAgbGV0IHNjYWxlID0gMTtcbiAgICAgIGxldCByb3RhdGUgPSAtcGFyYW1zLnBlclNsaWRlUm90YXRlICogcHJvZ3Jlc3M7XG4gICAgICBsZXQgdFhBZGQgPSBwYXJhbXMucGVyU2xpZGVPZmZzZXQgLSBNYXRoLmFicyhwcm9ncmVzcykgKiAwLjc1O1xuICAgICAgY29uc3Qgc2xpZGVJbmRleCA9IHN3aXBlci52aXJ0dWFsICYmIHN3aXBlci5wYXJhbXMudmlydHVhbC5lbmFibGVkID8gc3dpcGVyLnZpcnR1YWwuZnJvbSArIGkgOiBpO1xuICAgICAgY29uc3QgaXNTd2lwZVRvTmV4dCA9IChzbGlkZUluZGV4ID09PSBhY3RpdmVJbmRleCB8fCBzbGlkZUluZGV4ID09PSBhY3RpdmVJbmRleCAtIDEpICYmIHByb2dyZXNzID4gMCAmJiBwcm9ncmVzcyA8IDEgJiYgKGlzVG91Y2hlZCB8fCBzd2lwZXIucGFyYW1zLmNzc01vZGUpICYmIGN1cnJlbnRUcmFuc2xhdGUgPC
vendor: 8,729 bytes, lines 1040-1133
1040BzdGFydFRyYW5zbGF0ZTtcbiAgICAgIGNvbnN0IGlzU3dpcGVUb1ByZXYgPSAoc2xpZGVJbmRleCA9PT0gYWN0aXZlSW5kZXggfHwgc2xpZGVJbmRleCA9PT0gYWN0aXZlSW5kZXggKyAxKSAmJiBwcm9ncmVzcyA8IDAgJiYgcHJvZ3Jlc3MgPiAtMSAmJiAoaXNUb3VjaGVkIHx8IHN3aXBlci5wYXJhbXMuY3NzTW9kZSkgJiYgY3VycmVudFRyYW5zbGF0ZSA+IHN0YXJ0VHJhbnNsYXRlO1xuICAgICAgaWYgKGlzU3dpcGVUb05leHQgfHwgaXNTd2lwZVRvUHJldikge1xuICAgICAgICBjb25zdCBzdWJQcm9ncmVzcyA9ICgxIC0gTWF0aC5hYnMoKE1hdGguYWJzKHByb2dyZXNzKSAtIDAuNSkgLyAwLjUpKSAqKiAwLjU7XG4gICAgICAgIHJvdGF0ZSArPSAtMjggKiBwcm9ncmVzcyAqIHN1YlByb2dyZXNzO1xuICAgICAgICBzY2FsZSArPSAtMC41ICogc3ViUHJvZ3Jlc3M7XG4gICAgICAgIHRYQWRkICs9IDk2ICogc3ViUHJvZ3Jlc3M7XG4gICAgICAgIHRZID0gYCR7LTI1ICogc3ViUHJvZ3Jlc3MgKiBNYXRoLmFicyhwcm9ncmVzcyl9JWA7XG4gICAgICB9XG4gICAgICBpZiAocHJvZ3Jlc3MgPCAwKSB7XG4gICAgICAgIC8vIG5leHRcbiAgICAgICAgdFggPSBgY2FsYygke3RYfXB4ICR7cnRsID8gJy0nIDogJysnfSAoJHt0WEFkZCAqIE1hdGguYWJzKHByb2dyZXNzKX0lKSlgO1xuICAgICAgfSBlbHNlIGlmIChwcm9ncmVzcyA+IDApIHtcbiAgICAgICAgLy8gcHJldlxuICAgICAgICB0WCA9IGBjYWxjKCR7dFh9cHggJHtydGwgPyAnLScgOiAnKyd9ICgtJHt0WEFkZCAqIE1hdGguYWJzKHByb2dyZXNzKX0lKSlgO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdFggPSBgJHt0WH1weGA7XG4gICAgICB9XG4gICAgICBpZiAoIXN3aXBlci5pc0hvcml6b250YWwoKSkge1xuICAgICAgICBjb25zdCBwcmV2WSA9IHRZO1xuICAgICAgICB0WSA9IHRYO1xuICAgICAgICB0WCA9IHByZXZZO1xuICAgICAgfVxuICAgICAgY29uc3Qgc2NhbGVTdHJpbmcgPSBwcm9ncmVzcyA8IDAgPyBgJHsxICsgKDEgLSBzY2FsZSkgKiBwcm9ncmVzc31gIDogYCR7MSAtICgxIC0gc2NhbGUpICogcHJvZ3Jlc3N9YDtcblxuICAgICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAgIGNvbnN0IHRyYW5zZm9ybSA9IGBcbiAgICAgICAgdHJhbnNsYXRlM2QoJHt0WH0sICR7dFl9LCAke3RafXB4KVxuICAgICAgICByb3RhdGVaKCR7cGFyYW1zLnJvdGF0ZSA/IHJ0bCA/IC1yb3RhdGUgOiByb3RhdGUgOiAwfWRlZylcbiAgICAgICAgc2NhbGUoJHtzY2FsZVN0cmluZ30pXG4gICAgICBgO1xuICAgICAgLyogZXNsaW50LWVuYWJsZSAqL1xuXG4gICAgICBpZiAocGFyYW1zLnNsaWRlU2hhZG93cykge1xuICAgICAgICAvLyBTZXQgc2hhZG93c1xuICAgICAgICBsZXQgc2hhZG93RWwgPSBzbGlkZUVsLnF1ZXJ5U2VsZWN0b3IoJy5zd2lwZXItc2xpZGUtc2hhZG93Jyk7XG4gICAgICAgIGlmICghc2hhZG93RWwpIHtcbiAgICAgICAgICBzaGFkb3dFbCA9IGNyZWF0ZVNoYWRvdygnY2FyZHMnLCBzbGlkZUVsKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2hhZG93RWwpIHNoYWRvd0VsLnN0eWxlLm9wYWNpdHkgPSBNYXRoLm1pbihNYXRoLm1heCgoTWF0aC5hYnMocHJvZ3Jlc3MpIC0gMC41KSAvIDAuNSwgMCksIDEpO1xuICAgICAgfVxuICAgICAgc2xpZGVFbC5zdHlsZS56SW5kZXggPSAtTWF0aC5hYnMoTWF0aC5yb3VuZChzbGlkZVByb2dyZXNzKSkgKyBzbGlkZXMubGVuZ3RoO1xuICAgICAgY29uc3QgdGFyZ2V0RWwgPSBlZmZlY3RUYXJnZXQocGFyYW1zLCBzbGlkZUVsKTtcbiAgICAgIHRhcmdldEVsLnN0eWxlLnRyYW5zZm9ybSA9IHRyYW5zZm9ybTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IHNldFRyYW5zaXRpb24gPSBkdXJhdGlvbiA9PiB7XG4gICAgY29uc3QgdHJhbnNmb3JtRWxlbWVudHMgPSBzd2lwZXIuc2xpZGVzLm1hcChzbGlkZUVsID0+IGdldFNsaWRlVHJhbnNmb3JtRWwoc2xpZGVFbCkpO1xuICAgIHRyYW5zZm9ybUVsZW1lbnRzLmZvckVhY2goZWwgPT4ge1xuICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uID0gYCR7ZHVyYXRpb259bXNgO1xuICAgICAgZWwucXVlcnlTZWxlY3RvckFsbCgnLnN3aXBlci1zbGlkZS1zaGFkb3cnKS5mb3JFYWNoKHNoYWRvd0VsID0+IHtcbiAgICAgICAgc2hhZG93RWwuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uID0gYCR7ZHVyYXRpb259bXNgO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgZWZmZWN0VmlydHVhbFRyYW5zaXRpb25FbmQoe1xuICAgICAgc3dpcGVyLFxuICAgICAgZHVyYXRpb24sXG4gICAgICB0cmFuc2Zvcm1FbGVtZW50c1xuICAgIH0pO1xuICB9O1xuICBlZmZlY3RJbml0KHtcbiAgICBlZmZlY3Q6ICdjYXJkcycsXG4gICAgc3dpcGVyLFxuICAgIG9uLFxuICAgIHNldFRyYW5zbGF0ZSxcbiAgICBzZXRUcmFuc2l0aW9uLFxuICAgIHBlcnNwZWN0aXZlOiAoKSA9PiB0cnVlLFxuICAgIG92ZXJ3cml0ZVBhcmFtczogKCkgPT4gKHtcbiAgICAgIF9sb29wU3dhcFJlc2V0OiBmYWxzZSxcbiAgICAgIHdhdGNoU2xpZGVzUHJvZ3Jlc3M6IHRydWUsXG4gICAgICBsb29wQWRkaXRpb25hbFNsaWRlczogc3dpcGVyLnBhcmFtcy5jYXJkc0VmZmVjdC5yb3RhdGUgPyAzIDogMixcbiAgICAgIGNlbnRlcmVkU2xpZGVzOiB0cnVlLFxuICAgICAgdmlydHVhbFRyYW5zbGF0ZTogIXN3aXBlci5wYXJhbXMuY3NzTW9kZVxuICAgIH0pXG4gIH0pO1xufVxuXG5leHBvcnQgeyBFZmZlY3RDYXJkcyBhcyBkZWZhdWx0IH07XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9
1041//# sourceURL=webpack-internal:///../node_modules/swiper/modules/effect-cards.mjs
1042
1043}`)},"../node_modules/swiper/modules/effect-coverflow.mjs"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval(`{__webpack_require__.r(__webpack_exports__);
1044/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1045/* harmony export */   "default": () => (/* binding */ EffectCoverflow)
1046/* harmony export */ });
1047/* harmony import */ var _shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/create-shadow.mjs */ "../node_modules/swiper/shared/create-shadow.mjs");
1048/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "../node_modules/swiper/shared/effect-init.mjs");
1049/* harmony import */ var _shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/effect-target.mjs */ "../node_modules/swiper/shared/effect-target.mjs");
1050/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shared/utils.mjs */ "../node_modules/swiper/shared/utils.mjs");
1051
1052
1053
1054
1055
1056function EffectCoverflow(_ref) {
1057  let {
1058    swiper,
1059    extendParams,
1060    on
1061  } = _ref;
1062  extendParams({
1063    coverflowEffect: {
1064      rotate: 50,
1065      stretch: 0,
1066      depth: 100,
1067      scale: 1,
1068      modifier: 1,
1069      slideShadows: true
1070    }
1071  });
1072  const setTranslate = () => {
1073    const {
1074      width: swiperWidth,
1075      height: swiperHeight,
1076      slides,
1077      slidesSizesGrid
1078    } = swiper;
1079    const params = swiper.params.coverflowEffect;
1080    const isHorizontal = swiper.isHorizontal();
1081    const transform = swiper.translate;
1082    const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;
1083    const rotate = isHorizontal ? params.rotate : -params.rotate;
1084    const translate = params.depth;
1085    const r = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_3__.p)(swiper);
1086    // Each slide offset from center
1087    for (let i = 0, length = slides.length; i < length; i += 1) {
1088      const slideEl = slides[i];
1089      const slideSize = slidesSizesGrid[i];
1090      const slideOffset = slideEl.swiperSlideOffset;
1091      const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;
1092      const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;
1093      let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;
1094      let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;
1095      // var rotateZ = 0
1096      let translateZ = -translate * Math.abs(offsetMultiplier);
1097      let stretch = params.stretch;
1098      // Allow percentage to make a relative stretch for responsive sliders
1099      if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {
1100        stretch = parseFloat(params.stretch) / 100 * slideSize;
1101      }
1102      let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;
1103      let translateX = isHorizontal ? stretch * offsetMultiplier : 0;
1104      let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);
1105
1106      // Fix for ultra small values
1107      if (Math.abs(translateX) < 0.001) translateX = 0;
1108      if (Math.abs(translateY) < 0.001) translateY = 0;
1109      if (Math.abs(translateZ) < 0.001) translateZ = 0;
1110      if (Math.abs(rotateY) < 0.001) rotateY = 0;
1111      if (Math.abs(rotateX) < 0.001) rotateX = 0;
1112      if (Math.abs(scale) < 0.001) scale = 0;
1113      const slideTransform = \`translate3d(\${translateX}px,\${translateY}px,\${translateZ}px)  rotateX(\${r(rotateX)}deg) rotateY(\${r(rotateY)}deg) scale(\${scale})\`;
1114      const targetEl = (0,_shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__.e)(params, slideEl);
1115      targetEl.style.transform = slideTransform;
1116      slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;
1117      if (params.slideShadows) {
1118        // Set shadows
1119        let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');
1120        let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');
1121        if (!shadowBeforeEl) {
1122          shadowBeforeEl = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('coverflow', slideEl, isHorizontal ? 'left' : 'top');
1123        }
1124        if (!shadowAfterEl) {
1125          shadowAfterEl = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('coverflow', slideEl, isHorizontal ? 'right' : 'bottom');
1126        }
1127        if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;
1128        if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;
1129      }
1130    }
1131  };
1132  const setTransition = duration => {
1133    const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_3__.g)(slideEl));
1134    transformElements.forEach(el => {
1135      el.style.transitionDuration = \`\${duration}ms\`;
1136      el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {
1137        shadowEl.style.transitionDuration = \`\${duration}ms\`;
1138      });
1139    });
1140  };
1141  (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__.e)({
1142    effect: 'coverflow',
1143    swiper,
1144    on,
1145    setTranslate,
1146    setTransition,
1147    perspective: () => true,
1148    overwriteParams: () => ({
1149      watchSlidesProgress: true
1150    })
1151  });
1152}
1153
1154
1155//# sourceURL=[module]
1156//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9tb2R1bGVzL2VmZmVjdC1jb3ZlcmZsb3cubWpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQWdFO0FBQ0o7QUFDSTtBQUNrQjs7QUFFbEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsb0RBQVk7QUFDMUI7QUFDQSw0Q0FBNEMsWUFBWTtBQUN4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNENBQTRDLFdBQVcsS0FBSyxXQUFXLEtBQUssV0FBVyxlQUFlLFdBQVcsZUFBZSxXQUFXLGFBQWEsTUFBTTtBQUM5Six1QkFBdUIsNERBQVk7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsNERBQVk7QUFDdkM7QUFDQTtBQUNBLDBCQUEwQiw0REFBWTtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJEQUEyRCxvREFBbUI7QUFDOUU7QUFDQSx1Q0FBdUMsU0FBUztBQUNoRDtBQUNBLCtDQUErQyxTQUFTO0FBQ3hELE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQSxFQUFFLDBEQUFVO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7O0FBRXNDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9zd2lwZXIvbW9kdWxlcy9lZmZlY3QtY292ZXJmbG93Lm1qcz83MWUzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGMgYXMgY3JlYXRlU2hhZG93IH0gZnJvbSAnLi4vc2hhcmVkL2NyZWF0ZS1zaGFkb3cubWpzJztcbmltcG9ydCB7IGUgYXMgZWZmZWN0SW5pdCB9IGZyb20gJy4uL3NoYXJlZC9lZmZlY3QtaW5pdC5tanMnO1xuaW1wb3J0IHsgZSBhcyBlZmZlY3RUYXJnZXQgfSBmcm9tICcuLi9zaGFyZWQvZWZmZWN0LXRhcmdldC5tanMnO1xuaW1wb3J0IHsgZyBhcyBnZXRTbGlkZVRyYW5zZm9ybUVsLCBwIGFzIGdldFJvdGF0ZUZpeCB9IGZyb20gJy4uL3NoYXJlZC91dGlscy5tanMnO1xuXG5mdW5jdGlvbiBFZmZlY3RDb3ZlcmZsb3coX3JlZikge1xuICBsZXQge1xuICAgIHN3aXBlcixcbiAgICBleHRlbmRQYXJhbXMsXG4gICAgb25cbiAgfSA9IF9yZWY7XG4gIGV4dGVuZFBhcmFtcyh7XG4gICAgY292ZXJmbG93RWZmZWN0OiB7XG4gICAgICByb3RhdGU6IDUwLFxuICAgICAgc3RyZXRjaDogMCxcbiAgICAgIGRlcHRoOiAxMDAsXG4gICAgICBzY2FsZTogMSxcbiAgICAgIG1vZGlmaWVyOiAxLFxuICAgICAgc2xpZGVTaGFkb3dzOiB0cnVlXG4gICAgfVxuICB9KTtcbiAgY29uc3Qgc2V0VHJhbnNsYXRlID0gKCkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZHRoOiBzd2lwZXJXaWR0aCxcbiAgICAgIGhlaWdodDogc3dpcGVySGVpZ2h0LFxuICAgICAgc2xpZGVzLFxuICAgICAgc2xpZGVzU2l6ZXNHcmlkXG4gICAgfSA9IHN3aXBlcjtcbiAgICBjb25zdCBwYXJhbXMgPSBzd2lwZXIucGFyYW1zLmNvdmVyZmxvd0VmZmVjdDtcbiAgICBjb25zdCBpc0hvcml6b250YWwgPSBzd2lwZXIuaXNIb3Jpem9udGFsKCk7XG4gICAgY29uc3QgdHJhbnNmb3JtID0gc3dpcGVyLnRyYW5zbGF0ZTtcbiAgICBjb25zdCBjZW50ZXIgPSBpc0hvcml6b250YWwgPyAtdHJhbnNmb3JtICsgc3dpcGVyV2lkdGggLyAyIDogLXRyYW5zZm9ybSArIHN3aXBlckhlaWdodCAvIDI7XG4gICAgY29uc3Qgcm90YXRlID0gaXNIb3Jpem9udGFsID8gcGFyYW1zLnJvdGF0ZSA6IC1wYXJhbXMucm90YXRlO1xuICAgIGNvbnN0IHRyYW5zbGF0ZSA9IHBhcmFtcy5kZXB0aDtcbiAgICBjb25zdCByID0gZ2V0Um90YXRlRml4KHN3aXBlcik7XG4gICAgLy8gRWFjaCBzbGlkZSBvZmZzZXQgZnJvbSBjZW50ZXJcbiAgICBmb3IgKGxldCBpID0gMCwgbGVuZ3RoID0gc2xpZGVzLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBjb25zdCBzbGlkZUVsID0gc2xpZGVzW2ldO1xuICAgICAgY29uc3Qgc2xpZGVTaXplID0gc2xpZGVzU2l6ZXNHcmlkW2ldO1xuICAgICAgY29uc3Qgc2xpZGVPZmZzZXQgPSBzbGlkZUVsLnN3aXBlclNsaWRlT2Zmc2V0O1xuICAgICAgY29uc3QgY2VudGVyT2Zmc2V0ID0gKGNlbnRlciAtIHNsaWRlT2Zmc2V0IC0gc2xpZGVTaXplIC8gMikgLyBzbGlkZVNpemU7XG4gICAgICBjb25zdCBvZmZzZXRNdWx0aXBsaWVyID0gdHlwZW9mIHBhcmFtcy5tb2RpZmllciA9PT0gJ2Z1bmN0aW9uJyA/IHBhcmFtcy5tb2RpZmllcihjZW50ZXJPZmZzZXQpIDogY2VudGVyT2Zmc2V0ICogcGFyYW1zLm1vZGlmaWVyO1xuICAgICAgbGV0IHJvdGF0ZVkgPSBpc0hvcml6b250YWwgPyByb3RhdGUgKiBvZmZzZXRNdWx0aXBsaWVyIDogMDtcbiAgICAgIGxldCByb3RhdGVYID0gaXNIb3Jpem9udGFsID8gMCA6IHJvdGF0ZSAqIG9mZnNldE11bHRpcGxpZXI7XG4gICAgICAvLyB2YXIgcm90YXRlWiA9IDBcbiAgICAgIGxldCB0cmFuc2xhdGVaID0gLXRyYW5zbGF0ZSAqIE1hdGguYWJzKG9mZnNldE11bHRpcGxpZXIpO1xuICAgICAgbGV0IHN0cmV0Y2ggPSBwYXJhbXMuc3RyZXRjaDtcbiAgICAgIC8vIEFsbG93IHBlcmNlbnRhZ2UgdG8gbWFrZSBhIHJlbGF0aXZlIHN0cmV0Y2ggZm9yIHJlc3BvbnNpdmUgc2xpZGVyc1xuICAgICAgaWYgKHR5cGVvZiBzdHJldGNoID09PSAnc3RyaW5nJyAmJiBzdHJldGNoLmluZGV4T2YoJyUnKSAhPT0gLTEpIHtcbiAgICAgICAgc3RyZXRjaCA9IHBhcnNlRmxvYXQocGFyYW1zLnN0cmV0Y2gpIC8gMTAwICogc2xpZGVTaXplO1xuICAgICAgfVxuICAgICAgbGV0IHRyYW5zbGF0ZVkgPSBpc0hvcml6b250YWwgPyAwIDogc3RyZXRjaCAqIG9mZnNldE11bHRpcGxpZXI7XG4gICAgICBsZXQgdHJhbnNsYXRlWCA9IGlzSG9yaXpvbn
1156RhbCA/IHN0cmV0Y2ggKiBvZmZzZXRNdWx0aXBsaWVyIDogMDtcbiAgICAgIGxldCBzY2FsZSA9IDEgLSAoMSAtIHBhcmFtcy5zY2FsZSkgKiBNYXRoLmFicyhvZmZzZXRNdWx0aXBsaWVyKTtcblxuICAgICAgLy8gRml4IGZvciB1bHRyYSBzbWFsbCB2YWx1ZXNcbiAgICAgIGlmIChNYXRoLmFicyh0cmFuc2xhdGVYKSA8IDAuMDAxKSB0cmFuc2xhdGVYID0gMDtcbiAgICAgIGlmIChNYXRoLmFicyh0cmFuc2xhdGVZKSA8IDAuMDAxKSB0cmFuc2xhdGVZID0gMDtcbiAgICAgIGlmIChNYXRoLmFicyh0cmFuc2xhdGVaKSA8IDAuMDAxKSB0cmFuc2xhdGVaID0gMDtcbiAgICAgIGlmIChNYXRoLmFicyhyb3RhdGVZKSA8IDAuMDAxKSByb3RhdGVZID0gMDtcbiAgICAgIGlmIChNYXRoLmFicyhyb3RhdGVYKSA8IDAuMDAxKSByb3RhdGVYID0gMDtcbiAgICAgIGlmIChNYXRoLmFicyhzY2FsZSkgPCAwLjAwMSkgc2NhbGUgPSAwO1xuICAgICAgY29uc3Qgc2xpZGVUcmFuc2Zvcm0gPSBgdHJhbnNsYXRlM2QoJHt0cmFuc2xhdGVYfXB4LCR7dHJhbnNsYXRlWX1weCwke3RyYW5zbGF0ZVp9cHgpICByb3RhdGVYKCR7cihyb3RhdGVYKX1kZWcpIHJvdGF0ZVkoJHtyKHJvdGF0ZVkpfWRlZykgc2NhbGUoJHtzY2FsZX0pYDtcbiAgICAgIGNvbnN0IHRhcmdldEVsID0gZWZmZWN0VGFyZ2V0KHBhcmFtcywgc2xpZGVFbCk7XG4gICAgICB0YXJnZXRFbC5zdHlsZS50cmFuc2Zvcm0gPSBzbGlkZVRyYW5zZm9ybTtcbiAgICAgIHNsaWRlRWwuc3R5bGUuekluZGV4ID0gLU1hdGguYWJzKE1hdGgucm91bmQob2Zmc2V0TXVsdGlwbGllcikpICsgMTtcbiAgICAgIGlmIChwYXJhbXMuc2xpZGVTaGFkb3dzKSB7XG4gICAgICAgIC8vIFNldCBzaGFkb3dzXG4gICAgICAgIGxldCBzaGFkb3dCZWZvcmVFbCA9IGlzSG9yaXpvbnRhbCA/IHNsaWRlRWwucXVlcnlTZWxlY3RvcignLnN3aXBlci1zbGlkZS1zaGFkb3ctbGVmdCcpIDogc2xpZGVFbC5xdWVyeVNlbGVjdG9yKCcuc3dpcGVyLXNsaWRlLXNoYWRvdy10b3AnKTtcbiAgICAgICAgbGV0IHNoYWRvd0FmdGVyRWwgPSBpc0hvcml6b250YWwgPyBzbGlkZUVsLnF1ZXJ5U2VsZWN0b3IoJy5zd2lwZXItc2xpZGUtc2hhZG93LXJpZ2h0JykgOiBzbGlkZUVsLnF1ZXJ5U2VsZWN0b3IoJy5zd2lwZXItc2xpZGUtc2hhZG93LWJvdHRvbScpO1xuICAgICAgICBpZiAoIXNoYWRvd0JlZm9yZUVsKSB7XG4gICAgICAgICAgc2hhZG93QmVmb3JlRWwgPSBjcmVhdGVTaGFkb3coJ2NvdmVyZmxvdycsIHNsaWRlRWwsIGlzSG9yaXpvbnRhbCA/ICdsZWZ0JyA6ICd0b3AnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXNoYWRvd0FmdGVyRWwpIHtcbiAgICAgICAgICBzaGFkb3dBZnRlckVsID0gY3JlYXRlU2hhZG93KCdjb3ZlcmZsb3cnLCBzbGlkZUVsLCBpc0hvcml6b250YWwgPyAncmlnaHQnIDogJ2JvdHRvbScpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzaGFkb3dCZWZvcmVFbCkgc2hhZG93QmVmb3JlRWwuc3R5bGUub3BhY2l0eSA9IG9mZnNldE11bHRpcGxpZXIgPiAwID8gb2Zmc2V0TXVsdGlwbGllciA6IDA7XG4gICAgICAgIGlmIChzaGFkb3dBZnRlckVsKSBzaGFkb3dBZnRlckVsLnN0eWxlLm9wYWNpdHkgPSAtb2Zmc2V0TXVsdGlwbGllciA+IDAgPyAtb2Zmc2V0TXVsdGlwbGllciA6IDA7XG4gICAgICB9XG4gICAgfVxuICB9O1xuICBjb25zdCBzZXRUcmFuc2l0aW9uID0gZHVyYXRpb24gPT4ge1xuICAgIGNvbnN0IHRyYW5zZm9ybUVsZW1lbnRzID0gc3dpcGVyLnNsaWRlcy5tYXAoc2xpZGVFbCA9PiBnZXRTbGlkZVRyYW5zZm9ybUVsKHNsaWRlRWwpKTtcbiAgICB0cmFuc2Zvcm1FbGVtZW50cy5mb3JFYWNoKGVsID0+IHtcbiAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbiA9IGAke2R1cmF0aW9ufW1zYDtcbiAgICAgIGVsLnF1ZXJ5U2VsZWN0b3JBbGwoJy5zd2lwZXItc2xpZGUtc2hhZG93LXRvcCwgLnN3aXBlci1zbGlkZS1zaGFkb3ctcmlnaHQsIC5zd2lwZXItc2xpZGUtc2hhZG93LWJvdHRvbSwgLnN3aXBlci1zbGlkZS1zaGFkb3ctbGVmdCcpLmZvckVhY2goc2hhZG93RWwgPT4ge1xuICAgICAgICBzaGFkb3dFbC5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gPSBgJHtkdXJhdGlvbn1tc2A7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfTtcbiAgZWZmZWN0SW5pdCh7XG4gICAgZWZmZWN0OiAnY292ZXJmbG93JyxcbiAgICBzd2lwZXIsXG4gICAgb24sXG4gICAgc2V0VHJhbnNsYXRlLFxuICAgIHNldFRyYW5zaXRpb24sXG4gICAgcGVyc3BlY3RpdmU6ICgpID0+IHRydWUsXG4gICAgb3ZlcndyaXRlUGFyYW1zOiAoKSA9PiAoe1xuICAgICAgd2F0Y2hTbGlkZXNQcm9ncmVzczogdHJ1ZVxuICAgIH0pXG4gIH0pO1xufVxuXG5leHBvcnQgeyBFZmZlY3RDb3ZlcmZsb3cgYXMgZGVmYXVsdCB9O1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==
1157//# sourceURL=webpack-internal:///../node_modules/swiper/modules/effect-coverflow.mjs
1158
1159}`)},"../node_modules/swiper/modules/effect-creative.mjs"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval(`{__webpack_require__.r(__webpack_exports__);
1160/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1161/* harmony export */   "default": () => (/* binding */ EffectCreative)
1162/* harmony export */ });
1163/* harmony import */ var _shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/create-shadow.mjs */ "../node_modules/swiper/shared/create-shadow.mjs");
1164/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "../node_modules/swiper/shared/effect-init.mjs");
1165/* harmony import */ var _shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/effect-target.mjs */ "../node_modules/swiper/shared/effect-target.mjs");
1166/* harmony import */ var _shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shared/effect-virtual-transition-end.mjs */ "../node_modules/swiper/shared/effect-virtual-transition-end.mjs");
1167/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../shared/utils.mjs */ "../node_modules/swiper/shared/utils.mjs");
1168
1169
1170
1171
1172
1173
1174function EffectCreative(_ref) {
1175  let {
1176    swiper,
1177    extendParams,
1178    on
1179  } = _ref;
1180  extendParams({
1181    creativeEffect: {
1182      limitProgress: 1,
1183      shadowPerProgress: false,
1184      progressMultiplier: 1,
1185      perspective: true,
1186      prev: {
1187        translate: [0, 0, 0],
1188        rotate: [0, 0, 0],
1189        opacity: 1,
1190        scale: 1
1191      },
1192      next: {
1193        translate: [0, 0, 0],
1194        rotate: [0, 0, 0],
1195        opacity: 1,
1196        scale: 1
1197      }
1198    }
1199  });
1200  const getTranslateValue = value => {
1201    if (typeof value === 'string') return value;
1202    return \`\${value}px\`;
1203  };
1204  const setTranslate = () => {
1205    const {
1206      slides,
1207      wrapperEl,
1208      slidesSizesGrid
1209    } = swiper;
1210    const params = swiper.params.creativeEffect;
1211    const {
1212      progressMultiplier: multiplier
1213    } = params;
1214    const isCenteredSlides = swiper.params.centeredSlides;
1215    const rotateFix = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__.p)(swiper);
1216    if (isCenteredSlides) {
1217      const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;
1218      wrapperEl.style.transform = \`translateX(calc(50% - \${margin}px))\`;
1219    }
1220    for (let i = 0; i < slides.length; i += 1) {
1221      const slideEl = slides[i];
1222      const slideProgress = slideEl.progress;
1223      const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress);
1224      let originalProgress = progress;
1225      if (!isCenteredSlides) {
1226        originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress);
1227      }
1228      const offset = slideEl.swiperSlideOffset;
1229      const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];
1230      const r = [0, 0, 0];
1231      let custom = false;
1232      if (!swiper.isHorizontal()) {
1233        t[1] = t[0];
1234        t[0] = 0;
1235      }
1236      let data = {
1237        translate: [0, 0, 0],
1238        rotate: [0, 0, 0],
1239        scale: 1,
1240        opacity: 1
1241      };
1242      if (progress < 0) {
1243        data = params.next;
1244        custom = true;
1245      } else if (progress > 0) {
1246        data = params.prev;
1247        custom = true;
1248      }
1249      // set translate
1250      t.forEach((value, index) => {
1251        t[index] = \`calc(\${value}px + (\${getTranslateValue(data.translate[index])} * \${Math.abs(progress * multiplier)}))\`;
1252      });
1253      // set rotates
1254      r.forEach((value, index) => {
1255        let val = data.rotate[index] * Math.abs(progress * multiplier);
1256        r[index] = val;
1257      });
1258      slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;
1259      const translateString = t.join(', ');
1260      const rotateString = \`rotateX(\${rotateFix(r[0])}deg) rotateY(\${rotateFix(r[1])}deg) rotateZ(\${rotateFix(r[2])}deg)\`;
1261      const scaleString = originalProgress < 0 ? \`scale(\${1 + (1 - data.scale) * originalProgress * multiplier})\` : \`scale(\${1 - (1 - data.scale) * originalProgress * multiplier})\`;
1262      const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;
1263      const transform = \`translate3d(\${translateString}) \${rotateString} \${scaleString}\`;
1264
1265      // Set shadows
1266      if (custom && data.shadow || !custom) {
1267        let shadowEl = slideEl.querySelector('.swiper-slide-shadow');
1268        if (!shadowEl && data.shadow) {
1269          shadowEl = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('creative', slideEl);
1270        }
1271        if (shadowEl) {
1272          const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;
1273          shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);
1274        }
1275      }
1276      const targetEl = (0,_shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__.e)(params, slideEl);
1277      targetEl.style.transform = transform;
1278      targetEl.style.opacity = opacityString;
1279      if (data.origin) {
1280        targetEl.style.transformOrigin = data.origin;
1281      }
1282    }
1283  };
1284  const setTransition = duration => {
1285    const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__.g)(slideEl));
1286    transformElements.forEach(el => {
1287      el.style.transitionDuration = \`\${duration}ms\`;
1288      el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {
1289        shadowEl.style.transitionDuration = \`\${duration}ms\`;
1290      });
1291    });
1292    (0,_shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_3__.e)({
1293      swiper,
1294      duration,
1295      transformElements,
1296      allSlides: true
1297    });
1298  };
1299  (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__.e)({
1300    effect: 'creative',
1301    swiper,
1302    on,
1303    setTranslate,
1304    setTransition,
1305    perspective: () => swiper.params.creativeEffect.perspective,
1306    overwriteParams: () => ({
1307      watchSlidesProgress: true,
1308      virtualTranslate: !swiper.params.cssMode
1309    })
1310  });
1311}
1312
1313
1314//# sourceURL=[module]
1315//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9tb2R1bGVzL2VmZmVjdC1jcmVhdGl2ZS5tanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQWdFO0FBQ0o7QUFDSTtBQUM4QjtBQUNaOztBQUVsRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLGNBQWMsTUFBTTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0Esc0JBQXNCLG9EQUFZO0FBQ2xDO0FBQ0E7QUFDQSwyREFBMkQsT0FBTztBQUNsRTtBQUNBLG9CQUFvQixtQkFBbUI7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsTUFBTSxRQUFRLDBDQUEwQyxJQUFJLGdDQUFnQztBQUN2SCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLHNDQUFzQyxnQkFBZ0IsZUFBZSxnQkFBZ0IsZUFBZSxnQkFBZ0I7QUFDcEgsMERBQTBELHFEQUFxRCxjQUFjLHFEQUFxRDtBQUNsTDtBQUNBLHVDQUF1QyxnQkFBZ0IsSUFBSSxjQUFjLEVBQUUsWUFBWTs7QUFFdkY7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsNERBQVk7QUFDakM7QU
1315FDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLDREQUFZO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyREFBMkQsb0RBQW1CO0FBQzlFO0FBQ0EsdUNBQXVDLFNBQVM7QUFDaEQ7QUFDQSwrQ0FBK0MsU0FBUztBQUN4RCxPQUFPO0FBQ1AsS0FBSztBQUNMLElBQUksNEVBQTBCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsRUFBRSwwREFBVTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7O0FBRXFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9zd2lwZXIvbW9kdWxlcy9lZmZlY3QtY3JlYXRpdmUubWpzPzJhMWIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYyBhcyBjcmVhdGVTaGFkb3cgfSBmcm9tICcuLi9zaGFyZWQvY3JlYXRlLXNoYWRvdy5tanMnO1xuaW1wb3J0IHsgZSBhcyBlZmZlY3RJbml0IH0gZnJvbSAnLi4vc2hhcmVkL2VmZmVjdC1pbml0Lm1qcyc7XG5pbXBvcnQgeyBlIGFzIGVmZmVjdFRhcmdldCB9IGZyb20gJy4uL3NoYXJlZC9lZmZlY3QtdGFyZ2V0Lm1qcyc7XG5pbXBvcnQgeyBlIGFzIGVmZmVjdFZpcnR1YWxUcmFuc2l0aW9uRW5kIH0gZnJvbSAnLi4vc2hhcmVkL2VmZmVjdC12aXJ0dWFsLXRyYW5zaXRpb24tZW5kLm1qcyc7XG5pbXBvcnQgeyBnIGFzIGdldFNsaWRlVHJhbnNmb3JtRWwsIHAgYXMgZ2V0Um90YXRlRml4IH0gZnJvbSAnLi4vc2hhcmVkL3V0aWxzLm1qcyc7XG5cbmZ1bmN0aW9uIEVmZmVjdENyZWF0aXZlKF9yZWYpIHtcbiAgbGV0IHtcbiAgICBzd2lwZXIsXG4gICAgZXh0ZW5kUGFyYW1zLFxuICAgIG9uXG4gIH0gPSBfcmVmO1xuICBleHRlbmRQYXJhbXMoe1xuICAgIGNyZWF0aXZlRWZmZWN0OiB7XG4gICAgICBsaW1pdFByb2dyZXNzOiAxLFxuICAgICAgc2hhZG93UGVyUHJvZ3Jlc3M6IGZhbHNlLFxuICAgICAgcHJvZ3Jlc3NNdWx0aXBsaWVyOiAxLFxuICAgICAgcGVyc3BlY3RpdmU6IHRydWUsXG4gICAgICBwcmV2OiB7XG4gICAgICAgIHRyYW5zbGF0ZTogWzAsIDAsIDBdLFxuICAgICAgICByb3RhdGU6IFswLCAwLCAwXSxcbiAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgc2NhbGU6IDFcbiAgICAgIH0sXG4gICAgICBuZXh0OiB7XG4gICAgICAgIHRyYW5zbGF0ZTogWzAsIDAsIDBdLFxuICAgICAgICByb3RhdGU6IFswLCAwLCAwXSxcbiAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgc2NhbGU6IDFcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBjb25zdCBnZXRUcmFuc2xhdGVWYWx1ZSA9IHZhbHVlID0+IHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykgcmV0dXJuIHZhbHVlO1xuICAgIHJldHVybiBgJHt2YWx1ZX1weGA7XG4gIH07XG4gIGNvbnN0IHNldFRyYW5zbGF0ZSA9ICgpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBzbGlkZXMsXG4gICAgICB3cmFwcGVyRWwsXG4gICAgICBzbGlkZXNTaXplc0dyaWRcbiAgICB9ID0gc3dpcGVyO1xuICAgIGNvbnN0IHBhcmFtcyA9IHN3aXBlci5wYXJhbXMuY3JlYXRpdmVFZmZlY3Q7XG4gICAgY29uc3Qge1xuICAgICAgcHJvZ3Jlc3NNdWx0aXBsaWVyOiBtdWx0aXBsaWVyXG4gICAgfSA9IHBhcmFtcztcbiAgICBjb25zdCBpc0NlbnRlcmVkU2xpZGVzID0gc3dpcGVyLnBhcmFtcy5jZW50ZXJlZFNsaWRlcztcbiAgICBjb25zdCByb3RhdGVGaXggPSBnZXRSb3RhdGVGaXgoc3dpcGVyKTtcbiAgICBpZiAoaXNDZW50ZXJlZFNsaWRlcykge1xuICAgICAgY29uc3QgbWFyZ2luID0gc2xpZGVzU2l6ZXNHcmlkWzBdIC8gMiAtIHN3aXBlci5wYXJhbXMuc2xpZGVzT2Zmc2V0QmVmb3JlIHx8IDA7XG4gICAgICB3cmFwcGVyRWwuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZVgoY2FsYyg1MCUgLSAke21hcmdpbn1weCkpYDtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzbGlkZXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGNvbnN0IHNsaWRlRWwgPSBzbGlkZXNbaV07XG4gICAgICBjb25zdCBzbGlkZVByb2dyZXNzID0gc2xpZGVFbC5wcm9ncmVzcztcbiAgICAgIGNvbnN0IHByb2dyZXNzID0gTWF0aC5taW4oTWF0aC5tYXgoc2xpZGVFbC5wcm9ncmVzcywgLXBhcmFtcy5saW1pdFByb2dyZXNzKSwgcGFyYW1zLmxpbWl0UHJvZ3Jlc3MpO1xuICAgICAgbGV0IG9yaWdpbmFsUHJvZ3Jlc3MgPSBwcm9ncmVzcztcbiAgICAgIGlmICghaXNDZW50ZXJlZFNsaWRlcykge1xuICAgICAgICBvcmlnaW5hbFByb2dyZXNzID0gTWF0aC5taW4oTWF0aC5tYXgoc2xpZGVFbC5vcmlnaW5hbFByb2dyZXNzLCAtcGFyYW1zLmxpbWl0UHJvZ3Jlc3MpLCBwYXJhbXMubGltaXRQcm9ncmVzcyk7XG4gICAgICB9XG4gICAgICBjb25zdCBvZmZzZXQgPSBzbGlkZUVsLnN3aXBlclNsaWRlT2Zmc2V0O1xuICAgICAgY29uc3QgdCA9IFtzd2lwZXIucGFyYW1zLmNzc01vZGUgPyAtb2Zmc2V0IC0gc3dpcGVyLnRyYW5zbGF0ZSA6IC1vZmZzZXQsIDAsIDBdO1xuICAgICAgY29uc3QgciA9IFswLCAwLCAwXTtcbiAgICAgIGxldCBjdXN0b20gPSBmYWxzZTtcbiAgICAgIGlmICghc3dpcGVyLmlzSG9yaXpvbnRhbCgpKSB7XG4gICAgICAgIHRbMV0gPSB0WzBdO1xuICAgICAgICB0WzBdID0gMDtcbiAgICAgIH1cbiAgICAgIGxldCBkYXRhID0ge1xuICAgICAgICB0cmFuc2xhdGU6IFswLCAwLCAwXSxcbiAgICAgICAgcm90YXRlOiBbMCwgMCwgMF0sXG4gICAgICAgIHNjYWxlOiAxLFxuICAgICAgICBvcGFjaXR5OiAxXG4gICAgICB9O1xuICAgICAgaWYgKHByb2dyZXNzIDwgMCkge1xuICAgICAgICBkYXRhID0gcGFyYW1zLm5leHQ7XG4gICAgICAgIGN1c3RvbSA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKHByb2dyZXNzID4gMCkge1xuICAgICAgICBkYXRhID0gcGFyYW1zLnByZXY7XG4gICAgICAgIGN1c3RvbSA9IHRydWU7XG4gICAgICB9XG4gICAgICAvLyBzZXQgdHJhbnNsYXRlXG4gICAgICB0LmZvckVhY2goKHZhbHVlLCBpbmRleCkgPT4ge1xuICAgICAgICB0W2luZGV4XSA9IGBjYWxjKCR7dmFsdWV9cHggKyAoJHtnZXRUcmFuc2xhdGVWYWx1ZShkYXRhLnRyYW5zbGF0ZVtpbmRleF0pfSAqICR7TWF0aC5hYnMocHJvZ3Jlc3MgKiBtdWx0aXBsaWVyKX0pKWA7XG4gICAgICB9KTtcbiAgICAgIC8vIHNldCByb3RhdGVzXG4gICAgICByLmZvckVhY2goKHZhbHVlLCBpbmRleCkgPT4ge1xuICAgICAgICBsZXQgdmFsID0gZGF0YS5yb3RhdGVbaW5kZXhdICogTWF0aC5hYnMocHJvZ3Jlc3MgKiBtdWx0aXBsaWVyKTtcbiAgICAgICAgcltpbmRleF0gPSB2YWw7XG4gICAgICB9KTtcbiAgICAgIHNsaWRlRWwuc3R5bGUuekluZGV4ID0gLU1hdGguYWJzKE1hdGgucm91bmQoc2xpZGVQcm9ncmVzcykpICsgc2xpZGVzLmxlbmd0aDtcbiAgICAgIGNvbnN0IHRyYW5zbGF0ZVN0cmluZyA9IHQuam9pbignLCAnKTtcbiAgICAgIGNvbnN0IHJvdGF0ZVN0cmluZyA9IGByb3RhdGVYKCR7cm90YXRlRml4KHJbMF0pfWRlZykgcm90YXRlWSgke3JvdGF0ZUZpeChyWzFdKX1kZWcpIHJvdGF0ZVooJHtyb3RhdGVGaXgoclsyXSl9ZGVnKWA7XG4gICAgICBjb25zdCBzY2FsZVN0cmluZyA9IG9yaWdpbmFsUHJvZ3Jlc3MgPCAwID8gYHNjYWxlKCR7MSArICgxIC0gZGF0YS5zY2FsZSkgKiBvcmlnaW5hbFByb2dyZXNzICogbXVsdGlwbGllcn0pYCA6IGBzY2FsZSgkezEgLSAoMSAtIGRhdGEuc2NhbGUpICogb3JpZ2luYWxQcm9ncmVzcyAqIG11bHRpcGxpZXJ9KWA7XG4gICAgICBjb25zdCBvcGFjaXR5U3RyaW5nID0gb3JpZ2luYWxQcm9ncmVzcyA8IDAgPyAxICsgKDEgLSBkYXRhLm9wYWNpdHkpICogb3JpZ2luYWxQcm9ncmVzcyAqIG11bHRpcGxpZXIgOiAxIC0gKDEgLSBkYXRhLm9wYWNpdHkpICogb3JpZ2luYWxQcm9ncmVzcyAqIG11bHRpcGxpZXI7XG4gICAgICBjb25zdCB0cmFuc2Zvcm0gPSBgdHJhbnNsYXRlM2QoJHt0cmFuc2xhdGVTdHJpbmd9KSAke3JvdGF0ZVN0cmluZ30gJHtzY2FsZVN0cmluZ31gO1xuXG4gICAgICAvLyBTZXQgc2hhZG93c1xuICAgICAgaWYgKGN1c3RvbSAmJiBkYXRhLnNoYWRvdyB8fCAhY3VzdG9tKSB7XG4gICAgICAgIGxldCBzaGFkb3dFbCA9IHNsaWRlRWwucXVlcnlTZWxlY3RvcignLnN3aXBlci1zbGlkZS1zaGFkb3cnKTtcbiAgICAgICAgaWYgKCFzaGFkb3dFbCAmJiBkYXRhLnNoYWRvdykge1xuICAgICAgICAgI
1315HNoYWRvd0VsID0gY3JlYXRlU2hhZG93KCdjcmVhdGl2ZScsIHNsaWRlRWwpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzaGFkb3dFbCkge1xuICAgICAgICAgIGNvbnN0IHNoYWRvd09wYWNpdHkgPSBwYXJhbXMuc2hhZG93UGVyUHJvZ3Jlc3MgPyBwcm9ncmVzcyAqICgxIC8gcGFyYW1zLmxpbWl0UHJvZ3Jlc3MpIDogcHJvZ3Jlc3M7XG4gICAgICAgICAgc2hhZG93RWwuc3R5bGUub3BhY2l0eSA9IE1hdGgubWluKE1hdGgubWF4KE1hdGguYWJzKHNoYWRvd09wYWNpdHkpLCAwKSwgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IHRhcmdldEVsID0gZWZmZWN0VGFyZ2V0KHBhcmFtcywgc2xpZGVFbCk7XG4gICAgICB0YXJnZXRFbC5zdHlsZS50cmFuc2Zvcm0gPSB0cmFuc2Zvcm07XG4gICAgICB0YXJnZXRFbC5zdHlsZS5vcGFjaXR5ID0gb3BhY2l0eVN0cmluZztcbiAgICAgIGlmIChkYXRhLm9yaWdpbikge1xuICAgICAgICB0YXJnZXRFbC5zdHlsZS50cmFuc2Zvcm1PcmlnaW4gPSBkYXRhLm9yaWdpbjtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIGNvbnN0IHNldFRyYW5zaXRpb24gPSBkdXJhdGlvbiA9PiB7XG4gICAgY29uc3QgdHJhbnNmb3JtRWxlbWVudHMgPSBzd2lwZXIuc2xpZGVzLm1hcChzbGlkZUVsID0+IGdldFNsaWRlVHJhbnNmb3JtRWwoc2xpZGVFbCkpO1xuICAgIHRyYW5zZm9ybUVsZW1lbnRzLmZvckVhY2goZWwgPT4ge1xuICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uID0gYCR7ZHVyYXRpb259bXNgO1xuICAgICAgZWwucXVlcnlTZWxlY3RvckFsbCgnLnN3aXBlci1zbGlkZS1zaGFkb3cnKS5mb3JFYWNoKHNoYWRvd0VsID0+IHtcbiAgICAgICAgc2hhZG93RWwuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uID0gYCR7ZHVyYXRpb259bXNgO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgZWZmZWN0VmlydHVhbFRyYW5zaXRpb25FbmQoe1xuICAgICAgc3dpcGVyLFxuICAgICAgZHVyYXRpb24sXG4gICAgICB0cmFuc2Zvcm1FbGVtZW50cyxcbiAgICAgIGFsbFNsaWRlczogdHJ1ZVxuICAgIH0pO1xuICB9O1xuICBlZmZlY3RJbml0KHtcbiAgICBlZmZlY3Q6ICdjcmVhdGl2ZScsXG4gICAgc3dpcGVyLFxuICAgIG9uLFxuICAgIHNldFRyYW5zbGF0ZSxcbiAgICBzZXRUcmFuc2l0aW9uLFxuICAgIHBlcnNwZWN0aXZlOiAoKSA9PiBzd2lwZXIucGFyYW1zLmNyZWF0aXZlRWZmZWN0LnBlcnNwZWN0aXZlLFxuICAgIG92ZXJ3cml0ZVBhcmFtczogKCkgPT4gKHtcbiAgICAgIHdhdGNoU2xpZGVzUHJvZ3Jlc3M6IHRydWUsXG4gICAgICB2aXJ0dWFsVHJhbnNsYXRlOiAhc3dpcGVyLnBhcmFtcy5jc3NNb2RlXG4gICAgfSlcbiAgfSk7XG59XG5cbmV4cG9ydCB7IEVmZmVjdENyZWF0aXZlIGFzIGRlZmF1bHQgfTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=
1316//# sourceURL=webpack-internal:///../node_modules/swiper/modules/effect-creative.mjs
1317
1318}`)},"../node_modules/swiper/modules/effect-cube.mjs"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval(`{__webpack_require__.r(__webpack_exports__);
1319/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1320/* harmony export */   "default": () => (/* binding */ EffectCube)
1321/* harmony export */ });
1322/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "../node_modules/swiper/shared/effect-init.mjs");
1323/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "../node_modules/swiper/shared/utils.mjs");
1324
1325
1326
1327function EffectCube(_ref) {
1328  let {
1329    swiper,
1330    extendParams,
1331    on
1332  } = _ref;
1333  extendParams({
1334    cubeEffect: {
1335      slideShadows: true,
1336      shadow: true,
1337      shadowOffset: 20,
1338      shadowScale: 0.94
1339    }
1340  });
1341  const createSlideShadows = (slideEl, progress, isHorizontal) => {
1342    let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');
1343    let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');
1344    if (!shadowBefore) {
1345      shadowBefore = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', \`swiper-slide-shadow-cube swiper-slide-shadow-\${isHorizontal ? 'left' : 'top'}\`.split(' '));
1346      slideEl.append(shadowBefore);
1347    }
1348    if (!shadowAfter) {
1349      shadowAfter = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', \`swiper-slide-shadow-cube swiper-slide-shadow-\${isHorizontal ? 'right' : 'bottom'}\`.split(' '));
1350      slideEl.append(shadowAfter);
1351    }
1352    if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);
1353    if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);
1354  };
1355  const recreateShadows = () => {
1356    // create new ones
1357    const isHorizontal = swiper.isHorizontal();
vendor: 4,404 bytes, lines 1358-1464
1358    swiper.slides.forEach(slideEl => {
1359      const progress = Math.max(Math.min(slideEl.progress, 1), -1);
1360      createSlideShadows(slideEl, progress, isHorizontal);
1361    });
1362  };
1363  const setTranslate = () => {
1364    const {
1365      el,
1366      wrapperEl,
1367      slides,
1368      width: swiperWidth,
1369      height: swiperHeight,
1370      rtlTranslate: rtl,
1371      size: swiperSize,
1372      browser
1373    } = swiper;
1374    const r = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.p)(swiper);
1375    const params = swiper.params.cubeEffect;
1376    const isHorizontal = swiper.isHorizontal();
1377    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
1378    let wrapperRotate = 0;
1379    let cubeShadowEl;
1380    if (params.shadow) {
1381      if (isHorizontal) {
1382        cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow');
1383        if (!cubeShadowEl) {
1384          cubeShadowEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', 'swiper-cube-shadow');
1385          swiper.wrapperEl.append(cubeShadowEl);
1386        }
1387        cubeShadowEl.style.height = \`\${swiperWidth}px\`;
1388      } else {
1389        cubeShadowEl = el.querySelector('.swiper-cube-shadow');
1390        if (!cubeShadowEl) {
1391          cubeShadowEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', 'swiper-cube-shadow');
1392          el.append(cubeShadowEl);
1393        }
1394      }
1395    }
1396    for (let i = 0; i < slides.length; i += 1) {
1397      const slideEl = slides[i];
1398      let slideIndex = i;
1399      if (isVirtual) {
1400        slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10);
1401      }
1402      let slideAngle = slideIndex * 90;
1403      let round = Math.floor(slideAngle / 360);
1404      if (rtl) {
1405        slideAngle = -slideAngle;
1406        round = Math.floor(-slideAngle / 360);
1407      }
1408      const progress = Math.max(Math.min(slideEl.progress, 1), -1);
1409      let tx = 0;
1410      let ty = 0;
1411      let tz = 0;
1412      if (slideIndex % 4 === 0) {
1413        tx = -round * 4 * swiperSize;
1414        tz = 0;
1415      } else if ((slideIndex - 1) % 4 === 0) {
1416        tx = 0;
1417        tz = -round * 4 * swiperSize;
1418      } else if ((slideIndex - 2) % 4 === 0) {
1419        tx = swiperSize + round * 4 * swiperSize;
1420        tz = swiperSize;
1421      } else if ((slideIndex - 3) % 4 === 0) {
1422        tx = -swiperSize;
1423        tz = 3 * swiperSize + swiperSize * 4 * round;
1424      }
1425      if (rtl) {
1426        tx = -tx;
1427      }
1428      if (!isHorizontal) {
1429        ty = tx;
1430        tx = 0;
1431      }
1432      const transform = \`rotateX(\${r(isHorizontal ? 0 : -slideAngle)}deg) rotateY(\${r(isHorizontal ? slideAngle : 0)}deg) translate3d(\${tx}px, \${ty}px, \${tz}px)\`;
1433      if (progress <= 1 && progress > -1) {
1434        wrapperRotate = slideIndex * 90 + progress * 90;
1435        if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;
1436      }
1437      slideEl.style.transform = transform;
1438      if (params.slideShadows) {
1439        createSlideShadows(slideEl, progress, isHorizontal);
1440      }
1441    }
1442    wrapperEl.style.transformOrigin = \`50% 50% -\${swiperSize / 2}px\`;
1443    wrapperEl.style['-webkit-transform-origin'] = \`50% 50% -\${swiperSize / 2}px\`;
1444    if (params.shadow) {
1445      if (isHorizontal) {
1446        cubeShadowEl.style.transform = \`translate3d(0px, \${swiperWidth / 2 + params.shadowOffset}px, \${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(\${params.shadowScale})\`;
1447      } else {
1448        const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;
1449        const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);
1450        const scale1 = params.shadowScale;
1451        const scale2 = params.shadowScale / multiplier;
1452        const offset = params.shadowOffset;
1453        cubeShadowEl.style.transform = \`scale3d(\${scale1}, 1, \${scale2}) translate3d(0px, \${swiperHeight / 2 + offset}px, \${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)\`;
1454      }
1455    }
1456    const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0;
1457    wrapperEl.style.transform = \`translate3d(0px,0,\${zFactor}px) rotateX(\${r(swiper.isHorizontal() ? 0 : wrapperRotate)}deg) rotateY(\${r(swiper.isHorizontal() ? -wrapperRotate : 0)}deg)\`;
1458    wrapperEl.style.setProperty('--swiper-cube-translate-z', \`\${zFactor}px\`);
1459  };
1460  const setTransition = duration => {
1461    const {
1462      el,
1463      slides
1464    } = swiper;
1465    slides.forEach(slideEl => {
1466      slideEl.style.transitionDuration = \`\${duration}ms\`;
1467      slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => {
1468        subEl.style.transitionDuration = \`\${duration}ms\`;
1469      });
1470    });
1471    if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {
1472      const shadowEl = el.querySelector('.swiper-cube-shadow');
1473      if (shadowEl) shadowEl.style.transitionDuration = \`\${duration}ms\`;
1474    }
1475  };
1476  (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_0__.e)({
1477    effect: 'cube',
1478    swiper,
1479    on,
1480    setTranslate,
1481    setTransition,
1482    recreateShadows,
1483    getEffectParams: () => swiper.params.cubeEffect,
1484    perspective: () => true,
1485    overwriteParams: () => ({
1486      slidesPerView: 1,
1487      slidesPerGroup: 1,
1488      watchSlidesProgress: true,
1489      resistanceRatio: 0,
1490      spaceBetween: 0,
1491      centeredSlides: false,
1492      virtualTranslate: true
1493    })
1494  });
1495}
1496
1497
1498//# sourceURL=[module]
1499//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9tb2R1bGVzL2VmZmVjdC1jdWJlLm1qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBNEQ7QUFDZ0I7O0FBRTVFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsb0RBQWEsd0RBQXdELDhCQUE4QjtBQUN4SDtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isb0RBQWEsd0RBQXdELGtDQUFrQztBQUMzSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ04sY0FBYyxvREFBWTtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsb0RBQWE7QUFDdEM7QUFDQTtBQUNBLHVDQUF1QyxZQUFZO0FBQ25ELFFBQVE7QUFDUjtBQUNBO0FBQ0EseUJBQXlCLG9EQUFhO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG1CQUFtQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLGtDQUFrQyxlQUFlLGlDQUFpQyxtQkFBbUIsR0FBRyxNQUFNLEdBQUcsTUFBTSxHQUFHO0FBQzdKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtEQUFrRCxlQUFlO0FBQ2pFLDhEQUE4RCxlQUFlO0FBQzdFO0FBQ0E7QUFDQSwyREFBMkQsc0NBQXNDLE1BQU0saUJBQWlCLDRDQUE0QyxtQkFBbUI7QUFDdkwsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrREFBa0QsT0FBTyxPQUFPLE9BQU8scUJBQXFCLDBCQUEwQixNQUFNLDJCQUEyQjtBQUN2SjtBQUNBO0FBQ0E7QUFDQSxxREFBcUQsUUFBUSxjQUFjLDZDQUE2QyxlQUFlLDhDQUE4QztBQUNyTCxnRUFBZ0UsUUFBUTtBQUN4RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsNENBQTRDLFNBQVM7QUFDckQ7QUFDQSw0Q0FBNEMsU0FBUztBQUNyRCxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQSwyREFBMkQsU0FBUztBQUNwRTtBQUNBO0FBQ0EsRUFBRSwwREFBVTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDs7QUFFaUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9tb2R1bGVzL2VmZmVjdC1jdWJlLm1qcz80NGFiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGUgYXMgZWZmZWN0SW5pdCB9IGZyb20gJy4uL3NoYXJlZC9lZmZlY3QtaW5pdC5tanMnO1xuaW1wb3J0IHsgYyBhcyBjcmVhdGVFbGVtZW50LCBwIGFzIGdldFJvdGF0ZUZpeCB9IGZyb20gJy4uL3NoYXJlZC91dGlscy5tanMnO1xuXG5mdW5jdGlvbiBFZmZlY3RDdWJlKF9yZWYpIHtcbiAgbGV0IHtcbiAgICBzd2lwZXIsXG4gICAgZXh0ZW5kUGFyYW1zLFxuICAgIG9uXG4gIH0gPSBfcmVmO1xuICBleHRlbmRQYXJhbXMoe1xuICAgIGN1YmVFZmZlY3Q6IHtcbiAgICAgIHNsaWRlU2hhZG93czogdHJ1ZSxcbiAgICAgIHNoYWRvdzogdHJ1ZSxcbiAgICAgIHNoYWRvd09mZnNldDogMjAsXG4gICAgICBzaGFkb3dTY2FsZTogMC45NFxuICAgIH1cbiAgfSk7XG4gIGNvbnN0IGNyZWF0ZVNsaWRlU2hhZG93cyA9IChzbGlkZUVsLCBwcm9ncmVzcywgaXNIb3Jpem9udGFsKSA9PiB7XG4gICAgbGV0IHNoYWRvd0JlZm9yZSA9IGlzSG9yaXpvbnRhbCA/IHNsaWRlRWwucXVlcnlTZWxlY3RvcignLnN3aXBlci1zbGlkZS1zaGFkb3ctbGVmdCcpIDogc2xpZGVFbC5xdWVyeVNlbGVjdG9yKCcuc3dpcGVyLXNsaWRlLXNoYWRvdy10b3AnKTtcbiAgICBsZXQgc2hhZG93QWZ0ZXIgPSBpc0hvcml6b250YWwgPyBzbGlkZUVsLnF1ZXJ5U2VsZWN0b3IoJy5zd2lwZXItc2xpZGUtc2hhZG93LXJpZ2h0JykgOiBzbGlkZUVsLnF1ZXJ5U2VsZWN0b3IoJy5zd2lwZXItc2xpZGUtc2hhZG93LWJvdHRvbScpO1xuICAgIGlmICghc2hhZG93QmVmb3JlKSB7XG4gICAgICBzaGFkb3dCZWZvcmUgPSBjcmVhdGVFbGVtZW50KCdkaXYnLCBgc3dpcGVyLXNsaWRlLXNoYWRvdy1jdWJlIHN3aXBlci1zbGlkZS1zaGFkb3ctJHtpc0hvcml6b250YWwgPyAnbGVmdCcgOiAndG9wJ31gLnNwbGl0KCcgJykpO1xuICAgICAgc2xpZGVFbC5hcHBlbmQoc2hhZG93QmVmb3JlKTtcbiAgICB9XG4gICAgaWYgKCFzaGFkb3dBZnRlcikge1xuICAgICAgc2hhZG93QWZ0ZXIgPSBjcmVhdGVFbGVtZW50KCdkaXYnLCBgc3dpcGVyLXNsaWRlLXNoYWRvdy1jdWJlIHN3aXBlci1zbGlkZS1zaGFkb3ctJHtpc0hvcml6b250YWwgPyAncmlnaHQnIDogJ2JvdHRvbSd9YC5zcGxpdCgnICcpKTtcbiAgICAgIHNsaWRlRWwuYXBwZW5kKHNoYWRvd0FmdGVyKTtcbiAgICB9XG4gICAgaWYgKHNoYWRvd0JlZm9yZSkgc2hhZG93QmVmb3JlLnN0eWxlLm9wYWNpdHkgPSBNYXRoLm1heCgtcHJvZ3Jlc3MsIDApO1xuICAgIGlmIChzaGFkb3dBZnRlcikgc2hhZG93QWZ0ZXIuc3R5bGUub3BhY2l0eSA9IE1hdGgubWF4KH
1499Byb2dyZXNzLCAwKTtcbiAgfTtcbiAgY29uc3QgcmVjcmVhdGVTaGFkb3dzID0gKCkgPT4ge1xuICAgIC8vIGNyZWF0ZSBuZXcgb25lc1xuICAgIGNvbnN0IGlzSG9yaXpvbnRhbCA9IHN3aXBlci5pc0hvcml6b250YWwoKTtcbiAgICBzd2lwZXIuc2xpZGVzLmZvckVhY2goc2xpZGVFbCA9PiB7XG4gICAgICBjb25zdCBwcm9ncmVzcyA9IE1hdGgubWF4KE1hdGgubWluKHNsaWRlRWwucHJvZ3Jlc3MsIDEpLCAtMSk7XG4gICAgICBjcmVhdGVTbGlkZVNoYWRvd3Moc2xpZGVFbCwgcHJvZ3Jlc3MsIGlzSG9yaXpvbnRhbCk7XG4gICAgfSk7XG4gIH07XG4gIGNvbnN0IHNldFRyYW5zbGF0ZSA9ICgpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBlbCxcbiAgICAgIHdyYXBwZXJFbCxcbiAgICAgIHNsaWRlcyxcbiAgICAgIHdpZHRoOiBzd2lwZXJXaWR0aCxcbiAgICAgIGhlaWdodDogc3dpcGVySGVpZ2h0LFxuICAgICAgcnRsVHJhbnNsYXRlOiBydGwsXG4gICAgICBzaXplOiBzd2lwZXJTaXplLFxuICAgICAgYnJvd3NlclxuICAgIH0gPSBzd2lwZXI7XG4gICAgY29uc3QgciA9IGdldFJvdGF0ZUZpeChzd2lwZXIpO1xuICAgIGNvbnN0IHBhcmFtcyA9IHN3aXBlci5wYXJhbXMuY3ViZUVmZmVjdDtcbiAgICBjb25zdCBpc0hvcml6b250YWwgPSBzd2lwZXIuaXNIb3Jpem9udGFsKCk7XG4gICAgY29uc3QgaXNWaXJ0dWFsID0gc3dpcGVyLnZpcnR1YWwgJiYgc3dpcGVyLnBhcmFtcy52aXJ0dWFsLmVuYWJsZWQ7XG4gICAgbGV0IHdyYXBwZXJSb3RhdGUgPSAwO1xuICAgIGxldCBjdWJlU2hhZG93RWw7XG4gICAgaWYgKHBhcmFtcy5zaGFkb3cpIHtcbiAgICAgIGlmIChpc0hvcml6b250YWwpIHtcbiAgICAgICAgY3ViZVNoYWRvd0VsID0gc3dpcGVyLndyYXBwZXJFbC5xdWVyeVNlbGVjdG9yKCcuc3dpcGVyLWN1YmUtc2hhZG93Jyk7XG4gICAgICAgIGlmICghY3ViZVNoYWRvd0VsKSB7XG4gICAgICAgICAgY3ViZVNoYWRvd0VsID0gY3JlYXRlRWxlbWVudCgnZGl2JywgJ3N3aXBlci1jdWJlLXNoYWRvdycpO1xuICAgICAgICAgIHN3aXBlci53cmFwcGVyRWwuYXBwZW5kKGN1YmVTaGFkb3dFbCk7XG4gICAgICAgIH1cbiAgICAgICAgY3ViZVNoYWRvd0VsLnN0eWxlLmhlaWdodCA9IGAke3N3aXBlcldpZHRofXB4YDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN1YmVTaGFkb3dFbCA9IGVsLnF1ZXJ5U2VsZWN0b3IoJy5zd2lwZXItY3ViZS1zaGFkb3cnKTtcbiAgICAgICAgaWYgKCFjdWJlU2hhZG93RWwpIHtcbiAgICAgICAgICBjdWJlU2hhZG93RWwgPSBjcmVhdGVFbGVtZW50KCdkaXYnLCAnc3dpcGVyLWN1YmUtc2hhZG93Jyk7XG4gICAgICAgICAgZWwuYXBwZW5kKGN1YmVTaGFkb3dFbCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzbGlkZXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGNvbnN0IHNsaWRlRWwgPSBzbGlkZXNbaV07XG4gICAgICBsZXQgc2xpZGVJbmRleCA9IGk7XG4gICAgICBpZiAoaXNWaXJ0dWFsKSB7XG4gICAgICAgIHNsaWRlSW5kZXggPSBwYXJzZUludChzbGlkZUVsLmdldEF0dHJpYnV0ZSgnZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgnKSwgMTApO1xuICAgICAgfVxuICAgICAgbGV0IHNsaWRlQW5nbGUgPSBzbGlkZUluZGV4ICogOTA7XG4gICAgICBsZXQgcm91bmQgPSBNYXRoLmZsb29yKHNsaWRlQW5nbGUgLyAzNjApO1xuICAgICAgaWYgKHJ0bCkge1xuICAgICAgICBzbGlkZUFuZ2xlID0gLXNsaWRlQW5nbGU7XG4gICAgICAgIHJvdW5kID0gTWF0aC5mbG9vcigtc2xpZGVBbmdsZSAvIDM2MCk7XG4gICAgICB9XG4gICAgICBjb25zdCBwcm9ncmVzcyA9IE1hdGgubWF4KE1hdGgubWluKHNsaWRlRWwucHJvZ3Jlc3MsIDEpLCAtMSk7XG4gICAgICBsZXQgdHggPSAwO1xuICAgICAgbGV0IHR5ID0gMDtcbiAgICAgIGxldCB0eiA9IDA7XG4gICAgICBpZiAoc2xpZGVJbmRleCAlIDQgPT09IDApIHtcbiAgICAgICAgdHggPSAtcm91bmQgKiA0ICogc3dpcGVyU2l6ZTtcbiAgICAgICAgdHogPSAwO1xuICAgICAgfSBlbHNlIGlmICgoc2xpZGVJbmRleCAtIDEpICUgNCA9PT0gMCkge1xuICAgICAgICB0eCA9IDA7XG4gICAgICAgIHR6ID0gLXJvdW5kICogNCAqIHN3aXBlclNpemU7XG4gICAgICB9IGVsc2UgaWYgKChzbGlkZUluZGV4IC0gMikgJSA0ID09PSAwKSB7XG4gICAgICAgIHR4ID0gc3dpcGVyU2l6ZSArIHJvdW5kICogNCAqIHN3aXBlclNpemU7XG4gICAgICAgIHR6ID0gc3dpcGVyU2l6ZTtcbiAgICAgIH0gZWxzZSBpZiAoKHNsaWRlSW5kZXggLSAzKSAlIDQgPT09IDApIHtcbiAgICAgICAgdHggPSAtc3dpcGVyU2l6ZTtcbiAgICAgICAgdHogPSAzICogc3dpcGVyU2l6ZSArIHN3aXBlclNpemUgKiA0ICogcm91bmQ7XG4gICAgICB9XG4gICAgICBpZiAocnRsKSB7XG4gICAgICAgIHR4ID0gLXR4O1xuICAgICAgfVxuICAgICAgaWYgKCFpc0hvcml6b250YWwpIHtcbiAgICAgICAgdHkgPSB0eDtcbiAgICAgICAgdHggPSAwO1xuICAgICAgfVxuICAgICAgY29uc3QgdHJhbnNmb3JtID0gYHJvdGF0ZVgoJHtyKGlzSG9yaXpvbnRhbCA/IDAgOiAtc2xpZGVBbmdsZSl9ZGVnKSByb3RhdGVZKCR7cihpc0hvcml6b250YWwgPyBzbGlkZUFuZ2xlIDogMCl9ZGVnKSB0cmFuc2xhdGUzZCgke3R4fXB4LCAke3R5fXB4LCAke3R6fXB4KWA7XG4gICAgICBpZiAocHJvZ3Jlc3MgPD0gMSAmJiBwcm9ncmVzcyA+IC0xKSB7XG4gICAgICAgIHdyYXBwZXJSb3RhdGUgPSBzbGlkZUluZGV4ICogOTAgKyBwcm9ncmVzcyAqIDkwO1xuICAgICAgICBpZiAocnRsKSB3cmFwcGVyUm90YXRlID0gLXNsaWRlSW5kZXggKiA5MCAtIHByb2dyZXNzICogOTA7XG4gICAgICB9XG4gICAgICBzbGlkZUVsLnN0eWxlLnRyYW5zZm9ybSA9IHRyYW5zZm9ybTtcbiAgICAgIGlmIChwYXJhbXMuc2xpZGVTaGFkb3dzKSB7XG4gICAgICAgIGNyZWF0ZVNsaWRlU2hhZG93cyhzbGlkZUVsLCBwcm9ncmVzcywgaXNIb3Jpem9udGFsKTtcbiAgICAgIH1cbiAgICB9XG4gICAgd3JhcHBlckVsLnN0eWxlLnRyYW5zZm9ybU9yaWdpbiA9IGA1MCUgNTAlIC0ke3N3aXBlclNpemUgLyAyfXB4YDtcbiAgICB3cmFwcGVyRWwuc3R5bGVbJy13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbiddID0gYDUwJSA1MCUgLSR7c3dpcGVyU2l6ZSAvIDJ9cHhgO1xuICAgIGlmIChwYXJhbXMuc2hhZG93KSB7XG4gICAgICBpZiAoaXNIb3Jpem9udGFsKSB7XG4gICAgICAgIGN1YmVTaGFkb3dFbC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlM2QoMHB4LCAke3N3aXBlcldpZHRoIC8gMiArIHBhcmFtcy5zaGFkb3dPZmZzZXR9cHgsICR7LXN3aXBlcldpZHRoIC8gMn1weCkgcm90YXRlWCg4OS45OWRlZykgcm90YXRlWigwZGVnKSBzY2FsZSgke3BhcmFtcy5zaGFkb3dTY2FsZX0pYDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHNoYWRvd0FuZ2xlID0gTWF0aC5hYnMod3JhcHBlclJvdGF0ZSkgLSBNYXRoLmZsb29yKE1hdGguYWJzKHdyYXBwZXJSb3RhdGUpIC8gOTApICogOTA7XG4gICAgICAgIGNvbnN0IG11bHRpcGxpZXIgPSAxLjUgLSAoTWF0aC5zaW4oc2hhZG93QW5nbGUgKiAyICogTWF0aC5QSSAvIDM2MCkgLyAyICsgTWF0aC5jb3Moc2hhZG93QW5nbGUgKiAyICogTWF0aC5QSSAvIDM2MCkgLyAyKTtcbiAgICAgICAgY29uc3Qgc2NhbGUxID0gcGFyYW1zLnNoYWRvd1NjYWxlO1xuICAgICAgICBjb25zdCBzY2FsZTIgPSBwYXJhbXMuc2hhZG93U2NhbGUgLyBtdWx0aXBsaWVyO1xuICAgICAgICBjb25zdCBvZmZzZXQgPSBwYXJhbXMuc2hhZG93T2Zmc2V0O1xuICAgICAgICBjdWJlU2hhZG93RWwuc3R5bGUudHJhbnNmb3JtID0gYHNjYWxlM2QoJHtzY2FsZTF9LCAxLCAke3NjYWxlMn0pIHRyYW5zbGF0ZTNkKDBweCwgJHtzd2lwZXJIZWlnaHQgLyAyICsgb2Zmc2V0fXB4LCAkey1zd2lwZXJIZWlnaHQgLyAyIC8gc2NhbGUyfXB4KSByb3RhdGVYKC04OS45OWRlZylgO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCB6RmFjdG9yID0gKGJyb3dzZXIuaXNTYWZhcmkgfHwgYnJvd3Nlci5pc1dlYlZ
vendor: 4,384 bytes, lines 1499-1548
1499pZXcpICYmIGJyb3dzZXIubmVlZFBlcnNwZWN0aXZlRml4ID8gLXN3aXBlclNpemUgLyAyIDogMDtcbiAgICB3cmFwcGVyRWwuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZTNkKDBweCwwLCR7ekZhY3Rvcn1weCkgcm90YXRlWCgke3Ioc3dpcGVyLmlzSG9yaXpvbnRhbCgpID8gMCA6IHdyYXBwZXJSb3RhdGUpfWRlZykgcm90YXRlWSgke3Ioc3dpcGVyLmlzSG9yaXpvbnRhbCgpID8gLXdyYXBwZXJSb3RhdGUgOiAwKX1kZWcpYDtcbiAgICB3cmFwcGVyRWwuc3R5bGUuc2V0UHJvcGVydHkoJy0tc3dpcGVyLWN1YmUtdHJhbnNsYXRlLXonLCBgJHt6RmFjdG9yfXB4YCk7XG4gIH07XG4gIGNvbnN0IHNldFRyYW5zaXRpb24gPSBkdXJhdGlvbiA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgZWwsXG4gICAgICBzbGlkZXNcbiAgICB9ID0gc3dpcGVyO1xuICAgIHNsaWRlcy5mb3JFYWNoKHNsaWRlRWwgPT4ge1xuICAgICAgc2xpZGVFbC5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gPSBgJHtkdXJhdGlvbn1tc2A7XG4gICAgICBzbGlkZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoJy5zd2lwZXItc2xpZGUtc2hhZG93LXRvcCwgLnN3aXBlci1zbGlkZS1zaGFkb3ctcmlnaHQsIC5zd2lwZXItc2xpZGUtc2hhZG93LWJvdHRvbSwgLnN3aXBlci1zbGlkZS1zaGFkb3ctbGVmdCcpLmZvckVhY2goc3ViRWwgPT4ge1xuICAgICAgICBzdWJFbC5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gPSBgJHtkdXJhdGlvbn1tc2A7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBpZiAoc3dpcGVyLnBhcmFtcy5jdWJlRWZmZWN0LnNoYWRvdyAmJiAhc3dpcGVyLmlzSG9yaXpvbnRhbCgpKSB7XG4gICAgICBjb25zdCBzaGFkb3dFbCA9IGVsLnF1ZXJ5U2VsZWN0b3IoJy5zd2lwZXItY3ViZS1zaGFkb3cnKTtcbiAgICAgIGlmIChzaGFkb3dFbCkgc2hhZG93RWwuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uID0gYCR7ZHVyYXRpb259bXNgO1xuICAgIH1cbiAgfTtcbiAgZWZmZWN0SW5pdCh7XG4gICAgZWZmZWN0OiAnY3ViZScsXG4gICAgc3dpcGVyLFxuICAgIG9uLFxuICAgIHNldFRyYW5zbGF0ZSxcbiAgICBzZXRUcmFuc2l0aW9uLFxuICAgIHJlY3JlYXRlU2hhZG93cyxcbiAgICBnZXRFZmZlY3RQYXJhbXM6ICgpID0+IHN3aXBlci5wYXJhbXMuY3ViZUVmZmVjdCxcbiAgICBwZXJzcGVjdGl2ZTogKCkgPT4gdHJ1ZSxcbiAgICBvdmVyd3JpdGVQYXJhbXM6ICgpID0+ICh7XG4gICAgICBzbGlkZXNQZXJWaWV3OiAxLFxuICAgICAgc2xpZGVzUGVyR3JvdXA6IDEsXG4gICAgICB3YXRjaFNsaWRlc1Byb2dyZXNzOiB0cnVlLFxuICAgICAgcmVzaXN0YW5jZVJhdGlvOiAwLFxuICAgICAgc3BhY2VCZXR3ZWVuOiAwLFxuICAgICAgY2VudGVyZWRTbGlkZXM6IGZhbHNlLFxuICAgICAgdmlydHVhbFRyYW5zbGF0ZTogdHJ1ZVxuICAgIH0pXG4gIH0pO1xufVxuXG5leHBvcnQgeyBFZmZlY3RDdWJlIGFzIGRlZmF1bHQgfTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=
1500//# sourceURL=webpack-internal:///../node_modules/swiper/modules/effect-cube.mjs
1501
1502}`)},"../node_modules/swiper/modules/effect-fade.mjs"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval(`{__webpack_require__.r(__webpack_exports__);
1503/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1504/* harmony export */   "default": () => (/* binding */ EffectFade)
1505/* harmony export */ });
1506/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "../node_modules/swiper/shared/effect-init.mjs");
1507/* harmony import */ var _shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/effect-target.mjs */ "../node_modules/swiper/shared/effect-target.mjs");
1508/* harmony import */ var _shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/effect-virtual-transition-end.mjs */ "../node_modules/swiper/shared/effect-virtual-transition-end.mjs");
1509/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shared/utils.mjs */ "../node_modules/swiper/shared/utils.mjs");
1510
1511
1512
1513
1514
1515function EffectFade(_ref) {
1516  let {
1517    swiper,
1518    extendParams,
1519    on
1520  } = _ref;
1521  extendParams({
1522    fadeEffect: {
1523      crossFade: false
1524    }
1525  });
1526  const setTranslate = () => {
1527    const {
1528      slides
1529    } = swiper;
1530    const params = swiper.params.fadeEffect;
1531    for (let i = 0; i < slides.length; i += 1) {
1532      const slideEl = swiper.slides[i];
1533      const offset = slideEl.swiperSlideOffset;
1534      let tx = -offset;
1535      if (!swiper.params.virtualTranslate) tx -= swiper.translate;
1536      let ty = 0;
1537      if (!swiper.isHorizontal()) {
1538        ty = tx;
1539        tx = 0;
1540      }
1541      const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0);
1542      const targetEl = (0,_shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(params, slideEl);
1543      targetEl.style.opacity = slideOpacity;
1544      targetEl.style.transform = \`translate3d(\${tx}px, \${ty}px, 0px)\`;
1545    }
1546  };
1547  const setTransition = duration => {
1548    const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_3__.g)(slideEl));
1549    transformElements.forEach(el => {
1550      el.style.transitionDuration = \`\${duration}ms\`;
1551    });
1552    (0,_shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_2__.e)({
1553      swiper,
1554      duration,
1555      transformElements,
1556      allSlides: true
1557    });
1558  };
1559  (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_0__.e)({
1560    effect: 'fade',
1561    swiper,
1562    on,
1563    setTranslate,
1564    setTransition,
1565    overwriteParams: () => ({
1566      slidesPerView: 1,
1567      slidesPerGroup: 1,
1568      watchSlidesProgress: true,
1569      spaceBetween: 0,
1570      virtualTranslate: !swiper.params.cssMode
1571    })
1572  });
1573}
1574
1575
1576//# sourceURL=[module]
1577//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9tb2R1bGVzL2VmZmVjdC1mYWRlLm1qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUE0RDtBQUNJO0FBQzhCO0FBQy9COztBQUUvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLG9CQUFvQixtQkFBbUI7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsNERBQVk7QUFDbkM7QUFDQSxnREFBZ0QsR0FBRyxNQUFNLEdBQUc7QUFDNUQ7QUFDQTtBQUNBO0FBQ0EsMkRBQTJELG9EQUFtQjtBQUM5RTtBQUNBLHVDQUF1QyxTQUFTO0FBQ2hELEtBQUs7QUFDTCxJQUFJLDRFQUEwQjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEVBQUUsMERBQVU7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDs7QUFFaUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9tb2R1bGVzL2VmZmVjdC1mYWRlLm1qcz9kODRhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGUgYXMgZWZmZWN0SW5pdCB9IGZyb20gJy4uL3NoYXJlZC9lZmZlY3QtaW5pdC5tanMnO1xuaW1wb3J0IHsgZSBhcyBlZmZlY3RUYXJnZXQgfSBmcm9tICcuLi9zaGFyZWQvZWZmZWN0LXRhcmdldC5tanMnO1xuaW1wb3J0IHsgZSBhcyBlZmZlY3RWaXJ0dWFsVHJhbnNpdGlvbkVuZCB9IGZyb20gJy4uL3NoYXJlZC9lZmZlY3QtdmlydHVhbC10cmFuc2l0aW9uLWVuZC5tanMnO1xuaW1wb3J0IHsgZyBhcyBnZXRTbGlkZVRyYW5zZm9ybUVsIH0gZnJvbSAnLi4vc2hhcmVkL3V0aWxzLm1qcyc7XG5cbmZ1bmN0aW9uIEVmZmVjdEZhZGUoX3JlZikge1xuICBsZXQge1xuICAgIHN3aXBlcixcbiAgICBleHRlbmRQYXJhbXMsXG4gICAgb25cbiAgfSA9IF9yZWY7XG4gIGV4dGVuZFBhcmFtcyh7XG4gICAgZmFkZUVmZmVjdDoge1xuICAgICAgY3Jvc3NGYWRlOiBmYWxzZVxuICAgIH1cbiAgfSk7XG4gIGNvbnN0IHNldFRyYW5zbGF0ZSA9ICgpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBzbGlkZXNcbiAgICB9ID0gc3dpcGVyO1xuICAgIGNvbnN0IHBhcmFtcyA9IHN3aXBlci5wYXJhbXMuZmFkZUVmZmVjdDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNsaWRlcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgY29uc3Qgc2xpZGVFbCA9IHN3aXBlci5zbGlkZXNbaV07XG4gICAgICBjb25zdCBvZmZzZXQgPSBzbGlkZUVsLnN3aXBlclNsaWRlT2Zmc2V0O1xuICAgICAgbGV0IHR4ID0gLW9mZnNldDtcbiAgICAgIGlmICghc3dpcGVyLnBhcmFtcy52aXJ0dWFsVHJhbnNsYXRlKSB0eCAtPSBzd2lwZXIudHJhbnNsYXRlO1xuICAgICAgbGV0IHR5ID0gMDtcbiAgICAgIGlmICghc3dpcGVyLmlzSG9yaXpvbnRhbCgpKSB7XG4gICAgICAgIHR5ID0gdHg7XG4gICAgICAgIHR4ID0gMDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNsaWRlT3BhY2l0eSA9IHN3aXBlci5wYXJhbXMuZmFkZUVmZmVjdC5jcm9zc0ZhZGUgPyBNYXRoLm1heCgxIC0gTWF0aC5hYnMoc2xpZGVFbC5wcm9ncmVzcyksIDApIDogMSArIE1hdGgubWluKE1hdGgubWF4KHNsaWRlRWwucHJvZ3Jlc3MsIC0xKSwgMCk7XG4gICAgICBjb25zdCB0YXJnZXRFbCA9IGVmZmVjdFRhcmdldChwYXJhbXMsIHNsaWRlRWwpO1xuICAgICAgdGFyZ2V0RWwuc3R5bGUub3BhY2l0eSA9IHNsaWRlT3BhY2l0eTtcbiAgICAgIHRhcmdldEVsLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGUzZCgke3R4fXB4LCAke3R5fXB4LCAwcHgpYDtcbiAgICB9XG4gIH07XG4gIGNvbnN0IHNldFRyYW5zaXRpb24gPSBkdXJhdGlvbiA9PiB7XG4gICAgY29uc3QgdHJhbnNmb3JtRWxlbWVudHMgPSBzd2lwZXIuc2xpZGVzLm1hcChzbGlkZUVsID0+IGdldFNsaWRlVHJhbnNmb3JtRWwoc2xpZGVFbCkpO1xuICAgIHRyYW5zZm9ybUVsZW1lbnRzLmZvckVhY2goZWwgPT4ge1xuICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uID0gYCR7ZHVyYXRpb259bXNgO1xuICAgIH0pO1xuICAgIGVmZmVjdFZpcnR1YWxUcmFuc2l0aW9uRW5kKHtcbiAgICAgIHN3aXBlcixcbiAgICAgIGR1cmF0aW9uLFxuICAgICAgdHJhbnNmb3JtRWxlbWVudHMsXG4gICAgICBhbGxTbGlkZXM6IHRydWVcbiAgICB9KTtcbiAgfTtcbiAgZWZmZWN0SW5pdCh7XG4gICAgZWZmZWN0OiAnZmFkZScsXG4gICAgc3dpcGVyLFxuICAgIG9uLFxuICAgIHNldFRyYW5zbGF0ZSxcbiAgICBzZXRUcmFuc2l0aW9uLFxuICAgIG92ZXJ3cml0ZVBhcmFtczogKCkgPT4gKHtcbiAgICAgIHNsaWRlc1BlclZpZXc6IDEsXG4gICAgICBzbGlkZXNQZXJHcm91cDogMSxcbiAgICAgIHdhdGNoU2xpZGVzUHJvZ3Jlc3M6IHRydWUsXG4gICAgICBzcGFjZUJldHdlZW46IDAsXG4gICAgICB2aXJ0dWFsVHJhbnNsYXRlOiAhc3dpcGVyLnBhcmFtcy5jc3NNb2RlXG4gICAgfSlcbiAgfSk7XG59XG5cbmV4cG9ydCB7
vendor: 6,799 bytes, lines 1577-1701
1577IEVmZmVjdEZhZGUgYXMgZGVmYXVsdCB9O1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==
1578//# sourceURL=webpack-internal:///../node_modules/swiper/modules/effect-fade.mjs
1579
1580}`)},"../node_modules/swiper/modules/effect-flip.mjs"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval(`{__webpack_require__.r(__webpack_exports__);
1581/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1582/* harmony export */   "default": () => (/* binding */ EffectFlip)
1583/* harmony export */ });
1584/* harmony import */ var _shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/create-shadow.mjs */ "../node_modules/swiper/shared/create-shadow.mjs");
1585/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "../node_modules/swiper/shared/effect-init.mjs");
1586/* harmony import */ var _shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/effect-target.mjs */ "../node_modules/swiper/shared/effect-target.mjs");
1587/* harmony import */ var _shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shared/effect-virtual-transition-end.mjs */ "../node_modules/swiper/shared/effect-virtual-transition-end.mjs");
1588/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../shared/utils.mjs */ "../node_modules/swiper/shared/utils.mjs");
1589
1590
1591
1592
1593
1594
1595function EffectFlip(_ref) {
1596  let {
1597    swiper,
1598    extendParams,
1599    on
1600  } = _ref;
1601  extendParams({
1602    flipEffect: {
1603      slideShadows: true,
1604      limitRotation: true
1605    }
1606  });
1607  const createSlideShadows = (slideEl, progress) => {
1608    let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');
1609    let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');
1610    if (!shadowBefore) {
1611      shadowBefore = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top');
1612    }
1613    if (!shadowAfter) {
1614      shadowAfter = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom');
1615    }
1616    if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);
1617    if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);
1618  };
1619  const recreateShadows = () => {
1620    // Set shadows
1621    swiper.params.flipEffect;
1622    swiper.slides.forEach(slideEl => {
1623      let progress = slideEl.progress;
1624      if (swiper.params.flipEffect.limitRotation) {
1625        progress = Math.max(Math.min(slideEl.progress, 1), -1);
1626      }
1627      createSlideShadows(slideEl, progress);
1628    });
1629  };
1630  const setTranslate = () => {
1631    const {
1632      slides,
1633      rtlTranslate: rtl
1634    } = swiper;
1635    const params = swiper.params.flipEffect;
1636    const rotateFix = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__.p)(swiper);
1637    for (let i = 0; i < slides.length; i += 1) {
1638      const slideEl = slides[i];
1639      let progress = slideEl.progress;
1640      if (swiper.params.flipEffect.limitRotation) {
1641        progress = Math.max(Math.min(slideEl.progress, 1), -1);
1642      }
1643      const offset = slideEl.swiperSlideOffset;
1644      const rotate = -180 * progress;
1645      let rotateY = rotate;
1646      let rotateX = 0;
1647      let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;
1648      let ty = 0;
1649      if (!swiper.isHorizontal()) {
1650        ty = tx;
1651        tx = 0;
1652        rotateX = -rotateY;
1653        rotateY = 0;
1654      } else if (rtl) {
1655        rotateY = -rotateY;
1656      }
1657      slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length;
1658      if (params.slideShadows) {
1659        createSlideShadows(slideEl, progress);
1660      }
1661      const transform = \`translate3d(\${tx}px, \${ty}px, 0px) rotateX(\${rotateFix(rotateX)}deg) rotateY(\${rotateFix(rotateY)}deg)\`;
1662      const targetEl = (0,_shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__.e)(params, slideEl);
1663      targetEl.style.transform = transform;
1664    }
1665  };
1666  const setTransition = duration => {
1667    const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__.g)(slideEl));
1668    transformElements.forEach(el => {
1669      el.style.transitionDuration = \`\${duration}ms\`;
1670      el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {
1671        shadowEl.style.transitionDuration = \`\${duration}ms\`;
1672      });
1673    });
1674    (0,_shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_3__.e)({
1675      swiper,
1676      duration,
1677      transformElements
1678    });
1679  };
1680  (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__.e)({
1681    effect: 'flip',
1682    swiper,
1683    on,
1684    setTranslate,
1685    setTransition,
1686    recreateShadows,
1687    getEffectParams: () => swiper.params.flipEffect,
1688    perspective: () => true,
1689    overwriteParams: () => ({
1690      slidesPerView: 1,
1691      slidesPerGroup: 1,
1692      watchSlidesProgress: true,
1693      spaceBetween: 0,
1694      virtualTranslate: !swiper.params.cssMode
1695    })
1696  });
1697}
1698
1699
1700//# sourceURL=[module]
1701//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9tb2R1bGVzL2VmZmVjdC1mbGlwLm1qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBZ0U7QUFDSjtBQUNJO0FBQzhCO0FBQ1o7O0FBRWxGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQiw0REFBWTtBQUNqQztBQUNBO0FBQ0Esb0JBQW9CLDREQUFZO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxzQkFBc0Isb0RBQVk7QUFDbEMsb0JBQW9CLG1CQUFtQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUMsR0FBRyxNQUFNLEdBQUcsbUJBQW1CLG1CQUFtQixlQUFlLG1CQUFtQjtBQUMzSCx1QkFBdUIsNERBQVk7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyREFBMkQsb0RBQW1CO0FBQzlFO0FBQ0EsdUNBQXVDLFNBQVM7QUFDaEQ7QUFDQSwrQ0FBK0MsU0FBUztBQUN4RCxPQUFPO0FBQ1AsS0FBSztBQUNMLElBQUksNEVBQTBCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEVBQUUsMERBQVU7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDs7QUFFaUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9tb2R1bGVzL2VmZmVjdC1mbGlwLm1qcz9jYjk3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGMgYXMgY3JlYXRlU2hhZG93IH0gZnJvbSAnLi4vc2hhcmVkL2NyZWF0ZS1zaGFkb3cubWpzJztcbmltcG9ydCB7
1701IGUgYXMgZWZmZWN0SW5pdCB9IGZyb20gJy4uL3NoYXJlZC9lZmZlY3QtaW5pdC5tanMnO1xuaW1wb3J0IHsgZSBhcyBlZmZlY3RUYXJnZXQgfSBmcm9tICcuLi9zaGFyZWQvZWZmZWN0LXRhcmdldC5tanMnO1xuaW1wb3J0IHsgZSBhcyBlZmZlY3RWaXJ0dWFsVHJhbnNpdGlvbkVuZCB9IGZyb20gJy4uL3NoYXJlZC9lZmZlY3QtdmlydHVhbC10cmFuc2l0aW9uLWVuZC5tanMnO1xuaW1wb3J0IHsgZyBhcyBnZXRTbGlkZVRyYW5zZm9ybUVsLCBwIGFzIGdldFJvdGF0ZUZpeCB9IGZyb20gJy4uL3NoYXJlZC91dGlscy5tanMnO1xuXG5mdW5jdGlvbiBFZmZlY3RGbGlwKF9yZWYpIHtcbiAgbGV0IHtcbiAgICBzd2lwZXIsXG4gICAgZXh0ZW5kUGFyYW1zLFxuICAgIG9uXG4gIH0gPSBfcmVmO1xuICBleHRlbmRQYXJhbXMoe1xuICAgIGZsaXBFZmZlY3Q6IHtcbiAgICAgIHNsaWRlU2hhZG93czogdHJ1ZSxcbiAgICAgIGxpbWl0Um90YXRpb246IHRydWVcbiAgICB9XG4gIH0pO1xuICBjb25zdCBjcmVhdGVTbGlkZVNoYWRvd3MgPSAoc2xpZGVFbCwgcHJvZ3Jlc3MpID0+IHtcbiAgICBsZXQgc2hhZG93QmVmb3JlID0gc3dpcGVyLmlzSG9yaXpvbnRhbCgpID8gc2xpZGVFbC5xdWVyeVNlbGVjdG9yKCcuc3dpcGVyLXNsaWRlLXNoYWRvdy1sZWZ0JykgOiBzbGlkZUVsLnF1ZXJ5U2VsZWN0b3IoJy5zd2lwZXItc2xpZGUtc2hhZG93LXRvcCcpO1xuICAgIGxldCBzaGFkb3dBZnRlciA9IHN3aXBlci5pc0hvcml6b250YWwoKSA/IHNsaWRlRWwucXVlcnlTZWxlY3RvcignLnN3aXBlci1zbGlkZS1zaGFkb3ctcmlnaHQnKSA6IHNsaWRlRWwucXVlcnlTZWxlY3RvcignLnN3aXBlci1zbGlkZS1zaGFkb3ctYm90dG9tJyk7XG4gICAgaWYgKCFzaGFkb3dCZWZvcmUpIHtcbiAgICAgIHNoYWRvd0JlZm9yZSA9IGNyZWF0ZVNoYWRvdygnZmxpcCcsIHNsaWRlRWwsIHN3aXBlci5pc0hvcml6b250YWwoKSA/ICdsZWZ0JyA6ICd0b3AnKTtcbiAgICB9XG4gICAgaWYgKCFzaGFkb3dBZnRlcikge1xuICAgICAgc2hhZG93QWZ0ZXIgPSBjcmVhdGVTaGFkb3coJ2ZsaXAnLCBzbGlkZUVsLCBzd2lwZXIuaXNIb3Jpem9udGFsKCkgPyAncmlnaHQnIDogJ2JvdHRvbScpO1xuICAgIH1cbiAgICBpZiAoc2hhZG93QmVmb3JlKSBzaGFkb3dCZWZvcmUuc3R5bGUub3BhY2l0eSA9IE1hdGgubWF4KC1wcm9ncmVzcywgMCk7XG4gICAgaWYgKHNoYWRvd0FmdGVyKSBzaGFkb3dBZnRlci5zdHlsZS5vcGFjaXR5ID0gTWF0aC5tYXgocHJvZ3Jlc3MsIDApO1xuICB9O1xuICBjb25zdCByZWNyZWF0ZVNoYWRvd3MgPSAoKSA9PiB7XG4gICAgLy8gU2V0IHNoYWRvd3NcbiAgICBzd2lwZXIucGFyYW1zLmZsaXBFZmZlY3Q7XG4gICAgc3dpcGVyLnNsaWRlcy5mb3JFYWNoKHNsaWRlRWwgPT4ge1xuICAgICAgbGV0IHByb2dyZXNzID0gc2xpZGVFbC5wcm9ncmVzcztcbiAgICAgIGlmIChzd2lwZXIucGFyYW1zLmZsaXBFZmZlY3QubGltaXRSb3RhdGlvbikge1xuICAgICAgICBwcm9ncmVzcyA9IE1hdGgubWF4KE1hdGgubWluKHNsaWRlRWwucHJvZ3Jlc3MsIDEpLCAtMSk7XG4gICAgICB9XG4gICAgICBjcmVhdGVTbGlkZVNoYWRvd3Moc2xpZGVFbCwgcHJvZ3Jlc3MpO1xuICAgIH0pO1xuICB9O1xuICBjb25zdCBzZXRUcmFuc2xhdGUgPSAoKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgc2xpZGVzLFxuICAgICAgcnRsVHJhbnNsYXRlOiBydGxcbiAgICB9ID0gc3dpcGVyO1xuICAgIGNvbnN0IHBhcmFtcyA9IHN3aXBlci5wYXJhbXMuZmxpcEVmZmVjdDtcbiAgICBjb25zdCByb3RhdGVGaXggPSBnZXRSb3RhdGVGaXgoc3dpcGVyKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNsaWRlcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgY29uc3Qgc2xpZGVFbCA9IHNsaWRlc1tpXTtcbiAgICAgIGxldCBwcm9ncmVzcyA9IHNsaWRlRWwucHJvZ3Jlc3M7XG4gICAgICBpZiAoc3dpcGVyLnBhcmFtcy5mbGlwRWZmZWN0LmxpbWl0Um90YXRpb24pIHtcbiAgICAgICAgcHJvZ3Jlc3MgPSBNYXRoLm1heChNYXRoLm1pbihzbGlkZUVsLnByb2dyZXNzLCAxKSwgLTEpO1xuICAgICAgfVxuICAgICAgY29uc3Qgb2Zmc2V0ID0gc2xpZGVFbC5zd2lwZXJTbGlkZU9mZnNldDtcbiAgICAgIGNvbnN0IHJvdGF0ZSA9IC0xODAgKiBwcm9ncmVzcztcbiAgICAgIGxldCByb3RhdGVZID0gcm90YXRlO1xuICAgICAgbGV0IHJvdGF0ZVggPSAwO1xuICAgICAgbGV0IHR4ID0gc3dpcGVyLnBhcmFtcy5jc3NNb2RlID8gLW9mZnNldCAtIHN3aXBlci50cmFuc2xhdGUgOiAtb2Zmc2V0O1xuICAgICAgbGV0IHR5ID0gMDtcbiAgICAgIGlmICghc3dpcGVyLmlzSG9yaXpvbnRhbCgpKSB7XG4gICAgICAgIHR5ID0gdHg7XG4gICAgICAgIHR4ID0gMDtcbiAgICAgICAgcm90YXRlWCA9IC1yb3RhdGVZO1xuICAgICAgICByb3RhdGVZID0gMDtcbiAgICAgIH0gZWxzZSBpZiAocnRsKSB7XG4gICAgICAgIHJvdGF0ZVkgPSAtcm90YXRlWTtcbiAgICAgIH1cbiAgICAgIHNsaWRlRWwuc3R5bGUuekluZGV4ID0gLU1hdGguYWJzKE1hdGgucm91bmQocHJvZ3Jlc3MpKSArIHNsaWRlcy5sZW5ndGg7XG4gICAgICBpZiAocGFyYW1zLnNsaWRlU2hhZG93cykge1xuICAgICAgICBjcmVhdGVTbGlkZVNoYWRvd3Moc2xpZGVFbCwgcHJvZ3Jlc3MpO1xuICAgICAgfVxuICAgICAgY29uc3QgdHJhbnNmb3JtID0gYHRyYW5zbGF0ZTNkKCR7dHh9cHgsICR7dHl9cHgsIDBweCkgcm90YXRlWCgke3JvdGF0ZUZpeChyb3RhdGVYKX1kZWcpIHJvdGF0ZVkoJHtyb3RhdGVGaXgocm90YXRlWSl9ZGVnKWA7XG4gICAgICBjb25zdCB0YXJnZXRFbCA9IGVmZmVjdFRhcmdldChwYXJhbXMsIHNsaWRlRWwpO1xuICAgICAgdGFyZ2V0RWwuc3R5bGUudHJhbnNmb3JtID0gdHJhbnNmb3JtO1xuICAgIH1cbiAgfTtcbiAgY29uc3Qgc2V0VHJhbnNpdGlvbiA9IGR1cmF0aW9uID0+IHtcbiAgICBjb25zdCB0cmFuc2Zvcm1FbGVtZW50cyA9IHN3aXBlci5zbGlkZXMubWFwKHNsaWRlRWwgPT4gZ2V0U2xpZGVUcmFuc2Zvcm1FbChzbGlkZUVsKSk7XG4gICAgdHJhbnNmb3JtRWxlbWVudHMuZm9yRWFjaChlbCA9PiB7XG4gICAgICBlbC5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gPSBgJHtkdXJhdGlvbn1tc2A7XG4gICAgICBlbC5xdWVyeVNlbGVjdG9yQWxsKCcuc3dpcGVyLXNsaWRlLXNoYWRvdy10b3AsIC5zd2lwZXItc2xpZGUtc2hhZG93LXJpZ2h0LCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1ib3R0b20sIC5zd2lwZXItc2xpZGUtc2hhZG93LWxlZnQnKS5mb3JFYWNoKHNoYWRvd0VsID0+IHtcbiAgICAgICAgc2hhZG93RWwuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uID0gYCR7ZHVyYXRpb259bXNgO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgZWZmZWN0VmlydHVhbFRyYW5zaXRpb25FbmQoe1xuICAgICAgc3dpcGVyLFxuICAgICAgZHVyYXRpb24sXG4gICAgICB0cmFuc2Zvcm1FbGVtZW50c1xuICAgIH0pO1xuICB9O1xuICBlZmZlY3RJbml0KHtcbiAgICBlZmZlY3Q6ICdmbGlwJyxcbiAgICBzd2lwZXIsXG4gICAgb24sXG4gICAgc2V0VHJhbnNsYXRlLFxuICAgIHNldFRyYW5zaXRpb24sXG4gICAgcmVjcmVhdGVTaGFkb3dzLFxuICAgIGdldEVmZmVjdFBhcmFtczogKCkgPT4gc3dpcGVyLnBhcmFtcy5mbGlwRWZmZWN0LFxuICAgIHBlcnNwZWN0aXZlOiAoKSA9PiB0cnVlLFxuICAgIG92ZXJ3cml0ZVBhcmFtczogKCkgPT4gKHtcbiAgICAgIHNsaWRlc1BlclZpZXc6IDEsXG4gICAgICBzbGlkZXNQZXJHcm91cDogMSxcbiAgICAgIHdhdGNoU2xpZGVzUHJvZ3Jlc3M6IHRydWUsXG4gICAgICBzcGFjZUJldHdlZW46IDAsXG4gICAgICB2aXJ0dWFsVHJhbnNsYXRlOiAhc3dpcGVyLnBhcmFtcy5jc3NNb2RlXG4gICAgfSlcbiAgfSk7XG59XG5cbmV4cG9ydCB7
vendor: 9,441 bytes, lines 1701-1947
1701IEVmZmVjdEZsaXAgYXMgZGVmYXVsdCB9O1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==
1702//# sourceURL=webpack-internal:///../node_modules/swiper/modules/effect-flip.mjs
1703
1704}`)},"../node_modules/swiper/modules/free-mode.mjs"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval(`{__webpack_require__.r(__webpack_exports__);
1705/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1706/* harmony export */   "default": () => (/* binding */ freeMode)
1707/* harmony export */ });
1708/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/utils.mjs */ "../node_modules/swiper/shared/utils.mjs");
1709
1710
1711function freeMode(_ref) {
1712  let {
1713    swiper,
1714    extendParams,
1715    emit,
1716    once
1717  } = _ref;
1718  extendParams({
1719    freeMode: {
1720      enabled: false,
1721      momentum: true,
1722      momentumRatio: 1,
1723      momentumBounce: true,
1724      momentumBounceRatio: 1,
1725      momentumVelocityRatio: 1,
1726      sticky: false,
1727      minimumVelocity: 0.02
1728    }
1729  });
1730  function onTouchStart() {
1731    if (swiper.params.cssMode) return;
1732    const translate = swiper.getTranslate();
1733    swiper.setTranslate(translate);
1734    swiper.setTransition(0);
1735    swiper.touchEventsData.velocities.length = 0;
1736    swiper.freeMode.onTouchEnd({
1737      currentPos: swiper.rtl ? swiper.translate : -swiper.translate
1738    });
1739  }
1740  function onTouchMove() {
1741    if (swiper.params.cssMode) return;
1742    const {
1743      touchEventsData: data,
1744      touches
1745    } = swiper;
1746    // Velocity
1747    if (data.velocities.length === 0) {
1748      data.velocities.push({
1749        position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],
1750        time: data.touchStartTime
1751      });
1752    }
1753    data.velocities.push({
1754      position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],
1755      time: (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.f)()
1756    });
1757  }
1758  function onTouchEnd(_ref2) {
1759    let {
1760      currentPos
1761    } = _ref2;
1762    if (swiper.params.cssMode) return;
1763    const {
1764      params,
1765      wrapperEl,
1766      rtlTranslate: rtl,
1767      snapGrid,
1768      touchEventsData: data
1769    } = swiper;
1770    // Time diff
1771    const touchEndTime = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.f)();
1772    const timeDiff = touchEndTime - data.touchStartTime;
1773    if (currentPos < -swiper.minTranslate()) {
1774      swiper.slideTo(swiper.activeIndex);
1775      return;
1776    }
1777    if (currentPos > -swiper.maxTranslate()) {
1778      if (swiper.slides.length < snapGrid.length) {
1779        swiper.slideTo(snapGrid.length - 1);
1780      } else {
1781        swiper.slideTo(swiper.slides.length - 1);
1782      }
1783      return;
1784    }
1785    if (params.freeMode.momentum) {
1786      if (data.velocities.length > 1) {
1787        const lastMoveEvent = data.velocities.pop();
1788        const velocityEvent = data.velocities.pop();
1789        const distance = lastMoveEvent.position - velocityEvent.position;
1790        const time = lastMoveEvent.time - velocityEvent.time;
1791        swiper.velocity = distance / time;
1792        swiper.velocity /= 2;
1793        if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {
1794          swiper.velocity = 0;
1795        }
1796        // this implies that the user stopped moving a finger then released.
1797        // There would be no events with distance zero, so the last event is stale.
1798        if (time > 150 || (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.f)() - lastMoveEvent.time > 300) {
1799          swiper.velocity = 0;
1800        }
1801      } else {
1802        swiper.velocity = 0;
1803      }
1804      swiper.velocity *= params.freeMode.momentumVelocityRatio;
1805      data.velocities.length = 0;
1806      let momentumDuration = 1000 * params.freeMode.momentumRatio;
1807      const momentumDistance = swiper.velocity * momentumDuration;
1808      let newPosition = swiper.translate + momentumDistance;
1809      if (rtl) newPosition = -newPosition;
1810      let doBounce = false;
1811      let afterBouncePosition;
1812      const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;
1813      let needsLoopFix;
1814      if (newPosition < swiper.maxTranslate()) {
1815        if (params.freeMode.momentumBounce) {
1816          if (newPosition + swiper.maxTranslate() < -bounceAmount) {
1817            newPosition = swiper.maxTranslate() - bounceAmount;
1818          }
1819          afterBouncePosition = swiper.maxTranslate();
1820          doBounce = true;
1821          data.allowMomentumBounce = true;
1822        } else {
1823          newPosition = swiper.maxTranslate();
1824        }
1825        if (params.loop && params.centeredSlides) needsLoopFix = true;
1826      } else if (newPosition > swiper.minTranslate()) {
1827        if (params.freeMode.momentumBounce) {
1828          if (newPosition - swiper.minTranslate() > bounceAmount) {
1829            newPosition = swiper.minTranslate() + bounceAmount;
1830          }
1831          afterBouncePosition = swiper.minTranslate();
1832          doBounce = true;
1833          data.allowMomentumBounce = true;
1834        } else {
1835          newPosition = swiper.minTranslate();
1836        }
1837        if (params.loop && params.centeredSlides) needsLoopFix = true;
1838      } else if (params.freeMode.sticky) {
1839        let nextSlide;
1840        for (let j = 0; j < snapGrid.length; j += 1) {
1841          if (snapGrid[j] > -newPosition) {
1842            nextSlide = j;
1843            break;
1844          }
1845        }
1846        if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {
1847          newPosition = snapGrid[nextSlide];
1848        } else {
1849          newPosition = snapGrid[nextSlide - 1];
1850        }
1851        newPosition = -newPosition;
1852      }
1853      if (needsLoopFix) {
1854        once('transitionEnd', () => {
1855          swiper.loopFix();
1856        });
1857      }
1858      // Fix duration
1859      if (swiper.velocity !== 0) {
1860        if (rtl) {
1861          momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);
1862        } else {
1863          momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);
1864        }
1865        if (params.freeMode.sticky) {
1866          // If freeMode.sticky is active and the user ends a swipe with a slow-velocity
1867          // event, then durations can be 20+ seconds to slide one (or zero!) slides.
1868          // It's easy to see this when simulating touch with mouse events. To fix this,
1869          // limit single-slide swipes to the default slide duration. This also has the
1870          // nice side effect of matching slide speed if the user stopped moving before
1871          // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.
1872          // For faster swipes, also apply limits (albeit higher ones).
1873          const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);
1874          const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];
1875          if (moveDistance < currentSlideSize) {
1876            momentumDuration = params.speed;
1877          } else if (moveDistance < 2 * currentSlideSize) {
1878            momentumDuration = params.speed * 1.5;
1879          } else {
1880            momentumDuration = params.speed * 2.5;
1881          }
1882        }
1883      } else if (params.freeMode.sticky) {
1884        swiper.slideToClosest();
1885        return;
1886      }
1887      if (params.freeMode.momentumBounce && doBounce) {
1888        swiper.updateProgress(afterBouncePosition);
1889        swiper.setTransition(momentumDuration);
1890        swiper.setTranslate(newPosition);
1891        swiper.transitionStart(true, swiper.swipeDirection);
1892        swiper.animating = true;
1893        (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.l)(wrapperEl, () => {
1894          if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;
1895          emit('momentumBounce');
1896          swiper.setTransition(params.speed);
1897          setTimeout(() => {
1898            swiper.setTranslate(afterBouncePosition);
1899            (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.l)(wrapperEl, () => {
1900              if (!swiper || swiper.destroyed) return;
1901              swiper.transitionEnd();
1902            });
1903          }, 0);
1904        });
1905      } else if (swiper.velocity) {
1906        emit('_freeModeNoMomentumRelease');
1907        swiper.updateProgress(newPosition);
1908        swiper.setTransition(momentumDuration);
1909        swiper.setTranslate(newPosition);
1910        swiper.transitionStart(true, swiper.swipeDirection);
1911        if (!swiper.animating) {
1912          swiper.animating = true;
1913          (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.l)(wrapperEl, () => {
1914            if (!swiper || swiper.destroyed) return;
1915            swiper.transitionEnd();
1916          });
1917        }
1918      } else {
1919        swiper.updateProgress(newPosition);
1920      }
1921      swiper.updateActiveIndex();
1922      swiper.updateSlidesClasses();
1923    } else if (params.freeMode.sticky) {
1924      swiper.slideToClosest();
1925      return;
1926    } else if (params.freeMode) {
1927      emit('_freeModeNoMomentumRelease');
1928    }
1929    if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {
1930      emit('_freeModeStaticRelease');
1931      swiper.updateProgress();
1932      swiper.updateActiveIndex();
1933      swiper.updateSlidesClasses();
1934    }
1935  }
1936  Object.assign(swiper, {
1937    freeMode: {
1938      onTouchStart,
1939      onTouchMove,
1940      onTouchEnd
1941    }
1942  });
1943}
1944
1945
1946//# sourceURL=[module]
1947//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9tb2R1bGVzL2ZyZWUtbW9kZS5tanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBMEU7O0F
1947BRTFFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsWUFBWSxvREFBRztBQUNmLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLHlCQUF5QixvREFBRztBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsb0RBQUc7QUFDN0I7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQSx3QkFBd0IscUJBQXFCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxvREFBb0I7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksb0RBQW9CO0FBQ2hDO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsV0FBVztBQUNYLFNBQVM7QUFDVCxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLG9EQUFvQjtBQUM5QjtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUUrQiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvc3dpcGVyL21vZHVsZXMvZnJlZS1tb2RlLm1qcz8zM2I1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGYgYXMgbm93LCBsIGFzIGVsZW1lbnRUcmFuc2l0aW9uRW5kIH0gZnJvbSAnLi4vc2hhcmVkL3V0aWxzLm1qcyc7XG5cbmZ1bmN0aW9uIGZyZWVNb2RlKF9yZWYpIHtcbiAgbGV0IHtcbiAgICBzd2lwZXIsXG4gICAgZXh0ZW5kUGFyYW1zLFxuICAgIGVtaXQsXG4gICAgb25jZVxuICB9ID0gX3JlZjtcbiAgZXh0ZW5kUGFyYW1zKHtcbiAgICBmcmVlTW9kZToge1xuICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgICBtb21lbnR1bTogdHJ1ZSxcbiAgICAgIG1vbWVudHVtUmF0aW86IDEsXG4gICAgICBtb21lbnR1bUJvdW5jZTogdHJ1ZSxcbiAgICAgIG1vbWVudHVtQm91bmNlUmF0aW86IDEsXG4gICAgICBtb21lbnR1bVZlbG9jaXR5UmF0aW86IDEsXG4gICAgICBzdGlja3k6IGZhbHNlLFxuICAgICAgbWluaW11bVZlbG9jaXR5OiAwLjAyXG4gICAgfVxuICB9KTtcbiAgZnVuY3Rpb24gb25Ub3VjaFN0YXJ0KCkge1xuICAgIGlmIChzd2lwZXIucGFyYW1zLmNzc01vZGUpIHJldHVybjtcbiAgICBjb25zdCB0cmFuc2xhdGUgPSBzd2lwZXIuZ2V0VHJhbnNsYXRlKCk7XG4gICAgc3dpcGVyLnNldFRyYW5zbGF0ZSh0cmFuc2xhdGUpO1xuICAgIHN3aXBlci5zZXRUcmFuc2l0aW9uKDApO1xuICAgIHN3aXBlci50b3VjaEV2ZW50c0RhdGEudmVsb2NpdGllcy5sZW5ndGggPSAwO1xuICAgIHN3aXBlci5mcmVlTW9kZS5vblRvdWNoRW5kKHtcbiAgICAgIGN1cnJlbnRQb3M6IHN3aXBlci5ydGwgPyBzd2lwZXIudHJhbnNsYXRlIDogLXN3aXBlci50cmFuc2xhdGVcbiAgICB9KTtcbiAgfVxuICBmdW5jdGlvbiBvblRvdWNoTW92ZSgpIHtcbiAgICBpZiAoc3dpcGVyLnBhcmFtcy5jc3NNb2RlKSByZXR1cm47XG4gICAgY29uc3Qge1xuICAgICAgdG91Y2hFdmVudHNEYXRhOiBkYXRhLFxuICAgICAgdG91Y2hlc1xuICAgIH0gPSBzd2lwZXI7XG4gICAgLy8gVmVsb2NpdHlcbiAgICBpZiAoZGF0YS52ZWxvY2l0aWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgZGF0YS52ZWxvY2l0aWVzLnB1c2goe1xuICAgICAgICBwb3NpdGlvbjogdG91Y2hlc1tzd2lwZXIuaXNIb3Jpem9udGFsKCkgPyAnc3RhcnRYJyA6ICdzdGFydFknXSxcbiAgICAgICAgdGltZTogZGF0YS50b3VjaFN0YXJ0VGltZVxuICAgICAgfSk7XG4gICAgfVxuICAgIGRhdGEudmVsb2NpdGllcy5wdXNoKHtcbiAgICAgIHBvc2l0aW9uOiB0b3VjaGVzW3N3aXBlci5pc0hvcml6b250YWwoKSA/ICdjdXJyZW50WCcgOiAnY3VycmVudFknXSxcbiAgICAgIHRpbWU6IG5vdygpXG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gb25Ub3VjaEVuZChfcmVmMikge1xuICAgIGxldCB7XG4gICAgICBjdXJyZW50UG9zXG4gICAgfSA9IF9yZWYyO1xuICAgIGlmIChzd2lwZXIucGFyYW1zLmNzc01vZGUpIHJldHVybjtcbiAgICBjb25zdCB7XG4gICAgICBwYXJhbXMsXG4gICAgICB3cmFwcGVyRWwsXG4gICAgICBydGxUcmFuc2xhdGU6IHJ0bCxcbiAgICAgIHNuYXBHcmlkLFxuICAgICAgdG91Y2hFdmVudHNEYXRhOiBkYXRhXG4gICAgfSA9IHN3aXBlcjtcbiAgICAvLyBUaW1lIGRpZmZcbiAgICBjb25zdCB0b3VjaEVuZFRpbWUgPSBub3coKTtcbiAgICBjb25zdCB0aW1lRGlmZiA9IHRvdWNoRW5kVGltZSAtIGRhdGEudG91Y2hTdGFydFRpbWU7XG4gICAgaWYgKGN1cnJlbnRQb3MgPCAtc3dpcGVyLm1pblRyYW5zbGF0ZSgpKSB7XG4gICAgICBzd2lwZXIuc2xpZGVUbyhzd2lwZXIuYWN0aXZlSW5kZXgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoY3VycmVudFBvcyA+IC1zd2lwZXIubWF4VHJhbnNsYXRlKCkpIHtcbiAgICAgIGlmIChzd2lwZXIuc2xpZGVzLmxlbmd0aCA8IHNuYXBHcmlkLmxlbmd0aCkge1xuICAgICAgICBzd2lwZXIuc2xpZGVUbyhzbmFwR3JpZC5sZW5ndGggLSAxKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgI
1947HN3aXBlci5zbGlkZVRvKHN3aXBlci5zbGlkZXMubGVuZ3RoIC0gMSk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChwYXJhbXMuZnJlZU1vZGUubW9tZW50dW0pIHtcbiAgICAgIGlmIChkYXRhLnZlbG9jaXRpZXMubGVuZ3RoID4gMSkge1xuICAgICAgICBjb25zdCBsYXN0TW92ZUV2ZW50ID0gZGF0YS52ZWxvY2l0aWVzLnBvcCgpO1xuICAgICAgICBjb25zdCB2ZWxvY2l0eUV2ZW50ID0gZGF0YS52ZWxvY2l0aWVzLnBvcCgpO1xuICAgICAgICBjb25zdCBkaXN0YW5jZSA9IGxhc3RNb3ZlRXZlbnQucG9zaXRpb24gLSB2ZWxvY2l0eUV2ZW50LnBvc2l0aW9uO1xuICAgICAgICBjb25zdCB0aW1lID0gbGFzdE1vdmVFdmVudC50aW1lIC0gdmVsb2NpdHlFdmVudC50aW1lO1xuICAgICAgICBzd2lwZXIudmVsb2NpdHkgPSBkaXN0YW5jZSAvIHRpbWU7XG4gICAgICAgIHN3aXBlci52ZWxvY2l0eSAvPSAyO1xuICAgICAgICBpZiAoTWF0aC5hYnMoc3dpcGVyLnZlbG9jaXR5KSA8IHBhcmFtcy5mcmVlTW9kZS5taW5pbXVtVmVsb2NpdHkpIHtcbiAgICAgICAgICBzd2lwZXIudmVsb2NpdHkgPSAwO1xuICAgICAgICB9XG4gICAgICAgIC8vIHRoaXMgaW1wbGllcyB0aGF0IHRoZSB1c2VyIHN0b3BwZWQgbW92aW5nIGEgZmluZ2VyIHRoZW4gcmVsZWFzZWQuXG4gICAgICAgIC8vIFRoZXJlIHdvdWxkIGJlIG5vIGV2ZW50cyB3aXRoIGRpc3RhbmNlIHplcm8sIHNvIHRoZSBsYXN0IGV2ZW50IGlzIHN0YWxlLlxuICAgICAgICBpZiAodGltZSA+IDE1MCB8fCBub3coKSAtIGxhc3RNb3ZlRXZlbnQudGltZSA+IDMwMCkge1xuICAgICAgICAgIHN3aXBlci52ZWxvY2l0eSA9IDA7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN3aXBlci52ZWxvY2l0eSA9IDA7XG4gICAgICB9XG4gICAgICBzd2lwZXIudmVsb2NpdHkgKj0gcGFyYW1zLmZyZWVNb2RlLm1vbWVudHVtVmVsb2NpdHlSYXRpbztcbiAgICAgIGRhdGEudmVsb2NpdGllcy5sZW5ndGggPSAwO1xuICAgICAgbGV0IG1vbWVudHVtRHVyYXRpb24gPSAxMDAwICogcGFyYW1zLmZyZWVNb2RlLm1vbWVudHVtUmF0aW87XG4gICAgICBjb25zdCBtb21lbnR1bURpc3RhbmNlID0gc3dpcGVyLnZlbG9jaXR5ICogbW9tZW50dW1EdXJhdGlvbjtcbiAgICAgIGxldCBuZXdQb3NpdGlvbiA9IHN3aXBlci50cmFuc2xhdGUgKyBtb21lbnR1bURpc3RhbmNlO1xuICAgICAgaWYgKHJ0bCkgbmV3UG9zaXRpb24gPSAtbmV3UG9zaXRpb247XG4gICAgICBsZXQgZG9Cb3VuY2UgPSBmYWxzZTtcbiAgICAgIGxldCBhZnRlckJvdW5jZVBvc2l0aW9uO1xuICAgICAgY29uc3QgYm91bmNlQW1vdW50ID0gTWF0aC5hYnMoc3dpcGVyLnZlbG9jaXR5KSAqIDIwICogcGFyYW1zLmZyZWVNb2RlLm1vbWVudHVtQm91bmNlUmF0aW87XG4gICAgICBsZXQgbmVlZHNMb29wRml4O1xuICAgICAgaWYgKG5ld1Bvc2l0aW9uIDwgc3dpcGVyLm1heFRyYW5zbGF0ZSgpKSB7XG4gICAgICAgIGlmIChwYXJhbXMuZnJlZU1vZGUubW9tZW50dW1Cb3VuY2UpIHtcbiAgICAgICAgICBpZiAobmV3UG9zaXRpb24gKyBzd2lwZXIubWF4VHJhbnNsYXRlKCkgPCAtYm91bmNlQW1vdW50KSB7XG4gICAgICAgICAgICBuZXdQb3NpdGlvbiA9IHN3aXBlci5tYXhUcmFuc2xhdGUoKSAtIGJvdW5jZUFtb3VudDtcbiAgICAgICAgICB9XG4gICAgICAgICAgYWZ0ZXJCb3VuY2VQb3NpdGlvbiA9IHN3aXBlci5tYXhUcmFuc2xhdGUoKTtcbiAgICAgICAgICBkb0JvdW5jZSA9IHRydWU7XG4gICAgICAgICAgZGF0YS5hbGxvd01vbWVudHVtQm91bmNlID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXdQb3NpdGlvbiA9IHN3aXBlci5tYXhUcmFuc2xhdGUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFyYW1zLmxvb3AgJiYgcGFyYW1zLmNlbnRlcmVkU2xpZGVzKSBuZWVkc0xvb3BGaXggPSB0cnVlO1xuICAgICAgfSBlbHNlIGlmIChuZXdQb3NpdGlvbiA+IHN3aXBlci5taW5UcmFuc2xhdGUoKSkge1xuICAgICAgICBpZiAocGFyYW1zLmZyZWVNb2RlLm1vbWVudHVtQm91bmNlKSB7XG4gICAgICAgICAgaWYgKG5ld1Bvc2l0aW9uIC0gc3dpcGVyLm1pblRyYW5zbGF0ZSgpID4gYm91bmNlQW1vdW50KSB7XG4gICAgICAgICAgICBuZXdQb3NpdGlvbiA9IHN3aXBlci5taW5UcmFuc2xhdGUoKSArIGJvdW5jZUFtb3VudDtcbiAgICAgICAgICB9XG4gICAgICAgICAgYWZ0ZXJCb3VuY2VQb3NpdGlvbiA9IHN3aXBlci5taW5UcmFuc2xhdGUoKTtcbiAgICAgICAgICBkb0JvdW5jZSA9IHRydWU7XG4gICAgICAgICAgZGF0YS5hbGxvd01vbWVudHVtQm91bmNlID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXdQb3NpdGlvbiA9IHN3aXBlci5taW5UcmFuc2xhdGUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFyYW1zLmxvb3AgJiYgcGFyYW1zLmNlbnRlcmVkU2xpZGVzKSBuZWVkc0xvb3BGaXggPSB0cnVlO1xuICAgICAgfSBlbHNlIGlmIChwYXJhbXMuZnJlZU1vZGUuc3RpY2t5KSB7XG4gICAgICAgIGxldCBuZXh0U2xpZGU7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgc25hcEdyaWQubGVuZ3RoOyBqICs9IDEpIHtcbiAgICAgICAgICBpZiAoc25hcEdyaWRbal0gPiAtbmV3UG9zaXRpb24pIHtcbiAgICAgICAgICAgIG5leHRTbGlkZSA9IGo7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKE1hdGguYWJzKHNuYXBHcmlkW25leHRTbGlkZV0gLSBuZXdQb3NpdGlvbikgPCBNYXRoLmFicyhzbmFwR3JpZFtuZXh0U2xpZGUgLSAxXSAtIG5ld1Bvc2l0aW9uKSB8fCBzd2lwZXIuc3dpcGVEaXJlY3Rpb24gPT09ICduZXh0Jykge1xuICAgICAgICAgIG5ld1Bvc2l0aW9uID0gc25hcEdyaWRbbmV4dFNsaWRlXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXdQb3NpdGlvbiA9IHNuYXBHcmlkW25leHRTbGlkZSAtIDFdO1xuICAgICAgICB9XG4gICAgICAgIG5ld1Bvc2l0aW9uID0gLW5ld1Bvc2l0aW9uO1xuICAgICAgfVxuICAgICAgaWYgKG5lZWRzTG9vcEZpeCkge1xuICAgICAgICBvbmNlKCd0cmFuc2l0aW9uRW5kJywgKCkgPT4ge1xuICAgICAgICAgI
1947HN3aXBlci5sb29wRml4KCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgLy8gRml4IGR1cmF0aW9uXG4gICAgICBpZiAoc3dpcGVyLnZlbG9jaXR5ICE9PSAwKSB7XG4gICAgICAgIGlmIChydGwpIHtcbiAgICAgICAgICBtb21lbnR1bUR1cmF0aW9uID0gTWF0aC5hYnMoKC1uZXdQb3NpdGlvbiAtIHN3aXBlci50cmFuc2xhdGUpIC8gc3dpcGVyLnZlbG9jaXR5KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtb21lbnR1bUR1cmF0aW9uID0gTWF0aC5hYnMoKG5ld1Bvc2l0aW9uIC0gc3dpcGVyLnRyYW5zbGF0ZSkgLyBzd2lwZXIudmVsb2NpdHkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXJhbXMuZnJlZU1vZGUuc3RpY2t5KSB7XG4gICAgICAgICAgLy8gSWYgZnJlZU1vZGUuc3RpY2t5IGlzIGFjdGl2ZSBhbmQgdGhlIHVzZXIgZW5kcyBhIHN3aXBlIHdpdGggYSBzbG93LXZlbG9jaXR5XG4gICAgICAgICAgLy8gZXZlbnQsIHRoZW4gZHVyYXRpb25zIGNhbiBiZSAyMCsgc2Vjb25kcyB0byBzbGlkZSBvbmUgKG9yIHplcm8hKSBzbGlkZXMuXG4gICAgICAgICAgLy8gSXQncyBlYXN5IHRvIHNlZSB0aGlzIHdoZW4gc2ltdWxhdGluZyB0b3VjaCB3aXRoIG1vdXNlIGV2ZW50cy4gVG8gZml4IHRoaXMsXG4gICAgICAgICAgLy8gbGltaXQgc2luZ2xlLXNsaWRlIHN3aXBlcyB0byB0aGUgZGVmYXVsdCBzbGlkZSBkdXJhdGlvbi4gVGhpcyBhbHNvIGhhcyB0aGVcbiAgICAgICAgICAvLyBuaWNlIHNpZGUgZWZmZWN0IG9mIG1hdGNoaW5nIHNsaWRlIHNwZWVkIGlmIHRoZSB1c2VyIHN0b3BwZWQgbW92aW5nIGJlZm9yZVxuICAgICAgICAgIC8vIGxpZnRpbmcgZmluZ2VyIG9yIG1vdXNlIHZzLiBtb3Zpbmcgc2xvd2x5IGJlZm9yZSBsaWZ0aW5nIHRoZSBmaW5nZXIvbW91c2UuXG4gICAgICAgICAgLy8gRm9yIGZhc3RlciBzd2lwZXMsIGFsc28gYXBwbHkgbGltaXRzIChhbGJlaXQgaGlnaGVyIG9uZXMpLlxuICAgICAgICAgIGNvbnN0IG1vdmVEaXN0YW5jZSA9IE1hdGguYWJzKChydGwgPyAtbmV3UG9zaXRpb24gOiBuZXdQb3NpdGlvbikgLSBzd2lwZXIudHJhbnNsYXRlKTtcbiAgICAgICAgICBjb25zdCBjdXJyZW50U2xpZGVTaXplID0gc3dpcGVyLnNsaWRlc1NpemVzR3JpZFtzd2lwZXIuYWN0aXZlSW5kZXhdO1xuICAgICAgICAgIGlmIChtb3ZlRGlzdGFuY2UgPCBjdXJyZW50U2xpZGVTaXplKSB7XG4gICAgICAgICAgICBtb21lbnR1bUR1cmF0aW9uID0gcGFyYW1zLnNwZWVkO1xuICAgICAgICAgIH0gZWxzZSBpZiAobW92ZURpc3RhbmNlIDwgMiAqIGN1cnJlbnRTbGlkZVNpemUpIHtcbiAgICAgICAgICAgIG1vbWVudHVtRHVyYXRpb24gPSBwYXJhbXMuc3BlZWQgKiAxLjU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1vbWVudHVtRHVyYXRpb24gPSBwYXJhbXMuc3BlZWQgKiAyLjU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHBhcmFtcy5mcmVlTW9kZS5zdGlja3kpIHtcbiAgICAgICAgc3dpcGVyLnNsaWRlVG9DbG9zZXN0KCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChwYXJhbXMuZnJlZU1vZGUubW9tZW50dW1Cb3VuY2UgJiYgZG9Cb3VuY2UpIHtcbiAgICAgICAgc3dpcGVyLnVwZGF0ZVByb2dyZXNzKGFmdGVyQm91bmNlUG9zaXRpb24pO1xuICAgICAgICBzd2lwZXIuc2V0VHJhbnNpdGlvbihtb21lbnR1bUR1cmF0aW9uKTtcbiAgICAgICAgc3dpcGVyLnNldFRyYW5zbGF0ZShuZXdQb3NpdGlvbik7XG4gICAgICAgIHN3aXBlci50cmFuc2l0aW9uU3RhcnQodHJ1ZSwgc3dpcGVyLnN3aXBlRGlyZWN0aW9uKTtcbiAgICAgICAgc3dpcGVyLmFuaW1hdGluZyA9IHRydWU7XG4gICAgICAgIGVsZW1lbnRUcmFuc2l0aW9uRW5kKHdyYXBwZXJFbCwgKCkgPT4ge1xuICAgICAgICAgIGlmICghc3dpcGVyIHx8IHN3aXBlci5kZXN0cm95ZWQgfHwgIWRhdGEuYWxsb3dNb21lbnR1bUJvdW5jZSkgcmV0dXJuO1xuICAgICAgICAgIGVtaXQoJ21vbWVudHVtQm91bmNlJyk7XG4gICAgICAgICAgc3dpcGVyLnNldFRyYW5zaXRpb24ocGFyYW1zLnNwZWVkKTtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHN3aXBlci5zZXRUcmFuc2xhdGUoYWZ0ZXJCb3VuY2VQb3NpdGlvbik7XG4gICAgICAgICAgICBlbGVtZW50VHJhbnNpdGlvbkVuZCh3cmFwcGVyRWwsICgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFzd2lwZXIgfHwgc3dpcGVyLmRlc3Ryb3llZCkgcmV0dXJuO1xuICAgICAgICAgICAgICBzd2lwZXIudHJhbnNpdGlvbkVuZCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSwgMCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChzd2lwZXIudmVsb2NpdHkpIHtcbiAgICAgICAgZW1pdCgnX2ZyZWVNb2RlTm9Nb21lbnR1bVJlbGVhc2UnKTtcbiAgICAgICAgc3dpcGVyLnVwZGF0ZVByb2dyZXNzKG5ld1Bvc2l0aW9uKTtcbiAgICAgICAgc3dpcGVyLnNldFRyYW5zaXRpb24obW9tZW50dW1EdXJhdGlvbik7XG4gICAgICAgIHN3aXBlci5zZXRUcmFuc2xhdGUobmV3UG9zaXRpb24pO1xuICAgICAgICBzd2lwZXIudHJhbnNpdGlvblN0YXJ0KHRydWUsIHN3aXBlci5zd2lwZURpcmVjdGlvbik7XG4gICAgICAgIGlmICghc3dpcGVyLmFuaW1hdGluZykge1xuICAgICAgICAgIHN3aXBlci5hbmltYXRpbmcgPSB0cnVlO1xuICAgICAgICAgIGVsZW1lbnRUcmFuc2l0aW9uRW5kKHdyYXBwZXJFbCwgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFzd2lwZXIgfHwgc3dpcGVyLmRlc3Ryb3llZCkgcmV0dXJuO1xuICAgICAgICAgICAgc3dpcGVyLnRyYW5zaXRpb25FbmQoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3dpcGVyLnVwZGF0ZVByb2dyZXNzKG5ld1Bvc2l0aW9uKTtcbiAgICAgIH1cbiAgICAgIHN3aXBlci51cGRhdGVBY3RpdmVJbmRleCgpO1xuICAgICAgc3dpcGVyLnVwZGF0ZVNsaWRlc0NsYXNzZXMoKTtcbiAgICB9IGVsc2UgaWYgKHBhcmFtcy5mcmVlTW9kZS5zdGlja3kpIHtcbiAgICAgIHN3aXBlci5zbGlkZVRvQ2xvc2VzdCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAocGFyYW1zLmZyZWVNb2RlKSB7XG4gICAgICBlbWl0KCdfZnJlZU1vZGVOb01vbWVudHVtUmVsZWFzZScpO1xuICAgIH1cbiAgICBpZiAoIXBhcmFtcy5mcmVlTW9kZS5tb21lbnR1bSB8fCB0aW1lRGlmZiA+PSBwYXJhbXMubG9uZ1N3aXBlc01zKSB7XG4gICAgICBlbWl0KCdfZnJlZU1vZGVTdGF0aWNSZWxlYXNlJyk7XG4gICAgICBzd2lwZXIudXBkYXRlUHJvZ3Jlc3MoKTtcbiAgICAgIHN3aXBlci51cGRhdGVBY3RpdmVJbmRleCgpO1xuICAgICAgc3dpcGVyLnVwZGF0ZVNsaWRlc0NsYXNzZXMoKTtcbiAgICB9XG4gI
vendor: 7,734 bytes, lines 1947-2110
1947H1cbiAgT2JqZWN0LmFzc2lnbihzd2lwZXIsIHtcbiAgICBmcmVlTW9kZToge1xuICAgICAgb25Ub3VjaFN0YXJ0LFxuICAgICAgb25Ub3VjaE1vdmUsXG4gICAgICBvblRvdWNoRW5kXG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IHsgZnJlZU1vZGUgYXMgZGVmYXVsdCB9O1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==
1948//# sourceURL=webpack-internal:///../node_modules/swiper/modules/free-mode.mjs
1949
1950}`)},"../node_modules/swiper/modules/grid.mjs"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval(`{__webpack_require__.r(__webpack_exports__);
1951/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1952/* harmony export */   "default": () => (/* binding */ Grid)
1953/* harmony export */ });
1954function Grid(_ref) {
1955  let {
1956    swiper,
1957    extendParams,
1958    on
1959  } = _ref;
1960  extendParams({
1961    grid: {
1962      rows: 1,
1963      fill: 'column'
1964    }
1965  });
1966  let slidesNumberEvenToRows;
1967  let slidesPerRow;
1968  let numFullColumns;
1969  let wasMultiRow;
1970  const getSpaceBetween = () => {
1971    let spaceBetween = swiper.params.spaceBetween;
1972    if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {
1973      spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;
1974    } else if (typeof spaceBetween === 'string') {
1975      spaceBetween = parseFloat(spaceBetween);
1976    }
1977    return spaceBetween;
1978  };
1979  const initSlides = slides => {
1980    const {
1981      slidesPerView
1982    } = swiper.params;
1983    const {
1984      rows,
1985      fill
1986    } = swiper.params.grid;
1987    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;
1988    numFullColumns = Math.floor(slidesLength / rows);
1989    if (Math.floor(slidesLength / rows) === slidesLength / rows) {
1990      slidesNumberEvenToRows = slidesLength;
1991    } else {
1992      slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;
1993    }
1994    if (slidesPerView !== 'auto' && fill === 'row') {
1995      slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);
1996    }
1997    slidesPerRow = slidesNumberEvenToRows / rows;
1998  };
1999  const unsetSlides = () => {
2000    if (swiper.slides) {
2001      swiper.slides.forEach(slide => {
2002        if (slide.swiperSlideGridSet) {
2003          slide.style.height = '';
2004          slide.style[swiper.getDirectionLabel('margin-top')] = '';
2005        }
2006      });
2007    }
2008  };
2009  const updateSlide = (i, slide, slides) => {
2010    const {
2011      slidesPerGroup
2012    } = swiper.params;
2013    const spaceBetween = getSpaceBetween();
2014    const {
2015      rows,
2016      fill
2017    } = swiper.params.grid;
2018    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;
2019    // Set slides order
2020    let newSlideOrderIndex;
2021    let column;
2022    let row;
2023    if (fill === 'row' && slidesPerGroup > 1) {
2024      const groupIndex = Math.floor(i / (slidesPerGroup * rows));
2025      const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;
2026      const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);
2027      row = Math.floor(slideIndexInGroup / columnsInGroup);
2028      column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;
2029      newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;
2030      slide.style.order = newSlideOrderIndex;
2031    } else if (fill === 'column') {
2032      column = Math.floor(i / rows);
2033      row = i - column * rows;
2034      if (column > numFullColumns || column === numFullColumns && row === rows - 1) {
2035        row += 1;
2036        if (row >= rows) {
2037          row = 0;
2038          column += 1;
2039        }
2040      }
2041    } else {
2042      row = Math.floor(i / slidesPerRow);
2043      column = i - row * slidesPerRow;
2044    }
2045    slide.row = row;
2046    slide.column = column;
2047    slide.style.height = \`calc((100% - \${(rows - 1) * spaceBetween}px) / \${rows})\`;
2048    slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && \`\${spaceBetween}px\` : '';
2049    slide.swiperSlideGridSet = true;
2050  };
2051  const updateWrapperSize = (slideSize, snapGrid) => {
2052    const {
2053      centeredSlides,
2054      roundLengths
2055    } = swiper.params;
2056    const spaceBetween = getSpaceBetween();
2057    const {
2058      rows
2059    } = swiper.params.grid;
2060    swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;
2061    swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;
2062    if (!swiper.params.cssMode) {
2063      swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = \`\${swiper.virtualSize + spaceBetween}px\`;
2064    }
2065    if (centeredSlides) {
2066      const newSlidesGrid = [];
2067      for (let i = 0; i < snapGrid.length; i += 1) {
2068        let slidesGridItem = snapGrid[i];
2069        if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);
2070        if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);
2071      }
2072      snapGrid.splice(0, snapGrid.length);
2073      snapGrid.push(...newSlidesGrid);
2074    }
2075  };
2076  const onInit = () => {
2077    wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1;
2078  };
2079  const onUpdate = () => {
2080    const {
2081      params,
2082      el
2083    } = swiper;
2084    const isMultiRow = params.grid && params.grid.rows > 1;
2085    if (wasMultiRow && !isMultiRow) {
2086      el.classList.remove(\`\${params.containerModifierClass}grid\`, \`\${params.containerModifierClass}grid-column\`);
2087      numFullColumns = 1;
2088      swiper.emitContainerClasses();
2089    } else if (!wasMultiRow && isMultiRow) {
2090      el.classList.add(\`\${params.containerModifierClass}grid\`);
2091      if (params.grid.fill === 'column') {
2092        el.classList.add(\`\${params.containerModifierClass}grid-column\`);
2093      }
2094      swiper.emitContainerClasses();
2095    }
2096    wasMultiRow = isMultiRow;
2097  };
2098  on('init', onInit);
2099  on('update', onUpdate);
2100  swiper.grid = {
2101    initSlides,
2102    unsetSlides,
2103    updateSlide,
2104    updateWrapperSize
2105  };
2106}
2107
2108
2109//# sourceURL=[module]
2110//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9tb2R1bGVzL2dyaWQubWpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDLDBCQUEwQixRQUFRLEtBQUs7QUFDaEYseUZBQXlGLGFBQWE7QUFDdEc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQSxxRUFBcUUsa0NBQWtDO0FBQ3ZHO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixxQkFBcUI7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQSw2QkFBNkIsOEJBQThCLFVBQVUsOEJBQThCO0FBQ25HO0FBQ0E7QUFDQSxNQUFNO0FBQ04sMEJBQTBCLDhCQUE4QjtBQUN4RDtBQUNBLDRCQUE0Qiw4QkFBOEI7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFMkIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9tb2R1bGVzL2dyaWQubWpzP2UwNjIiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gR3JpZChfcmVmKSB7XG4gIGxldCB7XG4gICAgc3dpcGVyLFxuICAgIGV4dGVuZFBhcmFtcyxcbiAgICBvblxuICB9ID0gX3JlZjtcbiAgZXh0ZW5kUGFyYW1zKHtcbiAgICBncmlkOiB7XG4gICAgICByb3dzOiAxLFxuICAgICAgZmlsbDogJ2NvbHVtbidcbiAgICB9XG4gI
2110H0pO1xuICBsZXQgc2xpZGVzTnVtYmVyRXZlblRvUm93cztcbiAgbGV0IHNsaWRlc1BlclJvdztcbiAgbGV0IG51bUZ1bGxDb2x1bW5zO1xuICBsZXQgd2FzTXVsdGlSb3c7XG4gIGNvbnN0IGdldFNwYWNlQmV0d2VlbiA9ICgpID0+IHtcbiAgICBsZXQgc3BhY2VCZXR3ZWVuID0gc3dpcGVyLnBhcmFtcy5zcGFjZUJldHdlZW47XG4gICAgaWYgKHR5cGVvZiBzcGFjZUJldHdlZW4gPT09ICdzdHJpbmcnICYmIHNwYWNlQmV0d2Vlbi5pbmRleE9mKCclJykgPj0gMCkge1xuICAgICAgc3BhY2VCZXR3ZWVuID0gcGFyc2VGbG9hdChzcGFjZUJldHdlZW4ucmVwbGFjZSgnJScsICcnKSkgLyAxMDAgKiBzd2lwZXIuc2l6ZTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBzcGFjZUJldHdlZW4gPT09ICdzdHJpbmcnKSB7XG4gICAgICBzcGFjZUJldHdlZW4gPSBwYXJzZUZsb2F0KHNwYWNlQmV0d2Vlbik7XG4gICAgfVxuICAgIHJldHVybiBzcGFjZUJldHdlZW47XG4gIH07XG4gIGNvbnN0IGluaXRTbGlkZXMgPSBzbGlkZXMgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHNsaWRlc1BlclZpZXdcbiAgICB9ID0gc3dpcGVyLnBhcmFtcztcbiAgICBjb25zdCB7XG4gICAgICByb3dzLFxuICAgICAgZmlsbFxuICAgIH0gPSBzd2lwZXIucGFyYW1zLmdyaWQ7XG4gICAgY29uc3Qgc2xpZGVzTGVuZ3RoID0gc3dpcGVyLnZpcnR1YWwgJiYgc3dpcGVyLnBhcmFtcy52aXJ0dWFsLmVuYWJsZWQgPyBzd2lwZXIudmlydHVhbC5zbGlkZXMubGVuZ3RoIDogc2xpZGVzLmxlbmd0aDtcbiAgICBudW1GdWxsQ29sdW1ucyA9IE1hdGguZmxvb3Ioc2xpZGVzTGVuZ3RoIC8gcm93cyk7XG4gICAgaWYgKE1hdGguZmxvb3Ioc2xpZGVzTGVuZ3RoIC8gcm93cykgPT09IHNsaWRlc0xlbmd0aCAvIHJvd3MpIHtcbiAgICAgIHNsaWRlc051bWJlckV2ZW5Ub1Jvd3MgPSBzbGlkZXNMZW5ndGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNsaWRlc051bWJlckV2ZW5Ub1Jvd3MgPSBNYXRoLmNlaWwoc2xpZGVzTGVuZ3RoIC8gcm93cykgKiByb3dzO1xuICAgIH1cbiAgICBpZiAoc2xpZGVzUGVyVmlldyAhPT0gJ2F1dG8nICYmIGZpbGwgPT09ICdyb3cnKSB7XG4gICAgICBzbGlkZXNOdW1iZXJFdmVuVG9Sb3dzID0gTWF0aC5tYXgoc2xpZGVzTnVtYmVyRXZlblRvUm93cywgc2xpZGVzUGVyVmlldyAqIHJvd3MpO1xuICAgIH1cbiAgICBzbGlkZXNQZXJSb3cgPSBzbGlkZXNOdW1iZXJFdmVuVG9Sb3dzIC8gcm93cztcbiAgfTtcbiAgY29uc3QgdW5zZXRTbGlkZXMgPSAoKSA9PiB7XG4gICAgaWYgKHN3aXBlci5zbGlkZXMpIHtcbiAgICAgIHN3aXBlci5zbGlkZXMuZm9yRWFjaChzbGlkZSA9PiB7XG4gICAgICAgIGlmIChzbGlkZS5zd2lwZXJTbGlkZUdyaWRTZXQpIHtcbiAgICAgICAgICBzbGlkZS5zdHlsZS5oZWlnaHQgPSAnJztcbiAgICAgICAgICBzbGlkZS5zdHlsZVtzd2lwZXIuZ2V0RGlyZWN0aW9uTGFiZWwoJ21hcmdpbi10b3AnKV0gPSAnJztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuICBjb25zdCB1cGRhdGVTbGlkZSA9IChpLCBzbGlkZSwgc2xpZGVzKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgc2xpZGVzUGVyR3JvdXBcbiAgICB9ID0gc3dpcGVyLnBhcmFtcztcbiAgICBjb25zdCBzcGFjZUJldHdlZW4gPSBnZXRTcGFjZUJldHdlZW4oKTtcbiAgICBjb25zdCB7XG4gICAgICByb3dzLFxuICAgICAgZmlsbFxuICAgIH0gPSBzd2lwZXIucGFyYW1zLmdyaWQ7XG4gICAgY29uc3Qgc2xpZGVzTGVuZ3RoID0gc3dpcGVyLnZpcnR1YWwgJiYgc3dpcGVyLnBhcmFtcy52aXJ0dWFsLmVuYWJsZWQgPyBzd2lwZXIudmlydHVhbC5zbGlkZXMubGVuZ3RoIDogc2xpZGVzLmxlbmd0aDtcbiAgICAvLyBTZXQgc2xpZGVzIG9yZGVyXG4gICAgbGV0IG5ld1NsaWRlT3JkZXJJbmRleDtcbiAgICBsZXQgY29sdW1uO1xuICAgIGxldCByb3c7XG4gICAgaWYgKGZpbGwgPT09ICdyb3cnICYmIHNsaWRlc1Blckdyb3VwID4gMSkge1xuICAgICAgY29uc3QgZ3JvdXBJbmRleCA9IE1hdGguZmxvb3IoaSAvIChzbGlkZXNQZXJHcm91cCAqIHJvd3MpKTtcbiAgICAgIGNvbnN0IHNsaWRlSW5kZXhJbkdyb3VwID0gaSAtIHJvd3MgKiBzbGlkZXNQZXJHcm91cCAqIGdyb3VwSW5kZXg7XG4gICAgICBjb25zdCBjb2x1bW5zSW5Hcm91cCA9IGdyb3VwSW5kZXggPT09IDAgPyBzbGlkZXNQZXJHcm91cCA6IE1hdGgubWluKE1hdGguY2VpbCgoc2xpZGVzTGVuZ3RoIC0gZ3JvdXBJbmRleCAqIHJvd3MgKiBzbGlkZXNQZXJHcm91cCkgLyByb3dzKSwgc2xpZGVzUGVyR3JvdXApO1xuICAgICAgcm93ID0gTWF0aC5mbG9vcihzbGlkZUluZGV4SW5Hcm91cCAvIGNvbHVtbnNJbkdyb3VwKTtcbiAgICAgIGNvbHVtbiA9IHNsaWRlSW5kZXhJbkdyb3VwIC0gcm93ICogY29sdW1uc0luR3JvdXAgKyBncm91cEluZGV4ICogc2xpZGVzUGVyR3JvdXA7XG4gICAgICBuZXdTbGlkZU9yZGVySW5kZXggPSBjb2x1bW4gKyByb3cgKiBzbGlkZXNOdW1iZXJFdmVuVG9Sb3dzIC8gcm93cztcbiAgICAgIHNsaWRlLnN0eWxlLm9yZGVyID0gbmV3U2xpZGVPcmRlckluZGV4O1xuICAgIH0gZWxzZSBpZiAoZmlsbCA9PT0gJ2NvbHVtbicpIHtcbiAgICAgIGNvbHVtbiA9IE1hdGguZmxvb3IoaSAvIHJvd3MpO1xuICAgICAgcm93ID0gaSAtIGNvbHVtbiAqIHJvd3M7XG4gICAgICBpZiAoY29sdW1uID4gbnVtRnVsbENvbHVtbnMgfHwgY29sdW1uID09PSBudW1GdWxsQ29sdW1ucyAmJiByb3cgPT09IHJvd3MgLSAxKSB7XG4gICAgICAgIHJvdyArPSAxO1xuICAgICAgICBpZiAocm93ID49IHJvd3MpIHtcbiAgICAgICAgICByb3cgPSAwO1xuICAgICAgICAgIGNvbHVtbiArPSAxO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJvdyA9IE1hdGguZmxvb3IoaSAvIHNsaWRlc1BlclJvdyk7XG4gICAgICBjb2x1bW4gPSBpIC0gcm93ICogc2xpZGVzUGVyUm93O1xuICAgIH1cbiAgICBzbGlkZS5yb3cgPSByb3c7XG4gICAgc2xpZGUuY29sdW1uID0gY29sdW1uO1xuICAgIHNsaWRlLnN0eWxlLmhlaWdodCA9IGBjYWxjKCgxMDAlIC0gJHsocm93cyAtIDEpICogc3BhY2VCZXR3ZWVufXB4KSAvICR7cm93c30pYDtcbiAgICBzbGlkZS5zdHlsZVtzd2lwZXIuZ2V0RGlyZWN0aW9uTGFiZWwoJ21hcmdpbi10b3AnKV0gPSByb3cgIT09IDAgPyBzcGFj
vendor: 7,352 bytes, lines 2110-2213
2110ZUJldHdlZW4gJiYgYCR7c3BhY2VCZXR3ZWVufXB4YCA6ICcnO1xuICAgIHNsaWRlLnN3aXBlclNsaWRlR3JpZFNldCA9IHRydWU7XG4gIH07XG4gIGNvbnN0IHVwZGF0ZVdyYXBwZXJTaXplID0gKHNsaWRlU2l6ZSwgc25hcEdyaWQpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBjZW50ZXJlZFNsaWRlcyxcbiAgICAgIHJvdW5kTGVuZ3Roc1xuICAgIH0gPSBzd2lwZXIucGFyYW1zO1xuICAgIGNvbnN0IHNwYWNlQmV0d2VlbiA9IGdldFNwYWNlQmV0d2VlbigpO1xuICAgIGNvbnN0IHtcbiAgICAgIHJvd3NcbiAgICB9ID0gc3dpcGVyLnBhcmFtcy5ncmlkO1xuICAgIHN3aXBlci52aXJ0dWFsU2l6ZSA9IChzbGlkZVNpemUgKyBzcGFjZUJldHdlZW4pICogc2xpZGVzTnVtYmVyRXZlblRvUm93cztcbiAgICBzd2lwZXIudmlydHVhbFNpemUgPSBNYXRoLmNlaWwoc3dpcGVyLnZpcnR1YWxTaXplIC8gcm93cykgLSBzcGFjZUJldHdlZW47XG4gICAgaWYgKCFzd2lwZXIucGFyYW1zLmNzc01vZGUpIHtcbiAgICAgIHN3aXBlci53cmFwcGVyRWwuc3R5bGVbc3dpcGVyLmdldERpcmVjdGlvbkxhYmVsKCd3aWR0aCcpXSA9IGAke3N3aXBlci52aXJ0dWFsU2l6ZSArIHNwYWNlQmV0d2Vlbn1weGA7XG4gICAgfVxuICAgIGlmIChjZW50ZXJlZFNsaWRlcykge1xuICAgICAgY29uc3QgbmV3U2xpZGVzR3JpZCA9IFtdO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzbmFwR3JpZC5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICBsZXQgc2xpZGVzR3JpZEl0ZW0gPSBzbmFwR3JpZFtpXTtcbiAgICAgICAgaWYgKHJvdW5kTGVuZ3Rocykgc2xpZGVzR3JpZEl0ZW0gPSBNYXRoLmZsb29yKHNsaWRlc0dyaWRJdGVtKTtcbiAgICAgICAgaWYgKHNuYXBHcmlkW2ldIDwgc3dpcGVyLnZpcnR1YWxTaXplICsgc25hcEdyaWRbMF0pIG5ld1NsaWRlc0dyaWQucHVzaChzbGlkZXNHcmlkSXRlbSk7XG4gICAgICB9XG4gICAgICBzbmFwR3JpZC5zcGxpY2UoMCwgc25hcEdyaWQubGVuZ3RoKTtcbiAgICAgIHNuYXBHcmlkLnB1c2goLi4ubmV3U2xpZGVzR3JpZCk7XG4gICAgfVxuICB9O1xuICBjb25zdCBvbkluaXQgPSAoKSA9PiB7XG4gICAgd2FzTXVsdGlSb3cgPSBzd2lwZXIucGFyYW1zLmdyaWQgJiYgc3dpcGVyLnBhcmFtcy5ncmlkLnJvd3MgPiAxO1xuICB9O1xuICBjb25zdCBvblVwZGF0ZSA9ICgpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBwYXJhbXMsXG4gICAgICBlbFxuICAgIH0gPSBzd2lwZXI7XG4gICAgY29uc3QgaXNNdWx0aVJvdyA9IHBhcmFtcy5ncmlkICYmIHBhcmFtcy5ncmlkLnJvd3MgPiAxO1xuICAgIGlmICh3YXNNdWx0aVJvdyAmJiAhaXNNdWx0aVJvdykge1xuICAgICAgZWwuY2xhc3NMaXN0LnJlbW92ZShgJHtwYXJhbXMuY29udGFpbmVyTW9kaWZpZXJDbGFzc31ncmlkYCwgYCR7cGFyYW1zLmNvbnRhaW5lck1vZGlmaWVyQ2xhc3N9Z3JpZC1jb2x1bW5gKTtcbiAgICAgIG51bUZ1bGxDb2x1bW5zID0gMTtcbiAgICAgIHN3aXBlci5lbWl0Q29udGFpbmVyQ2xhc3NlcygpO1xuICAgIH0gZWxzZSBpZiAoIXdhc011bHRpUm93ICYmIGlzTXVsdGlSb3cpIHtcbiAgICAgIGVsLmNsYXNzTGlzdC5hZGQoYCR7cGFyYW1zLmNvbnRhaW5lck1vZGlmaWVyQ2xhc3N9Z3JpZGApO1xuICAgICAgaWYgKHBhcmFtcy5ncmlkLmZpbGwgPT09ICdjb2x1bW4nKSB7XG4gICAgICAgIGVsLmNsYXNzTGlzdC5hZGQoYCR7cGFyYW1zLmNvbnRhaW5lck1vZGlmaWVyQ2xhc3N9Z3JpZC1jb2x1bW5gKTtcbiAgICAgIH1cbiAgICAgIHN3aXBlci5lbWl0Q29udGFpbmVyQ2xhc3NlcygpO1xuICAgIH1cbiAgICB3YXNNdWx0aVJvdyA9IGlzTXVsdGlSb3c7XG4gIH07XG4gIG9uKCdpbml0Jywgb25Jbml0KTtcbiAgb24oJ3VwZGF0ZScsIG9uVXBkYXRlKTtcbiAgc3dpcGVyLmdyaWQgPSB7XG4gICAgaW5pdFNsaWRlcyxcbiAgICB1bnNldFNsaWRlcyxcbiAgICB1cGRhdGVTbGlkZSxcbiAgICB1cGRhdGVXcmFwcGVyU2l6ZVxuICB9O1xufVxuXG5leHBvcnQgeyBHcmlkIGFzIGRlZmF1bHQgfTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=
2111//# sourceURL=webpack-internal:///../node_modules/swiper/modules/grid.mjs
2112
2113}`)},"../node_modules/swiper/modules/hash-navigation.mjs"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval(`{__webpack_require__.r(__webpack_exports__);
2114/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2115/* harmony export */   "default": () => (/* binding */ HashNavigation)
2116/* harmony export */ });
2117/* harmony import */ var _shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/ssr-window.esm.mjs */ "../node_modules/swiper/shared/ssr-window.esm.mjs");
2118/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "../node_modules/swiper/shared/utils.mjs");
2119
2120
2121
2122function HashNavigation(_ref) {
2123  let {
2124    swiper,
2125    extendParams,
2126    emit,
2127    on
2128  } = _ref;
2129  let initialized = false;
2130  const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
2131  const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
2132  extendParams({
2133    hashNavigation: {
2134      enabled: false,
2135      replaceState: false,
2136      watchState: false,
2137      getSlideIndex(_s, hash) {
2138        if (swiper.virtual && swiper.params.virtual.enabled) {
2139          const slideWithHash = swiper.slides.find(slideEl => slideEl.getAttribute('data-hash') === hash);
2140          if (!slideWithHash) return 0;
2141          const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10);
2142          return index;
2143        }
2144        return swiper.getSlideIndex((0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(swiper.slidesEl, \`.\${swiper.params.slideClass}[data-hash="\${hash}"], swiper-slide[data-hash="\${hash}"]\`)[0]);
2145      }
2146    }
2147  });
2148  const onHashChange = () => {
2149    emit('hashChange');
2150    const newHash = document.location.hash.replace('#', '');
2151    const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(\`[data-swiper-slide-index="\${swiper.activeIndex}"]\`) : swiper.slides[swiper.activeIndex];
2152    const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : '';
2153    if (newHash !== activeSlideHash) {
2154      const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash);
2155      if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return;
2156      swiper.slideTo(newIndex);
2157    }
2158  };
2159  const setHash = () => {
2160    if (!initialized || !swiper.params.hashNavigation.enabled) return;
2161    const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(\`[data-swiper-slide-index="\${swiper.activeIndex}"]\`) : swiper.slides[swiper.activeIndex];
2162    const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : '';
2163    if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {
2164      window.history.replaceState(null, null, \`#\${activeSlideHash}\` || '');
2165      emit('hashSet');
2166    } else {
2167      document.location.hash = activeSlideHash || '';
2168      emit('hashSet');
2169    }
2170  };
2171  const init = () => {
2172    if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;
2173    initialized = true;
2174    const hash = document.location.hash.replace('#', '');
2175    if (hash) {
2176      const speed = 0;
2177      const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash);
2178      swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true);
2179    }
2180    if (swiper.params.hashNavigation.watchState) {
2181      window.addEventListener('hashchange', onHashChange);
2182    }
2183  };
2184  const destroy = () => {
2185    if (swiper.params.hashNavigation.watchState) {
2186      window.removeEventListener('hashchange', onHashChange);
2187    }
2188  };
2189  on('init', () => {
2190    if (swiper.params.hashNavigation.enabled) {
2191      init();
2192    }
2193  });
2194  on('destroy', () => {
2195    if (swiper.params.hashNavigation.enabled) {
2196      destroy();
2197    }
2198  });
2199  on('transitionEnd _freeModeNoMomentumRelease', () => {
2200    if (initialized) {
2201      setHash();
2202    }
2203  });
2204  on('slideChange', () => {
2205    if (initialized && swiper.params.cssMode) {
2206      setHash();
2207    }
2208  });
2209}
2210
2211
2212//# sourceURL=[module]
2213//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9tb2R1bGVzL2hhc2gtbmF2aWdhdGlvbi5tanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQWdGO0FBQ3JCOztBQUUzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQSxtQk
2213FBbUIsNkRBQVc7QUFDOUIsaUJBQWlCLDZEQUFTO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyxvREFBZSxzQkFBc0IseUJBQXlCLGNBQWMsS0FBSyw4QkFBOEIsS0FBSztBQUN4SjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLHVJQUF1SSxtQkFBbUI7QUFDMUo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUlBQXVJLG1CQUFtQjtBQUMxSjtBQUNBO0FBQ0Esa0RBQWtELGdCQUFnQjtBQUNsRTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVxQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvc3dpcGVyL21vZHVsZXMvaGFzaC1uYXZpZ2F0aW9uLm1qcz83YmYxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGcgYXMgZ2V0RG9jdW1lbnQsIGEgYXMgZ2V0V2luZG93IH0gZnJvbSAnLi4vc2hhcmVkL3Nzci13aW5kb3cuZXNtLm1qcyc7XG5pbXBvcnQgeyBlIGFzIGVsZW1lbnRDaGlsZHJlbiB9IGZyb20gJy4uL3NoYXJlZC91dGlscy5tanMnO1xuXG5mdW5jdGlvbiBIYXNoTmF2aWdhdGlvbihfcmVmKSB7XG4gIGxldCB7XG4gICAgc3dpcGVyLFxuICAgIGV4dGVuZFBhcmFtcyxcbiAgICBlbWl0LFxuICAgIG9uXG4gIH0gPSBfcmVmO1xuICBsZXQgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgY29uc3QgZG9jdW1lbnQgPSBnZXREb2N1bWVudCgpO1xuICBjb25zdCB3aW5kb3cgPSBnZXRXaW5kb3coKTtcbiAgZXh0ZW5kUGFyYW1zKHtcbiAgICBoYXNoTmF2aWdhdGlvbjoge1xuICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgICByZXBsYWNlU3RhdGU6IGZhbHNlLFxuICAgICAgd2F0Y2hTdGF0ZTogZmFsc2UsXG4gICAgICBnZXRTbGlkZUluZGV4KF9zLCBoYXNoKSB7XG4gICAgICAgIGlmIChzd2lwZXIudmlydHVhbCAmJiBzd2lwZXIucGFyYW1zLnZpcnR1YWwuZW5hYmxlZCkge1xuICAgICAgICAgIGNvbnN0IHNsaWRlV2l0aEhhc2ggPSBzd2lwZXIuc2xpZGVzLmZpbmQoc2xpZGVFbCA9PiBzbGlkZUVsLmdldEF0dHJpYnV0ZSgnZGF0YS1oYXNoJykgPT09IGhhc2gpO1xuICAgICAgICAgIGlmICghc2xpZGVXaXRoSGFzaCkgcmV0dXJuIDA7XG4gICAgICAgICAgY29uc3QgaW5kZXggPSBwYXJzZUludChzbGlkZVdpdGhIYXNoLmdldEF0dHJpYnV0ZSgnZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgnKSwgMTApO1xuICAgICAgICAgIHJldHVybiBpbmRleDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3dpcGVyLmdldFNsaWRlSW5kZXgoZWxlbWVudENoaWxkcmVuKHN3aXBlci5zbGlkZXNFbCwgYC4ke3N3aXBlci5wYXJhbXMuc2xpZGVDbGFzc31bZGF0YS1oYXNoPVwiJHtoYXNofVwiXSwgc3dpcGVyLXNsaWRlW2RhdGEtaGFzaD1cIiR7aGFzaH1cIl1gKVswXSk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgY29uc3Qgb25IYXNoQ2hhbmdlID0gKCkgPT4ge1xuICAgIGVtaXQoJ2hhc2hDaGFuZ2UnKTtcbiAgICBjb25zdCBuZXdIYXNoID0gZG9jdW1lbnQubG9jYXRpb24uaGFzaC5yZXBsYWNlKCcjJywgJycpO1xuICAgIGNvbnN0IGFjdGl2ZVNsaWRlRWwgPSBzd2lwZXIudmlydHVhbCAmJiBzd2lwZXIucGFyYW1zLnZpcnR1YWwuZW5hYmxlZCA/IHN3aXBlci5zbGlkZXNFbC5xdWVyeVNlbGVjdG9yKGBbZGF0YS1zd2lwZXItc2xpZGUtaW5kZXg9XCIke3N3aXBlci5hY3RpdmVJbmRleH1cIl1gKSA6IHN3aXBlci5zbGlkZXNbc3dpcGVyLmFjdGl2ZUluZGV4XTtcbiAgICBjb25zdCBhY3RpdmVTbGlkZUhhc2ggPSBhY3RpdmVTbGlkZUVsID8gYWN0aXZlU2xpZGVFbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtaGFzaCcpIDogJyc7XG4gICAgaWYgKG5ld0hhc2ggIT09IGFjdGl2ZVNsaWRlSGFzaCkge1xuICAgICAgY29uc3QgbmV3SW5kZXggPSBzd2lwZXIucGFyYW1zLmhhc2hOYXZpZ2F0aW9uLmdldFNsaWRlSW5kZXgoc3dpcGVyLCBuZXdIYXNoKTtcbiAgICAgIGlmICh0eXBlb2YgbmV3SW5kZXggPT09ICd1bmRlZmluZWQnIHx8IE51bWJlci5pc05hTihuZXdJbmRleCkpIHJldHVybjtcbiAgICAgIHN3aXBlci5zbGlkZVRvKG5ld0luZGV4KTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IHNldEhhc2ggPSAoKSA9PiB7XG4gICAgaWYgKCFpbml0aWFsaXplZCB8fCAhc3dpcGVyLnBhcmFtcy5oYXNoTmF2aWdhdGlvbi5lbmFibGVkKSByZXR1cm47XG4gICAgY29uc3QgYWN0aXZlU2xpZGVFbCA9IHN3aXBlci52aXJ0dWFsICYmIHN3aXBlci5wYXJhbXMudmlydHVhbC5lbmFibGVkID8gc3dpcGVyLnNsaWRlc0VsLnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLXN3aXBlci1zbGlkZS1pbmRleD1cIiR7c3dpcGVyLmFjdGl2ZUluZGV4fVwiXWApIDogc3dpcGVyLnNsaWRlc1tzd2lwZXIuYWN0aXZlSW5kZXhdO1xuICAgIGNvbnN0IGFjdGl2ZVNsaWRlSGFzaCA9IGFjdGl2ZVNsaWRlRWwgPyBhY3RpdmVTbGlkZUVsLmdldEF0dHJpYnV0ZSgnZGF0YS1oYXNoJykgfHwgYWN0aXZlU2xpZGVFbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtaGlzdG9yeScpIDogJyc7XG4gICAgaWYgKHN3aXBlci5wYXJhbXMuaGFzaE5hdmlnYXRpb24ucmVwbGFjZVN0YXRlICYmIHdpbmRvdy5oaXN0b3J5ICYmIHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZSkge1xuICAgICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsIG51bGwsIGAjJHthY3RpdmVTbGlkZUhhc2h9YCB8fCAnJyk7XG4gICAgICBlbWl0KCdoYXNoU2V0Jyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPSBhY3RpdmVTbGlkZUhhc2ggfHwgJyc7XG4gICAgICBlbWl0KCdoYXNoU2V0Jyk7XG4gICAgfVxuICB9O1xuICBjb25zdCBpbml0ID0gKCkgPT4ge1xuICAgIGlmICghc3dpcGVyLnBhcmFtcy5oYXNoTmF2aWdhdGlvbi5lbmFibGVkIHx8IHN3aXBlci5wYXJhbXMuaGlzdG9yeSAmJiBzd2lwZXIucGFyYW1zLmhpc3RvcnkuZW5hYmxlZCkgcmV0dXJuO1xuICAgIGluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICBjb25zdCBoYXNoID0gZG9jdW1lbnQubG9jYXRpb24uaGFzaC5yZXBsYWNlKCcjJywgJycpO1xuICAgIGlmIChoYXNoKSB7XG4gICAgICBjb25zdCBzcGVlZCA9IDA7XG4gICAgICBjb25zdCBpbmRleCA9IHN3aXBlci5wYXJhbXMuaGFzaE5hdmlnYXRpb24uZ2V0U2xpZGVJbmRleChzd2lwZXIsIGhhc2gpO1xuICAgICAgc3dpcGVyLnNsaWRlVG8oaW5kZXggfHwgMCwgc3BlZWQsIHN3aXBlci5wYXJhbXMucnVuQ2FsbGJhY2tzT25Jbml0LCB0cnVlKTtcbiAgICB9XG4gICAgaWYgKHN3aXBlci5wYXJhbXMuaGFzaE5hdmlnYXRpb24ud2F0Y2hTdGF0ZSkge1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2hhc2hjaGFuZ2UnLCBvbkhhc2hDaGFuZ2UpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgZGVzdHJveSA9ICgpID0+IHtcbiAgICBpZiAoc3dpcGVyLnBhcmFtcy5oYXNoTmF2aWdhdGlvbi53YXRjaFN0YXRl
vendor: 9,246 bytes, lines 2213-2364
2213KSB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignaGFzaGNoYW5nZScsIG9uSGFzaENoYW5nZSk7XG4gICAgfVxuICB9O1xuICBvbignaW5pdCcsICgpID0+IHtcbiAgICBpZiAoc3dpcGVyLnBhcmFtcy5oYXNoTmF2aWdhdGlvbi5lbmFibGVkKSB7XG4gICAgICBpbml0KCk7XG4gICAgfVxuICB9KTtcbiAgb24oJ2Rlc3Ryb3knLCAoKSA9PiB7XG4gICAgaWYgKHN3aXBlci5wYXJhbXMuaGFzaE5hdmlnYXRpb24uZW5hYmxlZCkge1xuICAgICAgZGVzdHJveSgpO1xuICAgIH1cbiAgfSk7XG4gIG9uKCd0cmFuc2l0aW9uRW5kIF9mcmVlTW9kZU5vTW9tZW50dW1SZWxlYXNlJywgKCkgPT4ge1xuICAgIGlmIChpbml0aWFsaXplZCkge1xuICAgICAgc2V0SGFzaCgpO1xuICAgIH1cbiAgfSk7XG4gIG9uKCdzbGlkZUNoYW5nZScsICgpID0+IHtcbiAgICBpZiAoaW5pdGlhbGl6ZWQgJiYgc3dpcGVyLnBhcmFtcy5jc3NNb2RlKSB7XG4gICAgICBzZXRIYXNoKCk7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IHsgSGFzaE5hdmlnYXRpb24gYXMgZGVmYXVsdCB9O1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==
2214//# sourceURL=webpack-internal:///../node_modules/swiper/modules/hash-navigation.mjs
2215
2216}`)},"../node_modules/swiper/modules/history.mjs"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval(`{__webpack_require__.r(__webpack_exports__);
2217/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2218/* harmony export */   "default": () => (/* binding */ History)
2219/* harmony export */ });
2220/* harmony import */ var _shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/ssr-window.esm.mjs */ "../node_modules/swiper/shared/ssr-window.esm.mjs");
2221
2222
2223function History(_ref) {
2224  let {
2225    swiper,
2226    extendParams,
2227    on
2228  } = _ref;
2229  extendParams({
2230    history: {
2231      enabled: false,
2232      root: '',
2233      replaceState: false,
2234      key: 'slides',
2235      keepQuery: false
2236    }
2237  });
2238  let initialized = false;
2239  let paths = {};
2240  const slugify = text => {
2241    return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');
2242  };
2243  const getPathValues = urlOverride => {
2244    const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
2245    let location;
2246    if (urlOverride) {
2247      location = new URL(urlOverride);
2248    } else {
2249      location = window.location;
2250    }
2251    const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');
2252    const total = pathArray.length;
2253    const key = pathArray[total - 2];
2254    const value = pathArray[total - 1];
2255    return {
2256      key,
2257      value
2258    };
2259  };
2260  const setHistory = (key, index) => {
2261    const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
2262    if (!initialized || !swiper.params.history.enabled) return;
2263    let location;
2264    if (swiper.params.url) {
2265      location = new URL(swiper.params.url);
2266    } else {
2267      location = window.location;
2268    }
2269    const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(\`[data-swiper-slide-index="\${index}"]\`) : swiper.slides[index];
2270    let value = slugify(slide.getAttribute('data-history'));
2271    if (swiper.params.history.root.length > 0) {
2272      let root = swiper.params.history.root;
2273      if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);
2274      value = \`\${root}/\${key ? \`\${key}/\` : ''}\${value}\`;
2275    } else if (!location.pathname.includes(key)) {
2276      value = \`\${key ? \`\${key}/\` : ''}\${value}\`;
2277    }
2278    if (swiper.params.history.keepQuery) {
2279      value += location.search;
2280    }
2281    const currentState = window.history.state;
2282    if (currentState && currentState.value === value) {
2283      return;
2284    }
2285    if (swiper.params.history.replaceState) {
2286      window.history.replaceState({
2287        value
2288      }, null, value);
2289    } else {
2290      window.history.pushState({
2291        value
2292      }, null, value);
2293    }
2294  };
2295  const scrollToSlide = (speed, value, runCallbacks) => {
2296    if (value) {
2297      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {
2298        const slide = swiper.slides[i];
2299        const slideHistory = slugify(slide.getAttribute('data-history'));
2300        if (slideHistory === value) {
2301          const index = swiper.getSlideIndex(slide);
2302          swiper.slideTo(index, speed, runCallbacks);
2303        }
2304      }
2305    } else {
2306      swiper.slideTo(0, speed, runCallbacks);
2307    }
2308  };
2309  const setHistoryPopState = () => {
2310    paths = getPathValues(swiper.params.url);
2311    scrollToSlide(swiper.params.speed, paths.value, false);
2312  };
2313  const init = () => {
2314    const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
2315    if (!swiper.params.history) return;
2316    if (!window.history || !window.history.pushState) {
2317      swiper.params.history.enabled = false;
2318      swiper.params.hashNavigation.enabled = true;
2319      return;
2320    }
2321    initialized = true;
2322    paths = getPathValues(swiper.params.url);
2323    if (!paths.key && !paths.value) {
2324      if (!swiper.params.history.replaceState) {
2325        window.addEventListener('popstate', setHistoryPopState);
2326      }
2327      return;
2328    }
2329    scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);
2330    if (!swiper.params.history.replaceState) {
2331      window.addEventListener('popstate', setHistoryPopState);
2332    }
2333  };
2334  const destroy = () => {
2335    const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
2336    if (!swiper.params.history.replaceState) {
2337      window.removeEventListener('popstate', setHistoryPopState);
2338    }
2339  };
2340  on('init', () => {
2341    if (swiper.params.history.enabled) {
2342      init();
2343    }
2344  });
2345  on('destroy', () => {
2346    if (swiper.params.history.enabled) {
2347      destroy();
2348    }
2349  });
2350  on('transitionEnd _freeModeNoMomentumRelease', () => {
2351    if (initialized) {
2352      setHistory(swiper.params.history.key, swiper.activeIndex);
2353    }
2354  });
2355  on('slideChange', () => {
2356    if (initialized && swiper.params.cssMode) {
2357      setHistory(swiper.params.history.key, swiper.activeIndex);
2358    }
2359  });
2360}
2361
2362
2363//# sourceURL=[module]
2364//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9tb2R1bGVzL2hpc3RvcnkubWpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQThEOztBQUU5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLDZEQUFTO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsNkRBQVM7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBLCtIQUErSCxNQUFNO0FBQ3JJO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLEtBQUssR0FBRyxTQUFTLElBQUksUUFBUSxFQUFFLE1BQU07QUFDdEQsTUFBTTtBQUNOLGlCQUFpQixTQUFTLElBQUksUUFBUSxFQUFFLE1BQU07QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxNQUFNO0FBQ047QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFEQUFxRCxZQUFZO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsNkRBQVM7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQiw2REFBUztBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUU4QiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvc3dpcGVyL21vZHVsZXMvaGlzdG9yeS5tanM/NzUxMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhIGFzIGdldFdpbmRvdyB9IGZyb20gJy4uL3NoYXJlZC9zc3Itd2luZG93LmVzbS5tanMnO1xuXG5mdW5jdGlvbiBIaXN0b3J5KF9yZWYpIHtcbiAgbGV0IHtcbiAgICBzd2lwZXIsXG4gICAgZXh0ZW5kUGFyYW1zLFxuICAgIG9uXG4gIH0gPSBfcmVmO1xuICBleHRlbmRQYXJhbXMoe1xuICAgIGhpc3Rvcnk6IHtcbiAgICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgICAgcm9vdDogJycsXG4gICAgICByZXBsYWNlU3RhdGU6IGZhbHNlLFxuICAgICAga2V5OiAnc2xpZGVzJyxcbiAgICAgIGtlZXBRdWVyeTogZmFsc2VcbiAgICB9XG4gIH0pO1xuICBsZXQgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgbGV0IHBhdGhzID0ge307XG4gIGNvbnN0IHNsdWdpZnkgPSB0ZXh0ID0+IHtcbiAgICByZXR1cm4gdGV4dC50b1N0cmluZygpLnJlcGxhY2UoL1xccysvZywgJy0nKS5yZXBsYWNlKC9bXlxcdy1dKy9nLCAnJykucmVwbGFjZSgvLS0rL2csICctJykucmVwbGFjZSgvXi0rLywgJycpLnJlcGxhY2UoLy0rJC8sICcnKTtcbiAgfTtcbiAgY29uc3QgZ2V0UGF0aFZhbHVlcyA9IHVybE92ZXJyaWRlID0+IHtcbiAgICBjb25zdCB3aW5kb3cgPSBnZXRXaW5kb3coKTtcbiAgICBsZXQgbG9jYXRpb247XG4gICAgaWYgKHVybE92ZXJyaWRlKSB7XG4gICAgICBsb2NhdGlvbiA9IG5ldyBVUkwodXJsT3ZlcnJpZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2NhdGlvbiA9IHdpbmRvdy5sb2NhdGlvbjtcbiAgICB9XG4gICAgY29uc3QgcGF0aEFycmF5ID0gbG9jYXRpb24ucGF0aG5hbWUuc2xpY2UoMSkuc3BsaXQoJy8nKS5maWx0ZXIocGFydCA9PiBwYXJ0ICE9PSAnJyk7XG4gICAgY29uc3QgdG90YWwgPSBwYXRoQXJyYXkubGVuZ3RoO1xuICAgIGNvbnN0IGtleSA9IHBhdGhBcnJheVt0b3RhbCAtIDJdO1xuICAgIGNvbnN0IHZhbHVlID0gcGF0aEFycmF5W3RvdGFsIC0gMV07XG4gICAgcmV0dXJuIHtcbiAgICAgIGtleSxcbiAgICAgIHZhbHVlXG4gICAgfTtcbiAgfTtcbiAgY29uc3Qgc2V0SGlzdG9yeSA9IChrZXksIGluZGV4KSA9PiB7XG4gICAgY29uc3Qgd2luZG93ID0gZ2V0V2luZG93KCk7XG4gICAgaWYgKCFpbml0aWFsaXplZCB8fCAhc3dpcGVyLnBhcmFtcy5oaXN0b3J5LmVuYWJsZWQpIHJldHVybjtcbiAgICBsZXQgbG9jYXRpb247XG4gICAgaWYgKHN3aXBlci5wYXJhbXMudXJsKSB7XG4gICAgICBsb2NhdGlvbiA9IG5ldyBVUkwoc3dpcGVyLnBhcmFtcy51cmwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2NhdGlvbiA9IHdpbmRvdy5sb2NhdGlvbjtcbiAgICB9XG4gICAgY29uc3Qgc2xpZGUgPSBzd2lwZXIudmlydHVhbCAmJiBzd2lwZXIucGFyYW1zLnZpcnR1YWwuZW5hYmxlZCA/IHN3aXBlci5zbGlkZXNFbC5
2364xdWVyeVNlbGVjdG9yKGBbZGF0YS1zd2lwZXItc2xpZGUtaW5kZXg9XCIke2luZGV4fVwiXWApIDogc3dpcGVyLnNsaWRlc1tpbmRleF07XG4gICAgbGV0IHZhbHVlID0gc2x1Z2lmeShzbGlkZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtaGlzdG9yeScpKTtcbiAgICBpZiAoc3dpcGVyLnBhcmFtcy5oaXN0b3J5LnJvb3QubGVuZ3RoID4gMCkge1xuICAgICAgbGV0IHJvb3QgPSBzd2lwZXIucGFyYW1zLmhpc3Rvcnkucm9vdDtcbiAgICAgIGlmIChyb290W3Jvb3QubGVuZ3RoIC0gMV0gPT09ICcvJykgcm9vdCA9IHJvb3Quc2xpY2UoMCwgcm9vdC5sZW5ndGggLSAxKTtcbiAgICAgIHZhbHVlID0gYCR7cm9vdH0vJHtrZXkgPyBgJHtrZXl9L2AgOiAnJ30ke3ZhbHVlfWA7XG4gICAgfSBlbHNlIGlmICghbG9jYXRpb24ucGF0aG5hbWUuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgdmFsdWUgPSBgJHtrZXkgPyBgJHtrZXl9L2AgOiAnJ30ke3ZhbHVlfWA7XG4gICAgfVxuICAgIGlmIChzd2lwZXIucGFyYW1zLmhpc3Rvcnkua2VlcFF1ZXJ5KSB7XG4gICAgICB2YWx1ZSArPSBsb2NhdGlvbi5zZWFyY2g7XG4gICAgfVxuICAgIGNvbnN0IGN1cnJlbnRTdGF0ZSA9IHdpbmRvdy5oaXN0b3J5LnN0YXRlO1xuICAgIGlmIChjdXJyZW50U3RhdGUgJiYgY3VycmVudFN0YXRlLnZhbHVlID09PSB2YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoc3dpcGVyLnBhcmFtcy5oaXN0b3J5LnJlcGxhY2VTdGF0ZSkge1xuICAgICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKHtcbiAgICAgICAgdmFsdWVcbiAgICAgIH0sIG51bGwsIHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKHtcbiAgICAgICAgdmFsdWVcbiAgICAgIH0sIG51bGwsIHZhbHVlKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IHNjcm9sbFRvU2xpZGUgPSAoc3BlZWQsIHZhbHVlLCBydW5DYWxsYmFja3MpID0+IHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwLCBsZW5ndGggPSBzd2lwZXIuc2xpZGVzLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIGNvbnN0IHNsaWRlID0gc3dpcGVyLnNsaWRlc1tpXTtcbiAgICAgICAgY29uc3Qgc2xpZGVIaXN0b3J5ID0gc2x1Z2lmeShzbGlkZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtaGlzdG9yeScpKTtcbiAgICAgICAgaWYgKHNsaWRlSGlzdG9yeSA9PT0gdmFsdWUpIHtcbiAgICAgICAgICBjb25zdCBpbmRleCA9IHN3aXBlci5nZXRTbGlkZUluZGV4KHNsaWRlKTtcbiAgICAgICAgICBzd2lwZXIuc2xpZGVUbyhpbmRleCwgc3BlZWQsIHJ1bkNhbGxiYWNrcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc3dpcGVyLnNsaWRlVG8oMCwgc3BlZWQsIHJ1bkNhbGxiYWNrcyk7XG4gICAgfVxuICB9O1xuICBjb25zdCBzZXRIaXN0b3J5UG9wU3RhdGUgPSAoKSA9PiB7XG4gICAgcGF0aHMgPSBnZXRQYXRoVmFsdWVzKHN3aXBlci5wYXJhbXMudXJsKTtcbiAgICBzY3JvbGxUb1NsaWRlKHN3aXBlci5wYXJhbXMuc3BlZWQsIHBhdGhzLnZhbHVlLCBmYWxzZSk7XG4gIH07XG4gIGNvbnN0IGluaXQgPSAoKSA9PiB7XG4gICAgY29uc3Qgd2luZG93ID0gZ2V0V2luZG93KCk7XG4gICAgaWYgKCFzd2lwZXIucGFyYW1zLmhpc3RvcnkpIHJldHVybjtcbiAgICBpZiAoIXdpbmRvdy5oaXN0b3J5IHx8ICF3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUpIHtcbiAgICAgIHN3aXBlci5wYXJhbXMuaGlzdG9yeS5lbmFibGVkID0gZmFsc2U7XG4gICAgICBzd2lwZXIucGFyYW1zLmhhc2hOYXZpZ2F0aW9uLmVuYWJsZWQgPSB0cnVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpbml0aWFsaXplZCA9IHRydWU7XG4gICAgcGF0aHMgPSBnZXRQYXRoVmFsdWVzKHN3aXBlci5wYXJhbXMudXJsKTtcbiAgICBpZiAoIXBhdGhzLmtleSAmJiAhcGF0aHMudmFsdWUpIHtcbiAgICAgIGlmICghc3dpcGVyLnBhcmFtcy5oaXN0b3J5LnJlcGxhY2VTdGF0ZSkge1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncG9wc3RhdGUnLCBzZXRIaXN0b3J5UG9wU3RhdGUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzY3JvbGxUb1NsaWRlKDAsIHBhdGhzLnZhbHVlLCBzd2lwZXIucGFyYW1zLnJ1bkNhbGxiYWNrc09uSW5pdCk7XG4gICAgaWYgKCFzd2lwZXIucGFyYW1zLmhpc3RvcnkucmVwbGFjZVN0YXRlKSB7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncG9wc3RhdGUnLCBzZXRIaXN0b3J5UG9wU3RhdGUpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgZGVzdHJveSA9ICgpID0+IHtcbiAgICBjb25zdCB3aW5kb3cgPSBnZXRXaW5kb3coKTtcbiAgICBpZiAoIXN3aXBlci5wYXJhbXMuaGlzdG9yeS5yZXBsYWNlU3RhdGUpIHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdwb3BzdGF0ZScsIHNldEhpc3RvcnlQb3BTdGF0ZSk7XG4gICAgfVxuICB9O1xuICBvbignaW5pdCcsICgpID0+IHtcbiAgICBpZiAoc3dpcGVyLnBhcmFtcy5oaXN0b3J5LmVuYWJsZWQpIHtcbiAgICAgIGluaXQoKTtcbiAgICB9XG4gIH0pO1xuICBvbignZGVzdHJveScsICgpID0+IHtcbiAgICBpZiAoc3dpcGVyLnBhcmFtcy5oaXN0b3J5LmVuYWJsZWQpIHtcbiAgICAgIGRlc3Ryb3koKTtcbiAgICB9XG4gIH0pO1xuICBvbigndHJhbnNpdGlvbkVuZCBfZnJlZU1vZGVOb01vbWVudHVtUmVsZWFzZScsICgpID0+IHtcbiAgICBpZiAoaW5pdGlhbGl6ZWQpIHtcbiAgICAgIHNldEhpc3Rvcnkoc3dpcGVyLnBhcmFtcy5oaXN0b3J5LmtleSwgc3dpcGVyLmFjdGl2ZUluZGV4KTtcbiAgICB9XG4gIH0pO1xuICBvbignc2xpZGVDaGFuZ2UnLCAoKSA9PiB7XG4gICAgaWYgKGluaXRpYWxpemVkICYmIHN3aXBlci5wYXJhbXMuY3NzTW9kZSkge1xuICAgICAgc2V0SGlzdG9yeShzd2lwZXIucGFyYW1zLmhpc3Rvcnkua2V5LCBzd2lwZXIuYWN0aXZlSW5kZXgpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCB7IEhpc3RvcnkgYXMgZGVmYXVsdCB9O1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==
2365//# sourceURL=webpack-internal:///../node_modules/swiper/modules/history.mjs
2366
2367}`)},"../node_modules/swiper/modules/index.mjs"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval(`{__webpack_require__.r(__webpack_exports__);
2368/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2369/* harmony export */   A11y: () => (/* reexport safe */ _a11y_mjs__WEBPACK_IMPORTED_MODULE_9__["default"]),
2370/* harmony export */   Autoplay: () => (/* reexport safe */ _autoplay_mjs__WEBPACK_IMPORTED_MODULE_12__["default"]),
2371/* harmony export */   Controller: () => (/* reexport safe */ _controller_mjs__WEBPACK_IMPORTED_MODULE_8__["default"]),
2372/* harmony export */   EffectCards: () => (/* reexport safe */ _effect_cards_mjs__WEBPACK_IMPORTED_MODULE_22__["default"]),
2373/* harmony export */   EffectCoverflow: () => (/* reexport safe */ _effect_coverflow_mjs__WEBPACK_IMPORTED_MODULE_20__["default"]),
2374/* harmony export */   EffectCreative: () => (/* reexport safe */ _effect_creative_mjs__WEBPACK_IMPORTED_MODULE_21__["default"]),
2375/* harmony export */   EffectCube: () => (/* reexport safe */ _effect_cube_mjs__WEBPACK_IMPORTED_MODULE_18__["default"]),
2376/* harmony export */   EffectFade: () => (/* reexport safe */ _effect_fade_mjs__WEBPACK_IMPORTED_MODULE_17__["default"]),
2377/* harmony export */   EffectFlip: () => (/* reexport safe */ _effect_flip_mjs__WEBPACK_IMPORTED_MODULE_19__["default"]),
2378/* harmony export */   FreeMode: () => (/* reexport safe */ _free_mode_mjs__WEBPACK_IMPORTED_MODULE_14__["default"]),
2379/* harmony export */   Grid: () => (/* reexport safe */ _grid_mjs__WEBPACK_IMPORTED_MODULE_15__["default"]),
2380/* harmony export */   HashNavigation: () => (/* reexport safe */ _hash_navigation_mjs__WEBPACK_IMPORTED_MODULE_11__["default"]),
2381/* harmony export */   History: () => (/* reexport safe */ _history_mjs__WEBPACK_IMPORTED_MODULE_10__["default"]),
2382/* harmony export */   Keyboard: () => (/* reexport safe */ _keyboard_mjs__WEBPACK_IMPORTED_MODULE_1__["default"]),
2383/* harmony export */   Manipulation: () => (/* reexport safe */ _manipulation_mjs__WEBPACK_IMPORTED_MODULE_16__["default"]),
2384/* harmony export */   Mousewheel: () => (/* reexport safe */ _mousewheel_mjs__WEBPACK_IMPORTED_MODULE_2__["default"]),
2385/* harmony export */   Navigation: () => (/* reexport safe */ _navigation_mjs__WEBPACK_IMPORTED_MODULE_3__["default"]),
2386/* harmony export */   Pagination: () => (/* reexport safe */ _pagination_mjs__WEBPACK_IMPORTED_MODULE_4__["default"]),
2387/* harmony export */   Parallax: () => (/* reexport safe */ _parallax_mjs__WEBPACK_IMPORTED_MODULE_6__["default"]),
2388/* harmony export */   Scrollbar: () => (/* reexport safe */ _scrollbar_mjs__WEBPACK_IMPORTED_MODULE_5__["default"]),
2389/* harmony export */   Thumbs: () => (/* reexport safe */ _thumbs_mjs__WEBPACK_IMPORTED_MODULE_13__["default"]),
2390/* harmony export */   Virtual: () => (/* reexport safe */ _virtual_mjs__WEBPACK_IMPORTED_MODULE_0__["default"]),
2391/* harmony export */   Zoom: () => (/* reexport safe */ _zoom_mjs__WEBPACK_IMPORTED_MODULE_7__["default"])
2392/* harmony export */ });
2393/* harmony import */ var _virtual_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./virtual.mjs */ "../node_modules/swiper/modules/virtual.mjs");
2394/* harmony import */ var _keyboard_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./keyboard.mjs */ "../node_modules/swiper/modules/keyboard.mjs");
2395/* harmony import */ var _mousewheel_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mousewheel.mjs */ "../node_modules/swiper/modules/mousewheel.mjs");
2396/* harmony import */ var _navigation_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./navigation.mjs */ "../node_modules/swiper/modules/navigation.mjs");
2397/* harmony import */ var _pagination_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./pagination.mjs */ "../node_modules/swiper/modules/pagination.mjs");
2398/* harmony import */ var _scrollbar_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./scrollbar.mjs */ "../node_modules/swiper/modules/scrollbar.mjs");
2399/* harmony import */ var _parallax_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./parallax.mjs */ "../node_modules/swiper/modules/parallax.mjs");
2400/* harmony import */ var _zoom_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./zoom.mjs */ "../node_modules/swiper/modules/zoom.mjs");
2401/* harmony import */ var _controller_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./controller.mjs */ "../node_modules/swiper/modules/controller.mjs");
2402/* harmony import */ var _a11y_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./a11y.mjs */ "../node_modules/swiper/modules/a11y.mjs");
2403/* harmony import */ var _history_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./history.mjs */ "../node_modules/swiper/modules/history.mjs");
2404/* harmony import */ var _hash_navigation_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./hash-navigation.mjs */ "../node_modules/swiper/modules/hash-navigation.mjs");
2405/* harmony import */ var _autoplay_mjs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./autoplay.mjs */ "../node_modules/swiper/modules/autoplay.mjs");
2406/* harmony import */ var _thumbs_mjs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./thumbs.mjs */ "../node_modules/swiper/modules/thumbs.mjs");
2407/* harmony import */ var _free_mode_mjs__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./free-mode.mjs */ "../node_modules/swiper/modules/free-mode.mjs");
2408/* harmony import */ var _grid_mjs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./grid.mjs */ "../node_modules/swiper/modules/grid.mjs");
2409/* harmony import */ var _manipulation_mjs__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./manipulation.mjs */ "../node_modules/swiper/modules/manipulation.mjs");
2410/* harmony import */ var _effect_fade_mjs__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./effect-fade.mjs */ "../node_modules/swiper/modules/effect-fade.mjs");
2411/* harmony import */ var _effect_cube_mjs__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./effect-cube.mjs */ "../node_modules/swiper/modules/effect-cube.mjs");
2412/* harmony import */ var _effect_flip_mjs__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./effect-flip.mjs */ "../node_modules/swiper/modules/effect-flip.mjs");
2413/* harmony import */ var _effect_coverflow_mjs__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./effect-coverflow.mjs */ "../node_modules/swiper/modules/effect-coverflow.mjs");
2414/* harmony import */ var _effect_creative_mjs__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./effect-creative.mjs */ "../node_modules/swiper/modules/effect-creative.mjs");
2415/* harmony import */ var _effect_cards_mjs__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./effect-cards.mjs */ "../node_modules/swiper/modules/effect-cards.mjs");
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438//# sourceURL=[module]
2439//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9tb2R1bGVzL2luZGV4Lm1qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQWlEO0FBQ0U7QUFDSTtBQUNBO0FBQ0E7QUFDRjtBQUNGO0FBQ1I7QU
vendor: 4,600 bytes, lines 2439-2500
2439FDWTtBQUNaO0FBQ007QUFDZTtBQUNiO0FBQ0o7QUFDSztBQUNUO0FBQ2dCO0FBQ0g7QUFDQTtBQUNBO0FBQ1U7QUFDRiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvc3dpcGVyL21vZHVsZXMvaW5kZXgubWpzPzZhYjkiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtkZWZhdWx0IGFzIFZpcnR1YWx9IGZyb20gJy4vdmlydHVhbC5tanMnO1xuZXhwb3J0IHtkZWZhdWx0IGFzIEtleWJvYXJkfSBmcm9tICcuL2tleWJvYXJkLm1qcyc7XG5leHBvcnQge2RlZmF1bHQgYXMgTW91c2V3aGVlbH0gZnJvbSAnLi9tb3VzZXdoZWVsLm1qcyc7XG5leHBvcnQge2RlZmF1bHQgYXMgTmF2aWdhdGlvbn0gZnJvbSAnLi9uYXZpZ2F0aW9uLm1qcyc7XG5leHBvcnQge2RlZmF1bHQgYXMgUGFnaW5hdGlvbn0gZnJvbSAnLi9wYWdpbmF0aW9uLm1qcyc7XG5leHBvcnQge2RlZmF1bHQgYXMgU2Nyb2xsYmFyfSBmcm9tICcuL3Njcm9sbGJhci5tanMnO1xuZXhwb3J0IHtkZWZhdWx0IGFzIFBhcmFsbGF4fSBmcm9tICcuL3BhcmFsbGF4Lm1qcyc7XG5leHBvcnQge2RlZmF1bHQgYXMgWm9vbX0gZnJvbSAnLi96b29tLm1qcyc7XG5leHBvcnQge2RlZmF1bHQgYXMgQ29udHJvbGxlcn0gZnJvbSAnLi9jb250cm9sbGVyLm1qcyc7XG5leHBvcnQge2RlZmF1bHQgYXMgQTExeX0gZnJvbSAnLi9hMTF5Lm1qcyc7XG5leHBvcnQge2RlZmF1bHQgYXMgSGlzdG9yeX0gZnJvbSAnLi9oaXN0b3J5Lm1qcyc7XG5leHBvcnQge2RlZmF1bHQgYXMgSGFzaE5hdmlnYXRpb259IGZyb20gJy4vaGFzaC1uYXZpZ2F0aW9uLm1qcyc7XG5leHBvcnQge2RlZmF1bHQgYXMgQXV0b3BsYXl9IGZyb20gJy4vYXV0b3BsYXkubWpzJztcbmV4cG9ydCB7ZGVmYXVsdCBhcyBUaHVtYnN9IGZyb20gJy4vdGh1bWJzLm1qcyc7XG5leHBvcnQge2RlZmF1bHQgYXMgRnJlZU1vZGV9IGZyb20gJy4vZnJlZS1tb2RlLm1qcyc7XG5leHBvcnQge2RlZmF1bHQgYXMgR3JpZH0gZnJvbSAnLi9ncmlkLm1qcyc7XG5leHBvcnQge2RlZmF1bHQgYXMgTWFuaXB1bGF0aW9ufSBmcm9tICcuL21hbmlwdWxhdGlvbi5tanMnO1xuZXhwb3J0IHtkZWZhdWx0IGFzIEVmZmVjdEZhZGV9IGZyb20gJy4vZWZmZWN0LWZhZGUubWpzJztcbmV4cG9ydCB7ZGVmYXVsdCBhcyBFZmZlY3RDdWJlfSBmcm9tICcuL2VmZmVjdC1jdWJlLm1qcyc7XG5leHBvcnQge2RlZmF1bHQgYXMgRWZmZWN0RmxpcH0gZnJvbSAnLi9lZmZlY3QtZmxpcC5tanMnO1xuZXhwb3J0IHtkZWZhdWx0IGFzIEVmZmVjdENvdmVyZmxvd30gZnJvbSAnLi9lZmZlY3QtY292ZXJmbG93Lm1qcyc7XG5leHBvcnQge2RlZmF1bHQgYXMgRWZmZWN0Q3JlYXRpdmV9IGZyb20gJy4vZWZmZWN0LWNyZWF0aXZlLm1qcyc7XG5leHBvcnQge2RlZmF1bHQgYXMgRWZmZWN0Q2FyZHN9IGZyb20gJy4vZWZmZWN0LWNhcmRzLm1qcyc7Il0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==
2440//# sourceURL=webpack-internal:///../node_modules/swiper/modules/index.mjs
2441
2442}`)},"../node_modules/swiper/modules/keyboard.mjs"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval(`{__webpack_require__.r(__webpack_exports__);
2443/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2444/* harmony export */   "default": () => (/* binding */ Keyboard)
2445/* harmony export */ });
2446/* harmony import */ var _shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/ssr-window.esm.mjs */ "../node_modules/swiper/shared/ssr-window.esm.mjs");
2447/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "../node_modules/swiper/shared/utils.mjs");
2448
2449
2450
2451/* eslint-disable consistent-return */
2452function Keyboard(_ref) {
2453  let {
2454    swiper,
2455    extendParams,
2456    on,
2457    emit
2458  } = _ref;
2459  const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
2460  const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
2461  swiper.keyboard = {
2462    enabled: false
2463  };
2464  extendParams({
2465    keyboard: {
2466      enabled: false,
2467      onlyInViewport: true,
2468      pageUpDown: true
2469    }
2470  });
2471  function handle(event) {
2472    if (!swiper.enabled) return;
2473    const {
2474      rtlTranslate: rtl
2475    } = swiper;
2476    let e = event;
2477    if (e.originalEvent) e = e.originalEvent; // jquery fix
2478    const kc = e.keyCode || e.charCode;
2479    const pageUpDown = swiper.params.keyboard.pageUpDown;
2480    const isPageUp = pageUpDown && kc === 33;
2481    const isPageDown = pageUpDown && kc === 34;
2482    const isArrowLeft = kc === 37;
2483    const isArrowRight = kc === 39;
2484    const isArrowUp = kc === 38;
2485    const isArrowDown = kc === 40;
2486    // Directions locks
2487    if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {
2488      return false;
2489    }
2490    if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {
2491      return false;
2492    }
2493    if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {
2494      return undefined;
2495    }
2496    if (document.activeElement && (document.activeElement.isContentEditable || document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea'))) {
2497      return undefined;
2498    }
2499    if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {
2500      let inView = false;
2501      // Check that swiper should be inside of visible area of window
2502      if ((0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.b)(swiper.el, \`.\${swiper.params.slideClass}, swiper-slide\`).length > 0 && (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.b)(swiper.el, \`.\${swiper.params.slideActiveClass}\`).length === 0) {
2503        return undefined;
2504      }
2505      const el = swiper.el;
2506      const swiperWidth = el.clientWidth;
2507      const swiperHeight = el.clientHeight;
2508      const windowWidth = window.innerWidth;
2509      const windowHeight = window.innerHeight;
2510      const swiperOffset = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)(el);
2511      if (rtl) swiperOffset.left -= el.scrollLeft;
2512      const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];
2513      for (let i = 0; i < swiperCoord.length; i += 1) {
2514        const point = swiperCoord[i];
2515        if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {
2516          if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line
2517          inView = true;
2518        }
2519      }
2520      if (!inView) return undefined;
2521    }
2522    if (swiper.isHorizontal()) {
2523      if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {
2524        if (e.preventDefault) e.preventDefault();else e.returnValue = false;
2525      }
2526      if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();
2527      if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();
2528    } else {
2529      if (isPageUp || isPageDown || isArrowUp || isArrowDown) {
2530        if (e.preventDefault) e.preventDefault();else e.returnValue = false;
2531      }
2532      if (isPageDown || isArrowDown) swiper.slideNext();
2533      if (isPageUp || isArrowUp) swiper.slidePrev();
2534    }
2535    emit('keyPress', kc);
2536    return undefined;
2537  }
2538  function enable() {
2539    if (swiper.keyboard.enabled) return;
2540    document.addEventListener('keydown', handle);
2541    swiper.keyboard.enabled = true;
2542  }
2543  function disable() {
2544    if (!swiper.keyboard.enabled) return;
2545    document.removeEventListener('keydown', handle);
2546    swiper.keyboard.enabled = false;
2547  }
2548  on('init', () => {
2549    if (swiper.params.keyboard.enabled) {
2550      enable();
2551    }
2552  });
2553  on('destroy', () => {
2554    if (swiper.keyboard.enabled) {
2555      disable();
2556    }
2557  });
2558  Object.assign(swiper.keyboard, {
2559    enable,
2560    disable
2561  });
2562}
2563
2564
2565//# sourceURL=[module]
2566//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9tb2R1bGVzL2tleWJvYXJkLm1qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBZ0Y7QUFDRjs7QUFFOUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osbUJBQW1CLDZEQUFXO0FBQzlCLGlCQUFpQiw2REFBUztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSw4Q0FBOEM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSxvREFBYyxnQkFBZ0IseUJBQXlCLCtCQUErQixvREFBYyxnQkFBZ0IsK0JBQStCO0FBQzdKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLG9EQUFhO0FBQ3hDO0FBQ0E7QUFDQSxzQkFBc0Isd0JBQXdCO0FBQzlDO0FBQ0E7QUFDQSwwREFBMEQ7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBaUQ7QUFDakQ7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsaURBQWlEO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRStCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9zd2lwZXIvbW9kdWxlcy9rZXlib2FyZC5tanM/NmRhNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnIGFzIGdldERvY3VtZW50LCBhIGFzIGdldFdpbmRvdyB9IGZyb20gJy4uL3NoYXJlZC9zc3Itd2luZG93LmVzbS5tanMnO1xuaW1wb3J0IHsgYiBhcyBlbGVtZW50UGFyZW50cywgZCBhcyBlbGVtZW50T2Zmc2V0IH0gZnJvbSAnLi4vc2hhcmVkL3V0aWxzLm1qcyc7XG5cbi8qIGVzbGludC1kaXNhYmxlIGNvbnNpc3RlbnQtcmV0dXJuICovXG5mdW5jdGlvbiBLZXlib2FyZChfcmVmKSB7XG4gIGxldCB7XG4gICAgc3dpcGVyLFxuICAgIGV4dGVuZFBhcmFtcyxcbiAgICBvbixcbiAgICBlbWl0XG4gIH0gPSBfcmVmO1xuICBjb25zdCBkb2N1bWVudCA9IGdldERvY3VtZW50KCk7XG4gIGNvbnN0IHdpbmRvdyA9IGdldFdpbmRvdygpO1xuICBzd2lwZXIua2V5Ym9hcmQgPSB7XG4gICAgZW5hYmxlZDogZmFsc2VcbiAgfTtcbiAgZXh0ZW5kUGFyYW1zKHtcbiAgICBrZXlib2FyZDoge1xuICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgICBvbmx5SW5WaWV3cG9ydDogdHJ1ZSxcbiAgICAgIHBhZ2VVcERvd246IHRydWVcbiAgICB9XG4gI
2566H0pO1xuICBmdW5jdGlvbiBoYW5kbGUoZXZlbnQpIHtcbiAgICBpZiAoIXN3aXBlci5lbmFibGVkKSByZXR1cm47XG4gICAgY29uc3Qge1xuICAgICAgcnRsVHJhbnNsYXRlOiBydGxcbiAgICB9ID0gc3dpcGVyO1xuICAgIGxldCBlID0gZXZlbnQ7XG4gICAgaWYgKGUub3JpZ2luYWxFdmVudCkgZSA9IGUub3JpZ2luYWxFdmVudDsgLy8ganF1ZXJ5IGZpeFxuICAgIGNvbnN0IGtjID0gZS5rZXlDb2RlIHx8IGUuY2hhckNvZGU7XG4gICAgY29uc3QgcGFnZVVwRG93biA9IHN3aXBlci5wYXJhbXMua2V5Ym9hcmQucGFnZVVwRG93bjtcbiAgICBjb25zdCBpc1BhZ2VVcCA9IHBhZ2VVcERvd24gJiYga2MgPT09IDMzO1xuICAgIGNvbnN0IGlzUGFnZURvd24gPSBwYWdlVXBEb3duICYmIGtjID09PSAzNDtcbiAgICBjb25zdCBpc0Fycm93TGVmdCA9IGtjID09PSAzNztcbiAgICBjb25zdCBpc0Fycm93UmlnaHQgPSBrYyA9PT0gMzk7XG4gICAgY29uc3QgaXNBcnJvd1VwID0ga2MgPT09IDM4O1xuICAgIGNvbnN0IGlzQXJyb3dEb3duID0ga2MgPT09IDQwO1xuICAgIC8vIERpcmVjdGlvbnMgbG9ja3NcbiAgICBpZiAoIXN3aXBlci5hbGxvd1NsaWRlTmV4dCAmJiAoc3dpcGVyLmlzSG9yaXpvbnRhbCgpICYmIGlzQXJyb3dSaWdodCB8fCBzd2lwZXIuaXNWZXJ0aWNhbCgpICYmIGlzQXJyb3dEb3duIHx8IGlzUGFnZURvd24pKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICghc3dpcGVyLmFsbG93U2xpZGVQcmV2ICYmIChzd2lwZXIuaXNIb3Jpem9udGFsKCkgJiYgaXNBcnJvd0xlZnQgfHwgc3dpcGVyLmlzVmVydGljYWwoKSAmJi
2566Bpc0Fycm93VXAgfHwgaXNQYWdlVXApKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChlLnNoaWZ0S2V5IHx8IGUuYWx0S2V5IHx8IGUuY3RybEtleSB8fCBlLm1ldGFLZXkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ICYmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50LmlzQ29udGVudEVkaXRhYmxlIHx8IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQubm9kZU5hbWUgJiYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2lucHV0JyB8fCBkb2N1bWVudC5hY3RpdmVFbGVtZW50Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICd0ZXh0YXJlYScpKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaWYgKHN3aXBlci5wYXJhbXMua2V5Ym9hcmQub25seUluVmlld3BvcnQgJiYgKGlzUGFnZVVwIHx8IGlzUGFnZURvd24gfHwgaXNBcnJvd0xlZnQgfHwgaXNBcnJvd1JpZ2h0IHx8IGlzQXJyb3dVcCB8fCBpc0Fycm93RG93bikpIHtcbiAgICAgIGxldCBpblZpZXcgPSBmYWxzZTtcbiAgICAgIC8vIENoZWNrIHRoYXQgc3dpcGVyIHNob3VsZCBiZSBpbnNpZGUgb2YgdmlzaWJsZSBhcmVhIG9mIHdpbmRvd1xuICAgICAgaWYgKGVsZW1lbnRQYXJlbnRzKHN3aXBlci5lbCwgYC4ke3N3aXBlci5wYXJhbXMuc2xpZGVDbGFzc30sIHN3aXBlci1zbGlkZWApLmxlbmd0aCA+IDAgJiYgZWxlbWVudFBhcmVudHMoc3dpcGVyLmVsLCBgLiR7c3dpcGVyLnBhcmFtcy5zbGlkZUFjdGl2ZUNsYXNzfWApLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgY29uc3QgZWwgPSBzd2lwZXIuZWw7XG4gICAgICBjb25zdCBzd2lwZXJXaWR0aCA9IGVsLmNsaWVudFdpZHRoO1xuICAgICAgY29uc3Qgc3dpcGVySGVpZ2h0ID0gZWwuY2xpZW50SGVpZ2h0O1xuICAgICAgY29uc3Qgd2luZG93V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICAgIGNvbnN0IHdpbmRvd0hlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcbiAgICAgIGNvbnN0IHN3aXBlck9mZnNldCA9IGVsZW1lbnRPZmZzZXQoZWwpO1xuICAgICAgaWYgKHJ0bCkgc3dpcGVyT2Zmc2V0LmxlZnQgLT0gZWwuc2Nyb2xsTGVmdDtcbiAgICAgIGNvbnN0IHN3aXBlckNvb3JkID0gW1tzd2lwZXJPZmZzZXQubGVmdCwgc3dpcGVyT2Zmc2V0LnRvcF0sIFtzd2lwZXJPZmZzZXQubGVmdCArIHN3aXBlcldpZHRoLCBzd2lwZXJPZmZzZXQudG9wXSwgW3N3aXBlck9mZnNldC5sZWZ0LCBzd2lwZXJPZmZzZXQudG9wICsgc3dpcGVySGVpZ2h0XSwgW3N3aXBlck9mZnNldC5sZWZ0ICsgc3dpcGVyV2lkdGgsIHN3aXBlck9mZnNldC50b3AgKyBzd2lwZXJIZWlnaHRdXTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3dpcGVyQ29vcmQubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgY29uc3QgcG9pbnQgPSBzd2lwZXJDb29yZFtpXTtcbiAgICAgICAgaWYgKHBvaW50WzBdID49IDAgJiYgcG9pbnRbMF0gPD0gd2luZG93V2lkdGggJiYgcG9pbnRbMV0gPj0gMCAmJiBwb2ludFsxXSA8PSB3aW5kb3dIZWlnaHQpIHtcbiAgICAgICAgICBpZiAocG9pbnRbMF0gPT09IDAgJiYgcG9pbnRbMV0gPT09IDApIGNvbnRpbnVlOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgICAgICAgaW5WaWV3ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKCFpblZpZXcpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmIChzd2lwZXIuaXNIb3Jpem9udGFsKCkpIHtcbiAgICAgIGlmIChpc1BhZ2VVcCB8fCBpc1BhZ2VEb3duIHx8IGlzQXJyb3dMZWZ0IHx8IGlzQXJyb3dSaWdodCkge1xuICAgICAgICBpZiAoZS5wcmV2ZW50RGVmYXVsdCkgZS5wcmV2ZW50RGVmYXVsdCgpO2Vsc2UgZS5yZXR1cm5WYWx1ZSA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKChpc1BhZ2VEb3duIHx8IGlzQXJyb3dSaWdodCkgJiYgIXJ0bCB8fCAoaXNQYWdlVXAgfHwgaXNBcnJvd0xlZnQpICYmIHJ0bCkgc3dpcGVyLnNsaWRlTmV4dCgpO1xuICAgICAgaWYgKChpc1BhZ2VVcCB8fCBpc0Fycm93TGVmdCkgJiYgIXJ0bCB8fCAoaXNQYWdlRG93biB8fCBpc0Fycm93UmlnaHQpICYmIHJ0bCkgc3dpcGVyLnNsaWRlUHJldigpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaXNQYWdlVXAgfHwgaXNQYWdlRG93biB8fCBpc0Fycm93VXAgfHwgaXNBcnJvd0Rvd24pIHtcbiAgICAgICAgaWYgKGUucHJldmVudERlZmF1bHQpIGUucHJldmVudERlZmF1bHQoKTtlbHNlIGUucmV0dXJuVmFsdWUgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChpc1BhZ2VEb3duIHx8IGlzQXJyb3dEb3duKSBzd2lwZXIuc2xpZGVOZXh0KCk7XG4gICAgICBpZiAoaXNQYWdlVXAgfHwgaXNBcnJvd1VwKSBzd2lwZXIuc2xpZGVQcmV2KCk7XG4gICAgfVxuICAgIGVtaXQoJ2tleVByZXNzJywga2MpO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgZnVuY3Rpb24gZW5hYmxlKCkge1xuICAgIGlmIChzd2lwZXIua2V5Ym9hcmQuZW5hYmxlZCkgcmV0dXJuO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGUpO1xuICAgIHN3aXBlci5rZXlib2FyZC5lbmFibGVkID0gdHJ1ZTtcbiAgfVxuICBmdW5jdGlvbiBkaXNhYmxlKCkge1xuICAgIGlmICghc3dpcGVyLmtleWJvYXJkLmVuYWJsZWQpIHJldHVybjtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgaGFuZGxlKTtcbiAgICBzd2lwZXIua2V5Ym9hcmQuZW5hYmxlZCA9IGZhbHNlO1xuICB9XG4gIG9uKCdpbml0JywgKCkgPT4ge1xuICAgIGlmIChzd2lwZXIucGFyYW1zLmtleWJvYXJkLmVuYWJsZWQpIHtcbiAgICAgIGVuYWJsZSgpO1xuICAgIH1cbiAgfSk7XG4gIG9uKCdkZXN0cm95JywgKCkgPT4ge1xuICAgIGlmIChzd2lwZXIua2V5Ym9hcmQuZW5hYmxlZCkge1xuICAgICAgZGlzYWJsZSgpO1xuICAgIH1cbiAgfSk7XG4gIE9iamVjdC5hc3NpZ24oc3dpcGVyLmtleWJvYXJkLCB7XG4gICAgZW5hYmxlLFxuICAgIGRpc2FibGVcbiAgfSk7XG59XG5cbmV4cG9ydCB7
vendor: 5,131 bytes, lines 2566-2734
2566IEtleWJvYXJkIGFzIGRlZmF1bHQgfTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=
2567//# sourceURL=webpack-internal:///../node_modules/swiper/modules/keyboard.mjs
2568
2569}`)},"../node_modules/swiper/modules/manipulation.mjs"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval(`{__webpack_require__.r(__webpack_exports__);
2570/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2571/* harmony export */   "default": () => (/* binding */ Manipulation)
2572/* harmony export */ });
2573/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/utils.mjs */ "../node_modules/swiper/shared/utils.mjs");
2574
2575
2576function appendSlide(slides) {
2577  const swiper = this;
2578  const {
2579    params,
2580    slidesEl
2581  } = swiper;
2582  if (params.loop) {
2583    swiper.loopDestroy();
2584  }
2585  const appendElement = slideEl => {
2586    if (typeof slideEl === 'string') {
2587      const tempDOM = document.createElement('div');
2588      (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.s)(tempDOM, slideEl);
2589      slidesEl.append(tempDOM.children[0]);
2590      (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.s)(tempDOM, '');
2591    } else {
2592      slidesEl.append(slideEl);
2593    }
2594  };
2595  if (typeof slides === 'object' && 'length' in slides) {
2596    for (let i = 0; i < slides.length; i += 1) {
2597      if (slides[i]) appendElement(slides[i]);
2598    }
2599  } else {
2600    appendElement(slides);
2601  }
2602  swiper.recalcSlides();
2603  if (params.loop) {
2604    swiper.loopCreate();
2605  }
2606  if (!params.observer || swiper.isElement) {
2607    swiper.update();
2608  }
2609}
2610
2611function prependSlide(slides) {
2612  const swiper = this;
2613  const {
2614    params,
2615    activeIndex,
2616    slidesEl
2617  } = swiper;
2618  if (params.loop) {
2619    swiper.loopDestroy();
2620  }
2621  let newActiveIndex = activeIndex + 1;
2622  const prependElement = slideEl => {
2623    if (typeof slideEl === 'string') {
2624      const tempDOM = document.createElement('div');
2625      (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.s)(tempDOM, slideEl);
2626      slidesEl.prepend(tempDOM.children[0]);
2627      (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.s)(tempDOM, '');
2628    } else {
2629      slidesEl.prepend(slideEl);
2630    }
2631  };
2632  if (typeof slides === 'object' && 'length' in slides) {
2633    for (let i = 0; i < slides.length; i += 1) {
2634      if (slides[i]) prependElement(slides[i]);
2635    }
2636    newActiveIndex = activeIndex + slides.length;
2637  } else {
2638    prependElement(slides);
2639  }
2640  swiper.recalcSlides();
2641  if (params.loop) {
2642    swiper.loopCreate();
2643  }
2644  if (!params.observer || swiper.isElement) {
2645    swiper.update();
2646  }
2647  swiper.slideTo(newActiveIndex, 0, false);
2648}
2649
2650function addSlide(index, slides) {
2651  const swiper = this;
2652  const {
2653    params,
2654    activeIndex,
2655    slidesEl
2656  } = swiper;
2657  let activeIndexBuffer = activeIndex;
2658  if (params.loop) {
2659    activeIndexBuffer -= swiper.loopedSlides;
2660    swiper.loopDestroy();
2661    swiper.recalcSlides();
2662  }
2663  const baseLength = swiper.slides.length;
2664  if (index <= 0) {
2665    swiper.prependSlide(slides);
2666    return;
2667  }
2668  if (index >= baseLength) {
2669    swiper.appendSlide(slides);
2670    return;
2671  }
2672  let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;
2673  const slidesBuffer = [];
2674  for (let i = baseLength - 1; i >= index; i -= 1) {
2675    const currentSlide = swiper.slides[i];
2676    currentSlide.remove();
2677    slidesBuffer.unshift(currentSlide);
2678  }
2679  if (typeof slides === 'object' && 'length' in slides) {
2680    for (let i = 0; i < slides.length; i += 1) {
2681      if (slides[i]) slidesEl.append(slides[i]);
2682    }
2683    newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;
2684  } else {
2685    slidesEl.append(slides);
2686  }
2687  for (let i = 0; i < slidesBuffer.length; i += 1) {
2688    slidesEl.append(slidesBuffer[i]);
2689  }
2690  swiper.recalcSlides();
2691  if (params.loop) {
2692    swiper.loopCreate();
2693  }
2694  if (!params.observer || swiper.isElement) {
2695    swiper.update();
2696  }
2697  if (params.loop) {
2698    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
2699  } else {
2700    swiper.slideTo(newActiveIndex, 0, false);
2701  }
2702}
2703
2704function removeSlide(slidesIndexes) {
2705  const swiper = this;
2706  const {
2707    params,
2708    activeIndex
2709  } = swiper;
2710  let activeIndexBuffer = activeIndex;
2711  if (params.loop) {
2712    activeIndexBuffer -= swiper.loopedSlides;
2713    swiper.loopDestroy();
2714  }
2715  let newActiveIndex = activeIndexBuffer;
2716  let indexToRemove;
2717  if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {
2718    for (let i = 0; i < slidesIndexes.length; i += 1) {
2719      indexToRemove = slidesIndexes[i];
2720      if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();
2721      if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
2722    }
2723    newActiveIndex = Math.max(newActiveIndex, 0);
2724  } else {
2725    indexToRemove = slidesIndexes;
2726    if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();
2727    if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
2728    newActiveIndex = Math.max(newActiveIndex, 0);
2729  }
2730  swiper.recalcSlides();
2731  if (params.loop) {
2732    swiper.loopCreate();
2733  }
2734  if (!params.observer || swiper.isElement) {
2735    swiper.update();
2736  }
2737  if (params.loop) {
2738    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
2739  } else {
2740    swiper.slideTo(newActiveIndex, 0, false);
2741  }
2742}
2743
2744function removeAllSlides() {
2745  const swiper = this;
2746  const slidesIndexes = [];
2747  for (let i = 0; i < swiper.slides.length; i += 1) {
2748    slidesIndexes.push(i);
2749  }
2750  swiper.removeSlide(slidesIndexes);
2751}
2752
2753function Manipulation(_ref) {
2754  let {
2755    swiper
2756  } = _ref;
2757  Object.assign(swiper, {
2758    appendSlide: appendSlide.bind(swiper),
2759    prependSlide: prependSlide.bind(swiper),
2760    addSlide: addSlide.bind(swiper),
2761    removeSlide: removeSlide.bind(swiper),
2762    removeAllSlides: removeAllSlides.bind(swiper)
2763  });
2764}
2765
2766
2767//# sourceURL=[module]
2768//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9tb2R1bGVzL21hbmlwdWxhdGlvbi5tanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBd0Q7O0FBRXhEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxvREFBWTtBQUNsQjtBQUNBLE1BQU0sb0RBQVk7QUFDbEIsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG1CQUFtQjtBQUN2QztBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sb0RBQVk7QUFDbEI7QUFDQSxNQUFNLG9EQUFZO0FBQ2xCLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixtQkFBbUI7QUFDdkM7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsWUFBWTtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG1CQUFtQjtBQUN2QztBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLGtCQUFrQix5QkFBeUI7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLDBCQUEwQjtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQiwwQkFBMEI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFbUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9tb2R1bGVzL21hbmlwdWxhdGlvbi5tanM/NjJkMSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzIGFzIHNldElubmVySFRNTCB9IGZyb20gJy4uL3NoYXJlZC91dGlscy5tanMnO1xuXG5mdW5jdGlvbiBhcHBlbmRTbGlkZShzbGlkZXMpIHtcbiAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgY29uc3Qge1xuICAgIHBhcmFtcyxcbiAgICBzbGlkZXNFbFxuICB9ID0gc3dpcGVyO1xuICBpZiAocGFyYW1zLmxvb3ApIHtcbiAgICBzd2lwZXIubG9vcERlc3Ryb3koKTtcbiAgfVxuICBjb25zdCBhcHBlbmRFbGVtZW50ID0gc2xpZGVFbCA9PiB7XG4gICAgaWYgKHR5cGVvZiBzbGlkZUVsID09PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgdGVtcERPTSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgc2V0SW5uZXJIVE1MKHRlbXBET00sIHNsaWRlRWwpO1xuICAgICAgc2xpZGVzRWwuYXBwZW5kKHRlbXBET00uY2hpbGRyZW5bMF0pO1xuICAgICAgc2V0SW5uZXJIVE1MKHRlbXBET00sICcnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2xpZGVzRWwuYXBwZW5kKHNsaWRlRWwpO1xuICAgIH1cbiAgfTtcbiAgaWYgKHR5cGVvZiBzbGlkZXMgPT09ICdvYmplY3QnICYmICdsZW5ndGgnIGluIHNsaWRlcykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2xpZGVzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBpZiAoc2xpZGVzW2ldKSBhcHBlbmRFbGVtZW50KHNsaWRlc1tpXSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGFwcGVuZEVsZW1lbnQoc2xpZGVzKTtcbiAgfVxuICBzd2lwZXIucmVjYWxjU2xpZGVzKCk7XG4gIGlmIChwYXJhbXMubG9vcCkge1xuICAgIHN3aXBlci5sb29wQ3JlYXRlKCk7XG4gIH1cbiAgaWYgKCFwYXJhbXMub2JzZXJ2ZXIgfHwgc3dpcGVyLmlzRWxlbWVudCkge1xuICAgIHN3aXBlci51cGRhdGUoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwcmVwZW5kU2xpZGUoc2xpZGVzKSB7XG4gIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gIGNvbnN0IHtcbiAgICBwYXJhbXMsXG4gICAgYWN0aXZlSW5kZXgsXG4gICAgc2xpZGVzRWxcbiAgfSA9IHN3aXBlcjtcbiAgaWYgKHBhcmFtcy5sb29wKSB7XG4gICAgc3dpcGVyLmxvb3BEZXN0cm95KCk7XG4gIH1cbiAgbGV0IG5ld0FjdGl2ZUluZGV4ID0gYWN0aXZlSW5kZXggKyAxO1xuICBjb25zdCBwcmVwZW5kRWxlbWVudCA9IHNsaWRlRWwgPT4ge1xuICAgIGlmICh0eXBlb2Ygc2xpZGVFbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IHRlbXBET00gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgIHNldElubmVySFRNTCh0ZW1wRE9NLCBzbGlkZUVsKTtcbiAgICAgIHNsaWRlc0VsLnByZXBlbmQodGVtcERPTS5jaGlsZHJlblswXSk7XG4gICAgICBzZXRJbm5lckhUTUwodGVtcERPTSwgJycpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzbGlkZXNFbC5wcmVwZW5kKHNsaWRlRWwpO1xuICAgIH1cbiAgfTtcbiAgaWYgKHR5cGVvZiBzbGlkZXMgPT09ICdvYmplY3QnICYmICdsZW5ndGgnIGluIHNsaWRlcykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2xpZGVzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBpZiAoc2xpZGVzW2ldKSBwcmVwZW5kRWxlbWVudChzbGlkZXNbaV0pO1xuICAgIH1cbiAgICBuZXdBY3RpdmVJbmRleCA9IGFjdGl2ZUluZGV4ICsgc2xpZGVzLmxlbmd0aDtcbiAgfSBlbHNlIHtcbiAgICBwcmVwZW5kRWxlbWVudChzbGlkZXMpO1xuICB9XG4gI
2768HN3aXBlci5yZWNhbGNTbGlkZXMoKTtcbiAgaWYgKHBhcmFtcy5sb29wKSB7XG4gICAgc3dpcGVyLmxvb3BDcmVhdGUoKTtcbiAgfVxuICBpZiAoIXBhcmFtcy5vYnNlcnZlciB8fCBzd2lwZXIuaXNFbGVtZW50KSB7XG4gICAgc3dpcGVyLnVwZGF0ZSgpO1xuICB9XG4gIHN3aXBlci5zbGlkZVRvKG5ld0FjdGl2ZUluZGV4LCAwLCBmYWxzZSk7XG59XG5cbmZ1bmN0aW9uIGFkZFNsaWRlKGluZGV4LCBzbGlkZXMpIHtcbiAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgY29uc3Qge1xuICAgIHBhcmFtcyxcbiAgICBhY3RpdmVJbmRleCxcbiAgICBzbGlkZXNFbFxuICB9ID0gc3dpcGVyO1xuICBsZXQgYWN0aXZlSW5kZXhCdWZmZXIgPSBhY3RpdmVJbmRleDtcbiAgaWYgKHBhcmFtcy5sb29wKSB7XG4gICAgYWN0aXZlSW5kZXhCdWZmZXIgLT0gc3dpcGVyLmxvb3BlZFNsaWRlcztcbiAgICBzd2lwZXIubG9vcERlc3Ryb3koKTtcbiAgICBzd2lwZXIucmVjYWxjU2xpZGVzKCk7XG4gIH1cbiAgY29uc3QgYmFzZUxlbmd0aCA9IHN3aXBlci5zbGlkZXMubGVuZ3RoO1xuICBpZiAoaW5kZXggPD0gMCkge1xuICAgIHN3aXBlci5wcmVwZW5kU2xpZGUoc2xpZGVzKTtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKGluZGV4ID49IGJhc2VMZW5ndGgpIHtcbiAgICBzd2lwZXIuYXBwZW5kU2xpZGUoc2xpZGVzKTtcbiAgICByZXR1cm47XG4gIH1cbiAgbGV0IG5ld0FjdGl2ZUluZGV4ID0gYWN0aXZlSW5kZXhCdWZmZXIgPiBpbmRleCA/IGFjdGl2ZUluZGV4QnVmZmVyICsgMSA6IGFjdGl2ZUluZGV4QnVmZmVyO1xuICBjb25zdCBzbGlkZXNCdWZmZXIgPSBbXTtcbiAgZm9yIChsZXQgaSA9IGJhc2VMZW5ndGggLSAxOyBpID49IGluZGV4OyBpIC09IDEpIHtcbiAgICBjb25zdCBjdXJyZW50U2xpZGUgPSBzd2lwZXIuc2xpZGVzW2ldO1xuICAgIGN1cnJlbnRTbGlkZS5yZW1vdmUoKTtcbiAgICBzbGlkZXNCdWZmZXIudW5zaGlmdChjdXJyZW50U2xpZGUpO1xuICB9XG4gIGlmICh0eXBlb2Ygc2xpZGVzID09PSAnb2JqZWN0JyAmJiAnbGVuZ3RoJyBpbiBzbGlkZXMpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNsaWRlcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgaWYgKHNsaWRlc1tpXSkgc2xpZGVzRWwuYXBwZW5kKHNsaWRlc1tpXSk7XG4gICAgfVxuICAgIG5ld0FjdGl2ZUluZGV4ID0gYWN0aXZlSW5kZXhCdWZmZXIgPiBpbmRleCA/IGFjdGl2ZUluZGV4QnVmZmVyICsgc2xpZGVzLmxlbmd0aCA6IGFjdGl2ZUluZGV4QnVmZmVyO1xuICB9IGVsc2Uge1xuICAgIHNsaWRlc0VsLmFwcGVuZChzbGlkZXMpO1xuICB9XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2xpZGVzQnVmZmVyLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgc2xpZGVzRWwuYXBwZW5kKHNsaWRlc0J1ZmZlcltpXSk7XG4gIH1cbiAgc3dpcGVyLnJlY2FsY1NsaWRlcygpO1xuICBpZiAocGFyYW1zLmxvb3ApIHtcbiAgICBzd2lwZXIubG9vcENyZWF0ZSgpO1xuICB9XG4gIGlmICghcGFyYW1zLm9ic2VydmVyIHx8IHN3aXBlci5pc0VsZW1lbnQpIHtcbiAgICBzd2lwZXIudXBkYXRlKCk7XG4gIH1cbiAgaWYgKHBhcmFtcy5sb29wKSB7XG4gICAgc3dpcGVyLnNsaWRlVG8obmV3QWN0aXZlSW5kZXggKyBzd2lwZXIubG9vcGVkU2xpZGVzLCAwLCBmYWxzZSk7XG4gIH0gZWxzZSB7XG4gICAgc3dpcGVyLnNsaWRlVG8obmV3QWN0aXZlSW5kZXgsIDAsIGZhbHNlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZW1vdmVTbGlkZShzbGlkZXNJbmRleGVzKSB7XG4gIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gIGNvbnN0IHtcbiAgICBwYXJhbXMsXG4gICAgYWN0aXZlSW5kZXhcbiAgfSA9IHN3aXBlcjtcbiAgbGV0IGFjdGl2ZUluZGV4QnVmZmVyID0gYWN0aXZlSW5kZXg7XG4gIGlmIChwYXJhbXMubG9vcCkge1xuICAgIGFjdGl2ZUluZGV4QnVmZmVyIC09IHN3aXBlci5sb29wZWRTbGlkZXM7XG4gICAgc3dpcGVyLmxvb3BEZXN0cm95KCk7XG4gIH1cbiAgbGV0IG5ld0FjdGl2ZUluZGV4ID0gYWN0aXZlSW5kZXhCdWZmZXI7XG4gIGxldCBpbmRleFRvUmVtb3ZlO1xuICBpZiAodHlwZW9mIHNsaWRlc0luZGV4ZXMgPT09ICdvYmplY3QnICYmICdsZW5ndGgnIGluIHNsaWRlc0luZGV4ZXMpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNsaWRlc0luZGV4ZXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGluZGV4VG9SZW1vdmUgPSBzbGlkZXNJbmRleGVzW2ldO1xuICAgICAgaWYgKHN3aXBlci5zbGlkZXNbaW5kZXhUb1JlbW92ZV0pIHN3aXBlci5zbGlkZXNbaW5kZXhUb1JlbW92ZV0ucmVtb3ZlKCk7XG4gICAgICBpZiAoaW5kZXhUb1JlbW92ZSA8IG5ld0FjdGl2ZUluZGV4KSBuZXdBY3RpdmVJbmRleCAtPSAxO1xuICAgIH1cbiAgICBuZXdBY3RpdmVJbmRleCA9IE1hdGgubWF4KG5ld0FjdGl2ZUluZGV4LCAwKTtcbiAgfSBlbHNlIHtcbiAgICBpbmRleFRvUmVtb3ZlID0gc2xpZGVzSW5kZXhlcztcbiAgICBpZiAoc3dpcGVyLnNsaWRlc1tpbmRleFRvUmVtb3ZlXSkgc3dpcGVyLnNsaWRlc1tpbmRleFRvUmVtb3ZlXS5yZW1vdmUoKTtcbiAgICBpZiAoaW5kZXhUb1JlbW92ZSA8IG5ld0FjdGl2ZUluZGV4KSBuZXdBY3RpdmVJbmRleCAtPSAxO1xuICAgIG5ld0FjdGl2ZUluZGV4ID0gTWF0aC5tYXgobmV3QWN0aXZlSW5kZXgsIDApO1xuICB9XG4gIHN3aXBlci5yZWNhbGNTbGlkZXMoKTtcbiAgaWYgKHBhcmFtcy5sb29wKSB7XG4gICAgc3dpcGVyLmxvb3BDcmVhdGUoKTtcbiAgfVxuICBpZiAoIXBhcmFtcy5vYnNlcnZlciB8fCBzd2lwZXIuaXNFbGVtZW50KSB7XG4gICAgc3dpcGVyLnVwZGF0ZSgpO1xuICB9XG4gIGlmIChwYXJhbXMubG9vcCkge1xuICAgIHN3aXBlci5zbGlkZVRvKG5ld0FjdGl2ZUluZGV4ICsgc3dpcGVyLmxvb3BlZFNsaWRlcywgMCwgZmFsc2UpO1xuICB9IGVsc2Uge1xuICAgIHN3aXBlci5zbGlkZVRvKG5ld0FjdGl2ZUluZGV4LCAwLCBmYWxzZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVtb3ZlQWxsU2xpZGVzKCkge1xuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBjb25zdCBzbGlkZXNJbmRleGVzID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3dpcGVyLnNsaWRlcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgIHNsaWRlc0luZGV4ZXMucHVzaChpKTtcbiAgfVxuICBzd2lwZXIucmVtb3ZlU2xpZGUoc2xpZGVzSW5kZX
2768hlcyk7XG59XG5cbmZ1bmN0aW9uIE1hbmlwdWxhdGlvbihfcmVmKSB7XG4gIGxldCB7XG4gICAgc3dpcGVyXG4gIH0gPSBfcmVmO1xuICBPYmplY3QuYXNzaWduKHN3aXBlciwge1xuICAgIGFwcGVuZFNsaWRlOiBhcHBlbmRTbGlkZS5iaW5kKHN3aXBlciksXG4gICAgcHJlcGVuZFNsaWRlOiBwcmVwZW5kU2xpZGUuYmluZChzd2lwZXIpLFxuICAgIGFkZFNsaWRlOiBhZGRTbGlkZS5iaW5kKHN3aXBlciksXG4gICAgcmVtb3ZlU2xpZGU6IHJlbW92ZVNsaWRlLmJpbmQoc3dpcGVyKSxcbiAgICByZW1vdmVBbGxTbGlkZXM6IHJlbW92ZUFsbFNsaWRlcy5iaW5kKHN3aXBlcilcbiAgfSk7XG59XG5cbmV4cG9ydCB7IE1hbmlwdWxhdGlvbiBhcyBkZWZhdWx0IH07XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9
2769//# sourceURL=webpack-internal:///../node_modules/swiper/modules/manipulation.mjs
2770
2771}`)},"../node_modules/swiper/modules/mousewheel.mjs"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval(`{__webpack_require__.r(__webpack_exports__);
2772/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2773/* harmony export */   "default": () => (/* binding */ Mousewheel)
2774/* harmony export */ });
2775/* harmony import */ var _shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/ssr-window.esm.mjs */ "../node_modules/swiper/shared/ssr-window.esm.mjs");
2776/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "../node_modules/swiper/shared/utils.mjs");
2777
2778
2779
2780/* eslint-disable consistent-return */
2781function Mousewheel(_ref) {
2782  let {
2783    swiper,
2784    extendParams,
2785    on,
2786    emit
2787  } = _ref;
2788  const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
2789  extendParams({
2790    mousewheel: {
2791      enabled: false,
2792      releaseOnEdges: false,
2793      invert: false,
vendor: 4,439 bytes, lines 2794-2939
2794      forceToAxis: false,
2795      sensitivity: 1,
2796      eventsTarget: 'container',
2797      thresholdDelta: null,
2798      thresholdTime: null,
2799      noMousewheelClass: 'swiper-no-mousewheel'
2800    }
2801  });
2802  swiper.mousewheel = {
2803    enabled: false
2804  };
2805  let timeout;
2806  let lastScrollTime = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.f)();
2807  let lastEventBeforeSnap;
2808  const recentWheelEvents = [];
2809  function normalize(e) {
2810    // Reasonable defaults
2811    const PIXEL_STEP = 10;
2812    const LINE_HEIGHT = 40;
2813    const PAGE_HEIGHT = 800;
2814    let sX = 0;
2815    let sY = 0; // spinX, spinY
2816    let pX = 0;
2817    let pY = 0; // pixelX, pixelY
2818
2819    // Legacy
2820    if ('detail' in e) {
2821      sY = e.detail;
2822    }
2823    if ('wheelDelta' in e) {
2824      sY = -e.wheelDelta / 120;
2825    }
2826    if ('wheelDeltaY' in e) {
2827      sY = -e.wheelDeltaY / 120;
2828    }
2829    if ('wheelDeltaX' in e) {
2830      sX = -e.wheelDeltaX / 120;
2831    }
2832
2833    // side scrolling on FF with DOMMouseScroll
2834    if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {
2835      sX = sY;
2836      sY = 0;
2837    }
2838    pX = sX * PIXEL_STEP;
2839    pY = sY * PIXEL_STEP;
2840    if ('deltaY' in e) {
2841      pY = e.deltaY;
2842    }
2843    if ('deltaX' in e) {
2844      pX = e.deltaX;
2845    }
2846    if (e.shiftKey && !pX) {
2847      // if user scrolls with shift he wants horizontal scroll
2848      pX = pY;
2849      pY = 0;
2850    }
2851    if ((pX || pY) && e.deltaMode) {
2852      if (e.deltaMode === 1) {
2853        // delta in LINE units
2854        pX *= LINE_HEIGHT;
2855        pY *= LINE_HEIGHT;
2856      } else {
2857        // delta in PAGE units
2858        pX *= PAGE_HEIGHT;
2859        pY *= PAGE_HEIGHT;
2860      }
2861    }
2862
2863    // Fall-back if spin cannot be determined
2864    if (pX && !sX) {
2865      sX = pX < 1 ? -1 : 1;
2866    }
2867    if (pY && !sY) {
2868      sY = pY < 1 ? -1 : 1;
2869    }
2870    return {
2871      spinX: sX,
2872      spinY: sY,
2873      pixelX: pX,
2874      pixelY: pY
2875    };
2876  }
2877  function handleMouseEnter() {
2878    if (!swiper.enabled) return;
2879    swiper.mouseEntered = true;
2880  }
2881  function handleMouseLeave() {
2882    if (!swiper.enabled) return;
2883    swiper.mouseEntered = false;
2884  }
2885  function animateSlider(newEvent) {
2886    if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {
2887      // Prevent if delta of wheel scroll delta is below configured threshold
2888      return false;
2889    }
2890    if (swiper.params.mousewheel.thresholdTime && (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.f)() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {
2891      // Prevent if time between scrolls is below configured threshold
2892      return false;
2893    }
2894
2895    // If the movement is NOT big enough and
2896    // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):
2897    //   Don't go any further (avoid insignificant scroll movement).
2898    if (newEvent.delta >= 6 && (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.f)() - lastScrollTime < 60) {
2899      // Return false as a default
2900      return true;
2901    }
2902    // If user is scrolling towards the end:
2903    //   If the slider hasn't hit the latest slide or
2904    //   if the slider is a loop and
2905    //   if the slider isn't moving right now:
2906    //     Go to next slide and
2907    //     emit a scroll event.
2908    // Else (the user is scrolling towards the beginning) and
2909    // if the slider hasn't hit the first slide or
2910    // if the slider is a loop and
2911    // if the slider isn't moving right now:
2912    //   Go to prev slide and
2913    //   emit a scroll event.
2914    if (newEvent.direction < 0) {
2915      if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {
2916        swiper.slideNext();
2917        emit('scroll', newEvent.raw);
2918      }
2919    } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {
2920      swiper.slidePrev();
2921      emit('scroll', newEvent.raw);
2922    }
2923    // If you got here is because an animation has been triggered so store the current time
2924    lastScrollTime = new window.Date().getTime();
2925    // Return false as a default
2926    return false;
2927  }
2928  function releaseScroll(newEvent) {
2929    const params = swiper.params.mousewheel;
2930    if (newEvent.direction < 0) {
2931      if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {
2932        // Return true to animate scroll on edges
2933        return true;
2934      }
2935    } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {
2936      // Return true to animate scroll on edges
2937      return true;
2938    }
2939    return false;
2940  }
2941  function handle(event) {
2942    let e = event;
2943    let disableParentSwiper = true;
2944    if (!swiper.enabled) return;
2945
2946    // Ignore event if the target or its parents have the swiper-no-mousewheel class
2947    if (event.target.closest(\`.\${swiper.params.mousewheel.noMousewheelClass}\`)) return;
2948    const params = swiper.params.mousewheel;
2949    if (swiper.params.cssMode) {
2950      e.preventDefault();
2951    }
2952    let targetEl = swiper.el;
2953    if (swiper.params.mousewheel.eventsTarget !== 'container') {
2954      targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);
2955    }
2956    const targetElContainsTarget = targetEl && targetEl.contains(e.target);
2957    if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true;
2958    if (e.originalEvent) e = e.originalEvent; // jquery fix
2959    let delta = 0;
2960    const rtlFactor = swiper.rtlTranslate ? -1 : 1;
2961    const data = normalize(e);
2962    if (params.forceToAxis) {
2963      if (swiper.isHorizontal()) {
2964        if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;
2965      } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;
2966    } else {
2967      delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;
2968    }
2969    if (delta === 0) return true;
2970    if (params.invert) delta = -delta;
2971
2972    // Get the scroll positions
2973    let positions = swiper.getTranslate() + delta * params.sensitivity;
2974    if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();
2975    if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();
2976
2977    // When loop is true:
2978    //     the disableParentSwiper will be true.
2979    // When loop is false:
2980    //     if the scroll positions is not on edge,
2981    //     then the disableParentSwiper will be true.
2982    //     if the scroll on edge positions,
2983    //     then the disableParentSwiper will be false.
2984    disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());
2985    if (disableParentSwiper && swiper.params.nested) e.stopPropagation();
2986    if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {
2987      // Register the new event in a variable which stores the relevant data
2988      const newEvent = {
2989        time: (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.f)(),
2990        delta: Math.abs(delta),
2991        direction: Math.sign(delta),
2992        raw: event
2993      };
2994
2995      // Keep the most recent events
2996      if (recentWheelEvents.length >= 2) {
2997        recentWheelEvents.shift(); // only store the last N events
2998      }
2999
3000      const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;
3001      recentWheelEvents.push(newEvent);
3002
3003      // If there is at least one previous recorded event:
3004      //   If direction has changed or
3005      //   if the scroll is quicker than the previous one:
3006      //     Animate the slider.
3007      // Else (this is the first time the wheel is moved):
3008      //     Animate the slider.
3009      if (prevEvent) {
3010        if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {
3011          animateSlider(newEvent);
3012        }
3013      } else {
3014        animateSlider(newEvent);
3015      }
3016
3017      // If it's time to release the scroll:
3018      //   Return now so you don't hit the preventDefault.
3019      if (releaseScroll(newEvent)) {
3020        return true;
3021      }
3022    } else {
3023      // Freemode or scrollContainer:
3024
3025      // If we recently snapped after a momentum scroll, then ignore wheel events
3026      // to give time for the deceleration to finish. Stop ignoring after 500 msecs
3027      // or if it's a new scroll (larger delta or inverse sign as last event before
3028      // an end-of-momentum snap).
3029      const newEvent = {
3030        time: (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.f
vendor: 6,385 bytes, lines 3030-3171
3030)(),
3031        delta: Math.abs(delta),
3032        direction: Math.sign(delta)
3033      };
3034      const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;
3035      if (!ignoreWheelEvents) {
3036        lastEventBeforeSnap = undefined;
3037        let position = swiper.getTranslate() + delta * params.sensitivity;
3038        const wasBeginning = swiper.isBeginning;
3039        const wasEnd = swiper.isEnd;
3040        if (position >= swiper.minTranslate()) position = swiper.minTranslate();
3041        if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();
3042        swiper.setTransition(0);
3043        swiper.setTranslate(position);
3044        swiper.updateProgress();
3045        swiper.updateActiveIndex();
3046        swiper.updateSlidesClasses();
3047        if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {
3048          swiper.updateSlidesClasses();
3049        }
3050        if (swiper.params.loop) {
3051          swiper.loopFix({
3052            direction: newEvent.direction < 0 ? 'next' : 'prev',
3053            byMousewheel: true
3054          });
3055        }
3056        if (swiper.params.freeMode.sticky) {
3057          // When wheel scrolling starts with sticky (aka snap) enabled, then detect
3058          // the end of a momentum scroll by storing recent (N=15?) wheel events.
3059          // 1. do all N events have decreasing or same (absolute value) delta?
3060          // 2. did all N events arrive in the last M (M=500?) msecs?
3061          // 3. does the earliest event have an (absolute value) delta that's
3062          //    at least P (P=1?) larger than the most recent event's delta?
3063          // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?
3064          // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration.
3065          // Snap immediately and ignore remaining wheel events in this scroll.
3066          // See comment above for "remaining wheel events in this scroll" determination.
3067          // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.
3068          clearTimeout(timeout);
3069          timeout = undefined;
3070          if (recentWheelEvents.length >= 15) {
3071            recentWheelEvents.shift(); // only store the last N events
3072          }
3073
3074          const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;
3075          const firstEvent = recentWheelEvents[0];
3076          recentWheelEvents.push(newEvent);
3077          if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {
3078            // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.
3079            recentWheelEvents.splice(0);
3080          } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {
3081            // We're at the end of the deceleration of a momentum scroll, so there's no need
3082            // to wait for more events. Snap ASAP on the next tick.
3083            // Also, because there's some remaining momentum we'll bias the snap in the
3084            // direction of the ongoing scroll because it's better UX for the scroll to snap
3085            // in the same direction as the scroll instead of reversing to snap.  Therefore,
3086            // if it's already scrolled more than 20% in the current direction, keep going.
3087            const snapToThreshold = delta > 0 ? 0.8 : 0.2;
3088            lastEventBeforeSnap = newEvent;
3089            recentWheelEvents.splice(0);
3090            timeout = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => {
3091              if (swiper.destroyed || !swiper.params) return;
3092              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
3093            }, 0); // no delay; move on next tick
3094          }
3095
3096          if (!timeout) {
3097            // if we get here, then we haven't detected the end of a momentum scroll, so
3098            // we'll consider a scroll "complete" when there haven't been any wheel events
3099            // for 500ms.
3100            timeout = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => {
3101              if (swiper.destroyed || !swiper.params) return;
3102              const snapToThreshold = 0.5;
3103              lastEventBeforeSnap = newEvent;
3104              recentWheelEvents.splice(0);
3105              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
3106            }, 500);
3107          }
3108        }
3109
3110        // Emit event
3111        if (!ignoreWheelEvents) emit('scroll', e);
3112
3113        // Stop autoplay
3114        if (swiper.params.autoplay && swiper.params.autoplay.disableOnInteraction) swiper.autoplay.stop();
3115        // Return page scroll on edge positions
3116        if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) {
3117          return true;
3118        }
3119      }
3120    }
3121    if (e.preventDefault) e.preventDefault();else e.returnValue = false;
3122    return false;
3123  }
3124  function events(method) {
3125    let targetEl = swiper.el;
3126    if (swiper.params.mousewheel.eventsTarget !== 'container') {
3127      targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);
3128    }
3129    targetEl[method]('mouseenter', handleMouseEnter);
3130    targetEl[method]('mouseleave', handleMouseLeave);
3131    targetEl[method]('wheel', handle);
3132  }
3133  function enable() {
3134    if (swiper.params.cssMode) {
3135      swiper.wrapperEl.removeEventListener('wheel', handle);
3136      return true;
3137    }
3138    if (swiper.mousewheel.enabled) return false;
3139    events('addEventListener');
3140    swiper.mousewheel.enabled = true;
3141    return true;
3142  }
3143  function disable() {
3144    if (swiper.params.cssMode) {
3145      swiper.wrapperEl.addEventListener(event, handle);
3146      return true;
3147    }
3148    if (!swiper.mousewheel.enabled) return false;
3149    events('removeEventListener');
3150    swiper.mousewheel.enabled = false;
3151    return true;
3152  }
3153  on('init', () => {
3154    if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {
3155      disable();
3156    }
3157    if (swiper.params.mousewheel.enabled) enable();
3158  });
3159  on('destroy', () => {
3160    if (swiper.params.cssMode) {
3161      enable();
3162    }
3163    if (swiper.mousewheel.enabled) disable();
3164  });
3165  Object.assign(swiper.mousewheel, {
3166    enable,
3167    disable
3168  });
3169}
3170
3171
3172//# sourceURL=[module]
3173//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9tb2R1bGVzL21vdXNld2hlZWwubWpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUE4RDtBQUNBOztBQUU5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixpQkFBaUIsNkRBQVM7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLG9EQUFHO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQSxnQkFBZ0I7O0FBRWhCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrREFBa0Qsb0RBQUc7QUFDckQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQixvREFBRztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxpQ0FBaUMsMkNBQTJDO0FBQzVFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0RkFBNEY7QUFDNUYsUUFBUSw2RUFBNkU7QUFDckYsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsb0RBQUc7QUFDakI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG1DQUFtQztBQUNuQzs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxvREFBRztBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDO0FBQ3ZDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0Isb0RBQVE7QUFDOUI7QUFDQTtBQUNBLGFBQWEsTUFBTSxhQUFhO0FBQ2hDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLG9EQUFRO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVpQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvc3dpcGVyL21vZHVsZXMvbW91c2V3aGVlbC5tanM/YWIxZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhIGFzIGdldFdpbmRvdyB9IGZyb20gJy4uL3NoYXJlZC9zc3Itd2luZG93LmVzbS5tanMnO1xuaW1wb3J0IHsgbiBhcyBuZXh0VGljaywgZiBhcyBub3cgfSBmcm9tICcuLi9zaGFyZWQvdXRpbHMubWpzJztcblxuLyogZXNsaW50LWRpc2FibGUgY29uc2lzdGVudC1yZXR1cm4gKi9cbmZ1bmN0aW9uIE1vdXNld2hlZWwoX3JlZikge1xuICBsZXQge1xuICAgIHN3aXBlcixcbiAgICBleHRlbmRQYXJhbXMsXG4gICAgb24sXG4gICAgZW1pdFxuICB9ID0gX3JlZj
vendor: 20,012 bytes, line 3173
3173tcbiAgY29uc3Qgd2luZG93ID0gZ2V0V2luZG93KCk7XG4gIGV4dGVuZFBhcmFtcyh7XG4gICAgbW91c2V3aGVlbDoge1xuICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgICByZWxlYXNlT25FZGdlczogZmFsc2UsXG4gICAgICBpbnZlcnQ6IGZhbHNlLFxuICAgICAgZm9yY2VUb0F4aXM6IGZhbHNlLFxuICAgICAgc2Vuc2l0aXZpdHk6IDEsXG4gICAgICBldmVudHNUYXJnZXQ6ICdjb250YWluZXInLFxuICAgICAgdGhyZXNob2xkRGVsdGE6IG51bGwsXG4gICAgICB0aHJlc2hvbGRUaW1lOiBudWxsLFxuICAgICAgbm9Nb3VzZXdoZWVsQ2xhc3M6ICdzd2lwZXItbm8tbW91c2V3aGVlbCdcbiAgICB9XG4gIH0pO1xuICBzd2lwZXIubW91c2V3aGVlbCA9IHtcbiAgICBlbmFibGVkOiBmYWxzZVxuICB9O1xuICBsZXQgdGltZW91dDtcbiAgbGV0IGxhc3RTY3JvbGxUaW1lID0gbm93KCk7XG4gIGxldCBsYXN0RXZlbnRCZWZvcmVTbmFwO1xuICBjb25zdCByZWNlbnRXaGVlbEV2ZW50cyA9IFtdO1xuICBmdW5jdGlvbiBub3JtYWxpemUoZSkge1xuICAgIC8vIFJlYXNvbmFibGUgZGVmYXVsdHNcbiAgICBjb25zdCBQSVhFTF9TVEVQID0gMTA7XG4gICAgY29uc3QgTElORV9IRUlHSFQgPSA0MDtcbiAgICBjb25zdCBQQUdFX0hFSUdIVCA9IDgwMDtcbiAgICBsZXQgc1ggPSAwO1xuICAgIGxldCBzWSA9IDA7IC8vIHNwaW5YLCBzcGluWVxuICAgIGxldCBwWCA9IDA7XG4gICAgbGV0IHBZID0gMDsgLy8gcGl4ZWxYLCBwaXhlbFlcblxuICAgIC8vIExlZ2FjeVxuICAgIGlmICgnZGV0YWlsJyBpbiBlKSB7XG4gICAgICBzWSA9IGUuZGV0YWlsO1xuICAgIH1cbiAgICBpZiAoJ3doZWVsRGVsdGEnIGluIGUpIHtcbiAgICAgIHNZID0gLWUud2hlZWxEZWx0YSAvIDEyMDtcbiAgICB9XG4gICAgaWYgKCd3aGVlbERlbHRhWScgaW4gZSkge1xuICAgICAgc1kgPSAtZS53aGVlbERlbHRhWSAvIDEyMDtcbiAgICB9XG4gICAgaWYgKCd3aGVlbERlbHRhWCcgaW4gZSkge1xuICAgICAgc1ggPSAtZS53aGVlbERlbHRhWCAvIDEyMDtcbiAgICB9XG5cbiAgICAvLyBzaWRlIHNjcm9sbGluZyBvbiBGRiB3aXRoIERPTU1vdXNlU2Nyb2xsXG4gICAgaWYgKCdheGlzJyBpbiBlICYmIGUuYXhpcyA9PT0gZS5IT1JJWk9OVEFMX0FYSVMpIHtcbiAgICAgIHNYID0gc1k7XG4gICAgICBzWSA9IDA7XG4gICAgfVxuICAgIHBYID0gc1ggKiBQSVhFTF9TVEVQO1xuICAgIHBZID0gc1kgKiBQSVhFTF9TVEVQO1xuICAgIGlmICgnZGVsdGFZJyBpbiBlKSB7XG4gICAgICBwWSA9IGUuZGVsdGFZO1xuICAgIH1cbiAgICBpZiAoJ2RlbHRhWCcgaW4gZSkge1xuICAgICAgcFggPSBlLmRlbHRhWDtcbiAgICB9XG4gICAgaWYgKGUuc2hpZnRLZXkgJiYgIXBYKSB7XG4gICAgICAvLyBpZiB1c2VyIHNjcm9sbHMgd2l0aCBzaGlmdCBoZSB3YW50cyBob3Jpem9udGFsIHNjcm9sbFxuICAgICAgcFggPSBwWTtcbiAgICAgIHBZID0gMDtcbiAgICB9XG4gICAgaWYgKChwWCB8fCBwWSkgJiYgZS5kZWx0YU1vZGUpIHtcbiAgICAgIGlmIChlLmRlbHRhTW9kZSA9PT0gMSkge1xuICAgICAgICAvLyBkZWx0YSBpbiBMSU5FIHVuaXRzXG4gICAgICAgIHBYICo9IExJTkVfSEVJR0hUO1xuICAgICAgICBwWSAqPSBMSU5FX0hFSUdIVDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGRlbHRhIGluIFBBR0UgdW5pdHNcbiAgICAgICAgcFggKj0gUEFHRV9IRUlHSFQ7XG4gICAgICAgIHBZICo9IFBBR0VfSEVJR0hUO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZhbGwtYmFjayBpZiBzcGluIGNhbm5vdCBiZSBkZXRlcm1pbmVkXG4gICAgaWYgKHBYICYmICFzWCkge1xuICAgICAgc1ggPSBwWCA8IDEgPyAtMSA6IDE7XG4gICAgfVxuICAgIGlmIChwWSAmJiAhc1kpIHtcbiAgICAgIHNZID0gcFkgPCAxID8gLTEgOiAxO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgc3Bpblg6IHNYLFxuICAgICAgc3Bpblk6IHNZLFxuICAgICAgcGl4ZWxYOiBwWCxcbiAgICAgIHBpeGVsWTogcFlcbiAgICB9O1xuICB9XG4gIGZ1bmN0aW9uIGhhbmRsZU1vdXNlRW50ZXIoKSB7XG4gICAgaWYgKCFzd2lwZXIuZW5hYmxlZCkgcmV0dXJuO1xuICAgIHN3aXBlci5tb3VzZUVudGVyZWQgPSB0cnVlO1xuICB9XG4gIGZ1bmN0aW9uIGhhbmRsZU1vdXNlTGVhdmUoKSB7XG4gICAgaWYgKCFzd2lwZXIuZW5hYmxlZCkgcmV0dXJuO1xuICAgIHN3aXBlci5tb3VzZUVudGVyZWQgPSBmYWxzZTtcbiAgfVxuICBmdW5jdGlvbiBhbmltYXRlU2xpZGVyKG5ld0V2ZW50KSB7XG4gICAgaWYgKHN3aXBlci5wYXJhbXMubW91c2V3aGVlbC50aHJlc2hvbGREZWx0YSAmJiBuZXdFdmVudC5kZWx0YSA8IHN3aXBlci5wYXJhbXMubW91c2V3aGVlbC50aHJlc2hvbGREZWx0YSkge1xuICAgICAgLy8gUHJldmVudCBpZiBkZWx0YSBvZiB3aGVlbCBzY3JvbGwgZGVsdGEgaXMgYmVsb3cgY29uZmlndXJlZCB0aHJlc2hvbGRcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHN3aXBlci5wYXJhbXMubW91c2V3aGVlbC50aHJlc2hvbGRUaW1lICYmIG5vdygpIC0gbGFzdFNjcm9sbFRpbWUgPCBzd2lwZXIucGFyYW1zLm1vdXNld2hlZWwudGhyZXNob2xkVGltZSkge1xuICAgICAgLy8gUHJldmVudCBpZiB0aW1lIGJldHdlZW4gc2Nyb2xscyBpcyBiZWxvdyBjb25maWd1cmVkIHRocmVzaG9sZFxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIElmIHRoZSBtb3ZlbWVudCBpcyBOT1QgYmlnIGVub3VnaCBhbmRcbiAgICAvLyBpZiB0aGUgbGFzdCB0aW1lIHRoZSB1c2VyIHNjcm9sbGVkIHdhcyB0b28gY2xvc2UgdG8gdGhlIGN1cnJlbnQgb25lIChhdm9pZCBjb250aW51b3VzbHkgdHJpZ2dlcmluZyB0aGUgc2xpZGVyKTpcbiAgICAvLyAgIERvbid0IGdvIGFueSBmdXJ0aGVyIChhdm9pZCBpbnNpZ25pZmljYW50IHNjcm9sbCBtb3ZlbWVudCkuXG4gICAgaWYgKG5ld0V2ZW50LmRlbHRhID49IDYgJiYgbm93KCkgLSBsYXN0U2Nyb2xsVGltZSA8IDYwKSB7XG4gICAgICAvLyBSZXR1cm4gZmFsc2UgYXMgYSBkZWZhdWx0XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgLy8gSWYgdXNlciBpcyBzY3JvbGxpbmcgdG93YXJkcyB0aGUgZW5kOlxuICAgIC8vICAgSWYgdGhlIHNsaWRlciBoYXNuJ3QgaGl0IHRoZSBsYXRlc3Qgc2xpZGUgb3JcbiAgICAvLyAgIGlmIHRoZSBzbGlkZXIgaXMgYSBsb29wIGFuZFxuICAgIC8vICAgaWYgdGhlIHNsaWRlciBpc24ndCBtb3ZpbmcgcmlnaHQgbm93OlxuICAgIC8vICAgICBHbyB0byBuZXh0IHNsaWRlIGFuZFxuICAgIC8vICAgICBlbWl0IGEgc2Nyb2xsIGV2ZW50LlxuICAgIC8vIEVsc2UgKHRoZSB1c2VyIGlzIHNjcm9sbGluZyB0b3dhcmRzIHRoZSBiZWdpbm5pbmcpIGFuZFxuICAgIC8vIGlmIHRoZSBzbGlkZXIgaGFzbid0IGhpdCB0aGUgZmlyc3Qgc2xpZGUgb3JcbiAgICAvLyBpZiB0aGUgc2xpZGVyIGlzIGEgbG9vcCBhbmRcbiAgICAvLyBpZiB0aGUgc2xpZGVyIGlzbid0IG1vdmluZyByaWdodCBub3c6XG4gICAgLy8gICBHbyB0byBwcmV2IHNsaWRlIGFuZFxuICAgIC8vICAgZW1pdCBhIHNjcm9sbCBldmVudC5cbiAgICBpZiAobmV3RXZlbnQuZGlyZWN0aW9uIDwgMCkge1xuICAgICAgaWYgKCghc3dpcGVyLmlzRW5kIHx8IHN3aXBlci5wYXJhbXMubG9vcCkgJiYgIXN3aXBlci5hbmltYXRpbmcpIHtcbiAgICAgICAgc3dpcGVyLnNsaWRlTmV4dCgpO1xuICAgICAgICBlbWl0KCdzY3JvbGwnLCBuZXdFdmVudC5yYXcpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoKCFzd2lwZXIuaXNCZWdpbm5pbmcgfHwgc3dpcGVyLnBhcmFtcy5sb29wKSAmJiAhc3dpcGVyLmFuaW1hdGluZykge1xuICAgICAgc3dpcGVyLnNsaWRlUHJldigpO1xuICAgICAgZW1pdCgnc2Nyb2xsJywgbmV3RXZlbnQucmF3KTtcbiAgICB9XG4gICAgLy8gSWYgeW91IGdvdCBoZXJlIGlzIGJlY2F1c2UgYW4gYW5pbWF0aW9uIGhhcyBiZWVuIHRyaWdnZXJlZCBzbyBzdG9yZSB0aGUgY3VycmVudCB0aW1lXG4gICAgbGFzdFNjcm9sbFRpbWUgPSBuZXcgd2luZG93LkRhdGUoKS5nZXRUaW1lKCk7XG4gICAgLy8gUmV0dXJuIGZhbHNlIGFzIGEgZGVmYXVsdFxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBmdW5jdGlvbiByZWxlYXNlU2Nyb2xsKG5ld0V2ZW50KSB7XG4gICAgY29uc3QgcGFyYW1zID0gc3dpcGVyLnBhcmFtcy5tb3VzZXdoZWVsO1xuICAgIGlmIChuZXdFdmVudC5kaXJlY3Rpb24gPCAwKSB7XG4gICAgICBpZiAoc3dpcGVyLmlzRW5kICYmICFzd2lwZXIucGFyYW1zLmxvb3AgJiYgcGFyYW1zLnJlbGVhc2VPbkVkZ2VzKSB7XG4gICAgICAgIC8vIFJldHVybiB0cnVlIHRvIGFuaW1hdGUgc2Nyb2xsIG9uIGVkZ2VzXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoc3dpcGVyLmlzQmVnaW5uaW5nICYmICFzd2lwZXIucGFyYW1zLmxvb3AgJiYgcGFyYW1zLnJlbGVhc2VPbkVkZ2VzKSB7XG4gICAgICAvLyBSZXR1cm4gdHJ1ZSB0byBhbmltYXRlIHNjcm9sbCBvbiBlZGdlc1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBmdW5jdGlvbiBoYW5kbGUoZXZlbnQpIHtcbiAgICBsZXQgZSA9IGV2ZW50O1xuICAgIGxldCBkaXNhYmxlUGFyZW50U3dpcGVyID0gdHJ1ZTtcbiAgICBpZiAoIXN3aXBlci5lbmFibGVkKSByZXR1cm47XG5cbiAgICAvLyBJZ25vcmUgZXZlbnQgaWYgdGhlIHRhcmdldCBvciBpdHMgcGFyZW50cyBoYXZlIHRoZSBzd2lwZXItbm8tbW91c2V3aGVlbCBjbGFzc1xuICAgIGlmIChldmVudC50YXJnZXQuY2xvc2VzdChgLiR7c3dpcGVyLnBhcmFtcy5tb3VzZXdoZWVsLm5vTW91c2V3aGVlbENsYXNzfWApKSByZXR1cm47XG4gICAgY29uc3QgcGFyYW1zID0gc3dpcGVyLnBhcmFtcy5tb3VzZXdoZWVsO1xuICAgIGlmIChzd2lwZXIucGFyYW1zLmNzc01vZGUpIHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgbGV0IHRhcmdldEVsID0gc3dpcGVyLmVsO1xuICAgIGlmIChzd2lwZXIucGFyYW1zLm1vdXNld2hlZWwuZXZlbnRzVGFyZ2V0ICE9PSAnY29udGFpbmVyJykge1xuICAgICAgdGFyZ2V0RWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHN3aXBlci5wYXJhbXMubW91c2V3aGVlbC5ldmVudHNUYXJnZXQpO1xuICAgIH1cbiAgICBjb25zdCB0YXJnZXRFbENvbnRhaW5zVGFyZ2V0ID0gdGFyZ2V0RWwgJiYgdGFyZ2V0RWwuY29udGFpbnMoZS50YXJnZXQpO1xuICAgIGlmICghc3dpcGVyLm1vdXNlRW50ZXJlZCAmJiAhdGFyZ2V0RWxDb250YWluc1RhcmdldCAmJiAhcGFyYW1zLnJlbGVhc2VPbkVkZ2VzKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoZS5vcmlnaW5hbEV2ZW50KSBlID0gZS5vcmlnaW5hbEV2ZW50OyAvLyBqcXVlcnkgZml4XG4gICAgbGV0IGRlbHRhID0gMDtcbiAgICBjb25zdCBydGxGYWN0b3IgPSBzd2lwZXIucnRsVHJhbnNsYXRlID8gLTEgOiAxO1xuICAgIGNvbnN0IGRhdGEgPSBub3JtYWxpemUoZSk7XG4gICAgaWYgKHBhcmFtcy5mb3JjZVRvQXhpcykge1xuICAgICAgaWYgKHN3aXBlci5pc0hvcml6b250YWwoKSkge1xuICAgICAgICBpZiAoTWF0aC5hYnMoZGF0YS5waXhlbFgpID4gTWF0aC5hYnMoZGF0YS5waXhlbFkpKSBkZWx0YSA9IC1kYXRhLnBpeGVsWCAqIHJ0bEZhY3RvcjtlbHNlIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIGlmIChNYXRoLmFicyhkYXRhLnBpeGVsWSkgPiBNYXRoLmFicyhkYXRhLnBpeGVsWCkpIGRlbHRhID0gLWRhdGEucGl4ZWxZO2Vsc2UgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlbHRhID0gTWF0aC5hYnMoZGF0YS5waXhlbFgpID4gTWF0aC5hYnMoZGF0YS5waXhlbFkpID8gLWRhdGEucGl4ZWxYICogcnRsRmFjdG9yIDogLWRhdGEucGl4ZWxZO1xuICAgIH1cbiAgICBpZiAoZGVsdGEgPT09IDApIHJldHVybiB0cnVlO1xuICAgIGlmIChwYXJhbXMuaW52ZXJ0KSBkZWx0YSA9IC1kZWx0YTtcblxuICAgIC8vIEdldCB0aGUgc2Nyb2xsIHBvc2l0aW9uc1xuICAgIGxldCBwb3NpdGlvbnMgPSBzd2lwZXIuZ2V0VHJhbnNsYXRlKCkgKyBkZWx0YSAqIHBhcmFtcy5zZW5zaXRpdml0eTtcbiAgICBpZiAocG9zaXRpb25zID49IHN3aXBlci5taW5UcmFuc2xhdGUoKSkgcG9zaXRpb25zID0gc3dpcGVyLm1pblRyYW5zbGF0ZSgpO1xuICAgIGlmIChwb3NpdGlvbnMgPD0gc3dpcGVyLm1heFRyYW5zbGF0ZSgpKSBwb3NpdGlvbnMgPSBzd2lwZXIubWF4VHJhbnNsYXRlKCk7XG5cbiAgICAvLyBXaGVuIGxvb3AgaXMgdHJ1ZTpcbiAgICAvLyAgICAgdGhlIGRpc2FibGVQYXJlbnRTd2lwZXIgd2lsbCBiZSB0cnVlLlxuICAgIC8vIFdoZW4gbG9vcCBpcyBmYWxzZTpcbiAgICAvLyAgICAgaWYgdGhlIHNjcm9sbCBwb3NpdGlvbnMgaXMgbm90IG9uIGVkZ2UsXG4gICAgLy8gICAgIHRoZW4gdGhlIGRpc2FibGVQYXJlbnRTd2lwZXIgd2lsbCBiZSB0cnVlLlxuICAgIC8vICAgICBpZiB0aGUgc2Nyb2xsIG9uIGVkZ2UgcG9zaXRpb25zLFxuICAgIC8vICAgICB0aGVuIHRoZSBkaXNhYmxlUGFyZW50U3dpcGVyIHdpbGwgYmUgZmFsc2UuXG4gICAgZGlzYWJsZVBhcmVudFN3aXBlciA9IHN3aXBlci5wYXJhbXMubG9vcCA/IHRydWUgOiAhKHBvc2l0aW9ucyA9PT0gc3dpcGVyLm1pblRyYW5zbGF0ZSgpIHx8IHBvc2l0aW9ucyA9PT0gc3dpcGVyLm1heFRyYW5zbGF0ZSgpKTtcbiAgICBpZiAoZGlzYWJsZVBhcmVudFN3aXBlciAmJiBzd2lwZXIucGFyYW1zLm5lc3RlZCkgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAoIXN3aXBlci5wYXJhbXMuZnJlZU1vZGUgfHwgIXN3aXBlci5wYXJhbXMuZnJlZU1vZGUuZW5hYmxlZCkge1xuICAgICAgLy8gUmVnaXN0ZXIgdGhlIG5ldyBldmVudCBpbiBhIHZhcmlhYmxlIHdoaWNoIHN0b3JlcyB0aGUgcmVsZXZhbnQgZGF0YVxuICAgICAgY29uc3QgbmV3RXZlbnQgPSB7XG4gICAgICAgIHRpbWU6IG5vdygpLFxuICAgICAgICBkZWx0YTogTWF0aC5hYnMoZGVsdGEpLFxuICAgICAgICBkaXJlY3Rpb246IE1hdGguc2lnbihkZWx0YSksXG4gICAgICAgIHJhdzogZXZlbnRcbiAgICAgIH07XG5cbiAgICAgIC8vIEtlZXAgdGhlIG1vc3QgcmVjZW50IGV2ZW50c1xuICAgICAgaWYgKHJlY2VudFdoZWVsRXZlbnRzLmxlbmd0aCA+PSAyKSB7XG4gICAgICAgIHJlY2VudFdoZWVsRXZlbnRzLnNoaWZ0KCk7IC8vIG9ubHkgc3RvcmUgdGhlIGxhc3QgTiBldmVudHNcbiAgICAgIH1cblxuICAgICAgY29uc3QgcHJldkV2ZW50ID0gcmVjZW50V2hlZWxFdmVudHMubGVuZ3RoID8gcmVjZW50V2hlZWxFdmVudHNbcmVjZW50V2hlZWxFdmVudHMubGVuZ3RoIC0gMV0gOiB1bmRlZmluZWQ7XG4gICAgICByZWNlbnRXaGVlbEV2ZW50cy5wdXNoKG5ld0V2ZW50KTtcblxuICAgICAgLy8gSWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHByZXZpb3VzIHJlY29yZGVkIGV2ZW50OlxuICAgICAgLy8gICBJZiBkaXJlY3Rpb24gaGFzIGNoYW5nZWQgb3JcbiAgICAgIC8vICAgaWYgdGhlIHNjcm9sbCBpcyBxdWlja2VyIHRoYW4gdGhlIHByZXZpb3VzIG9uZTpcbiAgICAgIC8vICAgICBBbmltYXRlIHRoZSBzbGlkZXIuXG4gICAgICAvLyBFbHNlICh0aGlzIGlzIHRoZSBmaXJzdCB0aW1lIHRoZSB3aGVlbCBpcyBtb3ZlZCk6XG4gICAgICAvLyAgICAgQW5pbWF0ZSB0aGUgc2xpZGVyLlxuICAgICAgaWYgKHByZXZFdmVudCkge1xuICAgICAgICBpZiAobmV3RXZlbnQuZGlyZWN0aW9uICE9PSBwcmV2RXZlbnQuZGlyZWN0aW9uIHx8IG5ld0V2ZW50LmRlbHRhID4gcHJldkV2ZW50LmRlbHRhIHx8IG5ld0V2ZW50LnRpbWUgPiBwcmV2RXZlbnQudGltZSArIDE1MCkge1xuICAgICAgICAgIGFuaW1hdGVTbGlkZXIobmV3RXZlbnQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhbmltYXRlU2xpZGVyKG5ld0V2ZW50KTtcbiAgICAgIH1cblxuICAgICAgLy8gSWYgaXQncyB0aW1lIHRvIHJlbGVhc2UgdGhlIHNjcm9sbDpcbiAgICAgIC8vICAgUmV0dXJuIG5vdyBzbyB5b3UgZG9uJ3QgaGl0IHRoZSBwcmV2ZW50RGVmYXVsdC5cbiAgICAgIGlmIChyZWxlYXNlU2Nyb2xsKG5ld0V2ZW50KSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRnJlZW1vZGUgb3Igc2Nyb2xsQ29udGFpbmVyOlxuXG4gICAgICAvLyBJZiB3ZSByZWNlbnRseSBzbmFwcGVkIGFmdGVyIGEgbW9tZW50dW0gc2Nyb2xsLCB0aGVuIGlnbm9yZSB3aGVlbCBldmVudHNcbiAgICAgIC8vIHRvIGdpdmUgdGltZSBmb3IgdGhlIGRlY2VsZXJhdGlvbiB0byBmaW5pc2guIFN0b3AgaWdub3JpbmcgYWZ0ZXIgNTAwIG1zZWNzXG4gICAgICAvLyBvciBpZiBpdCdzIGEgbmV3IHNjcm9sbCAobGFyZ2VyIGRlbHRhIG9yIGludmVyc2Ugc2lnbiBhcyBsYXN0IGV2ZW50IGJlZm9yZVxuICAgICAgLy8gYW4gZW5kLW9mLW1vbWVudHVtIHNuYXApLlxuICAgICAgY29uc3QgbmV3RXZlbnQgPSB7XG4gICAgICAgIHRpbWU6IG5vdygpLFxuICAgICAgICBkZWx0YTogTWF0aC5hYnMoZGVsdGEpLFxuICAgICAgICBkaXJlY3Rpb246IE1hdGguc2lnbihkZWx0YSlcbiAgICAgIH07XG4gICAgICBjb25zdCBpZ25vcmVXaGVlbEV2ZW50cyA9IGxhc3RFdmVudEJlZm9yZVNuYXAgJiYgbmV3RXZlbnQudGltZSA8IGxhc3RFdmVudEJlZm9yZVNuYXAudGltZSArIDUwMCAmJiBuZXdFdmVudC5kZWx0YSA8PSBsYXN0RXZlbnRCZWZvcmVTbmFwLmRlbHRhICYmIG5ld0V2ZW50LmRpcmVjdGlvbiA9PT0gbGFzdEV2ZW50QmVmb3JlU25hcC5kaXJlY3Rpb247XG4gICAgICBpZiAoIWlnbm9yZVdoZWVsRXZlbnRzKSB7XG4gICAgICAgIGxhc3RFdmVudEJlZm9yZVNuYXAgPSB1bmRlZmluZWQ7XG4gICAgICAgIGxldCBwb3NpdGlvbiA9IHN3aXBlci5nZXRUcmFuc2xhdGUoKSArIGRlbHRhICogcGFyYW1zLnNlbnNpdGl2aXR5O1xuICAgICAgICBjb25zdCB3YXNCZWdpbm5pbmcgPSBzd2lwZXIuaXNCZWdpbm5pbmc7XG4gICAgICAgIGNvbnN0IHdhc0VuZCA9IHN3aXBlci5pc0VuZDtcbiAgICAgICAgaWYgKHBvc2l0aW9uID49IHN3aXBlci5taW5UcmFuc2xhdGUoKSkgcG9zaXRpb24gPSBzd2lwZXIubWluVHJhbnNsYXRlKCk7XG4gICAgICAgIGlmIChwb3NpdGlvbiA8PSBzd2lwZXIubWF4VHJhbnNsYXRlKCkpIHBvc2l0aW9uID0gc3dpcGVyLm1heFRyYW5zbGF0ZSgpO1xuICAgICAgICBzd2lwZXIuc2V0VHJhbnNpdGlvbigwKTtcbiAgICAgICAgc3dpcGVyLnNldFRyYW5zbGF0ZShwb3NpdGlvbik7XG4gICAgICAgIHN3aXBlci51cGRhdGVQcm9ncmVzcygpO1xuICAgICAgICBzd2lwZXIudXBkYXRlQWN0aXZlSW5kZXgoKTtcbiAgICAgICAgc3dpcGVyLnVwZGF0ZVNsaWRlc0NsYXNzZXMoKTtcbiAgICAgICAgaWYgKCF3YXNCZWdpbm5pbmcgJiYgc3dpcGVyLmlzQmVnaW5uaW5nIHx8ICF3YXNFbmQgJiYgc3dpcGVyLmlzRW5kKSB7XG4gICAgICAgICAgc3dpcGVyLnVwZGF0ZVNsaWRlc0NsYXNzZXMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3dpcGVyLnBhcmFtcy5sb29wKSB7XG4gICAgICAgICAgc3dpcGVyLmxvb3BGaXgoe1xuICAgICAgICAgICAgZGlyZWN0aW9uOiBuZXdFdmVudC5kaXJlY3Rpb24gPCAwID8gJ25leHQnIDogJ3ByZXYnLFxuICAgICAgICAgICAgYnlNb3VzZXdoZWVsOiB0cnVlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN3aXBlci5wYXJhbXMuZnJlZU1vZGUuc3RpY2t5KSB7XG4gICAgICAgICAgLy8gV2hlbiB3aGVlbCBzY3JvbGxpbmcgc3RhcnRzIHdpdGggc3RpY2t5IChha2Egc25hcCkgZW5hYmxlZCwgdGhlbiBkZXRlY3RcbiAgICAgICAgICAvLyB0aGUgZW5kIG9mIGEgbW9tZW50dW0gc2Nyb2xsIGJ5IHN0b3JpbmcgcmVjZW50IChOPTE1Pykgd2hlZWwgZXZlbnRzLlxuICAgICAgICAgIC8vIDEuIGRvIGFsbCBOIGV2ZW50cyBoYXZlIGRlY3JlYXNpbmcgb3Igc2FtZSAoYWJzb2x1dGUgdmFsdWUpIGRlbHRhP1xuICAgICAgICAgIC8vIDIuIGRpZCBhbGwgTiBldmVudHMgYXJyaXZlIGluIHRoZSBsYXN0IE0gKE09NTAwPykgbXNlY3M/XG4gICAgICAgICAgLy8gMy4gZG9lcyB0aGUgZWFybGllc3QgZXZlbnQgaGF2ZSBhbiAoYWJzb2x1dGUgdmFsdWUpIGRlbHRhIHRoYXQnc1xuICAgICAgICAgIC8vICAgIGF0IGxlYXN0IFAgKFA9MT8pIGxhcmdlciB0aGFuIHRoZSBtb3N0IHJlY2VudCBldmVudCdzIGRlbHRhP1xuICAgICAgICAgIC8vIDQuIGRvZXMgdGhlIGxhdGVzdCBldmVudCBoYXZlIGEgZGVsdGEgdGhhdCdzIHNtYWxsZXIgdGhhbiBRIChRPTY/KSBwaXhlbHM/XG4gICAgICAgICAgLy8gSWYgMS00IGFyZSBcInllc1wiIHRoZW4gd2UncmUgbmVhciB0aGUgZW5kIG9mIGEgbW9tZW50dW0gc2Nyb2xsIGRlY2VsZXJhdGlvbi5cbiAgICAgICAgICAvLyBTbmFwIGltbWVkaWF0ZWx5IGFuZCBpZ25vcmUgcmVtYWluaW5nIHdoZWVsIGV2ZW50cyBpbiB0aGlzIHNjcm9sbC5cbiAgICAgICAgICAvLyBTZWUgY29tbWVudCBhYm92ZSBmb3IgXCJyZW1haW5pbmcgd2hlZWwgZXZlbnRzIGluIHRoaXMgc2Nyb2xsXCIgZGV0ZXJtaW5hdGlvbi5cbiAgICAgICAgICAvLyBJZiAxLTQgYXJlbid0IHNhdGlzZmllZCwgdGhlbiB3YWl0IHRvIHNuYXAgdW50aWwgNTAwbXMgYWZ0ZXIgdGhlIGxhc3QgZXZlbnQuXG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgIHRpbWVvdXQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgaWYgKHJlY2VudFdoZWVsRXZlbnRzLmxlbmd0aCA+PSAxNSkge1xuICAgICAgICAgICAgcmVjZW50V2hlZWxFdmVudHMuc2hpZnQoKTsgLy8gb25seSBzdG9yZSB0aGUgbGFzdCBOIGV2ZW50c1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHByZXZFdmVudCA9IHJlY2VudFdoZWVsRXZlbnRzLmxlbmd0aCA/IHJlY2VudFdoZWVsRXZlbnRzW3JlY2VudFdoZWVsRXZlbnRzLmxlbmd0aCAtIDFdIDogdW5kZWZpbmVkO1xuICAgICAgICAgIGNvbnN0IGZpcnN0RXZlbnQgPSByZWNlbnRXaGVlbEV2ZW50c1swXTtcbiAgICAgICAgICByZWNlbnRXaGVlbEV2ZW50cy5wdXNoKG5ld0V2ZW50KTtcbiAgICAgICAgICBpZiAocHJldkV2ZW50ICYmIChuZXdFdmVudC5kZWx0YSA+IHByZXZFdmVudC5kZWx0YSB8fCBuZXdFdmVudC5kaXJlY3Rpb24gIT09IHByZXZFdmVudC5kaXJlY3Rpb24pKSB7XG4gICAgICAgICAgICAvLyBJbmNyZWFzaW5nIG9yIHJldmVyc2Utc2lnbiBkZWx0YSBtZWFucyB0aGUgdXNlciBzdGFydGVkIHNjcm9sbGluZyBhZ2Fpbi4gQ2xlYXIgdGhlIHdoZWVsIGV2ZW50IGxvZy5cbiAgICAgICAgICAgIHJlY2VudFdoZWVsRXZlbnRzLnNwbGljZSgwKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHJlY2VudFdoZWVsRXZlbnRzLmxlbmd0aCA+PSAxNSAmJiBuZXdFdmVudC50aW1lIC0gZmlyc3RFdmVudC50aW1lIDwgNTAwICYmIGZpcnN0RXZlbnQuZGVsdGEgLSBuZXdFdmVudC5kZWx0YSA+PSAxICYmIG5ld0V2ZW50LmRlbHRhIDw9IDYpIHtcbiAgICAgICAgICAgIC8vIFdlJ3JlIGF0IHRoZSBlbmQgb2YgdGhlIGRlY2VsZXJhdGlvbiBvZiBhIG1vbWVudHVtIHNjcm9sbCwgc28gdGhlcmUncyBubyBuZWVkXG4gICAgICAgICAgICAvLyB0byB3YWl0IGZvciBtb3JlIGV2ZW50cy4gU25hcCBBU0FQIG9uIHRoZSBuZXh0IHRpY2suXG4gICAgICAgICAgICAvLyBBbHNvLCBiZWNhdXNlIHRoZXJlJ3Mgc29tZSByZW1haW5pbmcgbW9tZW50dW0gd2UnbGwgYmlhcyB0aGUgc25hcCBpbiB0aGVcbiAgICAgICAgICAgIC8vIGRpcmVjdGlvbiBvZiB0aGUgb25nb2luZyBzY3JvbGwgYmVjYXVzZSBpdCdzIGJldHRlciBVWCBmb3IgdGhlIHNjcm9sbCB0byBzbmFwXG4gICAgICAgICAgICAvLyBpbiB0aGUgc2FtZSBkaXJlY3Rpb24gYXMgdGhlIHNjcm9sbCBpbnN0ZWFkIG9mIHJldmVyc2luZyB0byBzbmFwLiAgVGhlcmVmb3JlLFxuICAgICAgICAgICAgLy8gaWYgaXQncyBhbHJlYWR5IHNjcm9sbGVkIG1vcmUgdGhhbiAyMCUgaW4gdGhlIGN1cnJlbnQgZGlyZWN0aW9uLCBrZWVwIGdvaW5nLlxuICAgICAgICAgICAgY29uc3Qgc25hcFRvVGhyZXNob2xkID0gZGVsdGEgPiAwID8gMC44IDogMC4yO1xuICAgICAgICAgICAgbGFzdEV2ZW50QmVmb3JlU25hcCA9IG5ld0V2ZW50O1xuICAgICAgICAgICAgcmVjZW50V2hlZWxFdmVudHMuc3BsaWNlKDApO1xuICAgICAgICAgICAgdGltZW91dCA9IG5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHN3aXBlci5kZXN0cm95ZWQgfHwgIXN3aXBlci5wYXJhbXMpIHJldHVybjtcbiAgICAgICAgICAgICAgc3dpcGVyLnNsaWRlVG9DbG9zZXN0KHN3aXBlci5wYXJhbXMuc3BlZWQsIHRydWUsIHVuZGVmaW5lZCwgc25hcFRvVGhyZXNob2xkKTtcbiAgICAgICAgICAgIH0sIDApOyAvLyBubyBkZWxheTsgbW92ZSBvbiBuZXh0IHRpY2tcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIXRpbWVvdXQpIHtcbiAgICAgICAgICAgIC8vIGlmIHdlIGdldCBoZXJlLCB0aGVuIHdlIGhhdmVuJ3QgZGV0ZWN0ZWQgdGhlIGVuZCBvZiBhIG1vbWVudHVtIHNjcm9sbCwgc29cbiAgICAgICAgICAgIC8vIHdlJ2xsIGNvbnNpZGVyIGEgc2Nyb2xsIFwiY29tcGxldGVcIiB3aGVuIHRoZXJlIGhhdmVuJ3QgYmVlbiBhbnkgd2hlZWwgZXZlbnRzXG4gICAgICAgICAgICAvLyBmb3IgNTAwbXMuXG4gICAgICAgICAgICB0aW1lb3V0ID0gbmV4dFRpY2soKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoc3dpcGVyLmRlc3Ryb3llZCB8fCAhc3dpcGVyLnBhcmFtcykgcmV0dXJuO1xuICAgICAgICAgICAgICBjb25zdCBzbmFwVG9UaHJlc2hvbGQgPSAwLjU7XG4gICAgICAgICAgICAgIGxhc3RFdmVudEJlZm9yZVNuYXAgPSBuZXdFdmVudDtcbiAgICAgICAgICAgICAgcmVjZW50V2hlZWxFdmVudHMuc3BsaWNlKDApO1xuICAgICAgICAgICAgICBzd2lwZXIuc2xpZGVUb0Nsb3Nlc3Qoc3dpcGVyLnBhcmFtcy5zcGVlZCwgdHJ1ZSwgdW5kZWZpbmVkLCBzbmFwVG9UaHJlc2hvbGQpO1xuICAgICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBFbWl0IGV2ZW50XG4gICAgICAgIGlmICghaWdub3JlV2hlZWxFdmVudHMpIGVtaXQoJ3Njcm9sbCcsIGUpO1xuXG4gICAgICAgIC8vIFN0b3AgYXV0b3BsYXlcbiAgICAgICAgaWYgKHN3aXBlci5wYXJhbXMuYXV0b3BsYXkgJiYgc3dpcGVyLnBhcmFtcy5hdXRvcGxheS5kaXNhYmxlT25JbnRlcmFjdGlvbikgc3dpcGVyLmF1dG9wbGF5LnN0b3AoKTtcbiAgICAgICAgLy8gUmV0dXJuIHBhZ2Ugc2Nyb2xsIG9uIGVkZ2UgcG9zaXRpb25zXG4gICAgICAgIGlmIChwYXJhbXMucmVsZWFzZU9uRWRnZXMgJiYgKHBvc2l0aW9uID09PSBzd2lwZXIubWluVHJhbnNsYXRlKCkgfHwgcG9zaXRpb24gPT09IHN3aXBlci5tYXhUcmFuc2xhdGUoKSkpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZS5wcmV2ZW50RGVmYXVsdCkgZS5wcmV2ZW50RGVmYXVsdCgpO2Vsc2UgZS5yZXR1cm5WYWx1ZSA9IGZhbHNlO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBmdW5jdGlvbiBldmVudHMobWV0aG9kKSB7XG4gICAgbGV0IHRhcmdldEVsID0gc3dpcGVyLmVsO1xuICAgIGlmIChzd2lwZXIucGFyYW1zLm1vdXNld2hlZWwuZXZlbnRzVGFyZ2V0ICE9PSAnY29udGFpbmVyJykge1xuICAgICAgdGFyZ2V0RWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHN3aXBlci5wYXJhbXMubW91c2V3aGVlbC5ldmVudHNUYXJnZXQpO1xuICAgIH1cbiAgICB0YXJnZXRFbFttZXRob2RdKCdtb3VzZWVudGVyJywgaGFuZGxlTW91c2VFbnRlcik7XG4gICAgdGFyZ2V0RWxbbWV0aG9kXSgnbW91c2VsZWF2ZScsIGhhbmRsZU1vdXNlTGVhdmUpO1xuICAgIHRhcmdldEVsW21ldGhvZF0oJ3doZWVsJywgaGFuZGxlKTtcbiAgfVxuICBmdW5jdGlvbiBlbmFibGUoKSB7XG4gICAgaWYgKHN3aXBlci5wYXJhbXMuY3NzTW9kZSkge1xuICAgICAgc3dpcGVyLndyYXBwZXJFbC5yZW1vdmVFdmVudExpc3RlbmVyKCd3aGVlbCcsIGhhbmRsZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHN3aXBlci5tb3VzZXdoZWVsLmVuYWJsZWQpIHJldHVybiBmYWxzZTtcbiAgICBldmVudHMoJ2FkZEV2ZW50TGlzdGVuZXInKTtcbiAgICBzd2lwZXIubW91c2V3aGVlbC5lbmFibGVkID0gdHJ1ZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBmdW5jdGlvbiBkaXNhYmxlKCkge1xuICAgIGlmIChzd2lwZXIucGFyYW1zLmNzc01vZGUpIHtcbiAgICAgIHN3aXBlci53cmFwcGVyRWwuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgaGFuZGxlKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoIXN3aXBlci5tb3VzZXdoZWVsLmVuYWJsZWQpIHJldHVybiBmYWxzZTtcbiAgICBldmVudHMoJ3JlbW92ZUV2ZW50TGlzdGVuZXInKTtcbiAgICBzd2lwZXIubW91c2V3aGVlbC5lbmFibGVkID0gZmFsc2U7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgb24oJ2luaXQnLCAoKSA9PiB7XG4gICAgaWYgKCFzd2lwZXIucGFyYW1zLm1vdXNld2hlZWwuZW5hYmxlZCAmJiBzd2lwZXIucGFyYW1zLmNzc01vZGUpIHtcbiAgICAgIGRpc2FibGUoKTtcbiAgICB9XG4gICAgaWYgKHN3aXBlci5wYXJhbXMubW91c2V3aGVlbC5lbmFibGVkKSBlbmFibGUoKTtcbiAgfSk7XG4gIG9uKCdkZXN0cm95JywgKCkgPT4ge1xuICAgIGlmIChzd2lwZXIucGFyYW1zLmNzc01vZGUpIHtcbiAgICAgIGVuYWJsZSgpO1xuICAgIH1cbiAgICBpZiAoc3dpcGVyLm1vdXNld2hlZWwuZW5hYmxlZCkgZGlzYWJsZSgpO1xuICB9KTtcbiAgT2JqZWN0LmFzc2lnbihzd2lwZXIubW91c2V3aGVlbCwge1xuICAgIGVuYWJsZSxcbiAgICBkaXNhYmxlXG4gIH0pO1xufVxuXG5leHBvcnQgeyBNb3VzZXdoZWVsIGFzIGRlZmF1bHQgfTtcbi
vendor: 7,978 bytes, lines 3173-3383
3173JdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=
3174//# sourceURL=webpack-internal:///../node_modules/swiper/modules/mousewheel.mjs
3175
3176}`)},"../node_modules/swiper/modules/navigation.mjs"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval(`{__webpack_require__.r(__webpack_exports__);
3177/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3178/* harmony export */   "default": () => (/* binding */ Navigation)
3179/* harmony export */ });
3180/* harmony import */ var _shared_create_element_if_not_defined_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/create-element-if-not-defined.mjs */ "../node_modules/swiper/shared/create-element-if-not-defined.mjs");
3181/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "../node_modules/swiper/shared/utils.mjs");
3182
3183
3184
3185function Navigation(_ref) {
3186  let {
3187    swiper,
3188    extendParams,
3189    on,
3190    emit
3191  } = _ref;
3192  extendParams({
3193    navigation: {
3194      nextEl: null,
3195      prevEl: null,
3196      hideOnClick: false,
3197      disabledClass: 'swiper-button-disabled',
3198      hiddenClass: 'swiper-button-hidden',
3199      lockClass: 'swiper-button-lock',
3200      navigationDisabledClass: 'swiper-navigation-disabled'
3201    }
3202  });
3203  swiper.navigation = {
3204    nextEl: null,
3205    prevEl: null
3206  };
3207  function getEl(el) {
3208    let res;
3209    if (el && typeof el === 'string' && swiper.isElement) {
3210      res = swiper.el.querySelector(el) || swiper.hostEl.querySelector(el);
3211      if (res) return res;
3212    }
3213    if (el) {
3214      if (typeof el === 'string') res = [...document.querySelectorAll(el)];
3215      if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {
3216        res = swiper.el.querySelector(el);
3217      } else if (res && res.length === 1) {
3218        res = res[0];
3219      }
3220    }
3221    if (el && !res) return el;
3222    // if (Array.isArray(res) && res.length === 1) res = res[0];
3223    return res;
3224  }
3225  function toggleEl(el, disabled) {
3226    const params = swiper.params.navigation;
3227    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(el);
3228    el.forEach(subEl => {
3229      if (subEl) {
3230        subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));
3231        if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;
3232        if (swiper.params.watchOverflow && swiper.enabled) {
3233          subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);
3234        }
3235      }
3236    });
3237  }
3238  function update() {
3239    // Update Navigation Buttons
3240    const {
3241      nextEl,
3242      prevEl
3243    } = swiper.navigation;
3244    if (swiper.params.loop) {
3245      toggleEl(prevEl, false);
3246      toggleEl(nextEl, false);
3247      return;
3248    }
3249    toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);
3250    toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);
3251  }
3252  function onPrevClick(e) {
3253    e.preventDefault();
3254    if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;
3255    swiper.slidePrev();
3256    emit('navigationPrev');
3257  }
3258  function onNextClick(e) {
3259    e.preventDefault();
3260    if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;
3261    swiper.slideNext();
3262    emit('navigationNext');
3263  }
3264  function init() {
3265    const params = swiper.params.navigation;
3266    swiper.params.navigation = (0,_shared_create_element_if_not_defined_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(swiper, swiper.originalParams.navigation, swiper.params.navigation, {
3267      nextEl: 'swiper-button-next',
3268      prevEl: 'swiper-button-prev'
3269    });
3270    if (!(params.nextEl || params.prevEl)) return;
3271    let nextEl = getEl(params.nextEl);
3272    let prevEl = getEl(params.prevEl);
3273    Object.assign(swiper.navigation, {
3274      nextEl,
3275      prevEl
3276    });
3277    nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(nextEl);
3278    prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(prevEl);
3279    const initButton = (el, dir) => {
3280      if (el) {
3281        el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);
3282      }
3283      if (!swiper.enabled && el) {
3284        el.classList.add(...params.lockClass.split(' '));
3285      }
3286    };
3287    nextEl.forEach(el => initButton(el, 'next'));
3288    prevEl.forEach(el => initButton(el, 'prev'));
3289  }
3290  function destroy() {
3291    let {
3292      nextEl,
3293      prevEl
3294    } = swiper.navigation;
3295    nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(nextEl);
3296    prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(prevEl);
3297    const destroyButton = (el, dir) => {
3298      el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);
3299      el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));
3300    };
3301    nextEl.forEach(el => destroyButton(el, 'next'));
3302    prevEl.forEach(el => destroyButton(el, 'prev'));
3303  }
3304  on('init', () => {
3305    if (swiper.params.navigation.enabled === false) {
3306      // eslint-disable-next-line
3307      disable();
3308    } else {
3309      init();
3310      update();
3311    }
3312  });
3313  on('toEdge fromEdge lock unlock', () => {
3314    update();
3315  });
3316  on('destroy', () => {
3317    destroy();
3318  });
3319  on('enable disable', () => {
3320    let {
3321      nextEl,
3322      prevEl
3323    } = swiper.navigation;
3324    nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(nextEl);
3325    prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(prevEl);
3326    if (swiper.enabled) {
3327      update();
3328      return;
3329    }
3330    [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass));
3331  });
3332  on('click', (_s, e) => {
3333    let {
3334      nextEl,
3335      prevEl
3336    } = swiper.navigation;
3337    nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(nextEl);
3338    prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(prevEl);
3339    const targetEl = e.target;
3340    let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl);
3341    if (swiper.isElement && !targetIsButton) {
3342      const path = e.path || e.composedPath && e.composedPath();
3343      if (path) {
3344        targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl));
3345      }
3346    }
3347    if (swiper.params.navigation.hideOnClick && !targetIsButton) {
3348      if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;
3349      let isHidden;
3350      if (nextEl.length) {
3351        isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);
3352      } else if (prevEl.length) {
3353        isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);
3354      }
3355      if (isHidden === true) {
3356        emit('navigationShow');
3357      } else {
3358        emit('navigationHide');
3359      }
3360      [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));
3361    }
3362  });
3363  const enable = () => {
3364    swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));
3365    init();
3366    update();
3367  };
3368  const disable = () => {
3369    swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));
3370    destroy();
3371  };
3372  Object.assign(swiper.navigation, {
3373    enable,
3374    disable,
3375    update,
3376    init,
3377    destroy
3378  });
3379}
3380
3381
3382//# sourceURL=[module]
3383//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9tb2R1bGVzL25hdmlnYXRpb24ubWpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUE2RjtBQUNoQzs7QUFFN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxvREFBaUI7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtB
3383QUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsNEVBQXlCO0FBQ3hEO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLGFBQWEsb0RBQWlCO0FBQzlCLGFBQWEsb0RBQWlCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTixhQUFhLG9EQUFpQjtBQUM5QixhQUFhLG9EQUFpQjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ04sYUFBYSxvREFBaUI7QUFDOUIsYUFBYSxvREFBaUI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTixhQUFhLG9EQUFpQjtBQUM5QixhQUFhLG9EQUFpQjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRWlDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9zd2lwZXIvbW9kdWxlcy9uYXZpZ2F0aW9uLm1qcz85YzM2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGMgYXMgY3JlYXRlRWxlbWVudElmTm90RGVmaW5lZCB9IGZyb20gJy4uL3NoYXJlZC9jcmVhdGUtZWxlbWVudC1pZi1ub3QtZGVmaW5lZC5tanMnO1xuaW1wb3J0IHsgbSBhcyBtYWtlRWxlbWVudHNBcnJheSB9IGZyb20gJy4uL3NoYXJlZC91dGlscy5tanMnO1xuXG5mdW5jdGlvbiBOYXZpZ2F0aW9uKF9yZWYpIHtcbiAgbGV0IHtcbiAgICBzd2lwZXIsXG4gICAgZXh0ZW5kUGFyYW1zLFxuICAgIG9uLFxuICAgIGVtaXRcbiAgfSA9IF9yZWY7XG4gIGV4dGVuZFBhcmFtcyh7XG4gICAgbmF2aWdhdGlvbjoge1xuICAgICAgbmV4dEVsOiBudWxsLFxuICAgICAgcHJldkVsOiBudWxsLFxuICAgICAgaGlkZU9uQ2xpY2s6IGZhbHNlLFxuICAgICAgZGlzYWJsZWRDbGFzczogJ3N3aXBlci1idXR0b24tZGlzYWJsZWQnLFxuICAgICAgaGlkZGVuQ2xhc3M6ICdzd2lwZXItYnV0dG9uLWhpZGRlbicsXG4gICAgICBsb2NrQ2xhc3M6ICdzd2lwZXItYnV0dG9uLWxvY2snLFxuICAgICAgbmF2aWdhdGlvbkRpc2FibGVkQ2xhc3M6ICdzd2lwZXItbmF2aWdhdGlvbi1kaXNhYmxlZCdcbiAgICB9XG4gIH0pO1xuICBzd2lwZXIubmF2aWdhdGlvbiA9IHtcbiAgICBuZXh0RWw6IG51bGwsXG4gICAgcHJldkVsOiBudWxsXG4gIH07XG4gIGZ1bmN0aW9uIGdldEVsKGVsKSB7XG4gICAgbGV0IHJlcztcbiAgICBpZiAoZWwgJiYgdHlwZW9mIGVsID09PSAnc3RyaW5nJyAmJiBzd2lwZXIuaXNFbGVtZW50KSB7XG4gICAgICByZXMgPSBzd2lwZXIuZWwucXVlcnlTZWxlY3RvcihlbCkgfHwgc3dpcGVyLmhvc3RFbC5xdWVyeVNlbGVjdG9yKGVsKTtcbiAgICAgIGlmIChyZXMpIHJldHVybiByZXM7XG4gICAgfVxuICAgIGlmIChlbCkge1xuICAgICAgaWYgKHR5cGVvZiBlbCA9PT0gJ3N0cmluZycpIHJlcyA9IFsuLi5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGVsKV07XG4gICAgICBpZiAoc3dpcGVyLnBhcmFtcy51bmlxdWVOYXZFbGVtZW50cyAmJiB0eXBlb2YgZWwgPT09ICdzdHJpbmcnICYmIHJlcyAmJiByZXMubGVuZ3RoID4gMSAmJiBzd2lwZXIuZWwucXVlcnlTZWxlY3RvckFsbChlbCkubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHJlcyA9IHN3aXBlci5lbC5xdWVyeVNlbGVjdG9yKGVsKTtcbiAgICAgIH0gZWxzZSBpZiAocmVzICYmIHJlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmVzID0gcmVzWzBdO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZWwgJiYgIXJlcykgcmV0dXJuIGVsO1xuICAgIC8vIGlmIChBcnJheS5pc0FycmF5KHJlcykgJiYgcmVzLmxlbmd0aCA9PT0gMSkgcmVzID0gcmVzWzBdO1xuICAgIHJldHVybiByZXM7XG4gIH1cbiAgZnVuY3Rpb24gdG9nZ2xlRWwoZWwsIGRpc2FibGVkKSB7XG4gICAgY29uc3QgcGFyYW1zID0gc3dpcGVyLnBhcmFtcy5uYXZpZ2F0aW9uO1xuICAgIGVsID0gbWFrZUVsZW1lbnRzQXJyYXkoZWwpO1xuICAgIGVsLmZvckVhY2goc3ViRWwgPT4ge1xuICAgICAgaWYgKHN1YkVsKSB7XG4gICAgICAgIHN1YkVsLmNsYXNzTGlzdFtkaXNhYmxlZCA/ICdhZGQnIDogJ3JlbW92ZSddKC4uLnBhcmFtcy5kaXNhYmxlZENsYXNzLnNwbGl0KCcgJykpO1xuICAgICAgICBpZiAoc3ViRWwudGFnTmFtZSA9PT0gJ0JVVFRPTicpIHN1YkVsLmRpc2FibGVkID0gZGlzYWJsZWQ7XG4gICAgICAgIGlmIChzd2lwZXIucGFyYW1zLndhdGNoT3ZlcmZsb3cgJiYgc3dpcGVyLmVuYWJsZWQpIHtcbiAgICAgICAgICBzdWJFbC5jbGFzc0xpc3Rbc3dpcGVyLmlzTG9ja2VkID8gJ2FkZCcgOiAncmVtb3ZlJ10ocGFyYW1zLmxvY2tDbGFzcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBmdW5jdGlvbiB1cGRhdGUoKSB7XG4gICAgLy8gVXBkYXRlIE5hdmlnYXRpb24gQnV0dG9uc1xuICAgIGNvbnN0IHtcbiAgICAgIG5leHRFbCxcbiAgICAgIHByZXZFbFxuICAgIH0gPSBzd2lwZXIubmF2aWdhdGlvbjtcbiAgICBpZiAoc3dpcGVyLnBhcmFtcy5sb29wKSB7XG4gICAgICB0b2dnbGVFbChwcmV2RWwsIGZhbHNlKTtcbiAgICAgIHRvZ2dsZUVsKG5leHRFbCwgZmFsc2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0b2dnbGVFbChwcmV2RWwsIHN3aXBlci5pc0JlZ2lubmluZyAmJiAhc3dpcGVyLnBhcmFtcy5yZXdpbmQpO1xuICAgIHRvZ2dsZUVsKG5leHRFbCwgc3dpcGVyLmlzRW5kICYmICFzd2lwZXIucGFyYW1zLnJld2luZCk7XG4gIH1cbiAgZnVuY3Rpb24gb25QcmV2Q2xpY2soZSkge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAoc3dpcGVyLmlzQmVnaW5uaW5nICYmICFzd2lwZXIucGFyYW1zLmxvb3AgJiYgIXN3aXBlci5wYXJhbXMucmV3aW5kKSByZXR1cm47XG4gICAgc3dpcGVyLnNsaWRlUHJldigpO1xuICAgIGVtaXQoJ25hdmlnYXRpb25QcmV2Jyk7XG4gIH1cbiAgZnVuY3Rpb24gb25OZXh0Q2xpY2soZSkge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAoc3dpcGVyLmlzRW5kICYmICFzd2lwZXIucGFyYW1zLmxvb3AgJiYgIXN3aXBlci5wYXJhbXMucmV3aW5kKSByZXR1cm47XG4gICAgc3dpcGVyLnNsaWRlTmV4dCgpO1xuICAgIGVtaXQoJ25hdmlnYXRpb25OZXh0Jyk7XG4gIH1cbiAgZnVuY3Rpb24gaW5pdCgpIHtcbiAgICBjb25zdCBwYXJhbXMgPSBzd2lwZXIucGFyYW1zLm5hdmlnYXRpb247XG4gICAgc3dpcGVyLnBhcmFtcy5uYXZpZ2F0aW9uID0gY3JlYXRlRWxlbWVudElmTm90RGVmaW5lZChzd2lwZXIsIHN3aXBlci5vcmlnaW5hbFBhcmFtcy5uYXZpZ2F0aW9uLCBzd2lwZXIucGFyYW1zLm5hdmlnYXRpb24sIHtcbiAgICAgIG5leHRFbDogJ3N3aXBlci1idXR0b24tbmV4dCcsXG4gICAgICBwcmV2RWw6ICdzd2lwZXItYnV0dG9uLXByZXYnXG4gICAgfSk7XG4gICAgaWYgKCEocGFyYW1zLm5leHRFbCB8fCBwYXJhbXMucHJldkVsKSkgcmV0dXJuO1xuICAgIGxldCBuZXh0RWwgPSBnZXRFbChwYXJhbXMubmV4dEVsKTtcbiAgICBsZXQgcHJldkVsID0gZ2V0RWwocGFyYW1zLnByZX
3383ZFbCk7XG4gICAgT2JqZWN0LmFzc2lnbihzd2lwZXIubmF2aWdhdGlvbiwge1xuICAgICAgbmV4dEVsLFxuICAgICAgcHJldkVsXG4gICAgfSk7XG4gICAgbmV4dEVsID0gbWFrZUVsZW1lbnRzQXJyYXkobmV4dEVsKTtcbiAgICBwcmV2RWwgPSBtYWtlRWxlbWVudHNBcnJheShwcmV2RWwpO1xuICAgIGNvbnN0IGluaXRCdXR0b24gPSAoZWwsIGRpcikgPT4ge1xuICAgICAgaWYgKGVsKSB7XG4gICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZGlyID09PSAnbmV4dCcgPyBvbk5leHRDbGljayA6IG9uUHJldkNsaWNrKTtcbiAgICAgIH1cbiAgICAgIGlmICghc3dpcGVyLmVuYWJsZWQgJiYgZWwpIHtcbiAgICAgICAgZWwuY2xhc3NMaXN0LmFkZCguLi5wYXJhbXMubG9ja0NsYXNzLnNwbGl0KCcgJykpO1xuICAgICAgfVxuICAgIH07XG4gICAgbmV4dEVsLmZvckVhY2goZWwgPT4gaW5pdEJ1dHRvbihlbCwgJ25leHQnKSk7XG4gICAgcHJldkVsLmZvckVhY2goZWwgPT4gaW5pdEJ1dHRvbihlbCwgJ3ByZXYnKSk7XG4gIH1cbiAgZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICBsZXQge1xuICAgICAgbmV4dEVsLFxuICAgICAgcHJldkVsXG4gICAgfSA9IHN3aXBlci5uYXZpZ2F0aW9uO1xuICAgIG5leHRFbCA9IG1ha2VFbGVtZW50c0FycmF5KG5leHRFbCk7XG4gICAgcHJldkVsID0gbWFrZUVsZW1lbnRzQXJyYXkocHJldkVsKTtcbiAgICBjb25zdCBkZXN0cm95QnV0dG9uID0gKGVsLCBkaXIpID0+IHtcbiAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZGlyID09PSAnbmV4dCcgPyBvbk5leHRDbGljayA6IG9uUHJldkNsaWNrKTtcbiAgICAgIGVsLmNsYXNzTGlzdC5yZW1vdmUoLi4uc3dpcGVyLnBhcmFtcy5uYXZpZ2F0aW9uLmRpc2FibGVkQ2xhc3Muc3BsaXQoJyAnKSk7XG4gICAgfTtcbiAgICBuZXh0RWwuZm9yRWFjaChlbCA9PiBkZXN0cm95QnV0dG9uKGVsLCAnbmV4dCcpKTtcbiAgICBwcmV2RWwuZm9yRWFjaChlbCA9PiBkZXN0cm95QnV0dG9uKGVsLCAncHJldicpKTtcbiAgfVxuICBvbignaW5pdCcsICgpID0+IHtcbiAgICBpZiAoc3dpcGVyLnBhcmFtcy5uYXZpZ2F0aW9uLmVuYWJsZWQgPT09IGZhbHNlKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgIGRpc2FibGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5pdCgpO1xuICAgICAgdXBkYXRlKCk7XG4gICAgfVxuICB9KTtcbiAgb24oJ3RvRWRnZSBmcm9tRWRnZSBsb2NrIHVubG9jaycsICgpID0+IHtcbiAgICB1cGRhdGUoKTtcbiAgfSk7XG4gIG9uKCdkZXN0cm95JywgKCkgPT4ge1xuICAgIGRlc3Ryb3koKTtcbiAgfSk7XG4gIG9uKCdlbmFibGUgZGlzYWJsZScsICgpID0+IHtcbiAgICBsZXQge1xuICAgICAgbmV4dEVsLFxuICAgICAgcHJldkVsXG4gICAgfSA9IHN3aXBlci5uYXZpZ2F0aW9uO1xuICAgIG5leHRFbCA9IG1ha2VFbGVtZW50c0FycmF5KG5leHRFbCk7XG4gICAgcHJldkVsID0gbWFrZUVsZW1lbnRzQXJyYXkocHJldkVsKTtcbiAgICBpZiAoc3dpcGVyLmVuYWJsZWQpIHtcbiAgICAgIHVwZGF0ZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBbLi4ubmV4dEVsLCAuLi5wcmV2RWxdLmZpbHRlcihlbCA9PiAhIWVsKS5mb3JFYWNoKGVsID0+IGVsLmNsYXNzTGlzdC5hZGQoc3dpcGVyLnBhcmFtcy5uYXZpZ2F0aW9uLmxvY2tDbGFzcykpO1xuICB9KTtcbiAgb24oJ2NsaWNrJywgKF9zLCBlKSA9PiB7XG4gICAgbGV0IHtcbiAgICAgIG5leHRFbCxcbiAgICAgIHByZXZFbFxuICAgIH0gPSBzd2lwZXIubmF2aWdhdGlvbjtcbiAgICBuZXh0RWwgPSBtYWtlRWxlbWVudHNBcnJheShuZXh0RWwpO1xuICAgIHByZXZFbCA9IG1ha2VFbGVtZW50c0FycmF5KHByZXZFbCk7XG4gICAgY29uc3QgdGFyZ2V0RWwgPSBlLnRhcmdldDtcbiAgICBsZXQgdGFyZ2V0SXNCdXR0b24gPSBwcmV2RWwuaW5jbHVkZXModGFyZ2V0RWwpIHx8IG5leHRFbC5pbmNsdWRlcyh0YXJnZXRFbCk7XG4gICAgaWYgKHN3aXBlci5pc0VsZW1lbnQgJiYgIXRhcmdldElzQnV0dG9uKSB7XG4gICAgICBjb25zdCBwYXRoID0gZS5wYXRoIHx8IGUuY29tcG9zZWRQYXRoICYmIGUuY29tcG9zZWRQYXRoKCk7XG4gICAgICBpZiAocGF0aCkge1xuICAgICAgICB0YXJnZXRJc0J1dHRvbiA9IHBhdGguZmluZChwYXRoRWwgPT4gbmV4dEVsLmluY2x1ZGVzKHBhdGhFbCkgfHwgcHJldkVsLmluY2x1ZGVzKHBhdGhFbCkpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoc3dpcGVyLnBhcmFtcy5uYXZpZ2F0aW9uLmhpZGVPbkNsaWNrICYmICF0YXJnZXRJc0J1dHRvbikge1xuICAgICAgaWYgKHN3aXBlci5wYWdpbmF0aW9uICYmIHN3aXBlci5wYXJhbXMucGFnaW5hdGlvbiAmJiBzd2lwZXIucGFyYW1zLnBhZ2luYXRpb24uY2xpY2thYmxlICYmIChzd2lwZXIucGFnaW5hdGlvbi5lbCA9PT0gdGFyZ2V0RWwgfHwgc3dpcGVyLnBhZ2luYXRpb24uZWwuY29udGFpbnModGFyZ2V0RWwpKSkgcmV0dXJuO1xuICAgICAgbGV0IGlzSGlkZGVuO1xuICAgICAgaWYgKG5leHRFbC5sZW5ndGgpIHtcbiAgICAgICAgaXNIaWRkZW4gPSBuZXh0RWxbMF0uY2xhc3NMaXN0LmNvbnRhaW5zKHN3aXBlci5wYXJhbXMubmF2aWdhdGlvbi5oaWRkZW5DbGFzcyk7XG4gICAgICB9IGVsc2UgaWYgKHByZXZFbC5sZW5ndGgpIHtcbiAgICAgICAgaXNIaWRkZW4gPSBwcmV2RWxbMF0uY2xhc3NMaXN0LmNvbnRhaW5zKHN3aXBlci5wYXJhbXMubmF2aWdhdGlvbi5oaWRkZW5DbGFzcyk7XG4gICAgICB9XG4gICAgICBpZiAoaXNIaWRkZW4gPT09IHRydWUpIHtcbiAgICAgICAgZW1pdCgnbmF2aWdhdGlvblNob3cnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVtaXQoJ25hdmlnYXRpb25IaWRlJyk7XG4gICAgICB9XG4gICAgICBbLi4ubmV4dEVsLCAuLi5wcmV2RWxdLmZpbHRlcihlbCA9PiAhIWVsKS5mb3JFYWNoKGVsID0+IGVsLmNsYXNzTGlzdC50b2dnbGUoc3dpcGVyLnBhcmFtcy5uYXZpZ2F0aW9uLmhpZGRlbkNsYXNzKSk7XG4gICAgfVxuICB9KTtcbiAgY29uc3QgZW5hYmxlID0gKCkgPT4ge1xuICAgIHN3aXBlci5lbC5jbGFzc0xpc3QucmVtb3ZlKC4uLnN3aXBlci5wYXJhbXMubmF2aWdhdGlvbi5uYXZpZ2F0aW9uRGlzYWJsZWRDbGFzcy
33835zcGxpdCgnICcpKTtcbiAgICBpbml0KCk7XG4gICAgdXBkYXRlKCk7XG4gIH07XG4gIGNvbnN0IGRpc2FibGUgPSAoKSA9PiB7XG4gICAgc3dpcGVyLmVsLmNsYXNzTGlzdC5hZGQoLi4uc3dpcGVyLnBhcmFtcy5uYXZpZ2F0aW9uLm5hdmlnYXRpb25EaXNhYmxlZENsYXNzLnNwbGl0KCcgJykpO1xuICAgIGRlc3Ryb3koKTtcbiAgfTtcbiAgT2JqZWN0LmFzc2lnbihzd2lwZXIubmF2aWdhdGlvbiwge1xuICAgIGVuYWJsZSxcbiAgICBkaXNhYmxlLFxuICAgIHVwZGF0ZSxcbiAgICBpbml0LFxuICAgIGRlc3Ryb3lcbiAgfSk7XG59XG5cbmV4cG9ydCB7IE5hdmlnYXRpb24gYXMgZGVmYXVsdCB9O1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==
3384//# sourceURL=webpack-internal:///../node_modules/swiper/modules/navigation.mjs
3385
3386}`)},"../node_modules/swiper/modules/pagination.mjs"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval(`{__webpack_require__.r(__webpack_exports__);
3387/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3388/* harmony export */   "default": () => (/* binding */ Pagination)
3389/* harmony export */ });
3390/* harmony import */ var _shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/classes-to-selector.mjs */ "../node_modules/swiper/shared/classes-to-selector.mjs");
3391/* harmony import */ var _shared_create_element_if_not_defined_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/create-element-if-not-defined.mjs */ "../node_modules/swiper/shared/create-element-if-not-defined.mjs");
3392/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/utils.mjs */ "../node_modules/swiper/shared/utils.mjs");
3393
3394
3395
3396
3397function Pagination(_ref) {
3398  let {
3399    swiper,
3400    extendParams,
3401    on,
3402    emit
3403  } = _ref;
3404  const pfx = 'swiper-pagination';
3405  extendParams({
3406    pagination: {
3407      el: null,
3408      bulletElement: 'span',
3409      clickable: false,
3410      hideOnClick: false,
3411      renderBullet: null,
3412      renderProgressbar: null,
3413      renderFraction: null,
3414      renderCustom: null,
3415      progressbarOpposite: false,
3416      type: 'bullets',
3417      // 'bullets' or 'progressbar' or 'fraction' or 'custom'
3418      dynamicBullets: false,
3419      dynamicMainBullets: 1,
3420      formatFractionCurrent: number => number,
3421      formatFractionTotal: number => number,
3422      bulletClass: \`\${pfx}-bullet\`,
3423      bulletActiveClass: \`\${pfx}-bullet-active\`,
3424      modifierClass: \`\${pfx}-\`,
3425      currentClass: \`\${pfx}-current\`,
3426      totalClass: \`\${pfx}-total\`,
3427      hiddenClass: \`\${pfx}-hidden\`,
3428      progressbarFillClass: \`\${pfx}-progressbar-fill\`,
3429      progressbarOppositeClass: \`\${pfx}-progressbar-opposite\`,
3430      clickableClass: \`\${pfx}-clickable\`,
3431      lockClass: \`\${pfx}-lock\`,
3432      horizontalClass: \`\${pfx}-horizontal\`,
3433      verticalClass: \`\${pfx}-vertical\`,
3434      paginationDisabledClass: \`\${pfx}-disabled\`
3435    }
3436  });
3437  swiper.pagination = {
3438    el: null,
3439    bullets: []
3440  };
3441  let bulletSize;
3442  let dynamicBulletIndex = 0;
3443  function isPaginationDisabled() {
3444    return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;
3445  }
3446  function setSideBullets(bulletEl, position) {
3447    const {
3448      bulletActiveClass
3449    } = swiper.params.pagination;
3450    if (!bulletEl) return;
3451    bulletEl = bulletEl[\`\${position === 'prev' ? 'previous' : 'next'}ElementSibling\`];
3452    if (bulletEl) {
3453      bulletEl.classList.add(\`\${bulletActiveClass}-\${position}\`);
3454      bulletEl = bulletEl[\`\${position === 'prev' ? 'previous' : 'next'}ElementSibling\`];
3455      if (bulletEl) {
3456        bulletEl.classList.add(\`\${bulletActiveClass}-\${position}-\${position}\`);
3457      }
3458    }
3459  }
3460  function getMoveDirection(prevIndex, nextIndex, length) {
3461    prevIndex = prevIndex % length;
3462    nextIndex = nextIndex % length;
3463    if (nextIndex === prevIndex + 1) {
3464      return 'next';
3465    } else if (nextIndex === prevIndex - 1) {
3466      return 'previous';
3467    }
3468    return;
3469  }
3470  function onBulletClick(e) {
3471    const bulletEl = e.target.closest((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(swiper.params.pagination.bulletClass));
3472    if (!bulletEl) {
3473      return;
3474    }
3475    e.preventDefault();
3476    const index = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.i)(bulletEl) * swiper.params.slidesPerGroup;
3477    if (swiper.params.loop) {
3478      if (swiper.realIndex === index) return;
3479      const moveDirection = getMoveDirection(swiper.realIndex, index, swiper.slides.length);
3480      if (moveDirection === 'next') {
3481        swiper.slideNext();
3482      } else if (moveDirection === 'previous') {
3483        swiper.slidePrev();
3484      } else {
3485        swiper.slideToLoop(index);
3486      }
3487    } else {
3488      swiper.slideTo(index);
3489    }
3490  }
vendor: 4,525 bytes, lines 3491-3585
3491  function update() {
3492    // Render || Update Pagination bullets/items
3493    const rtl = swiper.rtl;
3494    const params = swiper.params.pagination;
3495    if (isPaginationDisabled()) return;
3496    let el = swiper.pagination.el;
3497    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
3498    // Current/Total
3499    let current;
3500    let previousIndex;
3501    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
3502    const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
3503    if (swiper.params.loop) {
3504      previousIndex = swiper.previousRealIndex || 0;
3505      current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;
3506    } else if (typeof swiper.snapIndex !== 'undefined') {
3507      current = swiper.snapIndex;
3508      previousIndex = swiper.previousSnapIndex;
3509    } else {
3510      previousIndex = swiper.previousIndex || 0;
3511      current = swiper.activeIndex || 0;
3512    }
3513    // Types
3514    if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {
3515      const bullets = swiper.pagination.bullets;
3516      let firstIndex;
3517      let lastIndex;
3518      let midIndex;
3519      if (params.dynamicBullets) {
3520        bulletSize = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.h)(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);
3521        el.forEach(subEl => {
3522          subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = \`\${bulletSize * (params.dynamicMainBullets + 4)}px\`;
3523        });
3524        if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {
3525          dynamicBulletIndex += current - (previousIndex || 0);
3526          if (dynamicBulletIndex > params.dynamicMainBullets - 1) {
3527            dynamicBulletIndex = params.dynamicMainBullets - 1;
3528          } else if (dynamicBulletIndex < 0) {
3529            dynamicBulletIndex = 0;
3530          }
3531        }
3532        firstIndex = Math.max(current - dynamicBulletIndex, 0);
3533        lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);
3534        midIndex = (lastIndex + firstIndex) / 2;
3535      }
3536      bullets.forEach(bulletEl => {
3537        const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => \`\${params.bulletActiveClass}\${suffix}\`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();
3538        bulletEl.classList.remove(...classesToRemove);
3539      });
3540      if (el.length > 1) {
3541        bullets.forEach(bullet => {
3542          const bulletIndex = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.i)(bullet);
3543          if (bulletIndex === current) {
3544            bullet.classList.add(...params.bulletActiveClass.split(' '));
3545          } else if (swiper.isElement) {
3546            bullet.setAttribute('part', 'bullet');
3547          }
3548          if (params.dynamicBullets) {
3549            if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {
3550              bullet.classList.add(...\`\${params.bulletActiveClass}-main\`.split(' '));
3551            }
3552            if (bulletIndex === firstIndex) {
3553              setSideBullets(bullet, 'prev');
3554            }
3555            if (bulletIndex === lastIndex) {
3556              setSideBullets(bullet, 'next');
3557            }
3558          }
3559        });
3560      } else {
3561        const bullet = bullets[current];
3562        if (bullet) {
3563          bullet.classList.add(...params.bulletActiveClass.split(' '));
3564        }
3565        if (swiper.isElement) {
3566          bullets.forEach((bulletEl, bulletIndex) => {
3567            bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');
3568          });
3569        }
3570        if (params.dynamicBullets) {
3571          const firstDisplayedBullet = bullets[firstIndex];
3572          const lastDisplayedBullet = bullets[lastIndex];
3573          for (let i = firstIndex; i <= lastIndex; i += 1) {
3574            if (bullets[i]) {
3575              bullets[i].classList.add(...\`\${params.bulletActiveClass}-main\`.split(' '));
3576            }
3577          }
3578          setSideBullets(firstDisplayedBullet, 'prev');
3579          setSideBullets(lastDisplayedBullet, 'next');
3580        }
3581      }
3582      if (params.dynamicBullets) {
3583        const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);
3584        const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;
3585        const offsetProp = rtl ? 'right' : 'left';
3586        bullets.forEach(bullet => {
3587          bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = \`\${bulletsOffset}px\`;
3588        });
3589      }
3590    }
3591    el.forEach((subEl, subElIndex) => {
3592      if (params.type === 'fraction') {
3593        subEl.querySelectorAll((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(params.currentClass)).forEach(fractionEl => {
3594          fractionEl.textContent = params.formatFractionCurrent(current + 1);
3595        });
3596        subEl.querySelectorAll((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(params.totalClass)).forEach(totalEl => {
3597          totalEl.textContent = params.formatFractionTotal(total);
3598        });
3599      }
3600      if (params.type === 'progressbar') {
3601        let progressbarDirection;
3602        if (params.progressbarOpposite) {
3603          progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';
3604        } else {
3605          progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';
3606        }
3607        const scale = (current + 1) / total;
3608        let scaleX = 1;
3609        let scaleY = 1;
3610        if (progressbarDirection === 'horizontal') {
3611          scaleX = scale;
3612        } else {
3613          scaleY = scale;
3614        }
3615        subEl.querySelectorAll((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(params.progressbarFillClass)).forEach(progressEl => {
3616          progressEl.style.transform = \`translate3d(0,0,0) scaleX(\${scaleX}) scaleY(\${scaleY})\`;
3617          progressEl.style.transitionDuration = \`\${swiper.params.speed}ms\`;
3618        });
3619      }
3620      if (params.type === 'custom' && params.renderCustom) {
3621        (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.s)(subEl, params.renderCustom(swiper, current + 1, total));
3622        if (subElIndex === 0) emit('paginationRender', subEl);
3623      } else {
3624        if (subElIndex === 0) emit('paginationRender', subEl);
3625        emit('paginationUpdate', subEl);
3626      }
3627      if (swiper.params.watchOverflow && swiper.enabled) {
3628        subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);
3629      }
3630    });
3631  }
3632  function render() {
3633    // Render Container
3634    const params = swiper.params.pagination;
3635    if (isPaginationDisabled()) return;
3636    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length;
3637    let el = swiper.pagination.el;
3638    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
3639    let paginationHTML = '';
3640    if (params.type === 'bullets') {
3641      let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
3642      if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {
3643        numberOfBullets = slidesLength;
3644      }
3645      for (let i = 0; i < numberOfBullets; i += 1) {
3646        if (params.renderBullet) {
3647          paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);
3648        } else {
3649          // prettier-ignore
3650          paginationHTML += \`<\${params.bulletElement} \${swiper.isElement ? 'part="bullet"' : ''} class="\${params.bulletClass}"></\${params.bulletElement}>\`;
3651        }
3652      }
3653    }
3654    if (params.type === 'fraction') {
3655      if (params.renderFraction) {
3656        paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);
3657      } else {
3658        paginationHTML = \`<span class="\${params.currentClass}"></span>\` + ' / ' + \`<span class="\${params.totalClass}"></span>\`;
3659      }
3660    }
3661    if (params.type === 'progressbar') {
3662      if (params.renderProgressbar) {
3663        paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);
3664      } else {
3665        paginationHTML = \`<span class="\${params.progressbarFillClass}"></span>\`;
3666      }
3667    }
3668    swiper.pagination.bullets = [];
3669    el.forEach(subEl => {
3670      if (params.type !== 'custom') {
3671        (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.s)(subEl, paginationHTML || '');
3672      }
3673      if (params.type === 'bullets') {
3674        swiper.pagination.bullets.push(...subEl.querySelectorAll((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(params.bulletClass)));
3675      }
3676    });
3677    if (params.type !== 'custom') {
3678      emit('paginationRender', el[0]);
3679    }
3680  }
vendor: 6,131 bytes, lines 3681-3854
3681  function init() {
3682    swiper.params.pagination = (0,_shared_create_element_if_not_defined_mjs__WEBPACK_IMPORTED_MODULE_1__.c)(swiper, swiper.originalParams.pagination, swiper.params.pagination, {
3683      el: 'swiper-pagination'
3684    });
3685    const params = swiper.params.pagination;
3686    if (!params.el) return;
3687    let el;
3688    if (typeof params.el === 'string' && swiper.isElement) {
3689      el = swiper.el.querySelector(params.el);
3690    }
3691    if (!el && typeof params.el === 'string') {
3692      el = [...document.querySelectorAll(params.el)];
3693    }
3694    if (!el) {
3695      el = params.el;
3696    }
3697    if (!el || el.length === 0) return;
3698    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {
3699      el = [...swiper.el.querySelectorAll(params.el)];
3700      // check if it belongs to another nested Swiper
3701      if (el.length > 1) {
3702        el = el.find(subEl => {
3703          if ((0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.b)(subEl, '.swiper')[0] !== swiper.el) return false;
3704          return true;
3705        });
3706      }
3707    }
3708    if (Array.isArray(el) && el.length === 1) el = el[0];
3709    Object.assign(swiper.pagination, {
3710      el
3711    });
3712    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
3713    el.forEach(subEl => {
3714      if (params.type === 'bullets' && params.clickable) {
3715        subEl.classList.add(...(params.clickableClass || '').split(' '));
3716      }
3717      subEl.classList.add(params.modifierClass + params.type);
3718      subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
3719      if (params.type === 'bullets' && params.dynamicBullets) {
3720        subEl.classList.add(\`\${params.modifierClass}\${params.type}-dynamic\`);
3721        dynamicBulletIndex = 0;
3722        if (params.dynamicMainBullets < 1) {
3723          params.dynamicMainBullets = 1;
3724        }
3725      }
3726      if (params.type === 'progressbar' && params.progressbarOpposite) {
3727        subEl.classList.add(params.progressbarOppositeClass);
3728      }
3729      if (params.clickable) {
3730        subEl.addEventListener('click', onBulletClick);
3731      }
3732      if (!swiper.enabled) {
3733        subEl.classList.add(params.lockClass);
3734      }
3735    });
3736  }
3737  function destroy() {
3738    const params = swiper.params.pagination;
3739    if (isPaginationDisabled()) return;
3740    let el = swiper.pagination.el;
3741    if (el) {
3742      el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
3743      el.forEach(subEl => {
3744        subEl.classList.remove(params.hiddenClass);
3745        subEl.classList.remove(params.modifierClass + params.type);
3746        subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
3747        if (params.clickable) {
3748          subEl.classList.remove(...(params.clickableClass || '').split(' '));
3749          subEl.removeEventListener('click', onBulletClick);
3750        }
3751      });
3752    }
3753    if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));
3754  }
3755  on('changeDirection', () => {
3756    if (!swiper.pagination || !swiper.pagination.el) return;
3757    const params = swiper.params.pagination;
3758    let {
3759      el
3760    } = swiper.pagination;
3761    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
3762    el.forEach(subEl => {
3763      subEl.classList.remove(params.horizontalClass, params.verticalClass);
3764      subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
3765    });
3766  });
3767  on('init', () => {
3768    if (swiper.params.pagination.enabled === false) {
3769      // eslint-disable-next-line
3770      disable();
3771    } else {
3772      init();
3773      render();
3774      update();
3775    }
3776  });
3777  on('activeIndexChange', () => {
3778    if (typeof swiper.snapIndex === 'undefined') {
3779      update();
3780    }
3781  });
3782  on('snapIndexChange', () => {
3783    update();
3784  });
3785  on('snapGridLengthChange', () => {
3786    render();
3787    update();
3788  });
3789  on('destroy', () => {
3790    destroy();
3791  });
3792  on('enable disable', () => {
3793    let {
3794      el
3795    } = swiper.pagination;
3796    if (el) {
3797      el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
3798      el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));
3799    }
3800  });
3801  on('lock unlock', () => {
3802    update();
3803  });
3804  on('click', (_s, e) => {
3805    const targetEl = e.target;
3806    const el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(swiper.pagination.el);
3807    if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {
3808      if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;
3809      const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);
3810      if (isHidden === true) {
3811        emit('paginationShow');
3812      } else {
3813        emit('paginationHide');
3814      }
3815      el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));
3816    }
3817  });
3818  const enable = () => {
3819    swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);
3820    let {
3821      el
3822    } = swiper.pagination;
3823    if (el) {
3824      el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
3825      el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));
3826    }
3827    init();
3828    render();
3829    update();
3830  };
3831  const disable = () => {
3832    swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);
3833    let {
3834      el
3835    } = swiper.pagination;
3836    if (el) {
3837      el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
3838      el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));
3839    }
3840    destroy();
3841  };
3842  Object.assign(swiper.pagination, {
3843    enable,
3844    disable,
3845    render,
3846    update,
3847    init,
3848    destroy
3849  });
3850}
3851
3852
3853//# sourceURL=[module]
3854//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9tb2R1bGVzL3BhZ2luYX
3854Rpb24ubWpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBMkU7QUFDa0I7QUFDa0Q7O0FBRS9JO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsSUFBSTtBQUMxQiw0QkFBNEIsSUFBSTtBQUNoQyx3QkFBd0IsSUFBSTtBQUM1Qix1QkFBdUIsSUFBSTtBQUMzQixxQkFBcUIsSUFBSTtBQUN6QixzQkFBc0IsSUFBSTtBQUMxQiwrQkFBK0IsSUFBSTtBQUNuQyxtQ0FBbUMsSUFBSTtBQUN2Qyx5QkFBeUIsSUFBSTtBQUM3QixvQkFBb0IsSUFBSTtBQUN4QiwwQkFBMEIsSUFBSTtBQUM5Qix3QkFBd0IsSUFBSTtBQUM1QixrQ0FBa0MsSUFBSTtBQUN0QztBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSwyQkFBMkIsMENBQTBDO0FBQ3JFO0FBQ0EsZ0NBQWdDLGtCQUFrQixHQUFHLFNBQVM7QUFDOUQsNkJBQTZCLDBDQUEwQztBQUN2RTtBQUNBLGtDQUFrQyxrQkFBa0IsR0FBRyxTQUFTLEdBQUcsU0FBUztBQUM1RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0Msa0VBQWlCO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLG9EQUFZO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLG9EQUFpQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsb0RBQWdCO0FBQ3JDO0FBQ0EsdUVBQXVFLDZDQUE2QztBQUNwSCxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlIQUFpSCx5QkFBeUIsRUFBRSxPQUFPO0FBQ25KO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSw4QkFBOEIsb0RBQVk7QUFDMUM7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5Qyx5QkFBeUI7QUFDbEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMsZ0JBQWdCO0FBQ25EO0FBQ0EsNkNBQTZDLHlCQUF5QjtBQUN0RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0VBQXdFLGNBQWM7QUFDdEYsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLGtFQUFpQjtBQUNoRDtBQUNBLFNBQVM7QUFDVCwrQkFBK0Isa0VBQWlCO0FBQ2hEO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLCtCQUErQixrRUFBaUI7QUFDaEQsb0VBQW9FLE9BQU8sV0FBVyxPQUFPO0FBQzdGLG1EQUFtRCxvQkFBb0I7QUFDdkUsU0FBUztBQUNUO0FBQ0E7QUFDQSxRQUFRLG9EQUFZO0FBQ3BCO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsb0RBQWlCO0F
3854BQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixxQkFBcUI7QUFDM0M7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBLGdDQUFnQyxzQkFBc0IsRUFBRSx5Q0FBeUMsU0FBUyxtQkFBbUIsTUFBTSxxQkFBcUI7QUFDeEo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSLHlDQUF5QyxvQkFBb0IscUNBQXFDLGtCQUFrQjtBQUNwSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSLHlDQUF5Qyw0QkFBNEI7QUFDckU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsb0RBQVk7QUFDcEI7QUFDQTtBQUNBLGlFQUFpRSxrRUFBaUI7QUFDbEY7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQiw0RUFBeUI7QUFDeEQ7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxvREFBYztBQUM1QjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLFNBQVMsb0RBQWlCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLHFCQUFxQixFQUFFLFlBQVk7QUFDbEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLG9EQUFpQjtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ04sU0FBUyxvREFBaUI7QUFDMUI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLFdBQVcsb0RBQWlCO0F
3854BQzVCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsZUFBZSxvREFBaUI7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLFdBQVcsb0RBQWlCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsV0FBVyxvREFBaUI7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFaUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9tb2R1bGVzL3BhZ2luYXRpb24ubWpzPzI4MTciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYyBhcyBjbGFzc2VzVG9TZWxlY3RvciB9IGZyb20gJy4uL3NoYXJlZC9jbGFzc2VzLXRvLXNlbGVjdG9yLm1qcyc7XG5pbXBvcnQgeyBjIGFzIGNyZWF0ZUVsZW1lbnRJZk5vdERlZmluZWQgfSBmcm9tICcuLi9zaGFyZWQvY3JlYXRlLWVsZW1lbnQtaWYtbm90LWRlZmluZWQubWpzJztcbmltcG9ydCB7IG0gYXMgbWFrZUVsZW1lbnRzQXJyYXksIGggYXMgZWxlbWVudE91dGVyU2l6ZSwgaSBhcyBlbGVtZW50SW5kZXgsIHMgYXMgc2V0SW5uZXJIVE1MLCBiIGFzIGVsZW1lbnRQYXJlbnRzIH0gZnJvbSAnLi4vc2hhcmVkL3V0aWxzLm1qcyc7XG5cbmZ1bmN0aW9uIFBhZ2luYXRpb24oX3JlZikge1xuICBsZXQge1xuICAgIHN3aXBlcixcbiAgICBleHRlbmRQYXJhbXMsXG4gICAgb24sXG4gICAgZW1pdFxuICB9ID0gX3JlZj
vendor: 23,375 bytes, line 3854
3854tcbiAgY29uc3QgcGZ4ID0gJ3N3aXBlci1wYWdpbmF0aW9uJztcbiAgZXh0ZW5kUGFyYW1zKHtcbiAgICBwYWdpbmF0aW9uOiB7XG4gICAgICBlbDogbnVsbCxcbiAgICAgIGJ1bGxldEVsZW1lbnQ6ICdzcGFuJyxcbiAgICAgIGNsaWNrYWJsZTogZmFsc2UsXG4gICAgICBoaWRlT25DbGljazogZmFsc2UsXG4gICAgICByZW5kZXJCdWxsZXQ6IG51bGwsXG4gICAgICByZW5kZXJQcm9ncmVzc2JhcjogbnVsbCxcbiAgICAgIHJlbmRlckZyYWN0aW9uOiBudWxsLFxuICAgICAgcmVuZGVyQ3VzdG9tOiBudWxsLFxuICAgICAgcHJvZ3Jlc3NiYXJPcHBvc2l0ZTogZmFsc2UsXG4gICAgICB0eXBlOiAnYnVsbGV0cycsXG4gICAgICAvLyAnYnVsbGV0cycgb3IgJ3Byb2dyZXNzYmFyJyBvciAnZnJhY3Rpb24nIG9yICdjdXN0b20nXG4gICAgICBkeW5hbWljQnVsbGV0czogZmFsc2UsXG4gICAgICBkeW5hbWljTWFpbkJ1bGxldHM6IDEsXG4gICAgICBmb3JtYXRGcmFjdGlvbkN1cnJlbnQ6IG51bWJlciA9PiBudW1iZXIsXG4gICAgICBmb3JtYXRGcmFjdGlvblRvdGFsOiBudW1iZXIgPT4gbnVtYmVyLFxuICAgICAgYnVsbGV0Q2xhc3M6IGAke3BmeH0tYnVsbGV0YCxcbiAgICAgIGJ1bGxldEFjdGl2ZUNsYXNzOiBgJHtwZnh9LWJ1bGxldC1hY3RpdmVgLFxuICAgICAgbW9kaWZpZXJDbGFzczogYCR7cGZ4fS1gLFxuICAgICAgY3VycmVudENsYXNzOiBgJHtwZnh9LWN1cnJlbnRgLFxuICAgICAgdG90YWxDbGFzczogYCR7cGZ4fS10b3RhbGAsXG4gICAgICBoaWRkZW5DbGFzczogYCR7cGZ4fS1oaWRkZW5gLFxuICAgICAgcHJvZ3Jlc3NiYXJGaWxsQ2xhc3M6IGAke3BmeH0tcHJvZ3Jlc3NiYXItZmlsbGAsXG4gICAgICBwcm9ncmVzc2Jhck9wcG9zaXRlQ2xhc3M6IGAke3BmeH0tcHJvZ3Jlc3NiYXItb3Bwb3NpdGVgLFxuICAgICAgY2xpY2thYmxlQ2xhc3M6IGAke3BmeH0tY2xpY2thYmxlYCxcbiAgICAgIGxvY2tDbGFzczogYCR7cGZ4fS1sb2NrYCxcbiAgICAgIGhvcml6b250YWxDbGFzczogYCR7cGZ4fS1ob3Jpem9udGFsYCxcbiAgICAgIHZlcnRpY2FsQ2xhc3M6IGAke3BmeH0tdmVydGljYWxgLFxuICAgICAgcGFnaW5hdGlvbkRpc2FibGVkQ2xhc3M6IGAke3BmeH0tZGlzYWJsZWRgXG4gICAgfVxuICB9KTtcbiAgc3dpcGVyLnBhZ2luYXRpb24gPSB7XG4gICAgZWw6IG51bGwsXG4gICAgYnVsbGV0czogW11cbiAgfTtcbiAgbGV0IGJ1bGxldFNpemU7XG4gIGxldCBkeW5hbWljQnVsbGV0SW5kZXggPSAwO1xuICBmdW5jdGlvbiBpc1BhZ2luYXRpb25EaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gIXN3aXBlci5wYXJhbXMucGFnaW5hdGlvbi5lbCB8fCAhc3dpcGVyLnBhZ2luYXRpb24uZWwgfHwgQXJyYXkuaXNBcnJheShzd2lwZXIucGFnaW5hdGlvbi5lbCkgJiYgc3dpcGVyLnBhZ2luYXRpb24uZWwubGVuZ3RoID09PSAwO1xuICB9XG4gIGZ1bmN0aW9uIHNldFNpZGVCdWxsZXRzKGJ1bGxldEVsLCBwb3NpdGlvbikge1xuICAgIGNvbnN0IHtcbiAgICAgIGJ1bGxldEFjdGl2ZUNsYXNzXG4gICAgfSA9IHN3aXBlci5wYXJhbXMucGFnaW5hdGlvbjtcbiAgICBpZiAoIWJ1bGxldEVsKSByZXR1cm47XG4gICAgYnVsbGV0RWwgPSBidWxsZXRFbFtgJHtwb3NpdGlvbiA9PT0gJ3ByZXYnID8gJ3ByZXZpb3VzJyA6ICduZXh0J31FbGVtZW50U2libGluZ2BdO1xuICAgIGlmIChidWxsZXRFbCkge1xuICAgICAgYnVsbGV0RWwuY2xhc3NMaXN0LmFkZChgJHtidWxsZXRBY3RpdmVDbGFzc30tJHtwb3NpdGlvbn1gKTtcbiAgICAgIGJ1bGxldEVsID0gYnVsbGV0RWxbYCR7cG9zaXRpb24gPT09ICdwcmV2JyA/ICdwcmV2aW91cycgOiAnbmV4dCd9RWxlbWVudFNpYmxpbmdgXTtcbiAgICAgIGlmIChidWxsZXRFbCkge1xuICAgICAgICBidWxsZXRFbC5jbGFzc0xpc3QuYWRkKGAke2J1bGxldEFjdGl2ZUNsYXNzfS0ke3Bvc2l0aW9ufS0ke3Bvc2l0aW9ufWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBnZXRNb3ZlRGlyZWN0aW9uKHByZXZJbmRleCwgbmV4dEluZGV4LCBsZW5ndGgpIHtcbiAgICBwcmV2SW5kZXggPSBwcmV2SW5kZXggJSBsZW5ndGg7XG4gICAgbmV4dEluZGV4ID0gbmV4dEluZGV4ICUgbGVuZ3RoO1xuICAgIGlmIChuZXh0SW5kZXggPT09IHByZXZJbmRleCArIDEpIHtcbiAgICAgIHJldHVybiAnbmV4dCc7XG4gICAgfSBlbHNlIGlmIChuZXh0SW5kZXggPT09IHByZXZJbmRleCAtIDEpIHtcbiAgICAgIHJldHVybiAncHJldmlvdXMnO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH1cbiAgZnVuY3Rpb24gb25CdWxsZXRDbGljayhlKSB7XG4gICAgY29uc3QgYnVsbGV0RWwgPSBlLnRhcmdldC5jbG9zZXN0KGNsYXNzZXNUb1NlbGVjdG9yKHN3aXBlci5wYXJhbXMucGFnaW5hdGlvbi5idWxsZXRDbGFzcykpO1xuICAgIGlmICghYnVsbGV0RWwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGNvbnN0IGluZGV4ID0gZWxlbWVudEluZGV4KGJ1bGxldEVsKSAqIHN3aXBlci5wYXJhbXMuc2xpZGVzUGVyR3JvdXA7XG4gICAgaWYgKHN3aXBlci5wYXJhbXMubG9vcCkge1xuICAgICAgaWYgKHN3aXBlci5yZWFsSW5kZXggPT09IGluZGV4KSByZXR1cm47XG4gICAgICBjb25zdCBtb3ZlRGlyZWN0aW9uID0gZ2V0TW92ZURpcmVjdGlvbihzd2lwZXIucmVhbEluZGV4LCBpbmRleCwgc3dpcGVyLnNsaWRlcy5sZW5ndGgpO1xuICAgICAgaWYgKG1vdmVEaXJlY3Rpb24gPT09ICduZXh0Jykge1xuICAgICAgICBzd2lwZXIuc2xpZGVOZXh0KCk7XG4gICAgICB9IGVsc2UgaWYgKG1vdmVEaXJlY3Rpb24gPT09ICdwcmV2aW91cycpIHtcbiAgICAgICAgc3dpcGVyLnNsaWRlUHJldigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3dpcGVyLnNsaWRlVG9Mb29wKGluZGV4KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc3dpcGVyLnNsaWRlVG8oaW5kZXgpO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiB1cGRhdGUoKSB7XG4gICAgLy8gUmVuZGVyIHx8IFVwZGF0ZSBQYWdpbmF0aW9uIGJ1bGxldHMvaXRlbXNcbiAgICBjb25zdCBydGwgPSBzd2lwZXIucnRsO1xuICAgIGNvbnN0IHBhcmFtcyA9IHN3aXBlci5wYXJhbXMucGFnaW5hdGlvbjtcbiAgICBpZiAoaXNQYWdpbmF0aW9uRGlzYWJsZWQoKSkgcmV0dXJuO1xuICAgIGxldCBlbCA9IHN3aXBlci5wYWdpbmF0aW9uLmVsO1xuICAgIGVsID0gbWFrZUVsZW1lbnRzQXJyYXkoZWwpO1xuICAgIC8vIEN1cnJlbnQvVG90YWxcbiAgICBsZXQgY3VycmVudDtcbiAgICBsZXQgcHJldmlvdXNJbmRleDtcbiAgICBjb25zdCBzbGlkZXNMZW5ndGggPSBzd2lwZXIudmlydHVhbCAmJiBzd2lwZXIucGFyYW1zLnZpcnR1YWwuZW5hYmxlZCA/IHN3aXBlci52aXJ0dWFsLnNsaWRlcy5sZW5ndGggOiBzd2lwZXIuc2xpZGVzLmxlbmd0aDtcbiAgICBjb25zdCB0b3RhbCA9IHN3aXBlci5wYXJhbXMubG9vcCA/IE1hdGguY2VpbChzbGlkZXNMZW5ndGggLyBzd2lwZXIucGFyYW1zLnNsaWRlc1Blckdyb3VwKSA6IHN3aXBlci5zbmFwR3JpZC5sZW5ndGg7XG4gICAgaWYgKHN3aXBlci5wYXJhbXMubG9vcCkge1xuICAgICAgcHJldmlvdXNJbmRleCA9IHN3aXBlci5wcmV2aW91c1JlYWxJbmRleCB8fCAwO1xuICAgICAgY3VycmVudCA9IHN3aXBlci5wYXJhbXMuc2xpZGVzUGVyR3JvdXAgPiAxID8gTWF0aC5mbG9vcihzd2lwZXIucmVhbEluZGV4IC8gc3dpcGVyLnBhcmFtcy5zbGlkZXNQZXJHcm91cCkgOiBzd2lwZXIucmVhbEluZGV4O1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHN3aXBlci5zbmFwSW5kZXggIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBjdXJyZW50ID0gc3dpcGVyLnNuYXBJbmRleDtcbiAgICAgIHByZXZpb3VzSW5kZXggPSBzd2lwZXIucHJldmlvdXNTbmFwSW5kZXg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByZXZpb3VzSW5kZXggPSBzd2lwZXIucHJldmlvdXNJbmRleCB8fCAwO1xuICAgICAgY3VycmVudCA9IHN3aXBlci5hY3RpdmVJbmRleCB8fCAwO1xuICAgIH1cbiAgICAvLyBUeXBlc1xuICAgIGlmIChwYXJhbXMudHlwZSA9PT0gJ2J1bGxldHMnICYmIHN3aXBlci5wYWdpbmF0aW9uLmJ1bGxldHMgJiYgc3dpcGVyLnBhZ2luYXRpb24uYnVsbGV0cy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBidWxsZXRzID0gc3dpcGVyLnBhZ2luYXRpb24uYnVsbGV0cztcbiAgICAgIGxldCBmaXJzdEluZGV4O1xuICAgICAgbGV0IGxhc3RJbmRleDtcbiAgICAgIGxldCBtaWRJbmRleDtcbiAgICAgIGlmIChwYXJhbXMuZHluYW1pY0J1bGxldHMpIHtcbiAgICAgICAgYnVsbGV0U2l6ZSA9IGVsZW1lbnRPdXRlclNpemUoYnVsbGV0c1swXSwgc3dpcGVyLmlzSG9yaXpvbnRhbCgpID8gJ3dpZHRoJyA6ICdoZWlnaHQnLCB0cnVlKTtcbiAgICAgICAgZWwuZm9yRWFjaChzdWJFbCA9PiB7XG4gICAgICAgICAgc3ViRWwuc3R5bGVbc3dpcGVyLmlzSG9yaXpvbnRhbCgpID8gJ3dpZHRoJyA6ICdoZWlnaHQnXSA9IGAke2J1bGxldFNpemUgKiAocGFyYW1zLmR5bmFtaWNNYWluQnVsbGV0cyArIDQpfXB4YDtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChwYXJhbXMuZHluYW1pY01haW5CdWxsZXRzID4gMSAmJiBwcmV2aW91c0luZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkeW5hbWljQnVsbGV0SW5kZXggKz0gY3VycmVudCAtIChwcmV2aW91c0luZGV4IHx8IDApO1xuICAgICAgICAgIGlmIChkeW5hbWljQnVsbGV0SW5kZXggPiBwYXJhbXMuZHluYW1pY01haW5CdWxsZXRzIC0gMSkge1xuICAgICAgICAgICAgZHluYW1pY0J1bGxldEluZGV4ID0gcGFyYW1zLmR5bmFtaWNNYWluQnVsbGV0cyAtIDE7XG4gICAgICAgICAgfSBlbHNlIGlmIChkeW5hbWljQnVsbGV0SW5kZXggPCAwKSB7XG4gICAgICAgICAgICBkeW5hbWljQnVsbGV0SW5kZXggPSAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmaXJzdEluZGV4ID0gTWF0aC5tYXgoY3VycmVudCAtIGR5bmFtaWNCdWxsZXRJbmRleCwgMCk7XG4gICAgICAgIGxhc3RJbmRleCA9IGZpcnN0SW5kZXggKyAoTWF0aC5taW4oYnVsbGV0cy5sZW5ndGgsIHBhcmFtcy5keW5hbWljTWFpbkJ1bGxldHMpIC0gMSk7XG4gICAgICAgIG1pZEluZGV4ID0gKGxhc3RJbmRleCArIGZpcnN0SW5kZXgpIC8gMjtcbiAgICAgIH1cbiAgICAgIGJ1bGxldHMuZm9yRWFjaChidWxsZXRFbCA9PiB7XG4gICAgICAgIGNvbnN0IGNsYXNzZXNUb1JlbW92ZSA9IFsuLi5bJycsICctbmV4dCcsICctbmV4dC1uZXh0JywgJy1wcmV2JywgJy1wcmV2LXByZXYnLCAnLW1haW4nXS5tYXAoc3VmZml4ID0+IGAke3BhcmFtcy5idWxsZXRBY3RpdmVDbGFzc30ke3N1ZmZpeH1gKV0ubWFwKHMgPT4gdHlwZW9mIHMgPT09ICdzdHJpbmcnICYmIHMuaW5jbHVkZXMoJyAnKSA/IHMuc3BsaXQoJyAnKSA6IHMpLmZsYXQoKTtcbiAgICAgICAgYnVsbGV0RWwuY2xhc3NMaXN0LnJlbW92ZSguLi5jbGFzc2VzVG9SZW1vdmUpO1xuICAgICAgfSk7XG4gICAgICBpZiAoZWwubGVuZ3RoID4gMSkge1xuICAgICAgICBidWxsZXRzLmZvckVhY2goYnVsbGV0ID0+IHtcbiAgICAgICAgICBjb25zdCBidWxsZXRJbmRleCA9IGVsZW1lbnRJbmRleChidWxsZXQpO1xuICAgICAgICAgIGlmIChidWxsZXRJbmRleCA9PT0gY3VycmVudCkge1xuICAgICAgICAgICAgYnVsbGV0LmNsYXNzTGlzdC5hZGQoLi4ucGFyYW1zLmJ1bGxldEFjdGl2ZUNsYXNzLnNwbGl0KCcgJykpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoc3dpcGVyLmlzRWxlbWVudCkge1xuICAgICAgICAgICAgYnVsbGV0LnNldEF0dHJpYnV0ZSgncGFydCcsICdidWxsZXQnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHBhcmFtcy5keW5hbWljQnVsbGV0cykge1xuICAgICAgICAgICAgaWYgKGJ1bGxldEluZGV4ID49IGZpcnN0SW5kZXggJiYgYnVsbGV0SW5kZXggPD0gbGFzdEluZGV4KSB7XG4gICAgICAgICAgICAgIGJ1bGxldC5jbGFzc0xpc3QuYWRkKC4uLmAke3BhcmFtcy5idWxsZXRBY3RpdmVDbGFzc30tbWFpbmAuc3BsaXQoJyAnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYnVsbGV0SW5kZXggPT09IGZpcnN0SW5kZXgpIHtcbiAgICAgICAgICAgICAgc2V0U2lkZUJ1bGxldHMoYnVsbGV0LCAncHJldicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGJ1bGxldEluZGV4ID09PSBsYXN0SW5kZXgpIHtcbiAgICAgICAgICAgICAgc2V0U2lkZUJ1bGxldHMoYnVsbGV0LCAnbmV4dCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBidWxsZXQgPSBidWxsZXRzW2N1cnJlbnRdO1xuICAgICAgICBpZiAoYnVsbGV0KSB7XG4gICAgICAgICAgYnVsbGV0LmNsYXNzTGlzdC5hZGQoLi4ucGFyYW1zLmJ1bGxldEFjdGl2ZUNsYXNzLnNwbGl0KCcgJykpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzd2lwZXIuaXNFbGVtZW50KSB7XG4gICAgICAgICAgYnVsbGV0cy5mb3JFYWNoKChidWxsZXRFbCwgYnVsbGV0SW5kZXgpID0+IHtcbiAgICAgICAgICAgIGJ1bGxldEVsLnNldEF0dHJpYnV0ZSgncGFydCcsIGJ1bGxldEluZGV4ID09PSBjdXJyZW50ID8gJ2J1bGxldC1hY3RpdmUnIDogJ2J1bGxldCcpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXJhbXMuZHluYW1pY0J1bGxldHMpIHtcbiAgICAgICAgICBjb25zdCBmaXJzdERpc3BsYXllZEJ1bGxldCA9IGJ1bGxldHNbZmlyc3RJbmRleF07XG4gICAgICAgICAgY29uc3QgbGFzdERpc3BsYXllZEJ1bGxldCA9IGJ1bGxldHNbbGFzdEluZGV4XTtcbiAgICAgICAgICBmb3IgKGxldCBpID0gZmlyc3RJbmRleDsgaSA8PSBsYXN0SW5kZXg7IGkgKz0gMSkge1xuICAgICAgICAgICAgaWYgKGJ1bGxldHNbaV0pIHtcbiAgICAgICAgICAgICAgYnVsbGV0c1tpXS5jbGFzc0xpc3QuYWRkKC4uLmAke3BhcmFtcy5idWxsZXRBY3RpdmVDbGFzc30tbWFpbmAuc3BsaXQoJyAnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHNldFNpZGVCdWxsZXRzKGZpcnN0RGlzcGxheWVkQnVsbGV0LCAncHJldicpO1xuICAgICAgICAgIHNldFNpZGVCdWxsZXRzKGxhc3REaXNwbGF5ZWRCdWxsZXQsICduZXh0Jyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChwYXJhbXMuZHluYW1pY0J1bGxldHMpIHtcbiAgICAgICAgY29uc3QgZHluYW1pY0J1bGxldHNMZW5ndGggPSBNYXRoLm1pbihidWxsZXRzLmxlbmd0aCwgcGFyYW1zLmR5bmFtaWNNYWluQnVsbGV0cyArIDQpO1xuICAgICAgICBjb25zdCBidWxsZXRzT2Zmc2V0ID0gKGJ1bGxldFNpemUgKiBkeW5hbWljQnVsbGV0c0xlbmd0aCAtIGJ1bGxldFNpemUpIC8gMiAtIG1pZEluZGV4ICogYnVsbGV0U2l6ZTtcbiAgICAgICAgY29uc3Qgb2Zmc2V0UHJvcCA9IHJ0bCA/ICdyaWdodCcgOiAnbGVmdCc7XG4gICAgICAgIGJ1bGxldHMuZm9yRWFjaChidWxsZXQgPT4ge1xuICAgICAgICAgIGJ1bGxldC5zdHlsZVtzd2lwZXIuaXNIb3Jpem9udGFsKCkgPyBvZmZzZXRQcm9wIDogJ3RvcCddID0gYCR7YnVsbGV0c09mZnNldH1weGA7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBlbC5mb3JFYWNoKChzdWJFbCwgc3ViRWxJbmRleCkgPT4ge1xuICAgICAgaWYgKHBhcmFtcy50eXBlID09PSAnZnJhY3Rpb24nKSB7XG4gICAgICAgIHN1YkVsLnF1ZXJ5U2VsZWN0b3JBbGwoY2xhc3Nlc1RvU2VsZWN0b3IocGFyYW1zLmN1cnJlbnRDbGFzcykpLmZvckVhY2goZnJhY3Rpb25FbCA9PiB7XG4gICAgICAgICAgZnJhY3Rpb25FbC50ZXh0Q29udGVudCA9IHBhcmFtcy5mb3JtYXRGcmFjdGlvbkN1cnJlbnQoY3VycmVudCArIDEpO1xuICAgICAgICB9KTtcbiAgICAgICAgc3ViRWwucXVlcnlTZWxlY3RvckFsbChjbGFzc2VzVG9TZWxlY3RvcihwYXJhbXMudG90YWxDbGFzcykpLmZvckVhY2godG90YWxFbCA9PiB7XG4gICAgICAgICAgdG90YWxFbC50ZXh0Q29udGVudCA9IHBhcmFtcy5mb3JtYXRGcmFjdGlvblRvdGFsKHRvdGFsKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAocGFyYW1zLnR5cGUgPT09ICdwcm9ncmVzc2JhcicpIHtcbiAgICAgICAgbGV0IHByb2dyZXNzYmFyRGlyZWN0aW9uO1xuICAgICAgICBpZiAocGFyYW1zLnByb2dyZXNzYmFyT3Bwb3NpdGUpIHtcbiAgICAgICAgICBwcm9ncmVzc2JhckRpcmVjdGlvbiA9IHN3aXBlci5pc0hvcml6b250YWwoKSA/ICd2ZXJ0aWNhbCcgOiAnaG9yaXpvbnRhbCc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcHJvZ3Jlc3NiYXJEaXJlY3Rpb24gPSBzd2lwZXIuaXNIb3Jpem9udGFsKCkgPyAnaG9yaXpvbnRhbCcgOiAndmVydGljYWwnO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNjYWxlID0gKGN1cnJlbnQgKyAxKSAvIHRvdGFsO1xuICAgICAgICBsZXQgc2NhbGVYID0gMTtcbiAgICAgICAgbGV0IHNjYWxlWSA9IDE7XG4gICAgICAgIGlmIChwcm9ncmVzc2JhckRpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnKSB7XG4gICAgICAgICAgc2NhbGVYID0gc2NhbGU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2NhbGVZID0gc2NhbGU7XG4gICAgICAgIH1cbiAgICAgICAgc3ViRWwucXVlcnlTZWxlY3RvckFsbChjbGFzc2VzVG9TZWxlY3RvcihwYXJhbXMucHJvZ3Jlc3NiYXJGaWxsQ2xhc3MpKS5mb3JFYWNoKHByb2dyZXNzRWwgPT4ge1xuICAgICAgICAgIHByb2dyZXNzRWwuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZTNkKDAsMCwwKSBzY2FsZVgoJHtzY2FsZVh9KSBzY2FsZVkoJHtzY2FsZVl9KWA7XG4gICAgICAgICAgcHJvZ3Jlc3NFbC5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gPSBgJHtzd2lwZXIucGFyYW1zLnNwZWVkfW1zYDtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAocGFyYW1zLnR5cGUgPT09ICdjdXN0b20nICYmIHBhcmFtcy5yZW5kZXJDdXN0b20pIHtcbiAgICAgICAgc2V0SW5uZXJIVE1MKHN1YkVsLCBwYXJhbXMucmVuZGVyQ3VzdG9tKHN3aXBlciwgY3VycmVudCArIDEsIHRvdGFsKSk7XG4gICAgICAgIGlmIChzdWJFbEluZGV4ID09PSAwKSBlbWl0KCdwYWdpbmF0aW9uUmVuZGVyJywgc3ViRWwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHN1YkVsSW5kZXggPT09IDApIGVtaXQoJ3BhZ2luYXRpb25SZW5kZXInLCBzdWJFbCk7XG4gICAgICAgIGVtaXQoJ3BhZ2luYXRpb25VcGRhdGUnLCBzdWJFbCk7XG4gICAgICB9XG4gICAgICBpZiAoc3dpcGVyLnBhcmFtcy53YXRjaE92ZXJmbG93ICYmIHN3aXBlci5lbmFibGVkKSB7XG4gICAgICAgIHN1YkVsLmNsYXNzTGlzdFtzd2lwZXIuaXNMb2NrZWQgPyAnYWRkJyA6ICdyZW1vdmUnXShwYXJhbXMubG9ja0NsYXNzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgLy8gUmVuZGVyIENvbnRhaW5lclxuICAgIGNvbnN0IHBhcmFtcyA9IHN3aXBlci5wYXJhbXMucGFnaW5hdGlvbjtcbiAgICBpZiAoaXNQYWdpbmF0aW9uRGlzYWJsZWQoKSkgcmV0dXJuO1xuICAgIGNvbnN0IHNsaWRlc0xlbmd0aCA9IHN3aXBlci52aXJ0dWFsICYmIHN3aXBlci5wYXJhbXMudmlydHVhbC5lbmFibGVkID8gc3dpcGVyLnZpcnR1YWwuc2xpZGVzLmxlbmd0aCA6IHN3aXBlci5ncmlkICYmIHN3aXBlci5wYXJhbXMuZ3JpZC5yb3dzID4gMSA/IHN3aXBlci5zbGlkZXMubGVuZ3RoIC8gTWF0aC5jZWlsKHN3aXBlci5wYXJhbXMuZ3JpZC5yb3dzKSA6IHN3aXBlci5zbGlkZXMubGVuZ3RoO1xuICAgIGxldCBlbCA9IHN3aXBlci5wYWdpbmF0aW9uLmVsO1xuICAgIGVsID0gbWFrZUVsZW1lbnRzQXJyYXkoZWwpO1xuICAgIGxldCBwYWdpbmF0aW9uSFRNTCA9ICcnO1xuICAgIGlmIChwYXJhbXMudHlwZSA9PT0gJ2J1bGxldHMnKSB7XG4gICAgICBsZXQgbnVtYmVyT2ZCdWxsZXRzID0gc3dpcGVyLnBhcmFtcy5sb29wID8gTWF0aC5jZWlsKHNsaWRlc0xlbmd0aCAvIHN3aXBlci5wYXJhbXMuc2xpZGVzUGVyR3JvdXApIDogc3dpcGVyLnNuYXBHcmlkLmxlbmd0aDtcbiAgICAgIGlmIChzd2lwZXIucGFyYW1zLmZyZWVNb2RlICYmIHN3aXBlci5wYXJhbXMuZnJlZU1vZGUuZW5hYmxlZCAmJiBudW1iZXJPZkJ1bGxldHMgPiBzbGlkZXNMZW5ndGgpIHtcbiAgICAgICAgbnVtYmVyT2ZCdWxsZXRzID0gc2xpZGVzTGVuZ3RoO1xuICAgICAgfVxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1iZXJPZkJ1bGxldHM7IGkgKz0gMSkge1xuICAgICAgICBpZiAocGFyYW1zLnJlbmRlckJ1bGxldCkge1xuICAgICAgICAgIHBhZ2luYXRpb25IVE1MICs9IHBhcmFtcy5yZW5kZXJCdWxsZXQuY2FsbChzd2lwZXIsIGksIHBhcmFtcy5idWxsZXRDbGFzcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gcHJldHRpZXItaWdub3JlXG4gICAgICAgICAgcGFnaW5hdGlvbkhUTUwgKz0gYDwke3BhcmFtcy5idWxsZXRFbGVtZW50fSAke3N3aXBlci5pc0VsZW1lbnQgPyAncGFydD1cImJ1bGxldFwiJyA6ICcnfSBjbGFzcz1cIiR7cGFyYW1zLmJ1bGxldENsYXNzfVwiPjwvJHtwYXJhbXMuYnVsbGV0RWxlbWVudH0+YDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAocGFyYW1zLnR5cGUgPT09ICdmcmFjdGlvbicpIHtcbiAgICAgIGlmIChwYXJhbXMucmVuZGVyRnJhY3Rpb24pIHtcbiAgICAgICAgcGFnaW5hdGlvbkhUTUwgPSBwYXJhbXMucmVuZGVyRnJhY3Rpb24uY2FsbChzd2lwZXIsIHBhcmFtcy5jdXJyZW50Q2xhc3MsIHBhcmFtcy50b3RhbENsYXNzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhZ2luYXRpb25IVE1MID0gYDxzcGFuIGNsYXNzPVwiJHtwYXJhbXMuY3VycmVudENsYXNzfVwiPjwvc3Bhbj5gICsgJyAvICcgKyBgPHNwYW4gY2xhc3M9XCIke3BhcmFtcy50b3RhbENsYXNzfVwiPjwvc3Bhbj5gO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocGFyYW1zLnR5cGUgPT09ICdwcm9ncmVzc2JhcicpIHtcbiAgICAgIGlmIChwYXJhbXMucmVuZGVyUHJvZ3Jlc3NiYXIpIHtcbiAgICAgICAgcGFnaW5hdGlvbkhUTUwgPSBwYXJhbXMucmVuZGVyUHJvZ3Jlc3NiYXIuY2FsbChzd2lwZXIsIHBhcmFtcy5wcm9ncmVzc2JhckZpbGxDbGFzcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYWdpbmF0aW9uSFRNTCA9IGA8c3BhbiBjbGFzcz1cIiR7cGFyYW1zLnByb2dyZXNzYmFyRmlsbENsYXNzfVwiPjwvc3Bhbj5gO1xuICAgICAgfVxuICAgIH1cbiAgICBzd2lwZXIucGFnaW5hdGlvbi5idWxsZXRzID0gW107XG4gICAgZWwuZm9yRWFjaChzdWJFbCA9PiB7XG4gICAgICBpZiAocGFyYW1zLnR5cGUgIT09ICdjdXN0b20nKSB7XG4gICAgICAgIHNldElubmVySFRNTChzdWJFbCwgcGFnaW5hdGlvbkhUTUwgfHwgJycpO1xuICAgICAgfVxuICAgICAgaWYgKHBhcmFtcy50eXBlID09PSAnYnVsbGV0cycpIHtcbiAgICAgICAgc3dpcGVyLnBhZ2luYXRpb24uYnVsbGV0cy5wdXNoKC4uLnN1YkVsLnF1ZXJ5U2VsZWN0b3JBbGwoY2xhc3Nlc1RvU2VsZWN0b3IocGFyYW1zLmJ1bGxldENsYXNzKSkpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChwYXJhbXMudHlwZSAhPT0gJ2N1c3RvbScpIHtcbiAgICAgIGVtaXQoJ3BhZ2luYXRpb25SZW5kZXInLCBlbFswXSk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIGluaXQoKSB7XG4gICAgc3dpcGVyLnBhcmFtcy5wYWdpbmF0aW9uID0gY3JlYXRlRWxlbWVudElmTm90RGVmaW5lZChzd2lwZXIsIHN3aXBlci5vcmlnaW5hbFBhcmFtcy5wYWdpbmF0aW9uLCBzd2lwZXIucGFyYW1zLnBhZ2luYXRpb24sIHtcbiAgICAgIGVsOiAnc3dpcGVyLXBhZ2luYXRpb24nXG4gICAgfSk7XG4gICAgY29uc3QgcGFyYW1zID0gc3dpcGVyLnBhcmFtcy5wYWdpbmF0aW9uO1xuICAgIGlmICghcGFyYW1zLmVsKSByZXR1cm47XG4gICAgbGV0IGVsO1xuICAgIGlmICh0eXBlb2YgcGFyYW1zLmVsID09PSAnc3RyaW5nJyAmJiBzd2lwZXIuaXNFbGVtZW50KSB7XG4gICAgICBlbCA9IHN3aXBlci5lbC5xdWVyeVNlbGVjdG9yKHBhcmFtcy5lbCk7XG4gICAgfVxuICAgIGlmICghZWwgJiYgdHlwZW9mIHBhcmFtcy5lbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGVsID0gWy4uLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwocGFyYW1zLmVsKV07XG4gICAgfVxuICAgIGlmICghZWwpIHtcbiAgICAgIGVsID0gcGFyYW1zLmVsO1xuICAgIH1cbiAgICBpZiAoIWVsIHx8IGVsLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIGlmIChzd2lwZXIucGFyYW1zLnVuaXF1ZU5hdkVsZW1lbnRzICYmIHR5cGVvZiBwYXJhbXMuZWwgPT09ICdzdHJpbmcnICYmIEFycmF5LmlzQXJyYXkoZWwpICYmIGVsLmxlbmd0aCA+IDEpIHtcbiAgICAgIGVsID0gWy4uLnN3aXBlci5lbC5xdWVyeVNlbGVjdG9yQWxsKHBhcmFtcy5lbCldO1xuICAgICAgLy8gY2hlY2sgaWYgaXQgYmVsb25ncyB0byBhbm90aGVyIG5lc3RlZCBTd2lwZXJcbiAgICAgIGlmIChlbC5sZW5ndGggPiAxKSB7XG4gICAgICAgIGVsID0gZWwuZmluZChzdWJFbCA9PiB7XG4gICAgICAgICAgaWYgKGVsZW1lbnRQYXJlbnRzKHN1YkVsLCAnLnN3aXBlcicpWzBdICE9PSBzd2lwZXIuZWwpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KGVsKSAmJiBlbC5sZW5ndGggPT09IDEpIGVsID0gZWxbMF07XG4gICAgT2JqZWN0LmFzc2lnbihzd2lwZXIucGFnaW5hdGlvbiwge1xuICAgICAgZWxcbiAgICB9KTtcbiAgICBlbCA9IG1ha2VFbGVtZW50c0FycmF5KGVsKTtcbiAgICBlbC5mb3JFYWNoKHN1YkVsID0+IHtcbiAgICAgIGlmIChwYXJhbXMudHlwZSA9PT0gJ2J1bGxldHMnICYmIHBhcmFtcy5jbGlja2FibGUpIHtcbiAgICAgICAgc3ViRWwuY2xhc3NMaXN0LmFkZCguLi4ocGFyYW1zLmNsaWNrYWJsZUNsYXNzIHx8ICcnKS5zcGxpdCgnICcpKTtcbiAgICAgIH1cbiAgICAgIHN1YkVsLmNsYXNzTGlzdC5hZGQocGFyYW1zLm1vZGlmaWVyQ2xhc3MgKyBwYXJhbXMudHlwZSk7XG4gICAgICBzdWJFbC5jbGFzc0xpc3QuYWRkKHN3aXBlci5pc0hvcml6b250YWwoKSA/IHBhcmFtcy5ob3Jpem9udGFsQ2xhc3MgOiBwYXJhbXMudmVydGljYWxDbGFzcyk7XG4gICAgICBpZiAocGFyYW1zLnR5cGUgPT09ICdidWxsZXRzJyAmJiBwYXJhbXMuZHluYW1pY0J1bGxldHMpIHtcbiAgICAgICAgc3ViRWwuY2xhc3NMaXN0LmFkZChgJHtwYXJhbXMubW9kaWZpZXJDbGFzc30ke3BhcmFtcy50eXBlfS1keW5hbWljYCk7XG4gICAgICAgIGR5bmFtaWNCdWxsZXRJbmRleCA9IDA7XG4gICAgICAgIGlmIChwYXJhbXMuZHluYW1pY01haW5CdWxsZXRzIDwgMSkge1xuICAgICAgICAgIHBhcmFtcy5keW5hbWljTWFpbkJ1bGxldHMgPSAxO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocGFyYW1zLnR5cGUgPT09ICdwcm9ncmVzc2JhcicgJiYgcGFyYW1zLnByb2dyZXNzYmFyT3Bwb3NpdGUpIHtcbiAgICAgICAgc3ViRWwuY2xhc3NMaXN0LmFkZChwYXJhbXMucHJvZ3Jlc3NiYXJPcHBvc2l0ZUNsYXNzKTtcbiAgICAgIH1cbiAgICAgIGlmIChwYXJhbXMuY2xpY2thYmxlKSB7XG4gICAgICAgIHN1YkVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgb25CdWxsZXRDbGljayk7XG4gICAgICB9XG4gICAgICBpZiAoIXN3aXBlci5lbmFibGVkKSB7XG4gICAgICAgIHN1YkVsLmNsYXNzTGlzdC5hZGQocGFyYW1zLmxvY2tDbGFzcyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICBjb25zdCBwYXJhbXMgPSBzd2lwZXIucGFyYW1zLnBhZ2luYXRpb247XG4gICAgaWYgKGlzUGFnaW5hdGlvbkRpc2FibGVkKCkpIHJldHVybjtcbiAgICBsZXQgZWwgPSBzd2lwZXIucGFnaW5hdGlvbi5lbDtcbiAgICBpZiAoZWwpIHtcbiAgICAgIGVsID0gbWFrZUVsZW1lbnRzQXJyYXkoZWwpO1xuICAgICAgZWwuZm9yRWFjaChzdWJFbCA9PiB7XG4gICAgICAgIHN1YkVsLmNsYXNzTGlzdC5yZW1vdmUocGFyYW1zLmhpZGRlbkNsYXNzKTtcbiAgICAgICAgc3ViRWwuY2xhc3NMaXN0LnJlbW92ZShwYXJhbXMubW9kaWZpZXJDbGFzcyArIHBhcmFtcy50eXBlKTtcbiAgICAgICAgc3ViRWwuY2xhc3NMaXN0LnJlbW92ZShzd2lwZXIuaXNIb3Jpem9udGFsKCkgPyBwYXJhbXMuaG9yaXpvbnRhbENsYXNzIDogcGFyYW1zLnZlcnRpY2FsQ2xhc3MpO1xuICAgICAgICBpZiAocGFyYW1zLmNsaWNrYWJsZSkge1xuICAgICAgICAgIHN1YkVsLmNsYXNzTGlzdC5yZW1vdmUoLi4uKHBhcmFtcy5jbGlja2FibGVDbGFzcyB8fCAnJykuc3BsaXQoJyAnKSk7XG4gICAgICAgICAgc3ViRWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBvbkJ1bGxldENsaWNrKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChzd2lwZXIucGFnaW5hdGlvbi5idWxsZXRzKSBzd2lwZXIucGFnaW5hdGlvbi5idWxsZXRzLmZvckVhY2goc3ViRWwgPT4gc3ViRWwuY2xhc3NMaXN0LnJlbW92ZSguLi5wYXJhbXMuYnVsbGV0QWN0aXZlQ2xhc3Muc3BsaXQoJyAnKSkpO1xuICB9XG4gIG9uKCdjaGFuZ2VEaXJlY3Rpb24nLCAoKSA9PiB7XG4gICAgaWYgKCFzd2lwZXIucGFnaW5hdGlvbiB8fCAhc3dpcGVyLnBhZ2luYXRpb24uZWwpIHJldHVybjtcbiAgICBjb25zdCBwYXJhbXMgPSBzd2lwZXIucGFyYW1zLnBhZ2luYXRpb247XG4gICAgbGV0IHtcbiAgICAgIGVsXG4gICAgfSA9IHN3aXBlci5wYWdpbmF0aW9uO1xuICAgIGVsID0gbWFrZUVsZW1lbnRzQXJyYXkoZWwpO1xuICAgIGVsLmZvckVhY2goc3ViRWwgPT4ge1xuICAgICAgc3ViRWwuY2xhc3NMaXN0LnJlbW92ZShwYXJhbXMuaG9yaXpvbnRhbENsYXNzLCBwYXJhbXMudmVydGljYWxDbGFzcyk7XG4gICAgICBzdWJFbC5jbGFzc0xpc3QuYWRkKHN3aXBlci5pc0hvcml6b250YWwoKSA/IHBhcmFtcy5ob3Jpem9udGFsQ2xhc3MgOiBwYXJhbXMudmVydGljYWxDbGFzcyk7XG4gICAgfSk7XG4gIH0pO1xuICBvbignaW5pdCcsICgpID0+IHtcbiAgICBpZiAoc3dpcGVyLnBhcmFtcy5wYWdpbmF0aW9uLmVuYWJsZWQgPT09IGZhbHNlKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgIGRpc2FibGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5pdCgpO1xuICAgICAgcmVuZGVyKCk7XG4gICAgICB1cGRhdGUoKTtcbiAgICB9XG4gIH0pO1xuICBvbignYWN0aXZlSW5kZXhDaGFuZ2UnLCAoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBzd2lwZXIuc25hcEluZGV4ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgdXBkYXRlKCk7XG4gICAgfVxuICB9KTtcbiAgb24oJ3NuYXBJbmRleENoYW5nZScsICgpID0+IHtcbiAgICB1cGRhdGUoKTtcbiAgfSk7XG4gIG9uKCdzbmFwR3JpZExlbmd0aENoYW5nZScsICgpID0+IHtcbiAgICByZW5kZXIoKTtcbiAgICB1cGRhdGUoKTtcbiAgfSk7XG4gIG9uKCdkZXN0cm95JywgKCkgPT4ge1xuICAgIGRlc3Ryb3koKTtcbiAgfSk7XG4gIG9uKCdlbmFibGUgZGlzYWJsZScsICgpID0+IHtcbiAgICBsZXQge1xuICAgICAgZWxcbiAgICB9ID0gc3dpcGVyLnBhZ2luYXRpb247XG4gICAgaWYgKGVsKSB7XG4gICAgICBlbCA9IG1ha2VFbGVtZW50c0FycmF5KGVsKTtcbiAgICAgIGVsLmZvckVhY2goc3ViRWwgPT4gc3ViRWwuY2xhc3NMaXN0W3N3aXBlci5lbmFibGVkID8gJ3JlbW92ZScgOiAnYWRkJ10oc3dpcGVyLnBhcmFtcy5wYWdpbmF0aW9uLmxvY2tDbGFzcykpO1xuICAgIH1cbiAgfSk7XG4gIG9uKCdsb2NrIHVubG9jaycsICgpID0+IHtcbiAgICB1cGRhdGUoKTtcbiAgfSk7XG4gIG9uKCdjbGljaycsIChfcywgZSkgPT4ge1xuICAgIGNvbnN0IHRhcmdldEVsID0gZS50YXJnZXQ7XG4gICAgY29uc3QgZWwgPSBtYWtlRWxlbWVudHNBcnJheShzd2lwZXIucGFnaW5hdGlvbi5lbCk7XG4gICAgaWYgKHN3aXBlci5wYXJhbXMucGFnaW5hdGlvbi5lbCAmJiBzd2lwZXIucGFyYW1zLnBhZ2luYXRpb24uaGlkZU9uQ2xpY2sgJiYgZWwgJiYgZWwubGVuZ3RoID4gMCAmJiAhdGFyZ2V0RWwuY2xhc3NMaXN0LmNvbnRhaW5zKHN3aXBlci5wYXJhbXMucGFnaW5hdGlvbi5idWxsZXRDbGFzcykpIHtcbiAgICAgIGlmIChzd2lwZXIubmF2aWdhdGlvbiAmJiAoc3dpcGVyLm5hdmlnYXRpb24ubmV4dEVsICYmIHRhcmdldEVsID09PSBzd2lwZXIubmF2aWdhdGlvbi5uZXh0RWwgfHwgc3dpcGVyLm5hdmlnYXRpb24ucHJldkVsICYmIHRhcmdldEVsID09PSBzd2lwZXIubmF2aWdhdGlvbi5wcmV2RWwpKSByZXR1cm47XG4gICAgICBjb25zdCBpc0hpZGRlbiA9IGVsWzBdLmNsYXNzTGlzdC5jb250YWlucyhzd2lwZXIucGFyYW1zLnBhZ2luYXRpb24uaGlkZGVuQ2xhc3MpO1xuICAgICAgaWYgKGlzSGlkZGVuID09PSB0cnVlKSB7XG4gICAgICAgIGVtaXQoJ3BhZ2luYXRpb25TaG93Jyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbWl0KCdwYWdpbmF0aW9uSGlkZScpO1xuICAgICAgfVxuICAgICAgZWwuZm9yRWFjaChzdWJFbCA9PiBzdWJFbC5jbGFzc0xpc3QudG9nZ2xlKHN3aXBlci5wYXJhbXMucGFnaW5hdGlvbi5oaWRkZW5DbGFzcykpO1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IGVuYWJsZSA9ICgpID0+IHtcbiAgICBzd2lwZXIuZWwuY2xhc3NMaXN0LnJlbW92ZShzd2lwZXIucGFyYW1zLnBhZ2luYXRpb24ucGFnaW5hdGlvbkRpc2FibGVkQ2xhc3MpO1xuICAgIGxldCB7XG4gICAgICBlbFxuICAgIH0gPSBzd2lwZXIucGFnaW5hdGlvbjtcbiAgICBpZiAoZWwpIHtcbiAgICAgIGVsID0gbWFrZUVsZW1lbnRzQXJyYXkoZWwpO1xuICAgICAgZWwuZm9yRWFjaChzdWJFbCA9PiBzdWJFbC5jbGFzc0xpc3QucmVtb3ZlKHN3aXBlci5wYXJhbXMucGFnaW5hdGlvbi5wYWdpbmF0aW9uRGlzYWJsZWRDbGFzcykpO1xuICAgIH1cbiAgICBpbml0KCk7XG4gICAgcmVuZGVyKCk7XG4gICAgdXBkYXRlKCk7XG4gIH07XG4gIGNvbnN0IGRpc2FibGUgPSAoKSA9PiB7XG4gICAgc3dpcGVyLmVsLmNsYXNzTGlzdC5hZGQoc3dpcGVyLnBhcmFtcy5wYWdpbmF0aW9uLnBhZ2luYXRpb25EaXNhYmxlZENsYXNzKTtcbiAgICBsZXQge1xuICAgICAgZWxcbiAgICB9ID0gc3dpcGVyLnBhZ2luYXRpb247XG4gICAgaWYgKGVsKSB7XG4gICAgICBlbCA9IG1ha2VFbGVtZW50c0FycmF5KGVsKTtcbiAgICAgIGVsLmZvckVhY2goc3ViRWwgPT4gc3ViRWwuY2xhc3NMaXN0LmFkZChzd2lwZXIucGFyYW1zLnBhZ2luYXRpb24ucGFnaW5hdGlvbkRpc2FibGVkQ2xhc3MpKTtcbiAgICB9XG4gICAgZGVzdHJveSgpO1xuICB9O1xuICBPYmplY3QuYXNzaWduKHN3aXBlci5wYWdpbmF0aW9uLCB7XG4gICAgZW5hYmxlLFxuICAgIGRpc2FibGUsXG4gICAgcmVuZGVyLFxuICAgIHVwZGF0ZSxcbiAgICBpbml0LFxuICAgIGRlc3Ryb3lcbiAgfSk7XG59XG5cbmV4cG9ydCB7IFBhZ2luYXRpb24gYXMgZGVmYXVsdCB9O1xuI
vendor: 2,955 bytes, lines 3854-3933
3854l0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==
3855//# sourceURL=webpack-internal:///../node_modules/swiper/modules/pagination.mjs
3856
3857}`)},"../node_modules/swiper/modules/parallax.mjs"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval(`{__webpack_require__.r(__webpack_exports__);
3858/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3859/* harmony export */   "default": () => (/* binding */ Parallax)
3860/* harmony export */ });
3861/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/utils.mjs */ "../node_modules/swiper/shared/utils.mjs");
3862
3863
3864function Parallax(_ref) {
3865  let {
3866    swiper,
3867    extendParams,
3868    on
3869  } = _ref;
3870  extendParams({
3871    parallax: {
3872      enabled: false
3873    }
3874  });
3875  const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]';
3876  const setTransform = (el, progress) => {
3877    const {
3878      rtl
3879    } = swiper;
3880    const rtlFactor = rtl ? -1 : 1;
3881    const p = el.getAttribute('data-swiper-parallax') || '0';
3882    let x = el.getAttribute('data-swiper-parallax-x');
3883    let y = el.getAttribute('data-swiper-parallax-y');
3884    const scale = el.getAttribute('data-swiper-parallax-scale');
3885    const opacity = el.getAttribute('data-swiper-parallax-opacity');
3886    const rotate = el.getAttribute('data-swiper-parallax-rotate');
3887    if (x || y) {
3888      x = x || '0';
3889      y = y || '0';
3890    } else if (swiper.isHorizontal()) {
3891      x = p;
3892      y = '0';
3893    } else {
3894      y = p;
3895      x = '0';
3896    }
3897    if (x.indexOf('%') >= 0) {
3898      x = \`\${parseInt(x, 10) * progress * rtlFactor}%\`;
3899    } else {
3900      x = \`\${x * progress * rtlFactor}px\`;
3901    }
3902    if (y.indexOf('%') >= 0) {
3903      y = \`\${parseInt(y, 10) * progress}%\`;
3904    } else {
3905      y = \`\${y * progress}px\`;
3906    }
3907    if (typeof opacity !== 'undefined' && opacity !== null) {
3908      const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));
3909      el.style.opacity = currentOpacity;
3910    }
3911    let transform = \`translate3d(\${x}, \${y}, 0px)\`;
3912    if (typeof scale !== 'undefined' && scale !== null) {
3913      const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));
3914      transform += \` scale(\${currentScale})\`;
3915    }
3916    if (rotate && typeof rotate !== 'undefined' && rotate !== null) {
3917      const currentRotate = rotate * progress * -1;
3918      transform += \` rotate(\${currentRotate}deg)\`;
3919    }
3920    el.style.transform = transform;
3921  };
3922  const setTranslate = () => {
3923    const {
3924      el,
3925      slides,
3926      progress,
3927      snapGrid,
3928      isElement
3929    } = swiper;
3930    const elements = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.e)(el, elementsSelector);
3931    if (swiper.isElement) {
3932      elements.push(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.e)(swiper.hostEl, elementsSelector));
3933    }
3934    elements.forEach(subEl => {
3935      setTransform(subEl, progress);
3936    });
3937    slides.forEach((slideEl, slideIndex) => {
3938      let slideProgress = slideEl.progress;
3939      if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {
3940        slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);
3941      }
3942      slideProgress = Math.min(Math.max(slideProgress, -1), 1);
3943      slideEl.querySelectorAll(\`\${elementsSelector}, [data-swiper-parallax-rotate]\`).forEach(subEl => {
3944        setTransform(subEl, slideProgress);
3945      });
3946    });
3947  };
3948  const setTransition = function (duration) {
3949    if (duration === void 0) {
3950      duration = swiper.params.speed;
3951    }
3952    const {
3953      el,
3954      hostEl
3955    } = swiper;
3956    const elements = [...el.querySelectorAll(elementsSelector)];
3957    if (swiper.isElement) {
3958      elements.push(...hostEl.querySelectorAll(elementsSelector));
3959    }
3960    elements.forEach(parallaxEl => {
3961      let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration;
3962      if (duration === 0) parallaxDuration = 0;
3963      parallaxEl.style.transitionDuration = \`\${parallaxDuration}ms\`;
3964    });
3965  };
3966  on('beforeInit', () => {
3967    if (!swiper.params.parallax.enabled) return;
3968    swiper.params.watchSlidesProgress = true;
3969    swiper.originalParams.watchSlidesProgress = true;
3970  });
3971  on('init', () => {
3972    if (!swiper.params.parallax.enabled) return;
3973    setTranslate();
3974  });
3975  on('setTranslate', () => {
3976    if (!swiper.params.parallax.enabled) return;
3977    setTranslate();
3978  });
3979  on('setTransition', (_swiper, duration) => {
3980    if (!swiper.params.parallax.enabled) return;
3981    setTransition(duration);
3982  });
3983}
3984
3985
3986//# sourceURL=[module]
3987//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9tb2R1bGVzL3BhcmFsbGF4Lm1qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUEyRDs7QUFFM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSx1Q0FBdUM7QUFDcEQsTUFBTTtBQUNOLGFBQWEseUJBQXlCO0FBQ3RDO0FBQ0E7QUFDQSxhQUFhLDJCQUEyQjtBQUN4QyxNQUFNO0FBQ04sYUFBYSxhQUFhO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMsRUFBRSxJQUFJLEVBQUU7QUFDM0M7QUFDQTtBQUNBLDZCQUE2QixhQUFhO0FBQzFDO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QixjQUFjO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOLHFCQUFxQixvREFBZTtBQUNwQztBQUNBLHVCQUF1QixvREFBZTtBQUN0QztBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLGlCQUFpQjtBQUNuRDtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtDQUErQyxpQkFBaUI7QUFDaEUsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRStCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9zd2lwZXIvbW9kdWxlcy9wYXJhbGxheC5tanM/YjQ1MCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlIGFzIGVsZW1lbnRDaGlsZHJlbiB9IGZyb20gJy4uL3NoYXJlZC91dGlscy5tanMnO1xuXG5mdW5jdGlvbiBQYXJhbGxheChfcmVmKSB7XG4gIGxldCB7XG4gICAgc3dpcGVyLFxuICAgIGV4dGVuZFBhcmFtcyxcbiAgICBvblxuICB9ID0gX3JlZjtcbiAgZXh0ZW5kUGFyYW1zKHtcbiAgICBwYXJhbGxheDoge1xuICAgICAgZW5hYmxlZDogZmFsc2VcbiAgICB9XG4gIH0pO1xuICBjb25zdCBlbGVtZW50c1NlbGVjdG9yID0gJ1tkYXRhLXN3aXBlci1wYXJhbGxheF0sIFtkYXRhLXN3aXBlci1wYXJhbGxheC14XSwgW2RhdGEtc3dpcGVyLXBhcmFsbGF4LXldLCBbZGF0YS1zd2lwZXItcGFyYWxsYXgtb3BhY2l0eV0sIFtkYXRhLXN3aXBlci1wYXJhbGxheC1zY2FsZV0nO1xuICBjb25zdCBzZXRUcmFuc2Zvcm0gPSAoZWwsIHByb2dyZXNzKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgcnRsXG4gICAgfSA9IHN3aXBlcjtcbiAgICBjb25zdCBydGxGYWN0b3IgPSBydGwgPyAtMSA6IDE7XG4gICAgY29uc3QgcCA9IGVsLmdldEF0dHJpYnV0ZSgnZGF0YS1zd2lwZXItcGFyYWxsYXgnKSB8fCAnMCc7XG4gICAgbGV0IHggPSBlbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3dpcGVyLXBhcmFsbGF4LXgnKTtcbiAgICBsZXQgeSA9IGVsLmdldEF0dHJpYnV0ZSgnZGF0YS1zd2lwZXItcGFyYWxsYXgteScpO1xuICAgIGNvbnN0IHNjYWxlID0gZWwuZ2V0QXR0cmlidXRlKCdkYXRhLXN3aXBlci1wYXJhbGxheC1zY2FsZScpO1xuICAgIGNvbnN0IG9wYWNpdHkgPSBlbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3dpcGVyLXBhcmFsbGF4LW9wYWNpdHknKTtcbiAgICBjb25zdCByb3RhdGUgPSBlbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3dpcGVyLXBhcmFsbGF4LXJvdGF0ZScpO1xuICAgIGlmICh4IHx8IHkpIHtcbiAgICAgIHggPSB4IHx8ICcwJztcbiAgICAgIHkgPSB5IHx8ICcwJztcbiAgICB9IGVsc2UgaWYgKHN3aXBlci5pc0hvcml6b250YWwoKSkge1xuICAgICAgeCA9IHA7XG4gICAgICB5ID0gJzAnO1xuICAgIH0gZWxzZSB7XG4gICAgICB5ID0gcDtcbiAgICAgIHggPSAnMCc7XG4gICAgfVxuICAgIGlmICh4LmluZGV4T2YoJyUnKSA+PSAwKSB7XG4gICAgICB4ID0gYCR7cGFyc2VJbnQoeCwgMTApICogcHJvZ3Jlc3MgKiBydGxGYWN0b3J9JWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHggPSBgJHt4ICogcHJvZ3Jlc3MgKiBydGxGYWN0b3J9cHhgO1xuICAgIH1cbiAgICBpZiAoeS5pbmRleE9mKCclJykgPj0gMCkge1xuICAgICAgeSA9IGAke3BhcnNlSW50KHksIDEwKSAqIHByb2dyZXNzfSVgO1xuICAgIH0gZWxzZSB7XG4gICAgICB5ID0gYCR7eSAqIHByb2dyZXNzfXB4YDtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBvcGFjaXR5ICE9PSAndW5kZWZpbmVkJyAmJiBvcGFjaXR5ICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBjdXJyZW50T3BhY2l0eSA9IG9wYWNpdHkgLSAob3BhY2l0eSAtIDEpICogKDEgLSBNYXRoLmFicyhwcm9ncmVzcykpO1xuICAgICAgZWwuc3R5bGUub3BhY2l0eSA9IGN1cnJlbnRPcGFjaXR5O1xuICAgIH1cbiAgICBsZXQgdHJhbnNmb3JtID0gYHRyYW5zbGF0ZTNkKCR7eH0sICR7eX0sIDBweClgO1xuICAgIGlmICh0eXBlb2Ygc2NhbGUgIT09ICd1bmRlZmluZWQnICYmIHNjYWxlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBjdXJyZW50U2NhbGUgPSBzY2FsZSAtIChzY2FsZSAtIDEpICogKDEgLSBNYXRoLmFicyhwcm9ncmVzcykpO1xuICAgICAgdHJhbnNmb3JtICs9IGAgc2NhbGUoJHtjdXJyZW50U2NhbGV9KWA7XG4gICAgfVxuICAgIGlmIChyb3RhdGUgJiYgdHlwZW9mIHJvdGF0ZSAhPT0gJ3VuZGVmaW5lZCcgJiYgcm90YXRlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBjdXJyZW50Um90YXRlID0gcm90YXRlICogcHJvZ3Jlc3MgKiAtMTtcbiAgICAgIHRyYW5zZm9ybSArPSBgIHJvdGF0ZSgke2N1cnJlbnRSb3RhdGV9ZGVnKWA7XG4gICAgfVxuICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9IHRyYW5zZm9ybTtcbiAgfTtcbiAgY29uc3Qgc2V0VHJhbnNsYXRlID0gKCkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIGVsLFxuICAgICAgc2xpZGVzLFxuICAgICAgcHJvZ3Jlc3MsXG4gICAgICBzbmFwR3JpZCxcbiAgICAgIGlzRWxlbWVudFxuICAgIH0gPSBzd2lwZXI7XG4gICAgY29uc3QgZWxlbWVudHMgPSBlbGVtZW50Q2hpbGRyZW4oZWwsIGVsZW1lbnRzU2VsZWN0b3IpO1xuICAgIGlmIChzd2lwZXIuaXNFbGVtZW50KSB7XG4gICAgICBlbGVtZW50cy5wdXNoKC4uLmVsZW1lbnRDaGlsZHJlbihzd2lwZXIuaG9zdEVsLCBlbGVtZW50c1NlbGVjdG9yKSk7XG4gICAgfVxuICAgIGVsZW1lbnRzLmZvckVhY2goc3ViRWwgPT4ge1xuICAgICAgc2V0VHJhbnNmb3JtKHN1YkVsLCBwcm9ncmVzcyk7XG4gICAgfSk7XG4gICAgc2xpZGVzLmZvckVhY2goKHNsaWRlRWwsIHNsaWRlSW5kZXgpID0+IHtcbiAgICAgIGxldCBzbGlkZVByb2dyZXNzID0gc2xpZGVFbC5wcm9ncmVzcztcbiAgICAgIGlmIChzd2lwZXIucGFyYW1zLnNsaWRlc1Blckdyb3VwID4gMSAmJiBzd2lwZXIucGFyYW1zLnNsaWRlc1BlclZpZXcgIT09ICdhdXRvJykge1xuICAgICAgICBzbGlkZVByb2dyZXNzICs9IE1hdGguY2VpbChzbGlkZUluZGV4IC8gMikgLSBwcm9ncmVzcyAqIChzbmFwR3JpZC5sZW5ndGggLSAxKTtcbiAgICAgIH1cbiAgICAgIHNsaWRlUHJvZ3Jlc3MgPSBNYXRoLm1pbihNYXRoLm1heChzbGlkZVByb2dyZXNzLCAtMSksIDEpO1xuICAgICAgc2xpZGVFbC5xdWVyeVNlbGVjdG9yQWxsKGAke2VsZW1lbnRzU2VsZWN0b3J9LCBbZGF0YS1zd2lwZXItcGFyYWxsYXgtcm90YXRlXWApLmZvckVhY2goc3ViRWwgPT4ge1xuICAgICAgICBzZXRUcmFuc2Zvcm0oc3ViRWwsIHNsaWRlUHJvZ3Jlc3MpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG4gIGNvbnN0IHNldFRyYW5zaXRpb24gPSBmdW5jdGlvbiAoZHVyYXRpb24pIHtcbiAgICBpZiAoZHVyYXRpb24gPT09IHZvaWQgMCkge1xuICAgICAgZHVyYXRpb24gPSBzd2lwZXIucGFyYW1zLnNwZWVkO1xuICAgIH1cbiAgICBjb25zdCB7XG4gICAgICBlbCxcbiAgICAgIGhvc3RFbFxuICAgIH0gPSBzd2lwZXI7XG4gICAgY29uc3QgZWxlbWVudHMgPSBbLi4uZWwucXVlcnlTZWxlY3RvckFsbChlbGVtZW50c1NlbGVjdG9yKV07XG4gICAgaWYgKHN3aXBlci5pc0VsZW1lbnQpIHtcbiAgICAgIGVsZW1lbnRzLnB1c2goLi4uaG9zdEVsLnF1ZXJ5U2VsZWN0b3JBbGwoZWxlbWVudHNTZWxlY3RvcikpO1xuICAgIH1cbiAgICBlbGVtZW50cy5mb3JFYWNoKHBhcmFsbGF4RWwgPT4ge1xuICAgICAgbGV0IHBhcmFsbGF4RHVyYXRpb24gPSBwYXJzZUludChwYXJhbGxheEVsLmdldEF0dHJpYnV0ZSgnZGF0YS1zd2lwZXItcGFyYWxsYXgtZHVyYXRpb24nKSwgMTApIHx8IGR1cmF0aW9uO1xuICAgICAgaWYgKGR1cmF0aW9uID09PSAwKSBwYXJhbGxheER1cmF0aW9uID0gMDtcbiAgICAgIHBhcmFsbGF4RWwuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uID0gYCR7cGFyYWxsYXhEdXJhdGlvbn1tc2A7XG4gICAgfSk7XG4gIH07XG4gIG9uKCdiZWZvcmVJbml0JywgKCkgPT4ge1xuICAgIGlmICghc3dpcGVyLnBhcmFtcy5wYXJhbGxheC5lbmFibGVkKSByZXR1cm47XG4gICAgc3dpcGVyLnBhcmFtcy53YXRjaFNsaWRlc1Byb2dyZXNzID0gdHJ1ZTtcbiAgICBzd2lwZXIub3JpZ2luYWxQYXJhbXMud2F0Y2hTbGlkZXNQcm9ncmVzcyA9IHRydWU7XG4gIH0pO1xuICBvbignaW5pdCcsICgpID0+IHtcbiAgICBpZiAoIXN3aXBlci5wYXJhbXMucGFyYWxsYXguZW5hYmxlZCkgcmV0dXJuO1xuICAgIHNldFRyYW5zbGF0ZSgpO1xuICB9KTtcbiAgb24oJ3NldFRyYW5zbGF0ZScsICgpID0+IHtcbiAgICBpZiAoIXN3aXBlci5wYXJhbXMucGFyYWxsYXguZW5hYmxlZCkgcmV0dXJuO1xuICAgIHNldFRyYW5zbGF0ZSgpO1xuICB9KTtcbiAgb24oJ3NldFRyYW5zaXRpb24nLCAoX3N3aXBlciwgZHVyYXRpb24pID0+IHtcbiAgICBpZiAoIXN3aXBlci5wYXJhbXMucGFyYWxsYXguZW5hYmxlZCkgcmV0dXJuO1xuICAgIHNldFRyYW5zaXRpb24oZHVyYXRpb24pO1xuICB9KTtcbn1cblxuZXhwb3J0IHsgUGFyYWxsYXggYXMgZGVmYXVsdCB9O1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==
3988//# sourceURL=webpack-internal:///../node_modules/swiper/modules/parallax.mjs
3989
3990}`)},"../node_modules/swiper/modules/scrollbar.mjs"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval(`{__webpack_require__.r(__webpack_exports__);
3991/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3992/* harmony export */   "default": () => (/* binding */ Scrollbar)
3993/* harmony export */ });
3994/* harmony import */ var _shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/ssr-window.esm.mjs */ "../node_modules/swiper/shared/ssr-window.esm.mjs");
3995/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "../node_modules/swiper/shared/utils.mjs");
3996/* harmony import */ var _shared_create_element_if_not_defined_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/create-element-if-not-defined.mjs */ "../node_modules/swiper/shared/create-element-if-not-defined.mjs");
3997/* harmony import */ var _shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shared/classes-to-selector.mjs */ "../node_modules/swiper/shared/classes-to-selector.mjs");
3998
3999
4000
4001
4002
4003function Scrollbar(_ref) {
4004  let {
4005    swiper,
4006    extendParams,
4007    on,
4008    emit
4009  } = _ref;
4010  const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
4011  let isTouched = false;
4012  let timeout = null;
4013  let dragTimeout = null;
4014  let dragStartPos;
4015  let dragSize;
4016  let trackSize;
4017  let divider;
4018  extendParams({
4019    scrollbar: {
4020      el: null,
4021      dragSize: 'auto',
4022      hide: false,
4023      draggable: false,
4024      snapOnRelease: true,
4025      lockClass: 'swiper-scrollbar-lock',
4026      dragClass: 'swiper-scrollbar-drag',
4027      scrollbarDisabledClass: 'swiper-scrollbar-disabled',
4028      horizontalClass: \`swiper-scrollbar-horizontal\`,
4029      verticalClass: \`swiper-scrollbar-vertical\`
4030    }
4031  });
4032  swiper.scrollbar = {
4033    el: null,
4034    dragEl: null
4035  };
4036  function setTranslate() {
4037    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
4038    const {
4039      scrollbar,
4040      rtlTranslate: rtl
4041    } = swiper;
4042    const {
4043      dragEl,
4044      el
4045    } = scrollbar;
4046    const params = swiper.params.scrollbar;
4047    const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress;
4048    let newSize = dragSize;
4049    let newPos = (trackSize - dragSize) * progress;
4050    if (rtl) {
4051      newPos = -newPos;
4052      if (newPos > 0) {
4053        newSize = dragSize - newPos;
4054        newPos = 0;
4055      } else if (-newPos + dragSize > trackSize) {
4056        newSize = trackSize + newPos;
4057      }
4058    } else if (newPos < 0) {
4059      newSize = dragSize + newPos;
4060      newPos = 0;
4061    } else if (newPos + dragSize > trackSize) {
4062      newSize = trackSize - newPos;
4063    }
4064    if (swiper.isHorizontal()) {
4065      dragEl.style.transform = \`translate3d(\${newPos}px, 0, 0)\`;
4066      dragEl.style.width = \`\${newSize}px\`;
4067    } else {
4068      dragEl.style.transform = \`translate3d(0px, \${newPos}px, 0)\`;
4069      dragEl.style.height = \`\${newSize}px\`;
4070    }
4071    if (params.hide) {
4072      clearTimeout(timeout);
4073      el.style.opacity = 1;
4074      timeout = setTimeout(() => {
4075        el.style.opacity = 0;
4076        el.style.transitionDuration = '400ms';
4077      }, 1000);
4078    }
4079  }
4080  function setTransition(duration) {
4081    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
4082    swiper.scrollbar.dragEl.style.transitionDuration = \`\${duration}ms\`;
4083  }
4084  function updateSize() {
4085    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
4086    const {
4087      scrollbar
4088    } = swiper;
4089    const {
4090      dragEl,
4091      el
4092    } = scrollbar;
4093    dragEl.style.width = '';
4094    dragEl.style.height = '';
4095    trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight;
4096    divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));
4097    if (swiper.params.scrollbar.dragSize === 'auto') {
4098      dragSize = trackSize * divider;
4099    } else {
4100      dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);
4101    }
4102    if (swiper.isHorizontal()) {
4103      dragEl.style.width = \`\${dragSize}px\`;
4104    } else {
4105      dragEl.style.height = \`\${dragSize}px\`;
4106    }
4107    if (divider >= 1) {
4108      el.style.display = 'none';
4109    } else {
4110      el.style.display = '';
4111    }
4112    if (swiper.params.scrollbar.hide) {
4113      el.style.opacity = 0;
4114    }
4115    if (swiper.params.watchOverflow && swiper.enabled) {
4116      scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass);
4117    }
4118  }
4119  function getPointerPosition(e) {
4120    return swiper.isHorizontal() ? e.clientX : e.clientY;
4121  }
4122  function setDragPosition(e) {
4123    const {
4124      scrollbar,
4125      rtlTranslate: rtl
4126    } = swiper;
4127    const {
4128      el
4129    } = scrollbar;
4130    let positionRatio;
4131    positionRatio = (getPointerPosition(e) - (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);
4132    positionRatio = Math.max(Math.min(positionRatio, 1), 0);
4133    if (rtl) {
4134      positionRatio = 1 - positionRatio;
4135    }
4136    const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;
4137    swiper.updateProgress(position);
4138    swiper.setTranslate(position);
4139    swiper.updateActiveIndex();
4140    swiper.updateSlidesClasses();
4141  }
4142  function onDragStart(e) {
4143    const params = swiper.params.scrollbar;
4144    const {
4145      scrollbar,
4146      wrapperEl
4147    } = swiper;
4148    const {
4149      el,
4150      dragEl
4151    } = scrollbar;
4152    isTouched = true;
4153    dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;
4154    e.preventDefault();
4155    e.stopPropagation();
4156    wrapperEl.style.transitionDuration = '100ms';
4157    dragEl.style.transitionDuration = '100ms';
4158    setDragPosition(e);
4159    clearTimeout(dragTimeout);
4160    el.style.transitionDuration = '0ms';
4161    if (params.hide) {
4162      el.style.opacity = 1;
4163    }
4164    if (swiper.params.cssMode) {
vendor: 6,696 bytes, lines 4165-4365
4165      swiper.wrapperEl.style['scroll-snap-type'] = 'none';
4166    }
4167    emit('scrollbarDragStart', e);
4168  }
4169  function onDragMove(e) {
4170    const {
4171      scrollbar,
4172      wrapperEl
4173    } = swiper;
4174    const {
4175      el,
4176      dragEl
4177    } = scrollbar;
4178    if (!isTouched) return;
4179    if (e.preventDefault && e.cancelable) e.preventDefault();else e.returnValue = false;
4180    setDragPosition(e);
4181    wrapperEl.style.transitionDuration = '0ms';
4182    el.style.transitionDuration = '0ms';
4183    dragEl.style.transitionDuration = '0ms';
4184    emit('scrollbarDragMove', e);
4185  }
4186  function onDragEnd(e) {
4187    const params = swiper.params.scrollbar;
4188    const {
4189      scrollbar,
4190      wrapperEl
4191    } = swiper;
4192    const {
4193      el
4194    } = scrollbar;
4195    if (!isTouched) return;
4196    isTouched = false;
4197    if (swiper.params.cssMode) {
4198      swiper.wrapperEl.style['scroll-snap-type'] = '';
4199      wrapperEl.style.transitionDuration = '';
4200    }
4201    if (params.hide) {
4202      clearTimeout(dragTimeout);
4203      dragTimeout = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => {
4204        el.style.opacity = 0;
4205        el.style.transitionDuration = '400ms';
4206      }, 1000);
4207    }
4208    emit('scrollbarDragEnd', e);
4209    if (params.snapOnRelease) {
4210      swiper.slideToClosest();
4211    }
4212  }
4213  function events(method) {
4214    const {
4215      scrollbar,
4216      params
4217    } = swiper;
4218    const el = scrollbar.el;
4219    if (!el) return;
4220    const target = el;
4221    const activeListener = params.passiveListeners ? {
4222      passive: false,
4223      capture: false
4224    } : false;
4225    const passiveListener = params.passiveListeners ? {
4226      passive: true,
4227      capture: false
4228    } : false;
4229    if (!target) return;
4230    const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';
4231    target[eventMethod]('pointerdown', onDragStart, activeListener);
4232    document[eventMethod]('pointermove', onDragMove, activeListener);
4233    document[eventMethod]('pointerup', onDragEnd, passiveListener);
4234  }
4235  function enableDraggable() {
4236    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
4237    events('on');
4238  }
4239  function disableDraggable() {
4240    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
4241    events('off');
4242  }
4243  function init() {
4244    const {
4245      scrollbar,
4246      el: swiperEl
4247    } = swiper;
4248    swiper.params.scrollbar = (0,_shared_create_element_if_not_defined_mjs__WEBPACK_IMPORTED_MODULE_2__.c)(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {
4249      el: 'swiper-scrollbar'
4250    });
4251    const params = swiper.params.scrollbar;
4252    if (!params.el) return;
4253    let el;
4254    if (typeof params.el === 'string' && swiper.isElement) {
4255      el = swiper.el.querySelector(params.el);
4256    }
4257    if (!el && typeof params.el === 'string') {
4258      el = document.querySelectorAll(params.el);
4259      if (!el.length) return;
4260    } else if (!el) {
4261      el = params.el;
4262    }
4263    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) {
4264      el = swiperEl.querySelector(params.el);
4265    }
4266    if (el.length > 0) el = el[0];
4267    el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
4268    let dragEl;
4269    if (el) {
4270      dragEl = el.querySelector((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_3__.c)(swiper.params.scrollbar.dragClass));
4271      if (!dragEl) {
4272        dragEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', swiper.params.scrollbar.dragClass);
4273        el.append(dragEl);
4274      }
4275    }
4276    Object.assign(scrollbar, {
4277      el,
4278      dragEl
4279    });
4280    if (params.draggable) {
4281      enableDraggable();
4282    }
4283    if (el) {
4284      el.classList[swiper.enabled ? 'remove' : 'add'](...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.j)(swiper.params.scrollbar.lockClass));
4285    }
4286  }
4287  function destroy() {
4288    const params = swiper.params.scrollbar;
4289    const el = swiper.scrollbar.el;
4290    if (el) {
4291      el.classList.remove(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.j)(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass));
4292    }
4293    disableDraggable();
4294  }
4295  on('changeDirection', () => {
4296    if (!swiper.scrollbar || !swiper.scrollbar.el) return;
4297    const params = swiper.params.scrollbar;
4298    let {
4299      el
4300    } = swiper.scrollbar;
4301    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(el);
4302    el.forEach(subEl => {
4303      subEl.classList.remove(params.horizontalClass, params.verticalClass);
4304      subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
4305    });
4306  });
4307  on('init', () => {
4308    if (swiper.params.scrollbar.enabled === false) {
4309      // eslint-disable-next-line
4310      disable();
4311    } else {
4312      init();
4313      updateSize();
4314      setTranslate();
4315    }
4316  });
4317  on('update resize observerUpdate lock unlock changeDirection', () => {
4318    updateSize();
4319  });
4320  on('setTranslate', () => {
4321    setTranslate();
4322  });
4323  on('setTransition', (_s, duration) => {
4324    setTransition(duration);
4325  });
4326  on('enable disable', () => {
4327    const {
4328      el
4329    } = swiper.scrollbar;
4330    if (el) {
4331      el.classList[swiper.enabled ? 'remove' : 'add'](...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.j)(swiper.params.scrollbar.lockClass));
4332    }
4333  });
4334  on('destroy', () => {
4335    destroy();
4336  });
4337  const enable = () => {
4338    swiper.el.classList.remove(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.j)(swiper.params.scrollbar.scrollbarDisabledClass));
4339    if (swiper.scrollbar.el) {
4340      swiper.scrollbar.el.classList.remove(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.j)(swiper.params.scrollbar.scrollbarDisabledClass));
4341    }
4342    init();
4343    updateSize();
4344    setTranslate();
4345  };
4346  const disable = () => {
4347    swiper.el.classList.add(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.j)(swiper.params.scrollbar.scrollbarDisabledClass));
4348    if (swiper.scrollbar.el) {
4349      swiper.scrollbar.el.classList.add(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.j)(swiper.params.scrollbar.scrollbarDisabledClass));
4350    }
4351    destroy();
4352  };
4353  Object.assign(swiper.scrollbar, {
4354    enable,
4355    disable,
4356    updateSize,
4357    setTranslate,
4358    init,
4359    destroy
4360  });
4361}
4362
4363
4364//# sourceURL=[module]
4365//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9tb2R1bGVzL3Njcm9sbGJhci5tanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBZ0U7QUFDMEU7QUFDN0M7QUFDbEI7O0FBRTNFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixtQkFBbUIsNkRBQVc7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEd
4365BQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0EsOENBQThDLE9BQU87QUFDckQsOEJBQThCLFFBQVE7QUFDdEMsTUFBTTtBQUNOLG1EQUFtRCxPQUFPO0FBQzFELCtCQUErQixRQUFRO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMERBQTBELFNBQVM7QUFDbkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QixTQUFTO0FBQ3ZDLE1BQU07QUFDTiwrQkFBK0IsU0FBUztBQUN4QztBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLDZDQUE2QyxvREFBYTtBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSw2REFBNkQ7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isb0RBQVE7QUFDNUI7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTiw4QkFBOEIsNEVBQXlCO0FBQ3ZEO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0Msa0VBQWlCO0FBQ2pEO0FBQ0EsaUJBQWlCLG9EQUFhO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlEQUF5RCxvREFBZTtBQUN4RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsb0RBQWU7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTixTQUFTLG9EQUFpQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLHlEQUF5RCxvREFBZTtBQUN4RTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0Esa0NBQWtDLG9EQUFlO0FBQ2pEO0FBQ0EsOENBQThDLG9EQUFlO0FBQzdEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQixvREFBZTtBQUM5QztBQUNBLDJDQUEyQyxvREFBZTtBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFZ0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9tb2R1bGVzL3Njcm9sbGJhci5tanM/YWJjNiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnIGFzIGdldERvY3VtZW50IH0gZnJvbSAnLi4vc2hhcmVkL3Nzci13aW5kb3cuZXNtLm1qcyc7XG5pbXBvcnQgeyBtIGFzIG1ha2VFbGVtZW50c0FycmF5LCBqIGFzIGNsYXNzZXNUb1Rva2VucywgYyBhcyBjcmVhdGVFbGVtZW50LCBuIGFzIG5leHRUaWNrLCBkIGFzIGVsZW1lbnRPZmZzZXQgfSBmcm9tICcuLi9zaGFyZWQvdXRpbHMubWpzJztcbmltcG9ydCB7IGMgYXMgY3JlYXRlRWxlbWVudElmTm90RGVmaW5lZCB9IGZyb20gJy4uL3NoYXJlZC9jcmVhdGUtZWxlbWVudC1pZi1ub3QtZGVmaW5lZC5tanMnO1xuaW1wb3J0IHsgYyBhcyBjbGFzc2VzVG9TZWxlY3RvciB9IGZyb20gJy4uL3NoYXJlZC9jbGFzc2VzLXRvLXNlbGVjdG9yLm1qcyc7XG5cbmZ1bmN0aW9uIFNjcm9sbGJhcihfcmVmKSB7XG4gIGxldCB7XG4gICAgc3dpcGVyLFxuICAgIGV4dGVuZFBhcmFtcyxcbiAgICBvbixcbiAgICBlbWl0XG4gIH0gPSBfcmVmO1xuICBjb25zdCBkb2N1bWVudCA9IGdldERvY3VtZW50KCk7XG4gIGxldCBpc1RvdWNoZWQgPSBmYWxzZTtcbiAgbGV0IHRpbWVvdXQgPSBudWxsO1xuICBsZXQgZHJhZ1RpbWVvdXQgPSBudWxsO1xuICBsZXQgZHJhZ1N0YXJ0UG9zO1xuICBsZXQgZHJhZ1NpemU7XG4gIGxldCB0cmFja1NpemU7XG4gIGxldCBkaXZpZGVyO1xuICBleHRlbmRQYXJhbXMoe1xuICAgIHNjcm9sbGJhcjoge1xuICAgICAgZWw6IG51bGwsXG4gICAgICBkcmFnU2l6ZTogJ2F1dG8nLFxuICAgICAgaGlkZTogZmFsc2UsXG4gICAgICBkcmFnZ2FibGU6IGZhbHNlLFxuICAgICAgc25hcE9uUmVsZWFzZTogdHJ1ZSxcbiAgICAgIGxvY2tDbGFzczogJ3N3aXBlci1zY3JvbGxiYXItbG9jaycsXG4gICAgICBkcmFnQ2xhc3M6ICdzd2lwZXItc2Nyb2xsYmFyLWRyYWcnLFxuICAgICAgc2Nyb2xsYmFyRGlzYWJsZWRDbGFzczogJ3N3aXBlci1zY3JvbGxiYXItZGlzYWJsZWQnLFxuICAgICAgaG9yaXpvbn
4365RhbENsYXNzOiBgc3dpcGVyLXNjcm9sbGJhci1ob3Jpem9udGFsYCxcbiAgICAgIHZlcnRpY2FsQ2xhc3M6IGBzd2lwZXItc2Nyb2xsYmFyLXZlcnRpY2FsYFxuICAgIH1cbiAgfSk7XG4gIHN3aXBlci5zY3JvbGxiYXIgPSB7XG4gICAgZWw6IG51bGwsXG4gICAgZHJhZ0VsOiBudWxsXG4gIH07XG4gIGZ1bmN0aW9uIHNldFRyYW5zbGF0ZSgpIHtcbiAgICBpZiAoIXN3aXBlci5wYXJhbXMuc2Nyb2xsYmFyLmVsIHx8ICFzd2lwZXIuc2Nyb2xsYmFyLmVsKSByZXR1cm47XG4gICAgY29uc3Qge1xuICAgICAgc2Nyb2xsYmFyLFxuICAgICAgcnRsVHJhbnNsYXRlOiBydGxcbiAgICB9ID0gc3dpcGVyO1xuICAgIGNvbnN0IHtcbiAgICAgIGRyYWdFbCxcbiAgICAgIGVsXG4gICAgfSA9IHNjcm9sbGJhcjtcbiAgICBjb25zdCBwYXJhbXMgPSBzd2lwZXIucGFyYW1zLnNjcm9sbGJhcjtcbiAgICBjb25zdCBwcm9ncmVzcyA9IHN3aXBlci5wYXJhbXMubG9vcCA/IHN3aXBlci5wcm9ncmVzc0xvb3AgOiBzd2lwZXIucHJvZ3Jlc3M7XG4gICAgbGV0IG5ld1NpemUgPSBkcmFnU2l6ZTtcbiAgICBsZXQgbmV3UG9zID0gKHRyYWNrU2l6ZSAtIGRyYWdTaXplKSAqIHByb2dyZXNzO1xuICAgIGlmIChydGwpIHtcbiAgICAgIG5ld1BvcyA9IC1uZXdQb3M7XG4gICAgICBpZiAobmV3UG9zID4gMCkge1xuICAgICAgICBuZXdTaXplID0gZHJhZ1NpemUgLSBuZXdQb3M7XG4gICAgICAgIG5ld1BvcyA9IDA7XG4gICAgICB9IGVsc2UgaWYgKC1uZXdQb3MgKyBkcmFnU2l6ZSA+IHRyYWNrU2l6ZSkge1xuICAgICAgICBuZXdTaXplID0gdHJhY2tTaXplICsgbmV3UG9zO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAobmV3UG9zIDwgMCkge1xuICAgICAgbmV3U2l6ZSA9IGRyYWdTaXplICsgbmV3UG9zO1xuICAgICAgbmV3UG9zID0gMDtcbiAgICB9IGVsc2UgaWYgKG5ld1BvcyArIGRyYWdTaXplID4gdHJhY2tTaXplKSB7XG4gICAgICBuZXdTaXplID0gdHJhY2tTaXplIC0gbmV3UG9zO1xuICAgIH1cbiAgICBpZiAoc3dpcGVyLmlzSG9yaXpvbnRhbCgpKSB7XG4gICAgICBkcmFnRWwuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZTNkKCR7bmV3UG9zfXB4LCAwLCAwKWA7XG4gICAgICBkcmFnRWwuc3R5bGUud2lkdGggPSBgJHtuZXdTaXplfXB4YDtcbiAgICB9IGVsc2Uge1xuICAgICAgZHJhZ0VsLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGUzZCgwcHgsICR7bmV3UG9zfXB4LCAwKWA7XG4gICAgICBkcmFnRWwuc3R5bGUuaGVpZ2h0ID0gYCR7bmV3U2l6ZX1weGA7XG4gICAgfVxuICAgIGlmIChwYXJhbXMuaGlkZSkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgZWwuc3R5bGUub3BhY2l0eSA9IDE7XG4gICAgICB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGVsLnN0eWxlLm9wYWNpdHkgPSAwO1xuICAgICAgICBlbC5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gPSAnNDAwbXMnO1xuICAgICAgfSwgMTAwMCk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIHNldFRyYW5zaXRpb24oZHVyYXRpb24pIHtcbiAgICBpZiAoIXN3aXBlci5wYXJhbXMuc2Nyb2xsYmFyLmVsIHx8ICFzd2lwZXIuc2Nyb2xsYmFyLmVsKSByZXR1cm47XG4gICAgc3dpcGVyLnNjcm9sbGJhci5kcmFnRWwuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uID0gYCR7ZHVyYXRpb259bXNgO1xuICB9XG4gIGZ1bmN0aW9uIHVwZGF0ZVNpemUoKSB7XG4gICAgaWYgKCFzd2lwZXIucGFyYW1zLnNjcm9sbGJhci5lbCB8fCAhc3dpcGVyLnNjcm9sbGJhci5lbCkgcmV0dXJuO1xuICAgIGNvbnN0IHtcbiAgICAgIHNjcm9sbGJhclxuICAgIH0gPSBzd2lwZXI7XG4gICAgY29uc3Qge1xuICAgICAgZHJhZ0VsLFxuICAgICAgZWxcbiAgICB9ID0gc2Nyb2xsYmFyO1xuICAgIGRyYWdFbC5zdHlsZS53aWR0aCA9ICcnO1xuICAgIGRyYWdFbC5zdHlsZS5oZWlnaHQgPSAnJztcbiAgICB0cmFja1NpemUgPSBzd2lwZXIuaXNIb3Jpem9udGFsKCkgPyBlbC5vZmZzZXRXaWR0aCA6IGVsLm9mZnNldEhlaWdodDtcbiAgICBkaXZpZGVyID0gc3dpcGVyLnNpemUgLyAoc3dpcGVyLnZpcnR1YWxTaXplICsgc3dpcGVyLnBhcmFtcy5zbGlkZXNPZmZzZXRCZWZvcmUgLSAoc3dpcGVyLnBhcmFtcy5jZW50ZXJlZFNsaWRlcyA/IHN3aXBlci5zbmFwR3JpZFswXSA6IDApKTtcbiAgICBpZiAoc3dpcGVyLnBhcmFtcy5zY3JvbGxiYXIuZHJhZ1NpemUgPT09ICdhdXRvJykge1xuICAgICAgZHJhZ1NpemUgPSB0cmFja1NpemUgKiBkaXZpZGVyO1xuICAgIH0gZWxzZSB7XG4gICAgICBkcmFnU2l6ZSA9IHBhcnNlSW50KHN3aXBlci5wYXJhbXMuc2Nyb2xsYmFyLmRyYWdTaXplLCAxMCk7XG4gICAgfVxuICAgIGlmIChzd2lwZXIuaXNIb3Jpem9udGFsKCkpIHtcbiAgICAgIGRyYWdFbC5zdHlsZS53aWR0aCA9IGAke2RyYWdTaXplfXB4YDtcbiAgICB9IGVsc2Uge1xuICAgICAgZHJhZ0VsLnN0eWxlLmhlaWdodCA9IGAke2RyYWdTaXplfXB4YDtcbiAgICB9XG4gICAgaWYgKGRpdmlkZXIgPj0gMSkge1xuICAgICAgZWwuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICB9IGVsc2Uge1xuICAgICAgZWwuc3R5bGUuZGlzcGxheSA9ICcnO1xuICAgIH1cbiAgICBpZiAoc3dpcGVyLnBhcmFtcy5zY3JvbGxiYXIuaGlkZSkge1xuICAgICAgZWwuc3R5bGUub3BhY2l0eSA9IDA7XG4gICAgfVxuICAgIGlmIChzd2lwZXIucGFyYW1zLndhdGNoT3ZlcmZsb3cgJiYgc3dpcGVyLmVuYWJsZWQpIHtcbiAgICAgIHNjcm9sbGJhci5lbC5jbGFzc0xpc3Rbc3dpcGVyLmlzTG9ja2VkID8gJ2FkZCcgOiAncmVtb3ZlJ10oc3dpcGVyLnBhcmFtcy5zY3JvbGxiYXIubG9ja0NsYXNzKTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gZ2V0UG9pbnRlclBvc2l0aW9uKGUpIHtcbiAgICByZXR1cm4gc3dpcGVyLmlzSG9yaXpvbnRhbCgpID8gZS5jbGllbnRYIDogZS5jbGllbnRZO1xuICB9XG4gIGZ1bmN0aW9uIHNldERyYWdQb3NpdGlvbihlKSB7XG4gICAgY29uc3Qge1xuICAgICAgc2Nyb2xsYmFyLFxuICAgICAgcnRsVHJhbnNsYXRlOiBydGxcbiAgICB9ID0gc3dpcGVyO1xuICAgIGNvbnN0IHtcbiAgICAgIGVsXG4gICAgfSA9IHNjcm9sbGJhcjtcbiAgICBsZXQgcG9zaXRpb25SYXRpbztcbiAgICBwb3NpdGlvblJhdGlvID0gKGdldFBvaW50ZXJQb3NpdGlvbihlKSAtIGVsZW1lbnRPZmZzZXQoZWwpW3N3aXBlci5pc0hvcml6b250YWwoKSA/ICdsZWZ0JyA6ICd0b3AnXSAtIChkcmFnU3RhcnRQb3MgIT09IG51bGwgPyBkcmFnU3RhcnRQb3MgOiBkcmFnU2l6ZSAvIDIpKSAvICh0cmFja1NpemUgLSBkcmFnU2l6ZSk7XG4gICAgcG9zaXRpb25SYXRpbyA9IE1hdGgubWF4KE1hdGgubWluKHBvc2l0aW9uUmF0aW8sIDEpLCAwKTtcbiAgICBpZiAocnRsKSB7XG4gICAgICBwb3NpdGlvblJhdGlvID0gMSAtIHBvc2l0aW9uUmF0aW87XG4gICAgfVxuICAgIGNvbnN0IHBvc2l0aW9uID0gc3dpcGVyLm1pblRyYW5zbGF0ZSgpICsgKHN3aXBlci5tYXhUcmFuc2xhdGUoKSAtIHN3aXBlci5taW5UcmFuc2xhdGUoKSkgKiBwb3NpdGlvblJhdGlvO1xuICAgIHN3aXBlci51cGRhdGVQcm9ncmVzcyhwb3NpdGlvbik7XG4gICAgc3dpcGVyLnNldFRyYW5zbGF0ZShwb3NpdGlvbik7XG4gICAgc3dpcGVyLnVwZGF0ZUFjdGl2ZUluZGV4KCk7XG4gICAgc3dpcGVyLnVwZGF0ZVNsaWRlc0NsYXNzZXMoKTtcbiAgfVxuICBmdW5jdGlvbiBvbkRyYWdTdGFydChlKSB7XG4gICAgY29uc3QgcGFyYW1zID0gc3dpcGVyLnBhcmFtcy5zY3JvbGxiYXI7XG4gICAgY29uc3Qge1xuICAgICAgc2Nyb2xsYmFyLFxuICAgICAgd3JhcHBlckVsXG4gICAgfSA9IHN3aXBlcjtcbiAgICBjb25zdCB7XG4gICAgICBlbCxcbiAgICAgIGRyYWdFbFxuICAgIH0gPSBzY3JvbGxiYXI7XG4gICAgaXNUb3VjaGVkID0gdHJ1ZTtcbiAgICBkcmFnU3RhcnRQb3MgPSBlLnRhcmdldCA9PT0gZHJhZ0VsID8gZ2V0UG9pbnRlclBvc2l0aW9uKGUpIC0gZS50YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClbc3dpcGVyLmlzSG9yaXpvbn
4365RhbCgpID8gJ2xlZnQnIDogJ3RvcCddIDogbnVsbDtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB3cmFwcGVyRWwuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uID0gJzEwMG1zJztcbiAgICBkcmFnRWwuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uID0gJzEwMG1zJztcbiAgICBzZXREcmFnUG9zaXRpb24oZSk7XG4gICAgY2xlYXJUaW1lb3V0KGRyYWdUaW1lb3V0KTtcbiAgICBlbC5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gPSAnMG1zJztcbiAgICBpZiAocGFyYW1zLmhpZGUpIHtcbiAgICAgIGVsLnN0eWxlLm9wYWNpdHkgPSAxO1xuICAgIH1cbiAgICBpZiAoc3dpcGVyLnBhcmFtcy5jc3NNb2RlKSB7XG4gICAgICBzd2lwZXIud3JhcHBlckVsLnN0eWxlWydzY3JvbGwtc25hcC10eXBlJ10gPSAnbm9uZSc7XG4gICAgfVxuICAgIGVtaXQoJ3Njcm9sbGJhckRyYWdTdGFydCcsIGUpO1xuICB9XG4gIGZ1bmN0aW9uIG9uRHJhZ01vdmUoZSkge1xuICAgIGNvbnN0IHtcbiAgICAgIHNjcm9sbGJhcixcbiAgICAgIHdyYXBwZXJFbFxuICAgIH0gPSBzd2lwZXI7XG4gICAgY29uc3Qge1xuICAgICAgZWwsXG4gICAgICBkcmFnRWxcbiAgICB9ID0gc2Nyb2xsYmFyO1xuICAgIGlmICghaXNUb3VjaGVkKSByZXR1cm47XG4gICAgaWYgKGUucHJldmVudERlZmF1bHQgJiYgZS5jYW5jZWxhYmxlKSBlLnByZXZlbnREZWZhdWx0KCk7ZWxzZSBlLnJldHVyblZhbHVlID0gZmFsc2U7XG4gICAgc2V0RHJhZ1Bvc2l0aW9uKGUpO1xuICAgIHdyYXBwZXJFbC5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gPSAnMG1zJztcbiAgICBlbC5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gPSAnMG1zJztcbiAgICBkcmFnRWwuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uID0gJzBtcyc7XG4gICAgZW1pdCgnc2Nyb2xsYmFyRHJhZ01vdmUnLCBlKTtcbiAgfVxuICBmdW5jdGlvbiBvbkRyYWdFbmQoZSkge1xuICAgIGNvbnN0IHBhcmFtcyA9IHN3aXBlci5wYXJhbXMuc2Nyb2xsYmFyO1xuICAgIGNvbnN0IHtcbiAgICAgIHNjcm9sbGJhcixcbiAgICAgIHdyYXBwZXJFbFxuICAgIH0gPSBzd2lwZXI7XG4gICAgY29uc3Qge1xuICAgICAgZWxcbiAgICB9ID0gc2Nyb2xsYmFyO1xuICAgIGlmICghaXNUb3VjaGVkKSByZXR1cm47XG4gICAgaXNUb3VjaGVkID0gZmFsc2U7XG4gICAgaWYgKHN3aXBlci5wYXJhbXMuY3NzTW9kZSkge1xuICAgICAgc3dpcGVyLndyYXBwZXJFbC5zdHlsZVsnc2Nyb2xsLXNuYXAtdHlwZSddID0gJyc7XG4gICAgICB3cmFwcGVyRWwuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uID0gJyc7XG4gICAgfVxuICAgIGlmIChwYXJhbXMuaGlkZSkge1xuICAgICAgY2xlYXJUaW1lb3V0KGRyYWdUaW1lb3V0KTtcbiAgICAgIGRyYWdUaW1lb3V0ID0gbmV4dFRpY2soKCkgPT4ge1xuICAgICAgICBlbC5zdHlsZS5vcGFjaXR5ID0gMDtcbiAgICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uID0gJzQwMG1zJztcbiAgICAgIH0sIDEwMDApO1xuICAgIH1cbiAgICBlbWl0KCdzY3JvbGxiYXJEcmFnRW5kJywgZSk7XG4gICAgaWYgKHBhcmFtcy5zbmFwT25SZWxlYXNlKSB7XG4gICAgICBzd2lwZXIuc2xpZGVUb0Nsb3Nlc3QoKTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gZXZlbnRzKG1ldGhvZCkge1xuICAgIGNvbnN0IHtcbiAgICAgIHNjcm9sbGJhcixcbiAgICAgIHBhcmFtc1xuICAgIH0gPSBzd2lwZXI7XG4gICAgY29uc3QgZWwgPSBzY3JvbGxiYXIuZWw7XG4gICAgaWYgKCFlbCkgcmV0dXJuO1xuICAgIGNvbnN0IHRhcmdldCA9IGVsO1xuICAgIGNvbnN0IGFjdGl2ZUxpc3RlbmVyID0gcGFyYW1zLnBhc3NpdmVMaXN0ZW5lcnMgPyB7XG4gICAgICBwYXNzaXZlOiBmYWxzZSxcbiAgICAgIGNhcHR1cmU6IGZhbHNlXG4gICAgfSA6IGZhbHNlO1xuICAgIGNvbnN0IHBhc3NpdmVMaXN0ZW5lciA9IHBhcmFtcy5wYXNzaXZlTGlzdGVuZXJzID8ge1xuICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICAgIGNhcHR1cmU6IGZhbHNlXG4gICAgfSA6IGZhbHNlO1xuICAgIGlmICghdGFyZ2V0KSByZXR1cm47XG4gICAgY29uc3QgZXZlbnRNZXRob2QgPSBtZXRob2QgPT09ICdvbicgPyAnYWRkRXZlbnRMaXN0ZW5lcicgOiAncmVtb3ZlRXZlbnRMaXN0ZW5lcic7XG4gICAgdGFyZ2V0W2V2ZW50TWV0aG9kXSgncG9pbnRlcmRvd24nLCBvbkRyYWdTdGFydCwgYWN0aXZlTGlzdGVuZXIpO1xuICAgIGRvY3VtZW50W2V2ZW50TWV0aG9kXSgncG9pbnRlcm1vdmUnLCBvbkRyYWdNb3ZlLCBhY3RpdmVMaXN0ZW5lcik7XG4gICAgZG9jdW1lbnRbZXZlbnRNZXRob2RdKCdwb2ludGVydXAnLCBvbkRyYWdFbmQsIHBhc3NpdmVMaXN0ZW5lcik7XG4gIH1cbiAgZnVuY3Rpb24gZW5hYmxlRHJhZ2dhYmxlKCkge1xuICAgIGlmICghc3dpcGVyLnBhcmFtcy5zY3JvbGxiYXIuZWwgfHwgIXN3aXBlci5zY3JvbGxiYXIuZWwpIHJldHVybjtcbiAgICBldmVudHMoJ29uJyk7XG4gIH1cbiAgZnVuY3Rpb24gZGlzYWJsZURyYWdnYWJsZSgpIHtcbiAgICBpZiAoIXN3aXBlci5wYXJhbXMuc2Nyb2xsYmFyLmVsIHx8ICFzd2lwZXIuc2Nyb2xsYmFyLmVsKSByZXR1cm47XG4gICAgZXZlbnRzKCdvZmYnKTtcbiAgfVxuICBmdW5jdGlvbiBpbml0KCkge1xuICAgIGNvbnN0IHtcbiAgICAgIHNjcm9sbGJhcixcbiAgICAgIGVsOiBzd2lwZXJFbFxuICAgIH0gPSBzd2lwZXI7XG4gICAgc3dpcGVyLnBhcmFtcy5zY3JvbGxiYXIgPSBjcmVhdGVFbGVtZW50SWZOb3REZWZpbmVkKHN3aXBlciwgc3dpcGVyLm9yaWdpbmFsUGFyYW1zLnNjcm9sbGJhciwgc3dpcGVyLnBhcmFtcy5zY3JvbGxiYXIsIHtcbiAgICAgIGVsOiAnc3dpcGVyLXNjcm9sbGJhcidcbiAgICB9KTtcbiAgICBjb25zdCBwYXJhbXMgPSBzd2lwZXIucGFyYW1zLnNjcm9sbGJhcjtcbiAgICBpZiAoIXBhcmFtcy5lbCkgcmV0dXJuO1xuICAgIGxldCBlbDtcbiAgICBpZiAodHlwZW9mIHBhcmFtcy5lbCA9PT0gJ3N0cmluZycgJiYgc3dpcGVyLmlzRWxlbWVudCkge1xuICAgICAgZWwgPSBzd2lwZXIuZWwucXVlcnlTZWxlY3RvcihwYXJhbXMuZWwpO1xuICAgIH1cbiAgICBpZiAoIWVsICYmIHR5cGVvZiBwYXJhbXMuZWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICBlbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwocGFyYW1zLmVsKTtcbiAgICAgIGlmICghZWwubGVuZ3RoKSByZXR1cm47XG4gICAgfSBlbHNlIGlmICghZWwpIHtcbiAgICAgIGVsID0gcGFyYW1zLmVsO1xuICAgIH1cbiAgICBpZiAoc3dpcGVyLnBhcmFtcy51bmlxdWVOYXZFbGVtZW50cyAmJiB0eXBlb2YgcGFyYW1zLmVsID09PSAnc3RyaW5nJyAmJiBlbC5sZW5ndGggPiAxICYmIHN3aXBlckVsLnF1ZXJ5U2VsZWN0b3JBbGwocGFyYW1zLmVsKS5sZW5ndGggPT09IDEpIHtcbiAgICAgIGVsID0gc3dpcGVyRWwucXVlcnlTZWxlY3RvcihwYXJhbXMuZWwpO1xuICAgIH1cbiAgICBpZiAoZWwubGVuZ3RoID4gMCkgZWwgPSBlbFswXTtcbiAgICBlbC5jbGFzc0xpc3QuYWRkKHN3aXBlci5pc0hvcml6b250YWwoKSA/IHBhcmFtcy5ob3Jpem9udGFsQ2xhc3MgOiBwYXJhbXMudmVydGljYWxDbGFzcyk7XG4gICAgbGV0IGRyYWdFbDtcbiAgICBpZiAoZWwpIHtcbiAgICAgIGRyYWdFbCA9IGVsLnF1ZXJ5U2VsZWN0b3IoY2xhc3Nlc1RvU2VsZWN0b3Ioc3d
4365pcGVyLnBhcmFtcy5zY3JvbGxiYXIuZHJhZ0NsYXNzKSk7XG4gICAgICBpZiAoIWRyYWdFbCkge1xuICAgICAgICBkcmFnRWwgPSBjcmVhdGVFbGVtZW50KCdkaXYnLCBzd2lwZXIucGFyYW1zLnNjcm9sbGJhci5kcmFnQ2xhc3MpO1xuICAgICAgICBlbC5hcHBlbmQoZHJhZ0VsKTtcbiAgICAgIH1cbiAgICB9XG4gICAgT2JqZWN0LmFzc2lnbihzY3JvbGxiYXIsIHtcbiAgICAgIGVsLFxuICAgICAgZHJhZ0VsXG4gICAgfSk7XG4gICAgaWYgKHBhcmFtcy5kcmFnZ2FibGUpIHtcbiAgICAgIGVuYWJsZURyYWdnYWJsZSgpO1xuICAgIH1cbiAgICBpZiAoZWwpIHtcbiAgICAgIGVsLmNsYXNzTGlzdFtzd2lwZXIuZW5hYmxlZCA/ICdyZW1vdmUnIDogJ2FkZCddKC4uLmNsYXNzZXNUb1Rva2Vucyhzd2lwZXIucGFyYW1zLnNjcm9sbGJhci5sb2NrQ2xhc3MpKTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICBjb25zdCBwYXJhbXMgPSBzd2lwZXIucGFyYW1zLnNjcm9sbGJhcjtcbiAgICBjb25zdCBlbCA9IHN3aXBlci5zY3JvbGxiYXIuZWw7XG4gICAgaWYgKGVsKSB7XG4gICAgICBlbC5jbGFzc0xpc3QucmVtb3ZlKC4uLmNsYXNzZXNUb1Rva2Vucyhzd2lwZXIuaXNIb3Jpem9udGFsKCkgPyBwYXJhbXMuaG9yaXpvbnRhbENsYXNzIDogcGFyYW1zLnZlcnRpY2FsQ2xhc3MpKTtcbiAgICB9XG4gICAgZGlzYWJsZURyYWdnYWJsZSgpO1xuICB9XG4gIG9uKCdjaGFuZ2VEaXJlY3Rpb24nLCAoKSA9PiB7XG4gICAgaWYgKCFzd2lwZXIuc2Nyb2xsYmFyIHx8ICFzd2lwZXIuc2Nyb2xsYmFyLmVsKSByZXR1cm47XG4gICAgY29uc3QgcGFyYW1zID0gc3dpcGVyLnBhcmFtcy5zY3JvbGxiYXI7XG4gICAgbGV0IHtcbiAgICAgIGVsXG4gICAgfSA9IHN3aXBlci5zY3JvbGxiYXI7XG4gICAgZWwgPSBtYWtlRWxlbWVudHNBcnJheShlbCk7XG4gICAgZWwuZm9yRWFjaChzdWJFbCA9PiB7XG4gICAgICBzdWJFbC5jbGFzc0xpc3QucmVtb3ZlKHBhcmFtcy5ob3Jpem9udGFsQ2xhc3MsIHBhcmFtcy52ZXJ0aWNhbENsYXNzKTtcbiAgICAgIHN1YkVsLmNsYXNzTGlzdC5hZGQoc3dpcGVyLmlzSG9yaXpvbnRhbCgpID8gcGFyYW1zLmhvcml6b250YWxDbGFzcyA6IHBhcmFtcy52ZXJ0aWNhbENsYXNzKTtcbiAgICB9KTtcbiAgfSk7XG4gIG9uKCdpbml0JywgKCkgPT4ge1xuICAgIGlmIChzd2lwZXIucGFyYW1zLnNjcm9sbGJhci5lbmFibGVkID09PSBmYWxzZSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgICBkaXNhYmxlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGluaXQoKTtcbiAgICAgIHVwZGF0ZVNpemUoKTtcbiAgICAgIHNldFRyYW5zbGF0ZSgpO1xuICAgIH1cbiAgfSk7XG4gIG9uKCd1cGRhdGUgcmVzaXplIG9ic2VydmVyVXBkYXRlIGxvY2sgdW5sb2NrIGNoYW5nZURpcmVjdGlvbicsICgpID0+IHtcbiAgICB1cGRhdGVTaXplKCk7XG4gIH0pO1xuICBvbignc2V0VHJhbnNsYXRlJywgKCkgPT4ge1xuICAgIHNldFRyYW5zbGF0ZSgpO1xuICB9KTtcbiAgb24oJ3NldFRyYW5zaXRpb24nLCAoX3MsIGR1cmF0aW9uKSA9PiB7XG4gICAgc2V0VHJhbnNpdGlvbihkdXJhdGlvbik7XG4gIH0pO1xuICBvbignZW5hYmxlIGRpc2FibGUnLCAoKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgZWxcbiAgICB9ID0gc3dpcGVyLnNjcm9sbGJhcjtcbiAgICBpZiAoZWwpIHtcbiAgICAgIGVsLmNsYXNzTGlzdFtzd2lwZXIuZW5hYmxlZCA/ICdyZW1vdmUnIDogJ2FkZCddKC4uLmNsYXNzZXNUb1Rva2Vucyhzd2lwZXIucGFyYW1zLnNjcm9sbGJhci5sb2NrQ2xhc3MpKTtcbiAgICB9XG4gIH0pO1xuICBvbignZGVzdHJveScsICgpID0+IHtcbiAgICBkZXN0cm95KCk7XG4gIH0pO1xuICBjb25zdCBlbmFibGUgPSAoKSA9PiB7XG4gICAgc3dpcGVyLmVsLmNsYXNzTGlzdC5yZW1vdmUoLi4uY2xhc3Nlc1RvVG9rZW5zKHN3aXBlci5wYXJhbXMuc2Nyb2xsYmFyLnNjcm9sbGJhckRpc2FibGVkQ2xhc3MpKTtcbiAgICBpZiAoc3dpcGVyLnNjcm9sbGJhci5lbCkge1xuICAgICAgc3dpcGVyLnNjcm9sbGJhci5lbC5jbGFzc0xpc3QucmVtb3ZlKC4uLmNsYXNzZXNUb1Rva2Vucyhzd2lwZXIucGFyYW1zLnNjcm9sbGJhci5zY3JvbGxiYXJEaXNhYmxlZENsYXNzKSk7XG4gICAgfVxuICAgIGluaXQoKTtcbiAgICB1cGRhdGVTaXplKCk7XG4gICAgc2V0VHJhbnNsYXRlKCk7XG4gIH07XG4gIGNvbnN0IGRpc2FibGUgPSAoKSA9PiB7XG4gICAgc3dpcGVyLmVsLmNsYXNzTGlzdC5hZGQoLi4uY2xhc3Nlc1RvVG9rZW5zKHN3aXBlci5wYXJhbXMuc2Nyb2xsYmFyLnNjcm9sbGJhckRpc2FibGVkQ2xhc3MpKTtcbiAgICBpZiAoc3dpcGVyLnNjcm9sbGJhci5lbCkge1xuICAgICAgc3dpcGVyLnNjcm9sbGJhci5lbC5jbGFzc0xpc3QuYWRkKC4uLmNsYXNzZXNUb1Rva2Vucyhzd2lwZXIucGFyYW1zLnNjcm9sbGJhci5zY3JvbGxiYXJEaXNhYmxlZENsYXNzKSk7XG4gICAgfVxuICAgIGRlc3Ryb3koKTtcbiAgfTtcbiAgT2JqZWN0LmFzc2lnbihzd2lwZXIuc2Nyb2xsYmFyLCB7XG4gICAgZW5hYmxlLFxuICAgIGRpc2FibGUsXG4gICAgdXBkYXRlU2l6ZSxcbiAgICBzZXRUcmFuc2xhdGUsXG4gICAgaW5pdCxcbiAgICBkZXN0cm95XG4gIH0pO1xufVxuXG5leHBvcnQgeyBTY3JvbGxiYXIgYXMgZGVmYXVsdCB9O1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==
4366//# sourceURL=webpack-internal:///../node_modules/swiper/modules/scrollbar.mjs
4367
4368}`)},"../node_modules/swiper/modules/thumbs.mjs"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval(`{__webpack_require__.r(__webpack_exports__);
4369/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4370/* harmony export */   "default": () => (/* binding */ Thumb)
4371/* harmony export */ });
4372/* harmony import */ var _shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/ssr-window.esm.mjs */ "../node_modules/swiper/shared/ssr-window.esm.mjs");
4373/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "../node_modules/swiper/shared/utils.mjs");
4374
4375
4376
4377function Thumb(_ref) {
4378  let {
4379    swiper,
4380    extendParams,
4381    on
4382  } = _ref;
4383  extendParams({
4384    thumbs: {
4385      swiper: null,
4386      multipleActiveThumbs: true,
4387      autoScrollOffset: 0,
4388      slideThumbActiveClass: 'swiper-slide-thumb-active',
4389      thumbsContainerClass: 'swiper-thumbs'
4390    }
4391  });
4392  let initialized = false;
vendor: 2,762 bytes, lines 4393-4465
4393  let swiperCreated = false;
4394  swiper.thumbs = {
4395    swiper: null
4396  };
4397  function onThumbClick() {
4398    const thumbsSwiper = swiper.thumbs.swiper;
4399    if (!thumbsSwiper || thumbsSwiper.destroyed) return;
4400    const clickedIndex = thumbsSwiper.clickedIndex;
4401    const clickedSlide = thumbsSwiper.clickedSlide;
4402    if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return;
4403    if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;
4404    let slideToIndex;
4405    if (thumbsSwiper.params.loop) {
4406      slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);
4407    } else {
4408      slideToIndex = clickedIndex;
4409    }
4410    if (swiper.params.loop) {
4411      swiper.slideToLoop(slideToIndex);
4412    } else {
4413      swiper.slideTo(slideToIndex);
4414    }
4415  }
4416  function init() {
4417    const {
4418      thumbs: thumbsParams
4419    } = swiper.params;
4420    if (initialized) return false;
4421    initialized = true;
4422    const SwiperClass = swiper.constructor;
4423    if (thumbsParams.swiper instanceof SwiperClass) {
4424      if (thumbsParams.swiper.destroyed) {
4425        initialized = false;
4426        return false;
4427      }
4428      swiper.thumbs.swiper = thumbsParams.swiper;
4429      Object.assign(swiper.thumbs.swiper.originalParams, {
4430        watchSlidesProgress: true,
4431        slideToClickedSlide: false
4432      });
4433      Object.assign(swiper.thumbs.swiper.params, {
4434        watchSlidesProgress: true,
4435        slideToClickedSlide: false
4436      });
4437      swiper.thumbs.swiper.update();
4438    } else if ((0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.o)(thumbsParams.swiper)) {
4439      const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);
4440      Object.assign(thumbsSwiperParams, {
4441        watchSlidesProgress: true,
4442        slideToClickedSlide: false
4443      });
4444      swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);
4445      swiperCreated = true;
4446    }
4447    swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass);
4448    swiper.thumbs.swiper.on('tap', onThumbClick);
4449    return true;
4450  }
4451  function update(initial) {
4452    const thumbsSwiper = swiper.thumbs.swiper;
4453    if (!thumbsSwiper || thumbsSwiper.destroyed) return;
4454    const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;
4455
4456    // Activate thumbs
4457    let thumbsToActivate = 1;
4458    const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;
4459    if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {
4460      thumbsToActivate = swiper.params.slidesPerView;
4461    }
4462    if (!swiper.params.thumbs.multipleActiveThumbs) {
4463      thumbsToActivate = 1;
4464    }
4465    thumbsToActivate = Math.floor(thumbsToActivate);
4466    thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass));
4467    if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {
4468      for (let i = 0; i < thumbsToActivate; i += 1) {
4469        (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(thumbsSwiper.slidesEl, \`[data-swiper-slide-index="\${swiper.realIndex + i}"]\`).forEach(slideEl => {
4470          slideEl.classList.add(thumbActiveClass);
4471        });
4472      }
4473    } else {
4474      for (let i = 0; i < thumbsToActivate; i += 1) {
4475        if (thumbsSwiper.slides[swiper.realIndex + i]) {
4476          thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass);
4477        }
4478      }
4479    }
4480    const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;
4481    const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;
4482    if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {
4483      const currentThumbsIndex = thumbsSwiper.activeIndex;
4484      let newThumbsIndex;
4485      let direction;
4486      if (thumbsSwiper.params.loop) {
4487        const newThumbsSlide = thumbsSwiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') === \`\${swiper.realIndex}\`);
4488        newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide);
4489        direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';
4490      } else {
4491        newThumbsIndex = swiper.realIndex;
4492        direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';
4493      }
4494      if (useOffset) {
4495        newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;
4496      }
4497      if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {
4498        if (thumbsSwiper.params.centeredSlides) {
4499          if (newThumbsIndex > currentThumbsIndex) {
4500            newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;
4501          } else {
4502            newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;
4503          }
4504        } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ;
4505        thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);
4506      }
4507    }
4508  }
4509  on('beforeInit', () => {
4510    const {
4511      thumbs
4512    } = swiper.params;
4513    if (!thumbs || !thumbs.swiper) return;
4514    if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) {
4515      const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
4516      const getThumbsElementAndInit = () => {
4517        const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper;
4518        if (thumbsElement && thumbsElement.swiper) {
4519          thumbs.swiper = thumbsElement.swiper;
4520          init();
4521          update(true);
4522        } else if (thumbsElement) {
4523          const eventName = \`\${swiper.params.eventsPrefix}init\`;
4524          const onThumbsSwiper = e => {
4525            thumbs.swiper = e.detail[0];
4526            thumbsElement.removeEventListener(eventName, onThumbsSwiper);
4527            init();
4528            update(true);
4529            thumbs.swiper.update();
4530            swiper.update();
4531          };
4532          thumbsElement.addEventListener(eventName, onThumbsSwiper);
4533        }
4534        return thumbsElement;
4535      };
4536      const watchForThumbsToAppear = () => {
4537        if (swiper.destroyed) return;
4538        const thumbsElement = getThumbsElementAndInit();
4539        if (!thumbsElement) {
4540          requestAnimationFrame(watchForThumbsToAppear);
4541        }
4542      };
4543      requestAnimationFrame(watchForThumbsToAppear);
4544    } else {
4545      init();
4546      update(true);
4547    }
4548  });
4549  on('slideChange update resize observerUpdate', () => {
4550    update();
4551  });
4552  on('setTransition', (_s, duration) => {
4553    const thumbsSwiper = swiper.thumbs.swiper;
4554    if (!thumbsSwiper || thumbsSwiper.destroyed) return;
4555    thumbsSwiper.setTransition(duration);
4556  });
4557  on('beforeDestroy', () => {
4558    const thumbsSwiper = swiper.thumbs.swiper;
4559    if (!thumbsSwiper || thumbsSwiper.destroyed) return;
4560    if (swiperCreated) {
4561      thumbsSwiper.destroy();
4562    }
4563  });
4564  Object.assign(swiper.thumbs, {
4565    init,
4566    update
4567  });
4568}
4569
4570
4571//# sourceURL=[module]
4572//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9tb2R1bGVzL3RodW1icy5tanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQWdFO0FBQ1U7O0FBRTFFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEd
4572BQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxNQUFNLFNBQVMsb0RBQVE7QUFDdkIsaURBQWlEO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixzQkFBc0I7QUFDNUMsUUFBUSxvREFBZSxxREFBcUQscUJBQXFCO0FBQ2pHO0FBQ0EsU0FBUztBQUNUO0FBQ0EsTUFBTTtBQUNOLHNCQUFzQixzQkFBc0I7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEhBQTBILGlCQUFpQjtBQUMzSTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBLHVCQUF1Qiw2REFBVztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1YsK0JBQStCLDJCQUEyQjtBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRTRCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9zd2lwZXIvbW9kdWxlcy90aHVtYnMubWpzPzFkNDQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZyBhcyBnZXREb2N1bWVudCB9IGZyb20gJy4uL3NoYXJlZC9zc3Itd2luZG93LmVzbS5tanMnO1xuaW1wb3J0IHsgbyBhcyBpc09iamVjdCwgZSBhcyBlbGVtZW50Q2hpbGRyZW4gfSBmcm9tICcuLi9zaGFyZWQvdXRpbHMubWpzJztcblxuZnVuY3Rpb24gVGh1bWIoX3JlZikge1xuICBsZXQge1xuICAgIHN3aXBlcixcbiAgICBleHRlbmRQYXJhbXMsXG4gICAgb25cbiAgfSA9IF9yZWY7XG4gIGV4dGVuZFBhcmFtcyh7XG4gICAgdGh1bWJzOiB7XG4gICAgICBzd2lwZXI6IG51bGwsXG4gICAgICBtdWx0aXBsZUFjdGl2ZVRodW1iczogdHJ1ZSxcbiAgICAgIGF1dG9TY3JvbGxPZmZzZXQ6IDAsXG4gICAgICBzbGlkZVRodW1iQWN0aXZlQ2xhc3M6ICdzd2lwZXItc2xpZGUtdGh1bWItYWN0aXZlJyxcbiAgICAgIHRodW1ic0NvbnRhaW5lckNsYXNzOiAnc3dpcGVyLXRodW1icydcbiAgICB9XG4gIH0pO1xuICBsZXQgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgbGV0IHN3aXBlckNyZWF0ZWQgPSBmYWxzZTtcbiAgc3dpcGVyLnRodW1icyA9IHtcbiAgICBzd2lwZXI6IG51bGxcbiAgfTtcbiAgZnVuY3Rpb24gb25UaHVtYkNsaWNrKCkge1xuICAgIGNvbnN0IHRodW1ic1N3aXBlciA9IHN3aXBlci50aHVtYnMuc3dpcGVyO1xuICAgIGlmICghdGh1bWJzU3dpcGVyIHx8IHRodW1ic1N3aXBlci5kZXN0cm95ZWQpIHJldHVybjtcbiAgICBjb25zdCBjbGlja2VkSW5kZXggPSB0aHVtYnNTd2lwZXIuY2xpY2tlZEluZGV4O1xuICAgIGNvbnN0IGNsaWNrZWRTbGlkZSA9IHRodW1ic1N3aXBlci5jbGlja2VkU2xpZGU7XG4gICAgaWYgKGNsaWNrZWRTbGlkZSAmJiBjbGlja2VkU2xpZGUuY2xhc3NMaXN0LmNvbnRhaW5zKHN3aXBlci5wYXJhbXMudGh1bWJzLnNsaWRlVGh1bWJBY3RpdmVDbGFzcykpIHJldHVybjtcbiAgICBpZiAodHlwZW9mIGNsaWNrZWRJbmRleCA9PT0gJ3VuZGVmaW5lZCcgfHwgY2xpY2tlZEluZGV4ID09PSBudWxsKSByZXR1cm47XG4gICAgbGV0IHNsaWRlVG9JbmRleDtcbiAgICBpZiAodGh1bWJzU3dpcGVyLnBhcmFtcy5sb29wKSB7XG4gICAgICBzbGlkZVRvSW5kZXggPSBwYXJzZUludCh0aHVtYnNTd2lwZXIuY2xpY2tlZFNsaWRlLmdldEF0dHJpYnV0ZSgnZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgnKSwgMTApO1xuICAgIH0gZWxzZSB7XG4gICAgICBzbGlkZVRvSW5kZXggPSBjbGlja2VkSW5kZXg7XG4gICAgfVxuICAgIGlmIChzd2lwZXIucGFyYW1zLmxvb3ApIHtcbiAgICAgIHN3aXBlci5zbGlkZVRvTG9vcChzbGlkZVRvSW5kZXgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzd2lwZXIuc2xpZGVUbyhzbGlkZVRvSW5kZXgpO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBpbml0KCkge1xuICAgIGNvbnN0IHtcbiAgICAgIHRodW1iczogdGh1bWJzUGFyYW1zXG4gICAgfSA9IHN3aXBlci5wYXJhbXM7XG4gICAgaWYgKGluaXRpYWxpemVkKSByZXR1cm4gZmFsc2U7XG4gICAgaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIGNvbnN0IFN3aXBlckNsYXNzID0gc3dpcGVyLmNvbnN0cnVjdG9yO1xuICAgIGlmICh0aHVtYnNQYXJhbXMuc3dpcGVyIGluc3RhbmNlb2YgU3dpcGVyQ2xhc3MpIHtcbiAgICAgIGlmICh0aHVtYnNQYXJhbXMuc3dpcGVyLmRlc3Ryb3llZCkge1xuICAgICAgICBpbml0aWFsaXplZCA9IGZhbHNlO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBzd2lwZXIudGh1bWJzLnN3aXBlciA9IHRodW1ic1BhcmFtcy5zd2lwZXI7XG4gICAgICBPYmplY3QuYXNzaWduKHN3aXBlci50aHVtYnMuc3dpcGVyLm9yaWdpbmFsUGFyYW1zLCB7XG4gICAgICAgIHdhdGNoU2xpZGVzUHJvZ3Jlc3M6IHRydWUsXG4gICAgICAgIHNsaWRlVG9DbGlja2VkU2xpZGU6IGZhbHNlXG4gICAgICB9KTtcbiAgICAgIE9iamVjdC5hc3NpZ24oc3dpcGVyLnRodW1icy5zd2lwZXIucGFyYW1zLCB7XG4gICAgICAgI
4572HdhdGNoU2xpZGVzUHJvZ3Jlc3M6IHRydWUsXG4gICAgICAgIHNsaWRlVG9DbGlja2VkU2xpZGU6IGZhbHNlXG4gICAgICB9KTtcbiAgICAgIHN3aXBlci50aHVtYnMuc3dpcGVyLnVwZGF0ZSgpO1xuICAgIH0gZWxzZSBpZiAoaXNPYmplY3QodGh1bWJzUGFyYW1zLnN3aXBlcikpIHtcbiAgICAgIGNvbnN0IHRodW1ic1N3aXBlclBhcmFtcyA9IE9iamVjdC5hc3NpZ24oe30sIHRodW1ic1BhcmFtcy5zd2lwZXIpO1xuICAgICAgT2JqZWN0LmFzc2lnbih0aHVtYnNTd2lwZXJQYXJhbXMsIHtcbiAgICAgICAgd2F0Y2hTbGlkZXNQcm9ncmVzczogdHJ1ZSxcbiAgICAgICAgc2xpZGVUb0NsaWNrZWRTbGlkZTogZmFsc2VcbiAgICAgIH0pO1xuICAgICAgc3dpcGVyLnRodW1icy5zd2lwZXIgPSBuZXcgU3dpcGVyQ2xhc3ModGh1bWJzU3dpcGVyUGFyYW1zKTtcbiAgICAgIHN3aXBlckNyZWF0ZWQgPSB0cnVlO1xuICAgIH1cbiAgICBzd2lwZXIudGh1bWJzLnN3aXBlci5lbC5jbGFzc0xpc3QuYWRkKHN3aXBlci5wYXJhbXMudGh1bWJzLnRodW1ic0NvbnRhaW5lckNsYXNzKTtcbiAgICBzd2lwZXIudGh1bWJzLnN3aXBlci5vbigndGFwJywgb25UaHVtYkNsaWNrKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBmdW5jdGlvbiB1cGRhdGUoaW5pdGlhbCkge1xuICAgIGNvbnN0IHRodW1ic1N3aXBlciA9IHN3aXBlci50aHVtYnMuc3dpcGVyO1xuICAgIGlmICghdGh1bWJzU3dpcGVyIHx8IHRodW1ic1N3aXBlci5kZXN0cm95ZWQpIHJldHVybjtcbiAgICBjb25zdCBzbGlkZXNQZXJWaWV3ID0gdGh1bWJzU3dpcGVyLnBhcmFtcy5zbGlkZXNQZXJWaWV3ID09PSAnYXV0bycgPyB0aHVtYnNTd2lwZXIuc2xpZGVzUGVyVmlld0R5bmFtaWMoKSA6IHRodW1ic1N3aXBlci5wYXJhbXMuc2xpZGVzUGVyVmlldztcblxuICAgIC8vIEFjdGl2YXRlIHRodW1ic1xuICAgIGxldCB0aHVtYnNUb0FjdGl2YXRlID0gMTtcbiAgICBjb25zdCB0aHVtYkFjdGl2ZUNsYXNzID0gc3dpcGVyLnBhcmFtcy50aHVtYnMuc2xpZGVUaHVtYkFjdGl2ZUNsYXNzO1xuICAgIGlmIChzd2lwZXIucGFyYW1zLnNsaWRlc1BlclZpZXcgPiAxICYmICFzd2lwZXIucGFyYW1zLmNlbnRlcmVkU2xpZGVzKSB7XG4gICAgICB0aHVtYnNUb0FjdGl2YXRlID0gc3dpcGVyLnBhcmFtcy5zbGlkZXNQZXJWaWV3O1xuICAgIH1cbiAgICBpZiAoIXN3aXBlci5wYXJhbXMudGh1bWJzLm11bHRpcGxlQWN0aXZlVGh1bWJzKSB7XG4gICAgICB0aHVtYnNUb0FjdGl2YXRlID0gMTtcbiAgICB9XG4gICAgdGh1bWJzVG9BY3RpdmF0ZSA9IE1hdGguZmxvb3IodGh1bWJzVG9BY3RpdmF0ZSk7XG4gICAgdGh1bWJzU3dpcGVyLnNsaWRlcy5mb3JFYWNoKHNsaWRlRWwgPT4gc2xpZGVFbC5jbGFzc0xpc3QucmVtb3ZlKHRodW1iQWN0aXZlQ2xhc3MpKTtcbiAgICBpZiAodGh1bWJzU3dpcGVyLnBhcmFtcy5sb29wIHx8IHRodW1ic1N3aXBlci5wYXJhbXMudmlydHVhbCAmJiB0aHVtYnNTd2lwZXIucGFyYW1zLnZpcnR1YWwuZW5hYmxlZCkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aHVtYnNUb0FjdGl2YXRlOyBpICs9IDEpIHtcbiAgICAgICAgZWxlbWVudENoaWxkcmVuKHRodW1ic1N3aXBlci5zbGlkZXNFbCwgYFtkYXRhLXN3aXBlci1zbGlkZS1pbmRleD1cIiR7c3dpcGVyLnJlYWxJbmRleCArIGl9XCJdYCkuZm9yRWFjaChzbGlkZUVsID0+IHtcbiAgICAgICAgICBzbGlkZUVsLmNsYXNzTGlzdC5hZGQodGh1bWJBY3RpdmVDbGFzcyk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRodW1ic1RvQWN0aXZhdGU7IGkgKz0gMSkge1xuICAgICAgICBpZiAodGh1bWJzU3dpcGVyLnNsaWRlc1tzd2lwZXIucmVhbEluZGV4ICsgaV0pIHtcbiAgICAgICAgICB0aHVtYnNTd2lwZXIuc2xpZGVzW3N3aXBlci5yZWFsSW5kZXggKyBpXS5jbGFzc0xpc3QuYWRkKHRodW1iQWN0aXZlQ2xhc3MpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGF1dG9TY3JvbGxPZmZzZXQgPSBzd2lwZXIucGFyYW1zLnRodW1icy5hdXRvU2Nyb2xsT2Zmc2V0O1xuICAgIGNvbnN0IHVzZU9mZnNldCA9IGF1dG9TY3JvbGxPZmZzZXQgJiYgIXRodW1ic1N3aXBlci5wYXJhbXMubG9vcDtcbiAgICBpZiAoc3dpcGVyLnJlYWxJbmRleCAhPT0gdGh1bWJzU3dpcGVyLnJlYWxJbmRleCB8fCB1c2VPZmZzZXQpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRUaHVtYnNJbmRleCA9IHRodW1ic1N3aXBlci5hY3RpdmVJbmRleDtcbiAgICAgIGxldCBuZXdUaHVtYnNJbmRleDtcbiAgICAgIGxldCBkaXJlY3Rpb247XG4gICAgICBpZiAodGh1bWJzU3dpcGVyLnBhcmFtcy5sb29wKSB7XG4gICAgICAgIGNvbnN0IG5ld1RodW1ic1NsaWRlID0gdGh1bWJzU3dpcGVyLnNsaWRlcy5maW5kKHNsaWRlRWwgPT4gc2xpZGVFbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3dpcGVyLXNsaWRlLWluZGV4JykgPT09IGAke3N3aXBlci5yZWFsSW5kZXh9YCk7XG4gICAgICAgIG5ld1RodW1ic0luZGV4ID0gdGh1bWJzU3dpcGVyLnNsaWRlcy5pbmRleE9mKG5ld1RodW1ic1NsaWRlKTtcbiAgICAgICAgZGlyZWN0aW9uID0gc3dpcGVyLmFjdGl2ZUluZGV4ID4gc3dpcGVyLnByZXZpb3VzSW5kZXggPyAnbmV4dCcgOiAncHJldic7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXdUaHVtYnNJbmRleCA9IHN3aXBlci5yZWFsSW5kZXg7XG4gICAgICAgIGRpcmVjdGlvbiA9IG5ld1RodW1ic0luZGV4ID4gc3dpcGVyLnByZXZpb3VzSW5kZXggPyAnbmV4dCcgOiAncHJldic7XG4gICAgICB9XG4gICAgICBpZiAodXNlT2Zmc2V0KSB7XG4gICAgICAgIG5ld1RodW1ic0luZGV4ICs9IGRpcmVjdGlvbiA9PT0gJ25leHQnID8gYXV0b1Njcm9sbE9mZnNldCA6IC0xICogYXV0b1Njcm9sbE9mZnNldDtcbiAgICAgIH1cbiAgICAgIGlmICh0aHVtYnNTd2lwZXIudmlzaWJsZVNsaWRlc0luZGV4ZXMgJiYgdGh1bWJzU3dpcGVyLnZpc2libGVTbGlkZXNJbmRleGVzLmluZGV4T2YobmV3VGh1bWJzSW5kZXgpIDwgMCkge1xuICAgICAgICBpZiAodGh1bWJzU3dpcGVyLnBhcmFtcy5jZW50ZXJlZFNsaWRlcykge1xuICAgICAgICAgIGlmIChuZXdUaHVtYnNJbmRleCA+IGN1cnJlbnRUaHVtYnNJbmRleCkge1xuICAgICAgICAgICAgbmV3VGh1bWJzSW5kZXggPSBuZXdUaHVtYnNJbmRleCAtIE1hdGguZmxvb3Ioc2xpZGVzUGVyVmlldyAvIDIpICsgMTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3VGh1bWJzSW5kZXggPSBuZXdUaHVtYnNJbmRleCArIE1hdGguZmxvb3Ioc2xpZGVzUGVyVmlldyAvIDIpIC0gMTtcbiAgICAgICAgICB9XG4gICAgICAgI
4572H0gZWxzZSBpZiAobmV3VGh1bWJzSW5kZXggPiBjdXJyZW50VGh1bWJzSW5kZXggJiYgdGh1bWJzU3dpcGVyLnBhcmFtcy5zbGlkZXNQZXJHcm91cCA9PT0gMSkgO1xuICAgICAgICB0aHVtYnNTd2lwZXIuc2xpZGVUbyhuZXdUaHVtYnNJbmRleCwgaW5pdGlhbCA/IDAgOiB1bmRlZmluZWQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBvbignYmVmb3JlSW5pdCcsICgpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB0aHVtYnNcbiAgICB9ID0gc3dpcGVyLnBhcmFtcztcbiAgICBpZiAoIXRodW1icyB8fCAhdGh1bWJzLnN3aXBlcikgcmV0dXJuO1xuICAgIGlmICh0eXBlb2YgdGh1bWJzLnN3aXBlciA9PT0gJ3N0cmluZycgfHwgdGh1bWJzLnN3aXBlciBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICBjb25zdCBkb2N1bWVudCA9IGdldERvY3VtZW50KCk7XG4gICAgICBjb25zdCBnZXRUaHVtYnNFbGVtZW50QW5kSW5pdCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgdGh1bWJzRWxlbWVudCA9IHR5cGVvZiB0aHVtYnMuc3dpcGVyID09PSAnc3RyaW5nJyA/IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGh1bWJzLnN3aXBlcikgOiB0aHVtYnMuc3dpcGVyO1xuICAgICAgICBpZiAodGh1bWJzRWxlbWVudCAmJiB0aHVtYnNFbGVtZW50LnN3aXBlcikge1xuICAgICAgICAgIHRodW1icy5zd2lwZXIgPSB0aHVtYnNFbGVtZW50LnN3aXBlcjtcbiAgICAgICAgICBpbml0KCk7XG4gICAgICAgICAgdXBkYXRlKHRydWUpO1xuICAgICAgICB9IGVsc2UgaWYgKHRodW1ic0VsZW1lbnQpIHtcbiAgICAgICAgICBjb25zdCBldmVudE5hbWUgPSBgJHtzd2lwZXIucGFyYW1zLmV2ZW50c1ByZWZpeH1pbml0YDtcbiAgICAgICAgICBjb25zdCBvblRodW1ic1N3aXBlciA9IGUgPT4ge1xuICAgICAgICAgICAgdGh1bWJzLnN3aXBlciA9IGUuZGV0YWlsWzBdO1xuICAgICAgICAgICAgdGh1bWJzRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgb25UaHVtYnNTd2lwZXIpO1xuICAgICAgICAgICAgaW5pdCgpO1xuICAgICAgICAgICAgdXBkYXRlKHRydWUpO1xuICAgICAgICAgICAgdGh1bWJzLnN3aXBlci51cGRhdGUoKTtcbiAgICAgICAgICAgIHN3aXBlci51cGRhdGUoKTtcbiAgICAgICAgICB9O1xuICAgICAgICAgIHRodW1ic0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIG9uVGh1bWJzU3dpcGVyKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGh1bWJzRWxlbWVudDtcbiAgICAgIH07XG4gICAgICBjb25zdCB3YXRjaEZvclRodW1ic1RvQXBwZWFyID0gKCkgPT4ge1xuICAgICAgICBpZiAoc3dpcGVyLmRlc3Ryb3llZCkgcmV0dXJuO1xuICAgICAgICBjb25zdCB0aHVtYnNFbGVtZW50ID0gZ2V0VGh1bWJzRWxlbWVudEFuZEluaXQoKTtcbiAgICAgICAgaWYgKCF0aHVtYnNFbGVtZW50KSB7XG4gICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHdhdGNoRm9yVGh1bWJzVG9BcHBlYXIpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHdhdGNoRm9yVGh1bWJzVG9BcHBlYXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbml0KCk7XG4gICAgICB1cGRhdGUodHJ1ZSk7XG4gICAgfVxuICB9KTtcbiAgb24oJ3NsaWRlQ2hhbmdlIHVwZGF0ZSByZXNpemUgb2JzZXJ2ZXJVcGRhdGUnLCAoKSA9PiB7XG4gICAgdXBkYXRlKCk7XG4gIH0pO1xuICBvbignc2V0VHJhbnNpdGlvbicsIChfcywgZHVyYXRpb24pID0+IHtcbiAgICBjb25zdCB0aHVtYnNTd2lwZXIgPSBzd2lwZXIudGh1bWJzLnN3aXBlcjtcbiAgICBpZiAoIXRodW1ic1N3aXBlciB8fCB0aHVtYnNTd2lwZXIuZGVzdHJveWVkKSByZXR1cm47XG4gICAgdGh1bWJzU3dpcGVyLnNldFRyYW5zaXRpb24oZHVyYXRpb24pO1xuICB9KTtcbiAgb24oJ2JlZm9yZURlc3Ryb3knLCAoKSA9PiB7XG4gICAgY29uc3QgdGh1bWJzU3dpcGVyID0gc3dpcGVyLnRodW1icy5zd2lwZXI7XG4gICAgaWYgKCF0aHVtYnNTd2lwZXIgfHwgdGh1bWJzU3dpcGVyLmRlc3Ryb3llZCkgcmV0dXJuO1xuICAgIGlmIChzd2lwZXJDcmVhdGVkKSB7XG4gICAgICB0aHVtYnNTd2lwZXIuZGVzdHJveSgpO1xuICAgIH1cbiAgfSk7XG4gIE9iamVjdC5hc3NpZ24oc3dpcGVyLnRodW1icywge1xuICAgIGluaXQsXG4gICAgdXBkYXRlXG4gIH0pO1xufVxuXG5leHBvcnQgeyBUaHVtYiBhcyBkZWZhdWx0IH07XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9
4573//# sourceURL=webpack-internal:///../node_modules/swiper/modules/thumbs.mjs
4574
4575}`)},"../node_modules/swiper/modules/virtual.mjs"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval(`{__webpack_require__.r(__webpack_exports__);
4576/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4577/* harmony export */   "default": () => (/* binding */ Virtual)
4578/* harmony export */ });
4579/* harmony import */ var _shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/ssr-window.esm.mjs */ "../node_modules/swiper/shared/ssr-window.esm.mjs");
4580/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "../node_modules/swiper/shared/utils.mjs");
4581
4582
4583
4584function Virtual(_ref) {
4585  let {
4586    swiper,
4587    extendParams,
4588    on,
4589    emit
4590  } = _ref;
4591  extendParams({
4592    virtual: {
4593      enabled: false,
4594      slides: [],
4595      cache: true,
4596      renderSlide: null,
4597      renderExternal: null,
4598      renderExternalUpdate: true,
4599      addSlidesBefore: 0,
4600      addSlidesAfter: 0
4601    }
4602  });
4603  let cssModeTimeout;
4604  const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
4605  swiper.virtual = {
4606    cache: {},
4607    from: undefined,
4608    to: undefined,
4609    slides: [],
4610    offset: 0,
4611    slidesGrid: []
4612  };
4613  const tempDOM = document.createElement('div');
vendor: 3,266 bytes, lines 4614-4707
4614  function renderSlide(slide, index) {
4615    const params = swiper.params.virtual;
4616    if (params.cache && swiper.virtual.cache[index]) {
4617      return swiper.virtual.cache[index];
4618    }
4619    // eslint-disable-next-line
4620    let slideEl;
4621    if (params.renderSlide) {
4622      slideEl = params.renderSlide.call(swiper, slide, index);
4623      if (typeof slideEl === 'string') {
4624        (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.s)(tempDOM, slideEl);
4625        slideEl = tempDOM.children[0];
4626      }
4627    } else if (swiper.isElement) {
4628      slideEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('swiper-slide');
4629    } else {
4630      slideEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', swiper.params.slideClass);
4631    }
4632    slideEl.setAttribute('data-swiper-slide-index', index);
4633    if (!params.renderSlide) {
4634      (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.s)(slideEl, slide);
4635    }
4636    if (params.cache) {
4637      swiper.virtual.cache[index] = slideEl;
4638    }
4639    return slideEl;
4640  }
4641  function update(force, beforeInit, forceActiveIndex) {
4642    const {
4643      slidesPerView,
4644      slidesPerGroup,
4645      centeredSlides,
4646      loop: isLoop,
4647      initialSlide
4648    } = swiper.params;
4649    if (beforeInit && !isLoop && initialSlide > 0) {
4650      return;
4651    }
4652    const {
4653      addSlidesBefore,
4654      addSlidesAfter
4655    } = swiper.params.virtual;
4656    const {
4657      from: previousFrom,
4658      to: previousTo,
4659      slides,
4660      slidesGrid: previousSlidesGrid,
4661      offset: previousOffset
4662    } = swiper.virtual;
4663    if (!swiper.params.cssMode) {
4664      swiper.updateActiveIndex();
4665    }
4666    const activeIndex = typeof forceActiveIndex === 'undefined' ? swiper.activeIndex || 0 : forceActiveIndex;
4667    let offsetProp;
4668    if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';
4669    let slidesAfter;
4670    let slidesBefore;
4671    if (centeredSlides) {
4672      slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;
4673      slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;
4674    } else {
4675      slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;
4676      slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore;
4677    }
4678    let from = activeIndex - slidesBefore;
4679    let to = activeIndex + slidesAfter;
4680    if (!isLoop) {
4681      from = Math.max(from, 0);
4682      to = Math.min(to, slides.length - 1);
4683    }
4684    let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);
4685    if (isLoop && activeIndex >= slidesBefore) {
4686      from -= slidesBefore;
4687      if (!centeredSlides) offset += swiper.slidesGrid[0];
4688    } else if (isLoop && activeIndex < slidesBefore) {
4689      from = -slidesBefore;
4690      if (centeredSlides) offset += swiper.slidesGrid[0];
4691    }
4692    Object.assign(swiper.virtual, {
4693      from,
4694      to,
4695      offset,
4696      slidesGrid: swiper.slidesGrid,
4697      slidesBefore,
4698      slidesAfter
4699    });
4700    function onRendered() {
4701      swiper.updateSlides();
4702      swiper.updateProgress();
4703      swiper.updateSlidesClasses();
4704      emit('virtualUpdate');
4705    }
4706    if (previousFrom === from && previousTo === to && !force) {
4707      if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {
4708        swiper.slides.forEach(slideEl => {
4709          slideEl.style[offsetProp] = \`\${offset - Math.abs(swiper.cssOverflowAdjustment())}px\`;
4710        });
4711      }
4712      swiper.updateProgress();
4713      emit('virtualUpdate');
4714      return;
4715    }
4716    if (swiper.params.virtual.renderExternal) {
4717      swiper.params.virtual.renderExternal.call(swiper, {
4718        offset,
4719        from,
4720        to,
4721        slides: function getSlides() {
4722          const slidesToRender = [];
4723          for (let i = from; i <= to; i += 1) {
4724            slidesToRender.push(slides[i]);
4725          }
4726          return slidesToRender;
4727        }()
4728      });
4729      if (swiper.params.virtual.renderExternalUpdate) {
4730        onRendered();
4731      } else {
4732        emit('virtualUpdate');
4733      }
4734      return;
4735    }
4736    const prependIndexes = [];
4737    const appendIndexes = [];
4738    const getSlideIndex = index => {
4739      let slideIndex = index;
4740      if (index < 0) {
4741        slideIndex = slides.length + index;
4742      } else if (slideIndex >= slides.length) {
4743        // eslint-disable-next-line
4744        slideIndex = slideIndex - slides.length;
4745      }
4746      return slideIndex;
4747    };
4748    if (force) {
4749      swiper.slides.filter(el => el.matches(\`.\${swiper.params.slideClass}
4749, swiper-slide\`)).forEach(slideEl => {
4750        slideEl.remove();
4751      });
4752    } else {
4753      for (let i = previousFrom; i <= previousTo; i += 1) {
4754        if (i < from || i > to) {
4755          const slideIndex = getSlideIndex(i);
4756          swiper.slides.filter(el => el.matches(\`.\${swiper.params.slideClass}[data-swiper-slide-index="\${slideIndex}"], swiper-slide[data-swiper-slide-index="\${slideIndex}"]\`)).forEach(slideEl => {
4757            slideEl.remove();
4758          });
4759        }
4760      }
4761    }
4762    const loopFrom = isLoop ? -slides.length : 0;
4763    const loopTo = isLoop ? slides.length * 2 : slides.length;
4764    for (let i = loopFrom; i < loopTo; i += 1) {
4765      if (i >= from && i <= to) {
4766        const slideIndex = getSlideIndex(i);
4767        if (typeof previousTo === 'undefined' || force) {
4768          appendIndexes.push(slideIndex);
4769        } else {
4770          if (i > previousTo) appendIndexes.push(slideIndex);
4771          if (i < previousFrom) prependIndexes.push(slideIndex);
4772        }
4773      }
4774    }
4775    appendIndexes.forEach(index => {
4776      swiper.slidesEl.append(renderSlide(slides[index], index));
4777    });
4778    if (isLoop) {
4779      for (let i = prependIndexes.length - 1; i >= 0; i -= 1) {
4780        const index = prependIndexes[i];
4781        swiper.slidesEl.prepend(renderSlide(slides[index], index));
4782      }
4783    } else {
4784      prependIndexes.sort((a, b) => b - a);
4785      prependIndexes.forEach(index => {
4786        swiper.slidesEl.prepend(renderSlide(slides[index], index));
4787      });
4788    }
4789    (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(sli
4789deEl => {
4790      slideEl.style[offsetProp] = \`\${offset - Math.abs(swiper.cssOverflowAdjustment())}px\`;
4791    });
4792    onRendered();
4793  }
4794  function appendSlide(slides) {
4795    if (typeof slides === 'object' && 'length' in slides) {
4796      for (let i = 0; i < slides.length; i += 1) {
4797        if (slides[i]) swiper.virtual.slides.push(slides[i]);
4798      }
4799    } else {
4800      swiper.virtual.slides.push(slides);
4801    }
4802    update(true);
4803  }
4804  function prependSlide(slides) {
4805    const activeIndex = swiper.activeIndex;
4806    let newActiveIndex = activeIndex + 1;
4807    let numberOfNewSlides = 1;
4808    if (Array.isArray(slides)) {
4809      for (let i = 0; i < slides.length; i += 1) {
4810        if (slides[i]) swiper.virtual.slides.unshift(slides[i]);
4811      }
4812      newActiveIndex = activeIndex + slides.length;
4813      numberOfNewSlides = slides.length;
4814    } else {
4815      swiper.virtual.slides.unshift(slides);
4816    }
4817    if (swiper.params.virtual.cache) {
4818      const cache = swiper.virtual.cache;
4819      const newCache = {};
4820      Object.keys(cache).forEach(cachedIndex => {
4821        const cachedEl = cache[cachedIndex];
4822        const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index');
4823        if (cachedElIndex) {
4824          cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);
4825        }
4826        newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl;
4827      });
4828      swiper.virtual.cache = newCache;
4829    }
4830    update(true);
4831    swiper.slideTo(newActiveIndex, 0);
4832  }
4833  function removeSlide(slidesIndexes) {
4834    if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;
4835    let activeIndex = swiper.activeIndex;
4836    if (Array.isArray(slidesIndexes)) {
4837      for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {
4838        if (swiper.params.virtual.cache) {
4839          delete swiper.virtual.cache[slidesIndexes[i]];
4840          // shift cache indexes
4841          Object.keys(swiper.virtual.cache).forEach(key => {
4842            if (key > slidesIndexes) {
4843              swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];
4844              swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);
4845              delete swiper.virtual.cache[key];
4846            }
4847          });
4848        }
4849        swiper.virtual.slides.splice(slidesIndexes[i], 1);
4850        if (slidesIndexes[i] < activeIndex) activeIndex -= 1;
4851        activeIndex = Math.max(activeIndex, 0);
4852      }
4853    } else {
4854      if (swiper.params.virtual.cache) {
4855        delete swiper.virtual.cache[slidesIndexes];
4856        // shift cache indexes
4857        Object.keys(swiper.virtual.cache).forEach(key => {
4858          if (key > slidesIndexes) {
4859            swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];
4860            swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);
4861            delete swiper.virtual.cache[key];
4862          }
4863        });
4864      }
4865      swiper.virtual.slides.splice(slidesIndexes, 1);
4866      if (slidesIndexes < activeIndex) activeIndex -= 1;
4867      activeIndex = Math.max(activeIndex, 0);
4868    }
4869    update(true);
4870    swiper.slideTo(activeIndex, 0);
4871  }
4872  function removeAllSlides() {
4873    swiper.virtual.slides = [];
4874    if (swiper.params.virtual.cache) {
4875      swiper.virtual.cache = {};
4876    }
4877    update(true);
4878    swiper.slideTo(0, 0);
4879  }
4880  on('beforeInit', () => {
4881    if (!swiper.params.virtual.enabled) return;
4882    let domSlidesAssigned;
4883    if (typeof swiper.passedParams.virtual.slides === 'undefined') {
4884      const slides = [...swiper.slidesEl.children].filter(el => el.matches(\`.\${swiper.params.slideClass}, swiper-slide\`));
4885      if (slides && slides.length) {
4886        swiper.virtual.slides = [...slides];
4887        domSlidesAssigned = true;
4888        slides.forEach((slideEl, slideIndex) => {
4889          slideEl.setAttribute('data-swiper-slide-index', slideIndex);
4890          swiper.virtual.cache[slideIndex] = slideEl;
4891          slideEl.remove();
4892        });
4893      }
4894    }
4895    if (!domSlidesAssigned) {
4896      swiper.virtual.slides = swiper.params.virtual.slides;
4897    }
4898    swiper.classNames.push(\`\${swiper.params.containerModifierClass}virtual\`);
4899    swiper.params.watchSlidesProgress = true;
4900    swiper.originalParams.watchSlidesProgress = true;
4901    update(false, true);
4902  });
4903  on('setTranslate', () => {
4904    if (!swiper.params.virtual.enabled) return;
4905    if (swiper.params.cssMode && !swiper._immediateVirtual) {
4906      clearTimeout(cssModeTimeout);
4907      cssModeTimeout = setTimeout(() => {
4908        update();
4909      }, 100);
4910    } else {
4911      update();
4912    }
4913  });
4914  on('init update resize', () => {
4915    if (!swiper.params.virtual.enabled) return;
4916    if (swiper.params.cssMode) {
4917      (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(swiper.wrapperEl, '--swiper-virtual-size', \`\${swiper.virtualSize}px\`);
4918    }
4919  });
4920  Object.assign(swiper.virtual, {
4921    appendSlide,
4922    prependSlide,
4923    removeSlide,
4924    removeAllSlides,
4925    update
4926  });
4927}
4928
4929
4930//# sourceURL=[module]
4931//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9tb2R1bGVzL3ZpcnR1YWwubWpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFnRTtBQUN1RDs7QUFFdkg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxtQk
4931FBbUIsNkRBQVc7QUFDOUI7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsb0RBQVk7QUFDcEI7QUFDQTtBQUNBLE1BQU07QUFDTixnQkFBZ0Isb0RBQWE7QUFDN0IsTUFBTTtBQUNOLGdCQUFnQixvREFBYTtBQUM3QjtBQUNBO0FBQ0E7QUFDQSxNQUFNLG9EQUFZO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtEQUFrRDtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QyxrREFBa0Q7QUFDM0YsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QixTQUFTO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnREFBZ0QseUJBQXlCO0FBQ3pFO0FBQ0EsT0FBTztBQUNQLE1BQU07QUFDTixpQ0FBaUMsaUJBQWlCO0FBQ2xEO0FBQ0E7QUFDQSxvREFBb0QseUJBQXlCLDRCQUE0QixXQUFXLDRDQUE0QyxXQUFXO0FBQzNLO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsWUFBWTtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLDhDQUE4QyxRQUFRO0FBQ3REO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxJQUFJLG9EQUFlO0FBQ25CLHFDQUFxQyxrREFBa0Q7QUFDdkYsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLG1CQUFtQjtBQUN6QztBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixtQkFBbUI7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2QyxRQUFRO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0VBQStFLHlCQUF5QjtBQUN4RztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLHFDQUFxQztBQUNuRTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLE1BQU07QUFDTjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLE1BQU0sb0RBQWMsK0NBQStDLG1CQUFtQjtBQUN0RjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRThCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9zd2lwZXIvbW9kdWxlcy92aXJ0dWFsLm1qcz9jMzcwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGcgYXMgZ2V0RG9jdW1lbnQgfSBmcm9tICcuLi9zaGFyZWQvc3NyLXdpbmRvdy5lc20ubWpzJztcbmltcG9ydCB7IGEgYXMgc2V0Q1NTUHJvcGVydHksIGUgYXMgZWxlbWVudENoaWxkcmVuLCBzIGFzIHNldElubmVySFRNTCwgYyBhcyBjcmVhdGVFbGVtZW50IH0gZnJvbSAnLi4vc2hhcmVkL3V0aWxzLm1qcyc7XG5cbmZ1bmN0aW9uIFZpcnR1YWwoX3JlZikge1xuICBsZXQge1xuICAgIHN3aXBlcixcbiAgICBleHRlbmRQYXJhbXMsXG4gICAgb24sXG4gICAgZW1pdFxuICB9ID0gX3JlZjtcbiAgZXh0ZW5kUGFyYW1zKHtcbiAgICB2aXJ0dWFsOiB7XG4gICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICAgIHNsaWRlczogW10sXG4gICAgICBjYWNoZTogdHJ1ZSxcbiAgICAgIHJlbmRlclNsaWRlOiBudWxsLFxuICAgICAgcmVuZGVyRXh0ZXJuYWw6IG51bGwsXG4gICAgICByZW5kZXJFeHRlcm5hbFVwZGF0ZTogdHJ1ZSxcbiAgICAgIGFkZFNsaWRlc0JlZm9yZTogMCxcbiAgICAgIGFkZFNsaWRlc0FmdGVyOiAwXG4gICAgfVxuICB9KTtcbiAgbGV0IGNzc01vZGVUaW1lb3V0O1xuICBjb25zdCBkb2N1bWVudCA9IGdldERvY3VtZW50KCk7XG4gIHN3aXBlci52aXJ0dWFsID0ge1xuICAgIGNhY2hlOiB7fSxcbiAgICBmcm9tOiB1bmRlZmluZWQsXG4gICAgdG86IHVuZGVmaW5lZCxcbiAgICBzbGlkZXM6IFtdLFxuICAgIG9mZnNldDogMCxcbiAgICBzbGlkZXNHcmlkOiBbXVxuICB9O1xuICBjb25zdCB0ZW1wRE9NID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIGZ1bmN0aW9uIHJlbmRlclNsaWRlKHNsaWRlLCBpbmRleCkge1xuICAgIGNvbnN0IHBhcmFtcyA9IHN3aXBlci5wYXJhbXMudmlydHVhbDtcbiAgICBpZiAocGFyYW1zLmNhY2hlICYmIHN3aXBlci52aXJ0dWFsLmNhY2hlW2luZGV4XSkge1xuICAgICAgcmV0dXJuIHN3aXBlci52aXJ0dWFsLmNhY2hlW2luZGV4XTtcbiAgICB9XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgbGV0IHNsaWRlRWw7XG4gICAgaWYgKHBhcmFtcy5yZW5kZXJTbGlkZSkge1xuICAgICAgc2xpZGVFbCA9IHBhcmFtcy5yZW5kZXJTbGlkZS5jYWxsKHN3aXBlciwgc2xpZGUsIGluZGV4KTtcbiAgICAgIGlmICh0eXBlb2Ygc2xpZGVFbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgc2V0SW5uZXJIVE1MKHRlbXBET00sIHNsaWRlRWwpO1xuICAgICAgICBzbGlkZUVsID0gdGVtcERPTS5jaGlsZHJlblswXTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHN3aXBlci5pc0VsZW1lbnQpIHtcbiAgICAgIHNsaWRlRWwgPSBjcmVhdGVFbGVtZW50KCdzd2lwZXItc2xpZGUnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2xpZGVFbCA9IGNyZWF0ZUVsZW1lbnQoJ2RpdicsIHN3aXBlci5wYXJhbXMuc2xpZGVDbGFzcyk7XG4gICAgfVxuICAgIHNsaWRlRWwuc2V0QXR0cmlidXRlKCdkYXRhLXN3aXBlci1zbGlkZS1pbmRleCcsIGluZGV4KTtcbiAgICBpZiAoIXBhcmFtcy5yZW5kZXJTbGlkZSkge1xuICAgICAgc2V0SW5uZXJIVE1MKHNsaWRlRWwsIHNsaWRlKTtcbiAgICB9XG4gICAgaWYgKHBhcmFtcy5jYWNoZSkge1xuICAgICAgc3dpcGVyLnZpcnR1YWwuY2FjaGVbaW5kZXhdID0gc2xpZGVFbDtcbiAgICB9XG4gICAgcmV0dXJuIHNsaWRlRWw7XG4gIH1cbiAgZnVuY3Rpb24gdXBkYXRlKGZvcmNlLCBiZWZvcmVJbml0LCBmb3JjZUFjdGl2ZUluZGV4KSB7XG4gICAgY29uc3Qge1xuICAgICAgc2xpZGVzUGVyVmlldyxcbiAgICAgIHNsaWRlc1Blckdyb3VwLFxuICAgICAgY2VudGVyZWRTbGlkZXMsXG4gICAgICBsb29wOiBpc0xvb3AsXG4gICAgICBpbml0aWFsU2xpZGVcbiAgICB9ID0gc3dpcGVyLnBhcmFtcztcbiAgICBpZiAoYmVmb3JlSW5pdCAmJiAhaXNMb29wICYmIGluaXRpYWxTbGlkZSA+IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qge1xuICAgICAgYWRkU2xpZGVzQmVmb3JlLFxuICAgICAgYWRkU2xpZGVzQWZ0ZXJcbiAgICB9ID0gc3dpcGVyLnBhcmFtcy52aXJ0dWFsO1xuICAgIGNvbnN0IHtcbiAgICAgIGZyb206IHByZXZpb3VzRnJvbSxcbiAgICAgIHRvOiBwcmV2aW91c1RvLFxuICAgICAgc2xpZGVzLFxuICAgICAgc2xpZGVzR3JpZDogcHJldmlvdXNTbGlkZXNHcmlkLFxuICAgICAgb2Zmc2V0OiBwcmV2aW91c09mZnNldFxuICAgIH0gPSBzd2lwZXIudmlydHVhbDtcbiAgICBpZiAoIXN3aXBlci5wYXJhbXMuY3NzTW9kZSkge1xuICAgICAgc3dpcGVyLnVwZGF0ZUFjdGl2ZUluZGV4KCk7XG4gICAgfVxuICAgIGNvbnN0IGFjdGl2ZUluZGV4ID0gdHlwZW9mIGZvcmNlQWN0aXZlSW5kZXggPT09ICd1bmRlZmluZWQnID8gc3dpcGVyLmFjdGl2ZUluZGV4IHx8IDAgOiBmb3JjZUFjdGl2ZUluZGV4O1xuICAgIGxldCBvZmZzZXRQcm9wO1xuICAgIGlmIChzd2lwZXIucnRsVHJhbnNsYXRlKSBvZmZzZXRQcm9wID0gJ3JpZ2h0JztlbHNlIG9mZnNldFByb3AgPSBzd2lwZXIuaXNIb3Jpem9udGFsKCkgPyAnbGVmdCcgOiAndG9wJztcbiAgICBsZXQgc2xpZGVzQWZ0ZXI7XG4gICAgbGV0IHNsaWRlc0JlZm9yZTtcbiAgICBpZiAoY2VudGVyZWRTbGlkZXMpIHtcbiAgICAgIHNsaWRlc0FmdGVyID0gTWF0aC5mbG9vcihzbGlkZXNQZXJWaWV3IC8gMikgKyBzbGlkZXNQZXJHcm91cCArIGFkZFNsaWRlc0FmdGVyO1xuICAgICAgc2xpZGVzQmVmb3JlID0gTWF0aC5mbG9vcihzbGlkZXNQZXJWaWV3IC8gMikgKyBzbGlkZXNQZXJHcm91cCArIGFkZFNsaWRlc0JlZm9yZTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2xpZGVzQWZ0ZXIgPSBzbGlkZXNQZXJWaWV3ICsgKHNsaWRlc1Blckdyb3VwIC0gMSkgKyBhZGRTbGlkZXNBZnRlcjtcbiAgICAgIHNsaWRlc0JlZm9yZSA9IChpc0xvb3AgPyBzbGlkZXNQZXJWaWV3
vendor: 12,076 bytes, line 4931
4931IDogc2xpZGVzUGVyR3JvdXApICsgYWRkU2xpZGVzQmVmb3JlO1xuICAgIH1cbiAgICBsZXQgZnJvbSA9IGFjdGl2ZUluZGV4IC0gc2xpZGVzQmVmb3JlO1xuICAgIGxldCB0byA9IGFjdGl2ZUluZGV4ICsgc2xpZGVzQWZ0ZXI7XG4gICAgaWYgKCFpc0xvb3ApIHtcbiAgICAgIGZyb20gPSBNYXRoLm1heChmcm9tLCAwKTtcbiAgICAgIHRvID0gTWF0aC5taW4odG8sIHNsaWRlcy5sZW5ndGggLSAxKTtcbiAgICB9XG4gICAgbGV0IG9mZnNldCA9IChzd2lwZXIuc2xpZGVzR3JpZFtmcm9tXSB8fCAwKSAtIChzd2lwZXIuc2xpZGVzR3JpZFswXSB8fCAwKTtcbiAgICBpZiAoaXNMb29wICYmIGFjdGl2ZUluZGV4ID49IHNsaWRlc0JlZm9yZSkge1xuICAgICAgZnJvbSAtPSBzbGlkZXNCZWZvcmU7XG4gICAgICBpZiAoIWNlbnRlcmVkU2xpZGVzKSBvZmZzZXQgKz0gc3dpcGVyLnNsaWRlc0dyaWRbMF07XG4gICAgfSBlbHNlIGlmIChpc0xvb3AgJiYgYWN0aXZlSW5kZXggPCBzbGlkZXNCZWZvcmUpIHtcbiAgICAgIGZyb20gPSAtc2xpZGVzQmVmb3JlO1xuICAgICAgaWYgKGNlbnRlcmVkU2xpZGVzKSBvZmZzZXQgKz0gc3dpcGVyLnNsaWRlc0dyaWRbMF07XG4gICAgfVxuICAgIE9iamVjdC5hc3NpZ24oc3dpcGVyLnZpcnR1YWwsIHtcbiAgICAgIGZyb20sXG4gICAgICB0byxcbiAgICAgIG9mZnNldCxcbiAgICAgIHNsaWRlc0dyaWQ6IHN3aXBlci5zbGlkZXNHcmlkLFxuICAgICAgc2xpZGVzQmVmb3JlLFxuICAgICAgc2xpZGVzQWZ0ZXJcbiAgICB9KTtcbiAgICBmdW5jdGlvbiBvblJlbmRlcmVkKCkge1xuICAgICAgc3dpcGVyLnVwZGF0ZVNsaWRlcygpO1xuICAgICAgc3dpcGVyLnVwZGF0ZVByb2dyZXNzKCk7XG4gICAgICBzd2lwZXIudXBkYXRlU2xpZGVzQ2xhc3NlcygpO1xuICAgICAgZW1pdCgndmlydHVhbFVwZGF0ZScpO1xuICAgIH1cbiAgICBpZiAocHJldmlvdXNGcm9tID09PSBmcm9tICYmIHByZXZpb3VzVG8gPT09IHRvICYmICFmb3JjZSkge1xuICAgICAgaWYgKHN3aXBlci5zbGlkZXNHcmlkICE9PSBwcmV2aW91c1NsaWRlc0dyaWQgJiYgb2Zmc2V0ICE9PSBwcmV2aW91c09mZnNldCkge1xuICAgICAgICBzd2lwZXIuc2xpZGVzLmZvckVhY2goc2xpZGVFbCA9PiB7XG4gICAgICAgICAgc2xpZGVFbC5zdHlsZVtvZmZzZXRQcm9wXSA9IGAke29mZnNldCAtIE1hdGguYWJzKHN3aXBlci5jc3NPdmVyZmxvd0FkanVzdG1lbnQoKSl9cHhgO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHN3aXBlci51cGRhdGVQcm9ncmVzcygpO1xuICAgICAgZW1pdCgndmlydHVhbFVwZGF0ZScpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoc3dpcGVyLnBhcmFtcy52aXJ0dWFsLnJlbmRlckV4dGVybmFsKSB7XG4gICAgICBzd2lwZXIucGFyYW1zLnZpcnR1YWwucmVuZGVyRXh0ZXJuYWwuY2FsbChzd2lwZXIsIHtcbiAgICAgICAgb2Zmc2V0LFxuICAgICAgICBmcm9tLFxuICAgICAgICB0byxcbiAgICAgICAgc2xpZGVzOiBmdW5jdGlvbiBnZXRTbGlkZXMoKSB7XG4gICAgICAgICAgY29uc3Qgc2xpZGVzVG9SZW5kZXIgPSBbXTtcbiAgICAgICAgICBmb3IgKGxldCBpID0gZnJvbTsgaSA8PSB0bzsgaSArPSAxKSB7XG4gICAgICAgICAgICBzbGlkZXNUb1JlbmRlci5wdXNoKHNsaWRlc1tpXSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBzbGlkZXNUb1JlbmRlcjtcbiAgICAgICAgfSgpXG4gICAgICB9KTtcbiAgICAgIGlmIChzd2lwZXIucGFyYW1zLnZpcnR1YWwucmVuZGVyRXh0ZXJuYWxVcGRhdGUpIHtcbiAgICAgICAgb25SZW5kZXJlZCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZW1pdCgndmlydHVhbFVwZGF0ZScpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBwcmVwZW5kSW5kZXhlcyA9IFtdO1xuICAgIGNvbnN0IGFwcGVuZEluZGV4ZXMgPSBbXTtcbiAgICBjb25zdCBnZXRTbGlkZUluZGV4ID0gaW5kZXggPT4ge1xuICAgICAgbGV0IHNsaWRlSW5kZXggPSBpbmRleDtcbiAgICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgICAgc2xpZGVJbmRleCA9IHNsaWRlcy5sZW5ndGggKyBpbmRleDtcbiAgICAgIH0gZWxzZSBpZiAoc2xpZGVJbmRleCA+PSBzbGlkZXMubGVuZ3RoKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgICAgICBzbGlkZUluZGV4ID0gc2xpZGVJbmRleCAtIHNsaWRlcy5sZW5ndGg7XG4gICAgICB9XG4gICAgICByZXR1cm4gc2xpZGVJbmRleDtcbiAgICB9O1xuICAgIGlmIChmb3JjZSkge1xuICAgICAgc3dpcGVyLnNsaWRlcy5maWx0ZXIoZWwgPT4gZWwubWF0Y2hlcyhgLiR7c3dpcGVyLnBhcmFtcy5zbGlkZUNsYXNzfSwgc3dpcGVyLXNsaWRlYCkpLmZvckVhY2goc2xpZGVFbCA9PiB7XG4gICAgICAgIHNsaWRlRWwucmVtb3ZlKCk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChsZXQgaSA9IHByZXZpb3VzRnJvbTsgaSA8PSBwcmV2aW91c1RvOyBpICs9IDEpIHtcbiAgICAgICAgaWYgKGkgPCBmcm9tIHx8IGkgPiB0bykge1xuICAgICAgICAgIGNvbnN0IHNsaWRlSW5kZXggPSBnZXRTbGlkZUluZGV4KGkpO1xuICAgICAgICAgIHN3aXBlci5zbGlkZXMuZmlsdGVyKGVsID0+IGVsLm1hdGNoZXMoYC4ke3N3aXBlci5wYXJhbXMuc2xpZGVDbGFzc31bZGF0YS1zd2lwZXItc2xpZGUtaW5kZXg9XCIke3NsaWRlSW5kZXh9XCJdLCBzd2lwZXItc2xpZGVbZGF0YS1zd2lwZXItc2xpZGUtaW5kZXg9XCIke3NsaWRlSW5kZXh9XCJdYCkpLmZvckVhY2goc2xpZGVFbCA9PiB7XG4gICAgICAgICAgICBzbGlkZUVsLnJlbW92ZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGxvb3BGcm9tID0gaXNMb29wID8gLXNsaWRlcy5sZW5ndGggOiAwO1xuICAgIGNvbnN0IGxvb3BUbyA9IGlzTG9vcCA/IHNsaWRlcy5sZW5ndGggKiAyIDogc2xpZGVzLmxlbmd0aDtcbiAgICBmb3IgKGxldCBpID0gbG9vcEZyb207IGkgPCBsb29wVG87IGkgKz0gMSkge1xuICAgICAgaWYgKGkgPj0gZnJvbSAmJiBpIDw9IHRvKSB7XG4gICAgICAgIGNvbnN0IHNsaWRlSW5kZXggPSBnZXRTbGlkZUluZGV4KGkpO1xuICAgICAgICBpZiAodHlwZW9mIHByZXZpb3VzVG8gPT09ICd1bmRlZmluZWQnIHx8IGZvcmNlKSB7XG4gICAgICAgICAgYXBwZW5kSW5kZXhlcy5wdXNoKHNsaWRlSW5kZXgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChpID4gcHJldmlvdXNUbykgYXBwZW5kSW5kZXhlcy5wdXNoKHNsaWRlSW5kZXgpO1xuICAgICAgICAgIGlmIChpIDwgcHJldmlvdXNGcm9tKSBwcmVwZW5kSW5kZXhlcy5wdXNoKHNsaWRlSW5kZXgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGFwcGVuZEluZGV4ZXMuZm9yRWFjaChpbmRleCA9PiB7XG4gICAgICBzd2lwZXIuc2xpZGVzRWwuYXBwZW5kKHJlbmRlclNsaWRlKHNsaWRlc1tpbmRleF0sIGluZGV4KSk7XG4gICAgfSk7XG4gICAgaWYgKGlzTG9vcCkge1xuICAgICAgZm9yIChsZXQgaSA9IHByZXBlbmRJbmRleGVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaSAtPSAxKSB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gcHJlcGVuZEluZGV4ZXNbaV07XG4gICAgICAgIHN3aXBlci5zbGlkZXNFbC5wcmVwZW5kKHJlbmRlclNsaWRlKHNsaWRlc1tpbmRleF0sIGluZGV4KSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHByZXBlbmRJbmRleGVzLnNvcnQoKGEsIGIpID0+IGIgLSBhKTtcbiAgICAgIHByZXBlbmRJbmRleGVzLmZvckVhY2goaW5kZXggPT4ge1xuICAgICAgICBzd2lwZXIuc2xpZGVzRWwucHJlcGVuZChyZW5kZXJTbGlkZShzbGlkZXNbaW5kZXhdLCBpbmRleCkpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGVsZW1lbnRDaGlsZHJlbihzd2lwZXIuc2xpZGVzRWwsICcuc3dpcGVyLXNsaWRlLCBzd2lwZXItc2xpZGUnKS5mb3JFYWNoKHNsaWRlRWwgPT4ge1xuICAgICAgc2xpZGVFbC5zdHlsZVtvZmZzZXRQcm9wXSA9IGAke29mZnNldCAtIE1hdGguYWJzKHN3aXBlci5jc3NPdmVyZmxvd0FkanVzdG1lbnQoKSl9cHhgO1xuICAgIH0pO1xuICAgIG9uUmVuZGVyZWQoKTtcbiAgfVxuICBmdW5jdGlvbiBhcHBlbmRTbGlkZShzbGlkZXMpIHtcbiAgICBpZiAodHlwZW9mIHNsaWRlcyA9PT0gJ29iamVjdCcgJiYgJ2xlbmd0aCcgaW4gc2xpZGVzKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNsaWRlcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICBpZiAoc2xpZGVzW2ldKSBzd2lwZXIudmlydHVhbC5zbGlkZXMucHVzaChzbGlkZXNbaV0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzd2lwZXIudmlydHVhbC5zbGlkZXMucHVzaChzbGlkZXMpO1xuICAgIH1cbiAgICB1cGRhdGUodHJ1ZSk7XG4gIH1cbiAgZnVuY3Rpb24gcHJlcGVuZFNsaWRlKHNsaWRlcykge1xuICAgIGNvbnN0IGFjdGl2ZUluZGV4ID0gc3dpcGVyLmFjdGl2ZUluZGV4O1xuICAgIGxldCBuZXdBY3RpdmVJbmRleCA9IGFjdGl2ZUluZGV4ICsgMTtcbiAgICBsZXQgbnVtYmVyT2ZOZXdTbGlkZXMgPSAxO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHNsaWRlcykpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2xpZGVzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIGlmIChzbGlkZXNbaV0pIHN3aXBlci52aXJ0dWFsLnNsaWRlcy51bnNoaWZ0KHNsaWRlc1tpXSk7XG4gICAgICB9XG4gICAgICBuZXdBY3RpdmVJbmRleCA9IGFjdGl2ZUluZGV4ICsgc2xpZGVzLmxlbmd0aDtcbiAgICAgIG51bWJlck9mTmV3U2xpZGVzID0gc2xpZGVzLmxlbmd0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgc3dpcGVyLnZpcnR1YWwuc2xpZGVzLnVuc2hpZnQoc2xpZGVzKTtcbiAgICB9XG4gICAgaWYgKHN3aXBlci5wYXJhbXMudmlydHVhbC5jYWNoZSkge1xuICAgICAgY29uc3QgY2FjaGUgPSBzd2lwZXIudmlydHVhbC5jYWNoZTtcbiAgICAgIGNvbnN0IG5ld0NhY2hlID0ge307XG4gICAgICBPYmplY3Qua2V5cyhjYWNoZSkuZm9yRWFjaChjYWNoZWRJbmRleCA9PiB7XG4gICAgICAgIGNvbnN0IGNhY2hlZEVsID0gY2FjaGVbY2FjaGVkSW5kZXhdO1xuICAgICAgICBjb25zdCBjYWNoZWRFbEluZGV4ID0gY2FjaGVkRWwuZ2V0QXR0cmlidXRlKCdkYXRhLXN3aXBlci1zbGlkZS1pbmRleCcpO1xuICAgICAgICBpZiAoY2FjaGVkRWxJbmRleCkge1xuICAgICAgICAgIGNhY2hlZEVsLnNldEF0dHJpYnV0ZSgnZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgnLCBwYXJzZUludChjYWNoZWRFbEluZGV4LCAxMCkgKyBudW1iZXJPZk5ld1NsaWRlcyk7XG4gICAgICAgIH1cbiAgICAgICAgbmV3Q2FjaGVbcGFyc2VJbnQoY2FjaGVkSW5kZXgsIDEwKSArIG51bWJlck9mTmV3U2xpZGVzXSA9IGNhY2hlZEVsO1xuICAgICAgfSk7XG4gICAgICBzd2lwZXIudmlydHVhbC5jYWNoZSA9IG5ld0NhY2hlO1xuICAgIH1cbiAgICB1cGRhdGUodHJ1ZSk7XG4gICAgc3dpcGVyLnNsaWRlVG8obmV3QWN0aXZlSW5kZXgsIDApO1xuICB9XG4gIGZ1bmN0aW9uIHJlbW92ZVNsaWRlKHNsaWRlc0luZGV4ZXMpIHtcbiAgICBpZiAodHlwZW9mIHNsaWRlc0luZGV4ZXMgPT09ICd1bmRlZmluZWQnIHx8IHNsaWRlc0luZGV4ZXMgPT09IG51bGwpIHJldHVybjtcbiAgICBsZXQgYWN0aXZlSW5kZXggPSBzd2lwZXIuYWN0aXZlSW5kZXg7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc2xpZGVzSW5kZXhlcykpIHtcbiAgICAgIGZvciAobGV0IGkgPSBzbGlkZXNJbmRleGVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaSAtPSAxKSB7XG4gICAgICAgIGlmIChzd2lwZXIucGFyYW1zLnZpcnR1YWwuY2FjaGUpIHtcbiAgICAgICAgICBkZWxldGUgc3dpcGVyLnZpcnR1YWwuY2FjaGVbc2xpZGVzSW5kZXhlc1tpXV07XG4gICAgICAgICAgLy8gc2hpZnQgY2FjaGUgaW5kZXhlc1xuICAgICAgICAgIE9iamVjdC5rZXlzKHN3aXBlci52aXJ0dWFsLmNhY2hlKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICBpZiAoa2V5ID4gc2xpZGVzSW5kZXhlcykge1xuICAgICAgICAgICAgICBzd2lwZXIudmlydHVhbC5jYWNoZVtrZXkgLSAxXSA9IHN3aXBlci52aXJ0dWFsLmNhY2hlW2tleV07XG4gICAgICAgICAgICAgIHN3aXBlci52aXJ0dWFsLmNhY2hlW2tleSAtIDFdLnNldEF0dHJpYnV0ZSgnZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgnLCBrZXkgLSAxKTtcbiAgICAgICAgICAgICAgZGVsZXRlIHN3aXBlci52aXJ0dWFsLmNhY2hlW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgc3dpcGVyLnZpcnR1YWwuc2xpZGVzLnNwbGljZShzbGlkZXNJbmRleGVzW2ldLCAxKTtcbiAgICAgICAgaWYgKHNsaWRlc0luZGV4ZXNbaV0gPCBhY3RpdmVJbmRleCkgYWN0aXZlSW5kZXggLT0gMTtcbiAgICAgICAgYWN0aXZlSW5kZXggPSBNYXRoLm1heChhY3RpdmVJbmRleCwgMCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChzd2lwZXIucGFyYW1zLnZpcnR1YWwuY2FjaGUpIHtcbiAgICAgICAgZGVsZXRlIHN3aXBlci52aXJ0dWFsLmNhY2hlW3NsaWRlc0luZGV4ZXNdO1xuICAgICAgICAvLyBzaGlmdCBjYWNoZSBpbmRleGVzXG4gICAgICAgIE9iamVjdC5rZXlzKHN3aXBlci52aXJ0dWFsLmNhY2hlKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgaWYgKGtleSA+IHNsaWRlc0luZGV4ZXMpIHtcbiAgICAgICAgICAgIHN3aXBlci52aXJ0dWFsLmNhY2hlW2tleSAtIDFdID0gc3dpcGVyLnZpcnR1YWwuY2FjaGVba2V5XTtcbiAgICAgICAgICAgIHN3aXBlci52aXJ0dWFsLmNhY2hlW2tleSAtIDFdLnNldEF0dHJpYnV0ZSgnZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgnLCBrZXkgLSAxKTtcbiAgICAgICAgICAgIGRlbGV0ZSBzd2lwZXIudmlydHVhbC5jYWNoZVtrZXldO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBzd2lwZXIudmlydHVhbC5zbGlkZXMuc3BsaWNlKHNsaWRlc0luZGV4ZXMsIDEpO1xuICAgICAgaWYgKHNsaWRlc0luZGV4ZXMgPCBhY3RpdmVJbmRleCkgYWN0aXZlSW5kZXggLT0gMTtcbiAgICAgIGFjdGl2ZUluZGV4ID0gTWF0aC5tYXgoYWN0aXZlSW5kZXgsIDApO1xuICAgIH1cbiAgICB1cGRhdGUodHJ1ZSk7XG4gICAgc3dpcGVyLnNsaWRlVG8oYWN0aXZlSW5kZXgsIDApO1xuICB9XG4gIGZ1bmN0aW9uIHJlbW92ZUFsbFNsaWRlcygpIHtcbiAgICBzd2lwZXIudmlydHVhbC5zbGlkZXMgPSBbXTtcbiAgICBpZiAoc3dpcGVyLnBhcmFtcy52aXJ0dWFsLmNhY2hlKSB7XG4gICAgICBzd2lwZXIudmlydHVhbC5jYWNoZSA9IHt9O1xuICAgIH1cbiAgICB1cGRhdGUodHJ1ZSk7XG4gICAgc3dpcGVyLnNsaWRlVG8oMCwgMCk7XG4gIH1cbiAgb24oJ2JlZm9yZUluaXQnLCAoKSA9PiB7XG4gICAgaWYgKCFzd2lwZXIucGFyYW1zLnZpcnR1YWwuZW5hYmxlZCkgcmV0dXJuO1xuICAgIGxldCBkb21TbGlkZXNBc3NpZ25lZDtcbiAgICBpZiAodHlwZW9mIHN3aXBlci5wYXNzZWRQYXJhbXMudmlydHVhbC5zbGlkZXMgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBjb25zdCBzbGlkZXMgPSBbLi4uc3dpcGVyLnNsaWRlc0VsLmNoaWxkcmVuXS5maWx0ZXIoZWwgPT4gZWwubWF0Y2hlcyhgLiR7c3dpcGVyLnBhcmFtcy5zbGlkZUNsYXNzfSwgc3dpcGVyLXNsaWRlYCkpO1xuICAgICAgaWYgKHNsaWRlcyAmJiBzbGlkZXMubGVuZ3RoKSB7XG4gICAgICAgIHN3aXBlci52aXJ0dWFsLnNsaWRlcyA9IFsuLi5zbGlkZXNdO1xuICAgICAgICBkb21TbGlkZXNBc3NpZ25lZCA9IHRydWU7XG4gICAgICAgIHNsaWRlcy5mb3JFYWNoKChzbGlkZUVsLCBzbGlkZUluZGV4KSA9PiB7XG4gICAgICAgICAgc2xpZGVFbC5zZXRBdHRyaWJ1dGUoJ2RhdGEtc3dpcGVyLXNsaWRlLWluZGV4Jywgc2xpZGVJbmRleCk7XG4gICAgICAgICAgc3dpcGVyLnZpcnR1YWwuY2FjaGVbc2xpZGVJbmRleF0gPSBzbGlkZUVsO1xuICAgICAgICAgIHNsaWRlRWwucmVtb3ZlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIWRvbVNsaWRlc0Fzc2lnbmVkKSB7XG4gICAgICBzd2lwZXIudmlydHVhbC5zbGlkZXMgPSBzd2lwZXIucGFyYW1zLnZpcnR1YWwuc2xpZGVzO1xuICAgIH1cbiAgICBzd2lwZXIuY2xhc3NOYW1lcy5wdXNoKGAke3N3aXBlci5wYXJhbXMuY29udGFpbmVyTW9kaWZpZXJDbGFzc312aXJ0dWFsYCk7XG4gICAgc3dpcGVyLnBhcmFtcy53YXRjaFNsaWRlc1Byb2dyZXNzID0gdHJ1ZTtcbiAgICBzd2lwZXIub3JpZ2luYWxQYXJhbXMud2F0Y2hTbGlkZXNQcm9ncmVzcyA9IHRydWU7XG4gICAgdXBkYXRlKGZhbHNlLCB0cnVlKTtcbiAgfSk7XG4gIG9uKCdzZXRUcmFuc2xhdGUnLCAoKSA9PiB7XG4gICAgaWYgKCFzd2lwZXIucGFyYW1zLnZpcnR1YWwuZW5hYmxlZCkgcmV0dXJuO1xuICAgIGlmIChzd2lwZXIucGFyYW1zLmNzc01vZGUgJiYgIXN3aXBlci5faW1tZWRpYXRlVmlydHVhbCkge1xuICAgICAgY2xlYXJUaW1lb3V0KGNzc01vZGVUaW1lb3V0KTtcbiAgICAgIGNzc01vZGVUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHVwZGF0ZSgpO1xuICAgICAgfSwgMTAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdXBkYXRlKCk7XG4gICAgfVxuICB9KTtcbiAgb24oJ2luaXQgdXBkYXRlIHJlc2l6ZScsICgpID0+IHtcbiAgICBpZiAoIXN3aXBlci5wYXJhbXMudmlydHVhbC5lbmFibGVkKSByZXR1cm47XG4gICAgaWYgKHN3aXBlci5wYXJhbXMuY3NzTW9kZSkge1xuICAgICAgc2V0Q1NTUHJvcGVydHkoc3dpcGVyLndyYXBwZXJFbCwgJy0tc3dpcGVyLXZpcnR1YWwtc2l6ZScsIGAke3N3aXBlci52aXJ0dWFsU2l6ZX1weGApO1xuICAgIH1cbiAgfSk7XG4gIE9iamVjdC5hc3NpZ24oc3dpcGVyLnZpcnR1YWwsIHtcbiAgICBhcHBlbmRTbGlkZSxcbiAgICBwcmVwZW5kU2xpZGUsXG4gICAgcmVtb3ZlU2xpZGUsXG4gICAgcmVtb3ZlQWxsU2xpZGVzLFxuICAgIHVwZGF0ZVxuICB9KTtcbn1cblxuZXhwb3J0IHsgVmlydHVhbCBhcyBkZWZhdWx0IH07XG4i
vendor: 4,087 bytes, lines 4931-5057
4931XSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9
4932//# sourceURL=webpack-internal:///../node_modules/swiper/modules/virtual.mjs
4933
4934}`)},"../node_modules/swiper/modules/zoom.mjs"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval(`{__webpack_require__.r(__webpack_exports__);
4935/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4936/* harmony export */   "default": () => (/* binding */ Zoom)
4937/* harmony export */ });
4938/* harmony import */ var _shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/ssr-window.esm.mjs */ "../node_modules/swiper/shared/ssr-window.esm.mjs");
4939/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "../node_modules/swiper/shared/utils.mjs");
4940
4941
4942
4943function Zoom(_ref) {
4944  let {
4945    swiper,
4946    extendParams,
4947    on,
4948    emit
4949  } = _ref;
4950  const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
4951  extendParams({
4952    zoom: {
4953      enabled: false,
4954      limitToOriginalSize: false,
4955      maxRatio: 3,
4956      minRatio: 1,
4957      panOnMouseMove: false,
4958      toggle: true,
4959      containerClass: 'swiper-zoom-container',
4960      zoomedSlideClass: 'swiper-slide-zoomed'
4961    }
4962  });
4963  swiper.zoom = {
4964    enabled: false
4965  };
4966  let currentScale = 1;
4967  let isScaling = false;
4968  let isPanningWithMouse = false;
4969  let mousePanStart = {
4970    x: 0,
4971    y: 0
4972  };
4973  const mousePanSensitivity = -3; // Negative to invert pan direction
4974  let fakeGestureTouched;
4975  let fakeGestureMoved;
4976  const evCache = [];
4977  const gesture = {
4978    originX: 0,
4979    originY: 0,
4980    slideEl: undefined,
4981    slideWidth: undefined,
4982    slideHeight: undefined,
4983    imageEl: undefined,
4984    imageWrapEl: undefined,
4985    maxRatio: 3
4986  };
4987  const image = {
4988    isTouched: undefined,
4989    isMoved: undefined,
4990    currentX: undefined,
4991    currentY: undefined,
4992    minX: undefined,
4993    minY: undefined,
4994    maxX: undefined,
4995    maxY: undefined,
4996    width: undefined,
4997    height: undefined,
4998    startX: undefined,
4999    startY: undefined,
5000    touchesStart: {},
5001    touchesCurrent: {}
5002  };
5003  const velocity = {
5004    x: undefined,
5005    y: undefined,
5006    prevPositionX: undefined,
5007    prevPositionY: undefined,
5008    prevTime: undefined
5009  };
5010  let scale = 1;
5011  Object.defineProperty(swiper.zoom, 'scale', {
5012    get() {
5013      return scale;
5014    },
5015    set(value) {
5016      if (scale !== value) {
5017        const imageEl = gesture.imageEl;
5018        const slideEl = gesture.slideEl;
5019        emit('zoomChange', value, imageEl, slideEl);
5020      }
5021      scale = value;
5022    }
5023  });
5024  function getDistanceBetweenTouches() {
5025    if (evCache.length < 2) return 1;
5026    const x1 = evCache[0].pageX;
5027    const y1 = evCache[0].pageY;
5028    const x2 = evCache[1].pageX;
5029    const y2 = evCache[1].pageY;
5030    const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);
5031    return distance;
5032  }
5033  function getMaxRatio() {
5034    const params = swiper.params.zoom;
5035    const maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;
5036    if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) {
5037      const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth;
5038      return Math.min(imageMaxRatio, maxRatio);
5039    }
5040    return maxRatio;
5041  }
5042  function getScaleOrigin() {
5043    if (evCache.length < 2) return {
5044      x: null,
5045      y: null
5046    };
5047    const box = gesture.imageEl.getBoundingClientRect();
5048    return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale];
5049  }
5050  function getSlideSelector() {
5051    return swiper.isElement ? \`swiper-slide\` : \`.\${swiper.params.slideClass}\`;
5052  }
5053  function eventWithinSlide(e) {
5054    const slideSelector = getSlideSelector();
5055    if (e.target.matches(slideSelector)) return true;
5056    if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true;
5057    return false;
5058  }
5059  function eventWithinZoomContainer(e) {
5060    const selector = \`.\${swiper.params.zoom.containerClass}\`;
5061    if (e.target.matches(selector)) return true;
5062    if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true;
5063    return false;
5064  }
5065
5066  // Events
5067  function onGestureStart(e) {
5068    if (e.pointerType === 'mouse') {
5069      evCache.splice(0, evCache.length);
5070    }
5071    if (!eventWithinSlide(e)) return;
5072    const params = swiper.params.zoom;
5073    fakeGestureTouched = false;
5074    fakeGestureMoved = false;
5075    evCache.push(e);
5076    if (evCache.length < 2) {
5077      return;
5078    }
5079    fakeGestureTouched = true;
5080    gesture.scaleStart = getDistanceBetweenTouches();
5081    if (!gesture.slideEl) {
5082      gesture.slideEl = e.target.closest(\`.\${swiper.params.slideClass}, swiper-slide\`);
5083      if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex];
5084      let imageEl = gesture.slideEl.querySelector(\`.\${params.containerClass}\`);
5085      if (imageEl) {
5086        imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];
5087      }
5088      gesture.imageEl = imageEl;
5089      if (imageEl) {
5090        gesture.imageWrapEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.b)(gesture.imageEl, \`.\${params.containerClass}\`)[0];
5091      } else {
5092        gesture.imageWrapEl = undefined;
5093      }
5094      if (!gesture.imageWrapEl) {
5095        gesture.imageEl = undefined;
5096        return;
5097      }
5098      gesture.maxRatio = getMaxRatio();
5099    }
5100    if (gesture.imageEl) {
5101      const [originX, originY] = getScaleOrigin();
5102      gesture.originX = originX;
5103      gesture.originY = originY;
5104      gesture.imageEl.style.transitionDuration = '0ms';
5105    }
5106    isScaling = true;
5107  }
5108  function onGestureChange(e) {
5109    if (!eventWithinSlide(e)) return;
5110    const params = swiper.params.zoom;
5111    const zoom = swiper.zoom;
5112    const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);
5113    if (pointerIndex >= 0) evCache[pointerIndex] = e;
5114    if (evCache.length < 2) {
5115      return;
5116    }
5117    fakeGestureMoved = true;
5118    gesture.scaleMove = getDistanceBetweenTouches();
5119    if (!gesture.imageEl) {
5120      return;
5121    }
5122    zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;
5123    if (zoom.scale > gesture.maxRatio) {
5124      zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;
5125    }
5126    if (zoom.scale < params.minRatio) {
5127      zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;
5128    }
5129    gesture.imageEl.style.transform = \`translate3d(0,0,0) scale(\${zoom.scale})\`;
5130  }
5131  function onGestureEnd(e) {
5132    if (!eventWithinSlide(e)) return;
5133    if (e.pointerType === 'mouse' && e.type === 'pointerout') return;
5134    const params = swiper.params.zoom;
5135    const zoom = swiper.zoom;
5136    const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);
5137    if (pointerIndex >= 0) evCache.splice(pointerIndex, 1);
5138    if (!fakeGestureTouched || !fakeGestureMoved) {
5139      return;
5140    }
5141    fakeGestureTouched = false;
5142    fakeGestureMoved = false;
5143    if (!gesture.imageEl) return;
5144    zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);
5145    gesture.imageEl.style.transitionDuration = \`\${swiper.params.speed}ms\`;
5146    gesture.imageEl.style.transform = \`translate3d(0,0,0) scale(\${zoom.scale})\`;
5147    currentScale = zoom.scale;
5148    isScaling = false;
5149    if (zoom.scale > 1 && gesture.slideEl) {
5150      gesture.slideEl.classList.add(\`\${params.zoomedSlideClass}\`);
5151    } else if (zoom.scale <= 1 && gesture.slideEl) {
5152      gesture.slideEl.classList.remove(\`\${params.zoomedSlideClass}\`);
5153    }
5154    if (zoom.scale === 1) {
5155      gesture.originX = 0;
5156      gesture.originY = 0;
5157      gesture.slideEl = undefined;
5158    }
5159  }
5160  let allowTouchMoveTimeout;
5161  function allowTouchMove() {
5162    swiper.touchEventsData.preventTouchMoveFromPointerMove = false;
5163  }
5164  function preventTouchMove() {
5165    clearTimeout(allowTouchMoveTimeout);
5166    swiper.touchEventsData.preventTouchMoveFromPointerMove = true;
5167    allowTouchMoveTimeout = setTimeout(() => {
5168      if (swiper.destroyed) return;
5169      allowTouchMove();
5170    });
5171  }
5172  function onTouchStart(e) {
5173    const device = swiper.device;
5174    if (!gesture.imageEl) return;
5175    if (image.isTouched) return;
5176    if (device.android && e.cancelable) e.preventDefault();
5177    image.isTouched = true;
vendor: 4,747 bytes, lines 5178-5278
5178    const event = evCache.length > 0 ? evCache[0] : e;
5179    image.touchesStart.x = event.pageX;
5180    image.touchesStart.y = event.pageY;
5181  }
5182  function onTouchMove(e) {
5183    const isMouseEvent = e.pointerType === 'mouse';
5184    const isMousePan = isMouseEvent && swiper.params.zoom.panOnMouseMove;
5185    if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) {
5186      return;
5187    }
5188    const zoom = swiper.zoom;
5189    if (!gesture.imageEl) {
5190      return;
5191    }
5192    if (!image.isTouched || !gesture.slideEl) {
5193      if (isMousePan) onMouseMove(e);
5194      return;
5195    }
5196    if (isMousePan) {
5197      onMouseMove(e);
5198      return;
5199    }
5200    if (!image.isMoved) {
5201      image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;
5202      image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;
5203      image.startX = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.k)(gesture.imageWrapEl, 'x') || 0;
5204      image.startY = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.k)(gesture.imageWrapEl, 'y') || 0;
5205      gesture.slideWidth = gesture.slideEl.offsetWidth;
5206      gesture.slideHeight = gesture.slideEl.offsetHeight;
5207      gesture.imageWrapEl.style.transitionDuration = '0ms';
5208    }
5209    // Define if we need image drag
5210    const scaledWidth = image.width * zoom.scale;
5211    const scaledHeight = image.height * zoom.scale;
5212    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);
5213    image.maxX = -image.minX;
5214    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);
5215    image.maxY = -image.minY;
5216    image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX;
5217    image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY;
5218    const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y));
5219    if (touchesDiff > 5) {
5220      swiper.allowClick = false;
5221    }
5222    if (!image.isMoved && !isScaling) {
5223      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)) {
5224        image.isTouched = false;
5225        allowTouchMove();
5226        return;
5227      }
5228      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)) {
5229        image.isTouched = false;
5230        allowTouchMove();
5231        return;
5232      }
5233    }
5234    if (e.cancelable) {
5235      e.preventDefault();
5236    }
5237    e.stopPropagation();
5238    preventTouchMove();
5239    image.isMoved = true;
5240    const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio);
5241    const {
5242      originX,
5243      originY
5244    } = gesture;
5245    image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2);
5246    image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2);
5247    if (image.currentX < image.minX) {
5248      image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;
5249    }
5250    if (image.currentX > image.maxX) {
5251      image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;
5252    }
5253    if (image.currentY < image.minY) {
5254      image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;
5255    }
5256    if (image.currentY > image.maxY) {
5257      image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;
5258    }
5259
5260    // Velocity
5261    if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;
5262    if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;
5263    if (!velocity.prevTime) velocity.prevTime = Date.now();
5264    velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;
5265    velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;
5266    if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;
5267    if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;
5268    velocity.prevPositionX = image.touchesCurrent.x;
5269    velocity.prevPositionY = image.touchesCurrent.y;
5270    velocity.prevTime = Date.now();
5271    gesture.imageWrapEl.style.transform = \`translate3d(\${image.currentX}px, \${image.currentY}px,0)\`;
5272  }
5273  function onTouchEnd() {
5274    const zoom = swiper.zoom;
5275    evCache.length = 0;
5276    if (!gesture.imageEl) return;
5277    if (!image.isTouched || !image.isMoved) {
5278      image.isTouched = false;
vendor: 5,206 bytes, lines 5279-5394
5279      image.isMoved = false;
5280      return;
5281    }
5282    image.isTouched = false;
5283    image.isMoved = false;
5284    let momentumDurationX = 300;
5285    let momentumDurationY = 300;
5286    const momentumDistanceX = velocity.x * momentumDurationX;
5287    const newPositionX = image.currentX + momentumDistanceX;
5288    const momentumDistanceY = velocity.y * momentumDurationY;
5289    const newPositionY = image.currentY + momentumDistanceY;
5290
5291    // Fix duration
5292    if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);
5293    if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);
5294    const momentumDuration = Math.max(momentumDurationX, momentumDurationY);
5295    image.currentX = newPositionX;
5296    image.currentY = newPositionY;
5297    // Define if we need image drag
5298    const scaledWidth = image.width * zoom.scale;
5299    const scaledHeight = image.height * zoom.scale;
5300    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);
5301    image.maxX = -image.minX;
5302    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);
5303    image.maxY = -image.minY;
5304    image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);
5305    image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);
5306    gesture.imageWrapEl.style.transitionDuration = \`\${momentumDuration}ms\`;
5307    gesture.imageWrapEl.style.transform = \`translate3d(\${image.currentX}px, \${image.currentY}px,0)\`;
5308  }
5309  function onTransitionEnd() {
5310    const zoom = swiper.zoom;
5311    if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) {
5312      if (gesture.imageEl) {
5313        gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';
5314      }
5315      if (gesture.imageWrapEl) {
5316        gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';
5317      }
5318      gesture.slideEl.classList.remove(\`\${swiper.params.zoom.zoomedSlideClass}\`);
5319      zoom.scale = 1;
5320      currentScale = 1;
5321      gesture.slideEl = undefined;
5322      gesture.imageEl = undefined;
5323      gesture.imageWrapEl = undefined;
5324      gesture.originX = 0;
5325      gesture.originY = 0;
5326    }
5327  }
5328  function onMouseMove(e) {
5329    // Only pan if zoomed in and mouse panning is enabled
5330    if (currentScale <= 1 || !gesture.imageWrapEl) return;
5331    if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return;
5332    const currentTransform = window.getComputedStyle(gesture.imageWrapEl).transform;
5333    const matrix = new window.DOMMatrix(currentTransform);
5334    if (!isPanningWithMouse) {
5335      isPanningWithMouse = true;
5336      mousePanStart.x = e.clientX;
5337      mousePanStart.y = e.clientY;
5338      image.startX = matrix.e;
5339      image.startY = matrix.f;
5340      image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;
5341      image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;
5342      gesture.slideWidth = gesture.slideEl.offsetWidth;
5343      gesture.slideHeight = gesture.slideEl.offsetHeight;
5344      return;
5345    }
5346    const deltaX = (e.clientX - mousePanStart.x) * mousePanSensitivity;
5347    const deltaY = (e.clientY - mousePanStart.y) * mousePanSensitivity;
5348    const scaledWidth = image.width * currentScale;
5349    const scaledHeight = image.height * currentScale;
5350    const slideWidth = gesture.slideWidth;
5351    const slideHeight = gesture.slideHeight;
5352    const minX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);
5353    const maxX = -minX;
5354    const minY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);
5355    const maxY = -minY;
5356    const newX = Math.max(Math.min(image.startX + deltaX, maxX), minX);
5357    const newY = Math.max(Math.min(image.startY + deltaY, maxY), minY);
5358    gesture.imageWrapEl.style.transitionDuration = '0ms';
5359    gesture.imageWrapEl.style.transform = \`translate3d(\${newX}px, \${newY}px, 0)\`;
5360    mousePanStart.x = e.clientX;
5361    mousePanStart.y = e.clientY;
5362    image.startX = newX;
5363    image.startY = newY;
5364    image.currentX = newX;
5365    image.currentY = newY;
5366  }
5367  function zoomIn(e) {
5368    const zoom = swiper.zoom;
5369    const params = swiper.params.zoom;
5370    if (!gesture.slideEl) {
5371      if (e && e.target) {
5372        gesture.slideEl = e.target.closest(\`.\${swiper.params.slideClass}, swiper-slide\`);
5373      }
5374      if (!gesture.slideEl) {
5375        if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
5376          gesture.slideEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(swiper.slidesEl, \`.\${swiper.params.slideActiveClass}\`)[0];
5377        } else {
5378          gesture.slideEl = swiper.slides[swiper.activeIndex];
5379        }
5380      }
5381      let imageEl = gesture.slideEl.querySelector(\`.\${params.containerClass}\`);
5382      if (imageEl) {
5383        imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];
5384      }
5385      gesture.imageEl = imageEl;
5386      if (imageEl) {
5387        gesture.imageWrapEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.b)(gesture.imageEl, \`.\${params.containerClass}\`)[0];
5388      } else {
5389        gesture.imageWrapEl = undefined;
5390      }
5391    }
5392    if (!gesture.imageEl || !gesture.imageWrapEl) return;
5393    if (swiper.params.cssMode) {
5394      swiper.wrapperEl.style.overflow = 'hidden';
5395      swiper.wrapperEl.style.touchAction = 'none';
5396    }
5397    gesture.slideEl.classList.add(\`\${params.zoomedSlideClass}\`);
5398    let touchX;
5399    let touchY;
5400    let offsetX;
5401    let offsetY;
5402    let diffX;
5403    let diffY;
5404    let translateX;
5405    let translateY;
5406    let imageWidth;
5407    let imageHeight;
5408    let scaledWidth;
5409    let scaledHeight;
5410    let translateMinX;
5411    let translateMinY;
5412    let translateMaxX;
5413    let translateMaxY;
5414    let slideWidth;
5415    let slideHeight;
5416    if (typeof image.touchesStart.x === 'undefined' && e) {
5417      touchX = e.pageX;
5418      touchY = e.pageY;
5419    } else {
5420      touchX = image.touchesStart.x;
5421      touchY = image.touchesStart.y;
5422    }
5423    const prevScale = currentScale;
5424    const forceZoomRatio = typeof e === 'number' ? e : null;
5425    if (currentScale === 1 && forceZoomRatio) {
5426      touchX = undefined;
5427      touchY = undefined;
5428      image.touchesStart.x = undefined;
5429      image.touchesStart.y = undefined;
5430    }
5431    const maxRatio = getMaxRatio();
5432    zoom.scale = forceZoomRatio || maxRatio;
5433    currentScale = forceZoomRatio || maxRatio;
5434    if (e && !(currentScale === 1 && forceZoomRatio)) {
5435      slideWidth = gesture.slideEl.offsetWidth;
5436      slideHeight = gesture.slideEl.offsetHeight;
5437      offsetX = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)(gesture.slideEl).left + window.scrollX;
5438      offsetY = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)(gesture.slideEl).top + window.scrollY;
5439      diffX = offsetX + slideWidth / 2 - touchX;
5440      diffY = offsetY + slideHeight / 2 - touchY;
5441      imageWidth = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;
5442      imageHeight = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;
5443      scaledWidth = imageWidth * zoom.scale;
5444      scaledHeight = imageHeight * zoom.scale;
5445      translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);
5446      translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);
5447      translateMaxX = -translateMinX;
5448      translateMaxY = -translateMinY;
5449      if (prevScale > 0 && forceZoomRatio && typeof image.currentX === 'number' && typeof image.currentY === 'number') {
5450        translateX = image.currentX * zoom.scale / prevScale;
5451        translateY = image.currentY * zoom.scale / prevScale;
5452      } else {
5453        translateX = diffX * zoom.scale;
5454        translateY = diffY * zoom.scale;
5455      }
5456      if (translateX < translateMinX) {
5457        translateX = translateMinX;
5458      }
5459      if (translateX > translateMaxX) {
5460        translateX = translateMaxX;
5461      }
5462      if (translateY < translateMinY) {
5463        translateY = translateMinY;
5464      }
5465      if (translateY > translateMaxY) {
5466        translateY = translateMaxY;
5467      }
5468    } else {
5469      translateX = 0;
5470      translateY = 0;
5471    }
5472    if (forceZoomRatio && zoom.scale === 1) {
5473      gesture.originX = 0;
5474      gesture.originY = 0;
5475    }
5476    image.currentX = translateX;
5477    image.currentY = translateY;
5478    gesture.imageWrapEl.style.transitionDuration = '300ms';
5479    gesture.imageWrapEl.style.transform = \`translate3d(\${translateX}px, \${translateY}px,0)\`;
5480    gesture.imageEl.style.transitionDuration = '300ms';
5481    gesture.imageEl.style.transform = \`translate3d(0,0,0) scale(\${zoom.scale})\`;
5482  }
5483  function zoomOut() {
5484    const zoom = swiper.zoom;
5485    const params = swiper.params.zoom;
5486    if (!gesture.slideEl) {
5487      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
5488        gesture.slideEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(swiper.slidesEl, \`.\${swiper.params.slideActiveClass}\`)[0];
5489      } else {
5490        gesture.slideEl = swiper.slides[swiper.activeIndex];
5491      }
5492      let imageEl = gesture.slideEl.querySelector(\`.\${params.containerClass}\`);
5493      if (imageEl) {
5494        imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];
5495      }
5496      gesture.imageEl = imageEl;
5497      if (imageEl) {
5498        gesture.imageWrapEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.b)(gesture.imageEl, \`.\${params.containerClass}\`)[0];
5499      } else {
5500        gesture.imageWrapEl = undefined;
5501      }
5502    }
5503    if (!gesture.imageEl || !gesture.imageWrapEl) return;
5504    if (swiper.params.cssMode) {
5505      swiper.wrapperEl.style.overflow = '';
5506      swiper.wrapperEl.style.touchAction = '';
5507    }
5508    zoom.scale = 1;
5509    currentScale = 1;
5510    image.currentX = undefined;
5511    image.currentY = undefined;
5512    image.touchesStart.x = undefined;
5513    image.touchesStart.y = undefined;
5514    gesture.imageWrapEl.style.transitionDuration = '300ms';
5515    gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';
5516    gesture.imageEl.style.transitionDuration = '300ms';
5517    gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';
5518    gesture.slideEl.classList.remove(\`\${params.zoomedSlideClass}\`);
5519    gesture.slideEl = undefined;
5520    gesture.originX = 0;
5521    gesture.originY = 0;
5522    if (swiper.params.zoom.panOnMouseMove) {
5523      mousePanStart = {
5524        x: 0,
5525        y: 0
5526      };
5527      if (isPanningWithMouse) {
5528        isPanningWithMouse = false;
5529        image.startX = 0;
5530        image.startY = 0;
5531      }
5532    }
5533  }
5534
5535  // Toggle Zoom
5536  function zoomToggle(e) {
5537    const zoom = swiper.zoom;
5538    if (zoom.scale && zoom.scale !== 1) {
5539      // Zoom Out
5540      zoomOut();
5541    } else {
5542      // Zoom In
5543      zoomIn(e);
5544    }
5545  }
5546  function getListeners() {
5547    const passiveListener = swiper.params.passiveListeners ? {
5548      passive: true,
5549      capture: false
5550    } : false;
5551    const activeListenerWithCapture = swiper.params.passiveListeners ? {
5552      passive: false,
5553      capture: true
5554    } : true;
5555    return {
5556      passiveListener,
5557      activeListenerWithCapture
5558    };
5559  }
5560
5561  // Attach/Detach Events
5562  function enable() {
5563    const zoom = swiper.zoom;
5564    if (zoom.enabled) return;
5565    zoom.enabled = true;
5566    const {
5567      passiveListener,
5568      activeListenerWithCapture
5569    } = getListeners();
5570
5571    // Scale image
5572    swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener);
5573    swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture);
5574    ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {
5575      swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener);
5576    });
5577
5578    // Move image
5579    swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture);
5580  }
5581  function disable() {
5582    const zoom = swiper.zoom;
5583    if (!zoom.enabled) return;
5584    zoom.enabled = false;
5585    const {
5586      passiveListener,
5587      activeListenerWithCapture
5588    } = getListeners();
5589
5590    // Scale image
5591    swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener);
5592    swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture);
5593    ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {
5594      swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener);
5595    });
5596
5597    // Move image
5598    swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture);
5599  }
5600  on('init', () => {
5601    if (swiper.params.zoom.enabled) {
5602      enable();
5603    }
5604  });
5605  on('destroy', () => {
5606    disable();
5607  });
5608  on('touchStart', (_s, e) => {
5609    if (!swiper.zoom.enabled) return;
5610    onTouchStart(e);
5611  });
5612  on('touchEnd', (_s, e) => {
5613    if (!swiper.zoom.enabled) return;
5614    onTouchEnd();
5615  });
5616  on('doubleTap', (_s, e) => {
5617    if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {
5618      zoomToggle(e);
5619    }
5620  });
5621  on('transitionEnd', () => {
5622    if (swiper.zoom.enabled && swiper.params.zoom.enabled) {
5623      onTransitionEnd();
5624    }
5625  });
5626  on('slideChange', () => {
5627    if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {
5628      onTransitionEnd();
5629    }
5630  });
5631  Object.assign(swiper.zoom, {
5632    enable,
5633    disable,
5634    in: zoomIn,
5635    out: zoomOut,
5636    toggle: zoomToggle
5637  });
5638}
5639
5640
5641//# sourceURL=[module]
5642//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9tb2R1bGVzL3pvb20ubWpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUE4RDtBQUN5RDs7QUFFdkg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLGlCQUFpQiw2REFBUztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEd
5642BQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtREFBbUQseUJBQXlCO0FBQzVFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsa0NBQWtDO0FBQzNEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDLHlCQUF5QjtBQUN0RTtBQUNBLHNEQUFzRCxzQkFBc0I7QUFDNUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QixvREFBYyxzQkFBc0Isc0JBQXNCO0FBQ3hGLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtFQUFrRSxXQUFXO0FBQzdFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtEQUFrRCxvQkFBb0I7QUFDdEUsa0VBQWtFLFdBQVc7QUFDN0U7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDLHdCQUF3QjtB
5642QUMvRCxNQUFNO0FBQ04sMENBQTBDLHdCQUF3QjtBQUNsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsb0RBQVk7QUFDakMscUJBQXFCLG9EQUFZO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5REFBeUQsZUFBZSxNQUFNLGVBQWU7QUFDN0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNEQUFzRCxpQkFBaUI7QUFDdkUseURBQXlELGVBQWUsTUFBTSxlQUFlO0FBQzdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMENBQTBDLG9DQUFvQztBQUM5RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlEQUF5RCxLQUFLLE1BQU0sS0FBSztBQUN6RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0MseUJBQXlCO0FBQ3hFO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixvREFBZSxzQkFBc0IsK0JBQStCO0FBQ2hHLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQSxzREFBc0Qsc0JBQXNCO0FBQzVFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsb0RBQWMsc0JBQXNCLHNCQUFzQjtBQUN4RixRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyx3QkFBd0I7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0Isb0RBQWE7QUFDN0IsZ0JBQWdCLG9EQUFhO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlEQUF5RCxXQUFXLE1BQU0sV0FBVztBQUNyRjtBQUNBLGtFQUFrRSxXQUFXO0FBQzdFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixvREFBZSxzQkFBc0IsK0JBQStCO0FBQzlGLFFBQVE7QUFDUjtBQUNBO0FBQ0Esc0RBQXNELHNCQUFzQjtBQUM1RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLG9EQUFjLHNCQUFzQixzQkFBc0I7QUFDeEYsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3Qyx3QkFBd0I7QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTs7QUFFTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUUyQiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvc3dpcGVyL21vZHVsZXMvem9vbS5tanM/ZGIzMSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhIGFzIGdldFdpbmRvdyB9IGZyb20gJy4uL3NoYXJlZC9zc3Itd2luZG93LmVzbS5tanMnO1xuaW1wb3J0IHsgZSBhcyBlbGVtZW50Q2hpbGRyZW4sIGIgYXMgZWxlbWVudFBhcmVudHMsIGQgYXMgZWxlbWVudE9mZnNldCwgayBhcyBnZXRUcmFuc2xhdGUgfSBmcm9tICcuLi9zaGFyZWQvdXRpbHMubWpzJztcblxuZnVuY3Rpb24gWm9vbShfcmVmKSB7XG4gIGxldCB7XG4gICAgc3dpcGVyLFxuICAgIGV4dGVuZFBhcmFtcyxcbiAgICBvbixcbiAgICBlbWl0XG4gIH0gPSBfcmVmO
vendor: 23,521 bytes, line 5642
56421xuICBjb25zdCB3aW5kb3cgPSBnZXRXaW5kb3coKTtcbiAgZXh0ZW5kUGFyYW1zKHtcbiAgICB6b29tOiB7XG4gICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICAgIGxpbWl0VG9PcmlnaW5hbFNpemU6IGZhbHNlLFxuICAgICAgbWF4UmF0aW86IDMsXG4gICAgICBtaW5SYXRpbzogMSxcbiAgICAgIHBhbk9uTW91c2VNb3ZlOiBmYWxzZSxcbiAgICAgIHRvZ2dsZTogdHJ1ZSxcbiAgICAgIGNvbnRhaW5lckNsYXNzOiAnc3dpcGVyLXpvb20tY29udGFpbmVyJyxcbiAgICAgIHpvb21lZFNsaWRlQ2xhc3M6ICdzd2lwZXItc2xpZGUtem9vbWVkJ1xuICAgIH1cbiAgfSk7XG4gIHN3aXBlci56b29tID0ge1xuICAgIGVuYWJsZWQ6IGZhbHNlXG4gIH07XG4gIGxldCBjdXJyZW50U2NhbGUgPSAxO1xuICBsZXQgaXNTY2FsaW5nID0gZmFsc2U7XG4gIGxldCBpc1Bhbm5pbmdXaXRoTW91c2UgPSBmYWxzZTtcbiAgbGV0IG1vdXNlUGFuU3RhcnQgPSB7XG4gICAgeDogMCxcbiAgICB5OiAwXG4gIH07XG4gIGNvbnN0IG1vdXNlUGFuU2Vuc2l0aXZpdHkgPSAtMzsgLy8gTmVnYXRpdmUgdG8gaW52ZXJ0IHBhbiBkaXJlY3Rpb25cbiAgbGV0IGZha2VHZXN0dXJlVG91Y2hlZDtcbiAgbGV0IGZha2VHZXN0dXJlTW92ZWQ7XG4gIGNvbnN0IGV2Q2FjaGUgPSBbXTtcbiAgY29uc3QgZ2VzdHVyZSA9IHtcbiAgICBvcmlnaW5YOiAwLFxuICAgIG9yaWdpblk6IDAsXG4gICAgc2xpZGVFbDogdW5kZWZpbmVkLFxuICAgIHNsaWRlV2lkdGg6IHVuZGVmaW5lZCxcbiAgICBzbGlkZUhlaWdodDogdW5kZWZpbmVkLFxuICAgIGltYWdlRWw6IHVuZGVmaW5lZCxcbiAgICBpbWFnZVdyYXBFbDogdW5kZWZpbmVkLFxuICAgIG1heFJhdGlvOiAzXG4gIH07XG4gIGNvbnN0IGltYWdlID0ge1xuICAgIGlzVG91Y2hlZDogdW5kZWZpbmVkLFxuICAgIGlzTW92ZWQ6IHVuZGVmaW5lZCxcbiAgICBjdXJyZW50WDogdW5kZWZpbmVkLFxuICAgIGN1cnJlbnRZOiB1bmRlZmluZWQsXG4gICAgbWluWDogdW5kZWZpbmVkLFxuICAgIG1pblk6IHVuZGVmaW5lZCxcbiAgICBtYXhYOiB1bmRlZmluZWQsXG4gICAgbWF4WTogdW5kZWZpbmVkLFxuICAgIHdpZHRoOiB1bmRlZmluZWQsXG4gICAgaGVpZ2h0OiB1bmRlZmluZWQsXG4gICAgc3RhcnRYOiB1bmRlZmluZWQsXG4gICAgc3RhcnRZOiB1bmRlZmluZWQsXG4gICAgdG91Y2hlc1N0YXJ0OiB7fSxcbiAgICB0b3VjaGVzQ3VycmVudDoge31cbiAgfTtcbiAgY29uc3QgdmVsb2NpdHkgPSB7XG4gICAgeDogdW5kZWZpbmVkLFxuICAgIHk6IHVuZGVmaW5lZCxcbiAgICBwcmV2UG9zaXRpb25YOiB1bmRlZmluZWQsXG4gICAgcHJldlBvc2l0aW9uWTogdW5kZWZpbmVkLFxuICAgIHByZXZUaW1lOiB1bmRlZmluZWRcbiAgfTtcbiAgbGV0IHNjYWxlID0gMTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHN3aXBlci56b29tLCAnc2NhbGUnLCB7XG4gICAgZ2V0KCkge1xuICAgICAgcmV0dXJuIHNjYWxlO1xuICAgIH0sXG4gICAgc2V0KHZhbHVlKSB7XG4gICAgICBpZiAoc2NhbGUgIT09IHZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGltYWdlRWwgPSBnZXN0dXJlLmltYWdlRWw7XG4gICAgICAgIGNvbnN0IHNsaWRlRWwgPSBnZXN0dXJlLnNsaWRlRWw7XG4gICAgICAgIGVtaXQoJ3pvb21DaGFuZ2UnLCB2YWx1ZSwgaW1hZ2VFbCwgc2xpZGVFbCk7XG4gICAgICB9XG4gICAgICBzY2FsZSA9IHZhbHVlO1xuICAgIH1cbiAgfSk7XG4gIGZ1bmN0aW9uIGdldERpc3RhbmNlQmV0d2VlblRvdWNoZXMoKSB7XG4gICAgaWYgKGV2Q2FjaGUubGVuZ3RoIDwgMikgcmV0dXJuIDE7XG4gICAgY29uc3QgeDEgPSBldkNhY2hlWzBdLnBhZ2VYO1xuICAgIGNvbnN0IHkxID0gZXZDYWNoZVswXS5wYWdlWTtcbiAgICBjb25zdCB4MiA9IGV2Q2FjaGVbMV0ucGFnZVg7XG4gICAgY29uc3QgeTIgPSBldkNhY2hlWzFdLnBhZ2VZO1xuICAgIGNvbnN0IGRpc3RhbmNlID0gTWF0aC5zcXJ0KCh4MiAtIHgxKSAqKiAyICsgKHkyIC0geTEpICoqIDIpO1xuICAgIHJldHVybiBkaXN0YW5jZTtcbiAgfVxuICBmdW5jdGlvbiBnZXRNYXhSYXRpbygpIHtcbiAgICBjb25zdCBwYXJhbXMgPSBzd2lwZXIucGFyYW1zLnpvb207XG4gICAgY29uc3QgbWF4UmF0aW8gPSBnZXN0dXJlLmltYWdlV3JhcEVsLmdldEF0dHJpYnV0ZSgnZGF0YS1zd2lwZXItem9vbScpIHx8IHBhcmFtcy5tYXhSYXRpbztcbiAgICBpZiAocGFyYW1zLmxpbWl0VG9PcmlnaW5hbFNpemUgJiYgZ2VzdHVyZS5pbWFnZUVsICYmIGdlc3R1cmUuaW1hZ2VFbC5uYXR1cmFsV2lkdGgpIHtcbiAgICAgIGNvbnN0IGltYWdlTWF4UmF0aW8gPSBnZXN0dXJlLmltYWdlRWwubmF0dXJhbFdpZHRoIC8gZ2VzdHVyZS5pbWFnZUVsLm9mZnNldFdpZHRoO1xuICAgICAgcmV0dXJuIE1hdGgubWluKGltYWdlTWF4UmF0aW8sIG1heFJhdGlvKTtcbiAgICB9XG4gICAgcmV0dXJuIG1heFJhdGlvO1xuICB9XG4gIGZ1bmN0aW9uIGdldFNjYWxlT3JpZ2luKCkge1xuICAgIGlmIChldkNhY2hlLmxlbmd0aCA8IDIpIHJldHVybiB7XG4gICAgICB4OiBudWxsLFxuICAgICAgeTogbnVsbFxuICAgIH07XG4gICAgY29uc3QgYm94ID0gZ2VzdHVyZS5pbWFnZUVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIHJldHVybiBbKGV2Q2FjaGVbMF0ucGFnZVggKyAoZXZDYWNoZVsxXS5wYWdlWCAtIGV2Q2FjaGVbMF0ucGFnZVgpIC8gMiAtIGJveC54IC0gd2luZG93LnNjcm9sbFgpIC8gY3VycmVudFNjYWxlLCAoZXZDYWNoZVswXS5wYWdlWSArIChldkNhY2hlWzFdLnBhZ2VZIC0gZXZDYWNoZVswXS5wYWdlWSkgLyAyIC0gYm94LnkgLSB3aW5kb3cuc2Nyb2xsWSkgLyBjdXJyZW50U2NhbGVdO1xuICB9XG4gIGZ1bmN0aW9uIGdldFNsaWRlU2VsZWN0b3IoKSB7XG4gICAgcmV0dXJuIHN3aXBlci5pc0VsZW1lbnQgPyBgc3dpcGVyLXNsaWRlYCA6IGAuJHtzd2lwZXIucGFyYW1zLnNsaWRlQ2xhc3N9YDtcbiAgfVxuICBmdW5jdGlvbiBldmVudFdpdGhpblNsaWRlKGUpIHtcbiAgICBjb25zdCBzbGlkZVNlbGVjdG9yID0gZ2V0U2xpZGVTZWxlY3RvcigpO1xuICAgIGlmIChlLnRhcmdldC5tYXRjaGVzKHNsaWRlU2VsZWN0b3IpKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoc3dpcGVyLnNsaWRlcy5maWx0ZXIoc2xpZGVFbCA9PiBzbGlkZUVsLmNvbnRhaW5zKGUudGFyZ2V0KSkubGVuZ3RoID4gMCkgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGZ1bmN0aW9uIGV2ZW50V2l0aGluWm9vbUNvbnRhaW5lcihlKSB7XG4gICAgY29uc3Qgc2VsZWN0b3IgPSBgLiR7c3dpcGVyLnBhcmFtcy56b29tLmNvbnRhaW5lckNsYXNzfWA7XG4gICAgaWYgKGUudGFyZ2V0Lm1hdGNoZXMoc2VsZWN0b3IpKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoWy4uLnN3aXBlci5ob3N0RWwucXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcildLmZpbHRlcihjb250YWluZXJFbCA9PiBjb250YWluZXJFbC5jb250YWlucyhlLnRhcmdldCkpLmxlbmd0aCA+IDApIHJldHVybiB0cnVlO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIEV2ZW50c1xuICBmdW5jdGlvbiBvbkdlc3R1cmVTdGFydChlKSB7XG4gICAgaWYgKGUucG9pbnRlclR5cGUgPT09ICdtb3VzZScpIHtcbiAgICAgIGV2Q2FjaGUuc3BsaWNlKDAsIGV2Q2FjaGUubGVuZ3RoKTtcbiAgICB9XG4gICAgaWYgKCFldmVudFdpdGhpblNsaWRlKGUpKSByZXR1cm47XG4gICAgY29uc3QgcGFyYW1zID0gc3dpcGVyLnBhcmFtcy56b29tO1xuICAgIGZha2VHZXN0dXJlVG91Y2hlZCA9IGZhbHNlO1xuICAgIGZha2VHZXN0dXJlTW92ZWQgPSBmYWxzZTtcbiAgICBldkNhY2hlLnB1c2goZSk7XG4gICAgaWYgKGV2Q2FjaGUubGVuZ3RoIDwgMikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmYWtlR2VzdHVyZVRvdWNoZWQgPSB0cnVlO1xuICAgIGdlc3R1cmUuc2NhbGVTdGFydCA9IGdldERpc3RhbmNlQmV0d2VlblRvdWNoZXMoKTtcbiAgICBpZiAoIWdlc3R1cmUuc2xpZGVFbCkge1xuICAgICAgZ2VzdHVyZS5zbGlkZUVsID0gZS50YXJnZXQuY2xvc2VzdChgLiR7c3dpcGVyLnBhcmFtcy5zbGlkZUNsYXNzfSwgc3dpcGVyLXNsaWRlYCk7XG4gICAgICBpZiAoIWdlc3R1cmUuc2xpZGVFbCkgZ2VzdHVyZS5zbGlkZUVsID0gc3dpcGVyLnNsaWRlc1tzd2lwZXIuYWN0aXZlSW5kZXhdO1xuICAgICAgbGV0IGltYWdlRWwgPSBnZXN0dXJlLnNsaWRlRWwucXVlcnlTZWxlY3RvcihgLiR7cGFyYW1zLmNvbnRhaW5lckNsYXNzfWApO1xuICAgICAgaWYgKGltYWdlRWwpIHtcbiAgICAgICAgaW1hZ2VFbCA9IGltYWdlRWwucXVlcnlTZWxlY3RvckFsbCgncGljdHVyZSwgaW1nLCBzdmcsIGNhbnZhcywgLnN3aXBlci16b29tLXRhcmdldCcpWzBdO1xuICAgICAgfVxuICAgICAgZ2VzdHVyZS5pbWFnZUVsID0gaW1hZ2VFbDtcbiAgICAgIGlmIChpbWFnZUVsKSB7XG4gICAgICAgIGdlc3R1cmUuaW1hZ2VXcmFwRWwgPSBlbGVtZW50UGFyZW50cyhnZXN0dXJlLmltYWdlRWwsIGAuJHtwYXJhbXMuY29udGFpbmVyQ2xhc3N9YClbMF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBnZXN0dXJlLmltYWdlV3JhcEVsID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgaWYgKCFnZXN0dXJlLmltYWdlV3JhcEVsKSB7XG4gICAgICAgIGdlc3R1cmUuaW1hZ2VFbCA9IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZ2VzdHVyZS5tYXhSYXRpbyA9IGdldE1heFJhdGlvKCk7XG4gICAgfVxuICAgIGlmIChnZXN0dXJlLmltYWdlRWwpIHtcbiAgICAgIGNvbnN0IFtvcmlnaW5YLCBvcmlnaW5ZXSA9IGdldFNjYWxlT3JpZ2luKCk7XG4gICAgICBnZXN0dXJlLm9yaWdpblggPSBvcmlnaW5YO1xuICAgICAgZ2VzdHVyZS5vcmlnaW5ZID0gb3JpZ2luWTtcbiAgICAgIGdlc3R1cmUuaW1hZ2VFbC5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gPSAnMG1zJztcbiAgICB9XG4gICAgaXNTY2FsaW5nID0gdHJ1ZTtcbiAgfVxuICBmdW5jdGlvbiBvbkdlc3R1cmVDaGFuZ2UoZSkge1xuICAgIGlmICghZXZlbnRXaXRoaW5TbGlkZShlKSkgcmV0dXJuO1xuICAgIGNvbnN0IHBhcmFtcyA9IHN3aXBlci5wYXJhbXMuem9vbTtcbiAgICBjb25zdCB6b29tID0gc3dpcGVyLnpvb207XG4gICAgY29uc3QgcG9pbnRlckluZGV4ID0gZXZDYWNoZS5maW5kSW5kZXgoY2FjaGVkRXYgPT4gY2FjaGVkRXYucG9pbnRlcklkID09PSBlLnBvaW50ZXJJZCk7XG4gICAgaWYgKHBvaW50ZXJJbmRleCA+PSAwKSBldkNhY2hlW3BvaW50ZXJJbmRleF0gPSBlO1xuICAgIGlmIChldkNhY2hlLmxlbmd0aCA8IDIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZmFrZUdlc3R1cmVNb3ZlZCA9IHRydWU7XG4gICAgZ2VzdHVyZS5zY2FsZU1vdmUgPSBnZXREaXN0YW5jZUJldHdlZW5Ub3VjaGVzKCk7XG4gICAgaWYgKCFnZXN0dXJlLmltYWdlRWwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgem9vbS5zY2FsZSA9IGdlc3R1cmUuc2NhbGVNb3ZlIC8gZ2VzdHVyZS5zY2FsZVN0YXJ0ICogY3VycmVudFNjYWxlO1xuICAgIGlmICh6b29tLnNjYWxlID4gZ2VzdHVyZS5tYXhSYXRpbykge1xuICAgICAgem9vbS5zY2FsZSA9IGdlc3R1cmUubWF4UmF0aW8gLSAxICsgKHpvb20uc2NhbGUgLSBnZXN0dXJlLm1heFJhdGlvICsgMSkgKiogMC41O1xuICAgIH1cbiAgICBpZiAoem9vbS5zY2FsZSA8IHBhcmFtcy5taW5SYXRpbykge1xuICAgICAgem9vbS5zY2FsZSA9IHBhcmFtcy5taW5SYXRpbyArIDEgLSAocGFyYW1zLm1pblJhdGlvIC0gem9vbS5zY2FsZSArIDEpICoqIDAuNTtcbiAgICB9XG4gICAgZ2VzdHVyZS5pbWFnZUVsLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGUzZCgwLDAsMCkgc2NhbGUoJHt6b29tLnNjYWxlfSlgO1xuICB9XG4gIGZ1bmN0aW9uIG9uR2VzdHVyZUVuZChlKSB7XG4gICAgaWYgKCFldmVudFdpdGhpblNsaWRlKGUpKSByZXR1cm47XG4gICAgaWYgKGUucG9pbnRlclR5cGUgPT09ICdtb3VzZScgJiYgZS50eXBlID09PSAncG9pbnRlcm91dCcpIHJldHVybjtcbiAgICBjb25zdCBwYXJhbXMgPSBzd2lwZXIucGFyYW1zLnpvb207XG4gICAgY29uc3Qgem9vbSA9IHN3aXBlci56b29tO1xuICAgIGNvbnN0IHBvaW50ZXJJbmRleCA9IGV2Q2FjaGUuZmluZEluZGV4KGNhY2hlZEV2ID0+IGNhY2hlZEV2LnBvaW50ZXJJZCA9PT0gZS5wb2ludGVySWQpO1xuICAgIGlmIChwb2ludGVySW5kZXggPj0gMCkgZXZDYWNoZS5zcGxpY2UocG9pbnRlckluZGV4LCAxKTtcbiAgICBpZiAoIWZha2VHZXN0dXJlVG91Y2hlZCB8fCAhZmFrZUdlc3R1cmVNb3ZlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmYWtlR2VzdHVyZVRvdWNoZWQgPSBmYWxzZTtcbiAgICBmYWtlR2VzdHVyZU1vdmVkID0gZmFsc2U7XG4gICAgaWYgKCFnZXN0dXJlLmltYWdlRWwpIHJldHVybjtcbiAgICB6b29tLnNjYWxlID0gTWF0aC5tYXgoTWF0aC5taW4oem9vbS5zY2FsZSwgZ2VzdHVyZS5tYXhSYXRpbyksIHBhcmFtcy5taW5SYXRpbyk7XG4gICAgZ2VzdHVyZS5pbWFnZUVsLnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbiA9IGAke3N3aXBlci5wYXJhbXMuc3BlZWR9bXNgO1xuICAgIGdlc3R1cmUuaW1hZ2VFbC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlM2QoMCwwLDApIHNjYWxlKCR7em9vbS5zY2FsZX0pYDtcbiAgICBjdXJyZW50U2NhbGUgPSB6b29tLnNjYWxlO1xuICAgIGlzU2NhbGluZyA9IGZhbHNlO1xuICAgIGlmICh6b29tLnNjYWxlID4gMSAmJiBnZXN0dXJlLnNsaWRlRWwpIHtcbiAgICAgIGdlc3R1cmUuc2xpZGVFbC5jbGFzc0xpc3QuYWRkKGAke3BhcmFtcy56b29tZWRTbGlkZUNsYXNzfWApO1xuICAgIH0gZWxzZSBpZiAoem9vbS5zY2FsZSA8PSAxICYmIGdlc3R1cmUuc2xpZGVFbCkge1xuICAgICAgZ2VzdHVyZS5zbGlkZUVsLmNsYXNzTGlzdC5yZW1vdmUoYCR7cGFyYW1zLnpvb21lZFNsaWRlQ2xhc3N9YCk7XG4gICAgfVxuICAgIGlmICh6b29tLnNjYWxlID09PSAxKSB7XG4gICAgICBnZXN0dXJlLm9yaWdpblggPSAwO1xuICAgICAgZ2VzdHVyZS5vcmlnaW5ZID0gMDtcbiAgICAgIGdlc3R1cmUuc2xpZGVFbCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbiAgbGV0IGFsbG93VG91Y2hNb3ZlVGltZW91dDtcbiAgZnVuY3Rpb24gYWxsb3dUb3VjaE1vdmUoKSB7XG4gICAgc3dpcGVyLnRvdWNoRXZlbnRzRGF0YS5wcmV2ZW50VG91Y2hNb3ZlRnJvbVBvaW50ZXJNb3ZlID0gZmFsc2U7XG4gIH1cbiAgZnVuY3Rpb24gcHJldmVudFRvdWNoTW92ZSgpIHtcbiAgICBjbGVhclRpbWVvdXQoYWxsb3dUb3VjaE1vdmVUaW1lb3V0KTtcbiAgICBzd2lwZXIudG91Y2hFdmVudHNEYXRhLnByZXZlbnRUb3VjaE1vdmVGcm9tUG9pbnRlck1vdmUgPSB0cnVlO1xuICAgIGFsbG93VG91Y2hNb3ZlVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHN3aXBlci5kZXN0cm95ZWQpIHJldHVybjtcbiAgICAgIGFsbG93VG91Y2hNb3ZlKCk7XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gb25Ub3VjaFN0YXJ0KGUpIHtcbiAgICBjb25zdCBkZXZpY2UgPSBzd2lwZXIuZGV2aWNlO1xuICAgIGlmICghZ2VzdHVyZS5pbWFnZUVsKSByZXR1cm47XG4gICAgaWYgKGltYWdlLmlzVG91Y2hlZCkgcmV0dXJuO1xuICAgIGlmIChkZXZpY2UuYW5kcm9pZCAmJiBlLmNhbmNlbGFibGUpIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBpbWFnZS5pc1RvdWNoZWQgPSB0cnVlO1xuICAgIGNvbnN0IGV2ZW50ID0gZXZDYWNoZS5sZW5ndGggPiAwID8gZXZDYWNoZVswXSA6IGU7XG4gICAgaW1hZ2UudG91Y2hlc1N0YXJ0LnggPSBldmVudC5wYWdlWDtcbiAgICBpbWFnZS50b3VjaGVzU3RhcnQueSA9IGV2ZW50LnBhZ2VZO1xuICB9XG4gIGZ1bmN0aW9uIG9uVG91Y2hNb3ZlKGUpIHtcbiAgICBjb25zdCBpc01vdXNlRXZlbnQgPSBlLnBvaW50ZXJUeXBlID09PSAnbW91c2UnO1xuICAgIGNvbnN0IGlzTW91c2VQYW4gPSBpc01vdXNlRXZlbnQgJiYgc3dpcGVyLnBhcmFtcy56b29tLnBhbk9uTW91c2VNb3ZlO1xuICAgIGlmICghZXZlbnRXaXRoaW5TbGlkZShlKSB8fCAhZXZlbnRXaXRoaW5ab29tQ29udGFpbmVyKGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHpvb20gPSBzd2lwZXIuem9vbTtcbiAgICBpZiAoIWdlc3R1cmUuaW1hZ2VFbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIWltYWdlLmlzVG91Y2hlZCB8fCAhZ2VzdHVyZS5zbGlkZUVsKSB7XG4gICAgICBpZiAoaXNNb3VzZVBhbikgb25Nb3VzZU1vdmUoZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpc01vdXNlUGFuKSB7XG4gICAgICBvbk1vdXNlTW92ZShlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFpbWFnZS5pc01vdmVkKSB7XG4gICAgICBpbWFnZS53aWR0aCA9IGdlc3R1cmUuaW1hZ2VFbC5vZmZzZXRXaWR0aCB8fCBnZXN0dXJlLmltYWdlRWwuY2xpZW50V2lkdGg7XG4gICAgICBpbWFnZS5oZWlnaHQgPSBnZXN0dXJlLmltYWdlRWwub2Zmc2V0SGVpZ2h0IHx8IGdlc3R1cmUuaW1hZ2VFbC5jbGllbnRIZWlnaHQ7XG4gICAgICBpbWFnZS5zdGFydFggPSBnZXRUcmFuc2xhdGUoZ2VzdHVyZS5pbWFnZVdyYXBFbCwgJ3gnKSB8fCAwO1xuICAgICAgaW1hZ2Uuc3RhcnRZID0gZ2V0VHJhbnNsYXRlKGdlc3R1cmUuaW1hZ2VXcmFwRWwsICd5JykgfHwgMDtcbiAgICAgIGdlc3R1cmUuc2xpZGVXaWR0aCA9IGdlc3R1cmUuc2xpZGVFbC5vZmZzZXRXaWR0aDtcbiAgICAgIGdlc3R1cmUuc2xpZGVIZWlnaHQgPSBnZXN0dXJlLnNsaWRlRWwub2Zmc2V0SGVpZ2h0O1xuICAgICAgZ2VzdHVyZS5pbWFnZVdyYXBFbC5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gPSAnMG1zJztcbiAgICB9XG4gICAgLy8gRGVmaW5lIGlmIHdlIG5lZWQgaW1hZ2UgZHJhZ1xuICAgIGNvbnN0IHNjYWxlZFdpZHRoID0gaW1hZ2Uud2lkdGggKiB6b29tLnNjYWxlO1xuICAgIGNvbnN0IHNjYWxlZEhlaWdodCA9IGltYWdlLmhlaWdodCAqIHpvb20uc2NhbGU7XG4gICAgaW1hZ2UubWluWCA9IE1hdGgubWluKGdlc3R1cmUuc2xpZGVXaWR0aCAvIDIgLSBzY2FsZWRXaWR0aCAvIDIsIDApO1xuICAgIGltYWdlLm1heFggPSAtaW1hZ2UubWluWDtcbiAgICBpbWFnZS5taW5ZID0gTWF0aC5taW4oZ2VzdHVyZS5zbGlkZUhlaWdodCAvIDIgLSBzY2FsZWRIZWlnaHQgLyAyLCAwKTtcbiAgICBpbWFnZS5tYXhZID0gLWltYWdlLm1pblk7XG4gICAgaW1hZ2UudG91Y2hlc0N1cnJlbnQueCA9IGV2Q2FjaGUubGVuZ3RoID4gMCA/IGV2Q2FjaGVbMF0ucGFnZVggOiBlLnBhZ2VYO1xuICAgIGltYWdlLnRvdWNoZXNDdXJyZW50LnkgPSBldkNhY2hlLmxlbmd0aCA+IDAgPyBldkNhY2hlWzBdLnBhZ2VZIDogZS5wYWdlWTtcbiAgICBjb25zdCB0b3VjaGVzRGlmZiA9IE1hdGgubWF4KE1hdGguYWJzKGltYWdlLnRvdWNoZXNDdXJyZW50LnggLSBpbWFnZS50b3VjaGVzU3RhcnQueCksIE1hdGguYWJzKGltYWdlLnRvdWNoZXNDdXJyZW50LnkgLSBpbWFnZS50b3VjaGVzU3RhcnQueSkpO1xuICAgIGlmICh0b3VjaGVzRGlmZiA+IDUpIHtcbiAgICAgIHN3aXBlci5hbGxvd0NsaWNrID0gZmFsc2U7XG4gICAgfVxuICAgIGlmICghaW1hZ2UuaXNNb3ZlZCAmJiAhaXNTY2FsaW5nKSB7XG4gICAgICBpZiAoc3dpcGVyLmlzSG9yaXpvbnRhbCgpICYmIChNYXRoLmZsb29yKGltYWdlLm1pblgpID09PSBNYXRoLmZsb29yKGltYWdlLnN0YXJ0WCkgJiYgaW1hZ2UudG91Y2hlc0N1cnJlbnQueCA8IGltYWdlLnRvdWNoZXNTdGFydC54IHx8IE1hdGguZmxvb3IoaW1hZ2UubWF4WCkgPT09IE1hdGguZmxvb3IoaW1hZ2Uuc3RhcnRYKSAmJiBpbWFnZS50b3VjaGVzQ3VycmVudC54ID4gaW1hZ2UudG91Y2hlc1N0YXJ0LngpKSB7XG4gICAgICAgIGltYWdlLmlzVG91Y2hlZCA9IGZhbHNlO1xuICAgICAgICBhbGxvd1RvdWNoTW92ZSgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoIXN3aXBlci5pc0hvcml6b250YWwoKSAmJiAoTWF0aC5mbG9vcihpbWFnZS5taW5ZKSA9PT0gTWF0aC5mbG9vcihpbWFnZS5zdGFydFkpICYmIGltYWdlLnRvdWNoZXNDdXJyZW50LnkgPCBpbWFnZS50b3VjaGVzU3RhcnQueSB8fCBNYXRoLmZsb29yKGltYWdlLm1heFkpID09PSBNYXRoLmZsb29yKGltYWdlLnN0YXJ0WSkgJiYgaW1hZ2UudG91Y2hlc0N1cnJlbnQueSA+IGltYWdlLnRvdWNoZXNTdGFydC55KSkge1xuICAgICAgICBpbWFnZS5pc1RvdWNoZWQgPSBmYWxzZTtcbiAgICAgICAgYWxsb3dUb3VjaE1vdmUoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZS5jYW5jZWxhYmxlKSB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgcHJldmVudFRvdWNoTW92ZSgpO1xuICAgIGltYWdlLmlzTW92ZWQgPSB0cnVlO1xuICAgIGNvbnN0IHNjYWxlUmF0aW8gPSAoem9vbS5zY2FsZSAtIGN1cnJlbnRTY2FsZSkgLyAoZ2VzdHVyZS5tYXhSYXRpbyAtIHN3aXBlci5wYXJhbXMuem9vbS5taW5SYXRpbyk7XG4gICAgY29uc3Qge1xuICAgICAgb3JpZ2luWCxcbiAgICAgIG9yaWdpbllcbiAgICB9ID0gZ2VzdHVyZTtcbiAgICBpbWFnZS5jdXJyZW50WCA9IGltYWdlLnRvdWNoZXNDdXJyZW50LnggLSBpbWFnZS50b3VjaGVzU3RhcnQueCArIGltYWdlLnN0YXJ0WCArIHNjYWxlUmF0aW8gKiAoaW1hZ2Uud2lkdGggLSBvcmlnaW5YICogMik7XG4gICAgaW1hZ2UuY3VycmVudFkgPSBpbWFnZS50b3VjaGVzQ3VycmVudC55IC0gaW1hZ2UudG91Y2hlc1N0YXJ0LnkgKyBpbWFnZS5zdGFydFkgKyBzY2FsZVJhdGlvICogKGltYWdlLmhlaWdodCAtIG9yaWdpblkgKiAyKTtcbiAgICBpZiAoaW1hZ2UuY3VycmVudFggPCBpbWFnZS5taW5YKSB7XG4gICAgICBpbWFnZS5jdXJyZW50WCA9IGltYWdlLm1pblggKyAxIC0gKGltYWdlLm1pblggLSBpbWFnZS5jdXJyZW50WCArIDEpICoqIDAuODtcbiAgICB9XG4gICAgaWYgKGltYWdlLmN1cnJlbnRYID4gaW1hZ2UubWF4WCkge1xuICAgICAgaW1hZ2UuY3VycmVudFggPSBpbWFnZS5tYXhYIC0gMSArIChpbWFnZS5jdXJyZW50WCAtIGltYWdlLm1heFggKyAxKSAqKiAwLjg7XG4gICAgfVxuICAgIGlmIChpbWFnZS5jdXJyZW50WSA8IGltYWdlLm1pblkpIHtcbiAgICAgIGltYWdlLmN1cnJlbnRZID0gaW1hZ2UubWluWSArIDEgLSAoaW1hZ2UubWluWSAtIGltYWdlLmN1cnJlbnRZICsgMSkgKiogMC44O1xuICAgIH1cbiAgICBpZiAoaW1hZ2UuY3VycmVudFkgPiBpbWFnZS5tYXhZKSB7XG4gICAgICBpbWFnZS5jdXJyZW50WSA9IGltYWdlLm1heFkgLSAxICsgKGltYWdlLmN1cnJlbnRZIC0gaW1hZ2UubWF4WSArIDEpICoqIDAuODtcbiAgICB9XG5cbiAgICAvLyBWZWxvY2l0eVxuICAgIGlmICghdmVsb2NpdHkucHJldlBvc2l0aW9uWCkgdmVsb2NpdHkucHJldlBvc2l0aW9uWCA9IGltYWdlLnRvdWNoZXNDdXJyZW50Lng7XG4gICAgaWYgKCF2ZWxvY2l0eS5wcmV2UG9zaXRpb25ZKSB2ZWxvY2l0eS5wcmV2UG9zaXRpb25ZID0gaW1hZ2UudG91Y2hlc0N1cnJlbnQueTtcbiAgICBpZiAoIXZlbG9jaXR5LnByZXZUaW1lKSB2ZWxvY2l0eS5wcmV2VGltZSA9IERhdGUubm93KCk7XG4gICAgdmVsb2NpdHkueCA9IChpbWFnZS50b3VjaGVzQ3VycmVudC54IC0gdmVsb2NpdHkucHJldlBvc2l0aW9uWCkgLyAoRGF0ZS5ub3coKSAtIHZlbG9jaXR5LnByZXZUaW1lKSAvIDI7XG4gICAgdmVsb2NpdHkueSA9IChpbWFnZS50b3VjaGVzQ3VycmVudC55IC0gdmVsb2NpdHkucHJldlBvc2l0aW9uWSkgLyAoRGF0ZS5ub3coKSAtIHZlbG9jaXR5LnByZXZUaW1lKSAvIDI7XG4gICAgaWYgKE1hdGguYWJzKGltYWdlLnRvdWNoZXNDdXJyZW50LnggLSB2ZWxvY2l0eS5wcmV2UG9zaXRpb25YKSA8IDIpIHZlbG9jaXR5LnggPSAwO1xuICAgIGlmIChNYXRoLmFicyhpbWFnZS50b3VjaGVzQ3VycmVudC55IC0gdmVsb2NpdHkucHJldlBvc2l0aW9uWSkgPCAyKSB2ZWxvY2l0eS55ID0gMDtcbiAgICB2ZWxvY2l0eS5wcmV2UG9zaXRpb25YID0gaW1hZ2UudG91Y2hlc0N1cnJlbnQueDtcbiAgICB2ZWxvY2l0eS5wcmV2UG9zaXRpb25ZID0gaW1hZ2UudG91Y2hlc0N1cnJlbnQueTtcbiAgICB2ZWxvY2l0eS5wcmV2VGltZSA9IERhdGUubm93KCk7XG4gICAgZ2VzdHVyZS5pbWFnZVdyYXBFbC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlM2QoJHtpbWFnZS5jdXJyZW50WH1weCwgJHtpbWFnZS5jdXJyZW50WX1weCwwKWA7XG4gIH1cbiAgZnVuY3Rpb24gb25Ub3VjaEVuZCgpIHtcbiAgICBjb25zdCB6b29tID0gc3dpcGVyLnpvb207XG4gICAgZXZDYWNoZS5sZW5ndGggPSAwO1xuICAgIGlmICghZ2VzdHVyZS5pbWFnZUVsKSByZXR1cm47XG4gICAgaWYgKCFpbWFnZS5pc1RvdWNoZWQgfHwgIWltYWdlLmlzTW92ZWQpIHtcbiAgICAgIGltYWdlLmlzVG91Y2hlZCA9IGZhbHNlO1xuICAgICAgaW1hZ2UuaXNNb3ZlZCA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpbWFnZS5pc1RvdWNoZWQgPSBmYWxzZTtcbiAgICBpbWFnZS5pc01vdmVkID0gZmFsc2U7XG4gICAgbGV0IG1vbWVudHVtRHVyYXRpb25YID0gMzAwO1xuICAgIGxldCBtb21lbnR1bUR1cmF0aW9uWSA9IDMwMDtcbiAgICBjb25zdCBtb21lbnR1bURpc3RhbmNlWCA9IHZlbG9jaXR5LnggKiBtb21lbnR1bUR1cmF0aW9uWDtcbiAgICBjb25zdCBuZXdQb3NpdGlvblggPSBpbWFnZS5jdXJyZW50WCArIG1vbWVudHVtRGlzdGFuY2VYO1xuICAgIGNvbnN0IG1vbWVudHVtRGlzdGFuY2VZID0gdmVsb2NpdHkueSAqIG1vbWVudHVtRHVyYXRpb25ZO1xuICAgIGNvbnN0IG5ld1Bvc2l0aW9uWSA9IGltYWdlLmN1cnJlbnRZICsgbW9tZW50dW1EaXN0YW5jZVk7XG5cbiAgICAvLyBGaXggZHVyYXRpb25cbiAgICBpZiAodmVsb2NpdHkueCAhPT0gMCkgbW9tZW50dW1EdXJhdGlvblggPSBNYXRoLmFicygobmV3UG9zaXRpb25YIC0gaW1hZ2UuY3VycmVudFgpIC8gdmVsb2NpdHkueCk7XG4gICAgaWYgKHZlbG9jaXR5LnkgIT09IDApIG1vbWVudHVtRHVyYXRpb25ZID0gTWF0aC5hYnMoKG5ld1Bvc2l0aW9uWSAtIGltYWdlLmN1cnJlbnRZKSAvIHZlbG9jaXR5LnkpO1xuICAgIGNvbnN0IG1vbWVudHVtRHVyYXRpb24gPSBNYXRoLm1heChtb21lbnR1bUR1cmF0aW9uWCwgbW9tZW50dW1EdXJhdGlvblkpO1xuICAgIGltYWdlLmN1cnJlbnRYID0gbmV3UG9zaXRpb25YO1xuICAgIGltYWdlLmN1cnJlbnRZID0gbmV3UG9zaXRpb25ZO1xuICAgIC8vIERlZmluZSBpZiB3ZSBuZWVkIGltYWdlIGRyYWdcbiAgICBjb25zdCBzY2FsZWRXaWR0aCA9IGltYWdlLndpZHRoICogem9vbS5zY2FsZTtcbiAgICBjb25zdCBzY2FsZWRIZWlnaHQgPSBpbWFnZS5oZWlnaHQgKiB6b29tLnNjYWxlO1xuICAgIGltYWdlLm1pblggPSBNYXRoLm1pbihnZXN0dXJlLnNsaWRlV2lkdGggLyAyIC0gc2NhbGVkV2lkdGggLyAyLCAwKTtcbiAgICBpbWFnZS5tYXhYID0gLWltYWdlLm1pblg7XG4gICAgaW1hZ2UubWluWSA9IE1hdGgubWluKGdlc3R1cmUuc2xpZGVIZWlnaHQgLyAyIC0gc2NhbGVkSGVpZ2h0IC8gMiwgMCk7XG4gICAgaW1hZ2UubWF4WSA9IC1pbWFnZS5taW5ZO1xuICAgIGltYWdlLmN1cnJlbnRYID0gTWF0aC5tYXgoTWF0aC5taW4oaW1hZ2UuY3VycmVudFgsIGltYWdlLm1heFgpLCBpbWFnZS5taW5YKTtcbiAgICBpbWFnZS5jdXJyZW50WSA9IE1hdGgubWF4KE1hdGgubWluKGltYWdlLmN1cnJlbnRZLCBpbWFnZS5tYXhZKSwgaW1hZ2UubWluWSk7XG4gICAgZ2VzdHVyZS5pbWFnZVdyYXBFbC5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gPSBgJHttb21lbnR1bUR1cmF0aW9ufW1zYDtcbiAgICBnZXN0dXJlLmltYWdlV3JhcEVsLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGUzZCgke2ltYWdlLmN1cnJlbnRYfXB4LCAke2ltYWdlLmN1cnJlbnRZfXB4LDApYDtcbiAgfVxuICBmdW5jdGlvbiBvblRyYW5zaXRpb25FbmQoKSB7XG4gICAgY29uc3Qgem9vbSA9IHN3aXBlci56b29tO1xuICAgIGlmIChnZXN0dXJlLnNsaWRlRWwgJiYgc3dpcGVyLmFjdGl2ZUluZGV4ICE9PSBzd2lwZXIuc2xpZGVzLmluZGV4T2YoZ2VzdHVyZS5zbGlkZUVsKSkge1xuICAgICAgaWYgKGdlc3R1cmUuaW1hZ2VFbCkge1xuICAgICAgICBnZXN0dXJlLmltYWdlRWwuc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZTNkKDAsMCwwKSBzY2FsZSgxKSc7XG4gICAgICB9XG4gICAgICBpZiAoZ2VzdHVyZS5pbWFnZVdyYXBFbCkge1xuICAgICAgICBnZXN0dXJlLmltYWdlV3JhcEVsLnN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGUzZCgwLDAsMCknO1xuICAgICAgfVxuICAgICAgZ2VzdHVyZS5zbGlkZUVsLmNsYXNzTGlzdC5yZW1vdmUoYCR7c3dpcGVyLnBhcmFtcy56b29tLnpvb21lZFNsaWRlQ2xhc3N9YCk7XG4gICAgICB6b29tLnNjYWxlID0gMTtcbiAgICAgIGN1cnJlbnRTY2FsZSA9IDE7XG4gICAgICBnZXN0dXJlLnNsaWRlRWwgPSB1bmRlZmluZWQ7XG4gICAgICBnZXN0dXJlLmltYWdlRWwgPSB1bmRlZmluZWQ7XG4gICAgICBnZXN0dXJlLmltYWdlV3JhcEVsID0gdW5kZWZpbmVkO1xuICAgICAgZ2VzdHVyZS5vcmlnaW5YID0gMDtcbiAgICAgIGdlc3R1cmUub3JpZ2luWSA9IDA7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIG9uTW91c2VNb3ZlKGUpIHtcbiAgICAvLyBPbmx5IHBhbiBpZiB6b29tZWQgaW4gYW5kIG1vdXNlIHBhbm5pbmcgaXMgZW5hYmxlZFxuICAgIGlmIChjdXJyZW50U2NhbGUgPD0gMSB8fCAhZ2VzdHVyZS5pbWFnZVdyYXBFbCkgcmV0dXJuO1xuICAgIGlmICghZXZlbnRXaXRoaW5TbGlkZShlKSB8fCAhZXZlbnRXaXRoaW5ab29tQ29udGFpbmVyKGUpKSByZXR1cm47XG4gICAgY29uc3QgY3VycmVudFRyYW5zZm9ybSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGdlc3R1cmUuaW1hZ2VXcmFwRWwpLnRyYW5zZm9ybTtcbiAgICBjb25zdCBtYXRyaXggPSBuZXcgd2luZG93LkRPTU1hdHJpeChjdXJyZW50VHJhbnNmb3JtKTtcbiAgICBpZiAoIWlzUGFubmluZ1dpdGhNb3VzZSkge1xuICAgICAgaXNQYW5uaW5nV2l0aE1vdXNlID0gdHJ1ZTtcbiAgICAgIG1vdXNlUGFuU3RhcnQueCA9IGUuY2xpZW50WDtcbiAgICAgIG1vdXNlUGFuU3RhcnQueSA9IGUuY2xpZW50WTtcbiAgICAgIGltYWdlLnN0YXJ0WCA9IG1hdHJpeC5lO1xuICAgICAgaW1hZ2Uuc3RhcnRZID0gbWF0cml4LmY7XG4gICAgICBpbWFnZS53aWR0aCA9IGdlc3R1cmUuaW1hZ2VFbC5vZmZzZXRXaWR0aCB8fCBnZXN0dXJlLmltYWdlRWwuY2xpZW50V2lkdGg7XG4gICAgICBpbWFnZS5oZWlnaHQgPSBnZXN0dXJlLmltYWdlRWwub2Zmc2V0SGVpZ2h0IHx8IGdlc3R1cmUuaW1hZ2VFbC5jbGllbnRIZWlnaHQ7XG4gICAgICBnZXN0dXJlLnNsaWRlV2lkdGggPSBnZXN0dXJlLnNsaWRlRWwub2Zmc2V0V2lkdGg7XG4gICAgICBnZXN0dXJlLnNsaWRlSGVpZ2h0ID0gZ2VzdHVyZS5zbGlkZUVsLm9mZnNldEhlaWdodDtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZGVsdGFYID0gKGUuY2xpZW50WCAtIG1vdXNlUGFuU3RhcnQueCkgKiBtb3VzZVBhblNlbnNpdGl2aXR5O1xuICAgIGNvbnN0IGRlbHRhWSA9IChlLmNsaWVudFkgLSBtb3VzZVBhblN0YXJ0LnkpICogbW91c2VQYW5TZW5zaXRpdml0eTtcbiAgICBjb25zdCBzY2FsZWRXaWR0aCA9IGltYWdlLndpZHRoICogY3VycmVudFNjYWxlO1xuICAgIGNvbnN0IHNjYWxlZEhlaWdodCA9IGltYWdlLmhlaWdodCAqIGN1cnJlbnRTY2FsZTtcbiAgICBjb25zdCBzbGlkZVdpZHRoID0gZ2VzdHVyZS5zbGlkZVdpZHRoO1xuICAgIGNvbnN0IHNsaWRlSGVpZ2h0ID0gZ2VzdHVyZS5zbGlkZUhlaWdodDtcbiAgICBjb25zdCBtaW5YID0gTWF0aC5taW4oc2xpZGVXaWR0aCAvIDIgLSBzY2FsZWRXaWR0aCAvIDIsIDApO1xuICAgIGNvbnN0IG1heFggPSAtbWluWDtcbiAgICBjb25zdCBtaW5ZID0gTWF0aC5taW4oc2xpZGVIZWlnaHQgLyAyIC0gc2NhbGVkSGVpZ2h0IC8gMiwgMCk7XG4gICAgY29uc3QgbWF4WSA9IC1taW5ZO1xuICAgIGNvbnN0IG5ld1ggPSBNYXRoLm1heChNYXRoLm1pbihpbWFnZS5zdGFydFggKyBkZWx0YVgsIG1heFgpLCBtaW5YKTtcbiAgICBjb25zdCBuZXdZID0gTWF0aC5tYXgoTWF0aC5taW4oaW1hZ2Uuc3RhcnRZICsgZGVsdGFZLCBtYXhZKSwgbWluWSk7XG4gICAgZ2VzdHVyZS5pbWFnZVdyYXBFbC5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gPSAnMG1zJztcbiAgICBnZXN0dXJlLmltYWdlV3JhcEVsLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGUzZCgke25ld1h9cHgsICR7bmV3WX1weCwgMClgO1xuICAgIG1vdXNlUGFuU3RhcnQueCA9IGUuY2xpZW50WDtcbiAgICBtb3VzZVBhblN0YXJ0LnkgPSBlLmNsaWVudFk7XG4gICAgaW1hZ2Uuc3RhcnRYID0gbmV3WDtcbiAgICBpbWFnZS5zdGFydFkgPSBuZXdZO1xuICAgIGltYWdlLmN1cnJlbnRYID0gbmV3WDtcbiAgICBpbWFnZS5jdXJyZW50WSA9IG5ld1k7XG4gIH1cbiAgZnVuY3Rpb24gem9vbUluKGUpIHtcbiAgICBjb25zdCB6b29tID0gc3dpcGVyLnpvb207XG4gICAgY29uc3QgcGFyYW1zID0gc3dpcGVyLnBhcmFtcy56b29tO1xuICAgIGlmICghZ2VzdHVyZS5zbGlkZUVsKSB7XG4gICAgICBpZiAoZSAmJiBlLnRhcmdldCkge1xuICAgICAgICBnZXN0dXJlLnNsaWRlRWwgPSBlLnRhcmdldC5jbG9zZXN0KGAuJHtzd2lwZXIucGFyYW1zLnNsaWRlQ2xhc3N9LCBzd2lwZXItc2xpZGVgKTtcbiAgICAgIH1cbiAgICAgIGlmICghZ2VzdHVyZS5zbGlkZUVsKSB7XG4gICAgICAgIGlmIChzd2lwZXIucGFyYW1zLnZpcnR1YWwgJiYgc3dpcGVyLnBhcmFtcy52aXJ0dWFsLmVuYWJsZWQgJiYgc3dpcGVyLnZpcnR1YWwpIHtcbiAgICAgICAgICBnZXN0dXJlLnNsaWRlRWwgPSBlbGVtZW50Q2hpbGRyZW4oc3dpcGVyLnNsaWRlc0VsLCBgLiR7c3dpcGVyLnBhcmFtcy5zbGlkZUFjdGl2ZUNsYXNzfWApWzBdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGdlc3R1cmUuc2xpZGVFbCA9IHN3aXBlci5zbGlkZXNbc3dpcGVyLmFjdGl2ZUluZGV4XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbGV0IGltYWdlRWwgPSBnZXN0dXJlLnNsaWRlRWwucXVlcnlTZWxlY3RvcihgLiR7cGFyYW1zLmNvbnRhaW5lckNsYXNzfWApO1xuICAgICAgaWYgKGltYWdlRWwpIHtcbiAgICAgICAgaW1hZ2VFbCA9IGltYWdlRWwucXVlcnlTZWxlY3RvckFsbCgncGljdHVyZSwgaW1nLCBzdmcsIGNhbnZhcywgLnN3aXBlci16b29tLXRhcmdldCcpWzBdO1xuICAgICAgfVxuICAgICAgZ2VzdHVyZS5pbWFnZUVsID0gaW1hZ2VFbDtcbiAgICAgIGlmIChpbWFnZUVsKSB7XG4gICAgICAgIGdlc3R1cmUuaW1hZ2VXcmFwRWwgPSBlbGVtZW50UGFyZW50cyhnZXN0dXJlLmltYWdlRWwsIGAuJHtwYXJhbXMuY29udGFpbmVyQ2xhc3N9YClbMF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBnZXN0dXJlLmltYWdlV3JhcEVsID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIWdlc3R1cmUuaW1hZ2VFbCB8fCAhZ2VzdHVyZS5pbWFnZVdyYXBFbCkgcmV0dXJuO1xuICAgIG
5642lmIChzd2lwZXIucGFyYW1zLmNzc01vZGUpIHtcbiAgICAgIHN3aXBlci53cmFwcGVyRWwuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICAgIHN3aXBlci53cmFwcGVyRWwuc3R5bGUudG91Y2hBY3Rpb24gPSAnbm9uZSc7XG4gICAgfVxuICAgIGdlc3R1cmUuc2xpZGVFbC5jbGFzc0xpc3QuYWRkKGAke3BhcmFtcy56b29tZWRTbGlkZUNsYXNzfWApO1xuICAgIGxldCB0b3VjaFg7XG4gICAgbGV0IHRvdWNoWTtcbiAgICBsZXQgb2Zmc2V0WDtcbiAgICBsZXQgb2Zmc2V0WTtcbiAgICBsZXQgZGlmZlg7XG4gICAgbGV0IGRpZmZZO1xuICAgIGxldCB0cmFuc2xhdGVYO1xuICAgIGxldCB0cmFuc2xhdGVZO1xuICAgIGxldCBpbWFnZVdpZHRoO1xuICAgIGxldCBpbWFnZUhlaWdodDtcbiAgICBsZXQgc2NhbGVkV2lkdGg7XG4gICAgbGV0IHNjYWxlZEhlaWdodDtcbiAgICBsZXQgdHJhbnNsYXRlTWluWDtcbiAgICBsZXQgdHJhbnNsYXRlTWluWTtcbiAgICBsZXQgdHJhbnNsYXRlTWF4WDtcbiAgICBsZXQgdHJhbnNsYXRlTWF4WTtcbiAgICBsZXQgc2xpZGVXaWR0aDtcbiAgICBsZXQgc2xpZGVIZWlnaHQ7XG4gICAgaWYgKHR5cGVvZiBpbWFnZS50b3VjaGVzU3RhcnQueCA9PT0gJ3VuZGVmaW5lZCcgJiYgZSkge1xuICAgICAgdG91Y2hYID0gZS5wYWdlWDtcbiAgICAgIHRvdWNoWSA9IGUucGFnZVk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRvdWNoWCA9IGltYWdlLnRvdWNoZXNTdGFydC54O1xuICAgICAgdG91Y2hZID0gaW1hZ2UudG91Y2hlc1N0YXJ0Lnk7XG4gICAgfVxuICAgIGNvbnN0IHByZXZTY2FsZSA9IGN1cnJlbnRTY2FsZTtcbiAgICBjb25zdCBmb3JjZVpvb21SYXRpbyA9IHR5cGVvZiBlID09PSAnbnVtYmVyJyA/IGUgOiBudWxsO1xuICAgIGlmIChjdXJyZW50U2NhbGUgPT09IDEgJiYgZm9yY2Vab29tUmF0aW8pIHtcbiAgICAgIHRvdWNoWCA9IHVuZGVmaW5lZDtcbiAgICAgIHRvdWNoWSA9IHVuZGVmaW5lZDtcbiAgICAgIGltYWdlLnRvdWNoZXNTdGFydC54ID0gdW5kZWZpbmVkO1xuICAgICAgaW1hZ2UudG91Y2hlc1N0YXJ0LnkgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IG1heFJhdGlvID0gZ2V0TWF4UmF0aW8oKTtcbiAgICB6b29tLnNjYWxlID0gZm9yY2Vab29tUmF0aW8gfHwgbWF4UmF0aW87XG4gICAgY3VycmVudFNjYWxlID0gZm9yY2Vab29tUmF0aW8gfHwgbWF4UmF0aW87XG4gICAgaWYgKGUgJiYgIShjdXJyZW50U2NhbGUgPT09IDEgJiYgZm9yY2Vab29tUmF0aW8pKSB7XG4gICAgICBzbGlkZVdpZHRoID0gZ2VzdHVyZS5zbGlkZUVsLm9mZnNldFdpZHRoO1xuICAgICAgc2xpZGVIZWlnaHQgPSBnZXN0dXJlLnNsaWRlRWwub2Zmc2V0SGVpZ2h0O1xuICAgICAgb2Zmc2V0WCA9IGVsZW1lbnRPZmZzZXQoZ2VzdHVyZS5zbGlkZUVsKS5sZWZ0ICsgd2luZG93LnNjcm9sbFg7XG4gICAgICBvZmZzZXRZID0gZWxlbWVudE9mZnNldChnZXN0dXJlLnNsaWRlRWwpLnRvcCArIHdpbmRvdy5zY3JvbGxZO1xuICAgICAgZGlmZlggPSBvZmZzZXRYICsgc2xpZGVXaWR0aCAvIDIgLSB0b3VjaFg7XG4gICAgICBkaWZmWSA9IG9mZnNldFkgKyBzbGlkZUhlaWdodCAvIDIgLSB0b3VjaFk7XG4gICAgICBpbWFnZVdpZHRoID0gZ2VzdHVyZS5pbWFnZUVsLm9mZnNldFdpZHRoIHx8IGdlc3R1cmUuaW1hZ2VFbC5jbGllbnRXaWR0aDtcbiAgICAgIGltYWdlSGVpZ2h0ID0gZ2VzdHVyZS5pbWFnZUVsLm9mZnNldEhlaWdodCB8fCBnZXN0dXJlLmltYWdlRWwuY2xpZW50SGVpZ2h0O1xuICAgICAgc2NhbGVkV2lkdGggPSBpbWFnZVdpZHRoICogem9vbS5zY2FsZTtcbiAgICAgIHNjYWxlZEhlaWdodCA9IGltYWdlSGVpZ2h0ICogem9vbS5zY2FsZTtcbiAgICAgIHRyYW5zbGF0ZU1pblggPSBNYXRoLm1pbihzbGlkZVdpZHRoIC8gMiAtIHNjYWxlZFdpZHRoIC8gMiwgMCk7XG4gICAgICB0cmFuc2xhdGVNaW5ZID0gTWF0aC5taW4oc2xpZGVIZWlnaHQgLyAyIC0gc2NhbGVkSGVpZ2h0IC8gMiwgMCk7XG4gICAgICB0cmFuc2xhdGVNYXhYID0gLXRyYW5zbGF0ZU1pblg7XG4gICAgICB0cmFuc2xhdGVNYXhZID0gLXRyYW5zbGF0ZU1pblk7XG4gICAgICBpZiAocHJldlNjYWxlID4gMCAmJiBmb3JjZVpvb21SYXRpbyAmJiB0eXBlb2YgaW1hZ2UuY3VycmVudFggPT09ICdudW1iZXInICYmIHR5cGVvZiBpbWFnZS5jdXJyZW50WSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgdHJhbnNsYXRlWCA9IGltYWdlLmN1cnJlbnRYICogem9vbS5zY2FsZSAvIHByZXZTY2FsZTtcbiAgICAgICAgdHJhbnNsYXRlWSA9IGltYWdlLmN1cnJlbnRZICogem9vbS5zY2FsZSAvIHByZXZTY2FsZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyYW5zbGF0ZVggPSBkaWZmWCAqIHpvb20uc2NhbGU7XG4gICAgICAgIHRyYW5zbGF0ZVkgPSBkaWZmWSAqIHpvb20uc2NhbGU7XG4gICAgICB9XG4gICAgICBpZiAodHJhbnNsYXRlWCA8IHRyYW5zbGF0ZU1pblgpIHtcbiAgICAgICAgdHJhbnNsYXRlWCA9IHRyYW5zbGF0ZU1pblg7XG4gICAgICB9XG4gICAgICBpZiAodHJhbnNsYXRlWCA+IHRyYW5zbGF0ZU1heFgpIHtcbiAgICAgICAgdHJhbnNsYXRlWCA9IHRyYW5zbGF0ZU1heFg7XG4gICAgICB9XG4gICAgICBpZiAodHJhbnNsYXRlWSA8IHRyYW5zbGF0ZU1pblkpIHtcbiAgICAgICAgdHJhbnNsYXRlWSA9IHRyYW5zbGF0ZU1pblk7XG4gICAgICB9XG4gICAgICBpZiAodHJhbnNsYXRlWSA+IHRyYW5zbGF0ZU1heFkpIHtcbiAgICAgICAgdHJhbnNsYXRlWSA9IHRyYW5zbGF0ZU1heFk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRyYW5zbGF0ZVggPSAwO1xuICAgICAgdHJhbnNsYXRlWSA9IDA7XG4gICAgfVxuICAgIGlmIChmb3JjZVpvb21SYXRpbyAmJiB6b29tLnNjYWxlID09PSAxKSB7XG4gICAgICBnZXN0dXJlLm9yaWdpblggPSAwO1xuICAgICAgZ2VzdHVyZS5vcmlnaW5ZID0gMDtcbiAgICB9XG4gICAgaW1hZ2UuY3VycmVudFggPSB0cmFuc2xhdGVYO1xuICAgIGltYWdlLmN1cnJlbnRZID0gdHJhbnNsYXRlWTtcbiAgICBnZXN0dXJlLmltYWdlV3JhcEVsLnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbiA9ICczMDBtcyc7XG4gICAgZ2VzdHVyZS5pbWFnZVdyYXBFbC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlM2QoJHt0cmFuc2xhdGVYfXB4LCAke3RyYW5zbGF0ZVl9cHgsMClgO1xuICAgIGdlc3R1cmUuaW1hZ2VFbC5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gPSAnMzAwbXMnO1xuICAgIGdlc3R1cmUuaW1hZ2VFbC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlM2QoMCwwLDApIHNjYWxlKCR7em9vbS5zY2FsZX0pYDtcbiAgfVxuICBmdW5jdGlvbiB6b29tT3V0KCkge1xuICAgIGNvbnN0IHpvb20gPSBzd2lwZXIuem9vbTtcbiAgICBjb25zdCBwYXJhbXMgPSBzd2lwZXIucGFyYW1zLnpvb207XG4gICAgaWYgKCFnZXN0dXJlLnNsaWRlRWwpIHtcbiAgICAgIGlmIChzd2lwZXIucGFyYW1zLnZpcnR1YWwgJiYgc3dpcGVyLnBhcmFtcy52aXJ0dWFsLmVuYWJsZWQgJiYgc3dpcGVyLnZpcnR1YWwpIHtcbiAgICAgICAgZ2VzdHVyZS5zbGlkZUVsID0gZWxlbWVudENoaWxkcmVuKHN3aXBlci5zbGlkZXNFbCwgYC4ke3N3aXBlci5wYXJhbXMuc2xpZGVBY3RpdmVDbGFzc31gKVswXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdlc3R1cmUuc2xpZGVFbCA9IHN3aXBlci5zbGlkZXNbc3dpcGVyLmFjdGl2ZUluZGV4XTtcbiAgICAgIH1cbiAgICAgIGxldCBpbWFnZUVsID0gZ2VzdHVyZS5zbGlkZUVsLnF1ZXJ5U2VsZWN0b3IoYC4ke3BhcmFtcy5jb250YWluZXJDbGFzc31gKTtcbiAgICAgIGlmIChpbWFnZUVsKSB7XG4gICAgICAgIGltYWdlRWwgPSBpbWFnZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoJ3BpY3R1cmUsIGltZywgc3ZnLCBjYW52YXMsIC5zd2lwZXItem9vbS10YXJnZXQnKVswXTtcbiAgICAgIH1cbiAgICAgIGdlc3R1cmUuaW1hZ2VFbCA9IGltYWdlRWw7XG4gICAgICBpZiAoaW1hZ2VFbCkge1xuICAgICAgICBnZXN0dXJlLmltYWdlV3JhcEVsID0gZWxlbWVudFBhcmVudHMoZ2VzdHVyZS5pbWFnZUVsLCBgLiR7cGFyYW1zLmNvbnRhaW5lckNsYXNzfWApWzBdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ2VzdHVyZS5pbWFnZVdyYXBFbCA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFnZXN0dXJlLmltYWdlRWwgfHwgIWdlc3R1cmUuaW1hZ2VXcmFwRWwpIHJldHVybjtcbiAgICBpZiAoc3dpcGVyLnBhcmFtcy5jc3NNb2RlKSB7XG4gICAgICBzd2lwZXIud3JhcHBlckVsLnN0eWxlLm92ZXJmbG93ID0gJyc7XG4gICAgICBzd2lwZXIud3JhcHBlckVsLnN0eWxlLnRvdWNoQWN0aW9uID0gJyc7XG4gICAgfVxuICAgIHpvb20uc2NhbGUgPSAxO1xuICAgIGN1cnJlbnRTY2FsZSA9IDE7XG4gICAgaW1hZ2UuY3VycmVudFggPSB1bmRlZmluZWQ7XG4gICAgaW1hZ2UuY3VycmVudFkgPSB1bmRlZmluZWQ7XG4gICAgaW1hZ2UudG91Y2hlc1N0YXJ0LnggPSB1bmRlZmluZWQ7XG4gICAgaW1hZ2UudG91Y2hlc1N0YXJ0LnkgPSB1bmRlZmluZWQ7XG4gICAgZ2VzdHVyZS5pbWFnZVdyYXBFbC5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gPSAnMzAwbXMnO1xuICAgIGdlc3R1cmUuaW1hZ2VXcmFwRWwuc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZTNkKDAsMCwwKSc7XG4gICAgZ2VzdHVyZS5pbWFnZUVsLnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbiA9ICczMDBtcyc7XG4gICAgZ2VzdHVyZS5pbWFnZUVsLnN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGUzZCgwLDAsMCkgc2NhbGUoMSknO1xuICAgIGdlc3R1cmUuc2xpZGVFbC5jbGFzc0xpc3QucmVtb3ZlKGAke3BhcmFtcy56b29tZWRTbGlkZUNsYXNzfWApO1xuICAgIGdlc3R1cmUuc2xpZGVFbCA9IHVuZGVmaW5lZDtcbiAgICBnZXN0dXJlLm9yaWdpblggPSAwO1xuICAgIGdlc3R1cmUub3JpZ2luWSA9IDA7XG4gICAgaWYgKHN3aXBlci5wYXJhbXMuem9vbS5wYW5Pbk1vdXNlTW92ZSkge1xuICAgICAgbW91c2VQYW5TdGFydCA9IHtcbiAgICAgICAgeDogMCxcbiAgICAgICAgeTogMFxuICAgICAgfTtcbiAgICAgIGlmIChpc1Bhbm5pbmdXaXRoTW91c2UpIHtcbiAgICAgICAgaXNQYW5uaW5nV2l0aE1vdXNlID0gZmFsc2U7XG4gICAgICAgIGltYWdlLnN0YXJ0WCA9IDA7XG4gICAgICAgIGltYWdlLnN0YXJ0WSA9IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gVG9nZ2xlIFpvb21cbiAgZnVuY3Rpb24gem9vbVRvZ2dsZShlKSB7XG4gICAgY29uc3Qgem9vbSA9IHN3aXBlci56b29tO1xuICAgIGlmICh6b29tLnNjYWxlICYmIHpvb20uc2NhbGUgIT09IDEpIHtcbiAgICAgIC8vIFpvb20gT3V0XG4gICAgICB6b29tT3V0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFpvb20gSW5cbiAgICAgIHpvb21JbihlKTtcbiAgICB9XG4gI
5642H1cbiAgZnVuY3Rpb24gZ2V0TGlzdGVuZXJzKCkge1xuICAgIGNvbnN0IHBhc3NpdmVMaXN0ZW5lciA9IHN3aXBlci5wYXJhbXMucGFzc2l2ZUxpc3RlbmVycyA/IHtcbiAgICAgIHBhc3NpdmU6IHRydWUsXG4gICAgICBjYXB0dXJlOiBmYWxzZVxuICAgIH0gOiBmYWxzZTtcbiAgICBjb25zdCBhY3RpdmVMaXN0ZW5lcldpdGhDYXB0dXJlID0gc3dpcGVyLnBhcmFtcy5wYXNzaXZlTGlzdGVuZXJzID8ge1xuICAgICAgcGFzc2l2ZTogZmFsc2UsXG4gICAgICBjYXB0dXJlOiB0cnVlXG4gICAgfSA6IHRydWU7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBhc3NpdmVMaXN0ZW5lcixcbiAgICAgIGFjdGl2ZUxpc3RlbmVyV2l0aENhcHR1cmVcbiAgICB9O1xuICB9XG5cbiAgLy8gQXR0YWNoL0RldGFjaCBFdmVudHNcbiAgZnVuY3Rpb24gZW5hYmxlKCkge1xuICAgIGNvbnN0IHpvb20gPSBzd2lwZXIuem9vbTtcbiAgICBpZiAoem9vbS5lbmFibGVkKSByZXR1cm47XG4gICAgem9vbS5lbmFibGVkID0gdHJ1ZTtcbiAgICBjb25zdCB7XG4gICAgICBwYXNzaXZlTGlzdGVuZXIsXG4gICAgICBhY3RpdmVMaXN0ZW5lcldpdGhDYXB0dXJlXG4gICAgfSA9IGdldExpc3RlbmVycygpO1xuXG4gICAgLy8gU2NhbGUgaW1hZ2VcbiAgICBzd2lwZXIud3JhcHBlckVsLmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgb25HZXN0dXJlU3RhcnQsIHBhc3NpdmVMaXN0ZW5lcik7XG4gICAgc3dpcGVyLndyYXBwZXJFbC5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVybW92ZScsIG9uR2VzdHVyZUNoYW5nZSwgYWN0aXZlTGlzdGVuZXJXaXRoQ2FwdHVyZSk7XG4gICAgWydwb2ludGVydXAnLCAncG9pbnRlcmNhbmNlbCcsICdwb2ludGVyb3V0J10uZm9yRWFjaChldmVudE5hbWUgPT4ge1xuICAgICAgc3dpcGVyLndyYXBwZXJFbC5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgb25HZXN0dXJlRW5kLCBwYXNzaXZlTGlzdGVuZXIpO1xuICAgIH0pO1xuXG4gICAgLy8gTW92ZSBpbWFnZVxuICAgIHN3aXBlci53cmFwcGVyRWwuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcm1vdmUnLCBvblRvdWNoTW92ZSwgYWN0aXZlTGlzdGVuZXJXaXRoQ2FwdHVyZSk7XG4gIH1cbiAgZnVuY3Rpb24gZGlzYWJsZSgpIHtcbiAgICBjb25zdCB6b29tID0gc3dpcGVyLnpvb207XG4gICAgaWYgKCF6b29tLmVuYWJsZWQpIHJldHVybjtcbiAgICB6b29tLmVuYWJsZWQgPSBmYWxzZTtcbiAgICBjb25zdCB7XG4gICAgICBwYXNzaXZlTGlzdGVuZXIsXG4gICAgICBhY3RpdmVMaXN0ZW5lcldpdGhDYXB0dXJlXG4gICAgfSA9IGdldExpc3RlbmVycygpO1xuXG4gICAgLy8gU2NhbGUgaW1hZ2VcbiAgICBzd2lwZXIud3JhcHBlckVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgb25HZXN0dXJlU3RhcnQsIHBhc3NpdmVMaXN0ZW5lcik7XG4gICAgc3dpcGVyLndyYXBwZXJFbC5yZW1vdmVFdmVudExpc3RlbmVyKCdwb2ludGVybW92ZScsIG9uR2VzdHVyZUNoYW5nZSwgYWN0aXZlTGlzdGVuZXJXaXRoQ2FwdHVyZSk7XG4gICAgWydwb2ludGVydXAnLCAncG9pbnRlcmNhbmNlbCcsICdwb2ludGVyb3V0J10uZm9yRWFjaChldmVudE5hbWUgPT4ge1xuICAgICAgc3dpcGVyLndyYXBwZXJFbC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgb25HZXN0dXJlRW5kLCBwYXNzaXZlTGlzdGVuZXIpO1xuICAgIH0pO1xuXG4gICAgLy8gTW92ZSBpbWFnZVxuICAgIHN3aXBlci53cmFwcGVyRWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigncG9pbnRlcm1vdmUnLCBvblRvdWNoTW92ZSwgYWN0aXZlTGlzdGVuZXJXaXRoQ2FwdHVyZSk7XG4gIH1cbiAgb24oJ2luaXQnLCAoKSA9PiB7XG4gICAgaWYgKHN3aXBlci5wYXJhbXMuem9vbS5lbmFibGVkKSB7XG4gICAgICBlbmFibGUoKTtcbiAgICB9XG4gIH0pO1xuICBvbignZGVzdHJveScsICgpID0+IHtcbiAgICBkaXNhYmxlKCk7XG4gIH0pO1xuICBvbigndG91Y2hTdGFydCcsIChfcywgZSkgPT4ge1xuICAgIGlmICghc3dpcGVyLnpvb20uZW5hYmxlZCkgcmV0dXJuO1xuICAgIG9uVG91Y2hTdGFydChlKTtcbiAgfSk7XG4gIG9uKCd0b3VjaEVuZCcsIChfcywgZSkgPT4ge1xuICAgIGlmICghc3dpcGVyLnpvb20uZW5hYmxlZCkgcmV0dXJuO1xuICAgIG9uVG91Y2hFbmQoKTtcbiAgfSk7XG4gIG9uKCdkb3VibGVUYXAnLCAoX3MsIGUpID0+IHtcbiAgICBpZiAoIXN3aXBlci5hbmltYXRpbmcgJiYgc3dpcGVyLnBhcmFtcy56b29tLmVuYWJsZWQgJiYgc3dpcGVyLnpvb20uZW5hYmxlZCAmJiBzd2lwZXIucGFyYW1zLnpvb20udG9nZ2xlKSB7XG4gICAgICB6b29tVG9nZ2xlKGUpO1xuICAgIH1cbiAgfSk7XG4gIG9uKCd0cmFuc2l0aW9uRW5kJywgKCkgPT4ge1xuICAgIGlmIChzd2lwZXIuem9vbS5lbmFibGVkICYmIHN3aXBlci5wYXJhbXMuem9vbS5lbmFibGVkKSB7XG4gICAgICBvblRyYW5zaXRpb25FbmQoKTtcbiAgICB9XG4gIH0pO1xuICBvbignc2xpZGVDaGFuZ2UnLCAoKSA9PiB7XG4gICAgaWYgKHN3aXBlci56b29tLmVuYWJsZWQgJiYgc3dpcGVyLnBhcmFtcy56b29tLmVuYWJsZWQgJiYgc3dpcGVyLnBhcmFtcy5jc3NNb2RlKSB7XG4gICAgICBvblRyYW5zaXRpb25FbmQoKTtcbiAgICB9XG4gIH0pO1xuICBPYmplY3QuYXNzaWduKHN3aXBlci56b29tLCB7XG4gICAgZW5hYmxlLFxuICAgIGRpc2FibGUsXG4gICAgaW46IHpvb21JbixcbiAgICBvdXQ6IHpvb21PdXQsXG4gICAgdG9nZ2xlOiB6b29tVG9nZ2xlXG4gIH0pO1xufVxuXG5leHBvcnQgeyBab29tIGFzIGRlZmF1bHQgfTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=
5643//# sourceURL=webpack-internal:///../node_modules/swiper/modules/zoom.mjs
5644
5645}`)},"../node_modules/swiper/shared/classes-to-selector.mjs"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval(`{__webpack_require__.r(__webpack_exports__);
5646/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5647/* harmony export */   c: () => (/* binding */ classesToSelector)
5648/* harmony export */ });
5649function classesToSelector(classes) {
5650  if (classes === void 0) {
5651    classes = '';
5652  }
5653  return \`.\${classes.trim().replace(/([\\.:!+\\/()[\\]])/g, '\\\\$1') // eslint-disable-line
5654  .replace(/ /g, '.')}\`;
5655}
5656
5657
5658//# sourceURL=[module]
5659//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9zaGFyZWQvY2xhc3Nlcy10by1zZWxlY3Rvci5tanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLHNCQUFzQjtBQUN0Qjs7QUFFa0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9zaGFyZWQvY2xhc3Nlcy10by1zZWxlY3Rvci5tanM/NDBiNSJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBjbGFzc2VzVG9TZWxlY3RvcihjbGFzc2VzKSB7XG4gIGlmIChjbGFzc2VzID09PSB2b2lkIDApIHtcbiAgICBjbGFzc2VzID0gJyc7XG4gIH1cbiAgcmV0dXJuIGAuJHtjbGFzc2VzLnRyaW0oKS5yZXBsYWNlKC8oW1xcLjohK1xcLygpW1xcXV0pL2csICdcXFxcJDEnKSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gIC5yZXBsYWNlKC8gL2csICcuJyl9YDtcbn1cblxuZXhwb3J0IHsgY2xhc3Nlc1RvU2VsZWN0b3IgYXMgYyB9O1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==
5660//# sourceURL=webpack-internal:///../node_modules/swiper/shared/classes-to-selector.mjs
5661
5662}`)},"../node_modules/swiper/shared/create-element-if-not-defined.mjs"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval(`{__webpack_require__.r(__webpack_exports__);
5663/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5664/* harmony export */   c: () => (/* binding */ createElementIfNotDefined)
5665/* harmony export */ });
5666/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils.mjs */ "../node_modules/swiper/shared/utils.mjs");
5667
5668
5669function createElementIfNotDefined(swiper, originalParams, params, checkProps) {
5670  if (swiper.params.createElements) {
5671    Object.keys(checkProps).forEach(key => {
5672      if (!params[key] && params.auto === true) {
5673        let element = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.e)(swiper.el, \`.\${checkProps[key]}\`)[0];
5674        if (!element) {
5675          element = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('div', checkProps[key]);
5676          element.className = checkProps[key];
5677          swiper.el.append(element);
5678        }
5679        params[key] = element;
5680        originalParams[key] = element;
5681      }
5682    });
5683  }
5684  return params;
5685}
5686
5687
5688//# sourceURL=[module]
5689//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9zaGFyZWQvY3JlYXRlLWVsZW1lbnQtaWYtbm90LWRlZmluZWQubWpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQXVFOztBQUV2RTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQiw2Q0FBZSxnQkFBZ0IsZ0JBQWdCO0FBQ3JFO0FBQ0Esb0JBQW9CLDZDQUFhO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRTBDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9zd2lwZXIvc2hhcmVkL2NyZWF0ZS1lbGVtZW50LWlmLW5vdC1kZWZpbmVkLm1qcz9jYjdiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGUgYXMgZWxlbWVudENoaWxkcmVuLCBjIGFzIGNyZWF0ZUVsZW1lbnQgfSBmcm9tICcuL3V0aWxzLm1qcyc7XG5cbmZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnRJZk5vdERlZmluZWQoc3dpcGVyLCBvcmlnaW5hbFBhcmFtcywgcGFyYW1zLCBjaGVja1Byb3BzKSB7XG4gIGlmIChzd2lwZXIucGFyYW1zLmNyZWF0ZUVsZW1lbnRzKSB7XG4gICAgT2JqZWN0LmtleXMoY2hlY2tQcm9wcykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgaWYgKCFwYXJhbXNba2V5XSAmJiBwYXJhbXMuYXV0byA9PT0gdHJ1ZSkge1xuICAgICAgICBsZXQgZWxlbWVudCA9IGVsZW1lbnRDaGlsZHJlbihzd2lwZXIuZWwsIGAuJHtjaGVja1Byb3BzW2tleV19YClbMF07XG4gICAgICAgIGlmICghZWxlbWVudCkge1xuICAgICAgICAgIGVsZW1lbnQgPSBjcmVhdGVFbGVtZW50KCdkaXYnLCBjaGVja1Byb3BzW2tleV0pO1xuICAgICAgICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gY2hlY2tQcm9wc1trZXldO1xuICAgICAgICAgIHN3aXBlci5lbC5hcHBlbmQoZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgcGFyYW1zW2tleV0gPSBlbGVtZW50O1xuICAgICAgICBvcmlnaW5hbFBhcmFtc1trZXldID0gZWxlbWVudDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICByZXR1cm4gcGFyYW1zO1xufVxuXG5leHBvcnQgeyBjcmVhdGVFbGVtZW50SWZOb3REZWZpbmVkIGFzIGMgfTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=
5690//# sourceURL=webpack-internal:///../node_modules/swiper/shared/create-element-if-not-defined.mjs
5691
5692}`)},"../node_modules/swiper/shared/create-shadow.mjs"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval(`{__webpack_require__.r(__webpack_exports__);
5693/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5694/* harmony export */   c: () => (/* binding */ createShadow)
5695/* harmony export */ });
5696/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils.mjs */ "../node_modules/swiper/shared/utils.mjs");
5697
5698
5699function createShadow(suffix, slideEl, side) {
5700  const shadowClass = \`swiper-slide-shadow\${side ? \`-\${side}\` : ''}\${suffix ? \` swiper-slide-shadow-\${suffix}\` : ''}\`;
5701  const shadowContainer = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(slideEl);
5702  let shadowEl = shadowContainer.querySelector(\`.\${shadowClass.split(' ').join('.')}\`);
5703  if (!shadowEl) {
5704    shadowEl = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('div', shadowClass.split(' '));
5705    shadowContainer.append(shadowEl);
5706  }
5707  return shadowEl;
5708}
5709
5710
5711//# sourceURL=[module]
5712//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9zaGFyZWQvY3JlYXRlLXNoYWRvdy5tanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBMkU7O0FBRTNFO0FBQ0EsNENBQTRDLFdBQVcsS0FBSyxPQUFPLEVBQUUsaUNBQWlDLE9BQU8sT0FBTztBQUNwSCwwQkFBMEIsNkNBQW1CO0FBQzdDLG1EQUFtRCxpQ0FBaUM7QUFDcEY7QUFDQSxlQUFlLDZDQUFhO0FBQzVCO0FBQ0E7QUFDQTtBQUNBOztBQUU2QiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvc3dpcGVyL3NoYXJlZC9jcmVhdGUtc2hhZG93Lm1qcz85NTZmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7
5712IGcgYXMgZ2V0U2xpZGVUcmFuc2Zvcm1FbCwgYyBhcyBjcmVhdGVFbGVtZW50IH0gZnJvbSAnLi91dGlscy5tanMnO1xuXG5mdW5jdGlvbiBjcmVhdGVTaGFkb3coc3VmZml4LCBzbGlkZUVsLCBzaWRlKSB7XG4gIGNvbnN0IHNoYWRvd0NsYXNzID0gYHN3aXBlci1zbGlkZS1zaGFkb3cke3NpZGUgPyBgLSR7c2lkZX1gIDogJyd9JHtzdWZmaXggPyBgIHN3aXBlci1zbGlkZS1zaGFkb3ctJHtzdWZmaXh9YCA6ICcnfWA7XG4gIGNvbnN0IHNoYWRvd0NvbnRhaW5lciA9IGdldFNsaWRlVHJhbnNmb3JtRWwoc2xpZGVFbCk7XG4gIGxldCBzaGFkb3dFbCA9IHNoYWRvd0NvbnRhaW5lci5xdWVyeVNlbGVjdG9yKGAuJHtzaGFkb3dDbGFzcy5zcGxpdCgnICcpLmpvaW4oJy4nKX1gKTtcbiAgaWYgKCFzaGFkb3dFbCkge1xuICAgIHNoYWRvd0VsID0gY3JlYXRlRWxlbWVudCgnZGl2Jywgc2hhZG93Q2xhc3Muc3BsaXQoJyAnKSk7XG4gICAgc2hhZG93Q29udGFpbmVyLmFwcGVuZChzaGFkb3dFbCk7XG4gIH1cbiAgcmV0dXJuIHNoYWRvd0VsO1xufVxuXG5leHBvcnQgeyBjcmVhdGVTaGFkb3cgYXMgYyB9O1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==
5713//# sourceURL=webpack-internal:///../node_modules/swiper/shared/create-shadow.mjs
5714
5715}`)},"../node_modules/swiper/shared/effect-init.mjs"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval(`{__webpack_require__.r(__webpack_exports__);
5716/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5717/* harmony export */   e: () => (/* binding */ effectInit)
5718/* harmony export */ });
5719function effectInit(params) {
5720  const {
5721    effect,
5722    swiper,
5723    on,
5724    setTranslate,
5725    setTransition,
5726    overwriteParams,
5727    perspective,
5728    recreateShadows,
5729    getEffectParams
5730  } = params;
5731  on('beforeInit', () => {
5732    if (swiper.params.effect !== effect) return;
5733    swiper.classNames.push(\`\${swiper.params.containerModifierClass}\${effect}\`);
5734    if (perspective && perspective()) {
5735      swiper.classNames.push(\`\${swiper.params.containerModifierClass}3d\`);
5736    }
5737    const overwriteParamsResult = overwriteParams ? overwriteParams() : {};
5738    Object.assign(swiper.params, overwriteParamsResult);
5739    Object.assign(swiper.originalParams, overwriteParamsResult);
5740  });
5741  on('setTranslate _virtualUpdated', () => {
5742    if (swiper.params.effect !== effect) return;
5743    setTranslate();
5744  });
5745  on('setTransition', (_s, duration) => {
5746    if (swiper.params.effect !== effect) return;
5747    setTransition(duration);
5748  });
5749  on('transitionEnd', () => {
5750    if (swiper.params.effect !== effect) return;
5751    if (recreateShadows) {
5752      if (!getEffectParams || !getEffectParams().slideShadows) return;
5753      // remove shadows
vendor: 11,585 bytes, lines 5754-5878
5754      swiper.slides.forEach(slideEl => {
5755        slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove());
5756      });
5757      // create new one
5758      recreateShadows();
5759    }
5760  });
5761  let requireUpdateOnVirtual;
5762  on('virtualUpdate', () => {
5763    if (swiper.params.effect !== effect) return;
5764    if (!swiper.slides.length) {
5765      requireUpdateOnVirtual = true;
5766    }
5767    requestAnimationFrame(() => {
5768      if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {
5769        setTranslate();
5770        requireUpdateOnVirtual = false;
5771      }
5772    });
5773  });
5774}
5775
5776
5777//# sourceURL=[module]
5778//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9zaGFyZWQvZWZmZWN0LWluaXQubWpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSw4QkFBOEIscUNBQXFDLEVBQUUsT0FBTztBQUM1RTtBQUNBLGdDQUFnQyxxQ0FBcUM7QUFDckU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7O0FBRTJCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9zd2lwZXIvc2hhcmVkL2VmZmVjdC1pbml0Lm1qcz84NDA1Il0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIGVmZmVjdEluaXQocGFyYW1zKSB7XG4gIGNvbnN0IHtcbiAgICBlZmZlY3QsXG4gICAgc3dpcGVyLFxuICAgIG9uLFxuICAgIHNldFRyYW5zbGF0ZSxcbiAgICBzZXRUcmFuc2l0aW9uLFxuICAgIG92ZXJ3cml0ZVBhcmFtcyxcbiAgICBwZXJzcGVjdGl2ZSxcbiAgICByZWNyZWF0ZVNoYWRvd3MsXG4gICAgZ2V0RWZmZWN0UGFyYW1zXG4gIH0gPSBwYXJhbXM7XG4gIG9uKCdiZWZvcmVJbml0JywgKCkgPT4ge1xuICAgIGlmIChzd2lwZXIucGFyYW1zLmVmZmVjdCAhPT0gZWZmZWN0KSByZXR1cm47XG4gICAgc3dpcGVyLmNsYXNzTmFtZXMucHVzaChgJHtzd2lwZXIucGFyYW1zLmNvbnRhaW5lck1vZGlmaWVyQ2xhc3N9JHtlZmZlY3R9YCk7XG4gICAgaWYgKHBlcnNwZWN0aXZlICYmIHBlcnNwZWN0aXZlKCkpIHtcbiAgICAgIHN3aXBlci5jbGFzc05hbWVzLnB1c2goYCR7c3dpcGVyLnBhcmFtcy5jb250YWluZXJNb2RpZmllckNsYXNzfTNkYCk7XG4gICAgfVxuICAgIGNvbnN0IG92ZXJ3cml0ZVBhcmFtc1Jlc3VsdCA9IG92ZXJ3cml0ZVBhcmFtcyA/IG92ZXJ3cml0ZVBhcmFtcygpIDoge307XG4gICAgT2JqZWN0LmFzc2lnbihzd2lwZXIucGFyYW1zLCBvdmVyd3JpdGVQYXJhbXNSZXN1bHQpO1xuICAgIE9iamVjdC5hc3NpZ24oc3dpcGVyLm9yaWdpbmFsUGFyYW1zLCBvdmVyd3JpdGVQYXJhbXNSZXN1bHQpO1xuICB9KTtcbiAgb24oJ3NldFRyYW5zbGF0ZSBfdmlydHVhbFVwZGF0ZWQnLCAoKSA9PiB7XG4gICAgaWYgKHN3aXBlci5wYXJhbXMuZWZmZWN0ICE9PSBlZmZlY3QpIHJldHVybjtcbiAgICBzZXRUcmFuc2xhdGUoKTtcbiAgfSk7XG4gIG9uKCdzZXRUcmFuc2l0aW9uJywgKF9zLCBkdXJhdGlvbikgPT4ge1xuICAgIGlmIChzd2lwZXIucGFyYW1zLmVmZmVjdCAhPT0gZWZmZWN0KSByZXR1cm47XG4gICAgc2V0VHJhbnNpdGlvbihkdXJhdGlvbik7XG4gIH0pO1xuICBvbigndHJhbnNpdGlvbkVuZCcsICgpID0+IHtcbiAgICBpZiAoc3dpcGVyLnBhcmFtcy5lZmZlY3QgIT09IGVmZmVjdCkgcmV0dXJuO1xuICAgIGlmIChyZWNyZWF0ZVNoYWRvd3MpIHtcbiAgICAgIGlmICghZ2V0RWZmZWN0UGFyYW1zIHx8ICFnZXRFZmZlY3RQYXJhbXMoKS5zbGlkZVNoYWRvd3MpIHJldHVybjtcbiAgICAgIC8vIHJlbW92ZSBzaGFkb3dzXG4gICAgICBzd2lwZXIuc2xpZGVzLmZvckVhY2goc2xpZGVFbCA9PiB7XG4gICAgICAgIHNsaWRlRWwucXVlcnlTZWxlY3RvckFsbCgnLnN3aXBlci1zbGlkZS1zaGFkb3ctdG9wLCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1yaWdodCwgLnN3aXBlci1zbGlkZS1zaGFkb3ctYm90dG9tLCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1sZWZ0JykuZm9yRWFjaChzaGFkb3dFbCA9PiBzaGFkb3dFbC5yZW1vdmUoKSk7XG4gICAgICB9KTtcbiAgICAgIC8vIGNyZWF0ZSBuZXcgb25lXG4gICAgICByZWNyZWF0ZVNoYWRvd3MoKTtcbiAgICB9XG4gIH0pO1xuICBsZXQgcmVxdWlyZVVwZGF0ZU9uVmlydHVhbDtcbiAgb24oJ3ZpcnR1YWxVcGRhdGUnLCAoKSA9PiB7XG4gICAgaWYgKHN3aXBlci5wYXJhbXMuZWZmZWN0ICE9PSBlZmZlY3QpIHJldHVybjtcbiAgICBpZiAoIXN3aXBlci5zbGlkZXMubGVuZ3RoKSB7XG4gICAgICByZXF1aXJlVXBkYXRlT25WaXJ0dWFsID0gdHJ1ZTtcbiAgICB9XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgIGlmIChyZXF1aXJlVXBkYXRlT25WaXJ0dWFsICYmIHN3aXBlci5zbGlkZXMgJiYgc3dpcGVyLnNsaWRlcy5sZW5ndGgpIHtcbiAgICAgICAgc2V0VHJhbnNsYXRlKCk7XG4gICAgICAgIHJlcXVpcmVVcGRhdGVPblZpcnR1YWwgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG5cbmV4cG9ydCB7IGVmZmVjdEluaXQgYXMgZSB9O1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==
5779//# sourceURL=webpack-internal:///../node_modules/swiper/shared/effect-init.mjs
5780
5781}`)},"../node_modules/swiper/shared/effect-target.mjs"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval(`{__webpack_require__.r(__webpack_exports__);
5782/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5783/* harmony export */   e: () => (/* binding */ effectTarget)
5784/* harmony export */ });
5785/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils.mjs */ "../node_modules/swiper/shared/utils.mjs");
5786
5787
5788function effectTarget(effectParams, slideEl) {
5789  const transformEl = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(slideEl);
5790  if (transformEl !== slideEl) {
5791    transformEl.style.backfaceVisibility = 'hidden';
5792    transformEl.style['-webkit-backface-visibility'] = 'hidden';
5793  }
5794  return transformEl;
5795}
5796
5797
5798//# sourceURL=[module]
5799//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9zaGFyZWQvZWZmZWN0LXRhcmdldC5tanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBdUQ7O0FBRXZEO0FBQ0Esc0JBQXNCLDZDQUFtQjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRTZCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9zd2lwZXIvc2hhcmVkL2VmZmVjdC10YXJnZXQubWpzPzY2MTciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZyBhcyBnZXRTbGlkZVRyYW5zZm9ybUVsIH0gZnJvbSAnLi91dGlscy5tanMnO1xuXG5mdW5jdGlvbiBlZmZlY3RUYXJnZXQoZWZmZWN0UGFyYW1zLCBzbGlkZUVsKSB7XG4gIGNvbnN0IHRyYW5zZm9ybUVsID0gZ2V0U2xpZGVUcmFuc2Zvcm1FbChzbGlkZUVsKTtcbiAgaWYgKHRyYW5zZm9ybUVsICE9PSBzbGlkZUVsKSB7XG4gICAgdHJhbnNmb3JtRWwuc3R5bGUuYmFja2ZhY2VWaXNpYmlsaXR5ID0gJ2hpZGRlbic7XG4gICAgdHJhbnNmb3JtRWwuc3R5bGVbJy13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eSddID0gJ2hpZGRlbic7XG4gIH1cbiAgcmV0dXJuIHRyYW5zZm9ybUVsO1xufVxuXG5leHBvcnQgeyBlZmZlY3RUYXJnZXQgYXMgZSB9O1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==
5800//# sourceURL=webpack-internal:///../node_modules/swiper/shared/effect-target.mjs
5801
5802}`)},"../node_modules/swiper/shared/effect-virtual-transition-end.mjs"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval(`{__webpack_require__.r(__webpack_exports__);
5803/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5804/* harmony export */   e: () => (/* binding */ effectVirtualTransitionEnd)
5805/* harmony export */ });
5806/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils.mjs */ "../node_modules/swiper/shared/utils.mjs");
5807
5808
5809function effectVirtualTransitionEnd(_ref) {
5810  let {
5811    swiper,
5812    duration,
5813    transformElements,
5814    allSlides
5815  } = _ref;
5816  const {
5817    activeIndex
5818  } = swiper;
5819  const getSlide = el => {
5820    if (!el.parentElement) {
5821      // assume shadow root
5822      const slide = swiper.slides.find(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode);
5823      return slide;
5824    }
5825    return el.parentElement;
5826  };
5827  if (swiper.params.virtualTranslate && duration !== 0) {
5828    let eventTriggered = false;
5829    let transitionEndTarget;
5830    if (allSlides) {
5831      transitionEndTarget = transformElements;
5832    } else {
5833      transitionEndTarget = transformElements.filter(transformEl => {
5834        const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl;
5835        return swiper.getSlideIndex(el) === activeIndex;
5836      });
5837    }
5838    transitionEndTarget.forEach(el => {
5839      (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.l)(el, () => {
5840        if (eventTriggered) return;
5841        if (!swiper || swiper.destroyed) return;
5842        eventTriggered = true;
5843        swiper.animating = false;
5844        const evt = new window.CustomEvent('transitionend', {
5845          bubbles: true,
5846          cancelable: true
5847        });
5848        swiper.wrapperEl.dispatchEvent(evt);
5849      });
5850    });
5851  }
5852}
5853
5854
5855//# sourceURL=[module]
5856//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9zaGFyZWQvZWZmZWN0LXZpcnR1YWwtdHJhbnNpdGlvbi1lbmQubWpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQXdEOztBQUV4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE1BQU0sNkNBQW9CO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBOztBQUUyQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvc3dpcGVyL3NoYXJlZC9lZmZlY3QtdmlydHVhbC10cmFuc2l0aW9uLWVuZC5tanM/NzNhOCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBsIGFzIGVsZW1lbnRUcmFuc2l0aW9uRW5kIH0gZnJvbSAnLi91dGlscy5tanMnO1xuXG5mdW5jdGlvbiBlZmZlY3RWaXJ0dWFsVHJhbnNpdGlvbkVuZChfcmVmKSB7XG4gIGxldCB7XG4gICAgc3dpcGVyLFxuICAgIGR1cmF0aW9uLFxuICAgIHRyYW5zZm9ybUVsZW1lbnRzLFxuICAgIGFsbFNsaWRlc1xuICB9ID0gX3JlZjtcbiAgY29uc3Qge1xuICAgIGFjdGl2ZUluZGV4XG4gIH0gPSBzd2lwZXI7XG4gIGNvbnN0IGdldFNsaWRlID0gZWwgPT4ge1xuICAgIGlmICghZWwucGFyZW50RWxlbWVudCkge1xuICAgICAgLy8gYXNzdW1lIHNoYWRvdyByb290XG4gICAgICBjb25zdCBzbGlkZSA9IHN3aXBlci5zbGlkZXMuZmluZChzbGlkZUVsID0+IHNsaWRlRWwuc2hhZG93Um9vdCAmJiBzbGlkZUVsLnNoYWRvd1Jvb3QgPT09IGVsLnBhcmVudE5vZGUpO1xuICAgICAgcmV0dXJuIHNsaWRlO1xuICAgIH1cbiAgICByZXR1cm4gZWwucGFyZW50RWxlbWVudDtcbiAgfTtcbiAgaWYgKHN3aXBlci5wYXJhbXMudmlydHVhbFRyYW5zbGF0ZSAmJiBkdXJhdGlvbiAhPT0gMCkge1xuICAgIGxldCBldmVudFRyaWdnZXJlZCA9IGZhbHNlO1xuICAgIGxldCB0cmFuc2l0aW9uRW5kVGFyZ2V0O1xuICAgIGlmIChhbGxTbGlkZXMpIHtcbiAgICAgIHRyYW5zaXRpb25FbmRUYXJnZXQgPSB0cmFuc2Zvcm1FbGVtZW50cztcbiAgICB9IGVsc2Uge1xuICAgICAgdHJhbnNpdGlvbkVuZFRhcmdldCA9IHRyYW5zZm9ybUVsZW1lbnRzLmZpbHRlcih0cmFuc2Zvcm1FbCA9PiB7XG4gICAgICAgIGNvbnN0IGVsID0gdHJhbnNmb3JtRWwuY2xhc3NMaXN0LmNvbnRhaW5zKCdzd2lwZXItc2xpZGUtdHJhbnNmb3JtJykgPyBnZXRTbGlkZSh0cmFuc2Zvcm1FbCkgOiB0cmFuc2Zvcm1FbDtcbiAgICAgICAgcmV0dXJuIHN3aXBlci5nZXRTbGlkZUluZGV4KGVsKSA9PT0gYWN0aXZlSW5kZXg7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdHJhbnNpdGlvbkVuZFRhcmdldC5mb3JFYWNoKGVsID0+IHtcbiAgICAgIGVsZW1lbnRUcmFuc2l0aW9uRW5kKGVsLCAoKSA9PiB7XG4gICAgICAgIGlmIChldmVudFRyaWdnZXJlZCkgcmV0dXJuO1xuICAgICAgICBpZiAoIXN3aXBlciB8fCBzd2lwZXIuZGVzdHJveWVkKSByZXR1cm47XG4gICAgICAgIGV2ZW50VHJpZ2dlcmVkID0gdHJ1ZTtcbiAgICAgICAgc3dpcGVyLmFuaW1hdGluZyA9IGZhbHNlO1xuICAgICAgICBjb25zdCBldnQgPSBuZXcgd2luZG93LkN1c3RvbUV2ZW50KCd0cmFuc2l0aW9uZW5kJywge1xuICAgICAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICAgICAgY2FuY2VsYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgICAgc3dpcGVyLndyYXBwZXJFbC5kaXNwYXRjaEV2ZW50KGV2dCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgeyBlZmZlY3RWaXJ0dWFsVHJhbnNpdGlvbkVuZCBhcyBlIH07XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9
5857//# sourceURL=webpack-internal:///../node_modules/swiper/shared/effect-virtual-transition-end.mjs
5858
5859}`)},"../node_modules/swiper/shared/ssr-window.esm.mjs"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval(`{__webpack_require__.r(__webpack_exports__);
5860/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5861/* harmony export */   a: () => (/* binding */ getWindow),
5862/* harmony export */   g: () => (/* binding */ getDocument)
5863/* harmony export */ });
5864/**
5865 * SSR Window 5.0.1
5866 * Better handling for window object in SSR environment
5867 * https://github.com/nolimits4web/ssr-window
5868 *
5869 * Copyright 2025, Vladimir Kharlampidi
5870 *
5871 * Licensed under MIT
5872 *
5873 * Released on: June 27, 2025
5874 */
5875/* eslint-disable no-param-reassign */
5876function isObject(obj) {
5877  return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;
5878}
vendor: 5,428 bytes, lines 5879-6011
5879function extend(target, src) {
5880  if (target === void 0) {
5881    target = {};
5882  }
5883  if (src === void 0) {
5884    src = {};
5885  }
5886  const noExtend = ['__proto__', 'constructor', 'prototype'];
5887  Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => {
5888    if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {
5889      extend(target[key], src[key]);
5890    }
5891  });
5892}
5893const ssrDocument = {
5894  body: {},
5895  addEventListener() {},
5896  removeEventListener() {},
5897  activeElement: {
5898    blur() {},
5899    nodeName: ''
5900  },
5901  querySelector() {
5902    return null;
5903  },
5904  querySelectorAll() {
5905    return [];
5906  },
5907  getElementById() {
5908    return null;
5909  },
5910  createEvent() {
5911    return {
5912      initEvent() {}
5913    };
5914  },
5915  createElement() {
5916    return {
5917      children: [],
5918      childNodes: [],
5919      style: {},
5920      setAttribute() {},
5921      getElementsByTagName() {
5922        return [];
5923      }
5924    };
5925  },
5926  createElementNS() {
5927    return {};
5928  },
5929  importNode() {
5930    return null;
5931  },
5932  location: {
5933    hash: '',
5934    host: '',
5935    hostname: '',
5936    href: '',
5937    origin: '',
5938    pathname: '',
5939    protocol: '',
5940    search: ''
5941  }
5942};
5943function getDocument() {
5944  const doc = typeof document !== 'undefined' ? document : {};
5945  extend(doc, ssrDocument);
5946  return doc;
5947}
5948const ssrWindow = {
5949  document: ssrDocument,
5950  navigator: {
5951    userAgent: ''
5952  },
5953  location: {
5954    hash: '',
5955    host: '',
5956    hostname: '',
5957    href: '',
5958    origin: '',
5959    pathname: '',
5960    protocol: '',
5961    search: ''
5962  },
5963  history: {
5964    replaceState() {},
5965    pushState() {},
5966    go() {},
5967    back() {}
5968  },
5969  CustomEvent: function CustomEvent() {
5970    return this;
5971  },
5972  addEventListener() {},
5973  removeEventListener() {},
5974  getComputedStyle() {
5975    return {
5976      getPropertyValue() {
5977        return '';
5978      }
5979    };
5980  },
5981  Image() {},
5982  Date() {},
5983  screen: {},
5984  setTimeout() {},
5985  clearTimeout() {},
5986  matchMedia() {
5987    return {};
5988  },
5989  requestAnimationFrame(callback) {
5990    if (typeof setTimeout === 'undefined') {
5991      callback();
5992      return null;
5993    }
5994    return setTimeout(callback, 0);
5995  },
5996  cancelAnimationFrame(id) {
5997    if (typeof setTimeout === 'undefined') {
5998      return;
5999    }
6000    clearTimeout(id);
6001  }
6002};
6003function getWindow() {
6004  const win = typeof window !== 'undefined' ? window : {};
6005  extend(win, ssrWindow);
6006  return win;
6007}
6008
6009
6010//# sourceURL=[module]
6011//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9zaGFyZWQvc3NyLXdpbmRvdy5lc20ubWpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUVBQW1FO0FBQ25FO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLFVBQVU7QUFDVix1QkFBdUI7QUFDdkIsMEJBQTBCO0FBQzFCO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxxQkFBcUI7QUFDckIsa0JBQWtCO0FBQ2xCLFdBQVc7QUFDWDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNILHVCQUF1QjtBQUN2QiwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILFlBQVk7QUFDWixXQUFXO0FBQ1gsWUFBWTtBQUNaLGlCQUFpQjtBQUNqQixtQkFBbUI7QUFDbkI7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUU0QyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvc3dpcGVyL3NoYXJlZC9zc3Itd2luZG93LmVzbS5tanM/NDJhNiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNTUiBXaW5kb3cgNS4wLjFcbiAqIEJldHRlciBoYW5kbGluZyBmb3Igd2luZG93IG9iamVjdCBpbiBTU1IgZW52aXJvbm1lbnRcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2xpbWl0czR3ZWIvc3NyLXdpbmRvd1xuICpcbiAqIENvcHlyaWdodCAyMDI1LCBWbGFkaW1pciBLaGFybGFtcGlkaVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVFxuICpcbiAqIFJlbGVhc2VkIG9uOiBKdW5lIDI3LCAyMDI1XG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXBhcmFtLXJlYXNzaWduICovXG5mdW5jdGlvbiBpc09iamVjdChvYmopIHtcbiAgcmV0dXJuIG9iaiAhPT0gbnVsbCAmJiB0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiAnY29uc3RydWN0b3InIGluIG9iaiAmJiBvYmouY29uc3RydWN0b3IgPT09IE9iamVjdDtcbn1cbmZ1bmN0aW9uIGV4dGVuZCh0YXJnZXQsIHNyYykge1xuICBpZiAodGFyZ2V0ID09PSB2b2lkIDApIHtcbiAgICB0YXJnZXQgPSB7fTtcbiAgfVxuICBpZiAoc3JjID09PSB2b2lkIDApIHtcbiAgICBzcmMgPSB7fTtcbiAgfVxuICBjb25zdCBub0V4dGVuZCA9IFsnX19wcm90b19fJywgJ2NvbnN0cnVjdG9yJywgJ3Byb3RvdHlwZSddO1xuICBPYmplY3Qua2V5cyhzcmMpLmZpbHRlcihrZXkgPT4gbm9FeHRlbmQuaW5kZXhPZihrZXkpIDwgMCkuZm9yRWFjaChrZXkgPT4ge1xuICAgIGlmICh0eXBlb2YgdGFyZ2V0W2tleV0gPT09ICd1bmRlZmluZWQnKSB0YXJnZXRba2V5XSA9IHNyY1trZXldO2Vsc2UgaWYgKGlzT2JqZWN0KHNyY1trZXldKSAmJiBpc09iamVjdCh0YXJnZXRba2V5XSkgJiYgT2JqZWN0LmtleXMoc3JjW2tleV0pLmxlbmd0aCA+IDApIHtcbiAgICAgIGV4dGVuZCh0YXJnZXRba2V5XSwgc3JjW2tleV0pO1xuICAgIH1cbiAgfSk7XG59XG5jb25zdCBzc3JEb2N1bWVudCA9IHtcbiAgYm9keToge30sXG4gIGFkZEV2ZW50TGlzdGVuZXIoKSB7fSxcbiAgcmVtb3ZlRXZlbnRMaXN0ZW5lcigpIHt9LFxuICBhY3RpdmVFbGVtZW50OiB7XG4gICAgYmx1cigpIHt9LFxuICAgIG5vZGVOYW1lOiAnJ1xuICB9LFxuICBxdWVyeVNlbGVjdG9yKCkge1xuICAgIHJldHVybi
6011BudWxsO1xuICB9LFxuICBxdWVyeVNlbGVjdG9yQWxsKCkge1xuICAgIHJldHVybiBbXTtcbiAgfSxcbiAgZ2V0RWxlbWVudEJ5SWQoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH0sXG4gIGNyZWF0ZUV2ZW50KCkge1xuICAgIHJldHVybiB7XG4gICAgICBpbml0RXZlbnQoKSB7fVxuICAgIH07XG4gIH0sXG4gIGNyZWF0ZUVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgIGNoaWxkTm9kZXM6IFtdLFxuICAgICAgc3R5bGU6IHt9LFxuICAgICAgc2V0QXR0cmlidXRlKCkge30sXG4gICAgICBnZXRFbGVtZW50c0J5VGFnTmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgIH07XG4gIH0sXG4gIGNyZWF0ZUVsZW1lbnROUygpIHtcbiAgICByZXR1cm4ge307XG4gIH0sXG4gIGltcG9ydE5vZGUoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH0sXG4gIGxvY2F0aW9uOiB7XG4gICAgaGFzaDogJycsXG4gICAgaG9zdDogJycsXG4gICAgaG9zdG5hbWU6ICcnLFxuICAgIGhyZWY6ICcnLFxuICAgIG9yaWdpbjogJycsXG4gICAgcGF0aG5hbWU6ICcnLFxuICAgIHByb3RvY29sOiAnJyxcbiAgICBzZWFyY2g6ICcnXG4gIH1cbn07XG5mdW5jdGlvbiBnZXREb2N1bWVudCgpIHtcbiAgY29uc3QgZG9jID0gdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyA/IGRvY3VtZW50IDoge307XG4gIGV4dGVuZChkb2MsIHNzckRvY3VtZW50KTtcbiAgcmV0dXJuIGRvYztcbn1cbmNvbnN0IHNzcldpbmRvdyA9IHtcbiAgZG9jdW1lbnQ6IHNzckRvY3VtZW50LFxuICBuYXZpZ2F0b3I6IHtcbiAgICB1c2VyQWdlbnQ6ICcnXG4gIH0sXG4gIGxvY2F0aW9uOiB7XG4gICAgaGFzaDogJycsXG4gICAgaG9zdDogJycsXG4gICAgaG9zdG5hbWU6ICcnLFxuICAgIGhyZWY6ICcnLFxuICAgIG9yaWdpbjogJycsXG4gICAgcGF0aG5hbWU6ICcnLFxuICAgIHByb3RvY29sOiAnJyxcbiAgICBzZWFyY2g6ICcnXG4gIH0sXG4gIGhpc3Rvcnk6IHtcbiAgICByZXBsYWNlU3RhdGUoKSB7fSxcbiAgICBwdXNoU3RhdGUoKSB7fSxcbiAgICBnbygpIHt9LFxuICAgIGJhY2soKSB7fVxuICB9LFxuICBDdXN0b21FdmVudDogZnVuY3Rpb24gQ3VzdG9tRXZlbnQoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIGFkZEV2ZW50TGlzdGVuZXIoKSB7fSxcbiAgcmVtb3ZlRXZlbnRMaXN0ZW5lcigpIHt9LFxuICBnZXRDb21wdXRlZFN0eWxlKCkge1xuICAgIHJldHVybiB7XG4gICAgICBnZXRQcm9wZXJ0eVZhbHVlKCkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG4gICAgfTtcbiAgfSxcbiAgSW1hZ2UoKSB7fSxcbiAgRGF0ZSgpIHt9LFxuICBzY3JlZW46IHt9LFxuICBzZXRUaW1lb3V0KCkge30sXG4gIGNsZWFyVGltZW91dCgpIHt9LFxuICBtYXRjaE1lZGlhKCkge1xuICAgIHJldHVybiB7fTtcbiAgfSxcbiAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGNhbGxiYWNrKSB7XG4gICAgaWYgKHR5cGVvZiBzZXRUaW
vendor: 14,545 bytes, lines 6011-6424
60111lb3V0ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgY2FsbGJhY2soKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gc2V0VGltZW91dChjYWxsYmFjaywgMCk7XG4gIH0sXG4gIGNhbmNlbEFuaW1hdGlvbkZyYW1lKGlkKSB7XG4gICAgaWYgKHR5cGVvZiBzZXRUaW1lb3V0ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjbGVhclRpbWVvdXQoaWQpO1xuICB9XG59O1xuZnVuY3Rpb24gZ2V0V2luZG93KCkge1xuICBjb25zdCB3aW4gPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdyA6IHt9O1xuICBleHRlbmQod2luLCBzc3JXaW5kb3cpO1xuICByZXR1cm4gd2luO1xufVxuXG5leHBvcnQgeyBnZXRXaW5kb3cgYXMgYSwgZ2V0RG9jdW1lbnQgYXMgZyB9O1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==
6012//# sourceURL=webpack-internal:///../node_modules/swiper/shared/ssr-window.esm.mjs
6013
6014}`)},"../node_modules/swiper/shared/swiper-core.mjs"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval(`{__webpack_require__.r(__webpack_exports__);
6015/* harmony export */ __webpack_require__.d(__webpack_exports__, {
6016/* harmony export */   S: () => (/* binding */ Swiper),
6017/* harmony export */   d: () => (/* binding */ defaults)
6018/* harmony export */ });
6019/* harmony import */ var _ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ssr-window.esm.mjs */ "../node_modules/swiper/shared/ssr-window.esm.mjs");
6020/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils.mjs */ "../node_modules/swiper/shared/utils.mjs");
6021
6022
6023
6024let support;
6025function calcSupport() {
6026  const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
6027  const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
6028  return {
6029    smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,
6030    touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)
6031  };
6032}
6033function getSupport() {
6034  if (!support) {
6035    support = calcSupport();
6036  }
6037  return support;
6038}
6039
6040let deviceCached;
6041function calcDevice(_temp) {
6042  let {
6043    userAgent
6044  } = _temp === void 0 ? {} : _temp;
6045  const support = getSupport();
6046  const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
6047  const platform = window.navigator.platform;
6048  const ua = userAgent || window.navigator.userAgent;
6049  const device = {
6050    ios: false,
6051    android: false
6052  };
6053  const screenWidth = window.screen.width;
6054  const screenHeight = window.screen.height;
6055  const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line
6056  let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);
6057  const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);
6058  const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);
6059  const windows = platform === 'Win32';
6060  let macos = platform === 'MacIntel';
6061
6062  // iPadOs 13 fix
6063  const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];
6064  if (!ipad && macos && support.touch && iPadScreens.indexOf(\`\${screenWidth}x\${screenHeight}\`) >= 0) {
6065    ipad = ua.match(/(Version)\\/([\\d.]+)/);
6066    if (!ipad) ipad = [0, 1, '13_0_0'];
6067    macos = false;
6068  }
6069
6070  // Android
6071  if (android && !windows) {
6072    device.os = 'android';
6073    device.android = true;
6074  }
6075  if (ipad || iphone || ipod) {
6076    device.os = 'ios';
6077    device.ios = true;
6078  }
6079
6080  // Export object
6081  return device;
6082}
6083function getDevice(overrides) {
6084  if (overrides === void 0) {
6085    overrides = {};
6086  }
6087  if (!deviceCached) {
6088    deviceCached = calcDevice(overrides);
6089  }
6090  return deviceCached;
6091}
6092
6093let browser;
6094function calcBrowser() {
6095  const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
6096  const device = getDevice();
6097  let needPerspectiveFix = false;
6098  function isSafari() {
6099    const ua = window.navigator.userAgent.toLowerCase();
6100    return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;
6101  }
6102  if (isSafari()) {
6103    const ua = String(window.navigator.userAgent);
6104    if (ua.includes('Version/')) {
6105      const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));
6106      needPerspectiveFix = major < 16 || major === 16 && minor < 2;
6107    }
6108  }
6109  const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent);
6110  const isSafariBrowser = isSafari();
6111  const need3dFix = isSafariBrowser || isWebView && device.ios;
6112  return {
6113    isSafari: needPerspectiveFix || isSafariBrowser,
6114    needPerspectiveFix,
6115    need3dFix,
6116    isWebView
6117  };
6118}
6119function getBrowser() {
6120  if (!browser) {
6121    browser = calcBrowser();
6122  }
6123  return browser;
6124}
6125
6126function Resize(_ref) {
6127  let {
6128    swiper,
6129    on,
6130    emit
6131  } = _ref;
6132  const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
6133  let observer = null;
6134  let animationFrame = null;
6135  const resizeHandler = () => {
6136    if (!swiper || swiper.destroyed || !swiper.initialized) return;
6137    emit('beforeResize');
6138    emit('resize');
6139  };
6140  const createObserver = () => {
6141    if (!swiper || swiper.destroyed || !swiper.initialized) return;
6142    observer = new ResizeObserver(entries => {
6143      animationFrame = window.requestAnimationFrame(() => {
6144        const {
6145          width,
6146          height
6147        } = swiper;
6148        let newWidth = width;
6149        let newHeight = height;
6150        entries.forEach(_ref2 => {
6151          let {
6152            contentBoxSize,
6153            contentRect,
6154            target
6155          } = _ref2;
6156          if (target && target !== swiper.el) return;
6157          newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;
6158          newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;
6159        });
6160        if (newWidth !== width || newHeight !== height) {
6161          resizeHandler();
6162        }
6163      });
6164    });
6165    observer.observe(swiper.el);
6166  };
6167  const removeObserver = () => {
6168    if (animationFrame) {
6169      window.cancelAnimationFrame(animationFrame);
6170    }
6171    if (observer && observer.unobserve && swiper.el) {
6172      observer.unobserve(swiper.el);
6173      observer = null;
6174    }
6175  };
6176  const orientationChangeHandler = () => {
6177    if (!swiper || swiper.destroyed || !swiper.initialized) return;
6178    emit('orientationchange');
6179  };
6180  on('init', () => {
6181    if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {
6182      createObserver();
6183      return;
6184    }
6185    window.addEventListener('resize', resizeHandler);
6186    window.addEventListener('orientationchange', orientationChangeHandler);
6187  });
6188  on('destroy', () => {
6189    removeObserver();
6190    window.removeEventListener('resize', resizeHandler);
6191    window.removeEventListener('orientationchange', orientationChangeHandler);
6192  });
6193}
6194
6195function Observer(_ref) {
6196  let {
6197    swiper,
6198    extendParams,
6199    on,
6200    emit
6201  } = _ref;
6202  const observers = [];
6203  const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
6204  const attach = function (target, options) {
6205    if (options === void 0) {
6206      options = {};
6207    }
6208    const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;
6209    const observer = new ObserverFunc(mutations => {
6210      // The observerUpdate event should only be triggered
6211      // once despite the number of mutations.  Additional
6212      // triggers are redundant and are very costly
6213      if (swiper.__preventObserver__) return;
6214      if (mutations.length === 1) {
6215        emit('observerUpdate', mutations[0]);
6216        return;
6217      }
6218      const observerUpdate = function observerUpdate() {
6219        emit('observerUpdate', mutations[0]);
6220      };
6221      if (window.requestAnimationFrame) {
6222        window.requestAnimationFrame(observerUpdate);
6223      } else {
6224        window.setTimeout(observerUpdate, 0);
6225      }
6226    });
6227    observer.observe(target, {
6228      attributes: typeof options.attributes === 'undefined' ? true : options.attributes,
6229      childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList,
6230      characterData: typeof options.characterData === 'undefined' ? true : options.characterData
6231    });
6232    observers.push(observer);
6233  };
6234  const init = () => {
6235    if (!swiper.params.observer) return;
6236    if (swiper.params.observeParents) {
6237      const containerParents = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.b)(swiper.hostEl);
6238      for (let i = 0; i < containerParents.length; i += 1) {
6239        attach(containerParents[i]);
6240      }
6241    }
6242    // Observe container
6243    attach(swiper.hostEl, {
6244      childList: swiper.params.observeSlideChildren
6245    });
6246
6247    // Observe wrapper
6248    attach(swiper.wrapperEl, {
6249      attributes: false
6250    });
6251  };
6252  const destroy = () => {
6253    observers.forEach(observer => {
6254      observer.disconnect();
6255    });
6256    observers.splice(0, observers.length);
6257  };
6258  extendParams({
6259    observer: false,
6260    observeParents: false,
6261    observeSlideChildren: false
6262  });
6263  on('init', init);
6264  on('destroy', destroy);
6265}
6266
6267/* eslint-disable no-underscore-dangle */
6268
6269var eventsEmitter = {
6270  on(events, handler, priority) {
6271    const self = this;
6272    if (!self.eventsListeners || self.destroyed) return self;
6273    if (typeof handler !== 'function') return self;
6274    const method = priority ? 'unshift' : 'push';
6275    events.split(' ').forEach(event => {
6276      if (!self.eventsListeners[event]) self.eventsListeners[event] = [];
6277      self.eventsListeners[event][method](handler);
6278    });
6279    return self;
6280  },
6281  once(events, handler, priority) {
6282    const self = this;
6283    if (!self.eventsListeners || self.destroyed) return self;
6284    if (typeof handler !== 'function') return self;
6285    function onceHandler() {
6286      self.off(events, onceHandler);
6287      if (onceHandler.__emitterProxy) {
6288        delete onceHandler.__emitterProxy;
6289      }
6290      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
6291        args[_key] = arguments[_key];
6292      }
6293      handler.apply(self, args);
6294    }
6295    onceHandler.__emitterProxy = handler;
6296    return self.on(events, onceHandler, priority);
6297  },
6298  onAny(handler, priority) {
6299    const self = this;
6300    if (!self.eventsListeners || self.destroyed) return self;
6301    if (typeof handler !== 'function') return self;
6302    const method = priority ? 'unshift' : 'push';
6303    if (self.eventsAnyListeners.indexOf(handler) < 0) {
6304      self.eventsAnyListeners[method](handler);
6305    }
6306    return self;
6307  },
6308  offAny(handler) {
6309    const self = this;
6310    if (!self.eventsListeners || self.destroyed) return self;
6311    if (!self.eventsAnyListeners) return self;
6312    const index = self.eventsAnyListeners.indexOf(handler);
6313    if (index >= 0) {
6314      self.eventsAnyListeners.splice(index, 1);
6315    }
6316    return self;
6317  },
6318  off(events, handler) {
6319    const self = this;
6320    if (!self.eventsListeners || self.destroyed) return self;
6321    if (!self.eventsListeners) return self;
6322    events.split(' ').forEach(event => {
6323      if (typeof handler === 'undefined') {
6324        self.eventsListeners[event] = [];
6325      } else if (self.eventsListeners[event]) {
6326        self.eventsListeners[event].forEach((eventHandler, index) => {
6327          if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {
6328            self.eventsListeners[event].splice(index, 1);
6329          }
6330        });
6331      }
6332    });
6333    return self;
6334  },
6335  emit() {
6336    const self = this;
6337    if (!self.eventsListeners || self.destroyed) return self;
6338    if (!self.eventsListeners) return self;
6339    let events;
6340    let data;
6341    let context;
6342    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
6343      args[_key2] = arguments[_key2];
6344    }
6345    if (typeof args[0] === 'string' || Array.isArray(args[0])) {
6346      events = args[0];
6347      data = args.slice(1, args.length);
6348      context = self;
6349    } else {
6350      events = args[0].events;
6351      data = args[0].data;
6352      context = args[0].context || self;
6353    }
6354    data.unshift(context);
6355    const eventsArray = Array.isArray(events) ? events : events.split(' ');
6356    eventsArray.forEach(event => {
6357      if (self.eventsAnyListeners && self.eventsAnyListeners.length) {
6358        self.eventsAnyListeners.forEach(eventHandler => {
6359          eventHandler.apply(context, [event, ...data]);
6360        });
6361      }
6362      if (self.eventsListeners && self.eventsListeners[event]) {
6363        self.eventsListeners[event].forEach(eventHandler => {
6364          eventHandler.apply(context, data);
6365        });
6366      }
6367    });
6368    return self;
6369  }
6370};
6371
6372function updateSize() {
6373  const swiper = this;
6374  let width;
6375  let height;
6376  const el = swiper.el;
6377  if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {
6378    width = swiper.params.width;
6379  } else {
6380    width = el.clientWidth;
6381  }
6382  if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {
6383    height = swiper.params.height;
6384  } else {
6385    height = el.clientHeight;
6386  }
6387  if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {
6388    return;
6389  }
6390
6391  // Subtract paddings
6392  width = width - parseInt((0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.q)(el, 'padding-left') || 0, 10) - parseInt((0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.q)(el, 'padding-right') || 0, 10);
6393  height = height - parseInt((0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.q)(el, 'padding-top') || 0, 10) - parseInt((0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.q)(el, 'padding-bottom') || 0, 10);
6394  if (Number.isNaN(width)) width = 0;
6395  if (Number.isNaN(height)) height = 0;
6396  Object.assign(swiper, {
6397    width,
6398    height,
6399    size: swiper.isHorizontal() ? width : height
6400  });
6401}
6402
6403function updateSlides() {
6404  const swiper = this;
6405  function getDirectionPropertyValue(node, label) {
6406    return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0);
6407  }
6408  const params = swiper.params;
6409  const {
6410    wrapperEl,
6411    slidesEl,
6412    size: swiperSize,
6413    rtlTranslate: rtl,
6414    wrongRTL
6415  } = swiper;
6416  const isVirtual = swiper.virtual && params.virtual.enabled;
6417  const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;
6418  const slides = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, \`.\${swiper.params.slideClass}, swiper-slide\`);
6419  const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;
6420  let snapGrid = [];
6421  const slidesGrid = [];
6422  const slidesSizesGrid = [];
6423  let offsetBefore = params.slidesOffsetBefore;
6424  if (typeof offsetBefore === 'function') {
vendor: 5,728 bytes, lines 6425-6558
6425    offsetBefore = params.slidesOffsetBefore.call(swiper);
6426  }
6427  let offsetAfter = params.slidesOffsetAfter;
6428  if (typeof offsetAfter === 'function') {
6429    offsetAfter = params.slidesOffsetAfter.call(swiper);
6430  }
6431  const previousSnapGridLength = swiper.snapGrid.length;
6432  const previousSlidesGridLength = swiper.slidesGrid.length;
6433  let spaceBetween = params.spaceBetween;
6434  let slidePosition = -offsetBefore;
6435  let prevSlideSize = 0;
6436  let index = 0;
6437  if (typeof swiperSize === 'undefined') {
6438    return;
6439  }
6440  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {
6441    spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;
6442  } else if (typeof spaceBetween === 'string') {
6443    spaceBetween = parseFloat(spaceBetween);
6444  }
6445  swiper.virtualSize = -spaceBetween;
6446
6447  // reset margins
6448  slides.forEach(slideEl => {
6449    if (rtl) {
6450      slideEl.style.marginLeft = '';
6451    } else {
6452      slideEl.style.marginRight = '';
6453    }
6454    slideEl.style.marginBottom = '';
6455    slideEl.style.marginTop = '';
6456  });
6457
6458  // reset cssMode offsets
6459  if (params.centeredSlides && params.cssMode) {
6460    (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(wrapperEl, '--swiper-centered-offset-before', '');
6461    (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(wrapperEl, '--swiper-centered-offset-after', '');
6462  }
6463  const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;
6464  if (gridEnabled) {
6465    swiper.grid.initSlides(slides);
6466  } else if (swiper.grid) {
6467    swiper.grid.unsetSlides();
6468  }
6469
6470  // Calc slides
6471  let slideSize;
6472  const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {
6473    return typeof params.breakpoints[key].slidesPerView !== 'undefined';
6474  }).length > 0;
6475  for (let i = 0; i < slidesLength; i += 1) {
6476    slideSize = 0;
6477    let slide;
6478    if (slides[i]) slide = slides[i];
6479    if (gridEnabled) {
6480      swiper.grid.updateSlide(i, slide, slides);
6481    }
6482    if (slides[i] && (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.q)(slide, 'display') === 'none') continue; // eslint-disable-line
6483
6484    if (params.slidesPerView === 'auto') {
6485      if (shouldResetSlideSize) {
6486        slides[i].style[swiper.getDirectionLabel('width')] = \`\`;
6487      }
6488      const slideStyles = getComputedStyle(slide);
6489      const currentTransform = slide.style.transform;
6490      const currentWebKitTransform = slide.style.webkitTransform;
6491      if (currentTransform) {
6492        slide.style.transform = 'none';
6493      }
6494      if (currentWebKitTransform) {
6495        slide.style.webkitTransform = 'none';
6496      }
6497      if (params.roundLengths) {
6498        slideSize = swiper.isHorizontal() ? (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.h)(slide, 'width', true) : (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.h)(slide, 'height', true);
6499      } else {
6500        // eslint-disable-next-line
6501        const width = getDirectionPropertyValue(slideStyles, 'width');
6502        const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');
6503        const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');
6504        const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');
6505        const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');
6506        const boxSizing = slideStyles.getPropertyValue('box-sizing');
6507        if (boxSizing && boxSizing === 'border-box') {
6508          slideSize = width + marginLeft + marginRight;
6509        } else {
6510          const {
6511            clientWidth,
6512            offsetWidth
6513          } = slide;
6514          slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);
6515        }
6516      }
6517      if (currentTransform) {
6518        slide.style.transform = currentTransform;
6519      }
6520      if (currentWebKitTransform) {
6521        slide.style.webkitTransform = currentWebKitTransform;
6522      }
6523      if (params.roundLengths) slideSize = Math.floor(slideSize);
6524    } else {
6525      slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;
6526      if (params.roundLengths) slideSize = Math.floor(slideSize);
6527      if (slides[i]) {
6528        slides[i].style[swiper.getDirectionLabel('width')] = \`\${slideSize}px\`;
6529      }
6530    }
6531    if (slides[i]) {
6532      slides[i].swiperSlideSize = slideSize;
6533    }
6534    slidesSizesGrid.push(slideSize);
6535    if (params.centeredSlides) {
6536      slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;
6537      if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
6538      if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
6539      if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;
6540      if (params.roundLengths) slidePosition = Math.floor(slidePosition);
6541      if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);
6542      slidesGrid.push(slidePosition);
6543    } else {
6544      if (params.roundLengths) slidePosition = Math.floor(slidePosition);
6545      if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);
6546      slidesGrid.push(slidePosition);
6547      slidePosition = slidePosition + slideSize + spaceBetween;
6548    }
6549    swiper.virtualSize += slideSize + spaceBetween;
6550    prevSlideSize = slideSize;
6551    index += 1;
6552  }
6553  swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;
6554  if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {
6555    wrapperEl.style.width = \`\${swiper.virtualSize + spaceBetween}px\`;
6556  }
6557  if (params.setWrapperSize) {
6558    wrapperEl.style[swiper.getDirectionLabel('width')] = \`\${swiper.virtualSize + spaceBetween}px\
vendor: 1,831 bytes, lines 6558-6606
6558`;
6559  }
6560  if (gridEnabled) {
6561    swiper.grid.updateWrapperSize(slideSize, snapGrid);
6562  }
6563
6564  // Remove last grid elements depending on width
6565  if (!params.centeredSlides) {
6566    const newSlidesGrid = [];
6567    for (let i = 0; i < snapGrid.length; i += 1) {
6568      let slidesGridItem = snapGrid[i];
6569      if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);
6570      if (snapGrid[i] <= swiper.virtualSize - swiperSize) {
6571        newSlidesGrid.push(slidesGridItem);
6572      }
6573    }
6574    snapGrid = newSlidesGrid;
6575    if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {
6576      snapGrid.push(swiper.virtualSize - swiperSize);
6577    }
6578  }
6579  if (isVirtual && params.loop) {
6580    const size = slidesSizesGrid[0] + spaceBetween;
6581    if (params.slidesPerGroup > 1) {
6582      const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);
6583      const groupSize = size * params.slidesPerGroup;
6584      for (let i = 0; i < groups; i += 1) {
6585        snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);
6586      }
6587    }
6588    for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {
6589      if (params.slidesPerGroup === 1) {
6590        snapGrid.push(snapGrid[snapGrid.length - 1] + size);
6591      }
6592      slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);
6593      swiper.virtualSize += size;
6594    }
6595  }
6596  if (snapGrid.length === 0) snapGrid = [0];
6597  if (spaceBetween !== 0) {
6598    const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight');
6599    slides.filter((_, slideIndex) => {
6600      if (!params.cssMode || params.loop) return true;
6601      if (slideIndex === slides.length - 1) {
6602        return false;
6603      }
6604      return true;
6605    }).forEach(slideEl => {
6606      slideEl.style[key] = 
6606\`\${spaceBetween}px\`;
6607    });
6608  }
6609  if (params.centeredSlides && params.centeredSlidesBounds) {
6610    let allSlidesSize = 0;
6611    slidesSizesGrid.forEach(slideSizeValue => {
6612      allSlidesSize += slideSizeValue + (spaceBetween || 0);
6613    });
6614    allSlidesSize -= spaceBetween;
6615    const maxSnap = allSlidesSize > swiperSize ? allSlidesSize - swiperSize : 0;
6616    snapGrid = snapGrid.map(snap => {
6617      if (snap <= 0) return -offsetBefore;
6618      if (snap > maxSnap) return maxSnap + offsetAfter;
6619      return snap;
6620    });
6621  }
6622  if (params.centerInsufficientSlides) {
6623    let allSlidesSize = 0;
6624    slidesSizesGrid.forEach(slideSizeValue => {
6625      allSlidesSize += slideSizeValue + (spaceBetween || 0);
6626    });
6627    allSlidesSize -= spaceBetween;
6628    const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0);
6629    if (allSlidesSize + offsetSize < swiperSize) {
6630      const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2;
6631      snapGrid.forEach((snap, snapIndex) => {
6632        snapGrid[snapIndex] = snap - allSlidesOffset;
6633      });
6634      slidesGrid.forEach((snap, snapIndex) => {
6635        slidesGrid[snapIndex] = snap + allSlidesOffset;
6636      });
6637    }
6638  }
6639  Object.assign(swiper, {
6640    slides,
6641    snapGrid,
6642    slidesGrid,
6643    slidesSizesGrid
6644  });
6645  if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {
6646    (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(wrapperEl, '--swiper-centered-offset-before', \`\${-snapGrid[0]}px\`);
6647    (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(wrapperEl, '--swiper-centered-offset-after', \`\${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px\`);
6648    const addToSnapGrid = -swiper.snapGrid[0];
6649    const addToSlidesGrid = -swiper.slidesGrid[0];
6650    swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);
6651    swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);
6652  }
6653  if (slidesLength !== previousSlidesLength) {
6654    swiper.emit('slidesLengthChange');
6655  }
6656  if (snapGrid.length !== previousSnapGridLength) {
6657    if (swiper.params.watchOverflow) swiper.checkOverflow();
6658    swiper.emit('snapGridLengthChange');
6659  }
6660  if (slidesGrid.length !== previousSlidesGridLength) {
6661    swiper.emit('slidesGridLengthChange');
6662  }
6663  if (params.watchSlidesProgress) {
6664    swiper.updateSlidesOffset();
6665  }
6666  swiper.emit('slidesUpdated');
6667  if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {
6668    const backFaceHiddenClass = \`\${params.containerModifierClass}backface-hidden\`;
6669    const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);
6670    if (slidesLength <= params.maxBackfaceHiddenSlides) {
6671      if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);
6672    } else if (hasClassBackfaceClassAdded) {
6673      swiper.el.classList.remove(backFaceHiddenClass);
6674    }
6675  }
6676}
6677
6678function updateAutoHeight(speed) {
6679  const swiper = this;
6680  const activeSlides = [];
6681  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
6682  let newHeight = 0;
6683  let i;
6684  if (typeof speed === 'number') {
6685    swiper.setTransition(speed);
6686  } else if (speed === true) {
6687    swiper.setTransition(swiper.params.speed);
6688  }
6689  const getSlideByIndex = index => {
6690    if (isVirtual) {
6691      return swiper.slides[swiper.getSlideIndexByData(index)];
6692    }
6693    return swiper.slides[index];
6694  };
6695  // Find slides currently in view
6696  if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {
6697    if (swiper.params.centeredSlides) {
vendor: 3,401 bytes, lines 6698-6779
6698      (swiper.visibleSlides || []).forEach(slide => {
6699        activeSlides.push(slide);
6700      });
6701    } else {
6702      for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {
6703        const index = swiper.activeIndex + i;
6704        if (index > swiper.slides.length && !isVirtual) break;
6705        activeSlides.push(getSlideByIndex(index));
6706      }
6707    }
6708  } else {
6709    activeSlides.push(getSlideByIndex(swiper.activeIndex));
6710  }
6711
6712  // Find new height from highest slide in view
6713  for (i = 0; i < activeSlides.length; i += 1) {
6714    if (typeof activeSlides[i] !== 'undefined') {
6715      const height = activeSlides[i].offsetHeight;
6716      newHeight = height > newHeight ? height : newHeight;
6717    }
6718  }
6719
6720  // Update Height
6721  if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = \`\${newHeight}px\`;
6722}
6723
6724function updateSlidesOffset() {
6725  const swiper = this;
6726  const slides = swiper.slides;
6727  // eslint-disable-next-line
6728  const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;
6729  for (let i = 0; i < slides.length; i += 1) {
6730    slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();
6731  }
6732}
6733
6734const toggleSlideClasses$1 = (slideEl, condition, className) => {
6735  if (condition && !slideEl.classList.contains(className)) {
6736    slideEl.classList.add(className);
6737  } else if (!condition && slideEl.classList.contains(className)) {
6738    slideEl.classList.remove(className);
6739  }
6740};
6741function updateSlidesProgress(translate) {
6742  if (translate === void 0) {
6743    translate = this && this.translate || 0;
6744  }
6745  const swiper = this;
6746  const params = swiper.params;
6747  const {
6748    slides,
6749    rtlTranslate: rtl,
6750    snapGrid
6751  } = swiper;
6752  if (slides.length === 0) return;
6753  if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();
6754  let offsetCenter = -translate;
6755  if (rtl) offsetCenter = translate;
6756  swiper.visibleSlidesIndexes = [];
6757  swiper.visibleSlides = [];
6758  let spaceBetween = params.spaceBetween;
6759  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {
6760    spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;
6761  } else if (typeof spaceBetween === 'string') {
6762    spaceBetween = parseFloat(spaceBetween);
6763  }
6764  for (let i = 0; i < slides.length; i += 1) {
6765    const slide = slides[i];
6766    let slideOffset = slide.swiperSlideOffset;
6767    if (params.cssMode && params.centeredSlides) {
6768      slideOffset -= slides[0].swiperSlideOffset;
6769    }
6770    const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);
6771    const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);
6772    const slideBefore = -(offsetCenter - slideOffset);
6773    const slideAfter = slideBefore + swiper.slidesSizesGrid[i];
6774    const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i];
6775    const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;
6776    if (isVisible) {
6777      swiper.visibleSlides.push(slide);
6778      swiper.visibleSlidesIndexes.push(i);
6779    }
vendor: 4,620 bytes, lines 6780-6905
6780    toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass);
6781    toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass);
6782    slide.progress = rtl ? -slideProgress : slideProgress;
6783    slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;
6784  }
6785}
6786
6787function updateProgress(translate) {
6788  const swiper = this;
6789  if (typeof translate === 'undefined') {
6790    const multiplier = swiper.rtlTranslate ? -1 : 1;
6791    // eslint-disable-next-line
6792    translate = swiper && swiper.translate && swiper.translate * multiplier || 0;
6793  }
6794  const params = swiper.params;
6795  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
6796  let {
6797    progress,
6798    isBeginning,
6799    isEnd,
6800    progressLoop
6801  } = swiper;
6802  const wasBeginning = isBeginning;
6803  const wasEnd = isEnd;
6804  if (translatesDiff === 0) {
6805    progress = 0;
6806    isBeginning = true;
6807    isEnd = true;
6808  } else {
6809    progress = (translate - swiper.minTranslate()) / translatesDiff;
6810    const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;
6811    const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;
6812    isBeginning = isBeginningRounded || progress <= 0;
6813    isEnd = isEndRounded || progress >= 1;
6814    if (isBeginningRounded) progress = 0;
6815    if (isEndRounded) progress = 1;
6816  }
6817  if (params.loop) {
6818    const firstSlideIndex = swiper.getSlideIndexByData(0);
6819    const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);
6820    const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];
6821    const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];
6822    const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];
6823    const translateAbs = Math.abs(translate);
6824    if (translateAbs >= firstSlideTranslate) {
6825      progressLoop = (translateAbs - firstSlideTranslate) / translateMax;
6826    } else {
6827      progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;
6828    }
6829    if (progressLoop > 1) progressLoop -= 1;
6830  }
6831  Object.assign(swiper, {
6832    progress,
6833    progressLoop,
6834    isBeginning,
6835    isEnd
6836  });
6837  if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);
6838  if (isBeginning && !wasBeginning) {
6839    swiper.emit('reachBeginning toEdge');
6840  }
6841  if (isEnd && !wasEnd) {
6842    swiper.emit('reachEnd toEdge');
6843  }
6844  if (wasBeginning && !isBeginning || wasEnd && !isEnd) {
6845    swiper.emit('fromEdge');
6846  }
6847  swiper.emit('progress', progress);
6848}
6849
6850const toggleSlideClasses = (slideEl, condition, className) => {
6851  if (condition && !slideEl.classList.contains(className)) {
6852    slideEl.classList.add(className);
6853  } else if (!condition && slideEl.classList.contains(className)) {
6854    slideEl.classList.remove(className);
6855  }
6856};
6857function updateSlidesClasses() {
6858  const swiper = this;
6859  const {
6860    slides,
6861    params,
6862    slidesEl,
6863    activeIndex
6864  } = swiper;
6865  const isVirtual = swiper.virtual && params.virtual.enabled;
6866  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;
6867  const getFilteredSlide = selector => {
6868    return (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, \`.\${params.slideClass}\${selector}, swiper-slide\${selector}\`)[0];
6869  };
6870  let activeSlide;
6871  let prevSlide;
6872  let nextSlide;
6873  if (isVirtual) {
6874    if (params.loop) {
6875      let slideIndex = activeIndex - swiper.virtual.slidesBefore;
6876      if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;
6877      if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;
6878      activeSlide = getFilteredSlide(\`[data-swiper-slide-index="\${slideIndex}"]\`);
6879    } else {
6880      activeSlide = getFilteredSlide(\`[data-swiper-slide-index="\${activeIndex}"]\`);
6881    }
6882  } else {
6883    if (gridEnabled) {
6884      activeSlide = slides.find(slideEl => slideEl.column === activeIndex);
6885      nextSlide = slides.find(slideEl => slideEl.column === activeIndex + 1);
6886      prevSlide = slides.find(slideEl => slideEl.column === activeIndex - 1);
6887    } else {
6888      activeSlide = slides[activeIndex];
6889    }
6890  }
6891  if (activeSlide) {
6892    if (!gridEnabled) {
6893      // Next Slide
6894      nextSlide = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.r)(activeSlide, \`.\${params.slideClass}, swiper-slide\`)[0];
6895      if (params.loop && !nextSlide) {
6896        nextSlide = slides[0];
6897      }
6898
6899      // Prev Slide
6900      prevSlide = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.t)(activeSlide, \`.\${params.slideClass}, swiper-slide\`)[0];
6901      if (params.loop && !prevSlide === 0) {
6902        prevSlide = slides[slides.length - 1];
6903      }
6904    }
6905  }
6906  slides.forEach(slideEl => {
6907    toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass);
6908    toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass);
6909    toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass);
6910  });
6911  swiper.emitSlidesClasses();
6912}
6913
6914const processLazyPreloader = (swiper, imageEl) => {
6915  if (!swiper || swiper.destroyed || !swiper.params) return;
6916  const slideSelector = () => swiper.isElement ? \`swiper-slide\` : \`.\${swiper.params.slideClass}\`;
6917  const slideEl = imageEl.closest(slideSelector());
6918  if (slideEl) {
6919    let lazyEl = slideEl.querySelector(\`.\${swiper.params.lazyPreloaderClass}\`);
6920    if (!lazyEl && swiper.isElement) {
6921      if (slideEl.shadowRoot) {
6922        lazyEl = slideEl.shadowRoot.querySelector(\`.\${swiper.params.lazyPreloaderClass}\`);
6923      } else {
6924        // init later
6925        requestAnimationFrame(() => {
6926          if (slideEl.shadowRoot) {
6927            lazyEl = slideEl.shadowRoot.querySelector(\`.\${swiper.params.lazyPreloaderClass}\`);
6928            if (lazyEl) lazyEl.remove();
6929          }
6930        });
6931      }
6932    }
6933    if (lazyEl) lazyEl.remove();
6934  }
6935};
6936const unlazy = (swiper, index) => {
6937  if (!swiper.slides[index]) return;
6938  const imageEl = swiper.slides[index].querySelector('[loading="lazy"]');
6939  if (imageEl) imageEl.removeAttribute('loading');
6940};
6941const preload = swiper => {
6942  if (!swiper || swiper.destroyed || !swiper.params) return;
6943  let amount = swiper.params.lazyPreloadPrevNext;
6944  const len = swiper.slides.length;
6945  if (!len || !amount || amount < 0) return;
6946  amount = Math.min(amount, len);
6947  const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);
6948  const activeIndex = swiper.activeIndex;
6949  if (swiper.params.grid && swiper.params.grid.rows > 1) {
6950    const activeColumn = activeIndex;
6951    const preloadColumns = [activeColumn - amount];
6952    preloadColumns.push(...Array.from({
6953      length: amount
6954    }).map((_, i) => {
6955      return activeColumn + slidesPerView + i;
6956    }));
6957    swiper.slides.forEach((slideEl, i) => {
6958      if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);
6959    });
6960    return;
6961  }
6962  const slideIndexLastInView = activeIndex + slidesPerView - 1;
6963  if (swiper.params.rewind || swiper.params.loop) {
6964    for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {
6965      const realIndex = (i % len + len) % len;
6966      if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);
6967    }
6968  } else {
6969    for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {
6970      if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {
6971        unlazy(swiper, i);
6972      }
6973    }
6974  }
6975};
6976
6977function getActiveIndexByTranslate(swiper) {
6978  const {
6979    slidesGrid,
6980    params
6981  } = swiper;
6982  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
6983  let activeIndex;
6984  for (let i = 0; i < slidesGrid.length; i += 1) {
6985    if (typeof slidesGrid[i + 1] !== 'undefined') {
6986      if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {
6987        activeIndex = i;
6988      } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {
6989        activeIndex = i + 1;
6990      }
6991    } else if (translate >= slidesGrid[i]) {
6992      activeIndex = i;
6993    }
6994  }
6995  // Normalize slideIndex
6996  if (params.normalizeSlideIndex) {
6997    if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;
6998  }
6999  return activeIndex;
7000}
7001function updateActiveIndex(newActiveIndex) {
7002  const swiper = this;
7003  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
7004  const {
7005    snapGrid,
7006    params,
7007    activeIndex: previousIndex,
7008    realIndex: previousRealIndex,
7009    snapIndex: previousSnapIndex
7010  } = swiper;
7011  let activeIndex = newActiveIndex;
7012  let snapIndex;
7013  const getVirtualRealIndex = aIndex => {
7014    let realIndex = aIndex - swiper.virtual.slidesBefore;
7015    if (realIndex < 0) {
7016      realIndex = swiper.virtual.slides.length + realIndex;
7017    }
7018    if (realIndex >= swiper.virtual.slides.length) {
7019      realIndex -= swiper.virtual.slides.length;
7020    }
7021    return realIndex;
7022  };
7023  if (typeof activeIndex === 'undefined') {
7024    activeIndex = getActiveIndexByTranslate(swiper);
7025  }
vendor: 2,346 bytes, lines 7026-7092
7026  if (snapGrid.indexOf(translate) >= 0) {
7027    snapIndex = snapGrid.indexOf(translate);
7028  } else {
7029    const skip = Math.min(params.slidesPerGroupSkip, activeIndex);
7030    snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);
7031  }
7032  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
7033  if (activeIndex === previousIndex && !swiper.params.loop) {
7034    if (snapIndex !== previousSnapIndex) {
7035      swiper.snapIndex = snapIndex;
7036      swiper.emit('snapIndexChange');
7037    }
7038    return;
7039  }
7040  if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {
7041    swiper.realIndex = getVirtualRealIndex(activeIndex);
7042    return;
7043  }
7044  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;
7045
7046  // Get real index
7047  let realIndex;
7048  if (swiper.virtual && params.virtual.enabled && params.loop) {
7049    realIndex = getVirtualRealIndex(activeIndex);
7050  } else if (gridEnabled) {
7051    const firstSlideInColumn = swiper.slides.find(slideEl => slideEl.column === activeIndex);
7052    let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10);
7053    if (Number.isNaN(activeSlideIndex)) {
7054      activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);
7055    }
7056    realIndex = Math.floor(activeSlideIndex / params.grid.rows);
7057  } else if (swiper.slides[activeIndex]) {
7058    const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index');
7059    if (slideIndex) {
7060      realIndex = parseInt(slideIndex, 10);
7061    } else {
7062      realIndex = activeIndex;
7063    }
7064  } else {
7065    realIndex = activeIndex;
7066  }
7067  Object.assign(swiper, {
7068    previousSnapIndex,
7069    snapIndex,
7070    previousRealIndex,
7071    realIndex,
7072    previousIndex,
7073    activeIndex
7074  });
7075  if (swiper.initialized) {
7076    preload(swiper);
7077  }
7078  swiper.emit('activeIndexChange');
7079  swiper.emit('snapIndexChange');
7080  if (swiper.initialized || swiper.params.runCallbacksOnInit) {
7081    if (previousRealIndex !== realIndex) {
7082      swiper.emit('realIndexChange');
7083    }
7084    swiper.emit('slideChange');
7085  }
7086}
7087
7088function updateClickedSlide(el, path) {
7089  const swiper = this;
7090  const params = swiper.params;
7091  let slide = el.closest(\`.\${params.slideClass}, swiper-slide\`);
7092  if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {
7093    [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {
7094      if (!slide && pathEl.matches && pathEl.matches(\`.\${params.slideClass}, swiper-slide\`)) {
7095        slide = pathEl;
7096      }
7097    });
7098  }
7099  let slideFound = false;
7100  let slideIndex;
7101  if (slide) {
7102    for (let i = 0; i < swiper.slides.length; i += 1) {
7103      if (swiper.slides[i] === slide) {
7104        slideFound = true;
7105        slideIndex = i;
7106        break;
7107      }
7108    }
7109  }
7110  if (slide && slideFound) {
7111    swiper.clickedSlide = slide;
7112    if (swiper.virtual && swiper.params.virtual.enabled) {
7113      swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);
7114    } else {
7115      swiper.clickedIndex = slideIndex;
7116    }
7117  } else {
7118    swiper.clickedSlide = undefined;
7119    swiper.clickedIndex = undefined;
7120    return;
7121  }
7122  if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {
7123    swiper.slideToClickedSlide();
7124  }
7125}
7126
7127var update = {
7128  updateSize,
7129  updateSlides,
7130  updateAutoHeight,
7131  updateSlidesOffset,
7132  updateSlidesProgress,
7133  updateProgress,
7134  updateSlidesClasses,
7135  updateActiveIndex,
7136  updateClickedSlide
7137};
7138
7139function getSwiperTranslate(axis) {
7140  if (axis === void 0) {
7141    axis = this.isHorizontal() ? 'x' : 'y';
7142  }
7143  const swiper = this;
7144  const {
7145    params,
7146    rtlTranslate: rtl,
7147    translate,
7148    wrapperEl
7149  } = swiper;
7150  if (params.virtualTranslate) {
7151    return rtl ? -translate : translate;
7152  }
7153  if (params.cssMode) {
7154    return translate;
7155  }
7156  let currentTranslate = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.k)(wrapperEl, axis);
7157  currentTranslate += swiper.cssOverflowAdjustment();
7158  if (rtl) currentTranslate = -currentTranslate;
7159  return currentTranslate || 0;
7160}
7161
7162function setTranslate(translate, byController) {
7163  const swiper = this;
7164  const {
7165    rtlTranslate: rtl,
7166    params,
7167    wrapperEl,
7168    progress
7169  } = swiper;
7170  let x = 0;
7171  let y = 0;
7172  const z = 0;
7173  if (swiper.isHorizontal()) {
7174    x = rtl ? -translate : translate;
7175  } else {
7176    y = translate;
7177  }
7178  if (params.roundLengths) {
7179    x = Math.floor(x);
7180    y = Math.floor(y);
7181  }
7182  swiper.previousTranslate = swiper.translate;
7183  swiper.translate = swiper.isHorizontal() ? x : y;
7184  if (params.cssMode) {
7185    wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;
7186  } else if (!params.virtualTranslate) {
7187    if (swiper.isHorizontal()) {
7188      x -= swiper.cssOverflowAdjustment();
7189    } else {
7190      y -= swiper.cssOverflowAdjustment();
7191    }
7192    wrapperEl.style.transform = \`translate3d(\${x}px, \${y}px, \${z}px)\`;
7193  }
7194
7195  // Check if we need to update progress
7196  let newProgress;
7197  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
7198  if (translatesDiff === 0) {
7199    newProgress = 0;
7200  } else {
7201    newProgress = (translate - swiper.minTranslate()) / translatesDiff;
7202  }
7203  if (newProgress !== progress) {
7204    swiper.updateProgress(translate);
7205  }
7206  swiper.emit('setTranslate', swiper.translate, byController);
7207}
7208
7209function minTranslate() {
7210  return -this.snapGrid[0];
7211}
7212
7213function maxTranslate() {
7214  return -this.snapGrid[this.snapGrid.length - 1];
7215}
7216
7217function translateTo(translate, speed, runCallbacks, translateBounds, internal) {
7218  if (translate === void 0) {
7219    translate = 0;
7220  }
7221  if (speed === void 0) {
7222    speed = this.params.speed;
7223  }
7224  if (runCallbacks === void 0) {
7225    runCallbacks = true;
7226  }
7227  if (translateBounds === void 0) {
7228    translateBounds = true;
7229  }
7230  const swiper = this;
7231  const {
7232    params,
7233    wrapperEl
7234  } = swiper;
7235  if (swiper.animating && params.preventInteractionOnTransition) {
7236    return false;
7237  }
7238  const minTranslate = swiper.minTranslate();
7239  const maxTranslate = swiper.maxTranslate();
7240  let newTranslate;
7241  if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;
7242
7243  // Update progress
7244  swiper.updateProgress(newTranslate);
7245  if (params.cssMode) {
7246    const isH = swiper.isHorizontal();
7247    if (speed === 0) {
7248      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;
7249    } else {
7250      if (!swiper.support.smoothScroll) {
7251        (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.u)({
7252          swiper,
7253          targetPosition: -newTranslate,
7254          side: isH ? 'left' : 'top'
7255        });
7256        return true;
7257      }
7258      wrapperEl.scrollTo({
7259        [isH ? 'left' : 'top']: -newTranslate,
7260        behavior: 'smooth'
7261      });
7262    }
7263    return true;
7264  }
7265  if (speed === 0) {
7266    swiper.setTransition(0);
7267    swiper.setTranslate(newTranslate);
7268    if (runCallbacks) {
7269      swiper.emit('beforeTransitionStart', speed, internal);
7270      swiper.emit('transitionEnd');
7271    }
7272  } else {
7273    swiper.setTransition(speed);
7274    swiper.setTranslate(newTranslate);
7275    if (runCallbacks) {
7276      swiper.emit('beforeTransitionStart', speed, internal);
7277      swiper.emit('transitionStart');
7278    }
7279    if (!swiper.animating) {
7280      swiper.animating = true;
7281      if (!swiper.onTranslateToWrapperTransitionEnd) {
7282        swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {
7283          if (!swiper || swiper.destroyed) return;
7284          if (e.target !== this) return;
7285          swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
7286          swiper.onTranslateToWrapperTransitionEnd = null;
7287          delete swiper.onTranslateToWrapperTransitionEnd;
7288          swiper.animating = false;
7289          if (runCallbacks) {
7290            swiper.emit('transitionEnd');
7291          }
7292        };
7293      }
7294      swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
7295    }
7296  }
7297  return true;
7298}
7299
7300var translate = {
7301  getTranslate: getSwiperTranslate,
7302  setTranslate,
7303  minTranslate,
7304  maxTranslate,
7305  translateTo
7306};
7307
7308function setTransition(duration, byController) {
7309  const swiper = this;
7310  if (!swiper.params.cssMode) {
7311    swiper.wrapperEl.style.transitionDuration = \`\${duration}ms\`;
7312    swiper.wrapperEl.style.transitionDelay = duration === 0 ? \`0ms\` : '';
7313  }
7314  swiper.emit('setTransition', duration, byController);
7315}
7316
7317function transitionEmit(_ref) {
7318  let {
7319    swiper,
7320    runCallbacks,
7321    direction,
7322    step
7323  } = _ref;
7324  const {
7325    activeIndex,
7326    previousIndex
7327  } = swiper;
7328  let dir = direction;
7329  if (!dir) {
7330    if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';
7331  }
7332  swiper.emit(\`transition\${step}\`);
7333  if (runCallbacks && dir === 'reset') {
7334    swiper.emit(\`slideResetTransition\${step}\`);
7335  } else if (runCallbacks && activeIndex !== previousIndex) {
7336    swiper.emit(\`slideChangeTransition\${step}\`);
7337    if (dir === 'next') {
7338      swiper.emit(\`slideNextTransition\${step}\`);
7339    } else {
7340      swiper.emit(\`slidePrevTransition\${step}\`);
7341    }
7342  }
7343}
7344
7345function transitionStart(runCallbacks, direction) {
7346  if (runCallbacks === void 0) {
7347    runCallbacks = true;
7348  }
7349  const swiper = this;
7350  const {
7351    params
7352  } = swiper;
7353  if (params.cssMode) return;
7354  if (params.autoHeight) {
7355    swiper.updateAutoHeight();
7356  }
7357  transitionEmit({
7358    swiper,
7359    runCallbacks,
7360    direction,
7361    step: 'Start'
7362  });
7363}
7364
7365function transitionEnd(runCallbacks, direction) {
7366  if (runCallbacks === void 0) {
7367    runCallbacks = true;
7368  }
7369  const swiper = this;
7370  const {
7371    params
7372  } = swiper;
7373  swiper.animating = false;
7374  if (params.cssMode) return;
7375  swiper.setTransition(0);
7376  transitionEmit({
7377    swiper,
7378    runCallbacks,
7379    direction,
7380    step: 'End'
7381  });
7382}
7383
7384var transition = {
7385  setTransition,
7386  transitionStart,
7387  transitionEnd
7388};
7389
7390function slideTo(index, speed, runCallbacks, internal, initial) {
7391  if (index === void 0) {
7392    index = 0;
7393  }
7394  if (runCallbacks === void 0) {
7395    runCallbacks = true;
7396  }
7397  if (typeof index === 'string') {
7398    index = parseInt(index, 10);
7399  }
7400  const swiper = this;
7401  let slideIndex = index;
7402  if (slideIndex < 0) slideIndex = 0;
7403  const {
7404    params,
7405    snapGrid,
7406    slidesGrid,
7407    previousIndex,
7408    activeIndex,
7409    rtlTranslate: rtl,
7410    wrapperEl,
7411    enabled
7412  } = swiper;
7413  if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) {
7414    return false;
7415  }
7416  if (typeof speed === 'undefined') {
7417    speed = swiper.params.speed;
7418  }
7419  const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);
7420  let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);
7421  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
7422  const translate = -snapGrid[snapIndex];
7423  // Normalize slideIndex
7424  if (params.normalizeSlideIndex) {
7425    for (let i = 0; i < slidesGrid.length; i += 1) {
7426      const normalizedTranslate = -Math.floor(translate * 100);
7427      const normalizedGrid = Math.floor(slidesGrid[i] * 100);
7428      const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);
7429      if (typeof slidesGrid[i + 1] !== 'undefined') {
7430        if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {
7431          slideIndex = i;
7432        } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {
7433          slideIndex = i + 1;
7434        }
7435      } else if (normalizedTranslate >= normalizedGrid) {
7436        slideIndex = i;
7437      }
7438    }
7439  }
7440  // Directions locks
7441  if (swiper.initialized && slideIndex !== activeIndex) {
7442    if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {
7443      return false;
vendor: 2,073 bytes, lines 7444-7504
7444    }
7445    if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {
7446      if ((activeIndex || 0) !== slideIndex) {
7447        return false;
7448      }
7449    }
7450  }
7451  if (slideIndex !== (previousIndex || 0) && runCallbacks) {
7452    swiper.emit('beforeSlideChangeStart');
7453  }
7454
7455  // Update progress
7456  swiper.updateProgress(translate);
7457  let direction;
7458  if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';
7459
7460  // initial virtual
7461  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
7462  const isInitialVirtual = isVirtual && initial;
7463  // Update Index
7464  if (!isInitialVirtual && (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate)) {
7465    swiper.updateActiveIndex(slideIndex);
7466    // Update Height
7467    if (params.autoHeight) {
7468      swiper.updateAutoHeight();
7469    }
7470    swiper.updateSlidesClasses();
7471    if (params.effect !== 'slide') {
7472      swiper.setTranslate(translate);
7473    }
7474    if (direction !== 'reset') {
7475      swiper.transitionStart(runCallbacks, direction);
7476      swiper.transitionEnd(runCallbacks, direction);
7477    }
7478    return false;
7479  }
7480  if (params.cssMode) {
7481    const isH = swiper.isHorizontal();
7482    const t = rtl ? translate : -translate;
7483    if (speed === 0) {
7484      if (isVirtual) {
7485        swiper.wrapperEl.style.scrollSnapType = 'none';
7486        swiper._immediateVirtual = true;
7487      }
7488      if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {
7489        swiper._cssModeVirtualInitialSet = true;
7490        requestAnimationFrame(() => {
7491          wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;
7492        });
7493      } else {
7494        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;
7495      }
7496      if (isVirtual) {
7497        requestAnimationFrame(() => {
7498          swiper.wrapperEl.style.scrollSnapType = '';
7499          swiper._immediateVirtual = false;
7500        });
7501      }
7502    } else {
7503      if (!swiper.support.smoothScroll) {
7504        (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.u)
vendor: 10,500 bytes, lines 7504-7793
7504({
7505          swiper,
7506          targetPosition: t,
7507          side: isH ? 'left' : 'top'
7508        });
7509        return true;
7510      }
7511      wrapperEl.scrollTo({
7512        [isH ? 'left' : 'top']: t,
7513        behavior: 'smooth'
7514      });
7515    }
7516    return true;
7517  }
7518  const browser = getBrowser();
7519  const isSafari = browser.isSafari;
7520  if (isVirtual && !initial && isSafari && swiper.isElement) {
7521    swiper.virtual.update(false, false, slideIndex);
7522  }
7523  swiper.setTransition(speed);
7524  swiper.setTranslate(translate);
7525  swiper.updateActiveIndex(slideIndex);
7526  swiper.updateSlidesClasses();
7527  swiper.emit('beforeTransitionStart', speed, internal);
7528  swiper.transitionStart(runCallbacks, direction);
7529  if (speed === 0) {
7530    swiper.transitionEnd(runCallbacks, direction);
7531  } else if (!swiper.animating) {
7532    swiper.animating = true;
7533    if (!swiper.onSlideToWrapperTransitionEnd) {
7534      swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {
7535        if (!swiper || swiper.destroyed) return;
7536        if (e.target !== this) return;
7537        swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
7538        swiper.onSlideToWrapperTransitionEnd = null;
7539        delete swiper.onSlideToWrapperTransitionEnd;
7540        swiper.transitionEnd(runCallbacks, direction);
7541      };
7542    }
7543    swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
7544  }
7545  return true;
7546}
7547
7548function slideToLoop(index, speed, runCallbacks, internal) {
7549  if (index === void 0) {
7550    index = 0;
7551  }
7552  if (runCallbacks === void 0) {
7553    runCallbacks = true;
7554  }
7555  if (typeof index === 'string') {
7556    const indexAsNumber = parseInt(index, 10);
7557    index = indexAsNumber;
7558  }
7559  const swiper = this;
7560  if (swiper.destroyed) return;
7561  if (typeof speed === 'undefined') {
7562    speed = swiper.params.speed;
7563  }
7564  const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;
7565  let newIndex = index;
7566  if (swiper.params.loop) {
7567    if (swiper.virtual && swiper.params.virtual.enabled) {
7568      // eslint-disable-next-line
7569      newIndex = newIndex + swiper.virtual.slidesBefore;
7570    } else {
7571      let targetSlideIndex;
7572      if (gridEnabled) {
7573        const slideIndex = newIndex * swiper.params.grid.rows;
7574        targetSlideIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column;
7575      } else {
7576        targetSlideIndex = swiper.getSlideIndexByData(newIndex);
7577      }
7578      const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;
7579      const {
7580        centeredSlides
7581      } = swiper.params;
7582      let slidesPerView = swiper.params.slidesPerView;
7583      if (slidesPerView === 'auto') {
7584        slidesPerView = swiper.slidesPerViewDynamic();
7585      } else {
7586        slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));
7587        if (centeredSlides && slidesPerView % 2 === 0) {
7588          slidesPerView = slidesPerView + 1;
7589        }
7590      }
7591      let needLoopFix = cols - targetSlideIndex < slidesPerView;
7592      if (centeredSlides) {
7593        needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);
7594      }
7595      if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) {
7596        needLoopFix = false;
7597      }
7598      if (needLoopFix) {
7599        const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';
7600        swiper.loopFix({
7601          direction,
7602          slideTo: true,
7603          activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1,
7604          slideRealIndex: direction === 'next' ? swiper.realIndex : undefined
7605        });
7606      }
7607      if (gridEnabled) {
7608        const slideIndex = newIndex * swiper.params.grid.rows;
7609        newIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column;
7610      } else {
7611        newIndex = swiper.getSlideIndexByData(newIndex);
7612      }
7613    }
7614  }
7615  requestAnimationFrame(() => {
7616    swiper.slideTo(newIndex, speed, runCallbacks, internal);
7617  });
7618  return swiper;
7619}
7620
7621/* eslint no-unused-vars: "off" */
7622function slideNext(speed, runCallbacks, internal) {
7623  if (runCallbacks === void 0) {
7624    runCallbacks = true;
7625  }
7626  const swiper = this;
7627  const {
7628    enabled,
7629    params,
7630    animating
7631  } = swiper;
7632  if (!enabled || swiper.destroyed) return swiper;
7633  if (typeof speed === 'undefined') {
7634    speed = swiper.params.speed;
7635  }
7636  let perGroup = params.slidesPerGroup;
7637  if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {
7638    perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);
7639  }
7640  const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;
7641  const isVirtual = swiper.virtual && params.virtual.enabled;
7642  if (params.loop) {
7643    if (animating && !isVirtual && params.loopPreventsSliding) return false;
7644    swiper.loopFix({
7645      direction: 'next'
7646    });
7647    // eslint-disable-next-line
7648    swiper._clientLeft = swiper.wrapperEl.clientLeft;
7649    if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {
7650      requestAnimationFrame(() => {
7651        swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);
7652      });
7653      return true;
7654    }
7655  }
7656  if (params.rewind && swiper.isEnd) {
7657    return swiper.slideTo(0, speed, runCallbacks, internal);
7658  }
7659  return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);
7660}
7661
7662/* eslint no-unused-vars: "off" */
7663function slidePrev(speed, runCallbacks, internal) {
7664  if (runCallbacks === void 0) {
7665    runCallbacks = true;
7666  }
7667  const swiper = this;
7668  const {
7669    params,
7670    snapGrid,
7671    slidesGrid,
7672    rtlTranslate,
7673    enabled,
7674    animating
7675  } = swiper;
7676  if (!enabled || swiper.destroyed) return swiper;
7677  if (typeof speed === 'undefined') {
7678    speed = swiper.params.speed;
7679  }
7680  const isVirtual = swiper.virtual && params.virtual.enabled;
7681  if (params.loop) {
7682    if (animating && !isVirtual && params.loopPreventsSliding) return false;
7683    swiper.loopFix({
7684      direction: 'prev'
7685    });
7686    // eslint-disable-next-line
7687    swiper._clientLeft = swiper.wrapperEl.clientLeft;
7688  }
7689  const translate = rtlTranslate ? swiper.translate : -swiper.translate;
7690  function normalize(val) {
7691    if (val < 0) return -Math.floor(Math.abs(val));
7692    return Math.floor(val);
7693  }
7694  const normalizedTranslate = normalize(translate);
7695  const normalizedSnapGrid = snapGrid.map(val => normalize(val));
7696  const isFreeMode = params.freeMode && params.freeMode.enabled;
7697  let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];
7698  if (typeof prevSnap === 'undefined' && (params.cssMode || isFreeMode)) {
7699    let prevSnapIndex;
7700    snapGrid.forEach((snap, snapIndex) => {
7701      if (normalizedTranslate >= snap) {
7702        // prevSnap = snap;
7703        prevSnapIndex = snapIndex;
7704      }
7705    });
7706    if (typeof prevSnapIndex !== 'undefined') {
7707      prevSnap = isFreeMode ? snapGrid[prevSnapIndex] : snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];
7708    }
7709  }
7710  let prevIndex = 0;
7711  if (typeof prevSnap !== 'undefined') {
7712    prevIndex = slidesGrid.indexOf(prevSnap);
7713    if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;
7714    if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {
7715      prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;
7716      prevIndex = Math.max(prevIndex, 0);
7717    }
7718  }
7719  if (params.rewind && swiper.isBeginning) {
7720    const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;
7721    return swiper.slideTo(lastIndex, speed, runCallbacks, internal);
7722  } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {
7723    requestAnimationFrame(() => {
7724      swiper.slideTo(prevIndex, speed, runCallbacks, internal);
7725    });
7726    return true;
7727  }
7728  return swiper.slideTo(prevIndex, speed, runCallbacks, internal);
7729}
7730
7731/* eslint no-unused-vars: "off" */
7732function slideReset(speed, runCallbacks, internal) {
7733  if (runCallbacks === void 0) {
7734    runCallbacks = true;
7735  }
7736  const swiper = this;
7737  if (swiper.destroyed) return;
7738  if (typeof speed === 'undefined') {
7739    speed = swiper.params.speed;
7740  }
7741  return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);
7742}
7743
7744/* eslint no-unused-vars: "off" */
7745function slideToClosest(speed, runCallbacks, internal, threshold) {
7746  if (runCallbacks === void 0) {
7747    runCallbacks = true;
7748  }
7749  if (threshold === void 0) {
7750    threshold = 0.5;
7751  }
7752  const swiper = this;
7753  if (swiper.destroyed) return;
7754  if (typeof speed === 'undefined') {
7755    speed = swiper.params.speed;
7756  }
7757  let index = swiper.activeIndex;
7758  const skip = Math.min(swiper.params.slidesPerGroupSkip, index);
7759  const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);
7760  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
7761  if (translate >= swiper.snapGrid[snapIndex]) {
7762    // The current translate is on or after the current snap index, so the choice
7763    // is between the current index and the one after it.
7764    const currentSnap = swiper.snapGrid[snapIndex];
7765    const nextSnap = swiper.snapGrid[snapIndex + 1];
7766    if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {
7767      index += swiper.params.slidesPerGroup;
7768    }
7769  } else {
7770    // The current translate is before the current snap index, so the choice
7771    // is between the current index and the one before it.
7772    const prevSnap = swiper.snapGrid[snapIndex - 1];
7773    const currentSnap = swiper.snapGrid[snapIndex];
7774    if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {
7775      index -= swiper.params.slidesPerGroup;
7776    }
7777  }
7778  index = Math.max(index, 0);
7779  index = Math.min(index, swiper.slidesGrid.length - 1);
7780  return swiper.slideTo(index, speed, runCallbacks, internal);
7781}
7782
7783function slideToClickedSlide() {
7784  const swiper = this;
7785  if (swiper.destroyed) return;
7786  const {
7787    params,
7788    slidesEl
7789  } = swiper;
7790  const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;
7791  let slideToIndex = swiper.getSlideIndexWhenGrid(swiper.clickedIndex);
7792  let realIndex;
7793  const slideSelector = swiper.isElement ? 
7793\`swiper-slide\` : \`.\${params.slideClass}\`;
7794  const isGrid = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;
7795  if (params.loop) {
7796    if (swiper.animating) return;
7797    realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);
7798    if (params.centeredSlides) {
7799      swiper.slideToLoop(realIndex);
7800    } else if (slideToIndex > (isGrid ? (swiper.slides.length - slidesPerView) / 2 - (swiper.params.grid.rows - 1) : swiper.slides.length - slidesPerView)) {
7801      swiper.loopFix();
7802      slideToIndex = swiper.getSlideIndex((0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, \`\${slideSelector}[data-swiper-slide-index="\${realIndex}"]\`)[0]);
7803      (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => {
7804        swiper.slideTo(slideToIndex);
7805      });
7806    } else {
7807      swiper.slideTo(slideToIndex);
7808    }
7809  } else {
7810    swiper.slideTo(slideToIndex);
7811  }
7812}
7813
7814var slide = {
7815  slideTo,
7816  slideToLoop,
7817  slideNext,
7818  slidePrev,
7819  slideReset,
7820  slideToClosest,
7821  slideToClickedSlide
7822};
7823
7824function loopCreate(slideRealIndex, initial) {
7825  const swiper = this;
7826  const {
7827    params,
7828    slidesEl
7829  } = swiper;
7830  if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;
7831  const initSlides = () => {
7832    const slides = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, \`.\${params.slideClass}, swiper-slide\`);
7833    slides.forEach((el, index) => {
7834      el.setAttribute('data-swiper-slide-index', index);
7835    });
7836  };
7837  const clearBlankSlides = () => {
7838    const slides = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, \`.\${params.slideBlankClass}\`);
7839    slides.forEach(el => {
7840      el.remove();
7841    });
7842    if (slides.length > 0) {
7843      swiper.recalcSlides();
7844      swiper.updateSlides();
7845    }
7846  };
7847  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;
7848  if (params.loopAddBlankSlides && (params.slidesPerGroup > 1 || gridEnabled)) {
7849    clearBlankSlides();
7850  }
7851  const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);
7852  const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;
7853  const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;
7854  const addBlankSlides = amountOfSlides => {
7855    for (let i = 0; i < amountOfSlides; i += 1) {
7856      const slideEl = swiper.isElement ? (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('swiper-slide', [params.slideBlankClass]) : (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', [params.slideClass, params.slideBlankClass]);
7857      swiper.slidesEl.append(slideEl);
7858    }
7859  };
7860  if (shouldFillGroup) {
7861    if (params.loopAddBlankSlides) {
7862      const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup;
7863      addBlankSlides(slidesToAdd);
7864      swiper.recalcSlides();
7865      swiper.updateSlides();
7866    } else {
7867      (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.v)('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');
7868    }
7869    initSlides();
7870  } else if (shouldFillGrid) {
7871    if (params.loopAddBlankSlides) {
7872      const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows;
7873      addBlankSlides(slidesToAdd);
7874      swiper.recalcSlides();
7875      swiper.updateSlides();
7876    } else {
7877      (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.v)('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');
7878    }
7879    initSlides();
7880  } else {
7881    initSlides();
7882  }
7883  swiper.loopFix({
7884    slideRealIndex,
7885    direction: params.centeredSlides ? undefined : 'next',
7886    initial
7887  });
7888}
7889
7890function loopFix(_temp) {
7891  let {
7892    slideRealIndex,
7893    slideTo = true,
7894    direction,
7895    setTranslate,
7896    activeSlideIndex,
7897    initial,
7898    byController,
7899    byMousewheel
7900  } = _temp === void 0 ? {} : _temp;
7901  const swiper = this;
7902  if (!swiper.params.loop) return;
7903  swiper.emit('beforeLoopFix');
7904  const {
7905    slides,
7906    allowSlidePrev,
7907    allowSlideNext,
7908    slidesEl,
7909    params
7910  } = swiper;
7911  const {
7912    centeredSlides,
7913    initialSlide
7914  }
7914 = params;
7915  swiper.allowSlidePrev = true;
7916  swiper.allowSlideNext = true;
7917  if (swiper.virtual && params.virtual.enabled) {
7918    if (slideTo) {
7919      if (!params.centeredSlides && swiper.snapIndex === 0) {
7920        swiper.slideTo(swiper.virtual.slides.length, 0, false, true);
7921      } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {
7922        swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);
7923      } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {
7924        swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);
7925      }
7926    }
7927    swiper.allowSlidePrev = allowSlidePrev;
7928    swiper.allowSlideNext = allowSlideNext;
7929    swiper.emit('loopFix');
7930    return;
7931  }
7932  let slidesPerView = params.slidesPerView;
7933  if (slidesPerView === 'auto') {
7934    slidesPerView = swiper.slidesPerViewDynamic();
7935  } else {
7936    slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));
7937    if (centeredSlides && slidesPerView % 2 === 0) {
7938      slidesPerView = slidesPerView + 1;
7939    }
7940  }
7941  const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;
7942  let loopedSlides = centeredSlides ? Math.max(slidesPerGroup, Math.ceil(slidesPerView / 2)) : slidesPerGroup;
7943  if (loopedSlides % slidesPerGroup !== 0) {
7944    loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;
7945  }
7946  loopedSlides += params.loopAdditionalSlides;
7947  swiper.loopedSlides = loopedSlides;
7948  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;
7949  if (slides.length < slidesPerView + loopedSlides || swiper.params.effect === 'cards' && slides.length < slidesPerView + loopedSlides * 2) {
7950    (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.v)('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled or not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters');
7951  } else if (gridEnabled && params.grid.fill === 'row') {
7952    (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.v)('Swiper Loop Warning: Loop mode is not compatible with grid.fill = \`row\
vendor: 8,728 bytes, lines 7952-8181
7952`');
7953  }
7954  const prependSlidesIndexes = [];
7955  const appendSlidesIndexes = [];
7956  const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;
7957  const isInitialOverflow = initial && cols - initialSlide < slidesPerView && !centeredSlides;
7958  let activeIndex = isInitialOverflow ? initialSlide : swiper.activeIndex;
7959  if (typeof activeSlideIndex === 'undefined') {
7960    activeSlideIndex = swiper.getSlideIndex(slides.find(el => el.classList.contains(params.slideActiveClass)));
7961  } else {
7962    activeIndex = activeSlideIndex;
7963  }
7964  const isNext = direction === 'next' || !direction;
7965  const isPrev = direction === 'prev' || !direction;
7966  let slidesPrepended = 0;
7967  let slidesAppended = 0;
7968  const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;
7969  const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0);
7970  // prepend last slides before start
7971  if (activeColIndexWithShift < loopedSlides) {
7972    slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);
7973    for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) {
7974      const index = i - Math.floor(i / cols) * cols;
7975      if (gridEnabled) {
7976        const colIndexToPrepend = cols - index - 1;
7977        for (let i = slides.length - 1; i >= 0; i -= 1) {
7978          if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i);
7979        }
7980        // slides.forEach((slide, slideIndex) => {
7981        //   if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex);
7982        // });
7983      } else {
7984        prependSlidesIndexes.push(cols - index - 1);
7985      }
7986    }
7987  } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {
7988    slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);
7989    if (isInitialOverflow) {
7990      slidesAppended = Math.max(slidesAppended, slidesPerView - cols + initialSlide + 1);
7991    }
7992    for (let i = 0; i < slidesAppended; i += 1) {
7993      const index = i - Math.floor(i / cols) * cols;
7994      if (gridEnabled) {
7995        slides.forEach((slide, slideIndex) => {
7996          if (slide.column === index) appendSlidesIndexes.push(slideIndex);
7997        });
7998      } else {
7999        appendSlidesIndexes.push(index);
8000      }
8001    }
8002  }
8003  swiper.__preventObserver__ = true;
8004  requestAnimationFrame(() => {
8005    swiper.__preventObserver__ = false;
8006  });
8007  if (swiper.params.effect === 'cards' && slides.length < slidesPerView + loopedSlides * 2) {
8008    if (appendSlidesIndexes.includes(activeSlideIndex)) {
8009      appendSlidesIndexes.splice(appendSlidesIndexes.indexOf(activeSlideIndex), 1);
8010    }
8011    if (prependSlidesIndexes.includes(activeSlideIndex)) {
8012      prependSlidesIndexes.splice(prependSlidesIndexes.indexOf(activeSlideIndex), 1);
8013    }
8014  }
8015  if (isPrev) {
8016    prependSlidesIndexes.forEach(index => {
8017      slides[index].swiperLoopMoveDOM = true;
8018      slidesEl.prepend(slides[index]);
8019      slides[index].swiperLoopMoveDOM = false;
8020    });
8021  }
8022  if (isNext) {
8023    appendSlidesIndexes.forEach(index => {
8024      slides[index].swiperLoopMoveDOM = true;
8025      slidesEl.append(slides[index]);
8026      slides[index].swiperLoopMoveDOM = false;
8027    });
8028  }
8029  swiper.recalcSlides();
8030  if (params.slidesPerView === 'auto') {
8031    swiper.updateSlides();
8032  } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) {
8033    swiper.slides.forEach((slide, slideIndex) => {
8034      swiper.grid.updateSlide(slideIndex, slide, swiper.slides);
8035    });
8036  }
8037  if (params.watchSlidesProgress) {
8038    swiper.updateSlidesOffset();
8039  }
8040  if (slideTo) {
8041    if (prependSlidesIndexes.length > 0 && isPrev) {
8042      if (typeof slideRealIndex === 'undefined') {
8043        const currentSlideTranslate = swiper.slidesGrid[activeIndex];
8044        const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];
8045        const diff = newSlideTranslate - currentSlideTranslate;
8046        if (byMousewheel) {
8047          swiper.setTranslate(swiper.translate - diff);
8048        } else {
8049          swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true);
8050          if (setTranslate) {
8051            swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;
8052            swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;
8053          }
8054        }
8055      } else {
8056        if (setTranslate) {
8057          const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length;
8058          swiper.slideTo(swiper.activeIndex + shift, 0, false, true);
8059          swiper.touchEventsData.currentTranslate = swiper.translate;
8060        }
8061      }
8062    } else if (appendSlidesIndexes.length > 0 && isNext) {
8063      if (typeof slideRealIndex === 'undefined') {
8064        const currentSlideTranslate = swiper.slidesGrid[activeIndex];
8065        const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];
8066        const diff = newSlideTranslate - currentSlideTranslate;
8067        if (byMousewheel) {
8068          swiper.setTranslate(swiper.translate - diff);
8069        } else {
8070          swiper.slideTo(activeIndex - slidesAppended, 0, false, true);
8071          if (setTranslate) {
8072            swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;
8073            swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;
8074          }
8075        }
8076      } else {
8077        const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length;
8078        swiper.slideTo(swiper.activeIndex - shift, 0, false, true);
8079      }
8080    }
8081  }
8082  swiper.allowSlidePrev = allowSlidePrev;
8083  swiper.allowSlideNext = allowSlideNext;
8084  if (swiper.controller && swiper.controller.control && !byController) {
8085    const loopParams = {
8086      slideRealIndex,
8087      direction,
8088      setTranslate,
8089      activeSlideIndex,
8090      byController: true
8091    };
8092    if (Array.isArray(swiper.controller.control)) {
8093      swiper.controller.control.forEach(c => {
8094        if (!c.destroyed && c.params.loop) c.loopFix({
8095          ...loopParams,
8096          slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false
8097        });
8098      });
8099    } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {
8100      swiper.controller.control.loopFix({
8101        ...loopParams,
8102        slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false
8103      });
8104    }
8105  }
8106  swiper.emit('loopFix');
8107}
8108
8109function loopDestroy() {
8110  const swiper = this;
8111  const {
8112    params,
8113    slidesEl
8114  } = swiper;
8115  if (!params.loop || !slidesEl || swiper.virtual && swiper.params.virtual.enabled) return;
8116  swiper.recalcSlides();
8117  const newSlidesOrder = [];
8118  swiper.slides.forEach(slideEl => {
8119    const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;
8120    newSlidesOrder[index] = slideEl;
8121  });
8122  swiper.slides.forEach(slideEl => {
8123    slideEl.removeAttribute('data-swiper-slide-index');
8124  });
8125  newSlidesOrder.forEach(slideEl => {
8126    slidesEl.append(slideEl);
8127  });
8128  swiper.recalcSlides();
8129  swiper.slideTo(swiper.realIndex, 0);
8130}
8131
8132var loop = {
8133  loopCreate,
8134  loopFix,
8135  loopDestroy
8136};
8137
8138function setGrabCursor(moving) {
8139  const swiper = this;
8140  if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;
8141  const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;
8142  if (swiper.isElement) {
8143    swiper.__preventObserver__ = true;
8144  }
8145  el.style.cursor = 'move';
8146  el.style.cursor = moving ? 'grabbing' : 'grab';
8147  if (swiper.isElement) {
8148    requestAnimationFrame(() => {
8149      swiper.__preventObserver__ = false;
8150    });
8151  }
8152}
8153
8154function unsetGrabCursor() {
8155  const swiper = this;
8156  if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {
8157    return;
8158  }
8159  if (swiper.isElement) {
8160    swiper.__preventObserver__ = true;
8161  }
8162  swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';
8163  if (swiper.isElement) {
8164    requestAnimationFrame(() => {
8165      swiper.__preventObserver__ = false;
8166    });
8167  }
8168}
8169
8170var grabCursor = {
8171  setGrabCursor,
8172  unsetGrabCursor
8173};
8174
8175// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd
8176function closestElement(selector, base) {
8177  if (base === void 0) {
8178    base = this;
8179  }
8180  function __closestFrom(el) {
8181    if (!el || el === 
vendor: 6,195 bytes, lines 8181-8359
8181(0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)() || el === (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)()) return null;
8182    if (el.assignedSlot) el = el.assignedSlot;
8183    const found = el.closest(selector);
8184    if (!found && !el.getRootNode) {
8185      return null;
8186    }
8187    return found || __closestFrom(el.getRootNode().host);
8188  }
8189  return __closestFrom(base);
8190}
8191function preventEdgeSwipe(swiper, event, startX) {
8192  const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
8193  const {
8194    params
8195  } = swiper;
8196  const edgeSwipeDetection = params.edgeSwipeDetection;
8197  const edgeSwipeThreshold = params.edgeSwipeThreshold;
8198  if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {
8199    if (edgeSwipeDetection === 'prevent') {
8200      event.preventDefault();
8201      return true;
8202    }
8203    return false;
8204  }
8205  return true;
8206}
8207function onTouchStart(event) {
8208  const swiper = this;
8209  const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
8210  let e = event;
8211  if (e.originalEvent) e = e.originalEvent;
8212  const data = swiper.touchEventsData;
8213  if (e.type === 'pointerdown') {
8214    if (data.pointerId !== null && data.pointerId !== e.pointerId) {
8215      return;
8216    }
8217    data.pointerId = e.pointerId;
8218  } else if (e.type === 'touchstart' && e.targetTouches.length === 1) {
8219    data.touchId = e.targetTouches[0].identifier;
8220  }
8221  if (e.type === 'touchstart') {
8222    // don't proceed touch event
8223    preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX);
8224    return;
8225  }
8226  const {
8227    params,
8228    touches,
8229    enabled
8230  } = swiper;
8231  if (!enabled) return;
8232  if (!params.simulateTouch && e.pointerType === 'mouse') return;
8233  if (swiper.animating && params.preventInteractionOnTransition) {
8234    return;
8235  }
8236  if (!swiper.animating && params.cssMode && params.loop) {
8237    swiper.loopFix();
8238  }
8239  let targetEl = e.target;
8240  if (params.touchEventsTarget === 'wrapper') {
8241    if (!(0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)(targetEl, swiper.wrapperEl)) return;
8242  }
8243  if ('which' in e && e.which === 3) return;
8244  if ('button' in e && e.button > 0) return;
8245  if (data.isTouched && data.isMoved) return;
8246
8247  // change target el for shadow root component
8248  const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';
8249  // eslint-disable-next-line
8250  const eventPath = e.composedPath ? e.composedPath() : e.path;
8251  if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {
8252    targetEl = eventPath[0];
8253  }
8254  const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : \`.\${params.noSwipingClass}\`;
8255  const isTargetShadow = !!(e.target && e.target.shadowRoot);
8256
8257  // use closestElement for shadow root element to get the actual closest for nested shadow root element
8258  if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {
8259    swiper.allowClick = true;
8260    return;
8261  }
8262  if (params.swipeHandler) {
8263    if (!targetEl.closest(params.swipeHandler)) return;
8264  }
8265  touches.currentX = e.pageX;
8266  touches.currentY = e.pageY;
8267  const startX = touches.currentX;
8268  const startY = touches.currentY;
8269
8270  // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore
8271
8272  if (!preventEdgeSwipe(swiper, e, startX)) {
8273    return;
8274  }
8275  Object.assign(data, {
8276    isTouched: true,
8277    isMoved: false,
8278    allowTouchCallbacks: true,
8279    isScrolling: undefined,
8280    startMoving: undefined
8281  });
8282  touches.startX = startX;
8283  touches.startY = startY;
8284  data.touchStartTime = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.f)();
8285  swiper.allowClick = true;
8286  swiper.updateSize();
8287  swiper.swipeDirection = undefined;
8288  if (params.threshold > 0) data.allowThresholdMove = false;
8289  let preventDefault = true;
8290  if (targetEl.matches(data.focusableElements)) {
8291    preventDefault = false;
8292    if (targetEl.nodeName === 'SELECT') {
8293      data.isTouched = false;
8294    }
8295  }
8296  if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl && (e.pointerType === 'mouse' || e.pointerType !== 'mouse' && !targetEl.matches(data.focusableElements))) {
8297    document.activeElement.blur();
8298  }
8299  const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;
8300  if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {
8301    e.preventDefault();
8302  }
8303  if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {
8304    swiper.freeMode.onTouchStart();
8305  }
8306  swiper.emit('touchStart', e);
8307}
8308
8309function onTouchMove(event) {
8310  const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
8311  const swiper = this;
8312  const data = swiper.touchEventsData;
8313  const {
8314    params,
8315    touches,
8316    rtlTranslate: rtl,
8317    enabled
8318  } = swiper;
8319  if (!enabled) return;
8320  if (!params.simulateTouch && event.pointerType === 'mouse') return;
8321  let e = event;
8322  if (e.originalEvent) e = e.originalEvent;
8323  if (e.type === 'pointermove') {
8324    if (data.touchId !== null) return; // return from pointer if we use touch
8325    const id = e.pointerId;
8326    if (id !== data.pointerId) return;
8327  }
8328  let targetTouch;
8329  if (e.type === 'touchmove') {
8330    targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId);
8331    if (!targetTouch || targetTouch.identifier !== data.touchId) return;
8332  } else {
8333    targetTouch = e;
8334  }
8335  if (!data.isTouched) {
8336    if (data.startMoving && data.isScrolling) {
8337      swiper.emit('touchMoveOpposite', e);
8338    }
8339    return;
8340  }
8341  const pageX = targetTouch.pageX;
8342  const pageY = targetTouch.pageY;
8343  if (e.preventedByNestedSwiper) {
8344    touches.startX = pageX;
8345    touches.startY = pageY;
8346    return;
8347  }
8348  if (!swiper.allowTouchMove) {
8349    if (!e.target.matches(data.focusableElements)) {
8350      swiper.allowClick = false;
8351    }
8352    if (data.isTouched) {
8353      Object.assign(touches, {
8354        startX: pageX,
8355        startY: pageY,
8356        currentX: pageX,
8357        currentY: pageY
8358      });
8359      data.touchStartTime = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.f)
vendor: 10,043 bytes, lines 8359-8622
8359();
8360    }
8361    return;
8362  }
8363  if (params.touchReleaseOnEdges && !params.loop) {
8364    if (swiper.isVertical()) {
8365      // Vertical
8366      if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {
8367        data.isTouched = false;
8368        data.isMoved = false;
8369        return;
8370      }
8371    } else if (rtl && (pageX > touches.startX && -swiper.translate <= swiper.maxTranslate() || pageX < touches.startX && -swiper.translate >= swiper.minTranslate())) {
8372      return;
8373    } else if (!rtl && (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate())) {
8374      return;
8375    }
8376  }
8377  if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== e.target && e.pointerType !== 'mouse') {
8378    document.activeElement.blur();
8379  }
8380  if (document.activeElement) {
8381    if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {
8382      data.isMoved = true;
8383      swiper.allowClick = false;
8384      return;
8385    }
8386  }
8387  if (data.allowTouchCallbacks) {
8388    swiper.emit('touchMove', e);
8389  }
8390  touches.previousX = touches.currentX;
8391  touches.previousY = touches.currentY;
8392  touches.currentX = pageX;
8393  touches.currentY = pageY;
8394  const diffX = touches.currentX - touches.startX;
8395  const diffY = touches.currentY - touches.startY;
8396  if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;
8397  if (typeof data.isScrolling === 'undefined') {
8398    let touchAngle;
8399    if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {
8400      data.isScrolling = false;
8401    } else {
8402      // eslint-disable-next-line
8403      if (diffX * diffX + diffY * diffY >= 25) {
8404        touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;
8405        data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;
8406      }
8407    }
8408  }
8409  if (data.isScrolling) {
8410    swiper.emit('touchMoveOpposite', e);
8411  }
8412  if (typeof data.startMoving === 'undefined') {
8413    if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {
8414      data.startMoving = true;
8415    }
8416  }
8417  if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) {
8418    data.isTouched = false;
8419    return;
8420  }
8421  if (!data.startMoving) {
8422    return;
8423  }
8424  swiper.allowClick = false;
8425  if (!params.cssMode && e.cancelable) {
8426    e.preventDefault();
8427  }
8428  if (params.touchMoveStopPropagation && !params.nested) {
8429    e.stopPropagation();
8430  }
8431  let diff = swiper.isHorizontal() ? diffX : diffY;
8432  let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;
8433  if (params.oneWayMovement) {
8434    diff = Math.abs(diff) * (rtl ? 1 : -1);
8435    touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);
8436  }
8437  touches.diff = diff;
8438  diff *= params.touchRatio;
8439  if (rtl) {
8440    diff = -diff;
8441    touchesDiff = -touchesDiff;
8442  }
8443  const prevTouchesDirection = swiper.touchesDirection;
8444  swiper.swipeDirection = diff > 0 ? 'prev' : 'next';
8445  swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';
8446  const isLoop = swiper.params.loop && !params.cssMode;
8447  const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev;
8448  if (!data.isMoved) {
8449    if (isLoop && allowLoopFix) {
8450      swiper.loopFix({
8451        direction: swiper.swipeDirection
8452      });
8453    }
8454    data.startTranslate = swiper.getTranslate();
8455    swiper.setTransition(0);
8456    if (swiper.animating) {
8457      const evt = new window.CustomEvent('transitionend', {
8458        bubbles: true,
8459        cancelable: true,
8460        detail: {
8461          bySwiperTouchMove: true
8462        }
8463      });
8464      swiper.wrapperEl.dispatchEvent(evt);
8465    }
8466    data.allowMomentumBounce = false;
8467    // Grab Cursor
8468    if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
8469      swiper.setGrabCursor(true);
8470    }
8471    swiper.emit('sliderFirstMove', e);
8472  }
8473  let loopFixed;
8474  new Date().getTime();
8475  if (params._loopSwapReset !== false && data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {
8476    Object.assign(touches, {
8477      startX: pageX,
8478      startY: pageY,
8479      currentX: pageX,
8480      currentY: pageY,
8481      startTranslate: data.currentTranslate
8482    });
8483    data.loopSwapReset = true;
8484    data.startTranslate = data.currentTranslate;
8485    return;
8486  }
8487  swiper.emit('sliderMove', e);
8488  data.isMoved = true;
8489  data.currentTranslate = diff + data.startTranslate;
8490  let disableParentSwiper = true;
8491  let resistanceRatio = params.resistanceRatio;
8492  if (params.touchReleaseOnEdges) {
8493    resistanceRatio = 0;
8494  }
8495  if (diff > 0) {
8496    if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] - (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.activeIndex + 1] + swiper.params.spaceBetween : 0) - swiper.params.spaceBetween : swiper.minTranslate())) {
8497      swiper.loopFix({
8498        direction: 'prev',
8499        setTranslate: true,
8500        activeSlideIndex: 0
8501      });
8502    }
8503    if (data.currentTranslate > swiper.minTranslate()) {
8504      disableParentSwiper = false;
8505      if (params.resistance) {
8506        data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;
8507      }
8508    }
8509  } else if (diff < 0) {
8510    if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween + (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween : 0) : swiper.maxTranslate())) {
8511      swiper.loopFix({
8512        direction: 'next',
8513        setTranslate: true,
8514        activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))
8515      });
8516    }
8517    if (data.currentTranslate < swiper.maxTranslate()) {
8518      disableParentSwiper = false;
8519      if (params.resistance) {
8520        data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;
8521      }
8522    }
8523  }
8524  if (disableParentSwiper) {
8525    e.preventedByNestedSwiper = true;
8526  }
8527
8528  // Directions locks
8529  if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {
8530    data.currentTranslate = data.startTranslate;
8531  }
8532  if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {
8533    data.currentTranslate = data.startTranslate;
8534  }
8535  if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {
8536    data.currentTranslate = data.startTranslate;
8537  }
8538
8539  // Threshold
8540  if (params.threshold > 0) {
8541    if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {
8542      if (!data.allowThresholdMove) {
8543        data.allowThresholdMove = true;
8544        touches.startX = touches.currentX;
8545        touches.startY = touches.currentY;
8546        data.currentTranslate = data.startTranslate;
8547        touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;
8548        return;
8549      }
8550    } else {
8551      data.currentTranslate = data.startTranslate;
8552      return;
8553    }
8554  }
8555  if (!params.followFinger || params.cssMode) return;
8556
8557  // Update active index in free mode
8558  if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {
8559    swiper.updateActiveIndex();
8560    swiper.updateSlidesClasses();
8561  }
8562  if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {
8563    swiper.freeMode.onTouchMove();
8564  }
8565  // Update progress
8566  swiper.updateProgress(data.currentTranslate);
8567  // Update translate
8568  swiper.setTranslate(data.currentTranslate);
8569}
8570
8571function onTouchEnd(event) {
8572  const swiper = this;
8573  const data = swiper.touchEventsData;
8574  let e = event;
8575  if (e.originalEvent) e = e.originalEvent;
8576  let targetTouch;
8577  const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel';
8578  if (!isTouchEvent) {
8579    if (data.touchId !== null) return; // return from pointer if we use touch
8580    if (e.pointerId !== data.pointerId) return;
8581    targetTouch = e;
8582  } else {
8583    targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId);
8584    if (!targetTouch || targetTouch.identifier !== data.touchId) return;
8585  }
8586  if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) {
8587    const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView);
8588    if (!proceed) {
8589      return;
8590    }
8591  }
8592  data.pointerId = null;
8593  data.touchId = null;
8594  const {
8595    params,
8596    touches,
8597    rtlTranslate: rtl,
8598    slidesGrid,
8599    enabled
8600  } = swiper;
8601  if (!enabled) return;
8602  if (!params.simulateTouch && e.pointerType === 'mouse') return;
8603  if (data.allowTouchCallbacks) {
8604    swiper.emit('touchEnd', e);
8605  }
8606  data.allowTouchCallbacks = false;
8607  if (!data.isTouched) {
8608    if (data.isMoved && params.grabCursor) {
8609      swiper.setGrabCursor(false);
8610    }
8611    data.isMoved = false;
8612    data.startMoving = false;
8613    return;
8614  }
8615
8616  // Return Grab Cursor
8617  if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
8618    swiper.setGrabCursor(false);
8619  }
8620
8621  // Time diff
8622  const touchEndTime = 
8622(0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.f)();
8623  const timeDiff = touchEndTime - data.touchStartTime;
8624
8625  // Tap, doubleTap, Click
8626  if (swiper.allowClick) {
8627    const pathTree = e.path || e.composedPath && e.composedPath();
8628    swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);
8629    swiper.emit('tap click', e);
8630    if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {
8631      swiper.emit('doubleTap doubleClick', e);
8632    }
8633  }
8634  data.lastClickTime = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.f
vendor: 10,866 bytes, lines 8634-8972
8634)();
8635  (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => {
8636    if (!swiper.destroyed) swiper.allowClick = true;
8637  });
8638  if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) {
8639    data.isTouched = false;
8640    data.isMoved = false;
8641    data.startMoving = false;
8642    return;
8643  }
8644  data.isTouched = false;
8645  data.isMoved = false;
8646  data.startMoving = false;
8647  let currentPos;
8648  if (params.followFinger) {
8649    currentPos = rtl ? swiper.translate : -swiper.translate;
8650  } else {
8651    currentPos = -data.currentTranslate;
8652  }
8653  if (params.cssMode) {
8654    return;
8655  }
8656  if (params.freeMode && params.freeMode.enabled) {
8657    swiper.freeMode.onTouchEnd({
8658      currentPos
8659    });
8660    return;
8661  }
8662
8663  // Find current slide
8664  const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop;
8665  let stopIndex = 0;
8666  let groupSize = swiper.slidesSizesGrid[0];
8667  for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {
8668    const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;
8669    if (typeof slidesGrid[i + increment] !== 'undefined') {
8670      if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {
8671        stopIndex = i;
8672        groupSize = slidesGrid[i + increment] - slidesGrid[i];
8673      }
8674    } else if (swipeToLast || currentPos >= slidesGrid[i]) {
8675      stopIndex = i;
8676      groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];
8677    }
8678  }
8679  let rewindFirstIndex = null;
8680  let rewindLastIndex = null;
8681  if (params.rewind) {
8682    if (swiper.isBeginning) {
8683      rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;
8684    } else if (swiper.isEnd) {
8685      rewindFirstIndex = 0;
8686    }
8687  }
8688  // Find current slide size
8689  const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;
8690  const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;
8691  if (timeDiff > params.longSwipesMs) {
8692    // Long touches
8693    if (!params.longSwipes) {
8694      swiper.slideTo(swiper.activeIndex);
8695      return;
8696    }
8697    if (swiper.swipeDirection === 'next') {
8698      if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);
8699    }
8700    if (swiper.swipeDirection === 'prev') {
8701      if (ratio > 1 - params.longSwipesRatio) {
8702        swiper.slideTo(stopIndex + increment);
8703      } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {
8704        swiper.slideTo(rewindLastIndex);
8705      } else {
8706        swiper.slideTo(stopIndex);
8707      }
8708    }
8709  } else {
8710    // Short swipes
8711    if (!params.shortSwipes) {
8712      swiper.slideTo(swiper.activeIndex);
8713      return;
8714    }
8715    const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);
8716    if (!isNavButtonTarget) {
8717      if (swiper.swipeDirection === 'next') {
8718        swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);
8719      }
8720      if (swiper.swipeDirection === 'prev') {
8721        swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);
8722      }
8723    } else if (e.target === swiper.navigation.nextEl) {
8724      swiper.slideTo(stopIndex + increment);
8725    } else {
8726      swiper.slideTo(stopIndex);
8727    }
8728  }
8729}
8730
8731function onResize() {
8732  const swiper = this;
8733  const {
8734    params,
8735    el
8736  } = swiper;
8737  if (el && el.offsetWidth === 0) return;
8738
8739  // Breakpoints
8740  if (params.breakpoints) {
8741    swiper.setBreakpoint();
8742  }
8743
8744  // Save locks
8745  const {
8746    allowSlideNext,
8747    allowSlidePrev,
8748    snapGrid
8749  } = swiper;
8750  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
8751
8752  // Disable locks on resize
8753  swiper.allowSlideNext = true;
8754  swiper.allowSlidePrev = true;
8755  swiper.updateSize();
8756  swiper.updateSlides();
8757  swiper.updateSlidesClasses();
8758  const isVirtualLoop = isVirtual && params.loop;
8759  if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {
8760    swiper.slideTo(swiper.slides.length - 1, 0, false, true);
8761  } else {
8762    if (swiper.params.loop && !isVirtual) {
8763      swiper.slideToLoop(swiper.realIndex, 0, false, true);
8764    } else {
8765      swiper.slideTo(swiper.activeIndex, 0, false, true);
8766    }
8767  }
8768  if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {
8769    clearTimeout(swiper.autoplay.resizeTimeout);
8770    swiper.autoplay.resizeTimeout = setTimeout(() => {
8771      if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {
8772        swiper.autoplay.resume();
8773      }
8774    }, 500);
8775  }
8776  // Return locks after resize
8777  swiper.allowSlidePrev = allowSlidePrev;
8778  swiper.allowSlideNext = allowSlideNext;
8779  if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {
8780    swiper.checkOverflow();
8781  }
8782}
8783
8784function onClick(e) {
8785  const swiper = this;
8786  if (!swiper.enabled) return;
8787  if (!swiper.allowClick) {
8788    if (swiper.params.preventClicks) e.preventDefault();
8789    if (swiper.params.preventClicksPropagation && swiper.animating) {
8790      e.stopPropagation();
8791      e.stopImmediatePropagation();
8792    }
8793  }
8794}
8795
8796function onScroll() {
8797  const swiper = this;
8798  const {
8799    wrapperEl,
8800    rtlTranslate,
8801    enabled
8802  } = swiper;
8803  if (!enabled) return;
8804  swiper.previousTranslate = swiper.translate;
8805  if (swiper.isHorizontal()) {
8806    swiper.translate = -wrapperEl.scrollLeft;
8807  } else {
8808    swiper.translate = -wrapperEl.scrollTop;
8809  }
8810  // eslint-disable-next-line
8811  if (swiper.translate === 0) swiper.translate = 0;
8812  swiper.updateActiveIndex();
8813  swiper.updateSlidesClasses();
8814  let newProgress;
8815  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
8816  if (translatesDiff === 0) {
8817    newProgress = 0;
8818  } else {
8819    newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;
8820  }
8821  if (newProgress !== swiper.progress) {
8822    swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);
8823  }
8824  swiper.emit('setTranslate', swiper.translate, false);
8825}
8826
8827function onLoad(e) {
8828  const swiper = this;
8829  processLazyPreloader(swiper, e.target);
8830  if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {
8831    return;
8832  }
8833  swiper.update();
8834}
8835
8836function onDocumentTouchStart() {
8837  const swiper = this;
8838  if (swiper.documentTouchHandlerProceeded) return;
8839  swiper.documentTouchHandlerProceeded = true;
8840  if (swiper.params.touchReleaseOnEdges) {
8841    swiper.el.style.touchAction = 'auto';
8842  }
8843}
8844
8845const events = (swiper, method) => {
8846  const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
8847  const {
8848    params,
8849    el,
8850    wrapperEl,
8851    device
8852  } = swiper;
8853  const capture = !!params.nested;
8854  const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';
8855  const swiperMethod = method;
8856  if (!el || typeof el === 'string') return;
8857
8858  // Touch Events
8859  document[domMethod]('touchstart', swiper.onDocumentTouchStart, {
8860    passive: false,
8861    capture
8862  });
8863  el[domMethod]('touchstart', swiper.onTouchStart, {
8864    passive: false
8865  });
8866  el[domMethod]('pointerdown', swiper.onTouchStart, {
8867    passive: false
8868  });
8869  document[domMethod]('touchmove', swiper.onTouchMove, {
8870    passive: false,
8871    capture
8872  });
8873  document[domMethod]('pointermove', swiper.onTouchMove, {
8874    passive: false,
8875    capture
8876  });
8877  document[domMethod]('touchend', swiper.onTouchEnd, {
8878    passive: true
8879  });
8880  document[domMethod]('pointerup', swiper.onTouchEnd, {
8881    passive: true
8882  });
8883  document[domMethod]('pointercancel', swiper.onTouchEnd, {
8884    passive: true
8885  });
8886  document[domMethod]('touchcancel', swiper.onTouchEnd, {
8887    passive: true
8888  });
8889  document[domMethod]('pointerout', swiper.onTouchEnd, {
8890    passive: true
8891  });
8892  document[domMethod]('pointerleave', swiper.onTouchEnd, {
8893    passive: true
8894  });
8895  document[domMethod]('contextmenu', swiper.onTouchEnd, {
8896    passive: true
8897  });
8898
8899  // Prevent Links Clicks
8900  if (params.preventClicks || params.preventClicksPropagation) {
8901    el[domMethod]('click', swiper.onClick, true);
8902  }
8903  if (params.cssMode) {
8904    wrapperEl[domMethod]('scroll', swiper.onScroll);
8905  }
8906
8907  // Resize handler
8908  if (params.updateOnWindowResize) {
8909    swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);
8910  } else {
8911    swiper[swiperMethod]('observerUpdate', onResize, true);
8912  }
8913
8914  // Images loader
8915  el[domMethod]('load', swiper.onLoad, {
8916    capture: true
8917  });
8918};
8919function attachEvents() {
8920  const swiper = this;
8921  const {
8922    params
8923  } = swiper;
8924  swiper.onTouchStart = onTouchStart.bind(swiper);
8925  swiper.onTouchMove = onTouchMove.bind(swiper);
8926  swiper.onTouchEnd = onTouchEnd.bind(swiper);
8927  swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper);
8928  if (params.cssMode) {
8929    swiper.onScroll = onScroll.bind(swiper);
8930  }
8931  swiper.onClick = onClick.bind(swiper);
8932  swiper.onLoad = onLoad.bind(swiper);
8933  events(swiper, 'on');
8934}
8935function detachEvents() {
8936  const swiper = this;
8937  events(swiper, 'off');
8938}
8939var events$1 = {
8940  attachEvents,
8941  detachEvents
8942};
8943
8944const isGridEnabled = (swiper, params) => {
8945  return swiper.grid && params.grid && params.grid.rows > 1;
8946};
8947function setBreakpoint() {
8948  const swiper = this;
8949  const {
8950    realIndex,
8951    initialized,
8952    params,
8953    el
8954  } = swiper;
8955  const breakpoints = params.breakpoints;
8956  if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;
8957  const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
8958
8959  // Get breakpoint for window/container width and update parameters
8960  const breakpointsBase = params.breakpointsBase === 'window' || !params.breakpointsBase ? params.breakpointsBase : 'container';
8961  const breakpointContainer = ['window', 'container'].includes(params.breakpointsBase) || !params.breakpointsBase ? swiper.el : document.querySelector(params.breakpointsBase);
8962  const breakpoint = swiper.getBreakpoint(breakpoints, breakpointsBase, breakpointContainer);
8963  if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;
8964  const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;
8965  const breakpointParams = breakpointOnlyParams || swiper.originalParams;
8966  const wasMultiRow = isGridEnabled(swiper, params);
8967  const isMultiRow = isGridEnabled(swiper, breakpointParams);
8968  const wasGrabCursor = swiper.params.grabCursor;
8969  const isGrabCursor = breakpointParams.grabCursor;
8970  const wasEnabled = params.enabled;
8971  if (wasMultiRow && !isMultiRow) {
8972    el.classList.remove(
8972\`\${params.containerModifierClass}grid\`, \`\${params.containerModifierClass}grid-column\`);
8973    swiper.emitContainerClasses();
8974  } else if (!wasMultiRow && isMultiRow) {
8975    el.classList.add(\`\${params.containerModifierClass}grid\`);
8976    if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {
8977      el.classList.add(\`\${params.containerModifierClass}grid-column\`);
8978    }
8979    swiper.emitContainerClasses();
8980  }
8981  if (wasGrabCursor && !isGrabCursor) {
8982    swiper.unsetGrabCursor();
8983  } else if (!wasGrabCursor && isGrabCursor) {
8984    swiper.setGrabCursor();
8985  }
8986
8987  // Toggle navigation, pagination, scrollbar
8988  ['navigation', 'pagination', 'scrollbar'].forEach(prop => {
8989    if (typeof breakpointParams[prop] === 'undefined') return;
8990    const wasModuleEnabled = params[prop] && params[prop].enabled;
8991    const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;
8992    if (wasModuleEnabled && !isModuleEnabled) {
8993      swiper[prop].disable();
8994    }
8995    if (!wasModuleEnabled && isModuleEnabled) {
8996      swiper[prop].enable();
8997    }
8998  });
8999  const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;
9000  const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);
9001  const wasLoop = params.loop;
9002  if (directionChanged && initialized) {
9003    swiper.changeDirection();
9004  }
9005  (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.x)(swiper.params, breakpointParams);
9006  const isEnabled = swiper.params.enabled;
9007  const hasLoop = swiper.params.loop;
9008  Object.assign(swiper, {
9009    allowTouchMove: swiper.params.allowTouchMove,
9010    allowSlideNext: swiper.params.allowSlideNext,
9011    allowSlidePrev: swiper.params.allowSlidePrev
9012  });
9013  if (wasEnabled && !isEnabled) {
9014    swiper.disable();
9015  } else if (!wasEnabled && isEnabled) {
9016    swiper.enable();
9017  }
9018  swiper.currentBreakpoint = breakpoint;
9019  swiper.emit('_beforeBreakpoint', breakpointParams);
9020  if (initialized) {
9021    if (needsReLoop) {
9022      swiper.loopDestroy();
9023      swiper.loopCreate(realIndex);
9024      swiper.updateSlides();
9025    } else if (!wasLoop && hasLoop) {
9026      swiper.loopCreate(realIndex);
9027      swiper.updateSlides();
9028    } else if (wasLoop && !hasLoop) {
9029      swiper.loopDestroy();
9030    }
9031  }
9032  swiper.emit('breakpoint', breakpointParams);
9033}
9034
9035function getBreakpoint(breakpoints, base, containerEl) {
9036  if (base === void 0) {
9037    base = 'window';
9038  }
9039  if (!breakpoints || base === 'container' && !containerEl) return undefined;
9040  let breakpoint = false;
9041  const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
9042  const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;
9043  const points = Object.keys(breakpoints).map(point => {
9044    if (typeof point === 'string' && point.indexOf('@') === 0) {
9045      const minRatio = parseFloat(point.substr(1));
9046      const value = currentHeight * minRatio;
9047      return {
9048        value,
9049        point
9050      };
9051    }
9052    return {
9053      value: point,
9054      point
9055    };
9056  });
9057  points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));
9058  for (let i = 0; i < points.length; i += 1) {
9059    const {
9060      point,
9061      value
9062    } = points[i];
9063    if (base === 'window') {
9064      if (window.matchMedia(\`(min-width: \${value}px)\`).matches) {
9065        breakpoint = point;
9066      }
9067    } else if (value <= containerEl.clientWidth) {
9068      breakpoint = point;
9069    }
9070  }
9071  return breakpoint || 'max';
9072}
9073
9074var breakpoints = {
9075  setBreakpoint,
vendor: 13,293 bytes, lines 9076-9544
9076  getBreakpoint
9077};
9078
9079function prepareClasses(entries, prefix) {
9080  const resultClasses = [];
9081  entries.forEach(item => {
9082    if (typeof item === 'object') {
9083      Object.keys(item).forEach(classNames => {
9084        if (item[classNames]) {
9085          resultClasses.push(prefix + classNames);
9086        }
9087      });
9088    } else if (typeof item === 'string') {
9089      resultClasses.push(prefix + item);
9090    }
9091  });
9092  return resultClasses;
9093}
9094function addClasses() {
9095  const swiper = this;
9096  const {
9097    classNames,
9098    params,
9099    rtl,
9100    el,
9101    device
9102  } = swiper;
9103  // prettier-ignore
9104  const suffixes = prepareClasses(['initialized', params.direction, {
9105    'free-mode': swiper.params.freeMode && params.freeMode.enabled
9106  }, {
9107    'autoheight': params.autoHeight
9108  }, {
9109    'rtl': rtl
9110  }, {
9111    'grid': params.grid && params.grid.rows > 1
9112  }, {
9113    'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'
9114  }, {
9115    'android': device.android
9116  }, {
9117    'ios': device.ios
9118  }, {
9119    'css-mode': params.cssMode
9120  }, {
9121    'centered': params.cssMode && params.centeredSlides
9122  }, {
9123    'watch-progress': params.watchSlidesProgress
9124  }], params.containerModifierClass);
9125  classNames.push(...suffixes);
9126  el.classList.add(...classNames);
9127  swiper.emitContainerClasses();
9128}
9129
9130function removeClasses() {
9131  const swiper = this;
9132  const {
9133    el,
9134    classNames
9135  } = swiper;
9136  if (!el || typeof el === 'string') return;
9137  el.classList.remove(...classNames);
9138  swiper.emitContainerClasses();
9139}
9140
9141var classes = {
9142  addClasses,
9143  removeClasses
9144};
9145
9146function checkOverflow() {
9147  const swiper = this;
9148  const {
9149    isLocked: wasLocked,
9150    params
9151  } = swiper;
9152  const {
9153    slidesOffsetBefore
9154  } = params;
9155  if (slidesOffsetBefore) {
9156    const lastSlideIndex = swiper.slides.length - 1;
9157    const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;
9158    swiper.isLocked = swiper.size > lastSlideRightEdge;
9159  } else {
9160    swiper.isLocked = swiper.snapGrid.length === 1;
9161  }
9162  if (params.allowSlideNext === true) {
9163    swiper.allowSlideNext = !swiper.isLocked;
9164  }
9165  if (params.allowSlidePrev === true) {
9166    swiper.allowSlidePrev = !swiper.isLocked;
9167  }
9168  if (wasLocked && wasLocked !== swiper.isLocked) {
9169    swiper.isEnd = false;
9170  }
9171  if (wasLocked !== swiper.isLocked) {
9172    swiper.emit(swiper.isLocked ? 'lock' : 'unlock');
9173  }
9174}
9175var checkOverflow$1 = {
9176  checkOverflow
9177};
9178
9179var defaults = {
9180  init: true,
9181  direction: 'horizontal',
9182  oneWayMovement: false,
9183  swiperElementNodeName: 'SWIPER-CONTAINER',
9184  touchEventsTarget: 'wrapper',
9185  initialSlide: 0,
9186  speed: 300,
9187  cssMode: false,
9188  updateOnWindowResize: true,
9189  resizeObserver: true,
9190  nested: false,
9191  createElements: false,
9192  eventsPrefix: 'swiper',
9193  enabled: true,
9194  focusableElements: 'input, select, option, textarea, button, video, label',
9195  // Overrides
9196  width: null,
9197  height: null,
9198  //
9199  preventInteractionOnTransition: false,
9200  // ssr
9201  userAgent: null,
9202  url: null,
9203  // To support iOS's swipe-to-go-back gesture (when being used in-app).
9204  edgeSwipeDetection: false,
9205  edgeSwipeThreshold: 20,
9206  // Autoheight
9207  autoHeight: false,
9208  // Set wrapper width
9209  setWrapperSize: false,
9210  // Virtual Translate
9211  virtualTranslate: false,
9212  // Effects
9213  effect: 'slide',
9214  // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'
9215
9216  // Breakpoints
9217  breakpoints: undefined,
9218  breakpointsBase: 'window',
9219  // Slides grid
9220  spaceBetween: 0,
9221  slidesPerView: 1,
9222  slidesPerGroup: 1,
9223  slidesPerGroupSkip: 0,
9224  slidesPerGroupAuto: false,
9225  centeredSlides: false,
9226  centeredSlidesBounds: false,
9227  slidesOffsetBefore: 0,
9228  // in px
9229  slidesOffsetAfter: 0,
9230  // in px
9231  normalizeSlideIndex: true,
9232  centerInsufficientSlides: false,
9233  // Disable swiper and hide navigation when container not overflow
9234  watchOverflow: true,
9235  // Round length
9236  roundLengths: false,
9237  // Touches
9238  touchRatio: 1,
9239  touchAngle: 45,
9240  simulateTouch: true,
9241  shortSwipes: true,
9242  longSwipes: true,
9243  longSwipesRatio: 0.5,
9244  longSwipesMs: 300,
9245  followFinger: true,
9246  allowTouchMove: true,
9247  threshold: 5,
9248  touchMoveStopPropagation: false,
9249  touchStartPreventDefault: true,
9250  touchStartForcePreventDefault: false,
9251  touchReleaseOnEdges: false,
9252  // Unique Navigation Elements
9253  uniqueNavElements: true,
9254  // Resistance
9255  resistance: true,
9256  resistanceRatio: 0.85,
9257  // Progress
9258  watchSlidesProgress: false,
9259  // Cursor
9260  grabCursor: false,
9261  // Clicks
9262  preventClicks: true,
9263  preventClicksPropagation: true,
9264  slideToClickedSlide: false,
9265  // loop
9266  loop: false,
9267  loopAddBlankSlides: true,
9268  loopAdditionalSlides: 0,
9269  loopPreventsSliding: true,
9270  // rewind
9271  rewind: false,
9272  // Swiping/no swiping
9273  allowSlidePrev: true,
9274  allowSlideNext: true,
9275  swipeHandler: null,
9276  // '.swipe-handler',
9277  noSwiping: true,
9278  noSwipingClass: 'swiper-no-swiping',
9279  noSwipingSelector: null,
9280  // Passive Listeners
9281  passiveListeners: true,
9282  maxBackfaceHiddenSlides: 10,
9283  // NS
9284  containerModifierClass: 'swiper-',
9285  // NEW
9286  slideClass: 'swiper-slide',
9287  slideBlankClass: 'swiper-slide-blank',
9288  slideActiveClass: 'swiper-slide-active',
9289  slideVisibleClass: 'swiper-slide-visible',
9290  slideFullyVisibleClass: 'swiper-slide-fully-visible',
9291  slideNextClass: 'swiper-slide-next',
9292  slidePrevClass: 'swiper-slide-prev',
9293  wrapperClass: 'swiper-wrapper',
9294  lazyPreloaderClass: 'swiper-lazy-preloader',
9295  lazyPreloadPrevNext: 0,
9296  // Callbacks
9297  runCallbacksOnInit: true,
9298  // Internals
9299  _emitClasses: false
9300};
9301
9302function moduleExtendParams(params, allModulesParams) {
9303  return function extendParams(obj) {
9304    if (obj === void 0) {
9305      obj = {};
9306    }
9307    const moduleParamName = Object.keys(obj)[0];
9308    const moduleParams = obj[moduleParamName];
9309    if (typeof moduleParams !== 'object' || moduleParams === null) {
9310      (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.x)(allModulesParams, obj);
9311      return;
9312    }
9313    if (params[moduleParamName] === true) {
9314      params[moduleParamName] = {
9315        enabled: true
9316      };
9317    }
9318    if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {
9319      params[moduleParamName].auto = true;
9320    }
9321    if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {
9322      params[moduleParamName].auto = true;
9323    }
9324    if (!(moduleParamName in params && 'enabled' in moduleParams)) {
9325      (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.x)(allModulesParams, obj);
9326      return;
9327    }
9328    if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {
9329      params[moduleParamName].enabled = true;
9330    }
9331    if (!params[moduleParamName]) params[moduleParamName] = {
9332      enabled: false
9333    };
9334    (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.x)(allModulesParams, obj);
9335  };
9336}
9337
9338/* eslint no-param-reassign: "off" */
9339const prototypes = {
9340  eventsEmitter,
9341  update,
9342  translate,
9343  transition,
9344  slide,
9345  loop,
9346  grabCursor,
9347  events: events$1,
9348  breakpoints,
9349  checkOverflow: checkOverflow$1,
9350  classes
9351};
9352const extendedDefaults = {};
9353class Swiper {
9354  constructor() {
9355    let el;
9356    let params;
9357    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
9358      args[_key] = arguments[_key];
9359    }
9360    if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {
9361      params = args[0];
9362    } else {
9363      [el, params] = args;
9364    }
9365    if (!params) params = {};
9366    params = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.x)({}, params);
9367    if (el && !params.el) params.el = el;
9368    const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
9369    if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {
9370      const swipers = [];
9371      document.querySelectorAll(params.el).forEach(containerEl => {
9372        const newParams = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.x)({}, params, {
9373          el: containerEl
9374        });
9375        swipers.push(new Swiper(newParams));
9376      });
9377      // eslint-disable-next-line no-constructor-return
9378      return swipers;
9379    }
9380
9381    // Swiper Instance
9382    const swiper = this;
9383    swiper.__swiper__ = true;
9384    swiper.support = getSupport();
9385    swiper.device = getDevice({
9386      userAgent: params.userAgent
9387    });
9388    swiper.browser = getBrowser();
9389    swiper.eventsListeners = {};
9390    swiper.eventsAnyListeners = [];
9391    swiper.modules = [...swiper.__modules__];
9392    if (params.modules && Array.isArray(params.modules)) {
9393      swiper.modules.push(...params.modules);
9394    }
9395    const allModulesParams = {};
9396    swiper.modules.forEach(mod => {
9397      mod({
9398        params,
9399        swiper,
9400        extendParams: moduleExtendParams(params, allModulesParams),
9401        on: swiper.on.bind(swiper),
9402        once: swiper.once.bind(swiper),
9403        off: swiper.off.bind(swiper),
9404        emit: swiper.emit.bind(swiper)
9405      });
9406    });
9407
9408    // Extend defaults with modules params
9409    const swiperParams = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.x)({}, defaults, allModulesParams);
9410
9411    // Extend defaults with passed params
9412    swiper.params = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.x)({}, swiperParams, extendedDefaults, params);
9413    swiper.originalParams = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.x)({}, swiper.params);
9414    swiper.passedParams = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.x)({}, params);
9415
9416    // add event listeners
9417    if (swiper.params && swiper.params.on) {
9418      Object.keys(swiper.params.on).forEach(eventName => {
9419        swiper.on(eventName, swiper.params.on[eventName]);
9420      });
9421    }
9422    if (swiper.params && swiper.params.onAny) {
9423      swiper.onAny(swiper.params.onAny);
9424    }
9425
9426    // Extend Swiper
9427    Object.assign(swiper, {
9428      enabled: swiper.params.enabled,
9429      el,
9430      // Classes
9431      classNames: [],
9432      // Slides
9433      slides: [],
9434      slidesGrid: [],
9435      snapGrid: [],
9436      slidesSizesGrid: [],
9437      // isDirection
9438      isHorizontal() {
9439        return swiper.params.direction === 'horizontal';
9440      },
9441      isVertical() {
9442        return swiper.params.direction === 'vertical';
9443      },
9444      // Indexes
9445      activeIndex: 0,
9446      realIndex: 0,
9447      //
9448      isBeginning: true,
9449      isEnd: false,
9450      // Props
9451      translate: 0,
9452      previousTranslate: 0,
9453      progress: 0,
9454      velocity: 0,
9455      animating: false,
9456      cssOverflowAdjustment() {
9457        // Returns 0 unless \`translate\` is > 2**23
9458        // Should be subtracted from css values to prevent overflow
9459        return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;
9460      },
9461      // Locks
9462      allowSlideNext: swiper.params.allowSlideNext,
9463      allowSlidePrev: swiper.params.allowSlidePrev,
9464      // Touch Events
9465      touchEventsData: {
9466        isTouched: undefined,
9467        isMoved: undefined,
9468        allowTouchCallbacks: undefined,
9469        touchStartTime: undefined,
9470        isScrolling: undefined,
9471        currentTranslate: undefined,
9472        startTranslate: undefined,
9473        allowThresholdMove: undefined,
9474        // Form elements to match
9475        focusableElements: swiper.params.focusableElements,
9476        // Last click time
9477        lastClickTime: 0,
9478        clickTimeout: undefined,
9479        // Velocities
9480        velocities: [],
9481        allowMomentumBounce: undefined,
9482        startMoving: undefined,
9483        pointerId: null,
9484        touchId: null
9485      },
9486      // Clicks
9487      allowClick: true,
9488      // Touches
9489      allowTouchMove: swiper.params.allowTouchMove,
9490      touches: {
9491        startX: 0,
9492        startY: 0,
9493        currentX: 0,
9494        currentY: 0,
9495        diff: 0
9496      },
9497      // Images
9498      imagesToLoad: [],
9499      imagesLoaded: 0
9500    });
9501    swiper.emit('_swiper');
9502
9503    // Init
9504    if (swiper.params.init) {
9505      swiper.init();
9506    }
9507
9508    // Return app instance
9509    // eslint-disable-next-line no-constructor-return
9510    return swiper;
9511  }
9512  getDirectionLabel(property) {
9513    if (this.isHorizontal()) {
9514      return property;
9515    }
9516    // prettier-ignore
9517    return {
9518      'width': 'height',
9519      'margin-top': 'margin-left',
9520      'margin-bottom ': 'margin-right',
9521      'margin-left': 'margin-top',
9522      'margin-right': 'margin-bottom',
9523      'padding-left': 'padding-top',
9524      'padding-right': 'padding-bottom',
9525      'marginRight': 'marginBottom'
9526    }[property];
9527  }
9528  getSlideIndex(slideEl) {
9529    const {
9530      slidesEl,
9531      params
9532    } = this;
9533    const slides = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, \`.\${params.slideClass}, swiper-slide\`);
9534    const firstSlideIndex = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(slides[0]);
9535    return (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(slideEl) - firstSlideIndex;
9536  }
9537  getSlideIndexByData(index) {
9538    return this.getSlideIndex(this.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index));
9539  }
9540  getSlideIndexWhenGrid(index) {
9541    if (this.grid && this.params.grid && this.params.grid.rows > 1) {
9542      if (this.params.grid.fill === 'column') {
9543        index = Math.floor(index / this.params.grid.rows);
9544      } else if (this.params.grid.fill === 'row') {
9545        index = index % Math.ceil(this.slides.length / this.params.grid.rows);
9546      }
9547    }
9548    return index;
9549  }
9550  recalcSlides() {
9551    const swiper = this;
9552    const {
9553      slidesEl,
9554      params
9555    } = swiper;
9556    swiper.slides = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, \`.\${params.slideClass}, swiper-slide\
vendor: 5,717 bytes, lines 9556-9733
9556`);
9557  }
9558  enable() {
9559    const swiper = this;
9560    if (swiper.enabled) return;
9561    swiper.enabled = true;
9562    if (swiper.params.grabCursor) {
9563      swiper.setGrabCursor();
9564    }
9565    swiper.emit('enable');
9566  }
9567  disable() {
9568    const swiper = this;
9569    if (!swiper.enabled) return;
9570    swiper.enabled = false;
9571    if (swiper.params.grabCursor) {
9572      swiper.unsetGrabCursor();
9573    }
9574    swiper.emit('disable');
9575  }
9576  setProgress(progress, speed) {
9577    const swiper = this;
9578    progress = Math.min(Math.max(progress, 0), 1);
9579    const min = swiper.minTranslate();
9580    const max = swiper.maxTranslate();
9581    const current = (max - min) * progress + min;
9582    swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);
9583    swiper.updateActiveIndex();
9584    swiper.updateSlidesClasses();
9585  }
9586  emitContainerClasses() {
9587    const swiper = this;
9588    if (!swiper.params._emitClasses || !swiper.el) return;
9589    const cls = swiper.el.className.split(' ').filter(className => {
9590      return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;
9591    });
9592    swiper.emit('_containerClasses', cls.join(' '));
9593  }
9594  getSlideClasses(slideEl) {
9595    const swiper = this;
9596    if (swiper.destroyed) return '';
9597    return slideEl.className.split(' ').filter(className => {
9598      return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;
9599    }).join(' ');
9600  }
9601  emitSlidesClasses() {
9602    const swiper = this;
9603    if (!swiper.params._emitClasses || !swiper.el) return;
9604    const updates = [];
9605    swiper.slides.forEach(slideEl => {
9606      const classNames = swiper.getSlideClasses(slideEl);
9607      updates.push({
9608        slideEl,
9609        classNames
9610      });
9611      swiper.emit('_slideClass', slideEl, classNames);
9612    });
9613    swiper.emit('_slideClasses', updates);
9614  }
9615  slidesPerViewDynamic(view, exact) {
9616    if (view === void 0) {
9617      view = 'current';
9618    }
9619    if (exact === void 0) {
9620      exact = false;
9621    }
9622    const swiper = this;
9623    const {
9624      params,
9625      slides,
9626      slidesGrid,
9627      slidesSizesGrid,
9628      size: swiperSize,
9629      activeIndex
9630    } = swiper;
9631    let spv = 1;
9632    if (typeof params.slidesPerView === 'number') return params.slidesPerView;
9633    if (params.centeredSlides) {
9634      let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0;
9635      let breakLoop;
9636      for (let i = activeIndex + 1; i < slides.length; i += 1) {
9637        if (slides[i] && !breakLoop) {
9638          slideSize += Math.ceil(slides[i].swiperSlideSize);
9639          spv += 1;
9640          if (slideSize > swiperSize) breakLoop = true;
9641        }
9642      }
9643      for (let i = activeIndex - 1; i >= 0; i -= 1) {
9644        if (slides[i] && !breakLoop) {
9645          slideSize += slides[i].swiperSlideSize;
9646          spv += 1;
9647          if (slideSize > swiperSize) breakLoop = true;
9648        }
9649      }
9650    } else {
9651      // eslint-disable-next-line
9652      if (view === 'current') {
9653        for (let i = activeIndex + 1; i < slides.length; i += 1) {
9654          const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;
9655          if (slideInView) {
9656            spv += 1;
9657          }
9658        }
9659      } else {
9660        // previous
9661        for (let i = activeIndex - 1; i >= 0; i -= 1) {
9662          const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;
9663          if (slideInView) {
9664            spv += 1;
9665          }
9666        }
9667      }
9668    }
9669    return spv;
9670  }
9671  update() {
9672    const swiper = this;
9673    if (!swiper || swiper.destroyed) return;
9674    const {
9675      snapGrid,
9676      params
9677    } = swiper;
9678    // Breakpoints
9679    if (params.breakpoints) {
9680      swiper.setBreakpoint();
9681    }
9682    [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => {
9683      if (imageEl.complete) {
9684        processLazyPreloader(swiper, imageEl);
9685      }
9686    });
9687    swiper.updateSize();
9688    swiper.updateSlides();
9689    swiper.updateProgress();
9690    swiper.updateSlidesClasses();
9691    function setTranslate() {
9692      const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;
9693      const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());
9694      swiper.setTranslate(newTranslate);
9695      swiper.updateActiveIndex();
9696      swiper.updateSlidesClasses();
9697    }
9698    let translated;
9699    if (params.freeMode && params.freeMode.enabled && !params.cssMode) {
9700      setTranslate();
9701      if (params.autoHeight) {
9702        swiper.updateAutoHeight();
9703      }
9704    } else {
9705      if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {
9706        const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;
9707        translated = swiper.slideTo(slides.length - 1, 0, false, true);
9708      } else {
9709        translated = swiper.slideTo(swiper.activeIndex, 0, false, true);
9710      }
9711      if (!translated) {
9712        setTranslate();
9713      }
9714    }
9715    if (params.watchOverflow && snapGrid !== swiper.snapGrid) {
9716      swiper.checkOverflow();
9717    }
9718    swiper.emit('update');
9719  }
9720  changeDirection(newDirection, needUpdate) {
9721    if (needUpdate === void 0) {
9722      needUpdate = true;
9723    }
9724    const swiper = this;
9725    const currentDirection = swiper.params.direction;
9726    if (!newDirection) {
9727      // eslint-disable-next-line
9728      newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';
9729    }
9730    if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {
9731      return swiper;
9732    }
9733    swiper.el.classList.remove(
9733\`\${swiper.params.containerModifierClass}\${currentDirection}\`);
9734    swiper.el.classList.add(\`\${swiper.params.containerModifierClass}\${newDirection}\`);
9735    swiper.emitContainerClasses();
9736    swiper.params.direction = newDirection;
vendor: 2,080 bytes, lines 9737-9794
9737    swiper.slides.forEach(slideEl => {
9738      if (newDirection === 'vertical') {
9739        slideEl.style.width = '';
9740      } else {
9741        slideEl.style.height = '';
9742      }
9743    });
9744    swiper.emit('changeDirection');
9745    if (needUpdate) swiper.update();
9746    return swiper;
9747  }
9748  changeLanguageDirection(direction) {
9749    const swiper = this;
9750    if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;
9751    swiper.rtl = direction === 'rtl';
9752    swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;
9753    if (swiper.rtl) {
9754      swiper.el.classList.add(\`\${swiper.params.containerModifierClass}rtl\`);
9755      swiper.el.dir = 'rtl';
9756    } else {
9757      swiper.el.classList.remove(\`\${swiper.params.containerModifierClass}rtl\`);
9758      swiper.el.dir = 'ltr';
9759    }
9760    swiper.update();
9761  }
9762  mount(element) {
9763    const swiper = this;
9764    if (swiper.mounted) return true;
9765
9766    // Find el
9767    let el = element || swiper.params.el;
9768    if (typeof el === 'string') {
9769      el = document.querySelector(el);
9770    }
9771    if (!el) {
9772      return false;
9773    }
9774    el.swiper = swiper;
9775    if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) {
9776      swiper.isElement = true;
9777    }
9778    const getWrapperSelector = () => {
9779      return \`.\${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}\`;
9780    };
9781    const getWrapper = () => {
9782      if (el && el.shadowRoot && el.shadowRoot.querySelector) {
9783        const res = el.shadowRoot.querySelector(getWrapperSelector());
9784        // Children needs to return slot items
9785        return res;
9786      }
9787      return (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(el, getWrapperSelector())[0];
9788    };
9789    // Find Wrapper
9790    let wrapperEl = getWrapper();
9791    if (!wrapperEl && swiper.params.createElements) {
9792      wrapperEl = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', swiper.params.wrapperClass);
9793      el.append(wrapperEl);
9794      (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(el, \`.\${swiper.params.slideClass}
9794\`).forEach(slideEl => {
9795        wrapperEl.append(slideEl);
9796      });
9797    }
9798    Object.assign(swiper, {
9799      el,
9800      wrapperEl,
9801      slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,
9802      hostEl: swiper.isElement ? el.parentNode.host : el,
9803      mounted: true,
9804      // RTL
9805      rtl: el.dir.toLowerCase() === 'rtl' || (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.q)(el, 'direction') === 'rtl',
9806      rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.q)(el, 'direction') === 'rtl'),
9807      wrongRTL: (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.q)(wrapperEl, 'display') === '-webkit-box'
9808    });
9809    return true;
9810  }
9811  init(el) {
9812    const swiper = this;
9813    if (swiper.initialized) return swiper;
9814    const mounted = swiper.mount(el);
9815    if (mounted === false) return swiper;
9816    swiper.emit('beforeInit');
9817
9818    // Set breakpoint
9819    if (swiper.params.breakpoints) {
9820      swiper.setBreakpoint();
9821    }
9822
9823    // Add Classes
9824    swiper.addClasses();
9825
9826    // Update size
9827    swiper.updateSize();
9828
9829    // Update slides
9830    swiper.updateSlides();
9831    if (swiper.params.watchOverflow) {
9832      swiper.checkOverflow();
9833    }
9834
9835    // Set Grab Cursor
9836    if (swiper.params.grabCursor && swiper.enabled) {
9837      swiper.setGrabCursor();
9838    }
9839
9840    // Slide To Initial Slide
9841    if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {
9842      swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);
9843    } else {
9844      swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);
9845    }
9846
9847    // Create loop
9848    if (swiper.params.loop) {
9849      swiper.loopCreate(undefined, true);
9850    }
9851
9852    // Attach events
9853    swiper.attachEvents();
9854    const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')];
9855    if (swiper.isElement) {
9856      lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]'));
9857    }
9858    lazyElements.forEach(imageEl => {
9859      if (imageEl.complete) {
9860        processLazyPreloader(swiper, imageEl);
9861      } else {
9862        imageEl.addEventListener('load', e => {
9863          processLazyPreloader(swiper, e.target);
9864        });
9865      }
9866    });
9867    preload(swiper);
9868
9869    // Init Flag
9870    swiper.initialized = true;
9871    preload(swiper);
9872
9873    // Emit
9874    swiper.emit('init');
9875    swiper.emit('afterInit');
9876    return swiper;
9877  }
9878  destroy(deleteInstance, cleanStyles) {
9879    if (deleteInstance === void 0) {
9880      deleteInstance = true;
9881    }
9882    if (cleanStyles === void 0) {
9883      cleanStyles = true;
9884    }
9885    const swiper = this;
9886    const {
9887      params,
9888      el,
9889      wrapperEl,
9890      slides
9891    } = swiper;
9892    if (typeof swiper.params === 'undefined' || swiper.destroyed) {
9893      return null;
9894    }
9895    swiper.emit('beforeDestroy');
9896
9897    // Init Flag
9898    swiper.initialized = false;
9899
9900    // Detach events
9901    swiper.detachEvents();
9902
9903    // Destroy loop
9904    if (params.loop) {
9905      swiper.loopDestroy();
9906    }
9907
9908    // Cleanup styles
9909    if (cleanStyles) {
9910      swiper.removeClasses();
9911      if (el && typeof el !== 'string') {
9912        el.removeAttribute('style');
9913      }
9914      if (wrapperEl) {
9915        wrapperEl.removeAttribute('style');
9916      }
9917      if (slides && slides.length) {
vendor: 4,097 bytes, lines 9918-9974
9918        slides.forEach(slideEl => {
9919          slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);
9920          slideEl.removeAttribute('style');
9921          slideEl.removeAttribute('data-swiper-slide-index');
9922        });
9923      }
9924    }
9925    swiper.emit('destroy');
9926
9927    // Detach emitter events
9928    Object.keys(swiper.eventsListeners).forEach(eventName => {
9929      swiper.off(eventName);
9930    });
9931    if (deleteInstance !== false) {
9932      if (swiper.el && typeof swiper.el !== 'string') {
9933        swiper.el.swiper = null;
9934      }
9935      (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.y)(swiper);
9936    }
9937    swiper.destroyed = true;
9938    return null;
9939  }
9940  static extendDefaults(newDefaults) {
9941    (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.x)(extendedDefaults, newDefaults);
9942  }
9943  static get extendedDefaults() {
9944    return extendedDefaults;
9945  }
9946  static get defaults() {
9947    return defaults;
9948  }
9949  static installModule(mod) {
9950    if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];
9951    const modules = Swiper.prototype.__modules__;
9952    if (typeof mod === 'function' && modules.indexOf(mod) < 0) {
9953      modules.push(mod);
9954    }
9955  }
9956  static use(module) {
9957    if (Array.isArray(module)) {
9958      module.forEach(m => Swiper.installModule(m));
9959      return Swiper;
9960    }
9961    Swiper.installModule(module);
9962    return Swiper;
9963  }
9964}
9965Object.keys(prototypes).forEach(prototypeGroup => {
9966  Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {
9967    Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];
9968  });
9969});
9970Swiper.use([Resize, Observer]);
9971
9972
9973//# sourceURL=[module]
9974//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9zaGFyZWQvc3dpcGVyLWNvcmUubWpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBd0U7QUFDK1I7O0FBRXZXO0FBQ0E7QUFDQSxpQkFBaUIsc0RBQVM7QUFDMUIsbUJBQW1CLHNEQUFXO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHdCQUF3QjtBQUM1QjtBQUNBLGlCQUFpQixzREFBUztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDLHFCQUFxQjtBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxnRUFBZ0UsWUFBWSxHQUFHLGFBQWE7QUFDNUY7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsaUJBQWlCLHNEQUFTO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixpQkFBaUIsc0RBQVM7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQSxpQkFBaUIsc0RBQVM7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLDZDQUFjO0FBQzdDLHNCQUFzQiw2QkFBNkI7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEVBQTBFLGFBQWE7QUFDdkY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEd
9974BQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyRUFBMkUsZUFBZTtBQUMxRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwyQkFBMkIsNkNBQVksMENBQTBDLDZDQUFZO0FBQzdGLDZCQUE2Qiw2Q0FBWSx5Q0FBeUMsNkNBQVk7QUFDOUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0EsaUJBQWlCLDZDQUFlLGVBQWUseUJBQXlCO0FBQ3hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsSUFBSSw2Q0FBYztBQUNsQixJQUFJLDZDQUFjO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsa0JBQWtCLGtCQUFrQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsNkNBQVkseUNBQXlDOztBQUUxRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNENBQTRDLDZDQUFnQix5QkFBeUIsNkNBQWdCO0FBQ3JHLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBLGdFQUFnRSxVQUFVO0FBQzFFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQixrQ0FBa0M7QUFDakU7QUFDQTtBQUNBLDREQUE0RCxrQ0FBa0M7QUFDOUY7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHFCQUFxQjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixZQUFZO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQiw4REFBOEQ7QUFDbEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsOEJBQThCLGFBQWE7QUFDM0MsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxJQUFJLDZDQUFjLGtEQUFrRCxhQUFhO0FBQ2pGLElBQUksNkNBQWMsaURBQWlELGtFQUFrRTtBQUNySTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLDhCQUE4QjtBQUNqRTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxNQUFNO0FBQ04sa0JBQWtCLDRDQUE0QztBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7QUFDQSxjQUFjLHlCQUF5QjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsdUVBQXVFLFVBQVU7QUFDakY7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixtQkFBbUI7QUFDckM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLGtCQUFrQixtQkFBbUI7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0EsV0FBVyw2Q0FBZSxlQUFlLGtCQUFrQixFQUFFLFNBQVMsZ0JBQWdCLFNBQVM7QU
9974FDL0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0VBQWtFLFdBQVc7QUFDN0UsTUFBTTtBQUNOLGtFQUFrRSxZQUFZO0FBQzlFO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQiw2Q0FBYyxrQkFBa0Isa0JBQWtCO0FBQ3BFO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGtCQUFrQiw2Q0FBYyxrQkFBa0Isa0JBQWtCO0FBQ3BFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxzRUFBc0UseUJBQXlCO0FBQy9GO0FBQ0E7QUFDQSwyQ0FBMkMsaUNBQWlDO0FBQzVFO0FBQ0E7QUFDQSxzREFBc0QsaUNBQWlDO0FBQ3ZGLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQSwwREFBMEQsaUNBQWlDO0FBQzNGO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDLG9DQUFvQztBQUMzRTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osb0RBQW9ELHVEQUF1RDtBQUMzRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLGtCQUFrQix1QkFBdUI7QUFDekM7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLGtCQUFrQjtBQUMvQztBQUNBO0FBQ0EseURBQXlELGtCQUFrQjtBQUMzRTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLDBCQUEwQjtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5Qiw2Q0FBWTtBQUNyQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBLCtDQUErQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUU7QUFDakU7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0VBQStFLGtGQUFrRjs7QUFFaks7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsUUFBUSw2Q0FBb0I7QUFDNUI7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxtREFBbUQsU0FBUztBQUM1RDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxrREFBa0QsbURBQW1EO0FBQ3JHO0FBQ0EsMkJBQTJCLEtBQUs7QUFDaEM7QUFDQSx1Q0FBdUMsS0FBSztBQUM1QyxJQUFJO0FBQ0osd0NBQXdDLEtBQUs7QUFDN0M7QUFDQSx3Q0FBd0MsS0FBSztBQUM3QyxNQUFNO0FBQ04sd0NBQXdDLEtBQUs7QUFDN0M7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0F
9974BRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHVCQUF1QjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsbURBQW1ELHNEQUFzRDs7QUFFekc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsUUFBUSw2Q0FBb0I7QUFDNUI7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBLGdFQUFnRSxrQkFBa0I7QUFDbEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsMENBQTBDLDZDQUFlLGNBQWMsY0FBYyw0QkFBNEIsVUFBVTtBQUMzSCxNQUFNLDZDQUFRO0FBQ2Q7QUFDQSxPQUFPO0FBQ1AsTUFBTTtBQUNOO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxtQkFBbUIsNkNBQWUsZUFBZSxrQkFBa0I7QUFDbkU7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsbUJBQW1CLDZDQUFlLGVBQWUsdUJBQXVCO0FBQ3hFO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isb0JBQW9CO0FBQ3hDLHlDQUF5Qyw2Q0FBYSw2Q0FBNkMsNkNBQWE7QUFDaEg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOLE1BQU0sNkNBQVc7QUFDakI7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOLE1BQU0sNkNBQVc7QUFDakI7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHdCQUF3QjtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLDZDQUFXO0FBQ2YsSUFBSTtBQUNKLElBQUksNkNBQVc7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsNENBQTRDO0FBQ2hFO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QyxRQUFRO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isb0JBQW9CO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEd
9974BQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixzREFBVyxhQU
9974FhLHNEQUFTO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHNEQUFTO0FBQzFCO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsc0RBQVc7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyw2Q0FBZ0I7QUFDekI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzRkFBc0Ysc0JBQXNCO0FBQzVHOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHdCQUF3Qiw2Q0FBRztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsbUJBQW1CLHNEQUFXO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUM7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsNEJBQTRCLDZDQUFHO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUM7QUFDdkM7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx1QkFBdUIsNkNBQUc7QUFDMUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLDZDQUFHO0FBQzFCLEVBQUUsNkNBQVE7QUFDVjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLHVCQUF1QjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0lBQW9JO0FBQ3BJO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0F
9974BRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsbUJBQW1CLHNEQUFXO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLG1CQUFtQixzREFBVzs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsOEJBQThCLFVBQVUsOEJBQThCO0FBQ2pHO0FBQ0EsSUFBSTtBQUNKLHdCQUF3Qiw4QkFBOEI7QUFDdEQ7QUFDQSwwQkFBMEIsOEJBQThCO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsNkNBQU07QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixzREFBUztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0Esa0JBQWtCLG1CQUFtQjtBQUNyQztBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSwyQ0FBMkMsTUFBTTtBQUNqRDtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxNQUFNO0FBQ047QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSw2Q0FBTTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLDZDQUFNO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksNkNBQU07QUFDVjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0VBQXdFLGFBQWE7QUFDckY7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0EsYUFBYSw2Q0FBTSxHQUFHO0FBQ3RCO0FBQ0EscUJBQXFCLHNEQUFXO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBLD
9974BCQUEwQiw2Q0FBTSxHQUFHO0FBQ25DO0FBQ0EsU0FBUztBQUNUO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLOztBQUVMO0FBQ0EseUJBQXlCLDZDQUFNLEdBQUc7O0FBRWxDO0FBQ0Esb0JBQW9CLDZDQUFNLEdBQUc7QUFDN0IsNEJBQTRCLDZDQUFNLEdBQUc7QUFDckMsMEJBQTBCLDZDQUFNLEdBQUc7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOLG1CQUFtQiw2Q0FBZSxlQUFlLGtCQUFrQjtBQUNuRSw0QkFBNEIsNkNBQVk7QUFDeEMsV0FBVyw2Q0FBWTtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOLG9CQUFvQiw2Q0FBZSxlQUFlLGtCQUFrQjtBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0MsbUJBQW1CO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyxRQUFRO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0Esc0NBQXNDLG1CQUFtQjtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0Esc0NBQXNDLFFBQVE7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLHFDQUFxQyxFQUFFLGlCQUFpQjtBQUMxRiwrQkFBK0IscUNBQXFDLEVBQUUsYUFBYTtBQUNuRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMscUNBQXFDO0FBQ3RFO0FBQ0EsTUFBTTtBQUNOLG9DQUFvQyxxQ0FBcUM7QUFDekU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsK0RBQStEO0FBQ2hGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSw2Q0FBZTtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQiw2Q0FBYTtBQUMvQjtBQUNBLE1BQU0sNkNBQWUsU0FBUyx5QkFBeUI7QUFDdkQ7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2Qyw2Q0FBWTtBQUN6RCxtR0FBbUcsNkNBQVk7QUFDL0csZ0JBQWdCLDZDQUFZO0FBQzVCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7O0F
9974BRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sNkNBQVc7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksNkNBQU07QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILENBQUM7QUFDRDs7QUFFc0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9zaGFyZWQvc3dpcGVyLWNvcmUubWpzP2U0OTIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYSBhcyBnZXRXaW5kb3csIGcgYXMgZ2V0RG9jdW1lbnQgfSBmcm9tICcuL3Nzci13aW5kb3cuZXNtLm1qcyc7XG5pbXBvcnQgeyBiIGFzIGVsZW1lbnRQYXJlbnRzLCBxIGFzIGVsZW1lbnRTdHlsZSwgZSBhcyBlbGVtZW50Q2hpbGRyZW4sIGEgYXMgc2V0Q1NTUHJvcGVydHksIGggYXMgZWxlbWVudE91dGVyU2l6ZSwgciBhcyBlbGVtZW50TmV4dEFsbCwgdCBhcyBlbGVtZW50UHJldkFsbCwgayBhcyBnZXRUcmFuc2xhdGUsIHUgYXMgYW5pbWF0ZUNTU01vZGVTY3JvbGwsIG4gYXMgbmV4dFRpY2ssIHYgYXMgc2hvd1dhcm5pbmcsIGMgYXMgY3JlYXRlRWxlbWVudCwgdyBhcyBlbGVtZW50SXNDaGlsZE9mLCBmIGFzIG5vdywgeCBhcyBleHRlbmQsIGkgYXMgZWxlbWVudEluZGV4LCB5IGFzIGRlbGV0ZVByb3BzIH0gZnJvbSAnLi91dGlscy5tanMnO1xuXG5sZXQgc3VwcG9ydDtcbmZ1bmN0aW9uIGNhbGNTdXBwb3J0KCkge1xuICBjb25zdCB3aW5kb3cgPSBnZXRXaW5kb3coKTtcbiAgY29uc3QgZG9jdW1lbnQgPSBnZXREb2N1bWVudCgpO1xuICByZXR1cm4ge1xuICAgIHNtb290aFNjcm9sbDogZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZSAmJiAnc2Nyb2xsQmVoYXZpb3InIGluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZSxcbiAgICB0b3VjaDogISEoJ29udG91Y2hzdGFydCcgaW4gd2luZG93IHx8IHdpbmRvdy5Eb2N1bWVudFRvdWNoICYmIGRvY3VtZW50IGluc3RhbmNlb2Ygd2luZG93LkRvY3VtZW50VG91Y2gpXG4gIH07XG59XG5mdW5jdGlvbiBnZXRTdXBwb3J0KCkge1xuICBpZiAoIXN1cHBvcnQpIHtcbiAgICBzdXBwb3J0ID0gY2FsY1N1cHBvcnQoKTtcbiAgfVxuICByZXR1cm4gc3VwcG9ydDtcbn1cblxubGV0IGRldmljZUNhY2hlZDtcbmZ1bmN0aW9uIGNhbGNEZXZpY2UoX3RlbXApIHtcbiAgbGV0IHtcbiAgICB1c2VyQWdlbnRcbiAgfSA9IF90ZW1wID09PSB2b2lkIDAgPyB7fSA6IF90ZW1wO1xuICBjb25zdCBzdXBwb3J0ID0gZ2V0U3VwcG9ydCgpO1xuICBjb25zdCB3aW5kb3cgPSBnZXRXaW5kb3coKTtcbiAgY29uc3QgcGxhdGZvcm0gPSB3aW5kb3cubmF2aWdhdG9yLnBsYXRmb3JtO1xuICBjb25zdCB1YSA9IHVzZXJBZ2VudCB8fCB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudDtcbiAgY29uc3QgZGV2aWNlID0ge1xuICAgIGlvczogZmFsc2UsXG4gICAgYW5kcm9pZDogZmFsc2VcbiAgfTtcbiAgY29uc3Qgc2NyZWVuV2lkdGggPSB3aW5kb3cuc2NyZWVuLndpZHRoO1xuICBjb25zdCBzY3JlZW5IZWlnaHQgPSB3aW5kb3cuc2NyZWVuLmhlaWdodDtcbiAgY29uc3QgYW5kcm9pZCA9IHVhLm1hdGNoKC8oQW5kcm9pZCk7P1tcXHNcXC9dKyhbXFxkLl0rKT8vKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBsZXQgaXBhZCA9IHVhLm1hdGNoKC8oaVBhZCkuKk9TXFxzKFtcXGRfXSspLyk7XG4gIGNvbnN0IGlwb2QgPSB1YS5tYXRjaCgvKGlQb2QpKC4qT1NcXHMoW1xcZF9dKykpPy8pO1xuICBjb25zdCBpcGhvbmUgPSAhaXBhZCAmJiB1YS5tYXRjaCgvKGlQaG9uZVxcc09TfGlPUylcXHMoW1xcZF9dKykvKTtcbiAgY29uc3Qgd2luZG93cyA9IHBsYXRmb3JtID09PSAnV2luMzInO1xuICBsZXQgbWFjb3MgPSBwbGF0Zm9ybSA9PT0gJ01hY0ludGVsJztcblxuICAvLyBpUGFkT3MgMTMgZml4XG4gIGNvbnN0IGlQYWRTY3JlZW5zID0gWycxMDI0eDEzNjYnLCAnMTM2NngxMDI0JywgJzgzNHgxMTk0JywgJzExOTR4ODM0JywgJzgzNHgxMTEyJywgJzExMTJ4ODM0JywgJzc2OHgxMDI0JywgJzEwMjR4NzY4JywgJzgyMHgxMTgwJywgJzExODB4ODIwJywgJzgxMHgxMDgwJywgJzEwODB4ODEwJ107XG4gIGlmICghaXBhZCAmJiBtYWNvcyAmJiBzdXBwb3J0LnRvdWNoICYmIGlQYWRTY3JlZW5zLmluZGV4T2YoYCR7c2NyZWVuV2lkdGh9eCR7c2NyZWVuSGVpZ2h0fWApID49IDApIHtcbiAgICBpcGFkID0gdWEubWF0Y2goLyhWZXJzaW9uKVxcLyhbXFxkLl0rKS8pO1xuICAgIGlmICghaXBhZCkgaXBhZCA9IFswLCAxLCAnMTNfMF8wJ107XG4gICAgbWFjb3MgPSBmYWxzZTtcbiAgfVxuXG4gIC8vIEFuZHJvaWRcbiAgaWYgKGFuZHJvaWQgJiYgIXdpbmRvd3MpIHtcbiAgICBkZXZpY2Uub3MgPSAnYW5kcm9pZCc7XG4gICAgZGV2aWNlLmFuZHJvaWQgPSB0cnVlO1xuICB9XG4gIGlmIChpcGFkIHx8IGlwaG9uZSB8fCBpcG9kKSB7XG4gICAgZGV2aWNlLm9zID0gJ2lvcyc7XG4gICAgZGV2aWNlLmlvcyA9IHRydWU7XG4gIH1cblxuICAvLyBFeHBvcnQgb2JqZWN0XG4gIHJldHVybiBkZXZpY2U7XG59XG5mdW5jdGlvbiBnZXREZXZpY2Uob3ZlcnJpZGVzKSB7XG4gIGlmIChvdmVycmlkZXMgPT09IHZvaWQgMCkge1xuICAgIG92ZXJyaWRlcyA9IHt9O1xuICB9XG4gIGlmICghZGV2aWNlQ2FjaGVkKSB7XG4gICAgZGV2aWNlQ2FjaGVkID0gY2FsY0RldmljZShvdmVycmlkZXMpO1xuICB9XG4gIHJldHVybiBkZXZpY2VDYWNoZWQ7XG59XG5cbmxldCBicm93c2VyO1xuZnVuY3Rpb24gY2FsY0Jyb3dzZXIoKSB7XG4gIGNvbnN0IHdpbmRvdyA9IGdldFdpbmRvdygpO1xuICBjb25zdCBkZXZpY2UgPSBnZXREZXZpY2UoKTtcbiAgbGV0IG5lZWRQZXJzcGVjdGl2ZUZpeCA9IGZhbHNlO1xuICBmdW5jdGlvbiBpc1NhZmFyaSgpIHtcbiAgICBjb25zdCB1YSA9IHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIHVhLmluZGV4T2YoJ3NhZmFyaScpID49IDAgJiYgdWEuaW5kZXhPZignY2hyb21lJykgPCAwICYmIHVhLmluZGV4T2YoJ2FuZHJvaWQnKSA8IDA7XG4gIH1cbiAgaWYgKGlzU2FmYXJpKCkpIHtcbiAgICBjb25zdCB1YSA9IFN0cmluZyh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCk7XG4gICAgaWYgKHVhLmluY2x1ZGVzKCdWZXJzaW9uLycpKSB7XG4gICAgICBjb25zdCBbbWFqb3IsIG1pbm9yXSA9IHVhLnNwbGl0KCdWZXJzaW9uLycpWzFdLnNwbGl0KCcgJylbMF0uc3BsaXQoJy4nKS5tYXAobnVtID0+IE51bWJlcihudW0pKTtcbiAgICAgIG5lZWRQZXJzcGVjdGl2ZUZpeCA9IG1ham9yIDwgMTYgfHwgbWFqb3IgPT09IDE2ICYmIG1pbm9yIDwgMjtcbiAgICB9XG4gI
9974H1cbiAgY29uc3QgaXNXZWJWaWV3ID0gLyhpUGhvbmV8aVBvZHxpUGFkKS4qQXBwbGVXZWJLaXQoPyEuKlNhZmFyaSkvaS50ZXN0KHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50KTtcbiAgY29uc3QgaXNTYWZhcmlCcm93c2VyID0gaXNTYWZhcmkoKTtcbiAgY29uc3QgbmVlZDNkRml4ID0gaXNTYWZhcmlCcm93c2VyIHx8IGlzV2ViVmlldyAmJiBkZXZpY2UuaW9zO1xuICByZXR1cm4ge1xuICAgIGlzU2FmYXJpOiBuZWVkUGVyc3BlY3RpdmVGaXggfHwgaXNTYWZhcmlCcm93c2VyLFxuICAgIG5lZWRQZXJzcGVjdGl2ZUZpeCxcbiAgICBuZWVkM2RGaXgsXG4gICAgaXNXZWJWaWV3XG4gIH07XG59XG5mdW5jdGlvbiBnZXRCcm93c2VyKCkge1xuICBpZiAoIWJyb3dzZXIpIHtcbiAgICBicm93c2VyID0gY2FsY0Jyb3dzZXIoKTtcbiAgfVxuICByZXR1cm4gYnJvd3Nlcjtcbn1cblxuZnVuY3Rpb24gUmVzaXplKF9yZWYpIHtcbiAgbGV0IHtcbiAgICBzd2lwZXIsXG4gICAgb24sXG4gICAgZW1pdFxuICB9ID0gX3JlZjtcbiAgY29uc3Qgd2luZG93ID0gZ2V0V2luZG93KCk7XG4gIGxldCBvYnNlcnZlciA9IG51bGw7XG4gIGxldCBhbmltYXRpb25GcmFtZSA9IG51bGw7XG4gIGNvbnN0IHJlc2l6ZUhhbmRsZXIgPSAoKSA9PiB7XG4gICAgaWYgKCFzd2lwZXIgfHwgc3dpcGVyLmRlc3Ryb3llZCB8fCAhc3dpcGVyLmluaXRpYWxpemVkKSByZXR1cm47XG4gICAgZW1pdCgnYmVmb3JlUmVzaXplJyk7XG4gICAgZW1pdCgncmVzaXplJyk7XG4gIH07XG4gIGNvbnN0IGNyZWF0ZU9ic2VydmVyID0gKCkgPT4ge1xuICAgIGlmICghc3dpcGVyIHx8IHN3aXBlci5kZXN0cm95ZWQgfHwgIXN3aXBlci5pbml0aWFsaXplZCkgcmV0dXJuO1xuICAgIG9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKGVudHJpZXMgPT4ge1xuICAgICAgYW5pbWF0aW9uRnJhbWUgPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgIGhlaWdodFxuICAgICAgICB9ID0gc3dpcGVyO1xuICAgICAgICBsZXQgbmV3V2lkdGggPSB3aWR0aDtcbiAgICAgICAgbGV0IG5ld0hlaWdodCA9IGhlaWdodDtcbiAgICAgICAgZW50cmllcy5mb3JFYWNoKF9yZWYyID0+IHtcbiAgICAgICAgICBsZXQge1xuICAgICAgICAgICAgY29udGVudEJveFNpemUsXG4gICAgICAgICAgICBjb250ZW50UmVjdCxcbiAgICAgICAgICAgIHRhcmdldFxuICAgICAgICAgIH0gPSBfcmVmMjtcbiAgICAgICAgICBpZiAodGFyZ2V0ICYmIHRhcmdldCAhPT0gc3dpcGVyLmVsKSByZXR1cm47XG4gICAgICAgICAgbmV3V2lkdGggPSBjb250ZW50UmVjdCA/IGNvbnRlbnRSZWN0LndpZHRoIDogKGNvbnRlbnRCb3hTaXplWzBdIHx8IGNvbnRlbnRCb3hTaXplKS5pbmxpbmVTaXplO1xuICAgICAgICAgIG5ld0hlaWdodCA9IGNvbnRlbnRSZWN0ID8gY29udGVudFJlY3QuaGVpZ2h0IDogKGNvbnRlbnRCb3hTaXplWzBdIHx8IGNvbnRlbnRCb3hTaXplKS5ibG9ja1NpemU7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAobmV3V2lkdGggIT09IHdpZHRoIHx8IG5ld0hlaWdodCAhPT0gaGVpZ2h0KSB7XG4gICAgICAgICAgcmVzaXplSGFuZGxlcigpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBvYnNlcnZlci5vYnNlcnZlKHN3aXBlci5lbCk7XG4gIH07XG4gIGNvbnN0IHJlbW92ZU9ic2VydmVyID0gKCkgPT4ge1xuICAgIGlmIChhbmltYXRpb25GcmFtZSkge1xuICAgICAgd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKGFuaW1hdGlvbkZyYW1lKTtcbiAgICB9XG4gICAgaWYgKG9ic2VydmVyICYmIG9ic2VydmVyLnVub2JzZXJ2ZSAmJiBzd2lwZXIuZWwpIHtcbiAgICAgIG9ic2VydmVyLnVub2JzZXJ2ZShzd2lwZXIuZWwpO1xuICAgICAgb2JzZXJ2ZXIgPSBudWxsO1xuICAgIH1cbiAgfTtcbiAgY29uc3Qgb3JpZW50YXRpb25DaGFuZ2VIYW5kbGVyID0gKCkgPT4ge1xuICAgIGlmICghc3dpcGVyIHx8IHN3aXBlci5kZXN0cm95ZWQgfHwgIXN3aXBlci5pbml0aWFsaXplZCkgcmV0dXJuO1xuICAgIGVtaXQoJ29yaWVudGF0aW9uY2hhbmdlJyk7XG4gIH07XG4gIG9uKCdpbml0JywgKCkgPT4ge1xuICAgIGlmIChzd2lwZXIucGFyYW1zLnJlc2l6ZU9ic2VydmVyICYmIHR5cGVvZiB3aW5kb3cuUmVzaXplT2JzZXJ2ZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBjcmVhdGVPYnNlcnZlcigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgcmVzaXplSGFuZGxlcik7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ29yaWVudGF0aW9uY2hhbmdlJywgb3JpZW50YXRpb25DaGFuZ2VIYW5kbGVyKTtcbiAgfSk7XG4gIG9uKCdkZXN0cm95JywgKCkgPT4ge1xuICAgIHJlbW92ZU9ic2VydmVyKCk7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHJlc2l6ZUhhbmRsZXIpO1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdvcmllbnRhdGlvbmNoYW5nZScsIG9yaWVudGF0aW9uQ2hhbmdlSGFuZGxlcik7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBPYnNlcnZlcihfcmVmKSB7XG4gIGxldCB7XG4gICAgc3dpcGVyLFxuICAgIGV4dGVuZFBhcmFtcyxcbiAgICBvbixcbiAgICBlbWl0XG4gIH0gPSBfcmVmO1xuICBjb25zdCBvYnNlcnZlcnMgPSBbXTtcbiAgY29uc3Qgd2luZG93ID0gZ2V0V2luZG93KCk7XG4gIGNvbnN0IGF0dGFjaCA9IGZ1bmN0aW9uICh0YXJnZXQsIG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgICBvcHRpb25zID0ge307XG4gICAgfVxuICAgIGNvbnN0IE9ic2VydmVyRnVuYyA9IHdpbmRvdy5NdXRhdGlvbk9ic2VydmVyIHx8IHdpbmRvdy5XZWJraXRNdXRhdGlvbk9ic2VydmVyO1xuICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IE9ic2VydmVyRnVuYyhtdXRhdGlvbnMgPT4ge1xuICAgICAgLy8gVGhlIG9ic2VydmVyVXBkYXRlIGV2ZW50IHNob3VsZCBvbmx5IGJlIHRyaWdnZXJlZFxuICAgICAgLy8gb25jZSBkZXNwaXRlIHRoZSBudW1iZXIgb2YgbXV0YXRpb25zLiAgQWRkaXRpb25hbFxuICAgICAgLy8gdHJpZ2dlcnMgYXJlIHJlZHVuZGFudCBhbmQgYXJlIHZlcnkgY29zdGx5XG4gICAgICBpZiAoc3dpcGVyLl9fcHJldmVudE9ic2VydmVyX18pIHJldHVybjtcbiAgICAgIGlmIChtdXRhdGlvbnMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIGVtaXQoJ29ic2VydmVyVXBkYXRlJywgbXV0YXRpb25zWzBdKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3Qgb2JzZXJ2ZXJVcGRhdGUgPSBmdW5jdGlvbiBvYnNlcnZlclVwZGF0ZSgpIHtcbiAgICAgICAgZW1pdCgnb2JzZXJ2ZXJVcGRhdGUnLCBtdXRhdGlvbnNbMF0pO1xuICAgICAgfTtcbiAgICAgIGlmICh3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKSB7XG4gICAgICAgI
9974HdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUob2JzZXJ2ZXJVcGRhdGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2luZG93LnNldFRpbWVvdXQob2JzZXJ2ZXJVcGRhdGUsIDApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIG9ic2VydmVyLm9ic2VydmUodGFyZ2V0LCB7XG4gICAgICBhdHRyaWJ1dGVzOiB0eXBlb2Ygb3B0aW9ucy5hdHRyaWJ1dGVzID09PSAndW5kZWZpbmVkJyA/IHRydWUgOiBvcHRpb25zLmF0dHJpYnV0ZXMsXG4gICAgICBjaGlsZExpc3Q6IHN3aXBlci5pc0VsZW1lbnQgfHwgKHR5cGVvZiBvcHRpb25zLmNoaWxkTGlzdCA9PT0gJ3VuZGVmaW5lZCcgPyB0cnVlIDogb3B0aW9ucykuY2hpbGRMaXN0LFxuICAgICAgY2hhcmFjdGVyRGF0YTogdHlwZW9mIG9wdGlvbnMuY2hhcmFjdGVyRGF0YSA9PT0gJ3VuZGVmaW5lZCcgPyB0cnVlIDogb3B0aW9ucy5jaGFyYWN0ZXJEYXRhXG4gICAgfSk7XG4gICAgb2JzZXJ2ZXJzLnB1c2gob2JzZXJ2ZXIpO1xuICB9O1xuICBjb25zdCBpbml0ID0gKCkgPT4ge1xuICAgIGlmICghc3dpcGVyLnBhcmFtcy5vYnNlcnZlcikgcmV0dXJuO1xuICAgIGlmIChzd2lwZXIucGFyYW1zLm9ic2VydmVQYXJlbnRzKSB7XG4gICAgICBjb25zdCBjb250YWluZXJQYXJlbnRzID0gZWxlbWVudFBhcmVudHMoc3dpcGVyLmhvc3RFbCk7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbnRhaW5lclBhcmVudHMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgYXR0YWNoKGNvbnRhaW5lclBhcmVudHNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBPYnNlcnZlIGNvbnRhaW5lclxuICAgIGF0dGFjaChzd2lwZXIuaG9zdEVsLCB7XG4gICAgICBjaGlsZExpc3Q6IHN3aXBlci5wYXJhbXMub2JzZXJ2ZVNsaWRlQ2hpbGRyZW5cbiAgICB9KTtcblxuICAgIC8vIE9ic2VydmUgd3JhcHBlclxuICAgIGF0dGFjaChzd2lwZXIud3JhcHBlckVsLCB7XG4gICAgICBhdHRyaWJ1dGVzOiBmYWxzZVxuICAgIH0pO1xuICB9O1xuICBjb25zdCBkZXN0cm95ID0gKCkgPT4ge1xuICAgIG9ic2VydmVycy5mb3JFYWNoKG9ic2VydmVyID0+IHtcbiAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICB9KTtcbiAgICBvYnNlcnZlcnMuc3BsaWNlKDAsIG9ic2VydmVycy5sZW5ndGgpO1xuICB9O1xuICBleHRlbmRQYXJhbXMoe1xuICAgIG9ic2VydmVyOiBmYWxzZSxcbiAgICBvYnNlcnZlUGFyZW50czogZmFsc2UsXG4gICAgb2JzZXJ2ZVNsaWRlQ2hpbGRyZW46IGZhbHNlXG4gIH0pO1xuICBvbignaW5pdCcsIGluaXQpO1xuICBvbignZGVzdHJveScsIGRlc3Ryb3kpO1xufVxuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bmRlcnNjb3JlLWRhbmdsZSAqL1xuXG52YXIgZXZlbnRzRW1pdHRlciA9IHtcbiAgb24oZXZlbnRzLCBoYW5kbGVyLCBwcmlvcml0eSkge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGlmICghc2VsZi5ldmVudHNMaXN0ZW5lcnMgfHwgc2VsZi5kZXN0cm95ZWQpIHJldHVybiBzZWxmO1xuICAgIGlmICh0eXBlb2YgaGFuZGxlciAhPT0gJ2Z1bmN0aW9uJykgcmV0dXJuIHNlbGY7XG4gICAgY29uc3QgbWV0aG9kID0gcHJpb3JpdHkgPyAndW5zaGlmdCcgOiAncHVzaCc7XG4gICAgZXZlbnRzLnNwbGl0KCcgJykuZm9yRWFjaChldmVudCA9PiB7XG4gICAgICBpZiAoIXNlbGYuZXZlbnRzTGlzdGVuZXJzW2V2ZW50XSkgc2VsZi5ldmVudHNMaXN0ZW5lcnNbZXZlbnRdID0gW107XG4gICAgICBzZWxmLmV2ZW50c0xpc3RlbmVyc1tldmVudF1bbWV0aG9kXShoYW5kbGVyKTtcbiAgICB9KTtcbiAgICByZXR1cm4gc2VsZjtcbiAgfSxcbiAgb25jZShldmVudHMsIGhhbmRsZXIsIHByaW9yaXR5KSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgaWYgKCFzZWxmLmV2ZW50c0xpc3RlbmVycyB8fCBzZWxmLmRlc3Ryb3llZCkgcmV0dXJuIHNlbGY7XG4gICAgaWYgKHR5cGVvZiBoYW5kbGVyICE9PSAnZnVuY3Rpb24nKSByZXR1cm4gc2VsZjtcbiAgICBmdW5jdGlvbiBvbmNlSGFuZGxlcigpIHtcbiAgICAgIHNlbGYub2ZmKGV2ZW50cywgb25jZUhhbmRsZXIpO1xuICAgICAgaWYgKG9uY2VIYW5kbGVyLl9fZW1pdHRlclByb3h5KSB7XG4gICAgICAgIGRlbGV0ZSBvbmNlSGFuZGxlci5fX2VtaXR0ZXJQcm94eTtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgICAgfVxuICAgICAgaGFuZGxlci5hcHBseShzZWxmLCBhcmdzKTtcbiAgICB9XG4gICAgb25jZUhhbmRsZXIuX19lbWl0dGVyUHJveHkgPSBoYW5kbGVyO1xuICAgIHJldHVybiBzZWxmLm9uKGV2ZW50cywgb25jZUhhbmRsZXIsIHByaW9yaXR5KTtcbiAgfSxcbiAgb25BbnkoaGFuZGxlciwgcHJpb3JpdHkpIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBpZiAoIXNlbGYuZXZlbnRzTGlzdGVuZXJzIHx8IHNlbGYuZGVzdHJveWVkKSByZXR1cm4gc2VsZjtcbiAgICBpZiAodHlwZW9mIGhhbmRsZXIgIT09ICdmdW5jdGlvbicpIHJldHVybiBzZWxmO1xuICAgIGNvbnN0IG1ldGhvZCA9IHByaW9yaXR5ID8gJ3Vuc2hpZnQnIDogJ3B1c2gnO1xuICAgIGlmIChzZWxmLmV2ZW50c0FueUxpc3RlbmVycy5pbmRleE9mKGhhbmRsZXIpIDwgMCkge1xuICAgICAgc2VsZi5ldmVudHNBbnlMaXN0ZW5lcnNbbWV0aG9kXShoYW5kbGVyKTtcbiAgICB9XG4gICAgcmV0dXJuIHNlbGY7XG4gIH0sXG4gIG9mZkFueShoYW5kbGVyKSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgaWYgKCFzZWxmLmV2ZW50c0xpc3RlbmVycyB8fCBzZWxmLmRlc3Ryb3llZCkgcmV0dXJuIHNlbGY7XG4gICAgaWYgKCFzZWxmLmV2ZW50c0FueUxpc3RlbmVycykgcmV0dXJuIHNlbGY7XG4gICAgY29uc3QgaW5kZXggPSBzZWxmLmV2ZW50c0FueUxpc3RlbmVycy5pbmRleE9mKGhhbmRsZXIpO1xuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICBzZWxmLmV2ZW50c0FueUxpc3RlbmVycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbiAgICByZXR1cm4gc2VsZjtcbiAgfSxcbiAgb2ZmKGV2ZW50cywgaGFuZGxlcikge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGlmICghc2VsZi5ldmVudHNMaXN0ZW5lcnMgfHwgc2VsZi5kZXN0cm95ZWQpIHJldHVybi
9974BzZWxmO1xuICAgIGlmICghc2VsZi5ldmVudHNMaXN0ZW5lcnMpIHJldHVybiBzZWxmO1xuICAgIGV2ZW50cy5zcGxpdCgnICcpLmZvckVhY2goZXZlbnQgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBoYW5kbGVyID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICBzZWxmLmV2ZW50c0xpc3RlbmVyc1tldmVudF0gPSBbXTtcbiAgICAgIH0gZWxzZSBpZiAoc2VsZi5ldmVudHNMaXN0ZW5lcnNbZXZlbnRdKSB7XG4gICAgICAgIHNlbGYuZXZlbnRzTGlzdGVuZXJzW2V2ZW50XS5mb3JFYWNoKChldmVudEhhbmRsZXIsIGluZGV4KSA9PiB7XG4gICAgICAgICAgaWYgKGV2ZW50SGFuZGxlciA9PT0gaGFuZGxlciB8fCBldmVudEhhbmRsZXIuX19lbWl0dGVyUHJveHkgJiYgZXZlbnRIYW5kbGVyLl9fZW1pdHRlclByb3h5ID09PSBoYW5kbGVyKSB7XG4gICAgICAgICAgICBzZWxmLmV2ZW50c0xpc3RlbmVyc1tldmVudF0uc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBzZWxmO1xuICB9LFxuICBlbWl0KCkge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGlmICghc2VsZi5ldmVudHNMaXN0ZW5lcnMgfHwgc2VsZi5kZXN0cm95ZWQpIHJldHVybiBzZWxmO1xuICAgIGlmICghc2VsZi5ldmVudHNMaXN0ZW5lcnMpIHJldHVybiBzZWxmO1xuICAgIGxldCBldmVudHM7XG4gICAgbGV0IGRhdGE7XG4gICAgbGV0IGNvbnRleHQ7XG4gICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4yKSwgX2tleTIgPSAwOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG4gICAgICBhcmdzW19rZXkyXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG4gICAgfVxuICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycgfHwgQXJyYXkuaXNBcnJheShhcmdzWzBdKSkge1xuICAgICAgZXZlbnRzID0gYXJnc1swXTtcbiAgICAgIGRhdGEgPSBhcmdzLnNsaWNlKDEsIGFyZ3MubGVuZ3RoKTtcbiAgICAgIGNvbnRleHQgPSBzZWxmO1xuICAgIH0gZWxzZSB7XG4gICAgICBldmVudHMgPSBhcmdzWzBdLmV2ZW50cztcbiAgICAgIGRhdGEgPSBhcmdzWzBdLmRhdGE7XG4gICAgICBjb250ZXh0ID0gYXJnc1swXS5jb250ZXh0IHx8IHNlbGY7XG4gICAgfVxuICAgIGRhdGEudW5zaGlmdChjb250ZXh0KTtcbiAgICBjb25zdCBldmVudHNBcnJheSA9IEFycmF5LmlzQXJyYXkoZXZlbnRzKSA/IGV2ZW50cyA6IGV2ZW50cy5zcGxpdCgnICcpO1xuICAgIGV2ZW50c0FycmF5LmZvckVhY2goZXZlbnQgPT4ge1xuICAgICAgaWYgKHNlbGYuZXZlbnRzQW55TGlzdGVuZXJzICYmIHNlbGYuZXZlbnRzQW55TGlzdGVuZXJzLmxlbmd0aCkge1xuICAgICAgICBzZWxmLmV2ZW50c0FueUxpc3RlbmVycy5mb3JFYWNoKGV2ZW50SGFuZGxlciA9PiB7XG4gICAgICAgICAgZXZlbnRIYW5kbGVyLmFwcGx5KGNvbnRleHQsIFtldmVudCwgLi4uZGF0YV0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmIChzZWxmLmV2ZW50c0xpc3RlbmVycyAmJiBzZWxmLmV2ZW50c0xpc3RlbmVyc1tldmVudF0pIHtcbiAgICAgICAgc2VsZi5ldmVudHNMaXN0ZW5lcnNbZXZlbnRdLmZvckVhY2goZXZlbnRIYW5kbGVyID0+IHtcbiAgICAgICAgICBldmVudEhhbmRsZXIuYXBwbHkoY29udGV4dCwgZGF0YSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBzZWxmO1xuICB9XG59O1xuXG5mdW5jdGlvbiB1cGRhdGVTaXplKCkge1xuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBsZXQgd2lkdGg7XG4gIGxldCBoZWlnaHQ7XG4gIGNvbnN0IGVsID0gc3dpcGVyLmVsO1xuICBpZiAodHlwZW9mIHN3aXBlci5wYXJhbXMud2lkdGggIT09ICd1bmRlZmluZWQnICYmIHN3aXBlci5wYXJhbXMud2lkdGggIT09IG51bGwpIHtcbiAgICB3aWR0aCA9IHN3aXBlci5wYXJhbXMud2lkdGg7XG4gIH0gZWxzZSB7XG4gICAgd2lkdGggPSBlbC5jbGllbnRXaWR0aDtcbiAgfVxuICBpZiAodHlwZW9mIHN3aXBlci5wYXJhbXMuaGVpZ2h0ICE9PSAndW5kZWZpbmVkJyAmJiBzd2lwZXIucGFyYW1zLmhlaWdodCAhPT0gbnVsbCkge1xuICAgIGhlaWdodCA9IHN3aXBlci5wYXJhbXMuaGVpZ2h0O1xuICB9IGVsc2Uge1xuICAgIGhlaWdodCA9IGVsLmNsaWVudEhlaWdodDtcbiAgfVxuICBpZiAod2lkdGggPT09IDAgJiYgc3dpcGVyLmlzSG9yaXpvbnRhbCgpIHx8IGhlaWdodCA9PT0gMCAmJiBzd2lwZXIuaXNWZXJ0aWNhbCgpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gU3VidHJhY3QgcGFkZGluZ3NcbiAgd2lkdGggPSB3aWR0aCAtIHBhcnNlSW50KGVsZW1lbnRTdHlsZShlbCwgJ3BhZGRpbmctbGVmdCcpIHx8IDAsIDEwKSAtIHBhcnNlSW50KGVsZW1lbnRTdHlsZShlbCwgJ3BhZGRpbmctcmlnaHQnKSB8fCAwLCAxMCk7XG4gIGhlaWdodCA9IGhlaWdodCAtIHBhcnNlSW50KGVsZW1lbnRTdHlsZShlbCwgJ3BhZGRpbmctdG9wJykgfHwgMCwgMTApIC0gcGFyc2VJbnQoZWxlbWVudFN0eWxlKGVsLCAncGFkZGluZy1ib3R0b20nKSB8fCAwLCAxMCk7XG4gIGlmIChOdW1iZXIuaXNOYU4od2lkdGgpKSB3aWR0aCA9IDA7XG4gIGlmIChOdW1iZXIuaXNOYU4oaGVpZ2h0KSkgaGVpZ2h0ID0gMDtcbiAgT2JqZWN0LmFzc2lnbihzd2lwZXIsIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgc2l6ZTogc3dpcGVyLmlzSG9yaXpvbnRhbCgpID8gd2lkdGggOiBoZWlnaHRcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZVNsaWRlcygpIHtcbiAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgZnVuY3Rpb24gZ2V0RGlyZWN0aW9uUHJvcGVydHlWYWx1ZShub2RlLCBsYWJlbCkge1xuICAgIHJldHVybiBwYXJzZUZsb2F0KG5vZGUuZ2V0UHJvcGVydHlWYWx1ZShzd2lwZXIuZ2V0RGlyZWN0aW9uTGFiZWwobGFiZWwpKSB8fCAwKTtcbiAgfVxuICBjb25zdCBwYXJhbXMgPSBzd2lwZXIucGFyYW1zO1xuICBjb25zdCB7XG4gICAgd3JhcHBlckVsLFxuICAgIHNsaWRlc0VsLFxuICAgIHNpemU6IHN3aXBlclNpemUsXG4gICAgcnRsVHJhbnNsYXRlOiBydGwsXG4gICAgd3JvbmdSVExcbiAgfSA9IHN3aXBlcjtcbiAgY29uc3QgaXNWaXJ0dWFsID0gc3dpcGVyLnZpcnR1YWwgJiYgcGFyYW1zLnZpcnR1YWwuZW5hYmxlZDtcbiAgY29uc3QgcHJldmlvdXNTbGlkZXNMZW5ndGggPSBpc1ZpcnR1YWwgPyBzd2lwZXIudmlydHVhbC5zbGlkZXMubGVuZ3RoIDogc3dpcGVyLnNsaWRlcy5sZW5ndGg7XG4gIGNvbnN0IHNsaWRlcyA9IGVsZW1lbnRDaGlsZHJlbihzbGlkZXNFbCwgYC4ke3N3aXBlci5wYXJhbXMuc2xpZGVDbGFzc30sIHN3aXBlci1zbGlkZWApO1xuICBjb25zdCBzbGlkZXNMZW5ndGggPSBpc1ZpcnR1YWwgPyBzd2lwZXIudmlydHVhbC5zbGlkZXMubGVuZ3RoIDogc2xpZGVzLmxlbmd0aDtcbiAgbGV0IHNuYXBHcmlkID0gW107XG4gIGNvbnN0IHNsaWRlc0dyaWQgPSBbXTtcbiAgY29uc3Qgc2xpZGVzU2l6ZXNHcmlkID0gW107XG4gIGxldCBvZmZzZXRCZWZvcmUgPSBwYXJhbXMuc2xpZGVzT2Zmc2V0QmVmb3JlO1xuICBpZiAodHlwZW9mIG9mZnNldEJlZm9yZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIG9mZnNldEJlZm9yZSA9IHBhcmFtcy5zbGlkZXNPZmZzZXRCZWZvcmUuY2FsbChzd2lwZXIpO1xuICB9XG4gIGxldCBvZmZzZXRBZnRlciA9IHBhcmFtcy5zbGlkZXNPZmZzZXRBZnRlcjtcbiAgaWYgKHR5cGVvZiBvZmZzZXRBZnRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIG9mZnNldEFmdGVyID0gcGFyYW1zLnNsaWRlc09mZnNldEFmdGVyLmNhbGwoc3dpcGVyKTtcbiAgfVxuICBjb25zdCBwcmV2aW91c1NuYXBHcmlkTGVuZ3RoID0gc3dpcGVyLnNuYXBHcmlkLmxlbmd0aDtcbiAgY29uc3QgcHJldmlvdXNTbGlkZXNHcmlkTGVuZ3RoID0gc3dpcGVyLnNsaWRlc0dyaWQubGVuZ3RoO1xuICBsZXQgc3BhY2VCZXR3ZWVuID0gcGFyYW1zLnNwYWNlQmV0d2VlbjtcbiAgbGV0IHNsaWRlUG9zaXRpb24gPSAtb2Zmc2V0QmVmb3JlO1xuICBsZXQgcHJldlNsaWRlU2l6ZSA9IDA7XG4gIGxldCBpbmRleCA9IDA7XG4gIGlmICh0eXBlb2Ygc3dpcGVyU2l6ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKHR5cGVvZiBzcGFjZUJldHdlZW4gPT09ICdzdHJpbmcnICYmIHNwYWNlQmV0d2Vlbi5pbmRleE9mKCclJykgPj0gMCkge1xuICAgIHNwYWNlQmV0d2VlbiA9IHBhcnNlRmxvYXQoc3BhY2VCZXR3ZWVuLnJlcGxhY2UoJyUnLCAnJykpIC8gMTAwICogc3dpcGVyU2l6ZTtcbiAgfSBlbHNlIGlmICh0eXBlb2Ygc3BhY2VCZXR3ZWVuID09PSAnc3RyaW5nJykge1xuICAgIHNwYWNlQmV0d2VlbiA9IHBhcnNlRmxvYXQoc3BhY2VCZXR3ZWVuKTtcbiAgfVxuICBzd2lwZXIudmlydHVhbFNpemUgPSAtc3B
9974hY2VCZXR3ZWVuO1xuXG4gIC8vIHJlc2V0IG1hcmdpbnNcbiAgc2xpZGVzLmZvckVhY2goc2xpZGVFbCA9PiB7XG4gICAgaWYgKHJ0bCkge1xuICAgICAgc2xpZGVFbC5zdHlsZS5tYXJnaW5MZWZ0ID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNsaWRlRWwuc3R5bGUubWFyZ2luUmlnaHQgPSAnJztcbiAgICB9XG4gICAgc2xpZGVFbC5zdHlsZS5tYXJnaW5Cb3R0b20gPSAnJztcbiAgICBzbGlkZUVsLnN0eWxlLm1hcmdpblRvcCA9ICcnO1xuICB9KTtcblxuICAvLyByZXNldCBjc3NNb2RlIG9mZnNldHNcbiAgaWYgKHBhcmFtcy5jZW50ZXJlZFNsaWRlcyAmJiBwYXJhbXMuY3NzTW9kZSkge1xuICAgIHNldENTU1Byb3BlcnR5KHdyYXBwZXJFbCwgJy0tc3dpcGVyLWNlbnRlcmVkLW9mZnNldC1iZWZvcmUnLCAnJyk7XG4gICAgc2V0Q1NTUHJvcGVydHkod3JhcHBlckVsLCAnLS1zd2lwZXItY2VudGVyZWQtb2Zmc2V0LWFmdGVyJywgJycpO1xuICB9XG4gIGNvbnN0IGdyaWRFbmFibGVkID0gcGFyYW1zLmdyaWQgJiYgcGFyYW1zLmdyaWQucm93cyA+IDEgJiYgc3dpcGVyLmdyaWQ7XG4gIGlmIChncmlkRW5hYmxlZCkge1xuICAgIHN3aXBlci5ncmlkLmluaXRTbGlkZXMoc2xpZGVzKTtcbiAgfSBlbHNlIGlmIChzd2lwZXIuZ3JpZCkge1xuICAgIHN3aXBlci5ncmlkLnVuc2V0U2xpZGVzKCk7XG4gIH1cblxuICAvLyBDYWxjIHNsaWRlc1xuICBsZXQgc2xpZGVTaXplO1xuICBjb25zdCBzaG91bGRSZXNldFNsaWRlU2l6ZSA9IHBhcmFtcy5zbGlkZXNQZXJWaWV3ID09PSAnYXV0bycgJiYgcGFyYW1zLmJyZWFrcG9pbnRzICYmIE9iamVjdC5rZXlzKHBhcmFtcy5icmVha3BvaW50cykuZmlsdGVyKGtleSA9PiB7XG4gICAgcmV0dXJuIHR5cGVvZiBwYXJhbXMuYnJlYWtwb2ludHNba2V5XS5zbGlkZXNQZXJWaWV3ICE9PSAndW5kZWZpbmVkJztcbiAgfSkubGVuZ3RoID4gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzbGlkZXNMZW5ndGg7IGkgKz0gMSkge1xuICAgIHNsaWRlU2l6ZSA9IDA7XG4gICAgbGV0IHNsaWRlO1xuICAgIGlmIChzbGlkZXNbaV0pIHNsaWRlID0gc2xpZGVzW2ldO1xuICAgIGlmIChncmlkRW5hYmxlZCkge1xuICAgICAgc3dpcGVyLmdyaWQudXBkYXRlU2xpZGUoaSwgc2xpZGUsIHNsaWRlcyk7XG4gICAgfVxuICAgIGlmIChzbGlkZXNbaV0gJiYgZWxlbWVudFN0eWxlKHNsaWRlLCAnZGlzcGxheScpID09PSAnbm9uZScpIGNvbnRpbnVlOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG5cbiAgICBpZiAocGFyYW1zLnNsaWRlc1BlclZpZXcgPT09ICdhdXRvJykge1xuICAgICAgaWYgKHNob3VsZFJlc2V0U2xpZGVTaXplKSB7XG4gICAgICAgIHNsaWRlc1tpXS5zdHlsZVtzd2lwZXIuZ2V0RGlyZWN0aW9uTGFiZWwoJ3dpZHRoJyldID0gYGA7XG4gICAgICB9XG4gICAgICBjb25zdCBzbGlkZVN0eWxlcyA9IGdldENvbXB1dGVkU3R5bGUoc2xpZGUpO1xuICAgICAgY29uc3QgY3VycmVudFRyYW5zZm9ybSA9IHNsaWRlLnN0eWxlLnRyYW5zZm9ybTtcbiAgICAgIGNvbnN0IGN1cnJlbnRXZWJLaXRUcmFuc2Zvcm0gPSBzbGlkZS5zdHlsZS53ZWJraXRUcmFuc2Zvcm07XG4gICAgICBpZiAoY3VycmVudFRyYW5zZm9ybSkge1xuICAgICAgICBzbGlkZS5zdHlsZS50cmFuc2Zvcm0gPSAnbm9uZSc7XG4gICAgICB9XG4gICAgICBpZiAoY3VycmVudFdlYktpdFRyYW5zZm9ybSkge1xuICAgICAgICBzbGlkZS5zdHlsZS53ZWJraXRUcmFuc2Zvcm0gPSAnbm9uZSc7XG4gICAgICB9XG4gICAgICBpZiAocGFyYW1zLnJvdW5kTGVuZ3Rocykge1xuICAgICAgICBzbGlkZVNpemUgPSBzd2lwZXIuaXNIb3Jpem9udGFsKCkgPyBlbGVtZW50T3V0ZXJTaXplKHNsaWRlLCAnd2lkdGgnLCB0cnVlKSA6IGVsZW1lbnRPdXRlclNpemUoc2xpZGUsICdoZWlnaHQnLCB0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgICAgICBjb25zdCB3aWR0aCA9IGdldERpcmVjdGlvblByb3BlcnR5VmFsdWUoc2xpZGVTdHlsZXMsICd3aWR0aCcpO1xuICAgICAgICBjb25zdCBwYWRkaW5nTGVmdCA9IGdldERpcmVjdGlvblByb3BlcnR5VmFsdWUoc2xpZGVTdHlsZXMsICdwYWRkaW5nLWxlZnQnKTtcbiAgICAgICAgY29uc3QgcGFkZGluZ1JpZ2h0ID0gZ2V0RGlyZWN0aW9uUHJvcGVydHlWYWx1ZShzbGlkZVN0eWxlcywgJ3BhZGRpbmctcmlnaHQnKTtcbiAgICAgICAgY29uc3QgbWFyZ2luTGVmdCA9IGdldERpcmVjdGlvblByb3BlcnR5VmFsdWUoc2xpZGVTdHlsZXMsICdtYXJnaW4tbGVmdCcpO1xuICAgICAgICBjb25zdCBtYXJnaW5SaWdodCA9IGdldERpcmVjdGlvblByb3BlcnR5VmFsdWUoc2xpZGVTdHlsZXMsICdtYXJnaW4tcmlnaHQnKTtcbiAgICAgICAgY29uc3QgYm94U2l6aW5nID0gc2xpZGVTdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZSgnYm94LXNpemluZycpO1xuICAgICAgICBpZiAoYm94U2l6aW5nICYmIGJveFNpemluZyA9PT0gJ2JvcmRlci1ib3gnKSB7XG4gICAgICAgICAgc2xpZGVTaXplID0gd2lkdGggKyBtYXJnaW5MZWZ0ICsgbWFyZ2luUmlnaHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgY2xpZW50V2lkdGgsXG4gICAgICAgICAgICBvZmZzZXRXaWR0aFxuICAgICAgICAgIH0gPSBzbGlkZTtcbiAgICAgICAgICBzbGlkZVNpemUgPSB3aWR0aCArIHBhZGRpbmdMZWZ0ICsgcGFkZGluZ1JpZ2h0ICsgbWFyZ2luTGVmdCArIG1hcmdpblJpZ2h0ICsgKG9mZnNldFdpZHRoIC0gY2xpZW50V2lkdGgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY3VycmVudFRyYW5zZm9ybSkge1xuICAgICAgICBzbGlkZS5zdHlsZS50cmFuc2Zvcm0gPSBjdXJyZW50VHJhbnNmb3JtO1xuICAgICAgfVxuICAgICAgaWYgKGN1cnJlbnRXZWJLaXRUcmFuc2Zvcm0pIHtcbiAgICAgICAgc2xpZGUuc3R5bGUud2Via2l0VHJhbnNmb3JtID0gY3VycmVudFdlYktpdFRyYW5zZm9ybTtcbiAgICAgIH1cbiAgICAgIGlmIChwYXJhbXMucm91bmRMZW5ndGhzKSBzbGlkZVNpemUgPSBNYXRoLmZsb29yKHNsaWRlU2l6ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNsaWRlU2l6ZSA9IChzd2lwZXJTaXplIC0gKHBhcmFtcy5zbGlkZXNQZXJWaWV3IC0gMSkgKiBzcGFjZUJldHdlZW4pIC8gcGFyYW1zLnNsaWRlc1BlclZpZXc7XG4gICAgICBpZiAocGFyYW1zLnJvdW5kTGVuZ3Rocykgc2xpZGVTaXplID0gTWF0aC5mbG9vcihzbGlkZVNpemUpO1xuICAgICAgaWYgKHNsaWRlc1tpXSkge1xuICAgICAgICBzbGlkZXNbaV0uc3R5bGVbc3dpcGVyLmdldERpcmVjdGlvbkxhYmVsKCd3aWR0aCcpXSA9IGAke3NsaWRlU2l6ZX1weGA7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChzbGlkZXNbaV0pIHtcbiAgICAgIHNsaWRlc1tpXS5zd2lwZXJTbGlkZVNpemUgPSBzbGlkZVNpemU7XG4gICAgfVxuICAgIHNsaWRlc1NpemVzR3JpZC5wdXNoKHNsaWRlU2l6ZSk7XG4gICAgaWYgKHBhcmFtcy5jZW50ZXJlZFNsaWRlcykge1xuICAgICAgc2xpZGVQb3NpdGlvbiA9IHNsaWRlUG9zaXRpb24gKyBzbGlkZVNpemUgLyAyICsgcHJldlNsaWRlU2l6ZSAvIDIgKyBzcGFjZUJldHdlZW47XG4gICAgICBpZiAocHJldlNsaWRlU2l6ZSA9PT0gMCAmJiBpICE9PSAwKSBzbGlkZVBvc2l0aW9uID0gc2xpZGVQb3NpdGlvbiAtIHN3aXBlclNpemUgLyAyIC0gc3BhY2VCZXR3ZWVuO1xuICAgICAgaWYgKGkgPT09IDApIHNsaWRlUG9zaXRpb24gPSBzbGlkZVBvc2l0aW9uIC0gc3dpcGVyU2l6ZSAvIDIgLSBzcGFjZUJldHdlZW47XG4gICAgICBpZiAoTWF0aC5hYnMoc2xpZGVQb3NpdGlvbikgPCAxIC8gMTAwMCkgc2xpZGVQb3NpdGlvbiA9IDA7XG4gICAgICBpZiAocGFyYW1zLnJvdW5kTGVuZ3Rocykgc2xpZGVQb3NpdGlvbiA9IE1hdGguZmxvb3Ioc2xpZGVQb3NpdGlvbik7XG4gICAgICBpZiAoaW5kZXggJSBwYXJhbXMuc2xpZGVzUGVyR3JvdXAgPT09IDApIHNuYXBHcmlkLnB1c2goc2xpZGVQb3NpdGlvbik7XG4gICAgICBzbGlkZXNHcmlkLnB1c2goc2xpZGVQb3NpdGlvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwYXJhbXMucm91bmRMZW5ndGhzKSBzbGlkZVBvc2l0aW9uID0gTWF0aC5mbG9vcihzbGlkZVBvc2l0aW9uKTtcbiAgICAgIGlmICgoaW5kZXggLSBNYXRoLm1pbihzd2lwZXIucGFyYW1zLnNsaWRlc1Blckdyb3VwU2tpcCwgaW5kZXgpKSAlIHN3aXBlci5wYXJhbXMuc2xpZGVzUGVyR3JvdXAgPT09IDApIHNuYXBHcmlkLnB1c2goc2xpZGVQb3NpdGlvbik7XG4gICAgICBzbGlkZXNHcmlkLnB1c2goc2xpZGVQb3NpdGlvbik7XG4gICAgICBzbGlkZVBvc2l0aW9uID0gc2xpZGVQb3NpdGlvbiArIHNsaWRlU2l6ZSArIHNwYWNlQmV0d2VlbjtcbiAgICB9XG4gICAgc3dpcGVyLnZpcnR1YWxTaXplICs9IHNsaWRlU2l6ZSArIHNwYWNlQmV0d2VlbjtcbiAgICBwcmV2U2xpZGVTaXplID0gc2xpZGVTaXplO1xuICAgIGluZGV4ICs9IDE7XG4gIH1cbiAgc3dpcGVyLnZpcnR1YWxTaXplID0gTWF0aC5tYXgoc3dpcGVyLnZpcnR1YWxTaXplLCBzd2lwZXJTaXplKSArIG9mZnNldEFmdGVyO1xuICBpZiAocnRsICYmIHdyb25nUlRMICYmIChwYXJhbXMuZWZmZWN0ID09PSAnc2xpZGUnIHx8IHBhcmFtcy5lZmZlY3QgPT09ICdjb3ZlcmZsb3cnKSkge1xuICAgIHdyYXBwZXJFbC5zdHlsZS53aWR0aCA9IGAke3N3aXBlci52aXJ0dWFsU2l6ZSArIHNwYWNlQmV0d2Vlbn1weGA7XG4gIH1cbiAgaWYgKHBhcmFtcy5zZXRXcmFwcGVyU2l6ZSkge1xuICAgIHdyYXBwZXJFbC5zdHlsZVtzd2lwZXIuZ2V0RGlyZWN0aW9uTGFiZWwoJ3dpZHRoJyldID0gYCR7c3dpcGVyLnZpcnR1YWxTaXplICsgc3BhY2VCZXR3ZWVufXB4YDtcbiAgfVxuICBpZiAoZ3JpZEVuYWJsZWQpIHtcbiAgICBzd2lwZXIuZ3JpZC51cGRhdGVXcmFwcGVyU2l6ZShzbGlkZVNpemUsIHNuYXBHcmlkKTtcbiAgfVxuXG4gIC8vIFJlbW92ZSBsYXN0IGdyaWQgZWxlbWVudHMgZGVwZW5kaW5nIG9uIHdpZHRoXG4gIGlmICghcGFyYW1zLmNlbnRlcmVkU2xpZGVzKSB7XG4gICAgY29uc3QgbmV3U2xpZGVzR3JpZCA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc25hcEdyaWQubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGxldCBzbGlkZXNHcmlkSXRlbSA9IHNuYXBHcmlkW2ldO1xuICAgICAgaWYgKHBhcmFtcy5yb3VuZExlbmd0aHMpIHNsaWRlc0dyaWRJdGVtID0gTWF0aC5mbG9vcihzbGlkZXNHcmlkSXRlbSk7XG4gICAgICBpZiAoc25hcEdyaWRbaV0gPD0gc3dpcGVyLnZpcnR1YWxTaXplIC0gc3dpcGVyU2l6ZSkge1xuICAgICAgICBuZXdTbGlkZXNHcmlkLnB1c2goc2xpZGVzR3JpZEl0ZW0pO1xuICAgICAgfVxuICAgIH1cbiAgICBzbmFwR3JpZCA9IG5ld1NsaWRlc0dyaWQ7XG4gICAgaWYgKE1hdGguZmxvb3Ioc3dpcGVyLnZpcnR1YWxTaXplIC0gc3dpcGVyU2l6ZSkgLSBNYXRoLmZsb29yKHNuYXBHcmlkW3NuYXBHcmlkLmxlbmd0aCAtIDFdKSA+IDEpIHtcbiAgICAgIHNuYXBHcmlkLnB1c2goc3dpcGVyLnZpcnR1YWxTaXplIC0gc3dpcGVyU2l6ZSk7XG4gICAgfVxuICB9XG4gIGlmIChpc1ZpcnR1YWwgJiYgcGFyYW1zLmxvb3ApIHtcbiAgICBjb25zdCBzaXplID0gc2xpZGVzU2l6ZXNHcmlkWzBdICsgc3BhY2VCZXR3ZWVuO1xuICAgIGlmIChwYXJhbXMuc2xpZGVzUGVyR3JvdXAgPiAxKSB7XG4gICAgICBjb25zdCBncm91cHMgPSBNYXRoLmNlaWwoKHN3aXBlci52aXJ0dWFsLnNsaWRlc0JlZm9yZSArIHN3aXBlci52aXJ0dWFsLnNsaWRlc0FmdGVyKSAvIHBhcmFtcy5zbGlkZXNQZXJHcm91cCk7XG4gICAgICBjb25zdCBncm91cFNpemUgPSBzaXplICogcGFyYW1zLnNsaWRlc1Blckdyb3VwO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBncm91cHM7IGkgKz
99740gMSkge1xuICAgICAgICBzbmFwR3JpZC5wdXNoKHNuYXBHcmlkW3NuYXBHcmlkLmxlbmd0aCAtIDFdICsgZ3JvdXBTaXplKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzd2lwZXIudmlydHVhbC5zbGlkZXNCZWZvcmUgKyBzd2lwZXIudmlydHVhbC5zbGlkZXNBZnRlcjsgaSArPSAxKSB7XG4gICAgICBpZiAocGFyYW1zLnNsaWRlc1Blckdyb3VwID09PSAxKSB7XG4gICAgICAgIHNuYXBHcmlkLnB1c2goc25hcEdyaWRbc25hcEdyaWQubGVuZ3RoIC0gMV0gKyBzaXplKTtcbiAgICAgIH1cbiAgICAgIHNsaWRlc0dyaWQucHVzaChzbGlkZXNHcmlkW3NsaWRlc0dyaWQubGVuZ3RoIC0gMV0gKyBzaXplKTtcbiAgICAgIHN3aXBlci52aXJ0dWFsU2l6ZSArPSBzaXplO1xuICAgIH1cbiAgfVxuICBpZiAoc25hcEdyaWQubGVuZ3RoID09PSAwKSBzbmFwR3JpZCA9IFswXTtcbiAgaWYgKHNwYWNlQmV0d2VlbiAhPT0gMCkge1xuICAgIGNvbnN0IGtleSA9IHN3aXBlci5pc0hvcml6b250YWwoKSAmJiBydGwgPyAnbWFyZ2luTGVmdCcgOiBzd2lwZXIuZ2V0RGlyZWN0aW9uTGFiZWwoJ21hcmdpblJpZ2h0Jyk7XG4gICAgc2xpZGVzLmZpbHRlcigoXywgc2xpZGVJbmRleCkgPT4ge1xuICAgICAgaWYgKCFwYXJhbXMuY3NzTW9kZSB8fCBwYXJhbXMubG9vcCkgcmV0dXJuIHRydWU7XG4gICAgICBpZiAoc2xpZGVJbmRleCA9PT0gc2xpZGVzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSkuZm9yRWFjaChzbGlkZUVsID0+IHtcbiAgICAgIHNsaWRlRWwuc3R5bGVba2V5XSA9IGAke3NwYWNlQmV0d2Vlbn1weGA7XG4gICAgfSk7XG4gIH1cbiAgaWYgKHBhcmFtcy5jZW50ZXJlZFNsaWRlcyAmJiBwYXJhbXMuY2VudGVyZWRTbGlkZXNCb3VuZHMpIHtcbiAgICBsZXQgYWxsU2xpZGVzU2l6ZSA9IDA7XG4gICAgc2xpZGVzU2l6ZXNHcmlkLmZvckVhY2goc2xpZGVTaXplVmFsdWUgPT4ge1xuICAgICAgYWxsU2xpZGVzU2l6ZSArPSBzbGlkZVNpemVWYWx1ZSArIChzcGFjZUJldHdlZW4gfHwgMCk7XG4gICAgfSk7XG4gICAgYWxsU2xpZGVzU2l6ZSAtPSBzcGFj
9974ZUJldHdlZW47XG4gICAgY29uc3QgbWF4U25hcCA9IGFsbFNsaWRlc1NpemUgPiBzd2lwZXJTaXplID8gYWxsU2xpZGVzU2l6ZSAtIHN3aXBlclNpemUgOiAwO1xuICAgIHNuYXBHcmlkID0gc25hcEdyaWQubWFwKHNuYXAgPT4ge1xuICAgICAgaWYgKHNuYXAgPD0gMCkgcmV0dXJuIC1vZmZzZXRCZWZvcmU7XG4gICAgICBpZiAoc25hcCA+IG1heFNuYXApIHJldHVybiBtYXhTbmFwICsgb2Zmc2V0QWZ0ZXI7XG4gICAgICByZXR1cm4gc25hcDtcbiAgICB9KTtcbiAgfVxuICBpZiAocGFyYW1zLmNlbnRlckluc3VmZmljaWVudFNsaWRlcykge1xuICAgIGxldCBhbGxTbGlkZXNTaXplID0gMDtcbiAgICBzbGlkZXNTaXplc0dyaWQuZm9yRWFjaChzbGlkZVNpemVWYWx1ZSA9PiB7XG4gICAgICBhbGxTbGlkZXNTaXplICs9IHNsaWRlU2l6ZVZhbHVlICsgKHNwYWNlQmV0d2VlbiB8fCAwKTtcbiAgICB9KTtcbiAgICBhbGxTbGlkZXNTaXplIC09IHNwYWNlQmV0d2VlbjtcbiAgICBjb25zdCBvZmZzZXRTaXplID0gKHBhcmFtcy5zbGlkZXNPZmZzZXRCZWZvcmUgfHwgMCkgKyAocGFyYW1zLnNsaWRlc09mZnNldEFmdGVyIHx8IDApO1xuICAgIGlmIChhbGxTbGlkZXNTaXplICsgb2Zmc2V0U2l6ZSA8IHN3aXBlclNpemUpIHtcbiAgICAgIGNvbnN0IGFsbFNsaWRlc09mZnNldCA9IChzd2lwZXJTaXplIC0gYWxsU2xpZGVzU2l6ZSAtIG9mZnNldFNpemUpIC8gMjtcbiAgICAgIHNuYXBHcmlkLmZvckVhY2goKHNuYXAsIHNuYXBJbmRleCkgPT4ge1xuICAgICAgICBzbmFwR3JpZFtzbmFwSW5kZXhdID0gc25hcCAtIGFsbFNsaWRlc09mZnNldDtcbiAgICAgIH0pO1xuICAgICAgc2xpZGVzR3JpZC5mb3JFYWNoKChzbmFwLCBzbmFwSW5kZXgpID0+IHtcbiAgICAgICAgc2xpZGVzR3JpZFtzbmFwSW5kZXhdID0gc25hcCArIGFsbFNsaWRlc09mZnNldDtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICBPYmplY3QuYXNzaWduKHN3aXBlciwge1xuICAgIHNsaWRlcyxcbiAgICBzbmFwR3JpZCxcbiAgICBzbGlkZXNHcmlkLFxuICAgIHNsaWRlc1NpemVzR3JpZFxuICB9KTtcbiAgaWYgKHBhcmFtcy5jZW50ZXJlZFNsaWRlcyAmJiBwYXJhbXMuY3NzTW9kZSAmJiAhcGFyYW1zLmNlbnRlcmVkU2xpZGVzQm91bmRzKSB7XG4gICAgc2V0Q1NTUHJvcGVydHkod3JhcHBlckVsLCAnLS1zd2lwZXItY2VudGVyZWQtb2Zmc2V0LWJlZm9yZScsIGAkey1zbmFwR3JpZFswXX1weGApO1xuICAgIHNldENTU1Byb3BlcnR5KHdyYXBwZXJFbCwgJy0tc3dpcGVyLWNlbnRlcmVkLW9mZnNldC1hZnRlcicsIGAke3N3aXBlci5zaXplIC8gMiAtIHNsaWRlc1NpemVzR3JpZFtzbGlkZXNTaXplc0dyaWQubGVuZ3RoIC0gMV0gLyAyfXB4YCk7XG4gICAgY29uc3QgYWRkVG9TbmFwR3JpZCA9IC1zd2lwZXIuc25hcEdyaWRbMF07XG4gICAgY29uc3QgYWRkVG9TbGlkZXNHcmlkID0gLXN3aXBlci5zbGlkZXNHcmlkWzBdO1xuICAgIHN3aXBlci5zbmFwR3JpZCA9IHN3aXBlci5zbmFwR3JpZC5tYXAodiA9PiB2ICsgYWRkVG9TbmFwR3JpZCk7XG4gICAgc3dpcGVyLnNsaWRlc0dyaWQgPSBzd2lwZXIuc2xpZGVzR3JpZC5tYXAodiA9PiB2ICsgYWRkVG9TbGlkZXNHcmlkKTtcbiAgfVxuICBpZiAoc2xpZGVzTGVuZ3RoICE9PSBwcmV2aW91c1NsaWRlc0xlbmd0aCkge1xuICAgIHN3aXBlci5lbWl0KCdzbGlkZXNMZW5ndGhDaGFuZ2UnKTtcbiAgfVxuICBpZiAoc25hcEdyaWQubGVuZ3RoICE9PSBwcmV2aW91c1NuYXBHcmlkTGVuZ3RoKSB7XG4gICAgaWYgKHN3aXBlci5wYXJhbXMud2F0Y2hPdmVyZmxvdykgc3dpcGVyLmNoZWNrT3ZlcmZsb3coKTtcbiAgICBzd2lwZXIuZW1pdCgnc25hcEdyaWRMZW5ndGhDaGFuZ2UnKTtcbiAgfVxuICBpZiAoc2xpZGVzR3JpZC5sZW5ndGggIT09IHByZXZpb3VzU2xpZGVzR3JpZExlbmd0aCkge1xuICAgIHN3aXBlci5lbWl0KCdzbGlkZXNHcmlkTGVuZ3RoQ2hhbmdlJyk7XG4gIH1cbiAgaWYgKHBhcmFtcy53YXRjaFNsaWRlc1Byb2dyZXNzKSB7XG4gICAgc3dpcGVyLnVwZGF0ZVNsaWRlc09mZnNldCgpO1xuICB9XG4gIHN3aXBlci5lbWl0KCdzbGlkZXNVcGRhdGVkJyk7XG4gIGlmICghaXNWaXJ0dWFsICYmICFwYXJhbXMuY3NzTW9kZSAmJiAocGFyYW1zLmVmZmVjdCA9PT0gJ3NsaWRlJyB8fCBwYXJhbXMuZWZmZWN0ID09PSAnZmFkZScpKSB7XG4gICAgY29uc3QgYmFja0ZhY2VIaWRkZW5DbGFzcyA9IGAke3BhcmFtcy5jb250YWluZXJNb2RpZmllckNsYXNzfWJhY2tmYWNlLWhpZGRlbmA7XG4gICAgY29uc3QgaGFzQ2xhc3NCYWNrZmFjZUNsYXNzQWRkZWQgPSBzd2lwZXIuZWwuY2xhc3NMaXN0LmNvbnRhaW5zKGJhY2tGYWNlSGlkZGVuQ2xhc3MpO1xuICAgIGlmIChzbGlkZXNMZW5ndGggPD0gcGFyYW1zLm1heEJhY2tmYWNlSGlkZGVuU2xpZGVzKSB7XG4gICAgICBpZiAoIWhhc0NsYXNzQmFja2ZhY2VDbGFzc0FkZGVkKSBzd2lwZXIuZWwuY2xhc3NMaXN0LmFkZChiYWNrRmFjZUhpZGRlbkNsYXNzKTtcbiAgICB9IGVsc2UgaWYgKGhhc0NsYXNzQmFja2ZhY2VDbGFzc0FkZGVkKSB7XG4gICAgICBzd2lwZXIuZWwuY2xhc3NMaXN0LnJlbW92ZShiYWNrRmFjZUhpZGRlbkNsYXNzKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gdXBkYXRlQXV0b0hlaWdodChzcGVlZCkge1xuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBjb25zdCBhY3RpdmVTbGlkZXMgPSBbXTtcbiAgY29uc3QgaXNWaXJ0dWFsID0gc3dpcGVyLnZpcnR1YWwgJiYgc3dpcGVyLnBhcmFtcy52aXJ0dWFsLmVuYWJsZWQ7XG4gIGxldCBuZXdIZWlnaHQgPSAwO1xuICBsZXQgaTtcbiAgaWYgKHR5cGVvZiBzcGVlZCA9PT0gJ251bWJlcicpIHtcbiAgICBzd2lwZXIuc2V0VHJhbnNpdGlvbihzcGVlZCk7XG4gIH0gZWxzZSBpZiAoc3BlZWQgPT09IHRydWUpIHtcbiAgICBzd2lwZXIuc2V0VHJhbnNpdGlvbihzd2lwZXIucGFyYW1zLnNwZWVkKTtcbiAgfVxuICBjb25zdCBnZXRTbGlkZUJ5SW5kZXggPSBpbmRleCA9PiB7XG4gICAgaWYgKGlzVmlydHVhbCkge1xuICAgICAgcmV0dXJuIHN3aXBlci5zbGlkZXNbc3dpcGVyLmdldFNsaWRlSW5kZXhCeURhdGEoaW5kZXgpXTtcbiAgICB9XG4gICAgcmV0dXJuIHN3aXBlci5zbGlkZXNbaW5kZXhdO1xuICB9O1xuICAvLyBGaW5kIHNsaWRlcyBjdXJyZW50bHkgaW4gdmlld1xuICBpZiAoc3dpcGVyLnBhcmFtcy5zbGlkZXNQZXJWaWV3ICE9PSAnYXV0bycgJiYgc3dpcGVyLnBhcmFtcy5zbGlkZXNQZXJWaWV3ID4gMSkge1xuICAgIGlmIChzd2lwZXIucGFyYW1zLmNlbnRlcmVkU2xpZGVzKSB7XG4gICAgICAoc3dpcGVyLnZpc2libGVTbGlkZXMgfHwgW10pLmZvckVhY2goc2xpZGUgPT4ge1xuICAgICAgICBhY3RpdmVTbGlkZXMucHVzaChzbGlkZSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChpID0gMDsgaSA8IE1hdGguY2VpbChzd2lwZXIucGFyYW1zLnNsaWRlc1BlclZpZXcpOyBpICs9IDEpIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSBzd2lwZXIuYWN0aXZlSW5kZXggKyBpO1xuICAgICAgICBpZiAoaW5kZXggPiBzd2lwZXIuc2xpZGVzLmxlbmd0aCAmJiAhaXNWaXJ0dWFsKSBicmVhaztcbiAgICAgICAgYWN0aXZlU2xpZGVzLnB1c2goZ2V0U2xpZGVCeUluZGV4KGluZGV4KSk7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGFjdGl2ZVNsaWRlcy5wdXNoKGdldFNsaWRlQnlJbmRleChzd2lwZXIuYWN0aXZlSW5kZXgpKTtcbiAgfVxuXG4gIC8vIEZpbmQgbmV3IGhlaWdodCBmcm9tIGhpZ2hlc3Qgc2xpZGUgaW4gdmlld1xuICBmb3IgKGkgPSAwOyBpIDwgYWN0aXZlU2xpZGVzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgaWYgKHR5cGVvZiBhY3RpdmVTbGlkZXNbaV0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBjb25zdCBoZWlnaHQgPSBhY3RpdmVTbGlkZXNbaV0ub2Zmc2V0SGVpZ2h0O1xuICAgICAgbmV3SGVpZ2h0ID0gaGVpZ2h0ID4gbmV3SGVpZ2h0ID8gaGVpZ2h0IDogbmV3SGVpZ2h0O1xuICAgIH1cbiAgfVxuXG4gIC8vIFVwZGF0ZSBIZWlnaHRcbiAgaWYgKG5ld0hlaWdodCB8fCBuZXdIZWlnaHQgPT09IDApIHN3aXBlci53cmFwcGVyRWwuc3R5bGUuaGVpZ2h0ID0gYCR7bmV3SGVpZ2h0fXB4YDtcbn1cblxuZnVuY3Rpb24gdXBkYXRlU2xpZGVzT2Zmc2V0KCkge1xuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBjb25zdCBzbGlkZXMgPSBzd2lwZXIuc2xpZGVzO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgY29uc3QgbWludXNPZmZzZXQgPSBzd2lwZXIuaXNFbGVtZW50ID8gc3dpcGVyLmlzSG9yaXpvbn
9974RhbCgpID8gc3dpcGVyLndyYXBwZXJFbC5vZmZzZXRMZWZ0IDogc3dpcGVyLndyYXBwZXJFbC5vZmZzZXRUb3AgOiAwO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHNsaWRlcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgIHNsaWRlc1tpXS5zd2lwZXJTbGlkZU9mZnNldCA9IChzd2lwZXIuaXNIb3Jpem9udGFsKCkgPyBzbGlkZXNbaV0ub2Zmc2V0TGVmdCA6IHNsaWRlc1tpXS5vZmZzZXRUb3ApIC0gbWludXNPZmZzZXQgLSBzd2lwZXIuY3NzT3ZlcmZsb3dBZGp1c3RtZW50KCk7XG4gIH1cbn1cblxuY29uc3QgdG9nZ2xlU2xpZGVDbGFzc2VzJDEgPSAoc2xpZGVFbCwgY29uZGl0aW9uLCBjbGFzc05hbWUpID0+IHtcbiAgaWYgKGNvbmRpdGlvbiAmJiAhc2xpZGVFbC5jbGFzc0xpc3QuY29udGFpbnMoY2xhc3NOYW1lKSkge1xuICAgIHNsaWRlRWwuY2xhc3NMaXN0LmFkZChjbGFzc05hbWUpO1xuICB9IGVsc2UgaWYgKCFjb25kaXRpb24gJiYgc2xpZGVFbC5jbGFzc0xpc3QuY29udGFpbnMoY2xhc3NOYW1lKSkge1xuICAgIHNsaWRlRWwuY2xhc3NMaXN0LnJlbW92ZShjbGFzc05hbWUpO1xuICB9XG59O1xuZnVuY3Rpb24gdXBkYXRlU2xpZGVzUHJvZ3Jlc3ModHJhbnNsYXRlKSB7XG4gIGlmICh0cmFuc2xhdGUgPT09IHZvaWQgMCkge1xuICAgIHRyYW5zbGF0ZSA9IHRoaXMgJiYgdGhpcy50cmFuc2xhdGUgfHwgMDtcbiAgfVxuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBjb25zdCBwYXJhbXMgPSBzd2lwZXIucGFyYW1zO1xuICBjb25zdCB7XG4gICAgc2xpZGVzLFxuICAgIHJ0bFRyYW5zbGF0ZTogcnRsLFxuICAgIHNuYXBHcmlkXG4gIH0gPSBzd2lwZXI7XG4gIGlmIChzbGlkZXMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gIGlmICh0eXBlb2Ygc2xpZGVzWzBdLnN3aXBlclNsaWRlT2Zmc2V0ID09PSAndW5kZWZpbmVkJykgc3dpcGVyLnVwZGF0ZVNsaWRlc09mZnNldCgpO1xuICBsZXQgb2Zmc2V0Q2VudGVyID0gLXRyYW5zbGF0ZTtcbiAgaWYgKHJ0bCkgb2Zmc2V0Q2VudGVyID0gdHJhbnNsYXRlO1xuICBzd2lwZXIudmlzaWJsZVNsaWRlc0luZGV4ZXMgPSBbXTtcbiAgc3dpcGVyLnZpc2libGVTbGlkZXMgPSBbXTtcbiAgbGV0IHNwYWNlQmV0d2VlbiA9IHBhcmFtcy5zcGFjZUJldHdlZW47XG4gIGlmICh0eXBlb2Ygc3BhY2VCZXR3ZWVuID09PSAnc3RyaW5nJyAmJiBzcGFjZUJldHdlZW4uaW5kZXhPZignJScpID49IDApIHtcbiAgICBzcGFjZUJldHdlZW4gPSBwYXJzZUZsb2F0KHNwYWNlQmV0d2Vlbi5yZXBsYWNlKCclJywgJycpKSAvIDEwMCAqIHN3aXBlci5zaXplO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBzcGFjZUJldHdlZW4gPT09ICdzdHJpbmcnKSB7XG4gICAgc3BhY2VCZXR3ZWVuID0gcGFyc2VGbG9hdChzcGFjZUJldHdlZW4pO1xuICB9XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2xpZGVzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgY29uc3Qgc2xpZGUgPSBzbGlkZXNbaV07XG4gICAgbGV0IHNsaWRlT2Zmc2V0ID0gc2xpZGUuc3dpcGVyU2xpZGVPZmZzZXQ7XG4gICAgaWYgKHBhcmFtcy5jc3NNb2RlICYmIHBhcmFtcy5jZW50ZXJlZFNsaWRlcykge1xuICAgICAgc2xpZGVPZmZzZXQgLT0gc2xpZGVzWzBdLnN3aXBlclNsaWRlT2Zmc2V0O1xuICAgIH1cbiAgICBjb25zdCBzbGlkZVByb2dyZXNzID0gKG9mZnNldENlbnRlciArIChwYXJhbXMuY2VudGVyZWRTbGlkZXMgPyBzd2lwZXIubWluVHJhbnNsYXRlKCkgOiAwKSAtIHNsaWRlT2Zmc2V0KSAvIChzbGlkZS5zd2lwZXJTbGlkZVNpemUgKyBzcGFjZUJldHdlZW4pO1xuICAgIGNvbnN0IG9yaWdpbmFsU2xpZGVQcm9ncmVzcyA9IChvZmZzZXRDZW50ZXIgLSBzbmFwR3JpZFswXSArIChwYXJhbXMuY2VudGVyZWRTbGlkZXMgPyBzd2lwZXIubWluVHJhbnNsYXRlKCkgOiAwKSAtIHNsaWRlT2Zmc2V0KSAvIChzbGlkZS5zd2lwZXJTbGlkZVNpemUgKyBzcGFjZUJldHdlZW4pO1xuICAgIGNvbnN0IHNsaWRlQmVmb3JlID0gLShvZmZzZXRDZW50ZXIgLSBzbGlkZU9mZnNldCk7XG4gICAgY29uc3Qgc2xpZGVBZnRlciA9IHNsaWRlQmVmb3JlICsgc3dpcGVyLnNsaWRlc1NpemVzR3JpZFtpXTtcbiAgICBjb25zdCBpc0Z1bGx5VmlzaWJsZSA9IHNsaWRlQmVmb3JlID49IDAgJiYgc2xpZGVCZWZvcmUgPD0gc3dpcGVyLnNpemUgLSBzd2lwZXIuc2xpZGVzU2l6ZXNHcmlkW2ldO1xuICAgIGNvbnN0IGlzVmlzaWJsZSA9IHNsaWRlQmVmb3JlID49IDAgJiYgc2xpZGVCZWZvcmUgPCBzd2lwZXIuc2l6ZSAtIDEgfHwgc2xpZGVBZnRlciA+IDEgJiYgc2xpZGVBZnRlciA8PSBzd2lwZXIuc2l6ZSB8fCBzbGlkZUJlZm9yZSA8PSAwICYmIHNsaWRlQWZ0ZXIgPj0gc3dpcGVyLnNpemU7XG4gICAgaWYgKGlzVmlzaWJsZSkge1xuICAgICAgc3dpcGVyLnZpc2libGVTbGlkZXMucHVzaChzbGlkZSk7XG4gICAgICBzd2lwZXIudmlzaWJsZVNsaWRlc0luZGV4ZXMucHVzaChpKTtcbiAgICB9XG4gICAgdG9nZ2xlU2xpZGVDbGFzc2VzJDEoc2xpZGUsIGlzVmlzaWJsZSwgcGFyYW1zLnNsaWRlVmlzaWJsZUNsYXNzKTtcbiAgICB0b2dnbGVTbGlkZUNsYXNzZXMkMShzbGlkZSwgaXNGdWxseVZpc2libGUsIHBhcmFtcy5zbGlkZUZ1bGx5VmlzaWJsZUNsYXNzKTtcbiAgICBzbGlkZS5wcm9ncmVzcyA9IHJ0bCA/IC1zbGlkZVByb2dyZXNzIDogc2xpZGVQcm9ncmVzcztcbiAgICBzbGlkZS5vcmlnaW5hbFByb2dyZXNzID0gcnRsID8gLW9yaWdpbmFsU2xpZGVQcm9ncmVzcyA6IG9yaWdpbmFsU2xpZGVQcm9ncmVzcztcbiAgfVxufVxuXG5mdW5jdGlvbiB1cGRhdGVQcm9ncmVzcyh0cmFuc2xhdGUpIHtcbiAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgaWYgKHR5cGVvZiB0cmFuc2xhdGUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgY29uc3QgbXVsdGlwbGllciA9IHN3aXBlci5ydGxUcmFuc2xhdGUgPyAtMSA6IDE7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgdHJhbnNsYXRlID0gc3dpcGVyICYmIHN3aXBlci50cmFuc2xhdGUgJiYgc3dpcGVyLnRyYW5zbGF0ZSAqIG11bHRpcGxpZXIgfHwgMDtcbiAgfVxuICBjb25zdCBwYXJhbXMgPSBzd2lwZXIucGFyYW1zO1xuICBjb25zdCB0cmFuc2xhdGVzRGlmZiA9IHN3aXBlci5tYXhUcmFuc2xhdGUoKSAtIHN3aXBlci5taW5UcmFuc2xhdGUoKTtcbiAgbGV0IHtcbiAgICBwcm9ncmVzcyxcbiAgICBpc0JlZ2lubmluZyxcbiAgICBpc0VuZCxcbiAgICBwcm9ncmVzc0xvb3BcbiAgfSA9IHN3aXBlcjtcbiAgY29uc3Qgd2FzQmVnaW5uaW5nID0gaXNCZWdpbm5pbmc7XG4gIGNvbnN0IHdhc0VuZCA9IGlzRW5kO1xuICBpZiAodHJhbnNsYXRlc0RpZmYgPT09IDApIHtcbiAgICBwcm9ncmVzcyA9IDA7XG4gICAgaXNCZWdpbm5pbmcgPSB0cnVlO1xuICAgIGlzRW5kID0gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICBwcm9ncmVzcyA9ICh0cmFuc2xhdGUgLSBzd2lwZXIubWluVHJhbnNsYXRlKCkpIC8gdHJhbnNsYXRlc0RpZmY7XG4gICAgY29uc3QgaXNCZWdpbm5pbmdSb3VuZGVkI
9974D0gTWF0aC5hYnModHJhbnNsYXRlIC0gc3dpcGVyLm1pblRyYW5zbGF0ZSgpKSA8IDE7XG4gICAgY29uc3QgaXNFbmRSb3VuZGVkID0gTWF0aC5hYnModHJhbnNsYXRlIC0gc3dpcGVyLm1heFRyYW5zbGF0ZSgpKSA8IDE7XG4gICAgaXNCZWdpbm5pbmcgPSBpc0JlZ2lubmluZ1JvdW5kZWQgfHwgcHJvZ3Jlc3MgPD0gMDtcbiAgICBpc0VuZCA9IGlzRW5kUm91bmRlZCB8fCBwcm9ncmVzcyA+PSAxO1xuICAgIGlmIChpc0JlZ2lubmluZ1JvdW5kZWQpIHByb2dyZXNzID0gMDtcbiAgICBpZiAoaXNFbmRSb3VuZGVkKSBwcm9ncmVzcyA9IDE7XG4gIH1cbiAgaWYgKHBhcmFtcy5sb29wKSB7XG4gICAgY29uc3QgZmlyc3RTbGlkZUluZGV4ID0gc3dpcGVyLmdldFNsaWRlSW5kZXhCeURhdGEoMCk7XG4gICAgY29uc3QgbGFzdFNsaWRlSW5kZXggPSBzd2lwZXIuZ2V0U2xpZGVJbmRleEJ5RGF0YShzd2lwZXIuc2xpZGVzLmxlbmd0aCAtIDEpO1xuICAgIGNvbnN0IGZpcnN0U2xpZGVUcmFuc2xhdGUgPSBzd2lwZXIuc2xpZGVzR3JpZFtmaXJzdFNsaWRlSW5kZXhdO1xuICAgIGNvbnN0IGxhc3RTbGlkZVRyYW5zbGF0ZSA9IHN3aXBlci5zbGlkZXNHcmlkW2xhc3RTbGlkZUluZGV4XTtcbiAgICBjb25zdCB0cmFuc2xhdGVNYXggPSBzd2lwZXIuc2xpZGVzR3JpZFtzd2lwZXIuc2xpZGVzR3JpZC5sZW5ndGggLSAxXTtcbiAgICBjb25zdCB0cmFuc2xhdGVBYnMgPSBNYXRoLmFicyh0cmFuc2xhdGUpO1xuICAgIGlmICh0cmFuc2xhdGVBYnMgPj0gZmlyc3RTbGlkZVRyYW5zbGF0ZSkge1xuICAgICAgcHJvZ3Jlc3NMb29wID0gKHRyYW5zbGF0ZUFicyAtIGZpcnN0U2xpZGVUcmFuc2xhdGUpIC8gdHJhbnNsYXRlTWF4O1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9ncmVzc0xvb3AgPSAodHJhbnNsYXRlQWJzICsgdHJhbnNsYXRlTWF4IC0gbGFzdFNsaWRlVHJhbnNsYXRlKSAvIHRyYW5zbGF0ZU1heDtcbiAgICB9XG4gICAgaWYgKHByb2dyZXNzTG9vcCA+IDEpIHByb2dyZXNzTG9vcCAtPSAxO1xuICB9XG4gIE9iamVjdC5hc3NpZ24oc3dpcGVyLCB7XG4gICAgcHJvZ3Jlc3MsXG4gICAgcHJvZ3Jlc3NMb29wLFxuICAgIGlzQmVnaW5uaW5nLFxuICAgIGlzRW5kXG4gIH0pO1xuICBpZiAocGFyYW1zLndhdGNoU2xpZGVzUHJvZ3Jlc3MgfHwgcGFyYW1zLmNlbnRlcmVkU2xpZGVzICYmIHBhcmFtcy5hdXRvSGVpZ2h0KSBzd2lwZXIudXBkYXRlU2xpZGVzUHJvZ3Jlc3ModHJhbnNsYXRlKTtcbiAgaWYgKGlzQmVnaW5uaW5nICYmICF3YXNCZWdpbm5pbmcpIHtcbiAgICBzd2lwZXIuZW1pdCgncmVhY2hCZWdpbm5pbmcgdG9FZGdlJyk7XG4gIH1cbiAgaWYgKGlzRW5kICYmICF3YXNFbmQpIHtcbiAgICBzd2lwZXIuZW1pdCgncmVhY2hFbmQgdG9FZGdlJyk7XG4gIH1cbiAgaWYgKHdhc0JlZ2lubmluZyAmJiAhaXNCZWdpbm5pbmcgfHwgd2FzRW5kICYmICFpc0VuZCkge1xuICAgIHN3aXBlci5lbWl0KCdmcm9tRWRnZScpO1xuICB9XG4gIHN3aXBlci5lbWl0KCdwcm9ncmVzcycsIHByb2dyZXNzKTtcbn1cblxuY29uc3QgdG9nZ2xlU2xpZGVDbGFzc2VzID0gKHNsaWRlRWwsIGNvbmRpdGlvbiwgY2xhc3NOYW1lKSA9PiB7XG4gIGlmIChjb25kaXRpb24gJiYgIXNsaWRlRWwuY2xhc3NMaXN0LmNvbnRhaW5zKGNsYXNzTmFtZSkpIHtcbiAgICBzbGlkZUVsLmNsYXNzTGlzdC5hZGQoY2xhc3NOYW1lKTtcbiAgfSBlbHNlIGlmICghY29uZGl0aW9uICYmIHNsaWRlRWwuY2xhc3NMaXN0LmNvbnRhaW5zKGNsYXNzTmFtZSkpIHtcbiAgICBzbGlkZUVsLmNsYXNzTGlzdC5yZW1vdmUoY2xhc3NOYW1lKTtcbiAgfVxufTtcbmZ1bmN0aW9uIHVwZGF0ZVNsaWRlc0NsYXNzZXMoKSB7XG4gIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gIGNvbnN0IHtcbiAgICBzbGlkZXMsXG4gICAgcGFyYW1zLFxuICAgIHNsaWRlc0VsLFxuICAgIGFjdGl2ZUluZGV4XG4gIH0gPSBzd2lwZXI7XG4gIGNvbnN0IGlzVmlydHVhbCA9IHN3aXBlci52aXJ0dWFsICYmIHBhcmFtcy52aXJ0dWFsLmVuYWJsZWQ7XG4gIGNvbnN0IGdyaWRFbmFibGVkID0gc3dpcGVyLmdyaWQgJiYgcGFyYW1zLmdyaWQgJiYgcGFyYW1zLmdyaWQucm93cyA+IDE7XG4gIGNvbnN0IGdldEZpbHRlcmVkU2xpZGUgPSBzZWxlY3RvciA9PiB7XG4gICAgcmV0dXJuIGVsZW1lbnRDaGlsZHJlbihzbGlkZXNFbCwgYC4ke3BhcmFtcy5zbGlkZUNsYXNzfSR7c2VsZWN0b3J9LCBzd2lwZXItc2xpZGUke3NlbGVjdG9yfWApWzBdO1xuICB9O1xuICBsZXQgYWN0aXZlU2xpZGU7XG4gIGxldCBwcmV2U2xpZGU7XG4gIGxldCBuZXh0U2xpZGU7XG4gIGlmIChpc1ZpcnR1YWwpIHtcbiAgICBpZiAocGFyYW1zLmxvb3ApIHtcbiAgICAgIGxldCBzbGlkZUluZGV4ID0gYWN0aXZlSW5kZXggLSBzd2lwZXIudmlydHVhbC5zbGlkZXNCZWZvcmU7XG4gICAgICBpZiAoc2xpZGVJbmRleCA8IDApIHNsaWRlSW5kZXggPSBzd2lwZXIudmlydHVhbC5zbGlkZXMubGVuZ3RoICsgc2xpZGVJbmRleDtcbiAgICAgIGlmIChzbGlkZUluZGV4ID49IHN3aXBlci52aXJ0dWFsLnNsaWRlcy5sZW5ndGgpIHNsaWRlSW5kZXggLT0gc3dpcGVyLnZpcnR1YWwuc2xpZGVzLmxlbmd0aDtcbiAgICAgIGFjdGl2ZVNsaWRlID0gZ2V0RmlsdGVyZWRTbGlkZShgW2RhdGEtc3dpcGVyLXNsaWRlLWluZGV4PVwiJHtzbGlkZUluZGV4fVwiXWApO1xuICAgIH0gZWxzZSB7XG4gICAgICBhY3RpdmVTbGlkZSA9IGdldEZpbHRlcmVkU2xpZGUoYFtkYXRhLXN3aXBlci1zbGlkZS1pbmRleD1cIiR7YWN0aXZlSW5kZXh9XCJdYCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChncmlkRW5hYmxlZCkge1xuICAgICAgYWN0aXZlU2xpZGUgPSBzbGlkZXMuZmluZChzbGlkZUVsID0+IHNsaWRlRWwuY29sdW1uID09PSBhY3RpdmVJbmRleCk7XG4gICAgICBuZXh0U2xpZGUgPSBzbGlkZXMuZmluZChzbGlkZUVsID0+IHNsaWRlRWwuY29sdW1uID09PSBhY3RpdmVJbmRleCArIDEpO1xuICAgICAgcHJldlNsaWRlID0gc2xpZGVzLmZpbmQoc2xpZGVFbCA9PiBzbGlkZUVsLmNvbHVtbiA9PT0gYWN0aXZlSW5kZXggLSAxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYWN0aXZlU2xpZGUgPSBzbGlkZXNbYWN0aXZlSW5kZXhdO1xuICAgIH1cbiAgfVxuICBpZiAoYWN0aXZlU2xpZGUpIHtcbiAgICBpZiAoIWdyaWRFbmFibGVkKSB7XG4gICAgICAvLyBOZXh0IFNsaWRlXG4gICAgICBuZXh0U2xpZGUgPSBlbGVtZW50TmV4dEFsbChhY3RpdmVTbGlkZSwgYC4ke3BhcmFtcy5zbGlkZUNsYXNzfSwgc3dpcGVyLXNsaWRlYClbMF07XG4gICAgICBpZiAocGFyYW1zLmxvb3AgJiYgIW5leHRTbGlkZSkge1xuICAgICAgICBuZXh0U2xpZGUgPSBzbGlkZXNbMF07XG4gICAgICB9XG5cbiAgICAgIC8vIFByZXYgU2xpZGVcbiAgICAgIHByZXZTbGlkZSA9IGVsZW1lbnRQcmV2QWxsKGFjdGl2ZVNsaWRlLCBgLiR7cGFyYW1zLnNsaWRlQ2xhc3N9LCBzd2lwZXItc2xpZGVgKVswXTtcbiAgICAgIGlmIChwYXJhbXMubG9vcCAmJiAhcHJldlNsaWRlID09PSAwKSB7XG4gICAgICAgI
9974HByZXZTbGlkZSA9IHNsaWRlc1tzbGlkZXMubGVuZ3RoIC0gMV07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHNsaWRlcy5mb3JFYWNoKHNsaWRlRWwgPT4ge1xuICAgIHRvZ2dsZVNsaWRlQ2xhc3NlcyhzbGlkZUVsLCBzbGlkZUVsID09PSBhY3RpdmVTbGlkZSwgcGFyYW1zLnNsaWRlQWN0aXZlQ2xhc3MpO1xuICAgIHRvZ2dsZVNsaWRlQ2xhc3NlcyhzbGlkZUVsLCBzbGlkZUVsID09PSBuZXh0U2xpZGUsIHBhcmFtcy5zbGlkZU5leHRDbGFzcyk7XG4gICAgdG9nZ2xlU2xpZGVDbGFzc2VzKHNsaWRlRWwsIHNsaWRlRWwgPT09IHByZXZTbGlkZSwgcGFyYW1zLnNsaWRlUHJldkNsYXNzKTtcbiAgfSk7XG4gIHN3aXBlci5lbWl0U2xpZGVzQ2xhc3NlcygpO1xufVxuXG5jb25zdCBwcm9jZXNzTGF6eVByZWxvYWRlciA9IChzd2lwZXIsIGltYWdlRWwpID0+IHtcbiAgaWYgKCFzd2lwZXIgfHwgc3dpcGVyLmRlc3Ryb3llZCB8fCAhc3dpcGVyLnBhcmFtcykgcmV0dXJuO1xuICBjb25zdCBzbGlkZVNlbGVjdG9yID0gKCkgPT4gc3dpcGVyLmlzRWxlbWVudCA/IGBzd2lwZXItc2xpZGVgIDogYC4ke3N3aXBlci5wYXJhbXMuc2xpZGVDbGFzc31gO1xuICBjb25zdCBzbGlkZUVsID0gaW1hZ2VFbC5jbG9zZXN0KHNsaWRlU2VsZWN0b3IoKSk7XG4gIGlmIChzbGlkZUVsKSB7XG4gICAgbGV0IGxhenlFbCA9IHNsaWRlRWwucXVlcnlTZWxlY3RvcihgLiR7c3dpcGVyLnBhcmFtcy5sYXp5UHJlbG9hZGVyQ2xhc3N9YCk7XG4gICAgaWYgKCFsYXp5RWwgJiYgc3dpcGVyLmlzRWxlbWVudCkge1xuICAgICAgaWYgKHNsaWRlRWwuc2hhZG93Um9vdCkge1xuICAgICAgICBsYXp5RWwgPSBzbGlkZUVsLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcihgLiR7c3dpcGVyLnBhcmFtcy5sYXp5UHJlbG9hZGVyQ2xhc3N9YCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBpbml0IGxhdGVyXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHNsaWRlRWwuc2hhZG93Um9vdCkge1xuICAgICAgICAgICAgbGF6eUVsID0gc2xpZGVFbC5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoYC4ke3N3aXBlci5wYXJhbXMubGF6eVByZWxvYWRlckNsYXNzfWApO1xuICAgICAgICAgICAgaWYgKGxhenlFbCkgbGF6eUVsLnJlbW92ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChsYXp5RWwpIGxhenlFbC5yZW1vdmUoKTtcbiAgfVxufTtcbmNvbnN0IHVubGF6eSA9IChzd2lwZXIsIGluZGV4KSA9PiB7XG4gIGlmICghc3dpcGVyLnNsaWRlc1tpbmRleF0pIHJldHVybjtcbiAgY29uc3QgaW1hZ2VFbCA9IHN3aXBlci5zbGlkZXNbaW5kZXhdLnF1ZXJ5U2VsZWN0b3IoJ1tsb2FkaW5nPVwibGF6eVwiXScpO1xuICBpZiAoaW1hZ2VFbCkgaW1hZ2VFbC5yZW1vdmVBdHRyaWJ1dGUoJ2xvYWRpbmcnKTtcbn07XG5jb25zdCBwcmVsb2FkID0gc3dpcGVyID0+IHtcbiAgaWYgKCFzd2lwZXIgfHwgc3dpcGVyLmRlc3Ryb3llZCB8fCAhc3dpcGVyLnBhcmFtcykgcmV0dXJuO1xuICBsZXQgYW1vdW50ID0gc3dpcGVyLnBhcmFtcy5sYXp5UHJlbG9hZFByZXZOZXh0O1xuICBjb25zdCBsZW4gPSBzd2lwZXIuc2xpZGVzLmxlbmd0aDtcbiAgaWYgKCFsZW4gfHwgIWFtb3VudCB8fCBhbW91bnQgPCAwKSByZXR1cm47XG4gIGFtb3VudCA9IE1hdGgubWluKGFtb3VudCwgbGVuKTtcbiAgY29uc3Qgc2xpZGVzUGVyVmlldyA9IHN3aXBlci5wYXJhbXMuc2xpZGVzUGVyVmlldyA9PT0gJ2F1dG8nID8gc3dpcGVyLnNsaWRlc1BlclZpZXdEeW5hbWljKCkgOiBNYXRoLmNlaWwoc3dpcGVyLnBhcmFtcy5zbGlkZXNQZXJWaWV3KTtcbiAgY29uc3QgYWN0aXZlSW5kZXggPSBzd2lwZXIuYWN0aXZlSW5kZXg7XG4gIGlmIChzd2lwZXIucGFyYW1zLmdyaWQgJiYgc3dpcGVyLnBhcmFtcy5ncmlkLnJvd3MgPiAxKSB7XG4gICAgY29uc3QgYWN0aXZlQ29sdW1uID0gYWN0aXZlSW5kZXg7XG4gICAgY29uc3QgcHJlbG9hZENvbHVtbnMgPSBbYWN0aXZlQ29sdW1uIC0gYW1vdW50XTtcbiAgICBwcmVsb2FkQ29sdW1ucy5wdXNoKC4uLkFycmF5LmZyb20oe1xuICAgICAgbGVuZ3RoOiBhbW91bnRcbiAgICB9KS5tYXAoKF8sIGkpID0+IHtcbiAgICAgIHJldHVybiBhY3RpdmVDb2x1bW4gKyBzbGlkZXNQZXJWaWV3ICsgaTtcbiAgICB9KSk7XG4gICAgc3dpcGVyLnNsaWRlcy5mb3JFYWNoKChzbGlkZUVsLCBpKSA9PiB7XG4gICAgICBpZiAocHJlbG9hZENvbHVtbnMuaW5jbHVkZXMoc2xpZGVFbC5jb2x1bW4pKSB1bmxhenkoc3dpcGVyLCBpKTtcbiAgICB9KTtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3Qgc2xpZGVJbmRleExhc3RJblZpZXcgPSBhY3RpdmVJbmRleCArIHNsaWRlc1BlclZpZXcgLSAxO1xuICBpZiAoc3dpcGVyLnBhcmFtcy5yZXdpbmQgfHwgc3dpcGVyLnBhcmFtcy5sb29wKSB7XG4gICAgZm9yIChsZXQgaSA9IGFjdGl2ZUluZGV4IC0gYW1vdW50OyBpIDw9IHNsaWRlSW5kZXhMYXN0SW5WaWV3ICsgYW1vdW50OyBpICs9IDEpIHtcbiAgICAgIGNvbnN0IHJlYWxJbmRleCA9IChpICUgbGVuICsgbGVuKSAlIGxlbjtcbiAgICAgIGlmIChyZWFsSW5kZXggPCBhY3RpdmVJbmRleCB8fCByZWFsSW5kZXggPiBzbGlkZUluZGV4TGFzdEluVmlldykgdW5sYXp5KHN3aXBlciwgcmVhbEluZGV4KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yIChsZXQgaSA9IE1hdGgubWF4KGFjdGl2ZUluZGV4IC0gYW1vdW50LCAwKTsgaSA8PSBNYXRoLm1pbihzbGlkZUluZGV4TGFzdEluVmlldyArIGFtb3VudCwgbGVuIC0gMSk7IGkgKz0gMSkge1xuICAgICAgaWYgKGkgIT09IGFjdGl2ZUluZGV4ICYmIChpID4gc2xpZGVJbmRleExhc3RJblZpZXcgfHwgaSA8IGFjdGl2ZUluZGV4KSkge1xuICAgICAgICB1bmxhenkoc3dpcGVyLCBpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGdldEFjdGl2ZUluZGV4QnlUcmFuc2xhdGUoc3dpcGVyKSB7XG4gIGNvbnN0IHtcbiAgICBzbGlkZXNHcmlkLFxuICAgIHBhcmFtc1xuICB9ID0gc3dpcGVyO1xuICBjb25zdCB0cmFuc2xhdGUgPSBzd2lwZXIucnRsVHJhbnNsYXRlID8gc3dpcGVyLnRyYW5zbGF0ZSA6IC1zd2lwZXIudHJhbnNsYXRlO1xuICBsZXQgYWN0aXZlSW5kZXg7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2xpZGVzR3JpZC5sZW5ndGg7IGkgKz0gMSkge1xuICAgIGlmICh0eXBlb2Ygc2xpZGVzR3JpZFtpICsgMV0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBpZiAodHJhbnNsYXRlID49IHNsaWRlc0dyaWRbaV0gJiYgdHJhbnNsYXRlIDwgc2xpZGVzR3JpZFtpICsgMV0gLSAoc2xpZGVzR3JpZFtpICsgMV0gLSBzbGlkZXNHcmlkW2ldKSAvID
9974IpIHtcbiAgICAgICAgYWN0aXZlSW5kZXggPSBpO1xuICAgICAgfSBlbHNlIGlmICh0cmFuc2xhdGUgPj0gc2xpZGVzR3JpZFtpXSAmJiB0cmFuc2xhdGUgPCBzbGlkZXNHcmlkW2kgKyAxXSkge1xuICAgICAgICBhY3RpdmVJbmRleCA9IGkgKyAxO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHJhbnNsYXRlID49IHNsaWRlc0dyaWRbaV0pIHtcbiAgICAgIGFjdGl2ZUluZGV4ID0gaTtcbiAgICB9XG4gIH1cbiAgLy8gTm9ybWFsaXplIHNsaWRlSW5kZXhcbiAgaWYgKHBhcmFtcy5ub3JtYWxpemVTbGlkZUluZGV4KSB7XG4gICAgaWYgKGFjdGl2ZUluZGV4IDwgMCB8fCB0eXBlb2YgYWN0aXZlSW5kZXggPT09ICd1bmRlZmluZWQnKSBhY3RpdmVJbmRleCA9IDA7XG4gIH1cbiAgcmV0dXJuIGFjdGl2ZUluZGV4O1xufVxuZnVuY3Rpb24gdXBkYXRlQWN0aXZlSW5kZXgobmV3QWN0aXZlSW5kZXgpIHtcbiAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgY29uc3QgdHJhbnNsYXRlID0gc3dpcGVyLnJ0bFRyYW5zbGF0ZSA/IHN3aXBlci50cmFuc2xhdGUgOiAtc3dpcGVyLnRyYW5zbGF0ZTtcbiAgY29uc3Qge1xuICAgIHNuYXBHcmlkLFxuICAgIHBhcmFtcyxcbiAgICBhY3RpdmVJbmRleDogcHJldmlvdXNJbmRleCxcbiAgICByZWFsSW5kZXg6IHByZXZpb3VzUmVhbEluZGV4LFxuICAgIHNuYXBJbmRleDogcHJldmlvdXNTbmFwSW5kZXhcbiAgfSA9IHN3aXBlcjtcbiAgbGV0IGFjdGl2ZUluZGV4ID0gbmV3QWN0aXZlSW5kZXg7XG4gIGxldCBzbmFwSW5kZXg7XG4gIGNvbnN0IGdldFZpcnR1YWxSZWFsSW5kZXggPSBhSW5kZXggPT4ge1xuICAgIGxldCByZWFsSW5kZXggPSBhSW5kZXggLSBzd2lwZXIudmlydHVhbC5zbGlkZXNCZWZvcmU7XG4gICAgaWYgKHJlYWxJbmRleCA8IDApIHtcbiAgICAgIHJlYWxJbmRleCA9IHN3aXBlci52aXJ0dWFsLnNsaWRlcy5sZW5ndGggKyByZWFsSW5kZXg7XG4gICAgfVxuICAgIGlmIChyZWFsSW5kZXggPj0gc3dpcGVyLnZpcnR1YWwuc2xpZGVzLmxlbmd0aCkge1xuICAgICAgcmVhbEluZGV4IC09IHN3aXBlci52aXJ0dWFsLnNsaWRlcy5sZW5ndGg7XG4gICAgfVxuICAgIHJldHVybiByZWFsSW5kZXg7XG4gIH07XG4gIGlmICh0eXBlb2YgYWN0aXZlSW5kZXggPT09ICd1bmRlZmluZWQnKSB7XG4gICAgYWN0aXZlSW5kZXggPSBnZXRBY3RpdmVJbmRleEJ5VHJhbnNsYXRlKHN3aXBlcik7XG4gIH1cbiAgaWYgKHNuYXBHcmlkLmluZGV4T2YodHJhbnNsYXRlKSA+PSAwKSB7XG4gICAgc25hcEluZGV4ID0gc25hcEdyaWQuaW5kZXhPZih0cmFuc2xhdGUpO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHNraXAgPSBNYXRoLm1pbihwYXJhbXMuc2xpZGVzUGVyR3JvdXBTa2lwLCBhY3RpdmVJbmRleCk7XG4gICAgc25hcEluZGV4ID0gc2tpcCArIE1hdGguZmxvb3IoKGFjdGl2ZUluZGV4IC0gc2tpcCkgLyBwYXJhbXMuc2xpZGVzUGVyR3JvdXApO1xuICB9XG4gIGlmIChzbmFwSW5kZXggPj0gc25hcEdyaWQubGVuZ3RoKSBzbmFwSW5kZXggPSBzbmFwR3JpZC5sZW5ndGggLSAxO1xuICBpZiAoYWN0aXZlSW5kZXggPT09IHByZXZpb3VzSW5kZXggJiYgIXN3aXBlci5wYXJhbXMubG9vcCkge1xuICAgIGlmIChzbmFwSW5kZXggIT09IHByZXZpb3VzU25hcEluZGV4KSB7XG4gICAgICBzd2lwZXIuc25hcEluZGV4ID0gc25hcEluZGV4O1xuICAgICAgc3dpcGVyLmVtaXQoJ3NuYXBJbmRleENoYW5nZScpO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKGFjdGl2ZUluZGV4ID09PSBwcmV2aW91c0luZGV4ICYmIHN3aXBlci5wYXJhbXMubG9vcCAmJiBzd2lwZXIudmlydHVhbCAmJiBzd2lwZXIucGFyYW1zLnZpcnR1YWwuZW5hYmxlZCkge1xuICAgIHN3aXBlci5yZWFsSW5kZXggPSBnZXRWaXJ0dWFsUmVhbEluZGV4KGFjdGl2ZUluZGV4KTtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgZ3JpZEVuYWJsZWQgPSBzd2lwZXIuZ3JpZCAmJiBwYXJhbXMuZ3JpZCAmJiBwYXJhbXMuZ3JpZC5yb3dzID4gMTtcblxuICAvLyBHZXQgcmVhbCBpbmRleFxuICBsZXQgcmVhbEluZGV4O1xuICBpZiAoc3dpcGVyLnZpcnR1YWwgJiYgcGFyYW1zLnZpcnR1YWwuZW5hYmxlZCAmJiBwYXJhbXMubG9vcCkge1xuICAgIHJlYWxJbmRleCA9IGdldFZpcnR1YWxSZWFsSW5kZXgoYWN0aXZlSW5kZXgpO1xuICB9IGVsc2UgaWYgKGdyaWRFbmFibGVkKSB7XG4gICAgY29uc3QgZmlyc3RTbGlkZUluQ29sdW1uID0gc3dpcGVyLnNsaWRlcy5maW5kKHNsaWRlRWwgPT4gc2xpZGVFbC5jb2x1bW4gPT09IGFjdGl2ZUluZGV4KTtcbiAgICBsZXQgYWN0aXZlU2xpZGVJbmRleCA9IHBhcnNlSW50KGZpcnN0U2xpZGVJbkNvbHVtbi5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3dpcGVyLXNsaWRlLWluZGV4JyksIDEwKTtcbiAgICBpZiAoTnVtYmVyLmlzTmFOKGFjdGl2ZVNsaWRlSW5kZXgpKSB7XG4gICAgICBhY3RpdmVTbGlkZUluZGV4ID0gTWF0aC5tYXgoc3dpcGVyLnNsaWRlcy5pbmRleE9mKGZpcnN0U2xpZGVJbkNvbHVtbiksIDApO1xuICAgIH1cbiAgICByZWFsSW5kZXggPSBNYXRoLmZsb29yKGFjdGl2ZVNsaWRlSW5kZXggLyBwYXJhbXMuZ3JpZC5yb3dzKTtcbiAgfSBlbHNlIGlmIChzd2lwZXIuc2xpZGVzW2FjdGl2ZUluZGV4XSkge1xuICAgIGNvbnN0IHNsaWRlSW5kZXggPSBzd2lwZXIuc2xpZGVzW2FjdGl2ZUluZGV4XS5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3dpcGVyLXNsaWRlLWluZGV4Jyk7XG4gICAgaWYgKHNsaWRlSW5kZXgpIHtcbiAgICAgIHJlYWxJbmRleCA9IHBhcnNlSW50KHNsaWRlSW5kZXgsIDEwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVhbEluZGV4ID0gYWN0aXZlSW5kZXg7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHJlYWxJbmRleCA9IGFjdGl2ZUluZGV4O1xuICB9XG4gIE9iamVjdC5hc3NpZ24oc3dpcGVyLCB7XG4gICAgcHJldmlvdXNTbmFwSW5kZXgsXG4gICAgc25hcEluZGV4LFxuICAgIHByZXZpb3VzUmVhbEluZGV4LFxuICAgIHJlYWxJbmRleCxcbiAgICBwcmV2aW91c0luZGV4LFxuICAgIGFjdGl2ZUluZGV4XG4gIH0pO1xuICBpZiAoc3dpcGVyLmluaXRpYWxpemVkKSB7XG4gICAgcHJlbG9hZChzd2lwZXIpO1xuICB9XG4gI
9974HN3aXBlci5lbWl0KCdhY3RpdmVJbmRleENoYW5nZScpO1xuICBzd2lwZXIuZW1pdCgnc25hcEluZGV4Q2hhbmdlJyk7XG4gIGlmIChzd2lwZXIuaW5pdGlhbGl6ZWQgfHwgc3dpcGVyLnBhcmFtcy5ydW5DYWxsYmFja3NPbkluaXQpIHtcbiAgICBpZiAocHJldmlvdXNSZWFsSW5kZXggIT09IHJlYWxJbmRleCkge1xuICAgICAgc3dpcGVyLmVtaXQoJ3JlYWxJbmRleENoYW5nZScpO1xuICAgIH1cbiAgICBzd2lwZXIuZW1pdCgnc2xpZGVDaGFuZ2UnKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB1cGRhdGVDbGlja2VkU2xpZGUoZWwsIHBhdGgpIHtcbiAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgY29uc3QgcGFyYW1zID0gc3dpcGVyLnBhcmFtcztcbiAgbGV0IHNsaWRlID0gZWwuY2xvc2VzdChgLiR7cGFyYW1zLnNsaWRlQ2xhc3N9LCBzd2lwZXItc2xpZGVgKTtcbiAgaWYgKCFzbGlkZSAmJiBzd2lwZXIuaXNFbGVtZW50ICYmIHBhdGggJiYgcGF0aC5sZW5ndGggPiAxICYmIHBhdGguaW5jbHVkZXMoZWwpKSB7XG4gICAgWy4uLnBhdGguc2xpY2UocGF0aC5pbmRleE9mKGVsKSArIDEsIHBhdGgubGVuZ3RoKV0uZm9yRWFjaChwYXRoRWwgPT4ge1xuICAgICAgaWYgKCFzbGlkZSAmJiBwYXRoRWwubWF0Y2hlcyAmJiBwYXRoRWwubWF0Y2hlcyhgLiR7cGFyYW1zLnNsaWRlQ2xhc3N9LCBzd2lwZXItc2xpZGVgKSkge1xuICAgICAgICBzbGlkZSA9IHBhdGhFbDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBsZXQgc2xpZGVGb3VuZCA9IGZhbHNlO1xuICBsZXQgc2xpZGVJbmRleDtcbiAgaWYgKHNsaWRlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzd2lwZXIuc2xpZGVzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBpZiAoc3dpcGVyLnNsaWRlc1tpXSA9PT0gc2xpZGUpIHtcbiAgICAgICAgc2xpZGVGb3VuZCA9IHRydWU7XG4gICAgICAgIHNsaWRlSW5kZXggPSBpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKHNsaWRlICYmIHNsaWRlRm91bmQpIHtcbiAgICBzd2lwZXIuY2xpY2tlZFNsaWRlID0gc2xpZGU7XG4gICAgaWYgKHN3aXBlci52aXJ0dWFsICYmIHN3aXBlci5wYXJhbXMudmlydHVhbC5lbmFibGVkKSB7XG4gICAgICBzd2lwZXIuY2xpY2tlZEluZGV4ID0gcGFyc2VJbnQoc2xpZGUuZ2V0QXR0cmlidXRlKCdkYXRhLXN3aXBlci1zbGlkZS1pbmRleCcpLCAxMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN3aXBlci5jbGlja2VkSW5kZXggPSBzbGlkZUluZGV4O1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBzd2lwZXIuY2xpY2tlZFNsaWRlID0gdW5kZWZpbmVkO1xuICAgIHN3aXBlci5jbGlja2VkSW5kZXggPSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChwYXJhbXMuc2xpZGVUb0NsaWNrZWRTbGlkZSAmJiBzd2lwZXIuY2xpY2tlZEluZGV4ICE9PSB1bmRlZmluZWQgJiYgc3dpcGVyLmNsaWNrZWRJbmRleCAhPT0gc3dpcGVyLmFjdGl2ZUluZGV4KSB7XG4gICAgc3dpcGVyLnNsaWRlVG9DbGlja2VkU2xpZGUoKTtcbiAgfVxufVxuXG52YXIgdXBkYXRlID0ge1xuICB1cGRhdGVTaXplLFxuICB1cGRhdGVTbGlkZXMsXG4gIHVwZGF0ZUF1dG9IZWlnaHQsXG4gIHVwZGF0ZVNsaWRlc09mZnNldCxcbiAgdXBkYXRlU2xpZGVzUHJvZ3Jlc3MsXG4gIHVwZGF0ZVByb2dyZXNzLFxuICB1cGRhdGVTbGlkZXNDbGFzc2VzLFxuICB1cGRhdGVBY3RpdmVJbmRleCxcbiAgdXBkYXRlQ2xpY2tlZFNsaWRlXG59O1xuXG5mdW5jdGlvbiBnZXRTd2lwZXJUcmFuc2xhdGUoYXhpcykge1xuICBpZiAoYXhpcyA9PT0gdm9pZCAwKSB7XG4gICAgYXhpcyA9IHRoaXMuaXNIb3Jpem9udGFsKCkgPyAneCcgOiAneSc7XG4gIH1cbiAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgY29uc3Qge1xuICAgIHBhcmFtcyxcbiAgICBydGxUcmFuc2xhdGU6IHJ0bCxcbiAgICB0cmFuc2xhdGUsXG4gICAgd3JhcHBlckVsXG4gIH0gPSBzd2lwZXI7XG4gIGlmIChwYXJhbXMudmlydHVhbFRyYW5zbGF0ZSkge1xuICAgIHJldHVybiBydGwgPyAtdHJhbnNsYXRlIDogdHJhbnNsYXRlO1xuICB9XG4gIGlmIChwYXJhbXMuY3NzTW9kZSkge1xuICAgIHJldHVybiB0cmFuc2xhdGU7XG4gIH1cbiAgbGV0IGN1cnJlbnRUcmFuc2xhdGUgPSBnZXRUcmFuc2xhdGUod3JhcHBlckVsLCBheGlzKTtcbiAgY3VycmVudFRyYW5zbGF0ZSArPSBzd2lwZXIuY3NzT3ZlcmZsb3dBZGp1c3RtZW50KCk7XG4gIGlmIChydGwpIGN1cnJlbnRUcmFuc2xhdGUgPSAtY3VycmVudFRyYW5zbGF0ZTtcbiAgcmV0dXJuIGN1cnJlbnRUcmFuc2xhdGUgfHwgMDtcbn1cblxuZnVuY3Rpb24gc2V0VHJhbnNsYXRlKHRyYW5zbGF0ZSwgYnlDb250cm9sbGVyKSB7XG4gIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gIGNvbnN0IHtcbiAgICBydGxUcmFuc2xhdGU6IHJ0bCxcbiAgICBwYXJhbXMsXG4gICAgd3JhcHBlckVsLFxuICAgIHByb2dyZXNzXG4gIH0gPSBzd2lwZXI7XG4gIGxldCB4ID0gMDtcbiAgbGV0IHkgPSAwO1xuICBjb25zdCB6ID0gMDtcbiAgaWYgKHN3aXBlci5pc0hvcml6b250YWwoKSkge1xuICAgIHggPSBydGwgPyAtdHJhbnNsYXRlIDogdHJhbnNsYXRlO1xuICB9IGVsc2Uge1xuICAgIHkgPSB0cmFuc2xhdGU7XG4gIH1cbiAgaWYgKHBhcmFtcy5yb3VuZExlbmd0aHMpIHtcbiAgICB4ID0gTWF0aC5mbG9vcih4KTtcbiAgICB5ID0gTWF0aC5mbG9vcih5KTtcbiAgfVxuICBzd2lwZXIucHJldmlvdXNUcmFuc2xhdGUgPSBzd2lwZXIudHJhbnNsYXRlO1xuICBzd2lwZXIudHJhbnNsYXRlID0gc3dpcGVyLmlzSG9yaXpvbnRhbCgpID8geCA6IHk7XG4gIGlmIChwYXJhbXMuY3NzTW9kZSkge1xuICAgIHdyYXBwZXJFbFtzd2lwZXIuaXNIb3Jpem9udGFsKCkgPyAnc2Nyb2xsTGVmdCcgOiAnc2Nyb2xsVG9wJ10gPSBzd2lwZXIuaXNIb3Jpem9udGFsKCkgPyAteCA6IC15O1xuICB9IGVsc2UgaWYgKCFwYXJhbXMudmlydHVhbFRyYW5zbGF0ZSkge1xuICAgIGlmIChzd2lwZXIuaXNIb3Jpem9udGFsKCkpIHtcbiAgICAgIHggLT0gc3dpcGVyLmNzc092ZXJmbG93QWRqdXN0bWVudCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB5IC09IHN3aXBlci5jc3NPdmVyZmxvd0FkanVzdG1lbnQoKTtcbiAgICB9XG4gICAgd3JhcHBlckVsLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGUzZCgke3h9cHgsICR7eX1weCwgJHt6fXB4KWA7XG4gIH1cblxuICAvLyBDaGVjayBpZiB3ZSBuZWVkIHRvIHVwZGF0ZSBwcm9ncmVzc1xuICBsZXQgbm
9974V3UHJvZ3Jlc3M7XG4gIGNvbnN0IHRyYW5zbGF0ZXNEaWZmID0gc3dpcGVyLm1heFRyYW5zbGF0ZSgpIC0gc3dpcGVyLm1pblRyYW5zbGF0ZSgpO1xuICBpZiAodHJhbnNsYXRlc0RpZmYgPT09IDApIHtcbiAgICBuZXdQcm9ncmVzcyA9IDA7XG4gIH0gZWxzZSB7XG4gICAgbmV3UHJvZ3Jlc3MgPSAodHJhbnNsYXRlIC0gc3dpcGVyLm1pblRyYW5zbGF0ZSgpKSAvIHRyYW5zbGF0ZXNEaWZmO1xuICB9XG4gIGlmIChuZXdQcm9ncmVzcyAhPT0gcHJvZ3Jlc3MpIHtcbiAgICBzd2lwZXIudXBkYXRlUHJvZ3Jlc3ModHJhbnNsYXRlKTtcbiAgfVxuICBzd2lwZXIuZW1pdCgnc2V0VHJhbnNsYXRlJywgc3dpcGVyLnRyYW5zbGF0ZSwgYnlDb250cm9sbGVyKTtcbn1cblxuZnVuY3Rpb24gbWluVHJhbnNsYXRlKCkge1xuICByZXR1cm4gLXRoaXMuc25hcEdyaWRbMF07XG59XG5cbmZ1bmN0aW9uIG1heFRyYW5zbGF0ZSgpIHtcbiAgcmV0dXJuIC10aGlzLnNuYXBHcmlkW3RoaXMuc25hcEdyaWQubGVuZ3RoIC0gMV07XG59XG5cbmZ1bmN0aW9uIHRyYW5zbGF0ZVRvKHRyYW5zbGF0ZSwgc3BlZWQsIHJ1bkNhbGxiYWNrcywgdHJhbnNsYXRlQm91bmRzLCBpbnRlcm5hbCkge1xuICBpZiAodHJhbnNsYXRlID09PSB2b2lkIDApIHtcbiAgICB0cmFuc2xhdGUgPSAwO1xuICB9XG4gIGlmIChzcGVlZCA9PT0gdm9pZCAwKSB7XG4gICAgc3BlZWQgPSB0aGlzLnBhcmFtcy5zcGVlZDtcbiAgfVxuICBpZiAocnVuQ2FsbGJhY2tzID09PSB2b2lkIDApIHtcbiAgICBydW5DYWxsYmFja3MgPSB0cnVlO1xuICB9XG4gIGlmICh0cmFuc2xhdGVCb3VuZHMgPT09IHZvaWQgMCkge1xuICAgIHRyYW5zbGF0ZUJvdW5kcyA9IHRydWU7XG4gIH1cbiAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgY29uc3Qge1xuICAgIHBhcmFtcyxcbiAgICB3cmFwcGVyRWxcbiAgfSA9IHN3aXBlcjtcbiAgaWYgKHN3aXBlci5hbmltYXRpbmcgJiYgcGFyYW1zLnByZXZlbnRJbnRlcmFjdGlvbk9uVHJhbnNpdGlvbikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCBtaW5UcmFuc2xhdGUgPSBzd2lwZXIubWluVHJhbnNsYXRlKCk7XG4gIGNvbnN0IG1heFRyYW5zbGF0ZSA9IHN3aXBlci5tYXhUcmFuc2xhdGUoKTtcbiAgbGV0IG5ld1RyYW5zbGF0ZTtcbiAgaWYgKHRyYW5zbGF0ZUJvdW5kcyAmJiB0cmFuc2xhdGUgPiBtaW5UcmFuc2xhdGUpIG5ld1RyYW5zbGF0ZSA9IG1pblRyYW5zbGF0ZTtlbHNlIGlmICh0cmFuc2xhdGVCb3VuZHMgJiYgdHJhbnNsYXRlIDwgbWF4VHJhbnNsYXRlKSBuZXdUcmFuc2xhdGUgPSBtYXhUcmFuc2xhdGU7ZWxzZSBuZXdUcmFuc2xhdGUgPSB0cmFuc2xhdGU7XG5cbiAgLy8gVXBkYXRlIHByb2dyZXNzXG4gIHN3aXBlci51cGRhdGVQcm9ncmVzcyhuZXdUcmFuc2xhdGUpO1xuICBpZiAocGFyYW1zLmNzc01vZGUpIHtcbiAgICBjb25zdCBpc0ggPSBzd2lwZXIuaXNIb3Jpem9udGFsKCk7XG4gICAgaWYgKHNwZWVkID09PSAwKSB7XG4gICAgICB3cmFwcGVyRWxbaXNIID8gJ3Njcm9sbExlZnQnIDogJ3Njcm9sbFRvcCddID0gLW5ld1RyYW5zbGF0ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFzd2lwZXIuc3VwcG9ydC5zbW9vdGhTY3JvbGwpIHtcbiAgICAgICAgYW5pbWF0ZUNTU01vZGVTY3JvbGwoe1xuICAgICAgICAgIHN3aXBlcixcbiAgICAgICAgICB0YXJnZXRQb3NpdGlvbjogLW5ld1RyYW5zbGF0ZSxcbiAgICAgICAgICBzaWRlOiBpc0ggPyAnbGVmdCcgOiAndG9wJ1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICB3cmFwcGVyRWwuc2Nyb2xsVG8oe1xuICAgICAgICBbaXNIID8gJ2xlZnQnIDogJ3RvcCddOiAtbmV3VHJhbnNsYXRlLFxuICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCdcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAoc3BlZWQgPT09IDApIHtcbiAgICBzd2lwZXIuc2V0VHJhbnNpdGlvbigwKTtcbiAgICBzd2lwZXIuc2V0VHJhbnNsYXRlKG5ld1RyYW5zbGF0ZSk7XG4gICAgaWYgKHJ1bkNhbGxiYWNrcykge1xuICAgICAgc3dpcGVyLmVtaXQoJ2JlZm9yZVRyYW5zaXRpb25TdGFydCcsIHNwZWVkLCBpbnRlcm5hbCk7XG4gICAgICBzd2lwZXIuZW1pdCgndHJhbnNpdGlvbkVuZCcpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBzd2lwZXIuc2V0VHJhbnNpdGlvbihzcGVlZCk7XG4gICAgc3dpcGVyLnNldFRyYW5zbGF0ZShuZXdUcmFuc2xhdGUpO1xuICAgIGlmIChydW5DYWxsYmFja3MpIHtcbiAgICAgIHN3aXBlci5lbWl0KCdiZWZvcmVUcmFuc2l0aW9uU3RhcnQnLCBzcGVlZCwgaW50ZXJuYWwpO1xuICAgICAgc3dpcGVyLmVtaXQoJ3RyYW5zaXRpb25TdGFydCcpO1xuICAgIH1cbiAgICBpZiAoIXN3aXBlci5hbmltYXRpbmcpIHtcbiAgICAgIHN3aXBlci5hbmltYXRpbmcgPSB0cnVlO1xuICAgICAgaWYgKCFzd2lwZXIub25UcmFuc2xhdGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kKSB7XG4gICAgICAgIHN3aXBlci5vblRyYW5zbGF0ZVRvV3JhcHBlclRyYW5zaXRpb25FbmQgPSBmdW5jdGlvbiB0cmFuc2l0aW9uRW5kKGUpIHtcbiAgICAgICAgICBpZiAoIXN3aXBlciB8fCBzd2lwZXIuZGVzdHJveWVkKSByZXR1cm47XG4gICAgICAgICAgaWYgKGUudGFyZ2V0ICE9PSB0aGlzKSByZXR1cm47XG4gICAgICAgICAgc3dpcGVyLndyYXBwZXJFbC5yZW1vdmVFdmVudExpc3RlbmVyKCd0cmFuc2l0aW9uZW5kJywgc3dpcGVyLm9uVHJhbnNsYXRlVG9XcmFwcGVyVHJhbnNpdGlvbkVuZCk7XG4gICAgICAgICAgc3dpcGVyLm9uVHJhbnNsYXRlVG9XcmFwcGVyVHJhbnNpdGlvbkVuZCA9IG51bGw7XG4gICAgICAgICAgZGVsZXRlIHN3aXBlci5vblRyYW5zbGF0ZVRvV3JhcHBlclRyYW5zaXRpb25FbmQ7XG4gICAgICAgICAgc3dpcGVyLmFuaW1hdGluZyA9IGZhbHNlO1xuICAgICAgICAgIGlmIChydW5DYWxsYmFja3MpIHtcbiAgICAgICAgICAgIHN3aXBlci5lbWl0KCd0cmFuc2l0aW9uRW5kJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgc3dpcGVyLndyYXBwZXJFbC5hZGRFdmVudExpc3RlbmVyKCd0cmFuc2l0aW9uZW5kJywgc3dpcGVyLm9uVHJhbnNsYXRlVG9XcmFwcGVyVHJhbnNpdGlvbkVuZCk7XG4gICAgfVxuICB9XG4gI
9974HJldHVybiB0cnVlO1xufVxuXG52YXIgdHJhbnNsYXRlID0ge1xuICBnZXRUcmFuc2xhdGU6IGdldFN3aXBlclRyYW5zbGF0ZSxcbiAgc2V0VHJhbnNsYXRlLFxuICBtaW5UcmFuc2xhdGUsXG4gIG1heFRyYW5zbGF0ZSxcbiAgdHJhbnNsYXRlVG9cbn07XG5cbmZ1bmN0aW9uIHNldFRyYW5zaXRpb24oZHVyYXRpb24sIGJ5Q29udHJvbGxlcikge1xuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBpZiAoIXN3aXBlci5wYXJhbXMuY3NzTW9kZSkge1xuICAgIHN3aXBlci53cmFwcGVyRWwuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uID0gYCR7ZHVyYXRpb259bXNgO1xuICAgIHN3aXBlci53cmFwcGVyRWwuc3R5bGUudHJhbnNpdGlvbkRlbGF5ID0gZHVyYXRpb24gPT09IDAgPyBgMG1zYCA6ICcnO1xuICB9XG4gIHN3aXBlci5lbWl0KCdzZXRUcmFuc2l0aW9uJywgZHVyYXRpb24sIGJ5Q29udHJvbGxlcik7XG59XG5cbmZ1bmN0aW9uIHRyYW5zaXRpb25FbWl0KF9yZWYpIHtcbiAgbGV0IHtcbiAgICBzd2lwZXIsXG4gICAgcnVuQ2FsbGJhY2tzLFxuICAgIGRpcmVjdGlvbixcbiAgICBzdGVwXG4gIH0gPSBfcmVmO1xuICBjb25zdCB7XG4gICAgYWN0aXZlSW5kZXgsXG4gICAgcHJldmlvdXNJbmRleFxuICB9ID0gc3dpcGVyO1xuICBsZXQgZGlyID0gZGlyZWN0aW9uO1xuICBpZiAoIWRpcikge1xuICAgIGlmIChhY3RpdmVJbmRleCA+IHByZXZpb3VzSW5kZXgpIGRpciA9ICduZXh0JztlbHNlIGlmIChhY3RpdmVJbmRleCA8IHByZXZpb3VzSW5kZXgpIGRpciA9ICdwcmV2JztlbHNlIGRpciA9ICdyZXNldCc7XG4gIH1cbiAgc3dpcGVyLmVtaXQoYHRyYW5zaXRpb24ke3N0ZXB9YCk7XG4gIGlmIChydW5DYWxsYmFja3MgJiYgZGlyID09PSAncmVzZXQnKSB7XG4gICAgc3dpcGVyLmVtaXQoYHNsaWRlUmVzZXRUcmFuc2l0aW9uJHtzdGVwfWApO1xuICB9IGVsc2UgaWYgKHJ1bkNhbGxiYWNrcyAmJiBhY3RpdmVJbmRleCAhPT0gcHJldmlvdXNJbmRleCkge1xuICAgIHN3aXBlci5lbWl0KGBzbGlkZUNoYW5nZVRyYW5zaXRpb24ke3N0ZXB9YCk7XG4gICAgaWYgKGRpciA9PT0gJ25leHQnKSB7XG4gICAgICBzd2lwZXIuZW1pdChgc2xpZGVOZXh0VHJhbnNpdGlvbiR7c3RlcH1gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3dpcGVyLmVtaXQoYHNsaWRlUHJldlRyYW5zaXRpb24ke3N0ZXB9YCk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHRyYW5zaXRpb25TdGFydChydW5DYWxsYmFja3MsIGRpcmVjdGlvbikge1xuICBpZiAocnVuQ2FsbGJhY2tzID09PSB2b2lkIDApIHtcbiAgICBydW5DYWxsYmFja3MgPSB0cnVlO1xuICB9XG4gIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gIGNvbnN0IHtcbiAgICBwYXJhbXNcbiAgfSA9IHN3aXBlcjtcbiAgaWYgKHBhcmFtcy5jc3NNb2RlKSByZXR1cm47XG4gIGlmIChwYXJhbXMuYXV0b0hlaWdodCkge1xuICAgIHN3aXBlci51cGRhdGVBdXRvSGVpZ2h0KCk7XG4gIH1cbiAgdHJhbnNpdGlvbkVtaXQoe1xuICAgIHN3aXBlcixcbiAgICBydW5DYWxsYmFja3MsXG4gICAgZGlyZWN0aW9uLFxuICAgIHN0ZXA6ICdTdGFydCdcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHRyYW5zaXRpb25FbmQocnVuQ2FsbGJhY2tzLCBkaXJlY3Rpb24pIHtcbiAgaWYgKHJ1bkNhbGxiYWNrcyA9PT0gdm9pZCAwKSB7XG4gICAgcnVuQ2FsbGJhY2tzID0gdHJ1ZTtcbiAgfVxuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBjb25zdCB7XG4gICAgcGFyYW1zXG4gIH0gPSBzd2lwZXI7XG4gIHN3aXBlci5hbmltYXRpbmcgPSBmYWxzZTtcbiAgaWYgKHBhcmFtcy5jc3NNb2RlKSByZXR1cm47XG4gIHN3aXBlci5zZXRUcmFuc2l0aW9uKDApO1xuICB0cmFuc2l0aW9uRW1pdCh7XG4gICAgc3dpcGVyLFxuICAgIHJ1bkNhbGxiYWNrcyxcbiAgICBkaXJlY3Rpb24sXG4gICAgc3RlcDogJ0VuZCdcbiAgfSk7XG59XG5cbnZhciB0cmFuc2l0aW9uID0ge1xuICBzZXRUcmFuc2l0aW9uLFxuICB0cmFuc2l0aW9uU3RhcnQsXG4gIHRyYW5zaXRpb25FbmRcbn07XG5cbmZ1bmN0aW9uIHNsaWRlVG8oaW5kZXgsIHNwZWVkLCBydW5DYWxsYmFja3MsIGludGVybmFsLCBpbml0aWFsKSB7XG4gIGlmIChpbmRleCA9PT0gdm9pZCAwKSB7XG4gICAgaW5kZXggPSAwO1xuICB9XG4gIGlmIChydW5DYWxsYmFja3MgPT09IHZvaWQgMCkge1xuICAgIHJ1bkNhbGxiYWNrcyA9IHRydWU7XG4gIH1cbiAgaWYgKHR5cGVvZiBpbmRleCA9PT0gJ3N0cmluZycpIHtcbiAgICBpbmRleCA9IHBhcnNlSW50KGluZGV4LCAxMCk7XG4gIH1cbiAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgbGV0IHNsaWRlSW5kZXggPSBpbmRleDtcbiAgaWYgKHNsaWRlSW5kZXggPCAwKSBzbGlkZUluZGV4ID0gMDtcbiAgY29uc3Qge1xuICAgIHBhcmFtcyxcbiAgICBzbmFwR3JpZCxcbiAgICBzbGlkZXNHcmlkLFxuICAgIHByZXZpb3VzSW5kZXgsXG4gICAgYWN0aXZlSW5kZXgsXG4gICAgcnRsVHJhbnNsYXRlOiBydGwsXG4gICAgd3JhcHBlckVsLFxuICAgIGVuYWJsZWRcbiAgfSA9IHN3aXBlcjtcbiAgaWYgKCFlbmFibGVkICYmICFpbnRlcm5hbCAmJiAhaW5pdGlhbCB8fCBzd2lwZXIuZGVzdHJveWVkIHx8IHN3aXBlci5hbmltYXRpbmcgJiYgcGFyYW1zLnByZXZlbnRJbnRlcmFjdGlvbk9uVHJhbnNpdGlvbikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAodHlwZW9mIHNwZWVkID09PSAndW5kZWZpbmVkJykge1xuICAgIHNwZWVkID0gc3dpcGVyLnBhcmFtcy5zcGVlZDtcbiAgfVxuICBjb25zdCBza2lwID0gTWF0aC5taW4oc3dpcGVyLnBhcmFtcy5zbGlkZXNQZXJHcm91cFNraXAsIHNsaWRlSW5kZXgpO1xuICBsZXQgc25hcEluZGV4ID0gc2tpcCArIE1hdGguZmxvb3IoKHNsaWRlSW5kZXggLSBza2lwKSAvIHN3aXBlci5wYXJhbXMuc2xpZGVzUGVyR3JvdXApO1xuICBpZiAoc25hcEluZGV4ID49IHNuYXBHcmlkLmxlbmd0aCkgc25hcEluZGV4ID0gc25hcEdyaWQubGVuZ3RoIC0gMTtcbiAgY29uc3QgdHJhbnNsYXRlID0gLXNuYXBHcmlkW3NuYXBJbmRleF07XG4gIC8vIE5vcm1hbGl6ZSBzbGlkZUluZGV4XG4gIGlmIChwYXJhbXMubm9ybWFsaXplU2xpZGVJbmRleCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2xpZGVzR3JpZC5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgY29uc3Qgbm9ybWFsaXplZFRyYW5zbGF0ZSA9IC1NYXRoLmZsb29yKHRyYW5zbGF0ZSAqIDEwMCk7XG4gICAgICBjb25zdCBub3JtYWxpem
9974VkR3JpZCA9IE1hdGguZmxvb3Ioc2xpZGVzR3JpZFtpXSAqIDEwMCk7XG4gICAgICBjb25zdCBub3JtYWxpemVkR3JpZE5leHQgPSBNYXRoLmZsb29yKHNsaWRlc0dyaWRbaSArIDFdICogMTAwKTtcbiAgICAgIGlmICh0eXBlb2Ygc2xpZGVzR3JpZFtpICsgMV0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGlmIChub3JtYWxpemVkVHJhbnNsYXRlID49IG5vcm1hbGl6ZWRHcmlkICYmIG5vcm1hbGl6ZWRUcmFuc2xhdGUgPCBub3JtYWxpemVkR3JpZE5leHQgLSAobm9ybWFsaXplZEdyaWROZXh0IC0gbm9ybWFsaXplZEdyaWQpIC8gMikge1xuICAgICAgICAgIHNsaWRlSW5kZXggPSBpO1xuICAgICAgICB9IGVsc2UgaWYgKG5vcm1hbGl6ZWRUcmFuc2xhdGUgPj0gbm9ybWFsaXplZEdyaWQgJiYgbm9ybWFsaXplZFRyYW5zbGF0ZSA8IG5vcm1hbGl6ZWRHcmlkTmV4dCkge1xuICAgICAgICAgIHNsaWRlSW5kZXggPSBpICsgMTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChub3JtYWxpemVkVHJhbnNsYXRlID49IG5vcm1hbGl6ZWRHcmlkKSB7XG4gICAgICAgIHNsaWRlSW5kZXggPSBpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAvLyBEaXJlY3Rpb25zIGxvY2tzXG4gIGlmIChzd2lwZXIuaW5pdGlhbGl6ZWQgJiYgc2xpZGVJbmRleCAhPT0gYWN0aXZlSW5kZXgpIHtcbiAgICBpZiAoIXN3aXBlci5hbGxvd1NsaWRlTmV4dCAmJiAocnRsID8gdHJhbnNsYXRlID4gc3dpcGVyLnRyYW5zbGF0ZSAmJiB0cmFuc2xhdGUgPiBzd2lwZXIubWluVHJhbnNsYXRlKCkgOiB0cmFuc2xhdGUgPCBzd2lwZXIudHJhbnNsYXRlICYmIHRyYW5zbGF0ZSA8IHN3aXBlci5taW5UcmFuc2xhdGUoKSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCFzd2lwZXIuYWxsb3dTbGlkZVByZXYgJiYgdHJhbnNsYXRlID4gc3dpcGVyLnRyYW5zbGF0ZSAmJiB0cmFuc2xhdGUgPiBzd2lwZXIubWF4VHJhbnNsYXRlKCkpIHtcbiAgICAgIGlmICgoYWN0aXZlSW5kZXggfHwgMCkgIT09IHNsaWRlSW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAoc2xpZGVJbmRleCAhPT0gKHByZXZpb3VzSW5kZXggfHwgMCkgJiYgcnVuQ2FsbGJhY2tzKSB7XG4gICAgc3dpcGVyLmVtaXQoJ2JlZm9yZVNsaWRlQ2hhbmdlU3RhcnQnKTtcbiAgfVxuXG4gIC8vIFVwZGF0ZSBwcm9ncmVzc1xuICBzd2lwZXIudXBkYXRlUHJvZ3Jlc3ModHJhbnNsYXRlKTtcbiAgbGV0IGRpcmVjdGlvbjtcbiAgaWYgKHNsaWRlSW5kZXggPiBhY3RpdmVJbmRleCkgZGlyZWN0aW9uID0gJ25leHQnO2Vsc2UgaWYgKHNsaWRlSW5kZXggPCBhY3RpdmVJbmRleCkgZGlyZWN0aW9uID0gJ3ByZXYnO2Vsc2UgZGlyZWN0aW9uID0gJ3Jlc2V0JztcblxuICAvLyBpbml0aWFsIHZpcnR1YWxcbiAgY29uc3QgaXNWaXJ0dWFsID0gc3dpcGVyLnZpcnR1YWwgJiYgc3dpcGVyLnBhcmFtcy52aXJ0dWFsLmVuYWJsZWQ7XG4gIGNvbnN0IGlzSW5pdGlhbFZpcnR1YWwgPSBpc1ZpcnR1YWwgJiYgaW5pdGlhbDtcbiAgLy8gVXBkYXRlIEluZGV4XG4gIGlmICghaXNJbml0aWFsVmlydHVhbCAmJiAocnRsICYmIC10cmFuc2xhdGUgPT09IHN3aXBlci50cmFuc2xhdGUgfHwgIXJ0bCAmJiB0cmFuc2xhdGUgPT09IHN3aXBlci50cmFuc2xhdGUpKSB7XG4gICAgc3dpcGVyLnVwZGF0ZUFjdGl2ZUluZGV4KHNsaWRlSW5kZXgpO1xuICAgIC8vIFVwZGF0ZSBIZWlnaHRcbiAgICBpZiAocGFyYW1zLmF1dG9IZWlnaHQpIHtcbiAgICAgIHN3aXBlci51cGRhdGVBdXRvSGVpZ2h0KCk7XG4gICAgfVxuICAgIHN3aXBlci51cGRhdGVTbGlkZXNDbGFzc2VzKCk7XG4gICAgaWYgKHBhcmFtcy5lZmZlY3QgIT09ICdzbGlkZScpIHtcbiAgICAgIHN3aXBlci5zZXRUcmFuc2xhdGUodHJhbnNsYXRlKTtcbiAgICB9XG4gICAgaWYgKGRpcmVjdGlvbiAhPT0gJ3Jlc2V0Jykge1xuICAgICAgc3dpcGVyLnRyYW5zaXRpb25TdGFydChydW5DYWxsYmFja3MsIGRpcmVjdGlvbik7XG4gICAgICBzd2lwZXIudHJhbnNpdGlvbkVuZChydW5DYWxsYmFja3MsIGRpcmVjdGlvbik7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAocGFyYW1zLmNzc01vZGUpIHtcbiAgICBjb25zdCBpc0ggPSBzd2lwZXIuaXNIb3Jpem9udGFsKCk7XG4gICAgY29uc3QgdCA9IHJ0bCA/IHRyYW5zbGF0ZSA6IC10cmFuc2xhdGU7XG4gICAgaWYgKHNwZWVkID09PSAwKSB7XG4gICAgICBpZiAoaXNWaXJ0dWFsKSB7XG4gICAgICAgIHN3aXBlci53cmFwcGVyRWwuc3R5bGUuc2Nyb2xsU25hcFR5cGUgPSAnbm9uZSc7XG4gICAgICAgIHN3aXBlci5faW1tZWRpYXRlVmlydHVhbCA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoaXNWaXJ0dWFsICYmICFzd2lwZXIuX2Nzc01vZGVWaXJ0dWFsSW5pdGlhbFNldCAmJiBzd2lwZXIucGFyYW1zLmluaXRpYWxTbGlkZSA+IDApIHtcbiAgICAgICAgc3dpcGVyLl9jc3NNb2RlVmlydHVhbEluaXRpYWxTZXQgPSB0cnVlO1xuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgIHdyYXBwZXJFbFtpc0ggPyAnc2Nyb2xsTGVmdCcgOiAnc2Nyb2xsVG9wJ10gPSB0O1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdyYXBwZXJFbFtpc0ggPyAnc2Nyb2xsTGVmdCcgOiAnc2Nyb2xsVG9wJ10gPSB0O1xuICAgICAgfVxuICAgICAgaWYgKGlzVmlydHVhbCkge1xuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgIHN3aXBlci53cmFwcGVyRWwuc3R5bGUuc2Nyb2xsU25hcFR5cGUgPSAnJztcbiAgICAgICAgICBzd2lwZXIuX2ltbWVkaWF0ZVZpcnR1YWwgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghc3dpcGVyLnN1cHBvcnQuc21vb3RoU2Nyb2xsKSB7XG4gICAgICAgIGFuaW1hdGVDU1NNb2RlU2Nyb2xsKHtcbiAgICAgICAgICBzd2lwZXIsXG4gICAgICAgICAgdGFyZ2V0UG9zaXRpb246IHQsXG4gICAgICAgICAgc2lkZTogaXNIID8gJ2xlZnQnIDogJ3RvcCdcbiAgICAgICAgfSk7XG4gICAgICAgI
9974HJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgd3JhcHBlckVsLnNjcm9sbFRvKHtcbiAgICAgICAgW2lzSCA/ICdsZWZ0JyA6ICd0b3AnXTogdCxcbiAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgY29uc3QgYnJvd3NlciA9IGdldEJyb3dzZXIoKTtcbiAgY29uc3QgaXNTYWZhcmkgPSBicm93c2VyLmlzU2FmYXJpO1xuICBpZiAoaXNWaXJ0dWFsICYmICFpbml0aWFsICYmIGlzU2FmYXJpICYmIHN3aXBlci5pc0VsZW1lbnQpIHtcbiAgICBzd2lwZXIudmlydHVhbC51cGRhdGUoZmFsc2UsIGZhbHNlLCBzbGlkZUluZGV4KTtcbiAgfVxuICBzd2lwZXIuc2V0VHJhbnNpdGlvbihzcGVlZCk7XG4gIHN3aXBlci5zZXRUcmFuc2xhdGUodHJhbnNsYXRlKTtcbiAgc3dpcGVyLnVwZGF0ZUFjdGl2ZUluZGV4KHNsaWRlSW5kZXgpO1xuICBzd2lwZXIudXBkYXRlU2xpZGVzQ2xhc3NlcygpO1xuICBzd2lwZXIuZW1pdCgnYmVmb3JlVHJhbnNpdGlvblN0YXJ0Jywgc3BlZWQsIGludGVybmFsKTtcbiAgc3dpcGVyLnRyYW5zaXRpb25TdGFydChydW5DYWxsYmFja3MsIGRpcmVjdGlvbik7XG4gIGlmIChzcGVlZCA9PT0gMCkge1xuICAgIHN3aXBlci50cmFuc2l0aW9uRW5kKHJ1bkNhbGxiYWNrcywgZGlyZWN0aW9uKTtcbiAgfSBlbHNlIGlmICghc3dpcGVyLmFuaW1hdGluZykge1xuICAgIHN3aXBlci5hbmltYXRpbmcgPSB0cnVlO1xuICAgIGlmICghc3dpcGVyLm9uU2xpZGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kKSB7XG4gICAgICBzd2lwZXIub25TbGlkZVRvV3JhcHBlclRyYW5zaXRpb25FbmQgPSBmdW5jdGlvbiB0cmFuc2l0aW9uRW5kKGUpIHtcbiAgICAgICAgaWYgKCFzd2lwZXIgfHwgc3dpcGVyLmRlc3Ryb3llZCkgcmV0dXJuO1xuICAgICAgICBpZiAoZS50YXJnZXQgIT09IHRoaXMpIHJldHVybjtcbiAgICAgICAgc3dpcGVyLndyYXBwZXJFbC5yZW1vdmVFdmVudExpc3RlbmVyKCd0cmFuc2l0aW9uZW5kJywgc3dpcGVyLm9uU2xpZGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kKTtcbiAgICAgICAgc3dpcGVyLm9uU2xpZGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kID0gbnVsbDtcbiAgICAgICAgZGVsZXRlIHN3aXBlci5vblNsaWRlVG9XcmFwcGVyVHJhbnNpdGlvbkVuZDtcbiAgICAgICAgc3dpcGVyLnRyYW5zaXRpb25FbmQocnVuQ2FsbGJhY2tzLCBkaXJlY3Rpb24pO1xuICAgICAgfTtcbiAgICB9XG4gICAgc3dpcGVyLndyYXBwZXJFbC5hZGRFdmVudExpc3RlbmVyKCd0cmFuc2l0aW9uZW5kJywgc3dpcGVyLm9uU2xpZGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kKTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gc2xpZGVUb0xvb3AoaW5kZXgsIHNwZWVkLCBydW5DYWxsYmFja3MsIGludGVybmFsKSB7XG4gIGlmIChpbmRleCA9PT0gdm9pZCAwKSB7XG4gICAgaW5kZXggPSAwO1xuICB9XG4gIGlmIChydW5DYWxsYmFja3MgPT09IHZvaWQgMCkge1xuICAgIHJ1bkNhbGxiYWNrcyA9IHRydWU7XG4gIH1cbiAgaWYgKHR5cGVvZiBpbmRleCA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25zdCBpbmRleEFzTnVtYmVyID0gcGFyc2VJbnQoaW5kZXgsIDEwKTtcbiAgICBpbmRleCA9IGluZGV4QXNOdW1iZXI7XG4gIH1cbiAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgaWYgKHN3aXBlci5kZXN0cm95ZWQpIHJldHVybjtcbiAgaWYgKHR5cGVvZiBzcGVlZCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBzcGVlZCA9IHN3aXBlci5wYXJhbXMuc3BlZWQ7XG4gIH1cbiAgY29uc3QgZ3JpZEVuYWJsZWQgPSBzd2lwZXIuZ3JpZCAmJiBzd2lwZXIucGFyYW1zLmdyaWQgJiYgc3dpcGVyLnBhcmFtcy5ncmlkLnJvd3MgPiAxO1xuICBsZXQgbmV3SW5kZXggPSBpbmRleDtcbiAgaWYgKHN3aXBlci5wYXJhbXMubG9vcCkge1xuICAgIGlmIChzd2lwZXIudmlydHVhbCAmJiBzd2lwZXIucGFyYW1zLnZpcnR1YWwuZW5hYmxlZCkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgICBuZXdJbmRleCA9IG5ld0luZGV4ICsgc3dpcGVyLnZpcnR1YWwuc2xpZGVzQmVmb3JlO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgdGFyZ2V0U2xpZGVJbmRleDtcbiAgICAgIGlmIChncmlkRW5hYmxlZCkge1xuICAgICAgICBjb25zdCBzbGlkZUluZGV4ID0gbmV3SW5kZXggKiBzd2lwZXIucGFyYW1zLmdyaWQucm93cztcbiAgICAgICAgdGFyZ2V0U2xpZGVJbmRleCA9IHN3aXBlci5zbGlkZXMuZmluZChzbGlkZUVsID0+IHNsaWRlRWwuZ2V0QXR0cmlidXRlKCdkYXRhLXN3aXBlci1zbGlkZS1pbmRleCcpICogMSA9PT0gc2xpZGVJbmRleCkuY29sdW1uO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGFyZ2V0U2xpZGVJbmRleCA9IHN3aXBlci5nZXRTbGlkZUluZGV4QnlEYXRhKG5ld0luZGV4KTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNvbHMgPSBncmlkRW5hYmxlZCA/IE1hdGguY2VpbChzd2lwZXIuc2xpZGVzLmxlbmd0aCAvIHN3aXBlci5wYXJhbXMuZ3JpZC5yb3dzKSA6IHN3aXBlci5zbGlkZXMubGVuZ3RoO1xuICAgICAgY29uc3Qge1xuICAgICAgICBjZW50ZXJlZFNsaWRlc1xuICAgICAgfSA9IHN3aXBlci5wYXJhbXM7XG4gICAgICBsZXQgc2xpZGVzUGVyVmlldyA9IHN3aXBlci5wYXJhbXMuc2xpZGVzUGVyVmlldztcbiAgICAgIGlmIChzbGlkZXNQZXJWaWV3ID09PSAnYXV0bycpIHtcbiAgICAgICAgc2xpZGVzUGVyVmlldyA9IHN3aXBlci5zbGlkZXNQZXJWaWV3RHluYW1pYygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2xpZGVzUGVyVmlldyA9IE1hdGguY2VpbChwYXJzZUZsb2F0KHN3aXBlci5wYXJhbXMuc2xpZGVzUGVyVmlldywgMTApKTtcbiAgICAgICAgaWYgKGNlbnRlcmVkU2xpZGVzICYmIHNsaWRlc1BlclZpZXcgJSAyID09PSAwKSB7XG4gICAgICAgICAgc2xpZGVzUGVyVmlldyA9IHNsaWRlc1BlclZpZXcgKyAxO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBsZXQgbmVlZExvb3BGaXggPSBjb2xzIC0gdGFyZ2V0U2xpZGVJbmRleCA8IHNsaWRlc1BlclZpZXc7XG4gICAgICBpZiAoY2VudGVyZWRTbGlkZXMpIHtcbiAgICAgICAgbmVlZExvb3BGaXggPSBuZWVkTG9vcEZpeCB8fCB0YXJnZXRTbGlkZUluZGV4IDwgTWF0aC5jZWlsKHNsaWRlc1BlclZpZXcgLyAyKTtcbiAgICAgIH1cbiAgICAgIGlmIChpbnRlcm5hbCAmJiBjZW50ZXJlZFNsaWRlcyAmJiBzd2lwZXIucGFyYW1zLnNsaWRlc1BlclZpZXcgIT09ICdhdXRvJyAmJiAhZ3JpZEVuYWJsZWQpIHtcbiAgICAgICAgbmVlZExvb3BGaXggPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChuZWVkTG9vcEZpeCkge1xuICAgICAgICBjb25zdCBkaXJlY3Rpb24gPSBjZW50ZXJlZFNsaWRlcyA/IHRhcmdldFNsaWRlSW5kZXggPCBzd2lwZXIuYWN0aXZlSW5kZXggPyAncHJldicgOiAnbmV4dCcgOiB0YXJnZXRTbGlkZUluZGV4IC0gc3dpcGVyLmFjdGl2ZUluZGV4IC0gMSA8IHN3aXBlci5wYXJhbXMuc2xpZGVzUGVyVmlldyA/ICduZXh0JyA6ICdwcmV2JztcbiAgICAgICAgc3dpcGVyLmxvb3BGaXgoe1xuICAgICAgICAgIGRpcmVjdGlvbixcbiAgICAgICAgICBzbGlkZVRvOiB0cnVlLFxuICAgICAgICAgIGFjdGl2ZVNsaWRlSW5kZXg6IGRpcmVjdGlvbiA9PT0gJ25leHQnID8gdGFyZ2V0U2xpZGVJbmRleCArIDEgOiB0YXJnZXRTbGlkZUluZGV4IC0gY29scyArIDEsXG4gICAgICAgICAgc2xpZGVSZWFsSW5kZXg6IGRpcmVjdGlvbiA9PT0gJ25leHQnID8gc3dpcGVyLnJlYWxJbmRleCA6IHVuZGVmaW5lZFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmIChncmlkRW5hYmxlZCkge1xuICAgICAgICBjb25zdCBzbGlkZUluZGV4ID0gbmV3SW5kZXggKiBzd2lwZXIucGFyYW1zLmdyaWQucm93cztcbiAgICAgICAgbmV3SW5kZXggPSBzd2lwZXIuc2xpZGVzLmZpbmQoc2xpZGVFbCA9PiBzbGlkZUVsLmdldEF0dHJpYnV0ZSgnZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgnKSAqIDEgPT09IHNsaWRlSW5kZXgpLmNvbHVtbjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld0luZGV4ID0gc3dpcGVyLmdldFNsaWRlSW5kZXhCeURhdGEobmV3SW5kZXgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgIHN3aXBlci5zbGlkZVRvKG5ld0luZGV4LCBzcGVlZCwgcnVuQ2FsbGJhY2tzLCBpbnRlcm5hbCk7XG4gIH0pO1xuICByZXR1cm4gc3dpcGVyO1xufVxuXG4vKiBlc2xpbnQgbm8tdW51c2VkLXZhcnM6IFwib2ZmXCIgKi9cbmZ1bmN0aW9uIHNsaWRlTmV4dChzcGVlZCwgcnVuQ2FsbGJhY2tzLCBpbnRlcm5hbCkge1xuICBpZiAocnVuQ2FsbGJhY2tzID09PSB2b2lkIDApIHtcbiAgICBydW5DYWxsYmFja3MgPSB0cnVlO1xuICB9XG4gIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gIGNvbnN0IHtcbiAgICBlbmFibGVkLFxuICAgIHBhcmFtcyxcbiAgICBhbmltYXRpbmdcbiAgfSA9IHN3aXBlcjtcbiAgaWYgKCFlbmFibGVkIHx8IHN3aXBlci5kZXN0cm95ZWQpIHJldHVybi
9974Bzd2lwZXI7XG4gIGlmICh0eXBlb2Ygc3BlZWQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgc3BlZWQgPSBzd2lwZXIucGFyYW1zLnNwZWVkO1xuICB9XG4gIGxldCBwZXJHcm91cCA9IHBhcmFtcy5zbGlkZXNQZXJHcm91cDtcbiAgaWYgKHBhcmFtcy5zbGlkZXNQZXJWaWV3ID09PSAnYXV0bycgJiYgcGFyYW1zLnNsaWRlc1Blckdyb3VwID09PSAxICYmIHBhcmFtcy5zbGlkZXNQZXJHcm91cEF1dG8pIHtcbiAgICBwZXJHcm91cCA9IE1hdGgubWF4KHN3aXBlci5zbGlkZXNQZXJWaWV3RHluYW1pYygnY3VycmVudCcsIHRydWUpLCAxKTtcbiAgfVxuICBjb25zdCBpbmNyZW1lbnQgPSBzd2lwZXIuYWN0aXZlSW5kZXggPCBwYXJhbXMuc2xpZGVzUGVyR3JvdXBTa2lwID8gMSA6IHBlckdyb3VwO1xuICBjb25zdCBpc1ZpcnR1YWwgPSBzd2lwZXIudmlydHVhbCAmJiBwYXJhbXMudmlydHVhbC5lbmFibGVkO1xuICBpZiAocGFyYW1zLmxvb3ApIHtcbiAgICBpZiAoYW5pbWF0aW5nICYmICFpc1ZpcnR1YWwgJiYgcGFyYW1zLmxvb3BQcmV2ZW50c1NsaWRpbmcpIHJldHVybiBmYWxzZTtcbiAgICBzd2lwZXIubG9vcEZpeCh7XG4gICAgICBkaXJlY3Rpb246ICduZXh0J1xuICAgIH0pO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIHN3aXBlci5fY2xpZW50TGVmdCA9IHN3aXBlci53cmFwcGVyRWwuY2xpZW50TGVmdDtcbiAgICBpZiAoc3dpcGVyLmFjdGl2ZUluZGV4ID09PSBzd2lwZXIuc2xpZGVzLmxlbmd0aCAtIDEgJiYgcGFyYW1zLmNzc01vZGUpIHtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIHN3aXBlci5zbGlkZVRvKHN3aXBlci5hY3RpdmVJbmRleCArIGluY3JlbWVudCwgc3BlZWQsIHJ1bkNhbGxiYWNrcywgaW50ZXJuYWwpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgaWYgKHBhcmFtcy5yZXdpbmQgJiYgc3dpcGVyLmlzRW5kKSB7XG4gICAgcmV0dXJuIHN3aXBlci5zbGlkZVRvKDAsIHNwZWVkLCBydW5DYWxsYmFja3MsIGludGVybmFsKTtcbiAgfVxuICByZXR1cm4gc3dpcGVyLnNsaWRlVG8oc3dpcGVyLmFjdGl2ZUluZGV4ICsgaW5jcmVtZW50LCBzcGVlZCwgcnVuQ2FsbGJhY2tzLCBpbnRlcm5hbCk7XG59XG5cbi8qIGVzbGludCBuby11bnVzZWQtdmFyczogXCJvZmZcIiAqL1xuZnVuY3Rpb24gc2xpZGVQcmV2KHNwZWVkLCBydW5DYWxsYmFja3MsIGludGVybmFsKSB7XG4gIGlmIChydW5DYWxsYmFja3MgPT09IHZvaWQgMCkge1xuICAgIHJ1bkNhbGxiYWNrcyA9IHRydWU7XG4gIH1cbiAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgY29uc3Qge1xuICAgIHBhcmFtcyxcbiAgICBzbmFwR3JpZCxcbiAgICBzbGlkZXNHcmlkLFxuICAgIHJ0bFRyYW5zbGF0ZSxcbiAgICBlbmFibGVkLFxuICAgIGFuaW1hdGluZ1xuICB9ID0gc3dpcGVyO1xuICBpZiAoIWVuYWJsZWQgfHwgc3dpcGVyLmRlc3Ryb3llZCkgcmV0dXJuIHN3aXBlcjtcbiAgaWYgKHR5cGVvZiBzcGVlZCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBzcGVlZCA9IHN3aXBlci5wYXJhbXMuc3BlZWQ7XG4gIH1cbiAgY29uc3QgaXNWaXJ0dWFsID0gc3dpcGVyLnZpcnR1YWwgJiYgcGFyYW1zLnZpcnR1YWwuZW5hYmxlZDtcbiAgaWYgKHBhcmFtcy5sb29wKSB7XG4gICAgaWYgKGFuaW1hdGluZyAmJiAhaXNWaXJ0dWFsICYmIHBhcmFtcy5sb29wUHJldmVudHNTbGlkaW5nKSByZXR1cm4gZmFsc2U7XG4gICAgc3dpcGVyLmxvb3BGaXgoe1xuICAgICAgZGlyZWN0aW9uOiAncHJldidcbiAgICB9KTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICBzd2lwZXIuX2NsaWVudExlZnQgPSBzd2lwZXIud3JhcHBlckVsLmNsaWVudExlZnQ7XG4gIH1cbiAgY29uc3QgdHJhbnNsYXRlID0gcnRsVHJhbnNsYXRlID8gc3dpcGVyLnRyYW5zbGF0ZSA6IC1zd2lwZXIudHJhbnNsYXRlO1xuICBmdW5jdGlvbiBub3JtYWxpemUodmFsKSB7XG4gICAgaWYgKHZhbCA8IDApIHJldHVybiAtTWF0aC5mbG9vcihNYXRoLmFicyh2YWwpKTtcbiAgICByZXR1cm4gTWF0aC5mbG9vcih2YWwpO1xuICB9XG4gIGNvbnN0IG5vcm1hbGl6ZWRUcmFuc2xhdGUgPSBub3JtYWxpemUodHJhbnNsYXRlKTtcbiAgY29uc3Qgbm9ybWFsaXplZFNuYXBHcmlkID0gc25hcEdyaWQubWFwKHZhbCA9PiBub3JtYWxpemUodmFsKSk7XG4gIGNvbnN0IGlzRnJlZU1vZGUgPSBwYXJhbXMuZnJlZU1vZGUgJiYgcGFyYW1zLmZyZWVNb2RlLmVuYWJsZWQ7XG4gIGxldCBwcmV2U25hcCA9IHNuYXBHcmlkW25vcm1hbGl6ZWRTbmFwR3JpZC5pbmRleE9mKG5vcm1hbGl6ZWRUcmFuc2xhdGUpIC0gMV07XG4gIGlmICh0eXBlb2YgcHJldlNuYXAgPT09ICd1bmRlZmluZWQnICYmIChwYXJhbXMuY3NzTW9kZSB8fCBpc0ZyZWVNb2RlKSkge1xuICAgIGxldCBwcmV2U25hcEluZGV4O1xuICAgIHNuYXBHcmlkLmZvckVhY2goKHNuYXAsIHNuYXBJbmRleCkgPT4ge1xuICAgICAgaWYgKG5vcm1hbGl6ZWRUcmFuc2xhdGUgPj0gc25hcCkge1xuICAgICAgICAvLyBwcmV2U25hcCA9IHNuYXA7XG4gICAgICAgIHByZXZTbmFwSW5kZXggPSBzbmFwSW5kZXg7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKHR5cGVvZiBwcmV2U25hcEluZGV4ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgcHJldlNuYXAgPSBpc0ZyZWVNb2RlID8gc25hcEdyaWRbcHJldlNuYXBJbmRleF0gOiBzbmFwR3JpZFtwcmV2U25hcEluZGV4ID4gMCA/IHByZXZTbmFwSW5kZXggLSAxIDogcHJldlNuYXBJbmRleF07XG4gICAgfVxuICB9XG4gIGxldCBwcmV2SW5kZXggPSAwO1xuICBpZiAodHlwZW9mIHByZXZTbmFwICE9PSAndW5kZWZpbmVkJykge1xuICAgIHByZXZJbmRleCA9IHNsaWRlc0dyaWQuaW5kZXhPZihwcmV2U25hcCk7XG4gICAgaWYgKHByZXZJbmRleCA8IDApIHByZXZJbmRleCA9IHN3aXBlci5hY3RpdmVJbmRleCAtIDE7XG4gICAgaWYgKHBhcmFtcy5zbGlkZXNQZXJWaWV3ID09PSAnYXV0bycgJiYgcGFyYW1zLnNsaWRlc1Blckdyb3VwID09PSAxICYmIHBhcmFtcy5zbGlkZXNQZXJHcm91cEF1dG8pIHtcbiAgICAgIHByZXZJbmRleCA9IHByZXZJbmRleCAtIHN3aXBlci5zbGlkZXNQZXJWaWV3RHluYW1pYygncHJldmlvdXMnLCB0cnVlKSArIDE7XG4gICAgICBwcmV2SW5kZXggPSBNYXRoLm1heChwcmV2SW5kZXgsIDApO1xuICAgIH1cbiAgfVxuICBpZiAocGFyYW1zLnJld2luZCAmJiBzd2lwZXIuaXNCZWdpbm5pbmcpIHtcbiAgICBjb25zdCBsYXN0SW5kZXggPSBzd2lwZXIucGFyYW1zLnZpcnR1YWwgJiYgc3dpcGVyLnBhcmFtcy52aXJ0dWFsLmVuYWJsZWQgJiYgc3dpcGVyLnZpcnR1YWwgPyBzd2lwZXIudmlydHVhbC5zbGlkZXMubGVuZ3RoIC0gMSA6IHN3aXBlci5zbGlkZXMubGVuZ3RoIC0gMTtcbiAgICByZXR1cm4gc3dpcGVyLnNsaWRlVG8obGFzdEluZGV4LCBzcGVlZCwgcnVuQ2FsbGJhY2tzLCBpbnRlcm5hbCk7XG4gIH0gZWxzZSBpZiAocGFyYW1zLmxvb3AgJiYgc3dpcGVyLmFjdGl2ZUluZGV4ID09PSAwICYmIHBhcmFtcy5jc3NNb2RlKSB7XG4gICAgcmVxdW
9974VzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgIHN3aXBlci5zbGlkZVRvKHByZXZJbmRleCwgc3BlZWQsIHJ1bkNhbGxiYWNrcywgaW50ZXJuYWwpO1xuICAgIH0pO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBzd2lwZXIuc2xpZGVUbyhwcmV2SW5kZXgsIHNwZWVkLCBydW5DYWxsYmFja3MsIGludGVybmFsKTtcbn1cblxuLyogZXNsaW50IG5vLXVudXNlZC12YXJzOiBcIm9mZlwiICovXG5mdW5jdGlvbiBzbGlkZVJlc2V0KHNwZWVkLCBydW5DYWxsYmFja3MsIGludGVybmFsKSB7XG4gIGlmIChydW5DYWxsYmFja3MgPT09IHZvaWQgMCkge1xuICAgIHJ1bkNhbGxiYWNrcyA9IHRydWU7XG4gIH1cbiAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgaWYgKHN3aXBlci5kZXN0cm95ZWQpIHJldHVybjtcbiAgaWYgKHR5cGVvZiBzcGVlZCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBzcGVlZCA9IHN3aXBlci5wYXJhbXMuc3BlZWQ7XG4gIH1cbiAgcmV0dXJuIHN3aXBlci5zbGlkZVRvKHN3aXBlci5hY3RpdmVJbmRleCwgc3BlZWQsIHJ1bkNhbGxiYWNrcywgaW50ZXJuYWwpO1xufVxuXG4vKiBlc2xpbnQgbm8tdW51c2VkLXZhcnM6IFwib2ZmXCIgKi9cbmZ1bmN0aW9uIHNsaWRlVG9DbG9zZXN0KHNwZWVkLCBydW5DYWxsYmFja3MsIGludGVybmFsLCB0aHJlc2hvbGQpIHtcbiAgaWYgKHJ1bkNhbGxiYWNrcyA9PT0gdm9pZCAwKSB7XG4gICAgcnVuQ2FsbGJhY2tzID0gdHJ1ZTtcbiAgfVxuICBpZiAodGhyZXNob2xkID09PSB2b2lkIDApIHtcbiAgICB0aHJlc2hvbGQgPSAwLjU7XG4gIH1cbiAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgaWYgKHN3aXBlci5kZXN0cm95ZWQpIHJldHVybjtcbiAgaWYgKHR5cGVvZiBzcGVlZCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBzcGVlZCA9IHN3aXBlci5wYXJhbXMuc3BlZWQ7XG4gIH1cbiAgbGV0IGluZGV4ID0gc3dpcGVyLmFjdGl2ZUluZGV4O1xuICBjb25zdCBza2lwID0gTWF0aC5taW4oc3dpcGVyLnBhcmFtcy5zbGlkZXNQZXJHcm91cFNraXAsIGluZGV4KTtcbiAgY29uc3Qgc25hcEluZGV4ID0gc2tpcCArIE1hdGguZmxvb3IoKGluZGV4IC0gc2tpcCkgLyBzd2lwZXIucGFyYW1zLnNsaWRlc1Blckdyb3VwKTtcbiAgY29uc3QgdHJhbnNsYXRlID0gc3dpcGVyLnJ0bFRyYW5zbGF0ZSA/IHN3aXBlci50cmFuc2xhdGUgOiAtc3dpcGVyLnRyYW5zbGF0ZTtcbiAgaWYgKHRyYW5zbGF0ZSA+PSBzd2lwZXIuc25hcEdyaWRbc25hcEluZGV4XSkge1xuICAgIC8vIFRoZSBjdXJyZW50IHRyYW5zbGF0ZSBpcyBvbiBvciBhZnRlciB0aGUgY3VycmVudCBzbmFwIGluZGV4LCBzbyB0aGUgY2hvaWNlXG4gICAgLy8gaXMgYmV0d2VlbiB0aGUgY3VycmVudCBpbmRleCBhbmQgdGhlIG9uZSBhZnRlciBpdC5cbiAgICBjb25zdCBjdXJyZW50U25hcCA9IHN3aXBlci5zbmFwR3JpZFtzbmFwSW5kZXhdO1xuICAgIGNvbnN0IG5leHRTbmFwID0gc3dpcGVyLnNuYXBHcmlkW3NuYXBJbmRleCArIDFdO1xuICAgIGlmICh0cmFuc2xhdGUgLSBjdXJyZW50U25hcCA+IChuZXh0U25hcCAtIGN1cnJlbnRTbmFwKSAqIHRocmVzaG9sZCkge1xuICAgICAgaW5kZXggKz0gc3dpcGVyLnBhcmFtcy5zbGlkZXNQZXJHcm91cDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gVGhlIGN1cnJlbnQgdHJhbnNsYXRlIGlzIGJlZm9yZSB0aGUgY3VycmVudCBzbmFwIGluZGV4LCBzbyB0aGUgY2hvaWNlXG4gICAgLy8gaXMgYmV0d2VlbiB0aGUgY3VycmVudCBpbmRleCBhbmQgdGhlIG9uZSBiZWZvcmUgaXQuXG4gICAgY29uc3QgcHJldlNuYXAgPSBzd2lwZXIuc25hcEdyaWRbc25hcEluZGV4IC0gMV07XG4gICAgY29uc3QgY3VycmVudFNuYXAgPSBzd2lwZXIuc25hcEdyaWRbc25hcEluZGV4XTtcbiAgICBpZiAodHJhbnNsYXRlIC0gcHJldlNuYXAgPD0gKGN1cnJlbnRTbmFwIC0gcHJldlNuYXApICogdGhyZXNob2xkKSB7XG4gICAgICBpbmRleCAtPSBzd2lwZXIucGFyYW1zLnNsaWRlc1Blckdyb3VwO1xuICAgIH1cbiAgfVxuICBpbmRleCA9IE1hdGgubWF4KGluZGV4LCAwKTtcbiAgaW5kZXggPSBNYXRoLm1pbihpbmRleCwgc3dpcGVyLnNsaWRlc0dyaWQubGVuZ3RoIC0gMSk7XG4gIHJldHVybiBzd2lwZXIuc2xpZGVUbyhpbmRleCwgc3BlZWQsIHJ1bkNhbGxiYWNrcywgaW50ZXJuYWwpO1xufVxuXG5mdW5jdGlvbiBzbGlkZVRvQ2xpY2tlZFNsaWRlKCkge1xuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBpZiAoc3dpcGVyLmRlc3Ryb3llZCkgcmV0dXJuO1xuICBjb25zdCB7XG4gICAgcGFyYW1zLFxuICAgIHNsaWRlc0VsXG4gIH0gPSBzd2lwZXI7XG4gIGNvbnN0IHNsaWRlc1BlclZpZXcgPSBwYXJhbXMuc2xpZGVzUGVyVmlldyA9PT0gJ2F1dG8nID8gc3dpcGVyLnNsaWRlc1BlclZpZXdEeW5hbWljKCkgOiBwYXJhbXMuc2xpZGVzUGVyVmlldztcbiAgbGV0IHNsaWRlVG9JbmRleCA9IHN3aXBlci5nZXRTbGlkZUluZGV4V2hlbkdyaWQoc3dpcGVyLmNsaWNrZWRJbmRleCk7XG4gIGxldCByZWFsSW5kZXg7XG4gIGNvbnN0IHNsaWRlU2VsZWN0b3IgPSBzd2lwZXIuaXNFbGVtZW50ID8gYHN3aXBlci1zbGlkZWAgOiBgLiR7cGFyYW1zLnNsaWRlQ2xhc3N9YDtcbiAgY29uc3QgaXNHcmlkID0gc3dpcGVyLmdyaWQgJiYgc3dpcGVyLnBhcmFtcy5ncmlkICYmIHN3aXBlci5wYXJhbXMuZ3JpZC5yb3dzID4gMTtcbiAgaWYgKHBhcmFtcy5sb29wKSB7XG4gICAgaWYgKHN3aXBlci5hbmltYXRpbmcpIHJldHVybjtcbiAgICByZWFsSW5kZXggPSBwYXJzZUludChzd2lwZXIuY2xpY2tlZFNsaWRlLmdldEF0dHJpYnV0ZSgnZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgnKSwgMTApO1xuICAgIGlmIChwYXJhbXMuY2VudGVyZWRTbGlkZXMpIHtcbiAgICAgIHN3aXBlci5zbGlkZVRvTG9vcChyZWFsSW5kZXgpO1xuICAgIH0gZWxzZSBpZiAoc2xpZGVUb0luZGV4ID4gKGlzR3JpZCA/IChzd2lwZXIuc2xpZGVzLmxlbmd0aCAtIHNsaWRlc1BlclZpZXcpIC8gMiAtIChzd2lwZXIucGFyYW1zLmdyaWQucm93cyAtIDEpIDogc3dpcGVyLnNsaWRlcy5sZW5ndGggLSBzbGlkZXNQZXJWaWV3KSkge1xuICAgICAgc3dpcGVyLmxvb3BGaXgoKTtcbiAgICAgIHNsaWRlVG9JbmRleCA9IHN3aXBlci5nZXRTbGlkZUluZGV4KGVsZW1lbnRDaGlsZHJlbihzbGlkZXNFbCwgYCR7c2xpZGVTZWxlY3Rvcn1bZGF0YS1zd2lwZXItc2xpZGUtaW5kZXg9XCIke3JlYWxJbmRleH1cIl1gKVswXSk7XG4gICAgICBuZXh0VGljaygoKSA9PiB7XG4gICAgICAgI
9974HN3aXBlci5zbGlkZVRvKHNsaWRlVG9JbmRleCk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3dpcGVyLnNsaWRlVG8oc2xpZGVUb0luZGV4KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgc3dpcGVyLnNsaWRlVG8oc2xpZGVUb0luZGV4KTtcbiAgfVxufVxuXG52YXIgc2xpZGUgPSB7XG4gIHNsaWRlVG8sXG4gIHNsaWRlVG9Mb29wLFxuICBzbGlkZU5leHQsXG4gIHNsaWRlUHJldixcbiAgc2xpZGVSZXNldCxcbiAgc2xpZGVUb0Nsb3Nlc3QsXG4gIHNsaWRlVG9DbGlja2VkU2xpZGVcbn07XG5cbmZ1bmN0aW9uIGxvb3BDcmVhdGUoc2xpZGVSZWFsSW5kZXgsIGluaXRpYWwpIHtcbiAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgY29uc3Qge1xuICAgIHBhcmFtcyxcbiAgICBzbGlkZXNFbFxuICB9ID0gc3dpcGVyO1xuICBpZiAoIXBhcmFtcy5sb29wIHx8IHN3aXBlci52aXJ0dWFsICYmIHN3aXBlci5wYXJhbXMudmlydHVhbC5lbmFibGVkKSByZXR1cm47XG4gIGNvbnN0IGluaXRTbGlkZXMgPSAoKSA9PiB7XG4gICAgY29uc3Qgc2xpZGVzID0gZWxlbWVudENoaWxkcmVuKHNsaWRlc0VsLCBgLiR7cGFyYW1zLnNsaWRlQ2xhc3N9LCBzd2lwZXItc2xpZGVgKTtcbiAgICBzbGlkZXMuZm9yRWFjaCgoZWwsIGluZGV4KSA9PiB7XG4gICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2RhdGEtc3dpcGVyLXNsaWRlLWluZGV4JywgaW5kZXgpO1xuICAgIH0pO1xuICB9O1xuICBjb25zdCBjbGVhckJsYW5rU2xpZGVzID0gKCkgPT4ge1xuICAgIGNvbnN0IHNsaWRlcyA9IGVsZW1lbnRDaGlsZHJlbihzbGlkZXNFbCwgYC4ke3BhcmFtcy5zbGlkZUJsYW5rQ2xhc3N9YCk7XG4gICAgc2xpZGVzLmZvckVhY2goZWwgPT4ge1xuICAgICAgZWwucmVtb3ZlKCk7XG4gICAgfSk7XG4gICAgaWYgKHNsaWRlcy5sZW5ndGggPiAwKSB7XG4gICAgICBzd2lwZXIucmVjYWxjU2xpZGVzKCk7XG4gICAgICBzd2lwZXIudXBkYXRlU2xpZGVzKCk7XG4gICAgfVxuICB9O1xuICBjb25zdCBncmlkRW5hYmxlZCA9IHN3aXBlci5ncmlkICYmIHBhcmFtcy5ncmlkICYmIHBhcmFtcy5ncmlkLnJvd3MgPiAxO1xuICBpZiAocGFyYW1zLmxvb3BBZGRCbGFua1NsaWRlcyAmJiAocGFyYW1zLnNsaWRlc1Blckdyb3VwID4gMSB8fCBncmlkRW5hYmxlZCkpIHtcbiAgICBjbGVhckJsYW5rU2xpZGVzKCk7XG4gIH1cbiAgY29uc3Qgc2xpZGVzUGVyR3JvdXAgPSBwYXJhbXMuc2xpZGVzUGVyR3JvdXAgKiAoZ3JpZEVuYWJsZWQgPyBwYXJhbXMuZ3JpZC5yb3dzIDogMSk7XG4gIGNvbnN0IHNob3VsZEZpbGxHcm91cCA9IHN3aXBlci5zbGlkZXMubGVuZ3RoICUgc2xpZGVzUGVyR3JvdXAgIT09IDA7XG4gIGNvbnN0IHNob3VsZEZpbGxHcmlkID0gZ3JpZEVuYWJsZWQgJiYgc3dpcGVyLnNsaWRlcy5sZW5ndGggJSBwYXJhbXMuZ3JpZC5yb3dzICE9PSAwO1xuICBjb25zdCBhZGRCbGFua1NsaWRlcyA9IGFtb3VudE9mU2xpZGVzID0+IHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFtb3VudE9mU2xpZGVzOyBpICs9IDEpIHtcbiAgICAgIGNvbnN0IHNsaWRlRWwgPSBzd2lwZXIuaXNFbGVtZW50ID8gY3JlYXRlRWxlbWVudCgnc3dpcGVyLXNsaWRlJywgW3BhcmFtcy5zbGlkZUJsYW5rQ2xhc3NdKSA6IGNyZWF0ZUVsZW1lbnQoJ2RpdicsIFtwYXJhbXMuc2xpZGVDbGFzcywgcGFyYW1zLnNsaWRlQmxhbmtDbGFzc10pO1xuICAgICAgc3dpcGVyLnNsaWRlc0VsLmFwcGVuZChzbGlkZUVsKTtcbiAgICB9XG4gIH07XG4gIGlmIChzaG91bGRGaWxsR3JvdXApIHtcbiAgICBpZiAocGFyYW1zLmxvb3BBZGRCbGFua1NsaWRlcykge1xuICAgICAgY29uc3Qgc2xpZGVzVG9BZGQgPSBzbGlkZXNQZXJHcm91cCAtIHN3aXBlci5zbGlkZXMubGVuZ3RoICUgc2xpZGVzUGVyR3JvdXA7XG4gICAgICBhZGRCbGFua1NsaWRlcyhzbGlkZXNUb0FkZCk7XG4gICAgICBzd2lwZXIucmVjYWxjU2xpZGVzKCk7XG4gICAgICBzd2lwZXIudXBkYXRlU2xpZGVzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNob3dXYXJuaW5nKCdTd2lwZXIgTG9vcCBXYXJuaW5nOiBUaGUgbnVtYmVyIG9mIHNsaWRlcyBpcyBub3QgZXZlbiB0byBzbGlkZXNQZXJHcm91cCwgbG9vcCBtb2RlIG1heSBub3QgZnVuY3Rpb24gcHJvcGVybHkuIFlvdSBuZWVkIHRvIGFkZCBtb3JlIHNsaWRlcyAob3IgbWFrZSBkdXBsaWNhdGVzLCBvciBlbXB0eSBzbGlkZXMpJyk7XG4gICAgfVxuICAgIGluaXRTbGlkZXMoKTtcbiAgfSBlbHNlIGlmIChzaG91bGRGaWxsR3JpZCkge1xuICAgIGlmIChwYXJhbXMubG9vcEFkZEJsYW5rU2xpZGVzKSB7XG4gICAgICBjb25zdCBzbGlkZXNUb0FkZCA9IHBhcmFtcy5ncmlkLnJvd3MgLSBzd2lwZXIuc2xpZGVzLmxlbmd0aCAlIHBhcmFtcy5ncmlkLnJvd3M7XG4gICAgICBhZGRCbGFua1NsaWRlcyhzbGlkZXNUb0FkZCk7XG4gICAgICBzd2lwZXIucmVjYWxjU2xpZGVzKCk7XG4gICAgICBzd2lwZXIudXBkYXRlU2xpZGVzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNob3dXYXJuaW5nKCdTd2lwZXIgTG9vcCBXYXJuaW5nOiBUaGUgbnVtYmVyIG9mIHNsaWRlcyBpcyBub3QgZXZlbiB0byBncmlkLnJvd3MsIGxvb3AgbW9kZSBtYXkgbm90IGZ1bmN0aW9uIHByb3Blcmx5LiBZb3UgbmVlZCB0byBhZGQgbW9yZSBzbGlkZXMgKG9yIG1ha2UgZHVwbGljYXRlcywgb3IgZW1wdHkgc2xpZGVzKScpO1xuICAgIH1cbiAgICBpbml0U2xpZGVzKCk7XG4gIH0gZWxzZSB7XG4gICAgaW5pdFNsaWRlcygpO1xuICB9XG4gIHN3aXBlci5sb29wRml4KHtcbiAgICBzbGlkZVJlYWxJbmRleCxcbiAgICBkaXJlY3Rpb246IHBhcmFtcy5jZW50ZXJlZFNsaWRlcyA/IHVuZGVmaW5lZCA6ICduZXh0JyxcbiAgICBpbml0aWFsXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBsb29wRml4KF90ZW1wKSB7XG4gIGxldCB7XG4gICAgc2xpZGVSZWFsSW5kZXgsXG4gICAgc2xpZGVUbyA9IHRydWUsXG4gICAgZGlyZWN0aW9uLFxuICAgIHNldFRyYW5zbGF0ZSxcbiAgICBhY3RpdmVTbGlkZUluZGV4LFxuICAgIGluaXRpYWwsXG4gICAgYnlDb250cm9sbGVyLFxuICAgIGJ5TW91c2V3aGVlbFxuICB9ID0gX3RlbXAgPT09IHZvaWQgMCA/IHt9IDogX3RlbXA7XG4gIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gIGlmICghc3dpcGVyLnBhcmFtcy5sb29wKSByZXR1cm47XG4gIHN3aXBlci5lbWl0KCdiZWZvcmVMb29wRml4Jyk7XG4gIGNvbnN0IHtcbiAgICBzbGlkZXMsXG4gICAgYWxsb3dTbGlkZVByZXYsXG4gICAgYWxsb3dTbGlkZU5leHQsXG4gICAgc2xpZGVzRWwsXG4gICAgcGFyYW1zXG4gIH0gPSBzd2lwZXI7XG4gIGNvbnN0IHtcbiAgICBjZW50ZXJlZFNsaWRlcyxcbiAgICBpbml0aWFsU2xpZGVcbiAgfSA9IHBhcmFtcztcbiAgc3dpcGVyLmFsbG93U2xpZGVQcmV2ID0gdHJ1ZTtcbiAgc3dpcGVyLmFsbG93U2xpZGVOZXh0ID0gdHJ1ZTtcbiAgaWYgKHN3aXBlci52aXJ0dWFsICYmIHBhcmFtcy52aXJ0dWFsLmVuYWJsZWQpIHtcbiAgICBpZiAoc2xpZGVUbykge1xuICAgICAgaWYgKCFwYXJhbXMuY2VudGVyZWRTbGlkZXMgJiYgc3dpcGVyLnNuYXBJbmRleCA9PT0gMCkge1xuICAgICAgICBzd2lwZXIuc2xpZGVUbyhzd2lwZXIudmlydHVhbC5zbGlkZXMubGVuZ3RoLCAwLCBmYWxzZSwgdHJ1ZSk7XG4gICAgICB9IGVsc2UgaWYgKHBhcmFtcy5jZW50ZXJlZFNsaWRlcyAmJiBzd2lwZXIuc25hcEluZGV4IDwgcGFyYW1zLnNsaWRlc1BlclZpZXcpIHtcbiAgICAgICAgc3dpcGVyLnNsaWRlVG8oc3dpcGVyLnZpcnR1YWwuc2xpZGVzLmxlbmd0aCArIHN3aXBlci5zbmFwSW5kZXgsIDAsIGZhbHNlLCB0cnVlKTtcbiAgICAgIH0gZWxzZSBpZiAoc3dpcGVyLnNuYXBJbmRleCA9PT0gc3dpcGVyLnNuYXBHcmlkLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgc3dpcGVyLnNsaWRlVG8oc3dpcGVyLnZpcnR1YWwuc2xpZGVzQmVmb3JlLCAwLCBmYWxzZSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHN3aXBlci5hbGxvd1NsaWRlUHJldiA9IGFsbG93U2xpZGVQcmV2O1xuICAgIHN3aXBlci5hbGxvd1NsaWRlTmV4dCA9IGFsbG93U2xpZGVOZXh0O1xuICAgIHN3aXBlci5lbWl0KCdsb29wRml4Jyk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGxldCBzbGlkZXNQZXJWaWV3ID0gcGFyYW1zLnNsaWRlc1BlclZpZXc7XG4gIGlmIChzbGlkZXNQZXJWaWV3ID09PSAnYXV0bycpIHtcbiAgICBzbGlkZXNQZXJWaWV3ID0gc3dpcGVyLnNsaWRlc1BlclZpZXdEeW5hbWljKCk7XG4gIH0gZWxzZSB7XG4gICAgc2xpZGVzUGVyVmlldyA9IE1hdGguY2VpbChwYXJzZU
9974Zsb2F0KHBhcmFtcy5zbGlkZXNQZXJWaWV3LCAxMCkpO1xuICAgIGlmIChjZW50ZXJlZFNsaWRlcyAmJiBzbGlkZXNQZXJWaWV3ICUgMiA9PT0gMCkge1xuICAgICAgc2xpZGVzUGVyVmlldyA9IHNsaWRlc1BlclZpZXcgKyAxO1xuICAgIH1cbiAgfVxuICBjb25zdCBzbGlkZXNQZXJHcm91cCA9IHBhcmFtcy5zbGlkZXNQZXJHcm91cEF1dG8gPyBzbGlkZXNQZXJWaWV3IDogcGFyYW1zLnNsaWRlc1Blckdyb3VwO1xuICBsZXQgbG9vcGVkU2xpZGVzID0gY2VudGVyZWRTbGlkZXMgPyBNYXRoLm1heChzbGlkZXNQZXJHcm91cCwgTWF0aC5jZWlsKHNsaWRlc1BlclZpZXcgLyAyKSkgOiBzbGlkZXNQZXJHcm91cDtcbiAgaWYgKGxvb3BlZFNsaWRlcyAlIHNsaWRlc1Blckdyb3VwICE9PSAwKSB7XG4gICAgbG9vcGVkU2xpZGVzICs9IHNsaWRlc1Blckdyb3VwIC0gbG9vcGVkU2xpZGVzICUgc2xpZGVzUGVyR3JvdXA7XG4gIH1cbiAgbG9vcGVkU2xpZGVzICs9IHBhcmFtcy5sb29wQWRkaXRpb25hbFNsaWRlcztcbiAgc3dpcGVyLmxvb3BlZFNsaWRlcyA9IGxvb3BlZFNsaWRlcztcbiAgY29uc3QgZ3JpZEVuYWJsZWQgPSBzd2lwZXIuZ3JpZCAmJiBwYXJhbXMuZ3JpZCAmJiBwYXJhbXMuZ3JpZC5yb3dzID4gMTtcbiAgaWYgKHNsaWRlcy5sZW5ndGggPCBzbGlkZXNQZXJWaWV3ICsgbG9vcGVkU2xpZGVzIHx8IHN3aXBlci5wYXJhbXMuZWZmZWN0ID09PSAnY2FyZHMnICYmIHNsaWRlcy5sZW5ndGggPCBzbGlkZXNQZXJWaWV3ICsgbG9vcGVkU2xpZGVzICogMikge1xuICAgIHNob3dXYXJuaW5nKCdTd2lwZXIgTG9vcCBXYXJuaW5nOiBUaGUgbnVtYmVyIG9mIHNsaWRlcyBpcyBub3QgZW5vdWdoIGZvciBsb29wIG1vZGUsIGl0IHdpbGwgYmUgZGlzYWJsZWQgb3Igbm90IGZ1bmN0aW9uIHByb3Blcmx5LiBZb3UgbmVlZCB0byBhZGQgbW9yZSBzbGlkZXMgKG9yIG1ha2UgZHVwbGljYXRlcykgb3IgbG93ZXIgdGhlIHZhbHVlcyBvZiBzbGlkZXNQZXJWaWV3IGFuZCBzbGlkZXNQZXJHcm91cCBwYXJhbWV0ZXJzJyk7XG4gIH0gZWxzZSBpZiAoZ3JpZEVuYWJsZWQgJiYgcGFyYW1zLmdyaWQuZmlsbCA9PT0gJ3JvdycpIHtcbiAgICBzaG93V2FybmluZygnU3dpcGVyIExvb3AgV2FybmluZzogTG9vcCBtb2RlIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggZ3JpZC5maWxsID0gYHJvd2AnKTtcbiAgfVxuICBjb25zdCBwcmVwZW5kU2xpZGVzSW5kZXhlcyA9IFtdO1xuICBjb25zdCBhcHBlbmRTbGlkZXNJbmRleGVzID0gW107XG4gIGNvbnN0IGNvbHMgPSBncmlkRW5hYmxlZCA/IE1hdGguY2VpbChzbGlkZXMubGVuZ3RoIC8gcGFyYW1zLmdyaWQucm93cykgOiBzbGlkZXMubGVuZ3RoO1xuICBjb25zdCBpc0luaXRpYWxPdmVyZmxvdyA9IGluaXRpYWwgJiYgY29scyAtIGluaXRpYWxTbGlkZSA8IHNsaWRlc1BlclZpZXcgJiYgIWNlbnRlcmVkU2xpZGVzO1xuICBsZXQgYWN0aXZlSW5kZXggPSBpc0luaXRpYWxPdmVyZmxvdyA/IGluaXRpYWxTbGlkZSA6IHN3aXBlci5hY3RpdmVJbmRleDtcbiAgaWYgKHR5cGVvZiBhY3RpdmVTbGlkZUluZGV4ID09PSAndW5kZWZpbmVkJykge1xuICAgIGFjdGl2ZVNsaWRlSW5kZXggPSBzd2lwZXIuZ2V0U2xpZGVJbmRleChzbGlkZXMuZmluZChlbCA9PiBlbC5jbGFzc0xpc3QuY29udGFpbnMocGFyYW1zLnNsaWRlQWN0aXZlQ2xhc3MpKSk7XG4gIH0gZWxzZSB7XG4gICAgYWN0aXZlSW5kZXggPSBhY3RpdmVTbGlkZUluZGV4O1xuICB9XG4gIGNvbnN0IGlzTmV4dCA9IGRpcmVjdGlvbiA9PT0gJ25leHQnIHx8ICFkaXJlY3Rpb247XG4gIGNvbnN0IGlzUHJldiA9IGRpcmVjdGlvbiA9PT0gJ3ByZXYnIHx8ICFkaXJlY3Rpb247XG4gIGxldCBzbGlkZXNQcmVwZW5kZWQgPSAwO1xuICBsZXQgc2xpZGVzQXBwZW5kZWQgPSAwO1xuICBjb25zdCBhY3RpdmVDb2xJbmRleCA9IGdyaWRFbmFibGVkID8gc2xpZGVzW2FjdGl2ZVNsaWRlSW5kZXhdLmNvbHVtbiA6IGFjdGl2ZVNsaWRlSW5kZXg7XG4gIGNvbnN0IGFjdGl2ZUNvbEluZGV4V2l0aFNoaWZ0ID0gYWN0aXZlQ29sSW5kZXggKyAoY2VudGVyZWRTbGlkZXMgJiYgdHlwZW9mIHNldFRyYW5zbGF0ZSA9PT0gJ3VuZGVmaW5lZCcgPyAtc2xpZGVzUGVyVmlldyAvIDIgKyAwLjUgOiAwKTtcbiAgLy8gcHJlcGVuZCBsYXN0IHNsaWRlcyBiZWZvcmUgc3RhcnRcbiAgaWYgKGFjdGl2ZUNvbEluZGV4V2l0aFNoaWZ0IDwgbG9vcGVkU2xpZGVzKSB7XG4gICAgc2xpZGVzUHJlcGVuZGVkID0gTWF0aC5tYXgobG9vcGVkU2xpZGVzIC0gYWN0aXZlQ29sSW5kZXhXaXRoU2hpZnQsIHNsaWRlc1Blckdyb3VwKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxvb3BlZFNsaWRlcyAtIGFjdGl2ZUNvbEluZGV4V2l0aFNoaWZ0OyBpICs9IDEpIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gaSAtIE1hdGguZmxvb3IoaSAvIGNvbHMpICogY29scztcbiAgICAgIGlmIChncmlkRW5hYmxlZCkge1xuICAgICAgICBjb25zdCBjb2xJbmRleFRvUHJlcGVuZCA9IGNvbHMgLSBpbmRleCAtIDE7XG4gICAgICAgIGZvciAobGV0IGkgPSBzbGlkZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpIC09IDEpIHtcbiAgICAgICAgICBpZiAoc2xpZGVzW2ldLmNvbHVtbiA9PT0gY29sSW5kZXhUb1ByZXBlbmQpIHByZXBlbmRTbGlkZXNJbmRleGVzLnB1c2goaSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gc2xpZGVzLmZvckVhY2goKHNsaWRlLCBzbGlkZUluZGV4KSA9PiB7XG4gICAgICAgIC8vICAgaWYgKHNsaWRlLmNvbHVtbiA9PT0gY29sSW5kZXhUb1ByZXBlbmQpIHByZXBlbmRTbGlkZXNJbmRleGVzLnB1c2goc2xpZGVJbmRleCk7XG4gICAgICAgIC8vIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJlcGVuZFNsaWRlc0luZGV4ZXMucHVzaChjb2xzIC0gaW5kZXggLSAxKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAoYWN0aXZlQ29sSW5kZXhXaXRoU2hpZnQgKyBzbGlkZXNQZXJWaWV3ID4gY29scyAtIGxvb3BlZFNsaWRlcykge1xuICAgIHNsaWRlc0FwcGVuZGVkID0gTWF0aC5tYXgoYWN0aXZlQ29sSW5kZXhXaXRoU2hpZnQgLSAoY29scyAtIGxvb3BlZFNsaWRlcyAqIDIpLCBzbGlkZXNQZXJHcm91cCk7XG4gICAgaWYgKGlzSW5pdGlhbE92ZXJmbG93KSB7XG4gICAgICBzbGlkZXNBcHBlbmRlZCA9IE1hdGgubWF4KHNsaWRlc0FwcGVuZGVkLCBzbGlkZXNQZXJWaWV3IC0gY29scyArIGluaXRpYWxTbGlkZSArIDEpO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNsaWRlc0FwcGVuZGVkOy
9974BpICs9IDEpIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gaSAtIE1hdGguZmxvb3IoaSAvIGNvbHMpICogY29scztcbiAgICAgIGlmIChncmlkRW5hYmxlZCkge1xuICAgICAgICBzbGlkZXMuZm9yRWFjaCgoc2xpZGUsIHNsaWRlSW5kZXgpID0+IHtcbiAgICAgICAgICBpZiAoc2xpZGUuY29sdW1uID09PSBpbmRleCkgYXBwZW5kU2xpZGVzSW5kZXhlcy5wdXNoKHNsaWRlSW5kZXgpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFwcGVuZFNsaWRlc0luZGV4ZXMucHVzaChpbmRleCk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHN3aXBlci5fX3ByZXZlbnRPYnNlcnZlcl9fID0gdHJ1ZTtcbiAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICBzd2lwZXIuX19wcmV2ZW50T2JzZXJ2ZXJfXyA9IGZhbHNlO1xuICB9KTtcbiAgaWYgKHN3aXBlci5wYXJhbXMuZWZmZWN0ID09PSAnY2FyZHMnICYmIHNsaWRlcy5sZW5ndGggPCBzbGlkZXNQZXJWaWV3ICsgbG9vcGVkU2xpZGVzICogMikge1xuICAgIGlmIChhcHBlbmRTbGlkZXNJbmRleGVzLmluY2x1ZGVzKGFjdGl2ZVNsaWRlSW5kZXgpKSB7XG4gICAgICBhcHBlbmRTbGlkZXNJbmRleGVzLnNwbGljZShhcHBlbmRTbGlkZXNJbmRleGVzLmluZGV4T2YoYWN0aXZlU2xpZGVJbmRleCksIDEpO1xuICAgIH1cbiAgICBpZiAocHJlcGVuZFNsaWRlc0luZGV4ZXMuaW5jbHVkZXMoYWN0aXZlU2xpZGVJbmRleCkpIHtcbiAgICAgIHByZXBlbmRTbGlkZXNJbmRleGVzLnNwbGljZShwcmVwZW5kU2xpZGVzSW5kZXhlcy5pbmRleE9mKGFjdGl2ZVNsaWRlSW5kZXgpLCAxKTtcbiAgICB9XG4gIH1cbiAgaWYgKGlzUHJldikge1xuICAgIHByZXBlbmRTbGlkZXNJbmRleGVzLmZvckVhY2goaW5kZXggPT4ge1xuICAgICAgc2xpZGVzW2luZGV4XS5zd2lwZXJMb29wTW92ZURPTSA9IHRydWU7XG4gICAgICBzbGlkZXNFbC5wcmVwZW5kKHNsaWRlc1tpbmRleF0pO1xuICAgICAgc2xpZGVzW2luZGV4XS5zd2lwZXJMb29wTW92ZURPTSA9IGZhbHNlO1xuICAgIH0pO1xuICB9XG4gIGlmIChpc05leHQpIHtcbiAgICBhcHBlbmRTbGlkZXNJbmRleGVzLmZvckVhY2goaW5kZXggPT4ge1xuICAgICAgc2xpZGVzW2luZGV4XS5zd2lwZXJMb29wTW92ZURPTSA9IHRydWU7XG4gICAgICBzbGlkZXNFbC5hcHBlbmQoc2xpZGVzW2luZGV4XSk7XG4gICAgICBzbGlkZXNbaW5kZXhdLnN3aXBlckxvb3BNb3ZlRE9NID0gZmFsc2U7XG4gICAgfSk7XG4gIH1cbiAgc3dpcGVyLnJlY2FsY1NsaWRlcygpO1xuICBpZiAocGFyYW1zLnNsaWRlc1BlclZpZXcgPT09ICdhdXRvJykge1xuICAgIHN3aXBlci51cGRhdGVTbGlkZXMoKTtcbiAgfSBlbHNlIGlmIChncmlkRW5hYmxlZCAmJiAocHJlcGVuZFNsaWRlc0luZGV4ZXMubGVuZ3RoID4gMCAmJiBpc1ByZXYgfHwgYXBwZW5kU2xpZGVzSW5kZXhlcy5sZW5ndGggPiAwICYmIGlzTmV4dCkpIHtcbiAgICBzd2lwZXIuc2xpZGVzLmZvckVhY2goKHNsaWRlLCBzbGlkZUluZGV4KSA9PiB7XG4gICAgICBzd2lwZXIuZ3JpZC51cGRhdGVTbGlkZShzbGlkZUluZGV4LCBzbGlkZSwgc3dpcGVyLnNsaWRlcyk7XG4gICAgfSk7XG4gIH1cbiAgaWYgKHBhcmFtcy53YXRjaFNsaWRlc1Byb2dyZXNzKSB7XG4gICAgc3dpcGVyLnVwZGF0ZVNsaWRlc09mZnNldCgpO1xuICB9XG4gIGlmIChzbGlkZVRvKSB7XG4gICAgaWYgKHByZXBlbmRTbGlkZXNJbmRleGVzLmxlbmd0aCA+IDAgJiYgaXNQcmV2KSB7XG4gICAgICBpZiAodHlwZW9mIHNsaWRlUmVhbEluZGV4ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICBjb25zdCBjdXJyZW50U2xpZGVUcmFuc2xhdGUgPSBzd2lwZXIuc2xpZGVzR3JpZFthY3RpdmVJbmRleF07XG4gICAgICAgIGNvbnN0IG5ld1NsaWRlVHJhbnNsYXRlID0gc3dpcGVyLnNsaWRlc0dyaWRbYWN0aXZlSW5kZXggKyBzbGlkZXNQcmVwZW5kZWRdO1xuICAgICAgICBjb25zdCBkaWZmID0gbmV3U2xpZGVUcmFuc2xhdGUgLSBjdXJyZW50U2xpZGVUcmFuc2xhdGU7XG4gICAgICAgIGlmIChieU1vdXNld2hlZWwpIHtcbiAgICAgICAgICBzd2lwZXIuc2V0VHJhbnNsYXRlKHN3aXBlci50cmFuc2xhdGUgLSBkaWZmKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzd2lwZXIuc2xpZGVUbyhhY3RpdmVJbmRleCArIE1hdGguY2VpbChzbGlkZXNQcmVwZW5kZWQpLCAwLCBmYWxzZSwgdHJ1ZSk7XG4gICAgICAgICAgaWYgKHNldFRyYW5zbGF0ZSkge1xuICAgICAgICAgICAgc3dpcGVyLnRvdWNoRXZlbnRzRGF0YS5zdGFydFRyYW5zbGF0ZSA9IHN3aXBlci50b3VjaEV2ZW50c0RhdGEuc3RhcnRUcmFuc2xhdGUgLSBkaWZmO1xuICAgICAgICAgICAgc3dpcGVyLnRvdWNoRXZlbnRzRGF0YS5jdXJyZW50VHJhbnNsYXRlID0gc3dpcGVyLnRvdWNoRXZlbnRzRGF0YS5jdXJyZW50VHJhbnNsYXRlIC0gZGlmZjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChzZXRUcmFuc2xhdGUpIHtcbiAgICAgICAgICBjb25zdCBzaGlmdCA9IGdyaWRFbmFibGVkID8gcHJlcGVuZFNsaWRlc0luZGV4ZXMubGVuZ3RoIC8gcGFyYW1zLmdyaWQucm93cyA6IHByZXBlbmRTbGlkZXNJbmRleGVzLmxlbmd0aDtcbiAgICAgICAgICBzd2lwZXIuc2xpZGVUbyhzd2lwZXIuYWN0aXZlSW5kZXggKyBzaGlmdCwgMCwgZmFsc2UsIHRydWUpO1xuICAgICAgICAgIHN3aXBlci50b3VjaEV2ZW50c0RhdGEuY3VycmVudFRyYW5zbGF0ZSA9IHN3aXBlci50cmFuc2xhdGU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGFwcGVuZFNsaWRlc0luZGV4ZXMubGVuZ3RoID4gMCAmJiBpc05leHQpIHtcbiAgICAgIGlmICh0eXBlb2Ygc2xpZGVSZWFsSW5kZXggPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRTbGlkZVRyYW5zbGF0ZSA9IHN3aXBlci5zbGlkZXNHcmlkW2FjdGl2ZUluZGV4XTtcbiAgICAgICAgY29uc3QgbmV3U2xpZGVUcmFuc2xhdGUgPSBzd2lwZXIuc2xpZGVzR3JpZFthY3RpdmVJbmRleCAtIHNsaWRlc0FwcGVuZGVkXTtcbiAgICAgICAgY29uc3QgZGlmZiA9IG5ld1NsaWRlVHJhbnNsYXRlIC0gY3VycmVudFNsaWRlVHJhbnNsYXRlO1xuICAgICAgICBpZiAoYnlNb3VzZXdoZWVsKSB7XG4gICAgICAgICAgc3dpcGVyLnNldFRyYW5zbGF0ZShzd2lwZXIudHJhbnNsYXRlIC0gZGlmZik7XG4gICAgICAgI
9974H0gZWxzZSB7XG4gICAgICAgICAgc3dpcGVyLnNsaWRlVG8oYWN0aXZlSW5kZXggLSBzbGlkZXNBcHBlbmRlZCwgMCwgZmFsc2UsIHRydWUpO1xuICAgICAgICAgIGlmIChzZXRUcmFuc2xhdGUpIHtcbiAgICAgICAgICAgIHN3aXBlci50b3VjaEV2ZW50c0RhdGEuc3RhcnRUcmFuc2xhdGUgPSBzd2lwZXIudG91Y2hFdmVudHNEYXRhLnN0YXJ0VHJhbnNsYXRlIC0gZGlmZjtcbiAgICAgICAgICAgIHN3aXBlci50b3VjaEV2ZW50c0RhdGEuY3VycmVudFRyYW5zbGF0ZSA9IHN3aXBlci50b3VjaEV2ZW50c0RhdGEuY3VycmVudFRyYW5zbGF0ZSAtIGRpZmY7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBzaGlmdCA9IGdyaWRFbmFibGVkID8gYXBwZW5kU2xpZGVzSW5kZXhlcy5sZW5ndGggLyBwYXJhbXMuZ3JpZC5yb3dzIDogYXBwZW5kU2xpZGVzSW5kZXhlcy5sZW5ndGg7XG4gICAgICAgIHN3aXBlci5zbGlkZVRvKHN3aXBlci5hY3RpdmVJbmRleCAtIHNoaWZ0LCAwLCBmYWxzZSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHN3aXBlci5hbGxvd1NsaWRlUHJldiA9IGFsbG93U2xpZGVQcmV2O1xuICBzd2lwZXIuYWxsb3dTbGlkZU5leHQgPSBhbGxvd1NsaWRlTmV4dDtcbiAgaWYgKHN3aXBlci5jb250cm9sbGVyICYmIHN3aXBlci5jb250cm9sbGVyLmNvbnRyb2wgJiYgIWJ5Q29udHJvbGxlcikge1xuICAgIGNvbnN0IGxvb3BQYXJhbXMgPSB7XG4gICAgICBzbGlkZVJlYWxJbmRleCxcbiAgICAgIGRpcmVjdGlvbixcbiAgICAgIHNldFRyYW5zbGF0ZSxcbiAgICAgIGFjdGl2ZVNsaWRlSW5kZXgsXG4gICAgICBieUNvbnRyb2xsZXI6IHRydWVcbiAgICB9O1xuICAgIGlmIChBcnJheS5pc0FycmF5KHN3aXBlci5jb250cm9sbGVyLmNvbnRyb2wpKSB7XG4gICAgICBzd2lwZXIuY29udHJvbGxlci5jb250cm9sLmZvckVhY2goYyA9PiB7XG4gICAgICAgIGlmICghYy5kZXN0cm95ZWQgJiYgYy5wYXJhbXMubG9vcCkgYy5sb29wRml4KHtcbiAgICAgICAgICAuLi5sb29wUGFyYW1zLFxuICAgICAgICAgIHNsaWRlVG86IGMucGFyYW1zLnNsaWRlc1BlclZpZXcgPT09IHBhcmFtcy5zbGlkZXNQZXJWaWV3ID8gc2xpZGVUbyA6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChzd2lwZXIuY29udHJvbGxlci5jb250cm9sIGluc3RhbmNlb2Ygc3dpcGVyLmNvbnN0cnVjdG9yICYmIHN3aXBlci5jb250cm9sbGVyLmNvbnRyb2wucGFyYW1zLmxvb3ApIHtcbiAgICAgIHN3aXBlci5jb250cm9sbGVyLmNvbnRyb2wubG9vcEZpeCh7XG4gICAgICAgIC4uLmxvb3BQYXJhbXMsXG4gICAgICAgIHNsaWRlVG86IHN3aXBlci5jb250cm9sbGVyLmNvbnRyb2wucGFyYW1zLnNsaWRlc1BlclZpZXcgPT09IHBhcmFtcy5zbGlkZXNQZXJWaWV3ID8gc2xpZGVUbyA6IGZhbHNlXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgc3dpcGVyLmVtaXQoJ2xvb3BGaXgnKTtcbn1cblxuZnVuY3Rpb24gbG9vcERlc3Ryb3koKSB7XG4gIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gIGNvbnN0IHtcbiAgICBwYXJhbXMsXG4gICAgc2xpZGVzRWxcbiAgfSA9IHN3aXBlcjtcbiAgaWYgKCFwYXJhbXMubG9vcCB8fCAhc2xpZGVzRWwgfHwgc3dpcGVyLnZpcnR1YWwgJiYgc3dpcGVyLnBhcmFtcy52aXJ0dWFsLmVuYWJsZWQpIHJldHVybjtcbiAgc3dpcGVyLnJlY2FsY1NsaWRlcygpO1xuICBjb25zdCBuZXdTbGlkZXNPcmRlciA9IFtdO1xuICBzd2lwZXIuc2xpZGVzLmZvckVhY2goc2xpZGVFbCA9PiB7XG4gICAgY29uc3QgaW5kZXggPSB0eXBlb2Ygc2xpZGVFbC5zd2lwZXJTbGlkZUluZGV4ID09PSAndW5kZWZpbmVkJyA/IHNsaWRlRWwuZ2V0QXR0cmlidXRlKCdkYXRhLXN3aXBlci1zbGlkZS1pbmRleCcpICogMSA6IHNsaWRlRWwuc3dpcGVyU2xpZGVJbmRleDtcbiAgICBuZXdTbGlkZXNPcmRlcltpbmRleF0gPSBzbGlkZUVsO1xuICB9KTtcbiAgc3dpcGVyLnNsaWRlcy5mb3JFYWNoKHNsaWRlRWwgPT4ge1xuICAgIHNsaWRlRWwucmVtb3ZlQXR0cmlidXRlKCdkYXRhLXN3aXBlci1zbGlkZS1pbmRleCcpO1xuICB9KTtcbiAgbmV3U2xpZGVzT3JkZXIuZm9yRWFjaChzbGlkZUVsID0+IHtcbiAgICBzbGlkZXNFbC5hcHBlbmQoc2xpZGVFbCk7XG4gIH0pO1xuICBzd2lwZXIucmVjYWxjU2xpZGVzKCk7XG4gIHN3aXBlci5zbGlkZVRvKHN3aXBlci5yZWFsSW5kZXgsIDApO1xufVxuXG52YXIgbG9vcCA9IHtcbiAgbG9vcENyZWF0ZSxcbiAgbG9vcEZpeCxcbiAgbG9vcERlc3Ryb3lcbn07XG5cbmZ1bmN0aW9uIHNldEdyYWJDdXJzb3IobW92aW5nKSB7XG4gIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gIGlmICghc3dpcGVyLnBhcmFtcy5zaW11bGF0ZVRvdWNoIHx8IHN3aXBlci5wYXJhbXMud2F0Y2hPdmVyZmxvdyAmJiBzd2lwZXIuaXNMb2NrZWQgfHwgc3dpcGVyLnBhcmFtcy5jc3NNb2RlKSByZXR1cm47XG4gIGNvbnN0IGVsID0gc3dpcGVyLnBhcmFtcy50b3VjaEV2ZW50c1RhcmdldCA9PT0gJ2NvbnRhaW5lcicgPyBzd2lwZXIuZWwgOiBzd2lwZXIud3JhcHBlckVsO1xuICBpZiAoc3dpcGVyLmlzRWxlbWVudCkge1xuICAgIHN3aXBlci5fX3ByZXZlbnRPYnNlcnZlcl9fID0gdHJ1ZTtcbiAgfVxuICBlbC5zdHlsZS5jdXJzb3IgPSAnbW92ZSc7XG4gIGVsLnN0eWxlLmN1cnNvciA9IG1vdmluZyA/ICdncmFiYmluZycgOiAnZ3JhYic7XG4gIGlmIChzd2lwZXIuaXNFbGVtZW50KSB7XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgIHN3aXBlci5fX3ByZXZlbnRPYnNlcnZlcl9fID0gZmFsc2U7XG4gICAgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdW5zZXRHcmFiQ3Vyc29yKCkge1xuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBpZiAoc3dpcGVyLnBhcmFtcy53YXRjaE92ZXJmbG93ICYmIHN3aXBlci5pc0xvY2tlZCB8fCBzd2lwZXIucGFyYW1zLmNzc01vZGUpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKHN3aXBlci5pc0VsZW1lbnQpIHtcbiAgICBzd2lwZXIuX19wcmV2ZW50T2JzZXJ2ZXJfXyA9IHRydWU7XG4gIH1cbiAgc3dpcGVyW3N3aXBlci5wYXJhbXMudG91Y2hFdmVudHNUYXJnZXQgPT09ICdjb250YWluZXInID8gJ2VsJyA6ICd3cmFwcGVyRWwnXS5zdHlsZS5jdXJzb3IgPSAnJztcbiAgaWYgKHN3aXBlci5pc0VsZW1lbnQpIHtcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgc3dpcGVyLl9fcHJldmVudE9ic2VydmVyX18gPSBmYWxzZTtcbiAgICB9KTtcbiAgfVxufVxuXG52YXIgZ3JhYkN1cnNvciA9IHtcbiAgc2V0R3JhYkN1cnNvcixcbiAgdW5zZXRHcmFiQ3Vyc29yXG59O1xuXG4vLyBNb2RpZmllZCBmcm9tIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzU0NTIwNTU0L2N1c3RvbS1lbGVtZW50LWdldHJvb3Rub2RlLWNsb3Nlc3QtZnVuY3Rpb24tY3Jvc3NpbmctbXVsdGlwbGUtcGFyZW50LXNoYWRvd2RcbmZ1bmN0aW9uIGNsb3Nlc3RFbGVtZW50KHNlbGVjdG9yLCBiYXNlKSB7XG4gIGlmIChiYXNlID09PSB2b2lkIDApIHtcbiAgICBiYXNlID0gdGhpcztcbiAgfVxuICBmdW5jdGlvbiBfX2Nsb3Nlc3RGcm9tKGVsKSB7XG4gICAgaWYgKCFlbCB8fCBlbCA9PT0gZ2V0RG9jdW1lbnQoKSB8fCBlbCA9PT0gZ2V0V2luZG93KCkpIHJldHVybi
9974BudWxsO1xuICAgIGlmIChlbC5hc3NpZ25lZFNsb3QpIGVsID0gZWwuYXNzaWduZWRTbG90O1xuICAgIGNvbnN0IGZvdW5kID0gZWwuY2xvc2VzdChzZWxlY3Rvcik7XG4gICAgaWYgKCFmb3VuZCAmJiAhZWwuZ2V0Um9vdE5vZGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gZm91bmQgfHwgX19jbG9zZXN0RnJvbShlbC5nZXRSb290Tm9kZSgpLmhvc3QpO1xuICB9XG4gIHJldHVybiBfX2Nsb3Nlc3RGcm9tKGJhc2UpO1xufVxuZnVuY3Rpb24gcHJldmVudEVkZ2VTd2lwZShzd2lwZXIsIGV2ZW50LCBzdGFydFgpIHtcbiAgY29uc3Qgd2luZG93ID0gZ2V0V2luZG93KCk7XG4gIGNvbnN0IHtcbiAgICBwYXJhbXNcbiAgfSA9IHN3aXBlcjtcbiAgY29uc3QgZWRnZVN3aXBlRGV0ZWN0aW9uID0gcGFyYW1zLmVkZ2VTd2lwZURldGVjdGlvbjtcbiAgY29uc3QgZWRnZVN3aXBlVGhyZXNob2xkID0gcGFyYW1zLmVkZ2VTd2lwZVRocmVzaG9sZDtcbiAgaWYgKGVkZ2VTd2lwZURldGVjdGlvbiAmJiAoc3RhcnRYIDw9IGVkZ2VTd2lwZVRocmVzaG9sZCB8fCBzdGFydFggPj0gd2luZG93LmlubmVyV2lkdGggLSBlZGdlU3dpcGVUaHJlc2hvbGQpKSB7XG4gICAgaWYgKGVkZ2VTd2lwZURldGVjdGlvbiA9PT0gJ3ByZXZlbnQnKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cbmZ1bmN0aW9uIG9uVG91Y2hTdGFydChldmVudCkge1xuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBjb25zdCBkb2N1bWVudCA9IGdldERvY3VtZW50KCk7XG4gIGxldCBlID0gZXZlbnQ7XG4gIGlmIChlLm9yaWdpbmFsRXZlbnQpIGUgPSBlLm9yaWdpbmFsRXZlbnQ7XG4gIGNvbnN0IGRhdGEgPSBzd2lwZXIudG91Y2hFdmVudHNEYXRhO1xuICBpZiAoZS50eXBlID09PSAncG9pbnRlcmRvd24nKSB7XG4gICAgaWYgKGRhdGEucG9pbnRlcklkICE9PSBudWxsICYmIGRhdGEucG9pbnRlcklkICE9PSBlLnBvaW50ZXJJZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBkYXRhLnBvaW50ZXJJZCA9IGUucG9pbnRlcklkO1xuICB9IGVsc2UgaWYgKGUudHlwZSA9PT0gJ3RvdWNoc3RhcnQnICYmIGUudGFyZ2V0VG91Y2hlcy5sZW5ndGggPT09IDEpIHtcbiAgICBkYXRhLnRvdWNoSWQgPSBlLnRhcmdldFRvdWNoZXNbMF0uaWRlbnRpZmllcjtcbiAgfVxuICBpZiAoZS50eXBlID09PSAndG91Y2hzdGFydCcpIHtcbiAgICAvLyBkb24ndCBwcm9jZWVkIHRvdWNoIGV2ZW50XG4gICAgcHJldmVudEVkZ2VTd2lwZShzd2lwZXIsIGUsIGUudGFyZ2V0VG91Y2hlc1swXS5wYWdlWCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IHtcbiAgICBwYXJhbXMsXG4gICAgdG91Y2hlcyxcbiAgICBlbmFibGVkXG4gIH0gPSBzd2lwZXI7XG4gIGlmICghZW5hYmxlZCkgcmV0dXJuO1xuICBpZiAoIXBhcmFtcy5zaW11bGF0ZVRvdWNoICYmIGUucG9pbnRlclR5cGUgPT09ICdtb3VzZScpIHJldHVybjtcbiAgaWYgKHN3aXBlci5hbmltYXRpbmcgJiYgcGFyYW1zLnByZXZlbnRJbnRlcmFjdGlvbk9uVHJhbnNpdGlvbikge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoIXN3aXBlci5hbmltYXRpbmcgJiYgcGFyYW1zLmNzc01vZGUgJiYgcGFyYW1zLmxvb3ApIHtcbiAgICBzd2lwZXIubG9vcEZpeCgpO1xuICB9XG4gIGxldCB0YXJnZXRFbCA9IGUudGFyZ2V0O1xuICBpZiAocGFyYW1zLnRvdWNoRXZlbnRzVGFyZ2V0ID09PSAnd3JhcHBlcicpIHtcbiAgICBpZiAoIWVsZW1lbnRJc0NoaWxkT2YodGFyZ2V0RWwsIHN3aXBlci53cmFwcGVyRWwpKSByZXR1cm47XG4gIH1cbiAgaWYgKCd3aGljaCcgaW4gZSAmJiBlLndoaWNoID09PSAzKSByZXR1cm47XG4gIGlmICgnYnV0dG9uJyBpbiBlICYmIGUuYnV0dG9uID4gMCkgcmV0dXJuO1xuICBpZiAoZGF0YS5pc1RvdWNoZWQgJiYgZGF0YS5pc01vdmVkKSByZXR1cm47XG5cbiAgLy8gY2hhbmdlIHRhcmdldCBlbCBmb3Igc2hhZG93IHJvb3QgY29tcG9uZW50XG4gIGNvbnN0IHN3aXBpbmdDbGFzc0hhc1ZhbHVlID0gISFwYXJhbXMubm9Td2lwaW5nQ2xhc3MgJiYgcGFyYW1zLm5vU3dpcGluZ0NsYXNzICE9PSAnJztcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IGV2ZW50UGF0aCA9IGUuY29tcG9zZWRQYXRoID8gZS5jb21wb3NlZFBhdGgoKSA6IGUucGF0aDtcbiAgaWYgKHN3aXBpbmdDbGFzc0hhc1ZhbHVlICYmIGUudGFyZ2V0ICYmIGUudGFyZ2V0LnNoYWRvd1Jvb3QgJiYgZXZlbnRQYXRoKSB7XG4gICAgdGFyZ2V0RWwgPSBldmVudFBhdGhbMF07XG4gIH1cbiAgY29uc3Qgbm9Td2lwaW5nU2VsZWN0b3IgPSBwYXJhbXMubm9Td2lwaW5nU2VsZWN0b3IgPyBwYXJhbXMubm9Td2lwaW5nU2VsZWN0b3IgOiBgLiR7cGFyYW1zLm5vU3dpcGluZ0NsYXNzfWA7XG4gIGNvbnN0IGlzVGFyZ2V0U2hhZG93ID0gISEoZS50YXJnZXQgJiYgZS50YXJnZXQuc2hhZG93Um9vdCk7XG5cbiAgLy8gdXNlIGNsb3Nlc3RFbGVtZW50IGZvciBzaGFkb3cgcm9vdCBlbGVtZW50IHRvIGdldCB0aGUgYWN0dWFsIGNsb3Nlc3QgZm9yIG5lc3RlZCBzaGFkb3cgcm9vdCBlbGVtZW50XG4gIGlmIChwYXJhbXMubm9Td2lwaW5nICYmIChpc1RhcmdldFNoYWRvdyA/IGNsb3Nlc3RFbGVtZW50KG5vU3dpcGluZ1NlbGVjdG9yLCB0YXJnZXRFbCkgOiB0YXJnZXRFbC5jbG9zZXN0KG5vU3dpcGluZ1NlbGVjdG9yKSkpIHtcbiAgICBzd2lwZXIuYWxsb3dDbGljayA9IHRydWU7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChwYXJhbXMuc3dpcGVIYW5kbGVyKSB7XG4gICAgaWYgKCF0YXJnZXRFbC5jbG9zZXN0KHBhcmFtcy5zd2lwZUhhbmRsZXIpKSByZXR1cm47XG4gIH1cbiAgdG91Y2hlcy5jdXJyZW50WCA9IGUucGFnZVg7XG4gIHRvdWNoZXMuY3VycmVudFkgPSBlLnBhZ2VZO1xuICBjb25zdCBzdGFydFggPSB0b3VjaGVzLmN1cnJlbnRYO1xuICBjb25zdCBzdGFydFkgPSB0b3VjaGVzLmN1cnJlbnRZO1xuXG4gIC8vIERvIE5PVCBzdGFydCBpZiBpT1MgZWRnZSBzd2lwZSBpcyBkZXRlY3RlZC4gT3RoZXJ3aXNlIGlPUyBhcHAgY2Fubm90IHN3aXBlLXRvLWdvLWJhY2sgYW55bW9yZVxuXG4gIGlmICghcHJldmVudEVkZ2VTd2lwZShzd2lwZXIsIGUsIHN0YXJ0WCkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgT2JqZWN0LmFzc2lnbihkYXRhLCB7XG4gICAgaXNUb3VjaGVkOiB0cnVlLFxuICAgIGlzTW92ZWQ6IGZhbHNlLFxuICAgIGFsbG93VG91Y2hDYWxsYmFja3M6IHRydWUsXG4gICAgaXNTY3JvbGxpbmc6IHVuZGVmaW5lZCxcbiAgICBzdGFydE1vdmluZzogdW5kZWZpbmVkXG4gIH0pO1xuICB0b3VjaGVzLnN0YXJ0WCA9IHN0YXJ0WDtcbiAgdG91Y2hlcy5zdGFydFkgPSBzdGFydFk7XG4gIGRhdGEudG91Y2hTdGFydFRpbWUgPSBub3coKTtcbiAgc3dpcGVyLmFsbG93Q2xpY2sgP
9974SB0cnVlO1xuICBzd2lwZXIudXBkYXRlU2l6ZSgpO1xuICBzd2lwZXIuc3dpcGVEaXJlY3Rpb24gPSB1bmRlZmluZWQ7XG4gIGlmIChwYXJhbXMudGhyZXNob2xkID4gMCkgZGF0YS5hbGxvd1RocmVzaG9sZE1vdmUgPSBmYWxzZTtcbiAgbGV0IHByZXZlbnREZWZhdWx0ID0gdHJ1ZTtcbiAgaWYgKHRhcmdldEVsLm1hdGNoZXMoZGF0YS5mb2N1c2FibGVFbGVtZW50cykpIHtcbiAgICBwcmV2ZW50RGVmYXVsdCA9IGZhbHNlO1xuICAgIGlmICh0YXJnZXRFbC5ub2RlTmFtZSA9PT0gJ1NFTEVDVCcpIHtcbiAgICAgIGRhdGEuaXNUb3VjaGVkID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ICYmIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQubWF0Y2hlcyhkYXRhLmZvY3VzYWJsZUVsZW1lbnRzKSAmJiBkb2N1bWVudC5hY3RpdmVFbGVtZW50ICE9PSB0YXJnZXRFbCAmJiAoZS5wb2ludGVyVHlwZSA9PT0gJ21vdXNlJyB8fCBlLnBvaW50ZXJUeXBlICE9PSAnbW91c2UnICYmICF0YXJnZXRFbC5tYXRjaGVzKGRhdGEuZm9jdXNhYmxlRWxlbWVudHMpKSkge1xuICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuYmx1cigpO1xuICB9XG4gIGNvbnN0IHNob3VsZFByZXZlbnREZWZhdWx0ID0gcHJldmVudERlZmF1bHQgJiYgc3dpcGVyLmFsbG93VG91Y2hNb3ZlICYmIHBhcmFtcy50b3VjaFN0YXJ0UHJldmVudERlZmF1bHQ7XG4gIGlmICgocGFyYW1zLnRvdWNoU3RhcnRGb3JjZVByZXZlbnREZWZhdWx0IHx8IHNob3VsZFByZXZlbnREZWZhdWx0KSAmJiAhdGFyZ2V0RWwuaXNDb250ZW50RWRpdGFibGUpIHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gIH1cbiAgaWYgKHBhcmFtcy5mcmVlTW9kZSAmJiBwYXJhbXMuZnJlZU1vZGUuZW5hYmxlZCAmJiBzd2lwZXIuZnJlZU1vZGUgJiYgc3dpcGVyLmFuaW1hdGluZyAmJiAhcGFyYW1zLmNzc01vZGUpIHtcbiAgICBzd2lwZXIuZnJlZU1vZGUub25Ub3VjaFN0YXJ0KCk7XG4gIH1cbiAgc3dpcGVyLmVtaXQoJ3RvdWNoU3RhcnQnLCBlKTtcbn1cblxuZnVuY3Rpb24gb25Ub3VjaE1vdmUoZXZlbnQpIHtcbiAgY29uc3QgZG9jdW1lbnQgPSBnZXREb2N1bWVudCgpO1xuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBjb25zdCBkYXRhID0gc3dpcGVyLnRvdWNoRXZlbnRzRGF0YTtcbiAgY29uc3Qge1xuICAgIHBhcmFtcyxcbiAgICB0b3VjaGVzLFxuICAgIHJ0bFRyYW5zbGF0ZTogcnRsLFxuICAgIGVuYWJsZWRcbiAgfSA9IHN3aXBlcjtcbiAgaWYgKCFlbmFibGVkKSByZXR1cm47XG4gIGlmICghcGFyYW1zLnNpbXVsYXRlVG91Y2ggJiYgZXZlbnQucG9pbnRlclR5cGUgPT09ICdtb3VzZScpIHJldHVybjtcbiAgbGV0IGUgPSBldmVudDtcbiAgaWYgKGUub3JpZ2luYWxFdmVudCkgZSA9IGUub3JpZ2luYWxFdmVudDtcbiAgaWYgKGUudHlwZSA9PT0gJ3BvaW50ZXJtb3ZlJykge1xuICAgIGlmIChkYXRhLnRvdWNoSWQgIT09IG51bGwpIHJldHVybjsgLy8gcmV0dXJuIGZyb20gcG9pbnRlciBpZiB3ZSB1c2UgdG91Y2hcbiAgICBjb25zdCBpZCA9IGUucG9pbnRlcklkO1xuICAgIGlmIChpZCAhPT0gZGF0YS5wb2ludGVySWQpIHJldHVybjtcbiAgfVxuICBsZXQgdGFyZ2V0VG91Y2g7XG4gIGlmIChlLnR5cGUgPT09ICd0b3VjaG1vdmUnKSB7XG4gICAgdGFyZ2V0VG91Y2ggPSBbLi4uZS5jaGFuZ2VkVG91Y2hlc10uZmluZCh0ID0+IHQuaWRlbnRpZmllciA9PT0gZGF0YS50b3VjaElkKTtcbiAgICBpZiAoIXRhcmdldFRvdWNoIHx8IHRhcmdldFRvdWNoLmlkZW50aWZpZXIgIT09IGRhdGEudG91Y2hJZCkgcmV0dXJuO1xuICB9IGVsc2Uge1xuICAgIHRhcmdldFRvdWNoID0gZTtcbiAgfVxuICBpZiAoIWRhdGEuaXNUb3VjaGVkKSB7XG4gICAgaWYgKGRhdGEuc3RhcnRNb3ZpbmcgJiYgZGF0YS5pc1Njcm9sbGluZykge1xuICAgICAgc3dpcGVyLmVtaXQoJ3RvdWNoTW92ZU9wcG9zaXRlJywgZSk7XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBwYWdlWCA9IHRhcmdldFRvdWNoLnBhZ2VYO1xuICBjb25zdCBwYWdlWSA9IHRhcmdldFRvdWNoLnBhZ2VZO1xuICBpZiAoZS5wcmV2ZW50ZWRCeU5lc3RlZFN3aXBlcikge1xuICAgIHRvdWNoZXMuc3RhcnRYID0gcGFnZVg7XG4gICAgdG91Y2hlcy5zdGFydFkgPSBwYWdlWTtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKCFzd2lwZXIuYWxsb3dUb3VjaE1vdmUpIHtcbiAgICBpZiAoIWUudGFyZ2V0Lm1hdGNoZXMoZGF0YS5mb2N1c2FibGVFbGVtZW50cykpIHtcbiAgICAgIHN3aXBlci5hbGxvd0NsaWNrID0gZmFsc2U7XG4gICAgfVxuICAgIGlmIChkYXRhLmlzVG91Y2hlZCkge1xuICAgICAgT2JqZWN0LmFzc2lnbih0b3VjaGVzLCB7XG4gICAgICAgIHN0YXJ0WDogcGFnZVgsXG4gICAgICAgIHN0YXJ0WTogcGFnZVksXG4gICAgICAgIGN1cnJlbnRYOiBwYWdlWCxcbiAgICAgICAgY3VycmVudFk6IHBhZ2VZXG4gICAgICB9KTtcbiAgICAgIGRhdGEudG91Y2hTdGFydFRpbWUgPSBub3coKTtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChwYXJhbXMudG91Y2hSZWxlYXNlT25FZGdlcyAmJiAhcGFyYW1zLmxvb3ApIHtcbiAgICBpZiAoc3dpcGVyLmlzVmVydGljYWwoKSkge1xuICAgICAgLy8gVmVydGljYWxcbiAgICAgIGlmIChwYWdlWSA8IHRvdWNoZXMuc3RhcnRZICYmIHN3aXBlci50cmFuc2xhdGUgPD0gc3dpcGVyLm1heFRyYW5zbGF0ZSgpIHx8IHBhZ2VZID4gdG91Y2hlcy5zdGFydFkgJiYgc3dpcGVyLnRyYW5zbGF0ZSA+PSBzd2lwZXIubWluVHJhbnNsYXRlKCkpIHtcbiAgICAgICAgZGF0YS5pc1RvdWNoZWQgPSBmYWxzZTtcbiAgICAgICAgZGF0YS5pc01vdmVkID0gZmFsc2U7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHJ0bCAmJiAocGFnZVggPiB0b3VjaGVzLnN0YXJ0WCAmJiAtc3dpcGVyLnRyYW5zbGF0ZSA8PSBzd2lwZXIubWF4VHJhbnNsYXRlKCkgfHwgcGFnZVggPCB0b3VjaGVzLnN0YXJ0WCAmJiAtc3dpcGVyLnRyYW5zbGF0ZSA+PSBzd2lwZXIubWluVHJhbnNsYXRlKCkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmICghcnRsICYmIChwYWdlWCA8IHRvdWNoZXMuc3RhcnRYICYmIHN3aXBlci50cmFuc2xhdGUgPD0gc3dpcGVyLm1heFRyYW5zbGF0ZSgpIHx8IHBhZ2VYID4gdG91Y2hlcy5zdGFydFggJiYgc3dpcGVyLnRyYW5zbGF0ZSA+PSBzd2lwZXIubWluVHJhbnNsYXRlKCkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG4gIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ICYmIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQubWF0Y2hlcyhkYXRhLmZvY3VzYWJsZUVsZW1lbnRzKSAmJiBkb2N1bWVudC5hY3RpdmVFbGVtZW50ICE9PSBlLnRhcmdldCAmJiBlLnBvaW50ZXJUeXBlICE9PSAnbW91c2UnKSB7XG4gICAgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5ibHVyKCk7XG4gIH1cbiAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpIHtcbiAgICBpZiAoZS50YXJnZXQgPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgJiYgZS50YXJnZXQubWF0Y2hlcyhkYXRhLmZvY3VzYWJsZUVsZW1lbnRzKSkge1xuICAgICAgZGF0YS5pc01vdmVkID0gdHJ1ZTtcbiAgICAgIHN3aXBlci5hbGxvd0NsaWNrID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG4gIGlmIChkYXRhLmFsbG93VG91Y2hDYWxsYmFja3MpIHtcbiAgICBzd2lwZXIuZW1pdCgndG91Y2hNb3ZlJywgZSk7XG4gIH1cbiAgdG91Y2hlcy5wcmV2aW91c1ggPSB0b3VjaGVzLmN1cnJlbnRYO1xuICB0b3VjaGVzLnByZX
9974Zpb3VzWSA9IHRvdWNoZXMuY3VycmVudFk7XG4gIHRvdWNoZXMuY3VycmVudFggPSBwYWdlWDtcbiAgdG91Y2hlcy5jdXJyZW50WSA9IHBhZ2VZO1xuICBjb25zdCBkaWZmWCA9IHRvdWNoZXMuY3VycmVudFggLSB0b3VjaGVzLnN0YXJ0WDtcbiAgY29uc3QgZGlmZlkgPSB0b3VjaGVzLmN1cnJlbnRZIC0gdG91Y2hlcy5zdGFydFk7XG4gIGlmIChzd2lwZXIucGFyYW1zLnRocmVzaG9sZCAmJiBNYXRoLnNxcnQoZGlmZlggKiogMiArIGRpZmZZICoqIDIpIDwgc3dpcGVyLnBhcmFtcy50aHJlc2hvbGQpIHJldHVybjtcbiAgaWYgKHR5cGVvZiBkYXRhLmlzU2Nyb2xsaW5nID09PSAndW5kZWZpbmVkJykge1xuICAgIGxldCB0b3VjaEFuZ2xlO1xuICAgIGlmIChzd2lwZXIuaXNIb3Jpem9udGFsKCkgJiYgdG91Y2hlcy5jdXJyZW50WSA9PT0gdG91Y2hlcy5zdGFydFkgfHwgc3dpcGVyLmlzVmVydGljYWwoKSAmJiB0b3VjaGVzLmN1cnJlbnRYID09PSB0b3VjaGVzLnN0YXJ0WCkge1xuICAgICAgZGF0YS5pc1Njcm9sbGluZyA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgIGlmIChkaWZmWCAqIGRpZmZYICsgZGlmZlkgKiBkaWZmWSA+PSAyNSkge1xuICAgICAgICB0b3VjaEFuZ2xlID0gTWF0aC5hdGFuMihNYXRoLmFicyhkaWZmWSksIE1hdGguYWJzKGRpZmZYKSkgKiAxODAgLyBNYXRoLlBJO1xuICAgICAgICBkYXRhLmlzU2Nyb2xsaW5nID0gc3dpcGVyLmlzSG9yaXpvbnRhbCgpID8gdG91Y2hBbmdsZSA+IHBhcmFtcy50b3VjaEFuZ2xlIDogOTAgLSB0b3VjaEFuZ2xlID4gcGFyYW1zLnRvdWNoQW5nbGU7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmIChkYXRhLmlzU2Nyb2xsaW5nKSB7XG4gICAgc3dpcGVyLmVtaXQoJ3RvdWNoTW92ZU9wcG9zaXRlJywgZSk7XG4gIH1cbiAgaWYgKHR5cGVvZiBkYXRhLnN0YXJ0TW92aW5nID09PSAndW5kZWZpbmVkJykge1xuICAgIGlmICh0b3VjaGVzLmN1cnJlbnRYICE9PSB0b3VjaGVzLnN0YXJ0WCB8fCB0b3VjaGVzLmN1cnJlbnRZICE9PSB0b3VjaGVzLnN0YXJ0WSkge1xuICAgICAgZGF0YS5zdGFydE1vdmluZyA9IHRydWU7XG4gICAgfVxuICB9XG4gIGlmIChkYXRhLmlzU2Nyb2xsaW5nIHx8IGUudHlwZSA9PT0gJ3RvdWNobW92ZScgJiYgZGF0YS5wcmV2ZW50VG91Y2hNb3ZlRnJvbVBvaW50ZXJNb3ZlKSB7XG4gICAgZGF0YS5pc1RvdWNoZWQgPSBmYWxzZTtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKCFkYXRhLnN0YXJ0TW92aW5nKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHN3aXBlci5hbGxvd0NsaWNrID0gZmFsc2U7XG4gIGlmICghcGFyYW1zLmNzc01vZGUgJiYgZS5jYW5jZWxhYmxlKSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG4gIGlmIChwYXJhbXMudG91Y2hNb3ZlU3RvcFByb3BhZ2F0aW9uICYmICFwYXJhbXMubmVzdGVkKSB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuICBsZXQgZGlmZiA9IHN3aXBlci5pc0hvcml6b250YWwoKSA/IGRpZmZYIDogZGlmZlk7XG4gIGxldCB0b3VjaGVzRGlmZiA9IHN3aXBlci5pc0hvcml6b250YWwoKSA/IHRvdWNoZXMuY3VycmVudFggLSB0b3VjaGVzLnByZXZpb3VzWCA6IHRvdWNoZXMuY3VycmVudFkgLSB0b3VjaGVzLnByZXZpb3VzWTtcbiAgaWYgKHBhcmFtcy5vbmVXYXlNb3ZlbWVudCkge1xuICAgIGRpZmYgPSBNYXRoLmFicyhkaWZmKSAqIChydGwgPyAxIDogLTEpO1xuICAgIHRvdWNoZXNEaWZmID0gTWF0aC5hYnModG91Y2hlc0RpZmYpICogKHJ0bCA/IDEgOiAtMSk7XG4gIH1cbiAgdG91Y2hlcy5kaWZmID0gZGlmZjtcbiAgZGlmZiAqPSBwYXJhbXMudG91Y2hSYXRpbztcbiAgaWYgKHJ0bCkge1xuICAgIGRpZmYgPSAtZGlmZjtcbiAgICB0b3VjaGVzRGlmZiA9IC10b3VjaGVzRGlmZjtcbiAgfVxuICBjb25zdCBwcmV2VG91Y2hlc0RpcmVjdGlvbiA9IHN3aXBlci50b3VjaGVzRGlyZWN0aW9uO1xuICBzd2lwZXIuc3dpcGVEaXJlY3Rpb24gPSBkaWZmID4gMCA/ICdwcmV2JyA6ICduZXh0JztcbiAgc3dpcGVyLnRvdWNoZXNEaXJlY3Rpb24gPSB0b3VjaGVzRGlmZiA+IDAgPyAncHJldicgOiAnbmV4dCc7XG4gIGNvbnN0IGlzTG9vcCA9IHN3aXBlci5wYXJhbXMubG9vcCAmJiAhcGFyYW1zLmNzc01vZGU7XG4gIGNvbnN0IGFsbG93TG9vcEZpeCA9IHN3aXBlci50b3VjaGVzRGlyZWN0aW9uID09PSAnbmV4dCcgJiYgc3dpcGVyLmFsbG93U2xpZGVOZXh0IHx8IHN3aXBlci50b3VjaGVzRGlyZWN0aW9uID09PSAncHJldicgJiYgc3dpcGVyLmFsbG93U2xpZGVQcmV2O1xuICBpZiAoIWRhdGEuaXNNb3ZlZCkge1xuICAgIGlmIChpc0xvb3AgJiYgYWxsb3dMb29wRml4KSB7XG4gICAgICBzd2lwZXIubG9vcEZpeCh7XG4gICAgICAgIGRpcmVjdGlvbjogc3dpcGVyLnN3aXBlRGlyZWN0aW9uXG4gICAgICB9KTtcbiAgICB9XG4gICAgZGF0YS5zdGFydFRyYW5zbGF0ZSA9IHN3aXBlci5nZXRUcmFuc2xhdGUoKTtcbiAgICBzd2lwZXIuc2V0VHJhbnNpdGlvbigwKTtcbiAgICBpZiAoc3dpcGVyLmFuaW1hdGluZykge1xuICAgICAgY29uc3QgZXZ0ID0gbmV3IHdpbmRvdy5DdXN0b21FdmVudCgndHJhbnNpdGlvbmVuZCcsIHtcbiAgICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgICAgY2FuY2VsYWJsZTogdHJ1ZSxcbiAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgYnlTd2lwZXJUb3VjaE1vdmU6IHRydWVcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBzd2lwZXIud3JhcHBlckVsLmRpc3BhdGNoRXZlbnQoZXZ0KTtcbiAgICB9XG4gICAgZGF0YS5hbGxvd01vbWVudHVtQm91bmNlID0gZmFsc2U7XG4gICAgLy8gR3JhYiBDdXJzb3JcbiAgICBpZiAocGFyYW1zLmdyYWJDdXJzb3IgJiYgKHN3aXBlci5hbGxvd1NsaWRlTmV4dCA9PT0gdHJ1ZSB8fCBzd2lwZXIuYWxsb3dTbGlkZVByZXYgPT09IHRydWUpKSB7XG4gICAgICBzd2lwZXIuc2V0R3JhYkN1cnNvcih0cnVlKTtcbiAgICB9XG4gICAgc3dpcGVyLmVtaXQoJ3NsaWRlckZpcnN0TW92ZScsIGUpO1xuICB9XG4gIGxldCBsb29wRml4ZWQ7XG4gIG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICBpZiAocGFyYW1zLl9sb29wU3dhcFJlc2V0ICE9PSBmYWxzZSAmJiBkYXRhLmlzTW92ZWQgJiYgZGF0YS5hbGxvd1RocmVzaG9sZE1vdmUgJiYgcHJldlRvdWNoZXNEaXJlY3Rpb24gIT09IHN3aXBlci50b3VjaGVzRGlyZWN0aW9uICYmIGlzTG9vcCAmJiBhbGxvd0xvb3BGaXggJiYgTWF0aC5hYnMoZGlmZikgPj0gMSkge1xuICAgIE9iamVjdC5hc3NpZ24odG91Y2hlcywge1xuICAgICAgc3RhcnRYOiBwYWdlWCxcbiAgICAgIHN0YXJ0WTogcGFnZVksXG4gICAgICBjdXJyZW50WDogcGFnZVgsXG4gICAgICBjdXJyZW50WTogcGFnZVksXG4gICAgICBzdGFydFRyYW5zbGF0ZTogZGF0YS5jdXJyZW50VHJhbnNsYXRlXG4gICAgfSk7XG4gICAgZGF0YS5sb29wU3dhcFJlc2V0ID0gdHJ1ZTtcbiAgICBkYXRhLnN0YXJ0VHJhbnNsYXRlID0gZGF0YS5jdXJyZW50VHJhbnNsYXRlO1xuICAgIHJldHVybjtcbiAgfVxuICBzd2lwZXIuZW1pdCgnc2xpZGVyTW92ZScsIGUpO1xuICBkYXRhLmlzTW92ZWQgPSB0cnVlO1xuICBkYXRhLmN1cnJlbnRUcmFuc2xhdGUgPSBkaWZmICsgZGF0YS5zdGFydFRyYW5zbGF0ZTtcbiAgbGV0IGRpc2FibGVQYXJlbnRTd2lwZXIgPSB0cnVlO1xuICBsZXQgcmVzaXN0YW5jZVJhdGlvID0gcGFyYW1zLnJlc2lzdGFuY2VSYXRpbztcbiAgaWYgKHBhcmFtcy50b3VjaFJlbGVhc2VPbkVkZ2VzKSB7XG4gICAgcmVzaXN0YW5jZVJhdGlvID0gMDtcbiAgfVxuICBpZiAoZGlmZiA+IDApIHtcbiAgICBpZiAoaXNMb29wICYmIGFsbG93TG9vcEZpeCAmJiAhbG9vcEZpeGVkICYmIGRhdGEuYWxsb3dUaHJlc2hvbGRNb3ZlICYmIGRhdGEuY3VycmVudFRyYW5zbGF0ZSA+IChwYXJhbXMuY2VudGVyZWRTbGlkZXMgPyBzd2lwZXIubWluVHJhbnNsYXRlKCkgLSBzd2lwZXIuc2xpZGVzU2l6ZXNHcmlkW3N3aXBlci5hY3RpdmVJbmRleCArIDFdIC0gKHBhcmFtcy5zbGlkZXNQZXJWaWV3ICE9PSAnYXV0bycgJiYgc3dpcGVyLnNsaWRlcy5sZW5ndGggLSBwYXJhbXMuc2xpZGVzUGVyVmlldyA+PSAyID8gc3dpcGVyLnNsaWRlc1NpemVzR3JpZFtzd2lwZXIuYWN0aXZlSW5kZXggKyAxXSArIHN3aXBlci5wYXJhbXMuc3BhY2VCZXR3ZWVuIDogMCkgLSBzd2lwZXIucGFyYW1zLnNwYWNlQmV0d2VlbiA6IHN3aXBlci5taW5UcmFuc2xhdGUoKSkpIHtcbiAgICAgIHN3aXBlci5sb29wRml4KHtcbiAgICAgICAgZGlyZWN0aW9uOiAncHJldicsXG4gICAgICAgI
9974HNldFRyYW5zbGF0ZTogdHJ1ZSxcbiAgICAgICAgYWN0aXZlU2xpZGVJbmRleDogMFxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChkYXRhLmN1cnJlbnRUcmFuc2xhdGUgPiBzd2lwZXIubWluVHJhbnNsYXRlKCkpIHtcbiAgICAgIGRpc2FibGVQYXJlbnRTd2lwZXIgPSBmYWxzZTtcbiAgICAgIGlmIChwYXJhbXMucmVzaXN0YW5jZSkge1xuICAgICAgICBkYXRhLmN1cnJlbnRUcmFuc2xhdGUgPSBzd2lwZXIubWluVHJhbnNsYXRlKCkgLSAxICsgKC1zd2lwZXIubWluVHJhbnNsYXRlKCkgKyBkYXRhLnN0YXJ0VHJhbnNsYXRlICsgZGlmZikgKiogcmVzaXN0YW5jZVJhdGlvO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmIChkaWZmIDwgMCkge1xuICAgIGlmIChpc0xvb3AgJiYgYWxsb3dMb29wRml4ICYmICFsb29wRml4ZWQgJiYgZGF0YS5hbGxvd1RocmVzaG9sZE1vdmUgJiYgZGF0YS5jdXJyZW50VHJhbnNsYXRlIDwgKHBhcmFtcy5jZW50ZXJlZFNsaWRlcyA/IHN3aXBlci5tYXhUcmFuc2xhdGUoKSArIHN3aXBlci5zbGlkZXNTaXplc0dyaWRbc3dpcGVyLnNsaWRlc1NpemVzR3JpZC5sZW5ndGggLSAxXSArIHN3aXBlci5wYXJhbXMuc3BhY2VCZXR3ZWVuICsgKHBhcmFtcy5zbGlkZXNQZXJWaWV3ICE9PSAnYXV0bycgJiYgc3dpcGVyLnNsaWRlcy5sZW5ndGggLSBwYXJhbXMuc2xpZGVzUGVyVmlldyA+PSAyID8gc3dpcGVyLnNsaWRlc1NpemVzR3JpZFtzd2lwZXIuc2xpZGVzU2l6ZXNHcmlkLmxlbmd0aCAtIDFdICsgc3dpcGVyLnBhcmFtcy5zcGFjZUJldHdlZW4gOiAwKSA6IHN3aXBlci5tYXhUcmFuc2xhdGUoKSkpIHtcbiAgICAgIHN3aXBlci5sb29wRml4KHtcbiAgICAgICAgZGlyZWN0aW9uOiAnbmV4dCcsXG4gICAgICAgIHNldFRyYW5zbGF0ZTogdHJ1ZSxcbiAgICAgICAgYWN0aXZlU2xpZGVJbmRleDogc3dpcGVyLnNsaWRlcy5sZW5ndGggLSAocGFyYW1zLnNsaWRlc1BlclZpZXcgPT09ICdhdXRvJyA/IHN3aXBlci5zbGlkZXNQZXJWaWV3RHluYW1pYygpIDogTWF0aC5jZWlsKHBhcnNlRmxvYXQocGFyYW1zLnNsaWRlc1BlclZpZXcsIDEwKSkpXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKGRhdGEuY3VycmVudFRyYW5zbGF0ZSA8IHN3aXBlci5tYXhUcmFuc2xhdGUoKSkge1xuICAgICAgZGlzYWJsZVBhcmVudFN3aXBlciA9IGZhbHNlO1xuICAgICAgaWYgKHBhcmFtcy5yZXNpc3RhbmNlKSB7XG4gICAgICAgIGRhdGEuY3VycmVudFRyYW5zbGF0ZSA9IHN3aXBlci5tYXhUcmFuc2xhdGUoKSArIDEgLSAoc3dpcGVyLm1heFRyYW5zbGF0ZSgpIC0gZGF0YS5zdGFydFRyYW5zbGF0ZSAtIGRpZmYpICoqIHJlc2lzdGFuY2VSYXRpbztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKGRpc2FibGVQYXJlbnRTd2lwZXIpIHtcbiAgICBlLnByZXZlbnRlZEJ5TmVzdGVkU3dpcGVyID0gdHJ1ZTtcbiAgfVxuXG4gIC8vIERpcmVjdGlvbnMgbG9ja3NcbiAgaWYgKCFzd2lwZXIuYWxsb3dTbGlkZU5leHQgJiYgc3dpcGVyLnN3aXBlRGlyZWN0aW9uID09PSAnbmV4dCcgJiYgZGF0YS5jdXJyZW50VHJhbnNsYXRlIDwgZGF0YS5zdGFydFRyYW5zbGF0ZSkge1xuICAgIGRhdGEuY3VycmVudFRyYW5zbGF0ZSA9IGRhdGEuc3RhcnRUcmFuc2xhdGU7XG4gIH1cbiAgaWYgKCFzd2lwZXIuYWxsb3dTbGlkZVByZXYgJiYgc3dpcGVyLnN3aXBlRGlyZWN0aW9uID09PSAncHJldicgJiYgZGF0YS5jdXJyZW50VHJhbnNsYXRlID4gZGF0YS5zdGFydFRyYW5zbGF0ZSkge1xuICAgIGRhdGEuY3VycmVudFRyYW5zbGF0ZSA9IGRhdGEuc3RhcnRUcmFuc2xhdGU7XG4gIH1cbiAgaWYgKCFzd2lwZXIuYWxsb3dTbGlkZVByZXYgJiYgIXN3aXBlci5hbGxvd1NsaWRlTmV4dCkge1xuICAgIGRhdGEuY3VycmVudFRyYW5zbGF0ZSA9IGRhdGEuc3RhcnRUcmFuc2xhdGU7XG4gIH1cblxuICAvLyBUaHJlc2hvbGRcbiAgaWYgKHBhcmFtcy50aHJlc2hvbGQgPiAwKSB7XG4gICAgaWYgKE1hdGguYWJzKGRpZmYpID4gcGFyYW1zLnRocmVzaG9sZCB8fCBkYXRhLmFsbG93VGhyZXNob2xkTW92ZSkge1xuICAgICAgaWYgKCFkYXRhLmFsbG93VGhyZXNob2xkTW92ZSkge1xuICAgICAgICBkYXRhLmFsbG93VGhyZXNob2xkTW92ZSA9IHRydWU7XG4gICAgICAgIHRvdWNoZXMuc3RhcnRYID0gdG91Y2hlcy5jdXJyZW50WDtcbiAgICAgICAgdG91Y2hlcy5zdGFydFkgPSB0b3VjaGVzLmN1cnJlbnRZO1xuICAgICAgICBkYXRhLmN1cnJlbnRUcmFuc2xhdGUgPSBkYXRhLnN0YXJ0VHJhbnNsYXRlO1xuICAgICAgICB0b3VjaGVzLmRpZmYgPSBzd2lwZXIuaXNIb3Jpem9udGFsKCkgPyB0b3VjaGVzLmN1cnJlbnRYIC0gdG91Y2hlcy5zdGFydFggOiB0b3VjaGVzLmN1cnJlbnRZIC0gdG91Y2hlcy5zdGFydFk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZGF0YS5jdXJyZW50VHJhbnNsYXRlID0gZGF0YS5zdGFydFRyYW5zbGF0ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbiAgaWYgKCFwYXJhbXMuZm9sbG93RmluZ2VyIHx8IHBhcmFtcy5jc3NNb2RlKSByZXR1cm47XG5cbiAgLy8gVXBkYXRlIGFjdGl2ZSBpbmRleCBpbiBmcmVlIG1vZGVcbiAgaWYgKHBhcmFtcy5mcmVlTW9kZSAmJiBwYXJhbXMuZnJlZU1vZGUuZW5hYmxlZCAmJiBzd2lwZXIuZnJlZU1vZGUgfHwgcGFyYW1zLndhdGNoU2xpZGVzUHJvZ3Jlc3MpIHtcbiAgICBzd2lwZXIudXBkYXRlQWN0aXZlSW5kZXgoKTtcbiAgICBzd2lwZXIudXBkYXRlU2xpZGVzQ2xhc3NlcygpO1xuICB9XG4gIGlmIChwYXJhbXMuZnJlZU1vZGUgJiYgcGFyYW1zLmZyZWVNb2RlLmVuYWJsZWQgJiYgc3dpcGVyLmZyZWVNb2RlKSB7XG4gICAgc3dpcGVyLmZyZWVNb2RlLm9uVG91Y2hNb3ZlKCk7XG4gIH1cbiAgLy8gVXBkYXRlIHByb2dyZXNzXG4gIHN3aXBlci51cGRhdGVQcm9ncmVzcyhkYXRhLmN1cnJlbnRUcmFuc2xhdGUpO1xuICAvLyBVcGRhdGUgdHJhbnNsYXRlXG4gIHN3aXBlci5zZXRUcmFuc2xhdGUoZGF0YS5jdXJyZW50VHJhbnNsYXRlKTtcbn1cblxuZnVuY3Rpb24gb25Ub3VjaEVuZChldmVudCkge1xuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBjb25zdCBkYXRhID0gc3dpcGVyLnRvdWNoRXZlbnRzRGF0YTtcbiAgbGV0IGUgPSBldmVudDtcbiAgaWYgKGUub3JpZ2luYWxFdmVudCkgZSA9IGUub3JpZ2luYWxFdmVudDtcbiAgbGV0IHRhcmdldFRvdWNoO1xuICBjb25zdCBpc1RvdWNoRXZlbnQgPSBlLnR5cGUgPT09ICd0b3VjaGVuZCcgfHwgZS50eXBlID09PSAndG91Y2hjYW5jZWwnO1xuICBpZiAoIWlzVG91Y2hFdmVudCkge1xuICAgIGlmIChkYXRhLnRvdWNoSWQgIT09IG51bGwpIHJldHVybjsgLy8gcmV0dXJuIGZyb20gcG9pbnRlciBpZiB3ZSB1c2UgdG91Y2hcbiAgICBpZiAoZS5wb2ludGVySWQgIT09IGRhdGEucG9pbnRlcklkKSByZXR1cm47XG4gICAgdGFyZ2V0VG91Y2ggPSBlO1xuICB9IGVsc2Uge1xuICAgIHRhcmdldFRvdWNoID0gWy4uLmUuY2hhbmdlZFRvdWNoZXNdLmZpbmQodCA9PiB0LmlkZW50aWZpZXIgPT09IGRhdGEudG91Y2hJZCk7XG4gICAgaWYgKCF0YXJnZXRUb3VjaCB8fCB0YXJnZXRUb3VjaC5pZGVudGlmaWVyICE9PSBkYXRhLnRvdWNoSWQpIHJldHVybjtcbiAgfVxuICBpZiAoWydwb2ludGVyY2FuY2VsJywgJ3BvaW50ZXJvdXQnLCAncG9pbnRlcmxlYXZlJywgJ2NvbnRleHRtZW51J10uaW5jbHVkZXMoZS50eXBlKSkge1xuICAgIGNvbnN0IHByb2NlZWQgPSBbJ3BvaW50ZXJjYW5jZWwnLCAnY29udGV4dG1lbnUnXS5pbmNsdWRlcyhlLnR5cGUpICYmIChzd2lwZXIuYnJvd3Nlci5pc1NhZmFyaSB8fCBzd2lwZXIuYnJvd3Nlci5pc1dlYlZ
9974pZXcpO1xuICAgIGlmICghcHJvY2VlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuICBkYXRhLnBvaW50ZXJJZCA9IG51bGw7XG4gIGRhdGEudG91Y2hJZCA9IG51bGw7XG4gIGNvbnN0IHtcbiAgICBwYXJhbXMsXG4gICAgdG91Y2hlcyxcbiAgICBydGxUcmFuc2xhdGU6IHJ0bCxcbiAgICBzbGlkZXNHcmlkLFxuICAgIGVuYWJsZWRcbiAgfSA9IHN3aXBlcjtcbiAgaWYgKCFlbmFibGVkKSByZXR1cm47XG4gIGlmICghcGFyYW1zLnNpbXVsYXRlVG91Y2ggJiYgZS5wb2ludGVyVHlwZSA9PT0gJ21vdXNlJykgcmV0dXJuO1xuICBpZiAoZGF0YS5hbGxvd1RvdWNoQ2FsbGJhY2tzKSB7XG4gICAgc3dpcGVyLmVtaXQoJ3RvdWNoRW5kJywgZSk7XG4gIH1cbiAgZGF0YS5hbGxvd1RvdWNoQ2FsbGJhY2tzID0gZmFsc2U7XG4gIGlmICghZGF0YS5pc1RvdWNoZWQpIHtcbiAgICBpZiAoZGF0YS5pc01vdmVkICYmIHBhcmFtcy5ncmFiQ3Vyc29yKSB7XG4gICAgICBzd2lwZXIuc2V0R3JhYkN1cnNvcihmYWxzZSk7XG4gICAgfVxuICAgIGRhdGEuaXNNb3ZlZCA9IGZhbHNlO1xuICAgIGRhdGEuc3RhcnRNb3ZpbmcgPSBmYWxzZTtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBSZXR1cm4gR3JhYiBDdXJzb3JcbiAgaWYgKHBhcmFtcy5ncmFiQ3Vyc29yICYmIGRhdGEuaXNNb3ZlZCAmJiBkYXRhLmlzVG91Y2hlZCAmJiAoc3dpcGVyLmFsbG93U2xpZGVOZXh0ID09PSB0cnVlIHx8IHN3aXBlci5hbGxvd1NsaWRlUHJldiA9PT0gdHJ1ZSkpIHtcbiAgICBzd2lwZXIuc2V0R3JhYkN1cnNvcihmYWxzZSk7XG4gIH1cblxuICAvLyBUaW1lIGRpZmZcbiAgY29uc3QgdG91Y2hFbmRUaW1lID0gbm93KCk7XG4gIGNvbnN0IHRpbWVEaWZmID0gdG91Y2hFbmRUaW1lIC0gZGF0YS50b3VjaFN0YXJ0VGltZTtcblxuICAvLyBUYXAsIGRvdWJsZVRhcCwgQ2xpY2tcbiAgaWYgKHN3aXBlci5hbGxvd0NsaWNrKSB7XG4gICAgY29uc3QgcGF0aFRyZWUgPSBlLnBhdGggfHwgZS5jb21wb3NlZFBhdGggJiYgZS5jb21wb3NlZFBhdGgoKTtcbiAgICBzd2lwZXIudXBkYXRlQ2xpY2tlZFNsaWRlKHBhdGhUcmVlICYmIHBhdGhUcmVlWzBdIHx8IGUudGFyZ2V0LCBwYXRoVHJlZSk7XG4gICAgc3dpcGVyLmVtaXQoJ3RhcCBjbGljaycsIGUpO1xuICAgIGlmICh0aW1lRGlmZiA8IDMwMCAmJiB0b3VjaEVuZFRpbWUgLSBkYXRhLmxhc3RDbGlja1RpbWUgPCAzMDApIHtcbiAgICAgIHN3aXBlci5lbWl0KCdkb3VibGVUYXAgZG91YmxlQ2xpY2snLCBlKTtcbiAgICB9XG4gIH1cbiAgZGF0YS5sYXN0Q2xpY2tUaW1lID0gbm93KCk7XG4gIG5leHRUaWNrKCgpID0+IHtcbiAgICBpZiAoIXN3aXBlci5kZXN0cm95ZWQpIHN3aXBlci5hbGxvd0NsaWNrID0gdHJ1ZTtcbiAgfSk7XG4gIGlmICghZGF0YS5pc1RvdWNoZWQgfHwgIWRhdGEuaXNNb3ZlZCB8fCAhc3dpcGVyLnN3aXBlRGlyZWN0aW9uIHx8IHRvdWNoZXMuZGlmZiA9PT0gMCAmJiAhZGF0YS5sb29wU3dhcFJlc2V0IHx8IGRhdGEuY3VycmVudFRyYW5zbGF0ZSA9PT0gZGF0YS5zdGFydFRyYW5zbGF0ZSAmJiAhZGF0YS5sb29wU3dhcFJlc2V0KSB7XG4gICAgZGF0YS5pc1RvdWNoZWQgPSBmYWxzZTtcbiAgICBkYXRhLmlzTW92ZWQgPSBmYWxzZTtcbiAgICBkYXRhLnN0YXJ0TW92aW5nID0gZmFsc2U7XG4gICAgcmV0dXJuO1xuICB9XG4gIGRhdGEuaXNUb3VjaGVkID0gZmFsc2U7XG4gIGRhdGEuaXNNb3ZlZCA9IGZhbHNlO1xuICBkYXRhLnN0YXJ0TW92aW5nID0gZmFsc2U7XG4gIGxldCBjdXJyZW50UG9zO1xuICBpZiAocGFyYW1zLmZvbGxvd0Zpbmdlcikge1xuICAgIGN1cnJlbnRQb3MgPSBydGwgPyBzd2lwZXIudHJhbnNsYXRlIDogLXN3aXBlci50cmFuc2xhdGU7XG4gIH0gZWxzZSB7XG4gICAgY3VycmVudFBvcyA9IC1kYXRhLmN1cnJlbnRUcmFuc2xhdGU7XG4gIH1cbiAgaWYgKHBhcmFtcy5jc3NNb2RlKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChwYXJhbXMuZnJlZU1vZGUgJiYgcGFyYW1zLmZyZWVNb2RlLmVuYWJsZWQpIHtcbiAgICBzd2lwZXIuZnJlZU1vZGUub25Ub3VjaEVuZCh7XG4gICAgICBjdXJyZW50UG9zXG4gICAgfSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gRmluZCBjdXJyZW50IHNsaWRlXG4gIGNvbnN0IHN3aXBlVG9MYXN0ID0gY3VycmVudFBvcyA+PSAtc3dpcGVyLm1heFRyYW5zbGF0ZSgpICYmICFzd2lwZXIucGFyYW1zLmxvb3A7XG4gIGxldCBzdG9wSW5kZXggPSAwO1xuICBsZXQgZ3JvdXBTaXplID0gc3dpcGVyLnNsaWRlc1NpemVzR3JpZFswXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzbGlkZXNHcmlkLmxlbmd0aDsgaSArPSBpIDwgcGFyYW1zLnNsaWRlc1Blckdyb3VwU2tpcCA/IDEgOiBwYXJhbXMuc2xpZGVzUGVyR3JvdXApIHtcbiAgICBjb25zdCBpbmNyZW1lbnQgPSBpIDwgcGFyYW1zLnNsaWRlc1Blckdyb3VwU2tpcCAtIDEgPyAxIDogcGFyYW1zLnNsaWRlc1Blckdyb3VwO1xuICAgIGlmICh0eXBlb2Ygc2xpZGVzR3JpZFtpICsgaW5jcmVtZW50XSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGlmIChzd2lwZVRvTGFzdCB8fCBjdXJyZW50UG9zID49IHNsaWRlc0dyaWRbaV0gJiYgY3VycmVudFBvcyA8IHNsaWRlc0dyaWRbaSArIGluY3JlbWVudF0pIHtcbiAgICAgICAgc3RvcEluZGV4ID0gaTtcbiAgICAgICAgZ3JvdXBTaXplID0gc2xpZGVzR3JpZFtpICsgaW5jcmVtZW50XSAtIHNsaWRlc0dyaWRbaV07XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChzd2lwZVRvTGFzdCB8fCBjdXJyZW50UG9zID49IHNsaWRlc0dyaWRbaV0pIHtcbiAgICAgIHN0b3BJbmRleCA9IGk7XG4gICAgICBncm91cFNpemUgPSBzbGlkZXNHcmlkW3NsaWRlc0dyaWQubGVuZ3RoIC0gMV0gLSBzbGlkZXNHcmlkW3NsaWRlc0dyaWQubGVuZ3RoIC0gMl07XG4gICAgfVxuICB9XG4gIGxldCByZXdpbmRGaXJzdEluZGV4ID0gbnVsbDtcbiAgbGV0IHJld2luZExhc3RJbmRleCA9IG51bGw7XG4gIGlmIChwYXJhbXMucmV3aW5kKSB7XG4gICAgaWYgKHN3aXBlci5pc0JlZ2lubmluZykge1xuICAgICAgcmV3aW5kTGFzdEluZGV4ID0gcGFyYW1zLnZpcnR1YWwgJiYgcGFyYW1zLnZpcnR1YWwuZW5hYmxlZCAmJiBzd2lwZXIudmlydHVhbCA/IHN3aXBlci52aXJ0dWFsLnNsaWRlcy5sZW5ndGggLSAxIDogc3dpcGVyLnNsaWRlcy5sZW5ndGggLSAxO1xuICAgIH0gZWxzZSBpZiAoc3dpcGVyLmlzRW5kKSB7XG4gICAgICByZXdpbmRGaXJzdEluZGV4ID0gMDtcbiAgICB9XG4gI
9974H1cbiAgLy8gRmluZCBjdXJyZW50IHNsaWRlIHNpemVcbiAgY29uc3QgcmF0aW8gPSAoY3VycmVudFBvcyAtIHNsaWRlc0dyaWRbc3RvcEluZGV4XSkgLyBncm91cFNpemU7XG4gIGNvbnN0IGluY3JlbWVudCA9IHN0b3BJbmRleCA8IHBhcmFtcy5zbGlkZXNQZXJHcm91cFNraXAgLSAxID8gMSA6IHBhcmFtcy5zbGlkZXNQZXJHcm91cDtcbiAgaWYgKHRpbWVEaWZmID4gcGFyYW1zLmxvbmdTd2lwZXNNcykge1xuICAgIC8vIExvbmcgdG91Y2hlc1xuICAgIGlmICghcGFyYW1zLmxvbmdTd2lwZXMpIHtcbiAgICAgIHN3aXBlci5zbGlkZVRvKHN3aXBlci5hY3RpdmVJbmRleCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChzd2lwZXIuc3dpcGVEaXJlY3Rpb24gPT09ICduZXh0Jykge1xuICAgICAgaWYgKHJhdGlvID49IHBhcmFtcy5sb25nU3dpcGVzUmF0aW8pIHN3aXBlci5zbGlkZVRvKHBhcmFtcy5yZXdpbmQgJiYgc3dpcGVyLmlzRW5kID8gcmV3aW5kRmlyc3RJbmRleCA6IHN0b3BJbmRleCArIGluY3JlbWVudCk7ZWxzZSBzd2lwZXIuc2xpZGVUbyhzdG9wSW5kZXgpO1xuICAgIH1cbiAgICBpZiAoc3dpcGVyLnN3aXBlRGlyZWN0aW9uID09PSAncHJldicpIHtcbiAgICAgIGlmIChyYXRpbyA+IDEgLSBwYXJhbXMubG9uZ1N3aXBlc1JhdGlvKSB7XG4gICAgICAgIHN3aXBlci5zbGlkZVRvKHN0b3BJbmRleCArIGluY3JlbWVudCk7XG4gICAgICB9IGVsc2UgaWYgKHJld2luZExhc3RJbmRleCAhPT0gbnVsbCAmJiByYXRpbyA8IDAgJiYgTWF0aC5hYnMocmF0aW8pID4gcGFyYW1zLmxvbmdTd2lwZXNSYXRpbykge1xuICAgICAgICBzd2lwZXIuc2xpZGVUbyhyZXdpbmRMYXN0SW5kZXgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3dpcGVyLnNsaWRlVG8oc3RvcEluZGV4KTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gU2hvcnQgc3dpcGVzXG4gICAgaWYgKCFwYXJhbXMuc2hvcnRTd2lwZXMpIHtcbiAgICAgIHN3aXBlci5zbGlkZVRvKHN3aXBlci5hY3RpdmVJbmRleCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGlzTmF2QnV0dG9uVGFyZ2V0ID0gc3dpcGVyLm5hdmlnYXRpb24gJiYgKGUudGFyZ2V0ID09PSBzd2lwZXIubmF2aWdhdGlvbi5uZXh0RWwgfHwgZS50YXJnZXQgPT09IHN3aXBlci5uYXZpZ2F0aW9uLnByZXZFbCk7XG4gICAgaWYgKCFpc05hdkJ1dHRvblRhcmdldCkge1xuICAgICAgaWYgKHN3aXBlci5zd2lwZURpcmVjdGlvbiA9PT0gJ25leHQnKSB7XG4gICAgICAgIHN3aXBlci5zbGlkZVRvKHJld2luZEZpcnN0SW5kZXggIT09IG51bGwgPyByZXdpbmRGaXJzdEluZGV4IDogc3RvcEluZGV4ICsgaW5jcmVtZW50KTtcbiAgICAgIH1cbiAgICAgIGlmIChzd2lwZXIuc3dpcGVEaXJlY3Rpb24gPT09ICdwcmV2Jykge1xuICAgICAgICBzd2lwZXIuc2xpZGVUbyhyZXdpbmRMYXN0SW5kZXggIT09IG51bGwgPyByZXdpbmRMYXN0SW5kZXggOiBzdG9wSW5kZXgpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZS50YXJnZXQgPT09IHN3aXBlci5uYXZpZ2F0aW9uLm5leHRFbCkge1xuICAgICAgc3dpcGVyLnNsaWRlVG8oc3RvcEluZGV4ICsgaW5jcmVtZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3dpcGVyLnNsaWRlVG8oc3RvcEluZGV4KTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gb25SZXNpemUoKSB7XG4gIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gIGNvbnN0IHtcbiAgICBwYXJhbXMsXG4gICAgZWxcbiAgfSA9IHN3aXBlcjtcbiAgaWYgKGVsICYmIGVsLm9mZnNldFdpZHRoID09PSAwKSByZXR1cm47XG5cbiAgLy8gQnJlYWtwb2ludHNcbiAgaWYgKHBhcmFtcy5icmVha3BvaW50cykge1xuICAgIHN3aXBlci5zZXRCcmVha3BvaW50KCk7XG4gIH1cblxuICAvLyBTYXZlIGxvY2tzXG4gIGNvbnN0IHtcbiAgICBhbGxvd1NsaWRlTmV4dCxcbiAgICBhbGxvd1NsaWRlUHJldixcbiAgICBzbmFwR3JpZFxuICB9ID0gc3dpcGVyO1xuICBjb25zdCBpc1ZpcnR1YWwgPSBzd2lwZXIudmlydHVhbCAmJiBzd2lwZXIucGFyYW1zLnZpcnR1YWwuZW5hYmxlZDtcblxuICAvLyBEaXNhYmxlIGxvY2tzIG9uIHJlc2l6ZVxuICBzd2lwZXIuYWxsb3dTbGlkZU5leHQgPSB0cnVlO1xuICBzd2lwZXIuYWxsb3dTbGlkZVByZXYgPSB0cnVlO1xuICBzd2lwZXIudXBkYXRlU2l6ZSgpO1xuICBzd2lwZXIudXBkYXRlU2xpZGVzKCk7XG4gIHN3aXBlci51cGRhdGVTbGlkZXNDbGFzc2VzKCk7XG4gIGNvbnN0IGlzVmlydHVhbExvb3AgPSBpc1ZpcnR1YWwgJiYgcGFyYW1zLmxvb3A7XG4gIGlmICgocGFyYW1zLnNsaWRlc1BlclZpZXcgPT09ICdhdXRvJyB8fCBwYXJhbXMuc2xpZGVzUGVyVmlldyA+IDEpICYmIHN3aXBlci5pc0VuZCAmJiAhc3dpcGVyLmlzQmVnaW5uaW5nICYmICFzd2lwZXIucGFyYW1zLmNlbnRlcmVkU2xpZGVzICYmICFpc1ZpcnR1YWxMb29wKSB7XG4gICAgc3dpcGVyLnNsaWRlVG8oc3dpcGVyLnNsaWRlcy5sZW5ndGggLSAxLCAwLCBmYWxzZSwgdHJ1ZSk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHN3aXBlci5wYXJhbXMubG9vcCAmJiAhaXNWaXJ0dWFsKSB7XG4gICAgICBzd2lwZXIuc2xpZGVUb0xvb3Aoc3dpcGVyLnJlYWxJbmRleCwgMCwgZmFsc2UsIHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzd2lwZXIuc2xpZGVUbyhzd2lwZXIuYWN0aXZlSW5kZXgsIDAsIGZhbHNlLCB0cnVlKTtcbiAgICB9XG4gIH1cbiAgaWYgKHN3aXBlci5hdXRvcGxheSAmJiBzd2lwZXIuYXV0b3BsYXkucnVubmluZyAmJiBzd2lwZXIuYXV0b3BsYXkucGF1c2VkKSB7XG4gICAgY2xlYXJUaW1lb3V0KHN3aXBlci5hdXRvcGxheS5yZXNpemVUaW1lb3V0KTtcbiAgICBzd2lwZXIuYXV0b3BsYXkucmVzaXplVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHN3aXBlci5hdXRvcGxheSAmJiBzd2lwZXIuYXV0b3BsYXkucnVubmluZyAmJiBzd2lwZXIuYXV0b3BsYXkucGF1c2VkKSB7XG4gICAgICAgIHN3aXBlci5hdXRvcGxheS5yZXN1bWUoKTtcbiAgICAgIH1cbiAgICB9LCA1MDApO1xuICB9XG4gIC8vIFJldHVybiBsb2NrcyBhZnRlciByZXNpemVcbiAgc3dpcGVyLmFsbG93U2xpZGVQcmV2ID0gYWxsb3dTbGlkZVByZXY7XG4gIHN3aXBlci5hbGxvd1NsaWRlTmV4dCA9IGFsbG93U2xpZGVOZXh0O1xuICBpZiAoc3dpcGVyLnBhcmFtcy53YXRjaE92ZXJmbG93ICYmIHNuYXBHcmlkICE9PSBzd2lwZXIuc25hcEdyaWQpIHtcbiAgICBzd2lwZXIuY2hlY2tPdmVyZmxvdygpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG9uQ2xpY2soZSkge1xuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBpZiAoIXN3aXBlci5lbmFibGVkKSByZXR1cm47XG4gIGlmICghc3dpcGVyLmFsbG93Q2xpY2spIHtcbiAgICBpZiAoc3dpcGVyLnBhcmFtcy5wcmV2ZW50Q2xpY2tzKSBlLnByZXZlbn
9974REZWZhdWx0KCk7XG4gICAgaWYgKHN3aXBlci5wYXJhbXMucHJldmVudENsaWNrc1Byb3BhZ2F0aW9uICYmIHN3aXBlci5hbmltYXRpbmcpIHtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBvblNjcm9sbCgpIHtcbiAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgY29uc3Qge1xuICAgIHdyYXBwZXJFbCxcbiAgICBydGxUcmFuc2xhdGUsXG4gICAgZW5hYmxlZFxuICB9ID0gc3dpcGVyO1xuICBpZiAoIWVuYWJsZWQpIHJldHVybjtcbiAgc3dpcGVyLnByZXZpb3VzVHJhbnNsYXRlID0gc3dpcGVyLnRyYW5zbGF0ZTtcbiAgaWYgKHN3aXBlci5pc0hvcml6b250YWwoKSkge1xuICAgIHN3aXBlci50cmFuc2xhdGUgPSAtd3JhcHBlckVsLnNjcm9sbExlZnQ7XG4gIH0gZWxzZSB7XG4gICAgc3dpcGVyLnRyYW5zbGF0ZSA9IC13cmFwcGVyRWwuc2Nyb2xsVG9wO1xuICB9XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICBpZiAoc3dpcGVyLnRyYW5zbGF0ZSA9PT0gMCkgc3dpcGVyLnRyYW5zbGF0ZSA9IDA7XG4gIHN3aXBlci51cGRhdGVBY3RpdmVJbmRleCgpO1xuICBzd2lwZXIudXBkYXRlU2xpZGVzQ2xhc3NlcygpO1xuICBsZXQgbmV3UHJvZ3Jlc3M7XG4gIGNvbnN0IHRyYW5zbGF0ZXNEaWZmID0gc3dpcGVyLm1heFRyYW5zbGF0ZSgpIC0gc3dpcGVyLm1pblRyYW5zbGF0ZSgpO1xuICBpZiAodHJhbnNsYXRlc0RpZmYgPT09IDApIHtcbiAgICBuZXdQcm9ncmVzcyA9IDA7XG4gIH0gZWxzZSB7XG4gICAgbmV3UHJvZ3Jlc3MgPSAoc3dpcGVyLnRyYW5zbGF0ZSAtIHN3aXBlci5taW5UcmFuc2xhdGUoKSkgLyB0cmFuc2xhdGVzRGlmZjtcbiAgfVxuICBpZiAobmV3UHJvZ3Jlc3MgIT09IHN3aXBlci5wcm9ncmVzcykge1xuICAgIHN3aXBlci51cGRhdGVQcm9ncmVzcyhydGxUcmFuc2xhdGUgPyAtc3dpcGVyLnRyYW5zbGF0ZSA6IHN3aXBlci50cmFuc2xhdGUpO1xuICB9XG4gIHN3aXBlci5lbWl0KCdzZXRUcmFuc2xhdGUnLCBzd2lwZXIudHJhbnNsYXRlLCBmYWxzZSk7XG59XG5cbmZ1bmN0aW9uIG9uTG9hZChlKSB7XG4gIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gIHByb2Nlc3NMYXp5UHJlbG9hZGVyKHN3aXBlciwgZS50YXJnZXQpO1xuICBpZiAoc3dpcGVyLnBhcmFtcy5jc3NNb2RlIHx8IHN3aXBlci5wYXJhbXMuc2xpZGVzUGVyVmlldyAhPT0gJ2F1dG8nICYmICFzd2lwZXIucGFyYW1zLmF1dG9IZWlnaHQpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgc3dpcGVyLnVwZGF0ZSgpO1xufVxuXG5mdW5jdGlvbiBvbkRvY3VtZW50VG91Y2hTdGFydCgpIHtcbiAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgaWYgKHN3aXBlci5kb2N1bWVudFRvdWNoSGFuZGxlclByb2NlZWRlZCkgcmV0dXJuO1xuICBzd2lwZXIuZG9jdW1lbnRUb3VjaEhhbmRsZXJQcm9jZWVkZWQgPSB0cnVlO1xuICBpZiAoc3dpcGVyLnBhcmFtcy50b3VjaFJlbGVhc2VPbkVkZ2VzKSB7XG4gICAgc3dpcGVyLmVsLnN0eWxlLnRvdWNoQWN0aW9uID0gJ2F1dG8nO1xuICB9XG59XG5cbmNvbnN0IGV2ZW50cyA9IChzd2lwZXIsIG1ldGhvZCkgPT4ge1xuICBjb25zdCBkb2N1bWVudCA9IGdldERvY3VtZW50KCk7XG4gIGNvbnN0IHtcbiAgICBwYXJhbXMsXG4gICAgZWwsXG4gICAgd3JhcHBlckVsLFxuICAgIGRldmljZVxuICB9ID0gc3dpcGVyO1xuICBjb25zdCBjYXB0dXJlID0gISFwYXJhbXMubmVzdGVkO1xuICBjb25zdCBkb21NZXRob2QgPSBtZXRob2QgPT09ICdvbicgPyAnYWRkRXZlbnRMaXN0ZW5lcicgOiAncmVtb3ZlRXZlbnRMaXN0ZW5lcic7XG4gIGNvbnN0IHN3aXBlck1ldGhvZCA9IG1ldGhvZDtcbiAgaWYgKCFlbCB8fCB0eXBlb2YgZWwgPT09ICdzdHJpbmcnKSByZXR1cm47XG5cbiAgLy8gVG91Y2ggRXZlbnRzXG4gIGRvY3VtZW50W2RvbU1ldGhvZF0oJ3RvdWNoc3RhcnQnLCBzd2lwZXIub25Eb2N1bWVudFRvdWNoU3RhcnQsIHtcbiAgICBwYXNzaXZlOiBmYWxzZSxcbiAgICBjYXB0dXJlXG4gIH0pO1xuICBlbFtkb21NZXRob2RdKCd0b3VjaHN0YXJ0Jywgc3dpcGVyLm9uVG91Y2hTdGFydCwge1xuICAgIHBhc3NpdmU6IGZhbHNlXG4gIH0pO1xuICBlbFtkb21NZXRob2RdKCdwb2ludGVyZG93bicsIHN3aXBlci5vblRvdWNoU3RhcnQsIHtcbiAgICBwYXNzaXZlOiBmYWxzZVxuICB9KTtcbiAgZG9jdW1lbnRbZG9tTWV0aG9kXSgndG91Y2htb3ZlJywgc3dpcGVyLm9uVG91Y2hNb3ZlLCB7XG4gICAgcGFzc2l2ZTogZmFsc2UsXG4gICAgY2FwdHVyZVxuICB9KTtcbiAgZG9jdW1lbnRbZG9tTWV0aG9kXSgncG9pbnRlcm1vdmUnLCBzd2lwZXIub25Ub3VjaE1vdmUsIHtcbiAgICBwYXNzaXZlOiBmYWxzZSxcbiAgICBjYXB0dXJlXG4gIH0pO1xuICBkb2N1bWVudFtkb21NZXRob2RdKCd0b3VjaGVuZCcsIHN3aXBlci5vblRvdWNoRW5kLCB7XG4gICAgcGFzc2l2ZTogdHJ1ZVxuICB9KTtcbiAgZG9jdW1lbnRbZG9tTWV0aG9kXSgncG9pbnRlcnVwJywgc3dpcGVyLm9uVG91Y2hFbmQsIHtcbiAgICBwYXNzaXZlOiB0cnVlXG4gIH0pO1xuICBkb2N1bWVudFtkb21NZXRob2RdKCdwb2ludGVyY2FuY2VsJywgc3dpcGVyLm9uVG91Y2hFbmQsIHtcbiAgICBwYXNzaXZlOiB0cnVlXG4gIH0pO1xuICBkb2N1bWVudFtkb21NZXRob2RdKCd0b3VjaGNhbmNlbCcsIHN3aXBlci5vblRvdWNoRW5kLCB7XG4gICAgcGFzc2l2ZTogdHJ1ZVxuICB9KTtcbiAgZG9jdW1lbnRbZG9tTWV0aG9kXSgncG9pbnRlcm91dCcsIHN3aXBlci5vblRvdWNoRW5kLCB7XG4gICAgcGFzc2l2ZTogdHJ1ZVxuICB9KTtcbiAgZG9jdW1lbnRbZG9tTWV0aG9kXSgncG9pbnRlcmxlYXZlJywgc3dpcGVyLm9uVG91Y2hFbmQsIHtcbiAgICBwYXNzaXZlOiB0cnVlXG4gIH0pO1xuICBkb2N1bWVudFtkb21NZXRob2RdKCdjb250ZXh0bWVudScsIHN3aXBlci5vblRvdWNoRW5kLCB7XG4gICAgcGFzc2l2ZTogdHJ1ZVxuICB9KTtcblxuICAvLyBQcmV2ZW50IExpbmtzIENsaWNrc1xuICBpZiAocGFyYW1zLnByZXZlbnRDbGlja3MgfHwgcGFyYW1zLnByZX
9974ZlbnRDbGlja3NQcm9wYWdhdGlvbikge1xuICAgIGVsW2RvbU1ldGhvZF0oJ2NsaWNrJywgc3dpcGVyLm9uQ2xpY2ssIHRydWUpO1xuICB9XG4gIGlmIChwYXJhbXMuY3NzTW9kZSkge1xuICAgIHdyYXBwZXJFbFtkb21NZXRob2RdKCdzY3JvbGwnLCBzd2lwZXIub25TY3JvbGwpO1xuICB9XG5cbiAgLy8gUmVzaXplIGhhbmRsZXJcbiAgaWYgKHBhcmFtcy51cGRhdGVPbldpbmRvd1Jlc2l6ZSkge1xuICAgIHN3aXBlcltzd2lwZXJNZXRob2RdKGRldmljZS5pb3MgfHwgZGV2aWNlLmFuZHJvaWQgPyAncmVzaXplIG9yaWVudGF0aW9uY2hhbmdlIG9ic2VydmVyVXBkYXRlJyA6ICdyZXNpemUgb2JzZXJ2ZXJVcGRhdGUnLCBvblJlc2l6ZSwgdHJ1ZSk7XG4gIH0gZWxzZSB7XG4gICAgc3dpcGVyW3N3aXBlck1ldGhvZF0oJ29ic2VydmVyVXBkYXRlJywgb25SZXNpemUsIHRydWUpO1xuICB9XG5cbiAgLy8gSW1hZ2VzIGxvYWRlclxuICBlbFtkb21NZXRob2RdKCdsb2FkJywgc3dpcGVyLm9uTG9hZCwge1xuICAgIGNhcHR1cmU6IHRydWVcbiAgfSk7XG59O1xuZnVuY3Rpb24gYXR0YWNoRXZlbnRzKCkge1xuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBjb25zdCB7XG4gICAgcGFyYW1zXG4gIH0gPSBzd2lwZXI7XG4gIHN3aXBlci5vblRvdWNoU3RhcnQgPSBvblRvdWNoU3RhcnQuYmluZChzd2lwZXIpO1xuICBzd2lwZXIub25Ub3VjaE1vdmUgPSBvblRvdWNoTW92ZS5iaW5kKHN3aXBlcik7XG4gIHN3aXBlci5vblRvdWNoRW5kID0gb25Ub3VjaEVuZC5iaW5kKHN3aXBlcik7XG4gIHN3aXBlci5vbkRvY3VtZW50VG91Y2hTdGFydCA9IG9uRG9jdW1lbnRUb3VjaFN0YXJ0LmJpbmQoc3dpcGVyKTtcbiAgaWYgKHBhcmFtcy5jc3NNb2RlKSB7XG4gICAgc3dpcGVyLm9uU2Nyb2xsID0gb25TY3JvbGwuYmluZChzd2lwZXIpO1xuICB9XG4gIHN3aXBlci5vbkNsaWNrID0gb25DbGljay5iaW5kKHN3aXBlcik7XG4gIHN3aXBlci5vbkxvYWQgPSBvbkxvYWQuYmluZChzd2lwZXIpO1xuICBldmVudHMoc3dpcGVyLCAnb24nKTtcbn1cbmZ1bmN0aW9uIGRldGFjaEV2ZW50cygpIHtcbiAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgZXZlbnRzKHN3aXBlciwgJ29mZicpO1xufVxudmFyIGV2ZW50cyQxID0ge1xuICBhdHRhY2hFdmVudHMsXG4gIGRldGFjaEV2ZW50c1xufTtcblxuY29uc3QgaXNHcmlkRW5hYmxlZCA9IChzd2lwZXIsIHBhcmFtcykgPT4ge1xuICByZXR1cm4gc3dpcGVyLmdyaWQgJiYgcGFyYW1zLmdyaWQgJiYgcGFyYW1zLmdyaWQucm93cyA+IDE7XG59O1xuZnVuY3Rpb24gc2V0QnJlYWtwb2ludCgpIHtcbiAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgY29uc3Qge1xuICAgIHJlYWxJbmRleCxcbiAgICBpbml0aWFsaXplZCxcbiAgICBwYXJhbXMsXG4gICAgZWxcbiAgfSA9IHN3aXBlcjtcbiAgY29uc3QgYnJlYWtwb2ludHMgPSBwYXJhbXMuYnJlYWtwb2ludHM7XG4gIGlmICghYnJlYWtwb2ludHMgfHwgYnJlYWtwb2ludHMgJiYgT2JqZWN0LmtleXMoYnJlYWtwb2ludHMpLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICBjb25zdCBkb2N1bWVudCA9IGdldERvY3VtZW50KCk7XG5cbiAgLy8gR2V0IGJyZWFrcG9pbnQgZm9yIHdpbmRvdy9jb250YWluZXIgd2lkdGggYW5kIHVwZGF0ZSBwYXJhbWV0ZXJzXG4gIGNvbnN0IGJyZWFrcG9pbnRzQmFzZSA9IHBhcmFtcy5icmVha3BvaW50c0Jhc2UgPT09ICd3aW5kb3cnIHx8ICFwYXJhbXMuYnJlYWtwb2ludHNCYXNlID8gcGFyYW1zLmJyZWFrcG9pbnRzQmFzZSA6ICdjb250YWluZXInO1xuICBjb25zdCBicmVha3BvaW50Q29udGFpbmVyID0gWyd3aW5kb3cnLCAnY29udGFpbmVyJ10uaW5jbHVkZXMocGFyYW1zLmJyZWFrcG9pbnRzQmFzZSkgfHwgIXBhcmFtcy5icmVha3BvaW50c0Jhc2UgPyBzd2lwZXIuZWwgOiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHBhcmFtcy5icmVha3BvaW50c0Jhc2UpO1xuICBjb25zdCBicmVha3BvaW50ID0gc3dpcGVyLmdldEJyZWFrcG9pbnQoYnJlYWtwb2ludHMsIGJyZWFrcG9pbnRzQmFzZSwgYnJlYWtwb2ludENvbnRhaW5lcik7XG4gIGlmICghYnJlYWtwb2ludCB8fCBzd2lwZXIuY3VycmVudEJyZWFrcG9pbnQgPT09IGJyZWFrcG9pbnQpIHJldHVybjtcbiAgY29uc3QgYnJlYWtwb2ludE9ubHlQYXJhbXMgPSBicmVha3BvaW50IGluIGJyZWFrcG9pbnRzID8gYnJlYWtwb2ludHNbYnJlYWtwb2ludF0gOiB1bmRlZmluZWQ7XG4gIGNvbnN0IGJyZWFrcG9pbnRQYXJhbXMgPSBicmVha3BvaW50T25seVBhcmFtcyB8fCBzd2lwZXIub3JpZ2luYWxQYXJhbXM7XG4gIGNvbnN0IHdhc011bHRpUm93ID0gaXNHcmlkRW5hYmxlZChzd2lwZXIsIHBhcmFtcyk7XG4gIGNvbnN0IGlzTXVsdGlSb3cgPSBpc0dyaWRFbmFibGVkKHN3aXBlciwgYnJlYWtwb2ludFBhcmFtcyk7XG4gIGNvbnN0IHdhc0dyYWJDdXJzb3IgPSBzd2lwZXIucGFyYW1zLmdyYWJDdXJzb3I7XG4gIGNvbnN0IGlzR3JhYkN1cnNvciA9IGJyZWFrcG9pbnRQYXJhbXMuZ3JhYkN1cnNvcjtcbiAgY29uc3Qgd2FzRW5hYmxlZCA9IHBhcmFtcy5lbmFibGVkO1xuICBpZiAod2FzTXVsdGlSb3cgJiYgIWlzTXVsdGlSb3cpIHtcbiAgICBlbC5jbGFzc0xpc3QucmVtb3ZlKGAke3BhcmFtcy5jb250YWluZXJNb2RpZmllckNsYXNzfWdyaWRgLCBgJHtwYXJhbXMuY29udGFpbmVyTW9kaWZpZXJDbGFzc31ncmlkLWNvbHVtbmApO1xuICAgIHN3aXBlci5lbWl0Q29udGFpbmVyQ2xhc3NlcygpO1xuICB9IGVsc2UgaWYgKCF3YXNNdWx0aVJvdyAmJiBpc011bHRpUm93KSB7XG4gICAgZWwuY2xhc3NMaXN0LmFkZChgJHtwYXJhbXMuY29udGFpbmVyTW9kaWZpZXJDbGFzc31ncmlkYCk7XG4gICAgaWYgKGJyZWFrcG9pbnRQYXJhbXMuZ3JpZC5maWxsICYmIGJyZWFrcG9pbnRQYXJhbXMuZ3JpZC5maWxsID09PSAnY29sdW1uJyB8fCAhYnJlYWtwb2ludFBhcmFtcy5ncmlkLmZpbGwgJiYgcGFyYW1zLmdyaWQuZmlsbCA9PT0gJ2NvbHVtbicpIHtcbiAgICAgIGVsLmNsYXNzTGlzdC5hZGQoYCR7cGFyYW1zLmNvbnRhaW5lck1vZGlmaWVyQ2xhc3N9Z3JpZC1jb2x1bW5gKTtcbiAgICB9XG4gICAgc3dpcGVyLmVtaXRDb250YWluZXJDbGFzc2VzKCk7XG4gIH1cbiAgaWYgKHdhc0dyYWJDdXJzb3IgJiYgIWlzR3JhYkN1cnNvcikge1xuICAgIHN3aXBlci51bnNldEdyYWJDdXJzb3IoKTtcbiAgfSBlbHNlIGlmICghd2FzR3JhYkN1cnNvciAmJiBpc0dyYWJDdXJzb3IpIHtcbiAgICBzd2lwZXIuc2V0R3JhYkN1cnNvcigpO1xuICB9XG5cbiAgLy8gVG9nZ2xlIG5hdmlnYXRpb24sIHBhZ2luYXRpb24sIHNjcm9sbGJhclxuICBbJ25hdmlnYXRpb24nLCAncGFnaW5hdGlvbicsICdzY3JvbGxiYXInXS5mb3JFYWNoKHByb3AgPT4ge1xuICAgIGlmICh0eXBlb2YgYnJlYWtwb2ludFBhcmFtc1twcm9wXSA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybjtcbiAgICBjb25zdCB3YXNNb2R1bGVFbmFibGVkID0gcGFyYW1zW3Byb3BdICYmIHBhcmFtc1twcm9wXS5lbmFibGVkO1xuICAgIGNvbnN0IGlzTW9kdWxlRW5hYmxlZCA9IGJyZWFrcG9pbnRQYXJhbXNbcHJvcF0gJiYgYnJlYWtwb2ludFBhcmFtc1twcm9wXS5lbmFibGVkO1xuICAgIGlmICh3YXNNb2R1bGVFbmFibGVkICYmICFpc01vZHVsZUVuYWJsZWQpIHtcbiAgICAgIHN3aXBlcltwcm9wXS5kaXNhYmxlKCk7XG4gICAgfVxuICAgIGlmICghd2FzTW9kdWxlRW5hYmxlZCAmJiBpc01vZHVsZUVuYWJsZWQpIHtcbiAgICAgIHN3aXBlcltwcm9wXS5lbmFibGUoKTtcbiAgICB9XG4gI
9974H0pO1xuICBjb25zdCBkaXJlY3Rpb25DaGFuZ2VkID0gYnJlYWtwb2ludFBhcmFtcy5kaXJlY3Rpb24gJiYgYnJlYWtwb2ludFBhcmFtcy5kaXJlY3Rpb24gIT09IHBhcmFtcy5kaXJlY3Rpb247XG4gIGNvbnN0IG5lZWRzUmVMb29wID0gcGFyYW1zLmxvb3AgJiYgKGJyZWFrcG9pbnRQYXJhbXMuc2xpZGVzUGVyVmlldyAhPT0gcGFyYW1zLnNsaWRlc1BlclZpZXcgfHwgZGlyZWN0aW9uQ2hhbmdlZCk7XG4gIGNvbnN0IHdhc0xvb3AgPSBwYXJhbXMubG9vcDtcbiAgaWYgKGRpcmVjdGlvbkNoYW5nZWQgJiYgaW5pdGlhbGl6ZWQpIHtcbiAgICBzd2lwZXIuY2hhbmdlRGlyZWN0aW9uKCk7XG4gIH1cbiAgZXh0ZW5kKHN3aXBlci5wYXJhbXMsIGJyZWFrcG9pbnRQYXJhbXMpO1xuICBjb25zdCBpc0VuYWJsZWQgPSBzd2lwZXIucGFyYW1zLmVuYWJsZWQ7XG4gIGNvbnN0IGhhc0xvb3AgPSBzd2lwZXIucGFyYW1zLmxvb3A7XG4gIE9iamVjdC5hc3NpZ24oc3dpcGVyLCB7XG4gICAgYWxsb3dUb3VjaE1vdmU6IHN3aXBlci5wYXJhbXMuYWxsb3dUb3VjaE1vdmUsXG4gICAgYWxsb3dTbGlkZU5leHQ6IHN3aXBlci5wYXJhbXMuYWxsb3dTbGlkZU5leHQsXG4gICAgYWxsb3dTbGlkZVByZXY6IHN3aXBlci5wYXJhbXMuYWxsb3dTbGlkZVByZXZcbiAgfSk7XG4gIGlmICh3YXNFbmFibGVkICYmICFpc0VuYWJsZWQpIHtcbiAgICBzd2lwZXIuZGlzYWJsZSgpO1xuICB9IGVsc2UgaWYgKCF3YXNFbmFibGVkICYmIGlzRW5hYmxlZCkge1xuICAgIHN3aXBlci5lbmFibGUoKTtcbiAgfVxuICBzd2lwZXIuY3VycmVudEJyZWFrcG9pbnQgPSBicmVha3BvaW50O1xuICBzd2lwZXIuZW1pdCgnX2JlZm9yZUJyZWFrcG9pbnQnLCBicmVha3BvaW50UGFyYW1zKTtcbiAgaWYgKGluaXRpYWxpemVkKSB7XG4gICAgaWYgKG5lZWRzUmVMb29wKSB7XG4gICAgICBzd2lwZXIubG9vcERlc3Ryb3koKTtcbiAgICAgIHN3aXBlci5sb29wQ3JlYXRlKHJlYWxJbmRleCk7XG4gICAgICBzd2lwZXIudXBkYXRlU2xpZGVzKCk7XG4gICAgfSBlbHNlIGlmICghd2FzTG9vcCAmJiBoYXNMb29wKSB7XG4gICAgICBzd2lwZXIubG9vcENyZWF0ZShyZWFsSW5kZXgpO1xuICAgICAgc3dpcGVyLnVwZGF0ZVNsaWRlcygpO1xuICAgIH0gZWxzZSBpZiAod2FzTG9vcCAmJiAhaGFzTG9vcCkge1xuICAgICAgc3dpcGVyLmxvb3BEZXN0cm95KCk7XG4gICAgfVxuICB9XG4gIHN3aXBlci5lbWl0KCdicmVha3BvaW50JywgYnJlYWtwb2ludFBhcmFtcyk7XG59XG5cbmZ1bmN0aW9uIGdldEJyZWFrcG9pbnQoYnJlYWtwb2ludHMsIGJhc2UsIGNvbnRhaW5lckVsKSB7XG4gIGlmIChiYXNlID09PSB2b2lkIDApIHtcbiAgICBiYXNlID0gJ3dpbmRvdyc7XG4gIH1cbiAgaWYgKCFicmVha3BvaW50cyB8fCBiYXNlID09PSAnY29udGFpbmVyJyAmJiAhY29udGFpbmVyRWwpIHJldHVybiB1bmRlZmluZWQ7XG4gIGxldCBicmVha3BvaW50ID0gZmFsc2U7XG4gIGNvbnN0IHdpbmRvdyA9IGdldFdpbmRvdygpO1xuICBjb25zdCBjdXJyZW50SGVpZ2h0ID0gYmFzZSA9PT0gJ3dpbmRvdycgPyB3aW5kb3cuaW5uZXJIZWlnaHQgOiBjb250YWluZXJFbC5jbGllbnRIZWlnaHQ7XG4gIGNvbnN0IHBvaW50cyA9IE9iamVjdC5rZXlzKGJyZWFrcG9pbnRzKS5tYXAocG9pbnQgPT4ge1xuICAgIGlmICh0eXBlb2YgcG9pbnQgPT09ICdzdHJpbmcnICYmIHBvaW50LmluZGV4T2YoJ0AnKSA9PT0gMCkge1xuICAgICAgY29uc3QgbWluUmF0aW8gPSBwYXJzZUZsb2F0KHBvaW50LnN1YnN0cigxKSk7XG4gICAgICBjb25zdCB2YWx1ZSA9IGN1cnJlbnRIZWlnaHQgKiBtaW5SYXRpbztcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbHVlLFxuICAgICAgICBwb2ludFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbHVlOiBwb2ludCxcbiAgICAgIHBvaW50XG4gICAgfTtcbiAgfSk7XG4gIHBvaW50cy5zb3J0KChhLCBiKSA9PiBwYXJzZUludChhLnZhbHVlLCAxMCkgLSBwYXJzZUludChiLnZhbHVlLCAxMCkpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkgKz0gMSkge1xuICAgIGNvbnN0IHtcbiAgICAgIHBvaW50LFxuICAgICAgdmFsdWVcbiAgICB9ID0gcG9pbnRzW2ldO1xuICAgIGlmIChiYXNlID09PSAnd2luZG93Jykge1xuICAgICAgaWYgKHdpbmRvdy5tYXRjaE1lZGlhKGAobWluLXdpZHRoOiAke3ZhbHVlfXB4KWApLm1hdGNoZXMpIHtcbiAgICAgICAgYnJlYWtwb2ludCA9IHBvaW50O1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodmFsdWUgPD0gY29udGFpbmVyRWwuY2xpZW50V2lkdGgpIHtcbiAgICAgIGJyZWFrcG9pbnQgPSBwb2ludDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGJyZWFrcG9pbnQgfHwgJ21heCc7XG59XG5cbnZhciBicmVha3BvaW50cyA9IHtcbiAgc2V0QnJlYWtwb2ludCxcbiAgZ2V0QnJlYWtwb2ludFxufTtcblxuZnVuY3Rpb24gcHJlcGFyZUNsYXNzZXMoZW50cmllcywgcHJlZml4KSB7XG4gIGNvbnN0IHJlc3VsdENsYXNzZXMgPSBbXTtcbiAgZW50cmllcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIE9iamVjdC5rZXlzKGl0ZW0pLmZvckVhY2goY2xhc3NOYW1lcyA9PiB7XG4gICAgICAgIGlmIChpdGVtW2NsYXNzTmFtZXNdKSB7XG4gICAgICAgICAgcmVzdWx0Q2xhc3Nlcy5wdXNoKHByZWZpeCArIGNsYXNzTmFtZXMpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJykge1xuICAgICAgcmVzdWx0Q2xhc3Nlcy5wdXNoKHByZWZpeCArIGl0ZW0pO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHRDbGFzc2VzO1xufVxuZnVuY3Rpb24gYWRkQ2xhc3NlcygpIHtcbiAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgY29uc3Qge1xuICAgIGNsYXNzTmFtZXMsXG4gICAgcGFyYW1zLFxuICAgIHJ0bCxcbiAgICBlbCxcbiAgICBkZXZpY2VcbiAgfSA9IHN3aXBlcjtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIGNvbnN0IHN1ZmZpeGVzID0gcHJlcGFyZUNsYXNzZXMoWydpbml0aWFsaXplZCcsIHBhcmFtcy5kaXJlY3Rpb24sIHtcbiAgICAnZnJlZS1tb2RlJzogc3dpcGVyLnBhcmFtcy5mcmVlTW9kZSAmJiBwYXJhbXMuZnJlZU1vZGUuZW5hYmxlZFxuICB9LCB7XG4gICAgJ2F1dG9oZWlnaHQnOiBwYXJhbXMuYXV0b0hlaWdodFxuICB9LCB7XG4gICAgJ3J0bCc6IHJ0bFxuICB9LCB7XG4gICAgJ2dyaWQnOiBwYXJhbXMuZ3JpZCAmJiBwYXJhbXMuZ3JpZC5yb3dzID4gMVxuICB9LCB7XG4gICAgJ2dyaWQtY29sdW1uJzogcGFyYW1zLmdyaWQgJiYgcGFyYW1zLmdyaWQucm93cyA+IDEgJiYgcGFyYW1zLmdyaWQuZmlsbCA9PT0gJ2NvbHVtbidcbiAgfSwge1xuICAgICdhbmRyb2lkJzogZGV2aWNlLmFuZHJvaWRcbiAgfSwge1xuICAgICdpb3MnOiBkZXZpY2UuaW9zXG4gIH0sIHtcbiAgICAnY3NzLW1vZGUnOiBwYXJhbXMuY3NzTW9kZVxuICB9LCB7XG4gICAgJ2NlbnRlcmVkJzogcGFyYW1zLmNzc01vZGUgJiYgcGFyYW1zLmNlbnRlcmVkU2xpZGVzXG4gIH0sIHtcbiAgICAnd2F0Y2gtcHJvZ3Jlc3MnOiBwYXJhbXMud2F0Y2hTbGlkZXNQcm9ncmVzc1xuICB9XSwgcGFyYW1zLmNvbnRhaW5lck1vZGlmaWVyQ2xhc3MpO1xuICBjbGFzc05hbWVzLnB1c2goLi4uc3VmZml4ZXMpO1xuICBlbC5jbGFzc0xpc3QuYWRkKC4uLmNsYXNzTmFtZXMpO1xuICBzd2lwZXIuZW1pdENvb
9974nRhaW5lckNsYXNzZXMoKTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlQ2xhc3NlcygpIHtcbiAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgY29uc3Qge1xuICAgIGVsLFxuICAgIGNsYXNzTmFtZXNcbiAgfSA9IHN3aXBlcjtcbiAgaWYgKCFlbCB8fCB0eXBlb2YgZWwgPT09ICdzdHJpbmcnKSByZXR1cm47XG4gIGVsLmNsYXNzTGlzdC5yZW1vdmUoLi4uY2xhc3NOYW1lcyk7XG4gIHN3aXBlci5lbWl0Q29udGFpbmVyQ2xhc3NlcygpO1xufVxuXG52YXIgY2xhc3NlcyA9IHtcbiAgYWRkQ2xhc3NlcyxcbiAgcmVtb3ZlQ2xhc3Nlc1xufTtcblxuZnVuY3Rpb24gY2hlY2tPdmVyZmxvdygpIHtcbiAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgY29uc3Qge1xuICAgIGlzTG9ja2VkOiB3YXNMb2NrZWQsXG4gICAgcGFyYW1zXG4gIH0gPSBzd2lwZXI7XG4gIGNvbnN0IHtcbiAgICBzbGlkZXNPZmZzZXRCZWZvcmVcbiAgfSA9IHBhcmFtcztcbiAgaWYgKHNsaWRlc09mZnNldEJlZm9yZSkge1xuICAgIGNvbnN0IGxhc3RTbGlkZUluZGV4ID0gc3dpcGVyLnNsaWRlcy5sZW5ndGggLSAxO1xuICAgIGNvbnN0IGxhc3RTbGlkZVJpZ2h0RWRnZSA9IHN3aXBlci5zbGlkZXNHcmlkW2xhc3RTbGlkZUluZGV4XSArIHN3aXBlci5zbGlkZXNTaXplc0dyaWRbbGFzdFNsaWRlSW5kZXhdICsgc2xpZGVzT2Zmc2V0QmVmb3JlICogMjtcbiAgICBzd2lwZXIuaXNMb2NrZWQgPSBzd2lwZXIuc2l6ZSA+IGxhc3RTbGlkZVJpZ2h0RWRnZTtcbiAgfSBlbHNlIHtcbiAgICBzd2lwZXIuaXNMb2NrZWQgPSBzd2lwZXIuc25hcEdyaWQubGVuZ3RoID09PSAxO1xuICB9XG4gIGlmIChwYXJhbXMuYWxsb3dTbGlkZU5leHQgPT09IHRydWUpIHtcbiAgICBzd2lwZXIuYWxsb3dTbGlkZU5leHQgPSAhc3dpcGVyLmlzTG9ja2VkO1xuICB9XG4gIGlmIChwYXJhbXMuYWxsb3dTbGlkZVByZXYgPT09IHRydWUpIHtcbiAgICBzd2lwZXIuYWxsb3dTbGlkZVByZXYgPSAhc3dpcGVyLmlzTG9ja2VkO1xuICB9XG4gIGlmICh3YXNMb2NrZWQgJiYgd2FzTG9ja2VkICE9PSBzd2lwZXIuaXNMb2NrZWQpIHtcbiAgICBzd2lwZXIuaXNFbmQgPSBmYWxzZTtcbiAgfVxuICBpZiAod2FzTG9ja2VkICE9PSBzd2lwZXIuaXNMb2NrZWQpIHtcbiAgICBzd2lwZXIuZW1pdChzd2lwZXIuaXNMb2NrZWQgPyAnbG9jaycgOiAndW5sb2NrJyk7XG4gIH1cbn1cbnZhciBjaGVja092ZXJmbG93JDEgPSB7XG4gIGNoZWNrT3ZlcmZsb3dcbn07XG5cbnZhciBkZWZhdWx0cyA9IHtcbiAgaW5pdDogdHJ1ZSxcbiAgZGlyZWN0aW9uOiAnaG9yaXpvbnRhbCcsXG4gIG9uZVdheU1vdmVtZW50OiBmYWxzZSxcbiAgc3dpcGVyRWxlbWVudE5vZGVOYW1lOiAnU1dJUEVSLUNPTlRBSU5FUicsXG4gIHRvdWNoRXZlbnRzVGFyZ2V0OiAnd3JhcHBlcicsXG4gIGluaXRpYWxTbGlkZTogMCxcbiAgc3BlZWQ6IDMwMCxcbiAgY3NzTW9kZTogZmFsc2UsXG4gIHVwZGF0ZU9uV2luZG93UmVzaXplOiB0cnVlLFxuICByZXNpemVPYnNlcnZlcjogdHJ1ZSxcbiAgbmVzdGVkOiBmYWxzZSxcbiAgY3JlYXRlRWxlbWVudHM6IGZhbHNlLFxuICBldmVudHNQcmVmaXg6ICdzd2lwZXInLFxuICBlbmFibGVkOiB0cnVlLFxuICBmb2N1c2FibGVFbGVtZW50czogJ2lucHV0LCBzZWxlY3QsIG9wdGlvbiwgdGV4dGFyZWEsIGJ1dHRvbiwgdmlkZW8sIGxhYmVsJyxcbiAgLy8gT3ZlcnJpZGVzXG4gIHdpZHRoOiBudWxsLFxuICBoZWlnaHQ6IG51bGwsXG4gIC8vXG4gIHByZXZlbnRJbnRlcmFjdGlvbk9uVHJhbnNpdGlvbjogZmFsc2UsXG4gIC8vIHNzclxuICB1c2VyQWdlbnQ6IG51bGwsXG4gIHVybDogbnVsbCxcbiAgLy8gVG8gc3VwcG9ydCBpT1MncyBzd2lwZS10by1nby1iYWNrIGdlc3R1cmUgKHdoZW4gYmVpbmcgdXNlZCBpbi1hcHApLlxuICBlZGdlU3dpcGVEZXRlY3Rpb246IGZhbHNlLFxuICBlZGdlU3dpcGVUaHJlc2hvbGQ6IDIwLFxuICAvLyBBdXRvaGVpZ2h0XG4gIGF1dG9IZWlnaHQ6IGZhbHNlLFxuICAvLyBTZXQgd3JhcHBlciB3aWR0aFxuICBzZXRXcmFwcGVyU2l6ZTogZmFsc2UsXG4gIC8vIFZpcnR1YWwgVHJhbnNsYXRlXG4gIHZpcnR1YWxUcmFuc2xhdGU6IGZhbHNlLFxuICAvLyBFZmZlY3RzXG4gIGVmZmVjdDogJ3NsaWRlJyxcbiAgLy8gJ3NsaWRlJyBvciAnZmFkZScgb3IgJ2N1YmUnIG9yICdjb3ZlcmZsb3cnIG9yICdmbGlwJ1xuXG4gIC8vIEJyZWFrcG9pbnRzXG4gIGJyZWFrcG9pbnRzOiB1bmRlZmluZWQsXG4gIGJyZWFrcG9pbnRzQmFzZTogJ3dpbmRvdycsXG4gIC8vIFNsaWRlcyBncmlkXG4gIHNwYWNlQmV0d2VlbjogMCxcbiAgc2xpZGVzUGVyVmlldzogMSxcbiAgc2xpZGVzUGVyR3JvdXA6IDEsXG4gIHNsaWRlc1Blckdyb3VwU2tpcDogMCxcbiAgc2xpZGVzUGVyR3JvdXBBdXRvOiBmYWxzZSxcbiAgY2VudGVyZWRTbGlkZXM6IGZhbHNlLFxuICBjZW50ZXJlZFNsaWRlc0JvdW5kczogZmFsc2UsXG4gIHNsaWRlc09mZnNldEJlZm9yZTogMCxcbiAgLy8gaW4gcHhcbiAgc2xpZGVzT2Zmc2V0QWZ0ZXI6IDAsXG4gIC8vIGluIHB4XG4gIG5vcm1hbGl6ZVNsaWRlSW5kZXg6IHRydWUsXG4gIGNlbnRlckluc3VmZmljaWVudFNsaWRlczogZmFsc2UsXG4gIC8vIERpc2FibGUgc3dpcGVyIGFuZCBoaWRlIG5hdmlnYXRpb24gd2hlbiBjb250YWluZXIgbm90IG92ZXJmbG93XG4gIHdhdGNoT3ZlcmZsb3c6IHRydWUsXG4gIC8vIFJvdW5kIGxlbmd0aFxuICByb3VuZExlbmd0aHM6IGZhbHNlLFxuICAvLyBUb3VjaGVzXG4gIHRvdWNoUmF0aW86IDEsXG4gIHRvdWNoQW5nbGU6IDQ1LFxuICBzaW11bGF0ZVRvdWNoOiB0cnVlLFxuICBzaG9ydFN3aXBlczogdHJ1ZSxcbiAgbG9uZ1N3aXBlczogdHJ1ZSxcbiAgbG9uZ1N3aXBlc1JhdGlvOiAwLjUsXG4gIGxvbmdTd2lwZXNNczogMzAwLFxuICBmb2xsb3dGaW5nZXI6IHRydWUsXG4gIGFsbG93VG91Y2hNb3ZlOiB0cnVlLFxuICB0aHJlc2hvbGQ6IDUsXG4gIHRvdWNoTW92ZVN0b3BQcm9wYWdhdGlvbjogZmFsc2UsXG4gIHRvdWNoU3RhcnRQcmV2ZW50RGVmYXVsdDogdHJ1ZSxcbiAgdG91Y2hTdGFydEZvcmNlUHJldmVudERlZmF1bHQ6IGZhbHNlLFxuICB0b3VjaFJlbGVhc2VPbkVkZ2VzOiBmYWxzZSxcbiAgLy8gVW5pcXVlIE5hdmlnYXRpb24gRWxlbWVudHNcbiAgdW5pcXVlTmF2RWxlbWVudHM6IHRydWUsXG4gIC8vIFJlc2lzdGFuY2VcbiAgcmVzaXN0YW5jZTogdHJ1ZSxcbiAgcmVzaXN0YW5jZVJhdGlvOiAwLjg1LFxuICAvLyBQcm9ncmVzc1xuICB3YXRjaFNsaWRlc1Byb2dyZXNzOiBmYWxzZSxcbiAgLy8gQ3Vyc29yXG4gIGdyYWJDdXJzb3I6IGZhbHNlLFxuICAvLyBDbGlja3NcbiAgcHJldmVudENsaWNrczogdHJ1ZSxcbiAgcHJldmVudENsaWNrc1Byb3BhZ2F0aW9uOiB0cnVlLFxuICBzbGlkZVRvQ2xpY2tlZFNsaWRlOiBmYWxzZSxcbiAgLy8gbG9vcFxuICBsb29wOiBmYWxzZSxcbiAgbG9vcEFkZEJsYW5rU2xpZGVzOiB0cnVlLFxuICBsb29wQWRkaXRpb25hbFNsaWRlczogMCxcbiAgbG9vcFByZXZlbn
9974RzU2xpZGluZzogdHJ1ZSxcbiAgLy8gcmV3aW5kXG4gIHJld2luZDogZmFsc2UsXG4gIC8vIFN3aXBpbmcvbm8gc3dpcGluZ1xuICBhbGxvd1NsaWRlUHJldjogdHJ1ZSxcbiAgYWxsb3dTbGlkZU5leHQ6IHRydWUsXG4gIHN3aXBlSGFuZGxlcjogbnVsbCxcbiAgLy8gJy5zd2lwZS1oYW5kbGVyJyxcbiAgbm9Td2lwaW5nOiB0cnVlLFxuICBub1N3aXBpbmdDbGFzczogJ3N3aXBlci1uby1zd2lwaW5nJyxcbiAgbm9Td2lwaW5nU2VsZWN0b3I6IG51bGwsXG4gIC8vIFBhc3NpdmUgTGlzdGVuZXJzXG4gIHBhc3NpdmVMaXN0ZW5lcnM6IHRydWUsXG4gIG1heEJhY2tmYWNlSGlkZGVuU2xpZGVzOiAxMCxcbiAgLy8gTlNcbiAgY29udGFpbmVyTW9kaWZpZXJDbGFzczogJ3N3aXBlci0nLFxuICAvLyBORVdcbiAgc2xpZGVDbGFzczogJ3N3aXBlci1zbGlkZScsXG4gIHNsaWRlQmxhbmtDbGFzczogJ3N3aXBlci1zbGlkZS1ibGFuaycsXG4gIHNsaWRlQWN0aXZlQ2xhc3M6ICdzd2lwZXItc2xpZGUtYWN0aXZlJyxcbiAgc2xpZGVWaXNpYmxlQ2xhc3M6ICdzd2lwZXItc2xpZGUtdmlzaWJsZScsXG4gIHNsaWRlRnVsbHlWaXNpYmxlQ2xhc3M6ICdzd2lwZXItc2xpZGUtZnVsbHktdmlzaWJsZScsXG4gIHNsaWRlTmV4dENsYXNzOiAnc3dpcGVyLXNsaWRlLW5leHQnLFxuICBzbGlkZVByZXZDbGFzczogJ3N3aXBlci1zbGlkZS1wcmV2JyxcbiAgd3JhcHBlckNsYXNzOiAnc3dpcGVyLXdyYXBwZXInLFxuICBsYXp5UHJlbG9hZGVyQ2xhc3M6ICdzd2lwZXItbGF6eS1wcmVsb2FkZXInLFxuICBsYXp5UHJlbG9hZFByZXZOZXh0OiAwLFxuICAvLyBDYWxsYmFja3NcbiAgcnVuQ2FsbGJhY2tzT25Jbml0OiB0cnVlLFxuICAvLyBJbnRlcm5hbHNcbiAgX2VtaXRDbGFzc2VzOiBmYWxzZVxufTtcblxuZnVuY3Rpb24gbW9kdWxlRXh0ZW5kUGFyYW1zKHBhcmFtcywgYWxsTW9kdWxlc1BhcmFtcykge1xuICByZXR1cm4gZnVuY3Rpb24gZXh0ZW5kUGFyYW1zKG9iaikge1xuICAgIGlmIChvYmogPT09IHZvaWQgMCkge1xuICAgICAgb2JqID0ge307XG4gICAgfVxuICAgIGNvbnN0IG1vZHVsZVBhcmFtTmFtZSA9IE9iamVjdC5rZXlzKG9iailbMF07XG4gICAgY29uc3QgbW9kdWxlUGFyYW1zID0gb2JqW21vZHVsZVBhcmFtTmFtZV07XG4gICAgaWYgKHR5cGVvZiBtb2R1bGVQYXJhbXMgIT09ICdvYmplY3QnIHx8IG1vZHVsZVBhcmFtcyA9PT0gbnVsbCkge1xuICAgICAgZXh0ZW5kKGFsbE1vZHVsZXNQYXJhbXMsIG9iaik7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChwYXJhbXNbbW9kdWxlUGFyYW1OYW1lXSA9PT0gdHJ1ZSkge1xuICAgICAgcGFyYW1zW21vZHVsZVBhcmFtTmFtZV0gPSB7XG4gICAgICAgIGVuYWJsZWQ6IHRydWVcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChtb2R1bGVQYXJhbU5hbWUgPT09ICduYXZpZ2F0aW9uJyAmJiBwYXJhbXNbbW9kdWxlUGFyYW1OYW1lXSAmJiBwYXJhbXNbbW9kdWxlUGFyYW1OYW1lXS5lbmFibGVkICYmICFwYXJhbXNbbW9kdWxlUGFyYW1OYW1lXS5wcmV2RWwgJiYgIXBhcmFtc1ttb2R1bGVQYXJhbU5hbWVdLm5leHRFbCkge1xuICAgICAgcGFyYW1zW21vZHVsZVBhcmFtTmFtZV0uYXV0byA9IHRydWU7XG4gICAgfVxuICAgIGlmIChbJ3BhZ2luYXRpb24nLCAnc2Nyb2xsYmFyJ10uaW5kZXhPZihtb2R1bGVQYXJhbU5hbWUpID49IDAgJiYgcGFyYW1zW21vZHVsZVBhcmFtTmFtZV0gJiYgcGFyYW1zW21vZHVsZVBhcmFtTmFtZV0uZW5hYmxlZCAmJiAhcGFyYW1zW21vZHVsZVBhcmFtTmFtZV0uZWwpIHtcbiAgICAgIHBhcmFtc1ttb2R1bGVQYXJhbU5hbWVdLmF1dG8gPSB0cnVlO1xuICAgIH1cbiAgICBpZiAoIShtb2R1bGVQYXJhbU5hbWUgaW4gcGFyYW1zICYmICdlbmFibGVkJyBpbiBtb2R1bGVQYXJhbXMpKSB7XG4gICAgICBleHRlbmQoYWxsTW9kdWxlc1BhcmFtcywgb2JqKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBwYXJhbXNbbW9kdWxlUGFyYW1OYW1lXSA9PT0gJ29iamVjdCcgJiYgISgnZW5hYmxlZCcgaW4gcGFyYW1zW21vZHVsZVBhcmFtTmFtZV0pKSB7XG4gICAgICBwYXJhbXNbbW9kdWxlUGFyYW1OYW1lXS5lbmFibGVkID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKCFwYXJhbXNbbW9kdWxlUGFyYW1OYW1lXSkgcGFyYW1zW21vZHVsZVBhcmFtTmFtZV0gPSB7XG4gICAgICBlbmFibGVkOiBmYWxzZVxuICAgIH07XG4gICAgZXh0ZW5kKGFsbE1vZHVsZXNQYXJhbXMsIG9iaik7XG4gIH07XG59XG5cbi8qIGVzbGludCBuby1wYXJhbS1yZWFzc2lnbjogXCJvZmZcIiAqL1xuY29uc3QgcHJvdG90eXBlcyA9IHtcbiAgZXZlbnRzRW1pdHRlcixcbiAgdXBkYXRlLFxuICB0cmFuc2xhdGUsXG4gIHRyYW5zaXRpb24sXG4gIHNsaWRlLFxuICBsb29wLFxuICBncmFiQ3Vyc29yLFxuICBldmVudHM6IGV2ZW50cyQxLFxuICBicmVha3BvaW50cyxcbiAgY2hlY2tPdmVyZmxvdzogY2hlY2tPdmVyZmxvdyQxLFxuICBjbGFzc2VzXG59O1xuY29uc3QgZXh0ZW5kZWREZWZhdWx0cyA9IHt9O1xuY2xhc3MgU3dpcGVyIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgbGV0IGVsO1xuICAgIGxldCBwYXJhbXM7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBpZiAoYXJncy5sZW5ndGggPT09IDEgJiYgYXJnc1swXS5jb25zdHJ1Y3RvciAmJiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJnc1swXSkuc2xpY2UoOCwgLTEpID09PSAnT2JqZWN0Jykge1xuICAgICAgcGFyYW1zID0gYXJnc1swXTtcbiAgICB9IGVsc2Uge1xuICAgICAgW2VsLCBwYXJhbXNdID0gYXJncztcbiAgICB9XG4gICAgaWYgKCFwYXJhbXMpIHBhcmFtcyA9IHt9O1xuICAgIHBhcmFtcyA9IGV4dGVuZCh7fSwgcGFyYW1zKTtcbiAgICBpZiAoZWwgJiYgIXBhcmFtcy5lbCkgcGFyYW1zLmVsID0gZWw7XG4gICAgY29uc3QgZG9jdW1lbnQgPSBnZXREb2N1bWVudCgpO1xuICAgIGlmIChwYXJhbXMuZWwgJiYgdHlwZW9mIHBhcmFtcy5lbCA9PT0gJ3N0cmluZycgJiYgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChwYXJhbXMuZWwpLmxlbmd0aCA+IDEpIHtcbiAgICAgIGNvbnN0IHN3aXBlcnMgPSBbXTtcbiAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwocGFyYW1zLmVsKS5mb3JFYWNoKGNvbnRhaW5lckVsID0+IHtcbiAgICAgICAgY29uc3QgbmV3UGFyYW1zID0gZXh0ZW5kKHt9LCBwYXJhbXMsIHtcbiAgICAgICAgICBlbDogY29udGFpbmVyRWxcbiAgICAgICAgfSk7XG4gICAgICAgI
9974HN3aXBlcnMucHVzaChuZXcgU3dpcGVyKG5ld1BhcmFtcykpO1xuICAgICAgfSk7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc3RydWN0b3ItcmV0dXJuXG4gICAgICByZXR1cm4gc3dpcGVycztcbiAgICB9XG5cbiAgICAvLyBTd2lwZXIgSW5zdGFuY2VcbiAgICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICAgIHN3aXBlci5fX3N3aXBlcl9fID0gdHJ1ZTtcbiAgICBzd2lwZXIuc3VwcG9ydCA9IGdldFN1cHBvcnQoKTtcbiAgICBzd2lwZXIuZGV2aWNlID0gZ2V0RGV2aWNlKHtcbiAgICAgIHVzZXJBZ2VudDogcGFyYW1zLnVzZXJBZ2VudFxuICAgIH0pO1xuICAgIHN3aXBlci5icm93c2VyID0gZ2V0QnJvd3NlcigpO1xuICAgIHN3aXBlci5ldmVudHNMaXN0ZW5lcnMgPSB7fTtcbiAgICBzd2lwZXIuZXZlbnRzQW55TGlzdGVuZXJzID0gW107XG4gICAgc3dpcGVyLm1vZHVsZXMgPSBbLi4uc3dpcGVyLl9fbW9kdWxlc19fXTtcbiAgICBpZiAocGFyYW1zLm1vZHVsZXMgJiYgQXJyYXkuaXNBcnJheShwYXJhbXMubW9kdWxlcykpIHtcbiAgICAgIHN3aXBlci5tb2R1bGVzLnB1c2goLi4ucGFyYW1zLm1vZHVsZXMpO1xuICAgIH1cbiAgICBjb25zdCBhbGxNb2R1bGVzUGFyYW1zID0ge307XG4gICAgc3dpcGVyLm1vZHVsZXMuZm9yRWFjaChtb2QgPT4ge1xuICAgICAgbW9kKHtcbiAgICAgICAgcGFyYW1zLFxuICAgICAgICBzd2lwZXIsXG4gICAgICAgIGV4dGVuZFBhcmFtczogbW9kdWxlRXh0ZW5kUGFyYW1zKHBhcmFtcywgYWxsTW9kdWxlc1BhcmFtcyksXG4gICAgICAgIG9uOiBzd2lwZXIub24uYmluZChzd2lwZXIpLFxuICAgICAgICBvbmNlOiBzd2lwZXIub25jZS5iaW5kKHN3aXBlciksXG4gICAgICAgIG9mZjogc3dpcGVyLm9mZi5iaW5kKHN3aXBlciksXG4gICAgICAgIGVtaXQ6IHN3aXBlci5lbWl0LmJpbmQoc3dpcGVyKVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICAvLyBFeHRlbmQgZGVmYXVsdHMgd2l0aCBtb2R1bGVzIHBhcmFtc1xuICAgIGNvbnN0IHN3aXBlclBhcmFtcyA9IGV4dGVuZCh7fSwgZGVmYXVsdHMsIGFsbE1vZHVsZXNQYXJhbXMpO1xuXG4gICAgLy8gRXh0ZW5kIGRlZmF1bHRzIHdpdGggcGFzc2VkIHBhcmFtc1xuICAgIHN3aXBlci5wYXJhbXMgPSBleHRlbmQoe30sIHN3aXBlclBhcmFtcywgZXh0ZW5kZWREZWZhdWx0cywgcGFyYW1zKTtcbiAgICBzd2lwZXIub3JpZ2luYWxQYXJhbXMgPSBleHRlbmQoe30sIHN3aXBlci5wYXJhbXMpO1xuICAgIHN3aXBlci5wYXNzZWRQYXJhbXMgPSBleHRlbmQoe30sIHBhcmFtcyk7XG5cbiAgICAvLyBhZGQgZXZlbnQgbGlzdGVuZXJzXG4gICAgaWYgKHN3aXBlci5wYXJhbXMgJiYgc3dpcGVyLnBhcmFtcy5vbikge1xuICAgICAgT2JqZWN0LmtleXMoc3dpcGVyLnBhcmFtcy5vbikuZm9yRWFjaChldmVudE5hbWUgPT4ge1xuICAgICAgICBzd2lwZXIub24oZXZlbnROYW1lLCBzd2lwZXIucGFyYW1zLm9uW2V2ZW50TmFtZV0pO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChzd2lwZXIucGFyYW1zICYmIHN3aXBlci5wYXJhbXMub25BbnkpIHtcbiAgICAgIHN3aXBlci5vbkFueShzd2lwZXIucGFyYW1zLm9uQW55KTtcbiAgICB9XG5cbiAgICAvLyBFeHRlbmQgU3dpcGVyXG4gICAgT2JqZWN0LmFzc2lnbihzd2lwZXIsIHtcbiAgICAgIGVuYWJsZWQ6IHN3aXBlci5wYXJhbXMuZW5hYmxlZCxcbiAgICAgIGVsLFxuICAgICAgLy8gQ2xhc3Nlc1xuICAgICAgY2xhc3NOYW1lczogW10sXG4gICAgICAvLyBTbGlkZXNcbiAgICAgIHNsaWRlczogW10sXG4gICAgICBzbGlkZXNHcmlkOiBbXSxcbiAgICAgIHNuYXBHcmlkOiBbXSxcbiAgICAgIHNsaWRlc1NpemVzR3JpZDogW10sXG4gICAgICAvLyBpc0RpcmVjdGlvblxuICAgICAgaXNIb3Jpem9udGFsKCkge1xuICAgICAgICByZXR1cm4gc3dpcGVyLnBhcmFtcy5kaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJztcbiAgICAgIH0sXG4gICAgICBpc1ZlcnRpY2FsKCkge1xuICAgICAgICByZXR1cm4gc3dpcGVyLnBhcmFtcy5kaXJlY3Rpb24gPT09ICd2ZXJ0aWNhbCc7XG4gICAgICB9LFxuICAgICAgLy8gSW5kZXhlc1xuICAgICAgYWN0aXZlSW5kZXg6IDAsXG4gICAgICByZWFsSW5kZXg6IDAsXG4gICAgICAvL1xuICAgICAgaXNCZWdpbm5pbmc6IHRydWUsXG4gICAgICBpc0VuZDogZmFsc2UsXG4gICAgICAvLyBQcm9wc1xuICAgICAgdHJhbnNsYXRlOiAwLFxuICAgICAgcHJldmlvdXNUcmFuc2xhdGU6IDAsXG4gICAgICBwcm9ncmVzczogMCxcbiAgICAgIHZlbG9jaXR5OiAwLFxuICAgICAgYW5pbWF0aW5nOiBmYWxzZSxcbiAgICAgIGNzc092ZXJmbG93QWRqdXN0bWVudCgpIHtcbiAgICAgICAgLy8gUmV0dXJucyAwIHVubGVzcyBgdHJhbnNsYXRlYCBpcyA+IDIqKjIzXG4gICAgICAgIC8vIFNob3VsZCBiZSBzdWJ0cmFjdGVkIGZyb20gY3NzIHZhbHVlcyB0byBwcmV2ZW50IG92ZXJmbG93XG4gICAgICAgIHJldHVybiBNYXRoLnRydW5jKHRoaXMudHJhbnNsYXRlIC8gMiAqKiAyMykgKiAyICoqIDIzO1xuICAgICAgfSxcbiAgICAgIC8vIExvY2tzXG4gICAgICBhbGxvd1NsaWRlTmV4dDogc3dpcGVyLnBhcmFtcy5hbGxvd1NsaWRlTmV4dCxcbiAgICAgIGFsbG93U2xpZGVQcmV2OiBzd2lwZXIucGFyYW1zLmFsbG93U2xpZGVQcmV2LFxuICAgICAgLy8gVG91Y2ggRXZlbnRzXG4gICAgICB0b3VjaEV2ZW50c0RhdGE6IHtcbiAgICAgICAgaXNUb3VjaGVkOiB1bmRlZmluZWQsXG4gICAgICAgIGlzTW92ZWQ6IHVuZGVmaW5lZCxcbiAgICAgICAgYWxsb3dUb3VjaENhbGxiYWNrczogdW5kZWZpbmVkLFxuICAgICAgICB0b3VjaFN0YXJ0VGltZTogdW5kZWZpbmVkLFxuICAgICAgICBpc1Njcm9sbGluZzogdW5kZWZpbmVkLFxuICAgICAgICBjdXJyZW50VHJhbnNsYXRlOiB1bmRlZmluZWQsXG4gICAgICAgIHN0YXJ0VHJhbnNsYXRlOiB1bmRlZmluZWQsXG4gICAgICAgIGFsbG93VGhyZXNob2xkTW92ZTogdW5kZWZpbmVkLFxuICAgICAgICAvLyBGb3JtIGVsZW1lbnRzIHRvIG1hdGNoXG4gICAgICAgIGZvY3VzYWJsZUVsZW1lbnRzOiBzd2lwZXIucGFyYW1zLmZvY3VzYWJsZUVsZW1lbnRzLFxuICAgICAgICAvLyBMYXN0IGNsaWNrIHRpbWVcbiAgICAgICAgbGFzdENsaWNrVGltZTogMCxcbiAgICAgICAgY2xpY2tUaW1lb3V0OiB1bmRlZmluZWQsXG4gICAgICAgIC8vIFZlbG9jaXRpZXNcbiAgICAgICAgdmVsb2NpdGllczogW10sXG4gICAgICAgIGFsbG93TW9tZW50dW1Cb3VuY2U6IHVuZGVmaW5lZCxcbiAgICAgICAgc3RhcnRNb3Zpbmc6IHVuZGVmaW5lZCxcbiAgICAgICAgcG9pbnRlcklkOiBudWxsLFxuICAgICAgICB0b3VjaElkOi
9974BudWxsXG4gICAgICB9LFxuICAgICAgLy8gQ2xpY2tzXG4gICAgICBhbGxvd0NsaWNrOiB0cnVlLFxuICAgICAgLy8gVG91Y2hlc1xuICAgICAgYWxsb3dUb3VjaE1vdmU6IHN3aXBlci5wYXJhbXMuYWxsb3dUb3VjaE1vdmUsXG4gICAgICB0b3VjaGVzOiB7XG4gICAgICAgIHN0YXJ0WDogMCxcbiAgICAgICAgc3RhcnRZOiAwLFxuICAgICAgICBjdXJyZW50WDogMCxcbiAgICAgICAgY3VycmVudFk6IDAsXG4gICAgICAgIGRpZmY6IDBcbiAgICAgIH0sXG4gICAgICAvLyBJbWFnZXNcbiAgICAgIGltYWdlc1RvTG9hZDogW10sXG4gICAgICBpbWFnZXNMb2FkZWQ6IDBcbiAgICB9KTtcbiAgICBzd2lwZXIuZW1pdCgnX3N3aXBlcicpO1xuXG4gICAgLy8gSW5pdFxuICAgIGlmIChzd2lwZXIucGFyYW1zLmluaXQpIHtcbiAgICAgIHN3aXBlci5pbml0KCk7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIGFwcCBpbnN0YW5jZVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zdHJ1Y3Rvci1yZXR1cm5cbiAgICByZXR1cm4gc3dpcGVyO1xuICB9XG4gIGdldERpcmVjdGlvbkxhYmVsKHByb3BlcnR5KSB7XG4gICAgaWYgKHRoaXMuaXNIb3Jpem9udGFsKCkpIHtcbiAgICAgIHJldHVybiBwcm9wZXJ0eTtcbiAgICB9XG4gICAgLy8gcHJldHRpZXItaWdub3JlXG4gICAgcmV0dXJuIHtcbiAgICAgICd3aWR0aCc6ICdoZWlnaHQnLFxuICAgICAgJ21hcmdpbi10b3AnOiAnbWFyZ2luLWxlZnQnLFxuICAgICAgJ21hcmdpbi1ib3R0b20gJzogJ21hcmdpbi1yaWdodCcsXG4gICAgICAnbWFyZ2luLWxlZnQnOiAnbWFyZ2luLXRvcCcsXG4gICAgICAnbWFyZ2luLXJpZ2h0JzogJ21hcmdpbi1ib3R0b20nLFxuICAgICAgJ3BhZGRpbmctbGVmdCc6ICdwYWRkaW5nLXRvcCcsXG4gICAgICAncGFkZGluZy1yaWdodCc6ICdwYWRkaW5nLWJvdHRvbScsXG4gICAgICAnbWFyZ2luUmlnaHQnOiAnbWFyZ2luQm90dG9tJ1xuICAgIH1bcHJvcGVydHldO1xuICB9XG4gIGdldFNsaWRlSW5kZXgoc2xpZGVFbCkge1xuICAgIGNvbnN0IHtcbiAgICAgIHNsaWRlc0VsLFxuICAgICAgcGFyYW1zXG4gICAgfSA9IHRoaXM7XG4gICAgY29uc3Qgc2xpZGVzID0gZWxlbWVudENoaWxkcmVuKHNsaWRlc0VsLCBgLiR7cGFyYW1zLnNsaWRlQ2xhc3N9LCBzd2lwZXItc2xpZGVgKTtcbiAgICBjb25zdCBmaXJzdFNsaWRlSW5kZXggPSBlbGVtZW50SW5kZXgoc2xpZGVzWzBdKTtcbiAgICByZXR1cm4gZWxlbWVudEluZGV4KHNsaWRlRWwpIC0gZmlyc3RTbGlkZUluZGV4O1xuICB9XG4gIGdldFNsaWRlSW5kZXhCeURhdGEoaW5kZXgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTbGlkZUluZGV4KHRoaXMuc2xpZGVzLmZpbmQoc2xpZGVFbCA9PiBzbGlkZUVsLmdldEF0dHJpYnV0ZSgnZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgnKSAqIDEgPT09IGluZGV4KSk7XG4gIH1cbiAgZ2V0U2xpZGVJbmRleFdoZW5HcmlkKGluZGV4KSB7XG4gICAgaWYgKHRoaXMuZ3JpZCAmJiB0aGlzLnBhcmFtcy5ncmlkICYmIHRoaXMucGFyYW1zLmdyaWQucm93cyA+IDEpIHtcbiAgICAgIGlmICh0aGlzLnBhcmFtcy5ncmlkLmZpbGwgPT09ICdjb2x1bW4nKSB7XG4gICAgICAgIGluZGV4ID0gTWF0aC5mbG9vcihpbmRleCAvIHRoaXMucGFyYW1zLmdyaWQucm93cyk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMucGFyYW1zLmdyaWQuZmlsbCA9PT0gJ3JvdycpIHtcbiAgICAgICAgaW5kZXggPSBpbmRleCAlIE1hdGguY2VpbCh0aGlzLnNsaWRlcy5sZW5ndGggLyB0aGlzLnBhcmFtcy5ncmlkLnJvd3MpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cbiAgcmVjYWxjU2xpZGVzKCkge1xuICAgIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gICAgY29uc3Qge1xuICAgICAgc2xpZGVzRWwsXG4gICAgICBwYXJhbXNcbiAgICB9ID0gc3dpcGVyO1xuICAgIHN3aXBlci5zbGlkZXMgPSBlbGVtZW50Q2hpbGRyZW4oc2xpZGVzRWwsIGAuJHtwYXJhbXMuc2xpZGVDbGFzc30sIHN3aXBlci1zbGlkZWApO1xuICB9XG4gIGVuYWJsZSgpIHtcbiAgICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICAgIGlmIChzd2lwZXIuZW5hYmxlZCkgcmV0dXJuO1xuICAgIHN3aXBlci5lbmFibGVkID0gdHJ1ZTtcbiAgICBpZiAoc3dpcGVyLnBhcmFtcy5ncmFiQ3Vyc29yKSB7XG4gICAgICBzd2lwZXIuc2V0R3JhYkN1cnNvcigpO1xuICAgIH1cbiAgICBzd2lwZXIuZW1pdCgnZW5hYmxlJyk7XG4gIH1cbiAgZGlzYWJsZSgpIHtcbiAgICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICAgIGlmICghc3dpcGVyLmVuYWJsZWQpIHJldHVybjtcbiAgICBzd2lwZXIuZW5hYmxlZCA9IGZhbHNlO1xuICAgIGlmIChzd2lwZXIucGFyYW1zLmdyYWJDdXJzb3IpIHtcbiAgICAgIHN3aXBlci51bnNldEdyYWJDdXJzb3IoKTtcbiAgICB9XG4gICAgc3dpcGVyLmVtaXQoJ2Rpc2FibGUnKTtcbiAgfVxuICBzZXRQcm9ncmVzcyhwcm9ncmVzcywgc3BlZWQpIHtcbiAgICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICAgIHByb2dyZXNzID0gTWF0aC5taW4oTWF0aC5tYXgocHJvZ3Jlc3MsIDApLCAxKTtcbiAgICBjb25zdCBtaW4gPSBzd2lwZXIubWluVHJhbnNsYXRlKCk7XG4gICAgY29uc3QgbWF4ID0gc3dpcGVyLm1heFRyYW5zbGF0ZSgpO1xuICAgIGNvbnN0IGN1cnJlbnQgPSAobWF4IC0gbWluKSAqIHByb2dyZXNzICsgbWluO1xuICAgIHN3aXBlci50cmFuc2xhdGVUbyhjdXJyZW50LCB0eXBlb2Ygc3BlZWQgPT09ICd1bmRlZmluZWQnID8gMCA6IHNwZWVkKTtcbiAgICBzd2lwZXIudXBkYXRlQWN0aXZlSW5kZXgoKTtcbiAgICBzd2lwZXIudXBkYXRlU2xpZGVzQ2xhc3NlcygpO1xuICB9XG4gIGVtaXRDb250YWluZXJDbGFzc2VzKCkge1xuICAgIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gICAgaWYgKCFzd2lwZXIucGFyYW1zLl9lbWl0Q2xhc3NlcyB8fCAhc3dpcGVyLmVsKSByZXR1cm47XG4gICAgY29uc3QgY2xzID0gc3dpcGVyLmVsLmNsYXNzTmFtZS5zcGxpdCgnICcpLmZpbHRlcihjbGFzc05hbWUgPT4ge1xuICAgICAgcmV0dXJuIGNsYXNzTmFtZS5pbmRleE9mKCdzd2lwZXInKSA9PT0gMCB8fCBjbGFzc05hbWUuaW5kZXhPZihzd2lwZXIucGFyYW1zLmNvbnRhaW5lck1vZGlmaWVyQ2xhc3MpID09PSAwO1xuICAgIH0pO1xuICAgIHN3aXBlci5lbWl0KCdfY29udGFpbmVyQ2xhc3NlcycsIGNscy5qb2luKCcgJykpO1xuICB9XG4gIGdldFNsaWRlQ2xhc3NlcyhzbGlkZUVsKSB7XG4gICAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgICBpZiAoc3dpcGVyLmRlc3Ryb3llZCkgcmV0dXJuICcnO1xuICAgIHJldHVybi
9974BzbGlkZUVsLmNsYXNzTmFtZS5zcGxpdCgnICcpLmZpbHRlcihjbGFzc05hbWUgPT4ge1xuICAgICAgcmV0dXJuIGNsYXNzTmFtZS5pbmRleE9mKCdzd2lwZXItc2xpZGUnKSA9PT0gMCB8fCBjbGFzc05hbWUuaW5kZXhPZihzd2lwZXIucGFyYW1zLnNsaWRlQ2xhc3MpID09PSAwO1xuICAgIH0pLmpvaW4oJyAnKTtcbiAgfVxuICBlbWl0U2xpZGVzQ2xhc3NlcygpIHtcbiAgICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICAgIGlmICghc3dpcGVyLnBhcmFtcy5fZW1pdENsYXNzZXMgfHwgIXN3aXBlci5lbCkgcmV0dXJuO1xuICAgIGNvbnN0IHVwZGF0ZXMgPSBbXTtcbiAgICBzd2lwZXIuc2xpZGVzLmZvckVhY2goc2xpZGVFbCA9PiB7XG4gICAgICBjb25zdCBjbGFzc05hbWVzID0gc3dpcGVyLmdldFNsaWRlQ2xhc3NlcyhzbGlkZUVsKTtcbiAgICAgIHVwZGF0ZXMucHVzaCh7XG4gICAgICAgIHNsaWRlRWwsXG4gICAgICAgIGNsYXNzTmFtZXNcbiAgICAgIH0pO1xuICAgICAgc3dpcGVyLmVtaXQoJ19zbGlkZUNsYXNzJywgc2xpZGVFbCwgY2xhc3NOYW1lcyk7XG4gICAgfSk7XG4gICAgc3dpcGVyLmVtaXQoJ19zbGlkZUNsYXNzZXMnLCB1cGRhdGVzKTtcbiAgfVxuICBzbGlkZXNQZXJWaWV3RHluYW1pYyh2aWV3LCBleGFjdCkge1xuICAgIGlmICh2aWV3ID09PSB2b2lkIDApIHtcbiAgICAgIHZpZXcgPSAnY3VycmVudCc7XG4gICAgfVxuICAgIGlmIChleGFjdCA9PT0gdm9pZCAwKSB7XG4gICAgICBleGFjdCA9IGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICAgIGNvbnN0IHtcbiAgICAgIHBhcmFtcyxcbiAgICAgIHNsaWRlcyxcbiAgICAgIHNsaWRlc0dyaWQsXG4gICAgICBzbGlkZXNTaXplc0dyaWQsXG4gICAgICBzaXplOiBzd2lwZXJTaXplLFxuICAgICAgYWN0aXZlSW5kZXhcbiAgICB9ID0gc3dpcGVyO1xuICAgIGxldCBzcHYgPSAxO1xuICAgIGlmICh0eXBlb2YgcGFyYW1zLnNsaWRlc1BlclZpZXcgPT09ICdudW1iZXInKSByZXR1cm4gcGFyYW1zLnNsaWRlc1BlclZpZXc7XG4gICAgaWYgKHBhcmFtcy5jZW50ZXJlZFNsaWRlcykge1xuICAgICAgbGV0IHNsaWRlU2l6ZSA9IHNsaWRlc1thY3RpdmVJbmRleF0gPyBNYXRoLmNlaWwoc2xpZGVzW2FjdGl2ZUluZGV4XS5zd2lwZXJTbGlkZVNpemUpIDogMDtcbiAgICAgIGxldCBicmVha0xvb3A7XG4gICAgICBmb3IgKGxldCBpID0gYWN0aXZlSW5kZXggKyAxOyBpIDwgc2xpZGVzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIGlmIChzbGlkZXNbaV0gJiYgIWJyZWFrTG9vcCkge1xuICAgICAgICAgIHNsaWRlU2l6ZSArPSBNYXRoLmNlaWwoc2xpZGVzW2ldLnN3aXBlclNsaWRlU2l6ZSk7XG4gICAgICAgICAgc3B2ICs9IDE7XG4gICAgICAgICAgaWYgKHNsaWRlU2l6ZSA+IHN3aXBlclNpemUpIGJyZWFrTG9vcCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZvciAobGV0IGkgPSBhY3RpdmVJbmRleCAtIDE7IGkgPj0gMDsgaSAtPSAxKSB7XG4gICAgICAgIGlmIChzbGlkZXNbaV0gJiYgIWJyZWFrTG9vcCkge1xuICAgICAgICAgIHNsaWRlU2l6ZSArPSBzbGlkZXNbaV0uc3dpcGVyU2xpZGVTaXplO1xuICAgICAgICAgIHNwdiArPSAxO1xuICAgICAgICAgIGlmIChzbGlkZVNpemUgPiBzd2lwZXJTaXplKSBicmVha0xvb3AgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgICAgaWYgKHZpZXcgPT09ICdjdXJyZW50Jykge1xuICAgICAgICBmb3IgKGxldCBpID0gYWN0aXZlSW5kZXggKyAxOyBpIDwgc2xpZGVzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgICAgY29uc3Qgc2xpZGVJblZpZXcgPSBleGFjdCA/IHNsaWRlc0dyaWRbaV0gKyBzbGlkZXNTaXplc0dyaWRbaV0gLSBzbGlkZXNHcmlkW2FjdGl2ZUluZGV4XSA8IHN3aXBlclNpemUgOiBzbGlkZXNHcmlkW2ldIC0gc2xpZGVzR3JpZFthY3RpdmVJbmRleF0gPCBzd2lwZXJTaXplO1xuICAgICAgICAgIGlmIChzbGlkZUluVmlldykge1xuICAgICAgICAgICAgc3B2ICs9IDE7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBwcmV2aW91c1xuICAgICAgICBmb3IgKGxldCBpID0gYWN0aXZlSW5kZXggLSAxOyBpID49IDA7IGkgLT0gMSkge1xuICAgICAgICAgIGNvbnN0IHNsaWRlSW5WaWV3ID0gc2xpZGVzR3JpZFthY3RpdmVJbmRleF0gLSBzbGlkZXNHcmlkW2ldIDwgc3dpcGVyU2l6ZTtcbiAgICAgICAgICBpZiAoc2xpZGVJblZpZXcpIHtcbiAgICAgICAgICAgIHNwdiArPSAxO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3B2O1xuICB9XG4gIHVwZGF0ZSgpIHtcbiAgICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICAgIGlmICghc3dpcGVyIHx8IHN3aXBlci5kZXN0cm95ZWQpIHJldHVybjtcbiAgICBjb25zdCB7XG4gICAgICBzbmFwR3JpZCxcbiAgICAgIHBhcmFtc1xuICAgIH0gPSBzd2lwZXI7XG4gICAgLy8gQnJlYWtwb2ludHNcbiAgICBpZiAocGFyYW1zLmJyZWFrcG9pbnRzKSB7XG4gICAgICBzd2lwZXIuc2V0QnJlYWtwb2ludCgpO1xuICAgIH1cbiAgICBbLi4uc3dpcGVyLmVsLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tsb2FkaW5nPVwibGF6eVwiXScpXS5mb3JFYWNoKGltYWdlRWwgPT4ge1xuICAgICAgaWYgKGltYWdlRWwuY29tcGxldGUpIHtcbiAgICAgICAgcHJvY2Vzc0xhenlQcmVsb2FkZXIoc3dpcGVyLCBpbWFnZUVsKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBzd2lwZXIudXBkYXRlU2l6ZSgpO1xuICAgIHN3aXBlci51cGRhdGVTbGlkZXMoKTtcbiAgICBzd2lwZXIudXBkYXRlUHJvZ3Jlc3MoKTtcbiAgICBzd2lwZXIudXBkYXRlU2xpZGVzQ2xhc3NlcygpO1xuICAgIGZ1bmN0aW9uIHNldFRyYW5zbGF0ZSgpIHtcbiAgICAgIGNvbnN0IHRyYW5zbGF0ZVZhbHVlID0gc3dpcGVyLnJ0bFRyYW5zbGF0ZSA/IHN3aXBlci50cmFuc2xhdGUgKiAtMSA6IHN3aXBlci50cmFuc2xhdGU7XG4gICAgICBjb25zdCBuZXdUcmFuc2xhdGUgPSBNYXRoLm1pbihNYXRoLm1heCh0cmFuc2xhdGVWYWx1ZSwgc3dpcGVyLm1heFRyYW5zbGF0ZSgpKSwgc3dpcGVyLm1pblRyYW5zbGF0ZSgpKTtcbiAgICAgIHN3aXBlci5zZXRUcmFuc2xhdGUobmV3VHJhbnNsYXRlKTtcbiAgICAgIHN3aXBlci51cGRhdGVBY3RpdmVJbmRleCgpO1xuICAgICAgc3dpcGVyLnVwZGF0ZVNsaWRlc0NsYXNzZXMoKTtcbiAgICB9XG4gICAgbGV0IHRyYW5zbGF0ZWQ
99747XG4gICAgaWYgKHBhcmFtcy5mcmVlTW9kZSAmJiBwYXJhbXMuZnJlZU1vZGUuZW5hYmxlZCAmJiAhcGFyYW1zLmNzc01vZGUpIHtcbiAgICAgIHNldFRyYW5zbGF0ZSgpO1xuICAgICAgaWYgKHBhcmFtcy5hdXRvSGVpZ2h0KSB7XG4gICAgICAgIHN3aXBlci51cGRhdGVBdXRvSGVpZ2h0KCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICgocGFyYW1zLnNsaWRlc1BlclZpZXcgPT09ICdhdXRvJyB8fCBwYXJhbXMuc2xpZGVzUGVyVmlldyA+IDEpICYmIHN3aXBlci5pc0VuZCAmJiAhcGFyYW1zLmNlbnRlcmVkU2xpZGVzKSB7XG4gICAgICAgIGNvbnN0IHNsaWRlcyA9IHN3aXBlci52aXJ0dWFsICYmIHBhcmFtcy52aXJ0dWFsLmVuYWJsZWQgPyBzd2lwZXIudmlydHVhbC5zbGlkZXMgOiBzd2lwZXIuc2xpZGVzO1xuICAgICAgICB0cmFuc2xhdGVkID0gc3dpcGVyLnNsaWRlVG8oc2xpZGVzLmxlbmd0aCAtIDEsIDAsIGZhbHNlLCB0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyYW5zbGF0ZWQgPSBzd2lwZXIuc2xpZGVUbyhzd2lwZXIuYWN0aXZlSW5kZXgsIDAsIGZhbHNlLCB0cnVlKTtcbiAgICAgIH1cbiAgICAgIGlmICghdHJhbnNsYXRlZCkge1xuICAgICAgICBzZXRUcmFuc2xhdGUoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHBhcmFtcy53YXRjaE92ZXJmbG93ICYmIHNuYXBHcmlkICE9PSBzd2lwZXIuc25hcEdyaWQpIHtcbiAgICAgIHN3aXBlci5jaGVja092ZXJmbG93KCk7XG4gICAgfVxuICAgIHN3aXBlci5lbWl0KCd1cGRhdGUnKTtcbiAgfVxuICBjaGFuZ2VEaXJlY3Rpb24obmV3RGlyZWN0aW9uLCBuZWVkVXBkYXRlKSB7XG4gICAgaWYgKG5lZWRVcGRhdGUgPT09IHZvaWQgMCkge1xuICAgICAgbmVlZFVwZGF0ZSA9IHRydWU7XG4gICAgfVxuICAgIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gICAgY29uc3QgY3VycmVudERpcmVjdGlvbiA9IHN3aXBlci5wYXJhbXMuZGlyZWN0aW9uO1xuICAgIGlmICghbmV3RGlyZWN0aW9uKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgIG5ld0RpcmVjdGlvbiA9IGN1cnJlbnREaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJyA/ICd2ZXJ0aWNhbCcgOiAnaG9yaXpvbnRhbCc7XG4gICAgfVxuICAgIGlmIChuZXdEaXJlY3Rpb24gPT09IGN1cnJlbnREaXJlY3Rpb24gfHwgbmV3RGlyZWN0aW9uICE9PSAnaG9yaXpvbnRhbCcgJiYgbmV3RGlyZWN0aW9uICE9PSAndmVydGljYWwnKSB7XG4gICAgICByZXR1cm4gc3dpcGVyO1xuICAgIH1cbiAgICBzd2lwZXIuZWwuY2xhc3NMaXN0LnJlbW92ZShgJHtzd2lwZXIucGFyYW1zLmNvbnRhaW5lck1vZGlmaWVyQ2xhc3N9JHtjdXJyZW50RGlyZWN0aW9ufWApO1xuICAgIHN3aXBlci5lbC5jbGFzc0xpc3QuYWRkKGAke3N3aXBlci5wYXJhbXMuY29udGFpbmVyTW9kaWZpZXJDbGFzc30ke25ld0RpcmVjdGlvbn1gKTtcbiAgICBzd2lwZXIuZW1pdENvbnRhaW5lckNsYXNzZXMoKTtcbiAgICBzd2lwZXIucGFyYW1zLmRpcmVjdGlvbiA9IG5ld0RpcmVjdGlvbjtcbiAgICBzd2lwZXIuc2xpZGVzLmZvckVhY2goc2xpZGVFbCA9PiB7XG4gICAgICBpZiAobmV3RGlyZWN0aW9uID09PSAndmVydGljYWwnKSB7XG4gICAgICAgIHNsaWRlRWwuc3R5bGUud2lkdGggPSAnJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNsaWRlRWwuc3R5bGUuaGVpZ2h0ID0gJyc7XG4gICAgICB9XG4gICAgfSk7XG4gICAgc3dpcGVyLmVtaXQoJ2NoYW5nZURpcmVjdGlvbicpO1xuICAgIGlmIChuZWVkVXBkYXRlKSBzd2lwZXIudXBkYXRlKCk7XG4gICAgcmV0dXJuIHN3aXBlcjtcbiAgfVxuICBjaGFuZ2VMYW5ndWFnZURpcmVjdGlvbihkaXJlY3Rpb24pIHtcbiAgICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICAgIGlmIChzd2lwZXIucnRsICYmIGRpcmVjdGlvbiA9PT0gJ3J0bCcgfHwgIXN3aXBlci5ydGwgJiYgZGlyZWN0aW9uID09PSAnbHRyJykgcmV0dXJuO1xuICAgIHN3aXBlci5ydGwgPSBkaXJlY3Rpb24gPT09ICdydGwnO1xuICAgIHN3aXBlci5ydGxUcmFuc2xhdGUgPSBzd2lwZXIucGFyYW1zLmRpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnICYmIHN3aXBlci5ydGw7XG4gICAgaWYgKHN3aXBlci5ydGwpIHtcbiAgICAgIHN3aXBlci5lbC5jbGFzc0xpc3QuYWRkKGAke3N3aXBlci5wYXJhbXMuY29udGFpbmVyTW9kaWZpZXJDbGFzc31ydGxgKTtcbiAgICAgIHN3aXBlci5lbC5kaXIgPSAncnRsJztcbiAgICB9IGVsc2Uge1xuICAgICAgc3dpcGVyLmVsLmNsYXNzTGlzdC5yZW1vdmUoYCR7c3dpcGVyLnBhcmFtcy5jb250YWluZXJNb2RpZmllckNsYXNzfXJ0bGApO1xuICAgICAgc3dpcGVyLmVsLmRpciA9ICdsdHInO1xuICAgIH1cbiAgICBzd2lwZXIudXBkYXRlKCk7XG4gIH1cbiAgbW91bnQoZWxlbWVudCkge1xuICAgIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gICAgaWYgKHN3aXBlci5tb3VudGVkKSByZXR1cm4gdHJ1ZTtcblxuICAgIC8vIEZpbmQgZWxcbiAgICBsZXQgZWwgPSBlbGVtZW50IHx8IHN3aXBlci5wYXJhbXMuZWw7XG4gICAgaWYgKHR5cGVvZiBlbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihlbCk7XG4gICAgfVxuICAgIGlmICghZWwpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZWwuc3dpcGVyID0gc3dpcGVyO1xuICAgIGlmIChlbC5wYXJlbnROb2RlICYmIGVsLnBhcmVudE5vZGUuaG9zdCAmJiBlbC5wYXJlbnROb2RlLmhvc3Qubm9kZU5hbWUgPT09IHN3aXBlci5wYXJhbXMuc3dpcGVyRWxlbWVudE5vZGVOYW1lLnRvVXBwZXJDYXNlKCkpIHtcbiAgICAgIHN3aXBlci5pc0VsZW1lbnQgPSB0cnVlO1xuICAgIH1cbiAgICBjb25zdCBnZXRXcmFwcGVyU2VsZWN0b3IgPSAoKSA9PiB7XG4gICAgICByZXR1cm4gYC4keyhzd2lwZXIucGFyYW1zLndyYXBwZXJDbGFzcyB8fCAnJykudHJpbSgpLnNwbGl0KCcgJykuam9pbignLicpfWA7XG4gICAgfTtcbiAgICBjb25zdCBnZXRXcmFwcGVyID0gKCkgPT4ge1xuICAgICAgaWYgKGVsICYmIGVsLnNoYWRvd1Jvb3QgJiYgZWwuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IGVsLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcihnZXRXcmFwcGVyU2VsZWN0b3IoKSk7XG4gICAgICAgIC8vIENoaWxkcmVuIG5lZWRzIHRvIHJldHVybi
9974BzbG90IGl0ZW1zXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgICB9XG4gICAgICByZXR1cm4gZWxlbWVudENoaWxkcmVuKGVsLCBnZXRXcmFwcGVyU2VsZWN0b3IoKSlbMF07XG4gICAgfTtcbiAgICAvLyBGaW5kIFdyYXBwZXJcbiAgICBsZXQgd3JhcHBlckVsID0gZ2V0V3JhcHBlcigpO1xuICAgIGlmICghd3JhcHBlckVsICYmIHN3aXBlci5wYXJhbXMuY3JlYXRlRWxlbWVudHMpIHtcbiAgICAgIHdyYXBwZXJFbCA9IGNyZWF0ZUVsZW1lbnQoJ2RpdicsIHN3aXBlci5wYXJhbXMud3JhcHBlckNsYXNzKTtcbiAgICAgIGVsLmFwcGVuZCh3cmFwcGVyRWwpO1xuICAgICAgZWxlbWVudENoaWxkcmVuKGVsLCBgLiR7c3dpcGVyLnBhcmFtcy5zbGlkZUNsYXNzfWApLmZvckVhY2goc2xpZGVFbCA9PiB7XG4gICAgICAgIHdyYXBwZXJFbC5hcHBlbmQoc2xpZGVFbCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgT2JqZWN0LmFzc2lnbihzd2lwZXIsIHtcbiAgICAgIGVsLFxuICAgICAgd3JhcHBlckVsLFxuICAgICAgc2xpZGVzRWw6IHN3aXBlci5pc0VsZW1lbnQgJiYgIWVsLnBhcmVudE5vZGUuaG9zdC5zbGlkZVNsb3RzID8gZWwucGFyZW50Tm9kZS5ob3N0IDogd3JhcHBlckVsLFxuICAgICAgaG9zdEVsOiBzd2lwZXIuaXNFbGVtZW50ID8gZWwucGFyZW50Tm9kZS5ob3N0IDogZWwsXG4gICAgICBtb3VudGVkOiB0cnVlLFxuICAgICAgLy8gUlRMXG4gICAgICBydGw6IGVsLmRpci50b0xvd2VyQ2FzZSgpID09PSAncnRsJyB8fCBlbGVtZW50U3R5bGUoZWwsICdkaXJlY3Rpb24nKSA9PT0gJ3J0bCcsXG4gICAgICBydGxUcmFuc2xhdGU6IHN3aXBlci5wYXJhbXMuZGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcgJiYgKGVsLmRpci50b0xvd2VyQ2FzZSgpID09PSAncnRsJyB8fCBlbGVtZW50U3R5bGUoZWwsICdkaXJlY3Rpb24nKSA9PT0gJ3J0bCcpLFxuICAgICAgd3JvbmdSVEw6IGVsZW1lbnRTdHlsZSh3cmFwcGVyRWwsICdkaXNwbGF5J
9974ykgPT09ICctd2Via2l0LWJveCdcbiAgICB9KTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpbml0KGVsKSB7XG4gICAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgICBpZiAoc3dpcGVyLmluaXRpYWxpemVkKSByZXR1cm4gc3dpcGVyO1xuICAgIGNvbnN0IG1vdW50ZWQgPSBzd2lwZXIubW91bnQoZWwpO1xuICAgIGlmIChtb3VudGVkID09PSBmYWxzZSkgcmV0dXJuIHN3aXBlcjtcbiAgICBzd2lwZXIuZW1pdCgnYmVmb3JlSW5pdCcpO1xuXG4gICAgLy8gU2V0IGJyZWFrcG9pbnRcbiAgICBpZiAoc3dpcGVyLnBhcmFtcy5icmVha3BvaW50cykge1xuICAgICAgc3dpcGVyLnNldEJyZWFrcG9pbnQoKTtcbiAgICB9XG5cbiAgICAvLyBBZGQgQ2xhc3Nlc1xuICAgIHN3aXBlci5hZGRDbGFzc2VzKCk7XG5cbiAgICAvLyBVcGRhdGUgc2l6ZVxuICAgIHN3aXBlci51cGRhdGVTaXplKCk7XG5cbiAgICAvLyBVcGRhdGUgc2xpZGVzXG4gICAgc3dpcGVyLnVwZGF0ZVNsaWRlcygpO1xuICAgIGlmIChzd2lwZXIucGFyYW1zLndhdGNoT3ZlcmZsb3cpIHtcbiAgICAgIHN3aXBlci5jaGVja092ZXJmbG93KCk7XG4gICAgfVxuXG4gICAgLy8gU2V0IEdyYWIgQ3Vyc29yXG4gICAgaWYgKHN3aXBlci5wYXJhbXMuZ3JhYkN1cnNvciAmJiBzd2lwZXIuZW5hYmxlZCkge1xuICAgICAgc3dpcGVyLnNldEdyYWJDdXJzb3IoKTtcbiAgICB9XG5cbiAgICAvLyBTbGlkZSBUbyBJbml0aWFsIFNsaWRlXG4gICAgaWYgKHN3aXBlci5wYXJhbXMubG9vcCAmJiBzd2lwZXIudmlydHVhbCAmJiBzd2lwZXIucGFyYW1zLnZpcnR1YWwuZW5hYmxlZCkge1xuICAgICAgc3dpcGVyLnNsaWRlVG8oc3dpcGVyLnBhcmFtcy5pbml0aWFsU2xpZGUgKyBzd2lwZXIudmlydHVhbC5zbGlkZXNCZWZvcmUsIDAsIHN3aXBlci5wYXJhbXMucnVuQ2FsbGJhY2tzT25Jbml0LCBmYWxzZSwgdHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN3aXBlci5zbGlkZVRvKHN3aXBlci5wYXJhbXMuaW5pdGlhbFNsaWRlLCAwLCBzd2lwZXIucGFyYW1zLnJ1bkNhbGxiYWNrc09uSW5pdCwgZmFsc2UsIHRydWUpO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSBsb29wXG4gICAgaWYgKHN3aXBlci5wYXJhbXMubG9vcCkge1xuICAgICAgc3dpcGVyLmxvb3BDcmVhdGUodW5kZWZpbmVkLCB0cnVlKTtcbiAgICB9XG5cbiAgICAvLyBBdHRhY2ggZXZlbnRzXG4gICAgc3dpcGVyLmF0dGFjaEV2ZW50cygpO1xuICAgIGNvbnN0IGxhenlFbGVtZW50cyA9IFsuLi5zd2lwZXIuZWwucXVlcnlTZWxlY3RvckFsbCgnW2xvYWRpbmc9XCJsYXp5XCJdJyldO1xuICAgIGlmIChzd2lwZXIuaXNFbGVtZW50KSB7XG4gICAgICBsYXp5RWxlbWVudHMucHVzaCguLi5zd2lwZXIuaG9zdEVsLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tsb2FkaW5nPVwibGF6eVwiXScpKTtcbiAgICB9XG4gICAgbGF6eUVsZW1lbnRzLmZvckVhY2goaW1hZ2VFbCA9PiB7XG4gICAgICBpZiAoaW1hZ2VFbC5jb21wbGV0ZSkge1xuICAgICAgICBwcm9jZXNzTGF6eVByZWxvYWRlcihzd2lwZXIsIGltYWdlRWwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW1hZ2VFbC5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZSA9PiB7XG4gICAgICAgICAgcHJvY2Vzc0xhenlQcmVsb2FkZXIoc3dpcGVyLCBlLnRhcmdldCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHByZWxvYWQoc3dpcGVyKTtcblxuICAgIC8vIEluaXQgRmxhZ1xuICAgIHN3aXBlci5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgcHJlbG9hZChzd2lwZXIpO1xuXG4gICAgLy8gRW1pdFxuICAgIHN3aXBlci5lbWl0KCdpbml0Jyk7XG4gICAgc3dpcGVyLmVtaXQoJ2FmdGVySW5pdCcpO1xuICAgIHJldHVybiBzd2lwZXI7XG4gIH1cbiAgZGVzdHJveShkZWxldGVJbnN0YW5jZSwgY2xlYW5TdHlsZXMpIHtcbiAgICBpZiAoZGVsZXRlSW5zdGFuY2UgPT09IHZvaWQgMCkge1xuICAgICAgZGVsZXRlSW5zdGFuY2UgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAoY2xlYW5TdHlsZXMgPT09IHZvaWQgMCkge1xuICAgICAgY2xlYW5TdHlsZXMgPSB0cnVlO1xuICAgIH1cbiAgICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICAgIGNvbnN0IHtcbiAgICAgIHBhcmFtcyxcbiAgICAgIGVsLFxuICAgICAgd3JhcHBlckVsLFxuICAgICAgc2xpZGVzXG4gICAgfSA9IHN3aXBlcjtcbiAgICBpZiAodHlwZW9mIHN3aXBlci5wYXJhbXMgPT09ICd1bmRlZmluZWQnIHx8IHN3aXBlci5kZXN0cm95ZWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBzd2lwZXIuZW1pdCgnYmVmb3JlRGVzdHJveScpO1xuXG4gICAgLy8gSW5pdCBGbGFnXG4gICAgc3dpcGVyLmluaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgICAvLyBEZXRhY2ggZXZlbnRzXG4gICAgc3dpcGVyLmRldGFjaEV2ZW50cygpO1xuXG4gICAgLy8gRGVzdHJveSBsb29wXG4gICAgaWYgKHBhcmFtcy5sb29wKSB7XG4gICAgICBzd2lwZXIubG9vcERlc3Ryb3koKTtcbiAgICB9XG5cbiAgICAvLyBDbGVhbnVwIHN0eWxlc1xuICAgIGlmIChjbGVhblN0eWxlcykge1xuICAgICAgc3dpcGVyLnJlbW92ZUNsYXNzZXMoKTtcbiAgICAgIGlmIChlbCAmJiB0eXBlb2YgZWwgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZSgnc3R5bGUnKTtcbiAgICAgIH1cbiAgICAgIGlmICh3cmFwcGVyRWwpIHtcbiAgICAgICAgd3JhcHBlckVsLnJlbW92ZUF0dHJpYnV0ZSgnc3R5bGUnKTtcbiAgICAgIH1cbiAgICAgIGlmIChzbGlkZXMgJiYgc2xpZGVzLmxlbmd0aCkge1xuICAgICAgICBzbGlkZXMuZm9yRWFjaChzbGlkZUVsID0+IHtcbiAgICAgICAgICBzbGlkZUVsLmNsYXNzTGlzdC5yZW1vdmUocGFyYW1zLnNsaWRlVmlzaWJsZUNsYXNzLCBwYXJhbXMuc2xpZGVGdWxseVZpc2libGVDbGFzcywgcGFyYW1zLnNsaWRlQWN0aXZlQ2xhc3MsIHBhcmFtcy5zbGlkZU5leHRDbGFzcywgcGFyYW1zLnNsaWRlUHJldkNsYXNzKTtcbiAgICAgICAgICBzbGlkZUVsLnJlbW92ZUF0dHJpYnV0ZSgnc3R5bGUnKTtcbiAgICAgICAgICBzbGlkZUVsLnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgnKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHN3aXBlci5lbWl0KCdkZXN0cm95Jyk7XG5cbiAgICAvLyBEZXRhY2ggZW1pdHRlciBldmVudHNcbiAgICBPYmplY3Qua2V5cyhzd2lwZXIuZXZlbnRzTGlzdGVuZXJzKS5mb3JFYWNoKGV2ZW50TmFtZSA9PiB7XG4gICAgICBzd2lwZXIub2ZmKGV2ZW50TmFtZSk7XG4gICAgfSk7XG4gICAgaWYgKGRlbGV0ZUluc3RhbmNlICE9PSBmYWxzZSkge1xuICAgICAgaWYgKHN3aXBlci5lbCAmJiB0eXBlb2Ygc3dpcGVyLmVsICE9PSAnc3RyaW5nJykge1xuICAgICAgICBzd2lwZXIuZWwuc3dpcGVyID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIGRlbGV0ZVByb3BzKHN3aXBlcik7XG4gICAgfVxuICAgIHN3aXBlci5kZXN0cm95ZWQgPSB0cnVlO1xuICAgIHJldHVybi
vendor: 3,966 bytes, lines 9974-10031
9974BudWxsO1xuICB9XG4gIHN0YXRpYyBleHRlbmREZWZhdWx0cyhuZXdEZWZhdWx0cykge1xuICAgIGV4dGVuZChleHRlbmRlZERlZmF1bHRzLCBuZXdEZWZhdWx0cyk7XG4gIH1cbiAgc3RhdGljIGdldCBleHRlbmRlZERlZmF1bHRzKCkge1xuICAgIHJldHVybiBleHRlbmRlZERlZmF1bHRzO1xuICB9XG4gIHN0YXRpYyBnZXQgZGVmYXVsdHMoKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRzO1xuICB9XG4gIHN0YXRpYyBpbnN0YWxsTW9kdWxlKG1vZCkge1xuICAgIGlmICghU3dpcGVyLnByb3RvdHlwZS5fX21vZHVsZXNfXykgU3dpcGVyLnByb3RvdHlwZS5fX21vZHVsZXNfXyA9IFtdO1xuICAgIGNvbnN0IG1vZHVsZXMgPSBTd2lwZXIucHJvdG90eXBlLl9fbW9kdWxlc19fO1xuICAgIGlmICh0eXBlb2YgbW9kID09PSAnZnVuY3Rpb24nICYmIG1vZHVsZXMuaW5kZXhPZihtb2QpIDwgMCkge1xuICAgICAgbW9kdWxlcy5wdXNoKG1vZCk7XG4gICAgfVxuICB9XG4gIHN0YXRpYyB1c2UobW9kdWxlKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkobW9kdWxlKSkge1xuICAgICAgbW9kdWxlLmZvckVhY2gobSA9PiBTd2lwZXIuaW5zdGFsbE1vZHVsZShtKSk7XG4gICAgICByZXR1cm4gU3dpcGVyO1xuICAgIH1cbiAgICBTd2lwZXIuaW5zdGFsbE1vZHVsZShtb2R1bGUpO1xuICAgIHJldHVybiBTd2lwZXI7XG4gIH1cbn1cbk9iamVjdC5rZXlzKHByb3RvdHlwZXMpLmZvckVhY2gocHJvdG90eXBlR3JvdXAgPT4ge1xuICBPYmplY3Qua2V5cyhwcm90b3R5cGVzW3Byb3RvdHlwZUdyb3VwXSkuZm9yRWFjaChwcm90b01ldGhvZCA9PiB7XG4gICAgU3dpcGVyLnByb3RvdHlwZVtwcm90b01ldGhvZF0gPSBwcm90b3R5cGVzW3Byb3RvdHlwZUdyb3VwXVtwcm90b01ldGhvZF07XG4gIH0pO1xufSk7XG5Td2lwZXIudXNlKFtSZXNpemUsIE9ic2VydmVyXSk7XG5cbmV4cG9ydCB7IFN3aXBlciBhcyBTLCBkZWZhdWx0cyBhcyBkIH07XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9
9975//# sourceURL=webpack-internal:///../node_modules/swiper/shared/swiper-core.mjs
9976
9977}`)},"../node_modules/swiper/shared/utils.mjs"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval(`{__webpack_require__.r(__webpack_exports__);
9978/* harmony export */ __webpack_require__.d(__webpack_exports__, {
9979/* harmony export */   a: () => (/* binding */ setCSSProperty),
9980/* harmony export */   b: () => (/* binding */ elementParents),
9981/* harmony export */   c: () => (/* binding */ createElement),
9982/* harmony export */   d: () => (/* binding */ elementOffset),
9983/* harmony export */   e: () => (/* binding */ elementChildren),
9984/* harmony export */   f: () => (/* binding */ now),
9985/* harmony export */   g: () => (/* binding */ getSlideTransformEl),
9986/* harmony export */   h: () => (/* binding */ elementOuterSize),
9987/* harmony export */   i: () => (/* binding */ elementIndex),
9988/* harmony export */   j: () => (/* binding */ classesToTokens),
9989/* harmony export */   k: () => (/* binding */ getTranslate),
9990/* harmony export */   l: () => (/* binding */ elementTransitionEnd),
9991/* harmony export */   m: () => (/* binding */ makeElementsArray),
9992/* harmony export */   n: () => (/* binding */ nextTick),
9993/* harmony export */   o: () => (/* binding */ isObject),
9994/* harmony export */   p: () => (/* binding */ getRotateFix),
9995/* harmony export */   q: () => (/* binding */ elementStyle),
9996/* harmony export */   r: () => (/* binding */ elementNextAll),
9997/* harmony export */   s: () => (/* binding */ setInnerHTML),
9998/* harmony export */   t: () => (/* binding */ elementPrevAll),
9999/* harmony export */   u: () => (/* binding */ animateCSSModeScroll),
10000/* harmony export */   v: () => (/* binding */ showWarning),
10001/* harmony export */   w: () => (/* binding */ elementIsChildOf),
10002/* harmony export */   x: () => (/* binding */ extend),
10003/* harmony export */   y: () => (/* binding */ deleteProps)
10004/* harmony export */ });
10005/* harmony import */ var _ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ssr-window.esm.mjs */ "../node_modules/swiper/shared/ssr-window.esm.mjs");
10006
10007
10008function classesToTokens(classes) {
10009  if (classes === void 0) {
10010    classes = '';
10011  }
10012  return classes.trim().split(' ').filter(c => !!c.trim());
10013}
10014
10015function deleteProps(obj) {
10016  const object = obj;
10017  Object.keys(object).forEach(key => {
10018    try {
10019      object[key] = null;
10020    } catch (e) {
10021      // no getter for object
10022    }
10023    try {
10024      delete object[key];
10025    } catch (e) {
10026      // something got wrong
10027    }
10028  });
10029}
10030function nextTick(callback, delay) {
10031  if (delay === void 0) {
vendor: 4,813 bytes, lines 10032-10161
10032    delay = 0;
10033  }
10034  return setTimeout(callback, delay);
10035}
10036function now() {
10037  return Date.now();
10038}
10039function getComputedStyle(el) {
10040  const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
10041  let style;
10042  if (window.getComputedStyle) {
10043    style = window.getComputedStyle(el, null);
10044  }
10045  if (!style && el.currentStyle) {
10046    style = el.currentStyle;
10047  }
10048  if (!style) {
10049    style = el.style;
10050  }
10051  return style;
10052}
10053function getTranslate(el, axis) {
10054  if (axis === void 0) {
10055    axis = 'x';
10056  }
10057  const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
10058  let matrix;
10059  let curTransform;
10060  let transformMatrix;
10061  const curStyle = getComputedStyle(el);
10062  if (window.WebKitCSSMatrix) {
10063    curTransform = curStyle.transform || curStyle.webkitTransform;
10064    if (curTransform.split(',').length > 6) {
10065      curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');
10066    }
10067    // Some old versions of Webkit choke when 'none' is passed; pass
10068    // empty string instead in this case
10069    transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);
10070  } else {
10071    transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');
10072    matrix = transformMatrix.toString().split(',');
10073  }
10074  if (axis === 'x') {
10075    // Latest Chrome and webkits Fix
10076    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;
10077    // Crazy IE10 Matrix
10078    else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);
10079    // Normal Browsers
10080    else curTransform = parseFloat(matrix[4]);
10081  }
10082  if (axis === 'y') {
10083    // Latest Chrome and webkits Fix
10084    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;
10085    // Crazy IE10 Matrix
10086    else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);
10087    // Normal Browsers
10088    else curTransform = parseFloat(matrix[5]);
10089  }
10090  return curTransform || 0;
10091}
10092function isObject(o) {
10093  return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';
10094}
10095function isNode(node) {
10096  // eslint-disable-next-line
10097  if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {
10098    return node instanceof HTMLElement;
10099  }
10100  return node && (node.nodeType === 1 || node.nodeType === 11);
10101}
10102function extend() {
10103  const to = Object(arguments.length <= 0 ? undefined : arguments[0]);
10104  const noExtend = ['__proto__', 'constructor', 'prototype'];
10105  for (let i = 1; i < arguments.length; i += 1) {
10106    const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];
10107    if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {
10108      const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);
10109      for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {
10110        const nextKey = keysArray[nextIndex];
10111        const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
10112        if (desc !== undefined && desc.enumerable) {
10113          if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {
10114            if (nextSource[nextKey].__swiper__) {
10115              to[nextKey] = nextSource[nextKey];
10116            } else {
10117              extend(to[nextKey], nextSource[nextKey]);
10118            }
10119          } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {
10120            to[nextKey] = {};
10121            if (nextSource[nextKey].__swiper__) {
10122              to[nextKey] = nextSource[nextKey];
10123            } else {
10124              extend(to[nextKey], nextSource[nextKey]);
10125            }
10126          } else {
10127            to[nextKey] = nextSource[nextKey];
10128          }
10129        }
10130      }
10131    }
10132  }
10133  return to;
10134}
10135function setCSSProperty(el, varName, varValue) {
10136  el.style.setProperty(varName, varValue);
10137}
10138function animateCSSModeScroll(_ref) {
10139  let {
10140    swiper,
10141    targetPosition,
10142    side
10143  } = _ref;
10144  const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
10145  const startPosition = -swiper.translate;
10146  let startTime = null;
10147  let time;
10148  const duration = swiper.params.speed;
10149  swiper.wrapperEl.style.scrollSnapType = 'none';
10150  window.cancelAnimationFrame(swiper.cssModeFrameID);
10151  const dir = targetPosition > startPosition ? 'next' : 'prev';
10152  const isOutOfBound = (current, target) => {
10153    return dir === 'next' && current >= target || dir === 'prev' && current <= target;
10154  };
10155  const animate = () => {
10156    time = new Date().getTime();
10157    if (startTime === null) {
10158      startTime = time;
10159    }
10160    const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);
10161    const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;
vendor: 6,258 bytes, lines 10162-10350
10162    let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);
10163    if (isOutOfBound(currentPosition, targetPosition)) {
10164      currentPosition = targetPosition;
10165    }
10166    swiper.wrapperEl.scrollTo({
10167      [side]: currentPosition
10168    });
10169    if (isOutOfBound(currentPosition, targetPosition)) {
10170      swiper.wrapperEl.style.overflow = 'hidden';
10171      swiper.wrapperEl.style.scrollSnapType = '';
10172      setTimeout(() => {
10173        swiper.wrapperEl.style.overflow = '';
10174        swiper.wrapperEl.scrollTo({
10175          [side]: currentPosition
10176        });
10177      });
10178      window.cancelAnimationFrame(swiper.cssModeFrameID);
10179      return;
10180    }
10181    swiper.cssModeFrameID = window.requestAnimationFrame(animate);
10182  };
10183  animate();
10184}
10185function getSlideTransformEl(slideEl) {
10186  return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;
10187}
10188function elementChildren(element, selector) {
10189  if (selector === void 0) {
10190    selector = '';
10191  }
10192  const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
10193  const children = [...element.children];
10194  if (window.HTMLSlotElement && element instanceof HTMLSlotElement) {
10195    children.push(...element.assignedElements());
10196  }
10197  if (!selector) {
10198    return children;
10199  }
10200  return children.filter(el => el.matches(selector));
10201}
10202function elementIsChildOfSlot(el, slot) {
10203  // Breadth-first search through all parent's children and assigned elements
10204  const elementsQueue = [slot];
10205  while (elementsQueue.length > 0) {
10206    const elementToCheck = elementsQueue.shift();
10207    if (el === elementToCheck) {
10208      return true;
10209    }
10210    elementsQueue.push(...elementToCheck.children, ...(elementToCheck.shadowRoot ? elementToCheck.shadowRoot.children : []), ...(elementToCheck.assignedElements ? elementToCheck.assignedElements() : []));
10211  }
10212}
10213function elementIsChildOf(el, parent) {
10214  const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
10215  let isChild = parent.contains(el);
10216  if (!isChild && window.HTMLSlotElement && parent instanceof HTMLSlotElement) {
10217    const children = [...parent.assignedElements()];
10218    isChild = children.includes(el);
10219    if (!isChild) {
10220      isChild = elementIsChildOfSlot(el, parent);
10221    }
10222  }
10223  return isChild;
10224}
10225function showWarning(text) {
10226  try {
10227    console.warn(text);
10228    return;
10229  } catch (err) {
10230    // err
10231  }
10232}
10233function createElement(tag, classes) {
10234  if (classes === void 0) {
10235    classes = [];
10236  }
10237  const el = document.createElement(tag);
10238  el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes)));
10239  return el;
10240}
10241function elementOffset(el) {
10242  const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
10243  const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
10244  const box = el.getBoundingClientRect();
10245  const body = document.body;
10246  const clientTop = el.clientTop || body.clientTop || 0;
10247  const clientLeft = el.clientLeft || body.clientLeft || 0;
10248  const scrollTop = el === window ? window.scrollY : el.scrollTop;
10249  const scrollLeft = el === window ? window.scrollX : el.scrollLeft;
10250  return {
10251    top: box.top + scrollTop - clientTop,
10252    left: box.left + scrollLeft - clientLeft
10253  };
10254}
10255function elementPrevAll(el, selector) {
10256  const prevEls = [];
10257  while (el.previousElementSibling) {
10258    const prev = el.previousElementSibling; // eslint-disable-line
10259    if (selector) {
10260      if (prev.matches(selector)) prevEls.push(prev);
10261    } else prevEls.push(prev);
10262    el = prev;
10263  }
10264  return prevEls;
10265}
10266function elementNextAll(el, selector) {
10267  const nextEls = [];
10268  while (el.nextElementSibling) {
10269    const next = el.nextElementSibling; // eslint-disable-line
10270    if (selector) {
10271      if (next.matches(selector)) nextEls.push(next);
10272    } else nextEls.push(next);
10273    el = next;
10274  }
10275  return nextEls;
10276}
10277function elementStyle(el, prop) {
10278  const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
10279  return window.getComputedStyle(el, null).getPropertyValue(prop);
10280}
10281function elementIndex(el) {
10282  let child = el;
10283  let i;
10284  if (child) {
10285    i = 0;
10286    // eslint-disable-next-line
10287    while ((child = child.previousSibling) !== null) {
10288      if (child.nodeType === 1) i += 1;
10289    }
10290    return i;
10291  }
10292  return undefined;
10293}
10294function elementParents(el, selector) {
10295  const parents = []; // eslint-disable-line
10296  let parent = el.parentElement; // eslint-disable-line
10297  while (parent) {
10298    if (selector) {
10299      if (parent.matches(selector)) parents.push(parent);
10300    } else {
10301      parents.push(parent);
10302    }
10303    parent = parent.parentElement;
10304  }
10305  return parents;
10306}
10307function elementTransitionEnd(el, callback) {
10308  function fireCallBack(e) {
10309    if (e.target !== el) return;
10310    callback.call(el, e);
10311    el.removeEventListener('transitionend', fireCallBack);
10312  }
10313  if (callback) {
10314    el.addEventListener('transitionend', fireCallBack);
10315  }
10316}
10317function elementOuterSize(el, size, includeMargins) {
10318  const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
10319  if (includeMargins) {
10320    return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));
10321  }
10322  return el.offsetWidth;
10323}
10324function makeElementsArray(el) {
10325  return (Array.isArray(el) ? el : [el]).filter(e => !!e);
10326}
10327function getRotateFix(swiper) {
10328  return v => {
10329    if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) {
10330      return v + 0.001;
10331    }
10332    return v;
10333  };
10334}
10335function setInnerHTML(el, html) {
10336  if (html === void 0) {
10337    html = '';
10338  }
10339  if (typeof trustedTypes !== 'undefined') {
10340    el.innerHTML = trustedTypes.createPolicy('html', {
10341      createHTML: s => s
10342    }).createHTML(html);
10343  } else {
10344    el.innerHTML = html;
10345  }
10346}
10347
10348
10349//# sourceURL=[module]
10350//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9zaGFyZWQvdXRpbHMubWpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQXdFOztBQUV4RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0F
10350BRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsc0RBQVM7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsc0RBQVM7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0VBQWdFO0FBQ2hFO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0Isc0JBQXNCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBLHNEQUFzRCxpQkFBaUI7QUFDdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osaUJBQWlCLHNEQUFTO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsc0RBQVM7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHNEQUFTO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHNEQUFTO0FBQzFCLG1CQUFtQixzREFBVztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNENBQTRDO0FBQzVDO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0M7QUFDeEM7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHNEQUFTO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCO0FBQ3RCLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixzREFBUztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRWdnQiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvc3dpcGVyL3NoYXJlZC91dGlscy5tanM/YmE3YyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhIGFzIGdldFdpbmRvdywgZyBhcyBnZXREb2N1bWVudCB9IGZyb20gJy4vc3NyLXdpbmRvdy5lc20ubWpzJztcblxuZnVuY3Rpb24gY2xhc3Nlc1RvVG9rZW5zKGNsYXNzZXMpIHtcbiAgaWYgKGNsYXNzZXMgPT09IHZvaWQgMCkge1xuICAgIGNsYXNzZXMgPSAnJztcbiAgfVxuICByZXR1cm4gY2xhc3Nlcy50cmltKCkuc3BsaXQoJyAnKS5maWx0ZXIoYyA9PiAhIWMudHJpbSgpKTtcbn1cblxuZnVuY3Rpb24gZGVsZXRlUHJvcHMob2JqKSB7XG4gIGNvbnN0IG9iamVjdCA9IG9iajtcbiAgT2JqZWN0LmtleXMob2JqZWN0KS5mb3JFYWNoKGtleSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIG9iamVjdFtrZXldID0gbnVsbDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBubyBnZXR0ZXIgZm9yIG9iamVjdFxuICAgIH1cbiAgICB0cnkge1xuICAgICAgZGVsZXRlIG9iamVjdFtrZXldO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIHNvbWV0aGluZyBnb3Qgd3JvbmdcbiAgICB9XG4gIH0pO1xufVxuZnVuY3Rpb24gbmV4dFRpY2soY2FsbGJhY2ssIGRlbGF5KSB7XG4gIGlmIChkZWxheSA9PT0gdm9pZCAwKSB7XG4gICAgZGVsYXkgPSAwO1xuICB9XG4gIHJldHVybiBzZXRUaW1lb3V0KGNhbGxiYWNrLCBkZWxheSk7XG59XG5mdW5jdGlvbiBub3coKSB7XG4gIHJldHVybiBEYXRlLm5vdygpO1xufVxuZnVuY3Rpb24gZ2V0Q29tcHV0ZWRTdHlsZShlbCkge1xuICBjb25zdCB3aW5kb3cgPSBnZXRXaW5kb3coKTtcbiAgbGV0IHN0eWxlO1xuICBpZiAod2luZG93LmdldENvbXB1dGVkU3R5bGUpIHtcbiAgICBzdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKTtcbiAgfVxuICBpZiAoIXN0eWxlICYmIGVsLmN1cnJlbnRTdHlsZSkge1xuICAgIHN0eWxlID0gZWwuY3VycmVudFN0eWxlO1xuICB9XG4gIGlmICghc3R5bGUpIHtcbiAgICBzdHlsZSA9IGVsLnN0eWxlO1xuICB9XG4gIHJldHVybiBzdHlsZTtcbn1cbmZ1bmN0aW9uIGdldFRyYW5zbGF0ZShlbCwgYXhpcykge1xuICBpZiAoYXhpcyA9PT0gdm9pZCAwKSB7XG4gICAgYXhpcyA9ICd4JztcbiAgfVxuICBjb25zdCB3aW5kb3cgPSBnZXRXaW5kb3coKTtcbiAgbGV0IG1hdHJpeDtcbiAgbGV0IGN1clRyYW5zZm9ybTtcbiAgbGV0IHRyYW5zZm9ybU1hdHJpeDtcbiAgY29uc3QgY3VyU3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKGVsKTtcbiAgaWYgKHdpbmRvdy5XZWJLaXRDU1NNYXRyaXgpIHtcbiAgICBjdXJUcmFuc2Zvcm0gPSBjdXJTdHlsZS50cmFuc2Zvcm0gfHwgY3VyU3R5bGUud2Via2l0VHJhbnNmb3JtO1xuICAgIGlmIChjdXJUcmFuc2Zvcm0uc3BsaXQoJywnKS5sZW5ndGggPiA2KSB7XG4gICAgICBjdXJUcmFuc2Zvcm0gPSBjdXJUcmFuc2Zvcm0uc3BsaXQoJywgJykubWFwKGEgPT4gYS5yZXBsYWNlKCcsJywgJy4nKSkuam9pbignLCAnKTtcbiAgICB9XG4gICAgLy8gU29tZSBvbGQgdmVyc2lvbnMgb2YgV2Via2l0IGNob2tlIHdoZW4gJ25vbmUnIGlzIHBhc3NlZDsgcGFzc1xuICAgIC8vIGVtcHR5IHN0cmluZyBpbnN0ZWFkIGluIHRoaXMgY2FzZVxuICAgIHRyYW5zZm9ybU1hdHJpeCA9IG5ldyB3aW5kb3cuV2ViS2l0Q1NTTWF0cml4KGN1clRyYW5zZm9ybSA9PT0gJ25vbmUnID8gJycgOiBjdXJUcmFuc2Zvcm0pO1xuICB9IGVsc2Uge1xuICAgIHRyYW5zZm9ybU1hdHJpeCA9IGN1clN0eWxlLk1velRyYW5zZm9ybSB8fCBjdXJTdHlsZS5PVHJhbnNmb3JtIHx8IGN1clN0eWxlLk1zVHJhbnNmb3JtIHx8IGN1clN0eWxlLm1zVHJhbnNmb3JtIHx8IGN1clN0eWxlLnRyYW5zZm9ybSB8fCBjdXJTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCd0cmFuc2Zvcm0nKS5yZXBsYWNlKCd0cmFuc2xhdGUoJywgJ21hdHJpeCgxLCAwLCAwLCAxLCcpO1xuICAgIG1hdHJpeCA9IHRyYW5zZm9ybU1hdHJpeC50b1N0cmluZygpLnNwbGl0KCcsJyk7XG4gIH1cbiAgaWYgKGF4aXMgPT09ICd4Jykge1xuICAgIC8vIExhdGVzdCBDaHJvbWUgYW5kIHdlYmtpdHMgRml4XG4gICAgaWYgKHdpbmRvdy5XZWJLaXRDU1NNYXRyaXgpIGN1clRyYW5zZm9ybSA9IHRyYW5zZm9ybU1hdHJpeC5tNDE7XG4gICAgLy8gQ3JhenkgSUUxMCBNYXRyaXhcbiAgICBlbHNlIGlmIChtYXRyaXgubGVuZ3RoID09PSAxNikgY3VyVHJhbnNmb3JtID0gcGFyc2VGbG9hdChtYXRyaXhbMTJdKTtcbiAgICAvLyBOb3JtYWwgQnJvd3NlcnNcbiAgICBlbHNlIGN1clRyYW5zZm9ybSA9IHBhcnNlRmxvYXQobWF0cml4WzRdKTtcbiAgfVxuICBpZiAoYXhpcyA9PT0gJ3knKSB7XG4gICAgLy8gTGF0ZXN0IENocm9tZSBhbmQgd2Via2l0cyBGaXhcbiAgICBpZiAod2luZG93LldlYktpdENTU01hdHJpeCkgY3VyVHJhbnNmb3JtID0gdHJhbnNmb3JtTWF0cml4Lm00MjtcbiAgICAvLyBDcmF6eSBJRTEwIE1hdHJpeFxuICAgIGVsc2UgaWYgKG1hdHJpeC5sZW5ndGggPT09IDE2KSBjdXJUcmFuc2Zvcm0gPSBwYXJzZU
10350Zsb2F0KG1hdHJpeFsxM10pO1xuICAgIC8vIE5vcm1hbCBCcm93c2Vyc1xuICAgIGVsc2UgY3VyVHJhbnNmb3JtID0gcGFyc2VGbG9hdChtYXRyaXhbNV0pO1xuICB9XG4gIHJldHVybiBjdXJUcmFuc2Zvcm0gfHwgMDtcbn1cbmZ1bmN0aW9uIGlzT2JqZWN0KG8pIHtcbiAgcmV0dXJuIHR5cGVvZiBvID09PSAnb2JqZWN0JyAmJiBvICE9PSBudWxsICYmIG8uY29uc3RydWN0b3IgJiYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKSA9PT0gJ09iamVjdCc7XG59XG5mdW5jdGlvbiBpc05vZGUobm9kZSkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB3aW5kb3cuSFRNTEVsZW1lbnQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIG5vZGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudDtcbiAgfVxuICByZXR1cm4gbm9kZSAmJiAobm9kZS5ub2RlVHlwZSA9PT0gMSB8fCBub2RlLm5vZGVUeXBlID09PSAxMSk7XG59XG5mdW5jdGlvbiBleHRlbmQoKSB7XG4gIGNvbnN0IHRvID0gT2JqZWN0KGFyZ3VtZW50cy5sZW5ndGggPD0gMCA/IHVuZGVmaW5lZCA6IGFyZ3VtZW50c1swXSk7XG4gIGNvbnN0IG5vRXh0ZW5kID0gWydfX3Byb3RvX18nLCAnY29uc3RydWN0b3InLCAncHJvdG90eXBlJ107XG4gIGZvciAobGV0IGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgY29uc3QgbmV4dFNvdXJjZSA9IGkgPCAwIHx8IGFyZ3VtZW50cy5sZW5ndGggPD0gaSA/IHVuZGVmaW5lZCA6IGFyZ3VtZW50c1tpXTtcbiAgICBpZiAobmV4dFNvdXJjZSAhPT0gdW5kZWZpbmVkICYmIG5leHRTb3VyY2UgIT09IG51bGwgJiYgIWlzTm9kZShuZXh0U291cmNlKSkge1xuICAgICAgY29uc3Qga2V5c0FycmF5ID0gT2JqZWN0LmtleXMoT2JqZWN0KG5leHRTb3VyY2UpKS5maWx0ZXIoa2V5ID0+IG5vRXh0ZW5kLmluZGV4T2Yoa2V5KSA8IDApO1xuICAgICAgZm9yIChsZXQgbmV4dEluZGV4ID0gMCwgbGVuID0ga2V5c0FycmF5Lmxlbmd0aDsgbmV4dEluZGV4IDwgbGVuOyBuZXh0SW5kZXggKz0gMSkge1xuICAgICAgICBjb25zdCBuZXh0S2V5ID0ga2V5c0FycmF5W25leHRJbmRleF07XG4gICAgICAgIGNvbnN0IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG5leHRTb3VyY2UsIG5leHRLZXkpO1xuICAgICAgICBpZiAoZGVzYyAhPT0gdW5kZWZpbmVkICYmIGRlc2MuZW51bWVyYWJsZSkge1xuICAgICAgICAgIGlmIChpc09iamVjdCh0b1tuZXh0S2V5XSkgJiYgaXNPYmplY3QobmV4dFNvdXJjZVtuZXh0S2V5XSkpIHtcbiAgICAgICAgICAgIGlmIChuZXh0U291cmNlW25leHRLZXldLl9fc3dpcGVyX18pIHtcbiAgICAgICAgICAgICAgdG9bbmV4dEtleV0gPSBuZXh0U291cmNlW25leHRLZXldO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZXh0ZW5kKHRvW25leHRLZXldLCBuZXh0U291cmNlW25leHRLZXldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKCFpc09iamVjdCh0b1tuZXh0S2V5XSkgJiYgaXNPYmplY3QobmV4dFNvdXJjZVtuZXh0S2V5XSkpIHtcbiAgICAgICAgICAgIHRvW25leHRLZXldID0ge307XG4gICAgICAgICAgICBpZiAobmV4dFNvdXJjZVtuZXh0S2V5XS5fX3N3aXBlcl9fKSB7XG4gICAgICAgICAgICAgIHRvW25leHRLZXldID0gbmV4dFNvdXJjZVtuZXh0S2V5XTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGV4dGVuZCh0b1tuZXh0S2V5XSwgbmV4dFNvdXJjZVtuZXh0S2V5XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRvW25leHRLZXldID0gbmV4dFNvdXJjZVtuZXh0S2V5XTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRvO1xufVxuZnVuY3Rpb24gc2V0Q1NTUHJvcGVydHkoZWwsIHZhck5hbWUsIHZhclZhbHVlKSB7XG4gIGVsLnN0eWxlLnNldFByb3BlcnR5KHZhck5hbWUsIHZhclZhbHVlKTtcbn1cbmZ1bmN0aW9uIGFuaW1hdGVDU1NNb2RlU2Nyb2xsKF9yZWYpIHtcbiAgbGV0IHtcbiAgICBzd2lwZXIsXG4gICAgdGFyZ2V0UG9zaXRpb24sXG4gICAgc2lkZVxuICB9ID0gX3JlZjtcbiAgY29uc3Qgd2luZG93ID0gZ2V0V2luZG93KCk7XG4gIGNvbnN0IHN0YXJ0UG9zaXRpb24gPSAtc3dpcGVyLnRyYW5zbGF0ZTtcbiAgbGV0IHN0YXJ0VGltZSA9IG51bGw7XG4gIGxldCB0aW1lO1xuICBjb25zdCBkdXJhdGlvbiA9IHN3aXBlci5wYXJhbXMuc3BlZWQ7XG4gIHN3aXBlci53cmFwcGVyRWwuc3R5bGUuc2Nyb2xsU25hcFR5cGUgPSAnbm9uZSc7XG4gIHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZShzd2lwZXIuY3NzTW9kZUZyYW1lSUQpO1xuICBjb25zdCBkaXIgPSB0YXJnZXRQb3NpdGlvbiA+IHN0YXJ0UG9zaXRpb24gPyAnbmV4dCcgOiAncHJldic7XG4gIGNvbnN0IGlzT3V0T2ZCb3VuZCA9IChjdXJyZW50LCB0YXJnZXQpID0+IHtcbiAgICByZXR1cm4gZGlyID09PSAnbmV4dCcgJiYgY3VycmVudCA+PSB0YXJnZXQgfHwgZGlyID09PSAncHJldicgJiYgY3VycmVudCA8PSB0YXJnZXQ7XG4gIH07XG4gIGNvbnN0IGFuaW1hdGUgPSAoKSA9PiB7XG4gICAgdGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgIGlmIChzdGFydFRpbWUgPT09IG51bGwpIHtcbiAgICAgIHN0YXJ0VGltZSA9IHRpbWU7XG4gICAgfVxuICAgIGNvbnN0IHByb2dyZXNzID0gTWF0aC5tYXgoTWF0aC5taW4oKHRpbWUgLSBzdGFydFRpbWUpIC8gZHVyYXRpb24sIDEpLCAwKTtcbiAgICBjb25zdCBlYXNlUHJvZ3Jlc3MgPSAwLjUgLSBNYXRoLmNvcyhwcm9ncmVzcyAqIE1hdGguUEkpIC8gMjtcbiAgICBsZXQgY3VycmVudFBvc2l0aW9uID0gc3RhcnRQb3NpdGlvbiArIGVhc2VQcm9ncmVzcyAqICh0YXJnZXRQb3NpdGlvbiAtIHN0YXJ0UG9zaXRpb24pO1xuICAgIGlmIChpc091dE9mQm91bmQoY3VycmVudFBvc2l0aW9uLCB0YXJnZXRQb3NpdGlvbikpIHtcbiAgICAgIGN1cnJlbnRQb3NpdGlvbiA9IHRhcmdldFBvc2l0aW9uO1xuICAgIH1cbiAgICBzd2lwZXIud3JhcHBlckVsLnNjcm9sbFRvKHtcbiAgICAgIFtzaWRlXTogY3VycmVudFBvc2l0aW9uXG4gICAgfSk7XG4gICAgaWYgKGlzT3V0T2ZCb3VuZChjdXJyZW50UG9zaXRpb24sIHRhcmdldFBvc2l0aW9uKSkge1xuICAgICAgc3dpcGVyLndyYXBwZXJFbC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICAgICAgc3dpcGVyLndyYXBwZXJFbC5zdHlsZS5zY3JvbGxTbmFwVHlwZSA9ICcnO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgI
10350HN3aXBlci53cmFwcGVyRWwuc3R5bGUub3ZlcmZsb3cgPSAnJztcbiAgICAgICAgc3dpcGVyLndyYXBwZXJFbC5zY3JvbGxUbyh7XG4gICAgICAgICAgW3NpZGVdOiBjdXJyZW50UG9zaXRpb25cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZShzd2lwZXIuY3NzTW9kZUZyYW1lSUQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzd2lwZXIuY3NzTW9kZUZyYW1lSUQgPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGUpO1xuICB9O1xuICBhbmltYXRlKCk7XG59XG5mdW5jdGlvbiBnZXRTbGlkZVRyYW5zZm9ybUVsKHNsaWRlRWwpIHtcbiAgcmV0dXJuIHNsaWRlRWwucXVlcnlTZWxlY3RvcignLnN3aXBlci1zbGlkZS10cmFuc2Zvcm0nKSB8fCBzbGlkZUVsLnNoYWRvd1Jvb3QgJiYgc2xpZGVFbC5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJy5zd2lwZXItc2xpZGUtdHJhbnNmb3JtJykgfHwgc2xpZGVFbDtcbn1cbmZ1bmN0aW9uIGVsZW1lbnRDaGlsZHJlbihlbGVtZW50LCBzZWxlY3Rvcikge1xuICBpZiAoc2VsZWN0b3IgPT09IHZvaWQgMCkge1xuICAgIHNlbGVjdG9yID0gJyc7XG4gIH1cbiAgY29uc3Qgd2luZG93ID0gZ2V0V2luZG93KCk7XG4gIGNvbnN0IGNoaWxkcmVuID0gWy4uLmVsZW1lbnQuY2hpbGRyZW5dO1xuICBpZiAod2luZG93LkhUTUxTbG90RWxlbWVudCAmJiBlbGVtZW50IGluc3RhbmNlb2YgSFRNTFNsb3RFbGVtZW50KSB7XG4gICAgY2hpbGRyZW4ucHVzaCguLi5lbGVtZW50LmFzc2lnbmVkRWxlbWVudHMoKSk7XG4gIH1cbiAgaWYgKCFzZWxlY3Rvcikge1xuICAgIHJldHVybiBjaGlsZHJlbjtcbiAgfVxuICByZXR1cm4gY2hpbGRyZW4uZmlsdGVyKGVsID0+IGVsLm1hdGNoZXMoc2VsZWN0b3IpKTtcbn1cbmZ1bmN0aW9uIGVsZW1lbnRJc0NoaWxkT2ZTbG90KGVsLCBzbG90KSB7XG4gIC8vIEJyZWFkdGgtZmlyc3Qgc2VhcmNoIHRocm91Z2ggYWxsIHBhcmVudCdzIGNoaWxkcmVuIGFuZCBhc3NpZ25lZCBlbGVtZW50c1xuICBjb25zdCBlbGVtZW50c1F1ZXVlID0gW3Nsb3RdO1xuICB3aGlsZSAoZWxlbWVudHNRdWV1ZS5sZW5ndGggPiAwKSB7XG4gICAgY29uc3QgZWxlbWVudFRvQ2hlY2sgPSBlbGVtZW50c1F1ZXVlLnNoaWZ0KCk7XG4gICAgaWYgKGVsID09PSBlbGVtZW50VG9DaGVjaykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGVsZW1lbnRzUXVldWUucHVzaCguLi5lbGVtZW50VG9DaGVjay5jaGlsZHJlbiwgLi4uKGVsZW1lbnRUb0NoZWNrLnNoYWRvd1Jvb3QgPyBlbGVtZW50VG9DaGVjay5zaGFkb3dSb290LmNoaWxkcmVuIDogW10pLCAuLi4oZWxlbWVudFRvQ2hlY2suYXNzaWduZWRFbGVtZW50cyA/IGVsZW1lbnRUb0NoZWNrLmFzc2lnbmVkRWxlbWVudHMoKSA6IFtdKSk7XG4gIH1cbn1cbmZ1bmN0aW9uIGVsZW1lbnRJc0NoaWxkT2YoZWwsIHBhcmVudCkge1xuICBjb25zdCB3aW5kb3cgPSBnZXRXaW5kb3coKTtcbiAgbGV0IGlzQ2hpbGQgPSBwYXJlbnQuY29udGFpbnMoZWwpO1xuICBpZiAoIWlzQ2hpbGQgJiYgd2luZG93LkhUTUxTbG90RWxlbWVudCAmJiBwYXJlbnQgaW5zdGFuY2VvZiBIVE1MU2xvdEVsZW1lbnQpIHtcbiAgICBjb25zdCBjaGlsZHJlbiA9IFsuLi5wYXJlbnQuYXNzaWduZWRFbGVtZW50cygpXTtcbiAgICBpc0NoaWxkID0gY2hpbGRyZW4uaW5jbHVkZXMoZWwpO1xuICAgIGlmICghaXNDaGlsZCkge1xuICAgICAgaXNDaGlsZCA9IGVsZW1lbnRJc0NoaWxkT2ZTbG90KGVsLCBwYXJlbnQpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaXNDaGlsZDtcbn1cbmZ1bmN0aW9uIHNob3dXYXJuaW5nKHRleHQpIHtcbiAgdHJ5IHtcbiAgICBjb25zb2xlLndhcm4odGV4dCk7XG4gICAgcmV0dXJuO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICAvLyBlcnJcbiAgfVxufVxuZnVuY3Rpb24gY3JlYXRlRWxlbWVudCh0YWcsIGNsYXNzZXMpIHtcbiAgaWYgKGNsYXNzZXMgPT09IHZvaWQgMCkge1xuICAgIGNsYXNzZXMgPSBbXTtcbiAgfVxuICBjb25zdCBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTtcbiAgZWwuY2xhc3NMaXN0LmFkZCguLi4oQXJyYXkuaXNBcnJheShjbGFzc2VzKSA/IGNsYXNzZXMgOiBjbGFzc2VzVG9Ub2tlbnMoY2xhc3NlcykpKTtcbiAgcmV0dXJuIGVsO1xufVxuZnVuY3Rpb24gZWxlbWVudE9mZnNldChlbCkge1xuICBjb25zdCB3aW5kb3cgPSBnZXRXaW5kb3coKTtcbiAgY29uc3QgZG9jdW1lbnQgPSBnZXREb2N1bWVudCgpO1xuICBjb25zdCBib3ggPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgYm9keSA9IGRvY3VtZW50LmJvZHk7XG4gIGNvbnN0IGNsaWVudFRvcCA9IGVsLmNsaWVudFRvcCB8fCBib2R5LmNsaWVudFRvcCB8fCAwO1xuICBjb25zdCBjbGllbnRMZWZ0ID0gZWwuY2xpZW50TGVmdCB8fCBib2R5LmNsaWVudExlZnQgfHwgMDtcbiAgY29uc3Qgc2Nyb2xsVG9wID0gZWwgPT09IHdpbmRvdyA/IHdpbmRvdy5zY3JvbGxZIDogZWwuc2Nyb2xsVG9wO1xuICBjb25zdCBzY3JvbGxMZWZ0ID0gZWwgPT09IHdpbmRvdyA/IHdpbmRvdy5zY3JvbGxYIDogZWwuc2Nyb2xsTGVmdDtcbiAgcmV0dXJuIHtcbiAgICB0b3A6IGJveC50b3AgKyBzY3JvbGxUb3AgLSBjbGllbnRUb3AsXG4gICAgbGVmdDogYm94LmxlZnQgKyBzY3JvbGxMZWZ0IC0gY2xpZW50TGVmdFxuICB9O1xufVxuZnVuY3Rpb24gZWxlbWVudFByZXZBbGwoZWwsIHNlbGVjdG9yKSB7XG4gIGNvbnN0IHByZXZFbHMgPSBbXTtcbiAgd2hpbGUgKGVsLnByZXZpb3VzRWxlbWVudFNpYmxpbmcpIHtcbiAgICBjb25zdCBwcmV2ID0gZWwucHJldmlvdXNFbGVtZW50U2libGluZzsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICAgIGlmIChzZWxlY3Rvcikge1xuICAgICAgaWYgKHByZXYubWF0Y2hlcyhzZWxlY3RvcikpIHByZXZFbHMucHVzaChwcmV2KTtcbiAgICB9IGVsc2UgcHJldkVscy5wdXNoKHByZXYpO1xuICAgIGVsID0gcHJldjtcbiAgfVxuICByZXR1cm4gcHJldkVscztcbn1cbmZ1bmN0aW9uIGVsZW1lbnROZXh0QWxsKGVsLCBzZWxlY3Rvcikge1xuICBjb25zdCBuZXh0RWxzID0gW107XG4gIHdoaWxlIChlbC5uZXh0RWxlbWVudFNpYmxpbmcpIHtcbiAgICBjb25zdCBuZXh0ID0gZWwubmV4dEVsZW1lbnRTaWJsaW5nOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgaWYgKHNlbGVjdG9yKSB7XG4gICAgICBpZiAobmV4dC5tYXRjaGVzKHNlbGVjdG9yKSkgbmV4dEVscy5wdXNoKG5leHQpO1xuICAgIH0gZWxzZSBuZXh0RWxzLnB1c2gobmV4dCk7XG4gICAgZWwgPSBuZXh0O1xuICB9XG4gI
10350HJldHVybiBuZXh0RWxzO1xufVxuZnVuY3Rpb24gZWxlbWVudFN0eWxlKGVsLCBwcm9wKSB7XG4gIGNvbnN0IHdpbmRvdyA9IGdldFdpbmRvdygpO1xuICByZXR1cm4gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUocHJvcCk7XG59XG5mdW5jdGlvbiBlbGVtZW50SW5kZXgoZWwpIHtcbiAgbGV0IGNoaWxkID0gZWw7XG4gIGxldCBpO1xuICBpZiAoY2hpbGQpIHtcbiAgICBpID0gMDtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB3aGlsZSAoKGNoaWxkID0gY2hpbGQucHJldmlvdXNTaWJsaW5nKSAhPT0gbnVsbCkge1xuICAgICAgaWYgKGNoaWxkLm5vZGVUeXBlID09PSAxKSBpICs9IDE7XG4gICAgfVxuICAgIHJldHVybiBpO1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5mdW5jdGlvbiBlbGVtZW50UGFyZW50cyhlbCwgc2VsZWN0b3IpIHtcbiAgY29uc3QgcGFyZW50cyA9IFtdOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gIGxldCBwYXJlbnQgPSBlbC5wYXJlbnRFbGVtZW50OyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gIHdoaWxlIChwYXJlbnQpIHtcbiAgICBpZiAoc2VsZWN0b3IpIHtcbiAgICAgIGlmIChwYXJlbnQubWF0Y2hlcyhzZWxlY3RvcikpIHBhcmVudHMucHVzaChwYXJlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJlbnRzLnB1c2gocGFyZW50KTtcbiAgICB9XG4gICAgcGFyZW50ID0gcGFyZW50LnBhcmVudEVsZW1lbnQ7XG4gIH1cbiAgcmV0dXJuIHBhcmVudHM7XG59XG5mdW5jdGlvbiBlbGVtZW50VHJhbnNpdGlvbkVuZChlbCwgY2FsbGJhY2spIHtcbiAgZnVuY3Rpb24gZmlyZUNhbGxCYWNrKGUpIHtcbiAgICBpZiAoZS50YXJnZXQgIT09IGVsKSByZXR1cm47XG4gICAgY2FsbGJhY2suY2FsbChlbCwgZSk7XG4gICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIGZpcmVDYWxsQmFjayk7XG4gIH1cbiAgaWYgKGNhbGxiYWNrKSB7XG4gICAgZWwuYWRkRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIGZpcmVDYWxsQmFjayk7XG4gIH1cbn1cbmZ1bmN0aW9uIGVsZW1lbnRPdXRlclNpemUoZWwsIHNpemUsIGluY2x1ZGVNYXJnaW5zKSB7XG4gIGNvbnN0IHdpbmRvdyA9IGdldFdpbmRvdygpO1xuICBpZiAoaW5jbHVkZU1hcmdpbnMpIHtcbiAgICByZXR1cm4gZWxbc2l6ZSA9PT0gJ3dpZHRoJyA/ICdvZmZzZXRXaWR0aCcgOiAnb2Zmc2V0SGVpZ2h0J10gKyBwYXJzZUZsb2F0KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKHNpemUgPT09ICd3aWR0aCcgPyAnbWFyZ2luLXJpZ2h0JyA6ICdtYXJnaW4tdG9wJykpICsgcGFyc2VGbG9hdCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShzaXplID09PSAnd2lkdGgnID8gJ21hcmdpbi1sZWZ0JyA6ICdtYXJnaW4tYm90dG9tJykpO1xuICB9XG4gIHJldHVybiBlbC5vZmZzZXRXaWR0aDtcbn1cbmZ1bmN0aW9uIG1ha2VFbGVtZW50c0FycmF5KGVsKSB7XG4gIHJldHVybiAoQXJyYXkuaXNBcnJheShlbCkgPyBlbCA6IFtlbF0pLmZpbHRlcihlID0+ICEhZSk7XG59XG5mdW5jdGlvbiBnZXRSb3RhdGVGaXgoc3dpcGVyKSB7XG4gIHJldHVybiB2ID0+IHtcbiAgICBpZiAoTWF0aC5hYnModikgPiAwICYmIHN3aXBlci5icm93c2VyICYmIHN3aXBlci5icm93c2VyLm5lZWQzZEZpeCAmJiBNYXRoLmFicyh2KSAlIDkwID09PSAwKSB7XG4gICAgICByZXR1cm4gdiArIDAuMDAxO1xuICAgIH1cbiAgICByZXR1cm4gdjtcbiAgfTtcbn1cbmZ1bmN0aW9uIHNldElubmVySFRNTChlbCwgaHRtbCkge1xuICBpZiAoaHRtbCA9PT0gdm9pZCAwKSB7XG4gICAgaHRtbCA9ICcnO1xuICB9XG4gIGlmICh0eXBlb2YgdHJ1c3RlZFR5cGVzICE9PSAndW5kZWZpbmVkJykge1xuICAgIGVsLmlubmVySFRNTCA9IHRydXN0ZWRUeXBlcy5jcmVhdGVQb2xpY3koJ2h0bWwnLCB7XG4gICAgICBjcmVhdGVIVE1MOiBzID0+IHNcbiAgICB9KS5jcmVhdGVIVE1MKGh0bWwpO1xuICB9IGVsc2Uge1xuICAgIGVsLmlubmVySFRNTCA9IGh0bWw7XG4gIH1cbn1cblxuZXhwb3J0IHsgc2V0Q1NTUHJvcGVydHkgYXMgYSwgZWxlbWVudFBhcmVudHMgYXMgYiwgY3JlYXRlRWxlbWVudCBhcyBjLCBlbGVtZW50T2Zmc2V0IGFzIGQsIGVsZW1lbnRDaGlsZHJlbiBhcyBlLCBub3cgYXMgZiwgZ2V0U2xpZGVUcmFuc2Zvcm1FbCBhcyBnLCBlbGVtZW50T3V0ZXJTaXplIGFzIGgsIGVsZW1lbnRJbmRleCBhcyBpLCBjbGFzc2VzVG9Ub2tlbnMgYXMgaiwgZ2V0VHJhbnNsYXRlIGFzIGssIGVsZW1lbnRUcmFuc2l0aW9uRW5kIGFzIGwsIG1ha2VFbGVtZW50c0FycmF5IGFzIG0sIG5leHRUaWNrIGFzIG4sIGlzT2JqZWN0IGFzIG8sIGdldFJvdGF0ZUZpeCBhcyBwLCBlbGVtZW50U3R5bGUgYXMgcSwgZWxlbWVudE5leHRBbGwgYXMgciwgc2V0SW5uZXJIVE1MIGFzIHMsIGVsZW1lbnRQcmV2QWxsIGFzIHQsIGFuaW1hdGVDU1NNb2RlU2Nyb2xsIGFzIHUsIHNob3dXYXJuaW5nIGFzIHYsIGVsZW1lbnRJc0NoaWxkT2YgYXMgdywgZXh0ZW5kIGFzIHgsIGRlbGV0ZVByb3BzIGFzIHkgfTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=
10351//# sourceURL=webpack-internal:///../node_modules/swiper/shared/utils.mjs
10352
10353}`)},"../node_modules/swiper/swiper.mjs"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval(`{__webpack_require__.r(__webpack_exports__);
10354/* harmony export */ __webpack_require__.d(__webpack_exports__, {
10355/* harmony export */   Swiper: () => (/* reexport safe */ _shared_swiper_core_mjs__WEBPACK_IMPORTED_MODULE_0__.S),
10356/* harmony export */   "default": () => (/* reexport safe */ _shared_swiper_core_mjs__WEBPACK_IMPORTED_MODULE_0__.S)
10357/* harmony export */ });
10358/* harmony import */ var _shared_swiper_core_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./shared/swiper-core.mjs */ "../node_modules/swiper/shared/swiper-core.mjs");
10359/**
10360 * Swiper 11.2.10
10361 * Most modern mobile touch slider and framework with hardware accelerated transitions
10362 * https://swiperjs.com
10363 *
10364 * Copyright 2014-2025 Vladimir Kharlampidi
10365 *
10366 * Released under the MIT License
10367 *
10368 * Released on: June 28, 2025
10369 */
10370
10371
10372//# sourceURL=[module]
10373//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9zd2lwZXIubWpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0F
10373BRXFFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9zd2lwZXIvc3dpcGVyLm1qcz84ZmVhIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU3dpcGVyIDExLjIuMTBcbiAqIE1vc3QgbW9kZXJuIG1vYmlsZSB0b3VjaCBzbGlkZXIgYW5kIGZyYW1ld29yayB3aXRoIGhhcmR3YXJlIGFjY2VsZXJhdGVkIHRyYW5zaXRpb25zXG4gKiBodHRwczovL3N3aXBlcmpzLmNvbVxuICpcbiAqIENvcHlyaWdodCAyMDE0LTIwMjUgVmxhZGltaXIgS2hhcmxhbXBpZGlcbiAqXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2VcbiAqXG4gKiBSZWxlYXNlZCBvbjogSnVuZSAyOCwgMjAyNVxuICovXG5cbmV4cG9ydCB7IFMgYXMgU3dpcGVyLCBTIGFzIGRlZmF1bHQgfSBmcm9tICcuL3NoYXJlZC9zd2lwZXItY29yZS5tanMnO1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==
10374//# sourceURL=webpack-internal:///../node_modules/swiper/swiper.mjs
10375
10376}`)},"../node_modules/vanilla-lazyload/dist/lazyload.min.js"(module){eval('{!function(e,t){ true?module.exports=t():0
vendor: 7,261 bytes, line 10376
10376}(this,(function(){"use strict";const e="undefined"!=typeof window,t=e&&!("onscroll"in window)||"undefined"!=typeof navigator&&/(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent),a=e&&window.devicePixelRatio>1,n={elements_selector:".lazy",container:t||e?document:null,threshold:300,thresholds:null,data_src:"src",data_srcset:"srcset",data_sizes:"sizes",data_bg:"bg",data_bg_hidpi:"bg-hidpi",data_bg_multi:"bg-multi",data_bg_multi_hidpi:"bg-multi-hidpi",data_bg_set:"bg-set",data_poster:"poster",class_applied:"applied",class_loading:"loading",class_loaded:"loaded",class_error:"error",class_entered:"entered",class_exited:"exited",unobserve_completed:!0,unobserve_entered:!1,cancel_on_exit:!0,callback_enter:null,callback_exit:null,callback_applied:null,callback_loading:null,callback_loaded:null,callback_error:null,callback_finish:null,callback_cancel:null,use_native:!1,restore_on_error:!1},s=e=>Object.assign({},n,e),l=function(e,t){let a;const n="LazyLoad::Initialized",s=new e(t);try{a=new CustomEvent(n,{detail:{instance:s}})}catch(e){a=document.createEvent("CustomEvent"),a.initCustomEvent(n,!1,!1,{instance:s})}window.dispatchEvent(a)},o="src",r="srcset",i="sizes",d="poster",c="llOriginalAttrs",_="data",u="loading",g="loaded",b="applied",h="error",m="native",p="data-",f="ll-status",v=(e,t)=>e.getAttribute(p+t),E=e=>v(e,f),I=(e,t)=>((e,t,a)=>{const n=p+t;null!==a?e.setAttribute(n,a):e.removeAttribute(n)})(e,f,t),y=e=>I(e,null),k=e=>null===E(e),A=e=>E(e)===m,L=[u,g,b,h],w=(e,t,a,n)=>{e&&"function"==typeof e&&(void 0===n?void 0===a?e(t):e(t,a):e(t,a,n))},x=(t,a)=>{e&&""!==a&&t.classList.add(a)},C=(t,a)=>{e&&""!==a&&t.classList.remove(a)},O=e=>e.llTempImage,M=(e,t)=>{if(!t)return;const a=t._observer;a&&a.unobserve(e)},z=(e,t)=>{e&&(e.loadingCount+=t)},N=(e,t)=>{e&&(e.toLoadCount=t)},T=e=>{let t=[];for(let a,n=0;a=e.children[n];n+=1)"SOURCE"===a.tagName&&t.push(a);return t},R=(e,t)=>{const a=e.parentNode;a&&"PICTURE"===a.tagName&&T(a).forEach(t)},G=(e,t)=>{T(e).forEach(t)},D=[o],H=[o,d],V=[o,r,i],F=[_],j=e=>!!e[c],B=e=>e[c],J=e=>delete e[c],S=(e,t)=>{if(j(e))return;const a={};t.forEach((t=>{a[t]=e.getAttribute(t)})),e[c]=a},P=(e,t)=>{if(!j(e))return;const a=B(e);t.forEach((t=>{((e,t,a)=>{a?e.setAttribute(t,a):e.removeAttribute(t)})(e,t,a[t])}))},U=(e,t,a)=>{x(e,t.class_applied),I(e,b),a&&(t.unobserve_completed&&M(e,t),w(t.callback_applied,e,a))},$=(e,t,a)=>{x(e,t.class_loading),I(e,u),a&&(z(a,1),w(t.callback_loading,e,a))},q=(e,t,a)=>{a&&e.setAttribute(t,a)},K=(e,t)=>{q(e,i,v(e,t.data_sizes)),q(e,r,v(e,t.data_srcset)),q(e,o,v(e,t.data_src))},Q={IMG:(e,t)=>{R(e,(e=>{S(e,V),K(e,t)})),S(e,V),K(e,t)},IFRAME:(e,t)=>{S(e,D),q(e,o,v(e,t.data_src))},VIDEO:(e,t)=>{G(e,(e=>{S(e,D),q(e,o,v(e,t.data_src))})),S(e,H),q(e,d,v(e,t.data_poster)),q(e,o,v(e,t.data_src)),e.load()},OBJECT:(e,t)=>{S(e,F),q(e,_,v(e,t.data_src))}},W=["IMG","IFRAME","VIDEO","OBJECT"],X=(e,t)=>{!t||(e=>e.loadingCount>0)(t)||(e=>e.toLoadCount>0)(t)||w(e.callback_finish,t)},Y=(e,t,a)=>{e.addEventListener(t,a),e.llEvLisnrs[t]=a},Z=(e,t,a)=>{e.removeEventListener(t,a)},ee=e=>!!e.llEvLisnrs,te=e=>{if(!ee(e))return;const t=e.llEvLisnrs;for(let a in t){const n=t[a];Z(e,a,n)}delete e.llEvLisnrs},ae=(e,t,a)=>{(e=>{delete e.llTempImage})(e),z(a,-1),(e=>{e&&(e.toLoadCount-=1)})(a),C(e,t.class_loading),t.unobserve_completed&&M(e,a)},ne=(e,t,a)=>{const n=O(e)||e;ee(n)||((e,t,a)=>{ee(e)||(e.llEvLisnrs={});const n="VIDEO"===e.tagName?"loadeddata":"load";Y(e,n,t),Y(e,"error",a)})(n,(s=>{((e,t,a,n)=>{const s=A(t);ae(t,a,n),x(t,a.class_loaded),I(t,g),w(a.callback_loaded,t,n),s||X(a,n)})(0,e,t,a),te(n)}),(s=>{((e,t,a,n)=>{const s=A(t);ae(t,a,n),x(t,a.class_error),I(t,h),w(a.callback_error,t,n),a.restore_on_error&&P(t,V),s||X(a,n)})(0,e,t,a),te(n)}))},se=(e,t,n)=>{(e=>W.indexOf(e.tagName)>-1)(e)?((e,t,a)=>{ne(e,t,a),((e,t,a)=>{const n=Q[e.tagName];n&&(n(e,t),$(e,t,a))})(e,t,a)})(e,t,n):((e,t,n)=>{(e=>{e.llTempImage=document.createElement("IMG")})(e),ne(e,t,n),(e=>{j(e)||(e[c]={backgroundImage:e.style.backgroundImage})})(e),((e,t,n)=>{const s=v(e,t.data_bg),l=v(e,t.data_bg_hidpi),r=a&&l?l:s;r&&(e.style.backgroundImage=`url("${r}")`,O(e).setAttribute(o,r),$(e,t,n))})(e,t,n),((e,t,n)=>{const s=v(e,t.data_bg_multi),l=v(e,t.data_bg_multi_hidpi),o=a&&l?l:s;o&&(e.style.backgroundImage=o,U(e,t,n))})(e,t,n),((e,t,a)=>{const n=v(e,t.data_bg_set);if(!n)return;let s=n.split("|").map((e=>`image-set(${e})`));e.style.backgroundImage=s.join(),U(e,t,a)})(e,t,n)})(e,t,n)},le=e=>{e.removeAttribute(o),e.removeAttribute(r),e.removeAttribute(i)},oe=e=>{R(e,(e=>{P(e,V)})),P(e,V)},re={IMG:oe,IFRAME:e=>{P(e,D)},VIDEO:e=>{G(e,(e=>{P(e,D)})),P(e,H),e.load()},OBJECT:e=>{P(e,F)}},ie=(e,t)=>{(e=>{const t=re[e.tagName];t?t(e):(e=>{if(!j(e))return;const t=B(e);e.style.backgroundImage=t.backgroundImage})(e)})(e),((e,t)=>{k(e)||A(e)||(C(e,t.class_entered),C(e,t.class_exited),C(e,t.class_applied),C(e,t.class_loading),C(e,t.class_loaded),C(e,t.class_error))})(e,t),y(e),J(e)},de=["IMG","IFRAME","VIDEO"],ce=e=>e.use_native&&"loading"in HTMLImageElement.prototype,_e=(e,t,a)=>{e.forEach((e=>(e=>e.isIntersecting||e.intersectionRatio>0)(e)?((e,t,a,n)=>{const s=(e=>L.indexOf(E(e))>=0)(e);I(e,"entered"),x(e,a.class_entered),C(e,a.class_exited),((e,t,a)=>{t.unobserve_entered&&M(e,a)})(e,a,n),w(a.callback_enter,e,t,n),s||se(e,a,n)})(e.target,e,t,a):((e,t,a,n)=>{k(e)||(x(e,a.class_exited),((e,t,a,n)=>{a.cancel_on_exit&&(e=>E(e)===u)(e)&&"IMG"===e.tagName&&(te(e),(e=>{R(e,(e=>{le(e)})),le(e)})(e),oe(e),C(e,a.class_loading),z(n,-1),y(e),w(a.callback_cancel,e,t,n))})(e,t,a,n),w(a.callback_exit,e,t,n))})(e.target,e,t,a)))},ue=e=>Array.prototype.slice.call(e),ge=e=>e.container.querySelectorAll(e.elements_selector),be=e=>(e=>E(e)===h)(e),he=(e,t)=>(e=>ue(e).filter(k))(e||ge(t)),me=function(t,a){const n=s(t);this._settings=n,this.loadingCount=0,((e,t)=>{ce(e)||(t._observer=new IntersectionObserver((a=>{_e(a,e,t)}),(e=>({root:e.container===document?null:e.container,rootMargin:e.thresholds||e.threshold+"px"}))(e)))})(n,this),((t,a)=>{e&&(a._onlineHandler=()=>{((e,t)=>{var a;(a=ge(e),ue(a).filter(be)).forEach((t=>{C(t,e.class_error),y(t)})),t.update()})(t,a)},window.addEventListener("online",a._onlineHandler))})(n,this),this.update(a)};return me.prototype={update:function(e){const a=this._settings,n=he(e,a);var s,l;N(this,n.length),t?this.loadAll(n):ce(a)?((e,t,a)=>{e.forEach((e=>{-1!==de.indexOf(e.tagName)&&((e,t,a)=>{e.setAttribute("loading","lazy"),ne(e,t,a),((e,t)=>{const a=Q[e.tagName];a&&a(e,t)})(e,t),I(e,m)})(e,t,a)})),N(a,0)})(n,a,this):(l=n,(e=>{e.disconnect()})(s=this._observer),((e,t)=>{t.forEach((t=>{e.observe(t)}))})(s,l))},destroy:function(){this._observer&&this._observer.disconnect(),e&&window.removeEventListener("online",this._onlineHandler),ge(this._settings).forEach((e=>{J(e)})),delete this._observer,delete this._settings,delete this._onlineHandler,delete this.loadingCount,delete this.toLoadCount},loadAll:function(e){const t=this._settings;he(e,t).forEach((e=>{M(e,this),se(e,t,this)}))},restoreAll:function(){const e=this._settings;ge(e).forEach((t=>{ie(t,e)}))}},me.load=(e,t)=>{const a=s(t);se(e,a)},me.resetStatus=e=>{y(e)},e&&((e,t)=>{if(t)if(t.length)for(let a,n=0;a=t[n];n+=1)l(e,a);else l(e,t)})(me,window.lazyLoadOptions),me}));
10376\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL3ZhbmlsbGEtbGF6eWxvYWQvZGlzdC9sYXp5bG9hZC5taW4uanMiLCJtYXBwaW5ncyI6IkFBQUEsZUFBZSxLQUFvRCxvQkFBb0IsQ0FBa0gsQ0FBQyxrQkFBa0IsYUFBYSwyTEFBMkwsd3FCQUF3cUIsc0JBQXNCLHNCQUFzQixNQUFNLDJDQUEyQyxJQUFJLHFCQUFxQixRQUFRLFlBQVksRUFBRSxTQUFTLGlFQUFpRSxXQUFXLEVBQUUsd0JBQXdCLG1OQUFtTixZQUFZLGtEQUFrRCxpRkFBaUYsc0VBQXNFLFdBQVcsOEJBQThCLFdBQVcsaUNBQWlDLDhCQUE4QixhQUFhLG9CQUFvQixrQkFBa0IsV0FBVyx1QkFBdUIsV0FBVyxxQkFBcUIsT0FBTyxTQUFTLGNBQWMsZ0JBQWdCLHFDQUFxQyxTQUFTLFdBQVcscUJBQXFCLDBDQUEwQyxXQUFXLGdCQUFnQixnRkFBZ0YsZUFBZSxXQUFXLGVBQWUsdUJBQXVCLFVBQVUsV0FBVyxnQkFBZ0IsYUFBYSxlQUFlLFdBQVcsMkNBQTJDLFlBQVksR0FBRyxhQUFhLHlGQUF5RixhQUFhLGtFQUFrRSxhQUFhLHVCQUF1QixXQUFXLDBFQUEwRSxJQUFJLFlBQVksU0FBUyxjQUFjLGlCQUFpQixnQkFBZ0IsOEJBQThCLGVBQWUsU0FBUyw4QkFBOEIsb0VBQW9FLGdCQUFnQiwrQkFBK0IsK0NBQStDLDhFQUE4RSxhQUFhLDBDQUEwQyxhQUFhLDJCQUEyQiw2QkFBNkIsaUJBQWlCLHFCQUFxQixnQkFBZ0IsYUFBYSxTQUFTLG9CQUFvQixjQUFjLEtBQUsscUJBQXFCLGtCQUFrQixzQkFBc0Isd0RBQXdELGNBQWMsZ0JBQWdCLGtCQUFrQix1QkFBdUIsRUFBRSxnREFBZ0Qsd0JBQXdCLFNBQVMsYUFBYSxhQUFhLHdFQUF3RSxpQkFBaUIsT0FBTyxhQUFhLGFBQWEsaUdBQWlHLGlCQUFpQixHQUFHLGNBQWMsMkNBQTJDLHFCQUFxQixxQkFBcUIscUJBQXFCLFNBQVMsb0JBQW9CLEtBQUssNENBQTRDLG9CQUFvQixhQUFhLHdDQUF3QyxFQUFFLGdCQUFnQix5REFBeUQsb0NBQW9DLEVBQUUscUNBQXFDLG9CQUFvQixxRUFBcUUsd0NBQXdDLG9CQUFvQiwyQkFBMkIsYUFBYSx3Q0FBd0MsRUFBRSxLQUFLLDBDQUEwQyxTQUFTLFNBQVMsUUFBUSwrREFBK0QsUUFBUSxTQUFTLE9BQU8sVUFBVSxLQUFLLGtCQUFrQixPQUFPLFdBQVcsU0FBUyxPQUFPLG1CQUFtQixZQUFZLFFBQVEsWUFBWSxLQUFLLHNCQUFzQixZQUFZLGdCQUFnQixhQUFhLDBDQUEwQyxLQUFLLGNBQWMsd0lBQXdJLGlCQUFpQixxR0FBcUcsMkVBQTJFLG1DQUFtQyxtRUFBbUUsNEJBQTRCLGdEQUFnRCwrQkFBK0Isd0NBQXdDLG1FQUFtRSxTQUFTLE1BQU0sU0FBUyx5RUFBeUUscUNBQXFDLG9CQUFvQiw4S0FBOEssYUFBYSw4Q0FBOEMsa0RBQWtELFVBQVUsUUFBUSx1RkFBdUYsUUFBUSxtQkFBbUIsMEJBQTBCLFNBQVMsTUFBTSx3Q0FBd0Msd0JBQXdCLGNBQWMsT0FBTyxxREFBcUQsMEJBQTBCLHFCQUFxQixtQkFBbUIsaUNBQWlDLFFBQVEsb0RBQW9ELGVBQWUsdUNBQXVDLG9EQUFvRCxxQkFBcUIsVUFBVSxjQUFjLFNBQVMsVUFBVSxzQkFBc0IsZUFBZSw2QkFBNkIsZUFBZSxhQUFhLEdBQUcsUUFBUSxvQkFBb0Isd0lBQXdJLEtBQUssMkhBQTJILHFCQUFxQix1QkFBdUIscUJBQXFCLHVCQUF1QixHQUFHLHVCQUF1Qix1QkFBdUIsbUJBQW1CLFFBQVEsSUFBSSxpQkFBaUIsYUFBYSxRQUFRLG9CQUFvQixLQUFLLGFBQWEsK0JBQStCLE9BQU8sWUFBWSxZQUFZLGdDQUFnQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvdmFuaWxsYS1sYXp5bG9hZC9kaXN0L2xhenlsb2FkLm1pbi5qcz9iYWZkIl0sInNvdXJjZXNDb250ZW50IjpbIiFmdW5jdGlvbihlLHQpe1wib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgbW9kdWxlP21vZHVsZS5leHBvcnRzPXQoKTpcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKHQpOihlPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6ZXx8c2VsZikuTGF6eUxvYWQ9dCgpfSh0aGlzLChmdW5jdGlvbigpe1widXNlIHN0cmljdFwiO2NvbnN0IGU9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyx0PWUmJiEoXCJvbnNjcm9sbFwiaW4gd2luZG93KXx8XCJ1bmRlZmluZWRcIiE9dHlwZW9mIG5hdmlnYXRvciYmLyhnbGV8aW5nfHJvKWJvdHxjcmF3bHxzcGlkZXIvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLGE9ZSYmd2luZG93LmRldmljZVBpeGVsUmF0aW8+MSxuPXtlbGVtZW50c19zZWxlY3RvcjpcIi5sYXp5XCIsY29udGFpbmVyOnR8fGU/ZG9jdW1lbnQ6bnVsbCx0aHJlc2hvbGQ6MzAwLHRocmVzaG9sZHM6bnVsbCxkYXRhX3NyYzpcInNyY1wiLGRhdGFfc3Jjc2V0Olwic3Jjc2V0XCIsZGF0YV9zaXplczpcInNpemVzXCIsZGF0YV9iZzpcImJnXCIsZGF0YV9iZ19oaWRwaTpcImJnLWhpZHBpXCIsZGF0YV9iZ19tdWx0aTpcImJnLW11bHRpXCIsZGF0YV9iZ19tdWx0aV9oaWRwaTpcImJnLW11bHRpLWhpZHBpXCIsZGF0YV9iZ19zZXQ6XCJiZy1zZXRcIixkYXRhX3Bvc3RlcjpcInBvc3RlclwiLGNsYXNzX2FwcGxpZWQ6XCJhcHBsaWVkXCIsY2xhc3NfbG9hZGluZzpcImxvYWRpbmdcIixjbGFzc19sb2FkZWQ6XCJsb2FkZWRcIixjbGFzc19lcnJvcjpcImVycm9yXCIsY2xhc3NfZW50ZXJlZDpcImVudGVyZWRcIixjbGFzc19leGl0ZWQ6XCJleGl0ZWRcIix1bm9ic2VydmVfY29tcGxldGVkOiEwLHVub2JzZXJ2ZV9lbnRlcmVkOiExLGNhbmNlbF9vbl9leGl0OiEwLGNhbGxiYWNrX2VudGVyOm51bGwsY2FsbGJhY2tfZXhpdDpudWxsLGNhbGxiYWNrX2FwcGxpZWQ6bnVsbCxjYWxsYmFja19sb2FkaW5nOm51bGwsY2FsbGJhY2tfbG9hZGVkOm51bGwsY2FsbGJhY2tfZXJyb3I6bnVsbCxjYWxsYmFja19maW5pc2g6bnVsbCxjYWxsYmFja19jYW5jZWw6bnVsbCx1c2VfbmF0aXZlOiExLHJlc3RvcmVfb25fZXJyb3I6ITF9LHM9ZT0+T2JqZWN0LmFzc2lnbih7fSxuLGUpLGw9ZnVuY3Rpb24oZSx0KXtsZXQgYTtjb25zdCBuPVwiTGF6eUxvYWQ6OkluaXRpYWxpemVkXCIscz1uZXcgZSh0KTt0cnl7YT1uZXcgQ3VzdG9tRXZlbnQobix7ZG
10376V0YWlsOntpbnN0YW5jZTpzfX0pfWNhdGNoKGUpe2E9ZG9jdW1lbnQuY3JlYXRlRXZlbnQoXCJDdXN0b21FdmVudFwiKSxhLmluaXRDdXN0b21FdmVudChuLCExLCExLHtpbnN0YW5jZTpzfSl9d2luZG93LmRpc3BhdGNoRXZlbnQoYSl9LG89XCJzcmNcIixyPVwic3Jjc2V0XCIsaT1cInNpemVzXCIsZD1cInBvc3RlclwiLGM9XCJsbE9yaWdpbmFsQXR0cnNcIixfPVwiZGF0YVwiLHU9XCJsb2FkaW5nXCIsZz1cImxvYWRlZFwiLGI9XCJhcHBsaWVkXCIsaD1cImVycm9yXCIsbT1cIm5hdGl2ZVwiLHA9XCJkYXRhLVwiLGY9XCJsbC1zdGF0dXNcIix2PShlLHQpPT5lLmdldEF0dHJpYnV0ZShwK3QpLEU9ZT0+dihlLGYpLEk9KGUsdCk9PigoZSx0LGEpPT57Y29uc3Qgbj1wK3Q7bnVsbCE9PWE/ZS5zZXRBdHRyaWJ1dGUobixhKTplLnJlbW92ZUF0dHJpYnV0ZShuKX0pKGUsZix0KSx5PWU9PkkoZSxudWxsKSxrPWU9Pm51bGw9PT1FKGUpLEE9ZT0+RShlKT09PW0sTD1bdSxnLGIsaF0sdz0oZSx0LGEsbik9PntlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBlJiYodm9pZCAwPT09bj92b2lkIDA9PT1hP2UodCk6ZSh0LGEpOmUodCxhLG4pKX0seD0odCxhKT0+e2UmJlwiXCIhPT1hJiZ0LmNsYXNzTGlzdC5hZGQoYSl9LEM9KHQsYSk9PntlJiZcIlwiIT09YSYmdC5jbGFzc0xpc3QucmVtb3ZlKGEpfSxPPWU9PmUubGxUZW1wSW1hZ2UsTT0oZSx0KT0+e2lmKCF0KXJldHVybjtjb25zdCBhPXQuX29ic2VydmVyO2EmJmEudW5vYnNlcnZlKGUpfSx6PShlLHQpPT57ZSYmKGUubG9hZGluZ0NvdW50Kz10KX0sTj0oZSx0KT0+e2UmJihlLnRvTG9hZENvdW50PXQpfSxUPWU9PntsZXQgdD1bXTtmb3IobGV0IGEsbj0wO2E9ZS5jaGlsZHJlbltuXTtuKz0xKVwiU09VUkNFXCI9PT1hLnRhZ05hbWUmJnQucHVzaChhKTtyZXR1cm4gdH0sUj0oZSx0KT0+e2NvbnN0IGE9ZS5wYXJlbnROb2RlO2EmJlwiUElDVFVSRVwiPT09YS50YWdOYW1lJiZUKGEpLmZvckVhY2godCl9LEc9KGUsdCk9PntUKGUpLmZvckVhY2godCl9LEQ9W29dLEg9W28sZF0sVj1bbyxyLGldLEY9W19dLGo9ZT0+ISFlW2NdLEI9ZT0+ZVtjXSxKPWU9PmRlbGV0ZSBlW2NdLFM9KGUsdCk9PntpZihqKGUpKXJldHVybjtjb25zdCBhPXt9O3QuZm9yRWFjaCgodD0+e2FbdF09ZS5nZXRBdHRyaWJ1dGUodCl9KSksZVtjXT1hfSxQPShlLHQpPT57aWYoIWooZSkpcmV0dXJuO2NvbnN0IGE9QihlKTt0LmZvckVhY2goKHQ9PnsoKGUsdCxhKT0+e2E/ZS5zZXRBdHRyaWJ1dGUodCxhKTplLnJlbW92ZUF0dHJpYnV0ZSh0KX0pKGUsdCxhW3RdKX0pKX0sVT0oZSx0LGEpPT57eChlLHQuY2xhc3NfYXBwbGllZCksSShlLGIpLGEmJih0LnVub2JzZXJ2ZV9jb21wbGV0ZWQmJk0oZSx0KSx3KHQuY2FsbGJhY2tfYXBwbGllZCxlLGEpKX0sJD0oZSx0LGEpPT57eChlLHQuY2xhc3NfbG9hZGluZyksSShlLHUpLGEmJih6KGEsMSksdyh0LmNhbGxiYWNrX2xvYWRpbmcsZSxhKSl9LHE9KGUsdCxhKT0+e2EmJmUuc2V0QXR0cmlidXRlKHQsYSl9LEs9KGUsdCk9PntxKGUsaSx2KGUsdC5kYXRhX3NpemVzKSkscShlLHIsdihlLHQuZGF0YV9zcmNzZXQpKSxxKGUsbyx2KGUsdC5kYXRhX3NyYykpfSxRPXtJTUc6KGUsdCk9PntSKGUsKGU9PntTKGUsViksSyhlLHQpfSkpLFMoZSxWKSxLKGUsdCl9LElGUkFNRTooZSx0KT0+e1MoZSxEKSxxKGUsbyx2KGUsdC5kYXRhX3NyYykpfSxWSURFTzooZSx0KT0+e0coZSwoZT0+e1MoZSxEKSxxKGUsbyx2KGUsdC5kYXRhX3NyYykpfSkpLFMoZSxIKSxxKGUsZCx2KGUsdC5kYXRhX3Bvc3RlcikpLHEoZSxvLHYoZSx0LmRhdGFfc3JjKSksZS5sb2FkKCl9LE9CSkVDVDooZSx0KT0+e1MoZSxGKSxxKGUsXyx2KGUsdC5kYXRhX3NyYykpfX0sVz1bXCJJTUdcIixcIklGUkFNRVwiLFwiVklERU9cIixcIk9CSkVDVFwiXSxYPShlLHQpPT57IXR8fChlPT5lLmxvYWRpbmdDb3VudD4wKSh0KXx8KGU9PmUudG9Mb2FkQ291bnQ+MCkodCl8fHcoZS5jYWxsYmFja19maW5pc2gsdCl9LFk9KGUsdCxhKT0+e2UuYWRkRXZlbnRMaXN0ZW5lcih0LGEpLGUubGxFdkxpc25yc1t0XT1hfSxaPShlLHQsYSk9PntlLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxhKX0sZWU9ZT0+ISFlLmxsRXZMaXNucnMsdGU9ZT0+e2lmKCFlZShlKSlyZXR1cm47Y29uc3QgdD1lLmxsRXZMaXNucnM7Zm9yKGxldCBhIGluIHQpe2NvbnN0IG49dFthXTtaKGUsYSxuKX1kZWxldGUgZS5sbEV2TGlzbnJzfSxhZT0oZSx0LGEpPT57KGU9PntkZWxldGUgZS5sbFRlbXBJbWFnZX0pKGUpLHooYSwtMSksKGU9PntlJiYoZS50b0xvYWRDb3VudC09MSl9KShhKSxDKGUsdC5jbGFzc19sb2FkaW5nKSx0LnVub2JzZXJ2ZV9jb21wbGV0ZWQmJk0oZSxhKX0sbmU9KGUsdCxhKT0+e2NvbnN0IG49TyhlKXx8ZTtlZShuKXx8KChlLHQsYSk9PntlZShlKXx8KGUubGxFdkxpc25ycz17fSk7Y29uc3Qgbj1cIlZJREVPXCI9PT1lLnRhZ05hbWU/XCJsb2FkZWRkYXRhXCI6XCJsb2FkXCI7WShlLG4sdCksWShlLFwiZXJyb3JcIixhKX0pKG4sKHM9PnsoKGUsdCxhLG4pPT57Y29uc3Qgcz1BKHQpO2FlKHQsYSxuKSx4KHQsYS5jbGFzc19sb2FkZWQpLEkodCxnKSx3KGEuY2FsbGJhY2tfbG9hZGVkLHQsbiksc3x8WChhLG4pfSkoMCxlLHQsYSksdGUobil9KSwocz0+eygoZSx0LGEsbik9Pntjb25zdCBzPUEodCk7YWUodCxhLG4pLHgodCxhLmNsYXNzX2Vycm9yKSxJKHQsaCksdyhhLmNhbGxiYWNrX2Vycm9yLHQsbiksYS5yZXN0b3JlX29uX2Vycm9yJiZQKHQsViksc3x8WChhLG4pfSkoMCxlLHQsYSksdGUobil9KSl9LHNlPShlLHQsbik9PnsoZT0+Vy5pbmRleE9mKGUudGFnTmFtZSk+LTEpKGUpPygoZSx0LGEpPT57bmUoZSx0LGEpLCgoZSx0LGEpPT57Y29uc3Qgbj1RW2UudGFnTmFtZV07biYmKG4oZSx0KSwkKGUsdCxhKSl9KShlLHQsYSl9KShlLHQsbik6KChlLHQsbik9PnsoZT0+e2UubGxUZW1wSW1hZ2U9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcIklNR1wiKX0pKGUpLG5lKGUsdCxuKSwoZT0+e2ooZSl8fChlW2NdPXtiYWNrZ3JvdW5kSW1hZ2U6ZS5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2V9KX0pKGUpLCgoZSx0LG4pPT57Y29uc3Qgcz12KGUsdC5kYXRhX2JnKSxsPXYoZSx0LmRhdGFfYmdfaGlkcGkpLHI9YSYmbD9sOnM7ciYmKGUuc3R5bGUuYmFja2dyb3VuZEltYWdlPWB1cmwoXCIke3J9XCIpYCxPKGUpLnNldEF0dHJpYnV0ZShvLHIpLCQoZSx0LG4pKX0pKGUsdCxuKSwoKGUsdCxuKT0+e2NvbnN0IHM9dihlLHQuZGF0YV9iZ19tdWx0aSksbD12KGUsdC5kYXRhX2JnX211bHRpX2hpZHBpKSxvPWEmJmw/bDpzO28mJihlLnN0eWxlLmJhY2tncm91bmRJbWFnZT1vLFUoZSx0LG4pKX0pKGUsdCxuKSwoKGUsdCxhKT0+e2NvbnN0IG49dihlLHQuZGF0YV9iZ19zZXQpO2lmKCFuKXJldHVybjtsZXQgcz1uLnNwbGl0KFwifFwiKS5tYXAoKGU9PmBpbWFnZS1zZXQoJHtlfSlgKSk7ZS5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2U9cy5qb2luKCksVShlLHQsYSl9KShlLHQsbil9KShlLHQsbil9LGxlPWU9PntlLnJlbW92ZUF0dHJpYnV0ZShvKSxlLnJlbW92ZUF0dHJpYnV0ZShyKSxlLnJlbW92ZUF0dHJpYnV0ZShpKX0sb2U9ZT0+e1IoZSwoZT0+e1AoZSxWKX0pKSxQKGUsVil9LHJlPXtJTUc6b2UsSUZSQU1FOmU9PntQKGUsRCl9LFZJREVPOmU9PntHKGUsKGU9PntQKGUsRCl9KSksUChlLEgpLGUubG9hZCgpfSxPQkpFQ1Q6ZT0+e1AoZSxGKX19LGllPShlLHQpPT57KGU9Pntjb25zdCB0PXJlW2UudGFnTmFtZV07dD90KGUpOihlPT57aWYoIWooZSkpcmV0dXJuO2NvbnN0IHQ9QihlKTtlLnN0eWxlLmJhY2tncm91bmRJbWFnZT10LmJhY2tncm91bmRJbWFnZX0pKGUpfSkoZSksKChlLHQpPT57ayhlKXx8QShlKXx8KEMoZSx0LmNsYXNzX2VudGVyZWQpLEMoZSx0LmNsYXNzX2V4aXRlZCksQyhlLHQuY2xhc3NfYXBwbGllZCksQyhlLHQuY2xhc3NfbG9hZGluZyksQyhlLHQuY2xhc3NfbG9hZGVkKSxDKGUsdC5jbGFzc19lcnJvcikpfSkoZSx0KSx5KGUpLEooZSl9LGRlPVtcIklNR1wiLFwiSUZSQU1FXCIsXCJWSURFT1wiXSxjZT1lPT5lLnVzZV9uYXRpdmUmJlwibG9hZGluZ1wiaW4gSFRNTEltYWdlRWxlbWVudC5wcm90b3R5cGUsX2U9KGUsdCxhKT0+e2UuZm9yRWFjaCgoZT0+KGU9PmUuaXNJbnRlcnNlY3Rpbmd8fGUuaW50ZXJzZWN0aW9uUmF0aW8+MCkoZSk/KChlLHQsYSxuKT0+e2NvbnN0IHM9KGU9PkwuaW5kZXhPZihFKGUpKT49MCkoZSk7SShlLFwiZW50ZXJlZFwiKSx4KGUsYS5jbGFzc19lbnRlcmVkKSxDKGUsYS5jbGFzc19leGl0ZWQpLCgoZSx0LGEpPT57dC51bm9ic2VydmVfZW50ZXJlZCYmTShlLGEpfSkoZSxhLG4pLHcoYS5jYWxsYmFja19lbnRlcixlLHQsbiksc3x8c2UoZSxhLG4pfSkoZS50YXJnZXQsZSx0LGEpOigoZSx0LGEsbik9PntrKGUpfHwoeChlLGEuY2xhc3NfZXhpdGVkKSwoKGUsdCxhLG4pPT57YS5jYW5jZWxfb25fZXhpdCYmKGU9PkUoZSk9PT11KShlKSYmXCJJTUdcIj09PWUudGFnTmFtZSYmKHRlKGUpLChlPT57UihlLChlPT57bGUoZSl9KSksbGUoZSl9KShl
10376KSxvZShlKSxDKGUsYS5jbGFzc19sb2FkaW5nKSx6KG4sLTEpLHkoZSksdyhhLmNhbGxiYWNrX2NhbmNlbCxlLHQsbikpfSkoZSx0LGEsbiksdyhhLmNhbGxiYWNrX2V4aXQsZSx0LG4pKX0pKGUudGFyZ2V0LGUsdCxhKSkpfSx1ZT1lPT5BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlKSxnZT1lPT5lLmNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKGUuZWxlbWVudHNfc2VsZWN0b3IpLGJlPWU9PihlPT5FKGUpPT09aCkoZSksaGU9KGUsdCk9PihlPT51ZShlKS5maWx0ZXIoaykpKGV8fGdlKHQpKSxtZT1mdW5jdGlvbih0LGEpe2NvbnN0IG49cyh0KTt0aGlzLl9zZXR0aW5ncz1uLHRoaXMubG9hZGluZ0NvdW50PTAsKChlLHQpPT57Y2UoZSl8fCh0Ll9vYnNlcnZlcj1uZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKGE9PntfZShhLGUsdCl9KSwoZT0+KHtyb290OmUuY29udGFpbmVyPT09ZG9jdW1lbnQ/bnVsbDplLmNvbnRhaW5lcixyb290TWFyZ2luOmUudGhyZXNob2xkc3x8ZS50aHJlc2hvbGQrXCJweFwifSkpKGUpKSl9KShuLHRoaXMpLCgodCxhKT0+e2UmJihhLl9vbmxpbmVIYW5kbGVyPSgpPT57KChlLHQpPT57dmFyIGE7KGE9Z2UoZSksdWUoYSkuZmlsdGVyKGJlKSkuZm9yRWFjaCgodD0+e0ModCxlLmNsYXNzX2Vycm9yKSx5KHQpfSkpLHQudXBkYXRlKCl9KSh0LGEpfSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm9ubGluZVwiLGEuX29ubGluZUhhbmRsZXIpKX0pKG4sdGhpcyksdGhpcy51cGRhdGUoYSl9O3JldHVybiBtZS5wcm90b3R5cGU9e3VwZGF0ZTpmdW5jdGlvbihlKXtjb25zdCBhPXRoaXMuX3NldHRpbmdzLG49aGUoZSxhKTt2YXIgcyxsO04odGhpcyxuLmxlbmd0aCksdD90aGlzLmxvYWRBbGwobik6Y2UoYSk/KChlLHQsYSk9PntlLmZvckVhY2goKGU9PnstMSE9PWRlLmluZGV4T2YoZS50YWdOYW1lKSYmKChlLHQsYSk9PntlLnNldEF0dHJpYnV0ZShcImxvYWRpbmdcIixcImxhenlcIiksbmUoZSx0LGEpLCgoZSx0KT0+e2NvbnN0IGE9UVtlLnRhZ05hbWVdO2EmJmEoZSx0KX0pKGUsdCksSShlLG0pfSkoZSx0LGEpfSkpLE4oYSwwKX0pKG4sYSx0aGlzKToobD1uLChlPT57ZS5kaXNjb25uZWN0KCl9KShzPXRoaXMuX29ic2VydmVyKSwoKGUsdCk9Pnt0LmZvckVhY2goKHQ9PntlLm9ic2VydmUodCl9KSl9KShzLGwpKX0sZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuX29ic2VydmVyJiZ0aGlzLl9vYnNlcnZlci5kaXNjb25uZWN0KCksZSYmd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJvbmxpbmVcIix0aGlzLl9vbmxpbmVIYW5kbGVyKSxnZSh0aGlzLl9zZXR0aW5ncykuZm9yRWFjaCgoZT0+e0ooZSl9KSksZGVsZXRlIHRoaXMuX29ic2VydmVyLGRlbGV0ZSB0aGlzLl9zZXR0aW5ncyxkZWxldGUgdGhpcy5fb25saW5lSGFuZGxlcixkZWxldGUgdGhpcy5sb2FkaW5nQ291bnQsZGVsZXRlIHRoaXMudG9Mb2FkQ291bnR9LGxvYWRBbGw6ZnVuY3Rpb24oZSl7Y29uc3QgdD10aGlzLl9zZXR0aW5ncztoZShlLHQpLmZvckVhY2goKGU9PntNKGUsdGhpcyksc2UoZSx0LHRoaXMpfSkpfSxyZXN0b3JlQWxsOmZ1bmN0aW9uKCl7Y29uc3QgZT10aGlzLl9zZXR0aW5ncztnZShlKS5mb3JFYWNoKCh0PT57aWUodCxlKX0pKX19LG1lLmxvYWQ9KGUsdCk9Pntjb25zdCBhPXModCk7c2UoZSxhKX0sbWUucmVzZXRTdGF0dXM9ZT0+e3koZSl9LGUmJigoZSx0KT0+e2lmKHQpaWYodC5sZW5ndGgpZm9yKGxldCBhLG49MDthPXRbbl07bis9MSlsKGUsYSk7ZWxzZSBsKGUsdCl9KShtZSx3aW5kb3cubGF6eUxvYWRPcHRpb25zKSxtZX0pKTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../node_modules/vanilla-lazyload/dist/lazyload.min.js\n\n}')},"./src/js/index.js"(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";eval(`{__webpack_require__.r(__webpack_exports__);
10377/* harmony import */ var _scss_index_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../scss/index.scss */ "./src/scss/index.scss");
10378/* harmony import */ var vanilla_lazyload__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vanilla-lazyload */ "../node_modules/vanilla-lazyload/dist/lazyload.min.js");
10379/* harmony import */ var vanilla_lazyload__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(vanilla_lazyload__WEBPACK_IMPORTED_MODULE_1__);
10380/* harmony import */ var _js_sections_section_weeby_product_details__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../js/sections/section-weeby-product-details */ "./src/js/sections/section-weeby-product-details.js");
10381/* harmony import */ var _js_sections_section_weeby_product_details__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_js_sections_section_weeby_product_details__WEBPACK_IMPORTED_MODULE_2__);
10382/* harmony import */ var _js_sections_product_sticky_bar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../js/sections/product-sticky-bar */ "./src/js/sections/product-sticky-bar.js");
10383/* harmony import */ var _js_sections_product_sticky_bar__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_js_sections_product_sticky_bar__WEBPACK_IMPORTED_MODULE_3__);
10384/* harmony import */ var _js_sections_api_product_quick_view__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../js/sections/api-product-quick-view */ "./src/js/sections/api-product-quick-view.js");
10385/* harmony import */ var _js_sections_reference_push_product__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../js/sections/reference-push-product */ "./src/js/sections/reference-push-product.js");
10386/* harmony import */ var _js_sections_main_collection_product_grid__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../js/sections/main-collection-
10386product-grid */ "./src/js/sections/main-collection-product-grid.js");
10387/* harmony import */ var _js_snippets_product_reassurance__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../js/snippets/product-reassurance */ "./src/js/snippets/product-reassurance.js");
10388/* harmony import */ var _js_snippets_product_reassurance__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_js_snippets_product_reassurance__WEBPACK_IMPORTED_MODULE_7__);
10389/* harmony import */ var _js_snippets_description_tabs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../js/snippets/description-tabs */ "./src/js/snippets/description-tabs.js");
10390/* harmony import */ var _js_snippets_description_tabs__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_js_snippets_description_tabs__WEBPACK_IMPORTED_MODULE_8__);
10391/* harmony import */ var _js_snippets_variant_picker__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../js/snippets/variant-picker */ "./src/js/snippets/variant-picker.js");
10392/* harmony import */ var _js_snippets_tracking_drawer__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../js/snippets/tracking-drawer */ "./src/js/snippets/tracking-drawer.js");
10393/* harmony import */ var _js_snippets_tracking_drawer__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_js_snippets_tracking_drawer__WEBPACK_IMPORTED_MODULE_10__);
10394/* harmony import */ var _js_snippets_product_card__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../js/snippets/product-card */ "./src/js/snippets/product-card.js");
10395/* harmony import */ var _js_utils_helper__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../js/utils/helper */ "./src/js/utils/helper.js");
10396
10397
10398
10399//Sections
10400
10401
10402
10403
10404
10405
10406//Snippets
10407
10408
10409
10410
10411
10412
10413//Utils
10414
10415var lazyLoadInstance = new (vanilla_lazyload__WEBPACK_IMPORTED_MODULE_1___default())({});//# sourceURL=[module]
10416//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvanMvaW5kZXguanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBNEI7QU
10416FDWTs7QUFFeEM7QUFDc0Q7QUFDWDtBQUNJO0FBQ0E7QUFDTTs7QUFFckQ7QUFDNEM7QUFDSDtBQUNGO0FBQ0M7QUFDSDs7QUFFckM7QUFDNEI7QUFFNUIsSUFBSUMsZ0JBQWdCLEdBQUcsSUFBSUQseURBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9qcy9pbmRleC5qcz83YmE1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBcIi4uL3Njc3MvaW5kZXguc2Nzc1wiO1xuaW1wb3J0IExhenlMb2FkIGZyb20gJ3ZhbmlsbGEtbGF6eWxvYWQnO1xuXG4vL1NlY3Rpb25zXG5pbXBvcnQgXCIuLi9qcy9zZWN0aW9ucy9zZWN0aW9uLXdlZWJ5LXByb2R1Y3QtZGV0YWlsc1wiO1xuaW1wb3J0ICcuLi9qcy9zZWN0aW9ucy9wcm9kdWN0LXN0aWNreS1iYXInO1xuaW1wb3J0ICcuLi9qcy9zZWN0aW9ucy9hcGktcHJvZHVjdC1xdWljay12aWV3JztcbmltcG9ydCAnLi4vanMvc2VjdGlvbnMvcmVmZXJlbmNlLXB1c2gtcHJvZHVjdCc7XG5pbXBvcnQgXCIuLi9qcy9zZWN0aW9ucy9tYWluLWNvbGxlY3Rpb24tcHJvZHVjdC1ncmlkXCI7XG5cbi8vU25pcHBldHNcbmltcG9ydCAnLi4vanMvc25pcHBldHMvcHJvZHVjdC1yZWFzc3VyYW5jZSc7XG5pbXBvcnQgJy4uL2pzL3NuaXBwZXRzL2Rlc2NyaXB0aW9uLXRhYnMnO1xuaW1wb3J0ICcuLi9qcy9zbmlwcGV0cy92YXJpYW50LXBpY2tlcic7XG5pbXBvcnQgJy4uL2pzL3NuaXBwZXRzL3RyYWNraW5nLWRyYXdlcic7XG5pbXBvcnQgJy4uL2pzL3NuaXBwZXRzL3Byb2R1Y3QtY2FyZCc7XG5cbi8vVXRpbHNcbmltcG9ydCAnLi4vanMvdXRpbHMvaGVscGVyJztcblxudmFyIGxhenlMb2FkSW5zdGFuY2UgPSBuZXcgTGF6eUxvYWQoe30pOyJdLCJuYW1lcyI6WyJMYXp5TG9hZCIsImxhenlMb2FkSW5zdGFuY2UiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==
10417//# sourceURL=webpack-internal:///./src/js/index.js
10418
10419}`)},"./src/js/sections/api-product-quick-view.js"(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";eval(`{__webpack_require__.r(__webpack_exports__);
10420/* harmony import */ var _snippets_variant_picker__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../snippets/variant-picker */ "./src/js/snippets/variant-picker.js");
10421
10422const QUICK_VIEW_SELECTOR = '.product-card__rollover__bottom__info__quick-view';
10423const QUICK_VIEW_CONTAINER_SELECTOR = '.product-card__quick-view-container';
10424const openQuickView = event => {
10425  event.preventDefault();
10426  const button = event.currentTarget;
10427  const handle = button.getAttribute('data-handle');
10428  const container = document.querySelector(QUICK_VIEW_CONTAINER_SELECTOR);
10429  if (!handle || !container) {
10430    return;
10431  }
10432  fetch(\`/products/\${handle}?section_id=api-product-quick-view\`).then(res => res.text()).then(html => {
10433    const parser = new DOMParser();
10434    const doc = parser.parseFromString(html, 'text/html');
10435    const sectionHtml = doc.getElementById('shopify-section-api-product-quick-view');
10436    if (sectionHtml) {
10437      container.classList.add('product-card__quick-view-container--active');
10438      container.innerHTML = sectionHtml.innerHTML;
10439      (0,_snippets_variant_picker__WEBPACK_IMPORTED_MODULE_0__.initVariantList)();
10440      container.querySelectorAll('.main-product__tracking__drawer__header__close-icon').forEach(closeBtn => {
10441        closeBtn.addEventListener('click', () => {
10442          container.classList.remove('product-card__quick-view-container--active');
10443        });
10444      });
10445      const newSlick = container.querySelector('.slick:not(.slick-initialized)');
10446      if (newSlick) {
10447        const slickSettings = JSON.parse(newSlick.getAttribute('data-slick'));
10448        $(newSlick).slick(slickSettings);
10449      }
10450    } else {
10451      container.innerHTML = '<p>Failed to load preview.</p>';
10452    }
10453  }).catch(() => {
10454    container.innerHTML = '<p>Failed to load preview.</p>';
10455  });
10456};
10457const bindQuickViewButton = button => {
10458  if (button.dataset.quickViewBound === 'true') {
10459    return;
10460  }
10461  button.dataset.quickViewBound = 'true';
10462  button.addEventListener('click', openQuickView);
10463};
10464const initQuickView = (scope = document) => {
10465  const root = scope && typeof scope.querySelectorAll === 'function' ? scope : document;
10466  root.querySelectorAll(QUICK_VIEW_SELECTOR).forEach(button => bindQuickViewButton(button));
10467};
10468['DOMContentLoaded', 'weby-next-page-loaded', 'shopify:section:load'].forEach(eventName => {
10469  document.addEventListener(eventName, event => {
10470    initQuickView(event && event.target);
10471  });
10472});
10473initQuickView();//# sourceURL=[module]
10474//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvanMvc2VjdGlvbnMvYXBpLXByb2R1Y3QtcXVpY2stdmlldy5qcyIsIm1hcHBpbmdzIjoiOztBQUE2RDtBQUU3RCxNQUFNQyxtQkFBbUIsR0FBRyxtREFBbUQ7QUFDL0UsTUFBTUMsNkJBQTZCLEdBQUcscUNBQXFDO0FBRTNFLE1BQU1DLGFBQWEsR0FBSUMsS0FBSyxJQUFLO0VBQy9CQSxLQUFLLENBQUNDLGNBQWMsQ0FBQyxDQUFDO0VBRXRCLE1BQU1DLE1BQU0sR0FBR0YsS0FBSyxDQUFDRyxhQUFhO0VBQ2xDLE1BQU1DLE1BQU0sR0FBR0YsTUFBTSxDQUFDRyxZQUFZLENBQUMsYUFBYSxDQUFDO0VBQ2pELE1BQU1DLFNBQVMsR0FBR0MsUUFBUSxDQUFDQyxhQUFhLENBQUNWLDZCQUE2QixDQUFDO0VBRXZFLElBQUksQ0FBQ00sTUFBTSxJQUFJLENBQUNFLFNBQVMsRUFBRTtJQUN6QjtFQUNGO0VBRUFHLEtBQUssQ0FBQyxhQUFhTCxNQUFNLG9DQUFvQyxDQUFDLENBQzNETSxJQUFJLENBQUVDLEdBQUcsSUFBS0EsR0FBRyxDQUFDQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQ3pCRixJQUFJLENBQUVHLElBQUksSUFBSztJQUNkLE1BQU1DLE1BQU0sR0FBRyxJQUFJQyxTQUFTLENBQUMsQ0FBQztJQUM5QixNQUFNQyxHQU
10474FHLEdBQUdGLE1BQU0sQ0FBQ0csZUFBZSxDQUFDSixJQUFJLEVBQUUsV0FBVyxDQUFDO0lBQ3JELE1BQU1LLFdBQVcsR0FBR0YsR0FBRyxDQUFDRyxjQUFjLENBQUMsd0NBQXdDLENBQUM7SUFFaEYsSUFBSUQsV0FBVyxFQUFFO01BQ2ZaLFNBQVMsQ0FBQ2MsU0FBUyxDQUFDQyxHQUFHLENBQUMsNENBQTRDLENBQUM7TUFDckVmLFNBQVMsQ0FBQ2dCLFNBQVMsR0FBR0osV0FBVyxDQUFDSSxTQUFTO01BQzNDMUIseUVBQWUsQ0FBQyxDQUFDO01BRWpCVSxTQUFTLENBQ05pQixnQkFBZ0IsQ0FBQyxxREFBcUQsQ0FBQyxDQUN2RUMsT0FBTyxDQUFFQyxRQUFRLElBQUs7UUFDckJBLFFBQVEsQ0FBQ0MsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLE1BQU07VUFDdkNwQixTQUFTLENBQUNjLFNBQVMsQ0FBQ08sTUFBTSxDQUFDLDRDQUE0QyxDQUFDO1FBQzFFLENBQUMsQ0FBQztNQUNKLENBQUMsQ0FBQztNQUVKLE1BQU1DLFFBQVEsR0FBR3RCLFNBQVMsQ0FBQ0UsYUFBYSxDQUFDLGdDQUFnQyxDQUFDO01BQzFFLElBQUlvQixRQUFRLEVBQUU7UUFDWixNQUFNQyxhQUFhLEdBQUdDLElBQUksQ0FBQ0MsS0FBSyxDQUFDSCxRQUFRLENBQUN2QixZQUFZLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDckUyQixDQUFDLENBQUNKLFFBQVEsQ0FBQyxDQUFDSyxLQUFLLENBQUNKLGFBQWEsQ0FBQztNQUNsQztJQUNGLENBQUMsTUFBTTtNQUNMdkIsU0FBUyxDQUFDZ0IsU0FBUyxHQUFHLGdDQUFnQztJQUN4RDtFQUNGLENBQUMsQ0FBQyxDQUNEWSxLQUFLLENBQUMsTUFBTTtJQUNYNUIsU0FBUyxDQUFDZ0IsU0FBUyxHQUFHLGdDQUFnQztFQUN4RCxDQUFDLENBQUM7QUFDTixDQUFDO0FBRUQsTUFBTWEsbUJBQW1CLEdBQUlqQyxNQUFNLElBQUs7RUFDdEMsSUFBSUEsTUFBTSxDQUFDa0MsT0FBTyxDQUFDQyxjQUFjLEtBQUssTUFBTSxFQUFFO0lBQzVDO0VBQ0Y7RUFFQW5DLE1BQU0sQ0FBQ2tDLE9BQU8sQ0FBQ0MsY0FBYyxHQUFHLE1BQU07RUFDdENuQyxNQUFNLENBQUN3QixnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUzQixhQUFhLENBQUM7QUFDakQsQ0FBQztBQUVELE1BQU11QyxhQUFhLEdBQUdBLENBQUNDLEtBQUssR0FBR2hDLFFBQVEsS0FBSztFQUMxQyxNQUFNaUMsSUFBSSxHQUFHRCxLQUFLLElBQUksT0FBT0EsS0FBSyxDQUFDaEIsZ0JBQWdCLEtBQUssVUFBVSxHQUFHZ0IsS0FBSyxHQUFHaEMsUUFBUTtFQUVyRmlDLElBQUksQ0FDRGpCLGdCQUFnQixDQUFDMUIsbUJBQW1CLENBQUMsQ0FDckMyQixPQUFPLENBQUV0QixNQUFNLElBQUtpQyxtQkFBbUIsQ0FBQ2pDLE1BQU0sQ0FBQyxDQUFDO0FBQ3JELENBQUM7QUFFRCxDQUFDLGtCQUFrQixFQUFFLHVCQUF1QixFQUFFLHNCQUFzQixDQUFDLENBQUNzQixPQUFPLENBQUVpQixTQUFTLElBQUs7RUFDM0ZsQyxRQUFRLENBQUNtQixnQkFBZ0IsQ0FBQ2UsU0FBUyxFQUFHekMsS0FBSyxJQUFLO0lBQzlDc0MsYUFBYSxDQUFDdEMsS0FBSyxJQUFJQSxLQUFLLENBQUMwQyxNQUFNLENBQUM7RUFDdEMsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUZKLGFBQWEsQ0FBQyxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL2pzL3NlY3Rpb25zL2FwaS1wcm9kdWN0LXF1aWNrLXZpZXcuanM/ZmNhZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbml0VmFyaWFudExpc3QgfSBmcm9tIFwiLi4vc25pcHBldHMvdmFyaWFudC1waWNrZXJcIjtcblxuY29uc3QgUVVJQ0tfVklFV19TRUxFQ1RPUiA9ICcucHJvZHVjdC1jYXJkX19yb2xsb3Zlcl9fYm90dG9tX19pbmZvX19xdWljay12aWV3JztcbmNvbnN0IFFVSUNLX1ZJRVdfQ09OVEFJTkVSX1NFTEVDVE9SID0gJy5wcm9kdWN0LWNhcmRfX3F1aWNrLXZpZXctY29udGFpbmVyJztcblxuY29uc3Qgb3BlblF1aWNrVmlldyA9IChldmVudCkgPT4ge1xuICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gIGNvbnN0IGJ1dHRvbiA9IGV2ZW50LmN1cnJlbnRUYXJnZXQ7XG4gIGNvbnN0IGhhbmRsZSA9IGJ1dHRvbi5nZXRBdHRyaWJ1dGUoJ2RhdGEtaGFuZGxlJyk7XG4gIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoUVVJQ0tfVklFV19DT05UQUlORVJfU0VMRUNUT1IpO1xuXG4gIGlmICghaGFuZGxlIHx8ICFjb250YWluZXIpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBmZXRjaChgL3Byb2R1Y3RzLyR7aGFuZGxlfT9zZWN0aW9uX2lkPWFwaS1wcm9kdWN0LXF1aWNrLXZpZXdgKVxuICAgIC50aGVuKChyZXMpID0+IHJlcy50ZXh0KCkpXG4gICAgLnRoZW4oKGh0bWwpID0+IHtcbiAgICAgIGNvbnN0IHBhcnNlciA9IG5ldyBET01QYXJzZXIoKTtcbiAgICAgIGNvbnN0IGRvYyA9IHBhcnNlci5wYXJzZUZyb21TdHJpbmcoaHRtbCwgJ3RleHQvaHRtbCcpO1xuICAgICAgY29uc3Qgc2VjdGlvbkh0bWwgPSBkb2MuZ2V0RWxlbWVudEJ5SWQoJ3Nob3BpZnktc2VjdGlvbi1hcGktcHJvZHVjdC1xdWljay12aWV3Jyk7XG5cbiAgICAgIGlmIChzZWN0aW9uSHRtbCkge1xuICAgICAgICBjb250YWluZXIuY2xhc3NMaXN0LmFkZCgncHJvZHVjdC1jYXJkX19xdWljay12aWV3LWNvbnRhaW5lci0tYWN0aXZlJyk7XG4gICAgICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSBzZWN0aW9uSHRtbC5pbm5lckhUTUw7XG4gICAgICAgIGluaXRWYXJpYW50TGlzdCgpO1xuXG4gICAgICAgIGNvbnRhaW5lclxuICAgICAgICAgIC5xdWVyeVNlbGVjdG9yQWxsKCcubWFpbi1wcm9kdWN0X190cmFja2luZ19fZHJhd2VyX19oZWFkZXJfX2Nsb3NlLWljb24nKVxuICAgICAgICAgIC5mb3JFYWNoKChjbG9zZUJ0bikgPT4ge1xuICAgICAgICAgICAgY2xvc2VCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKCdwcm9kdWN0LWNhcmRfX3F1aWNrLXZpZXctY29udGFpbmVyLS1hY3RpdmUnKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IG5ld1NsaWNrID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJy5zbGljazpub3QoLnNsaWNrLWluaXRpYWxpemVkKScpO1xuICAgICAgICBpZiAobmV3U2xpY2spIHtcbiAgICAgICAgICBjb25zdCBzbGlja1NldHRpbmdzID0gSlNPTi5wYXJzZShuZXdTbGljay5nZXRBdHRyaWJ1dGUoJ2RhdGEtc2xpY2snKSk7XG4gICAgICAgICAgJChuZXdTbGljaykuc2xpY2soc2xpY2tTZXR0aW5ncyk7XG4gICAgICAgI
10474H1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSAnPHA+RmFpbGVkIHRvIGxvYWQgcHJldmlldy48L3A+JztcbiAgICAgIH1cbiAgICB9KVxuICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICBjb250YWluZXIuaW5uZXJIVE1MID0gJzxwPkZhaWxlZCB0byBsb2FkIHByZXZpZXcuPC9wPic7XG4gICAgfSk7XG59O1xuXG5jb25zdCBiaW5kUXVpY2tWaWV3QnV0dG9uID0gKGJ1dHRvbikgPT4ge1xuICBpZiAoYnV0dG9uLmRhdGFzZXQucXVpY2tWaWV3Qm91bmQgPT09ICd0cnVlJykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGJ1dHRvbi5kYXRhc2V0LnF1aWNrVmlld0JvdW5kID0gJ3RydWUnO1xuICBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBvcGVuUXVpY2tWaWV3KTtcbn07XG5cbmNvbnN0IGluaXRRdWlja1ZpZXcgPSAoc2NvcGUgPSBkb2N1bWVudCkgPT4ge1xuICBjb25zdCByb290ID0gc2NvcGUgJiYgdHlwZW9mIHNjb3BlLnF1ZXJ5U2VsZWN0b3JBbGwgPT09ICdmdW5jdGlvbicgPyBzY29wZSA6IGRvY3VtZW50O1xuXG4gIHJvb3RcbiAgICAucXVlcnlTZWxlY3RvckFsbChRVUlDS19WSUVXX1NFTEVDVE9SKVxuICAgIC5mb3JFYWNoKChidXR0b24pID0+IGJpbmRRdWlja1ZpZXdCdXR0b24oYnV0dG9uKSk7XG59O1xuXG5bJ0RPTUNvbnRlbnRMb2FkZWQnLCAnd2VieS1uZXh0LXBhZ2UtbG9hZGVkJywgJ3Nob3BpZnk6c2VjdGlvbjpsb2FkJ10uZm9yRWFjaCgoZXZlbnROYW1lKSA9PiB7XG4gIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCAoZXZlbnQpID0+IHtcbiAgICBpbml0UXVpY2tWaWV3KGV2ZW50ICYmIGV2ZW50LnRhcmdldCk7XG4gIH0pO1xufSk7XG5cbmluaXRRdWlja1ZpZXcoKTtcbiJdLCJuYW1lcyI6WyJpbml0VmFyaWFudExpc3QiLCJRVUlDS19WSUVXX1NFTEVDVE9SIiwiUVVJQ0tfVklFV19DT05UQUlORVJfU0VMRUNUT1IiLCJvcGVuUXVpY2tWaWV3IiwiZXZlbnQiLCJwcmV2ZW50RGVmYXVsdCIsImJ1dHRvbiIsImN1cnJlbnRUYXJnZXQiLCJoYW5kbGUiLCJnZXRBdHRyaWJ1dGUiLCJjb250YWluZXIiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJmZXRjaCIsInRoZW4iLCJyZXMiLCJ0ZXh0IiwiaHRtbCIsInBhcnNlciIsIkRPTVBhcnNlciIsImRvYyIsInBhcnNlRnJvbVN0cmluZyIsInNlY3Rpb25IdG1sIiwiZ2V0RWxlbWVudEJ5SWQiLCJjbGFzc0xpc3QiLCJhZGQiLCJpbm5lckhUTUwiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZm9yRWFjaCIsImNsb3NlQnRuIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZSIsIm5ld1NsaWNrIiwic2xpY2tTZXR0aW5ncyIsIkpTT04iLCJwYXJzZSIsIiQiLCJzbGljayIsImNhdGNoIiwiYmluZFF1aWNrVmlld0J1dHRvbiIsImRhdGFzZXQiLCJxdWlja1ZpZXdCb3VuZCIsImluaXRRdWlja1ZpZXciLCJzY29wZSIsInJvb3QiLCJldmVudE5hbWUiLCJ0YXJnZXQiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==
10475//# sourceURL=webpack-internal:///./src/js/sections/api-product-quick-view.js
10476
10477}`)},"./src/js/sections/main-collection-product-grid.js"(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";eval(`{__webpack_require__.r(__webpack_exports__);
10478/* harmony import */ var swiper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! swiper */ "../node_modules/swiper/swiper.mjs");
10479/* harmony import */ var swiper_modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! swiper/modules */ "../node_modules/swiper/modules/index.mjs");
10480
10481
10482document.addEventListener("weby-next-page-loaded", () => {
10483  const sliders = document.querySelectorAll('.product-card__rollover__images.swiper:not(.swiper-initialized)');
10484  sliders.forEach(slider => {
10485    new swiper__WEBPACK_IMPORTED_MODULE_0__["default"](slider, {
10486      modules: [swiper_modules__WEBPACK_IMPORTED_MODULE_1__.Navigation, swiper_modules__WEBPACK_IMPORTED_MODULE_1__.Pagination],
10487      slidesPerView: 1,
10488      spaceBetween: 0,
10489      effect: 'fade',
10490      centeredSlides: true,
10491      loop: true,
10492      navigation: {
10493        nextEl: slider.querySelector('.swiper-button-next--product-card'),
10494        prevEl: slider.querySelector('.swiper-button-prev--product-card')
10495      },
10496      pagination: {
10497        el: slider.querySelector('.swiper-pagination'),
10498        clickable: true
10499      }
10500    });
10501  });
10502});
10503
10504// Binds click once, even after sections re-render
10505const bindViewAllButton = () => {
10506  const btn = document.getElementById('view-all-button');
10507  if (!btn || btn.dataset.bound) return;
10508  btn.dataset.bound = '1';
10509  btn.addEventListener('click', async function (e) {
10510    e.preventDefault();
10511    await loadAllProducts();
10512  });
10513};
10514const loadAllProducts = async () => {
10515  const viewAllBtn = document.getElementById('view-all-button');
10516  const loadingText = viewAllBtn.getAttribute('data-loading-text');
10517  const fullyLoadedText = viewAllBtn.getAttribute('data-fully-loaded-text');
10518  const loadMoreBtn = document.getElementById('load-more-button');
10519  const container = document.getElementById('AjaxinateContainer');
10520  const pagination = document.getElementById('AjaxinatePagination');
10521
10522  // Avoid conflicts with the infinite scroll instance
10523  if (window.endlessScroll && typeof endlessScroll.destroy === 'function') {
10524    endlessScroll.destroy();
10525  }
10526  viewAllBtn.disabled = true;
10527  if (loadMoreBtn) loadMoreBtn.disabled = true;
10528  viewAllBtn.textContent = loadingText;
10529
10530  // Fetch pages until there is no "next" link left
10531  while (true) {
10532    const nextA = pagination.querySelector('a');
10533    if (!nextA) break;
10534    const url = nextA.getAttribute('href');
10535    try {
10536      const res = await fetch(url, {
10537        credentials: 'same-origin'
10538      });
10539      if (!res.ok) break;
10540      const html = await res.text();
10541      const doc = new DOMParser().parseFromString(html, 'text/html');
10542
10543      // Append new items
10544      const newItems = doc.querySelectorAll('#AjaxinateContainer > *');
10545      newItems.forEach(el => container.appendChild(el));
10546
10547      // Replace pagination with the next page's pagination
10548      const newPagination = doc.querySelector('#AjaxinatePagination');
10549      pagination.innerHTML = newPagination ? newPagination.innerHTML : '';
10550
10551      // Run your existing callbacks
10552      if (typeof initVideos === 'function') initVideos();
10553      document.dispatchEvent(new CustomEvent('weby-next-page-loaded'));
10554    } catch (err) {
10555      console.error('View all fetch error:', err);
10556      break;
10557    }
10558  }
10559  if (loadMoreBtn) loadMoreBtn.remove();
10560  viewAllBtn.textContent = fullyLoadedText;
10561  viewAllBtn.classList.add('is-complete');
10562  viewAllBtn.disabled = true;
10563};
10564document.addEventListener('DOMContentLoaded', bindViewAllButton);
10565document.addEventListener('weby-next-page-loaded', bindViewAllButton);
10566document.addEventListener('shopify:section:load', bindViewAllButton);//# sourceURL=[module]
10567//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvanMvc2VjdGlvbnMvbWFpbi1jb2xsZWN0aW9uLXByb2R1Y3QtZ3JpZC5qcyIsIm1hcHBpbmdzIjoiOzs7QUFBNEI7QU
10567FDNEI7QUFFeERHLFFBQVEsQ0FBQ0MsZ0JBQWdCLENBQUMsdUJBQXVCLEVBQUUsTUFBTTtFQUN2RCxNQUFNQyxPQUFPLEdBQUdGLFFBQVEsQ0FBQ0csZ0JBQWdCLENBQUMsaUVBQWlFLENBQUM7RUFDNUdELE9BQU8sQ0FBQ0UsT0FBTyxDQUFFQyxNQUFNLElBQUs7SUFDMUIsSUFBSVIsOENBQU0sQ0FBQ1EsTUFBTSxFQUFFO01BQ2pCQyxPQUFPLEVBQUUsQ0FBQ1Isc0RBQVUsRUFBRUMsc0RBQVUsQ0FBQztNQUNqQ1EsYUFBYSxFQUFFLENBQUM7TUFDaEJDLFlBQVksRUFBRSxDQUFDO01BQ2ZDLE1BQU0sRUFBRSxNQUFNO01BQ2RDLGNBQWMsRUFBRSxJQUFJO01BQ3BCQyxJQUFJLEVBQUUsSUFBSTtNQUNWQyxVQUFVLEVBQUU7UUFDVkMsTUFBTSxFQUFFUixNQUFNLENBQUNTLGFBQWEsQ0FBQyxtQ0FBbUMsQ0FBQztRQUNqRUMsTUFBTSxFQUFFVixNQUFNLENBQUNTLGFBQWEsQ0FBQyxtQ0FBbUM7TUFDbEUsQ0FBQztNQUNERSxVQUFVLEVBQUU7UUFDVkMsRUFBRSxFQUFFWixNQUFNLENBQUNTLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQztRQUM5Q0ksU0FBUyxFQUFFO01BQ2I7SUFDRixDQUFDLENBQUM7RUFDSixDQUFDLENBQUM7QUFDSixDQUFDLENBQUM7O0FBRUE7QUFDQSxNQUFNQyxpQkFBaUIsR0FBR0EsQ0FBQSxLQUFNO0VBQzlCLE1BQU1DLEdBQUcsR0FBR3BCLFFBQVEsQ0FBQ3FCLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQztFQUN0RCxJQUFJLENBQUNELEdBQUcsSUFBSUEsR0FBRyxDQUFDRSxPQUFPLENBQUNDLEtBQUssRUFBRTtFQUUvQkgsR0FBRyxDQUFDRSxPQUFPLENBQUNDLEtBQUssR0FBRyxHQUFHO0VBQ3ZCSCxHQUFHLENBQUNuQixnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCdUIsQ0FBQyxFQUFFO0lBQy9DQSxDQUFDLENBQUNDLGNBQWMsQ0FBQyxDQUFDO0lBQ2xCLE1BQU1DLGVBQWUsQ0FBQyxDQUFDO0VBQ3pCLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNQSxlQUFlLEdBQUcsTUFBQUEsQ0FBQSxLQUFZO0VBQ2xDLE1BQU1DLFVBQVUsR0FBRzNCLFFBQVEsQ0FBQ3FCLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQztFQUM3RCxNQUFNTyxXQUFXLEdBQUdELFVBQVUsQ0FBQ0UsWUFBWSxDQUFDLG1CQUFtQixDQUFDO0VBQ2hFLE1BQU1DLGVBQWUsR0FBR0gsVUFBVSxDQUFDRSxZQUFZLENBQUMsd0JBQXdCLENBQUM7RUFDekUsTUFBTUUsV0FBVyxHQUFHL0IsUUFBUSxDQUFDcUIsY0FBYyxDQUFDLGtCQUFrQixDQUFDO0VBQy9ELE1BQU1XLFNBQVMsR0FBR2hDLFFBQVEsQ0FBQ3FCLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQztFQUMvRCxNQUFNTCxVQUFVLEdBQUdoQixRQUFRLENBQUNxQixjQUFjLENBQUMscUJBQXFCLENBQUM7O0VBRWpFO0VBQ0EsSUFBSVksTUFBTSxDQUFDQyxhQUFhLElBQUksT0FBT0EsYUFBYSxDQUFDQyxPQUFPLEtBQUssVUFBVSxFQUFFO0lBQ3ZFRCxhQUFhLENBQUNDLE9BQU8sQ0FBQyxDQUFDO0VBQ3pCO0VBRUFSLFVBQVUsQ0FBQ1MsUUFBUSxHQUFHLElBQUk7RUFDMUIsSUFBSUwsV0FBVyxFQUFFQSxXQUFXLENBQUNLLFFBQVEsR0FBRyxJQUFJO0VBQzVDVCxVQUFVLENBQUNVLFdBQVcsR0FBR1QsV0FBVzs7RUFFcEM7RUFDQSxPQUFPLElBQUksRUFBRTtJQUNYLE1BQU1VLEtBQUssR0FBR3RCLFVBQVUsQ0FBQ0YsYUFBYSxDQUFDLEdBQUcsQ0FBQztJQUMzQyxJQUFJLENBQUN3QixLQUFLLEVBQUU7SUFFWixNQUFNQyxHQUFHLEdBQUdELEtBQUssQ0FBQ1QsWUFBWSxDQUFDLE1BQU0sQ0FBQztJQUN0QyxJQUFJO01BQ0YsTUFBTVcsR0FBRyxHQUFHLE1BQU1DLEtBQUssQ0FBQ0YsR0FBRyxFQUFFO1FBQUVHLFdBQVcsRUFBRTtNQUFjLENBQUMsQ0FBQztNQUM1RCxJQUFJLENBQUNGLEdBQUcsQ0FBQ0csRUFBRSxFQUFFO01BRWIsTUFBTUMsSUFBSSxHQUFHLE1BQU1KLEdBQUcsQ0FBQ0ssSUFBSSxDQUFDLENBQUM7TUFDN0IsTUFBTUMsR0FBRyxHQUFHLElBQUlDLFNBQVMsQ0FBQyxDQUFDLENBQUNDLGVBQWUsQ0FBQ0osSUFBSSxFQUFFLFdBQVcsQ0FBQzs7TUFFOUQ7TUFDQSxNQUFNSyxRQUFRLEdBQUdILEdBQUcsQ0FBQzNDLGdCQUFnQixDQUFDLHlCQUF5QixDQUFDO01BQ2hFOEMsUUFBUSxDQUFDN0MsT0FBTyxDQUFDYSxFQUFFLElBQUllLFNBQVMsQ0FBQ2tCLFdBQVcsQ0FBQ2pDLEVBQUUsQ0FBQyxDQUFDOztNQUVqRDtNQUNBLE1BQU1rQyxhQUFhLEdBQUdMLEdBQUcsQ0FBQ2hDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQztNQUMvREUsVUFBVSxDQUFDb0MsU0FBUyxHQUFHRCxhQUFhLEdBQUdBLGFBQWEsQ0FBQ0MsU0FBUyxHQUFHLEVBQUU7O01BRW5FO01BQ0EsSUFBSSxPQUFPQyxVQUFVLEtBQUssVUFBVSxFQUFFQSxVQUFVLENBQUMsQ0FBQztNQUNsRHJELFFBQVEsQ0FBQ3NELGFBQWEsQ0FBQyxJQUFJQyxXQUFXLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUNsRSxDQUFDLENBQUMsT0FBT0MsR0FBRyxFQUFFO01BQ1pDLE9BQU8sQ0FBQ0MsS0FBSyxDQUFDLHVCQUF1QixFQUFFRixHQUFHLENBQUM7TUFDM0M7SUFDRjtFQUNGO0VBRUEsSUFBSXpCLFdBQVcsRUFBRUEsV0FBVyxDQUFDNEIsTUFBTSxDQUFDLENBQUM7RUFDckNoQyxVQUFVLENBQUNVLFdBQVcsR0FBR1AsZUFBZTtFQUN4Q0gsVUFBVSxDQUFDaUMsU0FBUyxDQUFDQyxHQUFHLENBQUMsYUFBYSxDQUFDO0VBQ3ZDbEMsVUFBVSxDQUFDUyxRQUFRLEdBQUcsSUFBSTtBQUM1QixDQUFDO0FBRURwQyxRQUFRLENBQUNDLGdCQUFnQixDQUFDLGtCQUFrQixFQUFFa0IsaUJBQWlCLENBQUM7QUFDaEVuQixRQUFRLENBQUNDLGdCQUFnQixDQUFDLHVCQUF1QixFQUFFa0IsaUJBQWlCLENBQUM7QUFDckVuQixRQUFRLENBQUNDLGdCQUFnQixDQUFDLHNCQUFzQixFQUFFa0IsaUJBQWlCLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvanMvc2VjdGlvbnMvbWFpbi1jb2xsZWN0aW9uLXByb2R1Y3QtZ3JpZC5qcz8xZmIwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBTd2lwZXIgZnJvbSAnc3dpcGVyJztcbmltcG9ydCB7IE5hdmlnYXRpb24sIFBhZ2luYXRpb24gfSBmcm9tICdzd2lwZXIvbW9kdWxlcyc7XG5cbmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJ3ZWJ5LW5leHQtcGFnZS1sb2FkZWRcIiwgKCkgPT4ge1xuICBjb25zdCBzbGlkZXJzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnByb2R1Y3QtY2FyZF9fcm9sbG92ZXJfX2ltYWdlcy5zd2lwZXI6bm90KC5zd2lwZXItaW5pdGlhbGl6ZWQpJyk7XG4gIHNsaWRlcnMuZm9yRWFjaCgoc2xpZGVyKSA9PiB7XG4gICAgbmV3IFN3aXBlcihzbGlkZXIsIHtcbiAgICAgIG1vZHVsZXM6IFtOYXZpZ2F0aW9uLCBQYWdpbmF0aW9uXSxcbiAgICAgIHNsaWRlc1BlclZpZXc6IDEsXG4gICAgICBzcGFjZUJldHdlZW46IDAsXG4gICAgICBlZmZlY3Q6ICdmYWRlJyxcbiAgICAgIGNlbnRlcmVkU2xpZGVzOiB0cnVlLFxuICAgICAgbG9vcDogdHJ1ZSxcbiAgICAgIG5hdmlnYXRpb246IHtcbiAgICAgICAgbmV4dEVsOiBzbGlkZXIucXVlcnlTZWxlY3RvcignLnN3aXBlci1idXR0b24tbmV4dC0tcHJvZHVjdC1jYXJkJyksXG4gICAgICAgI
10567HByZXZFbDogc2xpZGVyLnF1ZXJ5U2VsZWN0b3IoJy5zd2lwZXItYnV0dG9uLXByZXYtLXByb2R1Y3QtY2FyZCcpLFxuICAgICAgfSxcbiAgICAgIHBhZ2luYXRpb246IHtcbiAgICAgICAgZWw6IHNsaWRlci5xdWVyeVNlbGVjdG9yKCcuc3dpcGVyLXBhZ2luYXRpb24nKSxcbiAgICAgICAgY2xpY2thYmxlOiB0cnVlLFxuICAgICAgfVxuICAgIH0pXG4gIH0pO1xufSk7XG5cbiAgLy8gQmluZHMgY2xpY2sgb25jZSwgZXZlbiBhZnRlciBzZWN0aW9ucyByZS1yZW5kZXJcbiAgY29uc3QgYmluZFZpZXdBbGxCdXR0b24gPSAoKSA9PiB7XG4gICAgY29uc3QgYnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ZpZXctYWxsLWJ1dHRvbicpO1xuICAgIGlmICghYnRuIHx8IGJ0bi5kYXRhc2V0LmJvdW5kKSByZXR1cm47XG5cbiAgICBidG4uZGF0YXNldC5ib3VuZCA9ICcxJztcbiAgICBidG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBhc3luYyBmdW5jdGlvbiAoZSkge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgYXdhaXQgbG9hZEFsbFByb2R1Y3RzKCk7XG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBsb2FkQWxsUHJvZHVjdHMgPSBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgdmlld0FsbEJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2aWV3LWFsbC1idXR0b24nKTtcbiAgICBjb25zdCBsb2FkaW5nVGV4dCA9IHZpZXdBbGxCdG4uZ2V0QXR0cmlidXRlKCdkYXRhLWxvYWRpbmctdGV4dCcpXG4gICAgY29uc3QgZnVsbHlMb2FkZWRUZXh0ID0gdmlld0
10567FsbEJ0bi5nZXRBdHRyaWJ1dGUoJ2RhdGEtZnVsbHktbG9hZGVkLXRleHQnKVxuICAgIGNvbnN0IGxvYWRNb3JlQnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvYWQtbW9yZS1idXR0b24nKTtcbiAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnQWpheGluYXRlQ29udGFpbmVyJyk7XG4gICAgY29uc3QgcGFnaW5hdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdBamF4aW5hdGVQYWdpbmF0aW9uJyk7XG5cbiAgICAvLyBBdm9pZCBjb25mbGljdHMgd2l0aCB0aGUgaW5maW5pdGUgc2Nyb2xsIGluc3RhbmNlXG4gICAgaWYgKHdpbmRvdy5lbmRsZXNzU2Nyb2xsICYmIHR5cGVvZiBlbmRsZXNzU2Nyb2xsLmRlc3Ryb3kgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGVuZGxlc3NTY3JvbGwuZGVzdHJveSgpO1xuICAgIH1cblxuICAgIHZpZXdBbGxCdG4uZGlzYWJsZWQgPSB0cnVlO1xuICAgIGlmIChsb2FkTW9yZUJ0bikgbG9hZE1vcmVCdG4uZGlzYWJsZWQgPSB0cnVlO1xuICAgIHZpZXdBbGxCdG4udGV4dENvbnRlbnQgPSBsb2FkaW5nVGV4dDtcblxuICAgIC8vIEZldGNoIHBhZ2VzIHVudGlsIHRoZXJlIGlzIG5vIFwibmV4dFwiIGxpbmsgbGVmdFxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBjb25zdCBuZXh0QSA9IHBhZ2luYXRpb24ucXVlcnlTZWxlY3RvcignYScpO1xuICAgICAgaWYgKCFuZXh0QSkgYnJlYWs7XG5cbiAgICAgIGNvbnN0IHVybCA9IG5leHRBLmdldEF0dHJpYnV0ZSgnaHJlZicpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2godXJsLCB7IGNyZWRlbnRpYWxzOiAnc2FtZS1vcmlnaW4nIH0pO1xuICAgICAgICBpZiAoIXJlcy5vaykgYnJlYWs7XG5cbiAgICAgICAgY29uc3QgaHRtbCA9IGF3YWl0IHJlcy50ZXh0KCk7XG4gICAgICAgIGNvbnN0IGRvYyA9IG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoaHRtbCwgJ3RleHQvaHRtbCcpO1xuXG4gICAgICAgIC8vIEFwcGVuZCBuZXcgaXRlbXNcbiAgICAgICAgY29uc3QgbmV3SXRlbXMgPSBkb2MucXVlcnlTZWxlY3RvckFsbCgnI0FqYXhpbmF0ZUNvbnRhaW5lciA+IConKTtcbiAgICAgICAgbmV3SXRlbXMuZm9yRWFjaChlbCA9PiBjb250YWluZXIuYXBwZW5kQ2hpbGQoZWwpKTtcblxuICAgICAgICAvLyBSZXBsYWNlIHBhZ2luYXRpb24gd2l0aCB0aGUgbmV4dCBwYWdlJ3MgcGFnaW5hdGlvblxuICAgICAgICBjb25zdCBuZXdQYWdpbmF0aW9uID0gZG9jLnF1ZXJ5U2VsZWN0b3IoJyNBamF4aW5hdGVQYWdpbmF0aW9uJyk7XG4gICAgICAgIHBhZ2luYXRpb24uaW5uZXJIVE1MID0gbmV3UGFnaW5hdGlvbiA/IG5ld1BhZ2luYXRpb24uaW5uZXJIVE1MIDogJyc7XG5cbiAgICAgICAgLy8gUnVuIHlvdXIgZXhpc3RpbmcgY2FsbGJhY2tzXG4gICAgICAgIGlmICh0eXBlb2YgaW5pdFZpZGVvcyA9PT0gJ2Z1bmN0aW9uJykgaW5pdFZpZGVvcygpO1xuICAgICAgICBkb2
10567N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnd2VieS1uZXh0LXBhZ2UtbG9hZGVkJykpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1ZpZXcgYWxsIGZldGNoIGVycm9yOicsIGVycik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChsb2FkTW9yZUJ0bikgbG9hZE1vcmVCdG4ucmVtb3ZlKCk7XG4gICAgdmlld0FsbEJ0bi50ZXh0Q29udGVudCA9IGZ1bGx5TG9hZGVkVGV4dDtcbiAgICB2aWV3QWxsQnRuLmNsYXNzTGlzdC5hZGQoJ2lzLWNvbXBsZXRlJyk7XG4gICAgdmlld0FsbEJ0bi5kaXNhYmxlZCA9IHRydWU7XG4gIH1cblxuICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgYmluZFZpZXdBbGxCdXR0b24pO1xuICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd3ZWJ5LW5leHQtcGFnZS1sb2FkZWQnLCBiaW5kVmlld0FsbEJ1dHRvbik7XG4gIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Nob3BpZnk6c2VjdGlvbjpsb2FkJywgYmluZFZpZXdBbGxCdXR0b24pOyJdLCJuYW1lcyI6WyJTd2lwZXIiLCJOYXZpZ2F0aW9uIiwiUGFnaW5hdGlvbiIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInNsaWRlcnMiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZm9yRWFjaCIsInNsaWRlciIsIm1vZHVsZXMiLCJzbGlkZXNQZXJWaWV3Iiwic3BhY2VCZXR3ZWVuIiwiZWZmZWN0IiwiY2VudGVyZWRTbGlkZXMiLCJsb29wIiwibmF2aWdhdGlvbiIsIm5leHRFbCIsInF1ZXJ5U2VsZWN0b3IiLCJwcmV2RWwiLCJwYWdpbmF0aW9uIiwiZWwiLCJjbGlja2FibGUiLCJiaW5kVmlld0FsbEJ1dHRvbiIsImJ0biIsImdldEVsZW1lbnRCeUlkIiwiZGF0YXNldCIsImJvdW5kIiwiZSIsInByZXZlbnREZWZhdWx0IiwibG9hZEFsbFByb2R1Y3RzIiwidmlld0FsbEJ0biIsImxvYWRpbmdUZXh0IiwiZ2V0QXR0cmlidXRlIiwiZnVsbHlMb2FkZWRUZXh0IiwibG9hZE1vcmVCdG4iLCJjb250YWluZXIiLCJ3aW5kb3ciLCJlbmRsZXNzU2Nyb2xsIiwiZGVzdHJveSIsImRpc2FibGVkIiwidGV4dENvbnRlbnQiLCJuZXh0QSIsInVybCIsInJlcyIsImZldGNoIiwiY3JlZGVudGlhbHMiLCJvayIsImh0bWwiLCJ0ZXh0IiwiZG9jIiwiRE9NUGFyc2VyIiwicGFyc2VGcm9tU3RyaW5nIiwibmV3SXRlbXMiLCJhcHBlbmRDaGlsZCIsIm5ld1BhZ2luYXRpb24iLCJpbm5lckhUTUwiLCJpbml0VmlkZW9zIiwiZGlzcGF0Y2hFdmVudCIsIkN1c3RvbUV2ZW50IiwiZXJyIiwiY29uc29sZSIsImVycm9yIiwicmVtb3ZlIiwiY2xhc3NMaXN0IiwiYWRkIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=
10568//# sourceURL=webpack-internal:///./src/js/sections/main-collection-product-grid.js
10569
10570}`)},"./src/js/sections/product-sticky-bar.js"(){eval(`{const initShowStickyBar = () => {
10571  const startPoint = document.querySelector('.product--variants');
10572  const endPoint = document.querySelector('.footer');
10573  const stickyBar = document.querySelector('.product-sticky-bar');
10574  if (!startPoint || !endPoint || !stickyBar) return;
10575  let passedStart = false;
10576  let inFooter = false;
10577  const observer = new IntersectionObserver(entries => {
10578    entries.forEach(entry => {
10579      if (entry.target === startPoint) {
10580        passedStart = !entry.isIntersecting;
10581      }
10582      if (entry.target === endPoint) {
10583        inFooter = entry.isIntersecting;
10584      }
10585    });
10586    if (passedStart && !inFooter) {
10587      stickyBar.classList.add('visible');
10588    } else {
10589      stickyBar.classList.remove('visible');
10590    }
10591  }, {
10592    threshold: 0
10593  });
10594  observer.observe(startPoint);
10595  observer.observe(endPoint);
10596};
10597initShowStickyBar();//# sourceURL=[module]
10598//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvanMvc2VjdGlvbnMvcHJvZHVjdC1zdGlja3ktYmFyLmpzIiwibmFtZXMiOlsiaW5pdFNob3dTdGlja3lCYXIiLCJzdGFydFBvaW50IiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiZW5kUG9pbnQiLCJzdGlja3lCYXIiLCJwYXNzZWRTdGFydCIsImluRm9vdGVyIiwib2JzZXJ2ZXIiLCJJbnRlcnNlY3Rpb25PYnNlcnZlciIsImVudHJpZXMiLCJmb3JFYWNoIiwiZW50cnkiLCJ0YXJnZXQiLCJpc0ludGVyc2VjdGluZyIsImNsYXNzTGlzdCIsImFkZCIsInJlbW92ZSIsInRocmVzaG9sZCIsIm9ic2VydmUiXSwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9qcy9zZWN0aW9ucy9wcm9kdWN0LXN0aWNreS1iYXIuanM/NmI2ZiJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBpbml0U2hvd1N0aWNreUJhciA9ICgpID0+IHtcbiAgY29uc3Qgc3RhcnRQb2ludCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5wcm9kdWN0LS12YXJpYW50cycpO1xuICBjb25zdCBlbmRQb2ludCAgID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmZvb3RlcicpO1xuICBjb25zdCBzdGlja3lCYXIgID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnByb2R1Y3Qtc3RpY2t5LWJhcicpO1xuICBpZiAoIXN0YXJ0UG9pbnQgfHwgIWVuZFBvaW50IHx8ICFzdGlja3lCYXIpIHJldHVybjtcblxuICBsZXQgcGFzc2VkU3RhcnQgPSBmYWxzZTtcbiAgbGV0IGluRm9vdGVyICAgID0gZmFsc2U7XG5cbiAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKGVudHJpZXMpID0+IHtcbiAgICBlbnRyaWVzLmZvckVhY2goZW50cnkgPT4ge1xuICAgICAgaWYgKGVudHJ5LnRhcmdldCA9PT0gc3RhcnRQb2ludCkge1xuICAgICAgICBwYXNzZWRTdGFydCA9ICFlbnRyeS5pc0ludGVyc2VjdGluZztcbiAgICAgIH1cbiAgICAgIGlmIChlbnRyeS50YXJnZXQgPT09IGVuZFBvaW50KSB7XG4gICAgICAgIGluRm9vdGVyID0gZW50cnkuaXNJbnRlcnNlY3Rpbmc7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAocGFzc2VkU3RhcnQgJiYgIWluRm9vdGVyKSB7XG4gICAgICBzdGlja3lCYXIuY2xhc3NMaXN0LmFkZCgndmlzaWJsZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGlja3lCYXIuY2xhc3NMaXN0LnJlbW92ZSgndmlzaWJsZScpO1xuICAgIH1cbiAgfSwgeyB0aHJlc2hvbGQ6IDAgfSk7XG5cbiAgb2JzZXJ2ZXIub2JzZXJ2ZShzdGFydFBvaW50KTtcbiAgb2JzZXJ2ZXIub2JzZXJ2ZShlbmRQb2ludCk7XG59O1xuXG5pbml0U2hvd1N0aWNreUJhcigpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxpQkFBaUIsR0FBR0EsQ0FBQSxLQUFNO0VBQzlCLE1BQU1DLFVBQVUsR0FBR0MsUUFBUSxDQUFDQyxhQUFhLENBQUMsb0JBQW9CLENBQUM7RUFDL0QsTUFBTUMsUUFBUSxHQUFLRixRQUFRLENBQUNDLGFBQWEsQ0FBQyxTQUFTLENBQUM7RUFDcEQsTUFBTUUsU0FBUyxHQUFJSCxRQUFRLENBQUNDLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBQztFQUNoRSxJQUFJLENBQUNGLFVBQVUsSUFBSSxDQUFDRyxRQUFRLElBQUksQ0FBQ0MsU0FBUyxFQUFFO0VBRTVDLElBQUlDLFdBQVcsR0FBRyxLQUFLO0VBQ3ZCLElBQUlDLFFBQVEsR0FBTSxLQUFLO0VBRXZCLE1BQU1DLFFBQVEsR0FBRyxJQUFJQyxvQkFBb0IsQ0FBRUMsT0FBTyxJQUFLO0lBQ3JEQSxPQUFPLENBQUNDLE9BQU8sQ0FBQ0MsS0FBSyxJQUFJO01BQ3ZCLElBQUlBLEtBQUssQ0FBQ0MsTUFBTSxLQUFLWixVQUFVLEVBQUU7UUFDL0JLLFdBQVcsR0FBRyxDQUFDT
10598SxLQUFLLENBQUNFLGNBQWM7TUFDckM7TUFDQSxJQUFJRixLQUFLLENBQUNDLE1BQU0sS0FBS1QsUUFBUSxFQUFFO1FBQzdCRyxRQUFRLEdBQUdLLEtBQUssQ0FBQ0UsY0FBYztNQUNqQztJQUNGLENBQUMsQ0FBQztJQUVGLElBQUlSLFdBQVcsSUFBSSxDQUFDQyxRQUFRLEVBQUU7TUFDNUJGLFNBQVMsQ0FBQ1UsU0FBUyxDQUFDQyxHQUFHLENBQUMsU0FBUyxDQUFDO0lBQ3BDLENBQUMsTUFBTTtNQUNMWCxTQUFTLENBQUNVLFNBQVMsQ0FBQ0UsTUFBTSxDQUFDLFNBQVMsQ0FBQztJQUN2QztFQUNGLENBQUMsRUFBRTtJQUFFQyxTQUFTLEVBQUU7RUFBRSxDQUFDLENBQUM7RUFFcEJWLFFBQVEsQ0FBQ1csT0FBTyxDQUFDbEIsVUFBVSxDQUFDO0VBQzVCTyxRQUFRLENBQUNXLE9BQU8sQ0FBQ2YsUUFBUSxDQUFDO0FBQzVCLENBQUM7QUFFREosaUJBQWlCLENBQUMsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
10599//# sourceURL=webpack-internal:///./src/js/sections/product-sticky-bar.js
10600
10601}`)},"./src/js/sections/reference-push-product.js"(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";eval(`{__webpack_require__.r(__webpack_exports__);
10602/* harmony import */ var swiper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! swiper */ "../node_modules/swiper/swiper.mjs");
10603/* harmony import */ var swiper_modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! swiper/modules */ "../node_modules/swiper/modules/index.mjs");
10604
10605
10606class ReferencePushProduct {
10607  constructor() {
10608    this.sliders = document.querySelectorAll('.prodpush--slider.swiper');
10609    if (this.sliders.length <= 0) return;
10610    this.init();
10611  }
10612  init() {
10613    this.sliders.forEach(slider => {
10614      new swiper__WEBPACK_IMPORTED_MODULE_0__["default"](slider, {
10615        modules: [swiper_modules__WEBPACK_IMPORTED_MODULE_1__.Navigation],
10616        slidesPerView: 1.3,
10617        spaceBetween: 15,
10618        centeredSlides: true,
10619        loop: true,
10620        allowTouchMove: false,
10621        navigation: {
10622          nextEl: slider.querySelector('.swiper-button-next--prodpush'),
10623          prevEl: slider.querySelector('.swiper-button-prev--prodpush')
10624        },
10625        breakpoints: {
10626          991.98: {
10627            slidesPerView: 3.6,
10628            allowTouchMove: true
10629          },
10630          767.98: {
10631            slidesPerView: 2.3
10632          }
10633        },
10634        on: {
10635          init: function () {
10636            console.log('Swiper initialis\xE9: .my-swiper-class', this);
10637          }
10638        }
10639      });
10640    });
10641  }
10642}
10643new ReferencePushProduct();//# sourceURL=[module]
10644//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvanMvc2VjdGlvbnMvcmVmZXJlbmNlLXB1c2gtcHJvZHVjdC5qcyIsIm1hcHBpbmdzIjoiOzs7QUFBNEI7QU
10644FDZ0I7QUFFNUMsTUFBTUUsb0JBQW9CLENBQUM7RUFDekJDLFdBQVdBLENBQUEsRUFBRztJQUNaLElBQUksQ0FBQ0MsT0FBTyxHQUFHQyxRQUFRLENBQUNDLGdCQUFnQixDQUFDLDBCQUEwQixDQUFDO0lBQ3BFLElBQUksSUFBSSxDQUFDRixPQUFPLENBQUNHLE1BQU0sSUFBSSxDQUFDLEVBQUU7SUFDOUIsSUFBSSxDQUFDQyxJQUFJLENBQUMsQ0FBQztFQUNiO0VBRUFBLElBQUlBLENBQUEsRUFBRztJQUNMLElBQUksQ0FBQ0osT0FBTyxDQUFDSyxPQUFPLENBQUNDLE1BQU0sSUFBSTtNQUM3QixJQUFJViw4Q0FBTSxDQUFDVSxNQUFNLEVBQUU7UUFDakJDLE9BQU8sRUFBRSxDQUFDVixzREFBVSxDQUFDO1FBQ3JCVyxhQUFhLEVBQUUsR0FBRztRQUNsQkMsWUFBWSxFQUFFLEVBQUU7UUFDaEJDLGNBQWMsRUFBRSxJQUFJO1FBQ3BCQyxJQUFJLEVBQUUsSUFBSTtRQUNWQyxjQUFjLEVBQUUsS0FBSztRQUNyQkMsVUFBVSxFQUFFO1VBQ1ZDLE1BQU0sRUFBRVIsTUFBTSxDQUFDUyxhQUFhLENBQUMsK0JBQStCLENBQUM7VUFDN0RDLE1BQU0sRUFBRVYsTUFBTSxDQUFDUyxhQUFhLENBQUMsK0JBQStCO1FBQzlELENBQUM7UUFDREUsV0FBVyxFQUFFO1VBQ1gsTUFBTSxFQUFFO1lBQ05ULGFBQWEsRUFBRSxHQUFHO1lBQ2xCSSxjQUFjLEVBQUU7VUFDbEIsQ0FBQztVQUNELE1BQU0sRUFBRTtZQUNOSixhQUFhLEVBQUU7VUFDakI7UUFDRixDQUFDO1FBQ0RVLEVBQUUsRUFBRTtVQUNGZCxJQUFJLEVBQUUsU0FBQUEsQ0FBQSxFQUFZO1lBQ2hCZSxPQUFPLENBQUNDLEdBQUcsQ0FBQyxxQ0FBcUMsRUFBRSxJQUFJLENBQUM7VUFDMUQ7UUFDRjtNQUNGLENBQUMsQ0FBQztJQUNKLENBQUMsQ0FBQztFQUNKO0FBQ0Y7QUFFQSxJQUFJdEIsb0JBQW9CLENBQUMsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9qcy9zZWN0aW9ucy9yZWZlcmVuY2UtcHVzaC1wcm9kdWN0LmpzP2ZmN2QiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFN3aXBlciBmcm9tICdzd2lwZXInO1xuaW1wb3J0IHsgTmF2aWdhdGlvbiB9IGZyb20gJ3N3aXBlci9tb2R1bGVzJztcblxuY2xhc3MgUmVmZXJlbmNlUHVzaFByb2R1Y3Qge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnNsaWRlcnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcucHJvZHB1c2gtLXNsaWRlci5zd2lwZXInKTtcbiAgICBpZiAodGhpcy5zbGlkZXJzLmxlbmd0aCA8PSAwKSByZXR1cm47XG4gICAgdGhpcy5pbml0KCk7XG4gIH1cblxuICBpbml0KCkge1xuICAgIHRoaXMuc2xpZGVycy5mb3JFYWNoKHNsaWRlciA9PiB7XG4gICAgICBuZXcgU3dpcGVyKHNsaWRlciwge1xuICAgICAgICBtb2R1bGVzOiBbTmF2aWdhdGlvbl0sXG4gICAgICAgIHNsaWRlc1BlclZpZXc6IDEuMyxcbiAgICAgICAgc3BhY2VCZXR3ZWVuOiAxNSxcbiAgICAgICAgY2VudGVyZWRTbGlkZXM6IHRydWUsXG4gICAgICAgIGxvb3A6IHRydWUsXG4gICAgICAgIGFsbG93VG91Y2hNb3ZlOiBmYWxzZSxcbiAgICAgICAgbmF2aWdhdGlvbjoge1xuICAgICAgICAgIG5leHRFbDogc2xpZGVyLnF1ZXJ5U2VsZWN0b3IoJy5zd2lwZXItYnV0dG9uLW5leHQtLXByb2RwdXNoJyksXG4gICAgICAgICAgcHJldkVsOiBzbGlkZXIucXVlcnlTZWxlY3RvcignLnN3aXBlci1idXR0b24tcHJldi0tcHJvZHB1c2gnKSxcbiAgICAgICAgfSxcbiAgICAgICAgYnJlYWtwb2ludHM6IHtcbiAgICAgICAgICA5OTEuOTg6IHtcbiAgICAgICAgICAgIHNsaWRlc1BlclZpZXc6IDMuNixcbiAgICAgICAgICAgIGFsbG93VG91Y2hNb3ZlOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgNzY3Ljk4OiB7XG4gICAgICAgICAgICBzbGlkZXNQZXJWaWV3OiAyLjNcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBvbjoge1xuICAgICAgICAgIGluaXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdTd2lwZXIgaW5pdGlhbGlzw6k6IC5teS1zd2lwZXItY2xhc3MnLCB0aGlzKTtcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cblxubmV3IFJlZmVyZW5jZVB1c2hQcm9kdWN0KCk7Il0sIm5hbWVzIjpbIlN3aXBlciIsIk5hdmlnYXRpb24iLCJSZWZlcmVuY2VQdXNoUHJvZHVjdCIsImNvbnN0cnVjdG9yIiwic2xpZGVycyIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvckFsbCIsImxlbmd0aCIsImluaXQiLCJmb3JFYWNoIiwic2xpZGVyIiwibW9kdWxlcyIsInNsaWRlc1BlclZpZXciLCJzcGFjZUJldHdlZW4iLCJjZW50ZXJlZFNsaWRlcyIsImxvb3AiLCJhbGxvd1RvdWNoTW92ZSIsIm5hdmlnYXRpb24iLCJuZXh0RWwiLCJxdWVyeVNlbGVjdG9yIiwicHJldkVsIiwiYnJlYWtwb2ludHMiLCJvbiIsImNvbnNvbGUiLCJsb2ciXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==
10645//# sourceURL=webpack-internal:///./src/js/sections/reference-push-product.js
10646
10647}`)},"./src/js/sections/section-weeby-product-details.js"(){eval(`{const initProductDetails = () => {
10648  const productDetailHeaders = document.querySelectorAll('.product-details__container__detail');
10649  productDetailHeaders.forEach(header => {
10650    const index = header.getAttribute('data-index');
10651    const longDescription = document.querySelector(\`.product-details__container__detail__text__long-description[data-index="\${index}"]\`);
10652    const showLongDescription = () => {
10653      longDescription?.classList.add('product-details__container__detail__text__long-description--visible');
10654    };
10655    header.addEventListener('click', showLongDescription);
10656  });
10657  document.addEventListener('click', e => {
10658    const closeBtn = e.target.closest('.product-details__container__detail__text__long-description__header__close-button');
10659    const longDescription = closeBtn?.closest('.product-details__container__detail__text__long-description');
10660    if (closeBtn && longDescription) {
10661      longDescription.classList.remove('product-details__container__detail__text__long-description--visible');
10662      return;
10663    }
10664    const backdropClick = e.target.classList.contains('product-details__container__detail__text__long-description');
10665    if (backdropClick) {
10666      e.target.classList.remove('product-details__container__detail__text__long-description--visible');
10667    }
10668  });
10669};
10670initProductDetails();//# sourceURL=[module]
10671//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvanMvc2VjdGlvbnMvc2VjdGlvbi13ZWVieS1wcm9kdWN0LWRldGFpbHMuanMiLCJuYW1lcyI6WyJpbml0UHJvZHVjdERldGFpbHMiLCJwcm9kdWN0RGV0YWlsSGVhZGVycyIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvckFsbCIsImZvckVhY2giLCJoZWFkZXIiLCJpbmRleCIsImdldEF0dHJpYnV0ZSIsImxvbmdEZXNjcmlwdGlvbiIsInF1ZXJ5U2VsZWN0b3IiLCJzaG93TG9uZ0Rlc2NyaXB0aW9uIiwiY2xhc3NMaXN0IiwiYWRkIiwiYWRkRXZlbnRMaXN0ZW5lciIsImUiLCJjbG9zZUJ0biIsInRhcmdldCIsImNsb3Nlc3QiLCJyZW1vdmUiLCJiYWNrZHJvcENsaWNrIiwiY29udGFpbnMiXSwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9qcy9zZWN0aW9ucy9zZWN0aW9uLXdlZWJ5LXByb2R1Y3QtZGV0YWlscy5qcz8zOWZkIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGluaXRQcm9kdWN0RGV0YWlscyA9ICgpID0+IHtcbiAgY29uc3QgcHJvZHVjdERldGFpbEhlYWRlcnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcucHJvZHVjdC1kZXRhaWxzX19jb250YWluZXJfX2RldGFpbCcpO1xuXG4gIHByb2R1Y3REZXRhaWxIZWFkZXJzLmZvckVhY2goKGhlYWRlcikgPT4ge1xuICAgIGNvbnN0IGluZGV4ID0gaGVhZGVyLmdldEF0dHJpYnV0ZSgnZGF0YS1pbmRleCcpO1xuICAgIGNvbnN0IGxvbmdEZXNjcmlwdGlvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYC5wcm9kdWN0LWRldGFpbHNfX2NvbnRhaW5lcl9fZGV0YWlsX190ZXh0X19sb25nLWRlc2NyaXB0aW9uW2RhdGEtaW5kZXg9XCIke2luZGV4fVwiXWApO1xuXG4gICAgY29uc3Qgc2hvd0xvbmdEZXNjcmlwdGlvbiA9ICgpID0+IHtcbiAgICAgIGxvbmdEZXNjcmlwdGlvbj8uY2xhc3NMaXN0LmFkZCgncHJvZHVjdC1kZXRhaWxzX19jb250YWluZXJfX2RldGFpbF9fdGV4dF9fbG9uZy1kZXNjcmlwdGlvbi0tdmlzaWJsZScpO1xuICAgIH07XG5cbiAgICBoZWFkZXIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBzaG93TG9uZ0Rlc2NyaXB0aW9uKTtcbiAgfSk7XG5cbiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4ge1xuICAgIGNvbnN0IGNsb3NlQnRuID0gZS50YXJnZXQuY2xvc2VzdCgnLnByb2R1Y3QtZGV0YWlsc19fY29udGFpbmVyX19kZXRhaWxfX3RleHRfX2xvbmctZGVzY3JpcHRpb25fX2hlYWRlcl9fY2xvc2UtYnV0dG9uJyk7XG4gICAgY29uc3QgbG9uZ0Rlc2NyaXB0aW9uID0gY2xvc2VCdG4/LmNsb3Nlc3QoJy5wcm9kdWN0LWRldGFpbHNfX2NvbnRhaW5lcl9fZGV0YWlsX190ZXh0X19sb25nLWRlc2NyaXB0aW9uJyk7XG4gIFxuICAgIGlmIChjbG9zZUJ0biAmJiBsb25nRGVzY3JpcHRpb24pIHtcbiAgICAgIGxvbmdEZXNjcmlwdGlvbi5jbGFzc0xpc3QucmVtb3ZlKCdwcm9kdWN0LWRldGFpbHNfX2NvbnRhaW5lcl9fZGV0YWlsX190ZXh0X19sb25nLWRlc2NyaXB0aW9uLS12aXNpYmxlJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICBcbiAgICBjb25zdCBiYWNrZHJvcENsaWNrID0gZS50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCdwcm9kdWN0LWRldGFpbHNfX2NvbnRhaW5lcl9fZGV0YWlsX190ZXh0X19sb25nLWRlc2NyaXB0aW9uJyk7XG4gICAgaWYgKGJhY2tkcm9wQ2xpY2spIHtcbiAgICAgIGUudGFyZ2V0LmNsYXNzTGlzdC5yZW1vdmUoJ3Byb2R1Y3QtZGV0YWlsc19fY29udGFpbmVyX19kZXRhaWxfX3RleHRfX2xvbmctZGVzY3JpcHRpb24tLXZpc2libGUnKTtcbiAgICB9XG4gI
10671H0pO1xuICBcbn07XG5cbmluaXRQcm9kdWN0RGV0YWlscygpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxrQkFBa0IsR0FBR0EsQ0FBQSxLQUFNO0VBQy9CLE1BQU1DLG9CQUFvQixHQUFHQyxRQUFRLENBQUNDLGdCQUFnQixDQUFDLHFDQUFxQyxDQUFDO0VBRTdGRixvQkFBb0IsQ0FBQ0csT0FBTyxDQUFFQyxNQUFNLElBQUs7SUFDdkMsTUFBTUMsS0FBSyxHQUFHRCxNQUFNLENBQUNFLFlBQVksQ0FBQyxZQUFZLENBQUM7SUFDL0MsTUFBTUMsZUFBZSxHQUFHTixRQUFRLENBQUNPLGFBQWEsQ0FBQywyRUFBMkVILEtBQUssSUFBSSxDQUFDO0lBRXBJLE1BQU1JLG1CQUFtQixHQUFHQSxDQUFBLEtBQU07TUFDaENGLGVBQWUsRUFBRUcsU0FBUyxDQUFDQyxHQUFHLENBQUMscUVBQXFFLENBQUM7SUFDdkcsQ0FBQztJQUVEUCxNQUFNLENBQUNRLGdCQUFnQixDQUFDLE9BQU8sRUFBRUgsbUJBQW1CLENBQUM7RUFDdkQsQ0FBQyxDQUFDO0VBRUZSLFFBQVEsQ0FBQ1csZ0JBQWdCLENBQUMsT0FBTyxFQUFHQyxDQUFDLElBQUs7SUFDeEMsTUFBTUMsUUFBUSxHQUFHRCxDQUFDLENBQUNFLE1BQU0sQ0FBQ0MsT0FBTyxDQUFDLG1GQUFtRixDQUFDO0lBQ3RILE1BQU1ULGVBQWUsR0FBR08sUUFBUSxFQUFFRSxPQUFPLENBQUMsNkRBQTZELENBQUM7SUFFeEcsSUFBSUYsUUFBUSxJQUFJUCxlQUFlLEVBQUU7TUFDL0JBLGVBQWUsQ0FBQ0csU0FBUyxDQUFDTyxNQUFNLENBQUMscUVBQXFFLENBQUM7TUFDdkc7SUFDRjtJQUVBLE1BQU1DLGFBQWEsR0FBR0wsQ0FBQyxDQUFDRSxNQUFNLENBQUNMLFNBQVMsQ0FBQ1MsUUFBUSxDQUFDLDREQUE0RCxDQUFDO0lBQy9HLElBQUlELGFBQWEsRUFBRTtNQUNqQkwsQ0FBQyxDQUFDRSxNQUFNLENBQUNMLFNBQVMsQ0FBQ08sTUFBTSxDQUFDLHFFQUFxRSxDQUFDO0lBQ2xHO0VBQ0YsQ0FBQyxDQUFDO0FBRUosQ0FBQztBQUVEbEIsa0JBQWtCLENBQUMsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
10672//# sourceURL=webpack-internal:///./src/js/sections/section-weeby-product-details.js
10673
10674}`)},"./src/js/snippets/description-tabs.js"(){eval(`{const initDescriptionTabs = () => {
10675  const tabTitles = document.querySelectorAll(".main-product__description-tabs__titles__title");
10676  tabTitles.forEach(title => {
10677    title.addEventListener("click", () => {
10678      const index = title.getAttribute("data-index");
10679      const getActiveTitles = document.querySelectorAll(".main-product__description-tabs__titles__title--active");
10680      const getActiveContents = document.querySelectorAll(".main-product__description-tabs__contents__content--active");
10681      getActiveTitles.forEach(t => t.classList.remove("main-product__description-tabs__titles__title--active"));
10682      getActiveContents.forEach(c => c.classList.remove("main-product__description-tabs__contents__content--active"));
10683      title.classList.add("main-product__description-tabs__titles__title--active");
10684      const contents = document.querySelectorAll(\`.main-product__description-tabs__contents__content[data-index='\${index}']\`);
10685      contents.forEach(content => {
10686        content.classList.add("main-product__description-tabs__contents__content--active");
10687      });
10688    });
10689  });
10690};
10691initDescriptionTabs();//# sourceURL=[module]
10692//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvanMvc25pcHBldHMvZGVzY3JpcHRpb24tdGFicy5qcyIsIm5hbWVzIjpbImluaXREZXNjcmlwdGlvblRhYnMiLCJ0YWJUaXRsZXMiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJmb3JFYWNoIiwidGl0bGUiLCJhZGRFdmVudExpc3RlbmVyIiwiaW5kZXgiLCJnZXRBdHRyaWJ1dGUiLCJnZXRBY3RpdmVUaXRsZXMiLCJnZXRBY3RpdmVDb250ZW50cyIsInQiLCJjbGFzc0xpc3QiLCJyZW1vdmUiLCJjIiwiYWRkIiwiY29udGVudHMiLCJjb250ZW50Il0sInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvanMvc25pcHBldHMvZGVzY3JpcHRpb24tdGFicy5qcz9jMmYwIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGluaXREZXNjcmlwdGlvblRhYnMgPSAoKSA9PiB7XG4gIGNvbnN0IHRhYlRpdGxlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgXCIubWFpbi1wcm9kdWN0X19kZXNjcmlwdGlvbi10YWJzX190aXRsZXNfX3RpdGxlXCJcbiAgKTtcblxuICB0YWJUaXRsZXMuZm9yRWFjaCgodGl0bGUpID0+IHtcbiAgICB0aXRsZS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSB0aXRsZS5nZXRBdHRyaWJ1dGUoXCJkYXRhLWluZGV4XCIpO1xuXG4gICAgICBjb25zdCBnZXRBY3RpdmVUaXRsZXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICAgICBcIi5tYWluLXByb2R1Y3RfX2Rlc2NyaXB0aW9uLXRhYnNfX3RpdGxlc19fdGl0bGUtLWFjdGl2ZVwiXG4gICAgICApO1xuICAgICAgY29uc3QgZ2V0QWN0aXZlQ29udGVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICAgICBcIi5tYWluLXByb2R1Y3RfX2Rlc2NyaXB0aW9uLXRhYnNfX2NvbnRlbnRzX19jb250ZW50LS1hY3RpdmVcIlxuICAgICAgKTtcblxuICAgICAgZ2V0QWN0aXZlVGl0bGVzLmZvckVhY2goKHQpID0+XG4gICAgICAgIHQuY2xhc3NMaXN0LnJlbW92ZShcbiAgICAgICAgICBcIm1haW4tcHJvZHVjdF9fZGVzY3JpcHRpb24tdGFic19fdGl0bGVzX190aXRsZS0tYWN0aXZlXCJcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIGdldEFjdGl2ZUNvbnRlbnRzLmZvckVhY2goKGMpID0+XG4gICAgICAgIGMuY2xhc3NMaXN0LnJlbW92ZShcbiAgICAgICAgICBcIm1haW4tcHJvZHVjdF9fZGVzY3JpcHRpb24tdGFic19fY29udGVudHNfX2NvbnRlbnQtLWFjdGl2ZVwiXG4gICAgICAgIClcbiAgICAgICk7XG5cbiAgICAgIHRpdGxlLmNsYXNzTGlzdC5hZGQoXG4gICAgICAgIFwibWFpbi1wcm9kdWN0X19kZXNjcmlwdGlvbi10YWJzX190aXRsZXNfX3RpdGxlLS1hY3RpdmVcIlxuICAgICAgKTtcbiAgICAgIFxuICAgICAgY29uc3QgY29udGVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICAgICBgLm1haW4tcHJvZHVjdF9fZGVzY3JpcHRpb24tdGFic19fY29udGVudHNfX2NvbnRlbnRbZGF0YS1pbmRleD0nJHtpbmRleH0nXWBcbiAgICAgICk7XG5cbiAgICAgIGNvbnRlbnRzLmZvckVhY2goKGNvbnRlbnQpID0+IHtcbiAgICAgICAgY29udGVudC5jbGFzc0xpc3QuYWRkKFxuICAgICAgICAgIFwibWFpbi1wcm9kdWN0X19kZXNjcmlwdGlvbi10YWJzX19jb250ZW50c19fY29udGVudC0tYWN0aXZlXCJcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn07XG5cbmluaXREZXNjcmlwdGlvblRhYnMoKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsbUJBQW1CLEdBQUdBLENBQUEsS0FBTTtFQUNoQyxNQUFNQyxTQUFTLEdBQUdDLFFBQVEsQ0FBQ0MsZ0JBQWdCLENBQ3pDLGdEQUNGLENBQUM7RUFFREYsU0FBUyxDQUFDRyxPQUFPLENBQUVDLEtBQUssSUFBSztJQUMzQkEsS0FBSyxDQUFDQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsTUFBTTtNQUNwQyxNQUFNQyxLQUFLLEdBQUdGLEtBQUssQ0FBQ0csWUFBWSxDQUFDLFlBQVksQ0FBQztNQUU5QyxNQUFNQyxlQUFlLEdBQUdQLFFBQVEsQ0FBQ0MsZ0JBQWdCLENBQy9DLHdEQUNGLENBQUM7TUFDRCxNQUFNTyxpQkFBaUIsR0FBR1IsUUFBUSxDQUFDQyxnQkFBZ0IsQ0FDakQsNERBQ0YsQ0FBQztNQUVETSxlQUFlLENBQUNMLE9BQU8sQ0FBRU8sQ0FBQyxJQUN4QkEsQ0FBQyxDQUFDQyxTQUFTLENBQUNDLE1BQU0sQ0FDaEIsdURBQ0YsQ0FDRixDQUFDO01BQ0RILGlCQUFpQixDQUFDTixPQUFPLENBQUVVLENBQUMsSUFDMUJBLENBQUMsQ0FBQ0YsU0FBUyxDQUFDQyxNQUFNLENBQ2hCLDJEQUNGLENBQ0YsQ0FBQztNQUVEUixLQUFLLENBQUNPLFNBQVMsQ0FBQ0csR0FBRyxDQUNqQix1REFDRixDQUFDO01BRUQsTUFBTUMsUUFBUSxHQUFHZCxRQUFRLENBQUNDLGdCQUFnQixDQUN4QyxrRUFBa0VJLEtBQUssSUFDekUsQ0FBQztNQUVEUyxRQUFRLENBQUNaLE9BQU8sQ0FBRWEsT0FBTyxJQUFLO1FBQzVCQSxPQUFPLENBQUNMLFNBQVMsQ0FBQ0csR0FBRyxDQUNuQiwyREFDRixDQUFDO01BQ0gsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDO0VBQ0osQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVEZixtQkFBbUIsQ0FBQyxDQUFDIiwiaWdub3JlTGlzdCI6W119
10693//# sourceURL=webpack-internal:///./src/js/snippets/description-tabs.js
10694
10695}`)},"./src/js/snippets/product-card.js"(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";eval(`{__webpack_require__.r(__webpack_exports__);
10696/* harmony import */ var swiper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! swiper */ "../node_modules/swiper/swiper.mjs");
10697/* harmony import */ var swiper_modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! swiper/modules */ "../node_modules/swiper/modules/index.mjs");
10698
10699
10700class ProductCards {
10701  constructor() {
10702    this.productCards = document.querySelectorAll('.product-card');
10703    if (this.productCards.length <= 0) return;
10704    this.init();
10705  }
10706  init() {
10707    this.productCards.forEach(productCard => {
10708      const slider = productCard.querySelector('.product-card__rollover__images.swiper');
10709      if (!slider) return;
10710      new swiper__WEBPACK_IMPORTED_MODULE_0__["default"](slider, {
10711        modules: [swiper_modules__WEBPACK_IMPORTED_MODULE_1__.Navigation, swiper_modules__WEBPACK_IMPORTED_MODULE_1__.Pagination],
10712        slidesPerView: 1,
10713        spaceBetween: 0,
10714        effect: 'fade',
10715        centeredSlides: true,
10716        loop: true,
10717        navigation: {
10718          nextEl: slider.querySelector('.swiper-button-next--product-card'),
10719          prevEl: slider.querySelector('.swiper-button-prev--product-card')
10720        },
10721        pagination: {
10722          el: slider.querySelector('.swiper-pagination'),
10723          clickable: true
10724        }
10725      });
10726    });
10727  }
10728}
10729new ProductCards();//# sourceURL=[module]
10730//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvanMvc25pcHBldHMvcHJvZHVjdC1jYXJkLmpzIiwibWFwcGluZ3MiOiI7OztBQUE0QjtBQUM0QjtBQUV4RCxN
10730QUFNRyxZQUFZLENBQUM7RUFDakJDLFdBQVdBLENBQUEsRUFBRztJQUNaLElBQUksQ0FBQ0MsWUFBWSxHQUFHQyxRQUFRLENBQUNDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQztJQUM5RCxJQUFJLElBQUksQ0FBQ0YsWUFBWSxDQUFDRyxNQUFNLElBQUksQ0FBQyxFQUFFO0lBQ25DLElBQUksQ0FBQ0MsSUFBSSxDQUFDLENBQUM7RUFDYjtFQUVBQSxJQUFJQSxDQUFBLEVBQUc7SUFDTCxJQUFJLENBQUNKLFlBQVksQ0FBQ0ssT0FBTyxDQUFDQyxXQUFXLElBQUk7TUFDdkMsTUFBTUMsTUFBTSxHQUFHRCxXQUFXLENBQUNFLGFBQWEsQ0FBQyx3Q0FBd0MsQ0FBQztNQUNsRixJQUFJLENBQUNELE1BQU0sRUFBRTtNQUNiLElBQUlaLDhDQUFNLENBQUNZLE1BQU0sRUFBRTtRQUNqQkUsT0FBTyxFQUFFLENBQUNiLHNEQUFVLEVBQUVDLHNEQUFVLENBQUM7UUFDakNhLGFBQWEsRUFBRSxDQUFDO1FBQ2hCQyxZQUFZLEVBQUUsQ0FBQztRQUNmQyxNQUFNLEVBQUUsTUFBTTtRQUNkQyxjQUFjLEVBQUUsSUFBSTtRQUNwQkMsSUFBSSxFQUFFLElBQUk7UUFDVkMsVUFBVSxFQUFFO1VBQ1ZDLE1BQU0sRUFBRVQsTUFBTSxDQUFDQyxhQUFhLENBQUMsbUNBQW1DLENBQUM7VUFDakVTLE1BQU0sRUFBRVYsTUFBTSxDQUFDQyxhQUFhLENBQUMsbUNBQW1DO1FBQ2xFLENBQUM7UUFDRFUsVUFBVSxFQUFFO1VBQ1ZDLEVBQUUsRUFBRVosTUFBTSxDQUFDQyxhQUFhLENBQUMsb0JBQW9CLENBQUM7VUFDOUNZLFNBQVMsRUFBRTtRQUNiO01BQ0YsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDO0VBQ0o7QUFDRjtBQUVBLElBQUl0QixZQUFZLENBQUMsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9qcy9zbmlwcGV0cy9wcm9kdWN0LWNhcmQuanM/ZjNjMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgU3dpcGVyIGZyb20gJ3N3aXBlcic7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uLCBQYWdpbmF0aW9uIH0gZnJvbSAnc3dpcGVyL21vZHVsZXMnO1xuXG5jbGFzcyBQcm9kdWN0Q2FyZHMge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnByb2R1Y3RDYXJkcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5wcm9kdWN0LWNhcmQnKTtcbiAgICBpZiAodGhpcy5wcm9kdWN0Q2FyZHMubGVuZ3RoIDw9IDApIHJldHVybjtcbiAgICB0aGlzLmluaXQoKTtcbiAgfVxuXG4gIGluaXQoKSB7XG4gICAgdGhpcy5wcm9kdWN0Q2FyZHMuZm9yRWFjaChwcm9kdWN0Q2FyZCA9PiB7XG4gICAgICBjb25zdCBzbGlkZXIgPSBwcm9kdWN0Q2FyZC5xdWVyeVNlbGVjdG9yKCcucHJvZHVjdC1jYXJkX19yb2xsb3Zlcl9faW1hZ2VzLnN3aXBlcicpO1xuICAgICAgaWYgKCFzbGlkZXIpIHJldHVybjtcbiAgICAgIG5ldyBTd2lwZXIoc2xpZGVyLCB7XG4gICAgICAgIG1vZHVsZXM6IFtOYXZpZ2F0aW9uLCBQYWdpbmF0aW9uXSxcbiAgICAgICAgc2xpZGVzUGVyVmlldzogMSxcbiAgICAgICAgc3BhY2VCZXR3ZWVuOiAwLFxuICAgICAgICBlZmZlY3Q6ICdmYWRlJyxcbiAgICAgICAgY2VudGVyZWRTbGlkZXM6IHRydWUsXG4gICAgICAgIGxvb3A6IHRydWUsXG4gICAgICAgIG5hdmlnYXRpb246IHtcbiAgICAgICAgICBuZXh0RWw6IHNsaWRlci5xdWVyeVNlbGVjdG9yKCcuc3dpcGVyLWJ1dHRvbi1uZXh0LS1wcm9kdWN0LWNhcmQnKSxcbiAgICAgICAgICBwcmV2RWw6IHNsaWRlci5xdWVyeVNlbGVjdG9yKCcuc3dpcGVyLWJ1dHRvbi1wcmV2LS1wcm9kdWN0LWNhcmQnKSxcbiAgICAgICAgfSxcbiAgICAgICAgcGFnaW5hdGlvbjoge1xuICAgICAgICAgIGVsOiBzbGlkZXIucXVlcnlTZWxlY3RvcignLnN3aXBlci1wYWdpbmF0aW9uJyksXG4gICAgICAgICAgY2xpY2thYmxlOiB0cnVlLFxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0pO1xuICB9XG59XG5cbm5ldyBQcm9kdWN0Q2FyZHMoKTsiXSwibmFtZXMiOlsiU3dpcGVyIiwiTmF2aWdhdGlvbiIsIlBhZ2luYXRpb24iLCJQcm9kdWN0Q2FyZHMiLCJjb25zdHJ1Y3RvciIsInByb2R1Y3RDYXJkcyIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvckFsbCIsImxlbmd0aCIsImluaXQiLCJmb3JFYWNoIiwicHJvZHVjdENhcmQiLCJzbGlkZXIiLCJxdWVyeVNlbGVjdG9yIiwibW9kdWxlcyIsInNsaWRlc1BlclZpZXciLCJzcGFjZUJldHdlZW4iLCJlZmZlY3QiLCJjZW50ZXJlZFNsaWRlcyIsImxvb3AiLCJuYXZpZ2F0aW9uIiwibmV4dEVsIiwicHJldkVsIiwicGFnaW5hdGlvbiIsImVsIiwiY2xpY2thYmxlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=
10731//# sourceURL=webpack-internal:///./src/js/snippets/product-card.js
10732
10733}`)},"./src/js/snippets/product-reassurance.js"(){eval(`{// import Swiper from "swiper";
10734// import { Pagination } from "swiper/modules";
10735
10736// const productReassuranceSwiper = document.querySelector(
10737//   ".product-reassurances"
10738// );
10739
10740// console.log(productReassuranceSwiper)
10741
10742// const initSwiper = () => {
10743//   if (productReassuranceSwiper) {
10744//     new Swiper(productReassuranceSwiper, {
10745//       modules: [Pagination],
10746//       slidesPerView: 1,
10747//       centeredSlides: false,
10748//       loop: false,
10749//       pagination: {
10750//         el: ".product-reassurances__pagination",
10751//         clickable: true,
10752//       }
10753//     });
10754//   }
10755// };
10756
10757// initSwiper();//# sourceURL=[module]
10758//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvanMvc25pcHBldHMvcHJvZHVjdC1yZWFzc3VyYW5jZS5qcyIsIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9qcy9zbmlwcGV0cy9wcm9kdWN0LXJlYXNzdXJhbmNlLmpzPzgwZWIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaW1wb3J0IFN3aXBlciBmcm9tIFwic3dpcGVyXCI7XG4vLyBpbXBvcnQgeyBQYWdpbmF0aW9uIH0gZnJvbSBcInN3aXBlci9tb2R1bGVzXCI7XG5cbi8vIGNvbnN0IHByb2R1Y3RSZWFzc3VyYW5jZVN3aXBlciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXG4vLyAgIFwiLnByb2R1Y3QtcmVhc3N1cmFuY2VzXCJcbi8vICk7XG5cbi8vIGNvbnNvbGUubG9nKHByb2R1Y3RSZWFzc3VyYW5jZVN3aXBlcilcblxuLy8gY29uc3QgaW5pdFN3aXBlciA9ICgpID0+IHtcbi8vICAgaWYgKHByb2R1Y3RSZWFzc3VyYW5jZVN3aXBlcikge1xuLy8gICAgIG5ldyBTd2lwZXIocHJvZHVjdFJlYXNzdXJhbmNlU3dpcGVyLCB7XG4vLyAgICAgICBtb2R1bGVzOiBbUGFnaW5hdGlvbl0sXG4vLyAgICAgICBzbGlkZXNQZXJWaWV3OiAxLFxuLy8gICAgICAgY2VudGVyZWRTbGlkZXM6IGZhbHNlLFxuLy8gICAgICAgbG9vcDogZmFsc2UsXG4vLyAgICAgICBwYWdpbmF0aW9uOiB7XG4vLyAgICAgICAgIGVsOiBcIi5wcm9kdWN0LXJlYXNzdXJhbmNlc19fcGFnaW5hdGlvblwiLFxuLy8gICAgICAgICBjbGlja2FibGU6IHRydWUsXG4vLyAgICAgICB9XG4vLyAgICAgfSk7XG4vLyAgIH1cbi8vIH07XG5cbi8vIGluaXRTd2lwZXIoKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0F
10758BRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImlnbm9yZUxpc3QiOltdfQ==
10759//# sourceURL=webpack-internal:///./src/js/snippets/product-reassurance.js
10760
10761}`)},"./src/js/snippets/tracking-drawer.js"(){eval(`{const initTrackingDrawer = () => {
10762  const trackingDrawerButton = document.querySelector('.main-product__tracking__button');
10763  const trackingDrawerContent = document.querySelector('.main-product__tracking__drawer');
10764  const closeButton = document.querySelector('.main-product__tracking__drawer__header__close-icon');
10765  if (trackingDrawerButton) {
10766    const makeDrawerVisible = () => {
10767      trackingDrawerContent.classList.add('main-product__tracking__drawer--visible');
10768    };
10769    const closeDrawer = () => {
10770      trackingDrawerContent.classList.remove('main-product__tracking__drawer--visible');
10771    };
10772    trackingDrawerButton.addEventListener('click', makeDrawerVisible);
10773    closeButton.addEventListener('click', closeDrawer);
10774    document.addEventListener('click', e => {
10775      const backdropClick = e.target.classList.contains('main-product__tracking__drawer');
10776      if (backdropClick) {
10777        closeDrawer();
10778      }
10779    });
10780  }
10781};
10782initTrackingDrawer();//# sourceURL=[module]
10783//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvanMvc25pcHBldHMvdHJhY2tpbmctZHJhd2VyLmpzIiwibmFtZXMiOlsiaW5pdFRyYWNraW5nRHJhd2VyIiwidHJhY2tpbmdEcmF3ZXJCdXR0b24iLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJ0cmFja2luZ0RyYXdlckNvbnRlbnQiLCJjbG9zZUJ1dHRvbiIsIm1ha2VEcmF3ZXJWaXNpYmxlIiwiY2xhc3NMaXN0IiwiYWRkIiwiY2xvc2VEcmF3ZXIiLCJyZW1vdmUiLCJhZGRFdmVudExpc3RlbmVyIiwiZSIsImJhY2tkcm9wQ2xpY2siLCJ0YXJnZXQiLCJjb250YWlucyJdLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL2pzL3NuaXBwZXRzL3RyYWNraW5nLWRyYXdlci5qcz8xY2M4Il0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGluaXRUcmFja2luZ0RyYXdlciA9ICgpID0+IHtcbiAgY29uc3QgdHJhY2tpbmdEcmF3ZXJCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcubWFpbi1wcm9kdWN0X190cmFja2luZ19fYnV0dG9uJyk7XG4gIGNvbnN0IHRyYWNraW5nRHJhd2VyQ29udGVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5tYWluLXByb2R1Y3RfX3RyYWNraW5nX19kcmF3ZXInKTsgXG4gIGNvbnN0IGNsb3NlQnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLm1haW4tcHJvZHVjdF9fdHJhY2tpbmdfX2RyYXdlcl9faGVhZGVyX19jbG9zZS1pY29uJyk7XG5cbiAgaWYgKHRyYWNraW5nRHJhd2VyQnV0dG9uKSB7XG4gICAgY29uc3QgbWFrZURyYXdlclZpc2libGUgPSAoKSA9PiB7XG4gICAgICB0cmFja2luZ0RyYXdlckNvbnRlbnQuY2xhc3NMaXN0LmFkZCgnbWFpbi1wcm9kdWN0X190cmFja2luZ19fZHJhd2VyLS12aXNpYmxlJyk7XG4gICAgfTtcblxuICAgIGNvbnN0IGNsb3NlRHJhd2VyID0gKCkgPT4ge1xuICAgICAgdHJhY2tpbmdEcmF3ZXJDb250ZW50LmNsYXNzTGlzdC5yZW1vdmUoJ21haW4tcHJvZHVjdF9fdHJhY2tpbmdfX2RyYXdlci0tdmlzaWJsZScpO1xuICAgIH07XG5cbiAgICB0cmFja2luZ0RyYXdlckJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIG1ha2VEcmF3ZXJWaXNpYmxlKTtcbiAgICBjbG9zZUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGNsb3NlRHJhd2VyKTtcblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHtcbiAgICAgIGNvbnN0IGJhY2tkcm9wQ2xpY2sgPSBlLnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ21haW4tcHJvZHVjdF9fdHJhY2tpbmdfX2RyYXdlcicpO1xuICAgICAgaWYgKGJhY2tkcm9wQ2xpY2spIHtcbiAgICAgICAgY2xvc2VEcmF3ZXIoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuaW5pdFRyYWNraW5nRHJhd2VyKCk7Il0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxrQkFBa0IsR0FBR0EsQ0FBQSxLQUFNO0VBQy9CLE1BQU1DLG9CQUFvQixHQUFHQyxRQUFRLENBQUNDLGFBQWEsQ0FBQyxpQ0FBaUMsQ0FBQztFQUN0RixNQUFNQyxxQkFBcUIsR0FBR0YsUUFBUSxDQUFDQyxhQUFhLENBQUMsaUNBQWlDLENBQUM7RUFDdkYsTUFBTUUsV0FBVyxHQUFHSCxRQUFRLENBQUNDLGFBQWEsQ0FBQyxxREFBcUQsQ0FBQztFQUVqRyxJQUFJRixvQkFBb0IsRUFBRTtJQUN4QixNQUFNSyxpQkFBaUIsR0FBR0EsQ0FBQSxLQUFNO01BQzlCRixxQkFBcUIsQ0FBQ0csU0FBUyxDQUFDQyxHQUFHLENBQUMseUNBQXlDLENBQUM7SUFDaEYsQ0FBQztJQUVELE1BQU1DLFdBQVcsR0FBR0EsQ0FBQSxLQUFNO01BQ3hCTCxxQkFBcUIsQ0FBQ0csU0FBUyxDQUFDRyxNQUFNLENBQUMseUNBQXlDLENBQUM7SUFDbkYsQ0FBQztJQUVEVCxvQkFBb0IsQ0FBQ1UsZ0JBQWdCLENBQUMsT0FBTyxFQUFFTCxpQkFBaUIsQ0FBQztJQUNqRUQsV0FBVyxDQUFDTSxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUVGLFdBQVcsQ0FBQztJQUVsRFAsUUFBUSxDQUFDUyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUdDLENBQUMsSUFBSztNQUN4QyxNQUFNQyxhQUFhLEdBQUdELENBQUMsQ0FBQ0UsTUFBTSxDQUFDUCxTQUFTLENBQUNRLFFBQVEsQ0FBQyxnQ0FBZ0MsQ0FBQztNQUNuRixJQUFJRixhQUFhLEVBQUU7UUFDakJKLFdBQVcsQ0FBQyxDQUFDO01BQ2Y7SUFDRixDQUFDLENBQUM7RUFDSjtBQUNGLENBQUM7QUFFRFQsa0JBQWtCLENBQUMsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
10784//# sourceURL=webpack-internal:///./src/js/snippets/tracking-drawer.js
10785
10786}`)},"./src/js/snippets/variant-picker.js"(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";eval(`{__webpack_require__.r(__webpack_exports__);
10787/* harmony export */ __webpack_require__.d(__webpack_exports__, {
10788/* harmony export */   initVariantList: () => (/* binding */ initVariantList)
10789/* harmony export */ });
10790/* harmony import */ var _utils_helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/helper */ "./src/js/utils/helper.js");
10791
10792const initSelectChange = () => {
10793  const selectElements = document.querySelectorAll("[name='selectSize']");
10794  selectElements.forEach(selectElement => {
10795    const selectLocation = selectElement.getAttribute("data-location");
10796    const form = selectLocation == "sticky" ? selectElement.closest(".product-sticky-bar") : selectElement.closest(".product--fiche");
10797    selectElement.addEventListener("change", function (event) {
10798      var selectedValue = event.target.value;
10799      var radioButtonS = form.querySelector(\`input[type="radio"][value="\${selectedValue}"]\`);
10800      if (radioButtonS) {
10801        radioButtonS.click();
10802      }
10803    });
10804  });
10805};
10806initSelectChange();
10807let observer; // prevent multiple observers
10808
10809const initVariantList = () => {
10810  // Remove previous observers if any
10811  if (observer) {
10812    observer.disconnect();
10813  }
10814  const setupVariantPickers = () => {
10815    const variantsList = document.querySelectorAll(window.innerWidth > 767 ? '.main-product__variant-picker' : '.main-product__variant-picker.weeby-hide-desktop');
10816    variantsList.forEach(variant => {
10817      const arrowButton = variant.querySelector('.main-product__variant-picker__button__arrow');
10818      const variantList = variant.querySelector('.main-product__variant-picker__list');
10819      const variantButton = variant.querySelector('.main-product__variant-picker__button');
10820      if (!variantButton || !variantList || !arrowButton) return;
10821
10822      // Avoid double-binding
10823      if (variantButton.dataset.bound === 'true') return;
10824      const toggleList = () => {
10825        arrowButton.classList.toggle('main-product__variant-picker__button__arrow--rotate');
10826        variantList.classList.toggle('main-product__variant-picker__list--visible');
10827      };
10828      variantButton.addEventListener('click', toggleList);
10829      variantButton.dataset.bound = 'true';
10830    });
10831  };
10832
10833  // Setup once in case DOM is already ready
10834  setupVariantPickers();
10835
10836  // Observe future changes
10837  observer = new MutationObserver(() => {
10838    setupVariantPickers();
10839  });
10840  observer.observe(document.body, {
10841    childList: true,
10842    subtree: true
10843  });
10844};
10845window.addEventListener('resize', (0,_utils_helper__WEBPACK_IMPORTED_MODULE_0__.debounce)(initVariantList, 200));
10846initVariantList();//# sourceURL=[module]
10847//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvanMvc25pcHBldHMvdmFyaWFudC1waWNrZXIuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBMkM7QUFFM0MsTUFBTUMsZ0JBQWdCLEdBQUdBLENBQUEsS0FBTTtFQUM3QixNQUFNQyxjQUFjLEdBQUdDLFFBQVEsQ0FBQ0MsZ0JBQWdCLENBQUMscUJBQXFCLENBQUM7RUFFdkVGLGNBQWMsQ0FBQ0csT0FBTyxDQUFDQyxhQUFhLElBQUk7SUFDdEMsTUFBTUMsY0FBYyxHQUFHRCxhQUFhLENBQUNFLFlBQVksQ0FBQyxlQUFlLENBQUM7SUFDbEUsTUFBTUMsSUFBSSxHQUFHRixjQUFjLElBQUksUUFBUSxHQUFHRCxhQUFhLENBQUNJLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHSixhQUFhLENBQUNJLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztJQUVqSUosYUFBYSxDQUFDSyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsVUFBU0MsS0FBSyxFQUFFO01BQ3ZELElBQUlDLGFBQWEsR0FBR0QsS0FBSyxDQUFDRSxNQUFNLENBQUNDLEtBQUs7TUFDdEMsSUFBSUMsWUFBWSxHQUFHUCxJQUFJLENBQUNRLGFBQWEsQ0FBQyw4QkFBOEJKLGFBQWEsSUFBSSxDQUFDO01BRXRGLElBQUlHLFlBQVksRUFBRTtRQUNoQkEsWUFBWSxDQUFDRSxLQUFLLENBQUMsQ0FBQztNQUN0QjtJQUNGLENBQUMsQ0FBQztFQUNKLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRGpCLGdCQUFnQixDQUFDLENBQUM7QUFFbEIsSUFBSWtCLFFBQVEsQ0FBQyxDQUFDOztBQUVQLE1BQU1DLGVBQWUsR0FBR0EsQ0FBQSxLQUFNO0VBQ25DO0VBQ0EsSUFBSUQsUUFBUSxFQUFFO0lBQ1pBLFFBQVEsQ0FBQ0UsVUFBVSxDQUFDLENBQUM7RUFDdkI7RUFFQSxNQUFNQyxtQkFBbUIsR0FBR0EsQ0FBQSxLQUFNO0lBQ2hDLE1BQU1DLFlBQVksR0FBR3BCLFFBQVEsQ0FBQ0MsZ0JBQWdCLENBQzVDb0IsTUFBTSxDQUFDQyxVQUFVLEdBQUcsR0FBRyxHQUNuQiwrQkFBK0IsR0FDL0Isa0RBQ04sQ0FBQztJQUVERixZQUFZLENBQUNsQixPQUFPLENBQUVxQixPQUFPLElBQUs7TUFDaEMsTUFBTUMsV0FBVyxHQUFHRCxPQUFPLENBQUNULGFBQWEsQ0FBQyw4Q0FBOEMsQ0FBQztNQUN6RixNQUFNVyxXQUFXLEdBQUdGLE9BQU8sQ0FBQ1QsYUFBYSxDQUFDLHFDQUFxQyxDQUFDO01BQ2hGLE1BQU1ZLGFBQWEsR0FBR0gsT0FBTyxDQUFDVCxhQUFhLENBQUMsdUNBQXVDLENBQUM7TUFFcEYsSUFBSSxDQUFDWSxhQUFhLElBQUksQ0FBQ0QsV0FBVyxJQUFJLENBQUNELFdBQVcsRUFBRTs7TUFFcEQ7TUFDQSxJQUFJRSxhQUFhLENBQUNDLE9BQU8sQ0FBQ0MsS0FBSyxLQUFLLE1BQU0sRUFBRTtNQUU1QyxNQUFNQyxVQUFVLEdBQUdBLENBQUEsS0FBTTtRQUN2QkwsV0FBVyxDQUFDTSxTQUFTLENBQUNDLE1BQU0sQ0FBQyxxREFBcUQsQ0FBQztRQUNuRk4sV0FBVyxDQUFDSyxTQUFTLENBQUNDLE1BQU0sQ0FBQyw2Q0FBNkMsQ0FBQztNQUM3RSxDQUFDO01BRURMLGFBQWEsQ0FBQ2xCLGdCQUFnQixDQUFDLE9BQU8sRUFBRXFCLFVBQVUsQ0FBQztNQUNuREgsYUFBYSxDQUFDQyxPQUFPLENBQUNDLEtBQUssR0FBRyxNQUFNO0lBQ3RDLENBQUMsQ0FBQztFQUNKLENBQUM7O0VBRUQ7RUFDQVQsbUJBQW1CLENBQUMsQ0FBQzs7RUFFckI7RUFDQUgsUUFBUSxHQUFHLElBQUlnQixnQkFBZ0IsQ0FBQyxNQUFNO0lBQ3BDYixtQkFBbUIsQ0FBQyxDQUFDO0VBQ3ZCLENBQUMsQ0FBQztFQUVGSCxRQUFRLENBQUNpQixPQUFPLENBQUNqQyxRQUFRLENBQUNrQyxJQUFJLEVBQUU7SUFDOUJDLFNBQVMsRUFBRSxJQUFJO0lBQ2ZDLE9BQU8sRUFBRTtFQUNYLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRGYsTUFBTSxDQUFDYixnQkFBZ0IsQ0FBQyxRQUFRLEVBQUVYLHVEQUFRLENBQUNvQixlQUFlLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDakVBLGVBQWUsQ0FBQyxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL2pzL3NuaXBwZXRzL3ZhcmlhbnQtcGlja2VyLmpzP2IyYTQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVib3VuY2UgfSBmcm9tIFwiLi4vdXRpbHMvaGVscGVyXCI7XG5cbmNvbnN0IGluaXRTZWxlY3RDaGFuZ2UgPSAoKSA9PiB7XG4gIGNvbnN0IHNlbGVjdEVsZW1lbnRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIltuYW1lPSdzZWxlY3RTaXplJ11cIik7XG5cbiAgc2VsZWN0RWxlbWVudHMuZm9yRWFjaChzZWxlY3RFbGVtZW50ID0+IHtcbiAgICBjb25zdCBzZWxlY3RMb2NhdGlvbiA9IHNlbGVjdEVsZW1lbnQuZ2V0QXR0cmlidXRlKFwiZGF0YS1sb2NhdGlvblwiKTtcbiAgICBjb25zdCBmb3JtID0gc2VsZWN0TG9jYXRpb24gPT0gXCJzdGlja3lcIiA/IHNlbGVjdEVsZW1lbnQuY2xvc2VzdChcIi5wcm9kdWN0LXN0aWNreS1iYXJcIikgOiBzZWxlY3RFbGVtZW50LmNsb3Nlc3QoXCIucHJvZHVjdC0tZmljaGVcIik7XG5cbiAgICBzZWxlY3RFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIiwgZnVuY3Rpb24oZXZlbnQpIHtcbiAgICAgIHZhciBzZWxlY3RlZFZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgICAgdmFyIHJhZGlvQnV0dG9uUyA9IGZvcm0ucXVlcnlTZWxlY3RvcihgaW5wdXRbdHlwZT1cInJhZGlvXCJdW3ZhbHVlPVwiJHtzZWxlY3RlZFZhbHVlfVwiXWApO1xuICAgIFxuICAgICAgaWYgKHJhZGlvQnV0dG9uUykge1xuICAgICAgICByYWRpb0J1dHRvblMuY2xpY2soKTsgXG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuXG5pbml0U2VsZWN0Q2hhbmdlKCk7XG5cbmxldCBvYnNlcnZlcjsgLy8gcHJldmVudCBtdWx0aXBsZSBvYnNlcnZlcnNcblxuZXhwb3J0IGNvbnN0IGluaXRWYXJpYW50TGlzdCA9ICgpID0+IHtcbiAgLy8gUmVtb3ZlIHByZXZpb3VzIG9ic2VydmVycyBpZiBhbnlcbiAgaWYgKG9ic2VydmVyKSB7XG4gICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICB9XG5cbiAgY29uc3Qgc2V0dXBWYXJpYW50UGlja2VycyA9ICgpID0+IHtcbiAgICBjb25zdCB2YXJpYW50c0xpc3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICAgd2luZG93LmlubmVyV2lkdGggPiA3NjdcbiAgICAgICAgPyAnLm1haW4tcHJvZHVjdF9fdmFyaWFudC1waWNrZXInXG4gICAgICAgIDogJy5tYWluLXByb2R1Y3RfX3ZhcmlhbnQtcGlja2VyLndlZWJ5LWhpZGUtZGVza3RvcCdcbiAgICApO
108471xuXG4gICAgdmFyaWFudHNMaXN0LmZvckVhY2goKHZhcmlhbnQpID0+IHtcbiAgICAgIGNvbnN0IGFycm93QnV0dG9uID0gdmFyaWFudC5xdWVyeVNlbGVjdG9yKCcubWFpbi1wcm9kdWN0X192YXJpYW50LXBpY2tlcl9fYnV0dG9uX19hcnJvdycpO1xuICAgICAgY29uc3QgdmFyaWFudExpc3QgPSB2YXJpYW50LnF1ZXJ5U2VsZWN0b3IoJy5tYWluLXByb2R1Y3RfX3ZhcmlhbnQtcGlja2VyX19saXN0Jyk7XG4gICAgICBjb25zdCB2YXJpYW50QnV0dG9uID0gdmFyaWFudC5xdWVyeVNlbGVjdG9yKCcubWFpbi1wcm9kdWN0X192YXJpYW50LXBpY2tlcl9fYnV0dG9uJyk7XG5cbiAgICAgIGlmICghdmFyaWFudEJ1dHRvbiB8fCAhdmFyaWFudExpc3QgfHwgIWFycm93QnV0dG9uKSByZXR1cm47XG5cbiAgICAgIC8vIEF2b2lkIGRvdWJsZS1iaW5kaW5nXG4gICAgICBpZiAodmFyaWFudEJ1dHRvbi5kYXRhc2V0LmJvdW5kID09PSAndHJ1ZScpIHJldHVybjtcblxuICAgICAgY29uc3QgdG9nZ2xlTGlzdCA9ICgpID0+IHtcbiAgICAgICAgYXJyb3dCdXR0b24uY2xhc3NMaXN0LnRvZ2dsZSgnbWFpbi1wcm9kdWN0X192YXJpYW50LXBpY2tlcl9fYnV0dG9uX19hcnJvdy0tcm90YXRlJyk7XG4gICAgICAgIHZhcmlhbnRMaXN0LmNsYXNzTGlzdC50b2dnbGUoJ21haW4tcHJvZHVjdF9fdmFyaWFudC1waWNrZXJfX2xpc3QtLXZpc2libGUnKTtcbiAgICAgIH07XG5cbiAgICAgIHZhcmlhbnRCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0b2dnbGVMaXN0KTtcbiAgICAgIHZhcmlhbnRCdXR0b24uZGF0YXNldC5ib3VuZCA9ICd0cnVlJztcbiAgICB9KTtcbiAgfTtcblxuICAvLyBTZXR1cCBvbmNlIGluIGNhc2UgRE9NIGlzIGFscmVhZHkgcmVhZHlcbiAgc2V0dXBWYXJpYW50UGlja2VycygpO1xuXG4gIC8vIE9ic2VydmUgZnV0dXJlIGNoYW5nZXNcbiAgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiB7XG4gICAgc2V0dXBWYXJpYW50UGlja2VycygpO1xuICB9KTtcblxuICBvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmJvZHksIHtcbiAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgc3VidHJlZTogdHJ1ZSxcbiAgfSk7XG59O1xuXG53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgZGVib3VuY2UoaW5pdFZhcmlhbnRMaXN0LCAyMDApKTtcbmluaXRWYXJpYW50TGlzdCgpO1xuXG5cbiJdLCJuYW1lcyI6WyJkZWJvdW5jZSIsImluaXRTZWxlY3RDaGFuZ2UiLCJzZWxlY3RFbGVtZW50cyIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvckFsbCIsImZvckVhY2giLCJzZWxlY3RFbGVtZW50Iiwic2VsZWN0TG9jYXRpb24iLCJnZXRBdHRyaWJ1dGUiLCJmb3JtIiwiY2xvc2VzdCIsImFkZEV2ZW50TGlzdGVuZXIiLCJldmVudCIsInNlbGVjdGVkVmFsdWUiLCJ0YXJnZXQiLCJ2YWx1ZSIsInJhZGlvQnV0dG9uUyIsInF1ZXJ5U2VsZWN0b3IiLCJjbGljayIsIm9ic2VydmVyIiwiaW5pdFZhcmlhbnRMaXN0IiwiZGlzY29ubmVjdCIsInNldHVwVmFyaWFudFBpY2tlcnMiLCJ2YXJpYW50c0xpc3QiLCJ3aW5kb3ciLCJpbm5lcldpZHRoIiwidmFyaWFudCIsImFycm93QnV0dG9uIiwidmFyaWFudExpc3QiLCJ2YXJpYW50QnV0dG9uIiwiZGF0YXNldCIsImJvdW5kIiwidG9nZ2xlTGlzdCIsImNsYXNzTGlzdCIsInRvZ2dsZSIsIk11dGF0aW9uT2JzZXJ2ZXIiLCJvYnNlcnZlIiwiYm9keSIsImNoaWxkTGlzdCIsInN1YnRyZWUiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==
10848//# sourceURL=webpack-internal:///./src/js/snippets/variant-picker.js
10849
10850}`)},"./src/js/utils/helper.js"(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";eval(`{__webpack_require__.r(__webpack_exports__);
10851/* harmony export */ __webpack_require__.d(__webpack_exports__, {
10852/* harmony export */   debounce: () => (/* binding */ debounce)
10853/* harmony export */ });
10854const debounce = (func, wait) => {
10855  let timeout;
10856  return function (...args) {
10857    clearTimeout(timeout);
10858    timeout = setTimeout(() => func.apply(this, args), wait);
10859  };
10860};//# sourceURL=[module]
10861//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvanMvdXRpbHMvaGVscGVyLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBTyxNQUFNQSxRQUFRLEdBQUdBLENBQUNDLElBQUksRUFBRUMsSUFBSSxLQUFLO0VBQ3RDLElBQUlDLE9BQU87RUFDWCxPQUFPLFVBQVUsR0FBR0MsSUFBSSxFQUFFO0lBQ3hCQyxZQUFZLENBQUNGLE9BQU8sQ0FBQztJQUNyQkEsT0FBTyxHQUFHRyxVQUFVLENBQUMsTUFBTUwsSUFBSSxDQUFDTSxLQUFLLENBQUMsSUFBSSxFQUFFSCxJQUFJLENBQUMsRUFBRUYsSUFBSSxDQUFDO0VBQzFELENBQUM7QUFDSCxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL2pzL3V0aWxzL2hlbHBlci5qcz9mYzQzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBkZWJvdW5jZSA9IChmdW5jLCB3YWl0KSA9PiB7XG4gIGxldCB0aW1lb3V0O1xuICByZXR1cm4gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKSwgd2FpdCk7XG4gIH07XG59OyJdLCJuYW1lcyI6WyJkZWJvdW5jZSIsImZ1bmMiLCJ3YWl0IiwidGltZW91dCIsImFyZ3MiLCJjbGVhclRpbWVvdXQiLCJzZXRUaW1lb3V0IiwiYXBwbHkiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==
10862//# sourceURL=webpack-internal:///./src/js/utils/helper.js
10863
10864}`)},"./src/scss/index.scss"(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";eval(`{__webpack_require__.r(__webpack_exports__);
10865// extracted by mini-css-extract-plugin
10866//# sourceURL=[module]
10867//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvc2Nzcy9pbmRleC5zY3NzIiwibWFwcGluZ3MiOiI7QUFBQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9zY3NzL2luZGV4LnNjc3M/MjIwOSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBleHRyYWN0
10867ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbmV4cG9ydCB7fTsiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9
10868//# sourceURL=webpack-internal:///./src/scss/index.scss
10869
10870}`)}},__webpack_module_cache__={};function __webpack_require__(moduleId){var cachedModule=__webpack_module_cache__[moduleId];if(cachedModule!==void 0)return cachedModule.exports;if(__webpack_modules__[moduleId]===void 0){var e=new Error("Cannot find module '"+moduleId+"'");throw e.code="MODULE_NOT_FOUND",e}var module2=__webpack_module_cache__[moduleId]={exports:{}};return __webpack_modules__[moduleId].call(module2.exports,module2,module2.exports,__webpack_require__),module2.exports}__webpack_require__.n=module2=>{var getter=module2&&module2.__esModule?()=>module2.default:()=>module2;return __webpack_require__.d(getter,{a:getter}),getter},__webpack_require__.d=(exports,definition)=>{for(var key in definition)__webpack_require__.o(definition,key)&&!__webpack_require__.o(exports,key)&&Object.defineProperty(exports,key,{enumerable:!0,get:definition[key]})},__webpack_require__.o=(obj,prop)=>Object.prototype.hasOwnProperty.call(obj,prop),__webpack_require__.r=exports=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(exports,"__esModule",{value:!0})};var __webpack_exports__=__webpack_require__("./src/js/index.js")})();
10871//# sourceMappingURL=/cdn/shop/t/78/assets/index.bundle.js.map?v=28315756741163670511790946417

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.