PageSourceSearch

https://ginzaplace.jp/theme/gp/assets/js/app.js

js ginzaplace.jp collected 2026-09-29 21:12:29 UTC 862,083 bytes, 23,390 lines download raw bytes

1/******/ (function() { // webpackBootstrap
2/******/ 	"use strict";
3/******/ 	var __webpack_modules__ = ({
4
5/***/ "./src/assets/js/utils/Gnav.js":
6/*!*************************************!*\
7  !*** ./src/assets/js/utils/Gnav.js ***!
8  \*************************************/
9/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
10
11__webpack_require__.r(__webpack_exports__);
12/* harmony import */ var _Parallax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Parallax */ "./src/assets/js/utils/Parallax.js");
13
14/* harmony default export */ __webpack_exports__["default"] = (class {
15  constructor() {
16    // ▼ グローバルメニュー
17    const gnavOpen = document.querySelectorAll("#gnavOpen a");
18    const gnavClose = document.querySelectorAll("#gnavClose, .gnavBg");
19    const gnavOpenArray = Array.prototype.slice.call(gnavOpen, 0);
20    const gnavCloseArray = Array.prototype.slice.call(gnavClose, 0);
21    gnavOpenArray.forEach(element => {
22      element.addEventListener("click", function (e) {
23        document.querySelector("body").classList.add("-gnavOpen");
24        _Parallax__WEBPACK_IMPORTED_MODULE_0__.lenis.stop();
25        e.preventDefault();
26      }, false);
27    });
28    gnavCloseArray.forEach(element => {
29      element.addEventListener("click", function (e) {
30        document.querySelector("body").classList.remove("-gnavOpen");
31        _Parallax__WEBPACK_IMPORTED_MODULE_0__.lenis.start();
32        e.preventDefault();
33      }, false);
34    });
35  }
36});
37
38/***/ }),
39
40/***/ "./src/assets/js/utils/Parallax.js":
41/*!*****************************************!*\
42  !*** ./src/assets/js/utils/Parallax.js ***!
43  \*****************************************/
44/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
45
46__webpack_require__.r(__webpack_exports__);
47/* harmony export */ __webpack_require__.d(__webpack_exports__, {
48/* harmony export */   lenis: function() { return /* binding */ lenis; }
49/* harmony export */ });
50/* harmony import */ var gsap__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! gsap */ "./node_modules/gsap/index.js");
51/* harmony import */ var gsap_ScrollTrigger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! gsap/ScrollTrigger */ "./node_modules/gsap/ScrollTrigger.js");
52/* harmony import */ var _studio_freight_lenis__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @studio-freight/lenis */ "./node_modules/@studio-freight/lenis/dist/lenis.modern.mjs");
53
54
55
56const lenis = new _studio_freight_lenis__WEBPACK_IMPORTED_MODULE_0__["default"]({
57  wheelMultiplier: 0.6
58});
59lenis.on("scroll", e => {
60  // console.log(e);
61});
62function raf(time) {
63  lenis.raf(time);
64  requestAnimationFrame(raf);
65}
66requestAnimationFrame(raf);
67const mm = 767; // matchMedia(SP)
68
69gsap__WEBPACK_IMPORTED_MODULE_1__.gsap.registerPlugin(gsap_ScrollTrigger__WEBPACK_IMPORTED_MODULE_2__.ScrollTrigger);
70
71// SmoothScroll
72class SmoothScroll {
73  constructor() {
74    this._initSmoothScroll();
75  }
76  _initSmoothScroll() {
77    const smoothScrollTrigger = document.querySelectorAll('a[href^="#"]');
78    for (let i = 0; i < smoothScrollTrigger.length; i++) {
79      smoothScrollTrigger[i].addEventListener("click", e => {
80        e.preventDefault();
81        let href = smoothScrollTrigger[i].getAttribute("href");
82        let targetElement = document.getElementById(href.replace("#", ""));
83        const rect = targetElement.getBoundingClientRect().top;
84        const offset = window.pageYOffset;
85        const gap = 0;
86        const target = rect + offset - gap;
87        window.scrollTo({
88          top: target,
89          behavior: "smooth"
90        });
91      });
92    }
93  }
94}
95document.addEventListener("DOMContentLoaded", () => {
96  new SmoothScroll();
97}, false);
98/* harmony default export */ __webpack_exports__["default"] = (class {
99  constructor() {
100    let element;
101
102    // ▼ PAGE TOP
103    gsap__WEBPACK_IMPORTED_MODULE_1__.gsap.from(".pageTop", {
104      autoAlpha: 0,
105      scrollTrigger: {
106        trigger: "#wrapper",
107        start: window.innerHeight + " top",
108        toggleActions: "play none none reverse"
109        // markers: true,
110      }
111    });
112    // ▼ ヘッダーが黒背景に重なったら色反転用Class付与
113    element = document.querySelectorAll("section.-black, .pageHeader");
114    if (element) {
115      for (let index = 0; index < element.length; index++) {
116        const item = element[index];
117        gsap_ScrollTrigger__WEBPACK_IMPORTED_MODULE_2__.ScrollTrigger.create({
118          trigger: item,
119          start: "top-=40 top",
120          end: "bottom-=40 top",
121          toggleClass: {
122            targets: ".l-header",
123            className: "-white"
124          }
125          // markers: true,
126        });
127      }
128    }
129    // ▼ TOP MVをスクロールしたらフェードアウト
130    element = document.querySelector("section.mv");
131    if (element) {
132      gsap__WEBPACK_IMPORTED_MODULE_1__.gsap.to(element, {
133        autoAlpha: 0,
134        scrollTrigger: {
135          trigger: "section.mv",
136          start: "30% top",
137          // scrub: true,
138          toggleActions: "play none none reverse"
139          // markers: true,
140        }
141      });
142    }
143    // ▼ TOP SHOP NEWS & TOPICS背景フェード
144    element = document.querySelector(".sec-topTopics .topTopics_bgW");
145    if (element) {
146      gsap__WEBPACK_IMPORTED_MODULE_1__.gsap.to(element, {
147        autoAlpha: 0,
148        scrollTrigger: {
149          trigger: ".sec-topTopics",
150          start: "-20% top",
151          end: "40% top",
152          toggleActions: "play none none reverse",
153          scrub: true
154          // markers: true,
155        }
156      });
157    }
158
159    element = document.querySelector(".sec-topTopics");
160    if (element) {
161      gsap_ScrollTrigger__WEBPACK_IMPORTED_MODULE_2__.ScrollTrigger.create({
162        trigger: element,
163        start: "-100 bottom",
164        end: "bottom top",
165        toggleClass: {
166          targets: ".sec-topTopics",
167          className: "gsap-topTopicsBG"
168        }
169        // markers: true,
170      });
171    }
172    // gsap.utils.toArray("section").forEach((target) => {
173    //   ScrollTrigger.create({
174    //     trigger: target,
175    //     start: "top bottom",
176    //     end: "bottom top",
177    //     toggleClass: { targets: target, className: "gsap-topTopicsBG" },
178    //     markers: true,
179    //   });
180    // });
181    gsap__WEBPACK_IMPORTED_MODULE_1__.gsap.matchMedia().add("(min-width:" + (mm + 1) + "px)", () => {
182      // ▼ TOP SHOP NEWS & TOPICSタイトルフェード
183      element = document.querySelector(".sec-topTopics .title-section");
184      if (element) {
185        gsap__WEBPACK_IMPORTED_MODULE_1__.gsap.from(element, {
186          autoAlpha: 0,
187          scrollTrigger: {
188            trigger: ".sec-topTopics",
189            start: "40% center",
190            // end: "bottom bottom",
191            toggleActions: "play none none reverse"
192            // scrub: true,
193            // markers: true,
194          }
195        });
196        // ▼ TOP SHOP NEWS & TOPICSタイトル固定
197        gsap_ScrollTrigger__WEBPACK_IMPORTED_MODULE_2__.ScrollTrigger.create({
198          pinnedContainer: ".sec-topTopics",
199          trigger: element,
200          pin: true,
201          start: "top top",
202          endTrigger: ".sec-topTopics + section",
203          end: "top bottom",
204          pinSpacing: false
205          // markers: true,
206        });
207      }
208      // ▼ TOP SHOP NEWS & TOPICS カードフェードイン
209      element = document.querySelector(".sec-topTopics .list-topTopics_item");
210      if (element) {
211        gsap__WEBPACK_IMPORTED_MODULE_1__.gsap.from(element, {
212          autoAlpha: 0,
213          y: "15%",
214          duration: 1,
215          scrollTrigger: {
216            trigger: ".sec-topTopics",
217            start: "30% center",
218            toggleActions: "play none none reverse"
219            // markers: true,
220          },
221
222          stagger: {
223            from: "start",
224            amount: 0.5
225          }
226        });
227      }
228    });
229    // ▼ TOP ABOUT画像パララックス
230    element = document.querySelector(".topAbout_item");
231    if (element) {
232      gsap__WEBPACK_IMPORTED_MODULE_1__.gsap.utils.toArray(".topAbout_item").forEach(target => {
233        const dataY = target.getAttribute("data-y") || 1000;
234        // console.log(dataY);
235        gsap__WEBPACK_IMPORTED_MODULE_1__.gsap.fromTo(target, {
236          y: dataY * 10
237        }, {
238          y: dataY * -2,
239          scrollTrigger: {
240            trigger: ".topAbout",
241            start: "0% center",
242            end: "300% center",
243            scrub: true,
244            toggleActions: "play none none reverse"
245            // markers: true,
246          }
247        });
248      });
249    }
250    // ▼ TOP ABOUT画像トリミングパララックス
251    element = document.querySelector(".topAbout_item img");
252    if (element) {
253      gsap__WEBPACK_IMPORTED_MODULE_1__.gsap.utils.toArray(".topAbout_item img").forEach(target => {
254        const imgH = target.clientHeight;
255        const maskH = target.parentNode.clientHeight;
256        // console.log({ imgH, maskH });
257        gsap__WEBPACK_IMPORTED_MODULE_1__.gsap.fromTo(target, {
258          y: 0
259        }, {
260          y: -(imgH - maskH),
261          scrollTrigger: {
262            trigger: ".topAbout",
263            start: "0% center",
264            end: "200% top",
265            scrub: true,
266            toggleActions: "play none none reverse"
267            // markers: true,
268          }
269        });
270      });
271    }
272    // ▼ TOP ABOUT 固定表示
273    element = document.querySelector(".sec-topAbout");
274    if (element) {
275      gsap_ScrollTrigger__WEBPACK_IMPORTED_MODULE_2__.ScrollTrigger.create({
276        pinnedContainer: element,
277        trigger: element,
278        pin: true,
279        start: "16.667% top",
280        // end: "200% top",
281        invalidateOnRefresh: true
282        // markers: true,
283      });
284    }
285    // ▼ TOP ABOUT 背景アニメーション開始
286    element = document.querySelector(".topAbout_images");
287    if (element) {
288      gsap_ScrollTrigger__WEBPACK_IMPORTED_MODULE_2__.ScrollTrigger.create({
289        trigger: element,
290        start: "-50% top",
291        toggleClass: {
292          targets: ".sec-topAbout",
293          className: "js-action"
294        },
295        once: true
296        // markers: true,
297      });
298    }
299    // ▼ TOP ABOUT コンテンツフェードイン
300    element = document.querySelector(".sec-topAbout .title-section");
301    if (element) {
302      gsap__WEBPACK_IMPORTED_MODULE_1__.gsap.from(element, {
303        autoAlpha: 0,
304        delay: 2,
305        scrollTrigger: {
306          trigger: ".topAbout_images",
307          start: "-50% top",
308          toggleActions: "play none none reverse"
309          // markers: true,
310        }
311      });
312    }
313
314    element = document.querySelector(".sec-topAbout .topAbout_images");
315    if (element) {
316      gsap__WEBPACK_IMPORTED_MODULE_1__.gsap.from(element, {
317        autoAlpha: 0,
318        scrollTrigger: {
319          trigger: ".topAbout_images",
320          start: "-50% top",
321          toggleActions: "play none none reverse"
322          // markers: true,
323        }
324      });
325    }
326
327    element = document.querySelector(".sec-topAbout .topAbout_text *");
328    if (element) {
329      gsap__WEBPACK_IMPORTED_MODULE_1__.gsap.from(element, {
330        autoAlpha: 0,
331        delay: 2.5,
332        scrollTrigger: {
333          trigger: ".topAbout_images",
334          start: "-50% top",
335          toggleActions: "play none none reverse"
336          // markers: true,
337        }
338      });
339    }
340    // ▼ TOP ACCESS マップ
341    element = document.querySelector(".sec-topAccess .accessMap_pin");
342    if (element) {
343      gsap__WEBPACK_IMPORTED_MODULE_1__.gsap.from(element, {
344        autoAlpha: 0,
345        y: 30,
346        duration: 1.5,
347        scrollTrigger: {
348          trigger: ".access",
349          start: "bottom bottom",
350          toggleActions: "play none none reverse"
351          // markers: true,
352        }
353      });
354    }
355
356    element = document.querySelector(".sec-topAccess .accessMap_load");
357    if (element) {
358      gsap__WEBPACK_IMPORTED_MODULE_1__.gsap.from(element, {
359        autoAlpha: 0,
360        y: -30,
361        duration: 1.5,
362        scrollTrigger: {
363          trigger: ".access",
364          start: "bottom bottom",
365          toggleActions: "play none none reverse"
366          // markers: true,
367        }
368      });
369    }
370
371    element = document.querySelector(".sec-topAccess .accessMap_building");
372    if (element) {
373      gsap__WEBPACK_IMPORTED_MODULE_1__.gsap.from(element, {
374        autoAlpha: 0,
375        scrollTrigger: {
376          trigger: ".access",
377          start: "bottom bottom",
378          toggleActions: "play none none reverse"
379          // markers: true,
380        }
381      });
382    }
383    // ▼ サイドアンカーメニューが黒背景に重なったら反転用Class付与
384    element = document.querySelectorAll(".sideAnchorMenu_item");
385    if (element.length) {
386      const backElement = document.querySelectorAll('[class^="sec-"], [class*=" sec-"]');
387      const sectionElement = document.querySelectorAll("section");
388      for (let i = 0; i < element.length; i++) {
389        for (let index = 0; index < backElement.length; index++) {
390          const item = backElement[index];
391          if (item.classList.contains("-black")) {
392            const triggerPos = element[i].getBoundingClientRect().top + element[i].clientHeight / 2;
393            gsap_ScrollTrigger__WEBPACK_IMPORTED_MODULE_2__.ScrollTrigger.create({
394              trigger: item,
395              start: "top top+=" + triggerPos,
396              end: "bottom top+=" + triggerPos,
397              toggleClass: {
398                targets: element[i],
399                className: "-white"
400              }
401              // markers: true,
402            });
403          }
404        }
405      }
406
407      for (let i = 0; i < sectionElement.length; i++) {
408        const sectionId = sectionElement[i].id;
409        const sectionAnc = document.querySelector('.sideAnchorMenu_item a[href="#' + sectionId + '"]');
410        // console.log(sectionAnc);
411        gsap_ScrollTrigger__WEBPACK_IMPORTED_MODULE_2__.ScrollTrigger.create({
412          trigger: sectionElement[i],
413          start: "top top+=1",
414          end: "bottom top+=1",
415          toggleClass: {
416            targets: sectionAnc.parentNode,
417            className: "-active"
418          }
419          // markers: true,
420        });
421
422        if (i === 0) {
423          gsap__WEBPACK_IMPORTED_MODULE_1__.gsap.from(".sideAnchorMenu", {
424            autoAlpha: 0,
425            x: 20,
426            scrollTrigger: {
427              trigger: sectionElement[i],
428              start: "top top+=1",
429              toggleActions: "play none none reverse"
430              // markers: true,
431            }
432          });
433        }
434
435        gsap_ScrollTrigger__WEBPACK_IMPORTED_MODULE_2__.ScrollTrigger.create({
436          trigger: sectionElement[i],
437          start: "top-=300 top",
438          end: "top+=100 top",
439          snap: {
440            snapTo: [0.75],
441            delay: 0,
442            // duration: { min: 0, max: 3 },
443            duration: 1,
444            ease: "none"
445          }
446          // markers: true,
447        });
448      }
449    }
450    // ▼ 銀座プレイスについてMV
451    element = document.querySelector(".aboutHeader_img img");
452    if (element) {
453      gsap__WEBPACK_IMPORTED_MODULE_1__.gsap.to(element, {
454        y: element.clientHeight / 4,
455        ease: "none",
456        scrollTrigger: {
457          trigger: ".aboutHeader_img",
458          start: "top top",
459          scrub: true,
460          toggleActions: "play none none reverse"
461          // markers: true,
462        }
463      });
464    }
465  }
466});
467
468/***/ }),
469
470/***/ "./src/assets/js/utils/Popup.js":
471/*!**************************************!*\
472  !*** ./src/assets/js/utils/Popup.js ***!
473  \**************************************/
474/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
475
476__webpack_require__.r(__webpack_exports__);
477/* harmony import */ var js_cookie__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! js-cookie */ "./node_modules/js-cookie/dist/js.cookie.mjs");
478/* harmony import */ var _Parallax__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Parallax */ "./src/assets/js/utils/Parallax.js");
479/* harmony import */ var _TopMv__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./TopMv */ "./src/assets/js/utils/TopMv.js");
480
481
482
483/* harmony default export */ __webpack_exports__["default"] = (class {
484  constructor() {
485    const testMode = false;
486    let myCookie = js_cookie__WEBPACK_IMPORTED_MODULE_0__["default"].get("hide_popup");
487    const popup_bg = document.querySelector(".popupAd_inner");
488    const close = document.querySelector(".popupAd_close");
489    if (!myCookie && close || testMode) {
490      _Parallax__WEBPACK_IMPORTED_MODULE_1__.lenis.stop();
491      document.body.classList.add("-popupOpen");
492      popup_bg.addEventListener("click", popupClose);
493      close.addEventListener("click", popupClose);
494    }
495    function popupClose(e) {
496      if (e.target != e.currentTarget) return;
497      _Parallax__WEBPACK_IMPORTED_MODULE_1__.lenis.start();
498      document.body.classList.remove("-popupOpen");
499      myCookie = 1;
500      js_cookie__WEBPACK_IMPORTED_MODULE_0__["default"].set("hide_popup", myCookie, {
501        expires: 1,
502        path: ""
503      });
504      new _TopMv__WEBPACK_IMPORTED_MODULE_2__["default"](2000);
505    }
506  }
507});
508
509/***/ }),
510
511/***/ "./src/assets/js/utils/ScrollAnim.js":
512/*!*******************************************!*\
513  !*** ./src/assets/js/utils/ScrollAnim.js ***!
514  \*******************************************/
515/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
516
517__webpack_require__.r(__webpack_exports__);
518/* harmony default export */ __webpack_exports__["default"] = (class {
519  constructor() {
520    const targetClass = "-target";
521    const actionClass = "-action";
522    const readyClass = "-ready";
523    const options = {
524      rootMargin: "0px 0px -10%",
525      // threshold: [0, 0.2, 0.4, 0.6, 0.8, 1]
526      // threshold: [0.2, 0.8]
527      // threshold: 0,
528      threshold: [0, 0.05, 0.95, 1]
529    };
530    const callback = (entries, observer) => {
531      entries.forEach(entry => {
532        if (entry.intersectionRatio > 0) {
533          entry.target.classList.add(actionClass);
534        } else if (entry.intersectionRatio === 0) {
535          // entry.target.classList.remove("-action"); // 画面外に出たらアニメーションをリセットする
536        }
537      });
538    };
539    const observer = new IntersectionObserver(callback, options);
540    const observers = [...document.querySelectorAll("." + targetClass + ', [class^="sec-"], [class*=" sec-"], section.mv')];
541    observers.forEach(el => {
542      el.classList.add(readyClass);
543      observer.observe(el);
544    });
545  }
546});
547
548/***/ }),
549
550/***/ "./src/assets/js/utils/Swiper.js":
551/*!***************************************!*\
552  !*** ./src/assets/js/utils/Swiper.js ***!
553  \***************************************/
554/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
555
556__webpack_require__.r(__webpack_exports__);
557/* harmony import */ var swiper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! swiper */ "./node_modules/swiper/swiper.esm.js");
558
559/* harmony default export */ __webpack_exports__["default"] = (class {
560  constructor() {
561    // ▼ TOP MVスライダー
562    const topMvObj = ".swiper.mv-img";
563    const topMv = new swiper__WEBPACK_IMPORTED_MODULE_0__["default"](topMvObj, {
564      modules: [swiper__WEBPACK_IMPORTED_MODULE_0__.Autoplay, swiper__WEBPACK_IMPORTED_MODULE_0__.EffectFade],
565      loop: true,
566      speed: 3000,
567      autoplay: {
568        delay: 3000,
569        disableOnInteraction: true
570      },
571      effect: "fade"
572    });
573    // パネルが開いてからautoplay開始
574    if (document.querySelector(topMvObj) != null) {
575      topMv.autoplay.stop();
576      setTimeout(() => {
577        topMv.autoplay.start();
578      }, 9000);
579    }
580
581    // ▼ TOP NEWS & EVENT SP版用スライダー
582    const topNewsEventObj = ".swiper.list-newsEvent";
583    if (document.querySelectorAll(topNewsEventObj).length) {
584      const options = {
585        modules: [swiper__WEBPACK_IMPORTED_MODULE_0__.Autoplay, swiper__WEBPACK_IMPORTED_MODULE_0__.Navigation],
586        loop: true,
587        speed: 1500,
588        autoplay: {
589          delay: 1000,
590          disableOnInteraction: false
591        },
592        navigation: {
593          nextEl: ".swiper-button-next",
594          prevEl: ".swiper-button-prev"
595        },
596        spaceBetween: "9.524%",
597        slidesPerView: "auto"
598      };
599      const breakPoint = 767;
600      let topNewsEvent;
601      if (window.innerWidth <= breakPoint) {
602        topNewsEvent = new swiper__WEBPACK_IMPORTED_MODULE_0__["default"](".swiper.list-newsEvent", options);
603      } else {
604        topNewsEvent = undefined;
605      }
606      window.addEventListener("resize", () => {
607        if (window.innerWidth <= breakPoint) {
608          if (topNewsEvent) return;
609          topNewsEvent = new swiper__WEBPACK_IMPORTED_MODULE_0__["default"](".swiper.list-newsEvent", options);
610        } else {
611          if (!topNewsEvent) return;
612          topNewsEvent.destroy();
613          topNewsEvent = undefined;
614        }
615      }, false);
616      window.addEventListener("DOMContentLoaded", () => {}, false);
617    }
618
619    // ▼ トピックスバナースライダー
620    const topicsBannerSlide = document.querySelectorAll(".swiper.topicsBanner .topicsBanner_item");
621    if (topicsBannerSlide.length > 2) {
622      const topicsBanner = new swiper__WEBPACK_IMPORTED_MODULE_0__["default"](".swiper.topicsBanner", {
623        modules: [swiper__WEBPACK_IMPORTED_MODULE_0__.Autoplay, swiper__WEBPACK_IMPORTED_MODULE_0__.Navigation],
624        loop: true,
625        // loopedSlides: 3,
626        initialSlide: 0,
627        slidesPerView: "auto",
628        // centeredSlides: true,
629        speed: 1000,
630        spaceBetween: 14,
631        autoplay: {
632          delay: 3000,
633          disableOnInteraction: true
634        },
635        navigation: {
636          nextEl: ".swiper-button-next",
637          prevEl: ".swiper-button-prev"
638        },
639        breakpoints: {
640          // 769px以上の場合
641          768: {
642            spaceBetween: 24
643          }
644        }
645      });
646    }
647
648    // ▼ ショップ詳細ヘッダースライダー
649    const shopHeaderObj = ".swiper.shopHeader_slider";
650    const shopHeader = new swiper__WEBPACK_IMPORTED_MODULE_0__["default"](shopHeaderObj, {
651      modules: [swiper__WEBPACK_IMPORTED_MODULE_0__.Autoplay, swiper__WEBPACK_IMPORTED_MODULE_0__.EffectFade, swiper__WEBPACK_IMPORTED_MODULE_0__.Pagination],
652      loop: true,
653      speed: 3000,
654      effect: "fade",
655      autoplay: {
656        delay: 5000,
657        disableOnInteraction: true
658      },
659      pagination: {
660        el: ".swiper.shopHeader_slider .swiper-pagination",
661        clickable: true
662      },
663      breakpoints: {
664        // 768px以上の場合
665        768: {
666          slidesPerView: 1
667        }
668      }
669    });
670
671    // ▼ NEWS詳細 SP版用スライダー
672    const newsPhotoObj = ".swiper.newsPhoto";
673    if (document.querySelectorAll(newsPhotoObj).length) {
674      const options = {
675        modules: [swiper__WEBPACK_IMPORTED_MODULE_0__.Autoplay, swiper__WEBPACK_IMPORTED_MODULE_0__.Navigation],
676        loop: true,
677        speed: 1500,
678        autoplay: {
679          delay: 3000,
680          disableOnInteraction: false
681        },
682        navigation: {
683          nextEl: ".swiper-button-next",
684          prevEl: ".swiper-button-prev"
685        },
686        spaceBetween: "9.524%",
687        slidesPerView: "auto"
688      };
689      const breakPoint = 767;
690      let newsPhoto;
691      if (window.innerWidth <= breakPoint) {
692        newsPhoto = new swiper__WEBPACK_IMPORTED_MODULE_0__["default"](newsPhotoObj, options);
693      } else {
694        newsPhoto = undefined;
695      }
696      window.addEventListener("resize", () => {
697        if (window.innerWidth <= breakPoint) {
698          if (newsPhoto) return;
699          newsPhoto = new swiper__WEBPACK_IMPORTED_MODULE_0__["default"](newsPhotoObj, options);
700        } else {
701          if (!newsPhoto) return;
702          newsPhoto.destroy();
703          newsPhoto = undefined;
704        }
705      }, false);
706      window.addEventListener("DOMContentLoaded", () => {}, false);
707    }
708  }
709});
710
711/***/ }),
712
713/***/ "./src/assets/js/utils/TopMv.js":
714/*!**************************************!*\
715  !*** ./src/assets/js/utils/TopMv.js ***!
716  \**************************************/
717/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
718
719__webpack_require__.r(__webpack_exports__);
720/* harmony default export */ __webpack_exports__["default"] = (class {
721  constructor(delayTime = 2000) {
722    const flashingTime = 300;
723    // const flashingDuration = 1500;
724    const openTime = 7;
725    const patterns = document.querySelectorAll("#patternSet > g:not(#pattern-open)");
726    const openPatterns = document.querySelectorAll("#openPatterns > g");
727    const mvNet = document.querySelectorAll("#img-mv-net svg");
728    let randoms = [];
729    const min = 0,
730      max = openPatterns.length;
731    for (let index = 0; index < patterns.length; index++) {
732      const pattern = patterns[index];
733      // pattern.classList.add("pattern-" + (index + 1));
734      const rect = pattern.getBoundingClientRect();
735      const isInView = 0 < rect.bottom && rect.top < window.innerHeight;
736      // console.log({ isInView });
737      if (isInView) {
738        pattern.classList.add("inView");
739      }
740    }
741    const inView = document.getElementsByClassName("inView");
742    // console.log(patterns.length, inView.length);
743
744    // console.log(max * openTime);
745
746    function animOpen() {
747      for (let i = min; i < max; i++) {
748        while (true) {
749          var tmp = intRandom(min, max);
750          if (!randoms.includes(tmp)) {
751            randoms.push(tmp);
752            break;
753          }
754        }
755      }
756      function intRandom(min, max) {
757        return Math.floor(Math.random() * (max - min)) + min;
758      }
759      // console.log(randoms);
760
761      const openPattern = (item, i) => {
762        setTimeout(() => {
763          openPatterns[item].classList.add("open");
764        }, i * openTime);
765      };
766      for (let i = 0; i < randoms.length; i++) {
767        const item = randoms[i];
768        openPattern(item, i);
769      }
770    }
771    function animNetdel() {
772      for (let index = 0; index < mvNet.length; index++) {
773        const element = mvNet[index];
774        element.classList.add("fadeout");
775      }
776      // mvNet.animate([{ opacity: 1 }, { opacity: 0 }], {
777      //   duration: 1500,
778      //   easing: "ease-in-out",
779      //   fill: "forwards",
780      // });
781    }
782
783    function animFlashing() {
784      const flashing = () => {
785        const random = Math.floor(Math.random() * inView.length);
786        inView[random].classList.add("flash");
787        setTimeout(() => {
788          inView[random].classList.remove("flash");
789        }, 2000);
790      };
791      setInterval(flashing, flashingTime);
792    }
793    async function mvAnim() {
794      await animOpen();
795      setTimeout(() => {
796        animNetdel();
797      }, max * openTime * 0.66 + 0);
798      if (inView.length) {
799        setTimeout(() => {
800          animFlashing();
801        }, max * openTime + 0);
802      }
803    }
804    setTimeout(() => {
805      const popup_st = document.querySelector("body").className;
806      if (popup_st !== "-popupOpen") mvAnim();
807    }, delayTime);
808
809    // ▼ 昼と夜でMVの写真を変える
810    let nowHour = new Date().getHours();
811
812    // 18時から6時までは夜用の写真に差し替え
813    if (18 <= nowHour || nowHour < 6) nightImg();
814    function nightImg() {
815      const mvImg = document.querySelectorAll("#mv-img picture");
816      for (let index = 0; index < mvImg.length; index++) {
817        const element = mvImg[index];
818        // PC用写真の差し替え
819        const imgElemnt = element.querySelector("img");
820        let imgElemnt_src = imgElemnt.getAttribute("src");
821        imgElemnt_src = imgElemnt_src.replace("-day-", "-night-");
822        imgElemnt.src = imgElemnt_src;
823        // SP用写真の差し替え
824        const sourceElemnt = element.querySelector("source");
825        let sourceElemnt_src = sourceElemnt.getAttribute("srcset");
826        sourceElemnt_src = sourceElemnt_src.replace("-day-", "-night-");
827        sourceElemnt.srcset = sourceElemnt_src;
828      }
829    }
830  }
831});
832
833/***/ }),
834
vendor: 65,977 bytes, lines 835-2403
835/***/ "./node_modules/gsap/CSSPlugin.js":
836/*!****************************************!*\
837  !*** ./node_modules/gsap/CSSPlugin.js ***!
838  \****************************************/
839/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
840
841__webpack_require__.r(__webpack_exports__);
842/* harmony export */ __webpack_require__.d(__webpack_exports__, {
843/* harmony export */   CSSPlugin: function() { return /* binding */ CSSPlugin; },
844/* harmony export */   _createElement: function() { return /* binding */ _createElement; },
845/* harmony export */   _getBBox: function() { return /* binding */ _getBBox; },
846/* harmony export */   checkPrefix: function() { return /* binding */ _checkPropPrefix; },
847/* harmony export */   "default": function() { return /* binding */ CSSPlugin; }
848/* harmony export */ });
849/* harmony import */ var _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./gsap-core.js */ "./node_modules/gsap/gsap-core.js");
850/*!
851 * CSSPlugin 3.12.2
852 * https://greensock.com
853 *
854 * Copyright 2008-2023, GreenSock. All rights reserved.
855 * Subject to the terms at https://greensock.com/standard-license or for
856 * Club GreenSock members, the agreement issued with that membership.
857 * @author: Jack Doyle, [email protected]
858*/
859
860/* eslint-disable */
861
862
863var _win,
864    _doc,
865    _docElement,
866    _pluginInitted,
867    _tempDiv,
868    _tempDivStyler,
869    _recentSetterPlugin,
870    _reverting,
871    _windowExists = function _windowExists() {
872  return typeof window !== "undefined";
873},
874    _transformProps = {},
875    _RAD2DEG = 180 / Math.PI,
876    _DEG2RAD = Math.PI / 180,
877    _atan2 = Math.atan2,
878    _bigNum = 1e8,
879    _capsExp = /([A-Z])/g,
880    _horizontalExp = /(left|right|width|margin|padding|x)/i,
881    _complexExp = /[\s,\(]\S/,
882    _propertyAliases = {
883  autoAlpha: "opacity,visibility",
884  scale: "scaleX,scaleY",
885  alpha: "opacity"
886},
887    _renderCSSProp = function _renderCSSProp(ratio, data) {
888  return data.set(data.t, data.p, Math.round((data.s + data.c * ratio) * 10000) / 10000 + data.u, data);
889},
890    _renderPropWithEnd = function _renderPropWithEnd(ratio, data) {
891  return data.set(data.t, data.p, ratio === 1 ? data.e : Math.round((data.s + data.c * ratio) * 10000) / 10000 + data.u, data);
892},
893    _renderCSSPropWithBeginning = function _renderCSSPropWithBeginning(ratio, data) {
894  return data.set(data.t, data.p, ratio ? Math.round((data.s + data.c * ratio) * 10000) / 10000 + data.u : data.b, data);
895},
896    //if units change, we need a way to render the original unit/value when the tween goes all the way back to the beginning (ratio:0)
897_renderRoundedCSSProp = function _renderRoundedCSSProp(ratio, data) {
898  var value = data.s + data.c * ratio;
899  data.set(data.t, data.p, ~~(value + (value < 0 ? -.5 : .5)) + data.u, data);
900},
901    _renderNonTweeningValue = function _renderNonTweeningValue(ratio, data) {
902  return data.set(data.t, data.p, ratio ? data.e : data.b, data);
903},
904    _renderNonTweeningValueOnlyAtEnd = function _renderNonTweeningValueOnlyAtEnd(ratio, data) {
905  return data.set(data.t, data.p, ratio !== 1 ? data.b : data.e, data);
906},
907    _setterCSSStyle = function _setterCSSStyle(target, property, value) {
908  return target.style[property] = value;
909},
910    _setterCSSProp = function _setterCSSProp(target, property, value) {
911  return target.style.setProperty(property, value);
912},
913    _setterTransform = function _setterTransform(target, property, value) {
914  return target._gsap[property] = value;
915},
916    _setterScale = function _setterScale(target, property, value) {
917  return target._gsap.scaleX = target._gsap.scaleY = value;
918},
919    _setterScaleWithRender = function _setterScaleWithRender(target, property, value, data, ratio) {
920  var cache = target._gsap;
921  cache.scaleX = cache.scaleY = value;
922  cache.renderTransform(ratio, cache);
923},
924    _setterTransformWithRender = function _setterTransformWithRender(target, property, value, data, ratio) {
925  var cache = target._gsap;
926  cache[property] = value;
927  cache.renderTransform(ratio, cache);
928},
929    _transformProp = "transform",
930    _transformOriginProp = _transformProp + "Origin",
931    _saveStyle = function _saveStyle(property, isNotCSS) {
932  var _this = this;
933
934  var target = this.target,
935      style = target.style;
936
937  if (property in _transformProps && style) {
938    this.tfm = this.tfm || {};
939
940    if (property !== "transform") {
941      property = _propertyAliases[property] || property;
942      ~property.indexOf(",") ? property.split(",").forEach(function (a) {
943        return _this.tfm[a] = _get(target, a);
944      }) : this.tfm[property] = target._gsap.x ? target._gsap[property] : _get(target, property); // note: scale would map to "scaleX,scaleY", thus we loop and apply them both.
945    } else {
946      return _propertyAliases.transform.split(",").forEach(function (p) {
947        return _saveStyle.call(_this, p, isNotCSS);
948      });
949    }
950
951    if (this.props.indexOf(_transformProp) >= 0) {
952      return;
953    }
954
955    if (target._gsap.svg) {
956      this.svgo = target.getAttribute("data-svg-origin");
957      this.props.push(_transformOriginProp, isNotCSS, "");
958    }
959
960    property = _transformProp;
961  }
962
963  (style || isNotCSS) && this.props.push(property, isNotCSS, style[property]);
964},
965    _removeIndependentTransforms = function _removeIndependentTransforms(style) {
966  if (style.translate) {
967    style.removeProperty("translate");
968    style.removeProperty("scale");
969    style.removeProperty("rotate");
970  }
971},
972    _revertStyle = function _revertStyle() {
973  var props = this.props,
974      target = this.target,
975      style = target.style,
976      cache = target._gsap,
977      i,
978      p;
979
980  for (i = 0; i < props.length; i += 3) {
981    // stored like this: property, isNotCSS, value
982    props[i + 1] ? target[props[i]] = props[i + 2] : props[i + 2] ? style[props[i]] = props[i + 2] : style.removeProperty(props[i].substr(0, 2) === "--" ? props[i] : props[i].replace(_capsExp, "-$1").toLowerCase());
983  }
984
985  if (this.tfm) {
986    for (p in this.tfm) {
987      cache[p] = this.tfm[p];
988    }
989
990    if (cache.svg) {
991      cache.renderTransform();
992      target.setAttribute("data-svg-origin", this.svgo || "");
993    }
994
995    i = _reverting();
996
997    if ((!i || !i.isStart) && !style[_transformProp]) {
998      _removeIndependentTransforms(style);
999
1000      cache.uncache = 1; // if it's a startAt that's being reverted in the _initTween() of the core, we don't need to uncache transforms. This is purely a performance optimization.
1001    }
1002  }
1003},
1004    _getStyleSaver = function _getStyleSaver(target, properties) {
1005  var saver = {
1006    target: target,
1007    props: [],
1008    revert: _revertStyle,
1009    save: _saveStyle
1010  };
1011  target._gsap || _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.gsap.core.getCache(target); // just make sure there's a _gsap cache defined because we read from it in _saveStyle() and it's more efficient to just check it here once.
1012
1013  properties && properties.split(",").forEach(function (p) {
1014    return saver.save(p);
1015  });
1016  return saver;
1017},
1018    _supports3D,
1019    _createElement = function _createElement(type, ns) {
1020  var e = _doc.createElementNS ? _doc.createElementNS((ns || "http://www.w3.org/1999/xhtml").replace(/^https/, "http"), type) : _doc.createElement(type); //some servers swap in https for http in the namespace which can break things, making "style" inaccessible.
1021
1022  return e.style ? e : _doc.createElement(type); //some environments won't allow access to the element's style when created with a namespace in which case we default to the standard createElement() to work around the issue. Also note that when GSAP is embedded directly inside an SVG file, createElement() won't allow access to the style object in Firefox (see https://greensock.com/forums/topic/20215-problem-using-tweenmax-in-standalone-self-containing-svg-file-err-cannot-set-property-csstext-of-undefined/).
1023},
1024    _getComputedProperty = function _getComputedProperty(target, property, skipPrefixFallback) {
1025  var cs = getComputedStyle(target);
1026  return cs[property] || cs.getPropertyValue(property.replace(_capsExp, "-$1").toLowerCase()) || cs.getPropertyValue(property) || !skipPrefixFallback && _getComputedProperty(target, _checkPropPrefix(property) || property, 1) || ""; //css variables may not need caps swapped out for dashes and lowercase.
1027},
1028    _prefixes = "O,Moz,ms,Ms,Webkit".split(","),
1029    _checkPropPrefix = function _checkPropPrefix(property, element, preferPrefix) {
1030  var e = element || _tempDiv,
1031      s = e.style,
1032      i = 5;
1033
1034  if (property in s && !preferPrefix) {
1035    return property;
1036  }
1037
1038  property = property.charAt(0).toUpperCase() + property.substr(1);
1039
1040  while (i-- && !(_prefixes[i] + property in s)) {}
1041
1042  return i < 0 ? null : (i === 3 ? "ms" : i >= 0 ? _prefixes[i] : "") + property;
1043},
1044    _initCore = function _initCore() {
1045  if (_windowExists() && window.document) {
1046    _win = window;
1047    _doc = _win.document;
1048    _docElement = _doc.documentElement;
1049    _tempDiv = _createElement("div") || {
1050      style: {}
1051    };
1052    _tempDivStyler = _createElement("div");
1053    _transformProp = _checkPropPrefix(_transformProp);
1054    _transformOriginProp = _transformProp + "Origin";
1055    _tempDiv.style.cssText = "border-width:0;line-height:0;position:absolute;padding:0"; //make sure to override certain properties that may contaminate measurements, in case the user has overreaching style sheets.
1056
1057    _supports3D = !!_checkPropPrefix("perspective");
1058    _reverting = _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.gsap.core.reverting;
1059    _pluginInitted = 1;
1060  }
1061},
1062    _getBBoxHack = function _getBBoxHack(swapIfPossible) {
1063  //works around issues in some browsers (like Firefox) that don't correctly report getBBox() on SVG elements inside a <defs> element and/or <mask>. We try creating an SVG, adding it to the documentElement and toss the element in there so that it's definitely part of the rendering tree, then grab the bbox and if it works, we actually swap out the original getBBox() method for our own that does these extra steps whenever getBBox is needed. This helps ensure that performance is optimal (only do all these extra steps when absolutely necessary...most elements don't need it).
1064  var svg = _createElement("svg", this.ownerSVGElement && this.ownerSVGElement.getAttribute("xmlns") || "http://www.w3.org/2000/svg"),
1065      oldParent = this.parentNode,
1066      oldSibling = this.nextSibling,
1067      oldCSS = this.style.cssText,
1068      bbox;
1069
1070  _docElement.appendChild(svg);
1071
1072  svg.appendChild(this);
1073  this.style.display = "block";
1074
1075  if (swapIfPossible) {
1076    try {
1077      bbox = this.getBBox();
1078      this._gsapBBox = this.getBBox; //store the original
1079
1080      this.getBBox = _getBBoxHack;
1081    } catch (e) {}
1082  } else if (this._gsapBBox) {
1083    bbox = this._gsapBBox();
1084  }
1085
1086  if (oldParent) {
1087    if (oldSibling) {
1088      oldParent.insertBefore(this, oldSibling);
1089    } else {
1090      oldParent.appendChild(this);
1091    }
1092  }
1093
1094  _docElement.removeChild(svg);
1095
1096  this.style.cssText = oldCSS;
1097  return bbox;
1098},
1099    _getAttributeFallbacks = function _getAttributeFallbacks(target, attributesArray) {
1100  var i = attributesArray.length;
1101
1102  while (i--) {
1103    if (target.hasAttribute(attributesArray[i])) {
1104      return target.getAttribute(attributesArray[i]);
1105    }
1106  }
1107},
1108    _getBBox = function _getBBox(target) {
1109  var bounds;
1110
1111  try {
1112    bounds = target.getBBox(); //Firefox throws errors if you try calling getBBox() on an SVG element that's not rendered (like in a <symbol> or <defs>). https://bugzilla.mozilla.org/show_bug.cgi?id=612118
1113  } catch (error) {
1114    bounds = _getBBoxHack.call(target, true);
1115  }
1116
1117  bounds && (bounds.width || bounds.height) || target.getBBox === _getBBoxHack || (bounds = _getBBoxHack.call(target, true)); //some browsers (like Firefox) misreport the bounds if the element has zero width and height (it just assumes it's at x:0, y:0), thus we need to manually grab the position in that case.
1118
1119  return bounds && !bounds.width && !bounds.x && !bounds.y ? {
1120    x: +_getAttributeFallbacks(target, ["x", "cx", "x1"]) || 0,
1121    y: +_getAttributeFallbacks(target, ["y", "cy", "y1"]) || 0,
1122    width: 0,
1123    height: 0
1124  } : bounds;
1125},
1126    _isSVG = function _isSVG(e) {
1127  return !!(e.getCTM && (!e.parentNode || e.ownerSVGElement) && _getBBox(e));
1128},
1129    //reports if the element is an SVG on which getBBox() actually works
1130_removeProperty = function _removeProperty(target, property) {
1131  if (property) {
1132    var style = target.style;
1133
1134    if (property in _transformProps && property !== _transformOriginProp) {
1135      property = _transformProp;
1136    }
1137
1138    if (style.removeProperty) {
1139      if (property.substr(0, 2) === "ms" || property.substr(0, 6) === "webkit") {
1140        //Microsoft and some Webkit browsers don't conform to the standard of capitalizing the first prefix character, so we adjust so that when we prefix the caps with a dash, it's correct (otherwise it'd be "ms-transform" instead of "-ms-transform" for IE9, for example)
1141        property = "-" + property;
1142      }
1143
1144      style.removeProperty(property.replace(_capsExp, "-$1").toLowerCase());
1145    } else {
1146      //note: old versions of IE use "removeAttribute()" instead of "removeProperty()"
1147      style.removeAttribute(property);
1148    }
1149  }
1150},
1151    _addNonTweeningPT = function _addNonTweeningPT(plugin, target, property, beginning, end, onlySetAtEnd) {
1152  var pt = new _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.PropTween(plugin._pt, target, property, 0, 1, onlySetAtEnd ? _renderNonTweeningValueOnlyAtEnd : _renderNonTweeningValue);
1153  plugin._pt = pt;
1154  pt.b = beginning;
1155  pt.e = end;
1156
1157  plugin._props.push(property);
1158
1159  return pt;
1160},
1161    _nonConvertibleUnits = {
1162  deg: 1,
1163  rad: 1,
1164  turn: 1
1165},
1166    _nonStandardLayouts = {
1167  grid: 1,
1168  flex: 1
1169},
1170    //takes a single value like 20px and converts it to the unit specified, like "%", returning only the numeric amount.
1171_convertToUnit = function _convertToUnit(target, property, value, unit) {
1172  var curValue = parseFloat(value) || 0,
1173      curUnit = (value + "").trim().substr((curValue + "").length) || "px",
1174      // some browsers leave extra whitespace at the beginning of CSS variables, hence the need to trim()
1175  style = _tempDiv.style,
1176      horizontal = _horizontalExp.test(property),
1177      isRootSVG = target.tagName.toLowerCase() === "svg",
1178      measureProperty = (isRootSVG ? "client" : "offset") + (horizontal ? "Width" : "Height"),
1179      amount = 100,
1180      toPixels = unit === "px",
1181      toPercent = unit === "%",
1182      px,
1183      parent,
1184      cache,
1185      isSVG;
1186
1187  if (unit === curUnit || !curValue || _nonConvertibleUnits[unit] || _nonConvertibleUnits[curUnit]) {
1188    return curValue;
1189  }
1190
1191  curUnit !== "px" && !toPixels && (curValue = _convertToUnit(target, property, value, "px"));
1192  isSVG = target.getCTM && _isSVG(target);
1193
1194  if ((toPercent || curUnit === "%") && (_transformProps[property] || ~property.indexOf("adius"))) {
1195    px = isSVG ? target.getBBox()[horizontal ? "width" : "height"] : target[measureProperty];
1196    return (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._round)(toPercent ? curValue / px * amount : curValue / 100 * px);
1197  }
1198
1199  style[horizontal ? "width" : "height"] = amount + (toPixels ? curUnit : unit);
1200  parent = ~property.indexOf("adius") || unit === "em" && target.appendChild && !isRootSVG ? target : target.parentNode;
1201
1202  if (isSVG) {
1203    parent = (target.ownerSVGElement || {}).parentNode;
1204  }
1205
1206  if (!parent || parent === _doc || !parent.appendChild) {
1207    parent = _doc.body;
1208  }
1209
1210  cache = parent._gsap;
1211
1212  if (cache && toPercent && cache.width && horizontal && cache.time === _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._ticker.time && !cache.uncache) {
1213    return (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._round)(curValue / cache.width * amount);
1214  } else {
1215    (toPercent || curUnit === "%") && !_nonStandardLayouts[_getComputedProperty(parent, "display")] && (style.position = _getComputedProperty(target, "position"));
1216    parent === target && (style.position = "static"); // like for borderRadius, if it's a % we must have it relative to the target itself but that may not have position: relative or position: absolute in which case it'd go up the chain until it finds its offsetParent (bad). position: static protects against that.
1217
1218    parent.appendChild(_tempDiv);
1219    px = _tempDiv[measureProperty];
1220    parent.removeChild(_tempDiv);
1221    style.position = "absolute";
1222
1223    if (horizontal && toPercent) {
1224      cache = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._getCache)(parent);
1225      cache.time = _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._ticker.time;
1226      cache.width = parent[measureProperty];
1227    }
1228  }
1229
1230  return (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._round)(toPixels ? px * curValue / amount : px && curValue ? amount / px * curValue : 0);
1231},
1232    _get = function _get(target, property, unit, uncache) {
1233  var value;
1234  _pluginInitted || _initCore();
1235
1236  if (property in _propertyAliases && property !== "transform") {
1237    property = _propertyAliases[property];
1238
1239    if (~property.indexOf(",")) {
1240      property = property.split(",")[0];
1241    }
1242  }
1243
1244  if (_transformProps[property] && property !== "transform") {
1245    value = _parseTransform(target, uncache);
1246    value = property !== "transformOrigin" ? value[property] : value.svg ? value.origin : _firstTwoOnly(_getComputedProperty(target, _transformOriginProp)) + " " + value.zOrigin + "px";
1247  } else {
1248    value = target.style[property];
1249
1250    if (!value || value === "auto" || uncache || ~(value + "").indexOf("calc(")) {
1251      value = _specialProps[property] && _specialProps[property](target, property, unit) || _getComputedProperty(target, property) || (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._getProperty)(target, property) || (property === "opacity" ? 1 : 0); // note: some browsers, like Firefox, don't report borderRadius correctly! Instead, it only reports every corner like  borderTopLeftRadius
1252    }
1253  }
1254
1255  return unit && !~(value + "").trim().indexOf(" ") ? _convertToUnit(target, property, value, unit) + unit : value;
1256},
1257    _tweenComplexCSSString = function _tweenComplexCSSString(target, prop, start, end) {
1258  // note: we call _tweenComplexCSSString.call(pluginInstance...) to ensure that it's scoped properly. We may call it from within a plugin too, thus "this" would refer to the plugin.
1259  if (!start || start === "none") {
1260    // some browsers like Safari actually PREFER the prefixed property and mis-report the unprefixed value like clipPath (BUG). In other words, even though clipPath exists in the style ("clipPath" in target.style) and it's set in the CSS properly (along with -webkit-clip-path), Safari reports clipPath as "none" whereas WebkitClipPath reports accurately like "ellipse(100% 0% at 50% 0%)", so in this case we must SWITCH to using the prefixed property instead. See https://greensock.com/forums/topic/18310-clippath-doesnt-work-on-ios/
1261    var p = _checkPropPrefix(prop, target, 1),
1262        s = p && _getComputedProperty(target, p, 1);
1263
1264    if (s && s !== start) {
1265      prop = p;
1266      start = s;
1267    } else if (prop === "borderColor") {
1268      start = _getComputedProperty(target, "borderTopColor"); // Firefox bug: always reports "borderColor" as "", so we must fall back to borderTopColor. See https://greensock.com/forums/topic/24583-how-to-return-colors-that-i-had-after-reverse/
1269    }
1270  }
1271
1272  var pt = new _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.PropTween(this._pt, target.style, prop, 0, 1, _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._renderComplexString),
1273      index = 0,
1274      matchIndex = 0,
1275      a,
1276      result,
1277      startValues,
1278      startNum,
1279      color,
1280      startValue,
1281      endValue,
1282      endNum,
1283      chunk,
1284      endUnit,
1285      startUnit,
1286      endValues;
1287  pt.b = start;
1288  pt.e = end;
1289  start += ""; // ensure values are strings
1290
1291  end += "";
1292
1293  if (end === "auto") {
1294    target.style[prop] = end;
1295    end = _getComputedProperty(target, prop) || end;
1296    target.style[prop] = start;
1297  }
1298
1299  a = [start, end];
1300
1301  (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._colorStringFilter)(a); // pass an array with the starting and ending values and let the filter do whatever it needs to the values. If colors are found, it returns true and then we must match where the color shows up order-wise because for things like boxShadow, sometimes the browser provides the computed values with the color FIRST, but the user provides it with the color LAST, so flip them if necessary. Same for drop-shadow().
1302
1303
1304  start = a[0];
1305  end = a[1];
1306  startValues = start.match(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._numWithUnitExp) || [];
1307  endValues = end.match(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._numWithUnitExp) || [];
1308
1309  if (endValues.length) {
1310    while (result = _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._numWithUnitExp.exec(end)) {
1311      endValue = result[0];
1312      chunk = end.substring(index, result.index);
1313
1314      if (color) {
1315        color = (color + 1) % 5;
1316      } else if (chunk.substr(-5) === "rgba(" || chunk.substr(-5) === "hsla(") {
1317        color = 1;
1318      }
1319
1320      if (endValue !== (startValue = startValues[matchIndex++] || "")) {
1321        startNum = parseFloat(startValue) || 0;
1322        startUnit = startValue.substr((startNum + "").length);
1323        endValue.charAt(1) === "=" && (endValue = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._parseRelative)(startNum, endValue) + startUnit);
1324        endNum = parseFloat(endValue);
1325        endUnit = endValue.substr((endNum + "").length);
1326        index = _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._numWithUnitExp.lastIndex - endUnit.length;
1327
1328        if (!endUnit) {
1329          //if something like "perspective:300" is passed in and we must add a unit to the end
1330          endUnit = endUnit || _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._config.units[prop] || startUnit;
1331
1332          if (index === end.length) {
1333            end += endUnit;
1334            pt.e += endUnit;
1335          }
1336        }
1337
1338        if (startUnit !== endUnit) {
1339          startNum = _convertToUnit(target, prop, startValue, endUnit) || 0;
1340        } // these nested PropTweens are handled in a special way - we'll never actually call a render or setter method on them. We'll just loop through them in the parent complex string PropTween's render method.
1341
1342
1343        pt._pt = {
1344          _next: pt._pt,
1345          p: chunk || matchIndex === 1 ? chunk : ",",
1346          //note: SVG spec allows omission of comma/space when a negative sign is wedged between two numbers, like 2.5-5.3 instead of 2.5,-5.3 but when tweening, the negative value may switch to positive, so we insert the comma just in case.
1347          s: startNum,
1348          c: endNum - startNum,
1349          m: color && color < 4 || prop === "zIndex" ? Math.round : 0
1350        };
1351      }
1352    }
1353
1354    pt.c = index < end.length ? end.substring(index, end.length) : ""; //we use the "c" of the PropTween to store the final part of the string (after the last number)
1355  } else {
1356    pt.r = prop === "display" && end === "none" ? _renderNonTweeningValueOnlyAtEnd : _renderNonTweeningValue;
1357  }
1358
1359  _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._relExp.test(end) && (pt.e = 0); //if the end string contains relative values or dynamic random(...) values, delete the end it so that on the final render we don't actually set it to the string with += or -= characters (forces it to use the calculated value).
1360
1361  this._pt = pt; //start the linked list with this new PropTween. Remember, we call _tweenComplexCSSString.call(pluginInstance...) to ensure that it's scoped properly. We may call it from within another plugin too, thus "this" would refer to the plugin.
1362
1363  return pt;
1364},
1365    _keywordToPercent = {
1366  top: "0%",
1367  bottom: "100%",
1368  left: "0%",
1369  right: "100%",
1370  center: "50%"
1371},
1372    _convertKeywordsToPercentages = function _convertKeywordsToPercentages(value) {
1373  var split = value.split(" "),
1374      x = split[0],
1375      y = split[1] || "50%";
1376
1377  if (x === "top" || x === "bottom" || y === "left" || y === "right") {
1378    //the user provided them in the wrong order, so flip them
1379    value = x;
1380    x = y;
1381    y = value;
1382  }
1383
1384  split[0] = _keywordToPercent[x] || x;
1385  split[1] = _keywordToPercent[y] || y;
1386  return split.join(" ");
1387},
1388    _renderClearProps = function _renderClearProps(ratio, data) {
1389  if (data.tween && data.tween._time === data.tween._dur) {
1390    var target = data.t,
1391        style = target.style,
1392        props = data.u,
1393        cache = target._gsap,
1394        prop,
1395        clearTransforms,
1396        i;
1397
1398    if (props === "all" || props === true) {
1399      style.cssText = "";
1400      clearTransforms = 1;
1401    } else {
1402      props = props.split(",");
1403      i = props.length;
1404
1405      while (--i > -1) {
1406        prop = props[i];
1407
1408        if (_transformProps[prop]) {
1409          clearTransforms = 1;
1410          prop = prop === "transformOrigin" ? _transformOriginProp : _transformProp;
1411        }
1412
1413        _removeProperty(target, prop);
1414      }
1415    }
1416
1417    if (clearTransforms) {
1418      _removeProperty(target, _transformProp);
1419
1420      if (cache) {
1421        cache.svg && target.removeAttribute("transform");
1422
1423        _parseTransform(target, 1); // force all the cached values back to "normal"/identity, otherwise if there's another tween that's already set to render transforms on this element, it could display the wrong values.
1424
1425
1426        cache.uncache = 1;
1427
1428        _removeIndependentTransforms(style);
1429      }
1430    }
1431  }
1432},
1433    // note: specialProps should return 1 if (and only if) they have a non-zero priority. It indicates we need to sort the linked list.
1434_specialProps = {
1435  clearProps: function clearProps(plugin, target, property, endValue, tween) {
1436    if (tween.data !== "isFromStart") {
1437      var pt = plugin._pt = new _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.PropTween(plugin._pt, target, property, 0, 0, _renderClearProps);
1438      pt.u = endValue;
1439      pt.pr = -10;
1440      pt.tween = tween;
1441
1442      plugin._props.push(property);
1443
1444      return 1;
1445    }
1446  }
1447  /* className feature (about 0.4kb gzipped).
1448  , className(plugin, target, property, endValue, tween) {
1449  	let _renderClassName = (ratio, data) => {
1450  			data.css.render(ratio, data.css);
1451  			if (!ratio || ratio === 1) {
1452  				let inline = data.rmv,
1453  					target = data.t,
1454  					p;
1455  				target.setAttribute("class", ratio ? data.e : data.b);
1456  				for (p in inline) {
1457  					_removeProperty(target, p);
1458  				}
1459  			}
1460  		},
1461  		_getAllStyles = (target) => {
1462  			let styles = {},
1463  				computed = getComputedStyle(target),
1464  				p;
1465  			for (p in computed) {
1466  				if (isNaN(p) && p !== "cssText" && p !== "length") {
1467  					styles[p] = computed[p];
1468  				}
1469  			}
1470  			_setDefaults(styles, _parseTransform(target, 1));
1471  			return styles;
1472  		},
1473  		startClassList = target.getAttribute("class"),
1474  		style = target.style,
1475  		cssText = style.cssText,
1476  		cache = target._gsap,
1477  		classPT = cache.classPT,
1478  		inlineToRemoveAtEnd = {},
1479  		data = {t:target, plugin:plugin, rmv:inlineToRemoveAtEnd, b:startClassList, e:(endValue.charAt(1) !== "=") ? endValue : startClassList.replace(new RegExp("(?:\\s|^)" + endValue.substr(2) + "(?![\\w-])"), "") + ((endValue.charAt(0) === "+") ? " " + endValue.substr(2) : "")},
1480  		changingVars = {},
1481  		startVars = _getAllStyles(target),
1482  		transformRelated = /(transform|perspective)/i,
1483  		endVars, p;
1484  	if (classPT) {
1485  		classPT.r(1, classPT.d);
1486  		_removeLinkedListItem(classPT.d.plugin, classPT, "_pt");
1487  	}
1488  	target.setAttribute("class", data.e);
1489  	endVars = _getAllStyles(target, true);
1490  	target.setAttribute("class", startClassList);
1491  	for (p in endVars) {
1492  		if (endVars[p] !== startVars[p] && !transformRelated.test(p)) {
1493  			changingVars[p] = endVars[p];
1494  			if (!style[p] && style[p] !== "0") {
1495  				inlineToRemoveAtEnd[p] = 1;
1496  			}
1497  		}
1498  	}
1499  	cache.classPT = plugin._pt = new PropTween(plugin._pt, target, "className", 0, 0, _renderClassName, data, 0, -11);
1500  	if (style.cssText !== cssText) { //only apply if things change. Otherwise, in cases like a background-image that's pulled dynamically, it could cause a refresh. See https://greensock.com/forums/topic/20368-possible-gsap-bug-switching-classnames-in-chrome/.
1501  		style.cssText = cssText; //we recorded cssText before we swapped classes and ran _getAllStyles() because in cases when a className tween is overwritten, we remove all the related tweening properties from that class change (otherwise class-specific stuff can't override properties we've directly set on the target's style object due to specificity).
1502  	}
1503  	_parseTransform(target, true); //to clear the caching of transforms
1504  	data.css = new gsap.plugins.css();
1505  	data.css.init(target, changingVars, tween);
1506  	plugin._props.push(...data.css._props);
1507  	return 1;
1508  }
1509  */
1510
1511},
1512
1513/*
1514 * --------------------------------------------------------------------------------------
1515 * TRANSFORMS
1516 * --------------------------------------------------------------------------------------
1517 */
1518_identity2DMatrix = [1, 0, 0, 1, 0, 0],
1519    _rotationalProperties = {},
1520    _isNullTransform = function _isNullTransform(value) {
1521  return value === "matrix(1, 0, 0, 1, 0, 0)" || value === "none" || !value;
1522},
1523    _getComputedTransformMatrixAsArray = function _getComputedTransformMatrixAsArray(target) {
1524  var matrixString = _getComputedProperty(target, _transformProp);
1525
1526  return _isNullTransform(matrixString) ? _identity2DMatrix : matrixString.substr(7).match(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._numExp).map(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._round);
1527},
1528    _getMatrix = function _getMatrix(target, force2D) {
1529  var cache = target._gsap || (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._getCache)(target),
1530      style = target.style,
1531      matrix = _getComputedTransformMatrixAsArray(target),
1532      parent,
1533      nextSibling,
1534      temp,
1535      addedToDOM;
1536
1537  if (cache.svg && target.getAttribute("transform")) {
1538    temp = target.transform.baseVal.consolidate().matrix; //ensures that even complex values like "translate(50,60) rotate(135,0,0)" are parsed because it mashes it into a matrix.
1539
1540    matrix = [temp.a, temp.b, temp.c, temp.d, temp.e, temp.f];
1541    return matrix.join(",") === "1,0,0,1,0,0" ? _identity2DMatrix : matrix;
1542  } else if (matrix === _identity2DMatrix && !target.offsetParent && target !== _docElement && !cache.svg) {
1543    //note: if offsetParent is null, that means the element isn't in the normal document flow, like if it has display:none or one of its ancestors has display:none). Firefox returns null for getComputedStyle() if the element is in an iframe that has display:none. https://bugzilla.mozilla.org/show_bug.cgi?id=548397
1544    //browsers don't report transforms accurately unless the element is in the DOM and has a display value that's not "none". Firefox and Microsoft browsers have a partial bug where they'll report transforms even if display:none BUT not any percentage-based values like translate(-50%, 8px) will be reported as if it's translate(0, 8px).
1545    temp = style.display;
1546    style.display = "block";
1547    parent = target.parentNode;
1548
1549    if (!parent || !target.offsetParent) {
1550      // note: in 3.3.0 we switched target.offsetParent to _doc.body.contains(target) to avoid [sometimes unnecessary] MutationObserver calls but that wasn't adequate because there are edge cases where nested position: fixed elements need to get reparented to accurately sense transforms. See https://github.com/greensock/GSAP/issues/388 and https://github.com/greensock/GSAP/issues/375
1551      addedToDOM = 1; //flag
1552
1553      nextSibling = target.nextElementSibling;
1554
1555      _docElement.appendChild(target); //we must add it to the DOM in order to get values properly
1556
1557    }
1558
1559    matrix = _getComputedTransformMatrixAsArray(target);
1560    temp ? style.display = temp : _removeProperty(target, "display");
1561
1562    if (addedToDOM) {
1563      nextSibling ? parent.insertBefore(target, nextSibling) : parent ? parent.appendChild(target) : _docElement.removeChild(target);
1564    }
1565  }
1566
1567  return force2D && matrix.length > 6 ? [matrix[0], matrix[1], matrix[4], matrix[5], matrix[12], matrix[13]] : matrix;
1568},
1569    _applySVGOrigin = function _applySVGOrigin(target, origin, originIsAbsolute, smooth, matrixArray, pluginToAddPropTweensTo) {
1570  var cache = target._gsap,
1571      matrix = matrixArray || _getMatrix(target, true),
1572      xOriginOld = cache.xOrigin || 0,
1573      yOriginOld = cache.yOrigin || 0,
1574      xOffsetOld = cache.xOffset || 0,
1575      yOffsetOld = cache.yOffset || 0,
1576      a = matrix[0],
1577      b = matrix[1],
1578      c = matrix[2],
1579      d = matrix[3],
1580      tx = matrix[4],
1581      ty = matrix[5],
1582      originSplit = origin.split(" "),
1583      xOrigin = parseFloat(originSplit[0]) || 0,
1584      yOrigin = parseFloat(originSplit[1]) || 0,
1585      bounds,
1586      determinant,
1587      x,
1588      y;
1589
1590  if (!originIsAbsolute) {
1591    bounds = _getBBox(target);
1592    xOrigin = bounds.x + (~originSplit[0].indexOf("%") ? xOrigin / 100 * bounds.width : xOrigin);
1593    yOrigin = bounds.y + (~(originSplit[1] || originSplit[0]).indexOf("%") ? yOrigin / 100 * bounds.height : yOrigin);
1594  } else if (matrix !== _identity2DMatrix && (determinant = a * d - b * c)) {
1595    //if it's zero (like if scaleX and scaleY are zero), skip it to avoid errors with dividing by zero.
1596    x = xOrigin * (d / determinant) + yOrigin * (-c / determinant) + (c * ty - d * tx) / determinant;
1597    y = xOrigin * (-b / determinant) + yOrigin * (a / determinant) - (a * ty - b * tx) / determinant;
1598    xOrigin = x;
1599    yOrigin = y;
1600  }
1601
1602  if (smooth || smooth !== false && cache.smooth) {
1603    tx = xOrigin - xOriginOld;
1604    ty = yOrigin - yOriginOld;
1605    cache.xOffset = xOffsetOld + (tx * a + ty * c) - tx;
1606    cache.yOffset = yOffsetOld + (tx * b + ty * d) - ty;
1607  } else {
1608    cache.xOffset = cache.yOffset = 0;
1609  }
1610
1611  cache.xOrigin = xOrigin;
1612  cache.yOrigin = yOrigin;
1613  cache.smooth = !!smooth;
1614  cache.origin = origin;
1615  cache.originIsAbsolute = !!originIsAbsolute;
1616  target.style[_transformOriginProp] = "0px 0px"; //otherwise, if someone sets  an origin via CSS, it will likely interfere with the SVG transform attribute ones (because remember, we're baking the origin into the matrix() value).
1617
1618  if (pluginToAddPropTweensTo) {
1619    _addNonTweeningPT(pluginToAddPropTweensTo, cache, "xOrigin", xOriginOld, xOrigin);
1620
1621    _addNonTweeningPT(pluginToAddPropTweensTo, cache, "yOrigin", yOriginOld, yOrigin);
1622
1623    _addNonTweeningPT(pluginToAddPropTweensTo, cache, "xOffset", xOffsetOld, cache.xOffset);
1624
1625    _addNonTweeningPT(pluginToAddPropTweensTo, cache, "yOffset", yOffsetOld, cache.yOffset);
1626  }
1627
1628  target.setAttribute("data-svg-origin", xOrigin + " " + yOrigin);
1629},
1630    _parseTransform = function _parseTransform(target, uncache) {
1631  var cache = target._gsap || new _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.GSCache(target);
1632
1633  if ("x" in cache && !uncache && !cache.uncache) {
1634    return cache;
1635  }
1636
1637  var style = target.style,
1638      invertedScaleX = cache.scaleX < 0,
1639      px = "px",
1640      deg = "deg",
1641      cs = getComputedStyle(target),
1642      origin = _getComputedProperty(target, _transformOriginProp) || "0",
1643      x,
1644      y,
1645      z,
1646      scaleX,
1647      scaleY,
1648      rotation,
1649      rotationX,
1650      rotationY,
1651      skewX,
1652      skewY,
1653      perspective,
1654      xOrigin,
1655      yOrigin,
1656      matrix,
1657      angle,
1658      cos,
1659      sin,
1660      a,
1661      b,
1662      c,
1663      d,
1664      a12,
1665      a22,
1666      t1,
1667      t2,
1668      t3,
1669      a13,
1670      a23,
1671      a33,
1672      a42,
1673      a43,
1674      a32;
1675  x = y = z = rotation = rotationX = rotationY = skewX = skewY = perspective = 0;
1676  scaleX = scaleY = 1;
1677  cache.svg = !!(target.getCTM && _isSVG(target));
1678
1679  if (cs.translate) {
1680    // accommodate independent transforms by combining them into normal ones.
1681    if (cs.translate !== "none" || cs.scale !== "none" || cs.rotate !== "none") {
1682      style[_transformProp] = (cs.translate !== "none" ? "translate3d(" + (cs.translate + " 0 0").split(" ").slice(0, 3).join(", ") + ") " : "") + (cs.rotate !== "none" ? "rotate(" + cs.rotate + ") " : "") + (cs.scale !== "none" ? "scale(" + cs.scale.split(" ").join(",") + ") " : "") + (cs[_transformProp] !== "none" ? cs[_transformProp] : "");
1683    }
1684
1685    style.scale = style.rotate = style.translate = "none";
1686  }
1687
1688  matrix = _getMatrix(target, cache.svg);
1689
1690  if (cache.svg) {
1691    if (cache.uncache) {
1692      // if cache.uncache is true (and maybe if origin is 0,0), we need to set element.style.transformOrigin = (cache.xOrigin - bbox.x) + "px " + (cache.yOrigin - bbox.y) + "px". Previously we let the data-svg-origin stay instead, but when introducing revert(), it complicated things.
1693      t2 = target.getBBox();
1694      origin = cache.xOrigin - t2.x + "px " + (cache.yOrigin - t2.y) + "px";
1695      t1 = "";
1696    } else {
1697      t1 = !uncache && target.getAttribute("data-svg-origin"); //  Remember, to work around browser inconsistencies we always force SVG elements' transformOrigin to 0,0 and offset the translation accordingly.
1698    }
1699
1700    _applySVGOrigin(target, t1 || origin, !!t1 || cache.originIsAbsolute, cache.smooth !== false, matrix);
1701  }
1702
1703  xOrigin = cache.xOrigin || 0;
1704  yOrigin = cache.yOrigin || 0;
1705
1706  if (matrix !== _identity2DMatrix) {
1707    a = matrix[0]; //a11
1708
1709    b = matrix[1]; //a21
1710
1711    c = matrix[2]; //a31
1712
1713    d = matrix[3]; //a41
1714
1715    x = a12 = matrix[4];
1716    y = a22 = matrix[5]; //2D matrix
1717
1718    if (matrix.length === 6) {
1719      scaleX = Math.sqrt(a * a + b * b);
1720      scaleY = Math.sqrt(d * d + c * c);
1721      rotation = a || b ? _atan2(b, a) * _RAD2DEG : 0; //note: if scaleX is 0, we cannot accurately measure rotation. Same for skewX with a scaleY of 0. Therefore, we default to the previously recorded value (or zero if that doesn't exist).
1722
1723      skewX = c || d ? _atan2(c, d) * _RAD2DEG + rotation : 0;
1724      skewX && (scaleY *= Math.abs(Math.cos(skewX * _DEG2RAD)));
1725
1726      if (cache.svg) {
1727        x -= xOrigin - (xOrigin * a + yOrigin * c);
1728        y -= yOrigin - (xOrigin * b + yOrigin * d);
1729      } //3D matrix
1730
1731    } else {
1732      a32 = matrix[6];
1733      a42 = matrix[7];
1734      a13 = matrix[8];
1735      a23 = matrix[9];
1736      a33 = matrix[10];
1737      a43 = matrix[11];
1738      x = matrix[12];
1739      y = matrix[13];
1740      z = matrix[14];
1741      angle = _atan2(a32, a33);
1742      rotationX = angle * _RAD2DEG; //rotationX
1743
1744      if (angle) {
1745        cos = Math.cos(-angle);
1746        sin = Math.sin(-angle);
1747        t1 = a12 * cos + a13 * sin;
1748        t2 = a22 * cos + a23 * sin;
1749        t3 = a32 * cos + a33 * sin;
1750        a13 = a12 * -sin + a13 * cos;
1751        a23 = a22 * -sin + a23 * cos;
1752        a33 = a32 * -sin + a33 * cos;
1753        a43 = a42 * -sin + a43 * cos;
1754        a12 = t1;
1755        a22 = t2;
1756        a32 = t3;
1757      } //rotationY
1758
1759
1760      angle = _atan2(-c, a33);
1761      rotationY = angle * _RAD2DEG;
1762
1763      if (angle) {
1764        cos = Math.cos(-angle);
1765        sin = Math.sin(-angle);
1766        t1 = a * cos - a13 * sin;
1767        t2 = b * cos - a23 * sin;
1768        t3 = c * cos - a33 * sin;
1769        a43 = d * sin + a43 * cos;
1770        a = t1;
1771        b = t2;
1772        c = t3;
1773      } //rotationZ
1774
1775
1776      angle = _atan2(b, a);
1777      rotation = angle * _RAD2DEG;
1778
1779      if (angle) {
1780        cos = Math.cos(angle);
1781        sin = Math.sin(angle);
1782        t1 = a * cos + b * sin;
1783        t2 = a12 * cos + a22 * sin;
1784        b = b * cos - a * sin;
1785        a22 = a22 * cos - a12 * sin;
1786        a = t1;
1787        a12 = t2;
1788      }
1789
1790      if (rotationX && Math.abs(rotationX) + Math.abs(rotation) > 359.9) {
1791        //when rotationY is set, it will often be parsed as 180 degrees different than it should be, and rotationX and rotation both being 180 (it looks the same), so we adjust for that here.
1792        rotationX = rotation = 0;
1793        rotationY = 180 - rotationY;
1794      }
1795
1796      scaleX = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._round)(Math.sqrt(a * a + b * b + c * c));
1797      scaleY = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._round)(Math.sqrt(a22 * a22 + a32 * a32));
1798      angle = _atan2(a12, a22);
1799      skewX = Math.abs(angle) > 0.0002 ? angle * _RAD2DEG : 0;
1800      perspective = a43 ? 1 / (a43 < 0 ? -a43 : a43) : 0;
1801    }
1802
1803    if (cache.svg) {
1804      //sense if there are CSS transforms applied on an SVG element in which case we must overwrite them when rendering. The transform attribute is more reliable cross-browser, but we can't just remove the CSS ones because they may be applied in a CSS rule somewhere (not just inline).
1805      t1 = target.getAttribute("transform");
1806      cache.forceCSS = target.setAttribute("transform", "") || !_isNullTransform(_getComputedProperty(target, _transformProp));
1807      t1 && target.setAttribute("transform", t1);
1808    }
1809  }
1810
1811  if (Math.abs(skewX) > 90 && Math.abs(skewX) < 270) {
1812    if (invertedScaleX) {
1813      scaleX *= -1;
1814      skewX += rotation <= 0 ? 180 : -180;
1815      rotation += rotation <= 0 ? 180 : -180;
1816    } else {
1817      scaleY *= -1;
1818      skewX += skewX <= 0 ? 180 : -180;
1819    }
1820  }
1821
1822  uncache = uncache || cache.uncache;
1823  cache.x = x - ((cache.xPercent = x && (!uncache && cache.xPercent || (Math.round(target.offsetWidth / 2) === Math.round(-x) ? -50 : 0))) ? target.offsetWidth * cache.xPercent / 100 : 0) + px;
1824  cache.y = y - ((cache.yPercent = y && (!uncache && cache.yPercent || (Math.round(target.offsetHeight / 2) === Math.round(-y) ? -50 : 0))) ? target.offsetHeight * cache.yPercent / 100 : 0) + px;
1825  cache.z = z + px;
1826  cache.scaleX = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._round)(scaleX);
1827  cache.scaleY = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._round)(scaleY);
1828  cache.rotation = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._round)(rotation) + deg;
1829  cache.rotationX = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._round)(rotationX) + deg;
1830  cache.rotationY = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._round)(rotationY) + deg;
1831  cache.skewX = skewX + deg;
1832  cache.skewY = skewY + deg;
1833  cache.transformPerspective = perspective + px;
1834
1835  if (cache.zOrigin = parseFloat(origin.split(" ")[2]) || 0) {
1836    style[_transformOriginProp] = _firstTwoOnly(origin);
1837  }
1838
1839  cache.xOffset = cache.yOffset = 0;
1840  cache.force3D = _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._config.force3D;
1841  cache.renderTransform = cache.svg ? _renderSVGTransforms : _supports3D ? _renderCSSTransforms : _renderNon3DTransforms;
1842  cache.uncache = 0;
1843  return cache;
1844},
1845    _firstTwoOnly = function _firstTwoOnly(value) {
1846  return (value = value.split(" "))[0] + " " + value[1];
1847},
1848    //for handling transformOrigin values, stripping out the 3rd dimension
1849_addPxTranslate = function _addPxTranslate(target, start, value) {
1850  var unit = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.getUnit)(start);
1851  return (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._round)(parseFloat(start) + parseFloat(_convertToUnit(target, "x", value + "px", unit))) + unit;
1852},
1853    _renderNon3DTransforms = function _renderNon3DTransforms(ratio, cache) {
1854  cache.z = "0px";
1855  cache.rotationY = cache.rotationX = "0deg";
1856  cache.force3D = 0;
1857
1858  _renderCSSTransforms(ratio, cache);
1859},
1860    _zeroDeg = "0deg",
1861    _zeroPx = "0px",
1862    _endParenthesis = ") ",
1863    _renderCSSTransforms = function _renderCSSTransforms(ratio, cache) {
1864  var _ref = cache || this,
1865      xPercent = _ref.xPercent,
1866      yPercent = _ref.yPercent,
1867      x = _ref.x,
1868      y = _ref.y,
1869      z = _ref.z,
1870      rotation = _ref.rotation,
1871      rotationY = _ref.rotationY,
1872      rotationX = _ref.rotationX,
1873      skewX = _ref.skewX,
1874      skewY = _ref.skewY,
1875      scaleX = _ref.scaleX,
1876      scaleY = _ref.scaleY,
1877      transformPerspective = _ref.transformPerspective,
1878      force3D = _ref.force3D,
1879      target = _ref.target,
1880      zOrigin = _ref.zOrigin,
1881      transforms = "",
1882      use3D = force3D === "auto" && ratio && ratio !== 1 || force3D === true; // Safari has a bug that causes it not to render 3D transform-origin values properly, so we force the z origin to 0, record it in the cache, and then do the math here to offset the translate values accordingly (basically do the 3D transform-origin part manually)
1883
1884
1885  if (zOrigin && (rotationX !== _zeroDeg || rotationY !== _zeroDeg)) {
1886    var angle = parseFloat(rotationY) * _DEG2RAD,
1887        a13 = Math.sin(angle),
1888        a33 = Math.cos(angle),
1889        cos;
1890
1891    angle = parseFloat(rotationX) * _DEG2RAD;
1892    cos = Math.cos(angle);
1893    x = _addPxTranslate(target, x, a13 * cos * -zOrigin);
1894    y = _addPxTranslate(target, y, -Math.sin(angle) * -zOrigin);
1895    z = _addPxTranslate(target, z, a33 * cos * -zOrigin + zOrigin);
1896  }
1897
1898  if (transformPerspective !== _zeroPx) {
1899    transforms += "perspective(" + transformPerspective + _endParenthesis;
1900  }
1901
1902  if (xPercent || yPercent) {
1903    transforms += "translate(" + xPercent + "%, " + yPercent + "%) ";
1904  }
1905
1906  if (use3D || x !== _zeroPx || y !== _zeroPx || z !== _zeroPx) {
1907    transforms += z !== _zeroPx || use3D ? "translate3d(" + x + ", " + y + ", " + z + ") " : "translate(" + x + ", " + y + _endParenthesis;
1908  }
1909
1910  if (rotation !== _zeroDeg) {
1911    transforms += "rotate(" + rotation + _endParenthesis;
1912  }
1913
1914  if (rotationY !== _zeroDeg) {
1915    transforms += "rotateY(" + rotationY + _endParenthesis;
1916  }
1917
1918  if (rotationX !== _zeroDeg) {
1919    transforms += "rotateX(" + rotationX + _endParenthesis;
1920  }
1921
1922  if (skewX !== _zeroDeg || skewY !== _zeroDeg) {
1923    transforms += "skew(" + skewX + ", " + skewY + _endParenthesis;
1924  }
1925
1926  if (scaleX !== 1 || scaleY !== 1) {
1927    transforms += "scale(" + scaleX + ", " + scaleY + _endParenthesis;
1928  }
1929
1930  target.style[_transformProp] = transforms || "translate(0, 0)";
1931},
1932    _renderSVGTransforms = function _renderSVGTransforms(ratio, cache) {
1933  var _ref2 = cache || this,
1934      xPercent = _ref2.xPercent,
1935      yPercent = _ref2.yPercent,
1936      x = _ref2.x,
1937      y = _ref2.y,
1938      rotation = _ref2.rotation,
1939      skewX = _ref2.skewX,
1940      skewY = _ref2.skewY,
1941      scaleX = _ref2.scaleX,
1942      scaleY = _ref2.scaleY,
1943      target = _ref2.target,
1944      xOrigin = _ref2.xOrigin,
1945      yOrigin = _ref2.yOrigin,
1946      xOffset = _ref2.xOffset,
1947      yOffset = _ref2.yOffset,
1948      forceCSS = _ref2.forceCSS,
1949      tx = parseFloat(x),
1950      ty = parseFloat(y),
1951      a11,
1952      a21,
1953      a12,
1954      a22,
1955      temp;
1956
1957  rotation = parseFloat(rotation);
1958  skewX = parseFloat(skewX);
1959  skewY = parseFloat(skewY);
1960
1961  if (skewY) {
1962    //for performance reasons, we combine all skewing into the skewX and rotation values. Remember, a skewY of 10 degrees looks the same as a rotation of 10 degrees plus a skewX of 10 degrees.
1963    skewY = parseFloat(skewY);
1964    skewX += skewY;
1965    rotation += skewY;
1966  }
1967
1968  if (rotation || skewX) {
1969    rotation *= _DEG2RAD;
1970    skewX *= _DEG2RAD;
1971    a11 = Math.cos(rotation) * scaleX;
1972    a21 = Math.sin(rotation) * scaleX;
1973    a12 = Math.sin(rotation - skewX) * -scaleY;
1974    a22 = Math.cos(rotation - skewX) * scaleY;
1975
1976    if (skewX) {
1977      skewY *= _DEG2RAD;
1978      temp = Math.tan(skewX - skewY);
1979      temp = Math.sqrt(1 + temp * temp);
1980      a12 *= temp;
1981      a22 *= temp;
1982
1983      if (skewY) {
1984        temp = Math.tan(skewY);
1985        temp = Math.sqrt(1 + temp * temp);
1986        a11 *= temp;
1987        a21 *= temp;
1988      }
1989    }
1990
1991    a11 = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._round)(a11);
1992    a21 = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._round)(a21);
1993    a12 = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._round)(a12);
1994    a22 = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._round)(a22);
1995  } else {
1996    a11 = scaleX;
1997    a22 = scaleY;
1998    a21 = a12 = 0;
1999  }
2000
2001  if (tx && !~(x + "").indexOf("px") || ty && !~(y + "").indexOf("px")) {
2002    tx = _convertToUnit(target, "x", x, "px");
2003    ty = _convertToUnit(target, "y", y, "px");
2004  }
2005
2006  if (xOrigin || yOrigin || xOffset || yOffset) {
2007    tx = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._round)(tx + xOrigin - (xOrigin * a11 + yOrigin * a12) + xOffset);
2008    ty = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._round)(ty + yOrigin - (xOrigin * a21 + yOrigin * a22) + yOffset);
2009  }
2010
2011  if (xPercent || yPercent) {
2012    //The SVG spec doesn't support percentage-based translation in the "transform" attribute, so we merge it into the translation to simulate it.
2013    temp = target.getBBox();
2014    tx = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._round)(tx + xPercent / 100 * temp.width);
2015    ty = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._round)(ty + yPercent / 100 * temp.height);
2016  }
2017
2018  temp = "matrix(" + a11 + "," + a21 + "," + a12 + "," + a22 + "," + tx + "," + ty + ")";
2019  target.setAttribute("transform", temp);
2020  forceCSS && (target.style[_transformProp] = temp); //some browsers prioritize CSS transforms over the transform attribute. When we sense that the user has CSS transforms applied, we must overwrite them this way (otherwise some browser simply won't render the transform attribute changes!)
2021},
2022    _addRotationalPropTween = function _addRotationalPropTween(plugin, target, property, startNum, endValue) {
2023  var cap = 360,
2024      isString = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._isString)(endValue),
2025      endNum = parseFloat(endValue) * (isString && ~endValue.indexOf("rad") ? _RAD2DEG : 1),
2026      change = endNum - startNum,
2027      finalValue = startNum + change + "deg",
2028      direction,
2029      pt;
2030
2031  if (isString) {
2032    direction = endValue.split("_")[1];
2033
2034    if (direction === "short") {
2035      change %= cap;
2036
2037      if (change !== change % (cap / 2)) {
2038        change += change < 0 ? cap : -cap;
2039      }
2040    }
2041
2042    if (direction === "cw" && change < 0) {
2043      change = (change + cap * _bigNum) % cap - ~~(change / cap) * cap;
2044    } else if (direction === "ccw" && change > 0) {
2045      change = (change - cap * _bigNum) % cap - ~~(change / cap) * cap;
2046    }
2047  }
2048
2049  plugin._pt = pt = new _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.PropTween(plugin._pt, target, property, startNum, change, _renderPropWithEnd);
2050  pt.e = finalValue;
2051  pt.u = "deg";
2052
2053  plugin._props.push(property);
2054
2055  return pt;
2056},
2057    _assign = function _assign(target, source) {
2058  // Internet Explorer doesn't have Object.assign(), so we recreate it here.
2059  for (var p in source) {
2060    target[p] = source[p];
2061  }
2062
2063  return target;
2064},
2065    _addRawTransformPTs = function _addRawTransformPTs(plugin, transforms, target) {
2066  //for handling cases where someone passes in a whole transform string, like transform: "scale(2, 3) rotate(20deg) translateY(30em)"
2067  var startCache = _assign({}, target._gsap),
2068      exclude = "perspective,force3D,transformOrigin,svgOrigin",
2069      style = target.style,
2070      endCache,
2071      p,
2072      startValue,
2073      endValue,
2074      startNum,
2075      endNum,
2076      startUnit,
2077      endUnit;
2078
2079  if (startCache.svg) {
2080    startValue = target.getAttribute("transform");
2081    target.setAttribute("transform", "");
2082    style[_transformProp] = transforms;
2083    endCache = _parseTransform(target, 1);
2084
2085    _removeProperty(target, _transformProp);
2086
2087    target.setAttribute("transform", startValue);
2088  } else {
2089    startValue = getComputedStyle(target)[_transformProp];
2090    style[_transformProp] = transforms;
2091    endCache = _parseTransform(target, 1);
2092    style[_transformProp] = startValue;
2093  }
2094
2095  for (p in _transformProps) {
2096    startValue = startCache[p];
2097    endValue = endCache[p];
2098
2099    if (startValue !== endValue && exclude.indexOf(p) < 0) {
2100      //tweening to no perspective gives very unintuitive results - just keep the same perspective in that case.
2101      startUnit = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.getUnit)(startValue);
2102      endUnit = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.getUnit)(endValue);
2103      startNum = startUnit !== endUnit ? _convertToUnit(target, p, startValue, endUnit) : parseFloat(startValue);
2104      endNum = parseFloat(endValue);
2105      plugin._pt = new _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.PropTween(plugin._pt, endCache, p, startNum, endNum - startNum, _renderCSSProp);
2106      plugin._pt.u = endUnit || 0;
2107
2108      plugin._props.push(p);
2109    }
2110  }
2111
2112  _assign(endCache, startCache);
2113}; // handle splitting apart padding, margin, borderWidth, and borderRadius into their 4 components. Firefox, for example, won't report borderRadius correctly - it will only do borderTopLeftRadius and the other corners. We also want to handle paddingTop, marginLeft, borderRightWidth, etc.
2114
2115
2116(0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._forEachName)("padding,margin,Width,Radius", function (name, index) {
2117  var t = "Top",
2118      r = "Right",
2119      b = "Bottom",
2120      l = "Left",
2121      props = (index < 3 ? [t, r, b, l] : [t + l, t + r, b + r, b + l]).map(function (side) {
2122    return index < 2 ? name + side : "border" + side + name;
2123  });
2124
2125  _specialProps[index > 1 ? "border" + name : name] = function (plugin, target, property, endValue, tween) {
2126    var a, vars;
2127
2128    if (arguments.length < 4) {
2129      // getter, passed target, property, and unit (from _get())
2130      a = props.map(function (prop) {
2131        return _get(plugin, prop, property);
2132      });
2133      vars = a.join(" ");
2134      return vars.split(a[0]).length === 5 ? a[0] : vars;
2135    }
2136
2137    a = (endValue + "").split(" ");
2138    vars = {};
2139    props.forEach(function (prop, i) {
2140      return vars[prop] = a[i] = a[i] || a[(i - 1) / 2 | 0];
2141    });
2142    plugin.init(target, vars, tween);
2143  };
2144});
2145
2146var CSSPlugin = {
2147  name: "css",
2148  register: _initCore,
2149  targetTest: function targetTest(target) {
2150    return target.style && target.nodeType;
2151  },
2152  init: function init(target, vars, tween, index, targets) {
2153    var props = this._props,
2154        style = target.style,
2155        startAt = tween.vars.startAt,
2156        startValue,
2157        endValue,
2158        endNum,
2159        startNum,
2160        type,
2161        specialProp,
2162        p,
2163        startUnit,
2164        endUnit,
2165        relative,
2166        isTransformRelated,
2167        transformPropTween,
2168        cache,
2169        smooth,
2170        hasPriority,
2171        inlineProps;
2172    _pluginInitted || _initCore(); // we may call init() multiple times on the same plugin instance, like when adding special properties, so make sure we don't overwrite the revert data or inlineProps
2173
2174    this.styles = this.styles || _getStyleSaver(target);
2175    inlineProps = this.styles.props;
2176    this.tween = tween;
2177
2178    for (p in vars) {
2179      if (p === "autoRound") {
2180        continue;
2181      }
2182
2183      endValue = vars[p];
2184
2185      if (_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._plugins[p] && (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._checkPlugin)(p, vars, tween, index, target, targets)) {
2186        // plugins
2187        continue;
2188      }
2189
2190      type = typeof endValue;
2191      specialProp = _specialProps[p];
2192
2193      if (type === "function") {
2194        endValue = endValue.call(tween, index, target, targets);
2195        type = typeof endValue;
2196      }
2197
2198      if (type === "string" && ~endValue.indexOf("random(")) {
2199        endValue = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._replaceRandom)(endValue);
2200      }
2201
2202      if (specialProp) {
2203        specialProp(this, target, p, endValue, tween) && (hasPriority = 1);
2204      } else if (p.substr(0, 2) === "--") {
2205        //CSS variable
2206        startValue = (getComputedStyle(target).getPropertyValue(p) + "").trim();
2207        endValue += "";
2208        _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._colorExp.lastIndex = 0;
2209
2210        if (!_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._colorExp.test(startValue)) {
2211          // colors don't have units
2212          startUnit = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.getUnit)(startValue);
2213          endUnit = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.getUnit)(endValue);
2214        }
2215
2216        endUnit ? startUnit !== endUnit && (startValue = _convertToUnit(target, p, startValue, endUnit) + endUnit) : startUnit && (endValue += startUnit);
2217        this.add(style, "setProperty", startValue, endValue, index, targets, 0, 0, p);
2218        props.push(p);
2219        inlineProps.push(p, 0, style[p]);
2220      } else if (type !== "undefined") {
2221        if (startAt && p in startAt) {
2222          // in case someone hard-codes a complex value as the start, like top: "calc(2vh / 2)". Without this, it'd use the computed value (always in px)
2223          startValue = typeof startAt[p] === "function" ? startAt[p].call(tween, index, target, targets) : startAt[p];
2224          (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._isString)(startValue) && ~startValue.indexOf("random(") && (startValue = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._replaceRandom)(startValue));
2225          (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.getUnit)(startValue + "") || (startValue += _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._config.units[p] || (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.getUnit)(_get(target, p)) || ""); // for cases when someone passes in a unitless value like {x: 100}; if we try setting translate(100, 0px) it won't work.
2226
2227          (startValue + "").charAt(1) === "=" && (startValue = _get(target, p)); // can't work with relative values
2228        } else {
2229          startValue = _get(target, p);
2230        }
2231
2232        startNum = parseFloat(startValue);
2233        relative = type === "string" && endValue.charAt(1) === "=" && endValue.substr(0, 2);
2234        relative && (endValue = endValue.substr(2));
2235        endNum = parseFloat(endValue);
2236
2237        if (p in _propertyAliases) {
2238          if (p === "autoAlpha") {
2239            //special case where we control the visibility along with opacity. We still allow the opacity value to pass through and get tweened.
2240            if (startNum === 1 && _get(target, "visibility") === "hidden" && endNum) {
2241              //if visibility is initially set to "hidden", we should interpret that as intent to make opacity 0 (a convenience)
2242              startNum = 0;
2243            }
2244
2245            inlineProps.push("visibility", 0, style.visibility);
2246
2247            _addNonTweeningPT(this, style, "visibility", startNum ? "inherit" : "hidden", endNum ? "inherit" : "hidden", !endNum);
2248          }
2249
2250          if (p !== "scale" && p !== "transform") {
2251            p = _propertyAliases[p];
2252            ~p.indexOf(",") && (p = p.split(",")[0]);
2253          }
2254        }
2255
2256        isTransformRelated = p in _transformProps; //--- TRANSFORM-RELATED ---
2257
2258        if (isTransformRelated) {
2259          this.styles.save(p);
2260
2261          if (!transformPropTween) {
2262            cache = target._gsap;
2263            cache.renderTransform && !vars.parseTransform || _parseTransform(target, vars.parseTransform); // if, for example, gsap.set(... {transform:"translateX(50vw)"}), the _get() call doesn't parse the transform, thus cache.renderTransform won't be set yet so force the parsing of the transform here.
2264
2265            smooth = vars.smoothOrigin !== false && cache.smooth;
2266            transformPropTween = this._pt = new _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.PropTween(this._pt, style, _transformProp, 0, 1, cache.renderTransform, cache, 0, -1); //the first time through, create the rendering PropTween so that it runs LAST (in the linked list, we keep adding to the beginning)
2267
2268            transformPropTween.dep = 1; //flag it as dependent so that if things get killed/overwritten and this is the only PropTween left, we can safely kill the whole tween.
2269          }
2270
2271          if (p === "scale") {
2272            this._pt = new _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.PropTween(this._pt, cache, "scaleY", cache.scaleY, (relative ? (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._parseRelative)(cache.scaleY, relative + endNum) : endNum) - cache.scaleY || 0, _renderCSSProp);
2273            this._pt.u = 0;
2274            props.push("scaleY", p);
2275            p += "X";
2276          } else if (p === "transformOrigin") {
2277            inlineProps.push(_transformOriginProp, 0, style[_transformOriginProp]);
2278            endValue = _convertKeywordsToPercentages(endValue); //in case something like "left top" or "bottom right" is passed in. Convert to percentages.
2279
2280            if (cache.svg) {
2281              _applySVGOrigin(target, endValue, 0, smooth, 0, this);
2282            } else {
2283              endUnit = parseFloat(endValue.split(" ")[2]) || 0; //handle the zOrigin separately!
2284
2285              endUnit !== cache.zOrigin && _addNonTweeningPT(this, cache, "zOrigin", cache.zOrigin, endUnit);
2286
2287              _addNonTweeningPT(this, style, p, _firstTwoOnly(startValue), _firstTwoOnly(endValue));
2288            }
2289
2290            continue;
2291          } else if (p === "svgOrigin") {
2292            _applySVGOrigin(target, endValue, 1, smooth, 0, this);
2293
2294            continue;
2295          } else if (p in _rotationalProperties) {
2296            _addRotationalPropTween(this, cache, p, startNum, relative ? (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._parseRelative)(startNum, relative + endValue) : endValue);
2297
2298            continue;
2299          } else if (p === "smoothOrigin") {
2300            _addNonTweeningPT(this, cache, "smooth", cache.smooth, endValue);
2301
2302            continue;
2303          } else if (p === "force3D") {
2304            cache[p] = endValue;
2305            continue;
2306          } else if (p === "transform") {
2307            _addRawTransformPTs(this, endValue, target);
2308
2309            continue;
2310          }
2311        } else if (!(p in style)) {
2312          p = _checkPropPrefix(p) || p;
2313        }
2314
2315        if (isTransformRelated || (endNum || endNum === 0) && (startNum || startNum === 0) && !_complexExp.test(endValue) && p in style) {
2316          startUnit = (startValue + "").substr((startNum + "").length);
2317          endNum || (endNum = 0); // protect against NaN
2318
2319          endUnit = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.getUnit)(endValue) || (p in _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._config.units ? _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._config.units[p] : startUnit);
2320          startUnit !== endUnit && (startNum = _convertToUnit(target, p, startValue, endUnit));
2321          this._pt = new _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.PropTween(this._pt, isTransformRelated ? cache : style, p, startNum, (relative ? (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._parseRelative)(startNum, relative + endNum) : endNum) - startNum, !isTransformRelated && (endUnit === "px" || p === "zIndex") && vars.autoRound !== false ? _renderRoundedCSSProp : _renderCSSProp);
2322          this._pt.u = endUnit || 0;
2323
2324          if (startUnit !== endUnit && endUnit !== "%") {
2325            //when the tween goes all the way back to the beginning, we need to revert it to the OLD/ORIGINAL value (with those units). We record that as a "b" (beginning) property and point to a render method that handles that. (performance optimization)
2326            this._pt.b = startValue;
2327            this._pt.r = _renderCSSPropWithBeginning;
2328          }
2329        } else if (!(p in style)) {
2330          if (p in target) {
2331            //maybe it's not a style - it could be a property added directly to an element in which case we'll try to animate that.
2332            this.add(target, p, startValue || target[p], relative ? relative + endValue : endValue, index, targets);
2333          } else if (p !== "parseTransform") {
2334            (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._missingPlugin)(p, endValue);
2335
2336            continue;
2337          }
2338        } else {
2339          _tweenComplexCSSString.call(this, target, p, startValue, relative ? relative + endValue : endValue);
2340        }
2341
2342        isTransformRelated || (p in style ? inlineProps.push(p, 0, style[p]) : inlineProps.push(p, 1, startValue || target[p]));
2343        props.push(p);
2344      }
2345    }
2346
2347    hasPriority && (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._sortPropTweensByPriority)(this);
2348  },
2349  render: function render(ratio, data) {
2350    if (data.tween._time || !_reverting()) {
2351      var pt = data._pt;
2352
2353      while (pt) {
2354        pt.r(ratio, pt.d);
2355        pt = pt._next;
2356      }
2357    } else {
2358      data.styles.revert();
2359    }
2360  },
2361  get: _get,
2362  aliases: _propertyAliases,
2363  getSetter: function getSetter(target, property, plugin) {
2364    //returns a setter function that accepts target, property, value and applies it accordingly. Remember, properties like "x" aren't as simple as target.style.property = value because they've got to be applied to a proxy object and then merged into a transform string in a renderer.
2365    var p = _propertyAliases[property];
2366    p && p.indexOf(",") < 0 && (property = p);
2367    return property in _transformProps && property !== _transformOriginProp && (target._gsap.x || _get(target, "x")) ? plugin && _recentSetterPlugin === plugin ? property === "scale" ? _setterScale : _setterTransform : (_recentSetterPlugin = plugin || {}) && (property === "scale" ? _setterScaleWithRender : _setterTransformWithRender) : target.style && !(0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._isUndefined)(target.style[property]) ? _setterCSSStyle : ~property.indexOf("-") ? _setterCSSProp : (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._getSetter)(target, property);
2368  },
2369  core: {
2370    _removeProperty: _removeProperty,
2371    _getMatrix: _getMatrix
2372  }
2373};
2374_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.gsap.utils.checkPrefix = _checkPropPrefix;
2375_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.gsap.core.getStyleSaver = _getStyleSaver;
2376
2377(function (positionAndScale, rotation, others, aliases) {
2378  var all = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._forEachName)(positionAndScale + "," + rotation + "," + others, function (name) {
2379    _transformProps[name] = 1;
2380  });
2381
2382  (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._forEachName)(rotation, function (name) {
2383    _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._config.units[name] = "deg";
2384    _rotationalProperties[name] = 1;
2385  });
2386
2387  _propertyAliases[all[13]] = positionAndScale + "," + rotation;
2388
2389  (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._forEachName)(aliases, function (name) {
2390    var split = name.split(":");
2391    _propertyAliases[split[1]] = all[split[0]];
2392  });
2393})("x,y,z,scale,scaleX,scaleY,xPercent,yPercent", "rotation,rotationX,rotationY,skewX,skewY", "transform,transformOrigin,svgOrigin,force3D,smoothOrigin,transformPerspective", "0:translateX,1:translateY,2:translateZ,8:rotate,8:rotationZ,8:rotateZ,9:rotateX,10:rotateY");
2394
2395(0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._forEachName)("x,y,z,top,right,bottom,left,width,height,fontSize,padding,margin,perspective", function (name) {
2396  _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._config.units[name] = "px";
2397});
2398
2399_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.gsap.registerPlugin(CSSPlugin);
2400
2401
2402/***/ }),
2403
vendor: 26,145 bytes, lines 2404-3108
2404/***/ "./node_modules/gsap/Observer.js":
2405/*!***************************************!*\
2406  !*** ./node_modules/gsap/Observer.js ***!
2407  \***************************************/
2408/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
2409
2410__webpack_require__.r(__webpack_exports__);
2411/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2412/* harmony export */   Observer: function() { return /* binding */ Observer; },
2413/* harmony export */   _getProxyProp: function() { return /* binding */ _getProxyProp; },
2414/* harmony export */   _getScrollFunc: function() { return /* binding */ _getScrollFunc; },
2415/* harmony export */   _getTarget: function() { return /* binding */ _getTarget; },
2416/* harmony export */   _getVelocityProp: function() { return /* binding */ _getVelocityProp; },
2417/* harmony export */   _horizontal: function() { return /* binding */ _horizontal; },
2418/* harmony export */   _isViewport: function() { return /* binding */ _isViewport; },
2419/* harmony export */   _proxies: function() { return /* binding */ _proxies; },
2420/* harmony export */   _scrollers: function() { return /* binding */ _scrollers; },
2421/* harmony export */   _vertical: function() { return /* binding */ _vertical; },
2422/* harmony export */   "default": function() { return /* binding */ Observer; }
2423/* harmony export */ });
2424function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
2425
2426function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
2427
2428/*!
2429 * Observer 3.12.2
2430 * https://greensock.com
2431 *
2432 * @license Copyright 2008-2023, GreenSock. All rights reserved.
2433 * Subject to the terms at https://greensock.com/standard-license or for
2434 * Club GreenSock members, the agreement issued with that membership.
2435 * @author: Jack Doyle, [email protected]
2436*/
2437
2438/* eslint-disable */
2439var gsap,
2440    _coreInitted,
2441    _clamp,
2442    _win,
2443    _doc,
2444    _docEl,
2445    _body,
2446    _isTouch,
2447    _pointerType,
2448    ScrollTrigger,
2449    _root,
2450    _normalizer,
2451    _eventTypes,
2452    _context,
2453    _getGSAP = function _getGSAP() {
2454  return gsap || typeof window !== "undefined" && (gsap = window.gsap) && gsap.registerPlugin && gsap;
2455},
2456    _startup = 1,
2457    _observers = [],
2458    _scrollers = [],
2459    _proxies = [],
2460    _getTime = Date.now,
2461    _bridge = function _bridge(name, value) {
2462  return value;
2463},
2464    _integrate = function _integrate() {
2465  var core = ScrollTrigger.core,
2466      data = core.bridge || {},
2467      scrollers = core._scrollers,
2468      proxies = core._proxies;
2469  scrollers.push.apply(scrollers, _scrollers);
2470  proxies.push.apply(proxies, _proxies);
2471  _scrollers = scrollers;
2472  _proxies = proxies;
2473
2474  _bridge = function _bridge(name, value) {
2475    return data[name](value);
2476  };
2477},
2478    _getProxyProp = function _getProxyProp(element, property) {
2479  return ~_proxies.indexOf(element) && _proxies[_proxies.indexOf(element) + 1][property];
2480},
2481    _isViewport = function _isViewport(el) {
2482  return !!~_root.indexOf(el);
2483},
2484    _addListener = function _addListener(element, type, func, nonPassive, capture) {
2485  return element.addEventListener(type, func, {
2486    passive: !nonPassive,
2487    capture: !!capture
2488  });
2489},
2490    _removeListener = function _removeListener(element, type, func, capture) {
2491  return element.removeEventListener(type, func, !!capture);
2492},
2493    _scrollLeft = "scrollLeft",
2494    _scrollTop = "scrollTop",
2495    _onScroll = function _onScroll() {
2496  return _normalizer && _normalizer.isPressed || _scrollers.cache++;
2497},
2498    _scrollCacheFunc = function _scrollCacheFunc(f, doNotCache) {
2499  var cachingFunc = function cachingFunc(value) {
2500    // since reading the scrollTop/scrollLeft/pageOffsetY/pageOffsetX can trigger a layout, this function allows us to cache the value so it only gets read fresh after a "scroll" event fires (or while we're refreshing because that can lengthen the page and alter the scroll position). when "soft" is true, that means don't actually set the scroll, but cache the new value instead (useful in ScrollSmoother)
2501    if (value || value === 0) {
2502      _startup && (_win.history.scrollRestoration = "manual"); // otherwise the new position will get overwritten by the browser onload.
2503
2504      var isNormalizing = _normalizer && _normalizer.isPressed;
2505      value = cachingFunc.v = Math.round(value) || (_normalizer && _normalizer.iOS ? 1 : 0); //TODO: iOS Bug: if you allow it to go to 0, Safari can start to report super strange (wildly inaccurate) touch positions!
2506
2507      f(value);
2508      cachingFunc.cacheID = _scrollers.cache;
2509      isNormalizing && _bridge("ss", value); // set scroll (notify ScrollTrigger so it can dispatch a "scrollStart" event if necessary
2510    } else if (doNotCache || _scrollers.cache !== cachingFunc.cacheID || _bridge("ref")) {
2511      cachingFunc.cacheID = _scrollers.cache;
2512      cachingFunc.v = f();
2513    }
2514
2515    return cachingFunc.v + cachingFunc.offset;
2516  };
2517
2518  cachingFunc.offset = 0;
2519  return f && cachingFunc;
2520},
2521    _horizontal = {
2522  s: _scrollLeft,
2523  p: "left",
2524  p2: "Left",
2525  os: "right",
2526  os2: "Right",
2527  d: "width",
2528  d2: "Width",
2529  a: "x",
2530  sc: _scrollCacheFunc(function (value) {
2531    return arguments.length ? _win.scrollTo(value, _vertical.sc()) : _win.pageXOffset || _doc[_scrollLeft] || _docEl[_scrollLeft] || _body[_scrollLeft] || 0;
2532  })
2533},
2534    _vertical = {
2535  s: _scrollTop,
2536  p: "top",
2537  p2: "Top",
2538  os: "bottom",
2539  os2: "Bottom",
2540  d: "height",
2541  d2: "Height",
2542  a: "y",
2543  op: _horizontal,
2544  sc: _scrollCacheFunc(function (value) {
2545    return arguments.length ? _win.scrollTo(_horizontal.sc(), value) : _win.pageYOffset || _doc[_scrollTop] || _docEl[_scrollTop] || _body[_scrollTop] || 0;
2546  })
2547},
2548    _getTarget = function _getTarget(t, self) {
2549  return (self && self._ctx && self._ctx.selector || gsap.utils.toArray)(t)[0] || (typeof t === "string" && gsap.config().nullTargetWarn !== false ? console.warn("Element not found:", t) : null);
2550},
2551    _getScrollFunc = function _getScrollFunc(element, _ref) {
2552  var s = _ref.s,
2553      sc = _ref.sc;
2554  // we store the scroller functions in an alternating sequenced Array like [element, verticalScrollFunc, horizontalScrollFunc, ...] so that we can minimize memory, maximize performance, and we also record the last position as a ".rec" property in order to revert to that after refreshing to ensure things don't shift around.
2555  _isViewport(element) && (element = _doc.scrollingElement || _docEl);
2556
2557  var i = _scrollers.indexOf(element),
2558      offset = sc === _vertical.sc ? 1 : 2;
2559
2560  !~i && (i = _scrollers.push(element) - 1);
2561  _scrollers[i + offset] || _addListener(element, "scroll", _onScroll); // clear the cache when a scroll occurs
2562
2563  var prev = _scrollers[i + offset],
2564      func = prev || (_scrollers[i + offset] = _scrollCacheFunc(_getProxyProp(element, s), true) || (_isViewport(element) ? sc : _scrollCacheFunc(function (value) {
2565    return arguments.length ? element[s] = value : element[s];
2566  })));
2567  func.target = element;
2568  prev || (func.smooth = gsap.getProperty(element, "scrollBehavior") === "smooth"); // only set it the first time (don't reset every time a scrollFunc is requested because perhaps it happens during a refresh() when it's disabled in ScrollTrigger.
2569
2570  return func;
2571},
2572    _getVelocityProp = function _getVelocityProp(value, minTimeRefresh, useDelta) {
2573  var v1 = value,
2574      v2 = value,
2575      t1 = _getTime(),
2576      t2 = t1,
2577      min = minTimeRefresh || 50,
2578      dropToZeroTime = Math.max(500, min * 3),
2579      update = function update(value, force) {
2580    var t = _getTime();
2581
2582    if (force || t - t1 > min) {
2583      v2 = v1;
2584      v1 = value;
2585      t2 = t1;
2586      t1 = t;
2587    } else if (useDelta) {
2588      v1 += value;
2589    } else {
2590      // not totally necessary, but makes it a bit more accurate by adjusting the v1 value according to the new slope. This way we're not just ignoring the incoming data. Removing for now because it doesn't seem to make much practical difference and it's probably not worth the kb.
2591      v1 = v2 + (value - v2) / (t - t2) * (t1 - t2);
2592    }
2593  },
2594      reset = function reset() {
2595    v2 = v1 = useDelta ? 0 : v1;
2596    t2 = t1 = 0;
2597  },
2598      getVelocity = function getVelocity(latestValue) {
2599    var tOld = t2,
2600        vOld = v2,
2601        t = _getTime();
2602
2603    (latestValue || latestValue === 0) && latestValue !== v1 && update(latestValue);
2604    return t1 === t2 || t - t2 > dropToZeroTime ? 0 : (v1 + (useDelta ? vOld : -vOld)) / ((useDelta ? t : t1) - tOld) * 1000;
2605  };
2606
2607  return {
2608    update: update,
2609    reset: reset,
2610    getVelocity: getVelocity
2611  };
2612},
2613    _getEvent = function _getEvent(e, preventDefault) {
2614  preventDefault && !e._gsapAllow && e.preventDefault();
2615  return e.changedTouches ? e.changedTouches[0] : e;
2616},
2617    _getAbsoluteMax = function _getAbsoluteMax(a) {
2618  var max = Math.max.apply(Math, a),
2619      min = Math.min.apply(Math, a);
2620  return Math.abs(max) >= Math.abs(min) ? max : min;
2621},
2622    _setScrollTrigger = function _setScrollTrigger() {
2623  ScrollTrigger = gsap.core.globals().ScrollTrigger;
2624  ScrollTrigger && ScrollTrigger.core && _integrate();
2625},
2626    _initCore = function _initCore(core) {
2627  gsap = core || _getGSAP();
2628
2629  if (gsap && typeof document !== "undefined" && document.body) {
2630    _win = window;
2631    _doc = document;
2632    _docEl = _doc.documentElement;
2633    _body = _doc.body;
2634    _root = [_win, _doc, _docEl, _body];
2635    _clamp = gsap.utils.clamp;
2636
2637    _context = gsap.core.context || function () {};
2638
2639    _pointerType = "onpointerenter" in _body ? "pointer" : "mouse"; // isTouch is 0 if no touch, 1 if ONLY touch, and 2 if it can accommodate touch but also other types like mouse/pointer.
2640
2641    _isTouch = Observer.isTouch = _win.matchMedia && _win.matchMedia("(hover: none), (pointer: coarse)").matches ? 1 : "ontouchstart" in _win || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0 ? 2 : 0;
2642    _eventTypes = Observer.eventTypes = ("ontouchstart" in _docEl ? "touchstart,touchmove,touchcancel,touchend" : !("onpointerdown" in _docEl) ? "mousedown,mousemove,mouseup,mouseup" : "pointerdown,pointermove,pointercancel,pointerup").split(",");
2643    setTimeout(function () {
2644      return _startup = 0;
2645    }, 500);
2646
2647    _setScrollTrigger();
2648
2649    _coreInitted = 1;
2650  }
2651
2652  return _coreInitted;
2653};
2654
2655_horizontal.op = _vertical;
2656_scrollers.cache = 0;
2657var Observer = /*#__PURE__*/function () {
2658  function Observer(vars) {
2659    this.init(vars);
2660  }
2661
2662  var _proto = Observer.prototype;
2663
2664  _proto.init = function init(vars) {
2665    _coreInitted || _initCore(gsap) || console.warn("Please gsap.registerPlugin(Observer)");
2666    ScrollTrigger || _setScrollTrigger();
2667    var tolerance = vars.tolerance,
2668        dragMinimum = vars.dragMinimum,
2669        type = vars.type,
2670        target = vars.target,
2671        lineHeight = vars.lineHeight,
2672        debounce = vars.debounce,
2673        preventDefault = vars.preventDefault,
2674        onStop = vars.onStop,
2675        onStopDelay = vars.onStopDelay,
2676        ignore = vars.ignore,
2677        wheelSpeed = vars.wheelSpeed,
2678        event = vars.event,
2679        onDragStart = vars.onDragStart,
2680        onDragEnd = vars.onDragEnd,
2681        onDrag = vars.onDrag,
2682        onPress = vars.onPress,
2683        onRelease = vars.onRelease,
2684        onRight = vars.onRight,
2685        onLeft = vars.onLeft,
2686        onUp = vars.onUp,
2687        onDown = vars.onDown,
2688        onChangeX = vars.onChangeX,
2689        onChangeY = vars.onChangeY,
2690        onChange = vars.onChange,
2691        onToggleX = vars.onToggleX,
2692        onToggleY = vars.onToggleY,
2693        onHover = vars.onHover,
2694        onHoverEnd = vars.onHoverEnd,
2695        onMove = vars.onMove,
2696        ignoreCheck = vars.ignoreCheck,
2697        isNormalizer = vars.isNormalizer,
2698        onGestureStart = vars.onGestureStart,
2699        onGestureEnd = vars.onGestureEnd,
2700        onWheel = vars.onWheel,
2701        onEnable = vars.onEnable,
2702        onDisable = vars.onDisable,
2703        onClick = vars.onClick,
2704        scrollSpeed = vars.scrollSpeed,
2705        capture = vars.capture,
2706        allowClicks = vars.allowClicks,
2707        lockAxis = vars.lockAxis,
2708        onLockAxis = vars.onLockAxis;
2709    this.target = target = _getTarget(target) || _docEl;
2710    this.vars = vars;
2711    ignore && (ignore = gsap.utils.toArray(ignore));
2712    tolerance = tolerance || 1e-9;
2713    dragMinimum = dragMinimum || 0;
2714    wheelSpeed = wheelSpeed || 1;
2715    scrollSpeed = scrollSpeed || 1;
2716    type = type || "wheel,touch,pointer";
2717    debounce = debounce !== false;
2718    lineHeight || (lineHeight = parseFloat(_win.getComputedStyle(_body).lineHeight) || 22); // note: browser may report "normal", so default to 22.
2719
2720    var id,
2721        onStopDelayedCall,
2722        dragged,
2723        moved,
2724        wheeled,
2725        locked,
2726        axis,
2727        self = this,
2728        prevDeltaX = 0,
2729        prevDeltaY = 0,
2730        scrollFuncX = _getScrollFunc(target, _horizontal),
2731        scrollFuncY = _getScrollFunc(target, _vertical),
2732        scrollX = scrollFuncX(),
2733        scrollY = scrollFuncY(),
2734        limitToTouch = ~type.indexOf("touch") && !~type.indexOf("pointer") && _eventTypes[0] === "pointerdown",
2735        // for devices that accommodate mouse events and touch events, we need to distinguish.
2736    isViewport = _isViewport(target),
2737        ownerDoc = target.ownerDocument || _doc,
2738        deltaX = [0, 0, 0],
2739        // wheel, scroll, pointer/touch
2740    deltaY = [0, 0, 0],
2741        onClickTime = 0,
2742        clickCapture = function clickCapture() {
2743      return onClickTime = _getTime();
2744    },
2745        _ignoreCheck = function _ignoreCheck(e, isPointerOrTouch) {
2746      return (self.event = e) && ignore && ~ignore.indexOf(e.target) || isPointerOrTouch && limitToTouch && e.pointerType !== "touch" || ignoreCheck && ignoreCheck(e, isPointerOrTouch);
2747    },
2748        onStopFunc = function onStopFunc() {
2749      self._vx.reset();
2750
2751      self._vy.reset();
2752
2753      onStopDelayedCall.pause();
2754      onStop && onStop(self);
2755    },
2756        update = function update() {
2757      var dx = self.deltaX = _getAbsoluteMax(deltaX),
2758          dy = self.deltaY = _getAbsoluteMax(deltaY),
2759          changedX = Math.abs(dx) >= tolerance,
2760          changedY = Math.abs(dy) >= tolerance;
2761
2762      onChange && (changedX || changedY) && onChange(self, dx, dy, deltaX, deltaY); // in ScrollTrigger.normalizeScroll(), we need to know if it was touch/pointer so we need access to the deltaX/deltaY Arrays before we clear them out.
2763
2764      if (changedX) {
2765        onRight && self.deltaX > 0 && onRight(self);
2766        onLeft && self.deltaX < 0 && onLeft(self);
2767        onChangeX && onChangeX(self);
2768        onToggleX && self.deltaX < 0 !== prevDeltaX < 0 && onToggleX(self);
2769        prevDeltaX = self.deltaX;
2770        deltaX[0] = deltaX[1] = deltaX[2] = 0;
2771      }
2772
2773      if (changedY) {
2774        onDown && self.deltaY > 0 && onDown(self);
2775        onUp && self.deltaY < 0 && onUp(self);
2776        onChangeY && onChangeY(self);
2777        onToggleY && self.deltaY < 0 !== prevDeltaY < 0 && onToggleY(self);
2778        prevDeltaY = self.deltaY;
2779        deltaY[0] = deltaY[1] = deltaY[2] = 0;
2780      }
2781
2782      if (moved || dragged) {
2783        onMove && onMove(self);
2784
2785        if (dragged) {
2786          onDrag(self);
2787          dragged = false;
2788        }
2789
2790        moved = false;
2791      }
2792
2793      locked && !(locked = false) && onLockAxis && onLockAxis(self);
2794
2795      if (wheeled) {
2796        onWheel(self);
2797        wheeled = false;
2798      }
2799
2800      id = 0;
2801    },
2802        onDelta = function onDelta(x, y, index) {
2803      deltaX[index] += x;
2804      deltaY[index] += y;
2805
2806      self._vx.update(x);
2807
2808      self._vy.update(y);
2809
2810      debounce ? id || (id = requestAnimationFrame(update)) : update();
2811    },
2812        onTouchOrPointerDelta = function onTouchOrPointerDelta(x, y) {
2813      if (lockAxis && !axis) {
2814        self.axis = axis = Math.abs(x) > Math.abs(y) ? "x" : "y";
2815        locked = true;
2816      }
2817
2818      if (axis !== "y") {
2819        deltaX[2] += x;
2820
2821        self._vx.update(x, true); // update the velocity as frequently as possible instead of in the debounced function so that very quick touch-scrolls (flicks) feel natural. If it's the mouse/touch/pointer, force it so that we get snappy/accurate momentum scroll.
2822
2823      }
2824
2825      if (axis !== "x") {
2826        deltaY[2] += y;
2827
2828        self._vy.update(y, true);
2829      }
2830
2831      debounce ? id || (id = requestAnimationFrame(update)) : update();
2832    },
2833        _onDrag = function _onDrag(e) {
2834      if (_ignoreCheck(e, 1)) {
2835        return;
2836      }
2837
2838      e = _getEvent(e, preventDefault);
2839      var x = e.clientX,
2840          y = e.clientY,
2841          dx = x - self.x,
2842          dy = y - self.y,
2843          isDragging = self.isDragging;
2844      self.x = x;
2845      self.y = y;
2846
2847      if (isDragging || Math.abs(self.startX - x) >= dragMinimum || Math.abs(self.startY - y) >= dragMinimum) {
2848        onDrag && (dragged = true);
2849        isDragging || (self.isDragging = true);
2850        onTouchOrPointerDelta(dx, dy);
2851        isDragging || onDragStart && onDragStart(self);
2852      }
2853    },
2854        _onPress = self.onPress = function (e) {
2855      if (_ignoreCheck(e, 1) || e && e.button) {
2856        return;
2857      }
2858
2859      self.axis = axis = null;
2860      onStopDelayedCall.pause();
2861      self.isPressed = true;
2862      e = _getEvent(e); // note: may need to preventDefault(?) Won't side-scroll on iOS Safari if we do, though.
2863
2864      prevDeltaX = prevDeltaY = 0;
2865      self.startX = self.x = e.clientX;
2866      self.startY = self.y = e.clientY;
2867
2868      self._vx.reset(); // otherwise the t2 may be stale if the user touches and flicks super fast and releases in less than 2 requestAnimationFrame ticks, causing velocity to be 0.
2869
2870
2871      self._vy.reset();
2872
2873      _addListener(isNormalizer ? target : ownerDoc, _eventTypes[1], _onDrag, preventDefault, true);
2874
2875      self.deltaX = self.deltaY = 0;
2876      onPress && onPress(self);
2877    },
2878        _onRelease = self.onRelease = function (e) {
2879      if (_ignoreCheck(e, 1)) {
2880        return;
2881      }
2882
2883      _removeListener(isNormalizer ? target : ownerDoc, _eventTypes[1], _onDrag, true);
2884
2885      var isTrackingDrag = !isNaN(self.y - self.startY),
2886          wasDragging = self.isDragging && (Math.abs(self.x - self.startX) > 3 || Math.abs(self.y - self.startY) > 3),
2887          // some touch devices need some wiggle room in terms of sensing clicks - the finger may move a few pixels.
2888      eventData = _getEvent(e);
2889
2890      if (!wasDragging && isTrackingDrag) {
2891        self._vx.reset();
2892
2893        self._vy.reset();
2894
2895        if (preventDefault && allowClicks) {
2896          gsap.delayedCall(0.08, function () {
2897            // some browsers (like Firefox) won't trust script-generated clicks, so if the user tries to click on a video to play it, for example, it simply won't work. Since a regular "click" event will most likely be generated anyway (one that has its isTrusted flag set to true), we must slightly delay our script-generated click so that the "real"/trusted one is prioritized. Remember, when there are duplicate events in quick succession, we suppress all but the first one. Some browsers don't even trigger the "real" one at all, so our synthetic one is a safety valve that ensures that no matter what, a click event does get dispatched.
2898            if (_getTime() - onClickTime > 300 && !e.defaultPrevented) {
2899              if (e.target.click) {
2900                //some browsers (like mobile Safari) don't properly trigger the click event
2901                e.target.click();
2902              } else if (ownerDoc.createEvent) {
2903                var syntheticEvent = ownerDoc.createEvent("MouseEvents");
2904                syntheticEvent.initMouseEvent("click", true, true, _win, 1, eventData.screenX, eventData.screenY, eventData.clientX, eventData.clientY, false, false, false, false, 0, null);
2905                e.target.dispatchEvent(syntheticEvent);
2906              }
2907            }
2908          });
2909        }
2910      }
2911
2912      self.isDragging = self.isGesturing = self.isPressed = false;
2913      onStop && !isNormalizer && onStopDelayedCall.restart(true);
2914      onDragEnd && wasDragging && onDragEnd(self);
2915      onRelease && onRelease(self, wasDragging);
2916    },
2917        _onGestureStart = function _onGestureStart(e) {
2918      return e.touches && e.touches.length > 1 && (self.isGesturing = true) && onGestureStart(e, self.isDragging);
2919    },
2920        _onGestureEnd = function _onGestureEnd() {
2921      return (self.isGesturing = false) || onGestureEnd(self);
2922    },
2923        onScroll = function onScroll(e) {
2924      if (_ignoreCheck(e)) {
2925        return;
2926      }
2927
2928      var x = scrollFuncX(),
2929          y = scrollFuncY();
2930      onDelta((x - scrollX) * scrollSpeed, (y - scrollY) * scrollSpeed, 1);
2931      scrollX = x;
2932      scrollY = y;
2933      onStop && onStopDelayedCall.restart(true);
2934    },
2935        _onWheel = function _onWheel(e) {
2936      if (_ignoreCheck(e)) {
2937        return;
2938      }
2939
2940      e = _getEvent(e, preventDefault);
2941      onWheel && (wheeled = true);
2942      var multiplier = (e.deltaMode === 1 ? lineHeight : e.deltaMode === 2 ? _win.innerHeight : 1) * wheelSpeed;
2943      onDelta(e.deltaX * multiplier, e.deltaY * multiplier, 0);
2944      onStop && !isNormalizer && onStopDelayedCall.restart(true);
2945    },
2946        _onMove = function _onMove(e) {
2947      if (_ignoreCheck(e)) {
2948        return;
2949      }
2950
2951      var x = e.clientX,
2952          y = e.clientY,
2953          dx = x - self.x,
2954          dy = y - self.y;
2955      self.x = x;
2956      self.y = y;
2957      moved = true;
2958      (dx || dy) && onTouchOrPointerDelta(dx, dy);
2959    },
2960        _onHover = function _onHover(e) {
2961      self.event = e;
2962      onHover(self);
2963    },
2964        _onHoverEnd = function _onHoverEnd(e) {
2965      self.event = e;
2966      onHoverEnd(self);
2967    },
2968        _onClick = function _onClick(e) {
2969      return _ignoreCheck(e) || _getEvent(e, preventDefault) && onClick(self);
2970    };
2971
2972    onStopDelayedCall = self._dc = gsap.delayedCall(onStopDelay || 0.25, onStopFunc).pause();
2973    self.deltaX = self.deltaY = 0;
2974    self._vx = _getVelocityProp(0, 50, true);
2975    self._vy = _getVelocityProp(0, 50, true);
2976    self.scrollX = scrollFuncX;
2977    self.scrollY = scrollFuncY;
2978    self.isDragging = self.isGesturing = self.isPressed = false;
2979
2980    _context(this);
2981
2982    self.enable = function (e) {
2983      if (!self.isEnabled) {
2984        _addListener(isViewport ? ownerDoc : target, "scroll", _onScroll);
2985
2986        type.indexOf("scroll") >= 0 && _addListener(isViewport ? ownerDoc : target, "scroll", onScroll, preventDefault, capture);
2987        type.indexOf("wheel") >= 0 && _addListener(target, "wheel", _onWheel, preventDefault, capture);
2988
2989        if (type.indexOf("touch") >= 0 && _isTouch || type.indexOf("pointer") >= 0) {
2990          _addListener(target, _eventTypes[0], _onPress, preventDefault, capture);
2991
2992          _addListener(ownerDoc, _eventTypes[2], _onRelease);
2993
2994          _addListener(ownerDoc, _eventTypes[3], _onRelease);
2995
2996          allowClicks && _addListener(target, "click", clickCapture, false, true);
2997          onClick && _addListener(target, "click", _onClick);
2998          onGestureStart && _addListener(ownerDoc, "gesturestart", _onGestureStart);
2999          onGestureEnd && _addListener(ownerDoc, "gestureend", _onGestureEnd);
3000          onHover && _addListener(target, _pointerType + "enter", _onHover);
3001          onHoverEnd && _addListener(target, _pointerType + "leave", _onHoverEnd);
3002          onMove && _addListener(target, _pointerType + "move", _onMove);
3003        }
3004
3005        self.isEnabled = true;
3006        e && e.type && _onPress(e);
3007        onEnable && onEnable(self);
3008      }
3009
3010      return self;
3011    };
3012
3013    self.disable = function () {
3014      if (self.isEnabled) {
3015        // only remove the _onScroll listener if there aren't any others that rely on the functionality.
3016        _observers.filter(function (o) {
3017          return o !== self && _isViewport(o.target);
3018        }).length || _removeListener(isViewport ? ownerDoc : target, "scroll", _onScroll);
3019
3020        if (self.isPressed) {
3021          self._vx.reset();
3022
3023          self._vy.reset();
3024
3025          _removeListener(isNormalizer ? target : ownerDoc, _eventTypes[1], _onDrag, true);
3026        }
3027
3028        _removeListener(isViewport ? ownerDoc : target, "scroll", onScroll, capture);
3029
3030        _removeListener(target, "wheel", _onWheel, capture);
3031
3032        _removeListener(target, _eventTypes[0], _onPress, capture);
3033
3034        _removeListener(ownerDoc, _eventTypes[2], _onRelease);
3035
3036        _removeListener(ownerDoc, _eventTypes[3], _onRelease);
3037
3038        _removeListener(target, "click", clickCapture, true);
3039
3040        _removeListener(target, "click", _onClick);
3041
3042        _removeListener(ownerDoc, "gesturestart", _onGestureStart);
3043
3044        _removeListener(ownerDoc, "gestureend", _onGestureEnd);
3045
3046        _removeListener(target, _pointerType + "enter", _onHover);
3047
3048        _removeListener(target, _pointerType + "leave", _onHoverEnd);
3049
3050        _removeListener(target, _pointerType + "move", _onMove);
3051
3052        self.isEnabled = self.isPressed = self.isDragging = false;
3053        onDisable && onDisable(self);
3054      }
3055    };
3056
3057    self.kill = self.revert = function () {
3058      self.disable();
3059
3060      var i = _observers.indexOf(self);
3061
3062      i >= 0 && _observers.splice(i, 1);
3063      _normalizer === self && (_normalizer = 0);
3064    };
3065
3066    _observers.push(self);
3067
3068    isNormalizer && _isViewport(target) && (_normalizer = self);
3069    self.enable(event);
3070  };
3071
3072  _createClass(Observer, [{
3073    key: "velocityX",
3074    get: function get() {
3075      return this._vx.getVelocity();
3076    }
3077  }, {
3078    key: "velocityY",
3079    get: function get() {
3080      return this._vy.getVelocity();
3081    }
3082  }]);
3083
3084  return Observer;
3085}();
3086Observer.version = "3.12.2";
3087
3088Observer.create = function (vars) {
3089  return new Observer(vars);
3090};
3091
3092Observer.register = _initCore;
3093
3094Observer.getAll = function () {
3095  return _observers.slice();
3096};
3097
3098Observer.getById = function (id) {
3099  return _observers.filter(function (o) {
3100    return o.vars.id === id;
3101  })[0];
3102};
3103
3104_getGSAP() && gsap.registerPlugin(Observer);
3105
3106
3107/***/ }),
3108
vendor: 112,188 bytes, lines 3109-5729
3109/***/ "./node_modules/gsap/ScrollTrigger.js":
3110/*!********************************************!*\
3111  !*** ./node_modules/gsap/ScrollTrigger.js ***!
3112  \********************************************/
3113/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3114
3115__webpack_require__.r(__webpack_exports__);
3116/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3117/* harmony export */   ScrollTrigger: function() { return /* binding */ ScrollTrigger; },
3118/* harmony export */   "default": function() { return /* binding */ ScrollTrigger; }
3119/* harmony export */ });
3120/* harmony import */ var _Observer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Observer.js */ "./node_modules/gsap/Observer.js");
3121/*!
3122 * ScrollTrigger 3.12.2
3123 * https://greensock.com
3124 *
3125 * @license Copyright 2008-2023, GreenSock. All rights reserved.
3126 * Subject to the terms at https://greensock.com/standard-license or for
3127 * Club GreenSock members, the agreement issued with that membership.
3128 * @author: Jack Doyle, [email protected]
3129*/
3130
3131/* eslint-disable */
3132
3133
3134var gsap,
3135    _coreInitted,
3136    _win,
3137    _doc,
3138    _docEl,
3139    _body,
3140    _root,
3141    _resizeDelay,
3142    _toArray,
3143    _clamp,
3144    _time2,
3145    _syncInterval,
3146    _refreshing,
3147    _pointerIsDown,
3148    _transformProp,
3149    _i,
3150    _prevWidth,
3151    _prevHeight,
3152    _autoRefresh,
3153    _sort,
3154    _suppressOverwrites,
3155    _ignoreResize,
3156    _normalizer,
3157    _ignoreMobileResize,
3158    _baseScreenHeight,
3159    _baseScreenWidth,
3160    _fixIOSBug,
3161    _context,
3162    _scrollRestoration,
3163    _div100vh,
3164    _100vh,
3165    _limitCallbacks,
3166    // if true, we'll only trigger callbacks if the active state toggles, so if you scroll immediately past both the start and end positions of a ScrollTrigger (thus inactive to inactive), neither its onEnter nor onLeave will be called. This is useful during startup.
3167_startup = 1,
3168    _getTime = Date.now,
3169    _time1 = _getTime(),
3170    _lastScrollTime = 0,
3171    _enabled = 0,
3172    _parseClamp = function _parseClamp(value, type, self) {
3173  var clamp = _isString(value) && (value.substr(0, 6) === "clamp(" || value.indexOf("max") > -1);
3174  self["_" + type + "Clamp"] = clamp;
3175  return clamp ? value.substr(6, value.length - 7) : value;
3176},
3177    _keepClamp = function _keepClamp(value, clamp) {
3178  return clamp && (!_isString(value) || value.substr(0, 6) !== "clamp(") ? "clamp(" + value + ")" : value;
3179},
3180    _rafBugFix = function _rafBugFix() {
3181  return _enabled && requestAnimationFrame(_rafBugFix);
3182},
3183    // in some browsers (like Firefox), screen repaints weren't consistent unless we had SOMETHING queued up in requestAnimationFrame()! So this just creates a super simple loop to keep it alive and smooth out repaints.
3184_pointerDownHandler = function _pointerDownHandler() {
3185  return _pointerIsDown = 1;
3186},
3187    _pointerUpHandler = function _pointerUpHandler() {
3188  return _pointerIsDown = 0;
3189},
3190    _passThrough = function _passThrough(v) {
3191  return v;
3192},
3193    _round = function _round(value) {
3194  return Math.round(value * 100000) / 100000 || 0;
3195},
3196    _windowExists = function _windowExists() {
3197  return typeof window !== "undefined";
3198},
3199    _getGSAP = function _getGSAP() {
3200  return gsap || _windowExists() && (gsap = window.gsap) && gsap.registerPlugin && gsap;
3201},
3202    _isViewport = function _isViewport(e) {
3203  return !!~_root.indexOf(e);
3204},
3205    _getViewportDimension = function _getViewportDimension(dimensionProperty) {
3206  return (dimensionProperty === "Height" ? _100vh : _win["inner" + dimensionProperty]) || _docEl["client" + dimensionProperty] || _body["client" + dimensionProperty];
3207},
3208    _getBoundsFunc = function _getBoundsFunc(element) {
3209  return (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getProxyProp)(element, "getBoundingClientRect") || (_isViewport(element) ? function () {
3210    _winOffsets.width = _win.innerWidth;
3211    _winOffsets.height = _100vh;
3212    return _winOffsets;
3213  } : function () {
3214    return _getBounds(element);
3215  });
3216},
3217    _getSizeFunc = function _getSizeFunc(scroller, isViewport, _ref) {
3218  var d = _ref.d,
3219      d2 = _ref.d2,
3220      a = _ref.a;
3221  return (a = (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getProxyProp)(scroller, "getBoundingClientRect")) ? function () {
3222    return a()[d];
3223  } : function () {
3224    return (isViewport ? _getViewportDimension(d2) : scroller["client" + d2]) || 0;
3225  };
3226},
3227    _getOffsetsFunc = function _getOffsetsFunc(element, isViewport) {
3228  return !isViewport || ~_Observer_js__WEBPACK_IMPORTED_MODULE_0__._proxies.indexOf(element) ? _getBoundsFunc(element) : function () {
3229    return _winOffsets;
3230  };
3231},
3232    _maxScroll = function _maxScroll(element, _ref2) {
3233  var s = _ref2.s,
3234      d2 = _ref2.d2,
3235      d = _ref2.d,
3236      a = _ref2.a;
3237  return Math.max(0, (s = "scroll" + d2) && (a = (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getProxyProp)(element, s)) ? a() - _getBoundsFunc(element)()[d] : _isViewport(element) ? (_docEl[s] || _body[s]) - _getViewportDimension(d2) : element[s] - element["offset" + d2]);
3238},
3239    _iterateAutoRefresh = function _iterateAutoRefresh(func, events) {
3240  for (var i = 0; i < _autoRefresh.length; i += 3) {
3241    (!events || ~events.indexOf(_autoRefresh[i + 1])) && func(_autoRefresh[i], _autoRefresh[i + 1], _autoRefresh[i + 2]);
3242  }
3243},
3244    _isString = function _isString(value) {
3245  return typeof value === "string";
3246},
3247    _isFunction = function _isFunction(value) {
3248  return typeof value === "function";
3249},
3250    _isNumber = function _isNumber(value) {
3251  return typeof value === "number";
3252},
3253    _isObject = function _isObject(value) {
3254  return typeof value === "object";
3255},
3256    _endAnimation = function _endAnimation(animation, reversed, pause) {
3257  return animation && animation.progress(reversed ? 0 : 1) && pause && animation.pause();
3258},
3259    _callback = function _callback(self, func) {
3260  if (self.enabled) {
3261    var result = func(self);
3262    result && result.totalTime && (self.callbackAnimation = result);
3263  }
3264},
3265    _abs = Math.abs,
3266    _left = "left",
3267    _top = "top",
3268    _right = "right",
3269    _bottom = "bottom",
3270    _width = "width",
3271    _height = "height",
3272    _Right = "Right",
3273    _Left = "Left",
3274    _Top = "Top",
3275    _Bottom = "Bottom",
3276    _padding = "padding",
3277    _margin = "margin",
3278    _Width = "Width",
3279    _Height = "Height",
3280    _px = "px",
3281    _getComputedStyle = function _getComputedStyle(element) {
3282  return _win.getComputedStyle(element);
3283},
3284    _makePositionable = function _makePositionable(element) {
3285  // if the element already has position: absolute or fixed, leave that, otherwise make it position: relative
3286  var position = _getComputedStyle(element).position;
3287
3288  element.style.position = position === "absolute" || position === "fixed" ? position : "relative";
3289},
3290    _setDefaults = function _setDefaults(obj, defaults) {
3291  for (var p in defaults) {
3292    p in obj || (obj[p] = defaults[p]);
3293  }
3294
3295  return obj;
3296},
3297    _getBounds = function _getBounds(element, withoutTransforms) {
3298  var tween = withoutTransforms && _getComputedStyle(element)[_transformProp] !== "matrix(1, 0, 0, 1, 0, 0)" && gsap.to(element, {
3299    x: 0,
3300    y: 0,
3301    xPercent: 0,
3302    yPercent: 0,
3303    rotation: 0,
3304    rotationX: 0,
3305    rotationY: 0,
3306    scale: 1,
3307    skewX: 0,
3308    skewY: 0
3309  }).progress(1),
3310      bounds = element.getBoundingClientRect();
3311  tween && tween.progress(0).kill();
3312  return bounds;
3313},
3314    _getSize = function _getSize(element, _ref3) {
3315  var d2 = _ref3.d2;
3316  return element["offset" + d2] || element["client" + d2] || 0;
3317},
3318    _getLabelRatioArray = function _getLabelRatioArray(timeline) {
3319  var a = [],
3320      labels = timeline.labels,
3321      duration = timeline.duration(),
3322      p;
3323
3324  for (p in labels) {
3325    a.push(labels[p] / duration);
3326  }
3327
3328  return a;
3329},
3330    _getClosestLabel = function _getClosestLabel(animation) {
3331  return function (value) {
3332    return gsap.utils.snap(_getLabelRatioArray(animation), value);
3333  };
3334},
3335    _snapDirectional = function _snapDirectional(snapIncrementOrArray) {
3336  var snap = gsap.utils.snap(snapIncrementOrArray),
3337      a = Array.isArray(snapIncrementOrArray) && snapIncrementOrArray.slice(0).sort(function (a, b) {
3338    return a - b;
3339  });
3340  return a ? function (value, direction, threshold) {
3341    if (threshold === void 0) {
3342      threshold = 1e-3;
3343    }
3344
3345    var i;
3346
3347    if (!direction) {
3348      return snap(value);
3349    }
3350
3351    if (direction > 0) {
3352      value -= threshold; // to avoid rounding errors. If we're too strict, it might snap forward, then immediately again, and again.
3353
3354      for (i = 0; i < a.length; i++) {
3355        if (a[i] >= value) {
3356          return a[i];
3357        }
3358      }
3359
3360      return a[i - 1];
3361    } else {
3362      i = a.length;
3363      value += threshold;
3364
3365      while (i--) {
3366        if (a[i] <= value) {
3367          return a[i];
3368        }
3369      }
3370    }
3371
3372    return a[0];
3373  } : function (value, direction, threshold) {
3374    if (threshold === void 0) {
3375      threshold = 1e-3;
3376    }
3377
3378    var snapped = snap(value);
3379    return !direction || Math.abs(snapped - value) < threshold || snapped - value < 0 === direction < 0 ? snapped : snap(direction < 0 ? value - snapIncrementOrArray : value + snapIncrementOrArray);
3380  };
3381},
3382    _getLabelAtDirection = function _getLabelAtDirection(timeline) {
3383  return function (value, st) {
3384    return _snapDirectional(_getLabelRatioArray(timeline))(value, st.direction);
3385  };
3386},
3387    _multiListener = function _multiListener(func, element, types, callback) {
3388  return types.split(",").forEach(function (type) {
3389    return func(element, type, callback);
3390  });
3391},
3392    _addListener = function _addListener(element, type, func, nonPassive, capture) {
3393  return element.addEventListener(type, func, {
3394    passive: !nonPassive,
3395    capture: !!capture
3396  });
3397},
3398    _removeListener = function _removeListener(element, type, func, capture) {
3399  return element.removeEventListener(type, func, !!capture);
3400},
3401    _wheelListener = function _wheelListener(func, el, scrollFunc) {
3402  scrollFunc = scrollFunc && scrollFunc.wheelHandler;
3403
3404  if (scrollFunc) {
3405    func(el, "wheel", scrollFunc);
3406    func(el, "touchmove", scrollFunc);
3407  }
3408},
3409    _markerDefaults = {
3410  startColor: "green",
3411  endColor: "red",
3412  indent: 0,
3413  fontSize: "16px",
3414  fontWeight: "normal"
3415},
3416    _defaults = {
3417  toggleActions: "play",
3418  anticipatePin: 0
3419},
3420    _keywords = {
3421  top: 0,
3422  left: 0,
3423  center: 0.5,
3424  bottom: 1,
3425  right: 1
3426},
3427    _offsetToPx = function _offsetToPx(value, size) {
3428  if (_isString(value)) {
3429    var eqIndex = value.indexOf("="),
3430        relative = ~eqIndex ? +(value.charAt(eqIndex - 1) + 1) * parseFloat(value.substr(eqIndex + 1)) : 0;
3431
3432    if (~eqIndex) {
3433      value.indexOf("%") > eqIndex && (relative *= size / 100);
3434      value = value.substr(0, eqIndex - 1);
3435    }
3436
3437    value = relative + (value in _keywords ? _keywords[value] * size : ~value.indexOf("%") ? parseFloat(value) * size / 100 : parseFloat(value) || 0);
3438  }
3439
3440  return value;
3441},
3442    _createMarker = function _createMarker(type, name, container, direction, _ref4, offset, matchWidthEl, containerAnimation) {
3443  var startColor = _ref4.startColor,
3444      endColor = _ref4.endColor,
3445      fontSize = _ref4.fontSize,
3446      indent = _ref4.indent,
3447      fontWeight = _ref4.fontWeight;
3448
3449  var e = _doc.createElement("div"),
3450      useFixedPosition = _isViewport(container) || (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getProxyProp)(container, "pinType") === "fixed",
3451      isScroller = type.indexOf("scroller") !== -1,
3452      parent = useFixedPosition ? _body : container,
3453      isStart = type.indexOf("start") !== -1,
3454      color = isStart ? startColor : endColor,
3455      css = "border-color:" + color + ";font-size:" + fontSize + ";color:" + color + ";font-weight:" + fontWeight + ";pointer-events:none;white-space:nowrap;font-family:sans-serif,Arial;z-index:1000;padding:4px 8px;border-width:0;border-style:solid;";
3456
3457  css += "position:" + ((isScroller || containerAnimation) && useFixedPosition ? "fixed;" : "absolute;");
3458  (isScroller || containerAnimation || !useFixedPosition) && (css += (direction === _Observer_js__WEBPACK_IMPORTED_MODULE_0__._vertical ? _right : _bottom) + ":" + (offset + parseFloat(indent)) + "px;");
3459  matchWidthEl && (css += "box-sizing:border-box;text-align:left;width:" + matchWidthEl.offsetWidth + "px;");
3460  e._isStart = isStart;
3461  e.setAttribute("class", "gsap-marker-" + type + (name ? " marker-" + name : ""));
3462  e.style.cssText = css;
3463  e.innerText = name || name === 0 ? type + "-" + name : type;
3464  parent.children[0] ? parent.insertBefore(e, parent.children[0]) : parent.appendChild(e);
3465  e._offset = e["offset" + direction.op.d2];
3466
3467  _positionMarker(e, 0, direction, isStart);
3468
3469  return e;
3470},
3471    _positionMarker = function _positionMarker(marker, start, direction, flipped) {
3472  var vars = {
3473    display: "block"
3474  },
3475      side = direction[flipped ? "os2" : "p2"],
3476      oppositeSide = direction[flipped ? "p2" : "os2"];
3477  marker._isFlipped = flipped;
3478  vars[direction.a + "Percent"] = flipped ? -100 : 0;
3479  vars[direction.a] = flipped ? "1px" : 0;
3480  vars["border" + side + _Width] = 1;
3481  vars["border" + oppositeSide + _Width] = 0;
3482  vars[direction.p] = start + "px";
3483  gsap.set(marker, vars);
3484},
3485    _triggers = [],
3486    _ids = {},
3487    _rafID,
3488    _sync = function _sync() {
3489  return _getTime() - _lastScrollTime > 34 && (_rafID || (_rafID = requestAnimationFrame(_updateAll)));
3490},
3491    _onScroll = function _onScroll() {
3492  // previously, we tried to optimize performance by batching/deferring to the next requestAnimationFrame(), but discovered that Safari has a few bugs that make this unworkable (especially on iOS). See https://codepen.io/GreenSock/pen/16c435b12ef09c38125204818e7b45fc?editors=0010 and https://codepen.io/GreenSock/pen/JjOxYpQ/3dd65ccec5a60f1d862c355d84d14562?editors=0010 and https://codepen.io/GreenSock/pen/ExbrPNa/087cef197dc35445a0951e8935c41503?editors=0010
3493  if (!_normalizer || !_normalizer.isPressed || _normalizer.startX > _body.clientWidth) {
3494    // if the user is dragging the scrollbar, allow it.
3495    _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers.cache++;
3496
3497    if (_normalizer) {
3498      _rafID || (_rafID = requestAnimationFrame(_updateAll));
3499    } else {
3500      _updateAll(); // Safari in particular (on desktop) NEEDS the immediate update rather than waiting for a requestAnimationFrame() whereas iOS seems to benefit from waiting for the requestAnimationFrame() tick, at least when normalizing. See https://codepen.io/GreenSock/pen/qBYozqO?editors=0110
3501
3502    }
3503
3504    _lastScrollTime || _dispatch("scrollStart");
3505    _lastScrollTime = _getTime();
3506  }
3507},
3508    _setBaseDimensions = function _setBaseDimensions() {
3509  _baseScreenWidth = _win.innerWidth;
3510  _baseScreenHeight = _win.innerHeight;
3511},
3512    _onResize = function _onResize() {
3513  _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers.cache++;
3514  !_refreshing && !_ignoreResize && !_doc.fullscreenElement && !_doc.webkitFullscreenElement && (!_ignoreMobileResize || _baseScreenWidth !== _win.innerWidth || Math.abs(_win.innerHeight - _baseScreenHeight) > _win.innerHeight * 0.25) && _resizeDelay.restart(true);
3515},
3516    // ignore resizes triggered by refresh()
3517_listeners = {},
3518    _emptyArray = [],
3519    _softRefresh = function _softRefresh() {
3520  return _removeListener(ScrollTrigger, "scrollEnd", _softRefresh) || _refreshAll(true);
3521},
3522    _dispatch = function _dispatch(type) {
3523  return _listeners[type] && _listeners[type].map(function (f) {
3524    return f();
3525  }) || _emptyArray;
3526},
3527    _savedStyles = [],
3528    // when ScrollTrigger.saveStyles() is called, the inline styles are recorded in this Array in a sequential format like [element, cssText, gsCache, media]. This keeps it very memory-efficient and fast to iterate through.
3529_revertRecorded = function _revertRecorded(media) {
3530  for (var i = 0; i < _savedStyles.length; i += 5) {
3531    if (!media || _savedStyles[i + 4] && _savedStyles[i + 4].query === media) {
3532      _savedStyles[i].style.cssText = _savedStyles[i + 1];
3533      _savedStyles[i].getBBox && _savedStyles[i].setAttribute("transform", _savedStyles[i + 2] || "");
3534      _savedStyles[i + 3].uncache = 1;
3535    }
3536  }
3537},
3538    _revertAll = function _revertAll(kill, media) {
3539  var trigger;
3540
3541  for (_i = 0; _i < _triggers.length; _i++) {
3542    trigger = _triggers[_i];
3543
3544    if (trigger && (!media || trigger._ctx === media)) {
3545      if (kill) {
3546        trigger.kill(1);
3547      } else {
3548        trigger.revert(true, true);
3549      }
3550    }
3551  }
3552
3553  media && _revertRecorded(media);
3554  media || _dispatch("revert");
3555},
3556    _clearScrollMemory = function _clearScrollMemory(scrollRestoration, force) {
3557  // zero-out all the recorded scroll positions. Don't use _triggers because if, for example, .matchMedia() is used to create some ScrollTriggers and then the user resizes and it removes ALL ScrollTriggers, and then go back to a size where there are ScrollTriggers, it would have kept the position(s) saved from the initial state.
3558  _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers.cache++;
3559  (force || !_refreshingAll) && _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers.forEach(function (obj) {
3560    return _isFunction(obj) && obj.cacheID++ && (obj.rec = 0);
3561  });
3562  _isString(scrollRestoration) && (_win.history.scrollRestoration = _scrollRestoration = scrollRestoration);
3563},
3564    _refreshingAll,
3565    _refreshID = 0,
3566    _queueRefreshID,
3567    _queueRefreshAll = function _queueRefreshAll() {
3568  // we don't want to call _refreshAll() every time we create a new ScrollTrigger (for performance reasons) - it's better to batch them. Some frameworks dynamically load content and we can't rely on the window's "load" or "DOMContentLoaded" events to trigger it.
3569  if (_queueRefreshID !== _refreshID) {
3570    var id = _queueRefreshID = _refreshID;
3571    requestAnimationFrame(function () {
3572      return id === _refreshID && _refreshAll(true);
3573    });
3574  }
3575},
3576    _refresh100vh = function _refresh100vh() {
3577  _body.appendChild(_div100vh);
3578
3579  _100vh = _div100vh.offsetHeight || _win.innerHeight;
3580
3581  _body.removeChild(_div100vh);
3582},
3583    _refreshAll = function _refreshAll(force, skipRevert) {
3584  if (_lastScrollTime && !force) {
3585    _addListener(ScrollTrigger, "scrollEnd", _softRefresh);
3586
3587    return;
3588  }
3589
3590  _refresh100vh();
3591
3592  _refreshingAll = ScrollTrigger.isRefreshing = true;
3593
3594  _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers.forEach(function (obj) {
3595    return _isFunction(obj) && ++obj.cacheID && (obj.rec = obj());
3596  }); // force the clearing of the cache because some browsers take a little while to dispatch the "scroll" event and the user may have changed the scroll position and then called ScrollTrigger.refresh() right away
3597
3598
3599  var refreshInits = _dispatch("refreshInit");
3600
3601  _sort && ScrollTrigger.sort();
3602  skipRevert || _revertAll();
3603
3604  _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers.forEach(function (obj) {
3605    if (_isFunction(obj)) {
3606      obj.smooth && (obj.target.style.scrollBehavior = "auto"); // smooth scrolling interferes
3607
3608      obj(0);
3609    }
3610  });
3611
3612  _triggers.slice(0).forEach(function (t) {
3613    return t.refresh();
3614  }); // don't loop with _i because during a refresh() someone could call ScrollTrigger.update() which would iterate through _i resulting in a skip.
3615
3616
3617  _triggers.forEach(function (t, i) {
3618    // nested pins (pinnedContainer) with pinSpacing may expand the container, so we must accommodate that here.
3619    if (t._subPinOffset && t.pin) {
3620      var prop = t.vars.horizontal ? "offsetWidth" : "offsetHeight",
3621          original = t.pin[prop];
3622      t.revert(true, 1);
3623      t.adjustPinSpacing(t.pin[prop] - original);
3624      t.refresh();
3625    }
3626  });
3627
3628  _triggers.forEach(function (t) {
3629    // the scroller's max scroll position may change after all the ScrollTriggers refreshed (like pinning could push it down), so we need to loop back and correct any with end: "max". Same for anything with a clamped end
3630    var max = _maxScroll(t.scroller, t._dir);
3631
3632    (t.vars.end === "max" || t._endClamp && t.end > max) && t.setPositions(t.start, Math.max(t.start + 1, max), true);
3633  });
3634
3635  refreshInits.forEach(function (result) {
3636    return result && result.render && result.render(-1);
3637  }); // if the onRefreshInit() returns an animation (typically a gsap.set()), revert it. This makes it easy to put things in a certain spot before refreshing for measurement purposes, and then put things back.
3638
3639  _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers.forEach(function (obj) {
3640    if (_isFunction(obj)) {
3641      obj.smooth && requestAnimationFrame(function () {
3642        return obj.target.style.scrollBehavior = "smooth";
3643      });
3644      obj.rec && obj(obj.rec);
3645    }
3646  });
3647
3648  _clearScrollMemory(_scrollRestoration, 1);
3649
3650  _resizeDelay.pause();
3651
3652  _refreshID++;
3653  _refreshingAll = 2;
3654
3655  _updateAll(2);
3656
3657  _triggers.forEach(function (t) {
3658    return _isFunction(t.vars.onRefresh) && t.vars.onRefresh(t);
3659  });
3660
3661  _refreshingAll = ScrollTrigger.isRefreshing = false;
3662
3663  _dispatch("refresh");
3664},
3665    _lastScroll = 0,
3666    _direction = 1,
3667    _primary,
3668    _updateAll = function _updateAll(force) {
3669  if (!_refreshingAll || force === 2) {
3670    ScrollTrigger.isUpdating = true;
3671    _primary && _primary.update(0); // ScrollSmoother uses refreshPriority -9999 to become the primary that gets updated before all others because it affects the scroll position.
3672
3673    var l = _triggers.length,
3674        time = _getTime(),
3675        recordVelocity = time - _time1 >= 50,
3676        scroll = l && _triggers[0].scroll();
3677
3678    _direction = _lastScroll > scroll ? -1 : 1;
3679    _refreshingAll || (_lastScroll = scroll);
3680
3681    if (recordVelocity) {
3682      if (_lastScrollTime && !_pointerIsDown && time - _lastScrollTime > 200) {
3683        _lastScrollTime = 0;
3684
3685        _dispatch("scrollEnd");
3686      }
3687
3688      _time2 = _time1;
3689      _time1 = time;
3690    }
3691
3692    if (_direction < 0) {
3693      _i = l;
3694
3695      while (_i-- > 0) {
3696        _triggers[_i] && _triggers[_i].update(0, recordVelocity);
3697      }
3698
3699      _direction = 1;
3700    } else {
3701      for (_i = 0; _i < l; _i++) {
3702        _triggers[_i] && _triggers[_i].update(0, recordVelocity);
3703      }
3704    }
3705
3706    ScrollTrigger.isUpdating = false;
3707  }
3708
3709  _rafID = 0;
3710},
3711    _propNamesToCopy = [_left, _top, _bottom, _right, _margin + _Bottom, _margin + _Right, _margin + _Top, _margin + _Left, "display", "flexShrink", "float", "zIndex", "gridColumnStart", "gridColumnEnd", "gridRowStart", "gridRowEnd", "gridArea", "justifySelf", "alignSelf", "placeSelf", "order"],
3712    _stateProps = _propNamesToCopy.concat([_width, _height, "boxSizing", "max" + _Width, "max" + _Height, "position", _margin, _padding, _padding + _Top, _padding + _Right, _padding + _Bottom, _padding + _Left]),
3713    _swapPinOut = function _swapPinOut(pin, spacer, state) {
3714  _setState(state);
3715
3716  var cache = pin._gsap;
3717
3718  if (cache.spacerIsNative) {
3719    _setState(cache.spacerState);
3720  } else if (pin._gsap.swappedIn) {
3721    var parent = spacer.parentNode;
3722
3723    if (parent) {
3724      parent.insertBefore(pin, spacer);
3725      parent.removeChild(spacer);
3726    }
3727  }
3728
3729  pin._gsap.swappedIn = false;
3730},
3731    _swapPinIn = function _swapPinIn(pin, spacer, cs, spacerState) {
3732  if (!pin._gsap.swappedIn) {
3733    var i = _propNamesToCopy.length,
3734        spacerStyle = spacer.style,
3735        pinStyle = pin.style,
3736        p;
3737
3738    while (i--) {
3739      p = _propNamesToCopy[i];
3740      spacerStyle[p] = cs[p];
3741    }
3742
3743    spacerStyle.position = cs.position === "absolute" ? "absolute" : "relative";
3744    cs.display === "inline" && (spacerStyle.display = "inline-block");
3745    pinStyle[_bottom] = pinStyle[_right] = "auto";
3746    spacerStyle.flexBasis = cs.flexBasis || "auto";
3747    spacerStyle.overflow = "visible";
3748    spacerStyle.boxSizing = "border-box";
3749    spacerStyle[_width] = _getSize(pin, _Observer_js__WEBPACK_IMPORTED_MODULE_0__._horizontal) + _px;
3750    spacerStyle[_height] = _getSize(pin, _Observer_js__WEBPACK_IMPORTED_MODULE_0__._vertical) + _px;
3751    spacerStyle[_padding] = pinStyle[_margin] = pinStyle[_top] = pinStyle[_left] = "0";
3752
3753    _setState(spacerState);
3754
3755    pinStyle[_width] = pinStyle["max" + _Width] = cs[_width];
3756    pinStyle[_height] = pinStyle["max" + _Height] = cs[_height];
3757    pinStyle[_padding] = cs[_padding];
3758
3759    if (pin.parentNode !== spacer) {
3760      pin.parentNode.insertBefore(spacer, pin);
3761      spacer.appendChild(pin);
3762    }
3763
3764    pin._gsap.swappedIn = true;
3765  }
3766},
3767    _capsExp = /([A-Z])/g,
3768    _setState = function _setState(state) {
3769  if (state) {
3770    var style = state.t.style,
3771        l = state.length,
3772        i = 0,
3773        p,
3774        value;
3775    (state.t._gsap || gsap.core.getCache(state.t)).uncache = 1; // otherwise transforms may be off
3776
3777    for (; i < l; i += 2) {
3778      value = state[i + 1];
3779      p = state[i];
3780
3781      if (value) {
3782        style[p] = value;
3783      } else if (style[p]) {
3784        style.removeProperty(p.replace(_capsExp, "-$1").toLowerCase());
3785      }
3786    }
3787  }
3788},
3789    _getState = function _getState(element) {
3790  // returns an Array with alternating values like [property, value, property, value] and a "t" property pointing to the target (element). Makes it fast and cheap.
3791  var l = _stateProps.length,
3792      style = element.style,
3793      state = [],
3794      i = 0;
3795
3796  for (; i < l; i++) {
3797    state.push(_stateProps[i], style[_stateProps[i]]);
3798  }
3799
3800  state.t = element;
3801  return state;
3802},
3803    _copyState = function _copyState(state, override, omitOffsets) {
3804  var result = [],
3805      l = state.length,
3806      i = omitOffsets ? 8 : 0,
3807      // skip top, left, right, bottom if omitOffsets is true
3808  p;
3809
3810  for (; i < l; i += 2) {
3811    p = state[i];
3812    result.push(p, p in override ? override[p] : state[i + 1]);
3813  }
3814
3815  result.t = state.t;
3816  return result;
3817},
3818    _winOffsets = {
3819  left: 0,
3820  top: 0
3821},
3822    // // potential future feature (?) Allow users to calculate where a trigger hits (scroll position) like getScrollPosition("#id", "top bottom")
3823// _getScrollPosition = (trigger, position, {scroller, containerAnimation, horizontal}) => {
3824// 	scroller = _getTarget(scroller || _win);
3825// 	let direction = horizontal ? _horizontal : _vertical,
3826// 		isViewport = _isViewport(scroller);
3827// 	_getSizeFunc(scroller, isViewport, direction);
3828// 	return _parsePosition(position, _getTarget(trigger), _getSizeFunc(scroller, isViewport, direction)(), direction, _getScrollFunc(scroller, direction)(), 0, 0, 0, _getOffsetsFunc(scroller, isViewport)(), isViewport ? 0 : parseFloat(_getComputedStyle(scroller)["border" + direction.p2 + _Width]) || 0, 0, containerAnimation ? containerAnimation.duration() : _maxScroll(scroller), containerAnimation);
3829// },
3830_parsePosition = function _parsePosition(value, trigger, scrollerSize, direction, scroll, marker, markerScroller, self, scrollerBounds, borderWidth, useFixedPosition, scrollerMax, containerAnimation, clampZeroProp) {
3831  _isFunction(value) && (value = value(self));
3832
3833  if (_isString(value) && value.substr(0, 3) === "max") {
3834    value = scrollerMax + (value.charAt(4) === "=" ? _offsetToPx("0" + value.substr(3), scrollerSize) : 0);
3835  }
3836
3837  var time = containerAnimation ? containerAnimation.time() : 0,
3838      p1,
3839      p2,
3840      element;
3841  containerAnimation && containerAnimation.seek(0);
3842  isNaN(value) || (value = +value); // convert a string number like "45" to an actual number
3843
3844  if (!_isNumber(value)) {
3845    _isFunction(trigger) && (trigger = trigger(self));
3846    var offsets = (value || "0").split(" "),
3847        bounds,
3848        localOffset,
3849        globalOffset,
3850        display;
3851    element = (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getTarget)(trigger, self) || _body;
3852    bounds = _getBounds(element) || {};
3853
3854    if ((!bounds || !bounds.left && !bounds.top) && _getComputedStyle(element).display === "none") {
3855      // if display is "none", it won't report getBoundingClientRect() properly
3856      display = element.style.display;
3857      element.style.display = "block";
3858      bounds = _getBounds(element);
3859      display ? element.style.display = display : element.style.removeProperty("display");
3860    }
3861
3862    localOffset = _offsetToPx(offsets[0], bounds[direction.d]);
3863    globalOffset = _offsetToPx(offsets[1] || "0", scrollerSize);
3864    value = bounds[direction.p] - scrollerBounds[direction.p] - borderWidth + localOffset + scroll - globalOffset;
3865    markerScroller && _positionMarker(markerScroller, globalOffset, direction, scrollerSize - globalOffset < 20 || markerScroller._isStart && globalOffset > 20);
3866    scrollerSize -= scrollerSize - globalOffset; // adjust for the marker
3867  } else {
3868    containerAnimation && (value = gsap.utils.mapRange(containerAnimation.scrollTrigger.start, containerAnimation.scrollTrigger.end, 0, scrollerMax, value));
3869    markerScroller && _positionMarker(markerScroller, scrollerSize, direction, true);
3870  }
3871
3872  if (clampZeroProp) {
3873    self[clampZeroProp] = value || -0.001;
3874    value < 0 && (value = 0);
3875  }
3876
3877  if (marker) {
3878    var position = value + scrollerSize,
3879        isStart = marker._isStart;
3880    p1 = "scroll" + direction.d2;
3881
3882    _positionMarker(marker, position, direction, isStart && position > 20 || !isStart && (useFixedPosition ? Math.max(_body[p1], _docEl[p1]) : marker.parentNode[p1]) <= position + 1);
3883
3884    if (useFixedPosition) {
3885      scrollerBounds = _getBounds(markerScroller);
3886      useFixedPosition && (marker.style[direction.op.p] = scrollerBounds[direction.op.p] - direction.op.m - marker._offset + _px);
3887    }
3888  }
3889
3890  if (containerAnimation && element) {
3891    p1 = _getBounds(element);
3892    containerAnimation.seek(scrollerMax);
3893    p2 = _getBounds(element);
3894    containerAnimation._caScrollDist = p1[direction.p] - p2[direction.p];
3895    value = value / containerAnimation._caScrollDist * scrollerMax;
3896  }
3897
3898  containerAnimation && containerAnimation.seek(time);
3899  return containerAnimation ? value : Math.round(value);
3900},
3901    _prefixExp = /(webkit|moz|length|cssText|inset)/i,
3902    _reparent = function _reparent(element, parent, top, left) {
3903  if (element.parentNode !== parent) {
3904    var style = element.style,
3905        p,
3906        cs;
3907
3908    if (parent === _body) {
3909      element._stOrig = style.cssText; // record original inline styles so we can revert them later
3910
3911      cs = _getComputedStyle(element);
3912
3913      for (p in cs) {
3914        // must copy all relevant styles to ensure that nothing changes visually when we reparent to the <body>. Skip the vendor prefixed ones.
3915        if (!+p && !_prefixExp.test(p) && cs[p] && typeof style[p] === "string" && p !== "0") {
3916          style[p] = cs[p];
3917        }
3918      }
3919
3920      style.top = top;
3921      style.left = left;
3922    } else {
3923      style.cssText = element._stOrig;
3924    }
3925
3926    gsap.core.getCache(element).uncache = 1;
3927    parent.appendChild(element);
3928  }
3929},
3930    _interruptionTracker = function _interruptionTracker(getValueFunc, initialValue, onInterrupt) {
3931  var last1 = initialValue,
3932      last2 = last1;
3933  return function (value) {
3934    var current = Math.round(getValueFunc()); // round because in some [very uncommon] Windows environments, scroll can get reported with decimals even though it was set without.
3935
3936    if (current !== last1 && current !== last2 && Math.abs(current - last1) > 3 && Math.abs(current - last2) > 3) {
3937      // if the user scrolls, kill the tween. iOS Safari intermittently misreports the scroll position, it may be the most recently-set one or the one before that! When Safari is zoomed (CMD-+), it often misreports as 1 pixel off too! So if we set the scroll position to 125, for example, it'll actually report it as 124.
3938      value = current;
3939      onInterrupt && onInterrupt();
3940    }
3941
3942    last2 = last1;
3943    last1 = value;
3944    return value;
3945  };
3946},
3947    _shiftMarker = function _shiftMarker(marker, direction, value) {
3948  var vars = {};
3949  vars[direction.p] = "+=" + value;
3950  gsap.set(marker, vars);
3951},
3952    // _mergeAnimations = animations => {
3953// 	let tl = gsap.timeline({smoothChildTiming: true}).startTime(Math.min(...animations.map(a => a.globalTime(0))));
3954// 	animations.forEach(a => {let time = a.totalTime(); tl.add(a); a.totalTime(time); });
3955// 	tl.smoothChildTiming = false;
3956// 	return tl;
3957// },
3958// returns a function that can be used to tween the scroll position in the direction provided, and when doing so it'll add a .tween property to the FUNCTION itself, and remove it when the tween completes or gets killed. This gives us a way to have multiple ScrollTriggers use a central function for any given scroller and see if there's a scroll tween running (which would affect if/how things get updated)
3959_getTweenCreator = function _getTweenCreator(scroller, direction) {
3960  var getScroll = (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getScrollFunc)(scroller, direction),
3961      prop = "_scroll" + direction.p2,
3962      // add a tweenable property to the scroller that's a getter/setter function, like _scrollTop or _scrollLeft. This way, if someone does gsap.killTweensOf(scroller) it'll kill the scroll tween.
3963  getTween = function getTween(scrollTo, vars, initialValue, change1, change2) {
3964    var tween = getTween.tween,
3965        onComplete = vars.onComplete,
3966        modifiers = {};
3967    initialValue = initialValue || getScroll();
3968
3969    var checkForInterruption = _interruptionTracker(getScroll, initialValue, function () {
3970      tween.kill();
3971      getTween.tween = 0;
3972    });
3973
3974    change2 = change1 && change2 || 0; // if change1 is 0, we set that to the difference and ignore change2. Otherwise, there would be a compound effect.
3975
3976    change1 = change1 || scrollTo - initialValue;
3977    tween && tween.kill();
3978    vars[prop] = scrollTo;
3979    vars.modifiers = modifiers;
3980
3981    modifiers[prop] = function () {
3982      return checkForInterruption(initialValue + change1 * tween.ratio + change2 * tween.ratio * tween.ratio);
3983    };
3984
3985    vars.onUpdate = function () {
3986      _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers.cache++;
3987
3988      _updateAll();
3989    };
3990
3991    vars.onComplete = function () {
3992      getTween.tween = 0;
3993      onComplete && onComplete.call(tween);
3994    };
3995
3996    tween = getTween.tween = gsap.to(scroller, vars);
3997    return tween;
3998  };
3999
4000  scroller[prop] = getScroll;
4001
4002  getScroll.wheelHandler = function () {
4003    return getTween.tween && getTween.tween.kill() && (getTween.tween = 0);
4004  };
4005
4006  _addListener(scroller, "wheel", getScroll.wheelHandler); // Windows machines handle mousewheel scrolling in chunks (like "3 lines per scroll") meaning the typical strategy for cancelling the scroll isn't as sensitive. It's much more likely to match one of the previous 2 scroll event positions. So we kill any snapping as soon as there's a wheel event.
4007
4008
4009  ScrollTrigger.isTouch && _addListener(scroller, "touchmove", getScroll.wheelHandler);
4010  return getTween;
4011};
4012
4013var ScrollTrigger = /*#__PURE__*/function () {
4014  function ScrollTrigger(vars, animation) {
4015    _coreInitted || ScrollTrigger.register(gsap) || console.warn("Please gsap.registerPlugin(ScrollTrigger)");
4016
4017    _context(this);
4018
4019    this.init(vars, animation);
4020  }
4021
4022  var _proto = ScrollTrigger.prototype;
4023
4024  _proto.init = function init(vars, animation) {
4025    this.progress = this.start = 0;
4026    this.vars && this.kill(true, true); // in case it's being initted again
4027
4028    if (!_enabled) {
4029      this.update = this.refresh = this.kill = _passThrough;
4030      return;
4031    }
4032
4033    vars = _setDefaults(_isString(vars) || _isNumber(vars) || vars.nodeType ? {
4034      trigger: vars
4035    } : vars, _defaults);
4036
4037    var _vars = vars,
4038        onUpdate = _vars.onUpdate,
4039        toggleClass = _vars.toggleClass,
4040        id = _vars.id,
4041        onToggle = _vars.onToggle,
4042        onRefresh = _vars.onRefresh,
4043        scrub = _vars.scrub,
4044        trigger = _vars.trigger,
4045        pin = _vars.pin,
4046        pinSpacing = _vars.pinSpacing,
4047        invalidateOnRefresh = _vars.invalidateOnRefresh,
4048        anticipatePin = _vars.anticipatePin,
4049        onScrubComplete = _vars.onScrubComplete,
4050        onSnapComplete = _vars.onSnapComplete,
4051        once = _vars.once,
4052        snap = _vars.snap,
4053        pinReparent = _vars.pinReparent,
4054        pinSpacer = _vars.pinSpacer,
4055        containerAnimation = _vars.containerAnimation,
4056        fastScrollEnd = _vars.fastScrollEnd,
4057        preventOverlaps = _vars.preventOverlaps,
4058        direction = vars.horizontal || vars.containerAnimation && vars.horizontal !== false ? _Observer_js__WEBPACK_IMPORTED_MODULE_0__._horizontal : _Observer_js__WEBPACK_IMPORTED_MODULE_0__._vertical,
4059        isToggle = !scrub && scrub !== 0,
4060        scroller = (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getTarget)(vars.scroller || _win),
4061        scrollerCache = gsap.core.getCache(scroller),
4062        isViewport = _isViewport(scroller),
4063        useFixedPosition = ("pinType" in vars ? vars.pinType : (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getProxyProp)(scroller, "pinType") || isViewport && "fixed") === "fixed",
4064        callbacks = [vars.onEnter, vars.onLeave, vars.onEnterBack, vars.onLeaveBack],
4065        toggleActions = isToggle && vars.toggleActions.split(" "),
4066        markers = "markers" in vars ? vars.markers : _defaults.markers,
4067        borderWidth = isViewport ? 0 : parseFloat(_getComputedStyle(scroller)["border" + direction.p2 + _Width]) || 0,
4068        self = this,
4069        onRefreshInit = vars.onRefreshInit && function () {
4070      return vars.onRefreshInit(self);
4071    },
4072        getScrollerSize = _getSizeFunc(scroller, isViewport, direction),
4073        getScrollerOffsets = _getOffsetsFunc(scroller, isViewport),
4074        lastSnap = 0,
4075        lastRefresh = 0,
4076        prevProgress = 0,
4077        scrollFunc = (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getScrollFunc)(scroller, direction),
4078        tweenTo,
4079        pinCache,
4080        snapFunc,
4081        scroll1,
4082        scroll2,
4083        start,
4084        end,
4085        markerStart,
4086        markerEnd,
4087        markerStartTrigger,
4088        markerEndTrigger,
4089        markerVars,
4090        executingOnRefresh,
4091        change,
4092        pinOriginalState,
4093        pinActiveState,
4094        pinState,
4095        spacer,
4096        offset,
4097        pinGetter,
4098        pinSetter,
4099        pinStart,
4100        pinChange,
4101        spacingStart,
4102        spacerState,
4103        markerStartSetter,
4104        pinMoves,
4105        markerEndSetter,
4106        cs,
4107        snap1,
4108        snap2,
4109        scrubTween,
4110        scrubSmooth,
4111        snapDurClamp,
4112        snapDelayedCall,
4113        prevScroll,
4114        prevAnimProgress,
4115        caMarkerSetter,
4116        customRevertReturn; // for the sake of efficiency, _startClamp/_endClamp serve like a truthy value indicating that clamping was enabled on the start/end, and ALSO store the actual pre-clamped numeric value. We tap into that in ScrollSmoother for speed effects. So for example, if start="clamp(top bottom)" results in a start of -100 naturally, it would get clamped to 0 but -100 would be stored in _startClamp.
4117
4118
4119    self._startClamp = self._endClamp = false;
4120    self._dir = direction;
4121    anticipatePin *= 45;
4122    self.scroller = scroller;
4123    self.scroll = containerAnimation ? containerAnimation.time.bind(containerAnimation) : scrollFunc;
4124    scroll1 = scrollFunc();
4125    self.vars = vars;
4126    animation = animation || vars.animation;
4127
4128    if ("refreshPriority" in vars) {
4129      _sort = 1;
4130      vars.refreshPriority === -9999 && (_primary = self); // used by ScrollSmoother
4131    }
4132
4133    scrollerCache.tweenScroll = scrollerCache.tweenScroll || {
4134      top: _getTweenCreator(scroller, _Observer_js__WEBPACK_IMPORTED_MODULE_0__._vertical),
4135      left: _getTweenCreator(scroller, _Observer_js__WEBPACK_IMPORTED_MODULE_0__._horizontal)
4136    };
4137    self.tweenTo = tweenTo = scrollerCache.tweenScroll[direction.p];
4138
4139    self.scrubDuration = function (value) {
4140      scrubSmooth = _isNumber(value) && value;
4141
4142      if (!scrubSmooth) {
4143        scrubTween && scrubTween.progress(1).kill();
4144        scrubTween = 0;
4145      } else {
4146        scrubTween ? scrubTween.duration(value) : scrubTween = gsap.to(animation, {
4147          ease: "expo",
4148          totalProgress: "+=0",
4149          duration: scrubSmooth,
4150          paused: true,
4151          onComplete: function onComplete() {
4152            return onScrubComplete && onScrubComplete(self);
4153          }
4154        });
4155      }
4156    };
4157
4158    if (animation) {
4159      animation.vars.lazy = false;
4160      animation._initted && !self.isReverted || animation.vars.immediateRender !== false && vars.immediateRender !== false && animation.duration() && animation.render(0, true, true); // special case: if this ScrollTrigger gets re-initted, a from() tween with a stagger could get initted initially and then reverted on the re-init which means it'll need to get rendered again here to properly display things. Otherwise, See https://greensock.com/forums/topic/36777-scrollsmoother-splittext-nextjs/ and https://codepen.io/GreenSock/pen/eYPyPpd?editors=0010
4161
4162      self.animation = animation.pause();
4163      animation.scrollTrigger = self;
4164      self.scrubDuration(scrub);
4165      snap1 = 0;
4166      id || (id = animation.vars.id);
4167    }
4168
4169    if (snap) {
4170      // TODO: potential idea: use legitimate CSS scroll snapping by pushing invisible elements into the DOM that serve as snap positions, and toggle the document.scrollingElement.style.scrollSnapType onToggle. See https://codepen.io/GreenSock/pen/JjLrgWM for a quick proof of concept.
4171      if (!_isObject(snap) || snap.push) {
4172        snap = {
4173          snapTo: snap
4174        };
4175      }
4176
4177      "scrollBehavior" in _body.style && gsap.set(isViewport ? [_body, _docEl] : scroller, {
4178        scrollBehavior: "auto"
4179      }); // smooth scrolling doesn't work with snap.
4180
4181      _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers.forEach(function (o) {
4182        return _isFunction(o) && o.target === (isViewport ? _doc.scrollingElement || _docEl : scroller) && (o.smooth = false);
4183      }); // note: set smooth to false on both the vertical and horizontal scroll getters/setters
4184
4185
4186      snapFunc = _isFunction(snap.snapTo) ? snap.snapTo : snap.snapTo === "labels" ? _getClosestLabel(animation) : snap.snapTo === "labelsDirectional" ? _getLabelAtDirection(animation) : snap.directional !== false ? function (value, st) {
4187        return _snapDirectional(snap.snapTo)(value, _getTime() - lastRefresh < 500 ? 0 : st.direction);
4188      } : gsap.utils.snap(snap.snapTo);
4189      snapDurClamp = snap.duration || {
4190        min: 0.1,
4191        max: 2
4192      };
4193      snapDurClamp = _isObject(snapDurClamp) ? _clamp(snapDurClamp.min, snapDurClamp.max) : _clamp(snapDurClamp, snapDurClamp);
4194      snapDelayedCall = gsap.delayedCall(snap.delay || scrubSmooth / 2 || 0.1, function () {
4195        var scroll = scrollFunc(),
4196            refreshedRecently = _getTime() - lastRefresh < 500,
4197            tween = tweenTo.tween;
4198
4199        if ((refreshedRecently || Math.abs(self.getVelocity()) < 10) && !tween && !_pointerIsDown && lastSnap !== scroll) {
4200          var progress = (scroll - start) / change,
4201              totalProgress = animation && !isToggle ? animation.totalProgress() : progress,
4202              velocity = refreshedRecently ? 0 : (totalProgress - snap2) / (_getTime() - _time2) * 1000 || 0,
4203              change1 = gsap.utils.clamp(-progress, 1 - progress, _abs(velocity / 2) * velocity / 0.185),
4204              naturalEnd = progress + (snap.inertia === false ? 0 : change1),
4205              endValue = _clamp(0, 1, snapFunc(naturalEnd, self)),
4206              endScroll = Math.round(start + endValue * change),
4207              _snap = snap,
4208              onStart = _snap.onStart,
4209              _onInterrupt = _snap.onInterrupt,
4210              _onComplete = _snap.onComplete;
4211
4212          if (scroll <= end && scroll >= start && endScroll !== scroll) {
4213            if (tween && !tween._initted && tween.data <= _abs(endScroll - scroll)) {
4214              // there's an overlapping snap! So we must figure out which one is closer and let that tween live.
4215              return;
4216            }
4217
4218            if (snap.inertia === false) {
4219              change1 = endValue - progress;
4220            }
4221
4222            tweenTo(endScroll, {
4223              duration: snapDurClamp(_abs(Math.max(_abs(naturalEnd - totalProgress), _abs(endValue - totalProgress)) * 0.185 / velocity / 0.05 || 0)),
4224              ease: snap.ease || "power3",
4225              data: _abs(endScroll - scroll),
4226              // record the distance so that if another snap tween occurs (conflict) we can prioritize the closest snap.
4227              onInterrupt: function onInterrupt() {
4228                return snapDelayedCall.restart(true) && _onInterrupt && _onInterrupt(self);
4229              },
4230              onComplete: function onComplete() {
4231                self.update();
4232                lastSnap = scrollFunc();
4233                snap1 = snap2 = animation && !isToggle ? animation.totalProgress() : self.progress;
4234                onSnapComplete && onSnapComplete(self);
4235                _onComplete && _onComplete(self);
4236              }
4237            }, scroll, change1 * change, endScroll - scroll - change1 * change);
4238            onStart && onStart(self, tweenTo.tween);
4239          }
4240        } else if (self.isActive && lastSnap !== scroll) {
4241          snapDelayedCall.restart(true);
4242        }
4243      }).pause();
4244    }
4245
4246    id && (_ids[id] = self);
4247    trigger = self.trigger = (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getTarget)(trigger || pin !== true && pin); // if a trigger has some kind of scroll-related effect applied that could contaminate the "y" or "x" position (like a ScrollSmoother effect), we needed a way to temporarily revert it, so we use the stRevert property of the gsCache. It can return another function that we'll call at the end so it can return to its normal state.
4248
4249    customRevertReturn = trigger && trigger._gsap && trigger._gsap.stRevert;
4250    customRevertReturn && (customRevertReturn = customRevertReturn(self));
4251    pin = pin === true ? trigger : (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getTarget)(pin);
4252    _isString(toggleClass) && (toggleClass = {
4253      targets: trigger,
4254      className: toggleClass
4255    });
4256
4257    if (pin) {
4258      pinSpacing === false || pinSpacing === _margin || (pinSpacing = !pinSpacing && pin.parentNode && pin.parentNode.style && _getComputedStyle(pin.parentNode).display === "flex" ? false : _padding); // if the parent is display: flex, don't apply pinSpacing by default. We should check that pin.parentNode is an element (not shadow dom window)
4259
4260      self.pin = pin;
4261      pinCache = gsap.core.getCache(pin);
4262
4263      if (!pinCache.spacer) {
4264        // record the spacer and pinOriginalState on the cache in case someone tries pinning the same element with MULTIPLE ScrollTriggers - we don't want to have multiple spacers or record the "original" pin state after it has already been affected by another ScrollTrigger.
4265        if (pinSpacer) {
4266          pinSpacer = (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getTarget)(pinSpacer);
4267          pinSpacer && !pinSpacer.nodeType && (pinSpacer = pinSpacer.current || pinSpacer.nativeElement); // for React & Angular
4268
4269          pinCache.spacerIsNative = !!pinSpacer;
4270          pinSpacer && (pinCache.spacerState = _getState(pinSpacer));
4271        }
4272
4273        pinCache.spacer = spacer = pinSpacer || _doc.createElement("div");
4274        spacer.classList.add("pin-spacer");
4275        id && spacer.classList.add("pin-spacer-" + id);
4276        pinCache.pinState = pinOriginalState = _getState(pin);
4277      } else {
4278        pinOriginalState = pinCache.pinState;
4279      }
4280
4281      vars.force3D !== false && gsap.set(pin, {
4282        force3D: true
4283      });
4284      self.spacer = spacer = pinCache.spacer;
4285      cs = _getComputedStyle(pin);
4286      spacingStart = cs[pinSpacing + direction.os2];
4287      pinGetter = gsap.getProperty(pin);
4288      pinSetter = gsap.quickSetter(pin, direction.a, _px); // pin.firstChild && !_maxScroll(pin, direction) && (pin.style.overflow = "hidden"); // protects from collapsing margins, but can have unintended consequences as demonstrated here: https://codepen.io/GreenSock/pen/1e42c7a73bfa409d2cf1e184e7a4248d so it was removed in favor of just telling people to set up their CSS to avoid the collapsing margins (overflow: hidden | auto is just one option. Another is border-top: 1px solid transparent).
4289
4290      _swapPinIn(pin, spacer, cs);
4291
4292      pinState = _getState(pin);
4293    }
4294
4295    if (markers) {
4296      markerVars = _isObject(markers) ? _setDefaults(markers, _markerDefaults) : _markerDefaults;
4297      markerStartTrigger = _createMarker("scroller-start", id, scroller, direction, markerVars, 0);
4298      markerEndTrigger = _createMarker("scroller-end", id, scroller, direction, markerVars, 0, markerStartTrigger);
4299      offset = markerStartTrigger["offset" + direction.op.d2];
4300
4301      var content = (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getTarget)((0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getProxyProp)(scroller, "content") || scroller);
4302
4303      markerStart = this.markerStart = _createMarker("start", id, content, direction, markerVars, offset, 0, containerAnimation);
4304      markerEnd = this.markerEnd = _createMarker("end", id, content, direction, markerVars, offset, 0, containerAnimation);
4305      containerAnimation && (caMarkerSetter = gsap.quickSetter([markerStart, markerEnd], direction.a, _px));
4306
4307      if (!useFixedPosition && !(_Observer_js__WEBPACK_IMPORTED_MODULE_0__._proxies.length && (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getProxyProp)(scroller, "fixedMarkers") === true)) {
4308        _makePositionable(isViewport ? _body : scroller);
4309
4310        gsap.set([markerStartTrigger, markerEndTrigger], {
4311          force3D: true
4312        });
4313        markerStartSetter = gsap.quickSetter(markerStartTrigger, direction.a, _px);
4314        markerEndSetter = gsap.quickSetter(markerEndTrigger, direction.a, _px);
4315      }
4316    }
4317
4318    if (containerAnimation) {
4319      var oldOnUpdate = containerAnimation.vars.onUpdate,
4320          oldParams = containerAnimation.vars.onUpdateParams;
4321      containerAnimation.eventCallback("onUpdate", function () {
4322        self.update(0, 0, 1);
4323        oldOnUpdate && oldOnUpdate.apply(containerAnimation, oldParams || []);
4324      });
4325    }
4326
4327    self.previous = function () {
4328      return _triggers[_triggers.indexOf(self) - 1];
4329    };
4330
4331    self.next = function () {
4332      return _triggers[_triggers.indexOf(self) + 1];
4333    };
4334
4335    self.revert = function (revert, temp) {
4336      if (!temp) {
4337        return self.kill(true);
4338      } // for compatibility with gsap.context() and gsap.matchMedia() which call revert()
4339
4340
4341      var r = revert !== false || !self.enabled,
4342          prevRefreshing = _refreshing;
4343
4344      if (r !== self.isReverted) {
4345        if (r) {
4346          prevScroll = Math.max(scrollFunc(), self.scroll.rec || 0); // record the scroll so we can revert later (repositioning/pinning things can affect scroll position). In the static refresh() method, we first record all the scroll positions as a reference.
4347
4348          prevProgress = self.progress;
4349          prevAnimProgress = animation && animation.progress();
4350        }
4351
4352        markerStart && [markerStart, markerEnd, markerStartTrigger, markerEndTrigger].forEach(function (m) {
4353          return m.style.display = r ? "none" : "block";
4354        });
4355
4356        if (r) {
4357          _refreshing = self;
4358          self.update(r); // make sure the pin is back in its original position so that all the measurements are correct. do this BEFORE swapping the pin out
4359        }
4360
4361        if (pin && (!pinReparent || !self.isActive)) {
4362          if (r) {
4363            _swapPinOut(pin, spacer, pinOriginalState);
4364          } else {
4365            _swapPinIn(pin, spacer, _getComputedStyle(pin), spacerState);
4366          }
4367        }
4368
4369        r || self.update(r); // when we're restoring, the update should run AFTER swapping the pin into its pin-spacer.
4370
4371        _refreshing = prevRefreshing; // restore. We set it to true during the update() so that things fire properly in there.
4372
4373        self.isReverted = r;
4374      }
4375    };
4376
4377    self.refresh = function (soft, force, position, pinOffset) {
4378      // position is typically only defined if it's coming from setPositions() - it's a way to skip the normal parsing. pinOffset is also only from setPositions() and is mostly related to fancy stuff we need to do in ScrollSmoother with effects
4379      if ((_refreshing || !self.enabled) && !force) {
4380        return;
4381      }
4382
4383      if (pin && soft && _lastScrollTime) {
4384        _addListener(ScrollTrigger, "scrollEnd", _softRefresh);
4385
4386        return;
4387      }
4388
4389      !_refreshingAll && onRefreshInit && onRefreshInit(self);
4390      _refreshing = self;
4391
4392      if (tweenTo.tween && !position) {
4393        // we skip this if a position is passed in because typically that's from .setPositions() and it's best to allow in-progress snapping to continue.
4394        tweenTo.tween.kill();
4395        tweenTo.tween = 0;
4396      }
4397
4398      scrubTween && scrubTween.pause();
4399      invalidateOnRefresh && animation && animation.revert({
4400        kill: false
4401      }).invalidate();
4402      self.isReverted || self.revert(true, true);
4403      self._subPinOffset = false; // we'll set this to true in the sub-pins if we find any
4404
4405      var size = getScrollerSize(),
4406          scrollerBounds = getScrollerOffsets(),
4407          max = containerAnimation ? containerAnimation.duration() : _maxScroll(scroller, direction),
4408          isFirstRefresh = change <= 0.01,
4409          offset = 0,
4410          otherPinOffset = pinOffset || 0,
4411          parsedEnd = _isObject(position) ? position.end : vars.end,
4412          parsedEndTrigger = vars.endTrigger || trigger,
4413          parsedStart = _isObject(position) ? position.start : vars.start || (vars.start === 0 || !trigger ? 0 : pin ? "0 0" : "0 100%"),
4414          pinnedContainer = self.pinnedContainer = vars.pinnedContainer && (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getTarget)(vars.pinnedContainer, self),
4415          triggerIndex = trigger && Math.max(0, _triggers.indexOf(self)) || 0,
4416          i = triggerIndex,
4417          cs,
4418          bounds,
4419          scroll,
4420          isVertical,
4421          override,
4422          curTrigger,
4423          curPin,
4424          oppositeScroll,
4425          initted,
4426          revertedPins,
4427          forcedOverflow,
4428          markerStartOffset,
4429          markerEndOffset;
4430
4431      if (markers && _isObject(position)) {
4432        // if we alter the start/end positions with .setPositions(), it generally feeds in absolute NUMBERS which don't convey information about where to line up the markers, so to keep it intuitive, we record how far the trigger positions shift after applying the new numbers and then offset by that much in the opposite direction. We do the same to the associated trigger markers too of course.
4433        markerStartOffset = gsap.getProperty(markerStartTrigger, direction.p);
4434        markerEndOffset = gsap.getProperty(markerEndTrigger, direction.p);
4435      }
4436
4437      while (i--) {
4438        // user might try to pin the same element more than once, so we must find any prior triggers with the same pin, revert them, and determine how long they're pinning so that we can offset things appropriately. Make sure we revert from last to first so that things "rewind" properly.
4439        curTrigger = _triggers[i];
4440        curTrigger.end || curTrigger.refresh(0, 1) || (_refreshing = self); // if it's a timeline-based trigger that hasn't been fully initialized yet because it's waiting for 1 tick, just force the refresh() here, otherwise if it contains a pin that's supposed to affect other ScrollTriggers further down the page, they won't be adjusted properly.
4441
4442        curPin = curTrigger.pin;
4443
4444        if (curPin && (curPin === trigger || curPin === pin || curPin === pinnedContainer) && !curTrigger.isReverted) {
4445          revertedPins || (revertedPins = []);
4446          revertedPins.unshift(curTrigger); // we'll revert from first to last to make sure things reach their end state properly
4447
4448          curTrigger.revert(true, true);
4449        }
4450
4451        if (curTrigger !== _triggers[i]) {
4452          // in case it got removed.
4453          triggerIndex--;
4454          i--;
4455        }
4456      }
4457
4458      _isFunction(parsedStart) && (parsedStart = parsedStart(self));
4459      parsedStart = _parseClamp(parsedStart, "start", self);
4460      start = _parsePosition(parsedStart, trigger, size, direction, scrollFunc(), markerStart, markerStartTrigger, self, scrollerBounds, borderWidth, useFixedPosition, max, containerAnimation, self._startClamp && "_startClamp") || (pin ? -0.001 : 0);
4461      _isFunction(parsedEnd) && (parsedEnd = parsedEnd(self));
4462
4463      if (_isString(parsedEnd) && !parsedEnd.indexOf("+=")) {
4464        if (~parsedEnd.indexOf(" ")) {
4465          parsedEnd = (_isString(parsedStart) ? parsedStart.split(" ")[0] : "") + parsedEnd;
4466        } else {
4467          offset = _offsetToPx(parsedEnd.substr(2), size);
4468          parsedEnd = _isString(parsedStart) ? parsedStart : (containerAnimation ? gsap.utils.mapRange(0, containerAnimation.duration(), containerAnimation.scrollTrigger.start, containerAnimation.scrollTrigger.end, start) : start) + offset; // _parsePosition won't factor in the offset if the start is a number, so do it here.
4469
4470          parsedEndTrigger = trigger;
4471        }
4472      }
4473
4474      parsedEnd = _parseClamp(parsedEnd, "end", self);
4475      end = Math.max(start, _parsePosition(parsedEnd || (parsedEndTrigger ? "100% 0" : max), parsedEndTrigger, size, direction, scrollFunc() + offset, markerEnd, markerEndTrigger, self, scrollerBounds, borderWidth, useFixedPosition, max, containerAnimation, self._endClamp && "_endClamp")) || -0.001;
4476      offset = 0;
4477      i = triggerIndex;
4478
4479      while (i--) {
4480        curTrigger = _triggers[i];
4481        curPin = curTrigger.pin;
4482
4483        if (curPin && curTrigger.start - curTrigger._pinPush <= start && !containerAnimation && curTrigger.end > 0) {
4484          cs = curTrigger.end - (self._startClamp ? Math.max(0, curTrigger.start) : curTrigger.start);
4485
4486          if ((curPin === trigger && curTrigger.start - curTrigger._pinPush < start || curPin === pinnedContainer) && isNaN(parsedStart)) {
4487            // numeric start values shouldn't be offset at all - treat them as absolute
4488            offset += cs * (1 - curTrigger.progress);
4489          }
4490
4491          curPin === pin && (otherPinOffset += cs);
4492        }
4493      }
4494
4495      start += offset;
4496      end += offset;
4497      self._startClamp && (self._startClamp += offset);
4498
4499      if (self._endClamp && !_refreshingAll) {
4500        self._endClamp = end || -0.001;
4501        end = Math.min(end, _maxScroll(scroller, direction));
4502      }
4503
4504      change = end - start || (start -= 0.01) && 0.001;
4505
4506      if (isFirstRefresh) {
4507        // on the very first refresh(), the prevProgress couldn't have been accurate yet because the start/end were never calculated, so we set it here. Before 3.11.5, it could lead to an inaccurate scroll position restoration with snapping.
4508        prevProgress = gsap.utils.clamp(0, 1, gsap.utils.normalize(start, end, prevScroll));
4509      }
4510
4511      self._pinPush = otherPinOffset;
4512
4513      if (markerStart && offset) {
4514        // offset the markers if necessary
4515        cs = {};
4516        cs[direction.a] = "+=" + offset;
4517        pinnedContainer && (cs[direction.p] = "-=" + scrollFunc());
4518        gsap.set([markerStart, markerEnd], cs);
4519      }
4520
4521      if (pin) {
4522        cs = _getComputedStyle(pin);
4523        isVertical = direction === _Observer_js__WEBPACK_IMPORTED_MODULE_0__._vertical;
4524        scroll = scrollFunc(); // recalculate because the triggers can affect the scroll
4525
4526        pinStart = parseFloat(pinGetter(direction.a)) + otherPinOffset;
4527
4528        if (!max && end > 1) {
4529          // makes sure the scroller has a scrollbar, otherwise if something has width: 100%, for example, it would be too big (exclude the scrollbar). See https://greensock.com/forums/topic/25182-scrolltrigger-width-of-page-increase-where-markers-are-set-to-false/
4530          forcedOverflow = (isViewport ? _doc.scrollingElement || _docEl : scroller).style;
4531          forcedOverflow = {
4532            style: forcedOverflow,
4533            value: forcedOverflow["overflow" + direction.a.toUpperCase()]
4534          };
4535
4536          if (isViewport && _getComputedStyle(_body)["overflow" + direction.a.toUpperCase()] !== "scroll") {
4537            // avoid an extra scrollbar if BOTH <html> and <body> have overflow set to "scroll"
4538            forcedOverflow.style["overflow" + direction.a.toUpperCase()] = "scroll";
4539          }
4540        }
4541
4542        _swapPinIn(pin, spacer, cs);
4543
4544        pinState = _getState(pin); // transforms will interfere with the top/left/right/bottom placement, so remove them temporarily. getBoundingClientRect() factors in transforms.
4545
4546        bounds = _getBounds(pin, true);
4547        oppositeScroll = useFixedPosition && (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getScrollFunc)(scroller, isVertical ? _Observer_js__WEBPACK_IMPORTED_MODULE_0__._horizontal : _Observer_js__WEBPACK_IMPORTED_MODULE_0__._vertical)();
4548
4549        if (pinSpacing) {
4550          spacerState = [pinSpacing + direction.os2, change + otherPinOffset + _px];
4551          spacerState.t = spacer;
4552          i = pinSpacing === _padding ? _getSize(pin, direction) + change + otherPinOffset : 0;
4553          i && spacerState.push(direction.d, i + _px); // for box-sizing: border-box (must include padding).
4554
4555          _setState(spacerState);
4556
4557          if (pinnedContainer) {
4558            // in ScrollTrigger.refresh(), we need to re-evaluate the pinContainer's size because this pinSpacing may stretch it out, but we can't just add the exact distance because depending on layout, it may not push things down or it may only do so partially.
4559            _triggers.forEach(function (t) {
4560              if (t.pin === pinnedContainer && t.vars.pinSpacing !== false) {
4561                t._subPinOffset = true;
4562              }
4563            });
4564          }
4565
4566          useFixedPosition && scrollFunc(prevScroll);
4567        }
4568
4569        if (useFixedPosition) {
4570          override = {
4571            top: bounds.top + (isVertical ? scroll - start : oppositeScroll) + _px,
4572            left: bounds.left + (isVertical ? oppositeScroll : scroll - start) + _px,
4573            boxSizing: "border-box",
4574            position: "fixed"
4575          };
4576          override[_width] = override["max" + _Width] = Math.ceil(bounds.width) + _px;
4577          override[_height] = override["max" + _Height] = Math.ceil(bounds.height) + _px;
4578          override[_margin] = override[_margin + _Top] = override[_margin + _Right] = override[_margin + _Bottom] = override[_margin + _Left] = "0";
4579          override[_padding] = cs[_padding];
4580          override[_padding + _Top] = cs[_padding + _Top];
4581          override[_padding + _Right] = cs[_padding + _Right];
4582          override[_padding + _Bottom] = cs[_padding + _Bottom];
4583          override[_padding + _Left] = cs[_padding + _Left];
4584          pinActiveState = _copyState(pinOriginalState, override, pinReparent);
4585          _refreshingAll && scrollFunc(0);
4586        }
4587
4588        if (animation) {
4589          // the animation might be affecting the transform, so we must jump to the end, check the value, and compensate accordingly. Otherwise, when it becomes unpinned, the pinSetter() will get set to a value that doesn't include whatever the animation did.
4590          initted = animation._initted; // if not, we must invalidate() after this step, otherwise it could lock in starting values prematurely.
4591
4592          _suppressOverwrites(1);
4593
4594          animation.render(animation.duration(), true, true);
4595          pinChange = pinGetter(direction.a) - pinStart + change + otherPinOffset;
4596          pinMoves = Math.abs(change - pinChange) > 1;
4597          useFixedPosition && pinMoves && pinActiveState.splice(pinActiveState.length - 2, 2); // transform is the last property/value set in the state Array. Since the animation is controlling that, we should omit it.
4598
4599          animation.render(0, true, true);
4600          initted || animation.invalidate(true);
4601          animation.parent || animation.totalTime(animation.totalTime()); // if, for example, a toggleAction called play() and then refresh() happens and when we render(1) above, it would cause the animation to complete and get removed from its parent, so this makes sure it gets put back in.
4602
4603          _suppressOverwrites(0);
4604        } else {
4605          pinChange = change;
4606        }
4607
4608        forcedOverflow && (forcedOverflow.value ? forcedOverflow.style["overflow" + direction.a.toUpperCase()] = forcedOverflow.value : forcedOverflow.style.removeProperty("overflow-" + direction.a));
4609      } else if (trigger && scrollFunc() && !containerAnimation) {
4610        // it may be INSIDE a pinned element, so walk up the tree and look for any elements with _pinOffset to compensate because anything with pinSpacing that's already scrolled would throw off the measurements in getBoundingClientRect()
4611        bounds = trigger.parentNode;
4612
4613        while (bounds && bounds !== _body) {
4614          if (bounds._pinOffset) {
4615            start -= bounds._pinOffset;
4616            end -= bounds._pinOffset;
4617          }
4618
4619          bounds = bounds.parentNode;
4620        }
4621      }
4622
4623      revertedPins && revertedPins.forEach(function (t) {
4624        return t.revert(false, true);
4625      });
4626      self.start = start;
4627      self.end = end;
4628      scroll1 = scroll2 = _refreshingAll ? prevScroll : scrollFunc(); // reset velocity
4629
4630      if (!containerAnimation && !_refreshingAll) {
4631        scroll1 < prevScroll && scrollFunc(prevScroll);
4632        self.scroll.rec = 0;
4633      }
4634
4635      self.revert(false, true);
4636      lastRefresh = _getTime();
4637
4638      if (snapDelayedCall) {
4639        lastSnap = -1; // just so snapping gets re-enabled, clear out any recorded last value
4640        // self.isActive && scrollFunc(start + change * prevProgress); // previously this line was here to ensure that when snapping kicks in, it's from the previous progress but in some cases that's not desirable, like an all-page ScrollTrigger when new content gets added to the page, that'd totally change the progress.
4641
4642        snapDelayedCall.restart(true);
4643      }
4644
4645      _refreshing = 0;
4646      animation && isToggle && (animation._initted || prevAnimProgress) && animation.progress() !== prevAnimProgress && animation.progress(prevAnimProgress || 0, true).render(animation.time(), true, true); // must force a re-render because if saveStyles() was used on the target(s), the styles could have been wiped out during the refresh().
4647
4648      if (isFirstRefresh || prevProgress !== self.progress || containerAnimation) {
4649        // ensures that the direction is set properly (when refreshing, progress is set back to 0 initially, then back again to wherever it needs to be) and that callbacks are triggered.
4650        animation && !isToggle && animation.totalProgress(containerAnimation && start < -0.001 && !prevProgress ? gsap.utils.normalize(start, end, 0) : prevProgress, true); // to avoid issues where animation callbacks like onStart aren't triggered.
4651
4652        self.progress = isFirstRefresh || (scroll1 - start) / change === prevProgress ? 0 : prevProgress;
4653      }
4654
4655      pin && pinSpacing && (spacer._pinOffset = Math.round(self.progress * pinChange));
4656      scrubTween && scrubTween.invalidate();
4657
4658      if (!isNaN(markerStartOffset)) {
4659        // numbers were passed in for the position which are absolute, so instead of just putting the markers at the very bottom of the viewport, we figure out how far they shifted down (it's safe to assume they were originally positioned in closer relation to the trigger element with values like "top", "center", a percentage or whatever, so we offset that much in the opposite direction to basically revert them to the relative position thy were at previously.
4660        markerStartOffset -= gsap.getProperty(markerStartTrigger, direction.p);
4661        markerEndOffset -= gsap.getProperty(markerEndTrigger, direction.p);
4662
4663        _shiftMarker(markerStartTrigger, direction, markerStartOffset);
4664
4665        _shiftMarker(markerStart, direction, markerStartOffset - (pinOffset || 0));
4666
4667        _shiftMarker(markerEndTrigger, direction, markerEndOffset);
4668
4669        _shiftMarker(markerEnd, direction, markerEndOffset - (pinOffset || 0));
4670      }
4671
4672      isFirstRefresh && !_refreshingAll && self.update(); // edge case - when you reload a page when it's already scrolled down, some browsers fire a "scroll" event before DOMContentLoaded, triggering an updateAll(). If we don't update the self.progress as part of refresh(), then when it happens next, it may record prevProgress as 0 when it really shouldn't, potentially causing a callback in an animation to fire again.
4673
4674      if (onRefresh && !_refreshingAll && !executingOnRefresh) {
4675        // when refreshing all, we do extra work to correct pinnedContainer sizes and ensure things don't exceed the maxScroll, so we should do all the refreshes at the end after all that work so that the start/end values are corrected.
4676        executingOnRefresh = true;
4677        onRefresh(self);
4678        executingOnRefresh = false;
4679      }
4680    };
4681
4682    self.getVelocity = function () {
4683      return (scrollFunc() - scroll2) / (_getTime() - _time2) * 1000 || 0;
4684    };
4685
4686    self.endAnimation = function () {
4687      _endAnimation(self.callbackAnimation);
4688
4689      if (animation) {
4690        scrubTween ? scrubTween.progress(1) : !animation.paused() ? _endAnimation(animation, animation.reversed()) : isToggle || _endAnimation(animation, self.direction < 0, 1);
4691      }
4692    };
4693
4694    self.labelToScroll = function (label) {
4695      return animation && animation.labels && (start || self.refresh() || start) + animation.labels[label] / animation.duration() * change || 0;
4696    };
4697
4698    self.getTrailing = function (name) {
4699      var i = _triggers.indexOf(self),
4700          a = self.direction > 0 ? _triggers.slice(0, i).reverse() : _triggers.slice(i + 1);
4701
4702      return (_isString(name) ? a.filter(function (t) {
4703        return t.vars.preventOverlaps === name;
4704      }) : a).filter(function (t) {
4705        return self.direction > 0 ? t.end <= start : t.start >= end;
4706      });
4707    };
4708
4709    self.update = function (reset, recordVelocity, forceFake) {
4710      if (containerAnimation && !forceFake && !reset) {
4711        return;
4712      }
4713
4714      var scroll = _refreshingAll === true ? prevScroll : self.scroll(),
4715          p = reset ? 0 : (scroll - start) / change,
4716          clipped = p < 0 ? 0 : p > 1 ? 1 : p || 0,
4717          prevProgress = self.progress,
4718          isActive,
4719          wasActive,
4720          toggleState,
4721          action,
4722          stateChanged,
4723          toggled,
4724          isAtMax,
4725          isTakingAction;
4726
4727      if (recordVelocity) {
4728        scroll2 = scroll1;
4729        scroll1 = containerAnimation ? scrollFunc() : scroll;
4730
4731        if (snap) {
4732          snap2 = snap1;
4733          snap1 = animation && !isToggle ? animation.totalProgress() : clipped;
4734        }
4735      } // anticipate the pinning a few ticks ahead of time based on velocity to avoid a visual glitch due to the fact that most browsers do scrolling on a separate thread (not synced with requestAnimationFrame).
4736
4737
4738      anticipatePin && !clipped && pin && !_refreshing && !_startup && _lastScrollTime && start < scroll + (scroll - scroll2) / (_getTime() - _time2) * anticipatePin && (clipped = 0.0001);
4739
4740      if (clipped !== prevProgress && self.enabled) {
4741        isActive = self.isActive = !!clipped && clipped < 1;
4742        wasActive = !!prevProgress && prevProgress < 1;
4743        toggled = isActive !== wasActive;
4744        stateChanged = toggled || !!clipped !== !!prevProgress; // could go from start all the way to end, thus it didn't toggle but it did change state in a sense (may need to fire a callback)
4745
4746        self.direction = clipped > prevProgress ? 1 : -1;
4747        self.progress = clipped;
4748
4749        if (stateChanged && !_refreshing) {
4750          toggleState = clipped && !prevProgress ? 0 : clipped === 1 ? 1 : prevProgress === 1 ? 2 : 3; // 0 = enter, 1 = leave, 2 = enterBack, 3 = leaveBack (we prioritize the FIRST encounter, thus if you scroll really fast past the onEnter and onLeave in one tick, it'd prioritize onEnter.
4751
4752          if (isToggle) {
4753            action = !toggled && toggleActions[toggleState + 1] !== "none" && toggleActions[toggleState + 1] || toggleActions[toggleState]; // if it didn't toggle, that means it shot right past and since we prioritize the "enter" action, we should switch to the "leave" in this case (but only if one is defined)
4754
4755            isTakingAction = animation && (action === "complete" || action === "reset" || action in animation);
4756          }
4757        }
4758
4759        preventOverlaps && (toggled || isTakingAction) && (isTakingAction || scrub || !animation) && (_isFunction(preventOverlaps) ? preventOverlaps(self) : self.getTrailing(preventOverlaps).forEach(function (t) {
4760          return t.endAnimation();
4761        }));
4762
4763        if (!isToggle) {
4764          if (scrubTween && !_refreshing && !_startup) {
4765            scrubTween._dp._time - scrubTween._start !== scrubTween._time && scrubTween.render(scrubTween._dp._time - scrubTween._start); // if there's a scrub on both the container animation and this one (or a ScrollSmoother), the update order would cause this one not to have rendered yet, so it wouldn't make any progress before we .restart() it heading toward the new progress so it'd appear stuck thus we force a render here.
4766
4767            if (scrubTween.resetTo) {
4768              scrubTween.resetTo("totalProgress", clipped, animation._tTime / animation._tDur);
4769            } else {
4770              // legacy support (courtesy), before 3.10.0
4771              scrubTween.vars.totalProgress = clipped;
4772              scrubTween.invalidate().restart();
4773            }
4774          } else if (animation) {
4775            animation.totalProgress(clipped, !!(_refreshing && (lastRefresh || reset)));
4776          }
4777        }
4778
4779        if (pin) {
4780          reset && pinSpacing && (spacer.style[pinSpacing + direction.os2] = spacingStart);
4781
4782          if (!useFixedPosition) {
4783            pinSetter(_round(pinStart + pinChange * clipped));
4784          } else if (stateChanged) {
4785            isAtMax = !reset && clipped > prevProgress && end + 1 > scroll && scroll + 1 >= _maxScroll(scroller, direction); // if it's at the VERY end of the page, don't switch away from position: fixed because it's pointless and it could cause a brief flash when the user scrolls back up (when it gets pinned again)
4786
4787            if (pinReparent) {
4788              if (!reset && (isActive || isAtMax)) {
4789                var bounds = _getBounds(pin, true),
4790                    _offset = scroll - start;
4791
4792                _reparent(pin, _body, bounds.top + (direction === _Observer_js__WEBPACK_IMPORTED_MODULE_0__._vertical ? _offset : 0) + _px, bounds.left + (direction === _Observer_js__WEBPACK_IMPORTED_MODULE_0__._vertical ? 0 : _offset) + _px);
4793              } else {
4794                _reparent(pin, spacer);
4795              }
4796            }
4797
4798            _setState(isActive || isAtMax ? pinActiveState : pinState);
4799
4800            pinMoves && clipped < 1 && isActive || pinSetter(pinStart + (clipped === 1 && !isAtMax ? pinChange : 0));
4801          }
4802        }
4803
4804        snap && !tweenTo.tween && !_refreshing && !_startup && snapDelayedCall.restart(true);
4805        toggleClass && (toggled || once && clipped && (clipped < 1 || !_limitCallbacks)) && _toArray(toggleClass.targets).forEach(function (el) {
4806          return el.classList[isActive || once ? "add" : "remove"](toggleClass.className);
4807        }); // classes could affect positioning, so do it even if reset or refreshing is true.
4808
4809        onUpdate && !isToggle && !reset && onUpdate(self);
4810
4811        if (stateChanged && !_refreshing) {
4812          if (isToggle) {
4813            if (isTakingAction) {
4814              if (action === "complete") {
4815                animation.pause().totalProgress(1);
4816              } else if (action === "reset") {
4817                animation.restart(true).pause();
4818              } else if (action === "restart") {
4819                animation.restart(true);
4820              } else {
4821                animation[action]();
4822              }
4823            }
4824
4825            onUpdate && onUpdate(self);
4826          }
4827
4828          if (toggled || !_limitCallbacks) {
4829            // on startup, the page could be scrolled and we don't want to fire callbacks that didn't toggle. For example onEnter shouldn't fire if the ScrollTrigger isn't actually entered.
4830            onToggle && toggled && _callback(self, onToggle);
4831            callbacks[toggleState] && _callback(self, callbacks[toggleState]);
4832            once && (clipped === 1 ? self.kill(false, 1) : callbacks[toggleState] = 0); // a callback shouldn't be called again if once is true.
4833
4834            if (!toggled) {
4835              // it's possible to go completely past, like from before the start to after the end (or vice-versa) in which case BOTH callbacks should be fired in that order
4836              toggleState = clipped === 1 ? 1 : 3;
4837              callbacks[toggleState] && _callback(self, callbacks[toggleState]);
4838            }
4839          }
4840
4841          if (fastScrollEnd && !isActive && Math.abs(self.getVelocity()) > (_isNumber(fastScrollEnd) ? fastScrollEnd : 2500)) {
4842            _endAnimation(self.callbackAnimation);
4843
4844            scrubTween ? scrubTween.progress(1) : _endAnimation(animation, action === "reverse" ? 1 : !clipped, 1);
4845          }
4846        } else if (isToggle && onUpdate && !_refreshing) {
4847          onUpdate(self);
4848        }
4849      } // update absolutely-positioned markers (only if the scroller isn't the viewport)
4850
4851
4852      if (markerEndSetter) {
4853        var n = containerAnimation ? scroll / containerAnimation.duration() * (containerAnimation._caScrollDist || 0) : scroll;
4854        markerStartSetter(n + (markerStartTrigger._isFlipped ? 1 : 0));
4855        markerEndSetter(n);
4856      }
4857
4858      caMarkerSetter && caMarkerSetter(-scroll / containerAnimation.duration() * (containerAnimation._caScrollDist || 0));
4859    };
4860
4861    self.enable = function (reset, refresh) {
4862      if (!self.enabled) {
4863        self.enabled = true;
4864
4865        _addListener(scroller, "resize", _onResize);
4866
4867        isViewport || _addListener(scroller, "scroll", _onScroll);
4868        onRefreshInit && _addListener(ScrollTrigger, "refreshInit", onRefreshInit);
4869
4870        if (reset !== false) {
4871          self.progress = prevProgress = 0;
4872          scroll1 = scroll2 = lastSnap = scrollFunc();
4873        }
4874
4875        refresh !== false && self.refresh();
4876      }
4877    };
4878
4879    self.getTween = function (snap) {
4880      return snap && tweenTo ? tweenTo.tween : scrubTween;
4881    };
4882
4883    self.setPositions = function (newStart, newEnd, keepClamp, pinOffset) {
4884      // doesn't persist after refresh()! Intended to be a way to override values that were set during refresh(), like you could set it in onRefresh()
4885      if (containerAnimation) {
4886        // convert ratios into scroll positions. Remember, start/end values on ScrollTriggers that have a containerAnimation refer to the time (in seconds), NOT scroll positions.
4887        var st = containerAnimation.scrollTrigger,
4888            duration = containerAnimation.duration(),
4889            _change = st.end - st.start;
4890
4891        newStart = st.start + _change * newStart / duration;
4892        newEnd = st.start + _change * newEnd / duration;
4893      }
4894
4895      self.refresh(false, false, {
4896        start: _keepClamp(newStart, keepClamp && !!self._startClamp),
4897        end: _keepClamp(newEnd, keepClamp && !!self._endClamp)
4898      }, pinOffset);
4899      self.update();
4900    };
4901
4902    self.adjustPinSpacing = function (amount) {
4903      if (spacerState && amount) {
4904        var i = spacerState.indexOf(direction.d) + 1;
4905        spacerState[i] = parseFloat(spacerState[i]) + amount + _px;
4906        spacerState[1] = parseFloat(spacerState[1]) + amount + _px;
4907
4908        _setState(spacerState);
4909      }
4910    };
4911
4912    self.disable = function (reset, allowAnimation) {
4913      if (self.enabled) {
4914        reset !== false && self.revert(true, true);
4915        self.enabled = self.isActive = false;
4916        allowAnimation || scrubTween && scrubTween.pause();
4917        prevScroll = 0;
4918        pinCache && (pinCache.uncache = 1);
4919        onRefreshInit && _removeListener(ScrollTrigger, "refreshInit", onRefreshInit);
4920
4921        if (snapDelayedCall) {
4922          snapDelayedCall.pause();
4923          tweenTo.tween && tweenTo.tween.kill() && (tweenTo.tween = 0);
4924        }
4925
4926        if (!isViewport) {
4927          var i = _triggers.length;
4928
4929          while (i--) {
4930            if (_triggers[i].scroller === scroller && _triggers[i] !== self) {
4931              return; //don't remove the listeners if there are still other triggers referencing it.
4932            }
4933          }
4934
4935          _removeListener(scroller, "resize", _onResize);
4936
4937          isViewport || _removeListener(scroller, "scroll", _onScroll);
4938        }
4939      }
4940    };
4941
4942    self.kill = function (revert, allowAnimation) {
4943      self.disable(revert, allowAnimation);
4944      scrubTween && !allowAnimation && scrubTween.kill();
4945      id && delete _ids[id];
4946
4947      var i = _triggers.indexOf(self);
4948
4949      i >= 0 && _triggers.splice(i, 1);
4950      i === _i && _direction > 0 && _i--; // if we're in the middle of a refresh() or update(), splicing would cause skips in the index, so adjust...
4951      // if no other ScrollTrigger instances of the same scroller are found, wipe out any recorded scroll position. Otherwise, in a single page application, for example, it could maintain scroll position when it really shouldn't.
4952
4953      i = 0;
4954
4955      _triggers.forEach(function (t) {
4956        return t.scroller === self.scroller && (i = 1);
4957      });
4958
4959      i || _refreshingAll || (self.scroll.rec = 0);
4960
4961      if (animation) {
4962        animation.scrollTrigger = null;
4963        revert && animation.revert({
4964          kill: false
4965        });
4966        allowAnimation || animation.kill();
4967      }
4968
4969      markerStart && [markerStart, markerEnd, markerStartTrigger, markerEndTrigger].forEach(function (m) {
4970        return m.parentNode && m.parentNode.removeChild(m);
4971      });
4972      _primary === self && (_primary = 0);
4973
4974      if (pin) {
4975        pinCache && (pinCache.uncache = 1);
4976        i = 0;
4977
4978        _triggers.forEach(function (t) {
4979          return t.pin === pin && i++;
4980        });
4981
4982        i || (pinCache.spacer = 0); // if there aren't any more ScrollTriggers with the same pin, remove the spacer, otherwise it could be contaminated with old/stale values if the user re-creates a ScrollTrigger for the same element.
4983      }
4984
4985      vars.onKill && vars.onKill(self);
4986    };
4987
4988    _triggers.push(self);
4989
4990    self.enable(false, false);
4991    customRevertReturn && customRevertReturn(self);
4992
4993    if (animation && animation.add && !change) {
4994      // if the animation is a timeline, it may not have been populated yet, so it wouldn't render at the proper place on the first refresh(), thus we should schedule one for the next tick. If "change" is defined, we know it must be re-enabling, thus we can refresh() right away.
4995      var updateFunc = self.update; // some browsers may fire a scroll event BEFORE a tick elapses and/or the DOMContentLoaded fires. So there's a chance update() will be called BEFORE a refresh() has happened on a Timeline-attached ScrollTrigger which means the start/end won't be calculated yet. We don't want to add conditional logic inside the update() method (like check to see if end is defined and if not, force a refresh()) because that's a function that gets hit a LOT (performance). So we swap out the real update() method for this one that'll re-attach it the first time it gets called and of course forces a refresh().
4996
4997      self.update = function () {
4998        self.update = updateFunc;
4999        start || end || self.refresh();
5000      };
5001
5002      gsap.delayedCall(0.01, self.update);
5003      change = 0.01;
5004      start = end = 0;
5005    } else {
5006      self.refresh();
5007    }
5008
5009    pin && _queueRefreshAll(); // pinning could affect the positions of other things, so make sure we queue a full refresh()
5010  };
5011
5012  ScrollTrigger.register = function register(core) {
5013    if (!_coreInitted) {
5014      gsap = core || _getGSAP();
5015      _windowExists() && window.document && ScrollTrigger.enable();
5016      _coreInitted = _enabled;
5017    }
5018
5019    return _coreInitted;
5020  };
5021
5022  ScrollTrigger.defaults = function defaults(config) {
5023    if (config) {
5024      for (var p in config) {
5025        _defaults[p] = config[p];
5026      }
5027    }
5028
5029    return _defaults;
5030  };
5031
5032  ScrollTrigger.disable = function disable(reset, kill) {
5033    _enabled = 0;
5034
5035    _triggers.forEach(function (trigger) {
5036      return trigger[kill ? "kill" : "disable"](reset);
5037    });
5038
5039    _removeListener(_win, "wheel", _onScroll);
5040
5041    _removeListener(_doc, "scroll", _onScroll);
5042
5043    clearInterval(_syncInterval);
5044
5045    _removeListener(_doc, "touchcancel", _passThrough);
5046
5047    _removeListener(_body, "touchstart", _passThrough);
5048
5049    _multiListener(_removeListener, _doc, "pointerdown,touchstart,mousedown", _pointerDownHandler);
5050
5051    _multiListener(_removeListener, _doc, "pointerup,touchend,mouseup", _pointerUpHandler);
5052
5053    _resizeDelay.kill();
5054
5055    _iterateAutoRefresh(_removeListener);
5056
5057    for (var i = 0; i < _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers.length; i += 3) {
5058      _wheelListener(_removeListener, _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers[i], _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers[i + 1]);
5059
5060      _wheelListener(_removeListener, _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers[i], _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers[i + 2]);
5061    }
5062  };
5063
5064  ScrollTrigger.enable = function enable() {
5065    _win = window;
5066    _doc = document;
5067    _docEl = _doc.documentElement;
5068    _body = _doc.body;
5069
5070    if (gsap) {
5071      _toArray = gsap.utils.toArray;
5072      _clamp = gsap.utils.clamp;
5073      _context = gsap.core.context || _passThrough;
5074      _suppressOverwrites = gsap.core.suppressOverwrites || _passThrough;
5075      _scrollRestoration = _win.history.scrollRestoration || "auto";
5076      _lastScroll = _win.pageYOffset;
5077      gsap.core.globals("ScrollTrigger", ScrollTrigger); // must register the global manually because in Internet Explorer, functions (classes) don't have a "name" property.
5078
5079      if (_body) {
5080        _enabled = 1;
5081        _div100vh = document.createElement("div"); // to solve mobile browser address bar show/hide resizing, we shouldn't rely on window.innerHeight. Instead, use a <div> with its height set to 100vh and measure that since that's what the scrolling is based on anyway and it's not affected by address bar showing/hiding.
5082
5083        _div100vh.style.height = "100vh";
5084        _div100vh.style.position = "absolute";
5085
5086        _refresh100vh();
5087
5088        _rafBugFix();
5089
5090        _Observer_js__WEBPACK_IMPORTED_MODULE_0__.Observer.register(gsap); // isTouch is 0 if no touch, 1 if ONLY touch, and 2 if it can accommodate touch but also other types like mouse/pointer.
5091
5092        ScrollTrigger.isTouch = _Observer_js__WEBPACK_IMPORTED_MODULE_0__.Observer.isTouch;
5093        _fixIOSBug = _Observer_js__WEBPACK_IMPORTED_MODULE_0__.Observer.isTouch && /(iPad|iPhone|iPod|Mac)/g.test(navigator.userAgent); // since 2017, iOS has had a bug that causes event.clientX/Y to be inaccurate when a scroll occurs, thus we must alternate ignoring every other touchmove event to work around it. See https://bugs.webkit.org/show_bug.cgi?id=181954 and https://codepen.io/GreenSock/pen/ExbrPNa/087cef197dc35445a0951e8935c41503
5094
5095        _addListener(_win, "wheel", _onScroll); // mostly for 3rd party smooth scrolling libraries.
5096
5097
5098        _root = [_win, _doc, _docEl, _body];
5099
5100        if (gsap.matchMedia) {
5101          ScrollTrigger.matchMedia = function (vars) {
5102            var mm = gsap.matchMedia(),
5103                p;
5104
5105            for (p in vars) {
5106              mm.add(p, vars[p]);
5107            }
5108
5109            return mm;
5110          };
5111
5112          gsap.addEventListener("matchMediaInit", function () {
5113            return _revertAll();
5114          });
5115          gsap.addEventListener("matchMediaRevert", function () {
5116            return _revertRecorded();
5117          });
5118          gsap.addEventListener("matchMedia", function () {
5119            _refreshAll(0, 1);
5120
5121            _dispatch("matchMedia");
5122          });
5123          gsap.matchMedia("(orientation: portrait)", function () {
5124            // when orientation changes, we should take new base measurements for the ignoreMobileResize feature.
5125            _setBaseDimensions();
5126
5127            return _setBaseDimensions;
5128          });
5129        } else {
5130          console.warn("Requires GSAP 3.11.0 or later");
5131        }
5132
5133        _setBaseDimensions();
5134
5135        _addListener(_doc, "scroll", _onScroll); // some browsers (like Chrome), the window stops dispatching scroll events on the window if you scroll really fast, but it's consistent on the document!
5136
5137
5138        var bodyStyle = _body.style,
5139            border = bodyStyle.borderTopStyle,
5140            AnimationProto = gsap.core.Animation.prototype,
5141            bounds,
5142            i;
5143        AnimationProto.revert || Object.defineProperty(AnimationProto, "revert", {
5144          value: function value() {
5145            return this.time(-0.01, true);
5146          }
5147        }); // only for backwards compatibility (Animation.revert() was added after 3.10.4)
5148
5149        bodyStyle.borderTopStyle = "solid"; // works around an issue where a margin of a child element could throw off the bounds of the _body, making it seem like there's a margin when there actually isn't. The border ensures that the bounds are accurate.
5150
5151        bounds = _getBounds(_body);
5152        _Observer_js__WEBPACK_IMPORTED_MODULE_0__._vertical.m = Math.round(bounds.top + _Observer_js__WEBPACK_IMPORTED_MODULE_0__._vertical.sc()) || 0; // accommodate the offset of the <body> caused by margins and/or padding
5153
5154        _Observer_js__WEBPACK_IMPORTED_MODULE_0__._horizontal.m = Math.round(bounds.left + _Observer_js__WEBPACK_IMPORTED_MODULE_0__._horizontal.sc()) || 0;
5155        border ? bodyStyle.borderTopStyle = border : bodyStyle.removeProperty("border-top-style"); // TODO: (?) maybe move to leveraging the velocity mechanism in Observer and skip intervals.
5156
5157        _syncInterval = setInterval(_sync, 250);
5158        gsap.delayedCall(0.5, function () {
5159          return _startup = 0;
5160        });
5161
5162        _addListener(_doc, "touchcancel", _passThrough); // some older Android devices intermittently stop dispatching "touchmove" events if we don't listen for "touchcancel" on the document.
5163
5164
5165        _addListener(_body, "touchstart", _passThrough); //works around Safari bug: https://greensock.com/forums/topic/21450-draggable-in-iframe-on-mobile-is-buggy/
5166
5167
5168        _multiListener(_addListener, _doc, "pointerdown,touchstart,mousedown", _pointerDownHandler);
5169
5170        _multiListener(_addListener, _doc, "pointerup,touchend,mouseup", _pointerUpHandler);
5171
5172        _transformProp = gsap.utils.checkPrefix("transform");
5173
5174        _stateProps.push(_transformProp);
5175
5176        _coreInitted = _getTime();
5177        _resizeDelay = gsap.delayedCall(0.2, _refreshAll).pause();
5178        _autoRefresh = [_doc, "visibilitychange", function () {
5179          var w = _win.innerWidth,
5180              h = _win.innerHeight;
5181
5182          if (_doc.hidden) {
5183            _prevWidth = w;
5184            _prevHeight = h;
5185          } else if (_prevWidth !== w || _prevHeight !== h) {
5186            _onResize();
5187          }
5188        }, _doc, "DOMContentLoaded", _refreshAll, _win, "load", _refreshAll, _win, "resize", _onResize];
5189
5190        _iterateAutoRefresh(_addListener);
5191
5192        _triggers.forEach(function (trigger) {
5193          return trigger.enable(0, 1);
5194        });
5195
5196        for (i = 0; i < _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers.length; i += 3) {
5197          _wheelListener(_removeListener, _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers[i], _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers[i + 1]);
5198
5199          _wheelListener(_removeListener, _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers[i], _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers[i + 2]);
5200        }
5201      }
5202    }
5203  };
5204
5205  ScrollTrigger.config = function config(vars) {
5206    "limitCallbacks" in vars && (_limitCallbacks = !!vars.limitCallbacks);
5207    var ms = vars.syncInterval;
5208    ms && clearInterval(_syncInterval) || (_syncInterval = ms) && setInterval(_sync, ms);
5209    "ignoreMobileResize" in vars && (_ignoreMobileResize = ScrollTrigger.isTouch === 1 && vars.ignoreMobileResize);
5210
5211    if ("autoRefreshEvents" in vars) {
5212      _iterateAutoRefresh(_removeListener) || _iterateAutoRefresh(_addListener, vars.autoRefreshEvents || "none");
5213      _ignoreResize = (vars.autoRefreshEvents + "").indexOf("resize") === -1;
5214    }
5215  };
5216
5217  ScrollTrigger.scrollerProxy = function scrollerProxy(target, vars) {
5218    var t = (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getTarget)(target),
5219        i = _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers.indexOf(t),
5220        isViewport = _isViewport(t);
5221
5222    if (~i) {
5223      _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers.splice(i, isViewport ? 6 : 2);
5224    }
5225
5226    if (vars) {
5227      isViewport ? _Observer_js__WEBPACK_IMPORTED_MODULE_0__._proxies.unshift(_win, vars, _body, vars, _docEl, vars) : _Observer_js__WEBPACK_IMPORTED_MODULE_0__._proxies.unshift(t, vars);
5228    }
5229  };
5230
5231  ScrollTrigger.clearMatchMedia = function clearMatchMedia(query) {
5232    _triggers.forEach(function (t) {
5233      return t._ctx && t._ctx.query === query && t._ctx.kill(true, true);
5234    });
5235  };
5236
5237  ScrollTrigger.isInViewport = function isInViewport(element, ratio, horizontal) {
5238    var bounds = (_isString(element) ? (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getTarget)(element) : element).getBoundingClientRect(),
5239        offset = bounds[horizontal ? _width : _height] * ratio || 0;
5240    return horizontal ? bounds.right - offset > 0 && bounds.left + offset < _win.innerWidth : bounds.bottom - offset > 0 && bounds.top + offset < _win.innerHeight;
5241  };
5242
5243  ScrollTrigger.positionInViewport = function positionInViewport(element, referencePoint, horizontal) {
5244    _isString(element) && (element = (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getTarget)(element));
5245    var bounds = element.getBoundingClientRect(),
5246        size = bounds[horizontal ? _width : _height],
5247        offset = referencePoint == null ? size / 2 : referencePoint in _keywords ? _keywords[referencePoint] * size : ~referencePoint.indexOf("%") ? parseFloat(referencePoint) * size / 100 : parseFloat(referencePoint) || 0;
5248    return horizontal ? (bounds.left + offset) / _win.innerWidth : (bounds.top + offset) / _win.innerHeight;
5249  };
5250
5251  ScrollTrigger.killAll = function killAll(allowListeners) {
5252    _triggers.slice(0).forEach(function (t) {
5253      return t.vars.id !== "ScrollSmoother" && t.kill();
5254    });
5255
5256    if (allowListeners !== true) {
5257      var listeners = _listeners.killAll || [];
5258      _listeners = {};
5259      listeners.forEach(function (f) {
5260        return f();
5261      });
5262    }
5263  };
5264
5265  return ScrollTrigger;
5266}();
5267ScrollTrigger.version = "3.12.2";
5268
5269ScrollTrigger.saveStyles = function (targets) {
5270  return targets ? _toArray(targets).forEach(function (target) {
5271    // saved styles are recorded in a consecutive alternating Array, like [element, cssText, transform attribute, cache, matchMedia, ...]
5272    if (target && target.style) {
5273      var i = _savedStyles.indexOf(target);
5274
5275      i >= 0 && _savedStyles.splice(i, 5);
5276
5277      _savedStyles.push(target, target.style.cssText, target.getBBox && target.getAttribute("transform"), gsap.core.getCache(target), _context());
5278    }
5279  }) : _savedStyles;
5280};
5281
5282ScrollTrigger.revert = function (soft, media) {
5283  return _revertAll(!soft, media);
5284};
5285
5286ScrollTrigger.create = function (vars, animation) {
5287  return new ScrollTrigger(vars, animation);
5288};
5289
5290ScrollTrigger.refresh = function (safe) {
5291  return safe ? _onResize() : (_coreInitted || ScrollTrigger.register()) && _refreshAll(true);
5292};
5293
5294ScrollTrigger.update = function (force) {
5295  return ++_Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers.cache && _updateAll(force === true ? 2 : 0);
5296};
5297
5298ScrollTrigger.clearScrollMemory = _clearScrollMemory;
5299
5300ScrollTrigger.maxScroll = function (element, horizontal) {
5301  return _maxScroll(element, horizontal ? _Observer_js__WEBPACK_IMPORTED_MODULE_0__._horizontal : _Observer_js__WEBPACK_IMPORTED_MODULE_0__._vertical);
5302};
5303
5304ScrollTrigger.getScrollFunc = function (element, horizontal) {
5305  return (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getScrollFunc)((0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getTarget)(element), horizontal ? _Observer_js__WEBPACK_IMPORTED_MODULE_0__._horizontal : _Observer_js__WEBPACK_IMPORTED_MODULE_0__._vertical);
5306};
5307
5308ScrollTrigger.getById = function (id) {
5309  return _ids[id];
5310};
5311
5312ScrollTrigger.getAll = function () {
5313  return _triggers.filter(function (t) {
5314    return t.vars.id !== "ScrollSmoother";
5315  });
5316}; // it's common for people to ScrollTrigger.getAll(t => t.kill()) on page routes, for example, and we don't want it to ruin smooth scrolling by killing the main ScrollSmoother one.
5317
5318
5319ScrollTrigger.isScrolling = function () {
5320  return !!_lastScrollTime;
5321};
5322
5323ScrollTrigger.snapDirectional = _snapDirectional;
5324
5325ScrollTrigger.addEventListener = function (type, callback) {
5326  var a = _listeners[type] || (_listeners[type] = []);
5327  ~a.indexOf(callback) || a.push(callback);
5328};
5329
5330ScrollTrigger.removeEventListener = function (type, callback) {
5331  var a = _listeners[type],
5332      i = a && a.indexOf(callback);
5333  i >= 0 && a.splice(i, 1);
5334};
5335
5336ScrollTrigger.batch = function (targets, vars) {
5337  var result = [],
5338      varsCopy = {},
5339      interval = vars.interval || 0.016,
5340      batchMax = vars.batchMax || 1e9,
5341      proxyCallback = function proxyCallback(type, callback) {
5342    var elements = [],
5343        triggers = [],
5344        delay = gsap.delayedCall(interval, function () {
5345      callback(elements, triggers);
5346      elements = [];
5347      triggers = [];
5348    }).pause();
5349    return function (self) {
5350      elements.length || delay.restart(true);
5351      elements.push(self.trigger);
5352      triggers.push(self);
5353      batchMax <= elements.length && delay.progress(1);
5354    };
5355  },
5356      p;
5357
5358  for (p in vars) {
5359    varsCopy[p] = p.substr(0, 2) === "on" && _isFunction(vars[p]) && p !== "onRefreshInit" ? proxyCallback(p, vars[p]) : vars[p];
5360  }
5361
5362  if (_isFunction(batchMax)) {
5363    batchMax = batchMax();
5364
5365    _addListener(ScrollTrigger, "refresh", function () {
5366      return batchMax = vars.batchMax();
5367    });
5368  }
5369
5370  _toArray(targets).forEach(function (target) {
5371    var config = {};
5372
5373    for (p in varsCopy) {
5374      config[p] = varsCopy[p];
5375    }
5376
5377    config.trigger = target;
5378    result.push(ScrollTrigger.create(config));
5379  });
5380
5381  return result;
5382}; // to reduce file size. clamps the scroll and also returns a duration multiplier so that if the scroll gets chopped shorter, the duration gets curtailed as well (otherwise if you're very close to the top of the page, for example, and swipe up really fast, it'll suddenly slow down and take a long time to reach the top).
5383
5384
5385var _clampScrollAndGetDurationMultiplier = function _clampScrollAndGetDurationMultiplier(scrollFunc, current, end, max) {
5386  current > max ? scrollFunc(max) : current < 0 && scrollFunc(0);
5387  return end > max ? (max - current) / (end - current) : end < 0 ? current / (current - end) : 1;
5388},
5389    _allowNativePanning = function _allowNativePanning(target, direction) {
5390  if (direction === true) {
5391    target.style.removeProperty("touch-action");
5392  } else {
5393    target.style.touchAction = direction === true ? "auto" : direction ? "pan-" + direction + (_Observer_js__WEBPACK_IMPORTED_MODULE_0__.Observer.isTouch ? " pinch-zoom" : "") : "none"; // note: Firefox doesn't support it pinch-zoom properly, at least in addition to a pan-x or pan-y.
5394  }
5395
5396  target === _docEl && _allowNativePanning(_body, direction);
5397},
5398    _overflow = {
5399  auto: 1,
5400  scroll: 1
5401},
5402    _nestedScroll = function _nestedScroll(_ref5) {
5403  var event = _ref5.event,
5404      target = _ref5.target,
5405      axis = _ref5.axis;
5406
5407  var node = (event.changedTouches ? event.changedTouches[0] : event).target,
5408      cache = node._gsap || gsap.core.getCache(node),
5409      time = _getTime(),
5410      cs;
5411
5412  if (!cache._isScrollT || time - cache._isScrollT > 2000) {
5413    // cache for 2 seconds to improve performance.
5414    while (node && node !== _body && (node.scrollHeight <= node.clientHeight && node.scrollWidth <= node.clientWidth || !(_overflow[(cs = _getComputedStyle(node)).overflowY] || _overflow[cs.overflowX]))) {
5415      node = node.parentNode;
5416    }
5417
5418    cache._isScroll = node && node !== target && !_isViewport(node) && (_overflow[(cs = _getComputedStyle(node)).overflowY] || _overflow[cs.overflowX]);
5419    cache._isScrollT = time;
5420  }
5421
5422  if (cache._isScroll || axis === "x") {
5423    event.stopPropagation();
5424    event._gsapAllow = true;
5425  }
5426},
5427    // capture events on scrollable elements INSIDE the <body> and allow those by calling stopPropagation() when we find a scrollable ancestor
5428_inputObserver = function _inputObserver(target, type, inputs, nested) {
5429  return _Observer_js__WEBPACK_IMPORTED_MODULE_0__.Observer.create({
5430    target: target,
5431    capture: true,
5432    debounce: false,
5433    lockAxis: true,
5434    type: type,
5435    onWheel: nested = nested && _nestedScroll,
5436    onPress: nested,
5437    onDrag: nested,
5438    onScroll: nested,
5439    onEnable: function onEnable() {
5440      return inputs && _addListener(_doc, _Observer_js__WEBPACK_IMPORTED_MODULE_0__.Observer.eventTypes[0], _captureInputs, false, true);
5441    },
5442    onDisable: function onDisable() {
5443      return _removeListener(_doc, _Observer_js__WEBPACK_IMPORTED_MODULE_0__.Observer.eventTypes[0], _captureInputs, true);
5444    }
5445  });
5446},
5447    _inputExp = /(input|label|select|textarea)/i,
5448    _inputIsFocused,
5449    _captureInputs = function _captureInputs(e) {
5450  var isInput = _inputExp.test(e.target.tagName);
5451
5452  if (isInput || _inputIsFocused) {
5453    e._gsapAllow = true;
5454    _inputIsFocused = isInput;
5455  }
5456},
5457    _getScrollNormalizer = function _getScrollNormalizer(vars) {
5458  _isObject(vars) || (vars = {});
5459  vars.preventDefault = vars.isNormalizer = vars.allowClicks = true;
5460  vars.type || (vars.type = "wheel,touch");
5461  vars.debounce = !!vars.debounce;
5462  vars.id = vars.id || "normalizer";
5463
5464  var _vars2 = vars,
5465      normalizeScrollX = _vars2.normalizeScrollX,
5466      momentum = _vars2.momentum,
5467      allowNestedScroll = _vars2.allowNestedScroll,
5468      onRelease = _vars2.onRelease,
5469      self,
5470      maxY,
5471      target = (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getTarget)(vars.target) || _docEl,
5472      smoother = gsap.core.globals().ScrollSmoother,
5473      smootherInstance = smoother && smoother.get(),
5474      content = _fixIOSBug && (vars.content && (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getTarget)(vars.content) || smootherInstance && vars.content !== false && !smootherInstance.smooth() && smootherInstance.content()),
5475      scrollFuncY = (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getScrollFunc)(target, _Observer_js__WEBPACK_IMPORTED_MODULE_0__._vertical),
5476      scrollFuncX = (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getScrollFunc)(target, _Observer_js__WEBPACK_IMPORTED_MODULE_0__._horizontal),
5477      scale = 1,
5478      initialScale = (_Observer_js__WEBPACK_IMPORTED_MODULE_0__.Observer.isTouch && _win.visualViewport ? _win.visualViewport.scale * _win.visualViewport.width : _win.outerWidth) / _win.innerWidth,
5479      wheelRefresh = 0,
5480      resolveMomentumDuration = _isFunction(momentum) ? function () {
5481    return momentum(self);
5482  } : function () {
5483    return momentum || 2.8;
5484  },
5485      lastRefreshID,
5486      skipTouchMove,
5487      inputObserver = _inputObserver(target, vars.type, true, allowNestedScroll),
5488      resumeTouchMove = function resumeTouchMove() {
5489    return skipTouchMove = false;
5490  },
5491      scrollClampX = _passThrough,
5492      scrollClampY = _passThrough,
5493      updateClamps = function updateClamps() {
5494    maxY = _maxScroll(target, _Observer_js__WEBPACK_IMPORTED_MODULE_0__._vertical);
5495    scrollClampY = _clamp(_fixIOSBug ? 1 : 0, maxY);
5496    normalizeScrollX && (scrollClampX = _clamp(0, _maxScroll(target, _Observer_js__WEBPACK_IMPORTED_MODULE_0__._horizontal)));
5497    lastRefreshID = _refreshID;
5498  },
5499      removeContentOffset = function removeContentOffset() {
5500    content._gsap.y = _round(parseFloat(content._gsap.y) + scrollFuncY.offset) + "px";
5501    content.style.transform = "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, " + parseFloat(content._gsap.y) + ", 0, 1)";
5502    scrollFuncY.offset = scrollFuncY.cacheID = 0;
5503  },
5504      ignoreDrag = function ignoreDrag() {
5505    if (skipTouchMove) {
5506      requestAnimationFrame(resumeTouchMove);
5507
5508      var offset = _round(self.deltaY / 2),
5509          scroll = scrollClampY(scrollFuncY.v - offset);
5510
5511      if (content && scroll !== scrollFuncY.v + scrollFuncY.offset) {
5512        scrollFuncY.offset = scroll - scrollFuncY.v;
5513
5514        var y = _round((parseFloat(content && content._gsap.y) || 0) - scrollFuncY.offset);
5515
5516        content.style.transform = "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, " + y + ", 0, 1)";
5517        content._gsap.y = y + "px";
5518        scrollFuncY.cacheID = _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers.cache;
5519
5520        _updateAll();
5521      }
5522
5523      return true;
5524    }
5525
5526    scrollFuncY.offset && removeContentOffset();
5527    skipTouchMove = true;
5528  },
5529      tween,
5530      startScrollX,
5531      startScrollY,
5532      onStopDelayedCall,
5533      onResize = function onResize() {
5534    // if the window resizes, like on an iPhone which Apple FORCES the address bar to show/hide even if we event.preventDefault(), it may be scrolling too far now that the address bar is showing, so we must dynamically adjust the momentum tween.
5535    updateClamps();
5536
5537    if (tween.isActive() && tween.vars.scrollY > maxY) {
5538      scrollFuncY() > maxY ? tween.progress(1) && scrollFuncY(maxY) : tween.resetTo("scrollY", maxY);
5539    }
5540  };
5541
5542  content && gsap.set(content, {
5543    y: "+=0"
5544  }); // to ensure there's a cache (element._gsap)
5545
5546  vars.ignoreCheck = function (e) {
5547    return _fixIOSBug && e.type === "touchmove" && ignoreDrag(e) || scale > 1.05 && e.type !== "touchstart" || self.isGesturing || e.touches && e.touches.length > 1;
5548  };
5549
5550  vars.onPress = function () {
5551    skipTouchMove = false;
5552    var prevScale = scale;
5553    scale = _round((_win.visualViewport && _win.visualViewport.scale || 1) / initialScale);
5554    tween.pause();
5555    prevScale !== scale && _allowNativePanning(target, scale > 1.01 ? true : normalizeScrollX ? false : "x");
5556    startScrollX = scrollFuncX();
5557    startScrollY = scrollFuncY();
5558    updateClamps();
5559    lastRefreshID = _refreshID;
5560  };
5561
5562  vars.onRelease = vars.onGestureStart = function (self, wasDragging) {
5563    scrollFuncY.offset && removeContentOffset();
5564
5565    if (!wasDragging) {
5566      onStopDelayedCall.restart(true);
5567    } else {
5568      _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers.cache++; // make sure we're pulling the non-cached value
5569      // alternate algorithm: durX = Math.min(6, Math.abs(self.velocityX / 800)),	dur = Math.max(durX, Math.min(6, Math.abs(self.velocityY / 800))); dur = dur * (0.4 + (1 - _power4In(dur / 6)) * 0.6)) * (momentumSpeed || 1)
5570
5571      var dur = resolveMomentumDuration(),
5572          currentScroll,
5573          endScroll;
5574
5575      if (normalizeScrollX) {
5576        currentScroll = scrollFuncX();
5577        endScroll = currentScroll + dur * 0.05 * -self.velocityX / 0.227; // the constant .227 is from power4(0.05). velocity is inverted because scrolling goes in the opposite direction.
5578
5579        dur *= _clampScrollAndGetDurationMultiplier(scrollFuncX, currentScroll, endScroll, _maxScroll(target, _Observer_js__WEBPACK_IMPORTED_MODULE_0__._horizontal));
5580        tween.vars.scrollX = scrollClampX(endScroll);
5581      }
5582
5583      currentScroll = scrollFuncY();
5584      endScroll = currentScroll + dur * 0.05 * -self.velocityY / 0.227; // the constant .227 is from power4(0.05)
5585
5586      dur *= _clampScrollAndGetDurationMultiplier(scrollFuncY, currentScroll, endScroll, _maxScroll(target, _Observer_js__WEBPACK_IMPORTED_MODULE_0__._vertical));
5587      tween.vars.scrollY = scrollClampY(endScroll);
5588      tween.invalidate().duration(dur).play(0.01);
5589
5590      if (_fixIOSBug && tween.vars.scrollY >= maxY || currentScroll >= maxY - 1) {
5591        // iOS bug: it'll show the address bar but NOT fire the window "resize" event until the animation is done but we must protect against overshoot so we leverage an onUpdate to do so.
5592        gsap.to({}, {
5593          onUpdate: onResize,
5594          duration: dur
5595        });
5596      }
5597    }
5598
5599    onRelease && onRelease(self);
5600  };
5601
5602  vars.onWheel = function () {
5603    tween._ts && tween.pause();
5604
5605    if (_getTime() - wheelRefresh > 1000) {
5606      // after 1 second, refresh the clamps otherwise that'll only happen when ScrollTrigger.refresh() is called or for touch-scrolling.
5607      lastRefreshID = 0;
5608      wheelRefresh = _getTime();
5609    }
5610  };
5611
5612  vars.onChange = function (self, dx, dy, xArray, yArray) {
5613    _refreshID !== lastRefreshID && updateClamps();
5614    dx && normalizeScrollX && scrollFuncX(scrollClampX(xArray[2] === dx ? startScrollX + (self.startX - self.x) : scrollFuncX() + dx - xArray[1])); // for more precision, we track pointer/touch movement from the start, otherwise it'll drift.
5615
5616    if (dy) {
5617      scrollFuncY.offset && removeContentOffset();
5618      var isTouch = yArray[2] === dy,
5619          y = isTouch ? startScrollY + self.startY - self.y : scrollFuncY() + dy - yArray[1],
5620          yClamped = scrollClampY(y);
5621      isTouch && y !== yClamped && (startScrollY += yClamped - y);
5622      scrollFuncY(yClamped);
5623    }
5624
5625    (dy || dx) && _updateAll();
5626  };
5627
5628  vars.onEnable = function () {
5629    _allowNativePanning(target, normalizeScrollX ? false : "x");
5630
5631    ScrollTrigger.addEventListener("refresh", onResize);
5632
5633    _addListener(_win, "resize", onResize);
5634
5635    if (scrollFuncY.smooth) {
5636      scrollFuncY.target.style.scrollBehavior = "auto";
5637      scrollFuncY.smooth = scrollFuncX.smooth = false;
5638    }
5639
5640    inputObserver.enable();
5641  };
5642
5643  vars.onDisable = function () {
5644    _allowNativePanning(target, true);
5645
5646    _removeListener(_win, "resize", onResize);
5647
5648    ScrollTrigger.removeEventListener("refresh", onResize);
5649    inputObserver.kill();
5650  };
5651
5652  vars.lockAxis = vars.lockAxis !== false;
5653  self = new _Observer_js__WEBPACK_IMPORTED_MODULE_0__.Observer(vars);
5654  self.iOS = _fixIOSBug; // used in the Observer getCachedScroll() function to work around an iOS bug that wreaks havoc with TouchEvent.clientY if we allow scroll to go all the way back to 0.
5655
5656  _fixIOSBug && !scrollFuncY() && scrollFuncY(1); // iOS bug causes event.clientY values to freak out (wildly inaccurate) if the scroll position is exactly 0.
5657
5658  _fixIOSBug && gsap.ticker.add(_passThrough); // prevent the ticker from sleeping
5659
5660  onStopDelayedCall = self._dc;
5661  tween = gsap.to(self, {
5662    ease: "power4",
5663    paused: true,
5664    scrollX: normalizeScrollX ? "+=0.1" : "+=0",
5665    scrollY: "+=0.1",
5666    modifiers: {
5667      scrollY: _interruptionTracker(scrollFuncY, scrollFuncY(), function () {
5668        return tween.pause();
5669      })
5670    },
5671    onUpdate: _updateAll,
5672    onComplete: onStopDelayedCall.vars.onComplete
5673  }); // we need the modifier to sense if the scroll position is altered outside of the momentum tween (like with a scrollTo tween) so we can pause() it to prevent conflicts.
5674
5675  return self;
5676};
5677
5678ScrollTrigger.sort = function (func) {
5679  return _triggers.sort(func || function (a, b) {
5680    return (a.vars.refreshPriority || 0) * -1e6 + a.start - (b.start + (b.vars.refreshPriority || 0) * -1e6);
5681  });
5682};
5683
5684ScrollTrigger.observe = function (vars) {
5685  return new _Observer_js__WEBPACK_IMPORTED_MODULE_0__.Observer(vars);
5686};
5687
5688ScrollTrigger.normalizeScroll = function (vars) {
5689  if (typeof vars === "undefined") {
5690    return _normalizer;
5691  }
5692
5693  if (vars === true && _normalizer) {
5694    return _normalizer.enable();
5695  }
5696
5697  if (vars === false) {
5698    return _normalizer && _normalizer.kill();
5699  }
5700
5701  var normalizer = vars instanceof _Observer_js__WEBPACK_IMPORTED_MODULE_0__.Observer ? vars : _getScrollNormalizer(vars);
5702  _normalizer && _normalizer.target === normalizer.target && _normalizer.kill();
5703  _isViewport(normalizer.target) && (_normalizer = normalizer);
5704  return normalizer;
5705};
5706
5707ScrollTrigger.core = {
5708  // smaller file size way to leverage in ScrollSmoother and Observer
5709  _getVelocityProp: _Observer_js__WEBPACK_IMPORTED_MODULE_0__._getVelocityProp,
5710  _inputObserver: _inputObserver,
5711  _scrollers: _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers,
5712  _proxies: _Observer_js__WEBPACK_IMPORTED_MODULE_0__._proxies,
5713  bridge: {
5714    // when normalizeScroll sets the scroll position (ss = setScroll)
5715    ss: function ss() {
5716      _lastScrollTime || _dispatch("scrollStart");
5717      _lastScrollTime = _getTime();
5718    },
5719    // a way to get the _refreshing value in Observer
5720    ref: function ref() {
5721      return _refreshing;
5722    }
5723  }
5724};
5725_getGSAP() && gsap.registerPlugin(ScrollTrigger);
5726
5727
5728/***/ }),
5729
vendor: 174,106 bytes, lines 5730-10271
5730/***/ "./node_modules/gsap/gsap-core.js":
5731/*!****************************************!*\
5732  !*** ./node_modules/gsap/gsap-core.js ***!
5733  \****************************************/
5734/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
5735
5736__webpack_require__.r(__webpack_exports__);
5737/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5738/* harmony export */   Animation: function() { return /* binding */ Animation; },
5739/* harmony export */   Back: function() { return /* binding */ Back; },
5740/* harmony export */   Bounce: function() { return /* binding */ Bounce; },
5741/* harmony export */   Circ: function() { return /* binding */ Circ; },
5742/* harmony export */   Cubic: function() { return /* binding */ Cubic; },
5743/* harmony export */   Elastic: function() { return /* binding */ Elastic; },
5744/* harmony export */   Expo: function() { return /* binding */ Expo; },
5745/* harmony export */   GSCache: function() { return /* binding */ GSCache; },
5746/* harmony export */   Linear: function() { return /* binding */ Linear; },
5747/* harmony export */   Power0: function() { return /* binding */ Power0; },
5748/* harmony export */   Power1: function() { return /* binding */ Power1; },
5749/* harmony export */   Power2: function() { return /* binding */ Power2; },
5750/* harmony export */   Power3: function() { return /* binding */ Power3; },
5751/* harmony export */   Power4: function() { return /* binding */ Power4; },
5752/* harmony export */   PropTween: function() { return /* binding */ PropTween; },
5753/* harmony export */   Quad: function() { return /* binding */ Quad; },
5754/* harmony export */   Quart: function() { return /* binding */ Quart; },
5755/* harmony export */   Quint: function() { return /* binding */ Quint; },
5756/* harmony export */   Sine: function() { return /* binding */ Sine; },
5757/* harmony export */   SteppedEase: function() { return /* binding */ SteppedEase; },
5758/* harmony export */   Strong: function() { return /* binding */ Strong; },
5759/* harmony export */   Timeline: function() { return /* binding */ Timeline; },
5760/* harmony export */   TimelineLite: function() { return /* binding */ Timeline; },
5761/* harmony export */   TimelineMax: function() { return /* binding */ Timeline; },
5762/* harmony export */   Tween: function() { return /* binding */ Tween; },
5763/* harmony export */   TweenLite: function() { return /* binding */ Tween; },
5764/* harmony export */   TweenMax: function() { return /* binding */ Tween; },
5765/* harmony export */   _checkPlugin: function() { return /* binding */ _checkPlugin; },
5766/* harmony export */   _colorExp: function() { return /* binding */ _colorExp; },
5767/* harmony export */   _colorStringFilter: function() { return /* binding */ _colorStringFilter; },
5768/* harmony export */   _config: function() { return /* binding */ _config; },
5769/* harmony export */   _forEachName: function() { return /* binding */ _forEachName; },
5770/* harmony export */   _getCache: function() { return /* binding */ _getCache; },
5771/* harmony export */   _getProperty: function() { return /* binding */ _getProperty; },
5772/* harmony export */   _getSetter: function() { return /* binding */ _getSetter; },
5773/* harmony export */   _isString: function() { return /* binding */ _isString; },
5774/* harmony export */   _isUndefined: function() { return /* binding */ _isUndefined; },
5775/* harmony export */   _missingPlugin: function() { return /* binding */ _missingPlugin; },
5776/* harmony export */   _numExp: function() { return /* binding */ _numExp; },
5777/* harmony export */   _numWithUnitExp: function() { return /* binding */ _numWithUnitExp; },
5778/* harmony export */   _parseRelative: function() { return /* binding */ _parseRelative; },
5779/* harmony export */   _plugins: function() { return /* binding */ _plugins; },
5780/* harmony export */   _relExp: function() { return /* binding */ _relExp; },
5781/* harmony export */   _removeLinkedListItem: function() { return /* binding */ _removeLinkedListItem; },
5782/* harmony export */   _renderComplexString: function() { return /* binding */ _renderComplexString; },
5783/* harmony export */   _replaceRandom: function() { return /* binding */ _replaceRandom; },
5784/* harmony export */   _round: function() { return /* binding */ _round; },
5785/* harmony export */   _roundModifier: function() { return /* binding */ _roundModifier; },
5786/* harmony export */   _setDefaults: function() { return /* binding */ _setDefaults; },
5787/* harmony export */   _sortPropTweensByPriority: function() { return /* binding */ _sortPropTweensByPriority; },
5788/* harmony export */   _ticker: function() { return /* binding */ _ticker; },
5789/* harmony export */   clamp: function() { return /* binding */ clamp; },
5790/* harmony export */   "default": function() { return /* binding */ gsap; },
5791/* harmony export */   distribute: function() { return /* binding */ distribute; },
5792/* harmony export */   getUnit: function() { return /* binding */ getUnit; },
5793/* harmony export */   gsap: function() { return /* binding */ gsap; },
5794/* harmony export */   interpolate: function() { return /* binding */ interpolate; },
5795/* harmony export */   mapRange: function() { return /* binding */ mapRange; },
5796/* harmony export */   normalize: function() { return /* binding */ normalize; },
5797/* harmony export */   pipe: function() { return /* binding */ pipe; },
5798/* harmony export */   random: function() { return /* binding */ random; },
5799/* harmony export */   selector: function() { return /* binding */ selector; },
5800/* harmony export */   shuffle: function() { return /* binding */ shuffle; },
5801/* harmony export */   snap: function() { return /* binding */ snap; },
5802/* harmony export */   splitColor: function() { return /* binding */ splitColor; },
5803/* harmony export */   toArray: function() { return /* binding */ toArray; },
5804/* harmony export */   unitize: function() { return /* binding */ unitize; },
5805/* harmony export */   wrap: function() { return /* binding */ wrap; },
5806/* harmony export */   wrapYoyo: function() { return /* binding */ wrapYoyo; }
5807/* harmony export */ });
5808function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
5809
5810function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
5811
5812/*!
5813 * GSAP 3.12.2
5814 * https://greensock.com
5815 *
5816 * @license Copyright 2008-2023, GreenSock. All rights reserved.
5817 * Subject to the terms at https://greensock.com/standard-license or for
5818 * Club GreenSock members, the agreement issued with that membership.
5819 * @author: Jack Doyle, [email protected]
5820*/
5821
5822/* eslint-disable */
5823var _config = {
5824  autoSleep: 120,
5825  force3D: "auto",
5826  nullTargetWarn: 1,
5827  units: {
5828    lineHeight: ""
5829  }
5830},
5831    _defaults = {
5832  duration: .5,
5833  overwrite: false,
5834  delay: 0
5835},
5836    _suppressOverwrites,
5837    _reverting,
5838    _context,
5839    _bigNum = 1e8,
5840    _tinyNum = 1 / _bigNum,
5841    _2PI = Math.PI * 2,
5842    _HALF_PI = _2PI / 4,
5843    _gsID = 0,
5844    _sqrt = Math.sqrt,
5845    _cos = Math.cos,
5846    _sin = Math.sin,
5847    _isString = function _isString(value) {
5848  return typeof value === "string";
5849},
5850    _isFunction = function _isFunction(value) {
5851  return typeof value === "function";
5852},
5853    _isNumber = function _isNumber(value) {
5854  return typeof value === "number";
5855},
5856    _isUndefined = function _isUndefined(value) {
5857  return typeof value === "undefined";
5858},
5859    _isObject = function _isObject(value) {
5860  return typeof value === "object";
5861},
5862    _isNotFalse = function _isNotFalse(value) {
5863  return value !== false;
5864},
5865    _windowExists = function _windowExists() {
5866  return typeof window !== "undefined";
5867},
5868    _isFuncOrString = function _isFuncOrString(value) {
5869  return _isFunction(value) || _isString(value);
5870},
5871    _isTypedArray = typeof ArrayBuffer === "function" && ArrayBuffer.isView || function () {},
5872    // note: IE10 has ArrayBuffer, but NOT ArrayBuffer.isView().
5873_isArray = Array.isArray,
5874    _strictNumExp = /(?:-?\.?\d|\.)+/gi,
5875    //only numbers (including negatives and decimals) but NOT relative values.
5876_numExp = /[-+=.]*\d+[.e\-+]*\d*[e\-+]*\d*/g,
5877    //finds any numbers, including ones that start with += or -=, negative numbers, and ones in scientific notation like 1e-8.
5878_numWithUnitExp = /[-+=.]*\d+[.e-]*\d*[a-z%]*/g,
5879    _complexStringNumExp = /[-+=.]*\d+\.?\d*(?:e-|e\+)?\d*/gi,
5880    //duplicate so that while we're looping through matches from exec(), it doesn't contaminate the lastIndex of _numExp which we use to search for colors too.
5881_relExp = /[+-]=-?[.\d]+/,
5882    _delimitedValueExp = /[^,'"\[\]\s]+/gi,
5883    // previously /[#\-+.]*\b[a-z\d\-=+%.]+/gi but didn't catch special characters.
5884_unitExp = /^[+\-=e\s\d]*\d+[.\d]*([a-z]*|%)\s*$/i,
5885    _globalTimeline,
5886    _win,
5887    _coreInitted,
5888    _doc,
5889    _globals = {},
5890    _installScope = {},
5891    _coreReady,
5892    _install = function _install(scope) {
5893  return (_installScope = _merge(scope, _globals)) && gsap;
5894},
5895    _missingPlugin = function _missingPlugin(property, value) {
5896  return console.warn("Invalid property", property, "set to", value, "Missing plugin? gsap.registerPlugin()");
5897},
5898    _warn = function _warn(message, suppress) {
5899  return !suppress && console.warn(message);
5900},
5901    _addGlobal = function _addGlobal(name, obj) {
5902  return name && (_globals[name] = obj) && _installScope && (_installScope[name] = obj) || _globals;
5903},
5904    _emptyFunc = function _emptyFunc() {
5905  return 0;
5906},
5907    _startAtRevertConfig = {
5908  suppressEvents: true,
5909  isStart: true,
5910  kill: false
5911},
5912    _revertConfigNoKill = {
5913  suppressEvents: true,
5914  kill: false
5915},
5916    _revertConfig = {
5917  suppressEvents: true
5918},
5919    _reservedProps = {},
5920    _lazyTweens = [],
5921    _lazyLookup = {},
5922    _lastRenderedFrame,
5923    _plugins = {},
5924    _effects = {},
5925    _nextGCFrame = 30,
5926    _harnessPlugins = [],
5927    _callbackNames = "",
5928    _harness = function _harness(targets) {
5929  var target = targets[0],
5930      harnessPlugin,
5931      i;
5932  _isObject(target) || _isFunction(target) || (targets = [targets]);
5933
5934  if (!(harnessPlugin = (target._gsap || {}).harness)) {
5935    // find the first target with a harness. We assume targets passed into an animation will be of similar type, meaning the same kind of harness can be used for them all (performance optimization)
5936    i = _harnessPlugins.length;
5937
5938    while (i-- && !_harnessPlugins[i].targetTest(target)) {}
5939
5940    harnessPlugin = _harnessPlugins[i];
5941  }
5942
5943  i = targets.length;
5944
5945  while (i--) {
5946    targets[i] && (targets[i]._gsap || (targets[i]._gsap = new GSCache(targets[i], harnessPlugin))) || targets.splice(i, 1);
5947  }
5948
5949  return targets;
5950},
5951    _getCache = function _getCache(target) {
5952  return target._gsap || _harness(toArray(target))[0]._gsap;
5953},
5954    _getProperty = function _getProperty(target, property, v) {
5955  return (v = target[property]) && _isFunction(v) ? target[property]() : _isUndefined(v) && target.getAttribute && target.getAttribute(property) || v;
5956},
5957    _forEachName = function _forEachName(names, func) {
5958  return (names = names.split(",")).forEach(func) || names;
5959},
5960    //split a comma-delimited list of names into an array, then run a forEach() function and return the split array (this is just a way to consolidate/shorten some code).
5961_round = function _round(value) {
5962  return Math.round(value * 100000) / 100000 || 0;
5963},
5964    _roundPrecise = function _roundPrecise(value) {
5965  return Math.round(value * 10000000) / 10000000 || 0;
5966},
5967    // increased precision mostly for timing values.
5968_parseRelative = function _parseRelative(start, value) {
5969  var operator = value.charAt(0),
5970      end = parseFloat(value.substr(2));
5971  start = parseFloat(start);
5972  return operator === "+" ? start + end : operator === "-" ? start - end : operator === "*" ? start * end : start / end;
5973},
5974    _arrayContainsAny = function _arrayContainsAny(toSearch, toFind) {
5975  //searches one array to find matches for any of the items in the toFind array. As soon as one is found, it returns true. It does NOT return all the matches; it's simply a boolean search.
5976  var l = toFind.length,
5977      i = 0;
5978
5979  for (; toSearch.indexOf(toFind[i]) < 0 && ++i < l;) {}
5980
5981  return i < l;
5982},
5983    _lazyRender = function _lazyRender() {
5984  var l = _lazyTweens.length,
5985      a = _lazyTweens.slice(0),
5986      i,
5987      tween;
5988
5989  _lazyLookup = {};
5990  _lazyTweens.length = 0;
5991
5992  for (i = 0; i < l; i++) {
5993    tween = a[i];
5994    tween && tween._lazy && (tween.render(tween._lazy[0], tween._lazy[1], true)._lazy = 0);
5995  }
5996},
5997    _lazySafeRender = function _lazySafeRender(animation, time, suppressEvents, force) {
5998  _lazyTweens.length && !_reverting && _lazyRender();
5999  animation.render(time, suppressEvents, force || _reverting && time < 0 && (animation._initted || animation._startAt));
6000  _lazyTweens.length && !_reverting && _lazyRender(); //in case rendering caused any tweens to lazy-init, we should render them because typically when someone calls seek() or time() or progress(), they expect an immediate render.
6001},
6002    _numericIfPossible = function _numericIfPossible(value) {
6003  var n = parseFloat(value);
6004  return (n || n === 0) && (value + "").match(_delimitedValueExp).length < 2 ? n : _isString(value) ? value.trim() : value;
6005},
6006    _passThrough = function _passThrough(p) {
6007  return p;
6008},
6009    _setDefaults = function _setDefaults(obj, defaults) {
6010  for (var p in defaults) {
6011    p in obj || (obj[p] = defaults[p]);
6012  }
6013
6014  return obj;
6015},
6016    _setKeyframeDefaults = function _setKeyframeDefaults(excludeDuration) {
6017  return function (obj, defaults) {
6018    for (var p in defaults) {
6019      p in obj || p === "duration" && excludeDuration || p === "ease" || (obj[p] = defaults[p]);
6020    }
6021  };
6022},
6023    _merge = function _merge(base, toMerge) {
6024  for (var p in toMerge) {
6025    base[p] = toMerge[p];
6026  }
6027
6028  return base;
6029},
6030    _mergeDeep = function _mergeDeep(base, toMerge) {
6031  for (var p in toMerge) {
6032    p !== "__proto__" && p !== "constructor" && p !== "prototype" && (base[p] = _isObject(toMerge[p]) ? _mergeDeep(base[p] || (base[p] = {}), toMerge[p]) : toMerge[p]);
6033  }
6034
6035  return base;
6036},
6037    _copyExcluding = function _copyExcluding(obj, excluding) {
6038  var copy = {},
6039      p;
6040
6041  for (p in obj) {
6042    p in excluding || (copy[p] = obj[p]);
6043  }
6044
6045  return copy;
6046},
6047    _inheritDefaults = function _inheritDefaults(vars) {
6048  var parent = vars.parent || _globalTimeline,
6049      func = vars.keyframes ? _setKeyframeDefaults(_isArray(vars.keyframes)) : _setDefaults;
6050
6051  if (_isNotFalse(vars.inherit)) {
6052    while (parent) {
6053      func(vars, parent.vars.defaults);
6054      parent = parent.parent || parent._dp;
6055    }
6056  }
6057
6058  return vars;
6059},
6060    _arraysMatch = function _arraysMatch(a1, a2) {
6061  var i = a1.length,
6062      match = i === a2.length;
6063
6064  while (match && i-- && a1[i] === a2[i]) {}
6065
6066  return i < 0;
6067},
6068    _addLinkedListItem = function _addLinkedListItem(parent, child, firstProp, lastProp, sortBy) {
6069  if (firstProp === void 0) {
6070    firstProp = "_first";
6071  }
6072
6073  if (lastProp === void 0) {
6074    lastProp = "_last";
6075  }
6076
6077  var prev = parent[lastProp],
6078      t;
6079
6080  if (sortBy) {
6081    t = child[sortBy];
6082
6083    while (prev && prev[sortBy] > t) {
6084      prev = prev._prev;
6085    }
6086  }
6087
6088  if (prev) {
6089    child._next = prev._next;
6090    prev._next = child;
6091  } else {
6092    child._next = parent[firstProp];
6093    parent[firstProp] = child;
6094  }
6095
6096  if (child._next) {
6097    child._next._prev = child;
6098  } else {
6099    parent[lastProp] = child;
6100  }
6101
6102  child._prev = prev;
6103  child.parent = child._dp = parent;
6104  return child;
6105},
6106    _removeLinkedListItem = function _removeLinkedListItem(parent, child, firstProp, lastProp) {
6107  if (firstProp === void 0) {
6108    firstProp = "_first";
6109  }
6110
6111  if (lastProp === void 0) {
6112    lastProp = "_last";
6113  }
6114
6115  var prev = child._prev,
6116      next = child._next;
6117
6118  if (prev) {
6119    prev._next = next;
6120  } else if (parent[firstProp] === child) {
6121    parent[firstProp] = next;
6122  }
6123
6124  if (next) {
6125    next._prev = prev;
6126  } else if (parent[lastProp] === child) {
6127    parent[lastProp] = prev;
6128  }
6129
6130  child._next = child._prev = child.parent = null; // don't delete the _dp just so we can revert if necessary. But parent should be null to indicate the item isn't in a linked list.
6131},
6132    _removeFromParent = function _removeFromParent(child, onlyIfParentHasAutoRemove) {
6133  child.parent && (!onlyIfParentHasAutoRemove || child.parent.autoRemoveChildren) && child.parent.remove && child.parent.remove(child);
6134  child._act = 0;
6135},
6136    _uncache = function _uncache(animation, child) {
6137  if (animation && (!child || child._end > animation._dur || child._start < 0)) {
6138    // performance optimization: if a child animation is passed in we should only uncache if that child EXTENDS the animation (its end time is beyond the end)
6139    var a = animation;
6140
6141    while (a) {
6142      a._dirty = 1;
6143      a = a.parent;
6144    }
6145  }
6146
6147  return animation;
6148},
6149    _recacheAncestors = function _recacheAncestors(animation) {
6150  var parent = animation.parent;
6151
6152  while (parent && parent.parent) {
6153    //sometimes we must force a re-sort of all children and update the duration/totalDuration of all ancestor timelines immediately in case, for example, in the middle of a render loop, one tween alters another tween's timeScale which shoves its startTime before 0, forcing the parent timeline to shift around and shiftChildren() which could affect that next tween's render (startTime). Doesn't matter for the root timeline though.
6154    parent._dirty = 1;
6155    parent.totalDuration();
6156    parent = parent.parent;
6157  }
6158
6159  return animation;
6160},
6161    _rewindStartAt = function _rewindStartAt(tween, totalTime, suppressEvents, force) {
6162  return tween._startAt && (_reverting ? tween._startAt.revert(_revertConfigNoKill) : tween.vars.immediateRender && !tween.vars.autoRevert || tween._startAt.render(totalTime, true, force));
6163},
6164    _hasNoPausedAncestors = function _hasNoPausedAncestors(animation) {
6165  return !animation || animation._ts && _hasNoPausedAncestors(animation.parent);
6166},
6167    _elapsedCycleDuration = function _elapsedCycleDuration(animation) {
6168  return animation._repeat ? _animationCycle(animation._tTime, animation = animation.duration() + animation._rDelay) * animation : 0;
6169},
6170    // feed in the totalTime and cycleDuration and it'll return the cycle (iteration minus 1) and if the playhead is exactly at the very END, it will NOT bump up to the next cycle.
6171_animationCycle = function _animationCycle(tTime, cycleDuration) {
6172  var whole = Math.floor(tTime /= cycleDuration);
6173  return tTime && whole === tTime ? whole - 1 : whole;
6174},
6175    _parentToChildTotalTime = function _parentToChildTotalTime(parentTime, child) {
6176  return (parentTime - child._start) * child._ts + (child._ts >= 0 ? 0 : child._dirty ? child.totalDuration() : child._tDur);
6177},
6178    _setEnd = function _setEnd(animation) {
6179  return animation._end = _roundPrecise(animation._start + (animation._tDur / Math.abs(animation._ts || animation._rts || _tinyNum) || 0));
6180},
6181    _alignPlayhead = function _alignPlayhead(animation, totalTime) {
6182  // adjusts the animation's _start and _end according to the provided totalTime (only if the parent's smoothChildTiming is true and the animation isn't paused). It doesn't do any rendering or forcing things back into parent timelines, etc. - that's what totalTime() is for.
6183  var parent = animation._dp;
6184
6185  if (parent && parent.smoothChildTiming && animation._ts) {
6186    animation._start = _roundPrecise(parent._time - (animation._ts > 0 ? totalTime / animation._ts : ((animation._dirty ? animation.totalDuration() : animation._tDur) - totalTime) / -animation._ts));
6187
6188    _setEnd(animation);
6189
6190    parent._dirty || _uncache(parent, animation); //for performance improvement. If the parent's cache is already dirty, it already took care of marking the ancestors as dirty too, so skip the function call here.
6191  }
6192
6193  return animation;
6194},
6195
6196/*
6197_totalTimeToTime = (clampedTotalTime, duration, repeat, repeatDelay, yoyo) => {
6198	let cycleDuration = duration + repeatDelay,
6199		time = _round(clampedTotalTime % cycleDuration);
6200	if (time > duration) {
6201		time = duration;
6202	}
6203	return (yoyo && (~~(clampedTotalTime / cycleDuration) & 1)) ? duration - time : time;
6204},
6205*/
6206_postAddChecks = function _postAddChecks(timeline, child) {
6207  var t;
6208
6209  if (child._time || !child._dur && child._initted || child._start < timeline._time && (child._dur || !child.add)) {
6210    // in case, for example, the _start is moved on a tween that has already rendered, or if it's being inserted into a timeline BEFORE where the playhead is currently. Imagine it's at its end state, then the startTime is moved WAY later (after the end of this timeline), it should render at its beginning. Special case: if it's a timeline (has .add() method) and no duration, we can skip rendering because the user may be populating it AFTER adding it to a parent timeline (unconventional, but possible, and we wouldn't want it to get removed if the parent's autoRemoveChildren is true).
6211    t = _parentToChildTotalTime(timeline.rawTime(), child);
6212
6213    if (!child._dur || _clamp(0, child.totalDuration(), t) - child._tTime > _tinyNum) {
6214      child.render(t, true);
6215    }
6216  } //if the timeline has already ended but the inserted tween/timeline extends the duration, we should enable this timeline again so that it renders properly. We should also align the playhead with the parent timeline's when appropriate.
6217
6218
6219  if (_uncache(timeline, child)._dp && timeline._initted && timeline._time >= timeline._dur && timeline._ts) {
6220    //in case any of the ancestors had completed but should now be enabled...
6221    if (timeline._dur < timeline.duration()) {
6222      t = timeline;
6223
6224      while (t._dp) {
6225        t.rawTime() >= 0 && t.totalTime(t._tTime); //moves the timeline (shifts its startTime) if necessary, and also enables it. If it's currently zero, though, it may not be scheduled to render until later so there's no need to force it to align with the current playhead position. Only move to catch up with the playhead.
6226
6227        t = t._dp;
6228      }
6229    }
6230
6231    timeline._zTime = -_tinyNum; // helps ensure that the next render() will be forced (crossingStart = true in render()), even if the duration hasn't changed (we're adding a child which would need to get rendered). Definitely an edge case. Note: we MUST do this AFTER the loop above where the totalTime() might trigger a render() because this _addToTimeline() method gets called from the Animation constructor, BEFORE tweens even record their targets, etc. so we wouldn't want things to get triggered in the wrong order.
6232  }
6233},
6234    _addToTimeline = function _addToTimeline(timeline, child, position, skipChecks) {
6235  child.parent && _removeFromParent(child);
6236  child._start = _roundPrecise((_isNumber(position) ? position : position || timeline !== _globalTimeline ? _parsePosition(timeline, position, child) : timeline._time) + child._delay);
6237  child._end = _roundPrecise(child._start + (child.totalDuration() / Math.abs(child.timeScale()) || 0));
6238
6239  _addLinkedListItem(timeline, child, "_first", "_last", timeline._sort ? "_start" : 0);
6240
6241  _isFromOrFromStart(child) || (timeline._recent = child);
6242  skipChecks || _postAddChecks(timeline, child);
6243  timeline._ts < 0 && _alignPlayhead(timeline, timeline._tTime); // if the timeline is reversed and the new child makes it longer, we may need to adjust the parent's _start (push it back)
6244
6245  return timeline;
6246},
6247    _scrollTrigger = function _scrollTrigger(animation, trigger) {
6248  return (_globals.ScrollTrigger || _missingPlugin("scrollTrigger", trigger)) && _globals.ScrollTrigger.create(trigger, animation);
6249},
6250    _attemptInitTween = function _attemptInitTween(tween, time, force, suppressEvents, tTime) {
6251  _initTween(tween, time, tTime);
6252
6253  if (!tween._initted) {
6254    return 1;
6255  }
6256
6257  if (!force && tween._pt && !_reverting && (tween._dur && tween.vars.lazy !== false || !tween._dur && tween.vars.lazy) && _lastRenderedFrame !== _ticker.frame) {
6258    _lazyTweens.push(tween);
6259
6260    tween._lazy = [tTime, suppressEvents];
6261    return 1;
6262  }
6263},
6264    _parentPlayheadIsBeforeStart = function _parentPlayheadIsBeforeStart(_ref) {
6265  var parent = _ref.parent;
6266  return parent && parent._ts && parent._initted && !parent._lock && (parent.rawTime() < 0 || _parentPlayheadIsBeforeStart(parent));
6267},
6268    // check parent's _lock because when a timeline repeats/yoyos and does its artificial wrapping, we shouldn't force the ratio back to 0
6269_isFromOrFromStart = function _isFromOrFromStart(_ref2) {
6270  var data = _ref2.data;
6271  return data === "isFromStart" || data === "isStart";
6272},
6273    _renderZeroDurationTween = function _renderZeroDurationTween(tween, totalTime, suppressEvents, force) {
6274  var prevRatio = tween.ratio,
6275      ratio = totalTime < 0 || !totalTime && (!tween._start && _parentPlayheadIsBeforeStart(tween) && !(!tween._initted && _isFromOrFromStart(tween)) || (tween._ts < 0 || tween._dp._ts < 0) && !_isFromOrFromStart(tween)) ? 0 : 1,
6276      // if the tween or its parent is reversed and the totalTime is 0, we should go to a ratio of 0. Edge case: if a from() or fromTo() stagger tween is placed later in a timeline, the "startAt" zero-duration tween could initially render at a time when the parent timeline's playhead is technically BEFORE where this tween is, so make sure that any "from" and "fromTo" startAt tweens are rendered the first time at a ratio of 1.
6277  repeatDelay = tween._rDelay,
6278      tTime = 0,
6279      pt,
6280      iteration,
6281      prevIteration;
6282
6283  if (repeatDelay && tween._repeat) {
6284    // in case there's a zero-duration tween that has a repeat with a repeatDelay
6285    tTime = _clamp(0, tween._tDur, totalTime);
6286    iteration = _animationCycle(tTime, repeatDelay);
6287    tween._yoyo && iteration & 1 && (ratio = 1 - ratio);
6288
6289    if (iteration !== _animationCycle(tween._tTime, repeatDelay)) {
6290      // if iteration changed
6291      prevRatio = 1 - ratio;
6292      tween.vars.repeatRefresh && tween._initted && tween.invalidate();
6293    }
6294  }
6295
6296  if (ratio !== prevRatio || _reverting || force || tween._zTime === _tinyNum || !totalTime && tween._zTime) {
6297    if (!tween._initted && _attemptInitTween(tween, totalTime, force, suppressEvents, tTime)) {
6298      // if we render the very beginning (time == 0) of a fromTo(), we must force the render (normal tweens wouldn't need to render at a time of 0 when the prevTime was also 0). This is also mandatory to make sure overwriting kicks in immediately.
6299      return;
6300    }
6301
6302    prevIteration = tween._zTime;
6303    tween._zTime = totalTime || (suppressEvents ? _tinyNum : 0); // when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect.
6304
6305    suppressEvents || (suppressEvents = totalTime && !prevIteration); // if it was rendered previously at exactly 0 (_zTime) and now the playhead is moving away, DON'T fire callbacks otherwise they'll seem like duplicates.
6306
6307    tween.ratio = ratio;
6308    tween._from && (ratio = 1 - ratio);
6309    tween._time = 0;
6310    tween._tTime = tTime;
6311    pt = tween._pt;
6312
6313    while (pt) {
6314      pt.r(ratio, pt.d);
6315      pt = pt._next;
6316    }
6317
6318    totalTime < 0 && _rewindStartAt(tween, totalTime, suppressEvents, true);
6319    tween._onUpdate && !suppressEvents && _callback(tween, "onUpdate");
6320    tTime && tween._repeat && !suppressEvents && tween.parent && _callback(tween, "onRepeat");
6321
6322    if ((totalTime >= tween._tDur || totalTime < 0) && tween.ratio === ratio) {
6323      ratio && _removeFromParent(tween, 1);
6324
6325      if (!suppressEvents && !_reverting) {
6326        _callback(tween, ratio ? "onComplete" : "onReverseComplete", true);
6327
6328        tween._prom && tween._prom();
6329      }
6330    }
6331  } else if (!tween._zTime) {
6332    tween._zTime = totalTime;
6333  }
6334},
6335    _findNextPauseTween = function _findNextPauseTween(animation, prevTime, time) {
6336  var child;
6337
6338  if (time > prevTime) {
6339    child = animation._first;
6340
6341    while (child && child._start <= time) {
6342      if (child.data === "isPause" && child._start > prevTime) {
6343        return child;
6344      }
6345
6346      child = child._next;
6347    }
6348  } else {
6349    child = animation._last;
6350
6351    while (child && child._start >= time) {
6352      if (child.data === "isPause" && child._start < prevTime) {
6353        return child;
6354      }
6355
6356      child = child._prev;
6357    }
6358  }
6359},
6360    _setDuration = function _setDuration(animation, duration, skipUncache, leavePlayhead) {
6361  var repeat = animation._repeat,
6362      dur = _roundPrecise(duration) || 0,
6363      totalProgress = animation._tTime / animation._tDur;
6364  totalProgress && !leavePlayhead && (animation._time *= dur / animation._dur);
6365  animation._dur = dur;
6366  animation._tDur = !repeat ? dur : repeat < 0 ? 1e10 : _roundPrecise(dur * (repeat + 1) + animation._rDelay * repeat);
6367  totalProgress > 0 && !leavePlayhead && _alignPlayhead(animation, animation._tTime = animation._tDur * totalProgress);
6368  animation.parent && _setEnd(animation);
6369  skipUncache || _uncache(animation.parent, animation);
6370  return animation;
6371},
6372    _onUpdateTotalDuration = function _onUpdateTotalDuration(animation) {
6373  return animation instanceof Timeline ? _uncache(animation) : _setDuration(animation, animation._dur);
6374},
6375    _zeroPosition = {
6376  _start: 0,
6377  endTime: _emptyFunc,
6378  totalDuration: _emptyFunc
6379},
6380    _parsePosition = function _parsePosition(animation, position, percentAnimation) {
6381  var labels = animation.labels,
6382      recent = animation._recent || _zeroPosition,
6383      clippedDuration = animation.duration() >= _bigNum ? recent.endTime(false) : animation._dur,
6384      //in case there's a child that infinitely repeats, users almost never intend for the insertion point of a new child to be based on a SUPER long value like that so we clip it and assume the most recently-added child's endTime should be used instead.
6385  i,
6386      offset,
6387      isPercent;
6388
6389  if (_isString(position) && (isNaN(position) || position in labels)) {
6390    //if the string is a number like "1", check to see if there's a label with that name, otherwise interpret it as a number (absolute value).
6391    offset = position.charAt(0);
6392    isPercent = position.substr(-1) === "%";
6393    i = position.indexOf("=");
6394
6395    if (offset === "<" || offset === ">") {
6396      i >= 0 && (position = position.replace(/=/, ""));
6397      return (offset === "<" ? recent._start : recent.endTime(recent._repeat >= 0)) + (parseFloat(position.substr(1)) || 0) * (isPercent ? (i < 0 ? recent : percentAnimation).totalDuration() / 100 : 1);
6398    }
6399
6400    if (i < 0) {
6401      position in labels || (labels[position] = clippedDuration);
6402      return labels[position];
6403    }
6404
6405    offset = parseFloat(position.charAt(i - 1) + position.substr(i + 1));
6406
6407    if (isPercent && percentAnimation) {
6408      offset = offset / 100 * (_isArray(percentAnimation) ? percentAnimation[0] : percentAnimation).totalDuration();
6409    }
6410
6411    return i > 1 ? _parsePosition(animation, position.substr(0, i - 1), percentAnimation) + offset : clippedDuration + offset;
6412  }
6413
6414  return position == null ? clippedDuration : +position;
6415},
6416    _createTweenType = function _createTweenType(type, params, timeline) {
6417  var isLegacy = _isNumber(params[1]),
6418      varsIndex = (isLegacy ? 2 : 1) + (type < 2 ? 0 : 1),
6419      vars = params[varsIndex],
6420      irVars,
6421      parent;
6422
6423  isLegacy && (vars.duration = params[1]);
6424  vars.parent = timeline;
6425
6426  if (type) {
6427    irVars = vars;
6428    parent = timeline;
6429
6430    while (parent && !("immediateRender" in irVars)) {
6431      // inheritance hasn't happened yet, but someone may have set a default in an ancestor timeline. We could do vars.immediateRender = _isNotFalse(_inheritDefaults(vars).immediateRender) but that'd exact a slight performance penalty because _inheritDefaults() also runs in the Tween constructor. We're paying a small kb price here to gain speed.
6432      irVars = parent.vars.defaults || {};
6433      parent = _isNotFalse(parent.vars.inherit) && parent.parent;
6434    }
6435
6436    vars.immediateRender = _isNotFalse(irVars.immediateRender);
6437    type < 2 ? vars.runBackwards = 1 : vars.startAt = params[varsIndex - 1]; // "from" vars
6438  }
6439
6440  return new Tween(params[0], vars, params[varsIndex + 1]);
6441},
6442    _conditionalReturn = function _conditionalReturn(value, func) {
6443  return value || value === 0 ? func(value) : func;
6444},
6445    _clamp = function _clamp(min, max, value) {
6446  return value < min ? min : value > max ? max : value;
6447},
6448    getUnit = function getUnit(value, v) {
6449  return !_isString(value) || !(v = _unitExp.exec(value)) ? "" : v[1];
6450},
6451    // note: protect against padded numbers as strings, like "100.100". That shouldn't return "00" as the unit. If it's numeric, return no unit.
6452clamp = function clamp(min, max, value) {
6453  return _conditionalReturn(value, function (v) {
6454    return _clamp(min, max, v);
6455  });
6456},
6457    _slice = [].slice,
6458    _isArrayLike = function _isArrayLike(value, nonEmpty) {
6459  return value && _isObject(value) && "length" in value && (!nonEmpty && !value.length || value.length - 1 in value && _isObject(value[0])) && !value.nodeType && value !== _win;
6460},
6461    _flatten = function _flatten(ar, leaveStrings, accumulator) {
6462  if (accumulator === void 0) {
6463    accumulator = [];
6464  }
6465
6466  return ar.forEach(function (value) {
6467    var _accumulator;
6468
6469    return _isString(value) && !leaveStrings || _isArrayLike(value, 1) ? (_accumulator = accumulator).push.apply(_accumulator, toArray(value)) : accumulator.push(value);
6470  }) || accumulator;
6471},
6472    //takes any value and returns an array. If it's a string (and leaveStrings isn't true), it'll use document.querySelectorAll() and convert that to an array. It'll also accept iterables like jQuery objects.
6473toArray = function toArray(value, scope, leaveStrings) {
6474  return _context && !scope && _context.selector ? _context.selector(value) : _isString(value) && !leaveStrings && (_coreInitted || !_wake()) ? _slice.call((scope || _doc).querySelectorAll(value), 0) : _isArray(value) ? _flatten(value, leaveStrings) : _isArrayLike(value) ? _slice.call(value, 0) : value ? [value] : [];
6475},
6476    selector = function selector(value) {
6477  value = toArray(value)[0] || _warn("Invalid scope") || {};
6478  return function (v) {
6479    var el = value.current || value.nativeElement || value;
6480    return toArray(v, el.querySelectorAll ? el : el === value ? _warn("Invalid scope") || _doc.createElement("div") : value);
6481  };
6482},
6483    shuffle = function shuffle(a) {
6484  return a.sort(function () {
6485    return .5 - Math.random();
6486  });
6487},
6488    // alternative that's a bit faster and more reliably diverse but bigger:   for (let j, v, i = a.length; i; j = Math.floor(Math.random() * i), v = a[--i], a[i] = a[j], a[j] = v); return a;
6489//for distributing values across an array. Can accept a number, a function or (most commonly) a function which can contain the following properties: {base, amount, from, ease, grid, axis, length, each}. Returns a function that expects the following parameters: index, target, array. Recognizes the following
6490distribute = function distribute(v) {
6491  if (_isFunction(v)) {
6492    return v;
6493  }
6494
6495  var vars = _isObject(v) ? v : {
6496    each: v
6497  },
6498      //n:1 is just to indicate v was a number; we leverage that later to set v according to the length we get. If a number is passed in, we treat it like the old stagger value where 0.1, for example, would mean that things would be distributed with 0.1 between each element in the array rather than a total "amount" that's chunked out among them all.
6499  ease = _parseEase(vars.ease),
6500      from = vars.from || 0,
6501      base = parseFloat(vars.base) || 0,
6502      cache = {},
6503      isDecimal = from > 0 && from < 1,
6504      ratios = isNaN(from) || isDecimal,
6505      axis = vars.axis,
6506      ratioX = from,
6507      ratioY = from;
6508
6509  if (_isString(from)) {
6510    ratioX = ratioY = {
6511      center: .5,
6512      edges: .5,
6513      end: 1
6514    }[from] || 0;
6515  } else if (!isDecimal && ratios) {
6516    ratioX = from[0];
6517    ratioY = from[1];
6518  }
6519
6520  return function (i, target, a) {
6521    var l = (a || vars).length,
6522        distances = cache[l],
6523        originX,
6524        originY,
6525        x,
6526        y,
6527        d,
6528        j,
6529        max,
6530        min,
6531        wrapAt;
6532
6533    if (!distances) {
6534      wrapAt = vars.grid === "auto" ? 0 : (vars.grid || [1, _bigNum])[1];
6535
6536      if (!wrapAt) {
6537        max = -_bigNum;
6538
6539        while (max < (max = a[wrapAt++].getBoundingClientRect().left) && wrapAt < l) {}
6540
6541        wrapAt--;
6542      }
6543
6544      distances = cache[l] = [];
6545      originX = ratios ? Math.min(wrapAt, l) * ratioX - .5 : from % wrapAt;
6546      originY = wrapAt === _bigNum ? 0 : ratios ? l * ratioY / wrapAt - .5 : from / wrapAt | 0;
6547      max = 0;
6548      min = _bigNum;
6549
6550      for (j = 0; j < l; j++) {
6551        x = j % wrapAt - originX;
6552        y = originY - (j / wrapAt | 0);
6553        distances[j] = d = !axis ? _sqrt(x * x + y * y) : Math.abs(axis === "y" ? y : x);
6554        d > max && (max = d);
6555        d < min && (min = d);
6556      }
6557
6558      from === "random" && shuffle(distances);
6559      distances.max = max - min;
6560      distances.min = min;
6561      distances.v = l = (parseFloat(vars.amount) || parseFloat(vars.each) * (wrapAt > l ? l - 1 : !axis ? Math.max(wrapAt, l / wrapAt) : axis === "y" ? l / wrapAt : wrapAt) || 0) * (from === "edges" ? -1 : 1);
6562      distances.b = l < 0 ? base - l : base;
6563      distances.u = getUnit(vars.amount || vars.each) || 0; //unit
6564
6565      ease = ease && l < 0 ? _invertEase(ease) : ease;
6566    }
6567
6568    l = (distances[i] - distances.min) / distances.max || 0;
6569    return _roundPrecise(distances.b + (ease ? ease(l) : l) * distances.v) + distances.u; //round in order to work around floating point errors
6570  };
6571},
6572    _roundModifier = function _roundModifier(v) {
6573  //pass in 0.1 get a function that'll round to the nearest tenth, or 5 to round to the closest 5, or 0.001 to the closest 1000th, etc.
6574  var p = Math.pow(10, ((v + "").split(".")[1] || "").length); //to avoid floating point math errors (like 24 * 0.1 == 2.4000000000000004), we chop off at a specific number of decimal places (much faster than toFixed())
6575
6576  return function (raw) {
6577    var n = _roundPrecise(Math.round(parseFloat(raw) / v) * v * p);
6578
6579    return (n - n % 1) / p + (_isNumber(raw) ? 0 : getUnit(raw)); // n - n % 1 replaces Math.floor() in order to handle negative values properly. For example, Math.floor(-150.00000000000003) is 151!
6580  };
6581},
6582    snap = function snap(snapTo, value) {
6583  var isArray = _isArray(snapTo),
6584      radius,
6585      is2D;
6586
6587  if (!isArray && _isObject(snapTo)) {
6588    radius = isArray = snapTo.radius || _bigNum;
6589
6590    if (snapTo.values) {
6591      snapTo = toArray(snapTo.values);
6592
6593      if (is2D = !_isNumber(snapTo[0])) {
6594        radius *= radius; //performance optimization so we don't have to Math.sqrt() in the loop.
6595      }
6596    } else {
6597      snapTo = _roundModifier(snapTo.increment);
6598    }
6599  }
6600
6601  return _conditionalReturn(value, !isArray ? _roundModifier(snapTo) : _isFunction(snapTo) ? function (raw) {
6602    is2D = snapTo(raw);
6603    return Math.abs(is2D - raw) <= radius ? is2D : raw;
6604  } : function (raw) {
6605    var x = parseFloat(is2D ? raw.x : raw),
6606        y = parseFloat(is2D ? raw.y : 0),
6607        min = _bigNum,
6608        closest = 0,
6609        i = snapTo.length,
6610        dx,
6611        dy;
6612
6613    while (i--) {
6614      if (is2D) {
6615        dx = snapTo[i].x - x;
6616        dy = snapTo[i].y - y;
6617        dx = dx * dx + dy * dy;
6618      } else {
6619        dx = Math.abs(snapTo[i] - x);
6620      }
6621
6622      if (dx < min) {
6623        min = dx;
6624        closest = i;
6625      }
6626    }
6627
6628    closest = !radius || min <= radius ? snapTo[closest] : raw;
6629    return is2D || closest === raw || _isNumber(raw) ? closest : closest + getUnit(raw);
6630  });
6631},
6632    random = function random(min, max, roundingIncrement, returnFunction) {
6633  return _conditionalReturn(_isArray(min) ? !max : roundingIncrement === true ? !!(roundingIncrement = 0) : !returnFunction, function () {
6634    return _isArray(min) ? min[~~(Math.random() * min.length)] : (roundingIncrement = roundingIncrement || 1e-5) && (returnFunction = roundingIncrement < 1 ? Math.pow(10, (roundingIncrement + "").length - 2) : 1) && Math.floor(Math.round((min - roundingIncrement / 2 + Math.random() * (max - min + roundingIncrement * .99)) / roundingIncrement) * roundingIncrement * returnFunction) / returnFunction;
6635  });
6636},
6637    pipe = function pipe() {
6638  for (var _len = arguments.length, functions = new Array(_len), _key = 0; _key < _len; _key++) {
6639    functions[_key] = arguments[_key];
6640  }
6641
6642  return function (value) {
6643    return functions.reduce(function (v, f) {
6644      return f(v);
6645    }, value);
6646  };
6647},
6648    unitize = function unitize(func, unit) {
6649  return function (value) {
6650    return func(parseFloat(value)) + (unit || getUnit(value));
6651  };
6652},
6653    normalize = function normalize(min, max, value) {
6654  return mapRange(min, max, 0, 1, value);
6655},
6656    _wrapArray = function _wrapArray(a, wrapper, value) {
6657  return _conditionalReturn(value, function (index) {
6658    return a[~~wrapper(index)];
6659  });
6660},
6661    wrap = function wrap(min, max, value) {
6662  // NOTE: wrap() CANNOT be an arrow function! A very odd compiling bug causes problems (unrelated to GSAP).
6663  var range = max - min;
6664  return _isArray(min) ? _wrapArray(min, wrap(0, min.length), max) : _conditionalReturn(value, function (value) {
6665    return (range + (value - min) % range) % range + min;
6666  });
6667},
6668    wrapYoyo = function wrapYoyo(min, max, value) {
6669  var range = max - min,
6670      total = range * 2;
6671  return _isArray(min) ? _wrapArray(min, wrapYoyo(0, min.length - 1), max) : _conditionalReturn(value, function (value) {
6672    value = (total + (value - min) % total) % total || 0;
6673    return min + (value > range ? total - value : value);
6674  });
6675},
6676    _replaceRandom = function _replaceRandom(value) {
6677  //replaces all occurrences of random(...) in a string with the calculated random value. can be a range like random(-100, 100, 5) or an array like random([0, 100, 500])
6678  var prev = 0,
6679      s = "",
6680      i,
6681      nums,
6682      end,
6683      isArray;
6684
6685  while (~(i = value.indexOf("random(", prev))) {
6686    end = value.indexOf(")", i);
6687    isArray = value.charAt(i + 7) === "[";
6688    nums = value.substr(i + 7, end - i - 7).match(isArray ? _delimitedValueExp : _strictNumExp);
6689    s += value.substr(prev, i - prev) + random(isArray ? nums : +nums[0], isArray ? 0 : +nums[1], +nums[2] || 1e-5);
6690    prev = end + 1;
6691  }
6692
6693  return s + value.substr(prev, value.length - prev);
6694},
6695    mapRange = function mapRange(inMin, inMax, outMin, outMax, value) {
6696  var inRange = inMax - inMin,
6697      outRange = outMax - outMin;
6698  return _conditionalReturn(value, function (value) {
6699    return outMin + ((value - inMin) / inRange * outRange || 0);
6700  });
6701},
6702    interpolate = function interpolate(start, end, progress, mutate) {
6703  var func = isNaN(start + end) ? 0 : function (p) {
6704    return (1 - p) * start + p * end;
6705  };
6706
6707  if (!func) {
6708    var isString = _isString(start),
6709        master = {},
6710        p,
6711        i,
6712        interpolators,
6713        l,
6714        il;
6715
6716    progress === true && (mutate = 1) && (progress = null);
6717
6718    if (isString) {
6719      start = {
6720        p: start
6721      };
6722      end = {
6723        p: end
6724      };
6725    } else if (_isArray(start) && !_isArray(end)) {
6726      interpolators = [];
6727      l = start.length;
6728      il = l - 2;
6729
6730      for (i = 1; i < l; i++) {
6731        interpolators.push(interpolate(start[i - 1], start[i])); //build the interpolators up front as a performance optimization so that when the function is called many times, it can just reuse them.
6732      }
6733
6734      l--;
6735
6736      func = function func(p) {
6737        p *= l;
6738        var i = Math.min(il, ~~p);
6739        return interpolators[i](p - i);
6740      };
6741
6742      progress = end;
6743    } else if (!mutate) {
6744      start = _merge(_isArray(start) ? [] : {}, start);
6745    }
6746
6747    if (!interpolators) {
6748      for (p in end) {
6749        _addPropTween.call(master, start, p, "get", end[p]);
6750      }
6751
6752      func = function func(p) {
6753        return _renderPropTweens(p, master) || (isString ? start.p : start);
6754      };
6755    }
6756  }
6757
6758  return _conditionalReturn(progress, func);
6759},
6760    _getLabelInDirection = function _getLabelInDirection(timeline, fromTime, backward) {
6761  //used for nextLabel() and previousLabel()
6762  var labels = timeline.labels,
6763      min = _bigNum,
6764      p,
6765      distance,
6766      label;
6767
6768  for (p in labels) {
6769    distance = labels[p] - fromTime;
6770
6771    if (distance < 0 === !!backward && distance && min > (distance = Math.abs(distance))) {
6772      label = p;
6773      min = distance;
6774    }
6775  }
6776
6777  return label;
6778},
6779    _callback = function _callback(animation, type, executeLazyFirst) {
6780  var v = animation.vars,
6781      callback = v[type],
6782      prevContext = _context,
6783      context = animation._ctx,
6784      params,
6785      scope,
6786      result;
6787
6788  if (!callback) {
6789    return;
6790  }
6791
6792  params = v[type + "Params"];
6793  scope = v.callbackScope || animation;
6794  executeLazyFirst && _lazyTweens.length && _lazyRender(); //in case rendering caused any tweens to lazy-init, we should render them because typically when a timeline finishes, users expect things to have rendered fully. Imagine an onUpdate on a timeline that reports/checks tweened values.
6795
6796  context && (_context = context);
6797  result = params ? callback.apply(scope, params) : callback.call(scope);
6798  _context = prevContext;
6799  return result;
6800},
6801    _interrupt = function _interrupt(animation) {
6802  _removeFromParent(animation);
6803
6804  animation.scrollTrigger && animation.scrollTrigger.kill(!!_reverting);
6805  animation.progress() < 1 && _callback(animation, "onInterrupt");
6806  return animation;
6807},
6808    _quickTween,
6809    _registerPluginQueue = [],
6810    _createPlugin = function _createPlugin(config) {
6811  if (_windowExists() && config) {
6812    // edge case: some build tools may pass in a null/undefined value
6813    config = !config.name && config["default"] || config; //UMD packaging wraps things oddly, so for example MotionPathHelper becomes {MotionPathHelper:MotionPathHelper, default:MotionPathHelper}.
6814
6815    var name = config.name,
6816        isFunc = _isFunction(config),
6817        Plugin = name && !isFunc && config.init ? function () {
6818      this._props = [];
6819    } : config,
6820        //in case someone passes in an object that's not a plugin, like CustomEase
6821    instanceDefaults = {
6822      init: _emptyFunc,
6823      render: _renderPropTweens,
6824      add: _addPropTween,
6825      kill: _killPropTweensOf,
6826      modifier: _addPluginModifier,
6827      rawVars: 0
6828    },
6829        statics = {
6830      targetTest: 0,
6831      get: 0,
6832      getSetter: _getSetter,
6833      aliases: {},
6834      register: 0
6835    };
6836
6837    _wake();
6838
6839    if (config !== Plugin) {
6840      if (_plugins[name]) {
6841        return;
6842      }
6843
6844      _setDefaults(Plugin, _setDefaults(_copyExcluding(config, instanceDefaults), statics)); //static methods
6845
6846
6847      _merge(Plugin.prototype, _merge(instanceDefaults, _copyExcluding(config, statics))); //instance methods
6848
6849
6850      _plugins[Plugin.prop = name] = Plugin;
6851
6852      if (config.targetTest) {
6853        _harnessPlugins.push(Plugin);
6854
6855        _reservedProps[name] = 1;
6856      }
6857
6858      name = (name === "css" ? "CSS" : name.charAt(0).toUpperCase() + name.substr(1)) + "Plugin"; //for the global name. "motionPath" should become MotionPathPlugin
6859    }
6860
6861    _addGlobal(name, Plugin);
6862
6863    config.register && config.register(gsap, Plugin, PropTween);
6864  } else {
6865    config && _registerPluginQueue.push(config);
6866  }
6867},
6868
6869/*
6870 * --------------------------------------------------------------------------------------
6871 * COLORS
6872 * --------------------------------------------------------------------------------------
6873 */
6874_255 = 255,
6875    _colorLookup = {
6876  aqua: [0, _255, _255],
6877  lime: [0, _255, 0],
6878  silver: [192, 192, 192],
6879  black: [0, 0, 0],
6880  maroon: [128, 0, 0],
6881  teal: [0, 128, 128],
6882  blue: [0, 0, _255],
6883  navy: [0, 0, 128],
6884  white: [_255, _255, _255],
6885  olive: [128, 128, 0],
6886  yellow: [_255, _255, 0],
6887  orange: [_255, 165, 0],
6888  gray: [128, 128, 128],
6889  purple: [128, 0, 128],
6890  green: [0, 128, 0],
6891  red: [_255, 0, 0],
6892  pink: [_255, 192, 203],
6893  cyan: [0, _255, _255],
6894  transparent: [_255, _255, _255, 0]
6895},
6896    // possible future idea to replace the hard-coded color name values - put this in the ticker.wake() where we set the _doc:
6897// let ctx = _doc.createElement("canvas").getContext("2d");
6898// _forEachName("aqua,lime,silver,black,maroon,teal,blue,navy,white,olive,yellow,orange,gray,purple,green,red,pink,cyan", color => {ctx.fillStyle = color; _colorLookup[color] = splitColor(ctx.fillStyle)});
6899_hue = function _hue(h, m1, m2) {
6900  h += h < 0 ? 1 : h > 1 ? -1 : 0;
6901  return (h * 6 < 1 ? m1 + (m2 - m1) * h * 6 : h < .5 ? m2 : h * 3 < 2 ? m1 + (m2 - m1) * (2 / 3 - h) * 6 : m1) * _255 + .5 | 0;
6902},
6903    splitColor = function splitColor(v, toHSL, forceAlpha) {
6904  var a = !v ? _colorLookup.black : _isNumber(v) ? [v >> 16, v >> 8 & _255, v & _255] : 0,
6905      r,
6906      g,
6907      b,
6908      h,
6909      s,
6910      l,
6911      max,
6912      min,
6913      d,
6914      wasHSL;
6915
6916  if (!a) {
6917    if (v.substr(-1) === ",") {
6918      //sometimes a trailing comma is included and we should chop it off (typically from a comma-delimited list of values like a textShadow:"2px 2px 2px blue, 5px 5px 5px rgb(255,0,0)" - in this example "blue," has a trailing comma. We could strip it out inside parseComplex() but we'd need to do it to the beginning and ending values plus it wouldn't provide protection from other potential scenarios like if the user passes in a similar value.
6919      v = v.substr(0, v.length - 1);
6920    }
6921
6922    if (_colorLookup[v]) {
6923      a = _colorLookup[v];
6924    } else if (v.charAt(0) === "#") {
6925      if (v.length < 6) {
6926        //for shorthand like #9F0 or #9F0F (could have alpha)
6927        r = v.charAt(1);
6928        g = v.charAt(2);
6929        b = v.charAt(3);
6930        v = "#" + r + r + g + g + b + b + (v.length === 5 ? v.charAt(4) + v.charAt(4) : "");
6931      }
6932
6933      if (v.length === 9) {
6934        // hex with alpha, like #fd5e53ff
6935        a = parseInt(v.substr(1, 6), 16);
6936        return [a >> 16, a >> 8 & _255, a & _255, parseInt(v.substr(7), 16) / 255];
6937      }
6938
6939      v = parseInt(v.substr(1), 16);
6940      a = [v >> 16, v >> 8 & _255, v & _255];
6941    } else if (v.substr(0, 3) === "hsl") {
6942      a = wasHSL = v.match(_strictNumExp);
6943
6944      if (!toHSL) {
6945        h = +a[0] % 360 / 360;
6946        s = +a[1] / 100;
6947        l = +a[2] / 100;
6948        g = l <= .5 ? l * (s + 1) : l + s - l * s;
6949        r = l * 2 - g;
6950        a.length > 3 && (a[3] *= 1); //cast as number
6951
6952        a[0] = _hue(h + 1 / 3, r, g);
6953        a[1] = _hue(h, r, g);
6954        a[2] = _hue(h - 1 / 3, r, g);
6955      } else if (~v.indexOf("=")) {
6956        //if relative values are found, just return the raw strings with the relative prefixes in place.
6957        a = v.match(_numExp);
6958        forceAlpha && a.length < 4 && (a[3] = 1);
6959        return a;
6960      }
6961    } else {
6962      a = v.match(_strictNumExp) || _colorLookup.transparent;
6963    }
6964
6965    a = a.map(Number);
6966  }
6967
6968  if (toHSL && !wasHSL) {
6969    r = a[0] / _255;
6970    g = a[1] / _255;
6971    b = a[2] / _255;
6972    max = Math.max(r, g, b);
6973    min = Math.min(r, g, b);
6974    l = (max + min) / 2;
6975
6976    if (max === min) {
6977      h = s = 0;
6978    } else {
6979      d = max - min;
6980      s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
6981      h = max === r ? (g - b) / d + (g < b ? 6 : 0) : max === g ? (b - r) / d + 2 : (r - g) / d + 4;
6982      h *= 60;
6983    }
6984
6985    a[0] = ~~(h + .5);
6986    a[1] = ~~(s * 100 + .5);
6987    a[2] = ~~(l * 100 + .5);
6988  }
6989
6990  forceAlpha && a.length < 4 && (a[3] = 1);
6991  return a;
6992},
6993    _colorOrderData = function _colorOrderData(v) {
6994  // strips out the colors from the string, finds all the numeric slots (with units) and returns an array of those. The Array also has a "c" property which is an Array of the index values where the colors belong. This is to help work around issues where there's a mis-matched order of color/numeric data like drop-shadow(#f00 0px 1px 2px) and drop-shadow(0x 1px 2px #f00). This is basically a helper function used in _formatColors()
6995  var values = [],
6996      c = [],
6997      i = -1;
6998  v.split(_colorExp).forEach(function (v) {
6999    var a = v.match(_numWithUnitExp) || [];
7000    values.push.apply(values, a);
7001    c.push(i += a.length + 1);
7002  });
7003  values.c = c;
7004  return values;
7005},
7006    _formatColors = function _formatColors(s, toHSL, orderMatchData) {
7007  var result = "",
7008      colors = (s + result).match(_colorExp),
7009      type = toHSL ? "hsla(" : "rgba(",
7010      i = 0,
7011      c,
7012      shell,
7013      d,
7014      l;
7015
7016  if (!colors) {
7017    return s;
7018  }
7019
7020  colors = colors.map(function (color) {
7021    return (color = splitColor(color, toHSL, 1)) && type + (toHSL ? color[0] + "," + color[1] + "%," + color[2] + "%," + color[3] : color.join(",")) + ")";
7022  });
7023
7024  if (orderMatchData) {
7025    d = _colorOrderData(s);
7026    c = orderMatchData.c;
7027
7028    if (c.join(result) !== d.c.join(result)) {
7029      shell = s.replace(_colorExp, "1").split(_numWithUnitExp);
7030      l = shell.length - 1;
7031
7032      for (; i < l; i++) {
7033        result += shell[i] + (~c.indexOf(i) ? colors.shift() || type + "0,0,0,0)" : (d.length ? d : colors.length ? colors : orderMatchData).shift());
7034      }
7035    }
7036  }
7037
7038  if (!shell) {
7039    shell = s.split(_colorExp);
7040    l = shell.length - 1;
7041
7042    for (; i < l; i++) {
7043      result += shell[i] + colors[i];
7044    }
7045  }
7046
7047  return result + shell[l];
7048},
7049    _colorExp = function () {
7050  var s = "(?:\\b(?:(?:rgb|rgba|hsl|hsla)\\(.+?\\))|\\B#(?:[0-9a-f]{3,4}){1,2}\\b",
7051      //we'll dynamically build this Regular Expression to conserve file size. After building it, it will be able to find rgb(), rgba(), # (hexadecimal), and named color values like red, blue, purple, etc.,
7052  p;
7053
7054  for (p in _colorLookup) {
7055    s += "|" + p + "\\b";
7056  }
7057
7058  return new RegExp(s + ")", "gi");
7059}(),
7060    _hslExp = /hsl[a]?\(/,
7061    _colorStringFilter = function _colorStringFilter(a) {
7062  var combined = a.join(" "),
7063      toHSL;
7064  _colorExp.lastIndex = 0;
7065
7066  if (_colorExp.test(combined)) {
7067    toHSL = _hslExp.test(combined);
7068    a[1] = _formatColors(a[1], toHSL);
7069    a[0] = _formatColors(a[0], toHSL, _colorOrderData(a[1])); // make sure the order of numbers/colors match with the END value.
7070
7071    return true;
7072  }
7073},
7074
7075/*
7076 * --------------------------------------------------------------------------------------
7077 * TICKER
7078 * --------------------------------------------------------------------------------------
7079 */
7080_tickerActive,
7081    _ticker = function () {
7082  var _getTime = Date.now,
7083      _lagThreshold = 500,
7084      _adjustedLag = 33,
7085      _startTime = _getTime(),
7086      _lastUpdate = _startTime,
7087      _gap = 1000 / 240,
7088      _nextTime = _gap,
7089      _listeners = [],
7090      _id,
7091      _req,
7092      _raf,
7093      _self,
7094      _delta,
7095      _i,
7096      _tick = function _tick(v) {
7097    var elapsed = _getTime() - _lastUpdate,
7098        manual = v === true,
7099        overlap,
7100        dispatch,
7101        time,
7102        frame;
7103
7104    elapsed > _lagThreshold && (_startTime += elapsed - _adjustedLag);
7105    _lastUpdate += elapsed;
7106    time = _lastUpdate - _startTime;
7107    overlap = time - _nextTime;
7108
7109    if (overlap > 0 || manual) {
7110      frame = ++_self.frame;
7111      _delta = time - _self.time * 1000;
7112      _self.time = time = time / 1000;
7113      _nextTime += overlap + (overlap >= _gap ? 4 : _gap - overlap);
7114      dispatch = 1;
7115    }
7116
7117    manual || (_id = _req(_tick)); //make sure the request is made before we dispatch the "tick" event so that timing is maintained. Otherwise, if processing the "tick" requires a bunch of time (like 15ms) and we're using a setTimeout() that's based on 16.7ms, it'd technically take 31.7ms between frames otherwise.
7118
7119    if (dispatch) {
7120      for (_i = 0; _i < _listeners.length; _i++) {
7121        // use _i and check _listeners.length instead of a variable because a listener could get removed during the loop, and if that happens to an element less than the current index, it'd throw things off in the loop.
7122        _listeners[_i](time, _delta, frame, v);
7123      }
7124    }
7125  };
7126
7127  _self = {
7128    time: 0,
7129    frame: 0,
7130    tick: function tick() {
7131      _tick(true);
7132    },
7133    deltaRatio: function deltaRatio(fps) {
7134      return _delta / (1000 / (fps || 60));
7135    },
7136    wake: function wake() {
7137      if (_coreReady) {
7138        if (!_coreInitted && _windowExists()) {
7139          _win = _coreInitted = window;
7140          _doc = _win.document || {};
7141          _globals.gsap = gsap;
7142          (_win.gsapVersions || (_win.gsapVersions = [])).push(gsap.version);
7143
7144          _install(_installScope || _win.GreenSockGlobals || !_win.gsap && _win || {});
7145
7146          _raf = _win.requestAnimationFrame;
7147
7148          _registerPluginQueue.forEach(_createPlugin);
7149        }
7150
7151        _id && _self.sleep();
7152
7153        _req = _raf || function (f) {
7154          return setTimeout(f, _nextTime - _self.time * 1000 + 1 | 0);
7155        };
7156
7157        _tickerActive = 1;
7158
7159        _tick(2);
7160      }
7161    },
7162    sleep: function sleep() {
7163      (_raf ? _win.cancelAnimationFrame : clearTimeout)(_id);
7164      _tickerActive = 0;
7165      _req = _emptyFunc;
7166    },
7167    lagSmoothing: function lagSmoothing(threshold, adjustedLag) {
7168      _lagThreshold = threshold || Infinity; // zero should be interpreted as basically unlimited
7169
7170      _adjustedLag = Math.min(adjustedLag || 33, _lagThreshold);
7171    },
7172    fps: function fps(_fps) {
7173      _gap = 1000 / (_fps || 240);
7174      _nextTime = _self.time * 1000 + _gap;
7175    },
7176    add: function add(callback, once, prioritize) {
7177      var func = once ? function (t, d, f, v) {
7178        callback(t, d, f, v);
7179
7180        _self.remove(func);
7181      } : callback;
7182
7183      _self.remove(callback);
7184
7185      _listeners[prioritize ? "unshift" : "push"](func);
7186
7187      _wake();
7188
7189      return func;
7190    },
7191    remove: function remove(callback, i) {
7192      ~(i = _listeners.indexOf(callback)) && _listeners.splice(i, 1) && _i >= i && _i--;
7193    },
7194    _listeners: _listeners
7195  };
7196  return _self;
7197}(),
7198    _wake = function _wake() {
7199  return !_tickerActive && _ticker.wake();
7200},
7201    //also ensures the core classes are initialized.
7202
7203/*
7204* -------------------------------------------------
7205* EASING
7206* -------------------------------------------------
7207*/
7208_easeMap = {},
7209    _customEaseExp = /^[\d.\-M][\d.\-,\s]/,
7210    _quotesExp = /["']/g,
7211    _parseObjectInString = function _parseObjectInString(value) {
7212  //takes a string like "{wiggles:10, type:anticipate})" and turns it into a real object. Notice it ends in ")" and includes the {} wrappers. This is because we only use this function for parsing ease configs and prioritized optimization rather than reusability.
7213  var obj = {},
7214      split = value.substr(1, value.length - 3).split(":"),
7215      key = split[0],
7216      i = 1,
7217      l = split.length,
7218      index,
7219      val,
7220      parsedVal;
7221
7222  for (; i < l; i++) {
7223    val = split[i];
7224    index = i !== l - 1 ? val.lastIndexOf(",") : val.length;
7225    parsedVal = val.substr(0, index);
7226    obj[key] = isNaN(parsedVal) ? parsedVal.replace(_quotesExp, "").trim() : +parsedVal;
7227    key = val.substr(index + 1).trim();
7228  }
7229
7230  return obj;
7231},
7232    _valueInParentheses = function _valueInParentheses(value) {
7233  var open = value.indexOf("(") + 1,
7234      close = value.indexOf(")"),
7235      nested = value.indexOf("(", open);
7236  return value.substring(open, ~nested && nested < close ? value.indexOf(")", close + 1) : close);
7237},
7238    _configEaseFromString = function _configEaseFromString(name) {
7239  //name can be a string like "elastic.out(1,0.5)", and pass in _easeMap as obj and it'll parse it out and call the actual function like _easeMap.Elastic.easeOut.config(1,0.5). It will also parse custom ease strings as long as CustomEase is loaded and registered (internally as _easeMap._CE).
7240  var split = (name + "").split("("),
7241      ease = _easeMap[split[0]];
7242  return ease && split.length > 1 && ease.config ? ease.config.apply(null, ~name.indexOf("{") ? [_parseObjectInString(split[1])] : _valueInParentheses(name).split(",").map(_numericIfPossible)) : _easeMap._CE && _customEaseExp.test(name) ? _easeMap._CE("", name) : ease;
7243},
7244    _invertEase = function _invertEase(ease) {
7245  return function (p) {
7246    return 1 - ease(1 - p);
7247  };
7248},
7249    // allow yoyoEase to be set in children and have those affected when the parent/ancestor timeline yoyos.
7250_propagateYoyoEase = function _propagateYoyoEase(timeline, isYoyo) {
7251  var child = timeline._first,
7252      ease;
7253
7254  while (child) {
7255    if (child instanceof Timeline) {
7256      _propagateYoyoEase(child, isYoyo);
7257    } else if (child.vars.yoyoEase && (!child._yoyo || !child._repeat) && child._yoyo !== isYoyo) {
7258      if (child.timeline) {
7259        _propagateYoyoEase(child.timeline, isYoyo);
7260      } else {
7261        ease = child._ease;
7262        child._ease = child._yEase;
7263        child._yEase = ease;
7264        child._yoyo = isYoyo;
7265      }
7266    }
7267
7268    child = child._next;
7269  }
7270},
7271    _parseEase = function _parseEase(ease, defaultEase) {
7272  return !ease ? defaultEase : (_isFunction(ease) ? ease : _easeMap[ease] || _configEaseFromString(ease)) || defaultEase;
7273},
7274    _insertEase = function _insertEase(names, easeIn, easeOut, easeInOut) {
7275  if (easeOut === void 0) {
7276    easeOut = function easeOut(p) {
7277      return 1 - easeIn(1 - p);
7278    };
7279  }
7280
7281  if (easeInOut === void 0) {
7282    easeInOut = function easeInOut(p) {
7283      return p < .5 ? easeIn(p * 2) / 2 : 1 - easeIn((1 - p) * 2) / 2;
7284    };
7285  }
7286
7287  var ease = {
7288    easeIn: easeIn,
7289    easeOut: easeOut,
7290    easeInOut: easeInOut
7291  },
7292      lowercaseName;
7293
7294  _forEachName(names, function (name) {
7295    _easeMap[name] = _globals[name] = ease;
7296    _easeMap[lowercaseName = name.toLowerCase()] = easeOut;
7297
7298    for (var p in ease) {
7299      _easeMap[lowercaseName + (p === "easeIn" ? ".in" : p === "easeOut" ? ".out" : ".inOut")] = _easeMap[name + "." + p] = ease[p];
7300    }
7301  });
7302
7303  return ease;
7304},
7305    _easeInOutFromOut = function _easeInOutFromOut(easeOut) {
7306  return function (p) {
7307    return p < .5 ? (1 - easeOut(1 - p * 2)) / 2 : .5 + easeOut((p - .5) * 2) / 2;
7308  };
7309},
7310    _configElastic = function _configElastic(type, amplitude, period) {
7311  var p1 = amplitude >= 1 ? amplitude : 1,
7312      //note: if amplitude is < 1, we simply adjust the period for a more natural feel. Otherwise the math doesn't work right and the curve starts at 1.
7313  p2 = (period || (type ? .3 : .45)) / (amplitude < 1 ? amplitude : 1),
7314      p3 = p2 / _2PI * (Math.asin(1 / p1) || 0),
7315      easeOut = function easeOut(p) {
7316    return p === 1 ? 1 : p1 * Math.pow(2, -10 * p) * _sin((p - p3) * p2) + 1;
7317  },
7318      ease = type === "out" ? easeOut : type === "in" ? function (p) {
7319    return 1 - easeOut(1 - p);
7320  } : _easeInOutFromOut(easeOut);
7321
7322  p2 = _2PI / p2; //precalculate to optimize
7323
7324  ease.config = function (amplitude, period) {
7325    return _configElastic(type, amplitude, period);
7326  };
7327
7328  return ease;
7329},
7330    _configBack = function _configBack(type, overshoot) {
7331  if (overshoot === void 0) {
7332    overshoot = 1.70158;
7333  }
7334
7335  var easeOut = function easeOut(p) {
7336    return p ? --p * p * ((overshoot + 1) * p + overshoot) + 1 : 0;
7337  },
7338      ease = type === "out" ? easeOut : type === "in" ? function (p) {
7339    return 1 - easeOut(1 - p);
7340  } : _easeInOutFromOut(easeOut);
7341
7342  ease.config = function (overshoot) {
7343    return _configBack(type, overshoot);
7344  };
7345
7346  return ease;
7347}; // a cheaper (kb and cpu) but more mild way to get a parameterized weighted ease by feeding in a value between -1 (easeIn) and 1 (easeOut) where 0 is linear.
7348// _weightedEase = ratio => {
7349// 	let y = 0.5 + ratio / 2;
7350// 	return p => (2 * (1 - p) * p * y + p * p);
7351// },
7352// a stronger (but more expensive kb/cpu) parameterized weighted ease that lets you feed in a value between -1 (easeIn) and 1 (easeOut) where 0 is linear.
7353// _weightedEaseStrong = ratio => {
7354// 	ratio = .5 + ratio / 2;
7355// 	let o = 1 / 3 * (ratio < .5 ? ratio : 1 - ratio),
7356// 		b = ratio - o,
7357// 		c = ratio + o;
7358// 	return p => p === 1 ? p : 3 * b * (1 - p) * (1 - p) * p + 3 * c * (1 - p) * p * p + p * p * p;
7359// };
7360
7361
7362_forEachName("Linear,Quad,Cubic,Quart,Quint,Strong", function (name, i) {
7363  var power = i < 5 ? i + 1 : i;
7364
7365  _insertEase(name + ",Power" + (power - 1), i ? function (p) {
7366    return Math.pow(p, power);
7367  } : function (p) {
7368    return p;
7369  }, function (p) {
7370    return 1 - Math.pow(1 - p, power);
7371  }, function (p) {
7372    return p < .5 ? Math.pow(p * 2, power) / 2 : 1 - Math.pow((1 - p) * 2, power) / 2;
7373  });
7374});
7375
7376_easeMap.Linear.easeNone = _easeMap.none = _easeMap.Linear.easeIn;
7377
7378_insertEase("Elastic", _configElastic("in"), _configElastic("out"), _configElastic());
7379
7380(function (n, c) {
7381  var n1 = 1 / c,
7382      n2 = 2 * n1,
7383      n3 = 2.5 * n1,
7384      easeOut = function easeOut(p) {
7385    return p < n1 ? n * p * p : p < n2 ? n * Math.pow(p - 1.5 / c, 2) + .75 : p < n3 ? n * (p -= 2.25 / c) * p + .9375 : n * Math.pow(p - 2.625 / c, 2) + .984375;
7386  };
7387
7388  _insertEase("Bounce", function (p) {
7389    return 1 - easeOut(1 - p);
7390  }, easeOut);
7391})(7.5625, 2.75);
7392
7393_insertEase("Expo", function (p) {
7394  return p ? Math.pow(2, 10 * (p - 1)) : 0;
7395});
7396
7397_insertEase("Circ", function (p) {
7398  return -(_sqrt(1 - p * p) - 1);
7399});
7400
7401_insertEase("Sine", function (p) {
7402  return p === 1 ? 1 : -_cos(p * _HALF_PI) + 1;
7403});
7404
7405_insertEase("Back", _configBack("in"), _configBack("out"), _configBack());
7406
7407_easeMap.SteppedEase = _easeMap.steps = _globals.SteppedEase = {
7408  config: function config(steps, immediateStart) {
7409    if (steps === void 0) {
7410      steps = 1;
7411    }
7412
7413    var p1 = 1 / steps,
7414        p2 = steps + (immediateStart ? 0 : 1),
7415        p3 = immediateStart ? 1 : 0,
7416        max = 1 - _tinyNum;
7417    return function (p) {
7418      return ((p2 * _clamp(0, max, p) | 0) + p3) * p1;
7419    };
7420  }
7421};
7422_defaults.ease = _easeMap["quad.out"];
7423
7424_forEachName("onComplete,onUpdate,onStart,onRepeat,onReverseComplete,onInterrupt", function (name) {
7425  return _callbackNames += name + "," + name + "Params,";
7426});
7427/*
7428 * --------------------------------------------------------------------------------------
7429 * CACHE
7430 * --------------------------------------------------------------------------------------
7431 */
7432
7433
7434var GSCache = function GSCache(target, harness) {
7435  this.id = _gsID++;
7436  target._gsap = this;
7437  this.target = target;
7438  this.harness = harness;
7439  this.get = harness ? harness.get : _getProperty;
7440  this.set = harness ? harness.getSetter : _getSetter;
7441};
7442/*
7443 * --------------------------------------------------------------------------------------
7444 * ANIMATION
7445 * --------------------------------------------------------------------------------------
7446 */
7447
7448var Animation = /*#__PURE__*/function () {
7449  function Animation(vars) {
7450    this.vars = vars;
7451    this._delay = +vars.delay || 0;
7452
7453    if (this._repeat = vars.repeat === Infinity ? -2 : vars.repeat || 0) {
7454      // TODO: repeat: Infinity on a timeline's children must flag that timeline internally and affect its totalDuration, otherwise it'll stop in the negative direction when reaching the start.
7455      this._rDelay = vars.repeatDelay || 0;
7456      this._yoyo = !!vars.yoyo || !!vars.yoyoEase;
7457    }
7458
7459    this._ts = 1;
7460
7461    _setDuration(this, +vars.duration, 1, 1);
7462
7463    this.data = vars.data;
7464
7465    if (_context) {
7466      this._ctx = _context;
7467
7468      _context.data.push(this);
7469    }
7470
7471    _tickerActive || _ticker.wake();
7472  }
7473
7474  var _proto = Animation.prototype;
7475
7476  _proto.delay = function delay(value) {
7477    if (value || value === 0) {
7478      this.parent && this.parent.smoothChildTiming && this.startTime(this._start + value - this._delay);
7479      this._delay = value;
7480      return this;
7481    }
7482
7483    return this._delay;
7484  };
7485
7486  _proto.duration = function duration(value) {
7487    return arguments.length ? this.totalDuration(this._repeat > 0 ? value + (value + this._rDelay) * this._repeat : value) : this.totalDuration() && this._dur;
7488  };
7489
7490  _proto.totalDuration = function totalDuration(value) {
7491    if (!arguments.length) {
7492      return this._tDur;
7493    }
7494
7495    this._dirty = 0;
7496    return _setDuration(this, this._repeat < 0 ? value : (value - this._repeat * this._rDelay) / (this._repeat + 1));
7497  };
7498
7499  _proto.totalTime = function totalTime(_totalTime, suppressEvents) {
7500    _wake();
7501
7502    if (!arguments.length) {
7503      return this._tTime;
7504    }
7505
7506    var parent = this._dp;
7507
7508    if (parent && parent.smoothChildTiming && this._ts) {
7509      _alignPlayhead(this, _totalTime);
7510
7511      !parent._dp || parent.parent || _postAddChecks(parent, this); // edge case: if this is a child of a timeline that already completed, for example, we must re-activate the parent.
7512      //in case any of the ancestor timelines had completed but should now be enabled, we should reset their totalTime() which will also ensure that they're lined up properly and enabled. Skip for animations that are on the root (wasteful). Example: a TimelineLite.exportRoot() is performed when there's a paused tween on the root, the export will not complete until that tween is unpaused, but imagine a child gets restarted later, after all [unpaused] tweens have completed. The start of that child would get pushed out, but one of the ancestors may have completed.
7513
7514      while (parent && parent.parent) {
7515        if (parent.parent._time !== parent._start + (parent._ts >= 0 ? parent._tTime / parent._ts : (parent.totalDuration() - parent._tTime) / -parent._ts)) {
7516          parent.totalTime(parent._tTime, true);
7517        }
7518
7519        parent = parent.parent;
7520      }
7521
7522      if (!this.parent && this._dp.autoRemoveChildren && (this._ts > 0 && _totalTime < this._tDur || this._ts < 0 && _totalTime > 0 || !this._tDur && !_totalTime)) {
7523        //if the animation doesn't have a parent, put it back into its last parent (recorded as _dp for exactly cases like this). Limit to parents with autoRemoveChildren (like globalTimeline) so that if the user manually removes an animation from a timeline and then alters its playhead, it doesn't get added back in.
7524        _addToTimeline(this._dp, this, this._start - this._delay);
7525      }
7526    }
7527
7528    if (this._tTime !== _totalTime || !this._dur && !suppressEvents || this._initted && Math.abs(this._zTime) === _tinyNum || !_totalTime && !this._initted && (this.add || this._ptLookup)) {
7529      // check for _ptLookup on a Tween instance to ensure it has actually finished being instantiated, otherwise if this.reverse() gets called in the Animation constructor, it could trigger a render() here even though the _targets weren't populated, thus when _init() is called there won't be any PropTweens (it'll act like the tween is non-functional)
7530      this._ts || (this._pTime = _totalTime); // otherwise, if an animation is paused, then the playhead is moved back to zero, then resumed, it'd revert back to the original time at the pause
7531      //if (!this._lock) { // avoid endless recursion (not sure we need this yet or if it's worth the performance hit)
7532      //   this._lock = 1;
7533
7534      _lazySafeRender(this, _totalTime, suppressEvents); //   this._lock = 0;
7535      //}
7536
7537    }
7538
7539    return this;
7540  };
7541
7542  _proto.time = function time(value, suppressEvents) {
7543    return arguments.length ? this.totalTime(Math.min(this.totalDuration(), value + _elapsedCycleDuration(this)) % (this._dur + this._rDelay) || (value ? this._dur : 0), suppressEvents) : this._time; // note: if the modulus results in 0, the playhead could be exactly at the end or the beginning, and we always defer to the END with a non-zero value, otherwise if you set the time() to the very end (duration()), it would render at the START!
7544  };
7545
7546  _proto.totalProgress = function totalProgress(value, suppressEvents) {
7547    return arguments.length ? this.totalTime(this.totalDuration() * value, suppressEvents) : this.totalDuration() ? Math.min(1, this._tTime / this._tDur) : this.ratio;
7548  };
7549
7550  _proto.progress = function progress(value, suppressEvents) {
7551    return arguments.length ? this.totalTime(this.duration() * (this._yoyo && !(this.iteration() & 1) ? 1 - value : value) + _elapsedCycleDuration(this), suppressEvents) : this.duration() ? Math.min(1, this._time / this._dur) : this.ratio;
7552  };
7553
7554  _proto.iteration = function iteration(value, suppressEvents) {
7555    var cycleDuration = this.duration() + this._rDelay;
7556
7557    return arguments.length ? this.totalTime(this._time + (value - 1) * cycleDuration, suppressEvents) : this._repeat ? _animationCycle(this._tTime, cycleDuration) + 1 : 1;
7558  } // potential future addition:
7559  // isPlayingBackwards() {
7560  // 	let animation = this,
7561  // 		orientation = 1; // 1 = forward, -1 = backward
7562  // 	while (animation) {
7563  // 		orientation *= animation.reversed() || (animation.repeat() && !(animation.iteration() & 1)) ? -1 : 1;
7564  // 		animation = animation.parent;
7565  // 	}
7566  // 	return orientation < 0;
7567  // }
7568  ;
7569
7570  _proto.timeScale = function timeScale(value) {
7571    if (!arguments.length) {
7572      return this._rts === -_tinyNum ? 0 : this._rts; // recorded timeScale. Special case: if someone calls reverse() on an animation with timeScale of 0, we assign it -_tinyNum to remember it's reversed.
7573    }
7574
7575    if (this._rts === value) {
7576      return this;
7577    }
7578
7579    var tTime = this.parent && this._ts ? _parentToChildTotalTime(this.parent._time, this) : this._tTime; // make sure to do the parentToChildTotalTime() BEFORE setting the new _ts because the old one must be used in that calculation.
7580    // future addition? Up side: fast and minimal file size. Down side: only works on this animation; if a timeline is reversed, for example, its childrens' onReverse wouldn't get called.
7581    //(+value < 0 && this._rts >= 0) && _callback(this, "onReverse", true);
7582    // prioritize rendering where the parent's playhead lines up instead of this._tTime because there could be a tween that's animating another tween's timeScale in the same rendering loop (same parent), thus if the timeScale tween renders first, it would alter _start BEFORE _tTime was set on that tick (in the rendering loop), effectively freezing it until the timeScale tween finishes.
7583
7584    this._rts = +value || 0;
7585    this._ts = this._ps || value === -_tinyNum ? 0 : this._rts; // _ts is the functional timeScale which would be 0 if the animation is paused.
7586
7587    this.totalTime(_clamp(-Math.abs(this._delay), this._tDur, tTime), true);
7588
7589    _setEnd(this); // if parent.smoothChildTiming was false, the end time didn't get updated in the _alignPlayhead() method, so do it here.
7590
7591
7592    return _recacheAncestors(this);
7593  };
7594
7595  _proto.paused = function paused(value) {
7596    if (!arguments.length) {
7597      return this._ps;
7598    }
7599
7600    if (this._ps !== value) {
7601      this._ps = value;
7602
7603      if (value) {
7604        this._pTime = this._tTime || Math.max(-this._delay, this.rawTime()); // if the pause occurs during the delay phase, make sure that's factored in when resuming.
7605
7606        this._ts = this._act = 0; // _ts is the functional timeScale, so a paused tween would effectively have a timeScale of 0. We record the "real" timeScale as _rts (recorded time scale)
7607      } else {
7608        _wake();
7609
7610        this._ts = this._rts; //only defer to _pTime (pauseTime) if tTime is zero. Remember, someone could pause() an animation, then scrub the playhead and resume(). If the parent doesn't have smoothChildTiming, we render at the rawTime() because the startTime won't get updated.
7611
7612        this.totalTime(this.parent && !this.parent.smoothChildTiming ? this.rawTime() : this._tTime || this._pTime, this.progress() === 1 && Math.abs(this._zTime) !== _tinyNum && (this._tTime -= _tinyNum)); // edge case: animation.progress(1).pause().play() wouldn't render again because the playhead is already at the end, but the call to totalTime() below will add it back to its parent...and not remove it again (since removing only happens upon rendering at a new time). Offsetting the _tTime slightly is done simply to cause the final render in totalTime() that'll pop it off its timeline (if autoRemoveChildren is true, of course). Check to make sure _zTime isn't -_tinyNum to avoid an edge case where the playhead is pushed to the end but INSIDE a tween/callback, the timeline itself is paused thus halting rendering and leaving a few unrendered. When resuming, it wouldn't render those otherwise.
7613      }
7614    }
7615
7616    return this;
7617  };
7618
7619  _proto.startTime = function startTime(value) {
7620    if (arguments.length) {
7621      this._start = value;
7622      var parent = this.parent || this._dp;
7623      parent && (parent._sort || !this.parent) && _addToTimeline(parent, this, value - this._delay);
7624      return this;
7625    }
7626
7627    return this._start;
7628  };
7629
7630  _proto.endTime = function endTime(includeRepeats) {
7631    return this._start + (_isNotFalse(includeRepeats) ? this.totalDuration() : this.duration()) / Math.abs(this._ts || 1);
7632  };
7633
7634  _proto.rawTime = function rawTime(wrapRepeats) {
7635    var parent = this.parent || this._dp; // _dp = detached parent
7636
7637    return !parent ? this._tTime : wrapRepeats && (!this._ts || this._repeat && this._time && this.totalProgress() < 1) ? this._tTime % (this._dur + this._rDelay) : !this._ts ? this._tTime : _parentToChildTotalTime(parent.rawTime(wrapRepeats), this);
7638  };
7639
7640  _proto.revert = function revert(config) {
7641    if (config === void 0) {
7642      config = _revertConfig;
7643    }
7644
7645    var prevIsReverting = _reverting;
7646    _reverting = config;
7647
7648    if (this._initted || this._startAt) {
7649      this.timeline && this.timeline.revert(config);
7650      this.totalTime(-0.01, config.suppressEvents);
7651    }
7652
7653    this.data !== "nested" && config.kill !== false && this.kill();
7654    _reverting = prevIsReverting;
7655    return this;
7656  };
7657
7658  _proto.globalTime = function globalTime(rawTime) {
7659    var animation = this,
7660        time = arguments.length ? rawTime : animation.rawTime();
7661
7662    while (animation) {
7663      time = animation._start + time / (animation._ts || 1);
7664      animation = animation._dp;
7665    }
7666
7667    return !this.parent && this._sat ? this._sat.vars.immediateRender ? -Infinity : this._sat.globalTime(rawTime) : time; // the _startAt tweens for .fromTo() and .from() that have immediateRender should always be FIRST in the timeline (important for context.revert()). "_sat" stands for _startAtTween, referring to the parent tween that created the _startAt. We must discern if that tween had immediateRender so that we can know whether or not to prioritize it in revert().
7668  };
7669
7670  _proto.repeat = function repeat(value) {
7671    if (arguments.length) {
7672      this._repeat = value === Infinity ? -2 : value;
7673      return _onUpdateTotalDuration(this);
7674    }
7675
7676    return this._repeat === -2 ? Infinity : this._repeat;
7677  };
7678
7679  _proto.repeatDelay = function repeatDelay(value) {
7680    if (arguments.length) {
7681      var time = this._time;
7682      this._rDelay = value;
7683
7684      _onUpdateTotalDuration(this);
7685
7686      return time ? this.time(time) : this;
7687    }
7688
7689    return this._rDelay;
7690  };
7691
7692  _proto.yoyo = function yoyo(value) {
7693    if (arguments.length) {
7694      this._yoyo = value;
7695      return this;
7696    }
7697
7698    return this._yoyo;
7699  };
7700
7701  _proto.seek = function seek(position, suppressEvents) {
7702    return this.totalTime(_parsePosition(this, position), _isNotFalse(suppressEvents));
7703  };
7704
7705  _proto.restart = function restart(includeDelay, suppressEvents) {
7706    return this.play().totalTime(includeDelay ? -this._delay : 0, _isNotFalse(suppressEvents));
7707  };
7708
7709  _proto.play = function play(from, suppressEvents) {
7710    from != null && this.seek(from, suppressEvents);
7711    return this.reversed(false).paused(false);
7712  };
7713
7714  _proto.reverse = function reverse(from, suppressEvents) {
7715    from != null && this.seek(from || this.totalDuration(), suppressEvents);
7716    return this.reversed(true).paused(false);
7717  };
7718
7719  _proto.pause = function pause(atTime, suppressEvents) {
7720    atTime != null && this.seek(atTime, suppressEvents);
7721    return this.paused(true);
7722  };
7723
7724  _proto.resume = function resume() {
7725    return this.paused(false);
7726  };
7727
7728  _proto.reversed = function reversed(value) {
7729    if (arguments.length) {
7730      !!value !== this.reversed() && this.timeScale(-this._rts || (value ? -_tinyNum : 0)); // in case timeScale is zero, reversing would have no effect so we use _tinyNum.
7731
7732      return this;
7733    }
7734
7735    return this._rts < 0;
7736  };
7737
7738  _proto.invalidate = function invalidate() {
7739    this._initted = this._act = 0;
7740    this._zTime = -_tinyNum;
7741    return this;
7742  };
7743
7744  _proto.isActive = function isActive() {
7745    var parent = this.parent || this._dp,
7746        start = this._start,
7747        rawTime;
7748    return !!(!parent || this._ts && this._initted && parent.isActive() && (rawTime = parent.rawTime(true)) >= start && rawTime < this.endTime(true) - _tinyNum);
7749  };
7750
7751  _proto.eventCallback = function eventCallback(type, callback, params) {
7752    var vars = this.vars;
7753
7754    if (arguments.length > 1) {
7755      if (!callback) {
7756        delete vars[type];
7757      } else {
7758        vars[type] = callback;
7759        params && (vars[type + "Params"] = params);
7760        type === "onUpdate" && (this._onUpdate = callback);
7761      }
7762
7763      return this;
7764    }
7765
7766    return vars[type];
7767  };
7768
7769  _proto.then = function then(onFulfilled) {
7770    var self = this;
7771    return new Promise(function (resolve) {
7772      var f = _isFunction(onFulfilled) ? onFulfilled : _passThrough,
7773          _resolve = function _resolve() {
7774        var _then = self.then;
7775        self.then = null; // temporarily null the then() method to avoid an infinite loop (see https://github.com/greensock/GSAP/issues/322)
7776
7777        _isFunction(f) && (f = f(self)) && (f.then || f === self) && (self.then = _then);
7778        resolve(f);
7779        self.then = _then;
7780      };
7781
7782      if (self._initted && self.totalProgress() === 1 && self._ts >= 0 || !self._tTime && self._ts < 0) {
7783        _resolve();
7784      } else {
7785        self._prom = _resolve;
7786      }
7787    });
7788  };
7789
7790  _proto.kill = function kill() {
7791    _interrupt(this);
7792  };
7793
7794  return Animation;
7795}();
7796
7797_setDefaults(Animation.prototype, {
7798  _time: 0,
7799  _start: 0,
7800  _end: 0,
7801  _tTime: 0,
7802  _tDur: 0,
7803  _dirty: 0,
7804  _repeat: 0,
7805  _yoyo: false,
7806  parent: null,
7807  _initted: false,
7808  _rDelay: 0,
7809  _ts: 1,
7810  _dp: 0,
7811  ratio: 0,
7812  _zTime: -_tinyNum,
7813  _prom: 0,
7814  _ps: false,
7815  _rts: 1
7816});
7817/*
7818 * -------------------------------------------------
7819 * TIMELINE
7820 * -------------------------------------------------
7821 */
7822
7823
7824var Timeline = /*#__PURE__*/function (_Animation) {
7825  _inheritsLoose(Timeline, _Animation);
7826
7827  function Timeline(vars, position) {
7828    var _this;
7829
7830    if (vars === void 0) {
7831      vars = {};
7832    }
7833
7834    _this = _Animation.call(this, vars) || this;
7835    _this.labels = {};
7836    _this.smoothChildTiming = !!vars.smoothChildTiming;
7837    _this.autoRemoveChildren = !!vars.autoRemoveChildren;
7838    _this._sort = _isNotFalse(vars.sortChildren);
7839    _globalTimeline && _addToTimeline(vars.parent || _globalTimeline, _assertThisInitialized(_this), position);
7840    vars.reversed && _this.reverse();
7841    vars.paused && _this.paused(true);
7842    vars.scrollTrigger && _scrollTrigger(_assertThisInitialized(_this), vars.scrollTrigger);
7843    return _this;
7844  }
7845
7846  var _proto2 = Timeline.prototype;
7847
7848  _proto2.to = function to(targets, vars, position) {
7849    _createTweenType(0, arguments, this);
7850
7851    return this;
7852  };
7853
7854  _proto2.from = function from(targets, vars, position) {
7855    _createTweenType(1, arguments, this);
7856
7857    return this;
7858  };
7859
7860  _proto2.fromTo = function fromTo(targets, fromVars, toVars, position) {
7861    _createTweenType(2, arguments, this);
7862
7863    return this;
7864  };
7865
7866  _proto2.set = function set(targets, vars, position) {
7867    vars.duration = 0;
7868    vars.parent = this;
7869    _inheritDefaults(vars).repeatDelay || (vars.repeat = 0);
7870    vars.immediateRender = !!vars.immediateRender;
7871    new Tween(targets, vars, _parsePosition(this, position), 1);
7872    return this;
7873  };
7874
7875  _proto2.call = function call(callback, params, position) {
7876    return _addToTimeline(this, Tween.delayedCall(0, callback, params), position);
7877  } //ONLY for backward compatibility! Maybe delete?
7878  ;
7879
7880  _proto2.staggerTo = function staggerTo(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams) {
7881    vars.duration = duration;
7882    vars.stagger = vars.stagger || stagger;
7883    vars.onComplete = onCompleteAll;
7884    vars.onCompleteParams = onCompleteAllParams;
7885    vars.parent = this;
7886    new Tween(targets, vars, _parsePosition(this, position));
7887    return this;
7888  };
7889
7890  _proto2.staggerFrom = function staggerFrom(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams) {
7891    vars.runBackwards = 1;
7892    _inheritDefaults(vars).immediateRender = _isNotFalse(vars.immediateRender);
7893    return this.staggerTo(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams);
7894  };
7895
7896  _proto2.staggerFromTo = function staggerFromTo(targets, duration, fromVars, toVars, stagger, position, onCompleteAll, onCompleteAllParams) {
7897    toVars.startAt = fromVars;
7898    _inheritDefaults(toVars).immediateRender = _isNotFalse(toVars.immediateRender);
7899    return this.staggerTo(targets, duration, toVars, stagger, position, onCompleteAll, onCompleteAllParams);
7900  };
7901
7902  _proto2.render = function render(totalTime, suppressEvents, force) {
7903    var prevTime = this._time,
7904        tDur = this._dirty ? this.totalDuration() : this._tDur,
7905        dur = this._dur,
7906        tTime = totalTime <= 0 ? 0 : _roundPrecise(totalTime),
7907        // if a paused timeline is resumed (or its _start is updated for another reason...which rounds it), that could result in the playhead shifting a **tiny** amount and a zero-duration child at that spot may get rendered at a different ratio, like its totalTime in render() may be 1e-17 instead of 0, for example.
7908    crossingStart = this._zTime < 0 !== totalTime < 0 && (this._initted || !dur),
7909        time,
7910        child,
7911        next,
7912        iteration,
7913        cycleDuration,
7914        prevPaused,
7915        pauseTween,
7916        timeScale,
7917        prevStart,
7918        prevIteration,
7919        yoyo,
7920        isYoyo;
7921    this !== _globalTimeline && tTime > tDur && totalTime >= 0 && (tTime = tDur);
7922
7923    if (tTime !== this._tTime || force || crossingStart) {
7924      if (prevTime !== this._time && dur) {
7925        //if totalDuration() finds a child with a negative startTime and smoothChildTiming is true, things get shifted around internally so we need to adjust the time accordingly. For example, if a tween starts at -30 we must shift EVERYTHING forward 30 seconds and move this timeline's startTime backward by 30 seconds so that things align with the playhead (no jump).
7926        tTime += this._time - prevTime;
7927        totalTime += this._time - prevTime;
7928      }
7929
7930      time = tTime;
7931      prevStart = this._start;
7932      timeScale = this._ts;
7933      prevPaused = !timeScale;
7934
7935      if (crossingStart) {
7936        dur || (prevTime = this._zTime); //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration timeline, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect.
7937
7938        (totalTime || !suppressEvents) && (this._zTime = totalTime);
7939      }
7940
7941      if (this._repeat) {
7942        //adjust the time for repeats and yoyos
7943        yoyo = this._yoyo;
7944        cycleDuration = dur + this._rDelay;
7945
7946        if (this._repeat < -1 && totalTime < 0) {
7947          return this.totalTime(cycleDuration * 100 + totalTime, suppressEvents, force);
7948        }
7949
7950        time = _roundPrecise(tTime % cycleDuration); //round to avoid floating point errors. (4 % 0.8 should be 0 but some browsers report it as 0.79999999!)
7951
7952        if (tTime === tDur) {
7953          // the tDur === tTime is for edge cases where there's a lengthy decimal on the duration and it may reach the very end but the time is rendered as not-quite-there (remember, tDur is rounded to 4 decimals whereas dur isn't)
7954          iteration = this._repeat;
7955          time = dur;
7956        } else {
7957          iteration = ~~(tTime / cycleDuration);
7958
7959          if (iteration && iteration === tTime / cycleDuration) {
7960            time = dur;
7961            iteration--;
7962          }
7963
7964          time > dur && (time = dur);
7965        }
7966
7967        prevIteration = _animationCycle(this._tTime, cycleDuration);
7968        !prevTime && this._tTime && prevIteration !== iteration && this._tTime - prevIteration * cycleDuration - this._dur <= 0 && (prevIteration = iteration); // edge case - if someone does addPause() at the very beginning of a repeating timeline, that pause is technically at the same spot as the end which causes this._time to get set to 0 when the totalTime would normally place the playhead at the end. See https://greensock.com/forums/topic/23823-closing-nav-animation-not-working-on-ie-and-iphone-6-maybe-other-older-browser/?tab=comments#comment-113005 also, this._tTime - prevIteration * cycleDuration - this._dur <= 0 just checks to make sure it wasn't previously in the "repeatDelay" portion
7969
7970        if (yoyo && iteration & 1) {
7971          time = dur - time;
7972          isYoyo = 1;
7973        }
7974        /*
7975        make sure children at the end/beginning of the timeline are rendered properly. If, for example,
7976        a 3-second long timeline rendered at 2.9 seconds previously, and now renders at 3.2 seconds (which
7977        would get translated to 2.8 seconds if the timeline yoyos or 0.2 seconds if it just repeats), there
7978        could be a callback or a short tween that's at 2.95 or 3 seconds in which wouldn't render. So
7979        we need to push the timeline to the end (and/or beginning depending on its yoyo value). Also we must
7980        ensure that zero-duration tweens at the very beginning or end of the Timeline work.
7981        */
7982
7983
7984        if (iteration !== prevIteration && !this._lock) {
7985          var rewinding = yoyo && prevIteration & 1,
7986              doesWrap = rewinding === (yoyo && iteration & 1);
7987          iteration < prevIteration && (rewinding = !rewinding);
7988          prevTime = rewinding ? 0 : tTime % dur ? dur : tTime; // if the playhead is landing exactly at the end of an iteration, use that totalTime rather than only the duration, otherwise it'll skip the 2nd render since it's effectively at the same time.
7989
7990          this._lock = 1;
7991          this.render(prevTime || (isYoyo ? 0 : _roundPrecise(iteration * cycleDuration)), suppressEvents, !dur)._lock = 0;
7992          this._tTime = tTime; // if a user gets the iteration() inside the onRepeat, for example, it should be accurate.
7993
7994          !suppressEvents && this.parent && _callback(this, "onRepeat");
7995          this.vars.repeatRefresh && !isYoyo && (this.invalidate()._lock = 1);
7996
7997          if (prevTime && prevTime !== this._time || prevPaused !== !this._ts || this.vars.onRepeat && !this.parent && !this._act) {
7998            // if prevTime is 0 and we render at the very end, _time will be the end, thus won't match. So in this edge case, prevTime won't match _time but that's okay. If it gets killed in the onRepeat, eject as well.
7999            return this;
8000          }
8001
8002          dur = this._dur; // in case the duration changed in the onRepeat
8003
8004          tDur = this._tDur;
8005
8006          if (doesWrap) {
8007            this._lock = 2;
8008            prevTime = rewinding ? dur : -0.0001;
8009            this.render(prevTime, true);
8010            this.vars.repeatRefresh && !isYoyo && this.invalidate();
8011          }
8012
8013          this._lock = 0;
8014
8015          if (!this._ts && !prevPaused) {
8016            return this;
8017          } //in order for yoyoEase to work properly when there's a stagger, we must swap out the ease in each sub-tween.
8018
8019
8020          _propagateYoyoEase(this, isYoyo);
8021        }
8022      }
8023
8024      if (this._hasPause && !this._forcing && this._lock < 2) {
8025        pauseTween = _findNextPauseTween(this, _roundPrecise(prevTime), _roundPrecise(time));
8026
8027        if (pauseTween) {
8028          tTime -= time - (time = pauseTween._start);
8029        }
8030      }
8031
8032      this._tTime = tTime;
8033      this._time = time;
8034      this._act = !timeScale; //as long as it's not paused, force it to be active so that if the user renders independent of the parent timeline, it'll be forced to re-render on the next tick.
8035
8036      if (!this._initted) {
8037        this._onUpdate = this.vars.onUpdate;
8038        this._initted = 1;
8039        this._zTime = totalTime;
8040        prevTime = 0; // upon init, the playhead should always go forward; someone could invalidate() a completed timeline and then if they restart(), that would make child tweens render in reverse order which could lock in the wrong starting values if they build on each other, like tl.to(obj, {x: 100}).to(obj, {x: 0}).
8041      }
8042
8043      if (!prevTime && time && !suppressEvents && !iteration) {
8044        _callback(this, "onStart");
8045
8046        if (this._tTime !== tTime) {
8047          // in case the onStart triggered a render at a different spot, eject. Like if someone did animation.pause(0.5) or something inside the onStart.
8048          return this;
8049        }
8050      }
8051
8052      if (time >= prevTime && totalTime >= 0) {
8053        child = this._first;
8054
8055        while (child) {
8056          next = child._next;
8057
8058          if ((child._act || time >= child._start) && child._ts && pauseTween !== child) {
8059            if (child.parent !== this) {
8060              // an extreme edge case - the child's render could do something like kill() the "next" one in the linked list, or reparent it. In that case we must re-initiate the whole render to be safe.
8061              return this.render(totalTime, suppressEvents, force);
8062            }
8063
8064            child.render(child._ts > 0 ? (time - child._start) * child._ts : (child._dirty ? child.totalDuration() : child._tDur) + (time - child._start) * child._ts, suppressEvents, force);
8065
8066            if (time !== this._time || !this._ts && !prevPaused) {
8067              //in case a tween pauses or seeks the timeline when rendering, like inside of an onUpdate/onComplete
8068              pauseTween = 0;
8069              next && (tTime += this._zTime = -_tinyNum); // it didn't finish rendering, so flag zTime as negative so that so that the next time render() is called it'll be forced (to render any remaining children)
8070
8071              break;
8072            }
8073          }
8074
8075          child = next;
8076        }
8077      } else {
8078        child = this._last;
8079        var adjustedTime = totalTime < 0 ? totalTime : time; //when the playhead goes backward beyond the start of this timeline, we must pass that information down to the child animations so that zero-duration tweens know whether to render their starting or ending values.
8080
8081        while (child) {
8082          next = child._prev;
8083
8084          if ((child._act || adjustedTime <= child._end) && child._ts && pauseTween !== child) {
8085            if (child.parent !== this) {
8086              // an extreme edge case - the child's render could do something like kill() the "next" one in the linked list, or reparent it. In that case we must re-initiate the whole render to be safe.
8087              return this.render(totalTime, suppressEvents, force);
8088            }
8089
8090            child.render(child._ts > 0 ? (adjustedTime - child._start) * child._ts : (child._dirty ? child.totalDuration() : child._tDur) + (adjustedTime - child._start) * child._ts, suppressEvents, force || _reverting && (child._initted || child._startAt)); // if reverting, we should always force renders of initted tweens (but remember that .fromTo() or .from() may have a _startAt but not _initted yet). If, for example, a .fromTo() tween with a stagger (which creates an internal timeline) gets reverted BEFORE some of its child tweens render for the first time, it may not properly trigger them to revert.
8091
8092            if (time !== this._time || !this._ts && !prevPaused) {
8093              //in case a tween pauses or seeks the timeline when rendering, like inside of an onUpdate/onComplete
8094              pauseTween = 0;
8095              next && (tTime += this._zTime = adjustedTime ? -_tinyNum : _tinyNum); // it didn't finish rendering, so adjust zTime so that so that the next time render() is called it'll be forced (to render any remaining children)
8096
8097              break;
8098            }
8099          }
8100
8101          child = next;
8102        }
8103      }
8104
8105      if (pauseTween && !suppressEvents) {
8106        this.pause();
8107        pauseTween.render(time >= prevTime ? 0 : -_tinyNum)._zTime = time >= prevTime ? 1 : -1;
8108
8109        if (this._ts) {
8110          //the callback resumed playback! So since we may have held back the playhead due to where the pause is positioned, go ahead and jump to where it's SUPPOSED to be (if no pause happened).
8111          this._start = prevStart; //if the pause was at an earlier time and the user resumed in the callback, it could reposition the timeline (changing its startTime), throwing things off slightly, so we make sure the _start doesn't shift.
8112
8113          _setEnd(this);
8114
8115          return this.render(totalTime, suppressEvents, force);
8116        }
8117      }
8118
8119      this._onUpdate && !suppressEvents && _callback(this, "onUpdate", true);
8120      if (tTime === tDur && this._tTime >= this.totalDuration() || !tTime && prevTime) if (prevStart === this._start || Math.abs(timeScale) !== Math.abs(this._ts)) if (!this._lock) {
8121        // remember, a child's callback may alter this timeline's playhead or timeScale which is why we need to add some of these checks.
8122        (totalTime || !dur) && (tTime === tDur && this._ts > 0 || !tTime && this._ts < 0) && _removeFromParent(this, 1); // don't remove if the timeline is reversed and the playhead isn't at 0, otherwise tl.progress(1).reverse() won't work. Only remove if the playhead is at the end and timeScale is positive, or if the playhead is at 0 and the timeScale is negative.
8123
8124        if (!suppressEvents && !(totalTime < 0 && !prevTime) && (tTime || prevTime || !tDur)) {
8125          _callback(this, tTime === tDur && totalTime >= 0 ? "onComplete" : "onReverseComplete", true);
8126
8127          this._prom && !(tTime < tDur && this.timeScale() > 0) && this._prom();
8128        }
8129      }
8130    }
8131
8132    return this;
8133  };
8134
8135  _proto2.add = function add(child, position) {
8136    var _this2 = this;
8137
8138    _isNumber(position) || (position = _parsePosition(this, position, child));
8139
8140    if (!(child instanceof Animation)) {
8141      if (_isArray(child)) {
8142        child.forEach(function (obj) {
8143          return _this2.add(obj, position);
8144        });
8145        return this;
8146      }
8147
8148      if (_isString(child)) {
8149        return this.addLabel(child, position);
8150      }
8151
8152      if (_isFunction(child)) {
8153        child = Tween.delayedCall(0, child);
8154      } else {
8155        return this;
8156      }
8157    }
8158
8159    return this !== child ? _addToTimeline(this, child, position) : this; //don't allow a timeline to be added to itself as a child!
8160  };
8161
8162  _proto2.getChildren = function getChildren(nested, tweens, timelines, ignoreBeforeTime) {
8163    if (nested === void 0) {
8164      nested = true;
8165    }
8166
8167    if (tweens === void 0) {
8168      tweens = true;
8169    }
8170
8171    if (timelines === void 0) {
8172      timelines = true;
8173    }
8174
8175    if (ignoreBeforeTime === void 0) {
8176      ignoreBeforeTime = -_bigNum;
8177    }
8178
8179    var a = [],
8180        child = this._first;
8181
8182    while (child) {
8183      if (child._start >= ignoreBeforeTime) {
8184        if (child instanceof Tween) {
8185          tweens && a.push(child);
8186        } else {
8187          timelines && a.push(child);
8188          nested && a.push.apply(a, child.getChildren(true, tweens, timelines));
8189        }
8190      }
8191
8192      child = child._next;
8193    }
8194
8195    return a;
8196  };
8197
8198  _proto2.getById = function getById(id) {
8199    var animations = this.getChildren(1, 1, 1),
8200        i = animations.length;
8201
8202    while (i--) {
8203      if (animations[i].vars.id === id) {
8204        return animations[i];
8205      }
8206    }
8207  };
8208
8209  _proto2.remove = function remove(child) {
8210    if (_isString(child)) {
8211      return this.removeLabel(child);
8212    }
8213
8214    if (_isFunction(child)) {
8215      return this.killTweensOf(child);
8216    }
8217
8218    _removeLinkedListItem(this, child);
8219
8220    if (child === this._recent) {
8221      this._recent = this._last;
8222    }
8223
8224    return _uncache(this);
8225  };
8226
8227  _proto2.totalTime = function totalTime(_totalTime2, suppressEvents) {
8228    if (!arguments.length) {
8229      return this._tTime;
8230    }
8231
8232    this._forcing = 1;
8233
8234    if (!this._dp && this._ts) {
8235      //special case for the global timeline (or any other that has no parent or detached parent).
8236      this._start = _roundPrecise(_ticker.time - (this._ts > 0 ? _totalTime2 / this._ts : (this.totalDuration() - _totalTime2) / -this._ts));
8237    }
8238
8239    _Animation.prototype.totalTime.call(this, _totalTime2, suppressEvents);
8240
8241    this._forcing = 0;
8242    return this;
8243  };
8244
8245  _proto2.addLabel = function addLabel(label, position) {
8246    this.labels[label] = _parsePosition(this, position);
8247    return this;
8248  };
8249
8250  _proto2.removeLabel = function removeLabel(label) {
8251    delete this.labels[label];
8252    return this;
8253  };
8254
8255  _proto2.addPause = function addPause(position, callback, params) {
8256    var t = Tween.delayedCall(0, callback || _emptyFunc, params);
8257    t.data = "isPause";
8258    this._hasPause = 1;
8259    return _addToTimeline(this, t, _parsePosition(this, position));
8260  };
8261
8262  _proto2.removePause = function removePause(position) {
8263    var child = this._first;
8264    position = _parsePosition(this, position);
8265
8266    while (child) {
8267      if (child._start === position && child.data === "isPause") {
8268        _removeFromParent(child);
8269      }
8270
8271      child = child._next;
8272    }
8273  };
8274
8275  _proto2.killTweensOf = function killTweensOf(targets, props, onlyActive) {
8276    var tweens = this.getTweensOf(targets, onlyActive),
8277        i = tweens.length;
8278
8279    while (i--) {
8280      _overwritingTween !== tweens[i] && tweens[i].kill(targets, props);
8281    }
8282
8283    return this;
8284  };
8285
8286  _proto2.getTweensOf = function getTweensOf(targets, onlyActive) {
8287    var a = [],
8288        parsedTargets = toArray(targets),
8289        child = this._first,
8290        isGlobalTime = _isNumber(onlyActive),
8291        // a number is interpreted as a global time. If the animation spans
8292    children;
8293
8294    while (child) {
8295      if (child instanceof Tween) {
8296        if (_arrayContainsAny(child._targets, parsedTargets) && (isGlobalTime ? (!_overwritingTween || child._initted && child._ts) && child.globalTime(0) <= onlyActive && child.globalTime(child.totalDuration()) > onlyActive : !onlyActive || child.isActive())) {
8297          // note: if this is for overwriting, it should only be for tweens that aren't paused and are initted.
8298          a.push(child);
8299        }
8300      } else if ((children = child.getTweensOf(parsedTargets, onlyActive)).length) {
8301        a.push.apply(a, children);
8302      }
8303
8304      child = child._next;
8305    }
8306
8307    return a;
8308  } // potential future feature - targets() on timelines
8309  // targets() {
8310  // 	let result = [];
8311  // 	this.getChildren(true, true, false).forEach(t => result.push(...t.targets()));
8312  // 	return result.filter((v, i) => result.indexOf(v) === i);
8313  // }
8314  ;
8315
8316  _proto2.tweenTo = function tweenTo(position, vars) {
8317    vars = vars || {};
8318
8319    var tl = this,
8320        endTime = _parsePosition(tl, position),
8321        _vars = vars,
8322        startAt = _vars.startAt,
8323        _onStart = _vars.onStart,
8324        onStartParams = _vars.onStartParams,
8325        immediateRender = _vars.immediateRender,
8326        initted,
8327        tween = Tween.to(tl, _setDefaults({
8328      ease: vars.ease || "none",
8329      lazy: false,
8330      immediateRender: false,
8331      time: endTime,
8332      overwrite: "auto",
8333      duration: vars.duration || Math.abs((endTime - (startAt && "time" in startAt ? startAt.time : tl._time)) / tl.timeScale()) || _tinyNum,
8334      onStart: function onStart() {
8335        tl.pause();
8336
8337        if (!initted) {
8338          var duration = vars.duration || Math.abs((endTime - (startAt && "time" in startAt ? startAt.time : tl._time)) / tl.timeScale());
8339          tween._dur !== duration && _setDuration(tween, duration, 0, 1).render(tween._time, true, true);
8340          initted = 1;
8341        }
8342
8343        _onStart && _onStart.apply(tween, onStartParams || []); //in case the user had an onStart in the vars - we don't want to overwrite it.
8344      }
8345    }, vars));
8346
8347    return immediateRender ? tween.render(0) : tween;
8348  };
8349
8350  _proto2.tweenFromTo = function tweenFromTo(fromPosition, toPosition, vars) {
8351    return this.tweenTo(toPosition, _setDefaults({
8352      startAt: {
8353        time: _parsePosition(this, fromPosition)
8354      }
8355    }, vars));
8356  };
8357
8358  _proto2.recent = function recent() {
8359    return this._recent;
8360  };
8361
8362  _proto2.nextLabel = function nextLabel(afterTime) {
8363    if (afterTime === void 0) {
8364      afterTime = this._time;
8365    }
8366
8367    return _getLabelInDirection(this, _parsePosition(this, afterTime));
8368  };
8369
8370  _proto2.previousLabel = function previousLabel(beforeTime) {
8371    if (beforeTime === void 0) {
8372      beforeTime = this._time;
8373    }
8374
8375    return _getLabelInDirection(this, _parsePosition(this, beforeTime), 1);
8376  };
8377
8378  _proto2.currentLabel = function currentLabel(value) {
8379    return arguments.length ? this.seek(value, true) : this.previousLabel(this._time + _tinyNum);
8380  };
8381
8382  _proto2.shiftChildren = function shiftChildren(amount, adjustLabels, ignoreBeforeTime) {
8383    if (ignoreBeforeTime === void 0) {
8384      ignoreBeforeTime = 0;
8385    }
8386
8387    var child = this._first,
8388        labels = this.labels,
8389        p;
8390
8391    while (child) {
8392      if (child._start >= ignoreBeforeTime) {
8393        child._start += amount;
8394        child._end += amount;
8395      }
8396
8397      child = child._next;
8398    }
8399
8400    if (adjustLabels) {
8401      for (p in labels) {
8402        if (labels[p] >= ignoreBeforeTime) {
8403          labels[p] += amount;
8404        }
8405      }
8406    }
8407
8408    return _uncache(this);
8409  };
8410
8411  _proto2.invalidate = function invalidate(soft) {
8412    var child = this._first;
8413    this._lock = 0;
8414
8415    while (child) {
8416      child.invalidate(soft);
8417      child = child._next;
8418    }
8419
8420    return _Animation.prototype.invalidate.call(this, soft);
8421  };
8422
8423  _proto2.clear = function clear(includeLabels) {
8424    if (includeLabels === void 0) {
8425      includeLabels = true;
8426    }
8427
8428    var child = this._first,
8429        next;
8430
8431    while (child) {
8432      next = child._next;
8433      this.remove(child);
8434      child = next;
8435    }
8436
8437    this._dp && (this._time = this._tTime = this._pTime = 0);
8438    includeLabels && (this.labels = {});
8439    return _uncache(this);
8440  };
8441
8442  _proto2.totalDuration = function totalDuration(value) {
8443    var max = 0,
8444        self = this,
8445        child = self._last,
8446        prevStart = _bigNum,
8447        prev,
8448        start,
8449        parent;
8450
8451    if (arguments.length) {
8452      return self.timeScale((self._repeat < 0 ? self.duration() : self.totalDuration()) / (self.reversed() ? -value : value));
8453    }
8454
8455    if (self._dirty) {
8456      parent = self.parent;
8457
8458      while (child) {
8459        prev = child._prev; //record it here in case the tween changes position in the sequence...
8460
8461        child._dirty && child.totalDuration(); //could change the tween._startTime, so make sure the animation's cache is clean before analyzing it.
8462
8463        start = child._start;
8464
8465        if (start > prevStart && self._sort && child._ts && !self._lock) {
8466          //in case one of the tweens shifted out of order, it needs to be re-inserted into the correct position in the sequence
8467          self._lock = 1; //prevent endless recursive calls - there are methods that get triggered that check duration/totalDuration when we add().
8468
8469          _addToTimeline(self, child, start - child._delay, 1)._lock = 0;
8470        } else {
8471          prevStart = start;
8472        }
8473
8474        if (start < 0 && child._ts) {
8475          //children aren't allowed to have negative startTimes unless smoothChildTiming is true, so adjust here if one is found.
8476          max -= start;
8477
8478          if (!parent && !self._dp || parent && parent.smoothChildTiming) {
8479            self._start += start / self._ts;
8480            self._time -= start;
8481            self._tTime -= start;
8482          }
8483
8484          self.shiftChildren(-start, false, -1e999);
8485          prevStart = 0;
8486        }
8487
8488        child._end > max && child._ts && (max = child._end);
8489        child = prev;
8490      }
8491
8492      _setDuration(self, self === _globalTimeline && self._time > max ? self._time : max, 1, 1);
8493
8494      self._dirty = 0;
8495    }
8496
8497    return self._tDur;
8498  };
8499
8500  Timeline.updateRoot = function updateRoot(time) {
8501    if (_globalTimeline._ts) {
8502      _lazySafeRender(_globalTimeline, _parentToChildTotalTime(time, _globalTimeline));
8503
8504      _lastRenderedFrame = _ticker.frame;
8505    }
8506
8507    if (_ticker.frame >= _nextGCFrame) {
8508      _nextGCFrame += _config.autoSleep || 120;
8509      var child = _globalTimeline._first;
8510      if (!child || !child._ts) if (_config.autoSleep && _ticker._listeners.length < 2) {
8511        while (child && !child._ts) {
8512          child = child._next;
8513        }
8514
8515        child || _ticker.sleep();
8516      }
8517    }
8518  };
8519
8520  return Timeline;
8521}(Animation);
8522
8523_setDefaults(Timeline.prototype, {
8524  _lock: 0,
8525  _hasPause: 0,
8526  _forcing: 0
8527});
8528
8529var _addComplexStringPropTween = function _addComplexStringPropTween(target, prop, start, end, setter, stringFilter, funcParam) {
8530  //note: we call _addComplexStringPropTween.call(tweenInstance...) to ensure that it's scoped properly. We may call it from within a plugin too, thus "this" would refer to the plugin.
8531  var pt = new PropTween(this._pt, target, prop, 0, 1, _renderComplexString, null, setter),
8532      index = 0,
8533      matchIndex = 0,
8534      result,
8535      startNums,
8536      color,
8537      endNum,
8538      chunk,
8539      startNum,
8540      hasRandom,
8541      a;
8542  pt.b = start;
8543  pt.e = end;
8544  start += ""; //ensure values are strings
8545
8546  end += "";
8547
8548  if (hasRandom = ~end.indexOf("random(")) {
8549    end = _replaceRandom(end);
8550  }
8551
8552  if (stringFilter) {
8553    a = [start, end];
8554    stringFilter(a, target, prop); //pass an array with the starting and ending values and let the filter do whatever it needs to the values.
8555
8556    start = a[0];
8557    end = a[1];
8558  }
8559
8560  startNums = start.match(_complexStringNumExp) || [];
8561
8562  while (result = _complexStringNumExp.exec(end)) {
8563    endNum = result[0];
8564    chunk = end.substring(index, result.index);
8565
8566    if (color) {
8567      color = (color + 1) % 5;
8568    } else if (chunk.substr(-5) === "rgba(") {
8569      color = 1;
8570    }
8571
8572    if (endNum !== startNums[matchIndex++]) {
8573      startNum = parseFloat(startNums[matchIndex - 1]) || 0; //these nested PropTweens are handled in a special way - we'll never actually call a render or setter method on them. We'll just loop through them in the parent complex string PropTween's render method.
8574
8575      pt._pt = {
8576        _next: pt._pt,
8577        p: chunk || matchIndex === 1 ? chunk : ",",
8578        //note: SVG spec allows omission of comma/space when a negative sign is wedged between two numbers, like 2.5-5.3 instead of 2.5,-5.3 but when tweening, the negative value may switch to positive, so we insert the comma just in case.
8579        s: startNum,
8580        c: endNum.charAt(1) === "=" ? _parseRelative(startNum, endNum) - startNum : parseFloat(endNum) - startNum,
8581        m: color && color < 4 ? Math.round : 0
8582      };
8583      index = _complexStringNumExp.lastIndex;
8584    }
8585  }
8586
8587  pt.c = index < end.length ? end.substring(index, end.length) : ""; //we use the "c" of the PropTween to store the final part of the string (after the last number)
8588
8589  pt.fp = funcParam;
8590
8591  if (_relExp.test(end) || hasRandom) {
8592    pt.e = 0; //if the end string contains relative values or dynamic random(...) values, delete the end it so that on the final render we don't actually set it to the string with += or -= characters (forces it to use the calculated value).
8593  }
8594
8595  this._pt = pt; //start the linked list with this new PropTween. Remember, we call _addComplexStringPropTween.call(tweenInstance...) to ensure that it's scoped properly. We may call it from within a plugin too, thus "this" would refer to the plugin.
8596
8597  return pt;
8598},
8599    _addPropTween = function _addPropTween(target, prop, start, end, index, targets, modifier, stringFilter, funcParam, optional) {
8600  _isFunction(end) && (end = end(index || 0, target, targets));
8601  var currentValue = target[prop],
8602      parsedStart = start !== "get" ? start : !_isFunction(currentValue) ? currentValue : funcParam ? target[prop.indexOf("set") || !_isFunction(target["get" + prop.substr(3)]) ? prop : "get" + prop.substr(3)](funcParam) : target[prop](),
8603      setter = !_isFunction(currentValue) ? _setterPlain : funcParam ? _setterFuncWithParam : _setterFunc,
8604      pt;
8605
8606  if (_isString(end)) {
8607    if (~end.indexOf("random(")) {
8608      end = _replaceRandom(end);
8609    }
8610
8611    if (end.charAt(1) === "=") {
8612      pt = _parseRelative(parsedStart, end) + (getUnit(parsedStart) || 0);
8613
8614      if (pt || pt === 0) {
8615        // to avoid isNaN, like if someone passes in a value like "!= whatever"
8616        end = pt;
8617      }
8618    }
8619  }
8620
8621  if (!optional || parsedStart !== end || _forceAllPropTweens) {
8622    if (!isNaN(parsedStart * end) && end !== "") {
8623      // fun fact: any number multiplied by "" is evaluated as the number 0!
8624      pt = new PropTween(this._pt, target, prop, +parsedStart || 0, end - (parsedStart || 0), typeof currentValue === "boolean" ? _renderBoolean : _renderPlain, 0, setter);
8625      funcParam && (pt.fp = funcParam);
8626      modifier && pt.modifier(modifier, this, target);
8627      return this._pt = pt;
8628    }
8629
8630    !currentValue && !(prop in target) && _missingPlugin(prop, end);
8631    return _addComplexStringPropTween.call(this, target, prop, parsedStart, end, setter, stringFilter || _config.stringFilter, funcParam);
8632  }
8633},
8634    //creates a copy of the vars object and processes any function-based values (putting the resulting values directly into the copy) as well as strings with "random()" in them. It does NOT process relative values.
8635_processVars = function _processVars(vars, index, target, targets, tween) {
8636  _isFunction(vars) && (vars = _parseFuncOrString(vars, tween, index, target, targets));
8637
8638  if (!_isObject(vars) || vars.style && vars.nodeType || _isArray(vars) || _isTypedArray(vars)) {
8639    return _isString(vars) ? _parseFuncOrString(vars, tween, index, target, targets) : vars;
8640  }
8641
8642  var copy = {},
8643      p;
8644
8645  for (p in vars) {
8646    copy[p] = _parseFuncOrString(vars[p], tween, index, target, targets);
8647  }
8648
8649  return copy;
8650},
8651    _checkPlugin = function _checkPlugin(property, vars, tween, index, target, targets) {
8652  var plugin, pt, ptLookup, i;
8653
8654  if (_plugins[property] && (plugin = new _plugins[property]()).init(target, plugin.rawVars ? vars[property] : _processVars(vars[property], index, target, targets, tween), tween, index, targets) !== false) {
8655    tween._pt = pt = new PropTween(tween._pt, target, property, 0, 1, plugin.render, plugin, 0, plugin.priority);
8656
8657    if (tween !== _quickTween) {
8658      ptLookup = tween._ptLookup[tween._targets.indexOf(target)]; //note: we can't use tween._ptLookup[index] because for staggered tweens, the index from the fullTargets array won't match what it is in each individual tween that spawns from the stagger.
8659
8660      i = plugin._props.length;
8661
8662      while (i--) {
8663        ptLookup[plugin._props[i]] = pt;
8664      }
8665    }
8666  }
8667
8668  return plugin;
8669},
8670    _overwritingTween,
8671    //store a reference temporarily so we can avoid overwriting itself.
8672_forceAllPropTweens,
8673    _initTween = function _initTween(tween, time, tTime) {
8674  var vars = tween.vars,
8675      ease = vars.ease,
8676      startAt = vars.startAt,
8677      immediateRender = vars.immediateRender,
8678      lazy = vars.lazy,
8679      onUpdate = vars.onUpdate,
8680      onUpdateParams = vars.onUpdateParams,
8681      callbackScope = vars.callbackScope,
8682      runBackwards = vars.runBackwards,
8683      yoyoEase = vars.yoyoEase,
8684      keyframes = vars.keyframes,
8685      autoRevert = vars.autoRevert,
8686      dur = tween._dur,
8687      prevStartAt = tween._startAt,
8688      targets = tween._targets,
8689      parent = tween.parent,
8690      fullTargets = parent && parent.data === "nested" ? parent.vars.targets : targets,
8691      autoOverwrite = tween._overwrite === "auto" && !_suppressOverwrites,
8692      tl = tween.timeline,
8693      cleanVars,
8694      i,
8695      p,
8696      pt,
8697      target,
8698      hasPriority,
8699      gsData,
8700      harness,
8701      plugin,
8702      ptLookup,
8703      index,
8704      harnessVars,
8705      overwritten;
8706  tl && (!keyframes || !ease) && (ease = "none");
8707  tween._ease = _parseEase(ease, _defaults.ease);
8708  tween._yEase = yoyoEase ? _invertEase(_parseEase(yoyoEase === true ? ease : yoyoEase, _defaults.ease)) : 0;
8709
8710  if (yoyoEase && tween._yoyo && !tween._repeat) {
8711    //there must have been a parent timeline with yoyo:true that is currently in its yoyo phase, so flip the eases.
8712    yoyoEase = tween._yEase;
8713    tween._yEase = tween._ease;
8714    tween._ease = yoyoEase;
8715  }
8716
8717  tween._from = !tl && !!vars.runBackwards; //nested timelines should never run backwards - the backwards-ness is in the child tweens.
8718
8719  if (!tl || keyframes && !vars.stagger) {
8720    //if there's an internal timeline, skip all the parsing because we passed that task down the chain.
8721    harness = targets[0] ? _getCache(targets[0]).harness : 0;
8722    harnessVars = harness && vars[harness.prop]; //someone may need to specify CSS-specific values AND non-CSS values, like if the element has an "x" property plus it's a standard DOM element. We allow people to distinguish by wrapping plugin-specific stuff in a css:{} object for example.
8723
8724    cleanVars = _copyExcluding(vars, _reservedProps);
8725
8726    if (prevStartAt) {
8727      prevStartAt._zTime < 0 && prevStartAt.progress(1); // in case it's a lazy startAt that hasn't rendered yet.
8728
8729      time < 0 && runBackwards && immediateRender && !autoRevert ? prevStartAt.render(-1, true) : prevStartAt.revert(runBackwards && dur ? _revertConfigNoKill : _startAtRevertConfig); // if it's a "startAt" (not "from()" or runBackwards: true), we only need to do a shallow revert (keep transforms cached in CSSPlugin)
8730      // don't just _removeFromParent(prevStartAt.render(-1, true)) because that'll leave inline styles. We're creating a new _startAt for "startAt" tweens that re-capture things to ensure that if the pre-tween values changed since the tween was created, they're recorded.
8731
8732      prevStartAt._lazy = 0;
8733    }
8734
8735    if (startAt) {
8736      _removeFromParent(tween._startAt = Tween.set(targets, _setDefaults({
8737        data: "isStart",
8738        overwrite: false,
8739        parent: parent,
8740        immediateRender: true,
8741        lazy: !prevStartAt && _isNotFalse(lazy),
8742        startAt: null,
8743        delay: 0,
8744        onUpdate: onUpdate,
8745        onUpdateParams: onUpdateParams,
8746        callbackScope: callbackScope,
8747        stagger: 0
8748      }, startAt))); //copy the properties/values into a new object to avoid collisions, like var to = {x:0}, from = {x:500}; timeline.fromTo(e, from, to).fromTo(e, to, from);
8749
8750
8751      tween._startAt._dp = 0; // don't allow it to get put back into root timeline! Like when revert() is called and totalTime() gets set.
8752
8753      tween._startAt._sat = tween; // used in globalTime(). _sat stands for _startAtTween
8754
8755      time < 0 && (_reverting || !immediateRender && !autoRevert) && tween._startAt.revert(_revertConfigNoKill); // rare edge case, like if a render is forced in the negative direction of a non-initted tween.
8756
8757      if (immediateRender) {
8758        if (dur && time <= 0 && tTime <= 0) {
8759          // check tTime here because in the case of a yoyo tween whose playhead gets pushed to the end like tween.progress(1), we should allow it through so that the onComplete gets fired properly.
8760          time && (tween._zTime = time);
8761          return; //we skip initialization here so that overwriting doesn't occur until the tween actually begins. Otherwise, if you create several immediateRender:true tweens of the same target/properties to drop into a Timeline, the last one created would overwrite the first ones because they didn't get placed into the timeline yet before the first render occurs and kicks in overwriting.
8762        }
8763      }
8764    } else if (runBackwards && dur) {
8765      //from() tweens must be handled uniquely: their beginning values must be rendered but we don't want overwriting to occur yet (when time is still 0). Wait until the tween actually begins before doing all the routines like overwriting. At that time, we should render at the END of the tween to ensure that things initialize correctly (remember, from() tweens go backwards)
8766      if (!prevStartAt) {
8767        time && (immediateRender = false); //in rare cases (like if a from() tween runs and then is invalidate()-ed), immediateRender could be true but the initial forced-render gets skipped, so there's no need to force the render in this context when the _time is greater than 0
8768
8769        p = _setDefaults({
8770          overwrite: false,
8771          data: "isFromStart",
8772          //we tag the tween with as "isFromStart" so that if [inside a plugin] we need to only do something at the very END of a tween, we have a way of identifying this tween as merely the one that's setting the beginning values for a "from()" tween. For example, clearProps in CSSPlugin should only get applied at the very END of a tween and without this tag, from(...{height:100, clearProps:"height", delay:1}) would wipe the height at the beginning of the tween and after 1 second, it'd kick back in.
8773          lazy: immediateRender && !prevStartAt && _isNotFalse(lazy),
8774          immediateRender: immediateRender,
8775          //zero-duration tweens render immediately by default, but if we're not specifically instructed to render this tween immediately, we should skip this and merely _init() to record the starting values (rendering them immediately would push them to completion which is wasteful in that case - we'd have to render(-1) immediately after)
8776          stagger: 0,
8777          parent: parent //ensures that nested tweens that had a stagger are handled properly, like gsap.from(".class", {y: gsap.utils.wrap([-100,100]), stagger: 0.5})
8778
8779        }, cleanVars);
8780        harnessVars && (p[harness.prop] = harnessVars); // in case someone does something like .from(..., {css:{}})
8781
8782        _removeFromParent(tween._startAt = Tween.set(targets, p));
8783
8784        tween._startAt._dp = 0; // don't allow it to get put back into root timeline!
8785
8786        tween._startAt._sat = tween; // used in globalTime()
8787
8788        time < 0 && (_reverting ? tween._startAt.revert(_revertConfigNoKill) : tween._startAt.render(-1, true));
8789        tween._zTime = time;
8790
8791        if (!immediateRender) {
8792          _initTween(tween._startAt, _tinyNum, _tinyNum); //ensures that the initial values are recorded
8793
8794        } else if (!time) {
8795          return;
8796        }
8797      }
8798    }
8799
8800    tween._pt = tween._ptCache = 0;
8801    lazy = dur && _isNotFalse(lazy) || lazy && !dur;
8802
8803    for (i = 0; i < targets.length; i++) {
8804      target = targets[i];
8805      gsData = target._gsap || _harness(targets)[i]._gsap;
8806      tween._ptLookup[i] = ptLookup = {};
8807      _lazyLookup[gsData.id] && _lazyTweens.length && _lazyRender(); //if other tweens of the same target have recently initted but haven't rendered yet, we've got to force the render so that the starting values are correct (imagine populating a timeline with a bunch of sequential tweens and then jumping to the end)
8808
8809      index = fullTargets === targets ? i : fullTargets.indexOf(target);
8810
8811      if (harness && (plugin = new harness()).init(target, harnessVars || cleanVars, tween, index, fullTargets) !== false) {
8812        tween._pt = pt = new PropTween(tween._pt, target, plugin.name, 0, 1, plugin.render, plugin, 0, plugin.priority);
8813
8814        plugin._props.forEach(function (name) {
8815          ptLookup[name] = pt;
8816        });
8817
8818        plugin.priority && (hasPriority = 1);
8819      }
8820
8821      if (!harness || harnessVars) {
8822        for (p in cleanVars) {
8823          if (_plugins[p] && (plugin = _checkPlugin(p, cleanVars, tween, index, target, fullTargets))) {
8824            plugin.priority && (hasPriority = 1);
8825          } else {
8826            ptLookup[p] = pt = _addPropTween.call(tween, target, p, "get", cleanVars[p], index, fullTargets, 0, vars.stringFilter);
8827          }
8828        }
8829      }
8830
8831      tween._op && tween._op[i] && tween.kill(target, tween._op[i]);
8832
8833      if (autoOverwrite && tween._pt) {
8834        _overwritingTween = tween;
8835
8836        _globalTimeline.killTweensOf(target, ptLookup, tween.globalTime(time)); // make sure the overwriting doesn't overwrite THIS tween!!!
8837
8838
8839        overwritten = !tween.parent;
8840        _overwritingTween = 0;
8841      }
8842
8843      tween._pt && lazy && (_lazyLookup[gsData.id] = 1);
8844    }
8845
8846    hasPriority && _sortPropTweensByPriority(tween);
8847    tween._onInit && tween._onInit(tween); //plugins like RoundProps must wait until ALL of the PropTweens are instantiated. In the plugin's init() function, it sets the _onInit on the tween instance. May not be pretty/intuitive, but it's fast and keeps file size down.
8848  }
8849
8850  tween._onUpdate = onUpdate;
8851  tween._initted = (!tween._op || tween._pt) && !overwritten; // if overwrittenProps resulted in the entire tween being killed, do NOT flag it as initted or else it may render for one tick.
8852
8853  keyframes && time <= 0 && tl.render(_bigNum, true, true); // if there's a 0% keyframe, it'll render in the "before" state for any staggered/delayed animations thus when the following tween initializes, it'll use the "before" state instead of the "after" state as the initial values.
8854},
8855    _updatePropTweens = function _updatePropTweens(tween, property, value, start, startIsRelative, ratio, time) {
8856  var ptCache = (tween._pt && tween._ptCache || (tween._ptCache = {}))[property],
8857      pt,
8858      rootPT,
8859      lookup,
8860      i;
8861
8862  if (!ptCache) {
8863    ptCache = tween._ptCache[property] = [];
8864    lookup = tween._ptLookup;
8865    i = tween._targets.length;
8866
8867    while (i--) {
8868      pt = lookup[i][property];
8869
8870      if (pt && pt.d && pt.d._pt) {
8871        // it's a plugin, so find the nested PropTween
8872        pt = pt.d._pt;
8873
8874        while (pt && pt.p !== property && pt.fp !== property) {
8875          // "fp" is functionParam for things like setting CSS variables which require .setProperty("--var-name", value)
8876          pt = pt._next;
8877        }
8878      }
8879
8880      if (!pt) {
8881        // there is no PropTween associated with that property, so we must FORCE one to be created and ditch out of this
8882        // if the tween has other properties that already rendered at new positions, we'd normally have to rewind to put them back like tween.render(0, true) before forcing an _initTween(), but that can create another edge case like tweening a timeline's progress would trigger onUpdates to fire which could move other things around. It's better to just inform users that .resetTo() should ONLY be used for tweens that already have that property. For example, you can't gsap.to(...{ y: 0 }) and then tween.restTo("x", 200) for example.
8883        _forceAllPropTweens = 1; // otherwise, when we _addPropTween() and it finds no change between the start and end values, it skips creating a PropTween (for efficiency...why tween when there's no difference?) but in this case we NEED that PropTween created so we can edit it.
8884
8885        tween.vars[property] = "+=0";
8886
8887        _initTween(tween, time);
8888
8889        _forceAllPropTweens = 0;
8890        return 1;
8891      }
8892
8893      ptCache.push(pt);
8894    }
8895  }
8896
8897  i = ptCache.length;
8898
8899  while (i--) {
8900    rootPT = ptCache[i];
8901    pt = rootPT._pt || rootPT; // complex values may have nested PropTweens. We only accommodate the FIRST value.
8902
8903    pt.s = (start || start === 0) && !startIsRelative ? start : pt.s + (start || 0) + ratio * pt.c;
8904    pt.c = value - pt.s;
8905    rootPT.e && (rootPT.e = _round(value) + getUnit(rootPT.e)); // mainly for CSSPlugin (end value)
8906
8907    rootPT.b && (rootPT.b = pt.s + getUnit(rootPT.b)); // (beginning value)
8908  }
8909},
8910    _addAliasesToVars = function _addAliasesToVars(targets, vars) {
8911  var harness = targets[0] ? _getCache(targets[0]).harness : 0,
8912      propertyAliases = harness && harness.aliases,
8913      copy,
8914      p,
8915      i,
8916      aliases;
8917
8918  if (!propertyAliases) {
8919    return vars;
8920  }
8921
8922  copy = _merge({}, vars);
8923
8924  for (p in propertyAliases) {
8925    if (p in copy) {
8926      aliases = propertyAliases[p].split(",");
8927      i = aliases.length;
8928
8929      while (i--) {
8930        copy[aliases[i]] = copy[p];
8931      }
8932    }
8933  }
8934
8935  return copy;
8936},
8937    // parses multiple formats, like {"0%": {x: 100}, {"50%": {x: -20}} and { x: {"0%": 100, "50%": -20} }, and an "ease" can be set on any object. We populate an "allProps" object with an Array for each property, like {x: [{}, {}], y:[{}, {}]} with data for each property tween. The objects have a "t" (time), "v", (value), and "e" (ease) property. This allows us to piece together a timeline later.
8938_parseKeyframe = function _parseKeyframe(prop, obj, allProps, easeEach) {
8939  var ease = obj.ease || easeEach || "power1.inOut",
8940      p,
8941      a;
8942
8943  if (_isArray(obj)) {
8944    a = allProps[prop] || (allProps[prop] = []); // t = time (out of 100), v = value, e = ease
8945
8946    obj.forEach(function (value, i) {
8947      return a.push({
8948        t: i / (obj.length - 1) * 100,
8949        v: value,
8950        e: ease
8951      });
8952    });
8953  } else {
8954    for (p in obj) {
8955      a = allProps[p] || (allProps[p] = []);
8956      p === "ease" || a.push({
8957        t: parseFloat(prop),
8958        v: obj[p],
8959        e: ease
8960      });
8961    }
8962  }
8963},
8964    _parseFuncOrString = function _parseFuncOrString(value, tween, i, target, targets) {
8965  return _isFunction(value) ? value.call(tween, i, target, targets) : _isString(value) && ~value.indexOf("random(") ? _replaceRandom(value) : value;
8966},
8967    _staggerTweenProps = _callbackNames + "repeat,repeatDelay,yoyo,repeatRefresh,yoyoEase,autoRevert",
8968    _staggerPropsToSkip = {};
8969
8970_forEachName(_staggerTweenProps + ",id,stagger,delay,duration,paused,scrollTrigger", function (name) {
8971  return _staggerPropsToSkip[name] = 1;
8972});
8973/*
8974 * --------------------------------------------------------------------------------------
8975 * TWEEN
8976 * --------------------------------------------------------------------------------------
8977 */
8978
8979
8980var Tween = /*#__PURE__*/function (_Animation2) {
8981  _inheritsLoose(Tween, _Animation2);
8982
8983  function Tween(targets, vars, position, skipInherit) {
8984    var _this3;
8985
8986    if (typeof vars === "number") {
8987      position.duration = vars;
8988      vars = position;
8989      position = null;
8990    }
8991
8992    _this3 = _Animation2.call(this, skipInherit ? vars : _inheritDefaults(vars)) || this;
8993    var _this3$vars = _this3.vars,
8994        duration = _this3$vars.duration,
8995        delay = _this3$vars.delay,
8996        immediateRender = _this3$vars.immediateRender,
8997        stagger = _this3$vars.stagger,
8998        overwrite = _this3$vars.overwrite,
8999        keyframes = _this3$vars.keyframes,
9000        defaults = _this3$vars.defaults,
9001        scrollTrigger = _this3$vars.scrollTrigger,
9002        yoyoEase = _this3$vars.yoyoEase,
9003        parent = vars.parent || _globalTimeline,
9004        parsedTargets = (_isArray(targets) || _isTypedArray(targets) ? _isNumber(targets[0]) : "length" in vars) ? [targets] : toArray(targets),
9005        tl,
9006        i,
9007        copy,
9008        l,
9009        p,
9010        curTarget,
9011        staggerFunc,
9012        staggerVarsToMerge;
9013    _this3._targets = parsedTargets.length ? _harness(parsedTargets) : _warn("GSAP target " + targets + " not found. https://greensock.com", !_config.nullTargetWarn) || [];
9014    _this3._ptLookup = []; //PropTween lookup. An array containing an object for each target, having keys for each tweening property
9015
9016    _this3._overwrite = overwrite;
9017
9018    if (keyframes || stagger || _isFuncOrString(duration) || _isFuncOrString(delay)) {
9019      vars = _this3.vars;
9020      tl = _this3.timeline = new Timeline({
9021        data: "nested",
9022        defaults: defaults || {},
9023        targets: parent && parent.data === "nested" ? parent.vars.targets : parsedTargets
9024      }); // we need to store the targets because for staggers and keyframes, we end up creating an individual tween for each but function-based values need to know the index and the whole Array of targets.
9025
9026      tl.kill();
9027      tl.parent = tl._dp = _assertThisInitialized(_this3);
9028      tl._start = 0;
9029
9030      if (stagger || _isFuncOrString(duration) || _isFuncOrString(delay)) {
9031        l = parsedTargets.length;
9032        staggerFunc = stagger && distribute(stagger);
9033
9034        if (_isObject(stagger)) {
9035          //users can pass in callbacks like onStart/onComplete in the stagger object. These should fire with each individual tween.
9036          for (p in stagger) {
9037            if (~_staggerTweenProps.indexOf(p)) {
9038              staggerVarsToMerge || (staggerVarsToMerge = {});
9039              staggerVarsToMerge[p] = stagger[p];
9040            }
9041          }
9042        }
9043
9044        for (i = 0; i < l; i++) {
9045          copy = _copyExcluding(vars, _staggerPropsToSkip);
9046          copy.stagger = 0;
9047          yoyoEase && (copy.yoyoEase = yoyoEase);
9048          staggerVarsToMerge && _merge(copy, staggerVarsToMerge);
9049          curTarget = parsedTargets[i]; //don't just copy duration or delay because if they're a string or function, we'd end up in an infinite loop because _isFuncOrString() would evaluate as true in the child tweens, entering this loop, etc. So we parse the value straight from vars and default to 0.
9050
9051          copy.duration = +_parseFuncOrString(duration, _assertThisInitialized(_this3), i, curTarget, parsedTargets);
9052          copy.delay = (+_parseFuncOrString(delay, _assertThisInitialized(_this3), i, curTarget, parsedTargets) || 0) - _this3._delay;
9053
9054          if (!stagger && l === 1 && copy.delay) {
9055            // if someone does delay:"random(1, 5)", repeat:-1, for example, the delay shouldn't be inside the repeat.
9056            _this3._delay = delay = copy.delay;
9057            _this3._start += delay;
9058            copy.delay = 0;
9059          }
9060
9061          tl.to(curTarget, copy, staggerFunc ? staggerFunc(i, curTarget, parsedTargets) : 0);
9062          tl._ease = _easeMap.none;
9063        }
9064
9065        tl.duration() ? duration = delay = 0 : _this3.timeline = 0; // if the timeline's duration is 0, we don't need a timeline internally!
9066      } else if (keyframes) {
9067        _inheritDefaults(_setDefaults(tl.vars.defaults, {
9068          ease: "none"
9069        }));
9070
9071        tl._ease = _parseEase(keyframes.ease || vars.ease || "none");
9072        var time = 0,
9073            a,
9074            kf,
9075            v;
9076
9077        if (_isArray(keyframes)) {
9078          keyframes.forEach(function (frame) {
9079            return tl.to(parsedTargets, frame, ">");
9080          });
9081          tl.duration(); // to ensure tl._dur is cached because we tap into it for performance purposes in the render() method.
9082        } else {
9083          copy = {};
9084
9085          for (p in keyframes) {
9086            p === "ease" || p === "easeEach" || _parseKeyframe(p, keyframes[p], copy, keyframes.easeEach);
9087          }
9088
9089          for (p in copy) {
9090            a = copy[p].sort(function (a, b) {
9091              return a.t - b.t;
9092            });
9093            time = 0;
9094
9095            for (i = 0; i < a.length; i++) {
9096              kf = a[i];
9097              v = {
9098                ease: kf.e,
9099                duration: (kf.t - (i ? a[i - 1].t : 0)) / 100 * duration
9100              };
9101              v[p] = kf.v;
9102              tl.to(parsedTargets, v, time);
9103              time += v.duration;
9104            }
9105          }
9106
9107          tl.duration() < duration && tl.to({}, {
9108            duration: duration - tl.duration()
9109          }); // in case keyframes didn't go to 100%
9110        }
9111      }
9112
9113      duration || _this3.duration(duration = tl.duration());
9114    } else {
9115      _this3.timeline = 0; //speed optimization, faster lookups (no going up the prototype chain)
9116    }
9117
9118    if (overwrite === true && !_suppressOverwrites) {
9119      _overwritingTween = _assertThisInitialized(_this3);
9120
9121      _globalTimeline.killTweensOf(parsedTargets);
9122
9123      _overwritingTween = 0;
9124    }
9125
9126    _addToTimeline(parent, _assertThisInitialized(_this3), position);
9127
9128    vars.reversed && _this3.reverse();
9129    vars.paused && _this3.paused(true);
9130
9131    if (immediateRender || !duration && !keyframes && _this3._start === _roundPrecise(parent._time) && _isNotFalse(immediateRender) && _hasNoPausedAncestors(_assertThisInitialized(_this3)) && parent.data !== "nested") {
9132      _this3._tTime = -_tinyNum; //forces a render without having to set the render() "force" parameter to true because we want to allow lazying by default (using the "force" parameter always forces an immediate full render)
9133
9134      _this3.render(Math.max(0, -delay) || 0); //in case delay is negative
9135
9136    }
9137
9138    scrollTrigger && _scrollTrigger(_assertThisInitialized(_this3), scrollTrigger);
9139    return _this3;
9140  }
9141
9142  var _proto3 = Tween.prototype;
9143
9144  _proto3.render = function render(totalTime, suppressEvents, force) {
9145    var prevTime = this._time,
9146        tDur = this._tDur,
9147        dur = this._dur,
9148        isNegative = totalTime < 0,
9149        tTime = totalTime > tDur - _tinyNum && !isNegative ? tDur : totalTime < _tinyNum ? 0 : totalTime,
9150        time,
9151        pt,
9152        iteration,
9153        cycleDuration,
9154        prevIteration,
9155        isYoyo,
9156        ratio,
9157        timeline,
9158        yoyoEase;
9159
9160    if (!dur) {
9161      _renderZeroDurationTween(this, totalTime, suppressEvents, force);
9162    } else if (tTime !== this._tTime || !totalTime || force || !this._initted && this._tTime || this._startAt && this._zTime < 0 !== isNegative) {
9163      //this senses if we're crossing over the start time, in which case we must record _zTime and force the render, but we do it in this lengthy conditional way for performance reasons (usually we can skip the calculations): this._initted && (this._zTime < 0) !== (totalTime < 0)
9164      time = tTime;
9165      timeline = this.timeline;
9166
9167      if (this._repeat) {
9168        //adjust the time for repeats and yoyos
9169        cycleDuration = dur + this._rDelay;
9170
9171        if (this._repeat < -1 && isNegative) {
9172          return this.totalTime(cycleDuration * 100 + totalTime, suppressEvents, force);
9173        }
9174
9175        time = _roundPrecise(tTime % cycleDuration); //round to avoid floating point errors. (4 % 0.8 should be 0 but some browsers report it as 0.79999999!)
9176
9177        if (tTime === tDur) {
9178          // the tDur === tTime is for edge cases where there's a lengthy decimal on the duration and it may reach the very end but the time is rendered as not-quite-there (remember, tDur is rounded to 4 decimals whereas dur isn't)
9179          iteration = this._repeat;
9180          time = dur;
9181        } else {
9182          iteration = ~~(tTime / cycleDuration);
9183
9184          if (iteration && iteration === tTime / cycleDuration) {
9185            time = dur;
9186            iteration--;
9187          }
9188
9189          time > dur && (time = dur);
9190        }
9191
9192        isYoyo = this._yoyo && iteration & 1;
9193
9194        if (isYoyo) {
9195          yoyoEase = this._yEase;
9196          time = dur - time;
9197        }
9198
9199        prevIteration = _animationCycle(this._tTime, cycleDuration);
9200
9201        if (time === prevTime && !force && this._initted) {
9202          //could be during the repeatDelay part. No need to render and fire callbacks.
9203          this._tTime = tTime;
9204          return this;
9205        }
9206
9207        if (iteration !== prevIteration) {
9208          timeline && this._yEase && _propagateYoyoEase(timeline, isYoyo); //repeatRefresh functionality
9209
9210          if (this.vars.repeatRefresh && !isYoyo && !this._lock) {
9211            this._lock = force = 1; //force, otherwise if lazy is true, the _attemptInitTween() will return and we'll jump out and get caught bouncing on each tick.
9212
9213            this.render(_roundPrecise(cycleDuration * iteration), true).invalidate()._lock = 0;
9214          }
9215        }
9216      }
9217
9218      if (!this._initted) {
9219        if (_attemptInitTween(this, isNegative ? totalTime : time, force, suppressEvents, tTime)) {
9220          this._tTime = 0; // in constructor if immediateRender is true, we set _tTime to -_tinyNum to have the playhead cross the starting point but we can't leave _tTime as a negative number.
9221
9222          return this;
9223        }
9224
9225        if (prevTime !== this._time) {
9226          // rare edge case - during initialization, an onUpdate in the _startAt (.fromTo()) might force this tween to render at a different spot in which case we should ditch this render() call so that it doesn't revert the values.
9227          return this;
9228        }
9229
9230        if (dur !== this._dur) {
9231          // while initting, a plugin like InertiaPlugin might alter the duration, so rerun from the start to ensure everything renders as it should.
9232          return this.render(totalTime, suppressEvents, force);
9233        }
9234      }
9235
9236      this._tTime = tTime;
9237      this._time = time;
9238
9239      if (!this._act && this._ts) {
9240        this._act = 1; //as long as it's not paused, force it to be active so that if the user renders independent of the parent timeline, it'll be forced to re-render on the next tick.
9241
9242        this._lazy = 0;
9243      }
9244
9245      this.ratio = ratio = (yoyoEase || this._ease)(time / dur);
9246
9247      if (this._from) {
9248        this.ratio = ratio = 1 - ratio;
9249      }
9250
9251      if (time && !prevTime && !suppressEvents && !iteration) {
9252        _callback(this, "onStart");
9253
9254        if (this._tTime !== tTime) {
9255          // in case the onStart triggered a render at a different spot, eject. Like if someone did animation.pause(0.5) or something inside the onStart.
9256          return this;
9257        }
9258      }
9259
9260      pt = this._pt;
9261
9262      while (pt) {
9263        pt.r(ratio, pt.d);
9264        pt = pt._next;
9265      }
9266
9267      timeline && timeline.render(totalTime < 0 ? totalTime : !time && isYoyo ? -_tinyNum : timeline._dur * timeline._ease(time / this._dur), suppressEvents, force) || this._startAt && (this._zTime = totalTime);
9268
9269      if (this._onUpdate && !suppressEvents) {
9270        isNegative && _rewindStartAt(this, totalTime, suppressEvents, force); //note: for performance reasons, we tuck this conditional logic inside less traveled areas (most tweens don't have an onUpdate). We'd just have it at the end before the onComplete, but the values should be updated before any onUpdate is called, so we ALSO put it here and then if it's not called, we do so later near the onComplete.
9271
9272        _callback(this, "onUpdate");
9273      }
9274
9275      this._repeat && iteration !== prevIteration && this.vars.onRepeat && !suppressEvents && this.parent && _callback(this, "onRepeat");
9276
9277      if ((tTime === this._tDur || !tTime) && this._tTime === tTime) {
9278        isNegative && !this._onUpdate && _rewindStartAt(this, totalTime, true, true);
9279        (totalTime || !dur) && (tTime === this._tDur && this._ts > 0 || !tTime && this._ts < 0) && _removeFromParent(this, 1); // don't remove if we're rendering at exactly a time of 0, as there could be autoRevert values that should get set on the next tick (if the playhead goes backward beyond the startTime, negative totalTime). Don't remove if the timeline is reversed and the playhead isn't at 0, otherwise tl.progress(1).reverse() won't work. Only remove if the playhead is at the end and timeScale is positive, or if the playhead is at 0 and the timeScale is negative.
9280
9281        if (!suppressEvents && !(isNegative && !prevTime) && (tTime || prevTime || isYoyo)) {
9282          // if prevTime and tTime are zero, we shouldn't fire the onReverseComplete. This could happen if you gsap.to(... {paused:true}).play();
9283          _callback(this, tTime === tDur ? "onComplete" : "onReverseComplete", true);
9284
9285          this._prom && !(tTime < tDur && this.timeScale() > 0) && this._prom();
9286        }
9287      }
9288    }
9289
9290    return this;
9291  };
9292
9293  _proto3.targets = function targets() {
9294    return this._targets;
9295  };
9296
9297  _proto3.invalidate = function invalidate(soft) {
9298    // "soft" gives us a way to clear out everything EXCEPT the recorded pre-"from" portion of from() tweens. Otherwise, for example, if you tween.progress(1).render(0, true true).invalidate(), the "from" values would persist and then on the next render, the from() tweens would initialize and the current value would match the "from" values, thus animate from the same value to the same value (no animation). We tap into this in ScrollTrigger's refresh() where we must push a tween to completion and then back again but honor its init state in case the tween is dependent on another tween further up on the page.
9299    (!soft || !this.vars.runBackwards) && (this._startAt = 0);
9300    this._pt = this._op = this._onUpdate = this._lazy = this.ratio = 0;
9301    this._ptLookup = [];
9302    this.timeline && this.timeline.invalidate(soft);
9303    return _Animation2.prototype.invalidate.call(this, soft);
9304  };
9305
9306  _proto3.resetTo = function resetTo(property, value, start, startIsRelative) {
9307    _tickerActive || _ticker.wake();
9308    this._ts || this.play();
9309    var time = Math.min(this._dur, (this._dp._time - this._start) * this._ts),
9310        ratio;
9311    this._initted || _initTween(this, time);
9312    ratio = this._ease(time / this._dur); // don't just get tween.ratio because it may not have rendered yet.
9313    // possible future addition to allow an object with multiple values to update, like tween.resetTo({x: 100, y: 200}); At this point, it doesn't seem worth the added kb given the fact that most users will likely opt for the convenient gsap.quickTo() way of interacting with this method.
9314    // if (_isObject(property)) { // performance optimization
9315    // 	for (p in property) {
9316    // 		if (_updatePropTweens(this, p, property[p], value ? value[p] : null, start, ratio, time)) {
9317    // 			return this.resetTo(property, value, start, startIsRelative); // if a PropTween wasn't found for the property, it'll get forced with a re-initialization so we need to jump out and start over again.
9318    // 		}
9319    // 	}
9320    // } else {
9321
9322    if (_updatePropTweens(this, property, value, start, startIsRelative, ratio, time)) {
9323      return this.resetTo(property, value, start, startIsRelative); // if a PropTween wasn't found for the property, it'll get forced with a re-initialization so we need to jump out and start over again.
9324    } //}
9325
9326
9327    _alignPlayhead(this, 0);
9328
9329    this.parent || _addLinkedListItem(this._dp, this, "_first", "_last", this._dp._sort ? "_start" : 0);
9330    return this.render(0);
9331  };
9332
9333  _proto3.kill = function kill(targets, vars) {
9334    if (vars === void 0) {
9335      vars = "all";
9336    }
9337
9338    if (!targets && (!vars || vars === "all")) {
9339      this._lazy = this._pt = 0;
9340      return this.parent ? _interrupt(this) : this;
9341    }
9342
9343    if (this.timeline) {
9344      var tDur = this.timeline.totalDuration();
9345      this.timeline.killTweensOf(targets, vars, _overwritingTween && _overwritingTween.vars.overwrite !== true)._first || _interrupt(this); // if nothing is left tweening, interrupt.
9346
9347      this.parent && tDur !== this.timeline.totalDuration() && _setDuration(this, this._dur * this.timeline._tDur / tDur, 0, 1); // if a nested tween is killed that changes the duration, it should affect this tween's duration. We must use the ratio, though, because sometimes the internal timeline is stretched like for keyframes where they don't all add up to whatever the parent tween's duration was set to.
9348
9349      return this;
9350    }
9351
9352    var parsedTargets = this._targets,
9353        killingTargets = targets ? toArray(targets) : parsedTargets,
9354        propTweenLookup = this._ptLookup,
9355        firstPT = this._pt,
9356        overwrittenProps,
9357        curLookup,
9358        curOverwriteProps,
9359        props,
9360        p,
9361        pt,
9362        i;
9363
9364    if ((!vars || vars === "all") && _arraysMatch(parsedTargets, killingTargets)) {
9365      vars === "all" && (this._pt = 0);
9366      return _interrupt(this);
9367    }
9368
9369    overwrittenProps = this._op = this._op || [];
9370
9371    if (vars !== "all") {
9372      //so people can pass in a comma-delimited list of property names
9373      if (_isString(vars)) {
9374        p = {};
9375
9376        _forEachName(vars, function (name) {
9377          return p[name] = 1;
9378        });
9379
9380        vars = p;
9381      }
9382
9383      vars = _addAliasesToVars(parsedTargets, vars);
9384    }
9385
9386    i = parsedTargets.length;
9387
9388    while (i--) {
9389      if (~killingTargets.indexOf(parsedTargets[i])) {
9390        curLookup = propTweenLookup[i];
9391
9392        if (vars === "all") {
9393          overwrittenProps[i] = vars;
9394          props = curLookup;
9395          curOverwriteProps = {};
9396        } else {
9397          curOverwriteProps = overwrittenProps[i] = overwrittenProps[i] || {};
9398          props = vars;
9399        }
9400
9401        for (p in props) {
9402          pt = curLookup && curLookup[p];
9403
9404          if (pt) {
9405            if (!("kill" in pt.d) || pt.d.kill(p) === true) {
9406              _removeLinkedListItem(this, pt, "_pt");
9407            }
9408
9409            delete curLookup[p];
9410          }
9411
9412          if (curOverwriteProps !== "all") {
9413            curOverwriteProps[p] = 1;
9414          }
9415        }
9416      }
9417    }
9418
9419    this._initted && !this._pt && firstPT && _interrupt(this); //if all tweening properties are killed, kill the tween. Without this line, if there's a tween with multiple targets and then you killTweensOf() each target individually, the tween would technically still remain active and fire its onComplete even though there aren't any more properties tweening.
9420
9421    return this;
9422  };
9423
9424  Tween.to = function to(targets, vars) {
9425    return new Tween(targets, vars, arguments[2]);
9426  };
9427
9428  Tween.from = function from(targets, vars) {
9429    return _createTweenType(1, arguments);
9430  };
9431
9432  Tween.delayedCall = function delayedCall(delay, callback, params, scope) {
9433    return new Tween(callback, 0, {
9434      immediateRender: false,
9435      lazy: false,
9436      overwrite: false,
9437      delay: delay,
9438      onComplete: callback,
9439      onReverseComplete: callback,
9440      onCompleteParams: params,
9441      onReverseCompleteParams: params,
9442      callbackScope: scope
9443    }); // we must use onReverseComplete too for things like timeline.add(() => {...}) which should be triggered in BOTH directions (forward and reverse)
9444  };
9445
9446  Tween.fromTo = function fromTo(targets, fromVars, toVars) {
9447    return _createTweenType(2, arguments);
9448  };
9449
9450  Tween.set = function set(targets, vars) {
9451    vars.duration = 0;
9452    vars.repeatDelay || (vars.repeat = 0);
9453    return new Tween(targets, vars);
9454  };
9455
9456  Tween.killTweensOf = function killTweensOf(targets, props, onlyActive) {
9457    return _globalTimeline.killTweensOf(targets, props, onlyActive);
9458  };
9459
9460  return Tween;
9461}(Animation);
9462
9463_setDefaults(Tween.prototype, {
9464  _targets: [],
9465  _lazy: 0,
9466  _startAt: 0,
9467  _op: 0,
9468  _onInit: 0
9469}); //add the pertinent timeline methods to Tween instances so that users can chain conveniently and create a timeline automatically. (removed due to concerns that it'd ultimately add to more confusion especially for beginners)
9470// _forEachName("to,from,fromTo,set,call,add,addLabel,addPause", name => {
9471// 	Tween.prototype[name] = function() {
9472// 		let tl = new Timeline();
9473// 		return _addToTimeline(tl, this)[name].apply(tl, toArray(arguments));
9474// 	}
9475// });
9476//for backward compatibility. Leverage the timeline calls.
9477
9478
9479_forEachName("staggerTo,staggerFrom,staggerFromTo", function (name) {
9480  Tween[name] = function () {
9481    var tl = new Timeline(),
9482        params = _slice.call(arguments, 0);
9483
9484    params.splice(name === "staggerFromTo" ? 5 : 4, 0, 0);
9485    return tl[name].apply(tl, params);
9486  };
9487});
9488/*
9489 * --------------------------------------------------------------------------------------
9490 * PROPTWEEN
9491 * --------------------------------------------------------------------------------------
9492 */
9493
9494
9495var _setterPlain = function _setterPlain(target, property, value) {
9496  return target[property] = value;
9497},
9498    _setterFunc = function _setterFunc(target, property, value) {
9499  return target[property](value);
9500},
9501    _setterFuncWithParam = function _setterFuncWithParam(target, property, value, data) {
9502  return target[property](data.fp, value);
9503},
9504    _setterAttribute = function _setterAttribute(target, property, value) {
9505  return target.setAttribute(property, value);
9506},
9507    _getSetter = function _getSetter(target, property) {
9508  return _isFunction(target[property]) ? _setterFunc : _isUndefined(target[property]) && target.setAttribute ? _setterAttribute : _setterPlain;
9509},
9510    _renderPlain = function _renderPlain(ratio, data) {
9511  return data.set(data.t, data.p, Math.round((data.s + data.c * ratio) * 1000000) / 1000000, data);
9512},
9513    _renderBoolean = function _renderBoolean(ratio, data) {
9514  return data.set(data.t, data.p, !!(data.s + data.c * ratio), data);
9515},
9516    _renderComplexString = function _renderComplexString(ratio, data) {
9517  var pt = data._pt,
9518      s = "";
9519
9520  if (!ratio && data.b) {
9521    //b = beginning string
9522    s = data.b;
9523  } else if (ratio === 1 && data.e) {
9524    //e = ending string
9525    s = data.e;
9526  } else {
9527    while (pt) {
9528      s = pt.p + (pt.m ? pt.m(pt.s + pt.c * ratio) : Math.round((pt.s + pt.c * ratio) * 10000) / 10000) + s; //we use the "p" property for the text inbetween (like a suffix). And in the context of a complex string, the modifier (m) is typically just Math.round(), like for RGB colors.
9529
9530      pt = pt._next;
9531    }
9532
9533    s += data.c; //we use the "c" of the PropTween to store the final chunk of non-numeric text.
9534  }
9535
9536  data.set(data.t, data.p, s, data);
9537},
9538    _renderPropTweens = function _renderPropTweens(ratio, data) {
9539  var pt = data._pt;
9540
9541  while (pt) {
9542    pt.r(ratio, pt.d);
9543    pt = pt._next;
9544  }
9545},
9546    _addPluginModifier = function _addPluginModifier(modifier, tween, target, property) {
9547  var pt = this._pt,
9548      next;
9549
9550  while (pt) {
9551    next = pt._next;
9552    pt.p === property && pt.modifier(modifier, tween, target);
9553    pt = next;
9554  }
9555},
9556    _killPropTweensOf = function _killPropTweensOf(property) {
9557  var pt = this._pt,
9558      hasNonDependentRemaining,
9559      next;
9560
9561  while (pt) {
9562    next = pt._next;
9563
9564    if (pt.p === property && !pt.op || pt.op === property) {
9565      _removeLinkedListItem(this, pt, "_pt");
9566    } else if (!pt.dep) {
9567      hasNonDependentRemaining = 1;
9568    }
9569
9570    pt = next;
9571  }
9572
9573  return !hasNonDependentRemaining;
9574},
9575    _setterWithModifier = function _setterWithModifier(target, property, value, data) {
9576  data.mSet(target, property, data.m.call(data.tween, value, data.mt), data);
9577},
9578    _sortPropTweensByPriority = function _sortPropTweensByPriority(parent) {
9579  var pt = parent._pt,
9580      next,
9581      pt2,
9582      first,
9583      last; //sorts the PropTween linked list in order of priority because some plugins need to do their work after ALL of the PropTweens were created (like RoundPropsPlugin and ModifiersPlugin)
9584
9585  while (pt) {
9586    next = pt._next;
9587    pt2 = first;
9588
9589    while (pt2 && pt2.pr > pt.pr) {
9590      pt2 = pt2._next;
9591    }
9592
9593    if (pt._prev = pt2 ? pt2._prev : last) {
9594      pt._prev._next = pt;
9595    } else {
9596      first = pt;
9597    }
9598
9599    if (pt._next = pt2) {
9600      pt2._prev = pt;
9601    } else {
9602      last = pt;
9603    }
9604
9605    pt = next;
9606  }
9607
9608  parent._pt = first;
9609}; //PropTween key: t = target, p = prop, r = renderer, d = data, s = start, c = change, op = overwriteProperty (ONLY populated when it's different than p), pr = priority, _next/_prev for the linked list siblings, set = setter, m = modifier, mSet = modifierSetter (the original setter, before a modifier was added)
9610
9611
9612var PropTween = /*#__PURE__*/function () {
9613  function PropTween(next, target, prop, start, change, renderer, data, setter, priority) {
9614    this.t = target;
9615    this.s = start;
9616    this.c = change;
9617    this.p = prop;
9618    this.r = renderer || _renderPlain;
9619    this.d = data || this;
9620    this.set = setter || _setterPlain;
9621    this.pr = priority || 0;
9622    this._next = next;
9623
9624    if (next) {
9625      next._prev = this;
9626    }
9627  }
9628
9629  var _proto4 = PropTween.prototype;
9630
9631  _proto4.modifier = function modifier(func, tween, target) {
9632    this.mSet = this.mSet || this.set; //in case it was already set (a PropTween can only have one modifier)
9633
9634    this.set = _setterWithModifier;
9635    this.m = func;
9636    this.mt = target; //modifier target
9637
9638    this.tween = tween;
9639  };
9640
9641  return PropTween;
9642}(); //Initialization tasks
9643
9644_forEachName(_callbackNames + "parent,duration,ease,delay,overwrite,runBackwards,startAt,yoyo,immediateRender,repeat,repeatDelay,data,paused,reversed,lazy,callbackScope,stringFilter,id,yoyoEase,stagger,inherit,repeatRefresh,keyframes,autoRevert,scrollTrigger", function (name) {
9645  return _reservedProps[name] = 1;
9646});
9647
9648_globals.TweenMax = _globals.TweenLite = Tween;
9649_globals.TimelineLite = _globals.TimelineMax = Timeline;
9650_globalTimeline = new Timeline({
9651  sortChildren: false,
9652  defaults: _defaults,
9653  autoRemoveChildren: true,
9654  id: "root",
9655  smoothChildTiming: true
9656});
9657_config.stringFilter = _colorStringFilter;
9658
9659var _media = [],
9660    _listeners = {},
9661    _emptyArray = [],
9662    _lastMediaTime = 0,
9663    _contextID = 0,
9664    _dispatch = function _dispatch(type) {
9665  return (_listeners[type] || _emptyArray).map(function (f) {
9666    return f();
9667  });
9668},
9669    _onMediaChange = function _onMediaChange() {
9670  var time = Date.now(),
9671      matches = [];
9672
9673  if (time - _lastMediaTime > 2) {
9674    _dispatch("matchMediaInit");
9675
9676    _media.forEach(function (c) {
9677      var queries = c.queries,
9678          conditions = c.conditions,
9679          match,
9680          p,
9681          anyMatch,
9682          toggled;
9683
9684      for (p in queries) {
9685        match = _win.matchMedia(queries[p]).matches; // Firefox doesn't update the "matches" property of the MediaQueryList object correctly - it only does so as it calls its change handler - so we must re-create a media query here to ensure it's accurate.
9686
9687        match && (anyMatch = 1);
9688
9689        if (match !== conditions[p]) {
9690          conditions[p] = match;
9691          toggled = 1;
9692        }
9693      }
9694
9695      if (toggled) {
9696        c.revert();
9697        anyMatch && matches.push(c);
9698      }
9699    });
9700
9701    _dispatch("matchMediaRevert");
9702
9703    matches.forEach(function (c) {
9704      return c.onMatch(c);
9705    });
9706    _lastMediaTime = time;
9707
9708    _dispatch("matchMedia");
9709  }
9710};
9711
9712var Context = /*#__PURE__*/function () {
9713  function Context(func, scope) {
9714    this.selector = scope && selector(scope);
9715    this.data = [];
9716    this._r = []; // returned/cleanup functions
9717
9718    this.isReverted = false;
9719    this.id = _contextID++; // to work around issues that frameworks like Vue cause by making things into Proxies which make it impossible to do something like _media.indexOf(this) because "this" would no longer refer to the Context instance itself - it'd refer to a Proxy! We needed a way to identify the context uniquely
9720
9721    func && this.add(func);
9722  }
9723
9724  var _proto5 = Context.prototype;
9725
9726  _proto5.add = function add(name, func, scope) {
9727    // possible future addition if we need the ability to add() an animation to a context and for whatever reason cannot create that animation inside of a context.add(() => {...}) function.
9728    // if (name && _isFunction(name.revert)) {
9729    // 	this.data.push(name);
9730    // 	return (name._ctx = this);
9731    // }
9732    if (_isFunction(name)) {
9733      scope = func;
9734      func = name;
9735      name = _isFunction;
9736    }
9737
9738    var self = this,
9739        f = function f() {
9740      var prev = _context,
9741          prevSelector = self.selector,
9742          result;
9743      prev && prev !== self && prev.data.push(self);
9744      scope && (self.selector = selector(scope));
9745      _context = self;
9746      result = func.apply(self, arguments);
9747      _isFunction(result) && self._r.push(result);
9748      _context = prev;
9749      self.selector = prevSelector;
9750      self.isReverted = false;
9751      return result;
9752    };
9753
9754    self.last = f;
9755    return name === _isFunction ? f(self) : name ? self[name] = f : f;
9756  };
9757
9758  _proto5.ignore = function ignore(func) {
9759    var prev = _context;
9760    _context = null;
9761    func(this);
9762    _context = prev;
9763  };
9764
9765  _proto5.getTweens = function getTweens() {
9766    var a = [];
9767    this.data.forEach(function (e) {
9768      return e instanceof Context ? a.push.apply(a, e.getTweens()) : e instanceof Tween && !(e.parent && e.parent.data === "nested") && a.push(e);
9769    });
9770    return a;
9771  };
9772
9773  _proto5.clear = function clear() {
9774    this._r.length = this.data.length = 0;
9775  };
9776
9777  _proto5.kill = function kill(revert, matchMedia) {
9778    var _this4 = this;
9779
9780    if (revert) {
9781      var tweens = this.getTweens();
9782      this.data.forEach(function (t) {
9783        // Flip plugin tweens are very different in that they should actually be pushed to their end. The plugin replaces the timeline's .revert() method to do exactly that. But we also need to remove any of those nested tweens inside the flip timeline so that they don't get individually reverted.
9784        if (t.data === "isFlip") {
9785          t.revert();
9786          t.getChildren(true, true, false).forEach(function (tween) {
9787            return tweens.splice(tweens.indexOf(tween), 1);
9788          });
9789        }
9790      }); // save as an object so that we can cache the globalTime for each tween to optimize performance during the sort
9791
9792      tweens.map(function (t) {
9793        return {
9794          g: t.globalTime(0),
9795          t: t
9796        };
9797      }).sort(function (a, b) {
9798        return b.g - a.g || -Infinity;
9799      }).forEach(function (o) {
9800        return o.t.revert(revert);
9801      }); // note: all of the _startAt tweens should be reverted in reverse order that they were created, and they'll all have the same globalTime (-1) so the " || -1" in the sort keeps the order properly.
9802
9803      this.data.forEach(function (e) {
9804        return !(e instanceof Tween) && e.revert && e.revert(revert);
9805      });
9806
9807      this._r.forEach(function (f) {
9808        return f(revert, _this4);
9809      });
9810
9811      this.isReverted = true;
9812    } else {
9813      this.data.forEach(function (e) {
9814        return e.kill && e.kill();
9815      });
9816    }
9817
9818    this.clear();
9819
9820    if (matchMedia) {
9821      var i = _media.length;
9822
9823      while (i--) {
9824        // previously, we checked _media.indexOf(this), but some frameworks like Vue enforce Proxy objects that make it impossible to get the proper result that way, so we must use a unique ID number instead.
9825        _media[i].id === this.id && _media.splice(i, 1);
9826      }
9827    }
9828  };
9829
9830  _proto5.revert = function revert(config) {
9831    this.kill(config || {});
9832  };
9833
9834  return Context;
9835}();
9836
9837var MatchMedia = /*#__PURE__*/function () {
9838  function MatchMedia(scope) {
9839    this.contexts = [];
9840    this.scope = scope;
9841  }
9842
9843  var _proto6 = MatchMedia.prototype;
9844
9845  _proto6.add = function add(conditions, func, scope) {
9846    _isObject(conditions) || (conditions = {
9847      matches: conditions
9848    });
9849    var context = new Context(0, scope || this.scope),
9850        cond = context.conditions = {},
9851        mq,
9852        p,
9853        active;
9854    _context && !context.selector && (context.selector = _context.selector); // in case a context is created inside a context. Like a gsap.matchMedia() that's inside a scoped gsap.context()
9855
9856    this.contexts.push(context);
9857    func = context.add("onMatch", func);
9858    context.queries = conditions;
9859
9860    for (p in conditions) {
9861      if (p === "all") {
9862        active = 1;
9863      } else {
9864        mq = _win.matchMedia(conditions[p]);
9865
9866        if (mq) {
9867          _media.indexOf(context) < 0 && _media.push(context);
9868          (cond[p] = mq.matches) && (active = 1);
9869          mq.addListener ? mq.addListener(_onMediaChange) : mq.addEventListener("change", _onMediaChange);
9870        }
9871      }
9872    }
9873
9874    active && func(context);
9875    return this;
9876  } // refresh() {
9877  // 	let time = _lastMediaTime,
9878  // 		media = _media;
9879  // 	_lastMediaTime = -1;
9880  // 	_media = this.contexts;
9881  // 	_onMediaChange();
9882  // 	_lastMediaTime = time;
9883  // 	_media = media;
9884  // }
9885  ;
9886
9887  _proto6.revert = function revert(config) {
9888    this.kill(config || {});
9889  };
9890
9891  _proto6.kill = function kill(revert) {
9892    this.contexts.forEach(function (c) {
9893      return c.kill(revert, true);
9894    });
9895  };
9896
9897  return MatchMedia;
9898}();
9899/*
9900 * --------------------------------------------------------------------------------------
9901 * GSAP
9902 * --------------------------------------------------------------------------------------
9903 */
9904
9905
9906var _gsap = {
9907  registerPlugin: function registerPlugin() {
9908    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
9909      args[_key2] = arguments[_key2];
9910    }
9911
9912    args.forEach(function (config) {
9913      return _createPlugin(config);
9914    });
9915  },
9916  timeline: function timeline(vars) {
9917    return new Timeline(vars);
9918  },
9919  getTweensOf: function getTweensOf(targets, onlyActive) {
9920    return _globalTimeline.getTweensOf(targets, onlyActive);
9921  },
9922  getProperty: function getProperty(target, property, unit, uncache) {
9923    _isString(target) && (target = toArray(target)[0]); //in case selector text or an array is passed in
9924
9925    var getter = _getCache(target || {}).get,
9926        format = unit ? _passThrough : _numericIfPossible;
9927
9928    unit === "native" && (unit = "");
9929    return !target ? target : !property ? function (property, unit, uncache) {
9930      return format((_plugins[property] && _plugins[property].get || getter)(target, property, unit, uncache));
9931    } : format((_plugins[property] && _plugins[property].get || getter)(target, property, unit, uncache));
9932  },
9933  quickSetter: function quickSetter(target, property, unit) {
9934    target = toArray(target);
9935
9936    if (target.length > 1) {
9937      var setters = target.map(function (t) {
9938        return gsap.quickSetter(t, property, unit);
9939      }),
9940          l = setters.length;
9941      return function (value) {
9942        var i = l;
9943
9944        while (i--) {
9945          setters[i](value);
9946        }
9947      };
9948    }
9949
9950    target = target[0] || {};
9951
9952    var Plugin = _plugins[property],
9953        cache = _getCache(target),
9954        p = cache.harness && (cache.harness.aliases || {})[property] || property,
9955        // in case it's an alias, like "rotate" for "rotation".
9956    setter = Plugin ? function (value) {
9957      var p = new Plugin();
9958      _quickTween._pt = 0;
9959      p.init(target, unit ? value + unit : value, _quickTween, 0, [target]);
9960      p.render(1, p);
9961      _quickTween._pt && _renderPropTweens(1, _quickTween);
9962    } : cache.set(target, p);
9963
9964    return Plugin ? setter : function (value) {
9965      return setter(target, p, unit ? value + unit : value, cache, 1);
9966    };
9967  },
9968  quickTo: function quickTo(target, property, vars) {
9969    var _merge2;
9970
9971    var tween = gsap.to(target, _merge((_merge2 = {}, _merge2[property] = "+=0.1", _merge2.paused = true, _merge2), vars || {})),
9972        func = function func(value, start, startIsRelative) {
9973      return tween.resetTo(property, value, start, startIsRelative);
9974    };
9975
9976    func.tween = tween;
9977    return func;
9978  },
9979  isTweening: function isTweening(targets) {
9980    return _globalTimeline.getTweensOf(targets, true).length > 0;
9981  },
9982  defaults: function defaults(value) {
9983    value && value.ease && (value.ease = _parseEase(value.ease, _defaults.ease));
9984    return _mergeDeep(_defaults, value || {});
9985  },
9986  config: function config(value) {
9987    return _mergeDeep(_config, value || {});
9988  },
9989  registerEffect: function registerEffect(_ref3) {
9990    var name = _ref3.name,
9991        effect = _ref3.effect,
9992        plugins = _ref3.plugins,
9993        defaults = _ref3.defaults,
9994        extendTimeline = _ref3.extendTimeline;
9995    (plugins || "").split(",").forEach(function (pluginName) {
9996      return pluginName && !_plugins[pluginName] && !_globals[pluginName] && _warn(name + " effect requires " + pluginName + " plugin.");
9997    });
9998
9999    _effects[name] = function (targets, vars, tl) {
10000      return effect(toArray(targets), _setDefaults(vars || {}, defaults), tl);
10001    };
10002
10003    if (extendTimeline) {
10004      Timeline.prototype[name] = function (targets, vars, position) {
10005        return this.add(_effects[name](targets, _isObject(vars) ? vars : (position = vars) && {}, this), position);
10006      };
10007    }
10008  },
10009  registerEase: function registerEase(name, ease) {
10010    _easeMap[name] = _parseEase(ease);
10011  },
10012  parseEase: function parseEase(ease, defaultEase) {
10013    return arguments.length ? _parseEase(ease, defaultEase) : _easeMap;
10014  },
10015  getById: function getById(id) {
10016    return _globalTimeline.getById(id);
10017  },
10018  exportRoot: function exportRoot(vars, includeDelayedCalls) {
10019    if (vars === void 0) {
10020      vars = {};
10021    }
10022
10023    var tl = new Timeline(vars),
10024        child,
10025        next;
10026    tl.smoothChildTiming = _isNotFalse(vars.smoothChildTiming);
10027
10028    _globalTimeline.remove(tl);
10029
10030    tl._dp = 0; //otherwise it'll get re-activated when adding children and be re-introduced into _globalTimeline's linked list (then added to itself).
10031
10032    tl._time = tl._tTime = _globalTimeline._time;
10033    child = _globalTimeline._first;
10034
10035    while (child) {
10036      next = child._next;
10037
10038      if (includeDelayedCalls || !(!child._dur && child instanceof Tween && child.vars.onComplete === child._targets[0])) {
10039        _addToTimeline(tl, child, child._start - child._delay);
10040      }
10041
10042      child = next;
10043    }
10044
10045    _addToTimeline(_globalTimeline, tl, 0);
10046
10047    return tl;
10048  },
10049  context: function context(func, scope) {
10050    return func ? new Context(func, scope) : _context;
10051  },
10052  matchMedia: function matchMedia(scope) {
10053    return new MatchMedia(scope);
10054  },
10055  matchMediaRefresh: function matchMediaRefresh() {
10056    return _media.forEach(function (c) {
10057      var cond = c.conditions,
10058          found,
10059          p;
10060
10061      for (p in cond) {
10062        if (cond[p]) {
10063          cond[p] = false;
10064          found = 1;
10065        }
10066      }
10067
10068      found && c.revert();
10069    }) || _onMediaChange();
10070  },
10071  addEventListener: function addEventListener(type, callback) {
10072    var a = _listeners[type] || (_listeners[type] = []);
10073    ~a.indexOf(callback) || a.push(callback);
10074  },
10075  removeEventListener: function removeEventListener(type, callback) {
10076    var a = _listeners[type],
10077        i = a && a.indexOf(callback);
10078    i >= 0 && a.splice(i, 1);
10079  },
10080  utils: {
10081    wrap: wrap,
10082    wrapYoyo: wrapYoyo,
10083    distribute: distribute,
10084    random: random,
10085    snap: snap,
10086    normalize: normalize,
10087    getUnit: getUnit,
10088    clamp: clamp,
10089    splitColor: splitColor,
10090    toArray: toArray,
10091    selector: selector,
10092    mapRange: mapRange,
10093    pipe: pipe,
10094    unitize: unitize,
10095    interpolate: interpolate,
10096    shuffle: shuffle
10097  },
10098  install: _install,
10099  effects: _effects,
10100  ticker: _ticker,
10101  updateRoot: Timeline.updateRoot,
10102  plugins: _plugins,
10103  globalTimeline: _globalTimeline,
10104  core: {
10105    PropTween: PropTween,
10106    globals: _addGlobal,
10107    Tween: Tween,
10108    Timeline: Timeline,
10109    Animation: Animation,
10110    getCache: _getCache,
10111    _removeLinkedListItem: _removeLinkedListItem,
10112    reverting: function reverting() {
10113      return _reverting;
10114    },
10115    context: function context(toAdd) {
10116      if (toAdd && _context) {
10117        _context.data.push(toAdd);
10118
10119        toAdd._ctx = _context;
10120      }
10121
10122      return _context;
10123    },
10124    suppressOverwrites: function suppressOverwrites(value) {
10125      return _suppressOverwrites = value;
10126    }
10127  }
10128};
10129
10130_forEachName("to,from,fromTo,delayedCall,set,killTweensOf", function (name) {
10131  return _gsap[name] = Tween[name];
10132});
10133
10134_ticker.add(Timeline.updateRoot);
10135
10136_quickTween = _gsap.to({}, {
10137  duration: 0
10138}); // ---- EXTRA PLUGINS --------------------------------------------------------
10139
10140var _getPluginPropTween = function _getPluginPropTween(plugin, prop) {
10141  var pt = plugin._pt;
10142
10143  while (pt && pt.p !== prop && pt.op !== prop && pt.fp !== prop) {
10144    pt = pt._next;
10145  }
10146
10147  return pt;
10148},
10149    _addModifiers = function _addModifiers(tween, modifiers) {
10150  var targets = tween._targets,
10151      p,
10152      i,
10153      pt;
10154
10155  for (p in modifiers) {
10156    i = targets.length;
10157
10158    while (i--) {
10159      pt = tween._ptLookup[i][p];
10160
10161      if (pt && (pt = pt.d)) {
10162        if (pt._pt) {
10163          // is a plugin
10164          pt = _getPluginPropTween(pt, p);
10165        }
10166
10167        pt && pt.modifier && pt.modifier(modifiers[p], tween, targets[i], p);
10168      }
10169    }
10170  }
10171},
10172    _buildModifierPlugin = function _buildModifierPlugin(name, modifier) {
10173  return {
10174    name: name,
10175    rawVars: 1,
10176    //don't pre-process function-based values or "random()" strings.
10177    init: function init(target, vars, tween) {
10178      tween._onInit = function (tween) {
10179        var temp, p;
10180
10181        if (_isString(vars)) {
10182          temp = {};
10183
10184          _forEachName(vars, function (name) {
10185            return temp[name] = 1;
10186          }); //if the user passes in a comma-delimited list of property names to roundProps, like "x,y", we round to whole numbers.
10187
10188
10189          vars = temp;
10190        }
10191
10192        if (modifier) {
10193          temp = {};
10194
10195          for (p in vars) {
10196            temp[p] = modifier(vars[p]);
10197          }
10198
10199          vars = temp;
10200        }
10201
10202        _addModifiers(tween, vars);
10203      };
10204    }
10205  };
10206}; //register core plugins
10207
10208
10209var gsap = _gsap.registerPlugin({
10210  name: "attr",
10211  init: function init(target, vars, tween, index, targets) {
10212    var p, pt, v;
10213    this.tween = tween;
10214
10215    for (p in vars) {
10216      v = target.getAttribute(p) || "";
10217      pt = this.add(target, "setAttribute", (v || 0) + "", vars[p], index, targets, 0, 0, p);
10218      pt.op = p;
10219      pt.b = v; // record the beginning value so we can revert()
10220
10221      this._props.push(p);
10222    }
10223  },
10224  render: function render(ratio, data) {
10225    var pt = data._pt;
10226
10227    while (pt) {
10228      _reverting ? pt.set(pt.t, pt.p, pt.b, pt) : pt.r(ratio, pt.d); // if reverting, go back to the original (pt.b)
10229
10230      pt = pt._next;
10231    }
10232  }
10233}, {
10234  name: "endArray",
10235  init: function init(target, value) {
10236    var i = value.length;
10237
10238    while (i--) {
10239      this.add(target, i, target[i] || 0, value[i], 0, 0, 0, 0, 0, 1);
10240    }
10241  }
10242}, _buildModifierPlugin("roundProps", _roundModifier), _buildModifierPlugin("modifiers"), _buildModifierPlugin("snap", snap)) || _gsap; //to prevent the core plugins from being dropped via aggressive tree shaking, we must include them in the variable declaration in this way.
10243
10244Tween.version = Timeline.version = gsap.version = "3.12.2";
10245_coreReady = 1;
10246_windowExists() && _wake();
10247var Power0 = _easeMap.Power0,
10248    Power1 = _easeMap.Power1,
10249    Power2 = _easeMap.Power2,
10250    Power3 = _easeMap.Power3,
10251    Power4 = _easeMap.Power4,
10252    Linear = _easeMap.Linear,
10253    Quad = _easeMap.Quad,
10254    Cubic = _easeMap.Cubic,
10255    Quart = _easeMap.Quart,
10256    Quint = _easeMap.Quint,
10257    Strong = _easeMap.Strong,
10258    Elastic = _easeMap.Elastic,
10259    Back = _easeMap.Back,
10260    SteppedEase = _easeMap.SteppedEase,
10261    Bounce = _easeMap.Bounce,
10262    Sine = _easeMap.Sine,
10263    Expo = _easeMap.Expo,
10264    Circ = _easeMap.Circ;
10265
10266 //export some internal methods/orojects for use in CSSPlugin so that we can externalize that file and allow custom builds that exclude it.
10267
10268
10269
10270/***/ }),
10271
vendor: 3,981 bytes, lines 10272-10316
10272/***/ "./node_modules/gsap/index.js":
10273/*!************************************!*\
10274  !*** ./node_modules/gsap/index.js ***!
10275  \************************************/
10276/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
10277
10278__webpack_require__.r(__webpack_exports__);
10279/* harmony export */ __webpack_require__.d(__webpack_exports__, {
10280/* harmony export */   Back: function() { return /* reexport safe */ _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.Back; },
10281/* harmony export */   Bounce: function() { return /* reexport safe */ _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.Bounce; },
10282/* harmony export */   CSSPlugin: function() { return /* reexport safe */ _CSSPlugin_js__WEBPACK_IMPORTED_MODULE_1__.CSSPlugin; },
10283/* harmony export */   Circ: function() { return /* reexport safe */ _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.Circ; },
10284/* harmony export */   Cubic: function() { return /* reexport safe */ _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.Cubic; },
10285/* harmony export */   Elastic: function() { return /* reexport safe */ _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.Elastic; },
10286/* harmony export */   Expo: function() { return /* reexport safe */ _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.Expo; },
10287/* harmony export */   Linear: function() { return /* reexport safe */ _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.Linear; },
10288/* harmony export */   Power0: function() { return /* reexport safe */ _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.Power0; },
10289/* harmony export */   Power1: function() { return /* reexport safe */ _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.Power1; },
10290/* harmony export */   Power2: function() { return /* reexport safe */ _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.Power2; },
10291/* harmony export */   Power3: function() { return /* reexport safe */ _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.Power3; },
10292/* harmony export */   Power4: function() { return /* reexport safe */ _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.Power4; },
10293/* harmony export */   Quad: function() { return /* reexport safe */ _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.Quad; },
10294/* harmony export */   Quart: function() { return /* reexport safe */ _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.Quart; },
10295/* harmony export */   Quint: function() { return /* reexport safe */ _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.Quint; },
10296/* harmony export */   Sine: function() { return /* reexport safe */ _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.Sine; },
10297/* harmony export */   SteppedEase: function() { return /* reexport safe */ _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.SteppedEase; },
10298/* harmony export */   Strong: function() { return /* reexport safe */ _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.Strong; },
10299/* harmony export */   TimelineLite: function() { return /* reexport safe */ _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.TimelineLite; },
10300/* harmony export */   TimelineMax: function() { return /* reexport safe */ _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.TimelineMax; },
10301/* harmony export */   TweenLite: function() { return /* reexport safe */ _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.TweenLite; },
10302/* harmony export */   TweenMax: function() { return /* binding */ TweenMaxWithCSS; },
10303/* harmony export */   "default": function() { return /* binding */ gsapWithCSS; },
10304/* harmony export */   gsap: function() { return /* binding */ gsapWithCSS; }
10305/* harmony export */ });
10306/* harmony import */ var _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./gsap-core.js */ "./node_modules/gsap/gsap-core.js");
10307/* harmony import */ var _CSSPlugin_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./CSSPlugin.js */ "./node_modules/gsap/CSSPlugin.js");
10308
10309
10310var gsapWithCSS = _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.gsap.registerPlugin(_CSSPlugin_js__WEBPACK_IMPORTED_MODULE_1__.CSSPlugin) || _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.gsap,
10311    // to protect from tree shaking
10312TweenMaxWithCSS = gsapWithCSS.core.Tween;
10313
10314
10315/***/ }),
10316
vendor: 10,632 bytes, lines 10317-10332
10317/***/ "./node_modules/@studio-freight/lenis/dist/lenis.modern.mjs":
10318/*!******************************************************************!*\
10319  !*** ./node_modules/@studio-freight/lenis/dist/lenis.modern.mjs ***!
10320  \******************************************************************/
10321/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
10322
10323__webpack_require__.r(__webpack_exports__);
10324/* harmony export */ __webpack_require__.d(__webpack_exports__, {
10325/* harmony export */   "default": function() { return /* binding */ r; }
10326/* harmony export */ });
10327function t(){return t=Object.assign?Object.assign.bind():function(t){for(var i=1;i<arguments.length;i++){var e=arguments[i];for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&(t[s]=e[s])}return t},t.apply(this,arguments)}function i(t,i,e){return Math.max(t,Math.min(i,e))}class e{advance(t){var e;if(!this.isRunning)return;let s=!1;if(this.lerp)this.value=(o=this.value,n=this.to,(1-(r=1-Math.exp(-60*this.lerp*t)))*o+r*n),Math.round(this.value)===this.to&&(this.value=this.to,s=!0);else{this.currentTime+=t;const e=i(0,this.currentTime/this.duration,1);s=e>=1;const o=s?1:this.easing(e);this.value=this.from+(this.to-this.from)*o}var o,n,r;null==(e=this.onUpdate)||e.call(this,this.value,{completed:s}),s&&this.stop()}stop(){this.isRunning=!1}fromTo(t,i,{lerp:e=.1,duration:s=1,easing:o=(t=>t),onUpdate:n}){this.from=this.value=t,this.to=i,this.lerp=e,this.duration=s,this.easing=o,this.currentTime=0,this.isRunning=!0,this.onUpdate=n}}class s{constructor({wrapper:t,content:i,autoResize:e=!0}={}){if(this.resize=()=>{this.onWrapperResize(),this.onContentResize()},this.onWrapperResize=()=>{this.wrapper===window?(this.width=window.innerWidth,this.height=window.innerHeight):(this.width=this.wrapper.clientWidth,this.height=this.wrapper.clientHeight)},this.onContentResize=()=>{this.scrollHeight=this.content.scrollHeight,this.scrollWidth=this.content.scrollWidth},this.wrapper=t,this.content=i,e){const t=function(t,i){let e;return function(){let i=arguments,s=this;clearTimeout(e),e=setTimeout(function(){t.apply(s,i)},250)}}(this.resize);this.wrapper!==window&&(this.wrapperResizeObserver=new ResizeObserver(t),this.wrapperResizeObserver.observe(this.wrapper)),this.contentResizeObserver=new ResizeObserver(t),this.contentResizeObserver.observe(this.content)}this.resize()}destroy(){var t,i;null==(t=this.wrapperResizeObserver)||t.disconnect(),null==(i=this.contentResizeObserver)||i.disconnect()}get limit(){return{x:this.scrollWidth-this.width,y:this.scrollHeight-this.height}}}class o{constructor(){this.events={}}emit(t,...i){let e=this.events[t]||[];for(let t=0,s=e.length;t<s;t++)e[t](...i)}on(t,i){var e;return(null==(e=this.events[t])?void 0:e.push(i))||(this.events[t]=[i]),()=>{var e;this.events[t]=null==(e=this.events[t])?void 0:e.filter(t=>i!==t)}}destroy(){this.events={}}}class n{constructor(t,{wheelMultiplier:e=1,touchMultiplier:s=2,normalizeWheel:n=!1}){this.onTouchStart=t=>{const{clientX:i,clientY:e}=t.targetTouches?t.targetTouches[0]:t;this.touchStart.x=i,this.touchStart.y=e,this.lastDelta={x:0,y:0}},this.onTouchMove=t=>{const{clientX:i,clientY:e}=t.targetTouches?t.targetTouches[0]:t,s=-(i-this.touchStart.x)*this.touchMultiplier,o=-(e-this.touchStart.y)*this.touchMultiplier;this.touchStart.x=i,this.touchStart.y=e,this.lastDelta={x:s,y:o},this.emitter.emit("scroll",{type:"touch",deltaX:s,deltaY:o,event:t})},this.onTouchEnd=t=>{this.emitter.emit("scroll",{type:"touch",inertia:!0,deltaX:this.lastDelta.x,deltaY:this.lastDelta.y,event:t})},this.onWheel=t=>{let{deltaX:e,deltaY:s}=t;this.normalizeWheel&&(e=i(-100,e,100),s=i(-100,s,100)),e*=this.wheelMultiplier,s*=this.wheelMultiplier,this.emitter.emit("scroll",{type:"wheel",deltaX:e,deltaY:s,event:t})},this.element=t,this.wheelMultiplier=e,this.touchMultiplier=s,this.normalizeWheel=n,this.touchStart={x:null,y:null},this.emitter=new o,this.element.addEventListener("wheel",this.onWheel,{passive:!1}),this.element.addEventListener("touchstart",this.onTouchStart,{passive:!1}),this.element.addEventListener("touchmove",this.onTouchMove,{passive:!1}),this.element.addEventListener("touchend",this.onTouchEnd,{passive:!1})}on(t,i){return this.emitter.on(t,i)}destroy(){this.emitter.destroy(),this.element.removeEventListener("wheel",this.onWheel,{passive:!1}),this.element.removeEventListener("touchstart",this.onTouchStart,{passive:!1}),this.element.removeEventListener("touchmove",this.onTouchMove,{passive:!1}),this.element.removeEventListener("touchend",this.onTouchEnd,{passive:!1})}}class r{constructor({wrapper:i=window,content:r=document.documentElement,wheelEventsTarget:l=i,smoothWheel:h=!0,smoothTouch:a=!1,syncTouch:c=!1,syncTouchLerp:u=.1,__iosNoInertiaSyncTouchLerp:p=.4,touchInertiaMultiplier:m=35,duration:d,easing:v=(t=>Math.min(1,1.001-Math.pow(2,-10*t))),lerp:g=d&&.1,infinite:S=!1,orientation:w="vertical",gestureOrientation:f="vertical",touchMultiplier:y=1,wheelMultiplier:T=1,normalizeWheel:z=!1,autoResize:M=!0}={}){this.onVirtualScroll=({type:i,inertia:e,deltaX:s,deltaY:o,event:n})=>{if(n.ctrlKey)return;const r="touch"===i,l="wheel"===i;if("vertical"===this.options.gestureOrientation&&0===o||"horizontal"===this.options.gestureOrientation&&0===s||r&&"vertical"===this.options.gestureOrientation&&0===this.scroll&&!this.options.infinite&&o<=0)return;if(n.composedPath().find(t=>(null==t||null==t.hasAttribute?void 0:t.hasAttribute("data-lenis-prevent"))||r&&(null==t||null==t.hasAttribute?void 0:t.hasAttribute("data-lenis-prevent-touch"))||l&&(null==t||null==t.hasAttribute?void 0:t.hasAttribute("data-lenis-prevent-wheel"))))return;if(this.isStopped||this.isLocked)return void n.preventDefault();if(this.isSmooth=(this.options.smoothTouch||this.options.syncTouch)&&r||this.options.smoothWheel&&l,!this.isSmooth)return this.isScrolling=!1,void this.animate.stop();n.preventDefault();let h=o;"both"===this.options.gestureOrientation?h=Math.abs(o)>Math.abs(s)?o:s:"horizontal"===this.options.gestureOrientation&&(h=s);const a=r&&this.options.syncTouch,c=r&&e&&Math.abs(h)>1;c&&(h=this.velocity*this.options.touchInertiaMultiplier),this.scrollTo(this.targetScroll+h,t({programmatic:!1},a&&{lerp:c?this.syncTouchLerp:this.options.__iosNoInertiaSyncTouchLerp}))},this.onScroll=()=>{if(!this.isScrolling){const t=this.animatedScroll;this.animatedScroll=this.targetScroll=this.actualScroll,this.velocity=0,this.direction=Math.sign(this.animatedScroll-t),this.emit()}},window.lenisVersion="1.0.19",i!==document.documentElement&&i!==document.body||(i=window),this.options={wrapper:i,content:r,wheelEventsTarget:l,smoothWheel:h,smoothTouch:a,syncTouch:c,syncTouchLerp:u,__iosNoInertiaSyncTouchLerp:p,touchInertiaMultiplier:m,duration:d,easing:v,lerp:g,infinite:S,gestureOrientation:f,orientation:w,touchMultiplier:y,wheelMultiplier:T,normalizeWheel:z,autoResize:M},this.dimensions=new s({wrapper:i,content:r,autoResize:M}),this.rootElement.classList.add("lenis"),this.velocity=0,this.isStopped=!1,this.isSmooth=h||a,this.isScrolling=!1,this.targetScroll=this.animatedScroll=this.actualScroll,this.animate=new e,this.emitter=new o,this.options.wrapper.addEventListener("scroll",this.onScroll,{passive:!1}),this.virtualScroll=new n(l,{touchMultiplier:y,wheelMultiplier:T,normalizeWheel:z}),this.virtualScroll.on("scroll",this.onVirtualScroll)}destroy(){this.emitter.destroy(),this.options.wrapper.removeEventListener("scroll",this.onScroll,{passive:!1}),this.virtualScroll.destroy(),this.dimensions.destroy(),this.rootElement.classList.remove("lenis"),this.rootElement.classList.remove("lenis-smooth"),this.rootElement.classList.remove("lenis-scrolling"),this.rootElement.classList.remove("lenis-stopped")}on(t,i){return this.emitter.on(t,i)}off(t,i){var e;this.emitter.events[t]=null==(e=this.emitter.events[t])?void 0:e.filter(t=>i!==t)}setScroll(t){this.isHorizontal?this.rootElement.scrollLeft=t:this.rootElement.scrollTop=t}resize(){this.dimensions.resize()}emit(){this.emitter.emit("scroll",this)}reset(){this.isLocked=!1,this.isScrolling=!1,this.velocity=0,this.animate.stop()}start(){this.isStopped=!1,this.reset()}stop(){this.isStopped=!0,this.animate.stop(),this.reset()}raf(t){const i=t-(this.time||t);this.time=t,this.animate.advance(.001*i)}scrollTo(t,{offset:e=0,immediate:s=!1,lock:o=!1,duration:n=this.options.duration,easing:r=this.options.easing,lerp:l=!n&&this.options.lerp,onComplete:h=null,force:a=!1,programmatic:c=!0}={}){if(!this.isStopped||a){if(["top","left","start"].includes(t))t=0;else if(["bottom","right","end"].includes(t))t=this.limit;else{var u;let i;if("string"==typeof t?i=document.querySelector(t):null!=(u=t)&&u.nodeType&&(i=t),i){if(this.options.wrapper!==window){const t=this.options.wrapper.getBoundingClientRect();e-=this.isHorizontal?t.left:t.top}const s=i.getBoundingClientRect();t=(this.isHorizontal?s.left:s.top)+this.animatedScroll}}if("number"==typeof t){if(t+=e,t=Math.round(t),this.options.infinite?c&&(this.targetScroll=this.animatedScroll=this.scroll):t=i(0,t,this.limit),s)return this.animatedScroll=this.targetScroll=t,this.setScroll(this.scroll),this.reset(),this.emit(),void(null==h||h());if(!c){if(t===this.targetScroll)return;this.targetScroll=t}this.animate.fromTo(this.animatedScroll,t,{duration:n,easing:r,lerp:l,onUpdate:(t,{completed:i})=>{o&&(this.isLocked=!0),this.isScrolling=!0,this.velocity=t-this.animatedScroll,this.direction=Math.sign(this.velocity),this.animatedScroll=t,this.setScroll(this.scroll),c&&(this.targetScroll=t),i&&(o&&(this.isLocked=!1),requestAnimationFrame(()=>{this.isScrolling=!1}),this.velocity=0,null==h||h()),this.emit()}})}}}get rootElement(){return this.options.wrapper===window?this.options.content:this.options.wrapper}get limit(){return this.dimensions.limit[this.isHorizontal?"x":"y"]}get isHorizontal(){return"horizontal"===this.options.orientation}get actualScroll(){return this.isHorizontal?this.rootElement.scrollLeft:this.rootElement.scrollTop}get scroll(){return this.options.infinite?(this.animatedScroll%(t=this.limit)+t)%t:this.animatedScroll;var t}get progress(){return 0===this.limit?1:this.scroll/this.limit}get isSmooth(){return this.__isSmooth}set isSmooth(t){this.__isSmooth!==t&&(this.rootElement.classList.toggle("lenis-smooth",t),this.__isSmooth=t)}get isScrolling(){return this.__isScrolling}set isScrolling(t){this.__isScrolling!==t&&(this.rootElement.classList.toggle("lenis-scrolling",t),this.__isScrolling=t)}get isStopped(){return this.__isStopped}set isStopped(t){this.__isStopped!==t&&(this.rootElement.classList.toggle("lenis-stopped",t),this.__isStopped=t)}}
10328//# sourceMappingURL=lenis.modern.mjs.map
10329
10330
10331/***/ }),
10332
vendor: 42,630 bytes, lines 10333-11929
10333/***/ "./node_modules/dom7/dom7.esm.js":
10334/*!***************************************!*\
10335  !*** ./node_modules/dom7/dom7.esm.js ***!
10336  \***************************************/
10337/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
10338
10339__webpack_require__.r(__webpack_exports__);
10340/* harmony export */ __webpack_require__.d(__webpack_exports__, {
10341/* harmony export */   $: function() { return /* binding */ $; },
10342/* harmony export */   add: function() { return /* binding */ add; },
10343/* harmony export */   addClass: function() { return /* binding */ addClass; },
10344/* harmony export */   animate: function() { return /* binding */ animate; },
10345/* harmony export */   animationEnd: function() { return /* binding */ animationEnd; },
10346/* harmony export */   append: function() { return /* binding */ append; },
10347/* harmony export */   appendTo: function() { return /* binding */ appendTo; },
10348/* harmony export */   attr: function() { return /* binding */ attr; },
10349/* harmony export */   blur: function() { return /* binding */ blur; },
10350/* harmony export */   change: function() { return /* binding */ change; },
10351/* harmony export */   children: function() { return /* binding */ children; },
10352/* harmony export */   click: function() { return /* binding */ click; },
10353/* harmony export */   closest: function() { return /* binding */ closest; },
10354/* harmony export */   css: function() { return /* binding */ css; },
10355/* harmony export */   data: function() { return /* binding */ data; },
10356/* harmony export */   dataset: function() { return /* binding */ dataset; },
10357/* harmony export */   detach: function() { return /* binding */ detach; },
10358/* harmony export */   each: function() { return /* binding */ each; },
10359/* harmony export */   empty: function() { return /* binding */ empty; },
10360/* harmony export */   eq: function() { return /* binding */ eq; },
10361/* harmony export */   filter: function() { return /* binding */ filter; },
10362/* harmony export */   find: function() { return /* binding */ find; },
10363/* harmony export */   focus: function() { return /* binding */ focus; },
10364/* harmony export */   focusin: function() { return /* binding */ focusin; },
10365/* harmony export */   focusout: function() { return /* binding */ focusout; },
10366/* harmony export */   hasClass: function() { return /* binding */ hasClass; },
10367/* harmony export */   height: function() { return /* binding */ height; },
10368/* harmony export */   hide: function() { return /* binding */ hide; },
10369/* harmony export */   html: function() { return /* binding */ html; },
10370/* harmony export */   index: function() { return /* binding */ index; },
10371/* harmony export */   insertAfter: function() { return /* binding */ insertAfter; },
10372/* harmony export */   insertBefore: function() { return /* binding */ insertBefore; },
10373/* harmony export */   is: function() { return /* binding */ is; },
10374/* harmony export */   keydown: function() { return /* binding */ keydown; },
10375/* harmony export */   keypress: function() { return /* binding */ keypress; },
10376/* harmony export */   keyup: function() { return /* binding */ keyup; },
10377/* harmony export */   mousedown: function() { return /* binding */ mousedown; },
10378/* harmony export */   mouseenter: function() { return /* binding */ mouseenter; },
10379/* harmony export */   mouseleave: function() { return /* binding */ mouseleave; },
10380/* harmony export */   mousemove: function() { return /* binding */ mousemove; },
10381/* harmony export */   mouseout: function() { return /* binding */ mouseout; },
10382/* harmony export */   mouseover: function() { return /* binding */ mouseover; },
10383/* harmony export */   mouseup: function() { return /* binding */ mouseup; },
10384/* harmony export */   next: function() { return /* binding */ next; },
10385/* harmony export */   nextAll: function() { return /* binding */ nextAll; },
10386/* harmony export */   off: function() { return /* binding */ off; },
10387/* harmony export */   offset: function() { return /* binding */ offset; },
10388/* harmony export */   on: function() { return /* binding */ on; },
10389/* harmony export */   once: function() { return /* binding */ once; },
10390/* harmony export */   outerHeight: function() { return /* binding */ outerHeight; },
10391/* harmony export */   outerWidth: function() { return /* binding */ outerWidth; },
10392/* harmony export */   parent: function() { return /* binding */ parent; },
10393/* harmony export */   parents: function() { return /* binding */ parents; },
10394/* harmony export */   prepend: function() { return /* binding */ prepend; },
10395/* harmony export */   prependTo: function() { return /* binding */ prependTo; },
10396/* harmony export */   prev: function() { return /* binding */ prev; },
10397/* harmony export */   prevAll: function() { return /* binding */ prevAll; },
10398/* harmony export */   prop: function() { return /* binding */ prop; },
10399/* harmony export */   remove: function() { return /* binding */ remove; },
10400/* harmony export */   removeAttr: function() { return /* binding */ removeAttr; },
10401/* harmony export */   removeClass: function() { return /* binding */ removeClass; },
10402/* harmony export */   removeData: function() { return /* binding */ removeData; },
10403/* harmony export */   resize: function() { return /* binding */ resize; },
10404/* harmony export */   scroll: function() { return /* binding */ scroll; },
10405/* harmony export */   scrollLeft: function() { return /* binding */ scrollLeft; },
10406/* harmony export */   scrollTo: function() { return /* binding */ scrollTo; },
10407/* harmony export */   scrollTop: function() { return /* binding */ scrollTop; },
10408/* harmony export */   show: function() { return /* binding */ show; },
10409/* harmony export */   siblings: function() { return /* binding */ siblings; },
10410/* harmony export */   stop: function() { return /* binding */ stop; },
10411/* harmony export */   styles: function() { return /* binding */ styles; },
10412/* harmony export */   submit: function() { return /* binding */ submit; },
10413/* harmony export */   text: function() { return /* binding */ text; },
10414/* harmony export */   toggleClass: function() { return /* binding */ toggleClass; },
10415/* harmony export */   touchend: function() { return /* binding */ touchend; },
10416/* harmony export */   touchmove: function() { return /* binding */ touchmove; },
10417/* harmony export */   touchstart: function() { return /* binding */ touchstart; },
10418/* harmony export */   transform: function() { return /* binding */ transform; },
10419/* harmony export */   transition: function() { return /* binding */ transition; },
10420/* harmony export */   transitionEnd: function() { return /* binding */ transitionEnd; },
10421/* harmony export */   transitionStart: function() { return /* binding */ transitionStart; },
10422/* harmony export */   trigger: function() { return /* binding */ trigger; },
10423/* harmony export */   val: function() { return /* binding */ val; },
10424/* harmony export */   value: function() { return /* binding */ value; },
10425/* harmony export */   width: function() { return /* binding */ width; }
10426/* harmony export */ });
10427/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
10428/**
10429 * Dom7 4.0.6
10430 * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API
10431 * https://framework7.io/docs/dom7.html
10432 *
10433 * Copyright 2023, Vladimir Kharlampidi
10434 *
10435 * Licensed under MIT
10436 *
10437 * Released on: February 2, 2023
10438 */
10439
10440
10441/* eslint-disable no-proto */
10442function makeReactive(obj) {
10443  const proto = obj.__proto__;
10444  Object.defineProperty(obj, '__proto__', {
10445    get() {
10446      return proto;
10447    },
10448
10449    set(value) {
10450      proto.__proto__ = value;
10451    }
10452
10453  });
10454}
10455
10456class Dom7 extends Array {
10457  constructor(items) {
10458    if (typeof items === 'number') {
10459      super(items);
10460    } else {
10461      super(...(items || []));
10462      makeReactive(this);
10463    }
10464  }
10465
10466}
10467
10468function arrayFlat(arr = []) {
10469  const res = [];
10470  arr.forEach(el => {
10471    if (Array.isArray(el)) {
10472      res.push(...arrayFlat(el));
10473    } else {
10474      res.push(el);
10475    }
10476  });
10477  return res;
10478}
10479function arrayFilter(arr, callback) {
10480  return Array.prototype.filter.call(arr, callback);
10481}
10482function arrayUnique(arr) {
10483  const uniqueArray = [];
10484
10485  for (let i = 0; i < arr.length; i += 1) {
10486    if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);
10487  }
10488
10489  return uniqueArray;
10490}
10491function toCamelCase(string) {
10492  return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());
10493}
10494
10495// eslint-disable-next-line
10496
10497function qsa(selector, context) {
10498  if (typeof selector !== 'string') {
10499    return [selector];
10500  }
10501
10502  const a = [];
10503  const res = context.querySelectorAll(selector);
10504
10505  for (let i = 0; i < res.length; i += 1) {
10506    a.push(res[i]);
10507  }
10508
10509  return a;
10510}
10511
10512function $(selector, context) {
10513  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
10514  const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
10515  let arr = [];
10516
10517  if (!context && selector instanceof Dom7) {
10518    return selector;
10519  }
10520
10521  if (!selector) {
10522    return new Dom7(arr);
10523  }
10524
10525  if (typeof selector === 'string') {
10526    const html = selector.trim();
10527
10528    if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {
10529      let toCreate = 'div';
10530      if (html.indexOf('<li') === 0) toCreate = 'ul';
10531      if (html.indexOf('<tr') === 0) toCreate = 'tbody';
10532      if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) toCreate = 'tr';
10533      if (html.indexOf('<tbody') === 0) toCreate = 'table';
10534      if (html.indexOf('<option') === 0) toCreate = 'select';
10535      const tempParent = document.createElement(toCreate);
10536      tempParent.innerHTML = html;
10537
10538      for (let i = 0; i < tempParent.childNodes.length; i += 1) {
10539        arr.push(tempParent.childNodes[i]);
10540      }
10541    } else {
10542      arr = qsa(selector.trim(), context || document);
10543    } // arr = qsa(selector, document);
10544
10545  } else if (selector.nodeType || selector === window || selector === document) {
10546    arr.push(selector);
10547  } else if (Array.isArray(selector)) {
10548    if (selector instanceof Dom7) return selector;
10549    arr = selector;
10550  }
10551
10552  return new Dom7(arrayUnique(arr));
10553}
10554
10555$.fn = Dom7.prototype;
10556
10557// eslint-disable-next-line
10558
10559function addClass(...classes) {
10560  const classNames = arrayFlat(classes.map(c => c.split(' ')));
10561  this.forEach(el => {
10562    el.classList.add(...classNames);
10563  });
10564  return this;
10565}
10566
10567function removeClass(...classes) {
10568  const classNames = arrayFlat(classes.map(c => c.split(' ')));
10569  this.forEach(el => {
10570    el.classList.remove(...classNames);
10571  });
10572  return this;
10573}
10574
10575function toggleClass(...classes) {
10576  const classNames = arrayFlat(classes.map(c => c.split(' ')));
10577  this.forEach(el => {
10578    classNames.forEach(className => {
10579      el.classList.toggle(className);
10580    });
10581  });
10582}
10583
10584function hasClass(...classes) {
10585  const classNames = arrayFlat(classes.map(c => c.split(' ')));
10586  return arrayFilter(this, el => {
10587    return classNames.filter(className => el.classList.contains(className)).length > 0;
10588  }).length > 0;
10589}
10590
10591function attr(attrs, value) {
10592  if (arguments.length === 1 && typeof attrs === 'string') {
10593    // Get attr
10594    if (this[0]) return this[0].getAttribute(attrs);
10595    return undefined;
10596  } // Set attrs
10597
10598
10599  for (let i = 0; i < this.length; i += 1) {
10600    if (arguments.length === 2) {
10601      // String
10602      this[i].setAttribute(attrs, value);
10603    } else {
10604      // Object
10605      for (const attrName in attrs) {
10606        this[i][attrName] = attrs[attrName];
10607        this[i].setAttribute(attrName, attrs[attrName]);
10608      }
10609    }
10610  }
10611
10612  return this;
10613}
10614
10615function removeAttr(attr) {
10616  for (let i = 0; i < this.length; i += 1) {
10617    this[i].removeAttribute(attr);
10618  }
10619
10620  return this;
10621}
10622
10623function prop(props, value) {
10624  if (arguments.length === 1 && typeof props === 'string') {
10625    // Get prop
10626    if (this[0]) return this[0][props];
10627  } else {
10628    // Set props
10629    for (let i = 0; i < this.length; i += 1) {
10630      if (arguments.length === 2) {
10631        // String
10632        this[i][props] = value;
10633      } else {
10634        // Object
10635        for (const propName in props) {
10636          this[i][propName] = props[propName];
10637        }
10638      }
10639    }
10640
10641    return this;
10642  }
10643
10644  return this;
10645}
10646
10647function data(key, value) {
10648  let el;
10649
10650  if (typeof value === 'undefined') {
10651    el = this[0];
10652    if (!el) return undefined; // Get value
10653
10654    if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {
10655      return el.dom7ElementDataStorage[key];
10656    }
10657
10658    const dataKey = el.getAttribute(`data-${key}`);
10659
10660    if (dataKey) {
10661      return dataKey;
10662    }
10663
10664    return undefined;
10665  } // Set value
10666
10667
10668  for (let i = 0; i < this.length; i += 1) {
10669    el = this[i];
10670    if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};
10671    el.dom7ElementDataStorage[key] = value;
10672  }
10673
10674  return this;
10675}
10676
10677function removeData(key) {
10678  for (let i = 0; i < this.length; i += 1) {
10679    const el = this[i];
10680
10681    if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {
10682      el.dom7ElementDataStorage[key] = null;
10683      delete el.dom7ElementDataStorage[key];
10684    }
10685  }
10686}
10687
10688function dataset() {
10689  const el = this[0];
10690  if (!el) return undefined;
10691  const dataset = {}; // eslint-disable-line
10692
10693  if (el.dataset) {
10694    for (const dataKey in el.dataset) {
10695      dataset[dataKey] = el.dataset[dataKey];
10696    }
10697  } else {
10698    for (let i = 0; i < el.attributes.length; i += 1) {
10699      const attr = el.attributes[i];
10700
10701      if (attr.name.indexOf('data-') >= 0) {
10702        dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;
10703      }
10704    }
10705  }
10706
10707  for (const key in dataset) {
10708    if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;
10709  }
10710
10711  return dataset;
10712}
10713
10714function val(value) {
10715  if (typeof value === 'undefined') {
10716    // get value
10717    const el = this[0];
10718    if (!el) return undefined;
10719
10720    if (el.multiple && el.nodeName.toLowerCase() === 'select') {
10721      const values = [];
10722
10723      for (let i = 0; i < el.selectedOptions.length; i += 1) {
10724        values.push(el.selectedOptions[i].value);
10725      }
10726
10727      return values;
10728    }
10729
10730    return el.value;
10731  } // set value
10732
10733
10734  for (let i = 0; i < this.length; i += 1) {
10735    const el = this[i];
10736
10737    if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {
10738      for (let j = 0; j < el.options.length; j += 1) {
10739        el.options[j].selected = value.indexOf(el.options[j].value) >= 0;
10740      }
10741    } else {
10742      el.value = value;
10743    }
10744  }
10745
10746  return this;
10747}
10748
10749function value(value) {
10750  return this.val(value);
10751}
10752
10753function transform(transform) {
10754  for (let i = 0; i < this.length; i += 1) {
10755    this[i].style.transform = transform;
10756  }
10757
10758  return this;
10759}
10760
10761function transition(duration) {
10762  for (let i = 0; i < this.length; i += 1) {
10763    this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;
10764  }
10765
10766  return this;
10767}
10768
10769function on(...args) {
10770  let [eventType, targetSelector, listener, capture] = args;
10771
10772  if (typeof args[1] === 'function') {
10773    [eventType, listener, capture] = args;
10774    targetSelector = undefined;
10775  }
10776
10777  if (!capture) capture = false;
10778
10779  function handleLiveEvent(e) {
10780    const target = e.target;
10781    if (!target) return;
10782    const eventData = e.target.dom7EventData || [];
10783
10784    if (eventData.indexOf(e) < 0) {
10785      eventData.unshift(e);
10786    }
10787
10788    if ($(target).is(targetSelector)) listener.apply(target, eventData);else {
10789      const parents = $(target).parents(); // eslint-disable-line
10790
10791      for (let k = 0; k < parents.length; k += 1) {
10792        if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);
10793      }
10794    }
10795  }
10796
10797  function handleEvent(e) {
10798    const eventData = e && e.target ? e.target.dom7EventData || [] : [];
10799
10800    if (eventData.indexOf(e) < 0) {
10801      eventData.unshift(e);
10802    }
10803
10804    listener.apply(this, eventData);
10805  }
10806
10807  const events = eventType.split(' ');
10808  let j;
10809
10810  for (let i = 0; i < this.length; i += 1) {
10811    const el = this[i];
10812
10813    if (!targetSelector) {
10814      for (j = 0; j < events.length; j += 1) {
10815        const event = events[j];
10816        if (!el.dom7Listeners) el.dom7Listeners = {};
10817        if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];
10818        el.dom7Listeners[event].push({
10819          listener,
10820          proxyListener: handleEvent
10821        });
10822        el.addEventListener(event, handleEvent, capture);
10823      }
10824    } else {
10825      // Live events
10826      for (j = 0; j < events.length; j += 1) {
10827        const event = events[j];
10828        if (!el.dom7LiveListeners) el.dom7LiveListeners = {};
10829        if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];
10830        el.dom7LiveListeners[event].push({
10831          listener,
10832          proxyListener: handleLiveEvent
10833        });
10834        el.addEventListener(event, handleLiveEvent, capture);
10835      }
10836    }
10837  }
10838
10839  return this;
10840}
10841
10842function off(...args) {
10843  let [eventType, targetSelector, listener, capture] = args;
10844
10845  if (typeof args[1] === 'function') {
10846    [eventType, listener, capture] = args;
10847    targetSelector = undefined;
10848  }
10849
10850  if (!capture) capture = false;
10851  const events = eventType.split(' ');
10852
10853  for (let i = 0; i < events.length; i += 1) {
10854    const event = events[i];
10855
10856    for (let j = 0; j < this.length; j += 1) {
10857      const el = this[j];
10858      let handlers;
10859
10860      if (!targetSelector && el.dom7Listeners) {
10861        handlers = el.dom7Listeners[event];
10862      } else if (targetSelector && el.dom7LiveListeners) {
10863        handlers = el.dom7LiveListeners[event];
10864      }
10865
10866      if (handlers && handlers.length) {
10867        for (let k = handlers.length - 1; k >= 0; k -= 1) {
10868          const handler = handlers[k];
10869
10870          if (listener && handler.listener === listener) {
10871            el.removeEventListener(event, handler.proxyListener, capture);
10872            handlers.splice(k, 1);
10873          } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {
10874            el.removeEventListener(event, handler.proxyListener, capture);
10875            handlers.splice(k, 1);
10876          } else if (!listener) {
10877            el.removeEventListener(event, handler.proxyListener, capture);
10878            handlers.splice(k, 1);
10879          }
10880        }
10881      }
10882    }
10883  }
10884
10885  return this;
10886}
10887
10888function once(...args) {
10889  const dom = this;
10890  let [eventName, targetSelector, listener, capture] = args;
10891
10892  if (typeof args[1] === 'function') {
10893    [eventName, listener, capture] = args;
10894    targetSelector = undefined;
10895  }
10896
10897  function onceHandler(...eventArgs) {
10898    listener.apply(this, eventArgs);
10899    dom.off(eventName, targetSelector, onceHandler, capture);
10900
10901    if (onceHandler.dom7proxy) {
10902      delete onceHandler.dom7proxy;
10903    }
10904  }
10905
10906  onceHandler.dom7proxy = listener;
10907  return dom.on(eventName, targetSelector, onceHandler, capture);
10908}
10909
10910function trigger(...args) {
10911  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
10912  const events = args[0].split(' ');
10913  const eventData = args[1];
10914
10915  for (let i = 0; i < events.length; i += 1) {
10916    const event = events[i];
10917
10918    for (let j = 0; j < this.length; j += 1) {
10919      const el = this[j];
10920
10921      if (window.CustomEvent) {
10922        const evt = new window.CustomEvent(event, {
10923          detail: eventData,
10924          bubbles: true,
10925          cancelable: true
10926        });
10927        el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);
10928        el.dispatchEvent(evt);
10929        el.dom7EventData = [];
10930        delete el.dom7EventData;
10931      }
10932    }
10933  }
10934
10935  return this;
10936}
10937
10938function transitionStart(callback) {
10939  const dom = this;
10940
10941  function fireCallBack(e) {
10942    if (e.target !== this) return;
10943    callback.call(this, e);
10944    dom.off('transitionstart', fireCallBack);
10945  }
10946
10947  if (callback) {
10948    dom.on('transitionstart', fireCallBack);
10949  }
10950
10951  return this;
10952}
10953
10954function transitionEnd(callback) {
10955  const dom = this;
10956
10957  function fireCallBack(e) {
10958    if (e.target !== this) return;
10959    callback.call(this, e);
10960    dom.off('transitionend', fireCallBack);
10961  }
10962
10963  if (callback) {
10964    dom.on('transitionend', fireCallBack);
10965  }
10966
10967  return this;
10968}
10969
10970function animationEnd(callback) {
10971  const dom = this;
10972
10973  function fireCallBack(e) {
10974    if (e.target !== this) return;
10975    callback.call(this, e);
10976    dom.off('animationend', fireCallBack);
10977  }
10978
10979  if (callback) {
10980    dom.on('animationend', fireCallBack);
10981  }
10982
10983  return this;
10984}
10985
10986function width() {
10987  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
10988
10989  if (this[0] === window) {
10990    return window.innerWidth;
10991  }
10992
10993  if (this.length > 0) {
10994    return parseFloat(this.css('width'));
10995  }
10996
10997  return null;
10998}
10999
11000function outerWidth(includeMargins) {
11001  if (this.length > 0) {
11002    if (includeMargins) {
11003      const styles = this.styles();
11004      return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));
11005    }
11006
11007    return this[0].offsetWidth;
11008  }
11009
11010  return null;
11011}
11012
11013function height() {
11014  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
11015
11016  if (this[0] === window) {
11017    return window.innerHeight;
11018  }
11019
11020  if (this.length > 0) {
11021    return parseFloat(this.css('height'));
11022  }
11023
11024  return null;
11025}
11026
11027function outerHeight(includeMargins) {
11028  if (this.length > 0) {
11029    if (includeMargins) {
11030      const styles = this.styles();
11031      return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));
11032    }
11033
11034    return this[0].offsetHeight;
11035  }
11036
11037  return null;
11038}
11039
11040function offset() {
11041  if (this.length > 0) {
11042    const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
11043    const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
11044    const el = this[0];
11045    const box = el.getBoundingClientRect();
11046    const body = document.body;
11047    const clientTop = el.clientTop || body.clientTop || 0;
11048    const clientLeft = el.clientLeft || body.clientLeft || 0;
11049    const scrollTop = el === window ? window.scrollY : el.scrollTop;
11050    const scrollLeft = el === window ? window.scrollX : el.scrollLeft;
11051    return {
11052      top: box.top + scrollTop - clientTop,
11053      left: box.left + scrollLeft - clientLeft
11054    };
11055  }
11056
11057  return null;
11058}
11059
11060function hide() {
11061  for (let i = 0; i < this.length; i += 1) {
11062    this[i].style.display = 'none';
11063  }
11064
11065  return this;
11066}
11067
11068function show() {
11069  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
11070
11071  for (let i = 0; i < this.length; i += 1) {
11072    const el = this[i];
11073
11074    if (el.style.display === 'none') {
11075      el.style.display = '';
11076    }
11077
11078    if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {
11079      // Still not visible
11080      el.style.display = 'block';
11081    }
11082  }
11083
11084  return this;
11085}
11086
11087function styles() {
11088  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
11089  if (this[0]) return window.getComputedStyle(this[0], null);
11090  return {};
11091}
11092
11093function css(props, value) {
11094  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
11095  let i;
11096
11097  if (arguments.length === 1) {
11098    if (typeof props === 'string') {
11099      // .css('width')
11100      if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);
11101    } else {
11102      // .css({ width: '100px' })
11103      for (i = 0; i < this.length; i += 1) {
11104        for (const prop in props) {
11105          this[i].style[prop] = props[prop];
11106        }
11107      }
11108
11109      return this;
11110    }
11111  }
11112
11113  if (arguments.length === 2 && typeof props === 'string') {
11114    // .css('width', '100px')
11115    for (i = 0; i < this.length; i += 1) {
11116      this[i].style[props] = value;
11117    }
11118
11119    return this;
11120  }
11121
11122  return this;
11123}
11124
11125function each(callback) {
11126  if (!callback) return this;
11127  this.forEach((el, index) => {
11128    callback.apply(el, [el, index]);
11129  });
11130  return this;
11131}
11132
11133function filter(callback) {
11134  const result = arrayFilter(this, callback);
11135  return $(result);
11136}
11137
11138function html(html) {
11139  if (typeof html === 'undefined') {
11140    return this[0] ? this[0].innerHTML : null;
11141  }
11142
11143  for (let i = 0; i < this.length; i += 1) {
11144    this[i].innerHTML = html;
11145  }
11146
11147  return this;
11148}
11149
11150function text(text) {
11151  if (typeof text === 'undefined') {
11152    return this[0] ? this[0].textContent.trim() : null;
11153  }
11154
11155  for (let i = 0; i < this.length; i += 1) {
11156    this[i].textContent = text;
11157  }
11158
11159  return this;
11160}
11161
11162function is(selector) {
11163  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
11164  const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
11165  const el = this[0];
11166  let compareWith;
11167  let i;
11168  if (!el || typeof selector === 'undefined') return false;
11169
11170  if (typeof selector === 'string') {
11171    if (el.matches) return el.matches(selector);
11172    if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);
11173    if (el.msMatchesSelector) return el.msMatchesSelector(selector);
11174    compareWith = $(selector);
11175
11176    for (i = 0; i < compareWith.length; i += 1) {
11177      if (compareWith[i] === el) return true;
11178    }
11179
11180    return false;
11181  }
11182
11183  if (selector === document) {
11184    return el === document;
11185  }
11186
11187  if (selector === window) {
11188    return el === window;
11189  }
11190
11191  if (selector.nodeType || selector instanceof Dom7) {
11192    compareWith = selector.nodeType ? [selector] : selector;
11193
11194    for (i = 0; i < compareWith.length; i += 1) {
11195      if (compareWith[i] === el) return true;
11196    }
11197
11198    return false;
11199  }
11200
11201  return false;
11202}
11203
11204function index() {
11205  let child = this[0];
11206  let i;
11207
11208  if (child) {
11209    i = 0; // eslint-disable-next-line
11210
11211    while ((child = child.previousSibling) !== null) {
11212      if (child.nodeType === 1) i += 1;
11213    }
11214
11215    return i;
11216  }
11217
11218  return undefined;
11219}
11220
11221function eq(index) {
11222  if (typeof index === 'undefined') return this;
11223  const length = this.length;
11224
11225  if (index > length - 1) {
11226    return $([]);
11227  }
11228
11229  if (index < 0) {
11230    const returnIndex = length + index;
11231    if (returnIndex < 0) return $([]);
11232    return $([this[returnIndex]]);
11233  }
11234
11235  return $([this[index]]);
11236}
11237
11238function append(...els) {
11239  let newChild;
11240  const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
11241
11242  for (let k = 0; k < els.length; k += 1) {
11243    newChild = els[k];
11244
11245    for (let i = 0; i < this.length; i += 1) {
11246      if (typeof newChild === 'string') {
11247        const tempDiv = document.createElement('div');
11248        tempDiv.innerHTML = newChild;
11249
11250        while (tempDiv.firstChild) {
11251          this[i].appendChild(tempDiv.firstChild);
11252        }
11253      } else if (newChild instanceof Dom7) {
11254        for (let j = 0; j < newChild.length; j += 1) {
11255          this[i].appendChild(newChild[j]);
11256        }
11257      } else {
11258        this[i].appendChild(newChild);
11259      }
11260    }
11261  }
11262
11263  return this;
11264}
11265
11266function appendTo(parent) {
11267  $(parent).append(this);
11268  return this;
11269}
11270
11271function prepend(newChild) {
11272  const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
11273  let i;
11274  let j;
11275
11276  for (i = 0; i < this.length; i += 1) {
11277    if (typeof newChild === 'string') {
11278      const tempDiv = document.createElement('div');
11279      tempDiv.innerHTML = newChild;
11280
11281      for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {
11282        this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);
11283      }
11284    } else if (newChild instanceof Dom7) {
11285      for (j = 0; j < newChild.length; j += 1) {
11286        this[i].insertBefore(newChild[j], this[i].childNodes[0]);
11287      }
11288    } else {
11289      this[i].insertBefore(newChild, this[i].childNodes[0]);
11290    }
11291  }
11292
11293  return this;
11294}
11295
11296function prependTo(parent) {
11297  $(parent).prepend(this);
11298  return this;
11299}
11300
11301function insertBefore(selector) {
11302  const before = $(selector);
11303
11304  for (let i = 0; i < this.length; i += 1) {
11305    if (before.length === 1) {
11306      before[0].parentNode.insertBefore(this[i], before[0]);
11307    } else if (before.length > 1) {
11308      for (let j = 0; j < before.length; j += 1) {
11309        before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);
11310      }
11311    }
11312  }
11313}
11314
11315function insertAfter(selector) {
11316  const after = $(selector);
11317
11318  for (let i = 0; i < this.length; i += 1) {
11319    if (after.length === 1) {
11320      after[0].parentNode.insertBefore(this[i], after[0].nextSibling);
11321    } else if (after.length > 1) {
11322      for (let j = 0; j < after.length; j += 1) {
11323        after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);
11324      }
11325    }
11326  }
11327}
11328
11329function next(selector) {
11330  if (this.length > 0) {
11331    if (selector) {
11332      if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {
11333        return $([this[0].nextElementSibling]);
11334      }
11335
11336      return $([]);
11337    }
11338
11339    if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);
11340    return $([]);
11341  }
11342
11343  return $([]);
11344}
11345
11346function nextAll(selector) {
11347  const nextEls = [];
11348  let el = this[0];
11349  if (!el) return $([]);
11350
11351  while (el.nextElementSibling) {
11352    const next = el.nextElementSibling; // eslint-disable-line
11353
11354    if (selector) {
11355      if ($(next).is(selector)) nextEls.push(next);
11356    } else nextEls.push(next);
11357
11358    el = next;
11359  }
11360
11361  return $(nextEls);
11362}
11363
11364function prev(selector) {
11365  if (this.length > 0) {
11366    const el = this[0];
11367
11368    if (selector) {
11369      if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {
11370        return $([el.previousElementSibling]);
11371      }
11372
11373      return $([]);
11374    }
11375
11376    if (el.previousElementSibling) return $([el.previousElementSibling]);
11377    return $([]);
11378  }
11379
11380  return $([]);
11381}
11382
11383function prevAll(selector) {
11384  const prevEls = [];
11385  let el = this[0];
11386  if (!el) return $([]);
11387
11388  while (el.previousElementSibling) {
11389    const prev = el.previousElementSibling; // eslint-disable-line
11390
11391    if (selector) {
11392      if ($(prev).is(selector)) prevEls.push(prev);
11393    } else prevEls.push(prev);
11394
11395    el = prev;
11396  }
11397
11398  return $(prevEls);
11399}
11400
11401function siblings(selector) {
11402  return this.nextAll(selector).add(this.prevAll(selector));
11403}
11404
11405function parent(selector) {
11406  const parents = []; // eslint-disable-line
11407
11408  for (let i = 0; i < this.length; i += 1) {
11409    if (this[i].parentNode !== null) {
11410      if (selector) {
11411        if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);
11412      } else {
11413        parents.push(this[i].parentNode);
11414      }
11415    }
11416  }
11417
11418  return $(parents);
11419}
11420
11421function parents(selector) {
11422  const parents = []; // eslint-disable-line
11423
11424  for (let i = 0; i < this.length; i += 1) {
11425    let parent = this[i].parentNode; // eslint-disable-line
11426
11427    while (parent) {
11428      if (selector) {
11429        if ($(parent).is(selector)) parents.push(parent);
11430      } else {
11431        parents.push(parent);
11432      }
11433
11434      parent = parent.parentNode;
11435    }
11436  }
11437
11438  return $(parents);
11439}
11440
11441function closest(selector) {
11442  let closest = this; // eslint-disable-line
11443
11444  if (typeof selector === 'undefined') {
11445    return $([]);
11446  }
11447
11448  if (!closest.is(selector)) {
11449    closest = closest.parents(selector).eq(0);
11450  }
11451
11452  return closest;
11453}
11454
11455function find(selector) {
11456  const foundElements = [];
11457
11458  for (let i = 0; i < this.length; i += 1) {
11459    const found = this[i].querySelectorAll(selector);
11460
11461    for (let j = 0; j < found.length; j += 1) {
11462      foundElements.push(found[j]);
11463    }
11464  }
11465
11466  return $(foundElements);
11467}
11468
11469function children(selector) {
11470  const children = []; // eslint-disable-line
11471
11472  for (let i = 0; i < this.length; i += 1) {
11473    const childNodes = this[i].children;
11474
11475    for (let j = 0; j < childNodes.length; j += 1) {
11476      if (!selector || $(childNodes[j]).is(selector)) {
11477        children.push(childNodes[j]);
11478      }
11479    }
11480  }
11481
11482  return $(children);
11483}
11484
11485function remove() {
11486  for (let i = 0; i < this.length; i += 1) {
11487    if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);
11488  }
11489
11490  return this;
11491}
11492
11493function detach() {
11494  return this.remove();
11495}
11496
11497function add(...els) {
11498  const dom = this;
11499  let i;
11500  let j;
11501
11502  for (i = 0; i < els.length; i += 1) {
11503    const toAdd = $(els[i]);
11504
11505    for (j = 0; j < toAdd.length; j += 1) {
11506      dom.push(toAdd[j]);
11507    }
11508  }
11509
11510  return dom;
11511}
11512
11513function empty() {
11514  for (let i = 0; i < this.length; i += 1) {
11515    const el = this[i];
11516
11517    if (el.nodeType === 1) {
11518      for (let j = 0; j < el.childNodes.length; j += 1) {
11519        if (el.childNodes[j].parentNode) {
11520          el.childNodes[j].parentNode.removeChild(el.childNodes[j]);
11521        }
11522      }
11523
11524      el.textContent = '';
11525    }
11526  }
11527
11528  return this;
11529}
11530
11531// eslint-disable-next-line
11532
11533function scrollTo(...args) {
11534  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
11535  let [left, top, duration, easing, callback] = args;
11536
11537  if (args.length === 4 && typeof easing === 'function') {
11538    callback = easing;
11539    [left, top, duration, callback, easing] = args;
11540  }
11541
11542  if (typeof easing === 'undefined') easing = 'swing';
11543  return this.each(function animate() {
11544    const el = this;
11545    let currentTop;
11546    let currentLeft;
11547    let maxTop;
11548    let maxLeft;
11549    let newTop;
11550    let newLeft;
11551    let scrollTop; // eslint-disable-line
11552
11553    let scrollLeft; // eslint-disable-line
11554
11555    let animateTop = top > 0 || top === 0;
11556    let animateLeft = left > 0 || left === 0;
11557
11558    if (typeof easing === 'undefined') {
11559      easing = 'swing';
11560    }
11561
11562    if (animateTop) {
11563      currentTop = el.scrollTop;
11564
11565      if (!duration) {
11566        el.scrollTop = top;
11567      }
11568    }
11569
11570    if (animateLeft) {
11571      currentLeft = el.scrollLeft;
11572
11573      if (!duration) {
11574        el.scrollLeft = left;
11575      }
11576    }
11577
11578    if (!duration) return;
11579
11580    if (animateTop) {
11581      maxTop = el.scrollHeight - el.offsetHeight;
11582      newTop = Math.max(Math.min(top, maxTop), 0);
11583    }
11584
11585    if (animateLeft) {
11586      maxLeft = el.scrollWidth - el.offsetWidth;
11587      newLeft = Math.max(Math.min(left, maxLeft), 0);
11588    }
11589
11590    let startTime = null;
11591    if (animateTop && newTop === currentTop) animateTop = false;
11592    if (animateLeft && newLeft === currentLeft) animateLeft = false;
11593
11594    function render(time = new Date().getTime()) {
11595      if (startTime === null) {
11596        startTime = time;
11597      }
11598
11599      const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);
11600      const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;
11601      let done;
11602      if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);
11603      if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);
11604
11605      if (animateTop && newTop > currentTop && scrollTop >= newTop) {
11606        el.scrollTop = newTop;
11607        done = true;
11608      }
11609
11610      if (animateTop && newTop < currentTop && scrollTop <= newTop) {
11611        el.scrollTop = newTop;
11612        done = true;
11613      }
11614
11615      if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {
11616        el.scrollLeft = newLeft;
11617        done = true;
11618      }
11619
11620      if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {
11621        el.scrollLeft = newLeft;
11622        done = true;
11623      }
11624
11625      if (done) {
11626        if (callback) callback();
11627        return;
11628      }
11629
11630      if (animateTop) el.scrollTop = scrollTop;
11631      if (animateLeft) el.scrollLeft = scrollLeft;
11632      window.requestAnimationFrame(render);
11633    }
11634
11635    window.requestAnimationFrame(render);
11636  });
11637} // scrollTop(top, duration, easing, callback) {
11638
11639
11640function scrollTop(...args) {
11641  let [top, duration, easing, callback] = args;
11642
11643  if (args.length === 3 && typeof easing === 'function') {
11644    [top, duration, callback, easing] = args;
11645  }
11646
11647  const dom = this;
11648
11649  if (typeof top === 'undefined') {
11650    if (dom.length > 0) return dom[0].scrollTop;
11651    return null;
11652  }
11653
11654  return dom.scrollTo(undefined, top, duration, easing, callback);
11655}
11656
11657function scrollLeft(...args) {
11658  let [left, duration, easing, callback] = args;
11659
11660  if (args.length === 3 && typeof easing === 'function') {
11661    [left, duration, callback, easing] = args;
11662  }
11663
11664  const dom = this;
11665
11666  if (typeof left === 'undefined') {
11667    if (dom.length > 0) return dom[0].scrollLeft;
11668    return null;
11669  }
11670
11671  return dom.scrollTo(left, undefined, duration, easing, callback);
11672}
11673
11674// eslint-disable-next-line
11675
11676function animate(initialProps, initialParams) {
11677  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
11678  const els = this;
11679  const a = {
11680    props: Object.assign({}, initialProps),
11681    params: Object.assign({
11682      duration: 300,
11683      easing: 'swing' // or 'linear'
11684
11685      /* Callbacks
11686      begin(elements)
11687      complete(elements)
11688      progress(elements, complete, remaining, start, tweenValue)
11689      */
11690
11691    }, initialParams),
11692    elements: els,
11693    animating: false,
11694    que: [],
11695
11696    easingProgress(easing, progress) {
11697      if (easing === 'swing') {
11698        return 0.5 - Math.cos(progress * Math.PI) / 2;
11699      }
11700
11701      if (typeof easing === 'function') {
11702        return easing(progress);
11703      }
11704
11705      return progress;
11706    },
11707
11708    stop() {
11709      if (a.frameId) {
11710        window.cancelAnimationFrame(a.frameId);
11711      }
11712
11713      a.animating = false;
11714      a.elements.each(el => {
11715        const element = el;
11716        delete element.dom7AnimateInstance;
11717      });
11718      a.que = [];
11719    },
11720
11721    done(complete) {
11722      a.animating = false;
11723      a.elements.each(el => {
11724        const element = el;
11725        delete element.dom7AnimateInstance;
11726      });
11727      if (complete) complete(els);
11728
11729      if (a.que.length > 0) {
11730        const que = a.que.shift();
11731        a.animate(que[0], que[1]);
11732      }
11733    },
11734
11735    animate(props, params) {
11736      if (a.animating) {
11737        a.que.push([props, params]);
11738        return a;
11739      }
11740
11741      const elements = []; // Define & Cache Initials & Units
11742
11743      a.elements.each((el, index) => {
11744        let initialFullValue;
11745        let initialValue;
11746        let unit;
11747        let finalValue;
11748        let finalFullValue;
11749        if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;
11750        elements[index] = {
11751          container: el
11752        };
11753        Object.keys(props).forEach(prop => {
11754          initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');
11755          initialValue = parseFloat(initialFullValue);
11756          unit = initialFullValue.replace(initialValue, '');
11757          finalValue = parseFloat(props[prop]);
11758          finalFullValue = props[prop] + unit;
11759          elements[index][prop] = {
11760            initialFullValue,
11761            initialValue,
11762            unit,
11763            finalValue,
11764            finalFullValue,
11765            currentValue: initialValue
11766          };
11767        });
11768      });
11769      let startTime = null;
11770      let time;
11771      let elementsDone = 0;
11772      let propsDone = 0;
11773      let done;
11774      let began = false;
11775      a.animating = true;
11776
11777      function render() {
11778        time = new Date().getTime();
11779        let progress;
11780        let easeProgress; // let el;
11781
11782        if (!began) {
11783          began = true;
11784          if (params.begin) params.begin(els);
11785        }
11786
11787        if (startTime === null) {
11788          startTime = time;
11789        }
11790
11791        if (params.progress) {
11792          // eslint-disable-next-line
11793          params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);
11794        }
11795
11796        elements.forEach(element => {
11797          const el = element;
11798          if (done || el.done) return;
11799          Object.keys(props).forEach(prop => {
11800            if (done || el.done) return;
11801            progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);
11802            easeProgress = a.easingProgress(params.easing, progress);
11803            const {
11804              initialValue,
11805              finalValue,
11806              unit
11807            } = el[prop];
11808            el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);
11809            const currentValue = el[prop].currentValue;
11810
11811            if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {
11812              el.container.style[prop] = finalValue + unit;
11813              propsDone += 1;
11814
11815              if (propsDone === Object.keys(props).length) {
11816                el.done = true;
11817                elementsDone += 1;
11818              }
11819
11820              if (elementsDone === elements.length) {
11821                done = true;
11822              }
11823            }
11824
11825            if (done) {
11826              a.done(params.complete);
11827              return;
11828            }
11829
11830            el.container.style[prop] = currentValue + unit;
11831          });
11832        });
11833        if (done) return; // Then call
11834
11835        a.frameId = window.requestAnimationFrame(render);
11836      }
11837
11838      a.frameId = window.requestAnimationFrame(render);
11839      return a;
11840    }
11841
11842  };
11843
11844  if (a.elements.length === 0) {
11845    return els;
11846  }
11847
11848  let animateInstance;
11849
11850  for (let i = 0; i < a.elements.length; i += 1) {
11851    if (a.elements[i].dom7AnimateInstance) {
11852      animateInstance = a.elements[i].dom7AnimateInstance;
11853    } else a.elements[i].dom7AnimateInstance = a;
11854  }
11855
11856  if (!animateInstance) {
11857    animateInstance = a;
11858  }
11859
11860  if (initialProps === 'stop') {
11861    animateInstance.stop();
11862  } else {
11863    animateInstance.animate(a.props, a.params);
11864  }
11865
11866  return els;
11867}
11868
11869function stop() {
11870  const els = this;
11871
11872  for (let i = 0; i < els.length; i += 1) {
11873    if (els[i].dom7AnimateInstance) {
11874      els[i].dom7AnimateInstance.stop();
11875    }
11876  }
11877}
11878
11879const noTrigger = 'resize scroll'.split(' ');
11880
11881function shortcut(name) {
11882  function eventHandler(...args) {
11883    if (typeof args[0] === 'undefined') {
11884      for (let i = 0; i < this.length; i += 1) {
11885        if (noTrigger.indexOf(name) < 0) {
11886          if (name in this[i]) this[i][name]();else {
11887            $(this[i]).trigger(name);
11888          }
11889        }
11890      }
11891
11892      return this;
11893    }
11894
11895    return this.on(name, ...args);
11896  }
11897
11898  return eventHandler;
11899}
11900
11901const click = shortcut('click');
11902const blur = shortcut('blur');
11903const focus = shortcut('focus');
11904const focusin = shortcut('focusin');
11905const focusout = shortcut('focusout');
11906const keyup = shortcut('keyup');
11907const keydown = shortcut('keydown');
11908const keypress = shortcut('keypress');
11909const submit = shortcut('submit');
11910const change = shortcut('change');
11911const mousedown = shortcut('mousedown');
11912const mousemove = shortcut('mousemove');
11913const mouseup = shortcut('mouseup');
11914const mouseenter = shortcut('mouseenter');
11915const mouseleave = shortcut('mouseleave');
11916const mouseout = shortcut('mouseout');
11917const mouseover = shortcut('mouseover');
11918const touchstart = shortcut('touchstart');
11919const touchend = shortcut('touchend');
11920const touchmove = shortcut('touchmove');
11921const resize = shortcut('resize');
11922const scroll = shortcut('scroll');
11923
11924/* harmony default export */ __webpack_exports__["default"] = ($);
11925
11926
11927
11928/***/ }),
11929
vendor: 3,993 bytes, lines 11930-12077
11930/***/ "./node_modules/js-cookie/dist/js.cookie.mjs":
11931/*!***************************************************!*\
11932  !*** ./node_modules/js-cookie/dist/js.cookie.mjs ***!
11933  \***************************************************/
11934/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
11935
11936__webpack_require__.r(__webpack_exports__);
11937/* harmony export */ __webpack_require__.d(__webpack_exports__, {
11938/* harmony export */   "default": function() { return /* binding */ api; }
11939/* harmony export */ });
11940/*! js-cookie v3.0.5 | MIT */
11941/* eslint-disable no-var */
11942function assign (target) {
11943  for (var i = 1; i < arguments.length; i++) {
11944    var source = arguments[i];
11945    for (var key in source) {
11946      target[key] = source[key];
11947    }
11948  }
11949  return target
11950}
11951/* eslint-enable no-var */
11952
11953/* eslint-disable no-var */
11954var defaultConverter = {
11955  read: function (value) {
11956    if (value[0] === '"') {
11957      value = value.slice(1, -1);
11958    }
11959    return value.replace(/(%[\dA-F]{2})+/gi, decodeURIComponent)
11960  },
11961  write: function (value) {
11962    return encodeURIComponent(value).replace(
11963      /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,
11964      decodeURIComponent
11965    )
11966  }
11967};
11968/* eslint-enable no-var */
11969
11970/* eslint-disable no-var */
11971
11972function init (converter, defaultAttributes) {
11973  function set (name, value, attributes) {
11974    if (typeof document === 'undefined') {
11975      return
11976    }
11977
11978    attributes = assign({}, defaultAttributes, attributes);
11979
11980    if (typeof attributes.expires === 'number') {
11981      attributes.expires = new Date(Date.now() + attributes.expires * 864e5);
11982    }
11983    if (attributes.expires) {
11984      attributes.expires = attributes.expires.toUTCString();
11985    }
11986
11987    name = encodeURIComponent(name)
11988      .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)
11989      .replace(/[()]/g, escape);
11990
11991    var stringifiedAttributes = '';
11992    for (var attributeName in attributes) {
11993      if (!attributes[attributeName]) {
11994        continue
11995      }
11996
11997      stringifiedAttributes += '; ' + attributeName;
11998
11999      if (attributes[attributeName] === true) {
12000        continue
12001      }
12002
12003      // Considers RFC 6265 section 5.2:
12004      // ...
12005      // 3.  If the remaining unparsed-attributes contains a %x3B (";")
12006      //     character:
12007      // Consume the characters of the unparsed-attributes up to,
12008      // not including, the first %x3B (";") character.
12009      // ...
12010      stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];
12011    }
12012
12013    return (document.cookie =
12014      name + '=' + converter.write(value, name) + stringifiedAttributes)
12015  }
12016
12017  function get (name) {
12018    if (typeof document === 'undefined' || (arguments.length && !name)) {
12019      return
12020    }
12021
12022    // To prevent the for loop in the first place assign an empty array
12023    // in case there are no cookies at all.
12024    var cookies = document.cookie ? document.cookie.split('; ') : [];
12025    var jar = {};
12026    for (var i = 0; i < cookies.length; i++) {
12027      var parts = cookies[i].split('=');
12028      var value = parts.slice(1).join('=');
12029
12030      try {
12031        var found = decodeURIComponent(parts[0]);
12032        jar[found] = converter.read(value, found);
12033
12034        if (name === found) {
12035          break
12036        }
12037      } catch (e) {}
12038    }
12039
12040    return name ? jar[name] : jar
12041  }
12042
12043  return Object.create(
12044    {
12045      set,
12046      get,
12047      remove: function (name, attributes) {
12048        set(
12049          name,
12050          '',
12051          assign({}, attributes, {
12052            expires: -1
12053          })
12054        );
12055      },
12056      withAttributes: function (attributes) {
12057        return init(this.converter, assign({}, this.attributes, attributes))
12058      },
12059      withConverter: function (converter) {
12060        return init(assign({}, this.converter, converter), this.attributes)
12061      }
12062    },
12063    {
12064      attributes: { value: Object.freeze(defaultAttributes) },
12065      converter: { value: Object.freeze(converter) }
12066    }
12067  )
12068}
12069
12070var api = init(defaultConverter, { path: '/' });
12071/* eslint-enable no-var */
12072
12073
12074
12075
12076/***/ }),
12077
vendor: 3,999 bytes, lines 12078-12243
12078/***/ "./node_modules/ssr-window/ssr-window.esm.js":
12079/*!***************************************************!*\
12080  !*** ./node_modules/ssr-window/ssr-window.esm.js ***!
12081  \***************************************************/
12082/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
12083
12084__webpack_require__.r(__webpack_exports__);
12085/* harmony export */ __webpack_require__.d(__webpack_exports__, {
12086/* harmony export */   extend: function() { return /* binding */ extend; },
12087/* harmony export */   getDocument: function() { return /* binding */ getDocument; },
12088/* harmony export */   getWindow: function() { return /* binding */ getWindow; },
12089/* harmony export */   ssrDocument: function() { return /* binding */ ssrDocument; },
12090/* harmony export */   ssrWindow: function() { return /* binding */ ssrWindow; }
12091/* harmony export */ });
12092/**
12093 * SSR Window 4.0.2
12094 * Better handling for window object in SSR environment
12095 * https://github.com/nolimits4web/ssr-window
12096 *
12097 * Copyright 2021, Vladimir Kharlampidi
12098 *
12099 * Licensed under MIT
12100 *
12101 * Released on: December 13, 2021
12102 */
12103/* eslint-disable no-param-reassign */
12104function isObject(obj) {
12105    return (obj !== null &&
12106        typeof obj === 'object' &&
12107        'constructor' in obj &&
12108        obj.constructor === Object);
12109}
12110function extend(target = {}, src = {}) {
12111    Object.keys(src).forEach((key) => {
12112        if (typeof target[key] === 'undefined')
12113            target[key] = src[key];
12114        else if (isObject(src[key]) &&
12115            isObject(target[key]) &&
12116            Object.keys(src[key]).length > 0) {
12117            extend(target[key], src[key]);
12118        }
12119    });
12120}
12121
12122const ssrDocument = {
12123    body: {},
12124    addEventListener() { },
12125    removeEventListener() { },
12126    activeElement: {
12127        blur() { },
12128        nodeName: '',
12129    },
12130    querySelector() {
12131        return null;
12132    },
12133    querySelectorAll() {
12134        return [];
12135    },
12136    getElementById() {
12137        return null;
12138    },
12139    createEvent() {
12140        return {
12141            initEvent() { },
12142        };
12143    },
12144    createElement() {
12145        return {
12146            children: [],
12147            childNodes: [],
12148            style: {},
12149            setAttribute() { },
12150            getElementsByTagName() {
12151                return [];
12152            },
12153        };
12154    },
12155    createElementNS() {
12156        return {};
12157    },
12158    importNode() {
12159        return null;
12160    },
12161    location: {
12162        hash: '',
12163        host: '',
12164        hostname: '',
12165        href: '',
12166        origin: '',
12167        pathname: '',
12168        protocol: '',
12169        search: '',
12170    },
12171};
12172function getDocument() {
12173    const doc = typeof document !== 'undefined' ? document : {};
12174    extend(doc, ssrDocument);
12175    return doc;
12176}
12177
12178const ssrWindow = {
12179    document: ssrDocument,
12180    navigator: {
12181        userAgent: '',
12182    },
12183    location: {
12184        hash: '',
12185        host: '',
12186        hostname: '',
12187        href: '',
12188        origin: '',
12189        pathname: '',
12190        protocol: '',
12191        search: '',
12192    },
12193    history: {
12194        replaceState() { },
12195        pushState() { },
12196        go() { },
12197        back() { },
12198    },
12199    CustomEvent: function CustomEvent() {
12200        return this;
12201    },
12202    addEventListener() { },
12203    removeEventListener() { },
12204    getComputedStyle() {
12205        return {
12206            getPropertyValue() {
12207                return '';
12208            },
12209        };
12210    },
12211    Image() { },
12212    Date() { },
12213    screen: {},
12214    setTimeout() { },
12215    clearTimeout() { },
12216    matchMedia() {
12217        return {};
12218    },
12219    requestAnimationFrame(callback) {
12220        if (typeof setTimeout === 'undefined') {
12221            callback();
12222            return null;
12223        }
12224        return setTimeout(callback, 0);
12225    },
12226    cancelAnimationFrame(id) {
12227        if (typeof setTimeout === 'undefined') {
12228            return;
12229        }
12230        clearTimeout(id);
12231    },
12232};
12233function getWindow() {
12234    const win = typeof window !== 'undefined' ? window : {};
12235    extend(win, ssrWindow);
12236    return win;
12237}
12238
12239
12240
12241
12242/***/ }),
12243
vendor: 1,858 bytes, lines 12244-12297
12244/***/ "./node_modules/swiper/core/breakpoints/getBreakpoint.js":
12245/*!***************************************************************!*\
12246  !*** ./node_modules/swiper/core/breakpoints/getBreakpoint.js ***!
12247  \***************************************************************/
12248/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
12249
12250__webpack_require__.r(__webpack_exports__);
12251/* harmony export */ __webpack_require__.d(__webpack_exports__, {
12252/* harmony export */   "default": function() { return /* binding */ getBreakpoint; }
12253/* harmony export */ });
12254/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
12255
12256function getBreakpoint(breakpoints, base = 'window', containerEl) {
12257  if (!breakpoints || base === 'container' && !containerEl) return undefined;
12258  let breakpoint = false;
12259  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
12260  const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;
12261  const points = Object.keys(breakpoints).map(point => {
12262    if (typeof point === 'string' && point.indexOf('@') === 0) {
12263      const minRatio = parseFloat(point.substr(1));
12264      const value = currentHeight * minRatio;
12265      return {
12266        value,
12267        point
12268      };
12269    }
12270
12271    return {
12272      value: point,
12273      point
12274    };
12275  });
12276  points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));
12277
12278  for (let i = 0; i < points.length; i += 1) {
12279    const {
12280      point,
12281      value
12282    } = points[i];
12283
12284    if (base === 'window') {
12285      if (window.matchMedia(`(min-width: ${value}px)`).matches) {
12286        breakpoint = point;
12287      }
12288    } else if (value <= containerEl.clientWidth) {
12289      breakpoint = point;
12290    }
12291  }
12292
12293  return breakpoint || 'max';
12294}
12295
12296/***/ }),
12297
vendor: 975 bytes, lines 12298-12315
12298/***/ "./node_modules/swiper/core/breakpoints/index.js":
12299/*!*******************************************************!*\
12300  !*** ./node_modules/swiper/core/breakpoints/index.js ***!
12301  \*******************************************************/
12302/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
12303
12304__webpack_require__.r(__webpack_exports__);
12305/* harmony import */ var _setBreakpoint_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./setBreakpoint.js */ "./node_modules/swiper/core/breakpoints/setBreakpoint.js");
12306/* harmony import */ var _getBreakpoint_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getBreakpoint.js */ "./node_modules/swiper/core/breakpoints/getBreakpoint.js");
12307
12308
12309/* harmony default export */ __webpack_exports__["default"] = ({
12310  setBreakpoint: _setBreakpoint_js__WEBPACK_IMPORTED_MODULE_0__["default"],
12311  getBreakpoint: _getBreakpoint_js__WEBPACK_IMPORTED_MODULE_1__["default"]
12312});
12313
12314/***/ }),
12315
vendor: 3,757 bytes, lines 12316-12414
12316/***/ "./node_modules/swiper/core/breakpoints/setBreakpoint.js":
12317/*!***************************************************************!*\
12318  !*** ./node_modules/swiper/core/breakpoints/setBreakpoint.js ***!
12319  \***************************************************************/
12320/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
12321
12322__webpack_require__.r(__webpack_exports__);
12323/* harmony export */ __webpack_require__.d(__webpack_exports__, {
12324/* harmony export */   "default": function() { return /* binding */ setBreakpoint; }
12325/* harmony export */ });
12326/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
12327
12328
12329const isGridEnabled = (swiper, params) => {
12330  return swiper.grid && params.grid && params.grid.rows > 1;
12331};
12332
12333function setBreakpoint() {
12334  const swiper = this;
12335  const {
12336    activeIndex,
12337    initialized,
12338    loopedSlides = 0,
12339    params,
12340    $el
12341  } = swiper;
12342  const breakpoints = params.breakpoints;
12343  if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters
12344
12345  const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);
12346  if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;
12347  const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;
12348  const breakpointParams = breakpointOnlyParams || swiper.originalParams;
12349  const wasMultiRow = isGridEnabled(swiper, params);
12350  const isMultiRow = isGridEnabled(swiper, breakpointParams);
12351  const wasEnabled = params.enabled;
12352
12353  if (wasMultiRow && !isMultiRow) {
12354    $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`);
12355    swiper.emitContainerClasses();
12356  } else if (!wasMultiRow && isMultiRow) {
12357    $el.addClass(`${params.containerModifierClass}grid`);
12358
12359    if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {
12360      $el.addClass(`${params.containerModifierClass}grid-column`);
12361    }
12362
12363    swiper.emitContainerClasses();
12364  } // Toggle navigation, pagination, scrollbar
12365
12366
12367  ['navigation', 'pagination', 'scrollbar'].forEach(prop => {
12368    const wasModuleEnabled = params[prop] && params[prop].enabled;
12369    const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;
12370
12371    if (wasModuleEnabled && !isModuleEnabled) {
12372      swiper[prop].disable();
12373    }
12374
12375    if (!wasModuleEnabled && isModuleEnabled) {
12376      swiper[prop].enable();
12377    }
12378  });
12379  const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;
12380  const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);
12381
12382  if (directionChanged && initialized) {
12383    swiper.changeDirection();
12384  }
12385
12386  (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.extend)(swiper.params, breakpointParams);
12387  const isEnabled = swiper.params.enabled;
12388  Object.assign(swiper, {
12389    allowTouchMove: swiper.params.allowTouchMove,
12390    allowSlideNext: swiper.params.allowSlideNext,
12391    allowSlidePrev: swiper.params.allowSlidePrev
12392  });
12393
12394  if (wasEnabled && !isEnabled) {
12395    swiper.disable();
12396  } else if (!wasEnabled && isEnabled) {
12397    swiper.enable();
12398  }
12399
12400  swiper.currentBreakpoint = breakpoint;
12401  swiper.emit('_beforeBreakpoint', breakpointParams);
12402
12403  if (needsReLoop && initialized) {
12404    swiper.loopDestroy();
12405    swiper.loopCreate();
12406    swiper.updateSlides();
12407    swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);
12408  }
12409
12410  swiper.emit('breakpoint', breakpointParams);
12411}
12412
12413/***/ }),
12414
vendor: 1,350 bytes, lines 12415-12462
12415/***/ "./node_modules/swiper/core/check-overflow/index.js":
12416/*!**********************************************************!*\
12417  !*** ./node_modules/swiper/core/check-overflow/index.js ***!
12418  \**********************************************************/
12419/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
12420
12421__webpack_require__.r(__webpack_exports__);
12422function checkOverflow() {
12423  const swiper = this;
12424  const {
12425    isLocked: wasLocked,
12426    params
12427  } = swiper;
12428  const {
12429    slidesOffsetBefore
12430  } = params;
12431
12432  if (slidesOffsetBefore) {
12433    const lastSlideIndex = swiper.slides.length - 1;
12434    const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;
12435    swiper.isLocked = swiper.size > lastSlideRightEdge;
12436  } else {
12437    swiper.isLocked = swiper.snapGrid.length === 1;
12438  }
12439
12440  if (params.allowSlideNext === true) {
12441    swiper.allowSlideNext = !swiper.isLocked;
12442  }
12443
12444  if (params.allowSlidePrev === true) {
12445    swiper.allowSlidePrev = !swiper.isLocked;
12446  }
12447
12448  if (wasLocked && wasLocked !== swiper.isLocked) {
12449    swiper.isEnd = false;
12450  }
12451
12452  if (wasLocked !== swiper.isLocked) {
12453    swiper.emit(swiper.isLocked ? 'lock' : 'unlock');
12454  }
12455}
12456
12457/* harmony default export */ __webpack_exports__["default"] = ({
12458  checkOverflow
12459});
12460
12461/***/ }),
12462
vendor: 1,907 bytes, lines 12463-12529
12463/***/ "./node_modules/swiper/core/classes/addClasses.js":
12464/*!********************************************************!*\
12465  !*** ./node_modules/swiper/core/classes/addClasses.js ***!
12466  \********************************************************/
12467/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
12468
12469__webpack_require__.r(__webpack_exports__);
12470/* harmony export */ __webpack_require__.d(__webpack_exports__, {
12471/* harmony export */   "default": function() { return /* binding */ addClasses; }
12472/* harmony export */ });
12473function prepareClasses(entries, prefix) {
12474  const resultClasses = [];
12475  entries.forEach(item => {
12476    if (typeof item === 'object') {
12477      Object.keys(item).forEach(classNames => {
12478        if (item[classNames]) {
12479          resultClasses.push(prefix + classNames);
12480        }
12481      });
12482    } else if (typeof item === 'string') {
12483      resultClasses.push(prefix + item);
12484    }
12485  });
12486  return resultClasses;
12487}
12488
12489function addClasses() {
12490  const swiper = this;
12491  const {
12492    classNames,
12493    params,
12494    rtl,
12495    $el,
12496    device,
12497    support
12498  } = swiper; // prettier-ignore
12499
12500  const suffixes = prepareClasses(['initialized', params.direction, {
12501    'pointer-events': !support.touch
12502  }, {
12503    'free-mode': swiper.params.freeMode && params.freeMode.enabled
12504  }, {
12505    'autoheight': params.autoHeight
12506  }, {
12507    'rtl': rtl
12508  }, {
12509    'grid': params.grid && params.grid.rows > 1
12510  }, {
12511    'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'
12512  }, {
12513    'android': device.android
12514  }, {
12515    'ios': device.ios
12516  }, {
12517    'css-mode': params.cssMode
12518  }, {
12519    'centered': params.cssMode && params.centeredSlides
12520  }, {
12521    'watch-progress': params.watchSlidesProgress
12522  }], params.containerModifierClass);
12523  classNames.push(...suffixes);
12524  $el.addClass([...classNames].join(' '));
12525  swiper.emitContainerClasses();
12526}
12527
12528/***/ }),
12529
vendor: 936 bytes, lines 12530-12547
12530/***/ "./node_modules/swiper/core/classes/index.js":
12531/*!***************************************************!*\
12532  !*** ./node_modules/swiper/core/classes/index.js ***!
12533  \***************************************************/
12534/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
12535
12536__webpack_require__.r(__webpack_exports__);
12537/* harmony import */ var _addClasses_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./addClasses.js */ "./node_modules/swiper/core/classes/addClasses.js");
12538/* harmony import */ var _removeClasses_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./removeClasses.js */ "./node_modules/swiper/core/classes/removeClasses.js");
12539
12540
12541/* harmony default export */ __webpack_exports__["default"] = ({
12542  addClasses: _addClasses_js__WEBPACK_IMPORTED_MODULE_0__["default"],
12543  removeClasses: _removeClasses_js__WEBPACK_IMPORTED_MODULE_1__["default"]
12544});
12545
12546/***/ }),
12547
vendor: 759 bytes, lines 12548-12569
12548/***/ "./node_modules/swiper/core/classes/removeClasses.js":
12549/*!***********************************************************!*\
12550  !*** ./node_modules/swiper/core/classes/removeClasses.js ***!
12551  \***********************************************************/
12552/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
12553
12554__webpack_require__.r(__webpack_exports__);
12555/* harmony export */ __webpack_require__.d(__webpack_exports__, {
12556/* harmony export */   "default": function() { return /* binding */ removeClasses; }
12557/* harmony export */ });
12558function removeClasses() {
12559  const swiper = this;
12560  const {
12561    $el,
12562    classNames
12563  } = swiper;
12564  $el.removeClass(classNames.join(' '));
12565  swiper.emitContainerClasses();
12566}
12567
12568/***/ }),
12569
vendor: 22,476 bytes, lines 12570-13235
12570/***/ "./node_modules/swiper/core/core.js":
12571/*!******************************************!*\
12572  !*** ./node_modules/swiper/core/core.js ***!
12573  \******************************************/
12574/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
12575
12576__webpack_require__.r(__webpack_exports__);
12577/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
12578/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
12579/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
12580/* harmony import */ var _shared_get_support_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shared/get-support.js */ "./node_modules/swiper/shared/get-support.js");
12581/* harmony import */ var _shared_get_device_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../shared/get-device.js */ "./node_modules/swiper/shared/get-device.js");
12582/* harmony import */ var _shared_get_browser_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../shared/get-browser.js */ "./node_modules/swiper/shared/get-browser.js");
12583/* harmony import */ var _modules_resize_resize_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./modules/resize/resize.js */ "./node_modules/swiper/core/modules/resize/resize.js");
12584/* harmony import */ var _modules_observer_observer_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./modules/observer/observer.js */ "./node_modules/swiper/core/modules/observer/observer.js");
12585/* harmony import */ var _events_emitter_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./events-emitter.js */ "./node_modules/swiper/core/events-emitter.js");
12586/* harmony import */ var _update_index_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./update/index.js */ "./node_modules/swiper/core/update/index.js");
12587/* harmony import */ var _translate_index_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./translate/index.js */ "./node_modules/swiper/core/translate/index.js");
12588/* harmony import */ var _transition_index_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./transition/index.js */ "./node_modules/swiper/core/transition/index.js");
12589/* harmony import */ var _slide_index_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./slide/index.js */ "./node_modules/swiper/core/slide/index.js");
12590/* harmony import */ var _loop_index_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./loop/index.js */ "./node_modules/swiper/core/loop/index.js");
12591/* harmony import */ var _grab_cursor_index_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./grab-cursor/index.js */ "./node_modules/swiper/core/grab-cursor/index.js");
12592/* harmony import */ var _events_index_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./events/index.js */ "./node_modules/swiper/core/events/index.js");
12593/* harmony import */ var _breakpoints_index_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./breakpoints/index.js */ "./node_modules/swiper/core/breakpoints/index.js");
12594/* harmony import */ var _classes_index_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./classes/index.js */ "./node_modules/swiper/core/classes/index.js");
12595/* harmony import */ var _images_index_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./images/index.js */ "./node_modules/swiper/core/images/index.js");
12596/* harmony import */ var _check_overflow_index_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./check-overflow/index.js */ "./node_modules/swiper/core/check-overflow/index.js");
12597/* harmony import */ var _defaults_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./defaults.js */ "./node_modules/swiper/core/defaults.js");
12598/* harmony import */ var _moduleExtendParams_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./moduleExtendParams.js */ "./node_modules/swiper/core/moduleExtendParams.js");
12599/* eslint no-param-reassign: "off" */
12600
12601
12602
12603
12604
12605
12606
12607
12608
12609
12610
12611
12612
12613
12614
12615
12616
12617
12618
12619
12620
12621
12622const prototypes = {
12623  eventsEmitter: _events_emitter_js__WEBPACK_IMPORTED_MODULE_8__["default"],
12624  update: _update_index_js__WEBPACK_IMPORTED_MODULE_9__["default"],
12625  translate: _translate_index_js__WEBPACK_IMPORTED_MODULE_10__["default"],
12626  transition: _transition_index_js__WEBPACK_IMPORTED_MODULE_11__["default"],
12627  slide: _slide_index_js__WEBPACK_IMPORTED_MODULE_12__["default"],
12628  loop: _loop_index_js__WEBPACK_IMPORTED_MODULE_13__["default"],
12629  grabCursor: _grab_cursor_index_js__WEBPACK_IMPORTED_MODULE_14__["default"],
12630  events: _events_index_js__WEBPACK_IMPORTED_MODULE_15__["default"],
12631  breakpoints: _breakpoints_index_js__WEBPACK_IMPORTED_MODULE_16__["default"],
12632  checkOverflow: _check_overflow_index_js__WEBPACK_IMPORTED_MODULE_19__["default"],
12633  classes: _classes_index_js__WEBPACK_IMPORTED_MODULE_17__["default"],
12634  images: _images_index_js__WEBPACK_IMPORTED_MODULE_18__["default"]
12635};
12636const extendedDefaults = {};
12637
12638class Swiper {
12639  constructor(...args) {
12640    let el;
12641    let params;
12642
12643    if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {
12644      params = args[0];
12645    } else {
12646      [el, params] = args;
12647    }
12648
12649    if (!params) params = {};
12650    params = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.extend)({}, params);
12651    if (el && !params.el) params.el = el;
12652
12653    if (params.el && (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params.el).length > 1) {
12654      const swipers = [];
12655      (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params.el).each(containerEl => {
12656        const newParams = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.extend)({}, params, {
12657          el: containerEl
12658        });
12659        swipers.push(new Swiper(newParams));
12660      }); // eslint-disable-next-line no-constructor-return
12661
12662      return swipers;
12663    } // Swiper Instance
12664
12665
12666    const swiper = this;
12667    swiper.__swiper__ = true;
12668    swiper.support = (0,_shared_get_support_js__WEBPACK_IMPORTED_MODULE_3__.getSupport)();
12669    swiper.device = (0,_shared_get_device_js__WEBPACK_IMPORTED_MODULE_4__.getDevice)({
12670      userAgent: params.userAgent
12671    });
12672    swiper.browser = (0,_shared_get_browser_js__WEBPACK_IMPORTED_MODULE_5__.getBrowser)();
12673    swiper.eventsListeners = {};
12674    swiper.eventsAnyListeners = [];
12675    swiper.modules = [...swiper.__modules__];
12676
12677    if (params.modules && Array.isArray(params.modules)) {
12678      swiper.modules.push(...params.modules);
12679    }
12680
12681    const allModulesParams = {};
12682    swiper.modules.forEach(mod => {
12683      mod({
12684        swiper,
12685        extendParams: (0,_moduleExtendParams_js__WEBPACK_IMPORTED_MODULE_21__["default"])(params, allModulesParams),
12686        on: swiper.on.bind(swiper),
12687        once: swiper.once.bind(swiper),
12688        off: swiper.off.bind(swiper),
12689        emit: swiper.emit.bind(swiper)
12690      });
12691    }); // Extend defaults with modules params
12692
12693    const swiperParams = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.extend)({}, _defaults_js__WEBPACK_IMPORTED_MODULE_20__["default"], allModulesParams); // Extend defaults with passed params
12694
12695    swiper.params = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.extend)({}, swiperParams, extendedDefaults, params);
12696    swiper.originalParams = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.extend)({}, swiper.params);
12697    swiper.passedParams = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.extend)({}, params); // add event listeners
12698
12699    if (swiper.params && swiper.params.on) {
12700      Object.keys(swiper.params.on).forEach(eventName => {
12701        swiper.on(eventName, swiper.params.on[eventName]);
12702      });
12703    }
12704
12705    if (swiper.params && swiper.params.onAny) {
12706      swiper.onAny(swiper.params.onAny);
12707    } // Save Dom lib
12708
12709
12710    swiper.$ = _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"]; // Extend Swiper
12711
12712    Object.assign(swiper, {
12713      enabled: swiper.params.enabled,
12714      el,
12715      // Classes
12716      classNames: [],
12717      // Slides
12718      slides: (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(),
12719      slidesGrid: [],
12720      snapGrid: [],
12721      slidesSizesGrid: [],
12722
12723      // isDirection
12724      isHorizontal() {
12725        return swiper.params.direction === 'horizontal';
12726      },
12727
12728      isVertical() {
12729        return swiper.params.direction === 'vertical';
12730      },
12731
12732      // Indexes
12733      activeIndex: 0,
12734      realIndex: 0,
12735      //
12736      isBeginning: true,
12737      isEnd: false,
12738      // Props
12739      translate: 0,
12740      previousTranslate: 0,
12741      progress: 0,
12742      velocity: 0,
12743      animating: false,
12744      // Locks
12745      allowSlideNext: swiper.params.allowSlideNext,
12746      allowSlidePrev: swiper.params.allowSlidePrev,
12747      // Touch Events
12748      touchEvents: function touchEvents() {
12749        const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];
12750        const desktop = ['pointerdown', 'pointermove', 'pointerup'];
12751        swiper.touchEventsTouch = {
12752          start: touch[0],
12753          move: touch[1],
12754          end: touch[2],
12755          cancel: touch[3]
12756        };
12757        swiper.touchEventsDesktop = {
12758          start: desktop[0],
12759          move: desktop[1],
12760          end: desktop[2]
12761        };
12762        return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;
12763      }(),
12764      touchEventsData: {
12765        isTouched: undefined,
12766        isMoved: undefined,
12767        allowTouchCallbacks: undefined,
12768        touchStartTime: undefined,
12769        isScrolling: undefined,
12770        currentTranslate: undefined,
12771        startTranslate: undefined,
12772        allowThresholdMove: undefined,
12773        // Form elements to match
12774        focusableElements: swiper.params.focusableElements,
12775        // Last click time
12776        lastClickTime: (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.now)(),
12777        clickTimeout: undefined,
12778        // Velocities
12779        velocities: [],
12780        allowMomentumBounce: undefined,
12781        isTouchEvent: undefined,
12782        startMoving: undefined
12783      },
12784      // Clicks
12785      allowClick: true,
12786      // Touches
12787      allowTouchMove: swiper.params.allowTouchMove,
12788      touches: {
12789        startX: 0,
12790        startY: 0,
12791        currentX: 0,
12792        currentY: 0,
12793        diff: 0
12794      },
12795      // Images
12796      imagesToLoad: [],
12797      imagesLoaded: 0
12798    });
12799    swiper.emit('_swiper'); // Init
12800
12801    if (swiper.params.init) {
12802      swiper.init();
12803    } // Return app instance
12804    // eslint-disable-next-line no-constructor-return
12805
12806
12807    return swiper;
12808  }
12809
12810  enable() {
12811    const swiper = this;
12812    if (swiper.enabled) return;
12813    swiper.enabled = true;
12814
12815    if (swiper.params.grabCursor) {
12816      swiper.setGrabCursor();
12817    }
12818
12819    swiper.emit('enable');
12820  }
12821
12822  disable() {
12823    const swiper = this;
12824    if (!swiper.enabled) return;
12825    swiper.enabled = false;
12826
12827    if (swiper.params.grabCursor) {
12828      swiper.unsetGrabCursor();
12829    }
12830
12831    swiper.emit('disable');
12832  }
12833
12834  setProgress(progress, speed) {
12835    const swiper = this;
12836    progress = Math.min(Math.max(progress, 0), 1);
12837    const min = swiper.minTranslate();
12838    const max = swiper.maxTranslate();
12839    const current = (max - min) * progress + min;
12840    swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);
12841    swiper.updateActiveIndex();
12842    swiper.updateSlidesClasses();
12843  }
12844
12845  emitContainerClasses() {
12846    const swiper = this;
12847    if (!swiper.params._emitClasses || !swiper.el) return;
12848    const cls = swiper.el.className.split(' ').filter(className => {
12849      return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;
12850    });
12851    swiper.emit('_containerClasses', cls.join(' '));
12852  }
12853
12854  getSlideClasses(slideEl) {
12855    const swiper = this;
12856    if (swiper.destroyed) return '';
12857    return slideEl.className.split(' ').filter(className => {
12858      return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;
12859    }).join(' ');
12860  }
12861
12862  emitSlidesClasses() {
12863    const swiper = this;
12864    if (!swiper.params._emitClasses || !swiper.el) return;
12865    const updates = [];
12866    swiper.slides.each(slideEl => {
12867      const classNames = swiper.getSlideClasses(slideEl);
12868      updates.push({
12869        slideEl,
12870        classNames
12871      });
12872      swiper.emit('_slideClass', slideEl, classNames);
12873    });
12874    swiper.emit('_slideClasses', updates);
12875  }
12876
12877  slidesPerViewDynamic(view = 'current', exact = false) {
12878    const swiper = this;
12879    const {
12880      params,
12881      slides,
12882      slidesGrid,
12883      slidesSizesGrid,
12884      size: swiperSize,
12885      activeIndex
12886    } = swiper;
12887    let spv = 1;
12888
12889    if (params.centeredSlides) {
12890      let slideSize = slides[activeIndex].swiperSlideSize;
12891      let breakLoop;
12892
12893      for (let i = activeIndex + 1; i < slides.length; i += 1) {
12894        if (slides[i] && !breakLoop) {
12895          slideSize += slides[i].swiperSlideSize;
12896          spv += 1;
12897          if (slideSize > swiperSize) breakLoop = true;
12898        }
12899      }
12900
12901      for (let i = activeIndex - 1; i >= 0; i -= 1) {
12902        if (slides[i] && !breakLoop) {
12903          slideSize += slides[i].swiperSlideSize;
12904          spv += 1;
12905          if (slideSize > swiperSize) breakLoop = true;
12906        }
12907      }
12908    } else {
12909      // eslint-disable-next-line
12910      if (view === 'current') {
12911        for (let i = activeIndex + 1; i < slides.length; i += 1) {
12912          const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;
12913
12914          if (slideInView) {
12915            spv += 1;
12916          }
12917        }
12918      } else {
12919        // previous
12920        for (let i = activeIndex - 1; i >= 0; i -= 1) {
12921          const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;
12922
12923          if (slideInView) {
12924            spv += 1;
12925          }
12926        }
12927      }
12928    }
12929
12930    return spv;
12931  }
12932
12933  update() {
12934    const swiper = this;
12935    if (!swiper || swiper.destroyed) return;
12936    const {
12937      snapGrid,
12938      params
12939    } = swiper; // Breakpoints
12940
12941    if (params.breakpoints) {
12942      swiper.setBreakpoint();
12943    }
12944
12945    swiper.updateSize();
12946    swiper.updateSlides();
12947    swiper.updateProgress();
12948    swiper.updateSlidesClasses();
12949
12950    function setTranslate() {
12951      const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;
12952      const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());
12953      swiper.setTranslate(newTranslate);
12954      swiper.updateActiveIndex();
12955      swiper.updateSlidesClasses();
12956    }
12957
12958    let translated;
12959
12960    if (swiper.params.freeMode && swiper.params.freeMode.enabled) {
12961      setTranslate();
12962
12963      if (swiper.params.autoHeight) {
12964        swiper.updateAutoHeight();
12965      }
12966    } else {
12967      if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {
12968        translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);
12969      } else {
12970        translated = swiper.slideTo(swiper.activeIndex, 0, false, true);
12971      }
12972
12973      if (!translated) {
12974        setTranslate();
12975      }
12976    }
12977
12978    if (params.watchOverflow && snapGrid !== swiper.snapGrid) {
12979      swiper.checkOverflow();
12980    }
12981
12982    swiper.emit('update');
12983  }
12984
12985  changeDirection(newDirection, needUpdate = true) {
12986    const swiper = this;
12987    const currentDirection = swiper.params.direction;
12988
12989    if (!newDirection) {
12990      // eslint-disable-next-line
12991      newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';
12992    }
12993
12994    if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {
12995      return swiper;
12996    }
12997
12998    swiper.$el.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`);
12999    swiper.emitContainerClasses();
13000    swiper.params.direction = newDirection;
13001    swiper.slides.each(slideEl => {
13002      if (newDirection === 'vertical') {
13003        slideEl.style.width = '';
13004      } else {
13005        slideEl.style.height = '';
13006      }
13007    });
13008    swiper.emit('changeDirection');
13009    if (needUpdate) swiper.update();
13010    return swiper;
13011  }
13012
13013  changeLanguageDirection(direction) {
13014    const swiper = this;
13015    if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;
13016    swiper.rtl = direction === 'rtl';
13017    swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;
13018
13019    if (swiper.rtl) {
13020      swiper.$el.addClass(`${swiper.params.containerModifierClass}rtl`);
13021      swiper.el.dir = 'rtl';
13022    } else {
13023      swiper.$el.removeClass(`${swiper.params.containerModifierClass}rtl`);
13024      swiper.el.dir = 'ltr';
13025    }
13026
13027    swiper.update();
13028  }
13029
13030  mount(el) {
13031    const swiper = this;
13032    if (swiper.mounted) return true; // Find el
13033
13034    const $el = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(el || swiper.params.el);
13035    el = $el[0];
13036
13037    if (!el) {
13038      return false;
13039    }
13040
13041    el.swiper = swiper;
13042
13043    const getWrapperSelector = () => {
13044      return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;
13045    };
13046
13047    const getWrapper = () => {
13048      if (el && el.shadowRoot && el.shadowRoot.querySelector) {
13049        const res = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items
13050
13051        res.children = options => $el.children(options);
13052
13053        return res;
13054      }
13055
13056      if (!$el.children) {
13057        return (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])($el).children(getWrapperSelector());
13058      }
13059
13060      return $el.children(getWrapperSelector());
13061    }; // Find Wrapper
13062
13063
13064    let $wrapperEl = getWrapper();
13065
13066    if ($wrapperEl.length === 0 && swiper.params.createElements) {
13067      const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
13068      const wrapper = document.createElement('div');
13069      $wrapperEl = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(wrapper);
13070      wrapper.className = swiper.params.wrapperClass;
13071      $el.append(wrapper);
13072      $el.children(`.${swiper.params.slideClass}`).each(slideEl => {
13073        $wrapperEl.append(slideEl);
13074      });
13075    }
13076
13077    Object.assign(swiper, {
13078      $el,
13079      el,
13080      $wrapperEl,
13081      wrapperEl: $wrapperEl[0],
13082      mounted: true,
13083      // RTL
13084      rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',
13085      rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),
13086      wrongRTL: $wrapperEl.css('display') === '-webkit-box'
13087    });
13088    return true;
13089  }
13090
13091  init(el) {
13092    const swiper = this;
13093    if (swiper.initialized) return swiper;
13094    const mounted = swiper.mount(el);
13095    if (mounted === false) return swiper;
13096    swiper.emit('beforeInit'); // Set breakpoint
13097
13098    if (swiper.params.breakpoints) {
13099      swiper.setBreakpoint();
13100    } // Add Classes
13101
13102
13103    swiper.addClasses(); // Create loop
13104
13105    if (swiper.params.loop) {
13106      swiper.loopCreate();
13107    } // Update size
13108
13109
13110    swiper.updateSize(); // Update slides
13111
13112    swiper.updateSlides();
13113
13114    if (swiper.params.watchOverflow) {
13115      swiper.checkOverflow();
13116    } // Set Grab Cursor
13117
13118
13119    if (swiper.params.grabCursor && swiper.enabled) {
13120      swiper.setGrabCursor();
13121    }
13122
13123    if (swiper.params.preloadImages) {
13124      swiper.preloadImages();
13125    } // Slide To Initial Slide
13126
13127
13128    if (swiper.params.loop) {
13129      swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);
13130    } else {
13131      swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);
13132    } // Attach events
13133
13134
13135    swiper.attachEvents(); // Init Flag
13136
13137    swiper.initialized = true; // Emit
13138
13139    swiper.emit('init');
13140    swiper.emit('afterInit');
13141    return swiper;
13142  }
13143
13144  destroy(deleteInstance = true, cleanStyles = true) {
13145    const swiper = this;
13146    const {
13147      params,
13148      $el,
13149      $wrapperEl,
13150      slides
13151    } = swiper;
13152
13153    if (typeof swiper.params === 'undefined' || swiper.destroyed) {
13154      return null;
13155    }
13156
13157    swiper.emit('beforeDestroy'); // Init Flag
13158
13159    swiper.initialized = false; // Detach events
13160
13161    swiper.detachEvents(); // Destroy loop
13162
13163    if (params.loop) {
13164      swiper.loopDestroy();
13165    } // Cleanup styles
13166
13167
13168    if (cleanStyles) {
13169      swiper.removeClasses();
13170      $el.removeAttr('style');
13171      $wrapperEl.removeAttr('style');
13172
13173      if (slides && slides.length) {
13174        slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');
13175      }
13176    }
13177
13178    swiper.emit('destroy'); // Detach emitter events
13179
13180    Object.keys(swiper.eventsListeners).forEach(eventName => {
13181      swiper.off(eventName);
13182    });
13183
13184    if (deleteInstance !== false) {
13185      swiper.$el[0].swiper = null;
13186      (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.deleteProps)(swiper);
13187    }
13188
13189    swiper.destroyed = true;
13190    return null;
13191  }
13192
13193  static extendDefaults(newDefaults) {
13194    (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.extend)(extendedDefaults, newDefaults);
13195  }
13196
13197  static get extendedDefaults() {
13198    return extendedDefaults;
13199  }
13200
13201  static get defaults() {
13202    return _defaults_js__WEBPACK_IMPORTED_MODULE_20__["default"];
13203  }
13204
13205  static installModule(mod) {
13206    if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];
13207    const modules = Swiper.prototype.__modules__;
13208
13209    if (typeof mod === 'function' && modules.indexOf(mod) < 0) {
13210      modules.push(mod);
13211    }
13212  }
13213
13214  static use(module) {
13215    if (Array.isArray(module)) {
13216      module.forEach(m => Swiper.installModule(m));
13217      return Swiper;
13218    }
13219
13220    Swiper.installModule(module);
13221    return Swiper;
13222  }
13223
13224}
13225
13226Object.keys(prototypes).forEach(prototypeGroup => {
13227  Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {
13228    Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];
13229  });
13230});
13231Swiper.use([_modules_resize_resize_js__WEBPACK_IMPORTED_MODULE_6__["default"], _modules_observer_observer_js__WEBPACK_IMPORTED_MODULE_7__["default"]]);
13232/* harmony default export */ __webpack_exports__["default"] = (Swiper);
13233
13234/***/ }),
13235
vendor: 3,585 bytes, lines 13236-13369
13236/***/ "./node_modules/swiper/core/defaults.js":
13237/*!**********************************************!*\
13238  !*** ./node_modules/swiper/core/defaults.js ***!
13239  \**********************************************/
13240/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
13241
13242__webpack_require__.r(__webpack_exports__);
13243/* harmony default export */ __webpack_exports__["default"] = ({
13244  init: true,
13245  direction: 'horizontal',
13246  touchEventsTarget: 'wrapper',
13247  initialSlide: 0,
13248  speed: 300,
13249  cssMode: false,
13250  updateOnWindowResize: true,
13251  resizeObserver: true,
13252  nested: false,
13253  createElements: false,
13254  enabled: true,
13255  focusableElements: 'input, select, option, textarea, button, video, label',
13256  // Overrides
13257  width: null,
13258  height: null,
13259  //
13260  preventInteractionOnTransition: false,
13261  // ssr
13262  userAgent: null,
13263  url: null,
13264  // To support iOS's swipe-to-go-back gesture (when being used in-app).
13265  edgeSwipeDetection: false,
13266  edgeSwipeThreshold: 20,
13267  // Autoheight
13268  autoHeight: false,
13269  // Set wrapper width
13270  setWrapperSize: false,
13271  // Virtual Translate
13272  virtualTranslate: false,
13273  // Effects
13274  effect: 'slide',
13275  // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'
13276  // Breakpoints
13277  breakpoints: undefined,
13278  breakpointsBase: 'window',
13279  // Slides grid
13280  spaceBetween: 0,
13281  slidesPerView: 1,
13282  slidesPerGroup: 1,
13283  slidesPerGroupSkip: 0,
13284  slidesPerGroupAuto: false,
13285  centeredSlides: false,
13286  centeredSlidesBounds: false,
13287  slidesOffsetBefore: 0,
13288  // in px
13289  slidesOffsetAfter: 0,
13290  // in px
13291  normalizeSlideIndex: true,
13292  centerInsufficientSlides: false,
13293  // Disable swiper and hide navigation when container not overflow
13294  watchOverflow: true,
13295  // Round length
13296  roundLengths: false,
13297  // Touches
13298  touchRatio: 1,
13299  touchAngle: 45,
13300  simulateTouch: true,
13301  shortSwipes: true,
13302  longSwipes: true,
13303  longSwipesRatio: 0.5,
13304  longSwipesMs: 300,
13305  followFinger: true,
13306  allowTouchMove: true,
13307  threshold: 0,
13308  touchMoveStopPropagation: false,
13309  touchStartPreventDefault: true,
13310  touchStartForcePreventDefault: false,
13311  touchReleaseOnEdges: false,
13312  // Unique Navigation Elements
13313  uniqueNavElements: true,
13314  // Resistance
13315  resistance: true,
13316  resistanceRatio: 0.85,
13317  // Progress
13318  watchSlidesProgress: false,
13319  // Cursor
13320  grabCursor: false,
13321  // Clicks
13322  preventClicks: true,
13323  preventClicksPropagation: true,
13324  slideToClickedSlide: false,
13325  // Images
13326  preloadImages: true,
13327  updateOnImagesReady: true,
13328  // loop
13329  loop: false,
13330  loopAdditionalSlides: 0,
13331  loopedSlides: null,
13332  loopedSlidesLimit: true,
13333  loopFillGroupWithBlank: false,
13334  loopPreventsSlide: true,
13335  // rewind
13336  rewind: false,
13337  // Swiping/no swiping
13338  allowSlidePrev: true,
13339  allowSlideNext: true,
13340  swipeHandler: null,
13341  // '.swipe-handler',
13342  noSwiping: true,
13343  noSwipingClass: 'swiper-no-swiping',
13344  noSwipingSelector: null,
13345  // Passive Listeners
13346  passiveListeners: true,
13347  maxBackfaceHiddenSlides: 10,
13348  // NS
13349  containerModifierClass: 'swiper-',
13350  // NEW
13351  slideClass: 'swiper-slide',
13352  slideBlankClass: 'swiper-slide-invisible-blank',
13353  slideActiveClass: 'swiper-slide-active',
13354  slideDuplicateActiveClass: 'swiper-slide-duplicate-active',
13355  slideVisibleClass: 'swiper-slide-visible',
13356  slideDuplicateClass: 'swiper-slide-duplicate',
13357  slideNextClass: 'swiper-slide-next',
13358  slideDuplicateNextClass: 'swiper-slide-duplicate-next',
13359  slidePrevClass: 'swiper-slide-prev',
13360  slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',
13361  wrapperClass: 'swiper-wrapper',
13362  // Callbacks
13363  runCallbacksOnInit: true,
13364  // Internals
13365  _emitClasses: false
13366});
13367
13368/***/ }),
13369
vendor: 3,724 bytes, lines 13370-13493
13370/***/ "./node_modules/swiper/core/events-emitter.js":
13371/*!****************************************************!*\
13372  !*** ./node_modules/swiper/core/events-emitter.js ***!
13373  \****************************************************/
13374/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
13375
13376__webpack_require__.r(__webpack_exports__);
13377/* eslint-disable no-underscore-dangle */
13378/* harmony default export */ __webpack_exports__["default"] = ({
13379  on(events, handler, priority) {
13380    const self = this;
13381    if (!self.eventsListeners || self.destroyed) return self;
13382    if (typeof handler !== 'function') return self;
13383    const method = priority ? 'unshift' : 'push';
13384    events.split(' ').forEach(event => {
13385      if (!self.eventsListeners[event]) self.eventsListeners[event] = [];
13386      self.eventsListeners[event][method](handler);
13387    });
13388    return self;
13389  },
13390
13391  once(events, handler, priority) {
13392    const self = this;
13393    if (!self.eventsListeners || self.destroyed) return self;
13394    if (typeof handler !== 'function') return self;
13395
13396    function onceHandler(...args) {
13397      self.off(events, onceHandler);
13398
13399      if (onceHandler.__emitterProxy) {
13400        delete onceHandler.__emitterProxy;
13401      }
13402
13403      handler.apply(self, args);
13404    }
13405
13406    onceHandler.__emitterProxy = handler;
13407    return self.on(events, onceHandler, priority);
13408  },
13409
13410  onAny(handler, priority) {
13411    const self = this;
13412    if (!self.eventsListeners || self.destroyed) return self;
13413    if (typeof handler !== 'function') return self;
13414    const method = priority ? 'unshift' : 'push';
13415
13416    if (self.eventsAnyListeners.indexOf(handler) < 0) {
13417      self.eventsAnyListeners[method](handler);
13418    }
13419
13420    return self;
13421  },
13422
13423  offAny(handler) {
13424    const self = this;
13425    if (!self.eventsListeners || self.destroyed) return self;
13426    if (!self.eventsAnyListeners) return self;
13427    const index = self.eventsAnyListeners.indexOf(handler);
13428
13429    if (index >= 0) {
13430      self.eventsAnyListeners.splice(index, 1);
13431    }
13432
13433    return self;
13434  },
13435
13436  off(events, handler) {
13437    const self = this;
13438    if (!self.eventsListeners || self.destroyed) return self;
13439    if (!self.eventsListeners) return self;
13440    events.split(' ').forEach(event => {
13441      if (typeof handler === 'undefined') {
13442        self.eventsListeners[event] = [];
13443      } else if (self.eventsListeners[event]) {
13444        self.eventsListeners[event].forEach((eventHandler, index) => {
13445          if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {
13446            self.eventsListeners[event].splice(index, 1);
13447          }
13448        });
13449      }
13450    });
13451    return self;
13452  },
13453
13454  emit(...args) {
13455    const self = this;
13456    if (!self.eventsListeners || self.destroyed) return self;
13457    if (!self.eventsListeners) return self;
13458    let events;
13459    let data;
13460    let context;
13461
13462    if (typeof args[0] === 'string' || Array.isArray(args[0])) {
13463      events = args[0];
13464      data = args.slice(1, args.length);
13465      context = self;
13466    } else {
13467      events = args[0].events;
13468      data = args[0].data;
13469      context = args[0].context || self;
13470    }
13471
13472    data.unshift(context);
13473    const eventsArray = Array.isArray(events) ? events : events.split(' ');
13474    eventsArray.forEach(event => {
13475      if (self.eventsAnyListeners && self.eventsAnyListeners.length) {
13476        self.eventsAnyListeners.forEach(eventHandler => {
13477          eventHandler.apply(context, [event, ...data]);
13478        });
13479      }
13480
13481      if (self.eventsListeners && self.eventsListeners[event]) {
13482        self.eventsListeners[event].forEach(eventHandler => {
13483          eventHandler.apply(context, data);
13484        });
13485      }
13486    });
13487    return self;
13488  }
13489
13490});
13491
13492/***/ }),
13493
vendor: 4,390 bytes, lines 13494-13607
13494/***/ "./node_modules/swiper/core/events/index.js":
13495/*!**************************************************!*\
13496  !*** ./node_modules/swiper/core/events/index.js ***!
13497  \**************************************************/
13498/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
13499
13500__webpack_require__.r(__webpack_exports__);
13501/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
13502/* harmony import */ var _onTouchStart_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./onTouchStart.js */ "./node_modules/swiper/core/events/onTouchStart.js");
13503/* harmony import */ var _onTouchMove_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./onTouchMove.js */ "./node_modules/swiper/core/events/onTouchMove.js");
13504/* harmony import */ var _onTouchEnd_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./onTouchEnd.js */ "./node_modules/swiper/core/events/onTouchEnd.js");
13505/* harmony import */ var _onResize_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./onResize.js */ "./node_modules/swiper/core/events/onResize.js");
13506/* harmony import */ var _onClick_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./onClick.js */ "./node_modules/swiper/core/events/onClick.js");
13507/* harmony import */ var _onScroll_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./onScroll.js */ "./node_modules/swiper/core/events/onScroll.js");
13508
13509
13510
13511
13512
13513
13514
13515let dummyEventAttached = false;
13516
13517function dummyEventListener() {}
13518
13519const events = (swiper, method) => {
13520  const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
13521  const {
13522    params,
13523    touchEvents,
13524    el,
13525    wrapperEl,
13526    device,
13527    support
13528  } = swiper;
13529  const capture = !!params.nested;
13530  const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';
13531  const swiperMethod = method; // Touch Events
13532
13533  if (!support.touch) {
13534    el[domMethod](touchEvents.start, swiper.onTouchStart, false);
13535    document[domMethod](touchEvents.move, swiper.onTouchMove, capture);
13536    document[domMethod](touchEvents.end, swiper.onTouchEnd, false);
13537  } else {
13538    const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {
13539      passive: true,
13540      capture: false
13541    } : false;
13542    el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);
13543    el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? {
13544      passive: false,
13545      capture
13546    } : capture);
13547    el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);
13548
13549    if (touchEvents.cancel) {
13550      el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);
13551    }
13552  } // Prevent Links Clicks
13553
13554
13555  if (params.preventClicks || params.preventClicksPropagation) {
13556    el[domMethod]('click', swiper.onClick, true);
13557  }
13558
13559  if (params.cssMode) {
13560    wrapperEl[domMethod]('scroll', swiper.onScroll);
13561  } // Resize handler
13562
13563
13564  if (params.updateOnWindowResize) {
13565    swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', _onResize_js__WEBPACK_IMPORTED_MODULE_4__["default"], true);
13566  } else {
13567    swiper[swiperMethod]('observerUpdate', _onResize_js__WEBPACK_IMPORTED_MODULE_4__["default"], true);
13568  }
13569};
13570
13571function attachEvents() {
13572  const swiper = this;
13573  const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
13574  const {
13575    params,
13576    support
13577  } = swiper;
13578  swiper.onTouchStart = _onTouchStart_js__WEBPACK_IMPORTED_MODULE_1__["default"].bind(swiper);
13579  swiper.onTouchMove = _onTouchMove_js__WEBPACK_IMPORTED_MODULE_2__["default"].bind(swiper);
13580  swiper.onTouchEnd = _onTouchEnd_js__WEBPACK_IMPORTED_MODULE_3__["default"].bind(swiper);
13581
13582  if (params.cssMode) {
13583    swiper.onScroll = _onScroll_js__WEBPACK_IMPORTED_MODULE_6__["default"].bind(swiper);
13584  }
13585
13586  swiper.onClick = _onClick_js__WEBPACK_IMPORTED_MODULE_5__["default"].bind(swiper);
13587
13588  if (support.touch && !dummyEventAttached) {
13589    document.addEventListener('touchstart', dummyEventListener);
13590    dummyEventAttached = true;
13591  }
13592
13593  events(swiper, 'on');
13594}
13595
13596function detachEvents() {
13597  const swiper = this;
13598  events(swiper, 'off');
13599}
13600
13601/* harmony default export */ __webpack_exports__["default"] = ({
13602  attachEvents,
13603  detachEvents
13604});
13605
13606/***/ }),
13607
vendor: 859 bytes, lines 13608-13633
13608/***/ "./node_modules/swiper/core/events/onClick.js":
13609/*!****************************************************!*\
13610  !*** ./node_modules/swiper/core/events/onClick.js ***!
13611  \****************************************************/
13612/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
13613
13614__webpack_require__.r(__webpack_exports__);
13615/* harmony export */ __webpack_require__.d(__webpack_exports__, {
13616/* harmony export */   "default": function() { return /* binding */ onClick; }
13617/* harmony export */ });
13618function onClick(e) {
13619  const swiper = this;
13620  if (!swiper.enabled) return;
13621
13622  if (!swiper.allowClick) {
13623    if (swiper.params.preventClicks) e.preventDefault();
13624
13625    if (swiper.params.preventClicksPropagation && swiper.animating) {
13626      e.stopPropagation();
13627      e.stopImmediatePropagation();
13628    }
13629  }
13630}
13631
13632/***/ }),
13633
vendor: 1,633 bytes, lines 13634-13689
13634/***/ "./node_modules/swiper/core/events/onResize.js":
13635/*!*****************************************************!*\
13636  !*** ./node_modules/swiper/core/events/onResize.js ***!
13637  \*****************************************************/
13638/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
13639
13640__webpack_require__.r(__webpack_exports__);
13641/* harmony export */ __webpack_require__.d(__webpack_exports__, {
13642/* harmony export */   "default": function() { return /* binding */ onResize; }
13643/* harmony export */ });
13644function onResize() {
13645  const swiper = this;
13646  const {
13647    params,
13648    el
13649  } = swiper;
13650  if (el && el.offsetWidth === 0) return; // Breakpoints
13651
13652  if (params.breakpoints) {
13653    swiper.setBreakpoint();
13654  } // Save locks
13655
13656
13657  const {
13658    allowSlideNext,
13659    allowSlidePrev,
13660    snapGrid
13661  } = swiper; // Disable locks on resize
13662
13663  swiper.allowSlideNext = true;
13664  swiper.allowSlidePrev = true;
13665  swiper.updateSize();
13666  swiper.updateSlides();
13667  swiper.updateSlidesClasses();
13668
13669  if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {
13670    swiper.slideTo(swiper.slides.length - 1, 0, false, true);
13671  } else {
13672    swiper.slideTo(swiper.activeIndex, 0, false, true);
13673  }
13674
13675  if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {
13676    swiper.autoplay.run();
13677  } // Return locks after resize
13678
13679
13680  swiper.allowSlidePrev = allowSlidePrev;
13681  swiper.allowSlideNext = allowSlideNext;
13682
13683  if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {
13684    swiper.checkOverflow();
13685  }
13686}
13687
13688/***/ }),
13689
vendor: 1,445 bytes, lines 13690-13737
13690/***/ "./node_modules/swiper/core/events/onScroll.js":
13691/*!*****************************************************!*\
13692  !*** ./node_modules/swiper/core/events/onScroll.js ***!
13693  \*****************************************************/
13694/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
13695
13696__webpack_require__.r(__webpack_exports__);
13697/* harmony export */ __webpack_require__.d(__webpack_exports__, {
13698/* harmony export */   "default": function() { return /* binding */ onScroll; }
13699/* harmony export */ });
13700function onScroll() {
13701  const swiper = this;
13702  const {
13703    wrapperEl,
13704    rtlTranslate,
13705    enabled
13706  } = swiper;
13707  if (!enabled) return;
13708  swiper.previousTranslate = swiper.translate;
13709
13710  if (swiper.isHorizontal()) {
13711    swiper.translate = -wrapperEl.scrollLeft;
13712  } else {
13713    swiper.translate = -wrapperEl.scrollTop;
13714  } // eslint-disable-next-line
13715
13716
13717  if (swiper.translate === 0) swiper.translate = 0;
13718  swiper.updateActiveIndex();
13719  swiper.updateSlidesClasses();
13720  let newProgress;
13721  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
13722
13723  if (translatesDiff === 0) {
13724    newProgress = 0;
13725  } else {
13726    newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;
13727  }
13728
13729  if (newProgress !== swiper.progress) {
13730    swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);
13731  }
13732
13733  swiper.emit('setTranslate', swiper.translate, false);
13734}
13735
13736/***/ }),
13737
vendor: 5,522 bytes, lines 13738-13912
13738/***/ "./node_modules/swiper/core/events/onTouchEnd.js":
13739/*!*******************************************************!*\
13740  !*** ./node_modules/swiper/core/events/onTouchEnd.js ***!
13741  \*******************************************************/
13742/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
13743
13744__webpack_require__.r(__webpack_exports__);
13745/* harmony export */ __webpack_require__.d(__webpack_exports__, {
13746/* harmony export */   "default": function() { return /* binding */ onTouchEnd; }
13747/* harmony export */ });
13748/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
13749
13750function onTouchEnd(event) {
13751  const swiper = this;
13752  const data = swiper.touchEventsData;
13753  const {
13754    params,
13755    touches,
13756    rtlTranslate: rtl,
13757    slidesGrid,
13758    enabled
13759  } = swiper;
13760  if (!enabled) return;
13761  let e = event;
13762  if (e.originalEvent) e = e.originalEvent;
13763
13764  if (data.allowTouchCallbacks) {
13765    swiper.emit('touchEnd', e);
13766  }
13767
13768  data.allowTouchCallbacks = false;
13769
13770  if (!data.isTouched) {
13771    if (data.isMoved && params.grabCursor) {
13772      swiper.setGrabCursor(false);
13773    }
13774
13775    data.isMoved = false;
13776    data.startMoving = false;
13777    return;
13778  } // Return Grab Cursor
13779
13780
13781  if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
13782    swiper.setGrabCursor(false);
13783  } // Time diff
13784
13785
13786  const touchEndTime = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.now)();
13787  const timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click
13788
13789  if (swiper.allowClick) {
13790    const pathTree = e.path || e.composedPath && e.composedPath();
13791    swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);
13792    swiper.emit('tap click', e);
13793
13794    if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {
13795      swiper.emit('doubleTap doubleClick', e);
13796    }
13797  }
13798
13799  data.lastClickTime = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.now)();
13800  (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.nextTick)(() => {
13801    if (!swiper.destroyed) swiper.allowClick = true;
13802  });
13803
13804  if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {
13805    data.isTouched = false;
13806    data.isMoved = false;
13807    data.startMoving = false;
13808    return;
13809  }
13810
13811  data.isTouched = false;
13812  data.isMoved = false;
13813  data.startMoving = false;
13814  let currentPos;
13815
13816  if (params.followFinger) {
13817    currentPos = rtl ? swiper.translate : -swiper.translate;
13818  } else {
13819    currentPos = -data.currentTranslate;
13820  }
13821
13822  if (params.cssMode) {
13823    return;
13824  }
13825
13826  if (swiper.params.freeMode && params.freeMode.enabled) {
13827    swiper.freeMode.onTouchEnd({
13828      currentPos
13829    });
13830    return;
13831  } // Find current slide
13832
13833
13834  let stopIndex = 0;
13835  let groupSize = swiper.slidesSizesGrid[0];
13836
13837  for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {
13838    const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;
13839
13840    if (typeof slidesGrid[i + increment] !== 'undefined') {
13841      if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {
13842        stopIndex = i;
13843        groupSize = slidesGrid[i + increment] - slidesGrid[i];
13844      }
13845    } else if (currentPos >= slidesGrid[i]) {
13846      stopIndex = i;
13847      groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];
13848    }
13849  }
13850
13851  let rewindFirstIndex = null;
13852  let rewindLastIndex = null;
13853
13854  if (params.rewind) {
13855    if (swiper.isBeginning) {
13856      rewindLastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;
13857    } else if (swiper.isEnd) {
13858      rewindFirstIndex = 0;
13859    }
13860  } // Find current slide size
13861
13862
13863  const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;
13864  const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;
13865
13866  if (timeDiff > params.longSwipesMs) {
13867    // Long touches
13868    if (!params.longSwipes) {
13869      swiper.slideTo(swiper.activeIndex);
13870      return;
13871    }
13872
13873    if (swiper.swipeDirection === 'next') {
13874      if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);
13875    }
13876
13877    if (swiper.swipeDirection === 'prev') {
13878      if (ratio > 1 - params.longSwipesRatio) {
13879        swiper.slideTo(stopIndex + increment);
13880      } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {
13881        swiper.slideTo(rewindLastIndex);
13882      } else {
13883        swiper.slideTo(stopIndex);
13884      }
13885    }
13886  } else {
13887    // Short swipes
13888    if (!params.shortSwipes) {
13889      swiper.slideTo(swiper.activeIndex);
13890      return;
13891    }
13892
13893    const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);
13894
13895    if (!isNavButtonTarget) {
13896      if (swiper.swipeDirection === 'next') {
13897        swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);
13898      }
13899
13900      if (swiper.swipeDirection === 'prev') {
13901        swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);
13902      }
13903    } else if (e.target === swiper.navigation.nextEl) {
13904      swiper.slideTo(stopIndex + increment);
13905    } else {
13906      swiper.slideTo(stopIndex);
13907    }
13908  }
13909}
13910
13911/***/ }),
13912
vendor: 7,830 bytes, lines 13913-14151
13913/***/ "./node_modules/swiper/core/events/onTouchMove.js":
13914/*!********************************************************!*\
13915  !*** ./node_modules/swiper/core/events/onTouchMove.js ***!
13916  \********************************************************/
13917/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
13918
13919__webpack_require__.r(__webpack_exports__);
13920/* harmony export */ __webpack_require__.d(__webpack_exports__, {
13921/* harmony export */   "default": function() { return /* binding */ onTouchMove; }
13922/* harmony export */ });
13923/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
13924/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
13925/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
13926
13927
13928
13929function onTouchMove(event) {
13930  const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
13931  const swiper = this;
13932  const data = swiper.touchEventsData;
13933  const {
13934    params,
13935    touches,
13936    rtlTranslate: rtl,
13937    enabled
13938  } = swiper;
13939  if (!enabled) return;
13940  let e = event;
13941  if (e.originalEvent) e = e.originalEvent;
13942
13943  if (!data.isTouched) {
13944    if (data.startMoving && data.isScrolling) {
13945      swiper.emit('touchMoveOpposite', e);
13946    }
13947
13948    return;
13949  }
13950
13951  if (data.isTouchEvent && e.type !== 'touchmove') return;
13952  const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);
13953  const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;
13954  const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;
13955
13956  if (e.preventedByNestedSwiper) {
13957    touches.startX = pageX;
13958    touches.startY = pageY;
13959    return;
13960  }
13961
13962  if (!swiper.allowTouchMove) {
13963    if (!(0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(e.target).is(data.focusableElements)) {
13964      swiper.allowClick = false;
13965    }
13966
13967    if (data.isTouched) {
13968      Object.assign(touches, {
13969        startX: pageX,
13970        startY: pageY,
13971        currentX: pageX,
13972        currentY: pageY
13973      });
13974      data.touchStartTime = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.now)();
13975    }
13976
13977    return;
13978  }
13979
13980  if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {
13981    if (swiper.isVertical()) {
13982      // Vertical
13983      if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {
13984        data.isTouched = false;
13985        data.isMoved = false;
13986        return;
13987      }
13988    } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {
13989      return;
13990    }
13991  }
13992
13993  if (data.isTouchEvent && document.activeElement) {
13994    if (e.target === document.activeElement && (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(e.target).is(data.focusableElements)) {
13995      data.isMoved = true;
13996      swiper.allowClick = false;
13997      return;
13998    }
13999  }
14000
14001  if (data.allowTouchCallbacks) {
14002    swiper.emit('touchMove', e);
14003  }
14004
14005  if (e.targetTouches && e.targetTouches.length > 1) return;
14006  touches.currentX = pageX;
14007  touches.currentY = pageY;
14008  const diffX = touches.currentX - touches.startX;
14009  const diffY = touches.currentY - touches.startY;
14010  if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;
14011
14012  if (typeof data.isScrolling === 'undefined') {
14013    let touchAngle;
14014
14015    if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {
14016      data.isScrolling = false;
14017    } else {
14018      // eslint-disable-next-line
14019      if (diffX * diffX + diffY * diffY >= 25) {
14020        touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;
14021        data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;
14022      }
14023    }
14024  }
14025
14026  if (data.isScrolling) {
14027    swiper.emit('touchMoveOpposite', e);
14028  }
14029
14030  if (typeof data.startMoving === 'undefined') {
14031    if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {
14032      data.startMoving = true;
14033    }
14034  }
14035
14036  if (data.isScrolling) {
14037    data.isTouched = false;
14038    return;
14039  }
14040
14041  if (!data.startMoving) {
14042    return;
14043  }
14044
14045  swiper.allowClick = false;
14046
14047  if (!params.cssMode && e.cancelable) {
14048    e.preventDefault();
14049  }
14050
14051  if (params.touchMoveStopPropagation && !params.nested) {
14052    e.stopPropagation();
14053  }
14054
14055  if (!data.isMoved) {
14056    if (params.loop && !params.cssMode) {
14057      swiper.loopFix();
14058    }
14059
14060    data.startTranslate = swiper.getTranslate();
14061    swiper.setTransition(0);
14062
14063    if (swiper.animating) {
14064      swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');
14065    }
14066
14067    data.allowMomentumBounce = false; // Grab Cursor
14068
14069    if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
14070      swiper.setGrabCursor(true);
14071    }
14072
14073    swiper.emit('sliderFirstMove', e);
14074  }
14075
14076  swiper.emit('sliderMove', e);
14077  data.isMoved = true;
14078  let diff = swiper.isHorizontal() ? diffX : diffY;
14079  touches.diff = diff;
14080  diff *= params.touchRatio;
14081  if (rtl) diff = -diff;
14082  swiper.swipeDirection = diff > 0 ? 'prev' : 'next';
14083  data.currentTranslate = diff + data.startTranslate;
14084  let disableParentSwiper = true;
14085  let resistanceRatio = params.resistanceRatio;
14086
14087  if (params.touchReleaseOnEdges) {
14088    resistanceRatio = 0;
14089  }
14090
14091  if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {
14092    disableParentSwiper = false;
14093    if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;
14094  } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {
14095    disableParentSwiper = false;
14096    if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;
14097  }
14098
14099  if (disableParentSwiper) {
14100    e.preventedByNestedSwiper = true;
14101  } // Directions locks
14102
14103
14104  if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {
14105    data.currentTranslate = data.startTranslate;
14106  }
14107
14108  if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {
14109    data.currentTranslate = data.startTranslate;
14110  }
14111
14112  if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {
14113    data.currentTranslate = data.startTranslate;
14114  } // Threshold
14115
14116
14117  if (params.threshold > 0) {
14118    if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {
14119      if (!data.allowThresholdMove) {
14120        data.allowThresholdMove = true;
14121        touches.startX = touches.currentX;
14122        touches.startY = touches.currentY;
14123        data.currentTranslate = data.startTranslate;
14124        touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;
14125        return;
14126      }
14127    } else {
14128      data.currentTranslate = data.startTranslate;
14129      return;
14130    }
14131  }
14132
14133  if (!params.followFinger || params.cssMode) return; // Update active index in free mode
14134
14135  if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {
14136    swiper.updateActiveIndex();
14137    swiper.updateSlidesClasses();
14138  }
14139
14140  if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {
14141    swiper.freeMode.onTouchMove();
14142  } // Update progress
14143
14144
14145  swiper.updateProgress(data.currentTranslate); // Update translate
14146
14147  swiper.setTranslate(data.currentTranslate);
14148}
14149
14150/***/ }),
14151
vendor: 5,751 bytes, lines 14152-14299
14152/***/ "./node_modules/swiper/core/events/onTouchStart.js":
14153/*!*********************************************************!*\
14154  !*** ./node_modules/swiper/core/events/onTouchStart.js ***!
14155  \*********************************************************/
14156/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
14157
14158__webpack_require__.r(__webpack_exports__);
14159/* harmony export */ __webpack_require__.d(__webpack_exports__, {
14160/* harmony export */   "default": function() { return /* binding */ onTouchStart; }
14161/* harmony export */ });
14162/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
14163/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
14164/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
14165
14166
14167 // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd
14168
14169function closestElement(selector, base = this) {
14170  function __closestFrom(el) {
14171    if (!el || el === (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)() || el === (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)()) return null;
14172    if (el.assignedSlot) el = el.assignedSlot;
14173    const found = el.closest(selector);
14174
14175    if (!found && !el.getRootNode) {
14176      return null;
14177    }
14178
14179    return found || __closestFrom(el.getRootNode().host);
14180  }
14181
14182  return __closestFrom(base);
14183}
14184
14185function onTouchStart(event) {
14186  const swiper = this;
14187  const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
14188  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
14189  const data = swiper.touchEventsData;
14190  const {
14191    params,
14192    touches,
14193    enabled
14194  } = swiper;
14195  if (!enabled) return;
14196
14197  if (swiper.animating && params.preventInteractionOnTransition) {
14198    return;
14199  }
14200
14201  if (!swiper.animating && params.cssMode && params.loop) {
14202    swiper.loopFix();
14203  }
14204
14205  let e = event;
14206  if (e.originalEvent) e = e.originalEvent;
14207  let $targetEl = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(e.target);
14208
14209  if (params.touchEventsTarget === 'wrapper') {
14210    if (!$targetEl.closest(swiper.wrapperEl).length) return;
14211  }
14212
14213  data.isTouchEvent = e.type === 'touchstart';
14214  if (!data.isTouchEvent && 'which' in e && e.which === 3) return;
14215  if (!data.isTouchEvent && 'button' in e && e.button > 0) return;
14216  if (data.isTouched && data.isMoved) return; // change target el for shadow root component
14217
14218  const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; // eslint-disable-next-line
14219
14220  const eventPath = event.composedPath ? event.composedPath() : event.path;
14221
14222  if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {
14223    $targetEl = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(eventPath[0]);
14224  }
14225
14226  const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;
14227  const isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element
14228
14229  if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, $targetEl[0]) : $targetEl.closest(noSwipingSelector)[0])) {
14230    swiper.allowClick = true;
14231    return;
14232  }
14233
14234  if (params.swipeHandler) {
14235    if (!$targetEl.closest(params.swipeHandler)[0]) return;
14236  }
14237
14238  touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
14239  touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
14240  const startX = touches.currentX;
14241  const startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore
14242
14243  const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;
14244  const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;
14245
14246  if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {
14247    if (edgeSwipeDetection === 'prevent') {
14248      event.preventDefault();
14249    } else {
14250      return;
14251    }
14252  }
14253
14254  Object.assign(data, {
14255    isTouched: true,
14256    isMoved: false,
14257    allowTouchCallbacks: true,
14258    isScrolling: undefined,
14259    startMoving: undefined
14260  });
14261  touches.startX = startX;
14262  touches.startY = startY;
14263  data.touchStartTime = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.now)();
14264  swiper.allowClick = true;
14265  swiper.updateSize();
14266  swiper.swipeDirection = undefined;
14267  if (params.threshold > 0) data.allowThresholdMove = false;
14268
14269  if (e.type !== 'touchstart') {
14270    let preventDefault = true;
14271
14272    if ($targetEl.is(data.focusableElements)) {
14273      preventDefault = false;
14274
14275      if ($targetEl[0].nodeName === 'SELECT') {
14276        data.isTouched = false;
14277      }
14278    }
14279
14280    if (document.activeElement && (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) {
14281      document.activeElement.blur();
14282    }
14283
14284    const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;
14285
14286    if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {
14287      e.preventDefault();
14288    }
14289  }
14290
14291  if (swiper.params.freeMode && swiper.params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {
14292    swiper.freeMode.onTouchStart();
14293  }
14294
14295  swiper.emit('touchStart', e);
14296}
14297
14298/***/ }),
14299
vendor: 985 bytes, lines 14300-14317
14300/***/ "./node_modules/swiper/core/grab-cursor/index.js":
14301/*!*******************************************************!*\
14302  !*** ./node_modules/swiper/core/grab-cursor/index.js ***!
14303  \*******************************************************/
14304/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
14305
14306__webpack_require__.r(__webpack_exports__);
14307/* harmony import */ var _setGrabCursor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./setGrabCursor.js */ "./node_modules/swiper/core/grab-cursor/setGrabCursor.js");
14308/* harmony import */ var _unsetGrabCursor_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./unsetGrabCursor.js */ "./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js");
14309
14310
14311/* harmony default export */ __webpack_exports__["default"] = ({
14312  setGrabCursor: _setGrabCursor_js__WEBPACK_IMPORTED_MODULE_0__["default"],
14313  unsetGrabCursor: _unsetGrabCursor_js__WEBPACK_IMPORTED_MODULE_1__["default"]
14314});
14315
14316/***/ }),
14317
vendor: 973 bytes, lines 14318-14337
14318/***/ "./node_modules/swiper/core/grab-cursor/setGrabCursor.js":
14319/*!***************************************************************!*\
14320  !*** ./node_modules/swiper/core/grab-cursor/setGrabCursor.js ***!
14321  \***************************************************************/
14322/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
14323
14324__webpack_require__.r(__webpack_exports__);
14325/* harmony export */ __webpack_require__.d(__webpack_exports__, {
14326/* harmony export */   "default": function() { return /* binding */ setGrabCursor; }
14327/* harmony export */ });
14328function setGrabCursor(moving) {
14329  const swiper = this;
14330  if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;
14331  const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;
14332  el.style.cursor = 'move';
14333  el.style.cursor = moving ? 'grabbing' : 'grab';
14334}
14335
14336/***/ }),
14337
vendor: 886 bytes, lines 14338-14359
14338/***/ "./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js":
14339/*!*****************************************************************!*\
14340  !*** ./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js ***!
14341  \*****************************************************************/
14342/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
14343
14344__webpack_require__.r(__webpack_exports__);
14345/* harmony export */ __webpack_require__.d(__webpack_exports__, {
14346/* harmony export */   "default": function() { return /* binding */ unsetGrabCursor; }
14347/* harmony export */ });
14348function unsetGrabCursor() {
14349  const swiper = this;
14350
14351  if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {
14352    return;
14353  }
14354
14355  swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';
14356}
14357
14358/***/ }),
14359
vendor: 925 bytes, lines 14360-14377
14360/***/ "./node_modules/swiper/core/images/index.js":
14361/*!**************************************************!*\
14362  !*** ./node_modules/swiper/core/images/index.js ***!
14363  \**************************************************/
14364/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
14365
14366__webpack_require__.r(__webpack_exports__);
14367/* harmony import */ var _loadImage_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./loadImage.js */ "./node_modules/swiper/core/images/loadImage.js");
14368/* harmony import */ var _preloadImages_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./preloadImages.js */ "./node_modules/swiper/core/images/preloadImages.js");
14369
14370
14371/* harmony default export */ __webpack_exports__["default"] = ({
14372  loadImage: _loadImage_js__WEBPACK_IMPORTED_MODULE_0__["default"],
14373  preloadImages: _preloadImages_js__WEBPACK_IMPORTED_MODULE_1__["default"]
14374});
14375
14376/***/ }),
14377
vendor: 1,650 bytes, lines 14378-14429
14378/***/ "./node_modules/swiper/core/images/loadImage.js":
14379/*!******************************************************!*\
14380  !*** ./node_modules/swiper/core/images/loadImage.js ***!
14381  \******************************************************/
14382/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
14383
14384__webpack_require__.r(__webpack_exports__);
14385/* harmony export */ __webpack_require__.d(__webpack_exports__, {
14386/* harmony export */   "default": function() { return /* binding */ loadImage; }
14387/* harmony export */ });
14388/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
14389/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
14390
14391
14392function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {
14393  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
14394  let image;
14395
14396  function onReady() {
14397    if (callback) callback();
14398  }
14399
14400  const isPicture = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(imageEl).parent('picture')[0];
14401
14402  if (!isPicture && (!imageEl.complete || !checkForComplete)) {
14403    if (src) {
14404      image = new window.Image();
14405      image.onload = onReady;
14406      image.onerror = onReady;
14407
14408      if (sizes) {
14409        image.sizes = sizes;
14410      }
14411
14412      if (srcset) {
14413        image.srcset = srcset;
14414      }
14415
14416      if (src) {
14417        image.src = src;
14418      }
14419    } else {
14420      onReady();
14421    }
14422  } else {
14423    // image already loaded...
14424    onReady();
14425  }
14426}
14427
14428/***/ }),
14429
vendor: 1,344 bytes, lines 14430-14461
14430/***/ "./node_modules/swiper/core/images/preloadImages.js":
14431/*!**********************************************************!*\
14432  !*** ./node_modules/swiper/core/images/preloadImages.js ***!
14433  \**********************************************************/
14434/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
14435
14436__webpack_require__.r(__webpack_exports__);
14437/* harmony export */ __webpack_require__.d(__webpack_exports__, {
14438/* harmony export */   "default": function() { return /* binding */ preloadImages; }
14439/* harmony export */ });
14440function preloadImages() {
14441  const swiper = this;
14442  swiper.imagesToLoad = swiper.$el.find('img');
14443
14444  function onReady() {
14445    if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;
14446    if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;
14447
14448    if (swiper.imagesLoaded === swiper.imagesToLoad.length) {
14449      if (swiper.params.updateOnImagesReady) swiper.update();
14450      swiper.emit('imagesReady');
14451    }
14452  }
14453
14454  for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {
14455    const imageEl = swiper.imagesToLoad[i];
14456    swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);
14457  }
14458}
14459
14460/***/ }),
14461
vendor: 1,128 bytes, lines 14462-14482
14462/***/ "./node_modules/swiper/core/loop/index.js":
14463/*!************************************************!*\
14464  !*** ./node_modules/swiper/core/loop/index.js ***!
14465  \************************************************/
14466/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
14467
14468__webpack_require__.r(__webpack_exports__);
14469/* harmony import */ var _loopCreate_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./loopCreate.js */ "./node_modules/swiper/core/loop/loopCreate.js");
14470/* harmony import */ var _loopFix_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./loopFix.js */ "./node_modules/swiper/core/loop/loopFix.js");
14471/* harmony import */ var _loopDestroy_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./loopDestroy.js */ "./node_modules/swiper/core/loop/loopDestroy.js");
14472
14473
14474
14475/* harmony default export */ __webpack_exports__["default"] = ({
14476  loopCreate: _loopCreate_js__WEBPACK_IMPORTED_MODULE_0__["default"],
14477  loopFix: _loopFix_js__WEBPACK_IMPORTED_MODULE_1__["default"],
14478  loopDestroy: _loopDestroy_js__WEBPACK_IMPORTED_MODULE_2__["default"]
14479});
14480
14481/***/ }),
14482
vendor: 3,185 bytes, lines 14483-14553
14483/***/ "./node_modules/swiper/core/loop/loopCreate.js":
14484/*!*****************************************************!*\
14485  !*** ./node_modules/swiper/core/loop/loopCreate.js ***!
14486  \*****************************************************/
14487/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
14488
14489__webpack_require__.r(__webpack_exports__);
14490/* harmony export */ __webpack_require__.d(__webpack_exports__, {
14491/* harmony export */   "default": function() { return /* binding */ loopCreate; }
14492/* harmony export */ });
14493/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
14494/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
14495
14496
14497function loopCreate() {
14498  const swiper = this;
14499  const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
14500  const {
14501    params,
14502    $wrapperEl
14503  } = swiper; // Remove duplicated slides
14504
14505  const $selector = $wrapperEl.children().length > 0 ? (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])($wrapperEl.children()[0].parentNode) : $wrapperEl;
14506  $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();
14507  let slides = $selector.children(`.${params.slideClass}`);
14508
14509  if (params.loopFillGroupWithBlank) {
14510    const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;
14511
14512    if (blankSlidesNum !== params.slidesPerGroup) {
14513      for (let i = 0; i < blankSlidesNum; i += 1) {
14514        const blankNode = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);
14515        $selector.append(blankNode);
14516      }
14517
14518      slides = $selector.children(`.${params.slideClass}`);
14519    }
14520  }
14521
14522  if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;
14523  swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));
14524  swiper.loopedSlides += params.loopAdditionalSlides;
14525
14526  if (swiper.loopedSlides > slides.length && swiper.params.loopedSlidesLimit) {
14527    swiper.loopedSlides = slides.length;
14528  }
14529
14530  const prependSlides = [];
14531  const appendSlides = [];
14532  slides.each((el, index) => {
14533    const slide = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(el);
14534    slide.attr('data-swiper-slide-index', index);
14535  });
14536
14537  for (let i = 0; i < swiper.loopedSlides; i += 1) {
14538    const index = i - Math.floor(i / slides.length) * slides.length;
14539    appendSlides.push(slides.eq(index)[0]);
14540    prependSlides.unshift(slides.eq(slides.length - index - 1)[0]);
14541  }
14542
14543  for (let i = 0; i < appendSlides.length; i += 1) {
14544    $selector.append((0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));
14545  }
14546
14547  for (let i = prependSlides.length - 1; i >= 0; i -= 1) {
14548    $selector.prepend((0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));
14549  }
14550}
14551
14552/***/ }),
14553
vendor: 859 bytes, lines 14554-14576
14554/***/ "./node_modules/swiper/core/loop/loopDestroy.js":
14555/*!******************************************************!*\
14556  !*** ./node_modules/swiper/core/loop/loopDestroy.js ***!
14557  \******************************************************/
14558/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
14559
14560__webpack_require__.r(__webpack_exports__);
14561/* harmony export */ __webpack_require__.d(__webpack_exports__, {
14562/* harmony export */   "default": function() { return /* binding */ loopDestroy; }
14563/* harmony export */ });
14564function loopDestroy() {
14565  const swiper = this;
14566  const {
14567    $wrapperEl,
14568    params,
14569    slides
14570  } = swiper;
14571  $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();
14572  slides.removeAttr('data-swiper-slide-index');
14573}
14574
14575/***/ }),
14576
vendor: 1,797 bytes, lines 14577-14630
14577/***/ "./node_modules/swiper/core/loop/loopFix.js":
14578/*!**************************************************!*\
14579  !*** ./node_modules/swiper/core/loop/loopFix.js ***!
14580  \**************************************************/
14581/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
14582
14583__webpack_require__.r(__webpack_exports__);
14584/* harmony export */ __webpack_require__.d(__webpack_exports__, {
14585/* harmony export */   "default": function() { return /* binding */ loopFix; }
14586/* harmony export */ });
14587function loopFix() {
14588  const swiper = this;
14589  swiper.emit('beforeLoopFix');
14590  const {
14591    activeIndex,
14592    slides,
14593    loopedSlides,
14594    allowSlidePrev,
14595    allowSlideNext,
14596    snapGrid,
14597    rtlTranslate: rtl
14598  } = swiper;
14599  let newIndex;
14600  swiper.allowSlidePrev = true;
14601  swiper.allowSlideNext = true;
14602  const snapTranslate = -snapGrid[activeIndex];
14603  const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding
14604
14605  if (activeIndex < loopedSlides) {
14606    newIndex = slides.length - loopedSlides * 3 + activeIndex;
14607    newIndex += loopedSlides;
14608    const slideChanged = swiper.slideTo(newIndex, 0, false, true);
14609
14610    if (slideChanged && diff !== 0) {
14611      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
14612    }
14613  } else if (activeIndex >= slides.length - loopedSlides) {
14614    // Fix For Positive Oversliding
14615    newIndex = -slides.length + activeIndex + loopedSlides;
14616    newIndex += loopedSlides;
14617    const slideChanged = swiper.slideTo(newIndex, 0, false, true);
14618
14619    if (slideChanged && diff !== 0) {
14620      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
14621    }
14622  }
14623
14624  swiper.allowSlidePrev = allowSlidePrev;
14625  swiper.allowSlideNext = allowSlideNext;
14626  swiper.emit('loopFix');
14627}
14628
14629/***/ }),
14630
vendor: 1,927 bytes, lines 14631-14682
14631/***/ "./node_modules/swiper/core/moduleExtendParams.js":
14632/*!********************************************************!*\
14633  !*** ./node_modules/swiper/core/moduleExtendParams.js ***!
14634  \********************************************************/
14635/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
14636
14637__webpack_require__.r(__webpack_exports__);
14638/* harmony export */ __webpack_require__.d(__webpack_exports__, {
14639/* harmony export */   "default": function() { return /* binding */ moduleExtendParams; }
14640/* harmony export */ });
14641/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
14642
14643function moduleExtendParams(params, allModulesParams) {
14644  return function extendParams(obj = {}) {
14645    const moduleParamName = Object.keys(obj)[0];
14646    const moduleParams = obj[moduleParamName];
14647
14648    if (typeof moduleParams !== 'object' || moduleParams === null) {
14649      (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.extend)(allModulesParams, obj);
14650      return;
14651    }
14652
14653    if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {
14654      params[moduleParamName] = {
14655        auto: true
14656      };
14657    }
14658
14659    if (!(moduleParamName in params && 'enabled' in moduleParams)) {
14660      (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.extend)(allModulesParams, obj);
14661      return;
14662    }
14663
14664    if (params[moduleParamName] === true) {
14665      params[moduleParamName] = {
14666        enabled: true
14667      };
14668    }
14669
14670    if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {
14671      params[moduleParamName].enabled = true;
14672    }
14673
14674    if (!params[moduleParamName]) params[moduleParamName] = {
14675      enabled: false
14676    };
14677    (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.extend)(allModulesParams, obj);
14678  };
14679}
14680
14681/***/ }),
14682
vendor: 2,778 bytes, lines 14683-14771
14683/***/ "./node_modules/swiper/core/modules/observer/observer.js":
14684/*!***************************************************************!*\
14685  !*** ./node_modules/swiper/core/modules/observer/observer.js ***!
14686  \***************************************************************/
14687/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
14688
14689__webpack_require__.r(__webpack_exports__);
14690/* harmony export */ __webpack_require__.d(__webpack_exports__, {
14691/* harmony export */   "default": function() { return /* binding */ Observer; }
14692/* harmony export */ });
14693/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
14694
14695function Observer({
14696  swiper,
14697  extendParams,
14698  on,
14699  emit
14700}) {
14701  const observers = [];
14702  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
14703
14704  const attach = (target, options = {}) => {
14705    const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;
14706    const observer = new ObserverFunc(mutations => {
14707      // The observerUpdate event should only be triggered
14708      // once despite the number of mutations.  Additional
14709      // triggers are redundant and are very costly
14710      if (mutations.length === 1) {
14711        emit('observerUpdate', mutations[0]);
14712        return;
14713      }
14714
14715      const observerUpdate = function observerUpdate() {
14716        emit('observerUpdate', mutations[0]);
14717      };
14718
14719      if (window.requestAnimationFrame) {
14720        window.requestAnimationFrame(observerUpdate);
14721      } else {
14722        window.setTimeout(observerUpdate, 0);
14723      }
14724    });
14725    observer.observe(target, {
14726      attributes: typeof options.attributes === 'undefined' ? true : options.attributes,
14727      childList: typeof options.childList === 'undefined' ? true : options.childList,
14728      characterData: typeof options.characterData === 'undefined' ? true : options.characterData
14729    });
14730    observers.push(observer);
14731  };
14732
14733  const init = () => {
14734    if (!swiper.params.observer) return;
14735
14736    if (swiper.params.observeParents) {
14737      const containerParents = swiper.$el.parents();
14738
14739      for (let i = 0; i < containerParents.length; i += 1) {
14740        attach(containerParents[i]);
14741      }
14742    } // Observe container
14743
14744
14745    attach(swiper.$el[0], {
14746      childList: swiper.params.observeSlideChildren
14747    }); // Observe wrapper
14748
14749    attach(swiper.$wrapperEl[0], {
14750      attributes: false
14751    });
14752  };
14753
14754  const destroy = () => {
14755    observers.forEach(observer => {
14756      observer.disconnect();
14757    });
14758    observers.splice(0, observers.length);
14759  };
14760
14761  extendParams({
14762    observer: false,
14763    observeParents: false,
14764    observeSlideChildren: false
14765  });
14766  on('init', init);
14767  on('destroy', destroy);
14768}
14769
14770/***/ }),
14771
vendor: 2,808 bytes, lines 14772-14860
14772/***/ "./node_modules/swiper/core/modules/resize/resize.js":
14773/*!***********************************************************!*\
14774  !*** ./node_modules/swiper/core/modules/resize/resize.js ***!
14775  \***********************************************************/
14776/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
14777
14778__webpack_require__.r(__webpack_exports__);
14779/* harmony export */ __webpack_require__.d(__webpack_exports__, {
14780/* harmony export */   "default": function() { return /* binding */ Resize; }
14781/* harmony export */ });
14782/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
14783
14784function Resize({
14785  swiper,
14786  on,
14787  emit
14788}) {
14789  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
14790  let observer = null;
14791  let animationFrame = null;
14792
14793  const resizeHandler = () => {
14794    if (!swiper || swiper.destroyed || !swiper.initialized) return;
14795    emit('beforeResize');
14796    emit('resize');
14797  };
14798
14799  const createObserver = () => {
14800    if (!swiper || swiper.destroyed || !swiper.initialized) return;
14801    observer = new ResizeObserver(entries => {
14802      animationFrame = window.requestAnimationFrame(() => {
14803        const {
14804          width,
14805          height
14806        } = swiper;
14807        let newWidth = width;
14808        let newHeight = height;
14809        entries.forEach(({
14810          contentBoxSize,
14811          contentRect,
14812          target
14813        }) => {
14814          if (target && target !== swiper.el) return;
14815          newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;
14816          newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;
14817        });
14818
14819        if (newWidth !== width || newHeight !== height) {
14820          resizeHandler();
14821        }
14822      });
14823    });
14824    observer.observe(swiper.el);
14825  };
14826
14827  const removeObserver = () => {
14828    if (animationFrame) {
14829      window.cancelAnimationFrame(animationFrame);
14830    }
14831
14832    if (observer && observer.unobserve && swiper.el) {
14833      observer.unobserve(swiper.el);
14834      observer = null;
14835    }
14836  };
14837
14838  const orientationChangeHandler = () => {
14839    if (!swiper || swiper.destroyed || !swiper.initialized) return;
14840    emit('orientationchange');
14841  };
14842
14843  on('init', () => {
14844    if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {
14845      createObserver();
14846      return;
14847    }
14848
14849    window.addEventListener('resize', resizeHandler);
14850    window.addEventListener('orientationchange', orientationChangeHandler);
14851  });
14852  on('destroy', () => {
14853    removeObserver();
14854    window.removeEventListener('resize', resizeHandler);
14855    window.removeEventListener('orientationchange', orientationChangeHandler);
14856  });
14857}
14858
14859/***/ }),
14860
vendor: 2,134 bytes, lines 14861-14893
14861/***/ "./node_modules/swiper/core/slide/index.js":
14862/*!*************************************************!*\
14863  !*** ./node_modules/swiper/core/slide/index.js ***!
14864  \*************************************************/
14865/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
14866
14867__webpack_require__.r(__webpack_exports__);
14868/* harmony import */ var _slideTo_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./slideTo.js */ "./node_modules/swiper/core/slide/slideTo.js");
14869/* harmony import */ var _slideToLoop_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./slideToLoop.js */ "./node_modules/swiper/core/slide/slideToLoop.js");
14870/* harmony import */ var _slideNext_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./slideNext.js */ "./node_modules/swiper/core/slide/slideNext.js");
14871/* harmony import */ var _slidePrev_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./slidePrev.js */ "./node_modules/swiper/core/slide/slidePrev.js");
14872/* harmony import */ var _slideReset_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./slideReset.js */ "./node_modules/swiper/core/slide/slideReset.js");
14873/* harmony import */ var _slideToClosest_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./slideToClosest.js */ "./node_modules/swiper/core/slide/slideToClosest.js");
14874/* harmony import */ var _slideToClickedSlide_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./slideToClickedSlide.js */ "./node_modules/swiper/core/slide/slideToClickedSlide.js");
14875
14876
14877
14878
14879
14880
14881
14882/* harmony default export */ __webpack_exports__["default"] = ({
14883  slideTo: _slideTo_js__WEBPACK_IMPORTED_MODULE_0__["default"],
14884  slideToLoop: _slideToLoop_js__WEBPACK_IMPORTED_MODULE_1__["default"],
14885  slideNext: _slideNext_js__WEBPACK_IMPORTED_MODULE_2__["default"],
14886  slidePrev: _slidePrev_js__WEBPACK_IMPORTED_MODULE_3__["default"],
14887  slideReset: _slideReset_js__WEBPACK_IMPORTED_MODULE_4__["default"],
14888  slideToClosest: _slideToClosest_js__WEBPACK_IMPORTED_MODULE_5__["default"],
14889  slideToClickedSlide: _slideToClickedSlide_js__WEBPACK_IMPORTED_MODULE_6__["default"]
14890});
14891
14892/***/ }),
14893
vendor: 1,484 bytes, lines 14894-14936
14894/***/ "./node_modules/swiper/core/slide/slideNext.js":
14895/*!*****************************************************!*\
14896  !*** ./node_modules/swiper/core/slide/slideNext.js ***!
14897  \*****************************************************/
14898/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
14899
14900__webpack_require__.r(__webpack_exports__);
14901/* harmony export */ __webpack_require__.d(__webpack_exports__, {
14902/* harmony export */   "default": function() { return /* binding */ slideNext; }
14903/* harmony export */ });
14904/* eslint no-unused-vars: "off" */
14905function slideNext(speed = this.params.speed, runCallbacks = true, internal) {
14906  const swiper = this;
14907  const {
14908    animating,
14909    enabled,
14910    params
14911  } = swiper;
14912  if (!enabled) return swiper;
14913  let perGroup = params.slidesPerGroup;
14914
14915  if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {
14916    perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);
14917  }
14918
14919  const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;
14920
14921  if (params.loop) {
14922    if (animating && params.loopPreventsSlide) return false;
14923    swiper.loopFix(); // eslint-disable-next-line
14924
14925    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
14926  }
14927
14928  if (params.rewind && swiper.isEnd) {
14929    return swiper.slideTo(0, speed, runCallbacks, internal);
14930  }
14931
14932  return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);
14933}
14934
14935/***/ }),
14936
vendor: 2,559 bytes, lines 14937-15013
14937/***/ "./node_modules/swiper/core/slide/slidePrev.js":
14938/*!*****************************************************!*\
14939  !*** ./node_modules/swiper/core/slide/slidePrev.js ***!
14940  \*****************************************************/
14941/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
14942
14943__webpack_require__.r(__webpack_exports__);
14944/* harmony export */ __webpack_require__.d(__webpack_exports__, {
14945/* harmony export */   "default": function() { return /* binding */ slidePrev; }
14946/* harmony export */ });
14947/* eslint no-unused-vars: "off" */
14948function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {
14949  const swiper = this;
14950  const {
14951    params,
14952    animating,
14953    snapGrid,
14954    slidesGrid,
14955    rtlTranslate,
14956    enabled
14957  } = swiper;
14958  if (!enabled) return swiper;
14959
14960  if (params.loop) {
14961    if (animating && params.loopPreventsSlide) return false;
14962    swiper.loopFix(); // eslint-disable-next-line
14963
14964    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
14965  }
14966
14967  const translate = rtlTranslate ? swiper.translate : -swiper.translate;
14968
14969  function normalize(val) {
14970    if (val < 0) return -Math.floor(Math.abs(val));
14971    return Math.floor(val);
14972  }
14973
14974  const normalizedTranslate = normalize(translate);
14975  const normalizedSnapGrid = snapGrid.map(val => normalize(val));
14976  let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];
14977
14978  if (typeof prevSnap === 'undefined' && params.cssMode) {
14979    let prevSnapIndex;
14980    snapGrid.forEach((snap, snapIndex) => {
14981      if (normalizedTranslate >= snap) {
14982        // prevSnap = snap;
14983        prevSnapIndex = snapIndex;
14984      }
14985    });
14986
14987    if (typeof prevSnapIndex !== 'undefined') {
14988      prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];
14989    }
14990  }
14991
14992  let prevIndex = 0;
14993
14994  if (typeof prevSnap !== 'undefined') {
14995    prevIndex = slidesGrid.indexOf(prevSnap);
14996    if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;
14997
14998    if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {
14999      prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;
15000      prevIndex = Math.max(prevIndex, 0);
15001    }
15002  }
15003
15004  if (params.rewind && swiper.isBeginning) {
15005    const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;
15006    return swiper.slideTo(lastIndex, speed, runCallbacks, internal);
15007  }
15008
15009  return swiper.slideTo(prevIndex, speed, runCallbacks, internal);
15010}
15011
15012/***/ }),
15013
vendor: 778 bytes, lines 15014-15031
15014/***/ "./node_modules/swiper/core/slide/slideReset.js":
15015/*!******************************************************!*\
15016  !*** ./node_modules/swiper/core/slide/slideReset.js ***!
15017  \******************************************************/
15018/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
15019
15020__webpack_require__.r(__webpack_exports__);
15021/* harmony export */ __webpack_require__.d(__webpack_exports__, {
15022/* harmony export */   "default": function() { return /* binding */ slideReset; }
15023/* harmony export */ });
15024/* eslint no-unused-vars: "off" */
15025function slideReset(speed = this.params.speed, runCallbacks = true, internal) {
15026  const swiper = this;
15027  return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);
15028}
15029
15030/***/ }),
15031
vendor: 6,488 bytes, lines 15032-15225
15032/***/ "./node_modules/swiper/core/slide/slideTo.js":
15033/*!***************************************************!*\
15034  !*** ./node_modules/swiper/core/slide/slideTo.js ***!
15035  \***************************************************/
15036/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
15037
15038__webpack_require__.r(__webpack_exports__);
15039/* harmony export */ __webpack_require__.d(__webpack_exports__, {
15040/* harmony export */   "default": function() { return /* binding */ slideTo; }
15041/* harmony export */ });
15042/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
15043
15044function slideTo(index = 0, speed = this.params.speed, runCallbacks = true, internal, initial) {
15045  if (typeof index !== 'number' && typeof index !== 'string') {
15046    throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`);
15047  }
15048
15049  if (typeof index === 'string') {
15050    /**
15051     * The `index` argument converted from `string` to `number`.
15052     * @type {number}
15053     */
15054    const indexAsNumber = parseInt(index, 10);
15055    /**
15056     * Determines whether the `index` argument is a valid `number`
15057     * after being converted from the `string` type.
15058     * @type {boolean}
15059     */
15060
15061    const isValidNumber = isFinite(indexAsNumber);
15062
15063    if (!isValidNumber) {
15064      throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);
15065    } // Knowing that the converted `index` is a valid number,
15066    // we can update the original argument's value.
15067
15068
15069    index = indexAsNumber;
15070  }
15071
15072  const swiper = this;
15073  let slideIndex = index;
15074  if (slideIndex < 0) slideIndex = 0;
15075  const {
15076    params,
15077    snapGrid,
15078    slidesGrid,
15079    previousIndex,
15080    activeIndex,
15081    rtlTranslate: rtl,
15082    wrapperEl,
15083    enabled
15084  } = swiper;
15085
15086  if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {
15087    return false;
15088  }
15089
15090  const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);
15091  let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);
15092  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
15093  const translate = -snapGrid[snapIndex]; // Normalize slideIndex
15094
15095  if (params.normalizeSlideIndex) {
15096    for (let i = 0; i < slidesGrid.length; i += 1) {
15097      const normalizedTranslate = -Math.floor(translate * 100);
15098      const normalizedGrid = Math.floor(slidesGrid[i] * 100);
15099      const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);
15100
15101      if (typeof slidesGrid[i + 1] !== 'undefined') {
15102        if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {
15103          slideIndex = i;
15104        } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {
15105          slideIndex = i + 1;
15106        }
15107      } else if (normalizedTranslate >= normalizedGrid) {
15108        slideIndex = i;
15109      }
15110    }
15111  } // Directions locks
15112
15113
15114  if (swiper.initialized && slideIndex !== activeIndex) {
15115    if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {
15116      return false;
15117    }
15118
15119    if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {
15120      if ((activeIndex || 0) !== slideIndex) return false;
15121    }
15122  }
15123
15124  if (slideIndex !== (previousIndex || 0) && runCallbacks) {
15125    swiper.emit('beforeSlideChangeStart');
15126  } // Update progress
15127
15128
15129  swiper.updateProgress(translate);
15130  let direction;
15131  if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index
15132
15133  if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {
15134    swiper.updateActiveIndex(slideIndex); // Update Height
15135
15136    if (params.autoHeight) {
15137      swiper.updateAutoHeight();
15138    }
15139
15140    swiper.updateSlidesClasses();
15141
15142    if (params.effect !== 'slide') {
15143      swiper.setTranslate(translate);
15144    }
15145
15146    if (direction !== 'reset') {
15147      swiper.transitionStart(runCallbacks, direction);
15148      swiper.transitionEnd(runCallbacks, direction);
15149    }
15150
15151    return false;
15152  }
15153
15154  if (params.cssMode) {
15155    const isH = swiper.isHorizontal();
15156    const t = rtl ? translate : -translate;
15157
15158    if (speed === 0) {
15159      const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
15160
15161      if (isVirtual) {
15162        swiper.wrapperEl.style.scrollSnapType = 'none';
15163        swiper._immediateVirtual = true;
15164      }
15165
15166      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;
15167
15168      if (isVirtual) {
15169        requestAnimationFrame(() => {
15170          swiper.wrapperEl.style.scrollSnapType = '';
15171          swiper._swiperImmediateVirtual = false;
15172        });
15173      }
15174    } else {
15175      if (!swiper.support.smoothScroll) {
15176        (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.animateCSSModeScroll)({
15177          swiper,
15178          targetPosition: t,
15179          side: isH ? 'left' : 'top'
15180        });
15181        return true;
15182      }
15183
15184      wrapperEl.scrollTo({
15185        [isH ? 'left' : 'top']: t,
15186        behavior: 'smooth'
15187      });
15188    }
15189
15190    return true;
15191  }
15192
15193  swiper.setTransition(speed);
15194  swiper.setTranslate(translate);
15195  swiper.updateActiveIndex(slideIndex);
15196  swiper.updateSlidesClasses();
15197  swiper.emit('beforeTransitionStart', speed, internal);
15198  swiper.transitionStart(runCallbacks, direction);
15199
15200  if (speed === 0) {
15201    swiper.transitionEnd(runCallbacks, direction);
15202  } else if (!swiper.animating) {
15203    swiper.animating = true;
15204
15205    if (!swiper.onSlideToWrapperTransitionEnd) {
15206      swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {
15207        if (!swiper || swiper.destroyed) return;
15208        if (e.target !== this) return;
15209        swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
15210        swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
15211        swiper.onSlideToWrapperTransitionEnd = null;
15212        delete swiper.onSlideToWrapperTransitionEnd;
15213        swiper.transitionEnd(runCallbacks, direction);
15214      };
15215    }
15216
15217    swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
15218    swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
15219  }
15220
15221  return true;
15222}
15223
15224/***/ }),
15225
vendor: 2,442 bytes, lines 15226-15279
15226/***/ "./node_modules/swiper/core/slide/slideToClickedSlide.js":
15227/*!***************************************************************!*\
15228  !*** ./node_modules/swiper/core/slide/slideToClickedSlide.js ***!
15229  \***************************************************************/
15230/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
15231
15232__webpack_require__.r(__webpack_exports__);
15233/* harmony export */ __webpack_require__.d(__webpack_exports__, {
15234/* harmony export */   "default": function() { return /* binding */ slideToClickedSlide; }
15235/* harmony export */ });
15236/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
15237/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
15238
15239
15240function slideToClickedSlide() {
15241  const swiper = this;
15242  const {
15243    params,
15244    $wrapperEl
15245  } = swiper;
15246  const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;
15247  let slideToIndex = swiper.clickedIndex;
15248  let realIndex;
15249
15250  if (params.loop) {
15251    if (swiper.animating) return;
15252    realIndex = parseInt((0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);
15253
15254    if (params.centeredSlides) {
15255      if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {
15256        swiper.loopFix();
15257        slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`).eq(0).index();
15258        (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.nextTick)(() => {
15259          swiper.slideTo(slideToIndex);
15260        });
15261      } else {
15262        swiper.slideTo(slideToIndex);
15263      }
15264    } else if (slideToIndex > swiper.slides.length - slidesPerView) {
15265      swiper.loopFix();
15266      slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`).eq(0).index();
15267      (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.nextTick)(() => {
15268        swiper.slideTo(slideToIndex);
15269      });
15270    } else {
15271      swiper.slideTo(slideToIndex);
15272    }
15273  } else {
15274    swiper.slideTo(slideToIndex);
15275  }
15276}
15277
15278/***/ }),
15279
vendor: 1,961 bytes, lines 15280-15324
15280/***/ "./node_modules/swiper/core/slide/slideToClosest.js":
15281/*!**********************************************************!*\
15282  !*** ./node_modules/swiper/core/slide/slideToClosest.js ***!
15283  \**********************************************************/
15284/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
15285
15286__webpack_require__.r(__webpack_exports__);
15287/* harmony export */ __webpack_require__.d(__webpack_exports__, {
15288/* harmony export */   "default": function() { return /* binding */ slideToClosest; }
15289/* harmony export */ });
15290/* eslint no-unused-vars: "off" */
15291function slideToClosest(speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {
15292  const swiper = this;
15293  let index = swiper.activeIndex;
15294  const skip = Math.min(swiper.params.slidesPerGroupSkip, index);
15295  const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);
15296  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
15297
15298  if (translate >= swiper.snapGrid[snapIndex]) {
15299    // The current translate is on or after the current snap index, so the choice
15300    // is between the current index and the one after it.
15301    const currentSnap = swiper.snapGrid[snapIndex];
15302    const nextSnap = swiper.snapGrid[snapIndex + 1];
15303
15304    if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {
15305      index += swiper.params.slidesPerGroup;
15306    }
15307  } else {
15308    // The current translate is before the current snap index, so the choice
15309    // is between the current index and the one before it.
15310    const prevSnap = swiper.snapGrid[snapIndex - 1];
15311    const currentSnap = swiper.snapGrid[snapIndex];
15312
15313    if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {
15314      index -= swiper.params.slidesPerGroup;
15315    }
15316  }
15317
15318  index = Math.max(index, 0);
15319  index = Math.min(index, swiper.slidesGrid.length - 1);
15320  return swiper.slideTo(index, speed, runCallbacks, internal);
15321}
15322
15323/***/ }),
15324
vendor: 1,527 bytes, lines 15325-15370
15325/***/ "./node_modules/swiper/core/slide/slideToLoop.js":
15326/*!*******************************************************!*\
15327  !*** ./node_modules/swiper/core/slide/slideToLoop.js ***!
15328  \*******************************************************/
15329/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
15330
15331__webpack_require__.r(__webpack_exports__);
15332/* harmony export */ __webpack_require__.d(__webpack_exports__, {
15333/* harmony export */   "default": function() { return /* binding */ slideToLoop; }
15334/* harmony export */ });
15335function slideToLoop(index = 0, speed = this.params.speed, runCallbacks = true, internal) {
15336  if (typeof index === 'string') {
15337    /**
15338     * The `index` argument converted from `string` to `number`.
15339     * @type {number}
15340     */
15341    const indexAsNumber = parseInt(index, 10);
15342    /**
15343     * Determines whether the `index` argument is a valid `number`
15344     * after being converted from the `string` type.
15345     * @type {boolean}
15346     */
15347
15348    const isValidNumber = isFinite(indexAsNumber);
15349
15350    if (!isValidNumber) {
15351      throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);
15352    } // Knowing that the converted `index` is a valid number,
15353    // we can update the original argument's value.
15354
15355
15356    index = indexAsNumber;
15357  }
15358
15359  const swiper = this;
15360  let newIndex = index;
15361
15362  if (swiper.params.loop) {
15363    newIndex += swiper.loopedSlides;
15364  }
15365
15366  return swiper.slideTo(newIndex, speed, runCallbacks, internal);
15367}
15368
15369/***/ }),
15370
vendor: 1,235 bytes, lines 15371-15391
15371/***/ "./node_modules/swiper/core/transition/index.js":
15372/*!******************************************************!*\
15373  !*** ./node_modules/swiper/core/transition/index.js ***!
15374  \******************************************************/
15375/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
15376
15377__webpack_require__.r(__webpack_exports__);
15378/* harmony import */ var _setTransition_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./setTransition.js */ "./node_modules/swiper/core/transition/setTransition.js");
15379/* harmony import */ var _transitionStart_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./transitionStart.js */ "./node_modules/swiper/core/transition/transitionStart.js");
15380/* harmony import */ var _transitionEnd_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./transitionEnd.js */ "./node_modules/swiper/core/transition/transitionEnd.js");
15381
15382
15383
15384/* harmony default export */ __webpack_exports__["default"] = ({
15385  setTransition: _setTransition_js__WEBPACK_IMPORTED_MODULE_0__["default"],
15386  transitionStart: _transitionStart_js__WEBPACK_IMPORTED_MODULE_1__["default"],
15387  transitionEnd: _transitionEnd_js__WEBPACK_IMPORTED_MODULE_2__["default"]
15388});
15389
15390/***/ }),
15391
vendor: 809 bytes, lines 15392-15413
15392/***/ "./node_modules/swiper/core/transition/setTransition.js":
15393/*!**************************************************************!*\
15394  !*** ./node_modules/swiper/core/transition/setTransition.js ***!
15395  \**************************************************************/
15396/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
15397
15398__webpack_require__.r(__webpack_exports__);
15399/* harmony export */ __webpack_require__.d(__webpack_exports__, {
15400/* harmony export */   "default": function() { return /* binding */ setTransition; }
15401/* harmony export */ });
15402function setTransition(duration, byController) {
15403  const swiper = this;
15404
15405  if (!swiper.params.cssMode) {
15406    swiper.$wrapperEl.transition(duration);
15407  }
15408
15409  swiper.emit('setTransition', duration, byController);
15410}
15411
15412/***/ }),
15413
vendor: 1,291 bytes, lines 15414-15459
15414/***/ "./node_modules/swiper/core/transition/transitionEmit.js":
15415/*!***************************************************************!*\
15416  !*** ./node_modules/swiper/core/transition/transitionEmit.js ***!
15417  \***************************************************************/
15418/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
15419
15420__webpack_require__.r(__webpack_exports__);
15421/* harmony export */ __webpack_require__.d(__webpack_exports__, {
15422/* harmony export */   "default": function() { return /* binding */ transitionEmit; }
15423/* harmony export */ });
15424function transitionEmit({
15425  swiper,
15426  runCallbacks,
15427  direction,
15428  step
15429}) {
15430  const {
15431    activeIndex,
15432    previousIndex
15433  } = swiper;
15434  let dir = direction;
15435
15436  if (!dir) {
15437    if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';
15438  }
15439
15440  swiper.emit(`transition${step}`);
15441
15442  if (runCallbacks && activeIndex !== previousIndex) {
15443    if (dir === 'reset') {
15444      swiper.emit(`slideResetTransition${step}`);
15445      return;
15446    }
15447
15448    swiper.emit(`slideChangeTransition${step}`);
15449
15450    if (dir === 'next') {
15451      swiper.emit(`slideNextTransition${step}`);
15452    } else {
15453      swiper.emit(`slidePrevTransition${step}`);
15454    }
15455  }
15456}
15457
15458/***/ }),
15459
vendor: 1,116 bytes, lines 15460-15489
15460/***/ "./node_modules/swiper/core/transition/transitionEnd.js":
15461/*!**************************************************************!*\
15462  !*** ./node_modules/swiper/core/transition/transitionEnd.js ***!
15463  \**************************************************************/
15464/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
15465
15466__webpack_require__.r(__webpack_exports__);
15467/* harmony export */ __webpack_require__.d(__webpack_exports__, {
15468/* harmony export */   "default": function() { return /* binding */ transitionEnd; }
15469/* harmony export */ });
15470/* harmony import */ var _transitionEmit_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./transitionEmit.js */ "./node_modules/swiper/core/transition/transitionEmit.js");
15471
15472function transitionEnd(runCallbacks = true, direction) {
15473  const swiper = this;
15474  const {
15475    params
15476  } = swiper;
15477  swiper.animating = false;
15478  if (params.cssMode) return;
15479  swiper.setTransition(0);
15480  (0,_transitionEmit_js__WEBPACK_IMPORTED_MODULE_0__["default"])({
15481    swiper,
15482    runCallbacks,
15483    direction,
15484    step: 'End'
15485  });
15486}
15487
15488/***/ }),
15489
vendor: 1,139 bytes, lines 15490-15522
15490/***/ "./node_modules/swiper/core/transition/transitionStart.js":
15491/*!****************************************************************!*\
15492  !*** ./node_modules/swiper/core/transition/transitionStart.js ***!
15493  \****************************************************************/
15494/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
15495
15496__webpack_require__.r(__webpack_exports__);
15497/* harmony export */ __webpack_require__.d(__webpack_exports__, {
15498/* harmony export */   "default": function() { return /* binding */ transitionStart; }
15499/* harmony export */ });
15500/* harmony import */ var _transitionEmit_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./transitionEmit.js */ "./node_modules/swiper/core/transition/transitionEmit.js");
15501
15502function transitionStart(runCallbacks = true, direction) {
15503  const swiper = this;
15504  const {
15505    params
15506  } = swiper;
15507  if (params.cssMode) return;
15508
15509  if (params.autoHeight) {
15510    swiper.updateAutoHeight();
15511  }
15512
15513  (0,_transitionEmit_js__WEBPACK_IMPORTED_MODULE_0__["default"])({
15514    swiper,
15515    runCallbacks,
15516    direction,
15517    step: 'Start'
15518  });
15519}
15520
15521/***/ }),
15522
vendor: 1,265 bytes, lines 15523-15558
15523/***/ "./node_modules/swiper/core/translate/getTranslate.js":
15524/*!************************************************************!*\
15525  !*** ./node_modules/swiper/core/translate/getTranslate.js ***!
15526  \************************************************************/
15527/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
15528
15529__webpack_require__.r(__webpack_exports__);
15530/* harmony export */ __webpack_require__.d(__webpack_exports__, {
15531/* harmony export */   "default": function() { return /* binding */ getSwiperTranslate; }
15532/* harmony export */ });
15533/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
15534
15535function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {
15536  const swiper = this;
15537  const {
15538    params,
15539    rtlTranslate: rtl,
15540    translate,
15541    $wrapperEl
15542  } = swiper;
15543
15544  if (params.virtualTranslate) {
15545    return rtl ? -translate : translate;
15546  }
15547
15548  if (params.cssMode) {
15549    return translate;
15550  }
15551
15552  let currentTranslate = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.getTranslate)($wrapperEl[0], axis);
15553  if (rtl) currentTranslate = -currentTranslate;
15554  return currentTranslate || 0;
15555}
15556
15557/***/ }),
15558
vendor: 1,698 bytes, lines 15559-15585
15559/***/ "./node_modules/swiper/core/translate/index.js":
15560/*!*****************************************************!*\
15561  !*** ./node_modules/swiper/core/translate/index.js ***!
15562  \*****************************************************/
15563/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
15564
15565__webpack_require__.r(__webpack_exports__);
15566/* harmony import */ var _getTranslate_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getTranslate.js */ "./node_modules/swiper/core/translate/getTranslate.js");
15567/* harmony import */ var _setTranslate_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./setTranslate.js */ "./node_modules/swiper/core/translate/setTranslate.js");
15568/* harmony import */ var _minTranslate_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./minTranslate.js */ "./node_modules/swiper/core/translate/minTranslate.js");
15569/* harmony import */ var _maxTranslate_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./maxTranslate.js */ "./node_modules/swiper/core/translate/maxTranslate.js");
15570/* harmony import */ var _translateTo_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./translateTo.js */ "./node_modules/swiper/core/translate/translateTo.js");
15571
15572
15573
15574
15575
15576/* harmony default export */ __webpack_exports__["default"] = ({
15577  getTranslate: _getTranslate_js__WEBPACK_IMPORTED_MODULE_0__["default"],
15578  setTranslate: _setTranslate_js__WEBPACK_IMPORTED_MODULE_1__["default"],
15579  minTranslate: _minTranslate_js__WEBPACK_IMPORTED_MODULE_2__["default"],
15580  maxTranslate: _maxTranslate_js__WEBPACK_IMPORTED_MODULE_3__["default"],
15581  translateTo: _translateTo_js__WEBPACK_IMPORTED_MODULE_4__["default"]
15582});
15583
15584/***/ }),
15585
vendor: 667 bytes, lines 15586-15601
15586/***/ "./node_modules/swiper/core/translate/maxTranslate.js":
15587/*!************************************************************!*\
15588  !*** ./node_modules/swiper/core/translate/maxTranslate.js ***!
15589  \************************************************************/
15590/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
15591
15592__webpack_require__.r(__webpack_exports__);
15593/* harmony export */ __webpack_require__.d(__webpack_exports__, {
15594/* harmony export */   "default": function() { return /* binding */ maxTranslate; }
15595/* harmony export */ });
15596function maxTranslate() {
15597  return -this.snapGrid[this.snapGrid.length - 1];
15598}
15599
15600/***/ }),
15601
vendor: 644 bytes, lines 15602-15617
15602/***/ "./node_modules/swiper/core/translate/minTranslate.js":
15603/*!************************************************************!*\
15604  !*** ./node_modules/swiper/core/translate/minTranslate.js ***!
15605  \************************************************************/
15606/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
15607
15608__webpack_require__.r(__webpack_exports__);
15609/* harmony export */ __webpack_require__.d(__webpack_exports__, {
15610/* harmony export */   "default": function() { return /* binding */ minTranslate; }
15611/* harmony export */ });
15612function minTranslate() {
15613  return -this.snapGrid[0];
15614}
15615
15616/***/ }),
15617
vendor: 1,737 bytes, lines 15618-15678
15618/***/ "./node_modules/swiper/core/translate/setTranslate.js":
15619/*!************************************************************!*\
15620  !*** ./node_modules/swiper/core/translate/setTranslate.js ***!
15621  \************************************************************/
15622/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
15623
15624__webpack_require__.r(__webpack_exports__);
15625/* harmony export */ __webpack_require__.d(__webpack_exports__, {
15626/* harmony export */   "default": function() { return /* binding */ setTranslate; }
15627/* harmony export */ });
15628function setTranslate(translate, byController) {
15629  const swiper = this;
15630  const {
15631    rtlTranslate: rtl,
15632    params,
15633    $wrapperEl,
15634    wrapperEl,
15635    progress
15636  } = swiper;
15637  let x = 0;
15638  let y = 0;
15639  const z = 0;
15640
15641  if (swiper.isHorizontal()) {
15642    x = rtl ? -translate : translate;
15643  } else {
15644    y = translate;
15645  }
15646
15647  if (params.roundLengths) {
15648    x = Math.floor(x);
15649    y = Math.floor(y);
15650  }
15651
15652  if (params.cssMode) {
15653    wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;
15654  } else if (!params.virtualTranslate) {
15655    $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);
15656  }
15657
15658  swiper.previousTranslate = swiper.translate;
15659  swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress
15660
15661  let newProgress;
15662  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
15663
15664  if (translatesDiff === 0) {
15665    newProgress = 0;
15666  } else {
15667    newProgress = (translate - swiper.minTranslate()) / translatesDiff;
15668  }
15669
15670  if (newProgress !== progress) {
15671    swiper.updateProgress(translate);
15672  }
15673
15674  swiper.emit('setTranslate', swiper.translate, byController);
15675}
15676
15677/***/ }),
15678
vendor: 3,375 bytes, lines 15679-15777
15679/***/ "./node_modules/swiper/core/translate/translateTo.js":
15680/*!***********************************************************!*\
15681  !*** ./node_modules/swiper/core/translate/translateTo.js ***!
15682  \***********************************************************/
15683/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
15684
15685__webpack_require__.r(__webpack_exports__);
15686/* harmony export */ __webpack_require__.d(__webpack_exports__, {
15687/* harmony export */   "default": function() { return /* binding */ translateTo; }
15688/* harmony export */ });
15689/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
15690
15691function translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {
15692  const swiper = this;
15693  const {
15694    params,
15695    wrapperEl
15696  } = swiper;
15697
15698  if (swiper.animating && params.preventInteractionOnTransition) {
15699    return false;
15700  }
15701
15702  const minTranslate = swiper.minTranslate();
15703  const maxTranslate = swiper.maxTranslate();
15704  let newTranslate;
15705  if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress
15706
15707  swiper.updateProgress(newTranslate);
15708
15709  if (params.cssMode) {
15710    const isH = swiper.isHorizontal();
15711
15712    if (speed === 0) {
15713      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;
15714    } else {
15715      if (!swiper.support.smoothScroll) {
15716        (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.animateCSSModeScroll)({
15717          swiper,
15718          targetPosition: -newTranslate,
15719          side: isH ? 'left' : 'top'
15720        });
15721        return true;
15722      }
15723
15724      wrapperEl.scrollTo({
15725        [isH ? 'left' : 'top']: -newTranslate,
15726        behavior: 'smooth'
15727      });
15728    }
15729
15730    return true;
15731  }
15732
15733  if (speed === 0) {
15734    swiper.setTransition(0);
15735    swiper.setTranslate(newTranslate);
15736
15737    if (runCallbacks) {
15738      swiper.emit('beforeTransitionStart', speed, internal);
15739      swiper.emit('transitionEnd');
15740    }
15741  } else {
15742    swiper.setTransition(speed);
15743    swiper.setTranslate(newTranslate);
15744
15745    if (runCallbacks) {
15746      swiper.emit('beforeTransitionStart', speed, internal);
15747      swiper.emit('transitionStart');
15748    }
15749
15750    if (!swiper.animating) {
15751      swiper.animating = true;
15752
15753      if (!swiper.onTranslateToWrapperTransitionEnd) {
15754        swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {
15755          if (!swiper || swiper.destroyed) return;
15756          if (e.target !== this) return;
15757          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
15758          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);
15759          swiper.onTranslateToWrapperTransitionEnd = null;
15760          delete swiper.onTranslateToWrapperTransitionEnd;
15761
15762          if (runCallbacks) {
15763            swiper.emit('transitionEnd');
15764          }
15765        };
15766      }
15767
15768      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
15769      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);
15770    }
15771  }
15772
15773  return true;
15774}
15775
15776/***/ }),
15777
vendor: 2,844 bytes, lines 15778-15816
15778/***/ "./node_modules/swiper/core/update/index.js":
15779/*!**************************************************!*\
15780  !*** ./node_modules/swiper/core/update/index.js ***!
15781  \**************************************************/
15782/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
15783
15784__webpack_require__.r(__webpack_exports__);
15785/* harmony import */ var _updateSize_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./updateSize.js */ "./node_modules/swiper/core/update/updateSize.js");
15786/* harmony import */ var _updateSlides_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./updateSlides.js */ "./node_modules/swiper/core/update/updateSlides.js");
15787/* harmony import */ var _updateAutoHeight_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./updateAutoHeight.js */ "./node_modules/swiper/core/update/updateAutoHeight.js");
15788/* harmony import */ var _updateSlidesOffset_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./updateSlidesOffset.js */ "./node_modules/swiper/core/update/updateSlidesOffset.js");
15789/* harmony import */ var _updateSlidesProgress_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./updateSlidesProgress.js */ "./node_modules/swiper/core/update/updateSlidesProgress.js");
15790/* harmony import */ var _updateProgress_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./updateProgress.js */ "./node_modules/swiper/core/update/updateProgress.js");
15791/* harmony import */ var _updateSlidesClasses_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./updateSlidesClasses.js */ "./node_modules/swiper/core/update/updateSlidesClasses.js");
15792/* harmony import */ var _updateActiveIndex_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./updateActiveIndex.js */ "./node_modules/swiper/core/update/updateActiveIndex.js");
15793/* harmony import */ var _updateClickedSlide_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./updateClickedSlide.js */ "./node_modules/swiper/core/update/updateClickedSlide.js");
15794
15795
15796
15797
15798
15799
15800
15801
15802
15803/* harmony default export */ __webpack_exports__["default"] = ({
15804  updateSize: _updateSize_js__WEBPACK_IMPORTED_MODULE_0__["default"],
15805  updateSlides: _updateSlides_js__WEBPACK_IMPORTED_MODULE_1__["default"],
15806  updateAutoHeight: _updateAutoHeight_js__WEBPACK_IMPORTED_MODULE_2__["default"],
15807  updateSlidesOffset: _updateSlidesOffset_js__WEBPACK_IMPORTED_MODULE_3__["default"],
15808  updateSlidesProgress: _updateSlidesProgress_js__WEBPACK_IMPORTED_MODULE_4__["default"],
15809  updateProgress: _updateProgress_js__WEBPACK_IMPORTED_MODULE_5__["default"],
15810  updateSlidesClasses: _updateSlidesClasses_js__WEBPACK_IMPORTED_MODULE_6__["default"],
15811  updateActiveIndex: _updateActiveIndex_js__WEBPACK_IMPORTED_MODULE_7__["default"],
15812  updateClickedSlide: _updateClickedSlide_js__WEBPACK_IMPORTED_MODULE_8__["default"]
15813});
15814
15815/***/ }),
15816
vendor: 2,613 bytes, lines 15817-15899
15817/***/ "./node_modules/swiper/core/update/updateActiveIndex.js":
15818/*!**************************************************************!*\
15819  !*** ./node_modules/swiper/core/update/updateActiveIndex.js ***!
15820  \**************************************************************/
15821/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
15822
15823__webpack_require__.r(__webpack_exports__);
15824/* harmony export */ __webpack_require__.d(__webpack_exports__, {
15825/* harmony export */   "default": function() { return /* binding */ updateActiveIndex; }
15826/* harmony export */ });
15827function updateActiveIndex(newActiveIndex) {
15828  const swiper = this;
15829  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
15830  const {
15831    slidesGrid,
15832    snapGrid,
15833    params,
15834    activeIndex: previousIndex,
15835    realIndex: previousRealIndex,
15836    snapIndex: previousSnapIndex
15837  } = swiper;
15838  let activeIndex = newActiveIndex;
15839  let snapIndex;
15840
15841  if (typeof activeIndex === 'undefined') {
15842    for (let i = 0; i < slidesGrid.length; i += 1) {
15843      if (typeof slidesGrid[i + 1] !== 'undefined') {
15844        if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {
15845          activeIndex = i;
15846        } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {
15847          activeIndex = i + 1;
15848        }
15849      } else if (translate >= slidesGrid[i]) {
15850        activeIndex = i;
15851      }
15852    } // Normalize slideIndex
15853
15854
15855    if (params.normalizeSlideIndex) {
15856      if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;
15857    }
15858  }
15859
15860  if (snapGrid.indexOf(translate) >= 0) {
15861    snapIndex = snapGrid.indexOf(translate);
15862  } else {
15863    const skip = Math.min(params.slidesPerGroupSkip, activeIndex);
15864    snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);
15865  }
15866
15867  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
15868
15869  if (activeIndex === previousIndex) {
15870    if (snapIndex !== previousSnapIndex) {
15871      swiper.snapIndex = snapIndex;
15872      swiper.emit('snapIndexChange');
15873    }
15874
15875    return;
15876  } // Get real index
15877
15878
15879  const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);
15880  Object.assign(swiper, {
15881    snapIndex,
15882    realIndex,
15883    previousIndex,
15884    activeIndex
15885  });
15886  swiper.emit('activeIndexChange');
15887  swiper.emit('snapIndexChange');
15888
15889  if (previousRealIndex !== realIndex) {
15890    swiper.emit('realIndexChange');
15891  }
15892
15893  if (swiper.initialized || swiper.params.runCallbacksOnInit) {
15894    swiper.emit('slideChange');
15895  }
15896}
15897
15898/***/ }),
15899
vendor: 2,334 bytes, lines 15900-15963
15900/***/ "./node_modules/swiper/core/update/updateAutoHeight.js":
15901/*!*************************************************************!*\
15902  !*** ./node_modules/swiper/core/update/updateAutoHeight.js ***!
15903  \*************************************************************/
15904/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
15905
15906__webpack_require__.r(__webpack_exports__);
15907/* harmony export */ __webpack_require__.d(__webpack_exports__, {
15908/* harmony export */   "default": function() { return /* binding */ updateAutoHeight; }
15909/* harmony export */ });
15910/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
15911
15912function updateAutoHeight(speed) {
15913  const swiper = this;
15914  const activeSlides = [];
15915  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
15916  let newHeight = 0;
15917  let i;
15918
15919  if (typeof speed === 'number') {
15920    swiper.setTransition(speed);
15921  } else if (speed === true) {
15922    swiper.setTransition(swiper.params.speed);
15923  }
15924
15925  const getSlideByIndex = index => {
15926    if (isVirtual) {
15927      return swiper.slides.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0];
15928    }
15929
15930    return swiper.slides.eq(index)[0];
15931  }; // Find slides currently in view
15932
15933
15934  if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {
15935    if (swiper.params.centeredSlides) {
15936      (swiper.visibleSlides || (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])([])).each(slide => {
15937        activeSlides.push(slide);
15938      });
15939    } else {
15940      for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {
15941        const index = swiper.activeIndex + i;
15942        if (index > swiper.slides.length && !isVirtual) break;
15943        activeSlides.push(getSlideByIndex(index));
15944      }
15945    }
15946  } else {
15947    activeSlides.push(getSlideByIndex(swiper.activeIndex));
15948  } // Find new height from highest slide in view
15949
15950
15951  for (i = 0; i < activeSlides.length; i += 1) {
15952    if (typeof activeSlides[i] !== 'undefined') {
15953      const height = activeSlides[i].offsetHeight;
15954      newHeight = height > newHeight ? height : newHeight;
15955    }
15956  } // Update Height
15957
15958
15959  if (newHeight || newHeight === 0) swiper.$wrapperEl.css('height', `${newHeight}px`);
15960}
15961
15962/***/ }),
15963
vendor: 1,792 bytes, lines 15964-16013
15964/***/ "./node_modules/swiper/core/update/updateClickedSlide.js":
15965/*!***************************************************************!*\
15966  !*** ./node_modules/swiper/core/update/updateClickedSlide.js ***!
15967  \***************************************************************/
15968/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
15969
15970__webpack_require__.r(__webpack_exports__);
15971/* harmony export */ __webpack_require__.d(__webpack_exports__, {
15972/* harmony export */   "default": function() { return /* binding */ updateClickedSlide; }
15973/* harmony export */ });
15974/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
15975
15976function updateClickedSlide(e) {
15977  const swiper = this;
15978  const params = swiper.params;
15979  const slide = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(e).closest(`.${params.slideClass}`)[0];
15980  let slideFound = false;
15981  let slideIndex;
15982
15983  if (slide) {
15984    for (let i = 0; i < swiper.slides.length; i += 1) {
15985      if (swiper.slides[i] === slide) {
15986        slideFound = true;
15987        slideIndex = i;
15988        break;
15989      }
15990    }
15991  }
15992
15993  if (slide && slideFound) {
15994    swiper.clickedSlide = slide;
15995
15996    if (swiper.virtual && swiper.params.virtual.enabled) {
15997      swiper.clickedIndex = parseInt((0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(slide).attr('data-swiper-slide-index'), 10);
15998    } else {
15999      swiper.clickedIndex = slideIndex;
16000    }
16001  } else {
16002    swiper.clickedSlide = undefined;
16003    swiper.clickedIndex = undefined;
16004    return;
16005  }
16006
16007  if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {
16008    swiper.slideToClickedSlide();
16009  }
16010}
16011
16012/***/ }),
16013
vendor: 1,798 bytes, lines 16014-16076
16014/***/ "./node_modules/swiper/core/update/updateProgress.js":
16015/*!***********************************************************!*\
16016  !*** ./node_modules/swiper/core/update/updateProgress.js ***!
16017  \***********************************************************/
16018/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
16019
16020__webpack_require__.r(__webpack_exports__);
16021/* harmony export */ __webpack_require__.d(__webpack_exports__, {
16022/* harmony export */   "default": function() { return /* binding */ updateProgress; }
16023/* harmony export */ });
16024function updateProgress(translate) {
16025  const swiper = this;
16026
16027  if (typeof translate === 'undefined') {
16028    const multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line
16029
16030    translate = swiper && swiper.translate && swiper.translate * multiplier || 0;
16031  }
16032
16033  const params = swiper.params;
16034  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
16035  let {
16036    progress,
16037    isBeginning,
16038    isEnd
16039  } = swiper;
16040  const wasBeginning = isBeginning;
16041  const wasEnd = isEnd;
16042
16043  if (translatesDiff === 0) {
16044    progress = 0;
16045    isBeginning = true;
16046    isEnd = true;
16047  } else {
16048    progress = (translate - swiper.minTranslate()) / translatesDiff;
16049    isBeginning = progress <= 0;
16050    isEnd = progress >= 1;
16051  }
16052
16053  Object.assign(swiper, {
16054    progress,
16055    isBeginning,
16056    isEnd
16057  });
16058  if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);
16059
16060  if (isBeginning && !wasBeginning) {
16061    swiper.emit('reachBeginning toEdge');
16062  }
16063
16064  if (isEnd && !wasEnd) {
16065    swiper.emit('reachEnd toEdge');
16066  }
16067
16068  if (wasBeginning && !isBeginning || wasEnd && !isEnd) {
16069    swiper.emit('fromEdge');
16070  }
16071
16072  swiper.emit('progress', progress);
16073}
16074
16075/***/ }),
16076
vendor: 1,529 bytes, lines 16077-16122
16077/***/ "./node_modules/swiper/core/update/updateSize.js":
16078/*!*******************************************************!*\
16079  !*** ./node_modules/swiper/core/update/updateSize.js ***!
16080  \*******************************************************/
16081/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
16082
16083__webpack_require__.r(__webpack_exports__);
16084/* harmony export */ __webpack_require__.d(__webpack_exports__, {
16085/* harmony export */   "default": function() { return /* binding */ updateSize; }
16086/* harmony export */ });
16087function updateSize() {
16088  const swiper = this;
16089  let width;
16090  let height;
16091  const $el = swiper.$el;
16092
16093  if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {
16094    width = swiper.params.width;
16095  } else {
16096    width = $el[0].clientWidth;
16097  }
16098
16099  if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {
16100    height = swiper.params.height;
16101  } else {
16102    height = $el[0].clientHeight;
16103  }
16104
16105  if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {
16106    return;
16107  } // Subtract paddings
16108
16109
16110  width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);
16111  height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);
16112  if (Number.isNaN(width)) width = 0;
16113  if (Number.isNaN(height)) height = 0;
16114  Object.assign(swiper, {
16115    width,
16116    height,
16117    size: swiper.isHorizontal() ? width : height
16118  });
16119}
16120
16121/***/ }),
16122
vendor: 11,385 bytes, lines 16123-16456
16123/***/ "./node_modules/swiper/core/update/updateSlides.js":
16124/*!*********************************************************!*\
16125  !*** ./node_modules/swiper/core/update/updateSlides.js ***!
16126  \*********************************************************/
16127/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
16128
16129__webpack_require__.r(__webpack_exports__);
16130/* harmony export */ __webpack_require__.d(__webpack_exports__, {
16131/* harmony export */   "default": function() { return /* binding */ updateSlides; }
16132/* harmony export */ });
16133/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
16134
16135function updateSlides() {
16136  const swiper = this;
16137
16138  function getDirectionLabel(property) {
16139    if (swiper.isHorizontal()) {
16140      return property;
16141    } // prettier-ignore
16142
16143
16144    return {
16145      'width': 'height',
16146      'margin-top': 'margin-left',
16147      'margin-bottom ': 'margin-right',
16148      'margin-left': 'margin-top',
16149      'margin-right': 'margin-bottom',
16150      'padding-left': 'padding-top',
16151      'padding-right': 'padding-bottom',
16152      'marginRight': 'marginBottom'
16153    }[property];
16154  }
16155
16156  function getDirectionPropertyValue(node, label) {
16157    return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);
16158  }
16159
16160  const params = swiper.params;
16161  const {
16162    $wrapperEl,
16163    size: swiperSize,
16164    rtlTranslate: rtl,
16165    wrongRTL
16166  } = swiper;
16167  const isVirtual = swiper.virtual && params.virtual.enabled;
16168  const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;
16169  const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);
16170  const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;
16171  let snapGrid = [];
16172  const slidesGrid = [];
16173  const slidesSizesGrid = [];
16174  let offsetBefore = params.slidesOffsetBefore;
16175
16176  if (typeof offsetBefore === 'function') {
16177    offsetBefore = params.slidesOffsetBefore.call(swiper);
16178  }
16179
16180  let offsetAfter = params.slidesOffsetAfter;
16181
16182  if (typeof offsetAfter === 'function') {
16183    offsetAfter = params.slidesOffsetAfter.call(swiper);
16184  }
16185
16186  const previousSnapGridLength = swiper.snapGrid.length;
16187  const previousSlidesGridLength = swiper.slidesGrid.length;
16188  let spaceBetween = params.spaceBetween;
16189  let slidePosition = -offsetBefore;
16190  let prevSlideSize = 0;
16191  let index = 0;
16192
16193  if (typeof swiperSize === 'undefined') {
16194    return;
16195  }
16196
16197  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {
16198    spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;
16199  }
16200
16201  swiper.virtualSize = -spaceBetween; // reset margins
16202
16203  if (rtl) slides.css({
16204    marginLeft: '',
16205    marginBottom: '',
16206    marginTop: ''
16207  });else slides.css({
16208    marginRight: '',
16209    marginBottom: '',
16210    marginTop: ''
16211  }); // reset cssMode offsets
16212
16213  if (params.centeredSlides && params.cssMode) {
16214    (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.setCSSProperty)(swiper.wrapperEl, '--swiper-centered-offset-before', '');
16215    (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.setCSSProperty)(swiper.wrapperEl, '--swiper-centered-offset-after', '');
16216  }
16217
16218  const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;
16219
16220  if (gridEnabled) {
16221    swiper.grid.initSlides(slidesLength);
16222  } // Calc slides
16223
16224
16225  let slideSize;
16226  const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {
16227    return typeof params.breakpoints[key].slidesPerView !== 'undefined';
16228  }).length > 0;
16229
16230  for (let i = 0; i < slidesLength; i += 1) {
16231    slideSize = 0;
16232    const slide = slides.eq(i);
16233
16234    if (gridEnabled) {
16235      swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);
16236    }
16237
16238    if (slide.css('display') === 'none') continue; // eslint-disable-line
16239
16240    if (params.slidesPerView === 'auto') {
16241      if (shouldResetSlideSize) {
16242        slides[i].style[getDirectionLabel('width')] = ``;
16243      }
16244
16245      const slideStyles = getComputedStyle(slide[0]);
16246      const currentTransform = slide[0].style.transform;
16247      const currentWebKitTransform = slide[0].style.webkitTransform;
16248
16249      if (currentTransform) {
16250        slide[0].style.transform = 'none';
16251      }
16252
16253      if (currentWebKitTransform) {
16254        slide[0].style.webkitTransform = 'none';
16255      }
16256
16257      if (params.roundLengths) {
16258        slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);
16259      } else {
16260        // eslint-disable-next-line
16261        const width = getDirectionPropertyValue(slideStyles, 'width');
16262        const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');
16263        const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');
16264        const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');
16265        const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');
16266        const boxSizing = slideStyles.getPropertyValue('box-sizing');
16267
16268        if (boxSizing && boxSizing === 'border-box') {
16269          slideSize = width + marginLeft + marginRight;
16270        } else {
16271          const {
16272            clientWidth,
16273            offsetWidth
16274          } = slide[0];
16275          slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);
16276        }
16277      }
16278
16279      if (currentTransform) {
16280        slide[0].style.transform = currentTransform;
16281      }
16282
16283      if (currentWebKitTransform) {
16284        slide[0].style.webkitTransform = currentWebKitTransform;
16285      }
16286
16287      if (params.roundLengths) slideSize = Math.floor(slideSize);
16288    } else {
16289      slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;
16290      if (params.roundLengths) slideSize = Math.floor(slideSize);
16291
16292      if (slides[i]) {
16293        slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;
16294      }
16295    }
16296
16297    if (slides[i]) {
16298      slides[i].swiperSlideSize = slideSize;
16299    }
16300
16301    slidesSizesGrid.push(slideSize);
16302
16303    if (params.centeredSlides) {
16304      slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;
16305      if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
16306      if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
16307      if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;
16308      if (params.roundLengths) slidePosition = Math.floor(slidePosition);
16309      if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);
16310      slidesGrid.push(slidePosition);
16311    } else {
16312      if (params.roundLengths) slidePosition = Math.floor(slidePosition);
16313      if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);
16314      slidesGrid.push(slidePosition);
16315      slidePosition = slidePosition + slideSize + spaceBetween;
16316    }
16317
16318    swiper.virtualSize += slideSize + spaceBetween;
16319    prevSlideSize = slideSize;
16320    index += 1;
16321  }
16322
16323  swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;
16324
16325  if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {
16326    $wrapperEl.css({
16327      width: `${swiper.virtualSize + params.spaceBetween}px`
16328    });
16329  }
16330
16331  if (params.setWrapperSize) {
16332    $wrapperEl.css({
16333      [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`
16334    });
16335  }
16336
16337  if (gridEnabled) {
16338    swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);
16339  } // Remove last grid elements depending on width
16340
16341
16342  if (!params.centeredSlides) {
16343    const newSlidesGrid = [];
16344
16345    for (let i = 0; i < snapGrid.length; i += 1) {
16346      let slidesGridItem = snapGrid[i];
16347      if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);
16348
16349      if (snapGrid[i] <= swiper.virtualSize - swiperSize) {
16350        newSlidesGrid.push(slidesGridItem);
16351      }
16352    }
16353
16354    snapGrid = newSlidesGrid;
16355
16356    if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {
16357      snapGrid.push(swiper.virtualSize - swiperSize);
16358    }
16359  }
16360
16361  if (snapGrid.length === 0) snapGrid = [0];
16362
16363  if (params.spaceBetween !== 0) {
16364    const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');
16365    slides.filter((_, slideIndex) => {
16366      if (!params.cssMode) return true;
16367
16368      if (slideIndex === slides.length - 1) {
16369        return false;
16370      }
16371
16372      return true;
16373    }).css({
16374      [key]: `${spaceBetween}px`
16375    });
16376  }
16377
16378  if (params.centeredSlides && params.centeredSlidesBounds) {
16379    let allSlidesSize = 0;
16380    slidesSizesGrid.forEach(slideSizeValue => {
16381      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);
16382    });
16383    allSlidesSize -= params.spaceBetween;
16384    const maxSnap = allSlidesSize - swiperSize;
16385    snapGrid = snapGrid.map(snap => {
16386      if (snap < 0) return -offsetBefore;
16387      if (snap > maxSnap) return maxSnap + offsetAfter;
16388      return snap;
16389    });
16390  }
16391
16392  if (params.centerInsufficientSlides) {
16393    let allSlidesSize = 0;
16394    slidesSizesGrid.forEach(slideSizeValue => {
16395      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);
16396    });
16397    allSlidesSize -= params.spaceBetween;
16398
16399    if (allSlidesSize < swiperSize) {
16400      const allSlidesOffset = (swiperSize - allSlidesSize) / 2;
16401      snapGrid.forEach((snap, snapIndex) => {
16402        snapGrid[snapIndex] = snap - allSlidesOffset;
16403      });
16404      slidesGrid.forEach((snap, snapIndex) => {
16405        slidesGrid[snapIndex] = snap + allSlidesOffset;
16406      });
16407    }
16408  }
16409
16410  Object.assign(swiper, {
16411    slides,
16412    snapGrid,
16413    slidesGrid,
16414    slidesSizesGrid
16415  });
16416
16417  if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {
16418    (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.setCSSProperty)(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);
16419    (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.setCSSProperty)(swiper.wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);
16420    const addToSnapGrid = -swiper.snapGrid[0];
16421    const addToSlidesGrid = -swiper.slidesGrid[0];
16422    swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);
16423    swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);
16424  }
16425
16426  if (slidesLength !== previousSlidesLength) {
16427    swiper.emit('slidesLengthChange');
16428  }
16429
16430  if (snapGrid.length !== previousSnapGridLength) {
16431    if (swiper.params.watchOverflow) swiper.checkOverflow();
16432    swiper.emit('snapGridLengthChange');
16433  }
16434
16435  if (slidesGrid.length !== previousSlidesGridLength) {
16436    swiper.emit('slidesGridLengthChange');
16437  }
16438
16439  if (params.watchSlidesProgress) {
16440    swiper.updateSlidesOffset();
16441  }
16442
16443  if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {
16444    const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;
16445    const hasClassBackfaceClassAdded = swiper.$el.hasClass(backFaceHiddenClass);
16446
16447    if (slidesLength <= params.maxBackfaceHiddenSlides) {
16448      if (!hasClassBackfaceClassAdded) swiper.$el.addClass(backFaceHiddenClass);
16449    } else if (hasClassBackfaceClassAdded) {
16450      swiper.$el.removeClass(backFaceHiddenClass);
16451    }
16452  }
16453}
16454
16455/***/ }),
16456
vendor: 3,322 bytes, lines 16457-16533
16457/***/ "./node_modules/swiper/core/update/updateSlidesClasses.js":
16458/*!****************************************************************!*\
16459  !*** ./node_modules/swiper/core/update/updateSlidesClasses.js ***!
16460  \****************************************************************/
16461/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
16462
16463__webpack_require__.r(__webpack_exports__);
16464/* harmony export */ __webpack_require__.d(__webpack_exports__, {
16465/* harmony export */   "default": function() { return /* binding */ updateSlidesClasses; }
16466/* harmony export */ });
16467function updateSlidesClasses() {
16468  const swiper = this;
16469  const {
16470    slides,
16471    params,
16472    $wrapperEl,
16473    activeIndex,
16474    realIndex
16475  } = swiper;
16476  const isVirtual = swiper.virtual && params.virtual.enabled;
16477  slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);
16478  let activeSlide;
16479
16480  if (isVirtual) {
16481    activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index="${activeIndex}"]`);
16482  } else {
16483    activeSlide = slides.eq(activeIndex);
16484  } // Active classes
16485
16486
16487  activeSlide.addClass(params.slideActiveClass);
16488
16489  if (params.loop) {
16490    // Duplicate to all looped slides
16491    if (activeSlide.hasClass(params.slideDuplicateClass)) {
16492      $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${realIndex}"]`).addClass(params.slideDuplicateActiveClass);
16493    } else {
16494      $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${realIndex}"]`).addClass(params.slideDuplicateActiveClass);
16495    }
16496  } // Next Slide
16497
16498
16499  let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);
16500
16501  if (params.loop && nextSlide.length === 0) {
16502    nextSlide = slides.eq(0);
16503    nextSlide.addClass(params.slideNextClass);
16504  } // Prev Slide
16505
16506
16507  let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);
16508
16509  if (params.loop && prevSlide.length === 0) {
16510    prevSlide = slides.eq(-1);
16511    prevSlide.addClass(params.slidePrevClass);
16512  }
16513
16514  if (params.loop) {
16515    // Duplicate to all looped slides
16516    if (nextSlide.hasClass(params.slideDuplicateClass)) {
16517      $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicateNextClass);
16518    } else {
16519      $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicateNextClass);
16520    }
16521
16522    if (prevSlide.hasClass(params.slideDuplicateClass)) {
16523      $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicatePrevClass);
16524    } else {
16525      $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicatePrevClass);
16526    }
16527  }
16528
16529  swiper.emitSlidesClasses();
16530}
16531
16532/***/ }),
16533
vendor: 849 bytes, lines 16534-16554
16534/***/ "./node_modules/swiper/core/update/updateSlidesOffset.js":
16535/*!***************************************************************!*\
16536  !*** ./node_modules/swiper/core/update/updateSlidesOffset.js ***!
16537  \***************************************************************/
16538/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
16539
16540__webpack_require__.r(__webpack_exports__);
16541/* harmony export */ __webpack_require__.d(__webpack_exports__, {
16542/* harmony export */   "default": function() { return /* binding */ updateSlidesOffset; }
16543/* harmony export */ });
16544function updateSlidesOffset() {
16545  const swiper = this;
16546  const slides = swiper.slides;
16547
16548  for (let i = 0; i < slides.length; i += 1) {
16549    slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;
16550  }
16551}
16552
16553/***/ }),
16554
vendor: 2,581 bytes, lines 16555-16612
16555/***/ "./node_modules/swiper/core/update/updateSlidesProgress.js":
16556/*!*****************************************************************!*\
16557  !*** ./node_modules/swiper/core/update/updateSlidesProgress.js ***!
16558  \*****************************************************************/
16559/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
16560
16561__webpack_require__.r(__webpack_exports__);
16562/* harmony export */ __webpack_require__.d(__webpack_exports__, {
16563/* harmony export */   "default": function() { return /* binding */ updateSlidesProgress; }
16564/* harmony export */ });
16565/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
16566
16567function updateSlidesProgress(translate = this && this.translate || 0) {
16568  const swiper = this;
16569  const params = swiper.params;
16570  const {
16571    slides,
16572    rtlTranslate: rtl,
16573    snapGrid
16574  } = swiper;
16575  if (slides.length === 0) return;
16576  if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();
16577  let offsetCenter = -translate;
16578  if (rtl) offsetCenter = translate; // Visible Slides
16579
16580  slides.removeClass(params.slideVisibleClass);
16581  swiper.visibleSlidesIndexes = [];
16582  swiper.visibleSlides = [];
16583
16584  for (let i = 0; i < slides.length; i += 1) {
16585    const slide = slides[i];
16586    let slideOffset = slide.swiperSlideOffset;
16587
16588    if (params.cssMode && params.centeredSlides) {
16589      slideOffset -= slides[0].swiperSlideOffset;
16590    }
16591
16592    const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);
16593    const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);
16594    const slideBefore = -(offsetCenter - slideOffset);
16595    const slideAfter = slideBefore + swiper.slidesSizesGrid[i];
16596    const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;
16597
16598    if (isVisible) {
16599      swiper.visibleSlides.push(slide);
16600      swiper.visibleSlidesIndexes.push(i);
16601      slides.eq(i).addClass(params.slideVisibleClass);
16602    }
16603
16604    slide.progress = rtl ? -slideProgress : slideProgress;
16605    slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;
16606  }
16607
16608  swiper.visibleSlides = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(swiper.visibleSlides);
16609}
16610
16611/***/ }),
16612
vendor: 11,058 bytes, lines 16613-16978
16613/***/ "./node_modules/swiper/modules/a11y/a11y.js":
16614/*!**************************************************!*\
16615  !*** ./node_modules/swiper/modules/a11y/a11y.js ***!
16616  \**************************************************/
16617/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
16618
16619__webpack_require__.r(__webpack_exports__);
16620/* harmony export */ __webpack_require__.d(__webpack_exports__, {
16621/* harmony export */   "default": function() { return /* binding */ A11y; }
16622/* harmony export */ });
16623/* harmony import */ var _shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/classes-to-selector.js */ "./node_modules/swiper/shared/classes-to-selector.js");
16624/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
16625
16626
16627function A11y({
16628  swiper,
16629  extendParams,
16630  on
16631}) {
16632  extendParams({
16633    a11y: {
16634      enabled: true,
16635      notificationClass: 'swiper-notification',
16636      prevSlideMessage: 'Previous slide',
16637      nextSlideMessage: 'Next slide',
16638      firstSlideMessage: 'This is the first slide',
16639      lastSlideMessage: 'This is the last slide',
16640      paginationBulletMessage: 'Go to slide {{index}}',
16641      slideLabelMessage: '{{index}} / {{slidesLength}}',
16642      containerMessage: null,
16643      containerRoleDescriptionMessage: null,
16644      itemRoleDescriptionMessage: null,
16645      slideRole: 'group',
16646      id: null
16647    }
16648  });
16649  swiper.a11y = {
16650    clicked: false
16651  };
16652  let liveRegion = null;
16653
16654  function notify(message) {
16655    const notification = liveRegion;
16656    if (notification.length === 0) return;
16657    notification.html('');
16658    notification.html(message);
16659  }
16660
16661  function getRandomNumber(size = 16) {
16662    const randomChar = () => Math.round(16 * Math.random()).toString(16);
16663
16664    return 'x'.repeat(size).replace(/x/g, randomChar);
16665  }
16666
16667  function makeElFocusable($el) {
16668    $el.attr('tabIndex', '0');
16669  }
16670
16671  function makeElNotFocusable($el) {
16672    $el.attr('tabIndex', '-1');
16673  }
16674
16675  function addElRole($el, role) {
16676    $el.attr('role', role);
16677  }
16678
16679  function addElRoleDescription($el, description) {
16680    $el.attr('aria-roledescription', description);
16681  }
16682
16683  function addElControls($el, controls) {
16684    $el.attr('aria-controls', controls);
16685  }
16686
16687  function addElLabel($el, label) {
16688    $el.attr('aria-label', label);
16689  }
16690
16691  function addElId($el, id) {
16692    $el.attr('id', id);
16693  }
16694
16695  function addElLive($el, live) {
16696    $el.attr('aria-live', live);
16697  }
16698
16699  function disableEl($el) {
16700    $el.attr('aria-disabled', true);
16701  }
16702
16703  function enableEl($el) {
16704    $el.attr('aria-disabled', false);
16705  }
16706
16707  function onEnterOrSpaceKey(e) {
16708    if (e.keyCode !== 13 && e.keyCode !== 32) return;
16709    const params = swiper.params.a11y;
16710    const $targetEl = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(e.target);
16711
16712    if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {
16713      if (!(swiper.isEnd && !swiper.params.loop)) {
16714        swiper.slideNext();
16715      }
16716
16717      if (swiper.isEnd) {
16718        notify(params.lastSlideMessage);
16719      } else {
16720        notify(params.nextSlideMessage);
16721      }
16722    }
16723
16724    if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {
16725      if (!(swiper.isBeginning && !swiper.params.loop)) {
16726        swiper.slidePrev();
16727      }
16728
16729      if (swiper.isBeginning) {
16730        notify(params.firstSlideMessage);
16731      } else {
16732        notify(params.prevSlideMessage);
16733      }
16734    }
16735
16736    if (swiper.pagination && $targetEl.is((0,_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_0__["default"])(swiper.params.pagination.bulletClass))) {
16737      $targetEl[0].click();
16738    }
16739  }
16740
16741  function updateNavigation() {
16742    if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;
16743    const {
16744      $nextEl,
16745      $prevEl
16746    } = swiper.navigation;
16747
16748    if ($prevEl && $prevEl.length > 0) {
16749      if (swiper.isBeginning) {
16750        disableEl($prevEl);
16751        makeElNotFocusable($prevEl);
16752      } else {
16753        enableEl($prevEl);
16754        makeElFocusable($prevEl);
16755      }
16756    }
16757
16758    if ($nextEl && $nextEl.length > 0) {
16759      if (swiper.isEnd) {
16760        disableEl($nextEl);
16761        makeElNotFocusable($nextEl);
16762      } else {
16763        enableEl($nextEl);
16764        makeElFocusable($nextEl);
16765      }
16766    }
16767  }
16768
16769  function hasPagination() {
16770    return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;
16771  }
16772
16773  function hasClickablePagination() {
16774    return hasPagination() && swiper.params.pagination.clickable;
16775  }
16776
16777  function updatePagination() {
16778    const params = swiper.params.a11y;
16779    if (!hasPagination()) return;
16780    swiper.pagination.bullets.each(bulletEl => {
16781      const $bulletEl = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(bulletEl);
16782
16783      if (swiper.params.pagination.clickable) {
16784        makeElFocusable($bulletEl);
16785
16786        if (!swiper.params.pagination.renderBullet) {
16787          addElRole($bulletEl, 'button');
16788          addElLabel($bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, $bulletEl.index() + 1));
16789        }
16790      }
16791
16792      if ($bulletEl.is(`.${swiper.params.pagination.bulletActiveClass}`)) {
16793        $bulletEl.attr('aria-current', 'true');
16794      } else {
16795        $bulletEl.removeAttr('aria-current');
16796      }
16797    });
16798  }
16799
16800  const initNavEl = ($el, wrapperId, message) => {
16801    makeElFocusable($el);
16802
16803    if ($el[0].tagName !== 'BUTTON') {
16804      addElRole($el, 'button');
16805      $el.on('keydown', onEnterOrSpaceKey);
16806    }
16807
16808    addElLabel($el, message);
16809    addElControls($el, wrapperId);
16810  };
16811
16812  const handlePointerDown = () => {
16813    swiper.a11y.clicked = true;
16814  };
16815
16816  const handlePointerUp = () => {
16817    requestAnimationFrame(() => {
16818      requestAnimationFrame(() => {
16819        if (!swiper.destroyed) {
16820          swiper.a11y.clicked = false;
16821        }
16822      });
16823    });
16824  };
16825
16826  const handleFocus = e => {
16827    if (swiper.a11y.clicked) return;
16828    const slideEl = e.target.closest(`.${swiper.params.slideClass}`);
16829    if (!slideEl || !swiper.slides.includes(slideEl)) return;
16830    const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;
16831    const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);
16832    if (isActive || isVisible) return;
16833    if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;
16834
16835    if (swiper.isHorizontal()) {
16836      swiper.el.scrollLeft = 0;
16837    } else {
16838      swiper.el.scrollTop = 0;
16839    }
16840
16841    swiper.slideTo(swiper.slides.indexOf(slideEl), 0);
16842  };
16843
16844  const initSlides = () => {
16845    const params = swiper.params.a11y;
16846
16847    if (params.itemRoleDescriptionMessage) {
16848      addElRoleDescription((0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(swiper.slides), params.itemRoleDescriptionMessage);
16849    }
16850
16851    if (params.slideRole) {
16852      addElRole((0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(swiper.slides), params.slideRole);
16853    }
16854
16855    const slidesLength = swiper.params.loop ? swiper.slides.filter(el => !el.classList.contains(swiper.params.slideDuplicateClass)).length : swiper.slides.length;
16856
16857    if (params.slideLabelMessage) {
16858      swiper.slides.each((slideEl, index) => {
16859        const $slideEl = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(slideEl);
16860        const slideIndex = swiper.params.loop ? parseInt($slideEl.attr('data-swiper-slide-index'), 10) : index;
16861        const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength);
16862        addElLabel($slideEl, ariaLabelMessage);
16863      });
16864    }
16865  };
16866
16867  const init = () => {
16868    const params = swiper.params.a11y;
16869    swiper.$el.append(liveRegion); // Container
16870
16871    const $containerEl = swiper.$el;
16872
16873    if (params.containerRoleDescriptionMessage) {
16874      addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);
16875    }
16876
16877    if (params.containerMessage) {
16878      addElLabel($containerEl, params.containerMessage);
16879    } // Wrapper
16880
16881
16882    const $wrapperEl = swiper.$wrapperEl;
16883    const wrapperId = params.id || $wrapperEl.attr('id') || `swiper-wrapper-${getRandomNumber(16)}`;
16884    const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';
16885    addElId($wrapperEl, wrapperId);
16886    addElLive($wrapperEl, live); // Slide
16887
16888    initSlides(); // Navigation
16889
16890    let $nextEl;
16891    let $prevEl;
16892
16893    if (swiper.navigation && swiper.navigation.$nextEl) {
16894      $nextEl = swiper.navigation.$nextEl;
16895    }
16896
16897    if (swiper.navigation && swiper.navigation.$prevEl) {
16898      $prevEl = swiper.navigation.$prevEl;
16899    }
16900
16901    if ($nextEl && $nextEl.length) {
16902      initNavEl($nextEl, wrapperId, params.nextSlideMessage);
16903    }
16904
16905    if ($prevEl && $prevEl.length) {
16906      initNavEl($prevEl, wrapperId, params.prevSlideMessage);
16907    } // Pagination
16908
16909
16910    if (hasClickablePagination()) {
16911      swiper.pagination.$el.on('keydown', (0,_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_0__["default"])(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);
16912    } // Tab focus
16913
16914
16915    swiper.$el.on('focus', handleFocus, true);
16916    swiper.$el.on('pointerdown', handlePointerDown, true);
16917    swiper.$el.on('pointerup', handlePointerUp, true);
16918  };
16919
16920  function destroy() {
16921    if (liveRegion && liveRegion.length > 0) liveRegion.remove();
16922    let $nextEl;
16923    let $prevEl;
16924
16925    if (swiper.navigation && swiper.navigation.$nextEl) {
16926      $nextEl = swiper.navigation.$nextEl;
16927    }
16928
16929    if (swiper.navigation && swiper.navigation.$prevEl) {
16930      $prevEl = swiper.navigation.$prevEl;
16931    }
16932
16933    if ($nextEl) {
16934      $nextEl.off('keydown', onEnterOrSpaceKey);
16935    }
16936
16937    if ($prevEl) {
16938      $prevEl.off('keydown', onEnterOrSpaceKey);
16939    } // Pagination
16940
16941
16942    if (hasClickablePagination()) {
16943      swiper.pagination.$el.off('keydown', (0,_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_0__["default"])(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);
16944    } // Tab focus
16945
16946
16947    swiper.$el.off('focus', handleFocus, true);
16948    swiper.$el.off('pointerdown', handlePointerDown, true);
16949    swiper.$el.off('pointerup', handlePointerUp, true);
16950  }
16951
16952  on('beforeInit', () => {
16953    liveRegion = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(`<span class="${swiper.params.a11y.notificationClass}" aria-live="assertive" aria-atomic="true"></span>`);
16954  });
16955  on('afterInit', () => {
16956    if (!swiper.params.a11y.enabled) return;
16957    init();
16958  });
16959  on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {
16960    if (!swiper.params.a11y.enabled) return;
16961    initSlides();
16962  });
16963  on('fromEdge toEdge afterInit lock unlock', () => {
16964    if (!swiper.params.a11y.enabled) return;
16965    updateNavigation();
16966  });
16967  on('paginationUpdate', () => {
16968    if (!swiper.params.a11y.enabled) return;
16969    updatePagination();
16970  });
16971  on('destroy', () => {
16972    if (!swiper.params.a11y.enabled) return;
16973    destroy();
16974  });
16975}
16976
16977/***/ }),
16978
vendor: 6,959 bytes, lines 16979-17223
16979/***/ "./node_modules/swiper/modules/autoplay/autoplay.js":
16980/*!**********************************************************!*\
16981  !*** ./node_modules/swiper/modules/autoplay/autoplay.js ***!
16982  \**********************************************************/
16983/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
16984
16985__webpack_require__.r(__webpack_exports__);
16986/* harmony export */ __webpack_require__.d(__webpack_exports__, {
16987/* harmony export */   "default": function() { return /* binding */ Autoplay; }
16988/* harmony export */ });
16989/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
16990/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
16991/* eslint no-underscore-dangle: "off" */
16992
16993/* eslint no-use-before-define: "off" */
16994
16995
16996function Autoplay({
16997  swiper,
16998  extendParams,
16999  on,
17000  emit
17001}) {
17002  let timeout;
17003  swiper.autoplay = {
17004    running: false,
17005    paused: false
17006  };
17007  extendParams({
17008    autoplay: {
17009      enabled: false,
17010      delay: 3000,
17011      waitForTransition: true,
17012      disableOnInteraction: true,
17013      stopOnLastSlide: false,
17014      reverseDirection: false,
17015      pauseOnMouseEnter: false
17016    }
17017  });
17018
17019  function run() {
17020    if (!swiper.size) {
17021      swiper.autoplay.running = false;
17022      swiper.autoplay.paused = false;
17023      return;
17024    }
17025
17026    const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);
17027    let delay = swiper.params.autoplay.delay;
17028
17029    if ($activeSlideEl.attr('data-swiper-autoplay')) {
17030      delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;
17031    }
17032
17033    clearTimeout(timeout);
17034    timeout = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.nextTick)(() => {
17035      let autoplayResult;
17036
17037      if (swiper.params.autoplay.reverseDirection) {
17038        if (swiper.params.loop) {
17039          swiper.loopFix();
17040          autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);
17041          emit('autoplay');
17042        } else if (!swiper.isBeginning) {
17043          autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);
17044          emit('autoplay');
17045        } else if (!swiper.params.autoplay.stopOnLastSlide) {
17046          autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);
17047          emit('autoplay');
17048        } else {
17049          stop();
17050        }
17051      } else if (swiper.params.loop) {
17052        swiper.loopFix();
17053        autoplayResult = swiper.slideNext(swiper.params.speed, true, true);
17054        emit('autoplay');
17055      } else if (!swiper.isEnd) {
17056        autoplayResult = swiper.slideNext(swiper.params.speed, true, true);
17057        emit('autoplay');
17058      } else if (!swiper.params.autoplay.stopOnLastSlide) {
17059        autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);
17060        emit('autoplay');
17061      } else {
17062        stop();
17063      }
17064
17065      if (swiper.params.cssMode && swiper.autoplay.running) run();else if (autoplayResult === false) {
17066        run();
17067      }
17068    }, delay);
17069  }
17070
17071  function start() {
17072    if (typeof timeout !== 'undefined') return false;
17073    if (swiper.autoplay.running) return false;
17074    swiper.autoplay.running = true;
17075    emit('autoplayStart');
17076    run();
17077    return true;
17078  }
17079
17080  function stop() {
17081    if (!swiper.autoplay.running) return false;
17082    if (typeof timeout === 'undefined') return false;
17083
17084    if (timeout) {
17085      clearTimeout(timeout);
17086      timeout = undefined;
17087    }
17088
17089    swiper.autoplay.running = false;
17090    emit('autoplayStop');
17091    return true;
17092  }
17093
17094  function pause(speed) {
17095    if (!swiper.autoplay.running) return;
17096    if (swiper.autoplay.paused) return;
17097    if (timeout) clearTimeout(timeout);
17098    swiper.autoplay.paused = true;
17099
17100    if (speed === 0 || !swiper.params.autoplay.waitForTransition) {
17101      swiper.autoplay.paused = false;
17102      run();
17103    } else {
17104      ['transitionend', 'webkitTransitionEnd'].forEach(event => {
17105        swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd);
17106      });
17107    }
17108  }
17109
17110  function onVisibilityChange() {
17111    const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
17112
17113    if (document.visibilityState === 'hidden' && swiper.autoplay.running) {
17114      pause();
17115    }
17116
17117    if (document.visibilityState === 'visible' && swiper.autoplay.paused) {
17118      run();
17119      swiper.autoplay.paused = false;
17120    }
17121  }
17122
17123  function onTransitionEnd(e) {
17124    if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;
17125    if (e.target !== swiper.$wrapperEl[0]) return;
17126    ['transitionend', 'webkitTransitionEnd'].forEach(event => {
17127      swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);
17128    });
17129    swiper.autoplay.paused = false;
17130
17131    if (!swiper.autoplay.running) {
17132      stop();
17133    } else {
17134      run();
17135    }
17136  }
17137
17138  function onMouseEnter() {
17139    if (swiper.params.autoplay.disableOnInteraction) {
17140      stop();
17141    } else {
17142      emit('autoplayPause');
17143      pause();
17144    }
17145
17146    ['transitionend', 'webkitTransitionEnd'].forEach(event => {
17147      swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);
17148    });
17149  }
17150
17151  function onMouseLeave() {
17152    if (swiper.params.autoplay.disableOnInteraction) {
17153      return;
17154    }
17155
17156    swiper.autoplay.paused = false;
17157    emit('autoplayResume');
17158    run();
17159  }
17160
17161  function attachMouseEvents() {
17162    if (swiper.params.autoplay.pauseOnMouseEnter) {
17163      swiper.$el.on('mouseenter', onMouseEnter);
17164      swiper.$el.on('mouseleave', onMouseLeave);
17165    }
17166  }
17167
17168  function detachMouseEvents() {
17169    swiper.$el.off('mouseenter', onMouseEnter);
17170    swiper.$el.off('mouseleave', onMouseLeave);
17171  }
17172
17173  on('init', () => {
17174    if (swiper.params.autoplay.enabled) {
17175      start();
17176      const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
17177      document.addEventListener('visibilitychange', onVisibilityChange);
17178      attachMouseEvents();
17179    }
17180  });
17181  on('beforeTransitionStart', (_s, speed, internal) => {
17182    if (swiper.autoplay.running) {
17183      if (internal || !swiper.params.autoplay.disableOnInteraction) {
17184        swiper.autoplay.pause(speed);
17185      } else {
17186        stop();
17187      }
17188    }
17189  });
17190  on('sliderFirstMove', () => {
17191    if (swiper.autoplay.running) {
17192      if (swiper.params.autoplay.disableOnInteraction) {
17193        stop();
17194      } else {
17195        pause();
17196      }
17197    }
17198  });
17199  on('touchEnd', () => {
17200    if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {
17201      run();
17202    }
17203  });
17204  on('destroy', () => {
17205    detachMouseEvents();
17206
17207    if (swiper.autoplay.running) {
17208      stop();
17209    }
17210
17211    const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
17212    document.removeEventListener('visibilitychange', onVisibilityChange);
17213  });
17214  Object.assign(swiper.autoplay, {
17215    pause,
17216    run,
17217    start,
17218    stop
17219  });
17220}
17221
17222/***/ }),
17223
vendor: 6,408 bytes, lines 17224-17428
17224/***/ "./node_modules/swiper/modules/controller/controller.js":
17225/*!**************************************************************!*\
17226  !*** ./node_modules/swiper/modules/controller/controller.js ***!
17227  \**************************************************************/
17228/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
17229
17230__webpack_require__.r(__webpack_exports__);
17231/* harmony export */ __webpack_require__.d(__webpack_exports__, {
17232/* harmony export */   "default": function() { return /* binding */ Controller; }
17233/* harmony export */ });
17234/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
17235/* eslint no-bitwise: ["error", { "allow": [">>"] }] */
17236
17237function Controller({
17238  swiper,
17239  extendParams,
17240  on
17241}) {
17242  extendParams({
17243    controller: {
17244      control: undefined,
17245      inverse: false,
17246      by: 'slide' // or 'container'
17247
17248    }
17249  });
17250  swiper.controller = {
17251    control: undefined
17252  };
17253
17254  function LinearSpline(x, y) {
17255    const binarySearch = function search() {
17256      let maxIndex;
17257      let minIndex;
17258      let guess;
17259      return (array, val) => {
17260        minIndex = -1;
17261        maxIndex = array.length;
17262
17263        while (maxIndex - minIndex > 1) {
17264          guess = maxIndex + minIndex >> 1;
17265
17266          if (array[guess] <= val) {
17267            minIndex = guess;
17268          } else {
17269            maxIndex = guess;
17270          }
17271        }
17272
17273        return maxIndex;
17274      };
17275    }();
17276
17277    this.x = x;
17278    this.y = y;
17279    this.lastIndex = x.length - 1; // Given an x value (x2), return the expected y2 value:
17280    // (x1,y1) is the known point before given value,
17281    // (x3,y3) is the known point after given value.
17282
17283    let i1;
17284    let i3;
17285
17286    this.interpolate = function interpolate(x2) {
17287      if (!x2) return 0; // Get the indexes of x1 and x3 (the array indexes before and after given x2):
17288
17289      i3 = binarySearch(this.x, x2);
17290      i1 = i3 - 1; // We have our indexes i1 & i3, so we can calculate already:
17291      // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1
17292
17293      return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];
17294    };
17295
17296    return this;
17297  } // xxx: for now i will just save one spline function to to
17298
17299
17300  function getInterpolateFunction(c) {
17301    if (!swiper.controller.spline) {
17302      swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);
17303    }
17304  }
17305
17306  function setTranslate(_t, byController) {
17307    const controlled = swiper.controller.control;
17308    let multiplier;
17309    let controlledTranslate;
17310    const Swiper = swiper.constructor;
17311
17312    function setControlledTranslate(c) {
17313      // this will create an Interpolate function based on the snapGrids
17314      // x is the Grid of the scrolled scroller and y will be the controlled scroller
17315      // it makes sense to create this only once and recall it for the interpolation
17316      // the function does a lot of value caching for performance
17317      const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;
17318
17319      if (swiper.params.controller.by === 'slide') {
17320        getInterpolateFunction(c); // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid
17321        // but it did not work out
17322
17323        controlledTranslate = -swiper.controller.spline.interpolate(-translate);
17324      }
17325
17326      if (!controlledTranslate || swiper.params.controller.by === 'container') {
17327        multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());
17328        controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();
17329      }
17330
17331      if (swiper.params.controller.inverse) {
17332        controlledTranslate = c.maxTranslate() - controlledTranslate;
17333      }
17334
17335      c.updateProgress(controlledTranslate);
17336      c.setTranslate(controlledTranslate, swiper);
17337      c.updateActiveIndex();
17338      c.updateSlidesClasses();
17339    }
17340
17341    if (Array.isArray(controlled)) {
17342      for (let i = 0; i < controlled.length; i += 1) {
17343        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
17344          setControlledTranslate(controlled[i]);
17345        }
17346      }
17347    } else if (controlled instanceof Swiper && byController !== controlled) {
17348      setControlledTranslate(controlled);
17349    }
17350  }
17351
17352  function setTransition(duration, byController) {
17353    const Swiper = swiper.constructor;
17354    const controlled = swiper.controller.control;
17355    let i;
17356
17357    function setControlledTransition(c) {
17358      c.setTransition(duration, swiper);
17359
17360      if (duration !== 0) {
17361        c.transitionStart();
17362
17363        if (c.params.autoHeight) {
17364          (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.nextTick)(() => {
17365            c.updateAutoHeight();
17366          });
17367        }
17368
17369        c.$wrapperEl.transitionEnd(() => {
17370          if (!controlled) return;
17371
17372          if (c.params.loop && swiper.params.controller.by === 'slide') {
17373            c.loopFix();
17374          }
17375
17376          c.transitionEnd();
17377        });
17378      }
17379    }
17380
17381    if (Array.isArray(controlled)) {
17382      for (i = 0; i < controlled.length; i += 1) {
17383        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
17384          setControlledTransition(controlled[i]);
17385        }
17386      }
17387    } else if (controlled instanceof Swiper && byController !== controlled) {
17388      setControlledTransition(controlled);
17389    }
17390  }
17391
17392  function removeSpline() {
17393    if (!swiper.controller.control) return;
17394
17395    if (swiper.controller.spline) {
17396      swiper.controller.spline = undefined;
17397      delete swiper.controller.spline;
17398    }
17399  }
17400
17401  on('beforeInit', () => {
17402    swiper.controller.control = swiper.params.controller.control;
17403  });
17404  on('update', () => {
17405    removeSpline();
17406  });
17407  on('resize', () => {
17408    removeSpline();
17409  });
17410  on('observerUpdate', () => {
17411    removeSpline();
17412  });
17413  on('setTranslate', (_s, translate, byController) => {
17414    if (!swiper.controller.control) return;
17415    swiper.controller.setTranslate(translate, byController);
17416  });
17417  on('setTransition', (_s, duration, byController) => {
17418    if (!swiper.controller.control) return;
17419    swiper.controller.setTransition(duration, byController);
17420  });
17421  Object.assign(swiper.controller, {
17422    setTranslate,
17423    setTransition
17424  });
17425}
17426
17427/***/ }),
17428
vendor: 5,594 bytes, lines 17429-17574
17429/***/ "./node_modules/swiper/modules/effect-cards/effect-cards.js":
17430/*!******************************************************************!*\
17431  !*** ./node_modules/swiper/modules/effect-cards/effect-cards.js ***!
17432  \******************************************************************/
17433/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
17434
17435__webpack_require__.r(__webpack_exports__);
17436/* harmony export */ __webpack_require__.d(__webpack_exports__, {
17437/* harmony export */   "default": function() { return /* binding */ EffectCards; }
17438/* harmony export */ });
17439/* harmony import */ var _shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/create-shadow.js */ "./node_modules/swiper/shared/create-shadow.js");
17440/* harmony import */ var _shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/effect-init.js */ "./node_modules/swiper/shared/effect-init.js");
17441/* harmony import */ var _shared_effect_target_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/effect-target.js */ "./node_modules/swiper/shared/effect-target.js");
17442/* harmony import */ var _shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../shared/effect-virtual-transition-end.js */ "./node_modules/swiper/shared/effect-virtual-transition-end.js");
17443
17444
17445
17446
17447function EffectCards({
17448  swiper,
17449  extendParams,
17450  on
17451}) {
17452  extendParams({
17453    cardsEffect: {
17454      slideShadows: true,
17455      transformEl: null,
17456      rotate: true,
17457      perSlideRotate: 2,
17458      perSlideOffset: 8
17459    }
17460  });
17461
17462  const setTranslate = () => {
17463    const {
17464      slides,
17465      activeIndex
17466    } = swiper;
17467    const params = swiper.params.cardsEffect;
17468    const {
17469      startTranslate,
17470      isTouched
17471    } = swiper.touchEventsData;
17472    const currentTranslate = swiper.translate;
17473
17474    for (let i = 0; i < slides.length; i += 1) {
17475      const $slideEl = slides.eq(i);
17476      const slideProgress = $slideEl[0].progress;
17477      const progress = Math.min(Math.max(slideProgress, -4), 4);
17478      let offset = $slideEl[0].swiperSlideOffset;
17479
17480      if (swiper.params.centeredSlides && !swiper.params.cssMode) {
17481        swiper.$wrapperEl.transform(`translateX(${swiper.minTranslate()}px)`);
17482      }
17483
17484      if (swiper.params.centeredSlides && swiper.params.cssMode) {
17485        offset -= slides[0].swiperSlideOffset;
17486      }
17487
17488      let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;
17489      let tY = 0;
17490      const tZ = -100 * Math.abs(progress);
17491      let scale = 1;
17492      let rotate = -params.perSlideRotate * progress;
17493      let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;
17494      const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;
17495      const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;
17496      const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;
17497
17498      if (isSwipeToNext || isSwipeToPrev) {
17499        const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;
17500        rotate += -28 * progress * subProgress;
17501        scale += -0.5 * subProgress;
17502        tXAdd += 96 * subProgress;
17503        tY = `${-25 * subProgress * Math.abs(progress)}%`;
17504      }
17505
17506      if (progress < 0) {
17507        // next
17508        tX = `calc(${tX}px + (${tXAdd * Math.abs(progress)}%))`;
17509      } else if (progress > 0) {
17510        // prev
17511        tX = `calc(${tX}px + (-${tXAdd * Math.abs(progress)}%))`;
17512      } else {
17513        tX = `${tX}px`;
17514      }
17515
17516      if (!swiper.isHorizontal()) {
17517        const prevY = tY;
17518        tY = tX;
17519        tX = prevY;
17520      }
17521
17522      const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;
17523      const transform = `
17524        translate3d(${tX}, ${tY}, ${tZ}px)
17525        rotateZ(${params.rotate ? rotate : 0}deg)
17526        scale(${scaleString})
17527      `;
17528
17529      if (params.slideShadows) {
17530        // Set shadows
17531        let $shadowEl = $slideEl.find('.swiper-slide-shadow');
17532
17533        if ($shadowEl.length === 0) {
17534          $shadowEl = (0,_shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(params, $slideEl);
17535        }
17536
17537        if ($shadowEl.length) $shadowEl[0].style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);
17538      }
17539
17540      $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;
17541      const $targetEl = (0,_shared_effect_target_js__WEBPACK_IMPORTED_MODULE_2__["default"])(params, $slideEl);
17542      $targetEl.transform(transform);
17543    }
17544  };
17545
17546  const setTransition = duration => {
17547    const {
17548      transformEl
17549    } = swiper.params.cardsEffect;
17550    const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;
17551    $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);
17552    (0,_shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_3__["default"])({
17553      swiper,
17554      duration,
17555      transformEl
17556    });
17557  };
17558
17559  (0,_shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__["default"])({
17560    effect: 'cards',
17561    swiper,
17562    on,
17563    setTranslate,
17564    setTransition,
17565    perspective: () => true,
17566    overwriteParams: () => ({
17567      watchSlidesProgress: true,
17568      virtualTranslate: !swiper.params.cssMode
17569    })
17570  });
17571}
17572
17573/***/ }),
17574
vendor: 5,449 bytes, lines 17575-17694
17575/***/ "./node_modules/swiper/modules/effect-coverflow/effect-coverflow.js":
17576/*!**************************************************************************!*\
17577  !*** ./node_modules/swiper/modules/effect-coverflow/effect-coverflow.js ***!
17578  \**************************************************************************/
17579/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
17580
17581__webpack_require__.r(__webpack_exports__);
17582/* harmony export */ __webpack_require__.d(__webpack_exports__, {
17583/* harmony export */   "default": function() { return /* binding */ EffectCoverflow; }
17584/* harmony export */ });
17585/* harmony import */ var _shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/create-shadow.js */ "./node_modules/swiper/shared/create-shadow.js");
17586/* harmony import */ var _shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/effect-init.js */ "./node_modules/swiper/shared/effect-init.js");
17587/* harmony import */ var _shared_effect_target_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/effect-target.js */ "./node_modules/swiper/shared/effect-target.js");
17588
17589
17590
17591function EffectCoverflow({
17592  swiper,
17593  extendParams,
17594  on
17595}) {
17596  extendParams({
17597    coverflowEffect: {
17598      rotate: 50,
17599      stretch: 0,
17600      depth: 100,
17601      scale: 1,
17602      modifier: 1,
17603      slideShadows: true,
17604      transformEl: null
17605    }
17606  });
17607
17608  const setTranslate = () => {
17609    const {
17610      width: swiperWidth,
17611      height: swiperHeight,
17612      slides,
17613      slidesSizesGrid
17614    } = swiper;
17615    const params = swiper.params.coverflowEffect;
17616    const isHorizontal = swiper.isHorizontal();
17617    const transform = swiper.translate;
17618    const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;
17619    const rotate = isHorizontal ? params.rotate : -params.rotate;
17620    const translate = params.depth; // Each slide offset from center
17621
17622    for (let i = 0, length = slides.length; i < length; i += 1) {
17623      const $slideEl = slides.eq(i);
17624      const slideSize = slidesSizesGrid[i];
17625      const slideOffset = $slideEl[0].swiperSlideOffset;
17626      const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;
17627      const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;
17628      let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;
17629      let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; // var rotateZ = 0
17630
17631      let translateZ = -translate * Math.abs(offsetMultiplier);
17632      let stretch = params.stretch; // Allow percentage to make a relative stretch for responsive sliders
17633
17634      if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {
17635        stretch = parseFloat(params.stretch) / 100 * slideSize;
17636      }
17637
17638      let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;
17639      let translateX = isHorizontal ? stretch * offsetMultiplier : 0;
17640      let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); // Fix for ultra small values
17641
17642      if (Math.abs(translateX) < 0.001) translateX = 0;
17643      if (Math.abs(translateY) < 0.001) translateY = 0;
17644      if (Math.abs(translateZ) < 0.001) translateZ = 0;
17645      if (Math.abs(rotateY) < 0.001) rotateY = 0;
17646      if (Math.abs(rotateX) < 0.001) rotateX = 0;
17647      if (Math.abs(scale) < 0.001) scale = 0;
17648      const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px)  rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;
17649      const $targetEl = (0,_shared_effect_target_js__WEBPACK_IMPORTED_MODULE_2__["default"])(params, $slideEl);
17650      $targetEl.transform(slideTransform);
17651      $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;
17652
17653      if (params.slideShadows) {
17654        // Set shadows
17655        let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
17656        let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
17657
17658        if ($shadowBeforeEl.length === 0) {
17659          $shadowBeforeEl = (0,_shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(params, $slideEl, isHorizontal ? 'left' : 'top');
17660        }
17661
17662        if ($shadowAfterEl.length === 0) {
17663          $shadowAfterEl = (0,_shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(params, $slideEl, isHorizontal ? 'right' : 'bottom');
17664        }
17665
17666        if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;
17667        if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;
17668      }
17669    }
17670  };
17671
17672  const setTransition = duration => {
17673    const {
17674      transformEl
17675    } = swiper.params.coverflowEffect;
17676    const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;
17677    $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);
17678  };
17679
17680  (0,_shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__["default"])({
17681    effect: 'coverflow',
17682    swiper,
17683    on,
17684    setTranslate,
17685    setTransition,
17686    perspective: () => true,
17687    overwriteParams: () => ({
17688      watchSlidesProgress: true
17689    })
17690  });
17691}
17692
17693/***/ }),
17694
vendor: 6,175 bytes, lines 17695-17865
17695/***/ "./node_modules/swiper/modules/effect-creative/effect-creative.js":
17696/*!************************************************************************!*\
17697  !*** ./node_modules/swiper/modules/effect-creative/effect-creative.js ***!
17698  \************************************************************************/
17699/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
17700
17701__webpack_require__.r(__webpack_exports__);
17702/* harmony export */ __webpack_require__.d(__webpack_exports__, {
17703/* harmony export */   "default": function() { return /* binding */ EffectCreative; }
17704/* harmony export */ });
17705/* harmony import */ var _shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/create-shadow.js */ "./node_modules/swiper/shared/create-shadow.js");
17706/* harmony import */ var _shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/effect-init.js */ "./node_modules/swiper/shared/effect-init.js");
17707/* harmony import */ var _shared_effect_target_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/effect-target.js */ "./node_modules/swiper/shared/effect-target.js");
17708/* harmony import */ var _shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../shared/effect-virtual-transition-end.js */ "./node_modules/swiper/shared/effect-virtual-transition-end.js");
17709
17710
17711
17712
17713function EffectCreative({
17714  swiper,
17715  extendParams,
17716  on
17717}) {
17718  extendParams({
17719    creativeEffect: {
17720      transformEl: null,
17721      limitProgress: 1,
17722      shadowPerProgress: false,
17723      progressMultiplier: 1,
17724      perspective: true,
17725      prev: {
17726        translate: [0, 0, 0],
17727        rotate: [0, 0, 0],
17728        opacity: 1,
17729        scale: 1
17730      },
17731      next: {
17732        translate: [0, 0, 0],
17733        rotate: [0, 0, 0],
17734        opacity: 1,
17735        scale: 1
17736      }
17737    }
17738  });
17739
17740  const getTranslateValue = value => {
17741    if (typeof value === 'string') return value;
17742    return `${value}px`;
17743  };
17744
17745  const setTranslate = () => {
17746    const {
17747      slides,
17748      $wrapperEl,
17749      slidesSizesGrid
17750    } = swiper;
17751    const params = swiper.params.creativeEffect;
17752    const {
17753      progressMultiplier: multiplier
17754    } = params;
17755    const isCenteredSlides = swiper.params.centeredSlides;
17756
17757    if (isCenteredSlides) {
17758      const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;
17759      $wrapperEl.transform(`translateX(calc(50% - ${margin}px))`);
17760    }
17761
17762    for (let i = 0; i < slides.length; i += 1) {
17763      const $slideEl = slides.eq(i);
17764      const slideProgress = $slideEl[0].progress;
17765      const progress = Math.min(Math.max($slideEl[0].progress, -params.limitProgress), params.limitProgress);
17766      let originalProgress = progress;
17767
17768      if (!isCenteredSlides) {
17769        originalProgress = Math.min(Math.max($slideEl[0].originalProgress, -params.limitProgress), params.limitProgress);
17770      }
17771
17772      const offset = $slideEl[0].swiperSlideOffset;
17773      const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];
17774      const r = [0, 0, 0];
17775      let custom = false;
17776
17777      if (!swiper.isHorizontal()) {
17778        t[1] = t[0];
17779        t[0] = 0;
17780      }
17781
17782      let data = {
17783        translate: [0, 0, 0],
17784        rotate: [0, 0, 0],
17785        scale: 1,
17786        opacity: 1
17787      };
17788
17789      if (progress < 0) {
17790        data = params.next;
17791        custom = true;
17792      } else if (progress > 0) {
17793        data = params.prev;
17794        custom = true;
17795      } // set translate
17796
17797
17798      t.forEach((value, index) => {
17799        t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;
17800      }); // set rotates
17801
17802      r.forEach((value, index) => {
17803        r[index] = data.rotate[index] * Math.abs(progress * multiplier);
17804      });
17805      $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;
17806      const translateString = t.join(', ');
17807      const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;
17808      const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;
17809      const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;
17810      const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; // Set shadows
17811
17812      if (custom && data.shadow || !custom) {
17813        let $shadowEl = $slideEl.children('.swiper-slide-shadow');
17814
17815        if ($shadowEl.length === 0 && data.shadow) {
17816          $shadowEl = (0,_shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(params, $slideEl);
17817        }
17818
17819        if ($shadowEl.length) {
17820          const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;
17821          $shadowEl[0].style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);
17822        }
17823      }
17824
17825      const $targetEl = (0,_shared_effect_target_js__WEBPACK_IMPORTED_MODULE_2__["default"])(params, $slideEl);
17826      $targetEl.transform(transform).css({
17827        opacity: opacityString
17828      });
17829
17830      if (data.origin) {
17831        $targetEl.css('transform-origin', data.origin);
17832      }
17833    }
17834  };
17835
17836  const setTransition = duration => {
17837    const {
17838      transformEl
17839    } = swiper.params.creativeEffect;
17840    const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;
17841    $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);
17842    (0,_shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_3__["default"])({
17843      swiper,
17844      duration,
17845      transformEl,
17846      allSlides: true
17847    });
17848  };
17849
17850  (0,_shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__["default"])({
17851    effect: 'creative',
17852    swiper,
17853    on,
17854    setTranslate,
17855    setTransition,
17856    perspective: () => swiper.params.creativeEffect.perspective,
17857    overwriteParams: () => ({
17858      watchSlidesProgress: true,
17859      virtualTranslate: !swiper.params.cssMode
17860    })
17861  });
17862}
17863
17864/***/ }),
17865
vendor: 7,392 bytes, lines 17866-18075
17866/***/ "./node_modules/swiper/modules/effect-cube/effect-cube.js":
17867/*!****************************************************************!*\
17868  !*** ./node_modules/swiper/modules/effect-cube/effect-cube.js ***!
17869  \****************************************************************/
17870/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
17871
17872__webpack_require__.r(__webpack_exports__);
17873/* harmony export */ __webpack_require__.d(__webpack_exports__, {
17874/* harmony export */   "default": function() { return /* binding */ EffectCube; }
17875/* harmony export */ });
17876/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
17877/* harmony import */ var _shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/effect-init.js */ "./node_modules/swiper/shared/effect-init.js");
17878
17879
17880function EffectCube({
17881  swiper,
17882  extendParams,
17883  on
17884}) {
17885  extendParams({
17886    cubeEffect: {
17887      slideShadows: true,
17888      shadow: true,
17889      shadowOffset: 20,
17890      shadowScale: 0.94
17891    }
17892  });
17893
17894  const createSlideShadows = ($slideEl, progress, isHorizontal) => {
17895    let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
17896    let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
17897
17898    if (shadowBefore.length === 0) {
17899      shadowBefore = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(`<div class="swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}"></div>`);
17900      $slideEl.append(shadowBefore);
17901    }
17902
17903    if (shadowAfter.length === 0) {
17904      shadowAfter = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(`<div class="swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}"></div>`);
17905      $slideEl.append(shadowAfter);
17906    }
17907
17908    if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);
17909    if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);
17910  };
17911
17912  const recreateShadows = () => {
17913    // create new ones
17914    const isHorizontal = swiper.isHorizontal();
17915    swiper.slides.each(slideEl => {
17916      const progress = Math.max(Math.min(slideEl.progress, 1), -1);
17917      createSlideShadows((0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(slideEl), progress, isHorizontal);
17918    });
17919  };
17920
17921  const setTranslate = () => {
17922    const {
17923      $el,
17924      $wrapperEl,
17925      slides,
17926      width: swiperWidth,
17927      height: swiperHeight,
17928      rtlTranslate: rtl,
17929      size: swiperSize,
17930      browser
17931    } = swiper;
17932    const params = swiper.params.cubeEffect;
17933    const isHorizontal = swiper.isHorizontal();
17934    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
17935    let wrapperRotate = 0;
17936    let $cubeShadowEl;
17937
17938    if (params.shadow) {
17939      if (isHorizontal) {
17940        $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');
17941
17942        if ($cubeShadowEl.length === 0) {
17943          $cubeShadowEl = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])('<div class="swiper-cube-shadow"></div>');
17944          $wrapperEl.append($cubeShadowEl);
17945        }
17946
17947        $cubeShadowEl.css({
17948          height: `${swiperWidth}px`
17949        });
17950      } else {
17951        $cubeShadowEl = $el.find('.swiper-cube-shadow');
17952
17953        if ($cubeShadowEl.length === 0) {
17954          $cubeShadowEl = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])('<div class="swiper-cube-shadow"></div>');
17955          $el.append($cubeShadowEl);
17956        }
17957      }
17958    }
17959
17960    for (let i = 0; i < slides.length; i += 1) {
17961      const $slideEl = slides.eq(i);
17962      let slideIndex = i;
17963
17964      if (isVirtual) {
17965        slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);
17966      }
17967
17968      let slideAngle = slideIndex * 90;
17969      let round = Math.floor(slideAngle / 360);
17970
17971      if (rtl) {
17972        slideAngle = -slideAngle;
17973        round = Math.floor(-slideAngle / 360);
17974      }
17975
17976      const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
17977      let tx = 0;
17978      let ty = 0;
17979      let tz = 0;
17980
17981      if (slideIndex % 4 === 0) {
17982        tx = -round * 4 * swiperSize;
17983        tz = 0;
17984      } else if ((slideIndex - 1) % 4 === 0) {
17985        tx = 0;
17986        tz = -round * 4 * swiperSize;
17987      } else if ((slideIndex - 2) % 4 === 0) {
17988        tx = swiperSize + round * 4 * swiperSize;
17989        tz = swiperSize;
17990      } else if ((slideIndex - 3) % 4 === 0) {
17991        tx = -swiperSize;
17992        tz = 3 * swiperSize + swiperSize * 4 * round;
17993      }
17994
17995      if (rtl) {
17996        tx = -tx;
17997      }
17998
17999      if (!isHorizontal) {
18000        ty = tx;
18001        tx = 0;
18002      }
18003
18004      const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;
18005
18006      if (progress <= 1 && progress > -1) {
18007        wrapperRotate = slideIndex * 90 + progress * 90;
18008        if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;
18009      }
18010
18011      $slideEl.transform(transform);
18012
18013      if (params.slideShadows) {
18014        createSlideShadows($slideEl, progress, isHorizontal);
18015      }
18016    }
18017
18018    $wrapperEl.css({
18019      '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,
18020      'transform-origin': `50% 50% -${swiperSize / 2}px`
18021    });
18022
18023    if (params.shadow) {
18024      if (isHorizontal) {
18025        $cubeShadowEl.transform(`translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`);
18026      } else {
18027        const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;
18028        const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);
18029        const scale1 = params.shadowScale;
18030        const scale2 = params.shadowScale / multiplier;
18031        const offset = params.shadowOffset;
18032        $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`);
18033      }
18034    }
18035
18036    const zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0;
18037    $wrapperEl.transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);
18038    $wrapperEl[0].style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);
18039  };
18040
18041  const setTransition = duration => {
18042    const {
18043      $el,
18044      slides
18045    } = swiper;
18046    slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);
18047
18048    if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {
18049      $el.find('.swiper-cube-shadow').transition(duration);
18050    }
18051  };
18052
18053  (0,_shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__["default"])({
18054    effect: 'cube',
18055    swiper,
18056    on,
18057    setTranslate,
18058    setTransition,
18059    recreateShadows,
18060    getEffectParams: () => swiper.params.cubeEffect,
18061    perspective: () => true,
18062    overwriteParams: () => ({
18063      slidesPerView: 1,
18064      slidesPerGroup: 1,
18065      watchSlidesProgress: true,
18066      resistanceRatio: 0,
18067      spaceBetween: 0,
18068      centeredSlides: false,
18069      virtualTranslate: true
18070    })
18071  });
18072}
18073
18074/***/ }),
18075
vendor: 2,981 bytes, lines 18076-18161
18076/***/ "./node_modules/swiper/modules/effect-fade/effect-fade.js":
18077/*!****************************************************************!*\
18078  !*** ./node_modules/swiper/modules/effect-fade/effect-fade.js ***!
18079  \****************************************************************/
18080/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
18081
18082__webpack_require__.r(__webpack_exports__);
18083/* harmony export */ __webpack_require__.d(__webpack_exports__, {
18084/* harmony export */   "default": function() { return /* binding */ EffectFade; }
18085/* harmony export */ });
18086/* harmony import */ var _shared_effect_init_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/effect-init.js */ "./node_modules/swiper/shared/effect-init.js");
18087/* harmony import */ var _shared_effect_target_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/effect-target.js */ "./node_modules/swiper/shared/effect-target.js");
18088/* harmony import */ var _shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/effect-virtual-transition-end.js */ "./node_modules/swiper/shared/effect-virtual-transition-end.js");
18089
18090
18091
18092function EffectFade({
18093  swiper,
18094  extendParams,
18095  on
18096}) {
18097  extendParams({
18098    fadeEffect: {
18099      crossFade: false,
18100      transformEl: null
18101    }
18102  });
18103
18104  const setTranslate = () => {
18105    const {
18106      slides
18107    } = swiper;
18108    const params = swiper.params.fadeEffect;
18109
18110    for (let i = 0; i < slides.length; i += 1) {
18111      const $slideEl = swiper.slides.eq(i);
18112      const offset = $slideEl[0].swiperSlideOffset;
18113      let tx = -offset;
18114      if (!swiper.params.virtualTranslate) tx -= swiper.translate;
18115      let ty = 0;
18116
18117      if (!swiper.isHorizontal()) {
18118        ty = tx;
18119        tx = 0;
18120      }
18121
18122      const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs($slideEl[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);
18123      const $targetEl = (0,_shared_effect_target_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params, $slideEl);
18124      $targetEl.css({
18125        opacity: slideOpacity
18126      }).transform(`translate3d(${tx}px, ${ty}px, 0px)`);
18127    }
18128  };
18129
18130  const setTransition = duration => {
18131    const {
18132      transformEl
18133    } = swiper.params.fadeEffect;
18134    const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;
18135    $transitionElements.transition(duration);
18136    (0,_shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_2__["default"])({
18137      swiper,
18138      duration,
18139      transformEl,
18140      allSlides: true
18141    });
18142  };
18143
18144  (0,_shared_effect_init_js__WEBPACK_IMPORTED_MODULE_0__["default"])({
18145    effect: 'fade',
18146    swiper,
18147    on,
18148    setTranslate,
18149    setTransition,
18150    overwriteParams: () => ({
18151      slidesPerView: 1,
18152      slidesPerGroup: 1,
18153      watchSlidesProgress: true,
18154      spaceBetween: 0,
18155      virtualTranslate: !swiper.params.cssMode
18156    })
18157  });
18158}
18159
18160/***/ }),
18161
vendor: 5,354 bytes, lines 18162-18302
18162/***/ "./node_modules/swiper/modules/effect-flip/effect-flip.js":
18163/*!****************************************************************!*\
18164  !*** ./node_modules/swiper/modules/effect-flip/effect-flip.js ***!
18165  \****************************************************************/
18166/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
18167
18168__webpack_require__.r(__webpack_exports__);
18169/* harmony export */ __webpack_require__.d(__webpack_exports__, {
18170/* harmony export */   "default": function() { return /* binding */ EffectFlip; }
18171/* harmony export */ });
18172/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
18173/* harmony import */ var _shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/create-shadow.js */ "./node_modules/swiper/shared/create-shadow.js");
18174/* harmony import */ var _shared_effect_init_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/effect-init.js */ "./node_modules/swiper/shared/effect-init.js");
18175/* harmony import */ var _shared_effect_target_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../shared/effect-target.js */ "./node_modules/swiper/shared/effect-target.js");
18176/* harmony import */ var _shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../shared/effect-virtual-transition-end.js */ "./node_modules/swiper/shared/effect-virtual-transition-end.js");
18177
18178
18179
18180
18181
18182function EffectFlip({
18183  swiper,
18184  extendParams,
18185  on
18186}) {
18187  extendParams({
18188    flipEffect: {
18189      slideShadows: true,
18190      limitRotation: true,
18191      transformEl: null
18192    }
18193  });
18194
18195  const createSlideShadows = ($slideEl, progress, params) => {
18196    let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
18197    let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
18198
18199    if (shadowBefore.length === 0) {
18200      shadowBefore = (0,_shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params, $slideEl, swiper.isHorizontal() ? 'left' : 'top');
18201    }
18202
18203    if (shadowAfter.length === 0) {
18204      shadowAfter = (0,_shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params, $slideEl, swiper.isHorizontal() ? 'right' : 'bottom');
18205    }
18206
18207    if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);
18208    if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);
18209  };
18210
18211  const recreateShadows = () => {
18212    // Set shadows
18213    const params = swiper.params.flipEffect;
18214    swiper.slides.each(slideEl => {
18215      const $slideEl = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(slideEl);
18216      let progress = $slideEl[0].progress;
18217
18218      if (swiper.params.flipEffect.limitRotation) {
18219        progress = Math.max(Math.min(slideEl.progress, 1), -1);
18220      }
18221
18222      createSlideShadows($slideEl, progress, params);
18223    });
18224  };
18225
18226  const setTranslate = () => {
18227    const {
18228      slides,
18229      rtlTranslate: rtl
18230    } = swiper;
18231    const params = swiper.params.flipEffect;
18232
18233    for (let i = 0; i < slides.length; i += 1) {
18234      const $slideEl = slides.eq(i);
18235      let progress = $slideEl[0].progress;
18236
18237      if (swiper.params.flipEffect.limitRotation) {
18238        progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
18239      }
18240
18241      const offset = $slideEl[0].swiperSlideOffset;
18242      const rotate = -180 * progress;
18243      let rotateY = rotate;
18244      let rotateX = 0;
18245      let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;
18246      let ty = 0;
18247
18248      if (!swiper.isHorizontal()) {
18249        ty = tx;
18250        tx = 0;
18251        rotateX = -rotateY;
18252        rotateY = 0;
18253      } else if (rtl) {
18254        rotateY = -rotateY;
18255      }
18256
18257      $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;
18258
18259      if (params.slideShadows) {
18260        createSlideShadows($slideEl, progress, params);
18261      }
18262
18263      const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;
18264      const $targetEl = (0,_shared_effect_target_js__WEBPACK_IMPORTED_MODULE_3__["default"])(params, $slideEl);
18265      $targetEl.transform(transform);
18266    }
18267  };
18268
18269  const setTransition = duration => {
18270    const {
18271      transformEl
18272    } = swiper.params.flipEffect;
18273    const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;
18274    $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);
18275    (0,_shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_4__["default"])({
18276      swiper,
18277      duration,
18278      transformEl
18279    });
18280  };
18281
18282  (0,_shared_effect_init_js__WEBPACK_IMPORTED_MODULE_2__["default"])({
18283    effect: 'flip',
18284    swiper,
18285    on,
18286    setTranslate,
18287    setTransition,
18288    recreateShadows,
18289    getEffectParams: () => swiper.params.flipEffect,
18290    perspective: () => true,
18291    overwriteParams: () => ({
18292      slidesPerView: 1,
18293      slidesPerGroup: 1,
18294      watchSlidesProgress: true,
18295      spaceBetween: 0,
18296      virtualTranslate: !swiper.params.cssMode
18297    })
18298  });
18299}
18300
18301/***/ }),
18302
vendor: 8,965 bytes, lines 18303-18572
18303/***/ "./node_modules/swiper/modules/free-mode/free-mode.js":
18304/*!************************************************************!*\
18305  !*** ./node_modules/swiper/modules/free-mode/free-mode.js ***!
18306  \************************************************************/
18307/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
18308
18309__webpack_require__.r(__webpack_exports__);
18310/* harmony export */ __webpack_require__.d(__webpack_exports__, {
18311/* harmony export */   "default": function() { return /* binding */ freeMode; }
18312/* harmony export */ });
18313/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
18314
18315function freeMode({
18316  swiper,
18317  extendParams,
18318  emit,
18319  once
18320}) {
18321  extendParams({
18322    freeMode: {
18323      enabled: false,
18324      momentum: true,
18325      momentumRatio: 1,
18326      momentumBounce: true,
18327      momentumBounceRatio: 1,
18328      momentumVelocityRatio: 1,
18329      sticky: false,
18330      minimumVelocity: 0.02
18331    }
18332  });
18333
18334  function onTouchStart() {
18335    const translate = swiper.getTranslate();
18336    swiper.setTranslate(translate);
18337    swiper.setTransition(0);
18338    swiper.touchEventsData.velocities.length = 0;
18339    swiper.freeMode.onTouchEnd({
18340      currentPos: swiper.rtl ? swiper.translate : -swiper.translate
18341    });
18342  }
18343
18344  function onTouchMove() {
18345    const {
18346      touchEventsData: data,
18347      touches
18348    } = swiper; // Velocity
18349
18350    if (data.velocities.length === 0) {
18351      data.velocities.push({
18352        position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],
18353        time: data.touchStartTime
18354      });
18355    }
18356
18357    data.velocities.push({
18358      position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],
18359      time: (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.now)()
18360    });
18361  }
18362
18363  function onTouchEnd({
18364    currentPos
18365  }) {
18366    const {
18367      params,
18368      $wrapperEl,
18369      rtlTranslate: rtl,
18370      snapGrid,
18371      touchEventsData: data
18372    } = swiper; // Time diff
18373
18374    const touchEndTime = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.now)();
18375    const timeDiff = touchEndTime - data.touchStartTime;
18376
18377    if (currentPos < -swiper.minTranslate()) {
18378      swiper.slideTo(swiper.activeIndex);
18379      return;
18380    }
18381
18382    if (currentPos > -swiper.maxTranslate()) {
18383      if (swiper.slides.length < snapGrid.length) {
18384        swiper.slideTo(snapGrid.length - 1);
18385      } else {
18386        swiper.slideTo(swiper.slides.length - 1);
18387      }
18388
18389      return;
18390    }
18391
18392    if (params.freeMode.momentum) {
18393      if (data.velocities.length > 1) {
18394        const lastMoveEvent = data.velocities.pop();
18395        const velocityEvent = data.velocities.pop();
18396        const distance = lastMoveEvent.position - velocityEvent.position;
18397        const time = lastMoveEvent.time - velocityEvent.time;
18398        swiper.velocity = distance / time;
18399        swiper.velocity /= 2;
18400
18401        if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {
18402          swiper.velocity = 0;
18403        } // this implies that the user stopped moving a finger then released.
18404        // There would be no events with distance zero, so the last event is stale.
18405
18406
18407        if (time > 150 || (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.now)() - lastMoveEvent.time > 300) {
18408          swiper.velocity = 0;
18409        }
18410      } else {
18411        swiper.velocity = 0;
18412      }
18413
18414      swiper.velocity *= params.freeMode.momentumVelocityRatio;
18415      data.velocities.length = 0;
18416      let momentumDuration = 1000 * params.freeMode.momentumRatio;
18417      const momentumDistance = swiper.velocity * momentumDuration;
18418      let newPosition = swiper.translate + momentumDistance;
18419      if (rtl) newPosition = -newPosition;
18420      let doBounce = false;
18421      let afterBouncePosition;
18422      const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;
18423      let needsLoopFix;
18424
18425      if (newPosition < swiper.maxTranslate()) {
18426        if (params.freeMode.momentumBounce) {
18427          if (newPosition + swiper.maxTranslate() < -bounceAmount) {
18428            newPosition = swiper.maxTranslate() - bounceAmount;
18429          }
18430
18431          afterBouncePosition = swiper.maxTranslate();
18432          doBounce = true;
18433          data.allowMomentumBounce = true;
18434        } else {
18435          newPosition = swiper.maxTranslate();
18436        }
18437
18438        if (params.loop && params.centeredSlides) needsLoopFix = true;
18439      } else if (newPosition > swiper.minTranslate()) {
18440        if (params.freeMode.momentumBounce) {
18441          if (newPosition - swiper.minTranslate() > bounceAmount) {
18442            newPosition = swiper.minTranslate() + bounceAmount;
18443          }
18444
18445          afterBouncePosition = swiper.minTranslate();
18446          doBounce = true;
18447          data.allowMomentumBounce = true;
18448        } else {
18449          newPosition = swiper.minTranslate();
18450        }
18451
18452        if (params.loop && params.centeredSlides) needsLoopFix = true;
18453      } else if (params.freeMode.sticky) {
18454        let nextSlide;
18455
18456        for (let j = 0; j < snapGrid.length; j += 1) {
18457          if (snapGrid[j] > -newPosition) {
18458            nextSlide = j;
18459            break;
18460          }
18461        }
18462
18463        if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {
18464          newPosition = snapGrid[nextSlide];
18465        } else {
18466          newPosition = snapGrid[nextSlide - 1];
18467        }
18468
18469        newPosition = -newPosition;
18470      }
18471
18472      if (needsLoopFix) {
18473        once('transitionEnd', () => {
18474          swiper.loopFix();
18475        });
18476      } // Fix duration
18477
18478
18479      if (swiper.velocity !== 0) {
18480        if (rtl) {
18481          momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);
18482        } else {
18483          momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);
18484        }
18485
18486        if (params.freeMode.sticky) {
18487          // If freeMode.sticky is active and the user ends a swipe with a slow-velocity
18488          // event, then durations can be 20+ seconds to slide one (or zero!) slides.
18489          // It's easy to see this when simulating touch with mouse events. To fix this,
18490          // limit single-slide swipes to the default slide duration. This also has the
18491          // nice side effect of matching slide speed if the user stopped moving before
18492          // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.
18493          // For faster swipes, also apply limits (albeit higher ones).
18494          const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);
18495          const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];
18496
18497          if (moveDistance < currentSlideSize) {
18498            momentumDuration = params.speed;
18499          } else if (moveDistance < 2 * currentSlideSize) {
18500            momentumDuration = params.speed * 1.5;
18501          } else {
18502            momentumDuration = params.speed * 2.5;
18503          }
18504        }
18505      } else if (params.freeMode.sticky) {
18506        swiper.slideToClosest();
18507        return;
18508      }
18509
18510      if (params.freeMode.momentumBounce && doBounce) {
18511        swiper.updateProgress(afterBouncePosition);
18512        swiper.setTransition(momentumDuration);
18513        swiper.setTranslate(newPosition);
18514        swiper.transitionStart(true, swiper.swipeDirection);
18515        swiper.animating = true;
18516        $wrapperEl.transitionEnd(() => {
18517          if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;
18518          emit('momentumBounce');
18519          swiper.setTransition(params.speed);
18520          setTimeout(() => {
18521            swiper.setTranslate(afterBouncePosition);
18522            $wrapperEl.transitionEnd(() => {
18523              if (!swiper || swiper.destroyed) return;
18524              swiper.transitionEnd();
18525            });
18526          }, 0);
18527        });
18528      } else if (swiper.velocity) {
18529        emit('_freeModeNoMomentumRelease');
18530        swiper.updateProgress(newPosition);
18531        swiper.setTransition(momentumDuration);
18532        swiper.setTranslate(newPosition);
18533        swiper.transitionStart(true, swiper.swipeDirection);
18534
18535        if (!swiper.animating) {
18536          swiper.animating = true;
18537          $wrapperEl.transitionEnd(() => {
18538            if (!swiper || swiper.destroyed) return;
18539            swiper.transitionEnd();
18540          });
18541        }
18542      } else {
18543        swiper.updateProgress(newPosition);
18544      }
18545
18546      swiper.updateActiveIndex();
18547      swiper.updateSlidesClasses();
18548    } else if (params.freeMode.sticky) {
18549      swiper.slideToClosest();
18550      return;
18551    } else if (params.freeMode) {
18552      emit('_freeModeNoMomentumRelease');
18553    }
18554
18555    if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {
18556      swiper.updateProgress();
18557      swiper.updateActiveIndex();
18558      swiper.updateSlidesClasses();
18559    }
18560  }
18561
18562  Object.assign(swiper, {
18563    freeMode: {
18564      onTouchStart,
18565      onTouchMove,
18566      onTouchEnd
18567    }
18568  });
18569}
18570
18571/***/ }),
18572
vendor: 3,818 bytes, lines 18573-18701
18573/***/ "./node_modules/swiper/modules/grid/grid.js":
18574/*!**************************************************!*\
18575  !*** ./node_modules/swiper/modules/grid/grid.js ***!
18576  \**************************************************/
18577/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
18578
18579__webpack_require__.r(__webpack_exports__);
18580/* harmony export */ __webpack_require__.d(__webpack_exports__, {
18581/* harmony export */   "default": function() { return /* binding */ Grid; }
18582/* harmony export */ });
18583function Grid({
18584  swiper,
18585  extendParams
18586}) {
18587  extendParams({
18588    grid: {
18589      rows: 1,
18590      fill: 'column'
18591    }
18592  });
18593  let slidesNumberEvenToRows;
18594  let slidesPerRow;
18595  let numFullColumns;
18596
18597  const initSlides = slidesLength => {
18598    const {
18599      slidesPerView
18600    } = swiper.params;
18601    const {
18602      rows,
18603      fill
18604    } = swiper.params.grid;
18605    slidesPerRow = slidesNumberEvenToRows / rows;
18606    numFullColumns = Math.floor(slidesLength / rows);
18607
18608    if (Math.floor(slidesLength / rows) === slidesLength / rows) {
18609      slidesNumberEvenToRows = slidesLength;
18610    } else {
18611      slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;
18612    }
18613
18614    if (slidesPerView !== 'auto' && fill === 'row') {
18615      slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);
18616    }
18617  };
18618
18619  const updateSlide = (i, slide, slidesLength, getDirectionLabel) => {
18620    const {
18621      slidesPerGroup,
18622      spaceBetween
18623    } = swiper.params;
18624    const {
18625      rows,
18626      fill
18627    } = swiper.params.grid; // Set slides order
18628
18629    let newSlideOrderIndex;
18630    let column;
18631    let row;
18632
18633    if (fill === 'row' && slidesPerGroup > 1) {
18634      const groupIndex = Math.floor(i / (slidesPerGroup * rows));
18635      const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;
18636      const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);
18637      row = Math.floor(slideIndexInGroup / columnsInGroup);
18638      column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;
18639      newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;
18640      slide.css({
18641        '-webkit-order': newSlideOrderIndex,
18642        order: newSlideOrderIndex
18643      });
18644    } else if (fill === 'column') {
18645      column = Math.floor(i / rows);
18646      row = i - column * rows;
18647
18648      if (column > numFullColumns || column === numFullColumns && row === rows - 1) {
18649        row += 1;
18650
18651        if (row >= rows) {
18652          row = 0;
18653          column += 1;
18654        }
18655      }
18656    } else {
18657      row = Math.floor(i / slidesPerRow);
18658      column = i - row * slidesPerRow;
18659    }
18660
18661    slide.css(getDirectionLabel('margin-top'), row !== 0 ? spaceBetween && `${spaceBetween}px` : '');
18662  };
18663
18664  const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => {
18665    const {
18666      spaceBetween,
18667      centeredSlides,
18668      roundLengths
18669    } = swiper.params;
18670    const {
18671      rows
18672    } = swiper.params.grid;
18673    swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;
18674    swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;
18675    swiper.$wrapperEl.css({
18676      [getDirectionLabel('width')]: `${swiper.virtualSize + spaceBetween}px`
18677    });
18678
18679    if (centeredSlides) {
18680      snapGrid.splice(0, snapGrid.length);
18681      const newSlidesGrid = [];
18682
18683      for (let i = 0; i < snapGrid.length; i += 1) {
18684        let slidesGridItem = snapGrid[i];
18685        if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);
18686        if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);
18687      }
18688
18689      snapGrid.push(...newSlidesGrid);
18690    }
18691  };
18692
18693  swiper.grid = {
18694    initSlides,
18695    updateSlide,
18696    updateWrapperSize
18697  };
18698}
18699
18700/***/ }),
18701
vendor: 3,802 bytes, lines 18702-18812
18702/***/ "./node_modules/swiper/modules/hash-navigation/hash-navigation.js":
18703/*!************************************************************************!*\
18704  !*** ./node_modules/swiper/modules/hash-navigation/hash-navigation.js ***!
18705  \************************************************************************/
18706/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
18707
18708__webpack_require__.r(__webpack_exports__);
18709/* harmony export */ __webpack_require__.d(__webpack_exports__, {
18710/* harmony export */   "default": function() { return /* binding */ HashNavigation; }
18711/* harmony export */ });
18712/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
18713/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
18714
18715
18716function HashNavigation({
18717  swiper,
18718  extendParams,
18719  emit,
18720  on
18721}) {
18722  let initialized = false;
18723  const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
18724  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
18725  extendParams({
18726    hashNavigation: {
18727      enabled: false,
18728      replaceState: false,
18729      watchState: false
18730    }
18731  });
18732
18733  const onHashChange = () => {
18734    emit('hashChange');
18735    const newHash = document.location.hash.replace('#', '');
18736    const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');
18737
18738    if (newHash !== activeSlideHash) {
18739      const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash="${newHash}"]`).index();
18740      if (typeof newIndex === 'undefined') return;
18741      swiper.slideTo(newIndex);
18742    }
18743  };
18744
18745  const setHash = () => {
18746    if (!initialized || !swiper.params.hashNavigation.enabled) return;
18747
18748    if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {
18749      window.history.replaceState(null, null, `#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || '');
18750      emit('hashSet');
18751    } else {
18752      const slide = swiper.slides.eq(swiper.activeIndex);
18753      const hash = slide.attr('data-hash') || slide.attr('data-history');
18754      document.location.hash = hash || '';
18755      emit('hashSet');
18756    }
18757  };
18758
18759  const init = () => {
18760    if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;
18761    initialized = true;
18762    const hash = document.location.hash.replace('#', '');
18763
18764    if (hash) {
18765      const speed = 0;
18766
18767      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {
18768        const slide = swiper.slides.eq(i);
18769        const slideHash = slide.attr('data-hash') || slide.attr('data-history');
18770
18771        if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {
18772          const index = slide.index();
18773          swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);
18774        }
18775      }
18776    }
18777
18778    if (swiper.params.hashNavigation.watchState) {
18779      (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(window).on('hashchange', onHashChange);
18780    }
18781  };
18782
18783  const destroy = () => {
18784    if (swiper.params.hashNavigation.watchState) {
18785      (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(window).off('hashchange', onHashChange);
18786    }
18787  };
18788
18789  on('init', () => {
18790    if (swiper.params.hashNavigation.enabled) {
18791      init();
18792    }
18793  });
18794  on('destroy', () => {
18795    if (swiper.params.hashNavigation.enabled) {
18796      destroy();
18797    }
18798  });
18799  on('transitionEnd _freeModeNoMomentumRelease', () => {
18800    if (initialized) {
18801      setHash();
18802    }
18803  });
18804  on('slideChange', () => {
18805    if (initialized && swiper.params.cssMode) {
18806      setHash();
18807    }
18808  });
18809}
18810
18811/***/ }),
18812
vendor: 4,819 bytes, lines 18813-18981
18813/***/ "./node_modules/swiper/modules/history/history.js":
18814/*!********************************************************!*\
18815  !*** ./node_modules/swiper/modules/history/history.js ***!
18816  \********************************************************/
18817/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
18818
18819__webpack_require__.r(__webpack_exports__);
18820/* harmony export */ __webpack_require__.d(__webpack_exports__, {
18821/* harmony export */   "default": function() { return /* binding */ History; }
18822/* harmony export */ });
18823/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
18824
18825function History({
18826  swiper,
18827  extendParams,
18828  on
18829}) {
18830  extendParams({
18831    history: {
18832      enabled: false,
18833      root: '',
18834      replaceState: false,
18835      key: 'slides',
18836      keepQuery: false
18837    }
18838  });
18839  let initialized = false;
18840  let paths = {};
18841
18842  const slugify = text => {
18843    return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');
18844  };
18845
18846  const getPathValues = urlOverride => {
18847    const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
18848    let location;
18849
18850    if (urlOverride) {
18851      location = new URL(urlOverride);
18852    } else {
18853      location = window.location;
18854    }
18855
18856    const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');
18857    const total = pathArray.length;
18858    const key = pathArray[total - 2];
18859    const value = pathArray[total - 1];
18860    return {
18861      key,
18862      value
18863    };
18864  };
18865
18866  const setHistory = (key, index) => {
18867    const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
18868    if (!initialized || !swiper.params.history.enabled) return;
18869    let location;
18870
18871    if (swiper.params.url) {
18872      location = new URL(swiper.params.url);
18873    } else {
18874      location = window.location;
18875    }
18876
18877    const slide = swiper.slides.eq(index);
18878    let value = slugify(slide.attr('data-history'));
18879
18880    if (swiper.params.history.root.length > 0) {
18881      let root = swiper.params.history.root;
18882      if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);
18883      value = `${root}/${key}/${value}`;
18884    } else if (!location.pathname.includes(key)) {
18885      value = `${key}/${value}`;
18886    }
18887
18888    if (swiper.params.history.keepQuery) {
18889      value += location.search;
18890    }
18891
18892    const currentState = window.history.state;
18893
18894    if (currentState && currentState.value === value) {
18895      return;
18896    }
18897
18898    if (swiper.params.history.replaceState) {
18899      window.history.replaceState({
18900        value
18901      }, null, value);
18902    } else {
18903      window.history.pushState({
18904        value
18905      }, null, value);
18906    }
18907  };
18908
18909  const scrollToSlide = (speed, value, runCallbacks) => {
18910    if (value) {
18911      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {
18912        const slide = swiper.slides.eq(i);
18913        const slideHistory = slugify(slide.attr('data-history'));
18914
18915        if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {
18916          const index = slide.index();
18917          swiper.slideTo(index, speed, runCallbacks);
18918        }
18919      }
18920    } else {
18921      swiper.slideTo(0, speed, runCallbacks);
18922    }
18923  };
18924
18925  const setHistoryPopState = () => {
18926    paths = getPathValues(swiper.params.url);
18927    scrollToSlide(swiper.params.speed, paths.value, false);
18928  };
18929
18930  const init = () => {
18931    const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
18932    if (!swiper.params.history) return;
18933
18934    if (!window.history || !window.history.pushState) {
18935      swiper.params.history.enabled = false;
18936      swiper.params.hashNavigation.enabled = true;
18937      return;
18938    }
18939
18940    initialized = true;
18941    paths = getPathValues(swiper.params.url);
18942    if (!paths.key && !paths.value) return;
18943    scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);
18944
18945    if (!swiper.params.history.replaceState) {
18946      window.addEventListener('popstate', setHistoryPopState);
18947    }
18948  };
18949
18950  const destroy = () => {
18951    const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
18952
18953    if (!swiper.params.history.replaceState) {
18954      window.removeEventListener('popstate', setHistoryPopState);
18955    }
18956  };
18957
18958  on('init', () => {
18959    if (swiper.params.history.enabled) {
18960      init();
18961    }
18962  });
18963  on('destroy', () => {
18964    if (swiper.params.history.enabled) {
18965      destroy();
18966    }
18967  });
18968  on('transitionEnd _freeModeNoMomentumRelease', () => {
18969    if (initialized) {
18970      setHistory(swiper.params.history.key, swiper.activeIndex);
18971    }
18972  });
18973  on('slideChange', () => {
18974    if (initialized && swiper.params.cssMode) {
18975      setHistory(swiper.params.history.key, swiper.activeIndex);
18976    }
18977  });
18978}
18979
18980/***/ }),
18981
vendor: 5,200 bytes, lines 18982-19127
18982/***/ "./node_modules/swiper/modules/keyboard/keyboard.js":
18983/*!**********************************************************!*\
18984  !*** ./node_modules/swiper/modules/keyboard/keyboard.js ***!
18985  \**********************************************************/
18986/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
18987
18988__webpack_require__.r(__webpack_exports__);
18989/* harmony export */ __webpack_require__.d(__webpack_exports__, {
18990/* harmony export */   "default": function() { return /* binding */ Keyboard; }
18991/* harmony export */ });
18992/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
18993/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
18994/* eslint-disable consistent-return */
18995
18996
18997function Keyboard({
18998  swiper,
18999  extendParams,
19000  on,
19001  emit
19002}) {
19003  const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
19004  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
19005  swiper.keyboard = {
19006    enabled: false
19007  };
19008  extendParams({
19009    keyboard: {
19010      enabled: false,
19011      onlyInViewport: true,
19012      pageUpDown: true
19013    }
19014  });
19015
19016  function handle(event) {
19017    if (!swiper.enabled) return;
19018    const {
19019      rtlTranslate: rtl
19020    } = swiper;
19021    let e = event;
19022    if (e.originalEvent) e = e.originalEvent; // jquery fix
19023
19024    const kc = e.keyCode || e.charCode;
19025    const pageUpDown = swiper.params.keyboard.pageUpDown;
19026    const isPageUp = pageUpDown && kc === 33;
19027    const isPageDown = pageUpDown && kc === 34;
19028    const isArrowLeft = kc === 37;
19029    const isArrowRight = kc === 39;
19030    const isArrowUp = kc === 38;
19031    const isArrowDown = kc === 40; // Directions locks
19032
19033    if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {
19034      return false;
19035    }
19036
19037    if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {
19038      return false;
19039    }
19040
19041    if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {
19042      return undefined;
19043    }
19044
19045    if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {
19046      return undefined;
19047    }
19048
19049    if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {
19050      let inView = false; // Check that swiper should be inside of visible area of window
19051
19052      if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {
19053        return undefined;
19054      }
19055
19056      const $el = swiper.$el;
19057      const swiperWidth = $el[0].clientWidth;
19058      const swiperHeight = $el[0].clientHeight;
19059      const windowWidth = window.innerWidth;
19060      const windowHeight = window.innerHeight;
19061      const swiperOffset = swiper.$el.offset();
19062      if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;
19063      const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];
19064
19065      for (let i = 0; i < swiperCoord.length; i += 1) {
19066        const point = swiperCoord[i];
19067
19068        if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {
19069          if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line
19070
19071          inView = true;
19072        }
19073      }
19074
19075      if (!inView) return undefined;
19076    }
19077
19078    if (swiper.isHorizontal()) {
19079      if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {
19080        if (e.preventDefault) e.preventDefault();else e.returnValue = false;
19081      }
19082
19083      if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();
19084      if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();
19085    } else {
19086      if (isPageUp || isPageDown || isArrowUp || isArrowDown) {
19087        if (e.preventDefault) e.preventDefault();else e.returnValue = false;
19088      }
19089
19090      if (isPageDown || isArrowDown) swiper.slideNext();
19091      if (isPageUp || isArrowUp) swiper.slidePrev();
19092    }
19093
19094    emit('keyPress', kc);
19095    return undefined;
19096  }
19097
19098  function enable() {
19099    if (swiper.keyboard.enabled) return;
19100    (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(document).on('keydown', handle);
19101    swiper.keyboard.enabled = true;
19102  }
19103
19104  function disable() {
19105    if (!swiper.keyboard.enabled) return;
19106    (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(document).off('keydown', handle);
19107    swiper.keyboard.enabled = false;
19108  }
19109
19110  on('init', () => {
19111    if (swiper.params.keyboard.enabled) {
19112      enable();
19113    }
19114  });
19115  on('destroy', () => {
19116    if (swiper.keyboard.enabled) {
19117      disable();
19118    }
19119  });
19120  Object.assign(swiper.keyboard, {
19121    enable,
19122    disable
19123  });
19124}
19125
19126/***/ }),
19127
vendor: 10,955 bytes, lines 19128-19429
19128/***/ "./node_modules/swiper/modules/lazy/lazy.js":
19129/*!**************************************************!*\
19130  !*** ./node_modules/swiper/modules/lazy/lazy.js ***!
19131  \**************************************************/
19132/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
19133
19134__webpack_require__.r(__webpack_exports__);
19135/* harmony export */ __webpack_require__.d(__webpack_exports__, {
19136/* harmony export */   "default": function() { return /* binding */ Lazy; }
19137/* harmony export */ });
19138/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
19139/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
19140
19141
19142function Lazy({
19143  swiper,
19144  extendParams,
19145  on,
19146  emit
19147}) {
19148  extendParams({
19149    lazy: {
19150      checkInView: false,
19151      enabled: false,
19152      loadPrevNext: false,
19153      loadPrevNextAmount: 1,
19154      loadOnTransitionStart: false,
19155      scrollingElement: '',
19156      elementClass: 'swiper-lazy',
19157      loadingClass: 'swiper-lazy-loading',
19158      loadedClass: 'swiper-lazy-loaded',
19159      preloaderClass: 'swiper-lazy-preloader'
19160    }
19161  });
19162  swiper.lazy = {};
19163  let scrollHandlerAttached = false;
19164  let initialImageLoaded = false;
19165
19166  function loadInSlide(index, loadInDuplicate = true) {
19167    const params = swiper.params.lazy;
19168    if (typeof index === 'undefined') return;
19169    if (swiper.slides.length === 0) return;
19170    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
19171    const $slideEl = isVirtual ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index="${index}"]`) : swiper.slides.eq(index);
19172    const $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);
19173
19174    if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {
19175      $images.push($slideEl[0]);
19176    }
19177
19178    if ($images.length === 0) return;
19179    $images.each(imageEl => {
19180      const $imageEl = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(imageEl);
19181      $imageEl.addClass(params.loadingClass);
19182      const background = $imageEl.attr('data-background');
19183      const src = $imageEl.attr('data-src');
19184      const srcset = $imageEl.attr('data-srcset');
19185      const sizes = $imageEl.attr('data-sizes');
19186      const $pictureEl = $imageEl.parent('picture');
19187      swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, () => {
19188        if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) return;
19189
19190        if (background) {
19191          $imageEl.css('background-image', `url("${background}")`);
19192          $imageEl.removeAttr('data-background');
19193        } else {
19194          if (srcset) {
19195            $imageEl.attr('srcset', srcset);
19196            $imageEl.removeAttr('data-srcset');
19197          }
19198
19199          if (sizes) {
19200            $imageEl.attr('sizes', sizes);
19201            $imageEl.removeAttr('data-sizes');
19202          }
19203
19204          if ($pictureEl.length) {
19205            $pictureEl.children('source').each(sourceEl => {
19206              const $source = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(sourceEl);
19207
19208              if ($source.attr('data-srcset')) {
19209                $source.attr('srcset', $source.attr('data-srcset'));
19210                $source.removeAttr('data-srcset');
19211              }
19212            });
19213          }
19214
19215          if (src) {
19216            $imageEl.attr('src', src);
19217            $imageEl.removeAttr('data-src');
19218          }
19219        }
19220
19221        $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);
19222        $slideEl.find(`.${params.preloaderClass}`).remove();
19223
19224        if (swiper.params.loop && loadInDuplicate) {
19225          const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');
19226
19227          if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {
19228            const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index="${slideOriginalIndex}"]:not(.${swiper.params.slideDuplicateClass})`);
19229            loadInSlide(originalSlide.index(), false);
19230          } else {
19231            const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index="${slideOriginalIndex}"]`);
19232            loadInSlide(duplicatedSlide.index(), false);
19233          }
19234        }
19235
19236        emit('lazyImageReady', $slideEl[0], $imageEl[0]);
19237
19238        if (swiper.params.autoHeight) {
19239          swiper.updateAutoHeight();
19240        }
19241      });
19242      emit('lazyImageLoad', $slideEl[0], $imageEl[0]);
19243    });
19244  }
19245
19246  function load() {
19247    const {
19248      $wrapperEl,
19249      params: swiperParams,
19250      slides,
19251      activeIndex
19252    } = swiper;
19253    const isVirtual = swiper.virtual && swiperParams.virtual.enabled;
19254    const params = swiperParams.lazy;
19255    let slidesPerView = swiperParams.slidesPerView;
19256
19257    if (slidesPerView === 'auto') {
19258      slidesPerView = 0;
19259    }
19260
19261    function slideExist(index) {
19262      if (isVirtual) {
19263        if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index="${index}"]`).length) {
19264          return true;
19265        }
19266      } else if (slides[index]) return true;
19267
19268      return false;
19269    }
19270
19271    function slideIndex(slideEl) {
19272      if (isVirtual) {
19273        return (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(slideEl).attr('data-swiper-slide-index');
19274      }
19275
19276      return (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(slideEl).index();
19277    }
19278
19279    if (!initialImageLoaded) initialImageLoaded = true;
19280
19281    if (swiper.params.watchSlidesProgress) {
19282      $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each(slideEl => {
19283        const index = isVirtual ? (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(slideEl).attr('data-swiper-slide-index') : (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(slideEl).index();
19284        loadInSlide(index);
19285      });
19286    } else if (slidesPerView > 1) {
19287      for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {
19288        if (slideExist(i)) loadInSlide(i);
19289      }
19290    } else {
19291      loadInSlide(activeIndex);
19292    }
19293
19294    if (params.loadPrevNext) {
19295      if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) {
19296        const amount = params.loadPrevNextAmount;
19297        const spv = Math.ceil(slidesPerView);
19298        const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);
19299        const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); // Next Slides
19300
19301        for (let i = activeIndex + spv; i < maxIndex; i += 1) {
19302          if (slideExist(i)) loadInSlide(i);
19303        } // Prev Slides
19304
19305
19306        for (let i = minIndex; i < activeIndex; i += 1) {
19307          if (slideExist(i)) loadInSlide(i);
19308        }
19309      } else {
19310        const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);
19311        if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide));
19312        const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);
19313        if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide));
19314      }
19315    }
19316  }
19317
19318  function checkInViewOnLoad() {
19319    const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
19320    if (!swiper || swiper.destroyed) return;
19321    const $scrollElement = swiper.params.lazy.scrollingElement ? (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(swiper.params.lazy.scrollingElement) : (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(window);
19322    const isWindow = $scrollElement[0] === window;
19323    const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth;
19324    const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight;
19325    const swiperOffset = swiper.$el.offset();
19326    const {
19327      rtlTranslate: rtl
19328    } = swiper;
19329    let inView = false;
19330    if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;
19331    const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height]];
19332
19333    for (let i = 0; i < swiperCoord.length; i += 1) {
19334      const point = swiperCoord[i];
19335
19336      if (point[0] >= 0 && point[0] <= scrollElementWidth && point[1] >= 0 && point[1] <= scrollElementHeight) {
19337        if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line
19338
19339        inView = true;
19340      }
19341    }
19342
19343    const passiveListener = swiper.touchEvents.start === 'touchstart' && swiper.support.passiveListener && swiper.params.passiveListeners ? {
19344      passive: true,
19345      capture: false
19346    } : false;
19347
19348    if (inView) {
19349      load();
19350      $scrollElement.off('scroll', checkInViewOnLoad, passiveListener);
19351    } else if (!scrollHandlerAttached) {
19352      scrollHandlerAttached = true;
19353      $scrollElement.on('scroll', checkInViewOnLoad, passiveListener);
19354    }
19355  }
19356
19357  on('beforeInit', () => {
19358    if (swiper.params.lazy.enabled && swiper.params.preloadImages) {
19359      swiper.params.preloadImages = false;
19360    }
19361  });
19362  on('init', () => {
19363    if (swiper.params.lazy.enabled) {
19364      if (swiper.params.lazy.checkInView) {
19365        checkInViewOnLoad();
19366      } else {
19367        load();
19368      }
19369    }
19370  });
19371  on('scroll', () => {
19372    if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.freeMode.sticky) {
19373      load();
19374    }
19375  });
19376  on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => {
19377    if (swiper.params.lazy.enabled) {
19378      if (swiper.params.lazy.checkInView) {
19379        checkInViewOnLoad();
19380      } else {
19381        load();
19382      }
19383    }
19384  });
19385  on('transitionStart', () => {
19386    if (swiper.params.lazy.enabled) {
19387      if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !initialImageLoaded) {
19388        if (swiper.params.lazy.checkInView) {
19389          checkInViewOnLoad();
19390        } else {
19391          load();
19392        }
19393      }
19394    }
19395  });
19396  on('transitionEnd', () => {
19397    if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {
19398      if (swiper.params.lazy.checkInView) {
19399        checkInViewOnLoad();
19400      } else {
19401        load();
19402      }
19403    }
19404  });
19405  on('slideChange', () => {
19406    const {
19407      lazy,
19408      cssMode,
19409      watchSlidesProgress,
19410      touchReleaseOnEdges,
19411      resistanceRatio
19412    } = swiper.params;
19413
19414    if (lazy.enabled && (cssMode || watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0))) {
19415      load();
19416    }
19417  });
19418  on('destroy', () => {
19419    if (!swiper.$el) return;
19420    swiper.$el.find(`.${swiper.params.lazy.loadingClass}`).removeClass(swiper.params.lazy.loadingClass);
19421  });
19422  Object.assign(swiper.lazy, {
19423    load,
19424    loadInSlide
19425  });
19426}
19427
19428/***/ }),
19429
vendor: 2,183 bytes, lines 19430-19463
19430/***/ "./node_modules/swiper/modules/manipulation/manipulation.js":
19431/*!******************************************************************!*\
19432  !*** ./node_modules/swiper/modules/manipulation/manipulation.js ***!
19433  \******************************************************************/
19434/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
19435
19436__webpack_require__.r(__webpack_exports__);
19437/* harmony export */ __webpack_require__.d(__webpack_exports__, {
19438/* harmony export */   "default": function() { return /* binding */ Manipulation; }
19439/* harmony export */ });
19440/* harmony import */ var _methods_appendSlide_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./methods/appendSlide.js */ "./node_modules/swiper/modules/manipulation/methods/appendSlide.js");
19441/* harmony import */ var _methods_prependSlide_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./methods/prependSlide.js */ "./node_modules/swiper/modules/manipulation/methods/prependSlide.js");
19442/* harmony import */ var _methods_addSlide_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./methods/addSlide.js */ "./node_modules/swiper/modules/manipulation/methods/addSlide.js");
19443/* harmony import */ var _methods_removeSlide_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./methods/removeSlide.js */ "./node_modules/swiper/modules/manipulation/methods/removeSlide.js");
19444/* harmony import */ var _methods_removeAllSlides_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./methods/removeAllSlides.js */ "./node_modules/swiper/modules/manipulation/methods/removeAllSlides.js");
19445
19446
19447
19448
19449
19450function Manipulation({
19451  swiper
19452}) {
19453  Object.assign(swiper, {
19454    appendSlide: _methods_appendSlide_js__WEBPACK_IMPORTED_MODULE_0__["default"].bind(swiper),
19455    prependSlide: _methods_prependSlide_js__WEBPACK_IMPORTED_MODULE_1__["default"].bind(swiper),
19456    addSlide: _methods_addSlide_js__WEBPACK_IMPORTED_MODULE_2__["default"].bind(swiper),
19457    removeSlide: _methods_removeSlide_js__WEBPACK_IMPORTED_MODULE_3__["default"].bind(swiper),
19458    removeAllSlides: _methods_removeAllSlides_js__WEBPACK_IMPORTED_MODULE_4__["default"].bind(swiper)
19459  });
19460}
19461
19462/***/ }),
19463
vendor: 2,108 bytes, lines 19464-19540
19464/***/ "./node_modules/swiper/modules/manipulation/methods/addSlide.js":
19465/*!**********************************************************************!*\
19466  !*** ./node_modules/swiper/modules/manipulation/methods/addSlide.js ***!
19467  \**********************************************************************/
19468/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
19469
19470__webpack_require__.r(__webpack_exports__);
19471/* harmony export */ __webpack_require__.d(__webpack_exports__, {
19472/* harmony export */   "default": function() { return /* binding */ addSlide; }
19473/* harmony export */ });
19474function addSlide(index, slides) {
19475  const swiper = this;
19476  const {
19477    $wrapperEl,
19478    params,
19479    activeIndex
19480  } = swiper;
19481  let activeIndexBuffer = activeIndex;
19482
19483  if (params.loop) {
19484    activeIndexBuffer -= swiper.loopedSlides;
19485    swiper.loopDestroy();
19486    swiper.slides = $wrapperEl.children(`.${params.slideClass}`);
19487  }
19488
19489  const baseLength = swiper.slides.length;
19490
19491  if (index <= 0) {
19492    swiper.prependSlide(slides);
19493    return;
19494  }
19495
19496  if (index >= baseLength) {
19497    swiper.appendSlide(slides);
19498    return;
19499  }
19500
19501  let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;
19502  const slidesBuffer = [];
19503
19504  for (let i = baseLength - 1; i >= index; i -= 1) {
19505    const currentSlide = swiper.slides.eq(i);
19506    currentSlide.remove();
19507    slidesBuffer.unshift(currentSlide);
19508  }
19509
19510  if (typeof slides === 'object' && 'length' in slides) {
19511    for (let i = 0; i < slides.length; i += 1) {
19512      if (slides[i]) $wrapperEl.append(slides[i]);
19513    }
19514
19515    newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;
19516  } else {
19517    $wrapperEl.append(slides);
19518  }
19519
19520  for (let i = 0; i < slidesBuffer.length; i += 1) {
19521    $wrapperEl.append(slidesBuffer[i]);
19522  }
19523
19524  if (params.loop) {
19525    swiper.loopCreate();
19526  }
19527
19528  if (!params.observer) {
19529    swiper.update();
19530  }
19531
19532  if (params.loop) {
19533    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
19534  } else {
19535    swiper.slideTo(newActiveIndex, 0, false);
19536  }
19537}
19538
19539/***/ }),
19540
vendor: 1,112 bytes, lines 19541-19580
19541/***/ "./node_modules/swiper/modules/manipulation/methods/appendSlide.js":
19542/*!*************************************************************************!*\
19543  !*** ./node_modules/swiper/modules/manipulation/methods/appendSlide.js ***!
19544  \*************************************************************************/
19545/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
19546
19547__webpack_require__.r(__webpack_exports__);
19548/* harmony export */ __webpack_require__.d(__webpack_exports__, {
19549/* harmony export */   "default": function() { return /* binding */ appendSlide; }
19550/* harmony export */ });
19551function appendSlide(slides) {
19552  const swiper = this;
19553  const {
19554    $wrapperEl,
19555    params
19556  } = swiper;
19557
19558  if (params.loop) {
19559    swiper.loopDestroy();
19560  }
19561
19562  if (typeof slides === 'object' && 'length' in slides) {
19563    for (let i = 0; i < slides.length; i += 1) {
19564      if (slides[i]) $wrapperEl.append(slides[i]);
19565    }
19566  } else {
19567    $wrapperEl.append(slides);
19568  }
19569
19570  if (params.loop) {
19571    swiper.loopCreate();
19572  }
19573
19574  if (!params.observer) {
19575    swiper.update();
19576  }
19577}
19578
19579/***/ }),
19580
vendor: 1,274 bytes, lines 19581-19627
19581/***/ "./node_modules/swiper/modules/manipulation/methods/prependSlide.js":
19582/*!**************************************************************************!*\
19583  !*** ./node_modules/swiper/modules/manipulation/methods/prependSlide.js ***!
19584  \**************************************************************************/
19585/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
19586
19587__webpack_require__.r(__webpack_exports__);
19588/* harmony export */ __webpack_require__.d(__webpack_exports__, {
19589/* harmony export */   "default": function() { return /* binding */ prependSlide; }
19590/* harmony export */ });
19591function prependSlide(slides) {
19592  const swiper = this;
19593  const {
19594    params,
19595    $wrapperEl,
19596    activeIndex
19597  } = swiper;
19598
19599  if (params.loop) {
19600    swiper.loopDestroy();
19601  }
19602
19603  let newActiveIndex = activeIndex + 1;
19604
19605  if (typeof slides === 'object' && 'length' in slides) {
19606    for (let i = 0; i < slides.length; i += 1) {
19607      if (slides[i]) $wrapperEl.prepend(slides[i]);
19608    }
19609
19610    newActiveIndex = activeIndex + slides.length;
19611  } else {
19612    $wrapperEl.prepend(slides);
19613  }
19614
19615  if (params.loop) {
19616    swiper.loopCreate();
19617  }
19618
19619  if (!params.observer) {
19620    swiper.update();
19621  }
19622
19623  swiper.slideTo(newActiveIndex, 0, false);
19624}
19625
19626/***/ }),
19627
vendor: 865 bytes, lines 19628-19650
19628/***/ "./node_modules/swiper/modules/manipulation/methods/removeAllSlides.js":
19629/*!*****************************************************************************!*\
19630  !*** ./node_modules/swiper/modules/manipulation/methods/removeAllSlides.js ***!
19631  \*****************************************************************************/
19632/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
19633
19634__webpack_require__.r(__webpack_exports__);
19635/* harmony export */ __webpack_require__.d(__webpack_exports__, {
19636/* harmony export */   "default": function() { return /* binding */ removeAllSlides; }
19637/* harmony export */ });
19638function removeAllSlides() {
19639  const swiper = this;
19640  const slidesIndexes = [];
19641
19642  for (let i = 0; i < swiper.slides.length; i += 1) {
19643    slidesIndexes.push(i);
19644  }
19645
19646  swiper.removeSlide(slidesIndexes);
19647}
19648
19649/***/ }),
19650
vendor: 1,903 bytes, lines 19651-19710
19651/***/ "./node_modules/swiper/modules/manipulation/methods/removeSlide.js":
19652/*!*************************************************************************!*\
19653  !*** ./node_modules/swiper/modules/manipulation/methods/removeSlide.js ***!
19654  \*************************************************************************/
19655/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
19656
19657__webpack_require__.r(__webpack_exports__);
19658/* harmony export */ __webpack_require__.d(__webpack_exports__, {
19659/* harmony export */   "default": function() { return /* binding */ removeSlide; }
19660/* harmony export */ });
19661function removeSlide(slidesIndexes) {
19662  const swiper = this;
19663  const {
19664    params,
19665    $wrapperEl,
19666    activeIndex
19667  } = swiper;
19668  let activeIndexBuffer = activeIndex;
19669
19670  if (params.loop) {
19671    activeIndexBuffer -= swiper.loopedSlides;
19672    swiper.loopDestroy();
19673    swiper.slides = $wrapperEl.children(`.${params.slideClass}`);
19674  }
19675
19676  let newActiveIndex = activeIndexBuffer;
19677  let indexToRemove;
19678
19679  if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {
19680    for (let i = 0; i < slidesIndexes.length; i += 1) {
19681      indexToRemove = slidesIndexes[i];
19682      if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();
19683      if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
19684    }
19685
19686    newActiveIndex = Math.max(newActiveIndex, 0);
19687  } else {
19688    indexToRemove = slidesIndexes;
19689    if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();
19690    if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
19691    newActiveIndex = Math.max(newActiveIndex, 0);
19692  }
19693
19694  if (params.loop) {
19695    swiper.loopCreate();
19696  }
19697
19698  if (!params.observer) {
19699    swiper.update();
19700  }
19701
19702  if (params.loop) {
19703    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
19704  } else {
19705    swiper.slideTo(newActiveIndex, 0, false);
19706  }
19707}
19708
19709/***/ }),
19710
vendor: 15,588 bytes, lines 19711-20148
19711/***/ "./node_modules/swiper/modules/mousewheel/mousewheel.js":
19712/*!**************************************************************!*\
19713  !*** ./node_modules/swiper/modules/mousewheel/mousewheel.js ***!
19714  \**************************************************************/
19715/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
19716
19717__webpack_require__.r(__webpack_exports__);
19718/* harmony export */ __webpack_require__.d(__webpack_exports__, {
19719/* harmony export */   "default": function() { return /* binding */ Mousewheel; }
19720/* harmony export */ });
19721/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
19722/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
19723/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
19724/* eslint-disable consistent-return */
19725
19726
19727
19728function Mousewheel({
19729  swiper,
19730  extendParams,
19731  on,
19732  emit
19733}) {
19734  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
19735  extendParams({
19736    mousewheel: {
19737      enabled: false,
19738      releaseOnEdges: false,
19739      invert: false,
19740      forceToAxis: false,
19741      sensitivity: 1,
19742      eventsTarget: 'container',
19743      thresholdDelta: null,
19744      thresholdTime: null
19745    }
19746  });
19747  swiper.mousewheel = {
19748    enabled: false
19749  };
19750  let timeout;
19751  let lastScrollTime = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.now)();
19752  let lastEventBeforeSnap;
19753  const recentWheelEvents = [];
19754
19755  function normalize(e) {
19756    // Reasonable defaults
19757    const PIXEL_STEP = 10;
19758    const LINE_HEIGHT = 40;
19759    const PAGE_HEIGHT = 800;
19760    let sX = 0;
19761    let sY = 0; // spinX, spinY
19762
19763    let pX = 0;
19764    let pY = 0; // pixelX, pixelY
19765    // Legacy
19766
19767    if ('detail' in e) {
19768      sY = e.detail;
19769    }
19770
19771    if ('wheelDelta' in e) {
19772      sY = -e.wheelDelta / 120;
19773    }
19774
19775    if ('wheelDeltaY' in e) {
19776      sY = -e.wheelDeltaY / 120;
19777    }
19778
19779    if ('wheelDeltaX' in e) {
19780      sX = -e.wheelDeltaX / 120;
19781    } // side scrolling on FF with DOMMouseScroll
19782
19783
19784    if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {
19785      sX = sY;
19786      sY = 0;
19787    }
19788
19789    pX = sX * PIXEL_STEP;
19790    pY = sY * PIXEL_STEP;
19791
19792    if ('deltaY' in e) {
19793      pY = e.deltaY;
19794    }
19795
19796    if ('deltaX' in e) {
19797      pX = e.deltaX;
19798    }
19799
19800    if (e.shiftKey && !pX) {
19801      // if user scrolls with shift he wants horizontal scroll
19802      pX = pY;
19803      pY = 0;
19804    }
19805
19806    if ((pX || pY) && e.deltaMode) {
19807      if (e.deltaMode === 1) {
19808        // delta in LINE units
19809        pX *= LINE_HEIGHT;
19810        pY *= LINE_HEIGHT;
19811      } else {
19812        // delta in PAGE units
19813        pX *= PAGE_HEIGHT;
19814        pY *= PAGE_HEIGHT;
19815      }
19816    } // Fall-back if spin cannot be determined
19817
19818
19819    if (pX && !sX) {
19820      sX = pX < 1 ? -1 : 1;
19821    }
19822
19823    if (pY && !sY) {
19824      sY = pY < 1 ? -1 : 1;
19825    }
19826
19827    return {
19828      spinX: sX,
19829      spinY: sY,
19830      pixelX: pX,
19831      pixelY: pY
19832    };
19833  }
19834
19835  function handleMouseEnter() {
19836    if (!swiper.enabled) return;
19837    swiper.mouseEntered = true;
19838  }
19839
19840  function handleMouseLeave() {
19841    if (!swiper.enabled) return;
19842    swiper.mouseEntered = false;
19843  }
19844
19845  function animateSlider(newEvent) {
19846    if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {
19847      // Prevent if delta of wheel scroll delta is below configured threshold
19848      return false;
19849    }
19850
19851    if (swiper.params.mousewheel.thresholdTime && (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.now)() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {
19852      // Prevent if time between scrolls is below configured threshold
19853      return false;
19854    } // If the movement is NOT big enough and
19855    // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):
19856    //   Don't go any further (avoid insignificant scroll movement).
19857
19858
19859    if (newEvent.delta >= 6 && (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.now)() - lastScrollTime < 60) {
19860      // Return false as a default
19861      return true;
19862    } // If user is scrolling towards the end:
19863    //   If the slider hasn't hit the latest slide or
19864    //   if the slider is a loop and
19865    //   if the slider isn't moving right now:
19866    //     Go to next slide and
19867    //     emit a scroll event.
19868    // Else (the user is scrolling towards the beginning) and
19869    // if the slider hasn't hit the first slide or
19870    // if the slider is a loop and
19871    // if the slider isn't moving right now:
19872    //   Go to prev slide and
19873    //   emit a scroll event.
19874
19875
19876    if (newEvent.direction < 0) {
19877      if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {
19878        swiper.slideNext();
19879        emit('scroll', newEvent.raw);
19880      }
19881    } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {
19882      swiper.slidePrev();
19883      emit('scroll', newEvent.raw);
19884    } // If you got here is because an animation has been triggered so store the current time
19885
19886
19887    lastScrollTime = new window.Date().getTime(); // Return false as a default
19888
19889    return false;
19890  }
19891
19892  function releaseScroll(newEvent) {
19893    const params = swiper.params.mousewheel;
19894
19895    if (newEvent.direction < 0) {
19896      if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {
19897        // Return true to animate scroll on edges
19898        return true;
19899      }
19900    } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {
19901      // Return true to animate scroll on edges
19902      return true;
19903    }
19904
19905    return false;
19906  }
19907
19908  function handle(event) {
19909    let e = event;
19910    let disableParentSwiper = true;
19911    if (!swiper.enabled) return;
19912    const params = swiper.params.mousewheel;
19913
19914    if (swiper.params.cssMode) {
19915      e.preventDefault();
19916    }
19917
19918    let target = swiper.$el;
19919
19920    if (swiper.params.mousewheel.eventsTarget !== 'container') {
19921      target = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(swiper.params.mousewheel.eventsTarget);
19922    }
19923
19924    if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;
19925    if (e.originalEvent) e = e.originalEvent; // jquery fix
19926
19927    let delta = 0;
19928    const rtlFactor = swiper.rtlTranslate ? -1 : 1;
19929    const data = normalize(e);
19930
19931    if (params.forceToAxis) {
19932      if (swiper.isHorizontal()) {
19933        if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;
19934      } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;
19935    } else {
19936      delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;
19937    }
19938
19939    if (delta === 0) return true;
19940    if (params.invert) delta = -delta; // Get the scroll positions
19941
19942    let positions = swiper.getTranslate() + delta * params.sensitivity;
19943    if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();
19944    if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); // When loop is true:
19945    //     the disableParentSwiper will be true.
19946    // When loop is false:
19947    //     if the scroll positions is not on edge,
19948    //     then the disableParentSwiper will be true.
19949    //     if the scroll on edge positions,
19950    //     then the disableParentSwiper will be false.
19951
19952    disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());
19953    if (disableParentSwiper && swiper.params.nested) e.stopPropagation();
19954
19955    if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {
19956      // Register the new event in a variable which stores the relevant data
19957      const newEvent = {
19958        time: (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.now)(),
19959        delta: Math.abs(delta),
19960        direction: Math.sign(delta),
19961        raw: event
19962      }; // Keep the most recent events
19963
19964      if (recentWheelEvents.length >= 2) {
19965        recentWheelEvents.shift(); // only store the last N events
19966      }
19967
19968      const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;
19969      recentWheelEvents.push(newEvent); // If there is at least one previous recorded event:
19970      //   If direction has changed or
19971      //   if the scroll is quicker than the previous one:
19972      //     Animate the slider.
19973      // Else (this is the first time the wheel is moved):
19974      //     Animate the slider.
19975
19976      if (prevEvent) {
19977        if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {
19978          animateSlider(newEvent);
19979        }
19980      } else {
19981        animateSlider(newEvent);
19982      } // If it's time to release the scroll:
19983      //   Return now so you don't hit the preventDefault.
19984
19985
19986      if (releaseScroll(newEvent)) {
19987        return true;
19988      }
19989    } else {
19990      // Freemode or scrollContainer:
19991      // If we recently snapped after a momentum scroll, then ignore wheel events
19992      // to give time for the deceleration to finish. Stop ignoring after 500 msecs
19993      // or if it's a new scroll (larger delta or inverse sign as last event before
19994      // an end-of-momentum snap).
19995      const newEvent = {
19996        time: (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.now)(),
19997        delta: Math.abs(delta),
19998        direction: Math.sign(delta)
19999      };
20000      const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;
20001
20002      if (!ignoreWheelEvents) {
20003        lastEventBeforeSnap = undefined;
20004
20005        if (swiper.params.loop) {
20006          swiper.loopFix();
20007        }
20008
20009        let position = swiper.getTranslate() + delta * params.sensitivity;
20010        const wasBeginning = swiper.isBeginning;
20011        const wasEnd = swiper.isEnd;
20012        if (position >= swiper.minTranslate()) position = swiper.minTranslate();
20013        if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();
20014        swiper.setTransition(0);
20015        swiper.setTranslate(position);
20016        swiper.updateProgress();
20017        swiper.updateActiveIndex();
20018        swiper.updateSlidesClasses();
20019
20020        if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {
20021          swiper.updateSlidesClasses();
20022        }
20023
20024        if (swiper.params.freeMode.sticky) {
20025          // When wheel scrolling starts with sticky (aka snap) enabled, then detect
20026          // the end of a momentum scroll by storing recent (N=15?) wheel events.
20027          // 1. do all N events have decreasing or same (absolute value) delta?
20028          // 2. did all N events arrive in the last M (M=500?) msecs?
20029          // 3. does the earliest event have an (absolute value) delta that's
20030          //    at least P (P=1?) larger than the most recent event's delta?
20031          // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?
20032          // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration.
20033          // Snap immediately and ignore remaining wheel events in this scroll.
20034          // See comment above for "remaining wheel events in this scroll" determination.
20035          // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.
20036          clearTimeout(timeout);
20037          timeout = undefined;
20038
20039          if (recentWheelEvents.length >= 15) {
20040            recentWheelEvents.shift(); // only store the last N events
20041          }
20042
20043          const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;
20044          const firstEvent = recentWheelEvents[0];
20045          recentWheelEvents.push(newEvent);
20046
20047          if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {
20048            // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.
20049            recentWheelEvents.splice(0);
20050          } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {
20051            // We're at the end of the deceleration of a momentum scroll, so there's no need
20052            // to wait for more events. Snap ASAP on the next tick.
20053            // Also, because there's some remaining momentum we'll bias the snap in the
20054            // direction of the ongoing scroll because it's better UX for the scroll to snap
20055            // in the same direction as the scroll instead of reversing to snap.  Therefore,
20056            // if it's already scrolled more than 20% in the current direction, keep going.
20057            const snapToThreshold = delta > 0 ? 0.8 : 0.2;
20058            lastEventBeforeSnap = newEvent;
20059            recentWheelEvents.splice(0);
20060            timeout = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.nextTick)(() => {
20061              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
20062            }, 0); // no delay; move on next tick
20063          }
20064
20065          if (!timeout) {
20066            // if we get here, then we haven't detected the end of a momentum scroll, so
20067            // we'll consider a scroll "complete" when there haven't been any wheel events
20068            // for 500ms.
20069            timeout = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.nextTick)(() => {
20070              const snapToThreshold = 0.5;
20071              lastEventBeforeSnap = newEvent;
20072              recentWheelEvents.splice(0);
20073              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
20074            }, 500);
20075          }
20076        } // Emit event
20077
20078
20079        if (!ignoreWheelEvents) emit('scroll', e); // Stop autoplay
20080
20081        if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); // Return page scroll on edge positions
20082
20083        if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;
20084      }
20085    }
20086
20087    if (e.preventDefault) e.preventDefault();else e.returnValue = false;
20088    return false;
20089  }
20090
20091  function events(method) {
20092    let target = swiper.$el;
20093
20094    if (swiper.params.mousewheel.eventsTarget !== 'container') {
20095      target = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(swiper.params.mousewheel.eventsTarget);
20096    }
20097
20098    target[method]('mouseenter', handleMouseEnter);
20099    target[method]('mouseleave', handleMouseLeave);
20100    target[method]('wheel', handle);
20101  }
20102
20103  function enable() {
20104    if (swiper.params.cssMode) {
20105      swiper.wrapperEl.removeEventListener('wheel', handle);
20106      return true;
20107    }
20108
20109    if (swiper.mousewheel.enabled) return false;
20110    events('on');
20111    swiper.mousewheel.enabled = true;
20112    return true;
20113  }
20114
20115  function disable() {
20116    if (swiper.params.cssMode) {
20117      swiper.wrapperEl.addEventListener(event, handle);
20118      return true;
20119    }
20120
20121    if (!swiper.mousewheel.enabled) return false;
20122    events('off');
20123    swiper.mousewheel.enabled = false;
20124    return true;
20125  }
20126
20127  on('init', () => {
20128    if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {
20129      disable();
20130    }
20131
20132    if (swiper.params.mousewheel.enabled) enable();
20133  });
20134  on('destroy', () => {
20135    if (swiper.params.cssMode) {
20136      enable();
20137    }
20138
20139    if (swiper.mousewheel.enabled) disable();
20140  });
20141  Object.assign(swiper.mousewheel, {
20142    enable,
20143    disable
20144  });
20145}
20146
20147/***/ }),
20148
vendor: 6,305 bytes, lines 20149-20370
20149/***/ "./node_modules/swiper/modules/navigation/navigation.js":
20150/*!**************************************************************!*\
20151  !*** ./node_modules/swiper/modules/navigation/navigation.js ***!
20152  \**************************************************************/
20153/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
20154
20155__webpack_require__.r(__webpack_exports__);
20156/* harmony export */ __webpack_require__.d(__webpack_exports__, {
20157/* harmony export */   "default": function() { return /* binding */ Navigation; }
20158/* harmony export */ });
20159/* harmony import */ var _shared_create_element_if_not_defined_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/create-element-if-not-defined.js */ "./node_modules/swiper/shared/create-element-if-not-defined.js");
20160/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
20161
20162
20163function Navigation({
20164  swiper,
20165  extendParams,
20166  on,
20167  emit
20168}) {
20169  extendParams({
20170    navigation: {
20171      nextEl: null,
20172      prevEl: null,
20173      hideOnClick: false,
20174      disabledClass: 'swiper-button-disabled',
20175      hiddenClass: 'swiper-button-hidden',
20176      lockClass: 'swiper-button-lock',
20177      navigationDisabledClass: 'swiper-navigation-disabled'
20178    }
20179  });
20180  swiper.navigation = {
20181    nextEl: null,
20182    $nextEl: null,
20183    prevEl: null,
20184    $prevEl: null
20185  };
20186
20187  function getEl(el) {
20188    let $el;
20189
20190    if (el) {
20191      $el = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(el);
20192
20193      if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) {
20194        $el = swiper.$el.find(el);
20195      }
20196    }
20197
20198    return $el;
20199  }
20200
20201  function toggleEl($el, disabled) {
20202    const params = swiper.params.navigation;
20203
20204    if ($el && $el.length > 0) {
20205      $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);
20206      if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;
20207
20208      if (swiper.params.watchOverflow && swiper.enabled) {
20209        $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
20210      }
20211    }
20212  }
20213
20214  function update() {
20215    // Update Navigation Buttons
20216    if (swiper.params.loop) return;
20217    const {
20218      $nextEl,
20219      $prevEl
20220    } = swiper.navigation;
20221    toggleEl($prevEl, swiper.isBeginning && !swiper.params.rewind);
20222    toggleEl($nextEl, swiper.isEnd && !swiper.params.rewind);
20223  }
20224
20225  function onPrevClick(e) {
20226    e.preventDefault();
20227    if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;
20228    swiper.slidePrev();
20229    emit('navigationPrev');
20230  }
20231
20232  function onNextClick(e) {
20233    e.preventDefault();
20234    if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;
20235    swiper.slideNext();
20236    emit('navigationNext');
20237  }
20238
20239  function init() {
20240    const params = swiper.params.navigation;
20241    swiper.params.navigation = (0,_shared_create_element_if_not_defined_js__WEBPACK_IMPORTED_MODULE_0__["default"])(swiper, swiper.originalParams.navigation, swiper.params.navigation, {
20242      nextEl: 'swiper-button-next',
20243      prevEl: 'swiper-button-prev'
20244    });
20245    if (!(params.nextEl || params.prevEl)) return;
20246    const $nextEl = getEl(params.nextEl);
20247    const $prevEl = getEl(params.prevEl);
20248
20249    if ($nextEl && $nextEl.length > 0) {
20250      $nextEl.on('click', onNextClick);
20251    }
20252
20253    if ($prevEl && $prevEl.length > 0) {
20254      $prevEl.on('click', onPrevClick);
20255    }
20256
20257    Object.assign(swiper.navigation, {
20258      $nextEl,
20259      nextEl: $nextEl && $nextEl[0],
20260      $prevEl,
20261      prevEl: $prevEl && $prevEl[0]
20262    });
20263
20264    if (!swiper.enabled) {
20265      if ($nextEl) $nextEl.addClass(params.lockClass);
20266      if ($prevEl) $prevEl.addClass(params.lockClass);
20267    }
20268  }
20269
20270  function destroy() {
20271    const {
20272      $nextEl,
20273      $prevEl
20274    } = swiper.navigation;
20275
20276    if ($nextEl && $nextEl.length) {
20277      $nextEl.off('click', onNextClick);
20278      $nextEl.removeClass(swiper.params.navigation.disabledClass);
20279    }
20280
20281    if ($prevEl && $prevEl.length) {
20282      $prevEl.off('click', onPrevClick);
20283      $prevEl.removeClass(swiper.params.navigation.disabledClass);
20284    }
20285  }
20286
20287  on('init', () => {
20288    if (swiper.params.navigation.enabled === false) {
20289      // eslint-disable-next-line
20290      disable();
20291    } else {
20292      init();
20293      update();
20294    }
20295  });
20296  on('toEdge fromEdge lock unlock', () => {
20297    update();
20298  });
20299  on('destroy', () => {
20300    destroy();
20301  });
20302  on('enable disable', () => {
20303    const {
20304      $nextEl,
20305      $prevEl
20306    } = swiper.navigation;
20307
20308    if ($nextEl) {
20309      $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);
20310    }
20311
20312    if ($prevEl) {
20313      $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);
20314    }
20315  });
20316  on('click', (_s, e) => {
20317    const {
20318      $nextEl,
20319      $prevEl
20320    } = swiper.navigation;
20321    const targetEl = e.target;
20322
20323    if (swiper.params.navigation.hideOnClick && !(0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(targetEl).is($prevEl) && !(0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(targetEl).is($nextEl)) {
20324      if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;
20325      let isHidden;
20326
20327      if ($nextEl) {
20328        isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);
20329      } else if ($prevEl) {
20330        isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);
20331      }
20332
20333      if (isHidden === true) {
20334        emit('navigationShow');
20335      } else {
20336        emit('navigationHide');
20337      }
20338
20339      if ($nextEl) {
20340        $nextEl.toggleClass(swiper.params.navigation.hiddenClass);
20341      }
20342
20343      if ($prevEl) {
20344        $prevEl.toggleClass(swiper.params.navigation.hiddenClass);
20345      }
20346    }
20347  });
20348
20349  const enable = () => {
20350    swiper.$el.removeClass(swiper.params.navigation.navigationDisabledClass);
20351    init();
20352    update();
20353  };
20354
20355  const disable = () => {
20356    swiper.$el.addClass(swiper.params.navigation.navigationDisabledClass);
20357    destroy();
20358  };
20359
20360  Object.assign(swiper.navigation, {
20361    enable,
20362    disable,
20363    update,
20364    init,
20365    destroy
20366  });
20367}
20368
20369/***/ }),
20370
vendor: 16,166 bytes, lines 20371-20827
20371/***/ "./node_modules/swiper/modules/pagination/pagination.js":
20372/*!**************************************************************!*\
20373  !*** ./node_modules/swiper/modules/pagination/pagination.js ***!
20374  \**************************************************************/
20375/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
20376
20377__webpack_require__.r(__webpack_exports__);
20378/* harmony export */ __webpack_require__.d(__webpack_exports__, {
20379/* harmony export */   "default": function() { return /* binding */ Pagination; }
20380/* harmony export */ });
20381/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
20382/* harmony import */ var _shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/classes-to-selector.js */ "./node_modules/swiper/shared/classes-to-selector.js");
20383/* harmony import */ var _shared_create_element_if_not_defined_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/create-element-if-not-defined.js */ "./node_modules/swiper/shared/create-element-if-not-defined.js");
20384
20385
20386
20387function Pagination({
20388  swiper,
20389  extendParams,
20390  on,
20391  emit
20392}) {
20393  const pfx = 'swiper-pagination';
20394  extendParams({
20395    pagination: {
20396      el: null,
20397      bulletElement: 'span',
20398      clickable: false,
20399      hideOnClick: false,
20400      renderBullet: null,
20401      renderProgressbar: null,
20402      renderFraction: null,
20403      renderCustom: null,
20404      progressbarOpposite: false,
20405      type: 'bullets',
20406      // 'bullets' or 'progressbar' or 'fraction' or 'custom'
20407      dynamicBullets: false,
20408      dynamicMainBullets: 1,
20409      formatFractionCurrent: number => number,
20410      formatFractionTotal: number => number,
20411      bulletClass: `${pfx}-bullet`,
20412      bulletActiveClass: `${pfx}-bullet-active`,
20413      modifierClass: `${pfx}-`,
20414      currentClass: `${pfx}-current`,
20415      totalClass: `${pfx}-total`,
20416      hiddenClass: `${pfx}-hidden`,
20417      progressbarFillClass: `${pfx}-progressbar-fill`,
20418      progressbarOppositeClass: `${pfx}-progressbar-opposite`,
20419      clickableClass: `${pfx}-clickable`,
20420      lockClass: `${pfx}-lock`,
20421      horizontalClass: `${pfx}-horizontal`,
20422      verticalClass: `${pfx}-vertical`,
20423      paginationDisabledClass: `${pfx}-disabled`
20424    }
20425  });
20426  swiper.pagination = {
20427    el: null,
20428    $el: null,
20429    bullets: []
20430  };
20431  let bulletSize;
20432  let dynamicBulletIndex = 0;
20433
20434  function isPaginationDisabled() {
20435    return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0;
20436  }
20437
20438  function setSideBullets($bulletEl, position) {
20439    const {
20440      bulletActiveClass
20441    } = swiper.params.pagination;
20442    $bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`);
20443  }
20444
20445  function update() {
20446    // Render || Update Pagination bullets/items
20447    const rtl = swiper.rtl;
20448    const params = swiper.params.pagination;
20449    if (isPaginationDisabled()) return;
20450    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
20451    const $el = swiper.pagination.$el; // Current/Total
20452
20453    let current;
20454    const total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
20455
20456    if (swiper.params.loop) {
20457      current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);
20458
20459      if (current > slidesLength - 1 - swiper.loopedSlides * 2) {
20460        current -= slidesLength - swiper.loopedSlides * 2;
20461      }
20462
20463      if (current > total - 1) current -= total;
20464      if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;
20465    } else if (typeof swiper.snapIndex !== 'undefined') {
20466      current = swiper.snapIndex;
20467    } else {
20468      current = swiper.activeIndex || 0;
20469    } // Types
20470
20471
20472    if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {
20473      const bullets = swiper.pagination.bullets;
20474      let firstIndex;
20475      let lastIndex;
20476      let midIndex;
20477
20478      if (params.dynamicBullets) {
20479        bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);
20480        $el.css(swiper.isHorizontal() ? 'width' : 'height', `${bulletSize * (params.dynamicMainBullets + 4)}px`);
20481
20482        if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {
20483          dynamicBulletIndex += current - (swiper.previousIndex - swiper.loopedSlides || 0);
20484
20485          if (dynamicBulletIndex > params.dynamicMainBullets - 1) {
20486            dynamicBulletIndex = params.dynamicMainBullets - 1;
20487          } else if (dynamicBulletIndex < 0) {
20488            dynamicBulletIndex = 0;
20489          }
20490        }
20491
20492        firstIndex = Math.max(current - dynamicBulletIndex, 0);
20493        lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);
20494        midIndex = (lastIndex + firstIndex) / 2;
20495      }
20496
20497      bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`).join(' '));
20498
20499      if ($el.length > 1) {
20500        bullets.each(bullet => {
20501          const $bullet = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(bullet);
20502          const bulletIndex = $bullet.index();
20503
20504          if (bulletIndex === current) {
20505            $bullet.addClass(params.bulletActiveClass);
20506          }
20507
20508          if (params.dynamicBullets) {
20509            if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {
20510              $bullet.addClass(`${params.bulletActiveClass}-main`);
20511            }
20512
20513            if (bulletIndex === firstIndex) {
20514              setSideBullets($bullet, 'prev');
20515            }
20516
20517            if (bulletIndex === lastIndex) {
20518              setSideBullets($bullet, 'next');
20519            }
20520          }
20521        });
20522      } else {
20523        const $bullet = bullets.eq(current);
20524        const bulletIndex = $bullet.index();
20525        $bullet.addClass(params.bulletActiveClass);
20526
20527        if (params.dynamicBullets) {
20528          const $firstDisplayedBullet = bullets.eq(firstIndex);
20529          const $lastDisplayedBullet = bullets.eq(lastIndex);
20530
20531          for (let i = firstIndex; i <= lastIndex; i += 1) {
20532            bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);
20533          }
20534
20535          if (swiper.params.loop) {
20536            if (bulletIndex >= bullets.length) {
20537              for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {
20538                bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);
20539              }
20540
20541              bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);
20542            } else {
20543              setSideBullets($firstDisplayedBullet, 'prev');
20544              setSideBullets($lastDisplayedBullet, 'next');
20545            }
20546          } else {
20547            setSideBullets($firstDisplayedBullet, 'prev');
20548            setSideBullets($lastDisplayedBullet, 'next');
20549          }
20550        }
20551      }
20552
20553      if (params.dynamicBullets) {
20554        const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);
20555        const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;
20556        const offsetProp = rtl ? 'right' : 'left';
20557        bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);
20558      }
20559    }
20560
20561    if (params.type === 'fraction') {
20562      $el.find((0,_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params.currentClass)).text(params.formatFractionCurrent(current + 1));
20563      $el.find((0,_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params.totalClass)).text(params.formatFractionTotal(total));
20564    }
20565
20566    if (params.type === 'progressbar') {
20567      let progressbarDirection;
20568
20569      if (params.progressbarOpposite) {
20570        progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';
20571      } else {
20572        progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';
20573      }
20574
20575      const scale = (current + 1) / total;
20576      let scaleX = 1;
20577      let scaleY = 1;
20578
20579      if (progressbarDirection === 'horizontal') {
20580        scaleX = scale;
20581      } else {
20582        scaleY = scale;
20583      }
20584
20585      $el.find((0,_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);
20586    }
20587
20588    if (params.type === 'custom' && params.renderCustom) {
20589      $el.html(params.renderCustom(swiper, current + 1, total));
20590      emit('paginationRender', $el[0]);
20591    } else {
20592      emit('paginationUpdate', $el[0]);
20593    }
20594
20595    if (swiper.params.watchOverflow && swiper.enabled) {
20596      $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
20597    }
20598  }
20599
20600  function render() {
20601    // Render Container
20602    const params = swiper.params.pagination;
20603    if (isPaginationDisabled()) return;
20604    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
20605    const $el = swiper.pagination.$el;
20606    let paginationHTML = '';
20607
20608    if (params.type === 'bullets') {
20609      let numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
20610
20611      if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) {
20612        numberOfBullets = slidesLength;
20613      }
20614
20615      for (let i = 0; i < numberOfBullets; i += 1) {
20616        if (params.renderBullet) {
20617          paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);
20618        } else {
20619          paginationHTML += `<${params.bulletElement} class="${params.bulletClass}"></${params.bulletElement}>`;
20620        }
20621      }
20622
20623      $el.html(paginationHTML);
20624      swiper.pagination.bullets = $el.find((0,_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params.bulletClass));
20625    }
20626
20627    if (params.type === 'fraction') {
20628      if (params.renderFraction) {
20629        paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);
20630      } else {
20631        paginationHTML = `<span class="${params.currentClass}"></span>` + ' / ' + `<span class="${params.totalClass}"></span>`;
20632      }
20633
20634      $el.html(paginationHTML);
20635    }
20636
20637    if (params.type === 'progressbar') {
20638      if (params.renderProgressbar) {
20639        paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);
20640      } else {
20641        paginationHTML = `<span class="${params.progressbarFillClass}"></span>`;
20642      }
20643
20644      $el.html(paginationHTML);
20645    }
20646
20647    if (params.type !== 'custom') {
20648      emit('paginationRender', swiper.pagination.$el[0]);
20649    }
20650  }
20651
20652  function init() {
20653    swiper.params.pagination = (0,_shared_create_element_if_not_defined_js__WEBPACK_IMPORTED_MODULE_2__["default"])(swiper, swiper.originalParams.pagination, swiper.params.pagination, {
20654      el: 'swiper-pagination'
20655    });
20656    const params = swiper.params.pagination;
20657    if (!params.el) return;
20658    let $el = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(params.el);
20659    if ($el.length === 0) return;
20660
20661    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {
20662      $el = swiper.$el.find(params.el); // check if it belongs to another nested Swiper
20663
20664      if ($el.length > 1) {
20665        $el = $el.filter(el => {
20666          if ((0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(el).parents('.swiper')[0] !== swiper.el) return false;
20667          return true;
20668        });
20669      }
20670    }
20671
20672    if (params.type === 'bullets' && params.clickable) {
20673      $el.addClass(params.clickableClass);
20674    }
20675
20676    $el.addClass(params.modifierClass + params.type);
20677    $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
20678
20679    if (params.type === 'bullets' && params.dynamicBullets) {
20680      $el.addClass(`${params.modifierClass}${params.type}-dynamic`);
20681      dynamicBulletIndex = 0;
20682
20683      if (params.dynamicMainBullets < 1) {
20684        params.dynamicMainBullets = 1;
20685      }
20686    }
20687
20688    if (params.type === 'progressbar' && params.progressbarOpposite) {
20689      $el.addClass(params.progressbarOppositeClass);
20690    }
20691
20692    if (params.clickable) {
20693      $el.on('click', (0,_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params.bulletClass), function onClick(e) {
20694        e.preventDefault();
20695        let index = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(this).index() * swiper.params.slidesPerGroup;
20696        if (swiper.params.loop) index += swiper.loopedSlides;
20697        swiper.slideTo(index);
20698      });
20699    }
20700
20701    Object.assign(swiper.pagination, {
20702      $el,
20703      el: $el[0]
20704    });
20705
20706    if (!swiper.enabled) {
20707      $el.addClass(params.lockClass);
20708    }
20709  }
20710
20711  function destroy() {
20712    const params = swiper.params.pagination;
20713    if (isPaginationDisabled()) return;
20714    const $el = swiper.pagination.$el;
20715    $el.removeClass(params.hiddenClass);
20716    $el.removeClass(params.modifierClass + params.type);
20717    $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
20718    if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass);
20719
20720    if (params.clickable) {
20721      $el.off('click', (0,_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params.bulletClass));
20722    }
20723  }
20724
20725  on('init', () => {
20726    if (swiper.params.pagination.enabled === false) {
20727      // eslint-disable-next-line
20728      disable();
20729    } else {
20730      init();
20731      render();
20732      update();
20733    }
20734  });
20735  on('activeIndexChange', () => {
20736    if (swiper.params.loop) {
20737      update();
20738    } else if (typeof swiper.snapIndex === 'undefined') {
20739      update();
20740    }
20741  });
20742  on('snapIndexChange', () => {
20743    if (!swiper.params.loop) {
20744      update();
20745    }
20746  });
20747  on('slidesLengthChange', () => {
20748    if (swiper.params.loop) {
20749      render();
20750      update();
20751    }
20752  });
20753  on('snapGridLengthChange', () => {
20754    if (!swiper.params.loop) {
20755      render();
20756      update();
20757    }
20758  });
20759  on('destroy', () => {
20760    destroy();
20761  });
20762  on('enable disable', () => {
20763    const {
20764      $el
20765    } = swiper.pagination;
20766
20767    if ($el) {
20768      $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);
20769    }
20770  });
20771  on('lock unlock', () => {
20772    update();
20773  });
20774  on('click', (_s, e) => {
20775    const targetEl = e.target;
20776    const {
20777      $el
20778    } = swiper.pagination;
20779
20780    if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el && $el.length > 0 && !(0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(targetEl).hasClass(swiper.params.pagination.bulletClass)) {
20781      if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;
20782      const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass);
20783
20784      if (isHidden === true) {
20785        emit('paginationShow');
20786      } else {
20787        emit('paginationHide');
20788      }
20789
20790      $el.toggleClass(swiper.params.pagination.hiddenClass);
20791    }
20792  });
20793
20794  const enable = () => {
20795    swiper.$el.removeClass(swiper.params.pagination.paginationDisabledClass);
20796
20797    if (swiper.pagination.$el) {
20798      swiper.pagination.$el.removeClass(swiper.params.pagination.paginationDisabledClass);
20799    }
20800
20801    init();
20802    render();
20803    update();
20804  };
20805
20806  const disable = () => {
20807    swiper.$el.addClass(swiper.params.pagination.paginationDisabledClass);
20808
20809    if (swiper.pagination.$el) {
20810      swiper.pagination.$el.addClass(swiper.params.pagination.paginationDisabledClass);
20811    }
20812
20813    destroy();
20814  };
20815
20816  Object.assign(swiper.pagination, {
20817    enable,
20818    disable,
20819    render,
20820    update,
20821    init,
20822    destroy
20823  });
20824}
20825
20826/***/ }),
20827
vendor: 4,322 bytes, lines 20828-20955
20828/***/ "./node_modules/swiper/modules/parallax/parallax.js":
20829/*!**********************************************************!*\
20830  !*** ./node_modules/swiper/modules/parallax/parallax.js ***!
20831  \**********************************************************/
20832/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
20833
20834__webpack_require__.r(__webpack_exports__);
20835/* harmony export */ __webpack_require__.d(__webpack_exports__, {
20836/* harmony export */   "default": function() { return /* binding */ Parallax; }
20837/* harmony export */ });
20838/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
20839
20840function Parallax({
20841  swiper,
20842  extendParams,
20843  on
20844}) {
20845  extendParams({
20846    parallax: {
20847      enabled: false
20848    }
20849  });
20850
20851  const setTransform = (el, progress) => {
20852    const {
20853      rtl
20854    } = swiper;
20855    const $el = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(el);
20856    const rtlFactor = rtl ? -1 : 1;
20857    const p = $el.attr('data-swiper-parallax') || '0';
20858    let x = $el.attr('data-swiper-parallax-x');
20859    let y = $el.attr('data-swiper-parallax-y');
20860    const scale = $el.attr('data-swiper-parallax-scale');
20861    const opacity = $el.attr('data-swiper-parallax-opacity');
20862
20863    if (x || y) {
20864      x = x || '0';
20865      y = y || '0';
20866    } else if (swiper.isHorizontal()) {
20867      x = p;
20868      y = '0';
20869    } else {
20870      y = p;
20871      x = '0';
20872    }
20873
20874    if (x.indexOf('%') >= 0) {
20875      x = `${parseInt(x, 10) * progress * rtlFactor}%`;
20876    } else {
20877      x = `${x * progress * rtlFactor}px`;
20878    }
20879
20880    if (y.indexOf('%') >= 0) {
20881      y = `${parseInt(y, 10) * progress}%`;
20882    } else {
20883      y = `${y * progress}px`;
20884    }
20885
20886    if (typeof opacity !== 'undefined' && opacity !== null) {
20887      const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));
20888      $el[0].style.opacity = currentOpacity;
20889    }
20890
20891    if (typeof scale === 'undefined' || scale === null) {
20892      $el.transform(`translate3d(${x}, ${y}, 0px)`);
20893    } else {
20894      const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));
20895      $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);
20896    }
20897  };
20898
20899  const setTranslate = () => {
20900    const {
20901      $el,
20902      slides,
20903      progress,
20904      snapGrid
20905    } = swiper;
20906    $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => {
20907      setTransform(el, progress);
20908    });
20909    slides.each((slideEl, slideIndex) => {
20910      let slideProgress = slideEl.progress;
20911
20912      if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {
20913        slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);
20914      }
20915
20916      slideProgress = Math.min(Math.max(slideProgress, -1), 1);
20917      (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => {
20918        setTransform(el, slideProgress);
20919      });
20920    });
20921  };
20922
20923  const setTransition = (duration = swiper.params.speed) => {
20924    const {
20925      $el
20926    } = swiper;
20927    $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(parallaxEl => {
20928      const $parallaxEl = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(parallaxEl);
20929      let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;
20930      if (duration === 0) parallaxDuration = 0;
20931      $parallaxEl.transition(parallaxDuration);
20932    });
20933  };
20934
20935  on('beforeInit', () => {
20936    if (!swiper.params.parallax.enabled) return;
20937    swiper.params.watchSlidesProgress = true;
20938    swiper.originalParams.watchSlidesProgress = true;
20939  });
20940  on('init', () => {
20941    if (!swiper.params.parallax.enabled) return;
20942    setTranslate();
20943  });
20944  on('setTranslate', () => {
20945    if (!swiper.params.parallax.enabled) return;
20946    setTranslate();
20947  });
20948  on('setTransition', (_swiper, duration) => {
20949    if (!swiper.params.parallax.enabled) return;
20950    setTransition(duration);
20951  });
20952}
20953
20954/***/ }),
20955
vendor: 11,772 bytes, lines 20956-21375
20956/***/ "./node_modules/swiper/modules/scrollbar/scrollbar.js":
20957/*!************************************************************!*\
20958  !*** ./node_modules/swiper/modules/scrollbar/scrollbar.js ***!
20959  \************************************************************/
20960/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
20961
20962__webpack_require__.r(__webpack_exports__);
20963/* harmony export */ __webpack_require__.d(__webpack_exports__, {
20964/* harmony export */   "default": function() { return /* binding */ Scrollbar; }
20965/* harmony export */ });
20966/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
20967/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
20968/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
20969/* harmony import */ var _shared_create_element_if_not_defined_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../shared/create-element-if-not-defined.js */ "./node_modules/swiper/shared/create-element-if-not-defined.js");
20970
20971
20972
20973
20974function Scrollbar({
20975  swiper,
20976  extendParams,
20977  on,
20978  emit
20979}) {
20980  const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
20981  let isTouched = false;
20982  let timeout = null;
20983  let dragTimeout = null;
20984  let dragStartPos;
20985  let dragSize;
20986  let trackSize;
20987  let divider;
20988  extendParams({
20989    scrollbar: {
20990      el: null,
20991      dragSize: 'auto',
20992      hide: false,
20993      draggable: false,
20994      snapOnRelease: true,
20995      lockClass: 'swiper-scrollbar-lock',
20996      dragClass: 'swiper-scrollbar-drag',
20997      scrollbarDisabledClass: 'swiper-scrollbar-disabled',
20998      horizontalClass: `swiper-scrollbar-horizontal`,
20999      verticalClass: `swiper-scrollbar-vertical`
21000    }
21001  });
21002  swiper.scrollbar = {
21003    el: null,
21004    dragEl: null,
21005    $el: null,
21006    $dragEl: null
21007  };
21008
21009  function setTranslate() {
21010    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
21011    const {
21012      scrollbar,
21013      rtlTranslate: rtl,
21014      progress
21015    } = swiper;
21016    const {
21017      $dragEl,
21018      $el
21019    } = scrollbar;
21020    const params = swiper.params.scrollbar;
21021    let newSize = dragSize;
21022    let newPos = (trackSize - dragSize) * progress;
21023
21024    if (rtl) {
21025      newPos = -newPos;
21026
21027      if (newPos > 0) {
21028        newSize = dragSize - newPos;
21029        newPos = 0;
21030      } else if (-newPos + dragSize > trackSize) {
21031        newSize = trackSize + newPos;
21032      }
21033    } else if (newPos < 0) {
21034      newSize = dragSize + newPos;
21035      newPos = 0;
21036    } else if (newPos + dragSize > trackSize) {
21037      newSize = trackSize - newPos;
21038    }
21039
21040    if (swiper.isHorizontal()) {
21041      $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);
21042      $dragEl[0].style.width = `${newSize}px`;
21043    } else {
21044      $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);
21045      $dragEl[0].style.height = `${newSize}px`;
21046    }
21047
21048    if (params.hide) {
21049      clearTimeout(timeout);
21050      $el[0].style.opacity = 1;
21051      timeout = setTimeout(() => {
21052        $el[0].style.opacity = 0;
21053        $el.transition(400);
21054      }, 1000);
21055    }
21056  }
21057
21058  function setTransition(duration) {
21059    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
21060    swiper.scrollbar.$dragEl.transition(duration);
21061  }
21062
21063  function updateSize() {
21064    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
21065    const {
21066      scrollbar
21067    } = swiper;
21068    const {
21069      $dragEl,
21070      $el
21071    } = scrollbar;
21072    $dragEl[0].style.width = '';
21073    $dragEl[0].style.height = '';
21074    trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;
21075    divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));
21076
21077    if (swiper.params.scrollbar.dragSize === 'auto') {
21078      dragSize = trackSize * divider;
21079    } else {
21080      dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);
21081    }
21082
21083    if (swiper.isHorizontal()) {
21084      $dragEl[0].style.width = `${dragSize}px`;
21085    } else {
21086      $dragEl[0].style.height = `${dragSize}px`;
21087    }
21088
21089    if (divider >= 1) {
21090      $el[0].style.display = 'none';
21091    } else {
21092      $el[0].style.display = '';
21093    }
21094
21095    if (swiper.params.scrollbar.hide) {
21096      $el[0].style.opacity = 0;
21097    }
21098
21099    if (swiper.params.watchOverflow && swiper.enabled) {
21100      scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);
21101    }
21102  }
21103
21104  function getPointerPosition(e) {
21105    if (swiper.isHorizontal()) {
21106      return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX;
21107    }
21108
21109    return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY;
21110  }
21111
21112  function setDragPosition(e) {
21113    const {
21114      scrollbar,
21115      rtlTranslate: rtl
21116    } = swiper;
21117    const {
21118      $el
21119    } = scrollbar;
21120    let positionRatio;
21121    positionRatio = (getPointerPosition(e) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);
21122    positionRatio = Math.max(Math.min(positionRatio, 1), 0);
21123
21124    if (rtl) {
21125      positionRatio = 1 - positionRatio;
21126    }
21127
21128    const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;
21129    swiper.updateProgress(position);
21130    swiper.setTranslate(position);
21131    swiper.updateActiveIndex();
21132    swiper.updateSlidesClasses();
21133  }
21134
21135  function onDragStart(e) {
21136    const params = swiper.params.scrollbar;
21137    const {
21138      scrollbar,
21139      $wrapperEl
21140    } = swiper;
21141    const {
21142      $el,
21143      $dragEl
21144    } = scrollbar;
21145    isTouched = true;
21146    dragStartPos = e.target === $dragEl[0] || e.target === $dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;
21147    e.preventDefault();
21148    e.stopPropagation();
21149    $wrapperEl.transition(100);
21150    $dragEl.transition(100);
21151    setDragPosition(e);
21152    clearTimeout(dragTimeout);
21153    $el.transition(0);
21154
21155    if (params.hide) {
21156      $el.css('opacity', 1);
21157    }
21158
21159    if (swiper.params.cssMode) {
21160      swiper.$wrapperEl.css('scroll-snap-type', 'none');
21161    }
21162
21163    emit('scrollbarDragStart', e);
21164  }
21165
21166  function onDragMove(e) {
21167    const {
21168      scrollbar,
21169      $wrapperEl
21170    } = swiper;
21171    const {
21172      $el,
21173      $dragEl
21174    } = scrollbar;
21175    if (!isTouched) return;
21176    if (e.preventDefault) e.preventDefault();else e.returnValue = false;
21177    setDragPosition(e);
21178    $wrapperEl.transition(0);
21179    $el.transition(0);
21180    $dragEl.transition(0);
21181    emit('scrollbarDragMove', e);
21182  }
21183
21184  function onDragEnd(e) {
21185    const params = swiper.params.scrollbar;
21186    const {
21187      scrollbar,
21188      $wrapperEl
21189    } = swiper;
21190    const {
21191      $el
21192    } = scrollbar;
21193    if (!isTouched) return;
21194    isTouched = false;
21195
21196    if (swiper.params.cssMode) {
21197      swiper.$wrapperEl.css('scroll-snap-type', '');
21198      $wrapperEl.transition('');
21199    }
21200
21201    if (params.hide) {
21202      clearTimeout(dragTimeout);
21203      dragTimeout = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.nextTick)(() => {
21204        $el.css('opacity', 0);
21205        $el.transition(400);
21206      }, 1000);
21207    }
21208
21209    emit('scrollbarDragEnd', e);
21210
21211    if (params.snapOnRelease) {
21212      swiper.slideToClosest();
21213    }
21214  }
21215
21216  function events(method) {
21217    const {
21218      scrollbar,
21219      touchEventsTouch,
21220      touchEventsDesktop,
21221      params,
21222      support
21223    } = swiper;
21224    const $el = scrollbar.$el;
21225    if (!$el) return;
21226    const target = $el[0];
21227    const activeListener = support.passiveListener && params.passiveListeners ? {
21228      passive: false,
21229      capture: false
21230    } : false;
21231    const passiveListener = support.passiveListener && params.passiveListeners ? {
21232      passive: true,
21233      capture: false
21234    } : false;
21235    if (!target) return;
21236    const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';
21237
21238    if (!support.touch) {
21239      target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener);
21240      document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener);
21241      document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener);
21242    } else {
21243      target[eventMethod](touchEventsTouch.start, onDragStart, activeListener);
21244      target[eventMethod](touchEventsTouch.move, onDragMove, activeListener);
21245      target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener);
21246    }
21247  }
21248
21249  function enableDraggable() {
21250    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
21251    events('on');
21252  }
21253
21254  function disableDraggable() {
21255    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
21256    events('off');
21257  }
21258
21259  function init() {
21260    const {
21261      scrollbar,
21262      $el: $swiperEl
21263    } = swiper;
21264    swiper.params.scrollbar = (0,_shared_create_element_if_not_defined_js__WEBPACK_IMPORTED_MODULE_3__["default"])(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {
21265      el: 'swiper-scrollbar'
21266    });
21267    const params = swiper.params.scrollbar;
21268    if (!params.el) return;
21269    let $el = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params.el);
21270
21271    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {
21272      $el = $swiperEl.find(params.el);
21273    }
21274
21275    $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
21276    let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);
21277
21278    if ($dragEl.length === 0) {
21279      $dragEl = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(`<div class="${swiper.params.scrollbar.dragClass}"></div>`);
21280      $el.append($dragEl);
21281    }
21282
21283    Object.assign(scrollbar, {
21284      $el,
21285      el: $el[0],
21286      $dragEl,
21287      dragEl: $dragEl[0]
21288    });
21289
21290    if (params.draggable) {
21291      enableDraggable();
21292    }
21293
21294    if ($el) {
21295      $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);
21296    }
21297  }
21298
21299  function destroy() {
21300    const params = swiper.params.scrollbar;
21301    const $el = swiper.scrollbar.$el;
21302
21303    if ($el) {
21304      $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
21305    }
21306
21307    disableDraggable();
21308  }
21309
21310  on('init', () => {
21311    if (swiper.params.scrollbar.enabled === false) {
21312      // eslint-disable-next-line
21313      disable();
21314    } else {
21315      init();
21316      updateSize();
21317      setTranslate();
21318    }
21319  });
21320  on('update resize observerUpdate lock unlock', () => {
21321    updateSize();
21322  });
21323  on('setTranslate', () => {
21324    setTranslate();
21325  });
21326  on('setTransition', (_s, duration) => {
21327    setTransition(duration);
21328  });
21329  on('enable disable', () => {
21330    const {
21331      $el
21332    } = swiper.scrollbar;
21333
21334    if ($el) {
21335      $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);
21336    }
21337  });
21338  on('destroy', () => {
21339    destroy();
21340  });
21341
21342  const enable = () => {
21343    swiper.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);
21344
21345    if (swiper.scrollbar.$el) {
21346      swiper.scrollbar.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);
21347    }
21348
21349    init();
21350    updateSize();
21351    setTranslate();
21352  };
21353
21354  const disable = () => {
21355    swiper.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);
21356
21357    if (swiper.scrollbar.$el) {
21358      swiper.scrollbar.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);
21359    }
21360
21361    destroy();
21362  };
21363
21364  Object.assign(swiper.scrollbar, {
21365    enable,
21366    disable,
21367    updateSize,
21368    setTranslate,
21369    init,
21370    destroy
21371  });
21372}
21373
21374/***/ }),
21375
vendor: 8,515 bytes, lines 21376-21593
21376/***/ "./node_modules/swiper/modules/thumbs/thumbs.js":
21377/*!******************************************************!*\
21378  !*** ./node_modules/swiper/modules/thumbs/thumbs.js ***!
21379  \******************************************************/
21380/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
21381
21382__webpack_require__.r(__webpack_exports__);
21383/* harmony export */ __webpack_require__.d(__webpack_exports__, {
21384/* harmony export */   "default": function() { return /* binding */ Thumb; }
21385/* harmony export */ });
21386/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
21387/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
21388
21389
21390function Thumb({
21391  swiper,
21392  extendParams,
21393  on
21394}) {
21395  extendParams({
21396    thumbs: {
21397      swiper: null,
21398      multipleActiveThumbs: true,
21399      autoScrollOffset: 0,
21400      slideThumbActiveClass: 'swiper-slide-thumb-active',
21401      thumbsContainerClass: 'swiper-thumbs'
21402    }
21403  });
21404  let initialized = false;
21405  let swiperCreated = false;
21406  swiper.thumbs = {
21407    swiper: null
21408  };
21409
21410  function onThumbClick() {
21411    const thumbsSwiper = swiper.thumbs.swiper;
21412    if (!thumbsSwiper || thumbsSwiper.destroyed) return;
21413    const clickedIndex = thumbsSwiper.clickedIndex;
21414    const clickedSlide = thumbsSwiper.clickedSlide;
21415    if (clickedSlide && (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;
21416    if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;
21417    let slideToIndex;
21418
21419    if (thumbsSwiper.params.loop) {
21420      slideToIndex = parseInt((0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);
21421    } else {
21422      slideToIndex = clickedIndex;
21423    }
21424
21425    if (swiper.params.loop) {
21426      let currentIndex = swiper.activeIndex;
21427
21428      if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {
21429        swiper.loopFix(); // eslint-disable-next-line
21430
21431        swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
21432        currentIndex = swiper.activeIndex;
21433      }
21434
21435      const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index();
21436      const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index();
21437      if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex;
21438    }
21439
21440    swiper.slideTo(slideToIndex);
21441  }
21442
21443  function init() {
21444    const {
21445      thumbs: thumbsParams
21446    } = swiper.params;
21447    if (initialized) return false;
21448    initialized = true;
21449    const SwiperClass = swiper.constructor;
21450
21451    if (thumbsParams.swiper instanceof SwiperClass) {
21452      swiper.thumbs.swiper = thumbsParams.swiper;
21453      Object.assign(swiper.thumbs.swiper.originalParams, {
21454        watchSlidesProgress: true,
21455        slideToClickedSlide: false
21456      });
21457      Object.assign(swiper.thumbs.swiper.params, {
21458        watchSlidesProgress: true,
21459        slideToClickedSlide: false
21460      });
21461    } else if ((0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.isObject)(thumbsParams.swiper)) {
21462      const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);
21463      Object.assign(thumbsSwiperParams, {
21464        watchSlidesProgress: true,
21465        slideToClickedSlide: false
21466      });
21467      swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);
21468      swiperCreated = true;
21469    }
21470
21471    swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);
21472    swiper.thumbs.swiper.on('tap', onThumbClick);
21473    return true;
21474  }
21475
21476  function update(initial) {
21477    const thumbsSwiper = swiper.thumbs.swiper;
21478    if (!thumbsSwiper || thumbsSwiper.destroyed) return;
21479    const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; // Activate thumbs
21480
21481    let thumbsToActivate = 1;
21482    const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;
21483
21484    if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {
21485      thumbsToActivate = swiper.params.slidesPerView;
21486    }
21487
21488    if (!swiper.params.thumbs.multipleActiveThumbs) {
21489      thumbsToActivate = 1;
21490    }
21491
21492    thumbsToActivate = Math.floor(thumbsToActivate);
21493    thumbsSwiper.slides.removeClass(thumbActiveClass);
21494
21495    if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {
21496      for (let i = 0; i < thumbsToActivate; i += 1) {
21497        thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index="${swiper.realIndex + i}"]`).addClass(thumbActiveClass);
21498      }
21499    } else {
21500      for (let i = 0; i < thumbsToActivate; i += 1) {
21501        thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);
21502      }
21503    }
21504
21505    const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;
21506    const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;
21507
21508    if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {
21509      let currentThumbsIndex = thumbsSwiper.activeIndex;
21510      let newThumbsIndex;
21511      let direction;
21512
21513      if (thumbsSwiper.params.loop) {
21514        if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {
21515          thumbsSwiper.loopFix(); // eslint-disable-next-line
21516
21517          thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;
21518          currentThumbsIndex = thumbsSwiper.activeIndex;
21519        } // Find actual thumbs index to slide to
21520
21521
21522        const prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0).index();
21523        const nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0).index();
21524
21525        if (typeof prevThumbsIndex === 'undefined') {
21526          newThumbsIndex = nextThumbsIndex;
21527        } else if (typeof nextThumbsIndex === 'undefined') {
21528          newThumbsIndex = prevThumbsIndex;
21529        } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) {
21530          newThumbsIndex = thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex;
21531        } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) {
21532          newThumbsIndex = nextThumbsIndex;
21533        } else {
21534          newThumbsIndex = prevThumbsIndex;
21535        }
21536
21537        direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';
21538      } else {
21539        newThumbsIndex = swiper.realIndex;
21540        direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';
21541      }
21542
21543      if (useOffset) {
21544        newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;
21545      }
21546
21547      if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {
21548        if (thumbsSwiper.params.centeredSlides) {
21549          if (newThumbsIndex > currentThumbsIndex) {
21550            newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;
21551          } else {
21552            newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;
21553          }
21554        } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) {// newThumbsIndex = newThumbsIndex - slidesPerView + 1;
21555        }
21556
21557        thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);
21558      }
21559    }
21560  }
21561
21562  on('beforeInit', () => {
21563    const {
21564      thumbs
21565    } = swiper.params;
21566    if (!thumbs || !thumbs.swiper) return;
21567    init();
21568    update(true);
21569  });
21570  on('slideChange update resize observerUpdate', () => {
21571    update();
21572  });
21573  on('setTransition', (_s, duration) => {
21574    const thumbsSwiper = swiper.thumbs.swiper;
21575    if (!thumbsSwiper || thumbsSwiper.destroyed) return;
21576    thumbsSwiper.setTransition(duration);
21577  });
21578  on('beforeDestroy', () => {
21579    const thumbsSwiper = swiper.thumbs.swiper;
21580    if (!thumbsSwiper || thumbsSwiper.destroyed) return;
21581
21582    if (swiperCreated) {
21583      thumbsSwiper.destroy();
21584    }
21585  });
21586  Object.assign(swiper.thumbs, {
21587    init,
21588    update
21589  });
21590}
21591
21592/***/ }),
21593
vendor: 9,075 bytes, lines 21594-21905
21594/***/ "./node_modules/swiper/modules/virtual/virtual.js":
21595/*!********************************************************!*\
21596  !*** ./node_modules/swiper/modules/virtual/virtual.js ***!
21597  \********************************************************/
21598/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
21599
21600__webpack_require__.r(__webpack_exports__);
21601/* harmony export */ __webpack_require__.d(__webpack_exports__, {
21602/* harmony export */   "default": function() { return /* binding */ Virtual; }
21603/* harmony export */ });
21604/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
21605/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
21606
21607
21608function Virtual({
21609  swiper,
21610  extendParams,
21611  on,
21612  emit
21613}) {
21614  extendParams({
21615    virtual: {
21616      enabled: false,
21617      slides: [],
21618      cache: true,
21619      renderSlide: null,
21620      renderExternal: null,
21621      renderExternalUpdate: true,
21622      addSlidesBefore: 0,
21623      addSlidesAfter: 0
21624    }
21625  });
21626  let cssModeTimeout;
21627  swiper.virtual = {
21628    cache: {},
21629    from: undefined,
21630    to: undefined,
21631    slides: [],
21632    offset: 0,
21633    slidesGrid: []
21634  };
21635
21636  function renderSlide(slide, index) {
21637    const params = swiper.params.virtual;
21638
21639    if (params.cache && swiper.virtual.cache[index]) {
21640      return swiper.virtual.cache[index];
21641    }
21642
21643    const $slideEl = params.renderSlide ? (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(params.renderSlide.call(swiper, slide, index)) : (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(`<div class="${swiper.params.slideClass}" data-swiper-slide-index="${index}">${slide}</div>`);
21644    if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);
21645    if (params.cache) swiper.virtual.cache[index] = $slideEl;
21646    return $slideEl;
21647  }
21648
21649  function update(force) {
21650    const {
21651      slidesPerView,
21652      slidesPerGroup,
21653      centeredSlides
21654    } = swiper.params;
21655    const {
21656      addSlidesBefore,
21657      addSlidesAfter
21658    } = swiper.params.virtual;
21659    const {
21660      from: previousFrom,
21661      to: previousTo,
21662      slides,
21663      slidesGrid: previousSlidesGrid,
21664      offset: previousOffset
21665    } = swiper.virtual;
21666
21667    if (!swiper.params.cssMode) {
21668      swiper.updateActiveIndex();
21669    }
21670
21671    const activeIndex = swiper.activeIndex || 0;
21672    let offsetProp;
21673    if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';
21674    let slidesAfter;
21675    let slidesBefore;
21676
21677    if (centeredSlides) {
21678      slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;
21679      slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;
21680    } else {
21681      slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;
21682      slidesBefore = slidesPerGroup + addSlidesBefore;
21683    }
21684
21685    const from = Math.max((activeIndex || 0) - slidesBefore, 0);
21686    const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);
21687    const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);
21688    Object.assign(swiper.virtual, {
21689      from,
21690      to,
21691      offset,
21692      slidesGrid: swiper.slidesGrid
21693    });
21694
21695    function onRendered() {
21696      swiper.updateSlides();
21697      swiper.updateProgress();
21698      swiper.updateSlidesClasses();
21699
21700      if (swiper.lazy && swiper.params.lazy.enabled) {
21701        swiper.lazy.load();
21702      }
21703
21704      emit('virtualUpdate');
21705    }
21706
21707    if (previousFrom === from && previousTo === to && !force) {
21708      if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {
21709        swiper.slides.css(offsetProp, `${offset}px`);
21710      }
21711
21712      swiper.updateProgress();
21713      emit('virtualUpdate');
21714      return;
21715    }
21716
21717    if (swiper.params.virtual.renderExternal) {
21718      swiper.params.virtual.renderExternal.call(swiper, {
21719        offset,
21720        from,
21721        to,
21722        slides: function getSlides() {
21723          const slidesToRender = [];
21724
21725          for (let i = from; i <= to; i += 1) {
21726            slidesToRender.push(slides[i]);
21727          }
21728
21729          return slidesToRender;
21730        }()
21731      });
21732
21733      if (swiper.params.virtual.renderExternalUpdate) {
21734        onRendered();
21735      } else {
21736        emit('virtualUpdate');
21737      }
21738
21739      return;
21740    }
21741
21742    const prependIndexes = [];
21743    const appendIndexes = [];
21744
21745    if (force) {
21746      swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();
21747    } else {
21748      for (let i = previousFrom; i <= previousTo; i += 1) {
21749        if (i < from || i > to) {
21750          swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index="${i}"]`).remove();
21751        }
21752      }
21753    }
21754
21755    for (let i = 0; i < slides.length; i += 1) {
21756      if (i >= from && i <= to) {
21757        if (typeof previousTo === 'undefined' || force) {
21758          appendIndexes.push(i);
21759        } else {
21760          if (i > previousTo) appendIndexes.push(i);
21761          if (i < previousFrom) prependIndexes.push(i);
21762        }
21763      }
21764    }
21765
21766    appendIndexes.forEach(index => {
21767      swiper.$wrapperEl.append(renderSlide(slides[index], index));
21768    });
21769    prependIndexes.sort((a, b) => b - a).forEach(index => {
21770      swiper.$wrapperEl.prepend(renderSlide(slides[index], index));
21771    });
21772    swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);
21773    onRendered();
21774  }
21775
21776  function appendSlide(slides) {
21777    if (typeof slides === 'object' && 'length' in slides) {
21778      for (let i = 0; i < slides.length; i += 1) {
21779        if (slides[i]) swiper.virtual.slides.push(slides[i]);
21780      }
21781    } else {
21782      swiper.virtual.slides.push(slides);
21783    }
21784
21785    update(true);
21786  }
21787
21788  function prependSlide(slides) {
21789    const activeIndex = swiper.activeIndex;
21790    let newActiveIndex = activeIndex + 1;
21791    let numberOfNewSlides = 1;
21792
21793    if (Array.isArray(slides)) {
21794      for (let i = 0; i < slides.length; i += 1) {
21795        if (slides[i]) swiper.virtual.slides.unshift(slides[i]);
21796      }
21797
21798      newActiveIndex = activeIndex + slides.length;
21799      numberOfNewSlides = slides.length;
21800    } else {
21801      swiper.virtual.slides.unshift(slides);
21802    }
21803
21804    if (swiper.params.virtual.cache) {
21805      const cache = swiper.virtual.cache;
21806      const newCache = {};
21807      Object.keys(cache).forEach(cachedIndex => {
21808        const $cachedEl = cache[cachedIndex];
21809        const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');
21810
21811        if (cachedElIndex) {
21812          $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);
21813        }
21814
21815        newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;
21816      });
21817      swiper.virtual.cache = newCache;
21818    }
21819
21820    update(true);
21821    swiper.slideTo(newActiveIndex, 0);
21822  }
21823
21824  function removeSlide(slidesIndexes) {
21825    if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;
21826    let activeIndex = swiper.activeIndex;
21827
21828    if (Array.isArray(slidesIndexes)) {
21829      for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {
21830        swiper.virtual.slides.splice(slidesIndexes[i], 1);
21831
21832        if (swiper.params.virtual.cache) {
21833          delete swiper.virtual.cache[slidesIndexes[i]];
21834        }
21835
21836        if (slidesIndexes[i] < activeIndex) activeIndex -= 1;
21837        activeIndex = Math.max(activeIndex, 0);
21838      }
21839    } else {
21840      swiper.virtual.slides.splice(slidesIndexes, 1);
21841
21842      if (swiper.params.virtual.cache) {
21843        delete swiper.virtual.cache[slidesIndexes];
21844      }
21845
21846      if (slidesIndexes < activeIndex) activeIndex -= 1;
21847      activeIndex = Math.max(activeIndex, 0);
21848    }
21849
21850    update(true);
21851    swiper.slideTo(activeIndex, 0);
21852  }
21853
21854  function removeAllSlides() {
21855    swiper.virtual.slides = [];
21856
21857    if (swiper.params.virtual.cache) {
21858      swiper.virtual.cache = {};
21859    }
21860
21861    update(true);
21862    swiper.slideTo(0, 0);
21863  }
21864
21865  on('beforeInit', () => {
21866    if (!swiper.params.virtual.enabled) return;
21867    swiper.virtual.slides = swiper.params.virtual.slides;
21868    swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);
21869    swiper.params.watchSlidesProgress = true;
21870    swiper.originalParams.watchSlidesProgress = true;
21871
21872    if (!swiper.params.initialSlide) {
21873      update();
21874    }
21875  });
21876  on('setTranslate', () => {
21877    if (!swiper.params.virtual.enabled) return;
21878
21879    if (swiper.params.cssMode && !swiper._immediateVirtual) {
21880      clearTimeout(cssModeTimeout);
21881      cssModeTimeout = setTimeout(() => {
21882        update();
21883      }, 100);
21884    } else {
21885      update();
21886    }
21887  });
21888  on('init update resize', () => {
21889    if (!swiper.params.virtual.enabled) return;
21890
21891    if (swiper.params.cssMode) {
21892      (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.setCSSProperty)(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);
21893    }
21894  });
21895  Object.assign(swiper.virtual, {
21896    appendSlide,
21897    prependSlide,
21898    removeSlide,
21899    removeAllSlides,
21900    update
21901  });
21902}
21903
21904/***/ }),
21905
vendor: 21,668 bytes, lines 21906-22533
21906/***/ "./node_modules/swiper/modules/zoom/zoom.js":
21907/*!**************************************************!*\
21908  !*** ./node_modules/swiper/modules/zoom/zoom.js ***!
21909  \**************************************************/
21910/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
21911
21912__webpack_require__.r(__webpack_exports__);
21913/* harmony export */ __webpack_require__.d(__webpack_exports__, {
21914/* harmony export */   "default": function() { return /* binding */ Zoom; }
21915/* harmony export */ });
21916/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
21917/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
21918/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
21919
21920
21921
21922function Zoom({
21923  swiper,
21924  extendParams,
21925  on,
21926  emit
21927}) {
21928  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
21929  extendParams({
21930    zoom: {
21931      enabled: false,
21932      maxRatio: 3,
21933      minRatio: 1,
21934      toggle: true,
21935      containerClass: 'swiper-zoom-container',
21936      zoomedSlideClass: 'swiper-slide-zoomed'
21937    }
21938  });
21939  swiper.zoom = {
21940    enabled: false
21941  };
21942  let currentScale = 1;
21943  let isScaling = false;
21944  let gesturesEnabled;
21945  let fakeGestureTouched;
21946  let fakeGestureMoved;
21947  const gesture = {
21948    $slideEl: undefined,
21949    slideWidth: undefined,
21950    slideHeight: undefined,
21951    $imageEl: undefined,
21952    $imageWrapEl: undefined,
21953    maxRatio: 3
21954  };
21955  const image = {
21956    isTouched: undefined,
21957    isMoved: undefined,
21958    currentX: undefined,
21959    currentY: undefined,
21960    minX: undefined,
21961    minY: undefined,
21962    maxX: undefined,
21963    maxY: undefined,
21964    width: undefined,
21965    height: undefined,
21966    startX: undefined,
21967    startY: undefined,
21968    touchesStart: {},
21969    touchesCurrent: {}
21970  };
21971  const velocity = {
21972    x: undefined,
21973    y: undefined,
21974    prevPositionX: undefined,
21975    prevPositionY: undefined,
21976    prevTime: undefined
21977  };
21978  let scale = 1;
21979  Object.defineProperty(swiper.zoom, 'scale', {
21980    get() {
21981      return scale;
21982    },
21983
21984    set(value) {
21985      if (scale !== value) {
21986        const imageEl = gesture.$imageEl ? gesture.$imageEl[0] : undefined;
21987        const slideEl = gesture.$slideEl ? gesture.$slideEl[0] : undefined;
21988        emit('zoomChange', value, imageEl, slideEl);
21989      }
21990
21991      scale = value;
21992    }
21993
21994  });
21995
21996  function getDistanceBetweenTouches(e) {
21997    if (e.targetTouches.length < 2) return 1;
21998    const x1 = e.targetTouches[0].pageX;
21999    const y1 = e.targetTouches[0].pageY;
22000    const x2 = e.targetTouches[1].pageX;
22001    const y2 = e.targetTouches[1].pageY;
22002    const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);
22003    return distance;
22004  } // Events
22005
22006
22007  function onGestureStart(e) {
22008    const support = swiper.support;
22009    const params = swiper.params.zoom;
22010    fakeGestureTouched = false;
22011    fakeGestureMoved = false;
22012
22013    if (!support.gestures) {
22014      if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) {
22015        return;
22016      }
22017
22018      fakeGestureTouched = true;
22019      gesture.scaleStart = getDistanceBetweenTouches(e);
22020    }
22021
22022    if (!gesture.$slideEl || !gesture.$slideEl.length) {
22023      gesture.$slideEl = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(e.target).closest(`.${swiper.params.slideClass}`);
22024      if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
22025      gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);
22026      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);
22027      gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
22028
22029      if (gesture.$imageWrapEl.length === 0) {
22030        gesture.$imageEl = undefined;
22031        return;
22032      }
22033    }
22034
22035    if (gesture.$imageEl) {
22036      gesture.$imageEl.transition(0);
22037    }
22038
22039    isScaling = true;
22040  }
22041
22042  function onGestureChange(e) {
22043    const support = swiper.support;
22044    const params = swiper.params.zoom;
22045    const zoom = swiper.zoom;
22046
22047    if (!support.gestures) {
22048      if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) {
22049        return;
22050      }
22051
22052      fakeGestureMoved = true;
22053      gesture.scaleMove = getDistanceBetweenTouches(e);
22054    }
22055
22056    if (!gesture.$imageEl || gesture.$imageEl.length === 0) {
22057      if (e.type === 'gesturechange') onGestureStart(e);
22058      return;
22059    }
22060
22061    if (support.gestures) {
22062      zoom.scale = e.scale * currentScale;
22063    } else {
22064      zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;
22065    }
22066
22067    if (zoom.scale > gesture.maxRatio) {
22068      zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;
22069    }
22070
22071    if (zoom.scale < params.minRatio) {
22072      zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;
22073    }
22074
22075    gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);
22076  }
22077
22078  function onGestureEnd(e) {
22079    const device = swiper.device;
22080    const support = swiper.support;
22081    const params = swiper.params.zoom;
22082    const zoom = swiper.zoom;
22083
22084    if (!support.gestures) {
22085      if (!fakeGestureTouched || !fakeGestureMoved) {
22086        return;
22087      }
22088
22089      if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2 && !device.android) {
22090        return;
22091      }
22092
22093      fakeGestureTouched = false;
22094      fakeGestureMoved = false;
22095    }
22096
22097    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
22098    zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);
22099    gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`);
22100    currentScale = zoom.scale;
22101    isScaling = false;
22102    if (zoom.scale === 1) gesture.$slideEl = undefined;
22103  }
22104
22105  function onTouchStart(e) {
22106    const device = swiper.device;
22107    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
22108    if (image.isTouched) return;
22109    if (device.android && e.cancelable) e.preventDefault();
22110    image.isTouched = true;
22111    image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
22112    image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
22113  }
22114
22115  function onTouchMove(e) {
22116    const zoom = swiper.zoom;
22117    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
22118    swiper.allowClick = false;
22119    if (!image.isTouched || !gesture.$slideEl) return;
22120
22121    if (!image.isMoved) {
22122      image.width = gesture.$imageEl[0].offsetWidth;
22123      image.height = gesture.$imageEl[0].offsetHeight;
22124      image.startX = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.getTranslate)(gesture.$imageWrapEl[0], 'x') || 0;
22125      image.startY = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.getTranslate)(gesture.$imageWrapEl[0], 'y') || 0;
22126      gesture.slideWidth = gesture.$slideEl[0].offsetWidth;
22127      gesture.slideHeight = gesture.$slideEl[0].offsetHeight;
22128      gesture.$imageWrapEl.transition(0);
22129    } // Define if we need image drag
22130
22131
22132    const scaledWidth = image.width * zoom.scale;
22133    const scaledHeight = image.height * zoom.scale;
22134    if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;
22135    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);
22136    image.maxX = -image.minX;
22137    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);
22138    image.maxY = -image.minY;
22139    image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
22140    image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
22141
22142    if (!image.isMoved && !isScaling) {
22143      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)) {
22144        image.isTouched = false;
22145        return;
22146      }
22147
22148      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)) {
22149        image.isTouched = false;
22150        return;
22151      }
22152    }
22153
22154    if (e.cancelable) {
22155      e.preventDefault();
22156    }
22157
22158    e.stopPropagation();
22159    image.isMoved = true;
22160    image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;
22161    image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;
22162
22163    if (image.currentX < image.minX) {
22164      image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;
22165    }
22166
22167    if (image.currentX > image.maxX) {
22168      image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;
22169    }
22170
22171    if (image.currentY < image.minY) {
22172      image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;
22173    }
22174
22175    if (image.currentY > image.maxY) {
22176      image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;
22177    } // Velocity
22178
22179
22180    if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;
22181    if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;
22182    if (!velocity.prevTime) velocity.prevTime = Date.now();
22183    velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;
22184    velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;
22185    if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;
22186    if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;
22187    velocity.prevPositionX = image.touchesCurrent.x;
22188    velocity.prevPositionY = image.touchesCurrent.y;
22189    velocity.prevTime = Date.now();
22190    gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);
22191  }
22192
22193  function onTouchEnd() {
22194    const zoom = swiper.zoom;
22195    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
22196
22197    if (!image.isTouched || !image.isMoved) {
22198      image.isTouched = false;
22199      image.isMoved = false;
22200      return;
22201    }
22202
22203    image.isTouched = false;
22204    image.isMoved = false;
22205    let momentumDurationX = 300;
22206    let momentumDurationY = 300;
22207    const momentumDistanceX = velocity.x * momentumDurationX;
22208    const newPositionX = image.currentX + momentumDistanceX;
22209    const momentumDistanceY = velocity.y * momentumDurationY;
22210    const newPositionY = image.currentY + momentumDistanceY; // Fix duration
22211
22212    if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);
22213    if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);
22214    const momentumDuration = Math.max(momentumDurationX, momentumDurationY);
22215    image.currentX = newPositionX;
22216    image.currentY = newPositionY; // Define if we need image drag
22217
22218    const scaledWidth = image.width * zoom.scale;
22219    const scaledHeight = image.height * zoom.scale;
22220    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);
22221    image.maxX = -image.minX;
22222    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);
22223    image.maxY = -image.minY;
22224    image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);
22225    image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);
22226    gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);
22227  }
22228
22229  function onTransitionEnd() {
22230    const zoom = swiper.zoom;
22231
22232    if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {
22233      if (gesture.$imageEl) {
22234        gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');
22235      }
22236
22237      if (gesture.$imageWrapEl) {
22238        gesture.$imageWrapEl.transform('translate3d(0,0,0)');
22239      }
22240
22241      zoom.scale = 1;
22242      currentScale = 1;
22243      gesture.$slideEl = undefined;
22244      gesture.$imageEl = undefined;
22245      gesture.$imageWrapEl = undefined;
22246    }
22247  }
22248
22249  function zoomIn(e) {
22250    const zoom = swiper.zoom;
22251    const params = swiper.params.zoom;
22252
22253    if (!gesture.$slideEl) {
22254      if (e && e.target) {
22255        gesture.$slideEl = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(e.target).closest(`.${swiper.params.slideClass}`);
22256      }
22257
22258      if (!gesture.$slideEl) {
22259        if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
22260          gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);
22261        } else {
22262          gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
22263        }
22264      }
22265
22266      gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);
22267      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);
22268    }
22269
22270    if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;
22271
22272    if (swiper.params.cssMode) {
22273      swiper.wrapperEl.style.overflow = 'hidden';
22274      swiper.wrapperEl.style.touchAction = 'none';
22275    }
22276
22277    gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);
22278    let touchX;
22279    let touchY;
22280    let offsetX;
22281    let offsetY;
22282    let diffX;
22283    let diffY;
22284    let translateX;
22285    let translateY;
22286    let imageWidth;
22287    let imageHeight;
22288    let scaledWidth;
22289    let scaledHeight;
22290    let translateMinX;
22291    let translateMinY;
22292    let translateMaxX;
22293    let translateMaxY;
22294    let slideWidth;
22295    let slideHeight;
22296
22297    if (typeof image.touchesStart.x === 'undefined' && e) {
22298      touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;
22299      touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;
22300    } else {
22301      touchX = image.touchesStart.x;
22302      touchY = image.touchesStart.y;
22303    }
22304
22305    zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
22306    currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
22307
22308    if (e) {
22309      slideWidth = gesture.$slideEl[0].offsetWidth;
22310      slideHeight = gesture.$slideEl[0].offsetHeight;
22311      offsetX = gesture.$slideEl.offset().left + window.scrollX;
22312      offsetY = gesture.$slideEl.offset().top + window.scrollY;
22313      diffX = offsetX + slideWidth / 2 - touchX;
22314      diffY = offsetY + slideHeight / 2 - touchY;
22315      imageWidth = gesture.$imageEl[0].offsetWidth;
22316      imageHeight = gesture.$imageEl[0].offsetHeight;
22317      scaledWidth = imageWidth * zoom.scale;
22318      scaledHeight = imageHeight * zoom.scale;
22319      translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);
22320      translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);
22321      translateMaxX = -translateMinX;
22322      translateMaxY = -translateMinY;
22323      translateX = diffX * zoom.scale;
22324      translateY = diffY * zoom.scale;
22325
22326      if (translateX < translateMinX) {
22327        translateX = translateMinX;
22328      }
22329
22330      if (translateX > translateMaxX) {
22331        translateX = translateMaxX;
22332      }
22333
22334      if (translateY < translateMinY) {
22335        translateY = translateMinY;
22336      }
22337
22338      if (translateY > translateMaxY) {
22339        translateY = translateMaxY;
22340      }
22341    } else {
22342      translateX = 0;
22343      translateY = 0;
22344    }
22345
22346    gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`);
22347    gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);
22348  }
22349
22350  function zoomOut() {
22351    const zoom = swiper.zoom;
22352    const params = swiper.params.zoom;
22353
22354    if (!gesture.$slideEl) {
22355      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
22356        gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);
22357      } else {
22358        gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
22359      }
22360
22361      gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);
22362      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);
22363    }
22364
22365    if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;
22366
22367    if (swiper.params.cssMode) {
22368      swiper.wrapperEl.style.overflow = '';
22369      swiper.wrapperEl.style.touchAction = '';
22370    }
22371
22372    zoom.scale = 1;
22373    currentScale = 1;
22374    gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');
22375    gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');
22376    gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);
22377    gesture.$slideEl = undefined;
22378  } // Toggle Zoom
22379
22380
22381  function zoomToggle(e) {
22382    const zoom = swiper.zoom;
22383
22384    if (zoom.scale && zoom.scale !== 1) {
22385      // Zoom Out
22386      zoomOut();
22387    } else {
22388      // Zoom In
22389      zoomIn(e);
22390    }
22391  }
22392
22393  function getListeners() {
22394    const support = swiper.support;
22395    const passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? {
22396      passive: true,
22397      capture: false
22398    } : false;
22399    const activeListenerWithCapture = support.passiveListener ? {
22400      passive: false,
22401      capture: true
22402    } : true;
22403    return {
22404      passiveListener,
22405      activeListenerWithCapture
22406    };
22407  }
22408
22409  function getSlideSelector() {
22410    return `.${swiper.params.slideClass}`;
22411  }
22412
22413  function toggleGestures(method) {
22414    const {
22415      passiveListener
22416    } = getListeners();
22417    const slideSelector = getSlideSelector();
22418    swiper.$wrapperEl[method]('gesturestart', slideSelector, onGestureStart, passiveListener);
22419    swiper.$wrapperEl[method]('gesturechange', slideSelector, onGestureChange, passiveListener);
22420    swiper.$wrapperEl[method]('gestureend', slideSelector, onGestureEnd, passiveListener);
22421  }
22422
22423  function enableGestures() {
22424    if (gesturesEnabled) return;
22425    gesturesEnabled = true;
22426    toggleGestures('on');
22427  }
22428
22429  function disableGestures() {
22430    if (!gesturesEnabled) return;
22431    gesturesEnabled = false;
22432    toggleGestures('off');
22433  } // Attach/Detach Events
22434
22435
22436  function enable() {
22437    const zoom = swiper.zoom;
22438    if (zoom.enabled) return;
22439    zoom.enabled = true;
22440    const support = swiper.support;
22441    const {
22442      passiveListener,
22443      activeListenerWithCapture
22444    } = getListeners();
22445    const slideSelector = getSlideSelector(); // Scale image
22446
22447    if (support.gestures) {
22448      swiper.$wrapperEl.on(swiper.touchEvents.start, enableGestures, passiveListener);
22449      swiper.$wrapperEl.on(swiper.touchEvents.end, disableGestures, passiveListener);
22450    } else if (swiper.touchEvents.start === 'touchstart') {
22451      swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener);
22452      swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture);
22453      swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);
22454
22455      if (swiper.touchEvents.cancel) {
22456        swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener);
22457      }
22458    } // Move image
22459
22460
22461    swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture);
22462  }
22463
22464  function disable() {
22465    const zoom = swiper.zoom;
22466    if (!zoom.enabled) return;
22467    const support = swiper.support;
22468    zoom.enabled = false;
22469    const {
22470      passiveListener,
22471      activeListenerWithCapture
22472    } = getListeners();
22473    const slideSelector = getSlideSelector(); // Scale image
22474
22475    if (support.gestures) {
22476      swiper.$wrapperEl.off(swiper.touchEvents.start, enableGestures, passiveListener);
22477      swiper.$wrapperEl.off(swiper.touchEvents.end, disableGestures, passiveListener);
22478    } else if (swiper.touchEvents.start === 'touchstart') {
22479      swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener);
22480      swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture);
22481      swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);
22482
22483      if (swiper.touchEvents.cancel) {
22484        swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener);
22485      }
22486    } // Move image
22487
22488
22489    swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture);
22490  }
22491
22492  on('init', () => {
22493    if (swiper.params.zoom.enabled) {
22494      enable();
22495    }
22496  });
22497  on('destroy', () => {
22498    disable();
22499  });
22500  on('touchStart', (_s, e) => {
22501    if (!swiper.zoom.enabled) return;
22502    onTouchStart(e);
22503  });
22504  on('touchEnd', (_s, e) => {
22505    if (!swiper.zoom.enabled) return;
22506    onTouchEnd(e);
22507  });
22508  on('doubleTap', (_s, e) => {
22509    if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {
22510      zoomToggle(e);
22511    }
22512  });
22513  on('transitionEnd', () => {
22514    if (swiper.zoom.enabled && swiper.params.zoom.enabled) {
22515      onTransitionEnd();
22516    }
22517  });
22518  on('slideChange', () => {
22519    if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {
22520      onTransitionEnd();
22521    }
22522  });
22523  Object.assign(swiper.zoom, {
22524    enable,
22525    disable,
22526    in: zoomIn,
22527    out: zoomOut,
22528    toggle: zoomToggle
22529  });
22530}
22531
22532/***/ }),
22533
vendor: 741 bytes, lines 22534-22550
22534/***/ "./node_modules/swiper/shared/classes-to-selector.js":
22535/*!***********************************************************!*\
22536  !*** ./node_modules/swiper/shared/classes-to-selector.js ***!
22537  \***********************************************************/
22538/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
22539
22540__webpack_require__.r(__webpack_exports__);
22541/* harmony export */ __webpack_require__.d(__webpack_exports__, {
22542/* harmony export */   "default": function() { return /* binding */ classesToSelector; }
22543/* harmony export */ });
22544function classesToSelector(classes = '') {
22545  return `.${classes.trim().replace(/([\.:!\/])/g, '\\$1') // eslint-disable-line
22546  .replace(/ /g, '.')}`;
22547}
22548
22549/***/ }),
22550
vendor: 1,435 bytes, lines 22551-22587
22551/***/ "./node_modules/swiper/shared/create-element-if-not-defined.js":
22552/*!*********************************************************************!*\
22553  !*** ./node_modules/swiper/shared/create-element-if-not-defined.js ***!
22554  \*********************************************************************/
22555/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
22556
22557__webpack_require__.r(__webpack_exports__);
22558/* harmony export */ __webpack_require__.d(__webpack_exports__, {
22559/* harmony export */   "default": function() { return /* binding */ createElementIfNotDefined; }
22560/* harmony export */ });
22561/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
22562
22563function createElementIfNotDefined(swiper, originalParams, params, checkProps) {
22564  const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
22565
22566  if (swiper.params.createElements) {
22567    Object.keys(checkProps).forEach(key => {
22568      if (!params[key] && params.auto === true) {
22569        let element = swiper.$el.children(`.${checkProps[key]}`)[0];
22570
22571        if (!element) {
22572          element = document.createElement('div');
22573          element.className = checkProps[key];
22574          swiper.$el.append(element);
22575        }
22576
22577        params[key] = element;
22578        originalParams[key] = element;
22579      }
22580    });
22581  }
22582
22583  return params;
22584}
22585
22586/***/ }),
22587
vendor: 1,209 bytes, lines 22588-22614
22588/***/ "./node_modules/swiper/shared/create-shadow.js":
22589/*!*****************************************************!*\
22590  !*** ./node_modules/swiper/shared/create-shadow.js ***!
22591  \*****************************************************/
22592/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
22593
22594__webpack_require__.r(__webpack_exports__);
22595/* harmony export */ __webpack_require__.d(__webpack_exports__, {
22596/* harmony export */   "default": function() { return /* binding */ createShadow; }
22597/* harmony export */ });
22598/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dom.js */ "./node_modules/swiper/shared/dom.js");
22599
22600function createShadow(params, $slideEl, side) {
22601  const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`;
22602  const $shadowContainer = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl;
22603  let $shadowEl = $shadowContainer.children(`.${shadowClass}`);
22604
22605  if (!$shadowEl.length) {
22606    $shadowEl = (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(`<div class="swiper-slide-shadow${side ? `-${side}` : ''}"></div>`);
22607    $shadowContainer.append($shadowEl);
22608  }
22609
22610  return $shadowEl;
22611}
22612
22613/***/ }),
22614
vendor: 2,684 bytes, lines 22615-22671
22615/***/ "./node_modules/swiper/shared/dom.js":
22616/*!*******************************************!*\
22617  !*** ./node_modules/swiper/shared/dom.js ***!
22618  \*******************************************/
22619/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
22620
22621__webpack_require__.r(__webpack_exports__);
22622/* harmony import */ var dom7__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! dom7 */ "./node_modules/dom7/dom7.esm.js");
22623
22624const Methods = {
22625  addClass: dom7__WEBPACK_IMPORTED_MODULE_0__.addClass,
22626  removeClass: dom7__WEBPACK_IMPORTED_MODULE_0__.removeClass,
22627  hasClass: dom7__WEBPACK_IMPORTED_MODULE_0__.hasClass,
22628  toggleClass: dom7__WEBPACK_IMPORTED_MODULE_0__.toggleClass,
22629  attr: dom7__WEBPACK_IMPORTED_MODULE_0__.attr,
22630  removeAttr: dom7__WEBPACK_IMPORTED_MODULE_0__.removeAttr,
22631  transform: dom7__WEBPACK_IMPORTED_MODULE_0__.transform,
22632  transition: dom7__WEBPACK_IMPORTED_MODULE_0__.transition,
22633  on: dom7__WEBPACK_IMPORTED_MODULE_0__.on,
22634  off: dom7__WEBPACK_IMPORTED_MODULE_0__.off,
22635  trigger: dom7__WEBPACK_IMPORTED_MODULE_0__.trigger,
22636  transitionEnd: dom7__WEBPACK_IMPORTED_MODULE_0__.transitionEnd,
22637  outerWidth: dom7__WEBPACK_IMPORTED_MODULE_0__.outerWidth,
22638  outerHeight: dom7__WEBPACK_IMPORTED_MODULE_0__.outerHeight,
22639  styles: dom7__WEBPACK_IMPORTED_MODULE_0__.styles,
22640  offset: dom7__WEBPACK_IMPORTED_MODULE_0__.offset,
22641  css: dom7__WEBPACK_IMPORTED_MODULE_0__.css,
22642  each: dom7__WEBPACK_IMPORTED_MODULE_0__.each,
22643  html: dom7__WEBPACK_IMPORTED_MODULE_0__.html,
22644  text: dom7__WEBPACK_IMPORTED_MODULE_0__.text,
22645  is: dom7__WEBPACK_IMPORTED_MODULE_0__.is,
22646  index: dom7__WEBPACK_IMPORTED_MODULE_0__.index,
22647  eq: dom7__WEBPACK_IMPORTED_MODULE_0__.eq,
22648  append: dom7__WEBPACK_IMPORTED_MODULE_0__.append,
22649  prepend: dom7__WEBPACK_IMPORTED_MODULE_0__.prepend,
22650  next: dom7__WEBPACK_IMPORTED_MODULE_0__.next,
22651  nextAll: dom7__WEBPACK_IMPORTED_MODULE_0__.nextAll,
22652  prev: dom7__WEBPACK_IMPORTED_MODULE_0__.prev,
22653  prevAll: dom7__WEBPACK_IMPORTED_MODULE_0__.prevAll,
22654  parent: dom7__WEBPACK_IMPORTED_MODULE_0__.parent,
22655  parents: dom7__WEBPACK_IMPORTED_MODULE_0__.parents,
22656  closest: dom7__WEBPACK_IMPORTED_MODULE_0__.closest,
22657  find: dom7__WEBPACK_IMPORTED_MODULE_0__.find,
22658  children: dom7__WEBPACK_IMPORTED_MODULE_0__.children,
22659  filter: dom7__WEBPACK_IMPORTED_MODULE_0__.filter,
22660  remove: dom7__WEBPACK_IMPORTED_MODULE_0__.remove
22661};
22662Object.keys(Methods).forEach(methodName => {
22663  Object.defineProperty(dom7__WEBPACK_IMPORTED_MODULE_0__.$.fn, methodName, {
22664    value: Methods[methodName],
22665    writable: true
22666  });
22667});
22668/* harmony default export */ __webpack_exports__["default"] = (dom7__WEBPACK_IMPORTED_MODULE_0__.$);
22669
22670/***/ }),
22671
vendor: 2,340 bytes, lines 22672-22746
22672/***/ "./node_modules/swiper/shared/effect-init.js":
22673/*!***************************************************!*\
22674  !*** ./node_modules/swiper/shared/effect-init.js ***!
22675  \***************************************************/
22676/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
22677
22678__webpack_require__.r(__webpack_exports__);
22679/* harmony export */ __webpack_require__.d(__webpack_exports__, {
22680/* harmony export */   "default": function() { return /* binding */ effectInit; }
22681/* harmony export */ });
22682function effectInit(params) {
22683  const {
22684    effect,
22685    swiper,
22686    on,
22687    setTranslate,
22688    setTransition,
22689    overwriteParams,
22690    perspective,
22691    recreateShadows,
22692    getEffectParams
22693  } = params;
22694  on('beforeInit', () => {
22695    if (swiper.params.effect !== effect) return;
22696    swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);
22697
22698    if (perspective && perspective()) {
22699      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);
22700    }
22701
22702    const overwriteParamsResult = overwriteParams ? overwriteParams() : {};
22703    Object.assign(swiper.params, overwriteParamsResult);
22704    Object.assign(swiper.originalParams, overwriteParamsResult);
22705  });
22706  on('setTranslate', () => {
22707    if (swiper.params.effect !== effect) return;
22708    setTranslate();
22709  });
22710  on('setTransition', (_s, duration) => {
22711    if (swiper.params.effect !== effect) return;
22712    setTransition(duration);
22713  });
22714  on('transitionEnd', () => {
22715    if (swiper.params.effect !== effect) return;
22716
22717    if (recreateShadows) {
22718      if (!getEffectParams || !getEffectParams().slideShadows) return; // remove shadows
22719
22720      swiper.slides.each(slideEl => {
22721        const $slideEl = swiper.$(slideEl);
22722        $slideEl.find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').remove();
22723      }); // create new one
22724
22725      recreateShadows();
22726    }
22727  });
22728  let requireUpdateOnVirtual;
22729  on('virtualUpdate', () => {
22730    if (swiper.params.effect !== effect) return;
22731
22732    if (!swiper.slides.length) {
22733      requireUpdateOnVirtual = true;
22734    }
22735
22736    requestAnimationFrame(() => {
22737      if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {
22738        setTranslate();
22739        requireUpdateOnVirtual = false;
22740      }
22741    });
22742  });
22743}
22744
22745/***/ }),
22746
vendor: 818 bytes, lines 22747-22769
22747/***/ "./node_modules/swiper/shared/effect-target.js":
22748/*!*****************************************************!*\
22749  !*** ./node_modules/swiper/shared/effect-target.js ***!
22750  \*****************************************************/
22751/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
22752
22753__webpack_require__.r(__webpack_exports__);
22754/* harmony export */ __webpack_require__.d(__webpack_exports__, {
22755/* harmony export */   "default": function() { return /* binding */ effectTarget; }
22756/* harmony export */ });
22757function effectTarget(effectParams, $slideEl) {
22758  if (effectParams.transformEl) {
22759    return $slideEl.find(effectParams.transformEl).css({
22760      'backface-visibility': 'hidden',
22761      '-webkit-backface-visibility': 'hidden'
22762    });
22763  }
22764
22765  return $slideEl;
22766}
22767
22768/***/ }),
22769
vendor: 1,535 bytes, lines 22770-22817
22770/***/ "./node_modules/swiper/shared/effect-virtual-transition-end.js":
22771/*!*********************************************************************!*\
22772  !*** ./node_modules/swiper/shared/effect-virtual-transition-end.js ***!
22773  \*********************************************************************/
22774/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
22775
22776__webpack_require__.r(__webpack_exports__);
22777/* harmony export */ __webpack_require__.d(__webpack_exports__, {
22778/* harmony export */   "default": function() { return /* binding */ effectVirtualTransitionEnd; }
22779/* harmony export */ });
22780function effectVirtualTransitionEnd({
22781  swiper,
22782  duration,
22783  transformEl,
22784  allSlides
22785}) {
22786  const {
22787    slides,
22788    activeIndex,
22789    $wrapperEl
22790  } = swiper;
22791
22792  if (swiper.params.virtualTranslate && duration !== 0) {
22793    let eventTriggered = false;
22794    let $transitionEndTarget;
22795
22796    if (allSlides) {
22797      $transitionEndTarget = transformEl ? slides.find(transformEl) : slides;
22798    } else {
22799      $transitionEndTarget = transformEl ? slides.eq(activeIndex).find(transformEl) : slides.eq(activeIndex);
22800    }
22801
22802    $transitionEndTarget.transitionEnd(() => {
22803      if (eventTriggered) return;
22804      if (!swiper || swiper.destroyed) return;
22805      eventTriggered = true;
22806      swiper.animating = false;
22807      const triggerEvents = ['webkitTransitionEnd', 'transitionend'];
22808
22809      for (let i = 0; i < triggerEvents.length; i += 1) {
22810        $wrapperEl.trigger(triggerEvents[i]);
22811      }
22812    });
22813  }
22814}
22815
22816/***/ }),
22817
vendor: 1,238 bytes, lines 22818-22857
22818/***/ "./node_modules/swiper/shared/get-browser.js":
22819/*!***************************************************!*\
22820  !*** ./node_modules/swiper/shared/get-browser.js ***!
22821  \***************************************************/
22822/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
22823
22824__webpack_require__.r(__webpack_exports__);
22825/* harmony export */ __webpack_require__.d(__webpack_exports__, {
22826/* harmony export */   getBrowser: function() { return /* binding */ getBrowser; }
22827/* harmony export */ });
22828/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
22829
22830let browser;
22831
22832function calcBrowser() {
22833  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
22834
22835  function isSafari() {
22836    const ua = window.navigator.userAgent.toLowerCase();
22837    return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;
22838  }
22839
22840  return {
22841    isSafari: isSafari(),
22842    isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)
22843  };
22844}
22845
22846function getBrowser() {
22847  if (!browser) {
22848    browser = calcBrowser();
22849  }
22850
22851  return browser;
22852}
22853
22854
22855
22856/***/ }),
22857
vendor: 2,411 bytes, lines 22858-22929
22858/***/ "./node_modules/swiper/shared/get-device.js":
22859/*!**************************************************!*\
22860  !*** ./node_modules/swiper/shared/get-device.js ***!
22861  \**************************************************/
22862/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
22863
22864__webpack_require__.r(__webpack_exports__);
22865/* harmony export */ __webpack_require__.d(__webpack_exports__, {
22866/* harmony export */   getDevice: function() { return /* binding */ getDevice; }
22867/* harmony export */ });
22868/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
22869/* harmony import */ var _get_support_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./get-support.js */ "./node_modules/swiper/shared/get-support.js");
22870
22871
22872let deviceCached;
22873
22874function calcDevice({
22875  userAgent
22876} = {}) {
22877  const support = (0,_get_support_js__WEBPACK_IMPORTED_MODULE_1__.getSupport)();
22878  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
22879  const platform = window.navigator.platform;
22880  const ua = userAgent || window.navigator.userAgent;
22881  const device = {
22882    ios: false,
22883    android: false
22884  };
22885  const screenWidth = window.screen.width;
22886  const screenHeight = window.screen.height;
22887  const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line
22888
22889  let ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
22890  const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/);
22891  const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/);
22892  const windows = platform === 'Win32';
22893  let macos = platform === 'MacIntel'; // iPadOs 13 fix
22894
22895  const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];
22896
22897  if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {
22898    ipad = ua.match(/(Version)\/([\d.]+)/);
22899    if (!ipad) ipad = [0, 1, '13_0_0'];
22900    macos = false;
22901  } // Android
22902
22903
22904  if (android && !windows) {
22905    device.os = 'android';
22906    device.android = true;
22907  }
22908
22909  if (ipad || iphone || ipod) {
22910    device.os = 'ios';
22911    device.ios = true;
22912  } // Export object
22913
22914
22915  return device;
22916}
22917
22918function getDevice(overrides = {}) {
22919  if (!deviceCached) {
22920    deviceCached = calcDevice(overrides);
22921  }
22922
22923  return deviceCached;
22924}
22925
22926
22927
22928/***/ }),
22929
vendor: 1,739 bytes, lines 22930-22984
22930/***/ "./node_modules/swiper/shared/get-support.js":
22931/*!***************************************************!*\
22932  !*** ./node_modules/swiper/shared/get-support.js ***!
22933  \***************************************************/
22934/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
22935
22936__webpack_require__.r(__webpack_exports__);
22937/* harmony export */ __webpack_require__.d(__webpack_exports__, {
22938/* harmony export */   getSupport: function() { return /* binding */ getSupport; }
22939/* harmony export */ });
22940/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
22941
22942let support;
22943
22944function calcSupport() {
22945  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
22946  const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
22947  return {
22948    smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,
22949    touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),
22950    passiveListener: function checkPassiveListener() {
22951      let supportsPassive = false;
22952
22953      try {
22954        const opts = Object.defineProperty({}, 'passive', {
22955          // eslint-disable-next-line
22956          get() {
22957            supportsPassive = true;
22958          }
22959
22960        });
22961        window.addEventListener('testPassiveListener', null, opts);
22962      } catch (e) {// No support
22963      }
22964
22965      return supportsPassive;
22966    }(),
22967    gestures: function checkGestures() {
22968      return 'ongesturestart' in window;
22969    }()
22970  };
22971}
22972
22973function getSupport() {
22974  if (!support) {
22975    support = calcSupport();
22976  }
22977
22978  return support;
22979}
22980
22981
22982
22983/***/ }),
22984
vendor: 7,083 bytes, lines 22985-23203
22985/***/ "./node_modules/swiper/shared/utils.js":
22986/*!*********************************************!*\
22987  !*** ./node_modules/swiper/shared/utils.js ***!
22988  \*********************************************/
22989/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
22990
22991__webpack_require__.r(__webpack_exports__);
22992/* harmony export */ __webpack_require__.d(__webpack_exports__, {
22993/* harmony export */   animateCSSModeScroll: function() { return /* binding */ animateCSSModeScroll; },
22994/* harmony export */   deleteProps: function() { return /* binding */ deleteProps; },
22995/* harmony export */   extend: function() { return /* binding */ extend; },
22996/* harmony export */   getComputedStyle: function() { return /* binding */ getComputedStyle; },
22997/* harmony export */   getTranslate: function() { return /* binding */ getTranslate; },
22998/* harmony export */   isObject: function() { return /* binding */ isObject; },
22999/* harmony export */   nextTick: function() { return /* binding */ nextTick; },
23000/* harmony export */   now: function() { return /* binding */ now; },
23001/* harmony export */   setCSSProperty: function() { return /* binding */ setCSSProperty; }
23002/* harmony export */ });
23003/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
23004
23005
23006function deleteProps(obj) {
23007  const object = obj;
23008  Object.keys(object).forEach(key => {
23009    try {
23010      object[key] = null;
23011    } catch (e) {// no getter for object
23012    }
23013
23014    try {
23015      delete object[key];
23016    } catch (e) {// something got wrong
23017    }
23018  });
23019}
23020
23021function nextTick(callback, delay = 0) {
23022  return setTimeout(callback, delay);
23023}
23024
23025function now() {
23026  return Date.now();
23027}
23028
23029function getComputedStyle(el) {
23030  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
23031  let style;
23032
23033  if (window.getComputedStyle) {
23034    style = window.getComputedStyle(el, null);
23035  }
23036
23037  if (!style && el.currentStyle) {
23038    style = el.currentStyle;
23039  }
23040
23041  if (!style) {
23042    style = el.style;
23043  }
23044
23045  return style;
23046}
23047
23048function getTranslate(el, axis = 'x') {
23049  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
23050  let matrix;
23051  let curTransform;
23052  let transformMatrix;
23053  const curStyle = getComputedStyle(el, null);
23054
23055  if (window.WebKitCSSMatrix) {
23056    curTransform = curStyle.transform || curStyle.webkitTransform;
23057
23058    if (curTransform.split(',').length > 6) {
23059      curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');
23060    } // Some old versions of Webkit choke when 'none' is passed; pass
23061    // empty string instead in this case
23062
23063
23064    transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);
23065  } else {
23066    transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');
23067    matrix = transformMatrix.toString().split(',');
23068  }
23069
23070  if (axis === 'x') {
23071    // Latest Chrome and webkits Fix
23072    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix
23073    else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers
23074    else curTransform = parseFloat(matrix[4]);
23075  }
23076
23077  if (axis === 'y') {
23078    // Latest Chrome and webkits Fix
23079    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix
23080    else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers
23081    else curTransform = parseFloat(matrix[5]);
23082  }
23083
23084  return curTransform || 0;
23085}
23086
23087function isObject(o) {
23088  return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';
23089}
23090
23091function isNode(node) {
23092  // eslint-disable-next-line
23093  if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {
23094    return node instanceof HTMLElement;
23095  }
23096
23097  return node && (node.nodeType === 1 || node.nodeType === 11);
23098}
23099
23100function extend(...args) {
23101  const to = Object(args[0]);
23102  const noExtend = ['__proto__', 'constructor', 'prototype'];
23103
23104  for (let i = 1; i < args.length; i += 1) {
23105    const nextSource = args[i];
23106
23107    if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {
23108      const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);
23109
23110      for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {
23111        const nextKey = keysArray[nextIndex];
23112        const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
23113
23114        if (desc !== undefined && desc.enumerable) {
23115          if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {
23116            if (nextSource[nextKey].__swiper__) {
23117              to[nextKey] = nextSource[nextKey];
23118            } else {
23119              extend(to[nextKey], nextSource[nextKey]);
23120            }
23121          } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {
23122            to[nextKey] = {};
23123
23124            if (nextSource[nextKey].__swiper__) {
23125              to[nextKey] = nextSource[nextKey];
23126            } else {
23127              extend(to[nextKey], nextSource[nextKey]);
23128            }
23129          } else {
23130            to[nextKey] = nextSource[nextKey];
23131          }
23132        }
23133      }
23134    }
23135  }
23136
23137  return to;
23138}
23139
23140function setCSSProperty(el, varName, varValue) {
23141  el.style.setProperty(varName, varValue);
23142}
23143
23144function animateCSSModeScroll({
23145  swiper,
23146  targetPosition,
23147  side
23148}) {
23149  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
23150  const startPosition = -swiper.translate;
23151  let startTime = null;
23152  let time;
23153  const duration = swiper.params.speed;
23154  swiper.wrapperEl.style.scrollSnapType = 'none';
23155  window.cancelAnimationFrame(swiper.cssModeFrameID);
23156  const dir = targetPosition > startPosition ? 'next' : 'prev';
23157
23158  const isOutOfBound = (current, target) => {
23159    return dir === 'next' && current >= target || dir === 'prev' && current <= target;
23160  };
23161
23162  const animate = () => {
23163    time = new Date().getTime();
23164
23165    if (startTime === null) {
23166      startTime = time;
23167    }
23168
23169    const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);
23170    const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;
23171    let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);
23172
23173    if (isOutOfBound(currentPosition, targetPosition)) {
23174      currentPosition = targetPosition;
23175    }
23176
23177    swiper.wrapperEl.scrollTo({
23178      [side]: currentPosition
23179    });
23180
23181    if (isOutOfBound(currentPosition, targetPosition)) {
23182      swiper.wrapperEl.style.overflow = 'hidden';
23183      swiper.wrapperEl.style.scrollSnapType = '';
23184      setTimeout(() => {
23185        swiper.wrapperEl.style.overflow = '';
23186        swiper.wrapperEl.scrollTo({
23187          [side]: currentPosition
23188        });
23189      });
23190      window.cancelAnimationFrame(swiper.cssModeFrameID);
23191      return;
23192    }
23193
23194    swiper.cssModeFrameID = window.requestAnimationFrame(animate);
23195  };
23196
23197  animate();
23198}
23199
23200
23201
23202/***/ }),
23203
vendor: 9,712 bytes, lines 23204-23302
23204/***/ "./node_modules/swiper/swiper.esm.js":
23205/*!*******************************************!*\
23206  !*** ./node_modules/swiper/swiper.esm.js ***!
23207  \*******************************************/
23208/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
23209
23210__webpack_require__.r(__webpack_exports__);
23211/* harmony export */ __webpack_require__.d(__webpack_exports__, {
23212/* harmony export */   A11y: function() { return /* reexport safe */ _modules_a11y_a11y_js__WEBPACK_IMPORTED_MODULE_11__["default"]; },
23213/* harmony export */   Autoplay: function() { return /* reexport safe */ _modules_autoplay_autoplay_js__WEBPACK_IMPORTED_MODULE_14__["default"]; },
23214/* harmony export */   Controller: function() { return /* reexport safe */ _modules_controller_controller_js__WEBPACK_IMPORTED_MODULE_10__["default"]; },
23215/* harmony export */   EffectCards: function() { return /* reexport safe */ _modules_effect_cards_effect_cards_js__WEBPACK_IMPORTED_MODULE_24__["default"]; },
23216/* harmony export */   EffectCoverflow: function() { return /* reexport safe */ _modules_effect_coverflow_effect_coverflow_js__WEBPACK_IMPORTED_MODULE_22__["default"]; },
23217/* harmony export */   EffectCreative: function() { return /* reexport safe */ _modules_effect_creative_effect_creative_js__WEBPACK_IMPORTED_MODULE_23__["default"]; },
23218/* harmony export */   EffectCube: function() { return /* reexport safe */ _modules_effect_cube_effect_cube_js__WEBPACK_IMPORTED_MODULE_20__["default"]; },
23219/* harmony export */   EffectFade: function() { return /* reexport safe */ _modules_effect_fade_effect_fade_js__WEBPACK_IMPORTED_MODULE_19__["default"]; },
23220/* harmony export */   EffectFlip: function() { return /* reexport safe */ _modules_effect_flip_effect_flip_js__WEBPACK_IMPORTED_MODULE_21__["default"]; },
23221/* harmony export */   FreeMode: function() { return /* reexport safe */ _modules_free_mode_free_mode_js__WEBPACK_IMPORTED_MODULE_16__["default"]; },
23222/* harmony export */   Grid: function() { return /* reexport safe */ _modules_grid_grid_js__WEBPACK_IMPORTED_MODULE_17__["default"]; },
23223/* harmony export */   HashNavigation: function() { return /* reexport safe */ _modules_hash_navigation_hash_navigation_js__WEBPACK_IMPORTED_MODULE_13__["default"]; },
23224/* harmony export */   History: function() { return /* reexport safe */ _modules_history_history_js__WEBPACK_IMPORTED_MODULE_12__["default"]; },
23225/* harmony export */   Keyboard: function() { return /* reexport safe */ _modules_keyboard_keyboard_js__WEBPACK_IMPORTED_MODULE_2__["default"]; },
23226/* harmony export */   Lazy: function() { return /* reexport safe */ _modules_lazy_lazy_js__WEBPACK_IMPORTED_MODULE_9__["default"]; },
23227/* harmony export */   Manipulation: function() { return /* reexport safe */ _modules_manipulation_manipulation_js__WEBPACK_IMPORTED_MODULE_18__["default"]; },
23228/* harmony export */   Mousewheel: function() { return /* reexport safe */ _modules_mousewheel_mousewheel_js__WEBPACK_IMPORTED_MODULE_3__["default"]; },
23229/* harmony export */   Navigation: function() { return /* reexport safe */ _modules_navigation_navigation_js__WEBPACK_IMPORTED_MODULE_4__["default"]; },
23230/* harmony export */   Pagination: function() { return /* reexport safe */ _modules_pagination_pagination_js__WEBPACK_IMPORTED_MODULE_5__["default"]; },
23231/* harmony export */   Parallax: function() { return /* reexport safe */ _modules_parallax_parallax_js__WEBPACK_IMPORTED_MODULE_7__["default"]; },
23232/* harmony export */   Scrollbar: function() { return /* reexport safe */ _modules_scrollbar_scrollbar_js__WEBPACK_IMPORTED_MODULE_6__["default"]; },
23233/* harmony export */   Swiper: function() { return /* reexport safe */ _core_core_js__WEBPACK_IMPORTED_MODULE_0__["default"]; },
23234/* harmony export */   Thumbs: function() { return /* reexport safe */ _modules_thumbs_thumbs_js__WEBPACK_IMPORTED_MODULE_15__["default"]; },
23235/* harmony export */   Virtual: function() { return /* reexport safe */ _modules_virtual_virtual_js__WEBPACK_IMPORTED_MODULE_1__["default"]; },
23236/* harmony export */   Zoom: function() { return /* reexport safe */ _modules_zoom_zoom_js__WEBPACK_IMPORTED_MODULE_8__["default"]; },
23237/* harmony export */   "default": function() { return /* reexport safe */ _core_core_js__WEBPACK_IMPORTED_MODULE_0__["default"]; }
23238/* harmony export */ });
23239/* harmony import */ var _core_core_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./core/core.js */ "./node_modules/swiper/core/core.js");
23240/* harmony import */ var _modules_virtual_virtual_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modules/virtual/virtual.js */ "./node_modules/swiper/modules/virtual/virtual.js");
23241/* harmony import */ var _modules_keyboard_keyboard_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modules/keyboard/keyboard.js */ "./node_modules/swiper/modules/keyboard/keyboard.js");
23242/* harmony import */ var _modules_mousewheel_mousewheel_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modules/mousewheel/mousewheel.js */ "./node_modules/swiper/modules/mousewheel/mousewheel.js");
23243/* harmony import */ var _modules_navigation_navigation_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./modules/navigation/navigation.js */ "./node_modules/swiper/modules/navigation/navigation.js");
23244/* harmony import */ var _modules_pagination_pagination_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./modules/pagination/pagination.js */ "./node_modules/swiper/modules/pagination/pagination.js");
23245/* harmony import */ var _modules_scrollbar_scrollbar_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./modules/scrollbar/scrollbar.js */ "./node_modules/swiper/modules/scrollbar/scrollbar.js");
23246/* harmony import */ var _modules_parallax_parallax_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./modules/parallax/parallax.js */ "./node_modules/swiper/modules/parallax/parallax.js");
23247/* harmony import */ var _modules_zoom_zoom_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./modules/zoom/zoom.js */ "./node_modules/swiper/modules/zoom/zoom.js");
23248/* harmony import */ var _modules_lazy_lazy_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./modules/lazy/lazy.js */ "./node_modules/swiper/modules/lazy/lazy.js");
23249/* harmony import */ var _modules_controller_controller_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./modules/controller/controller.js */ "./node_modules/swiper/modules/controller/controller.js");
23250/* harmony import */ var _modules_a11y_a11y_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./modules/a11y/a11y.js */ "./node_modules/swiper/modules/a11y/a11y.js");
23251/* harmony import */ var _modules_history_history_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./modules/history/history.js */ "./node_modules/swiper/modules/history/history.js");
23252/* harmony import */ var _modules_hash_navigation_hash_navigation_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./modules/hash-navigation/hash-navigation.js */ "./node_modules/swiper/modules/hash-navigation/hash-navigation.js");
23253/* harmony import */ var _modules_autoplay_autoplay_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./modules/autoplay/autoplay.js */ "./node_modules/swiper/modules/autoplay/autoplay.js");
23254/* harmony import */ var _modules_thumbs_thumbs_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./modules/thumbs/thumbs.js */ "./node_modules/swiper/modules/thumbs/thumbs.js");
23255/* harmony import */ var _modules_free_mode_free_mode_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./modules/free-mode/free-mode.js */ "./node_modules/swiper/modules/free-mode/free-mode.js");
23256/* harmony import */ var _modules_grid_grid_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./modules/grid/grid.js */ "./node_modules/swiper/modules/grid/grid.js");
23257/* harmony import */ var _modules_manipulation_manipulation_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./modules/manipulation/manipulation.js */ "./node_modules/swiper/modules/manipulation/manipulation.js");
23258/* harmony import */ var _modules_effect_fade_effect_fade_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./modules/effect-fade/effect-fade.js */ "./node_modules/swiper/modules/effect-fade/effect-fade.js");
23259/* harmony import */ var _modules_effect_cube_effect_cube_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./modules/effect-cube/effect-cube.js */ "./node_modules/swiper/modules/effect-cube/effect-cube.js");
23260/* harmony import */ var _modules_effect_flip_effect_flip_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./modules/effect-flip/effect-flip.js */ "./node_modules/swiper/modules/effect-flip/effect-flip.js");
23261/* harmony import */ var _modules_effect_coverflow_effect_coverflow_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./modules/effect-coverflow/effect-coverflow.js */ "./node_modules/swiper/modules/effect-coverflow/effect-coverflow.js");
23262/* harmony import */ var _modules_effect_creative_effect_creative_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./modules/effect-creative/effect-creative.js */ "./node_modules/swiper/modules/effect-creative/effect-creative.js");
23263/* harmony import */ var _modules_effect_cards_effect_cards_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./modules/effect-cards/effect-cards.js */ "./node_modules/swiper/modules/effect-cards/effect-cards.js");
23264/**
23265 * Swiper 8.4.7
23266 * Most modern mobile touch slider and framework with hardware accelerated transitions
23267 * https://swiperjs.com
23268 *
23269 * Copyright 2014-2023 Vladimir Kharlampidi
23270 *
23271 * Released under the MIT License
23272 *
23273 * Released on: January 30, 2023
23274 */
23275
23276
23277
23278
23279
23280
23281
23282
23283
23284
23285
23286
23287
23288
23289
23290
23291
23292
23293
23294
23295
23296
23297
23298
23299
23300
23301
23302/***/ })
vendor: 4,002 bytes, lines 23302-23390
23302
23303
23304/******/ 	});
23305/************************************************************************/
23306/******/ 	// The module cache
23307/******/ 	var __webpack_module_cache__ = {};
23308/******/ 	
23309/******/ 	// The require function
23310/******/ 	function __webpack_require__(moduleId) {
23311/******/ 		// Check if module is in cache
23312/******/ 		var cachedModule = __webpack_module_cache__[moduleId];
23313/******/ 		if (cachedModule !== undefined) {
23314/******/ 			return cachedModule.exports;
23315/******/ 		}
23316/******/ 		// Create a new module (and put it into the cache)
23317/******/ 		var module = __webpack_module_cache__[moduleId] = {
23318/******/ 			// no module.id needed
23319/******/ 			// no module.loaded needed
23320/******/ 			exports: {}
23321/******/ 		};
23322/******/ 	
23323/******/ 		// Execute the module function
23324/******/ 		__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
23325/******/ 	
23326/******/ 		// Return the exports of the module
23327/******/ 		return module.exports;
23328/******/ 	}
23329/******/ 	
23330/************************************************************************/
23331/******/ 	/* webpack/runtime/define property getters */
23332/******/ 	!function() {
23333/******/ 		// define getter functions for harmony exports
23334/******/ 		__webpack_require__.d = function(exports, definition) {
23335/******/ 			for(var key in definition) {
23336/******/ 				if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
23337/******/ 					Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
23338/******/ 				}
23339/******/ 			}
23340/******/ 		};
23341/******/ 	}();
23342/******/ 	
23343/******/ 	/* webpack/runtime/hasOwnProperty shorthand */
23344/******/ 	!function() {
23345/******/ 		__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
23346/******/ 	}();
23347/******/ 	
23348/******/ 	/* webpack/runtime/make namespace object */
23349/******/ 	!function() {
23350/******/ 		// define __esModule on exports
23351/******/ 		__webpack_require__.r = function(exports) {
23352/******/ 			if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
23353/******/ 				Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
23354/******/ 			}
23355/******/ 			Object.defineProperty(exports, '__esModule', { value: true });
23356/******/ 		};
23357/******/ 	}();
23358/******/ 	
23359/************************************************************************/
23360var __webpack_exports__ = {};
23361// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
23362!function() {
23363/*!********************************!*\
23364  !*** ./src/assets/js/index.js ***!
23365  \********************************/
23366__webpack_require__.r(__webpack_exports__);
23367/* harmony import */ var _utils_Gnav__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/Gnav */ "./src/assets/js/utils/Gnav.js");
23368/* harmony import */ var _utils_ScrollAnim__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils/ScrollAnim */ "./src/assets/js/utils/ScrollAnim.js");
23369/* harmony import */ var _utils_Swiper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils/Swiper */ "./src/assets/js/utils/Swiper.js");
23370/* harmony import */ var _utils_TopMv__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/TopMv */ "./src/assets/js/utils/TopMv.js");
23371/* harmony import */ var _utils_Parallax__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils/Parallax */ "./src/assets/js/utils/Parallax.js");
23372/* harmony import */ var _utils_Popup__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils/Popup */ "./src/assets/js/utils/Popup.js");
23373
23374
23375
23376
23377
23378
23379window.addEventListener("DOMContentLoaded", () => {
23380  new _utils_Gnav__WEBPACK_IMPORTED_MODULE_0__["default"]();
23381  new _utils_ScrollAnim__WEBPACK_IMPORTED_MODULE_1__["default"]();
23382  new _utils_Swiper__WEBPACK_IMPORTED_MODULE_2__["default"]();
23383  new _utils_TopMv__WEBPACK_IMPORTED_MODULE_3__["default"]();
23384  new _utils_Parallax__WEBPACK_IMPORTED_MODULE_4__["default"]();
23385  new _utils_Popup__WEBPACK_IMPORTED_MODULE_5__["default"]();
23386});
23387}();
23388/******/ })()
23389;
23390//# sourceMappingURL=app.js.map

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