Odyssey

The Odyssey Neo monitor is shown, and on the monitor's screen is a lush jungle scene with a dragon. Screen text reads "Odyssey Neo: Ultimate Immersion." The Odyssey OLED shows a futuristic racing game with the text "Odyssey OLED: Electrifying Speed." The Odyssey Ark is shown in vertical Cockpit mode, with a fighter jet simulator on screen. Text appears that reads "Odyssey Ark: All-New view." All three monitors are then shown on screen, with "Epic Screen. Epic Play." text appearing. Lastly, "Odyssey" text appears as "Epic Screen. Epic Play" moves upward.

Samsung Odyssey,
The No. 1 Gaming Monitor Worldwide

As the world’s #1 revenue-generating gaming monitor series,1
the Odyssey lineup continues to earn new accolades globally based on its advanced technologies.

* Source: IDC_23.Q3_PC_Monitor, market share based on revenue (2021~2023.Q3, over 144Hz)

Stars illuminate a night sky. There is a logo which emphasizes Odyssey as the global number 1 gaming monitor brand. Five media review awards are listed below the logo, each is Editors' Choice with the copy 'reviewed USA today network' included, Top Pick 2023 Techaeris, Stuff with 5 stars below, T3 platinum award, scorching overclock logo.
Global No. 1 Gaming Monitor Brand
  • A user sits in front of the Odyssey Ark, controlling the screen with the Ark Dial. On screen an astronaut emerges from a space station.

    Unmatched
    Visuals

    Quantum Matrix Technology with Quantum Mini LED Samsung OLED with Neo Quantum Processor Pro2 High resolution up to Dual UHD VESA certified DisplayHDR

    * Features vary by model.

  • A curved monitor shows a racecar in a city street at night.

    Game-winning
    Performance

    Fast refresh rate up to 240Hz Response time as low as 0.03ms (GtG)3 G-Sync compatible AMD FreeSync certified

    * Features vary by model.

  • The Odyssey Ark is in vertical Cockpit Mode. A viewer watching 3 screens at once on the Ark. At the top of the screen are two competitive gamers competing in the world championship, in the middle of the screen is a chat application, and on the bottom of the screen is a game with an astronaut looking up at 2 space stations on an alien planet.

    Multitasking
    Flexibility

    Wide screen size up to 57” Multi View with up to 4 inputs4 Picture-by-Picture & Picture-in-Picture for 2 inputs

    * Features vary by model.

  • A monitor sits on a desk, with multiple streaming apps on screen.

    Integrated
    Entertainment

    Samsung streaming services: Gaming Hub & Smart TV apps5 Built-in speaker

    * Features vary by model.

Explore the
Odyssey Series

Odyssey
Neo

A groundbreaking visual experience

Defy reality.
Conquer all.

A groundbreaking visual experience. The Odyssey Neo taps into Quantum Matrix Technology with Quantum Mini LED to pull you into your games with ultimate immersion. Color-rich scenery and incredible detail wrap around you in 1000R curve, while a beautiful design and ambient Core Lighting set the tone for your gaming sessions.6

The Odyssey Neo sits on a desk, with a spaceship flying off into space on screen. Above the monitor is a badge for the CES Innovation Awards, naming the Odyssey Neo a 2023 Best of Innovation winner.
  • Quantum
    Mini LED
  • Dual UHD
  • 240Hz
    refresh rate
  • 1ms response
    time (GtG)
  • AMD FreeSync
    Premium Pro
  • Display
    Port 2.1

* Features vary by model.

  • Full Feature RevealOdyssey Neo G9

  • Launching Film with T1Odyssey Neo G9

  • A Look From the Experts-
    mryeester Odyssey Neo G9

  • Full Feature RevealOdyssey Neo G8

  • Launching Film with T1Odyssey Neo G8

  • A Look From the Experts-
    ShortCircuitOdyssey Neo G8

Odyssey
OLED

The difference of Samsung OLED

A new era of
OLED gaming

Experience the difference of Samsung OLED tech, which creates the fastest Odyssey model and brings upgraded visual quality and blazing performance together. The Neo Quantum Processor Pro enhances the OLED screen for brighter whites, deeper blacks and near infinite color contrast. Dominate your opponents with lighting fast and ultra smooth video, a 240Hz refresh rate, 0.03ms response time and G-Sync technology.7

The Odyssey OLED is on a desk with a keyboard, controller, mouse a model airplane and a gyroscope toy. The monitor shows a spaceship flying over a colorful planet. Above the monitor is a badge for the CES Innovation awards, naming the Odyssey OLED as a 2023 honoree.
  • OLED
  • Dual QHD
  • 240Hz
    refresh rate
  • 0.03ms response
    time (GtG)
  • Nvidia G-Sync
    Compatible
  • Smart TV
    Apps

* Features vary by model.

  • Full Feature RevealOdyssey OLED G9

  • Launching Film with T1Odyssey OLED G9

  • A Look From the Experts -
    Unbox TherapyOdyssey OLED G9

  • Full Feature RevealOdyssey OLED G8

  • A Look From the Experts -
    Linus Tech TipsOdyssey OLED G8

Odyssey
Ark

The Personal gaming theater

Your personal
gaming theater

A world of innovative gaming experiences awaits. A 55” 4K picture wraps around you, and when you’re ready for a new perspective, swap over to Cockpit Mode for a vertical view. And it’s not just for gaming - an upgraded Multi View lets you master your multitasking by viewing up to 4 sources at once without interruption.8

The Odyssey Ark sits on a desk, with an astronaut looking up at two space stations from an alien planet. The monitor's lights give the room a glow. Above the monitor is a badge for CES Innovation Awards, naming the Odyssey Ark a 2022 Honoree.
  • Quantum
    Mini LED
  • UHD
  • 165Hz
    refresh rate
  • 1ms response
    time (GtG)
  • Multi View
  • Smart TV
    Apps
  • Full Feature RevealOdyssey Ark

  • Introducing upgraded Multi
    ViewOdyssey Ark

  • Launching Film with T1Odyssey Ark

  • A Look From the Experts -
    Unbox TherapyOdyssey Ark

  • TutorialOdyssey Ark

Choose your
Odyssey

Lineup

  • Model

  • Screen Size

  • Aspect Ratio

  • Panel Type

  • Flat/ Curved

  • Resolution

  • Brightness (Typical)

  • Response Time

  • Refresh Rate

  • Adaptive Sync

  • Smart

  • Speaker

  • Connectivity

Odyssey Neo G9

Odyssey Neo G9
  • Model G95NC
  • Screen Size 57″
  • Aspect Ratio 32:9
  • Panel Type Quantum Mini LED
  • Flat/ Curved Curved (1000R)
  • Resolution 7,680 x 2,160
  • Brightness (Typical) 420 cd/㎡
  • Response Time 1ms(GTG)
  • Refresh Rate 240Hz
  • Adaptive Sync FreeSync Premium Pro
  • Smart N/A
  • Speaker N/A
  • Connectivity Display Port 2.1 /
    HDMI 2.1 (3) / USB 3.0 (2)

Odyssey OLED G9

Odyssey OLED G9
  • Model G95SC
  • Screen Size 49″
  • Aspect Ratio 32:9
  • Panel Type OLED
  • Flat/ Curved Curved (1800R)
  • Resolution 5,120 x 1,440
  • Brightness (Typical) 250 cd/㎡
  • Response Time 0.03ms(GTG)
  • Refresh Rate 240Hz
  • Adaptive Sync G-Sync Compatible /
    FreeSync Premium Pro
  • Smart YES
  • Speaker YES
  • Connectivity Display Port 1.4 / HDMI 2.1 /
    Micro HDMI 2.1 / USB 3.0 (2)

Odyssey Ark

Odyssey Ark
  • Model G97NC
  • Screen Size 55″
  • Aspect Ratio 16:9
  • Panel Type Quantum Mini LED
  • Flat/ Curved Curved (1000R)
  • Resolution 3,840 x 2,160
  • Brightness (Typical) 600 cd/㎡
  • Response Time 1ms(GTG)
  • Refresh Rate 165Hz
  • Adaptive Sync FreeSync Premium Pro
  • Smart YES
  • Speaker YES
  • Connectivity Display Port 1.4 / HDMI 2.1 (2) /
    HDMI 2.0 (1) / USB 2.0 (2) / LAN

Odyssey G9

Odyssey G9
  • Model G95C
  • Screen Size 49″
  • Aspect Ratio 32:9
  • Panel Type VA
  • Flat/ Curved Curved (1000R)
  • Resolution 5,120 x 1,440
  • Brightness (Typical) 450 cd/㎡
  • Response Time 1ms(GTG)
  • Refresh Rate 240Hz
  • Adaptive Sync FreeSync Premium Pro
  • Smart N/A
  • Speaker N/A
  • Connectivity Display Port 1.4 /
    HDMI 2.1 (2) / USB 3.0 (2)

Odyssey Neo G8

Odyssey Neo G8
  • Model G85NB
  • Screen Size 32″
  • Aspect Ratio 16:9
  • Panel Type Quantum Mini LED
  • Flat/ Curved Curved (1000R)
  • Resolution 3,840 x 2,160
  • Brightness (Typical) 350 cd/㎡
  • Response Time 1ms(GTG)
  • Refresh Rate 240Hz
  • Adaptive Sync FreeSync Premium Pro
  • Smart N/A
  • Speaker N/A
  • Connectivity Display Port 1.4 /
    HDMI 2.1 (2) / USB 3.0 (2)

Odyssey OLED G8

Odyssey OLED G8
  • Model G85SB
  • Screen Size 34″
  • Aspect Ratio 21:9
  • Panel Type OLED
  • Flat/ Curved Curved (1800R)
  • Resolution 3,440 x 1,440
  • Brightness (Typical) 250 cd/㎡
  • Response Time 0.03ms(GTG)
  • Refresh Rate 175Hz
  • Adaptive Sync FreeSync Premium Pro
  • Smart YES
  • Speaker YES
  • Connectivity Mini-Display Port 1.4 /
    Micro HDMI 2.1 / USB Type-C (2)

Odyssey Neo G7

Odyssey Neo G7
  • Model G75NB
  • Screen Size 32″
  • Aspect Ratio 16:9
  • Panel Type Quantum Mini LED
  • Flat/ Curved Curved (1000R)
  • Resolution 3,840 x 2,160
  • Brightness (Typical) 350 cd/㎡
  • Response Time 1ms(GTG)
  • Refresh Rate 165Hz
  • Adaptive Sync FreeSync Premium Pro
  • Smart N/A
  • Speaker N/A
  • Connectivity Display Port 1.4 /
    HDMI 2.1 (2) / USB 3.0 (2)

Odyssey Neo G7

Odyssey Neo G7
  • Model G70NC
  • Screen Size 43″
  • Aspect Ratio 16:9
  • Panel Type Quantum Mini LED
  • Flat/ Curved Flat
  • Resolution 3,840 x 2,160
  • Brightness (Typical) 400 cd/㎡
  • Response Time 1ms(MPRT)
  • Refresh Rate 144Hz
  • Adaptive Sync FreeSync Premium Pro
  • Smart YES
  • Speaker YES
  • Connectivity Display Port 1.4 / HDMI 2.1 (2) /
    USB 3.0 (2) / LAN

Odyssey G7

Odyssey G7
  • Model G70B
  • Screen Size 32″ / 28″
  • Aspect Ratio 16:9
  • Panel Type IPS
  • Flat/ Curved Flat
  • Resolution 3,840 x 2,160
  • Brightness (Typical) 32″ - 350 cd/㎡ /
    28″ - 300 cd/㎡
  • Response Time 1ms(GTG)
  • Refresh Rate 144Hz
  • Adaptive Sync G-Sync Compatible /
    FreeSync Premium Pro
  • Smart YES
  • Speaker YES
  • Connectivity Display Port 1.4 / HDMI 2.1 (2) /
    USB 3.0 (2) / LAN

Odyssey G6

Odyssey G6
  • Model G65B
  • Screen Size 32″ / 27″
  • Aspect Ratio 16:9
  • Panel Type VA
  • Flat/ Curved Curved (1000R)
  • Resolution 2,560 x 1,440
  • Brightness (Typical) 350 cd/㎡
  • Response Time 1ms(GTG)
  • Refresh Rate 240Hz
  • Adaptive Sync FreeSync Premium Pro
  • Smart YES
  • Speaker YES
  • Connectivity Display Port 1.4 / HDMI 2.1 (2) /
    USB 3.0 (2) / LAN

Odyssey G5

Odyssey G5
  • Model G55C
  • Screen Size 32″ / 27″
  • Aspect Ratio 16:9
  • Panel Type VA
  • Flat/ Curved Curved (1000R)
  • Resolution 2,560 x 1,440
  • Brightness (Typical) 300 cd/㎡
  • Response Time 1ms (MPRT)
  • Refresh Rate 165Hz
  • Adaptive Sync FreeSync
  • Smart N/A
  • Speaker N/A
  • Connectivity Display Port 1.2 / HDMI 2.0

Odyssey G5

Odyssey G5
  • Model G51C
  • Screen Size 32″ / 27″
  • Aspect Ratio 16:9
  • Panel Type VA
  • Flat/ Curved Flat
  • Resolution 2,560 x 1,440
  • Brightness (Typical) 300 cd/㎡
  • Response Time 1ms (MPRT)
  • Refresh Rate 165Hz
  • Adaptive Sync FreeSync Premium
  • Smart N/A
  • Speaker N/A
  • Connectivity Display Port 1.4 / HDMI 2.0 (2)

Odyssey G5

Odyssey G5
  • Model G55T
  • Screen Size 34″
  • Aspect Ratio 21:9
  • Panel Type VA
  • Flat/ Curved Curved (1000R)
  • Resolution 3,440 x 1,440
  • Brightness (Typical) 250 cd/㎡
  • Response Time 1ms (MPRT)
  • Refresh Rate 165Hz
  • Adaptive Sync FreeSync Premium
  • Smart N/A
  • Speaker N/A
  • Connectivity Display Port 1.4 / HDMI 2.0

Odyssey G4

Odyssey G4
  • Model G40B
  • Screen Size 27″ / 25″
  • Aspect Ratio 16:9
  • Panel Type IPS
  • Flat/ Curved Flat
  • Resolution 1,920 x 1,080
  • Brightness (Typical) 400 cd/㎡
  • Response Time 1ms(GTG)
  • Refresh Rate 240Hz
  • Adaptive Sync G-Sync Compatible /
    FreeSync Premium
  • Smart N/A
  • Speaker N/A
  • Connectivity Display Port 1.2 / HDMI 2.0 (2)
C C
  1. Source: IDC_23.Q3_PC_Monitor, market share based on revenue (2021~2023.Q3, over 144Hz)
  2. Features vary by model.
  3. Features vary by model.
    Response time is based on internal tests. Results may vary by content and settings.
  4. Features vary by model.
    Game Mode, VRR, and Cloud Game are not supported while in Multi View mode.
    While in Multi View mode, refresh rates of up to 120Hz are supported for external inputs.
    Some Smart Hub features may not be supported depending on the service provider, language, or geographical area.
  5. App availability may vary by country and separate subscriptions may be required.
    Accessing Gaming Hub is free of charge. Subscription may be required to access content offered by game-stream providers on the Gaming Hub platform.
    Requires internet connection and TV tuner is not included.
    You will need a Samsung Account to access our network-based smart services. If you choose not to log-in, you will only get connection to external devices, e.g. via HDMI.
  6. Features vary by model.
  7. Features vary by model.
  8. Screen should be manually rotated for cockpit mode.
    In Cockpit Mode, Multi View can show up to 3 screens on one display.
` )), a.append(n)), n ); } return ( Object.keys(E).forEach((t) => { Object.keys(E[t]).forEach((e) => { C.prototype[e] = E[t][e]; }); }), C.use([ function (e) { let { swiper: n, on: t, emit: s } = e; const i = I(); let a = null, r = null; const o = () => { n && !n.destroyed && n.initialized && (s("beforeResize"), s("resize")); }, l = () => { n && !n.destroyed && n.initialized && s("orientationchange"); }; t("init", () => { n.params.resizeObserver && void 0 !== i.ResizeObserver ? n && !n.destroyed && n.initialized && (a = new ResizeObserver((s) => { r = i.requestAnimationFrame(() => { var { width: e, height: t } = n; let i = e, a = t; s.forEach((e) => { var { contentBoxSize: e, contentRect: t, target: s, } = e; (s && s !== n.el) || ((i = t ? t.width : (e[0] || e).inlineSize), (a = t ? t.height : (e[0] || e).blockSize)); }), (i === e && a === t) || o(); }); })).observe(n.el) : (i.addEventListener("resize", o), i.addEventListener("orientationchange", l)); }), t("destroy", () => { r && i.cancelAnimationFrame(r), a && a.unobserve && n.el && (a.unobserve(n.el), (a = null)), i.removeEventListener("resize", o), i.removeEventListener("orientationchange", l); }); }, function (e) { let { swiper: s, extendParams: t, on: i, emit: a } = e; function n(e, t) { void 0 === t && (t = {}); const s = new (o.MutationObserver || o.WebkitMutationObserver)( (e) => { var t; 1 === e.length ? a("observerUpdate", e[0]) : ((t = function () { a("observerUpdate", e[0]); }), o.requestAnimationFrame ? o.requestAnimationFrame(t) : o.setTimeout(t, 0)); } ); s.observe(e, { attributes: void 0 === t.attributes || t.attributes, childList: void 0 === t.childList || t.childList, characterData: void 0 === t.characterData || t.characterData, }), r.push(s); } const r = [], o = I(); t({ observer: !1, observeParents: !1, observeSlideChildren: !1 }), i("init", () => { if (s.params.observer) { if (s.params.observeParents) { var t = s.$el.parents(); for (let e = 0; e < t.length; e += 1) n(t[e]); } n(s.$el[0], { childList: s.params.observeSlideChildren }), n(s.$wrapperEl[0], { attributes: !1 }); } }), i("destroy", () => { r.forEach((e) => { e.disconnect(); }), r.splice(0, r.length); }); }, ]), C.use([ function (e) { let t, { swiper: E, extendParams: s, on: i, emit: S } = e; function C(e, t) { const s = E.params.virtual; if (s.cache && E.virtual.cache[t]) return E.virtual.cache[t]; const i = s.renderSlide ? D(s.renderSlide.call(E, e, t)) : D( `
${e}
` ); return ( i.attr("data-swiper-slide-index") || i.attr("data-swiper-slide-index", t), s.cache && (E.virtual.cache[t] = i), i ); } function r(t) { const { slidesPerView: e, slidesPerGroup: s, centeredSlides: i, } = E.params, { addSlidesBefore: a, addSlidesAfter: n } = E.params.virtual, { from: r, to: o, slides: l, slidesGrid: d, offset: c, } = E.virtual; E.params.cssMode || E.updateActiveIndex(); var h = E.activeIndex || 0; let p, u, m; (p = E.rtlTranslate ? "right" : E.isHorizontal() ? "left" : "top"), (m = i ? ((u = Math.floor(e / 2) + s + n), Math.floor(e / 2) + s + a) : ((u = e + (s - 1) + n), s + a)); const f = Math.max((h || 0) - m, 0), v = Math.min((h || 0) + u, l.length - 1), g = (E.slidesGrid[f] || 0) - (E.slidesGrid[0] || 0); function w() { E.updateSlides(), E.updateProgress(), E.updateSlidesClasses(), E.lazy && E.params.lazy.enabled && E.lazy.load(), S("virtualUpdate"); } if ( (Object.assign(E.virtual, { from: f, to: v, offset: g, slidesGrid: E.slidesGrid, }), r === f && o === v && !t) ) return ( E.slidesGrid !== d && g !== c && E.slides.css(p, g + "px"), E.updateProgress(), void S("virtualUpdate") ); if (E.params.virtual.renderExternal) return ( E.params.virtual.renderExternal.call(E, { offset: g, from: f, to: v, slides: (function () { const t = []; for (let e = f; e <= v; e += 1) t.push(l[e]); return t; })(), }), void (E.params.virtual.renderExternalUpdate ? w() : S("virtualUpdate")) ); const y = [], b = []; if (t) E.$wrapperEl.find("." + E.params.slideClass).remove(); else for (let e = r; e <= o; e += 1) (e < f || e > v) && E.$wrapperEl .find( `.${E.params.slideClass}[data-swiper-slide-index="${e}"]` ) .remove(); for (let e = 0; e < l.length; e += 1) e >= f && e <= v && (void 0 === o || t ? b.push(e) : (e > o && b.push(e), e < r && y.push(e))); b.forEach((e) => { E.$wrapperEl.append(C(l[e], e)); }), y .sort((e, t) => t - e) .forEach((e) => { E.$wrapperEl.prepend(C(l[e], e)); }), E.$wrapperEl.children(".swiper-slide").css(p, g + "px"), w(); } s({ virtual: { enabled: !1, slides: [], cache: !0, renderSlide: null, renderExternal: null, renderExternalUpdate: !0, addSlidesBefore: 0, addSlidesAfter: 0, }, }), (E.virtual = { cache: {}, from: void 0, to: void 0, slides: [], offset: 0, slidesGrid: [], }), i("beforeInit", () => { E.params.virtual.enabled && ((E.virtual.slides = E.params.virtual.slides), E.classNames.push( E.params.containerModifierClass + "virtual" ), (E.params.watchSlidesProgress = !0), (E.originalParams.watchSlidesProgress = !0), E.params.initialSlide || r()); }), i("setTranslate", () => { E.params.virtual.enabled && (E.params.cssMode && !E._immediateVirtual ? (clearTimeout(t), (t = setTimeout(() => { r(); }, 100))) : r()); }), i("init update resize", () => { E.params.virtual.enabled && E.params.cssMode && L(E.wrapperEl, "--swiper-virtual-size", E.virtualSize + "px"); }), Object.assign(E.virtual, { appendSlide: function (t) { if ("object" == typeof t && "length" in t) for (let e = 0; e < t.length; e += 1) t[e] && E.virtual.slides.push(t[e]); else E.virtual.slides.push(t); r(!0); }, prependSlide: function (i) { const a = E.activeIndex; let e = a + 1, n = 1; if (Array.isArray(i)) { for (let e = 0; e < i.length; e += 1) i[e] && E.virtual.slides.unshift(i[e]); (e = a + i.length), (n = i.length); } else E.virtual.slides.unshift(i); if (E.params.virtual.cache) { const i = E.virtual.cache, a = {}; Object.keys(i).forEach((e) => { const t = i[e], s = t.attr("data-swiper-slide-index"); s && t.attr("data-swiper-slide-index", parseInt(s, 10) + n), (a[parseInt(e, 10) + n] = t); }), (E.virtual.cache = a); } r(!0), E.slideTo(e, 0); }, removeSlide: function (s) { if (null != s) { let t = E.activeIndex; if (Array.isArray(s)) for (let e = s.length - 1; 0 <= e; --e) E.virtual.slides.splice(s[e], 1), E.params.virtual.cache && delete E.virtual.cache[s[e]], s[e] < t && --t, (t = Math.max(t, 0)); else E.virtual.slides.splice(s, 1), E.params.virtual.cache && delete E.virtual.cache[s], s < t && --t, (t = Math.max(t, 0)); r(!0), E.slideTo(t, 0); } }, removeAllSlides: function () { (E.virtual.slides = []), E.params.virtual.cache && (E.virtual.cache = {}), r(!0), E.slideTo(0, 0); }, update: r, }); }, function (e) { let { swiper: h, extendParams: t, on: s, emit: p } = e; const u = T(), m = I(); function i(t) { if (h.enabled) { const s = h["rtlTranslate"]; let e = t; const i = (e = e.originalEvent ? e.originalEvent : e).keyCode || e.charCode, a = h.params.keyboard.pageUpDown, n = a && 33 === i, r = a && 34 === i, o = 37 === i, l = 39 === i, d = 38 === i, c = 40 === i; if ( !h.allowSlideNext && ((h.isHorizontal() && l) || (h.isVertical() && c) || r) ) return !1; if ( !h.allowSlidePrev && ((h.isHorizontal() && o) || (h.isVertical() && d) || n) ) return !1; if ( !( e.shiftKey || e.altKey || e.ctrlKey || e.metaKey || (u.activeElement && u.activeElement.nodeName && ("input" === u.activeElement.nodeName.toLowerCase() || "textarea" === u.activeElement.nodeName.toLowerCase())) ) ) { if ( h.params.keyboard.onlyInViewport && (n || r || o || l || d || c) ) { let t = !1; if ( 0 < h.$el.parents("." + h.params.slideClass).length && 0 === h.$el.parents("." + h.params.slideActiveClass).length ) return; const e = h.$el, i = e[0].clientWidth, a = e[0].clientHeight, p = m.innerWidth, u = m.innerHeight, n = h.$el.offset(), r = (s && (n.left -= h.$el[0].scrollLeft), [ [n.left, n.top], [n.left + i, n.top], [n.left, n.top + a], [n.left + i, n.top + a], ]); for (let e = 0; e < r.length; e += 1) { const s = r[e]; 0 <= s[0] && s[0] <= p && 0 <= s[1] && s[1] <= u && ((0 === s[0] && 0 === s[1]) || (t = !0)); } if (!t) return; } h.isHorizontal() ? ((n || r || o || l) && (e.preventDefault ? e.preventDefault() : (e.returnValue = !1)), (((r || l) && !s) || ((n || o) && s)) && h.slideNext(), (((n || o) && !s) || ((r || l) && s)) && h.slidePrev()) : ((n || r || d || c) && (e.preventDefault ? e.preventDefault() : (e.returnValue = !1)), (r || c) && h.slideNext(), (n || d) && h.slidePrev()), p("keyPress", i); } } } function a() { h.keyboard.enabled || (D(u).on("keydown", i), (h.keyboard.enabled = !0)); } function n() { h.keyboard.enabled && (D(u).off("keydown", i), (h.keyboard.enabled = !1)); } (h.keyboard = { enabled: !1 }), t({ keyboard: { enabled: !1, onlyInViewport: !0, pageUpDown: !0 }, }), s("init", () => { h.params.keyboard.enabled && a(); }), s("destroy", () => { h.keyboard.enabled && n(); }), Object.assign(h.keyboard, { enable: a, disable: n }); }, function (e) { let { swiper: d, extendParams: t, on: s, emit: c } = e; const i = I(); let h; t({ mousewheel: { enabled: !1, releaseOnEdges: !1, invert: !1, forceToAxis: !1, sensitivity: 1, eventsTarget: "container", thresholdDelta: null, thresholdTime: null, }, }), (d.mousewheel = { enabled: !1 }); let p, a = g(); const u = []; function n() { d.enabled && (d.mouseEntered = !0); } function r() { d.enabled && (d.mouseEntered = !1); } function m(e) { (d.params.mousewheel.thresholdDelta && e.delta < d.params.mousewheel.thresholdDelta) || (d.params.mousewheel.thresholdTime && g() - a < d.params.mousewheel.thresholdTime) || (6 <= e.delta && g() - a < 60) || (e.direction < 0 ? (d.isEnd && !d.params.loop) || d.animating || (d.slideNext(), c("scroll", e.raw)) : (d.isBeginning && !d.params.loop) || d.animating || (d.slidePrev(), c("scroll", e.raw)), (a = new i.Date().getTime())); } function o(i) { let a = i, n = !0; if (d.enabled) { var r = d.params.mousewheel; d.params.cssMode && a.preventDefault(); let e = d.$el; if ( ("container" !== d.params.mousewheel.eventsTarget && (e = D(d.params.mousewheel.eventsTarget)), !d.mouseEntered && !e[0].contains(a.target) && !r.releaseOnEdges) ) return !0; a.originalEvent && (a = a.originalEvent); let t = 0; var o = d.rtlTranslate ? -1 : 1, l = (function (e) { let t = 0, s = 0, i = 0, a = 0; return ( "detail" in e && (s = e.detail), "wheelDelta" in e && (s = -e.wheelDelta / 120), "wheelDeltaY" in e && (s = -e.wheelDeltaY / 120), "wheelDeltaX" in e && (t = -e.wheelDeltaX / 120), "axis" in e && e.axis === e.HORIZONTAL_AXIS && ((t = s), (s = 0)), (i = 10 * t), (a = 10 * s), "deltaY" in e && (a = e.deltaY), "deltaX" in e && (i = e.deltaX), e.shiftKey && !i && ((i = a), (a = 0)), (i || a) && e.deltaMode && (1 === e.deltaMode ? ((i *= 40), (a *= 40)) : ((i *= 800), (a *= 800))), i && !t && (t = i < 1 ? -1 : 1), a && !s && (s = a < 1 ? -1 : 1), { spinX: t, spinY: s, pixelX: i, pixelY: a } ); })(a); if (r.forceToAxis) if (d.isHorizontal()) { if (!(Math.abs(l.pixelX) > Math.abs(l.pixelY))) return !0; t = -l.pixelX * o; } else { if (!(Math.abs(l.pixelY) > Math.abs(l.pixelX))) return !0; t = -l.pixelY; } else t = Math.abs(l.pixelX) > Math.abs(l.pixelY) ? -l.pixelX * o : -l.pixelY; if (0 === t) return !0; r.invert && (t = -t); let s = d.getTranslate() + t * r.sensitivity; if ( ((s = s >= d.minTranslate() ? d.minTranslate() : s) <= d.maxTranslate() && (s = d.maxTranslate()), (n = !!d.params.loop || !(s === d.minTranslate() || s === d.maxTranslate())) && d.params.nested && a.stopPropagation(), d.params.freeMode && d.params.freeMode.enabled) ) { const i = { time: g(), delta: Math.abs(t), direction: Math.sign(t), }, n = p && i.time < p.time + 500 && i.delta <= p.delta && i.direction === p.direction; if (!n) { (p = void 0), d.params.loop && d.loopFix(); let e = d.getTranslate() + t * r.sensitivity; const D = d.isBeginning, g = d.isEnd; if ( ((e = e >= d.minTranslate() ? d.minTranslate() : e) <= d.maxTranslate() && (e = d.maxTranslate()), d.setTransition(0), d.setTranslate(e), d.updateProgress(), d.updateActiveIndex(), d.updateSlidesClasses(), ((!D && d.isBeginning) || (!g && d.isEnd)) && d.updateSlidesClasses(), d.params.freeMode.sticky) ) { clearTimeout(h), (h = void 0), 15 <= u.length && u.shift(); const a = u.length ? u[u.length - 1] : void 0, n = u[0]; if ( (u.push(i), a && (i.delta > a.delta || i.direction !== a.direction)) ) u.splice(0); else if ( 15 <= u.length && i.time - n.time < 500 && 1 <= n.delta - i.delta && i.delta <= 6 ) { const a = 0 < t ? 0.8 : 0.2; (p = i), u.splice(0), (h = x(() => { d.slideToClosest(d.params.speed, !0, void 0, a); }, 0)); } h = h || x(() => { (p = i), u.splice(0), d.slideToClosest(d.params.speed, !0, void 0, 0.5); }, 500); } if ( (n || c("scroll", a), d.params.autoplay && d.params.autoplayDisableOnInteraction && d.autoplay.stop(), e === d.minTranslate() || e === d.maxTranslate()) ) return !0; } } else { const a = { time: g(), delta: Math.abs(t), direction: Math.sign(t), raw: i, }, n = (2 <= u.length && u.shift(), u.length ? u[u.length - 1] : void 0); if ( (u.push(a), (!n || a.direction !== n.direction || a.delta > n.delta || a.time > n.time + 150) && m(a), (function (e) { var t = d.params.mousewheel; if (e.direction < 0) { if (d.isEnd && !d.params.loop && t.releaseOnEdges) return 1; } else if ( d.isBeginning && !d.params.loop && t.releaseOnEdges ) return 1; })(a)) ) return !0; } return ( a.preventDefault ? a.preventDefault() : (a.returnValue = !1), !1 ); } } function l(e) { let t = d.$el; (t = "container" !== d.params.mousewheel.eventsTarget ? D(d.params.mousewheel.eventsTarget) : t)[e]("mouseenter", n), t[e]("mouseleave", r), t[e]("wheel", o); } function f() { return d.params.cssMode ? (d.wrapperEl.removeEventListener("wheel", o), !0) : !d.mousewheel.enabled && (l("on"), (d.mousewheel.enabled = !0)); } function v() { return d.params.cssMode ? (d.wrapperEl.addEventListener(event, o), !0) : !!d.mousewheel.enabled && (l("off"), !(d.mousewheel.enabled = !1)); } s("init", () => { !d.params.mousewheel.enabled && d.params.cssMode && v(), d.params.mousewheel.enabled && f(); }), s("destroy", () => { d.params.cssMode && f(), d.mousewheel.enabled && v(); }), Object.assign(d.mousewheel, { enable: f, disable: v }); }, function (e) { let { swiper: n, extendParams: t, on: s, emit: r } = e; function i(e) { let t; return ( e && ((t = D(e)), n.params.uniqueNavElements && "string" == typeof e && 1 < t.length && 1 === n.$el.find(e).length && (t = n.$el.find(e))), t ); } function a(e, t) { var s = n.params.navigation; e && 0 < e.length && (e[t ? "addClass" : "removeClass"](s.disabledClass), e[0] && "BUTTON" === e[0].tagName && (e[0].disabled = t), n.params.watchOverflow && n.enabled && e[n.isLocked ? "addClass" : "removeClass"](s.lockClass)); } function o() { var e, t; n.params.loop || (({ $nextEl: e, $prevEl: t } = n.navigation), a(t, n.isBeginning && !n.params.rewind), a(e, n.isEnd && !n.params.rewind)); } function l(e) { e.preventDefault(), (n.isBeginning && !n.params.loop && !n.params.rewind) || (n.slidePrev(), r("navigationPrev")); } function d(e) { e.preventDefault(), (n.isEnd && !n.params.loop && !n.params.rewind) || (n.slideNext(), r("navigationNext")); } function c() { var e = n.params.navigation; if ( ((n.params.navigation = A( n, n.originalParams.navigation, n.params.navigation, { nextEl: "swiper-button-next", prevEl: "swiper-button-prev" } )), e.nextEl || e.prevEl) ) { const t = i(e.nextEl), s = i(e.prevEl); t && 0 < t.length && t.on("click", d), s && 0 < s.length && s.on("click", l), Object.assign(n.navigation, { $nextEl: t, nextEl: t && t[0], $prevEl: s, prevEl: s && s[0], }), n.enabled || (t && t.addClass(e.lockClass), s && s.addClass(e.lockClass)); } } function h() { const { $nextEl: e, $prevEl: t } = n.navigation; e && e.length && (e.off("click", d), e.removeClass(n.params.navigation.disabledClass)), t && t.length && (t.off("click", l), t.removeClass(n.params.navigation.disabledClass)); } t({ navigation: { nextEl: null, prevEl: null, hideOnClick: !1, disabledClass: "swiper-button-disabled", hiddenClass: "swiper-button-hidden", lockClass: "swiper-button-lock", navigationDisabledClass: "swiper-navigation-disabled", }, }), (n.navigation = { nextEl: null, $nextEl: null, prevEl: null, $prevEl: null, }), s("init", () => { !1 === n.params.navigation.enabled ? p() : (c(), o()); }), s("toEdge fromEdge lock unlock", () => { o(); }), s("destroy", () => { h(); }), s("enable disable", () => { const { $nextEl: e, $prevEl: t } = n.navigation; e && e[n.enabled ? "removeClass" : "addClass"]( n.params.navigation.lockClass ), t && t[n.enabled ? "removeClass" : "addClass"]( n.params.navigation.lockClass ); }), s("click", (e, t) => { const { $nextEl: s, $prevEl: i } = n.navigation, a = t.target; if ( n.params.navigation.hideOnClick && !D(a).is(i) && !D(a).is(s) && (!( n.pagination && n.params.pagination && n.params.pagination.clickable ) || (n.pagination.el !== a && !n.pagination.el.contains(a))) ) { let e; s ? (e = s.hasClass(n.params.navigation.hiddenClass)) : i && (e = i.hasClass(n.params.navigation.hiddenClass)), r(!0 === e ? "navigationShow" : "navigationHide"), s && s.toggleClass(n.params.navigation.hiddenClass), i && i.toggleClass(n.params.navigation.hiddenClass); } }); const p = () => { n.$el.addClass(n.params.navigation.navigationDisabledClass), h(); }; Object.assign(n.navigation, { enable: () => { n.$el.removeClass(n.params.navigation.navigationDisabledClass), c(), o(); }, disable: p, update: o, init: c, destroy: h, }); }, function (e) { let { swiper: d, extendParams: t, on: s, emit: c } = e; e = "swiper-pagination"; let h, p = (t({ pagination: { el: null, bulletElement: "span", clickable: !1, hideOnClick: !1, renderBullet: null, renderProgressbar: null, renderFraction: null, renderCustom: null, progressbarOpposite: !1, type: "bullets", dynamicBullets: !1, dynamicMainBullets: 1, formatFractionCurrent: (e) => e, formatFractionTotal: (e) => e, bulletClass: e + "-bullet", bulletActiveClass: e + "-bullet-active", modifierClass: e + "-", currentClass: e + "-current", totalClass: e + "-total", hiddenClass: e + "-hidden", progressbarFillClass: e + "-progressbar-fill", progressbarOppositeClass: e + "-progressbar-opposite", clickableClass: e + "-clickable", lockClass: e + "-lock", horizontalClass: e + "-horizontal", verticalClass: e + "-vertical", paginationDisabledClass: e + "-disabled", }, }), (d.pagination = { el: null, $el: null, bullets: [] }), 0); function n() { return ( !d.params.pagination.el || !d.pagination.el || !d.pagination.$el || 0 === d.pagination.$el.length ); } function u(e, t) { var s = d.params.pagination["bulletActiveClass"]; e[t]() .addClass(s + "-" + t) [t]() .addClass(s + `-${t}-` + t); } function i() { const t = d.rtl, r = d.params.pagination; if (!n()) { const o = ( d.virtual && d.params.virtual.enabled ? d.virtual : d ).slides.length, l = d.pagination.$el; let n; var s = d.params.loop ? Math.ceil( (o - 2 * d.loopedSlides) / d.params.slidesPerGroup ) : d.snapGrid.length; if ( (d.params.loop ? ((n = Math.ceil( (d.activeIndex - d.loopedSlides) / d.params.slidesPerGroup )) > o - 1 - 2 * d.loopedSlides && (n -= o - 2 * d.loopedSlides), n > s - 1 && (n -= s), n < 0 && "bullets" !== d.params.paginationType && (n = s + n)) : (n = void 0 !== d.snapIndex ? d.snapIndex : d.activeIndex || 0), "bullets" === r.type && d.pagination.bullets && 0 < d.pagination.bullets.length) ) { const o = d.pagination.bullets; let i, a, e; if ( (r.dynamicBullets && ((h = o .eq(0) [d.isHorizontal() ? "outerWidth" : "outerHeight"](!0)), l.css( d.isHorizontal() ? "width" : "height", h * (r.dynamicMainBullets + 4) + "px" ), 1 < r.dynamicMainBullets && void 0 !== d.previousIndex && ((p += n - (d.previousIndex - d.loopedSlides || 0)) > r.dynamicMainBullets - 1 ? (p = r.dynamicMainBullets - 1) : p < 0 && (p = 0)), (i = Math.max(n - p, 0)), (a = i + (Math.min(o.length, r.dynamicMainBullets) - 1)), (e = (a + i) / 2)), o.removeClass( [ "", "-next", "-next-next", "-prev", "-prev-prev", "-main", ] .map((e) => "" + r.bulletActiveClass + e) .join(" ") ), 1 < l.length) ) o.each((e) => { const t = D(e), s = t.index(); s === n && t.addClass(r.bulletActiveClass), r.dynamicBullets && (s >= i && s <= a && t.addClass(r.bulletActiveClass + "-main"), s === i && u(t, "prev"), s === a && u(t, "next")); }); else { const t = o.eq(n), l = t.index(); if ((t.addClass(r.bulletActiveClass), r.dynamicBullets)) { const t = o.eq(i), h = o.eq(a); for (let e = i; e <= a; e += 1) o.eq(e).addClass(r.bulletActiveClass + "-main"); if (d.params.loop) if (l >= o.length) { for (let e = r.dynamicMainBullets; 0 <= e; --e) o.eq(o.length - e).addClass( r.bulletActiveClass + "-main" ); o.eq(o.length - r.dynamicMainBullets - 1).addClass( r.bulletActiveClass + "-prev" ); } else u(t, "prev"), u(h, "next"); else u(t, "prev"), u(h, "next"); } } if (r.dynamicBullets) { const c = Math.min(o.length, r.dynamicMainBullets + 4), l = (h * c - h) / 2 - e * h, p = t ? "right" : "left"; o.css(d.isHorizontal() ? p : "top", l + "px"); } } if ( ("fraction" === r.type && (l .find(k(r.currentClass)) .text(r.formatFractionCurrent(n + 1)), l.find(k(r.totalClass)).text(r.formatFractionTotal(s))), "progressbar" === r.type) ) { var i = r.progressbarOpposite ? d.isHorizontal() ? "vertical" : "horizontal" : d.isHorizontal() ? "horizontal" : "vertical"; const o = (n + 1) / s; let e = 1, t = 1; "horizontal" == i ? (e = o) : (t = o), l .find(k(r.progressbarFillClass)) .transform(`translate3d(0,0,0) scaleX(${e}) scaleY(${t})`) .transition(d.params.speed); } "custom" === r.type && r.renderCustom ? (l.html(r.renderCustom(d, n + 1, s)), c("paginationRender", l[0])) : c("paginationUpdate", l[0]), d.params.watchOverflow && d.enabled && l[d.isLocked ? "addClass" : "removeClass"](r.lockClass); } } function a() { const i = d.params.pagination; if (!n()) { const e = ( d.virtual && d.params.virtual.enabled ? d.virtual : d ).slides.length, a = d.pagination.$el; let s = ""; if ("bullets" === i.type) { let t = d.params.loop ? Math.ceil( (e - 2 * d.loopedSlides) / d.params.slidesPerGroup ) : d.snapGrid.length; d.params.freeMode && d.params.freeMode.enabled && !d.params.loop && t > e && (t = e); for (let e = 0; e < t; e += 1) i.renderBullet ? (s += i.renderBullet.call(d, e, i.bulletClass)) : (s += `<${i.bulletElement} class="${i.bulletClass}">${i.bulletElement}>`); a.html(s), (d.pagination.bullets = a.find(k(i.bulletClass))); } "fraction" === i.type && ((s = i.renderFraction ? i.renderFraction.call(d, i.currentClass, i.totalClass) : ` / `), a.html(s)), "progressbar" === i.type && ((s = i.renderProgressbar ? i.renderProgressbar.call(d, i.progressbarFillClass) : ``), a.html(s)), "custom" !== i.type && c("paginationRender", d.pagination.$el[0]); } } function r() { d.params.pagination = A( d, d.originalParams.pagination, d.params.pagination, { el: "swiper-pagination" } ); const t = d.params.pagination; if (t.el) { let e = D(t.el); 0 !== e.length && (d.params.uniqueNavElements && "string" == typeof t.el && 1 < e.length && 1 < (e = d.$el.find(t.el)).length && (e = e.filter((e) => D(e).parents(".swiper")[0] === d.el)), "bullets" === t.type && t.clickable && e.addClass(t.clickableClass), e.addClass(t.modifierClass + t.type), e.addClass( d.isHorizontal() ? t.horizontalClass : t.verticalClass ), "bullets" === t.type && t.dynamicBullets && (e.addClass("" + t.modifierClass + t.type + "-dynamic"), (p = 0), t.dynamicMainBullets < 1 && (t.dynamicMainBullets = 1)), "progressbar" === t.type && t.progressbarOpposite && e.addClass(t.progressbarOppositeClass), t.clickable && e.on("click", k(t.bulletClass), function (e) { e.preventDefault(); let t = D(this).index() * d.params.slidesPerGroup; d.params.loop && (t += d.loopedSlides), d.slideTo(t); }), Object.assign(d.pagination, { $el: e, el: e[0] }), d.enabled || e.addClass(t.lockClass)); } } function o() { var e = d.params.pagination; if (!n()) { const t = d.pagination.$el; t.removeClass(e.hiddenClass), t.removeClass(e.modifierClass + e.type), t.removeClass( d.isHorizontal() ? e.horizontalClass : e.verticalClass ), d.pagination.bullets && d.pagination.bullets.removeClass && d.pagination.bullets.removeClass(e.bulletActiveClass), e.clickable && t.off("click", k(e.bulletClass)); } } s("init", () => { !1 === d.params.pagination.enabled ? l() : (r(), a(), i()); }), s("activeIndexChange", () => { (!d.params.loop && void 0 !== d.snapIndex) || i(); }), s("snapIndexChange", () => { d.params.loop || i(); }), s("slidesLengthChange", () => { d.params.loop && (a(), i()); }), s("snapGridLengthChange", () => { d.params.loop || (a(), i()); }), s("destroy", () => { o(); }), s("enable disable", () => { const e = d.pagination["$el"]; e && e[d.enabled ? "removeClass" : "addClass"]( d.params.pagination.lockClass ); }), s("lock unlock", () => { i(); }), s("click", (e, t) => { const s = t.target, i = d.pagination["$el"]; if ( d.params.pagination.el && d.params.pagination.hideOnClick && i && 0 < i.length && !D(s).hasClass(d.params.pagination.bulletClass) && (!d.navigation || !( (d.navigation.nextEl && s === d.navigation.nextEl) || (d.navigation.prevEl && s === d.navigation.prevEl) )) ) { const e = i.hasClass(d.params.pagination.hiddenClass); c(!0 === e ? "paginationShow" : "paginationHide"), i.toggleClass(d.params.pagination.hiddenClass); } }); const l = () => { d.$el.addClass(d.params.pagination.paginationDisabledClass), d.pagination.$el && d.pagination.$el.addClass( d.params.pagination.paginationDisabledClass ), o(); }; Object.assign(d.pagination, { enable: () => { d.$el.removeClass(d.params.pagination.paginationDisabledClass), d.pagination.$el && d.pagination.$el.removeClass( d.params.pagination.paginationDisabledClass ), r(), a(), i(); }, disable: l, render: a, update: i, init: r, destroy: o, }); }, function (e) { let { swiper: d, extendParams: t, on: s, emit: r } = e; const c = T(); let o, l, h, i, p = !1, u = null, m = null; function a() { if (d.params.scrollbar.el && d.scrollbar.el) { const { scrollbar: s, rtlTranslate: i, progress: a } = d, { $dragEl: n, $el: r } = s, o = d.params.scrollbar; let e = l, t = (h - l) * a; i ? 0 < (t = -t) ? ((e = l - t), (t = 0)) : -t + l > h && (e = h + t) : t < 0 ? ((e = l + t), (t = 0)) : t + l > h && (e = h - t), d.isHorizontal() ? (n.transform(`translate3d(${t}px, 0, 0)`), (n[0].style.width = e + "px")) : (n.transform(`translate3d(0px, ${t}px, 0)`), (n[0].style.height = e + "px")), o.hide && (clearTimeout(u), (r[0].style.opacity = 1), (u = setTimeout(() => { (r[0].style.opacity = 0), r.transition(400); }, 1e3))); } } function n() { if (d.params.scrollbar.el && d.scrollbar.el) { const e = d["scrollbar"], { $dragEl: t, $el: s } = e; (t[0].style.width = ""), (t[0].style.height = ""), (h = d.isHorizontal() ? s[0].offsetWidth : s[0].offsetHeight), (i = d.size / (d.virtualSize + d.params.slidesOffsetBefore - (d.params.centeredSlides ? d.snapGrid[0] : 0))), (l = "auto" === d.params.scrollbar.dragSize ? h * i : parseInt(d.params.scrollbar.dragSize, 10)), d.isHorizontal() ? (t[0].style.width = l + "px") : (t[0].style.height = l + "px"), (s[0].style.display = 1 <= i ? "none" : ""), d.params.scrollbar.hide && (s[0].style.opacity = 0), d.params.watchOverflow && d.enabled && e.$el[d.isLocked ? "addClass" : "removeClass"]( d.params.scrollbar.lockClass ); } } function f(e) { return d.isHorizontal() ? ("touchstart" === e.type || "touchmove" === e.type ? e.targetTouches[0] : e ).clientX : ("touchstart" === e.type || "touchmove" === e.type ? e.targetTouches[0] : e ).clientY; } function v(e) { const { scrollbar: t, rtlTranslate: s } = d, i = t["$el"]; let a; (a = (f(e) - i.offset()[d.isHorizontal() ? "left" : "top"] - (null !== o ? o : l / 2)) / (h - l)), (a = Math.max(Math.min(a, 1), 0)), s && (a = 1 - a); e = d.minTranslate() + (d.maxTranslate() - d.minTranslate()) * a; d.updateProgress(e), d.setTranslate(e), d.updateActiveIndex(), d.updateSlidesClasses(); } function g(e) { const t = d.params.scrollbar, { scrollbar: s, $wrapperEl: i } = d, { $el: a, $dragEl: n } = s; (p = !0), (o = e.target === n[0] || e.target === n ? f(e) - e.target.getBoundingClientRect()[ d.isHorizontal() ? "left" : "top" ] : null), e.preventDefault(), e.stopPropagation(), i.transition(100), n.transition(100), v(e), clearTimeout(m), a.transition(0), t.hide && a.css("opacity", 1), d.params.cssMode && d.$wrapperEl.css("scroll-snap-type", "none"), r("scrollbarDragStart", e); } function w(e) { const { scrollbar: t, $wrapperEl: s } = d, { $el: i, $dragEl: a } = t; p && (e.preventDefault ? e.preventDefault() : (e.returnValue = !1), v(e), s.transition(0), i.transition(0), a.transition(0), r("scrollbarDragMove", e)); } function y(e) { const t = d.params.scrollbar, { scrollbar: s, $wrapperEl: i } = d, a = s["$el"]; p && ((p = !1), d.params.cssMode && (d.$wrapperEl.css("scroll-snap-type", ""), i.transition("")), t.hide && (clearTimeout(m), (m = x(() => { a.css("opacity", 0), a.transition(400); }, 1e3))), r("scrollbarDragEnd", e), t.snapOnRelease && d.slideToClosest()); } function b(e) { var { scrollbar: t, touchEventsTouch: s, touchEventsDesktop: i, params: a, support: n, } = d, t = t.$el; if (t) { const r = t[0], o = !(!n.passiveListener || !a.passiveListeners) && { passive: !1, capture: !1, }, l = !(!n.passiveListener || !a.passiveListeners) && { passive: !0, capture: !1, }; r && ((t = "on" === e ? "addEventListener" : "removeEventListener"), n.touch ? (r[t](s.start, g, o), r[t](s.move, w, o), r[t](s.end, y, l)) : (r[t](i.start, g, o), c[t](i.move, w, o), c[t](i.end, y, l))); } } function E() { const { scrollbar: s, $el: i } = d; d.params.scrollbar = A( d, d.originalParams.scrollbar, d.params.scrollbar, { el: "swiper-scrollbar" } ); var a = d.params.scrollbar; if (a.el) { let e = D(a.el), t = ((e = d.params.uniqueNavElements && "string" == typeof a.el && 1 < e.length && 1 === i.find(a.el).length ? i.find(a.el) : e).addClass( d.isHorizontal() ? a.horizontalClass : a.verticalClass ), e.find("." + d.params.scrollbar.dragClass)); 0 === t.length && ((t = D( `
` )), e.append(t)), Object.assign(s, { $el: e, el: e[0], $dragEl: t, dragEl: t[0], }), a.draggable && d.params.scrollbar.el && d.scrollbar.el && b("on"), e && e[d.enabled ? "removeClass" : "addClass"]( d.params.scrollbar.lockClass ); } } function S() { const e = d.params.scrollbar, t = d.scrollbar.$el; t && t.removeClass( d.isHorizontal() ? e.horizontalClass : e.verticalClass ), d.params.scrollbar.el && d.scrollbar.el && b("off"); } t({ scrollbar: { el: null, dragSize: "auto", hide: !1, draggable: !1, snapOnRelease: !0, lockClass: "swiper-scrollbar-lock", dragClass: "swiper-scrollbar-drag", scrollbarDisabledClass: "swiper-scrollbar-disabled", horizontalClass: "swiper-scrollbar-horizontal", verticalClass: "swiper-scrollbar-vertical", }, }), (d.scrollbar = { el: null, dragEl: null, $el: null, $dragEl: null, }), s("init", () => { !1 === d.params.scrollbar.enabled ? C() : (E(), n(), a()); }), s("update resize observerUpdate lock unlock", () => { n(); }), s("setTranslate", () => { a(); }), s("setTransition", (e, t) => { (t = t), d.params.scrollbar.el && d.scrollbar.el && d.scrollbar.$dragEl.transition(t); }), s("enable disable", () => { const e = d.scrollbar["$el"]; e && e[d.enabled ? "removeClass" : "addClass"]( d.params.scrollbar.lockClass ); }), s("destroy", () => { S(); }); const C = () => { d.$el.addClass(d.params.scrollbar.scrollbarDisabledClass), d.scrollbar.$el && d.scrollbar.$el.addClass( d.params.scrollbar.scrollbarDisabledClass ), S(); }; Object.assign(d.scrollbar, { enable: () => { d.$el.removeClass(d.params.scrollbar.scrollbarDisabledClass), d.scrollbar.$el && d.scrollbar.$el.removeClass( d.params.scrollbar.scrollbarDisabledClass ), E(), n(), a(); }, disable: C, updateSize: n, setTranslate: a, init: E, destroy: S, }); }, function (e) { let { swiper: c, extendParams: t, on: s } = e; t({ parallax: { enabled: !1 } }); const n = (e, t) => { const s = c["rtl"], i = D(e), a = s ? -1 : 1, n = i.attr("data-swiper-parallax") || "0"; let r = i.attr("data-swiper-parallax-x"), o = i.attr("data-swiper-parallax-y"); var l = i.attr("data-swiper-parallax-scale"), d = i.attr("data-swiper-parallax-opacity"); if ( (r || o ? ((r = r || "0"), (o = o || "0")) : c.isHorizontal() ? ((r = n), (o = "0")) : ((o = n), (r = "0")), (r = 0 <= r.indexOf("%") ? parseInt(r, 10) * t * a + "%" : r * t * a + "px"), (o = 0 <= o.indexOf("%") ? parseInt(o, 10) * t + "%" : o * t + "px"), null != d) ) { const e = d - (d - 1) * (1 - Math.abs(t)); i[0].style.opacity = e; } if (null == l) i.transform(`translate3d(${r}, ${o}, 0px)`); else { const e = l - (l - 1) * (1 - Math.abs(t)); i.transform(`translate3d(${r}, ${o}, 0px) scale(${e})`); } }, i = () => { const { $el: e, slides: t, progress: i, snapGrid: a } = c; e .children( "[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]" ) .each((e) => { n(e, i); }), t.each((e, t) => { let s = e.progress; 1 < c.params.slidesPerGroup && "auto" !== c.params.slidesPerView && (s += Math.ceil(t / 2) - i * (a.length - 1)), (s = Math.min(Math.max(s, -1), 1)), D(e) .find( "[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]" ) .each((e) => { n(e, s); }); }); }; s("beforeInit", () => { c.params.parallax.enabled && ((c.params.watchSlidesProgress = !0), (c.originalParams.watchSlidesProgress = !0)); }), s("init", () => { c.params.parallax.enabled && i(); }), s("setTranslate", () => { c.params.parallax.enabled && i(); }), s("setTransition", (e, t) => { if (c.params.parallax.enabled) { var i = t; void 0 === i && (i = c.params.speed); const s = c["$el"]; s.find( "[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]" ).each((e) => { const t = D(e); let s = parseInt(t.attr("data-swiper-parallax-duration"), 10) || i; 0 === i && (s = 0), t.transition(s); }); } }); }, function (e) { let { swiper: E, extendParams: t, on: s, emit: i } = e; const S = I(); t({ zoom: { enabled: !1, maxRatio: 3, minRatio: 1, toggle: !0, containerClass: "swiper-zoom-container", zoomedSlideClass: "swiper-slide-zoomed", }, }), (E.zoom = { enabled: !1 }); let a, n, r, C = 1, o = !1; const T = { $slideEl: void 0, slideWidth: void 0, slideHeight: void 0, $imageEl: void 0, $imageWrapEl: void 0, maxRatio: 3, }, x = { isTouched: void 0, isMoved: void 0, currentX: void 0, currentY: void 0, minX: void 0, minY: void 0, maxX: void 0, maxY: void 0, width: void 0, height: void 0, startX: void 0, startY: void 0, touchesStart: {}, touchesCurrent: {}, }, l = { x: void 0, y: void 0, prevPositionX: void 0, prevPositionY: void 0, prevTime: void 0, }; let d = 1; function c(e) { if (e.targetTouches.length < 2) return 1; var t = e.targetTouches[0].pageX, s = e.targetTouches[0].pageY, i = e.targetTouches[1].pageX, e = e.targetTouches[1].pageY; return Math.sqrt((i - t) ** 2 + (e - s) ** 2); } function h(e) { var t = E.support, s = E.params.zoom; if (((n = !1), (r = !1), !t.gestures)) { if ( "touchstart" !== e.type || ("touchstart" === e.type && e.targetTouches.length < 2) ) return; (n = !0), (T.scaleStart = c(e)); } (T.$slideEl && T.$slideEl.length) || ((T.$slideEl = D(e.target).closest("." + E.params.slideClass)), 0 === T.$slideEl.length && (T.$slideEl = E.slides.eq(E.activeIndex)), (T.$imageEl = T.$slideEl .find("." + s.containerClass) .eq(0) .find("picture, img, svg, canvas, .swiper-zoom-target") .eq(0)), (T.$imageWrapEl = T.$imageEl.parent("." + s.containerClass)), (T.maxRatio = T.$imageWrapEl.attr("data-swiper-zoom") || s.maxRatio), 0 !== T.$imageWrapEl.length) ? (T.$imageEl && T.$imageEl.transition(0), (o = !0)) : (T.$imageEl = void 0); } function p(e) { const t = E.support, s = E.params.zoom, i = E.zoom; if (!t.gestures) { if ( "touchmove" !== e.type || ("touchmove" === e.type && e.targetTouches.length < 2) ) return; (r = !0), (T.scaleMove = c(e)); } T.$imageEl && 0 !== T.$imageEl.length ? (t.gestures ? (i.scale = e.scale * C) : (i.scale = (T.scaleMove / T.scaleStart) * C), i.scale > T.maxRatio && (i.scale = T.maxRatio - 1 + (i.scale - T.maxRatio + 1) ** 0.5), i.scale < s.minRatio && (i.scale = s.minRatio + 1 - (s.minRatio - i.scale + 1) ** 0.5), T.$imageEl.transform(`translate3d(0,0,0) scale(${i.scale})`)) : "gesturechange" === e.type && h(e); } function u(e) { const t = E.device, s = E.support, i = E.params.zoom, a = E.zoom; if (!s.gestures) { if (!n || !r) return; if ( "touchend" !== e.type || ("touchend" === e.type && e.changedTouches.length < 2 && !t.android) ) return; (n = !1), (r = !1); } T.$imageEl && 0 !== T.$imageEl.length && ((a.scale = Math.max( Math.min(a.scale, T.maxRatio), i.minRatio )), T.$imageEl .transition(E.params.speed) .transform(`translate3d(0,0,0) scale(${a.scale})`), (C = a.scale), (o = !1), 1 === a.scale && (T.$slideEl = void 0)); } function m(e) { var t = E.zoom; if ( T.$imageEl && 0 !== T.$imageEl.length && ((E.allowClick = !1), x.isTouched && T.$slideEl) ) { x.isMoved || ((x.width = T.$imageEl[0].offsetWidth), (x.height = T.$imageEl[0].offsetHeight), (x.startX = P(T.$imageWrapEl[0], "x") || 0), (x.startY = P(T.$imageWrapEl[0], "y") || 0), (T.slideWidth = T.$slideEl[0].offsetWidth), (T.slideHeight = T.$slideEl[0].offsetHeight), T.$imageWrapEl.transition(0)); var s = x.width * t.scale, t = x.height * t.scale; if (!(s < T.slideWidth && t < T.slideHeight)) { if ( ((x.minX = Math.min(T.slideWidth / 2 - s / 2, 0)), (x.maxX = -x.minX), (x.minY = Math.min(T.slideHeight / 2 - t / 2, 0)), (x.maxY = -x.minY), (x.touchesCurrent.x = ( "touchmove" === e.type ? e.targetTouches[0] : e ).pageX), (x.touchesCurrent.y = ( "touchmove" === e.type ? e.targetTouches[0] : e ).pageY), !x.isMoved && !o) ) { if ( E.isHorizontal() && ((Math.floor(x.minX) === Math.floor(x.startX) && x.touchesCurrent.x < x.touchesStart.x) || (Math.floor(x.maxX) === Math.floor(x.startX) && x.touchesCurrent.x > x.touchesStart.x)) ) return void (x.isTouched = !1); if ( !E.isHorizontal() && ((Math.floor(x.minY) === Math.floor(x.startY) && x.touchesCurrent.y < x.touchesStart.y) || (Math.floor(x.maxY) === Math.floor(x.startY) && x.touchesCurrent.y > x.touchesStart.y)) ) return void (x.isTouched = !1); } e.cancelable && e.preventDefault(), e.stopPropagation(), (x.isMoved = !0), (x.currentX = x.touchesCurrent.x - x.touchesStart.x + x.startX), (x.currentY = x.touchesCurrent.y - x.touchesStart.y + x.startY), x.currentX < x.minX && (x.currentX = x.minX + 1 - (x.minX - x.currentX + 1) ** 0.8), x.currentX > x.maxX && (x.currentX = x.maxX - 1 + (x.currentX - x.maxX + 1) ** 0.8), x.currentY < x.minY && (x.currentY = x.minY + 1 - (x.minY - x.currentY + 1) ** 0.8), x.currentY > x.maxY && (x.currentY = x.maxY - 1 + (x.currentY - x.maxY + 1) ** 0.8), l.prevPositionX || (l.prevPositionX = x.touchesCurrent.x), l.prevPositionY || (l.prevPositionY = x.touchesCurrent.y), l.prevTime || (l.prevTime = Date.now()), (l.x = (x.touchesCurrent.x - l.prevPositionX) / (Date.now() - l.prevTime) / 2), (l.y = (x.touchesCurrent.y - l.prevPositionY) / (Date.now() - l.prevTime) / 2), Math.abs(x.touchesCurrent.x - l.prevPositionX) < 2 && (l.x = 0), Math.abs(x.touchesCurrent.y - l.prevPositionY) < 2 && (l.y = 0), (l.prevPositionX = x.touchesCurrent.x), (l.prevPositionY = x.touchesCurrent.y), (l.prevTime = Date.now()), T.$imageWrapEl.transform( `translate3d(${x.currentX}px, ${x.currentY}px,0)` ); } } } function f() { const e = E.zoom; T.$slideEl && E.previousIndex !== E.activeIndex && (T.$imageEl && T.$imageEl.transform("translate3d(0,0,0) scale(1)"), T.$imageWrapEl && T.$imageWrapEl.transform("translate3d(0,0,0)"), (e.scale = 1), (C = 1), (T.$slideEl = void 0), (T.$imageEl = void 0), (T.$imageWrapEl = void 0)); } function v(w) { const y = E.zoom, b = E.params.zoom; if ( (T.$slideEl || (w && w.target && (T.$slideEl = D(w.target).closest( "." + E.params.slideClass )), T.$slideEl || (E.params.virtual && E.params.virtual.enabled && E.virtual ? (T.$slideEl = E.$wrapperEl.children( "." + E.params.slideActiveClass )) : (T.$slideEl = E.slides.eq(E.activeIndex))), (T.$imageEl = T.$slideEl .find("." + b.containerClass) .eq(0) .find("picture, img, svg, canvas, .swiper-zoom-target") .eq(0)), (T.$imageWrapEl = T.$imageEl.parent("." + b.containerClass))), T.$imageEl && 0 !== T.$imageEl.length && T.$imageWrapEl && 0 !== T.$imageWrapEl.length) ) { let e, t, s, i, a, n, r, o, l, d, c, h, p, u, m, f, v, g; E.params.cssMode && ((E.wrapperEl.style.overflow = "hidden"), (E.wrapperEl.style.touchAction = "none")), T.$slideEl.addClass("" + b.zoomedSlideClass), (t = void 0 === x.touchesStart.x && w ? ((e = ("touchend" === w.type ? w.changedTouches[0] : w) .pageX), ("touchend" === w.type ? w.changedTouches[0] : w).pageY) : ((e = x.touchesStart.x), x.touchesStart.y)), (y.scale = T.$imageWrapEl.attr("data-swiper-zoom") || b.maxRatio), (C = T.$imageWrapEl.attr("data-swiper-zoom") || b.maxRatio), w ? ((v = T.$slideEl[0].offsetWidth), (g = T.$slideEl[0].offsetHeight), (s = T.$slideEl.offset().left + S.scrollX), (i = T.$slideEl.offset().top + S.scrollY), (a = s + v / 2 - e), (n = i + g / 2 - t), (l = T.$imageEl[0].offsetWidth), (d = T.$imageEl[0].offsetHeight), (c = l * y.scale), (h = d * y.scale), (m = -(p = Math.min(v / 2 - c / 2, 0))), (f = -(u = Math.min(g / 2 - h / 2, 0))), (r = a * y.scale), (o = n * y.scale), (r = r < p ? p : r) > m && (r = m), (o = o < u ? u : o) > f && (o = f)) : ((r = 0), (o = 0)), T.$imageWrapEl .transition(300) .transform(`translate3d(${r}px, ${o}px,0)`), T.$imageEl .transition(300) .transform(`translate3d(0,0,0) scale(${y.scale})`); } } function g() { const e = E.zoom, t = E.params.zoom; T.$slideEl || (E.params.virtual && E.params.virtual.enabled && E.virtual ? (T.$slideEl = E.$wrapperEl.children( "." + E.params.slideActiveClass )) : (T.$slideEl = E.slides.eq(E.activeIndex)), (T.$imageEl = T.$slideEl .find("." + t.containerClass) .eq(0) .find("picture, img, svg, canvas, .swiper-zoom-target") .eq(0)), (T.$imageWrapEl = T.$imageEl.parent("." + t.containerClass))), T.$imageEl && 0 !== T.$imageEl.length && T.$imageWrapEl && 0 !== T.$imageWrapEl.length && (E.params.cssMode && ((E.wrapperEl.style.overflow = ""), (E.wrapperEl.style.touchAction = "")), (e.scale = 1), (C = 1), T.$imageWrapEl .transition(300) .transform("translate3d(0,0,0)"), T.$imageEl .transition(300) .transform("translate3d(0,0,0) scale(1)"), T.$slideEl.removeClass("" + t.zoomedSlideClass), (T.$slideEl = void 0)); } function w(e) { var t = E.zoom; t.scale && 1 !== t.scale ? g() : v(e); } function y() { var e = E.support; return { passiveListener: !( "touchstart" !== E.touchEvents.start || !e.passiveListener || !E.params.passiveListeners ) && { passive: !0, capture: !1 }, activeListenerWithCapture: !e.passiveListener || { passive: !1, capture: !0, }, }; } function b() { return "." + E.params.slideClass; } function L(e) { var t = y()["passiveListener"], s = b(); E.$wrapperEl[e]("gesturestart", s, h, t), E.$wrapperEl[e]("gesturechange", s, p, t), E.$wrapperEl[e]("gestureend", s, u, t); } function A() { a || ((a = !0), L("on")); } function k() { a && ((a = !1), L("off")); } function M() { const e = E.zoom; var t, s, i, a; e.enabled || ((e.enabled = !0), (t = E.support), ({ passiveListener: s, activeListenerWithCapture: i } = y()), (a = b()), t.gestures ? (E.$wrapperEl.on(E.touchEvents.start, A, s), E.$wrapperEl.on(E.touchEvents.end, k, s)) : "touchstart" === E.touchEvents.start && (E.$wrapperEl.on(E.touchEvents.start, a, h, s), E.$wrapperEl.on(E.touchEvents.move, a, p, i), E.$wrapperEl.on(E.touchEvents.end, a, u, s), E.touchEvents.cancel && E.$wrapperEl.on(E.touchEvents.cancel, a, u, s)), E.$wrapperEl.on( E.touchEvents.move, "." + E.params.zoom.containerClass, m, i )); } function O() { const e = E.zoom; var t, s, i, a; e.enabled && ((t = E.support), ({ passiveListener: s, activeListenerWithCapture: i } = ((e.enabled = !1), y())), (a = b()), t.gestures ? (E.$wrapperEl.off(E.touchEvents.start, A, s), E.$wrapperEl.off(E.touchEvents.end, k, s)) : "touchstart" === E.touchEvents.start && (E.$wrapperEl.off(E.touchEvents.start, a, h, s), E.$wrapperEl.off(E.touchEvents.move, a, p, i), E.$wrapperEl.off(E.touchEvents.end, a, u, s), E.touchEvents.cancel && E.$wrapperEl.off(E.touchEvents.cancel, a, u, s)), E.$wrapperEl.off( E.touchEvents.move, "." + E.params.zoom.containerClass, m, i )); } Object.defineProperty(E.zoom, "scale", { get: () => d, set(e) { var t, s; d !== e && ((t = T.$imageEl ? T.$imageEl[0] : void 0), (s = T.$slideEl ? T.$slideEl[0] : void 0), i("zoomChange", e, t, s)), (d = e); }, }), s("init", () => { E.params.zoom.enabled && M(); }), s("destroy", () => { O(); }), s("touchStart", (e, t) => { var s; E.zoom.enabled && ((t = t), (s = E.device), T.$imageEl && 0 !== T.$imageEl.length && !x.isTouched && (s.android && t.cancelable && t.preventDefault(), (x.isTouched = !0), (x.touchesStart.x = ( "touchstart" === t.type ? t.targetTouches[0] : t ).pageX), (x.touchesStart.y = ( "touchstart" === t.type ? t.targetTouches[0] : t ).pageY))); }), s("touchEnd", (e, t) => { if (E.zoom.enabled) { var s = E.zoom; if (T.$imageEl && 0 !== T.$imageEl.length) { if (!x.isTouched || !x.isMoved) return void ((x.isTouched = !1), (x.isMoved = !1)); (x.isTouched = !1), (x.isMoved = !1); let e = 300, t = 300; var i = l.x * e, i = x.currentX + i, a = l.y * t, a = x.currentY + a, n = (0 !== l.x && (e = Math.abs((i - x.currentX) / l.x)), 0 !== l.y && (t = Math.abs((a - x.currentY) / l.y)), Math.max(e, t)), i = ((x.currentX = i), (x.currentY = a), x.width * s.scale), a = x.height * s.scale; (x.minX = Math.min(T.slideWidth / 2 - i / 2, 0)), (x.maxX = -x.minX), (x.minY = Math.min(T.slideHeight / 2 - a / 2, 0)), (x.maxY = -x.minY), (x.currentX = Math.max( Math.min(x.currentX, x.maxX), x.minX )), (x.currentY = Math.max( Math.min(x.currentY, x.maxY), x.minY )), T.$imageWrapEl .transition(n) .transform( `translate3d(${x.currentX}px, ${x.currentY}px,0)` ); } } }), s("doubleTap", (e, t) => { !E.animating && E.params.zoom.enabled && E.zoom.enabled && E.params.zoom.toggle && w(t); }), s("transitionEnd", () => { E.zoom.enabled && E.params.zoom.enabled && f(); }), s("slideChange", () => { E.zoom.enabled && E.params.zoom.enabled && E.params.cssMode && f(); }), Object.assign(E.zoom, { enable: M, disable: O, in: v, out: g, toggle: w, }); }, function (e) { let { swiper: c, extendParams: t, on: s, emit: h } = e, d = (t({ lazy: { checkInView: !1, enabled: !1, loadPrevNext: !1, loadPrevNextAmount: 1, loadOnTransitionStart: !1, scrollingElement: "", elementClass: "swiper-lazy", loadingClass: "swiper-lazy-loading", loadedClass: "swiper-lazy-loaded", preloaderClass: "swiper-lazy-preloader", }, }), !(c.lazy = {})), p = !1; function u(e, o) { void 0 === o && (o = !0); const l = c.params.lazy; if (void 0 !== e && 0 !== c.slides.length) { const d = c.virtual && c.params.virtual.enabled ? c.$wrapperEl.children( `.${c.params.slideClass}[data-swiper-slide-index="${e}"]` ) : c.slides.eq(e), t = d.find( `.${l.elementClass}:not(.${l.loadedClass}):not(.${l.loadingClass})` ); !d.hasClass(l.elementClass) || d.hasClass(l.loadedClass) || d.hasClass(l.loadingClass) || t.push(d[0]), 0 !== t.length && t.each((e) => { const t = D(e), s = (t.addClass(l.loadingClass), t.attr("data-background")), i = t.attr("data-src"), a = t.attr("data-srcset"), n = t.attr("data-sizes"), r = t.parent("picture"); c.loadImage(t[0], i || s, a, n, !1, () => { var e; null == c || !c || (c && !c.params) || c.destroyed || (s ? (t.css("background-image", `url("${s}")`), t.removeAttr("data-background")) : (a && (t.attr("srcset", a), t.removeAttr("data-srcset")), n && (t.attr("sizes", n), t.removeAttr("data-sizes")), r.length && r.children("source").each((e) => { const t = D(e); t.attr("data-srcset") && (t.attr("srcset", t.attr("data-srcset")), t.removeAttr("data-srcset")); }), i && (t.attr("src", i), t.removeAttr("data-src"))), t.addClass(l.loadedClass).removeClass(l.loadingClass), d.find("." + l.preloaderClass).remove(), c.params.loop && o && ((e = d.attr("data-swiper-slide-index")), d.hasClass(c.params.slideDuplicateClass) ? u( c.$wrapperEl .children( `[data-swiper-slide-index="${e}"]:not(.${c.params.slideDuplicateClass})` ) .index(), !1 ) : u( c.$wrapperEl .children( `.${c.params.slideDuplicateClass}[data-swiper-slide-index="${e}"]` ) .index(), !1 )), h("lazyImageReady", d[0], t[0]), c.params.autoHeight && c.updateAutoHeight()); }), h("lazyImageLoad", d[0], t[0]); }); } } function m() { const { $wrapperEl: t, params: s, slides: i, activeIndex: a } = c, n = c.virtual && s.virtual.enabled, e = s.lazy; let r = s.slidesPerView; function o(e) { if (n) { if ( t.children( `.${s.slideClass}[data-swiper-slide-index="${e}"]` ).length ) return 1; } else if (i[e]) return 1; } function l(e) { return n ? D(e).attr("data-swiper-slide-index") : D(e).index(); } if ( ("auto" === r && (r = 0), (p = p || !0), c.params.watchSlidesProgress) ) t.children("." + s.slideVisibleClass).each((e) => { u(n ? D(e).attr("data-swiper-slide-index") : D(e).index()); }); else if (1 < r) for (let e = a; e < a + r; e += 1) o(e) && u(e); else u(a); if (e.loadPrevNext) if ( 1 < r || (e.loadPrevNextAmount && 1 < e.loadPrevNextAmount) ) { const t = e.loadPrevNextAmount, c = Math.ceil(r), s = Math.min(a + c + Math.max(t, c), i.length), n = Math.max(a - Math.max(c, t), 0); for (let e = a + c; e < s; e += 1) o(e) && u(e); for (let e = n; e < a; e += 1) o(e) && u(e); } else { const c = t.children("." + s.slideNextClass), i = (0 < c.length && u(l(c)), t.children("." + s.slidePrevClass)); 0 < i.length && u(l(i)); } } function f() { var e = I(); if (c && !c.destroyed) { const i = c.params.lazy.scrollingElement ? D(c.params.lazy.scrollingElement) : D(e), a = i[0] === e, n = a ? e.innerWidth : i[0].offsetWidth, r = a ? e.innerHeight : i[0].offsetHeight, o = c.$el.offset(), l = c["rtlTranslate"]; let t = !1; l && (o.left -= c.$el[0].scrollLeft); var s = [ [o.left, o.top], [o.left + c.width, o.top], [o.left, o.top + c.height], [o.left + c.width, o.top + c.height], ]; for (let e = 0; e < s.length; e += 1) { const c = s[e]; 0 <= c[0] && c[0] <= n && 0 <= c[1] && c[1] <= r && ((0 === c[0] && 0 === c[1]) || (t = !0)); } e = !( "touchstart" !== c.touchEvents.start || !c.support.passiveListener || !c.params.passiveListeners ) && { passive: !0, capture: !1 }; t ? (m(), i.off("scroll", f, e)) : d || ((d = !0), i.on("scroll", f, e)); } } s("beforeInit", () => { c.params.lazy.enabled && c.params.preloadImages && (c.params.preloadImages = !1); }), s("init", () => { c.params.lazy.enabled && (c.params.lazy.checkInView ? f : m)(); }), s("scroll", () => { c.params.freeMode && c.params.freeMode.enabled && !c.params.freeMode.sticky && m(); }), s("scrollbarDragMove resize _freeModeNoMomentumRelease", () => { c.params.lazy.enabled && (c.params.lazy.checkInView ? f : m)(); }), s("transitionStart", () => { c.params.lazy.enabled && (c.params.lazy.loadOnTransitionStart || (!c.params.lazy.loadOnTransitionStart && !p)) && (c.params.lazy.checkInView ? f : m)(); }), s("transitionEnd", () => { c.params.lazy.enabled && !c.params.lazy.loadOnTransitionStart && (c.params.lazy.checkInView ? f : m)(); }), s("slideChange", () => { var { lazy: e, cssMode: t, watchSlidesProgress: s, touchReleaseOnEdges: i, resistanceRatio: a, } = c.params; e.enabled && (t || (s && (i || 0 === a))) && m(); }), s("destroy", () => { c.$el && c.$el .find("." + c.params.lazy.loadingClass) .removeClass(c.params.lazy.loadingClass); }), Object.assign(c.lazy, { load: m, loadInSlide: u }); }, function (e) { let { swiper: o, extendParams: t, on: s } = e; function l(e, t) { const s = (function () { let s, i, a; return (e, t) => { for (i = -1, s = e.length; 1 < s - i; ) e[(a = (s + i) >> 1)] <= t ? (i = a) : (s = a); return s; }; })(); let i, a; return ( (this.x = e), (this.y = t), (this.lastIndex = e.length - 1), (this.interpolate = function (e) { return e ? ((a = s(this.x, e)), (i = a - 1), ((e - this.x[i]) * (this.y[a] - this.y[i])) / (this.x[a] - this.x[i]) + this.y[i]) : 0; }), this ); } function i() { o.controller.control && o.controller.spline && ((o.controller.spline = void 0), delete o.controller.spline); } t({ controller: { control: void 0, inverse: !1, by: "slide" } }), (o.controller = { control: void 0 }), s("beforeInit", () => { o.controller.control = o.params.controller.control; }), s("update", () => { i(); }), s("resize", () => { i(); }), s("observerUpdate", () => { i(); }), s("setTranslate", (e, t, s) => { o.controller.control && o.controller.setTranslate(t, s); }), s("setTransition", (e, t, s) => { o.controller.control && o.controller.setTransition(t, s); }), Object.assign(o.controller, { setTranslate: function (e, t) { var s = o.controller.control; let i, a; var n = o.constructor; function r(e) { var t, s = o.rtlTranslate ? -o.translate : o.translate; "slide" === o.params.controller.by && ((t = e), o.controller.spline || (o.controller.spline = o.params.loop ? new l(o.slidesGrid, t.slidesGrid) : new l(o.snapGrid, t.snapGrid)), (a = -o.controller.spline.interpolate(-s))), (a && "container" !== o.params.controller.by) || ((i = (e.maxTranslate() - e.minTranslate()) / (o.maxTranslate() - o.minTranslate())), (a = (s - o.minTranslate()) * i + e.minTranslate())), o.params.controller.inverse && (a = e.maxTranslate() - a), e.updateProgress(a), e.setTranslate(a, o), e.updateActiveIndex(), e.updateSlidesClasses(); } if (Array.isArray(s)) for (let e = 0; e < s.length; e += 1) s[e] !== t && s[e] instanceof n && r(s[e]); else s instanceof n && t !== s && r(s); }, setTransition: function (t, e) { const s = o.constructor, i = o.controller.control; let a; function n(e) { e.setTransition(t, o), 0 !== t && (e.transitionStart(), e.params.autoHeight && x(() => { e.updateAutoHeight(); }), e.$wrapperEl.transitionEnd(() => { i && (e.params.loop && "slide" === o.params.controller.by && e.loopFix(), e.transitionEnd()); })); } if (Array.isArray(i)) for (a = 0; a < i.length; a += 1) i[a] !== e && i[a] instanceof s && n(i[a]); else i instanceof s && e !== i && n(i); }, }); }, function (e) { let { swiper: r, extendParams: t, on: s } = e, o = (t({ a11y: { enabled: !0, notificationClass: "swiper-notification", prevSlideMessage: "Previous slide", nextSlideMessage: "Next slide", firstSlideMessage: "This is the first slide", lastSlideMessage: "This is the last slide", paginationBulletMessage: "Go to slide {{index}}", slideLabelMessage: "{{index}} / {{slidesLength}}", containerMessage: null, containerRoleDescriptionMessage: null, itemRoleDescriptionMessage: null, slideRole: "group", id: null, }, }), (r.a11y = { clicked: !1 }), null); function i(e) { const t = o; 0 !== t.length && (t.html(""), t.html(e)); } function a(e) { e.attr("tabIndex", "0"); } function n(e) { e.attr("tabIndex", "-1"); } function l(e, t) { e.attr("role", t); } function d(e, t) { e.attr("aria-roledescription", t); } function c(e, t) { e.attr("aria-label", t); } function h(e) { e.attr("aria-disabled", !0); } function p(e) { e.attr("aria-disabled", !1); } function u(e) { if (13 === e.keyCode || 32 === e.keyCode) { const t = r.params.a11y, s = D(e.target); r.navigation && r.navigation.$nextEl && s.is(r.navigation.$nextEl) && ((r.isEnd && !r.params.loop) || r.slideNext(), r.isEnd ? i(t.lastSlideMessage) : i(t.nextSlideMessage)), r.navigation && r.navigation.$prevEl && s.is(r.navigation.$prevEl) && ((r.isBeginning && !r.params.loop) || r.slidePrev(), r.isBeginning ? i(t.firstSlideMessage) : i(t.prevSlideMessage)), r.pagination && s.is(k(r.params.pagination.bulletClass)) && s[0].click(); } } function m() { return ( r.pagination && r.pagination.bullets && r.pagination.bullets.length ); } function f() { return m() && r.params.pagination.clickable; } const v = (e, t, s) => { a(e), "BUTTON" !== e[0].tagName && (l(e, "button"), e.on("keydown", u)), c(e, s), e.attr("aria-controls", t); }, g = () => { r.a11y.clicked = !0; }, w = () => { requestAnimationFrame(() => { requestAnimationFrame(() => { r.destroyed || (r.a11y.clicked = !1); }); }); }, y = (e) => { var t, s, i; r.a11y.clicked || ((t = e.target.closest("." + r.params.slideClass)) && r.slides.includes(t) && ((s = r.slides.indexOf(t) === r.activeIndex), (i = r.params.watchSlidesProgress && r.visibleSlides && r.visibleSlides.includes(t)), s || i || (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) || (r.isHorizontal() ? (r.el.scrollLeft = 0) : (r.el.scrollTop = 0), r.slideTo(r.slides.indexOf(t), 0)))); }, b = () => { const a = r.params.a11y, n = (a.itemRoleDescriptionMessage && d(D(r.slides), a.itemRoleDescriptionMessage), a.slideRole && l(D(r.slides), a.slideRole), (r.params.loop ? r.slides.filter( (e) => !e.classList.contains(r.params.slideDuplicateClass) ) : r.slides ).length); a.slideLabelMessage && r.slides.each((e, t) => { const s = D(e), i = r.params.loop ? parseInt(s.attr("data-swiper-slide-index"), 10) : t; c( s, a.slideLabelMessage .replace(/\{\{index\}\}/, i + 1) .replace(/\{\{slidesLength\}\}/, n) ); }); }; s("beforeInit", () => { o = D( `` ); }), s("afterInit", () => { if (r.params.a11y.enabled) { var s = r.params.a11y, i = (r.$el.append(o), r.$el); s.containerRoleDescriptionMessage && d(i, s.containerRoleDescriptionMessage), s.containerMessage && c(i, s.containerMessage); const a = r.$wrapperEl, n = s.id || a.attr("id") || "swiper-wrapper-" + "x" .repeat((i = void 0 === (i = 16) ? 16 : i)) .replace(/x/g, () => Math.round(16 * Math.random()).toString(16) ); i = r.params.autoplay && r.params.autoplay.enabled ? "off" : "polite"; let e, t; a.attr("id", n), a.attr("aria-live", i), b(), r.navigation && r.navigation.$nextEl && (e = r.navigation.$nextEl), r.navigation && r.navigation.$prevEl && (t = r.navigation.$prevEl), e && e.length && v(e, n, s.nextSlideMessage), t && t.length && v(t, n, s.prevSlideMessage), f() && r.pagination.$el.on( "keydown", k(r.params.pagination.bulletClass), u ), r.$el.on("focus", y, !0), r.$el.on("pointerdown", g, !0), r.$el.on("pointerup", w, !0); } }), s( "slidesLengthChange snapGridLengthChange slidesGridLengthChange", () => { r.params.a11y.enabled && b(); } ), s("fromEdge toEdge afterInit lock unlock", () => { var e, t; r.params.a11y.enabled && !r.params.loop && !r.params.rewind && r.navigation && (({ $nextEl: e, $prevEl: t } = r.navigation), t && 0 < t.length && (r.isBeginning ? (h(t), n(t)) : (p(t), a(t))), e && 0 < e.length && (r.isEnd ? (h(e), n(e)) : (p(e), a(e)))); }), s("paginationUpdate", () => { if (r.params.a11y.enabled) { const s = r.params.a11y; m() && r.pagination.bullets.each((e) => { const t = D(e); r.params.pagination.clickable && (a(t), r.params.pagination.renderBullet || (l(t, "button"), c( t, s.paginationBulletMessage.replace( /\{\{index\}\}/, t.index() + 1 ) ))), t.is("." + r.params.pagination.bulletActiveClass) ? t.attr("aria-current", "true") : t.removeAttr("aria-current"); }); } }), s("destroy", () => { if (r.params.a11y.enabled) { let e, t; o && 0 < o.length && o.remove(), r.navigation && r.navigation.$nextEl && (e = r.navigation.$nextEl), r.navigation && r.navigation.$prevEl && (t = r.navigation.$prevEl), e && e.off("keydown", u), t && t.off("keydown", u), f() && r.pagination.$el.off( "keydown", k(r.params.pagination.bulletClass), u ), r.$el.off("focus", y, !0), r.$el.off("pointerdown", g, !0), r.$el.off("pointerup", w, !0); } }); }, function (e) { let { swiper: r, extendParams: t, on: s } = e, o = (t({ history: { enabled: !1, root: "", replaceState: !1, key: "slides", keepQuery: !1, }, }), !1), i = {}; const l = (e) => e .toString() .replace(/\s+/g, "-") .replace(/[^\w-]+/g, "") .replace(/--+/g, "-") .replace(/^-+/, "") .replace(/-+$/, ""), a = (e) => { var t = I(); let s; (e = (s = e ? new URL(e) : t.location).pathname .slice(1) .split("/") .filter((e) => "" !== e)), (t = e.length); return { key: e[t - 2], value: e[t - 1] }; }, n = (s, i) => { const a = I(); if (o && r.params.history.enabled) { let e; e = r.params.url ? new URL(r.params.url) : a.location; const n = r.slides.eq(i); let t = l(n.attr("data-history")); if (0 < r.params.history.root.length) { let e = r.params.history.root; "/" === e[e.length - 1] && (e = e.slice(0, e.length - 1)), (t = e + `/${s}/` + t); } else e.pathname.includes(s) || (t = s + "/" + t); r.params.history.keepQuery && (t += e.search); i = a.history.state; (i && i.value === t) || (r.params.history.replaceState ? a.history.replaceState({ value: t }, null, t) : a.history.pushState({ value: t }, null, t)); } }, d = (s, i, a) => { if (i) for (let e = 0, t = r.slides.length; e < t; e += 1) { const n = r.slides.eq(e); if ( l(n.attr("data-history")) === i && !n.hasClass(r.params.slideDuplicateClass) ) { const i = n.index(); r.slideTo(i, s, a); } } else r.slideTo(0, s, a); }, c = () => { (i = a(r.params.url)), d(r.params.speed, i.value, !1); }; s("init", () => { if (r.params.history.enabled) { const e = I(); if (r.params.history) { if (!e.history || !e.history.pushState) return void ((r.params.history.enabled = !1), (r.params.hashNavigation.enabled = !0)); (o = !0), ((i = a(r.params.url)).key || i.value) && (d(0, i.value, r.params.runCallbacksOnInit), r.params.history.replaceState || e.addEventListener("popstate", c)); } } }), s("destroy", () => { if (r.params.history.enabled) { const e = I(); r.params.history.replaceState || e.removeEventListener("popstate", c); } }), s("transitionEnd _freeModeNoMomentumRelease", () => { o && n(r.params.history.key, r.activeIndex); }), s("slideChange", () => { o && r.params.cssMode && n(r.params.history.key, r.activeIndex); }); }, function (e) { let { swiper: a, extendParams: t, emit: s, on: i } = e, n = !1; const r = T(), o = I(), l = (t({ hashNavigation: { enabled: !1, replaceState: !1, watchState: !1, }, }), () => { s("hashChange"); var e = r.location.hash.replace("#", ""); e !== a.slides.eq(a.activeIndex).attr("data-hash") && void 0 !== (e = a.$wrapperEl .children(`.${a.params.slideClass}[data-hash="${e}"]`) .index()) && a.slideTo(e); }), d = () => { if (n && a.params.hashNavigation.enabled) if ( a.params.hashNavigation.replaceState && o.history && o.history.replaceState ) o.history.replaceState( null, null, "#" + a.slides.eq(a.activeIndex).attr("data-hash") || "" ), s("hashSet"); else { const e = a.slides.eq(a.activeIndex), t = e.attr("data-hash") || e.attr("data-history"); (r.location.hash = t || ""), s("hashSet"); } }; i("init", () => { if ( a.params.hashNavigation.enabled && !( !a.params.hashNavigation.enabled || (a.params.history && a.params.history.enabled) ) ) { n = !0; const s = r.location.hash.replace("#", ""); if (s) for (let e = 0, t = a.slides.length; e < t; e += 1) { const i = a.slides.eq(e); if ( (i.attr("data-hash") || i.attr("data-history")) === s && !i.hasClass(a.params.slideDuplicateClass) ) { const s = i.index(); a.slideTo(s, 0, a.params.runCallbacksOnInit, !0); } } a.params.hashNavigation.watchState && D(o).on("hashchange", l); } }), i("destroy", () => { a.params.hashNavigation.enabled && a.params.hashNavigation.watchState && D(o).off("hashchange", l); }), i("transitionEnd _freeModeNoMomentumRelease", () => { n && d(); }), i("slideChange", () => { n && a.params.cssMode && d(); }); }, function (e) { let s, { swiper: i, extendParams: t, on: a, emit: n } = e; function r() { if (!i.size) return (i.autoplay.running = !1), void (i.autoplay.paused = !1); const e = i.slides.eq(i.activeIndex); let t = i.params.autoplay.delay; e.attr("data-swiper-autoplay") && (t = e.attr("data-swiper-autoplay") || i.params.autoplay.delay), clearTimeout(s), (s = x(() => { let e; i.params.autoplay.reverseDirection ? i.params.loop ? (i.loopFix(), (e = i.slidePrev(i.params.speed, !0, !0)), n("autoplay")) : i.isBeginning ? i.params.autoplay.stopOnLastSlide ? l() : ((e = i.slideTo( i.slides.length - 1, i.params.speed, !0, !0 )), n("autoplay")) : ((e = i.slidePrev(i.params.speed, !0, !0)), n("autoplay")) : i.params.loop ? (i.loopFix(), (e = i.slideNext(i.params.speed, !0, !0)), n("autoplay")) : i.isEnd ? i.params.autoplay.stopOnLastSlide ? l() : ((e = i.slideTo(0, i.params.speed, !0, !0)), n("autoplay")) : ((e = i.slideNext(i.params.speed, !0, !0)), n("autoplay")), ((i.params.cssMode && i.autoplay.running) || !1 === e) && r(); }, t)); } function o() { return ( void 0 === s && !i.autoplay.running && ((i.autoplay.running = !0), n("autoplayStart"), r(), !0) ); } function l() { return ( !!i.autoplay.running && void 0 !== s && (s && (clearTimeout(s), (s = void 0)), (i.autoplay.running = !1), n("autoplayStop"), !0) ); } function d(e) { !i.autoplay.running || i.autoplay.paused || (s && clearTimeout(s), (i.autoplay.paused = !0), 0 !== e && i.params.autoplay.waitForTransition ? ["transitionend", "webkitTransitionEnd"].forEach((e) => { i.$wrapperEl[0].addEventListener(e, h); }) : ((i.autoplay.paused = !1), r())); } function c() { var e = T(); "hidden" === e.visibilityState && i.autoplay.running && d(), "visible" === e.visibilityState && i.autoplay.paused && (r(), (i.autoplay.paused = !1)); } function h(e) { i && !i.destroyed && i.$wrapperEl && e.target === i.$wrapperEl[0] && (["transitionend", "webkitTransitionEnd"].forEach((e) => { i.$wrapperEl[0].removeEventListener(e, h); }), (i.autoplay.paused = !1), (i.autoplay.running ? r : l)()); } function p() { i.params.autoplay.disableOnInteraction ? l() : (n("autoplayPause"), d()), ["transitionend", "webkitTransitionEnd"].forEach((e) => { i.$wrapperEl[0].removeEventListener(e, h); }); } function u() { i.params.autoplay.disableOnInteraction || ((i.autoplay.paused = !1), n("autoplayResume"), r()); } (i.autoplay = { running: !1, paused: !1 }), t({ autoplay: { enabled: !1, delay: 3e3, waitForTransition: !0, disableOnInteraction: !0, stopOnLastSlide: !1, reverseDirection: !1, pauseOnMouseEnter: !1, }, }), a("init", () => { i.params.autoplay.enabled && (o(), T().addEventListener("visibilitychange", c), i.params.autoplay.pauseOnMouseEnter && (i.$el.on("mouseenter", p), i.$el.on("mouseleave", u))); }), a("beforeTransitionStart", (e, t, s) => { i.autoplay.running && (s || !i.params.autoplay.disableOnInteraction ? i.autoplay.pause(t) : l()); }), a("sliderFirstMove", () => { i.autoplay.running && (i.params.autoplay.disableOnInteraction ? l : d)(); }), a("touchEnd", () => { i.params.cssMode && i.autoplay.paused && !i.params.autoplay.disableOnInteraction && r(); }), a("destroy", () => { i.$el.off("mouseenter", p), i.$el.off("mouseleave", u), i.autoplay.running && l(), T().removeEventListener("visibilitychange", c); }), Object.assign(i.autoplay, { pause: d, run: r, start: o, stop: l, }); }, function (e) { let { swiper: l, extendParams: t, on: s } = e, i = (t({ thumbs: { swiper: null, multipleActiveThumbs: !0, autoScrollOffset: 0, slideThumbActiveClass: "swiper-slide-thumb-active", thumbsContainerClass: "swiper-thumbs", }, }), !1), a = !1; function n() { var e = l.thumbs.swiper; if (e && !e.destroyed) { const s = e.clickedIndex, i = e.clickedSlide; if ( !( (i && D(i).hasClass(l.params.thumbs.slideThumbActiveClass)) || null == s ) ) { let t; if ( ((t = e.params.loop ? parseInt( D(e.clickedSlide).attr("data-swiper-slide-index"), 10 ) : s), l.params.loop) ) { let e = l.activeIndex; l.slides.eq(e).hasClass(l.params.slideDuplicateClass) && (l.loopFix(), (l._clientLeft = l.$wrapperEl[0].clientLeft), (e = l.activeIndex)); const s = l.slides .eq(e) .prevAll(`[data-swiper-slide-index="${t}"]`) .eq(0) .index(), i = l.slides .eq(e) .nextAll(`[data-swiper-slide-index="${t}"]`) .eq(0) .index(); t = void 0 === s || (void 0 !== i && i - e < e - s) ? i : s; } l.slideTo(t); } } } function r() { var e = l.params["thumbs"]; if (i) return !1; i = !0; const t = l.constructor; return ( e.swiper instanceof t ? ((l.thumbs.swiper = e.swiper), Object.assign(l.thumbs.swiper.originalParams, { watchSlidesProgress: !0, slideToClickedSlide: !1, }), Object.assign(l.thumbs.swiper.params, { watchSlidesProgress: !0, slideToClickedSlide: !1, })) : d(e.swiper) && ((e = Object.assign({}, e.swiper)), Object.assign(e, { watchSlidesProgress: !0, slideToClickedSlide: !1, }), (l.thumbs.swiper = new t(e)), (a = !0)), l.thumbs.swiper.$el.addClass( l.params.thumbs.thumbsContainerClass ), l.thumbs.swiper.on("tap", n), !0 ); } function o(i) { const a = l.thumbs.swiper; if (a && !a.destroyed) { const o = "auto" === a.params.slidesPerView ? a.slidesPerViewDynamic() : a.params.slidesPerView; let t = 1; var s = l.params.thumbs.slideThumbActiveClass; if ( (1 < l.params.slidesPerView && !l.params.centeredSlides && (t = l.params.slidesPerView), l.params.thumbs.multipleActiveThumbs || (t = 1), (t = Math.floor(t)), a.slides.removeClass(s), a.params.loop || (a.params.virtual && a.params.virtual.enabled)) ) for (let e = 0; e < t; e += 1) a.$wrapperEl .children( `[data-swiper-slide-index="${l.realIndex + e}"]` ) .addClass(s); else for (let e = 0; e < t; e += 1) a.slides.eq(l.realIndex + e).addClass(s); var n = l.params.thumbs.autoScrollOffset, r = n && !a.params.loop; if (l.realIndex !== a.realIndex || r) { let e, t, s = a.activeIndex; if (a.params.loop) { a.slides.eq(s).hasClass(a.params.slideDuplicateClass) && (a.loopFix(), (a._clientLeft = a.$wrapperEl[0].clientLeft), (s = a.activeIndex)); const i = a.slides .eq(s) .prevAll(`[data-swiper-slide-index="${l.realIndex}"]`) .eq(0) .index(), o = a.slides .eq(s) .nextAll(`[data-swiper-slide-index="${l.realIndex}"]`) .eq(0) .index(); (e = void 0 === i ? o : void 0 === o ? i : o - s == s - i ? 1 < a.params.slidesPerGroup ? o : s : o - s < s - i ? o : i), (t = l.activeIndex > l.previousIndex ? "next" : "prev"); } else (e = l.realIndex), (t = e > l.previousIndex ? "next" : "prev"); r && (e += "next" === t ? n : -1 * n), a.visibleSlidesIndexes && a.visibleSlidesIndexes.indexOf(e) < 0 && (a.params.centeredSlides ? (e = e > s ? e - Math.floor(o / 2) + 1 : e + Math.floor(o / 2) - 1) : e > s && a.params.slidesPerGroup, a.slideTo(e, i ? 0 : void 0)); } } } (l.thumbs = { swiper: null }), s("beforeInit", () => { var e = l.params["thumbs"]; e && e.swiper && (r(), o(!0)); }), s("slideChange update resize observerUpdate", () => { o(); }), s("setTransition", (e, t) => { const s = l.thumbs.swiper; s && !s.destroyed && s.setTransition(t); }), s("beforeDestroy", () => { const e = l.thumbs.swiper; e && !e.destroyed && a && e.destroy(); }), Object.assign(l.thumbs, { init: r, update: o }); }, function (e) { let { swiper: p, extendParams: t, emit: u, once: m } = e; t({ freeMode: { enabled: !1, momentum: !0, momentumRatio: 1, momentumBounce: !0, momentumBounceRatio: 1, momentumVelocityRatio: 1, sticky: !1, minimumVelocity: 0.02, }, }), Object.assign(p, { freeMode: { onTouchStart: function () { var e = p.getTranslate(); p.setTranslate(e), p.setTransition(0), (p.touchEventsData.velocities.length = 0), p.freeMode.onTouchEnd({ currentPos: p.rtl ? p.translate : -p.translate, }); }, onTouchMove: function () { const { touchEventsData: e, touches: t } = p; 0 === e.velocities.length && e.velocities.push({ position: t[p.isHorizontal() ? "startX" : "startY"], time: e.touchStartTime, }), e.velocities.push({ position: t[p.isHorizontal() ? "currentX" : "currentY"], time: g(), }); }, onTouchEnd: function (n) { let r = n["currentPos"]; const { params: o, $wrapperEl: l, rtlTranslate: d, snapGrid: c, touchEventsData: h, } = p, e = g() - h.touchStartTime; if (r < -p.minTranslate()) p.slideTo(p.activeIndex); else if (r > -p.maxTranslate()) p.slides.length < c.length ? p.slideTo(c.length - 1) : p.slideTo(p.slides.length - 1); else { if (o.freeMode.momentum) { if (1 < h.velocities.length) { const n = h.velocities.pop(), r = h.velocities.pop(), u = n.position - r.position, m = n.time - r.time; (p.velocity = u / m), (p.velocity /= 2), Math.abs(p.velocity) < o.freeMode.minimumVelocity && (p.velocity = 0), (150 < m || 300 < g() - n.time) && (p.velocity = 0); } else p.velocity = 0; (p.velocity *= o.freeMode.momentumVelocityRatio), (h.velocities.length = 0); let e = 1e3 * o.freeMode.momentumRatio; const r = p.velocity * e; let s = p.translate + r; d && (s = -s); let t, i = !1; n = 20 * Math.abs(p.velocity) * o.freeMode.momentumBounceRatio; let a; if (s < p.maxTranslate()) o.freeMode.momentumBounce ? (s + p.maxTranslate() < -n && (s = p.maxTranslate() - n), (t = p.maxTranslate()), (i = !0), (h.allowMomentumBounce = !0)) : (s = p.maxTranslate()), o.loop && o.centeredSlides && (a = !0); else if (s > p.minTranslate()) o.freeMode.momentumBounce ? (s - p.minTranslate() > n && (s = p.minTranslate() + n), (t = p.minTranslate()), (i = !0), (h.allowMomentumBounce = !0)) : (s = p.minTranslate()), o.loop && o.centeredSlides && (a = !0); else if (o.freeMode.sticky) { let t; for (let e = 0; e < c.length; e += 1) if (c[e] > -s) { t = e; break; } s = -(s = Math.abs(c[t] - s) < Math.abs(c[t - 1] - s) || "next" === p.swipeDirection ? c[t] : c[t - 1]); } if ( (a && m("transitionEnd", () => { p.loopFix(); }), 0 !== p.velocity) ) { if ( ((e = d ? Math.abs((-s - p.translate) / p.velocity) : Math.abs((s - p.translate) / p.velocity)), o.freeMode.sticky) ) { const r = Math.abs((d ? -s : s) - p.translate), u = p.slidesSizesGrid[p.activeIndex]; e = r < u ? o.speed : r < 2 * u ? 1.5 * o.speed : 2.5 * o.speed; } } else if (o.freeMode.sticky) return void p.slideToClosest(); o.freeMode.momentumBounce && i ? (p.updateProgress(t), p.setTransition(e), p.setTranslate(s), p.transitionStart(!0, p.swipeDirection), (p.animating = !0), l.transitionEnd(() => { p && !p.destroyed && h.allowMomentumBounce && (u("momentumBounce"), p.setTransition(o.speed), setTimeout(() => { p.setTranslate(t), l.transitionEnd(() => { p && !p.destroyed && p.transitionEnd(); }); }, 0)); })) : p.velocity ? (u("_freeModeNoMomentumRelease"), p.updateProgress(s), p.setTransition(e), p.setTranslate(s), p.transitionStart(!0, p.swipeDirection), p.animating || ((p.animating = !0), l.transitionEnd(() => { p && !p.destroyed && p.transitionEnd(); }))) : p.updateProgress(s), p.updateActiveIndex(), p.updateSlidesClasses(); } else { if (o.freeMode.sticky) return void p.slideToClosest(); o.freeMode && u("_freeModeNoMomentumRelease"); } (!o.freeMode.momentum || e >= o.longSwipesMs) && (p.updateProgress(), p.updateActiveIndex(), p.updateSlidesClasses()); } }, }, }); }, function (e) { let h, p, u, { swiper: m, extendParams: t } = e; t({ grid: { rows: 1, fill: "column" } }), (m.grid = { initSlides: (e) => { var t = m.params["slidesPerView"], { rows: s, fill: i } = m.params.grid; (p = h / s), (u = Math.floor(e / s)), (h = Math.floor(e / s) === e / s ? e : Math.ceil(e / s) * s), "auto" !== t && "row" === i && (h = Math.max(h, t * s)); }, updateSlide: (e, t, s, i) => { var { slidesPerGroup: a, spaceBetween: n } = m.params, { rows: r, fill: o } = m.params.grid; let l, d, c; if ("row" === o && 1 < a) { const p = Math.floor(e / (a * r)), u = e - r * a * p, m = 0 === p ? a : Math.min(Math.ceil((s - p * r * a) / r), a); (c = Math.floor(u / m)), (l = (d = u - c * m + p * a) + (c * h) / r), t.css({ "-webkit-order": l, order: l }); } else "column" === o ? ((d = Math.floor(e / r)), (c = e - d * r), (d > u || (d === u && c === r - 1)) && (c += 1) >= r && ((c = 0), (d += 1))) : ((c = Math.floor(e / p)), (d = e - c * p)); t.css(i("margin-top"), 0 !== c ? n && n + "px" : ""); }, updateWrapperSize: (s, i, e) => { var { spaceBetween: t, centeredSlides: a, roundLengths: n, } = m.params, r = m.params.grid["rows"]; if ( ((m.virtualSize = (s + t) * h), (m.virtualSize = Math.ceil(m.virtualSize / r) - t), m.$wrapperEl.css({ [e("width")]: m.virtualSize + t + "px", }), a) ) { i.splice(0, i.length); const s = []; for (let t = 0; t < i.length; t += 1) { let e = i[t]; n && (e = Math.floor(e)), i[t] < m.virtualSize + i[0] && s.push(e); } i.push(...s); } }, }); }, function (e) { e = e.swiper; Object.assign(e, { appendSlide: function (t) { const { $wrapperEl: s, params: e } = this; if ( (e.loop && this.loopDestroy(), "object" == typeof t && "length" in t) ) for (let e = 0; e < t.length; e += 1) t[e] && s.append(t[e]); else s.append(t); e.loop && this.loopCreate(), e.observer || this.update(); }.bind(e), prependSlide: function (t) { const e = this, { params: s, $wrapperEl: i, activeIndex: a } = e; s.loop && e.loopDestroy(); let n = a + 1; if ("object" == typeof t && "length" in t) { for (let e = 0; e < t.length; e += 1) t[e] && i.prepend(t[e]); n = a + t.length; } else i.prepend(t); s.loop && e.loopCreate(), s.observer || e.update(), e.slideTo(n, 0, !1); }.bind(e), addSlide: function (t, s) { const i = this, { $wrapperEl: a, params: n, activeIndex: e } = i; let r = e; n.loop && ((r -= i.loopedSlides), i.loopDestroy(), (i.slides = a.children("." + n.slideClass))); var o = i.slides.length; if (t <= 0) i.prependSlide(s); else if (o <= t) i.appendSlide(s); else { let e = r > t ? r + 1 : r; const l = []; for (let e = o - 1; e >= t; --e) { const t = i.slides.eq(e); t.remove(), l.unshift(t); } if ("object" == typeof s && "length" in s) { for (let e = 0; e < s.length; e += 1) s[e] && a.append(s[e]); e = r > t ? r + s.length : r; } else a.append(s); for (let e = 0; e < l.length; e += 1) a.append(l[e]); n.loop && i.loopCreate(), n.observer || i.update(), n.loop ? i.slideTo(e + i.loopedSlides, 0, !1) : i.slideTo(e, 0, !1); } }.bind(e), removeSlide: function (t) { const s = this, { params: e, $wrapperEl: i, activeIndex: a } = s; let n = a; e.loop && ((n -= s.loopedSlides), s.loopDestroy(), (s.slides = i.children("." + e.slideClass))); let r, o = n; if ("object" == typeof t && "length" in t) { for (let e = 0; e < t.length; e += 1) (r = t[e]), s.slides[r] && s.slides.eq(r).remove(), r < o && --o; o = Math.max(o, 0); } else (r = t), s.slides[r] && s.slides.eq(r).remove(), r < o && --o, (o = Math.max(o, 0)); e.loop && s.loopCreate(), e.observer || s.update(), e.loop ? s.slideTo(o + s.loopedSlides, 0, !1) : s.slideTo(o, 0, !1); }.bind(e), removeAllSlides: function () { const t = []; for (let e = 0; e < this.slides.length; e += 1) t.push(e); this.removeSlide(t); }.bind(e), }); }, function (e) { let { swiper: r, extendParams: t, on: s } = e; t({ fadeEffect: { crossFade: !1, transformEl: null } }), M({ effect: "fade", swiper: r, on: s, setTranslate: () => { const i = r["slides"], a = r.params.fadeEffect; for (let s = 0; s < i.length; s += 1) { const i = r.slides.eq(s); let e = -i[0].swiperSlideOffset, t = (r.params.virtualTranslate || (e -= r.translate), 0); r.isHorizontal() || ((t = e), (e = 0)); var n = r.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(i[0].progress), 0) : 1 + Math.min(Math.max(i[0].progress, -1), 0); O(a, i) .css({ opacity: n }) .transform(`translate3d(${e}px, ${t}px, 0px)`); } }, setTransition: (e) => { var t = r.params.fadeEffect["transformEl"]; (t ? r.slides.find(t) : r.slides).transition(e), z({ swiper: r, duration: e, transformEl: t, allSlides: !0, }); }, overwriteParams: () => ({ slidesPerView: 1, slidesPerGroup: 1, watchSlidesProgress: !0, spaceBetween: 0, virtualTranslate: !r.params.cssMode, }), }); }, function (e) { let { swiper: f, extendParams: t, on: s } = e; t({ cubeEffect: { slideShadows: !0, shadow: !0, shadowOffset: 20, shadowScale: 0.94, }, }); const v = (e, t, s) => { let i = s ? e.find(".swiper-slide-shadow-left") : e.find(".swiper-slide-shadow-top"), a = s ? e.find(".swiper-slide-shadow-right") : e.find(".swiper-slide-shadow-bottom"); 0 === i.length && ((i = D( `
` )), e.append(i)), 0 === a.length && ((a = D( `
` )), e.append(a)), i.length && (i[0].style.opacity = Math.max(-t, 0)), a.length && (a[0].style.opacity = Math.max(t, 0)); }; M({ effect: "cube", swiper: f, on: s, setTranslate: () => { const { $el: e, $wrapperEl: t, slides: o, width: s, height: i, rtlTranslate: l, size: d, browser: a, } = f, c = f.params.cubeEffect, h = f.isHorizontal(), p = f.virtual && f.params.virtual.enabled; let n, u = 0; c.shadow && (h ? (0 === (n = t.find(".swiper-cube-shadow")).length && ((n = D('
')), t.append(n)), n.css({ height: s + "px" })) : 0 === (n = e.find(".swiper-cube-shadow")).length && ((n = D('
')), e.append(n))); for (let r = 0; r < o.length; r += 1) { const f = o.eq(r); let e = r, t = 90 * (e = p ? parseInt(f.attr("data-swiper-slide-index"), 10) : e), s = Math.floor(t / 360); l && ((t = -t), (s = Math.floor(-t / 360))); const D = Math.max(Math.min(f[0].progress, 1), -1); let i = 0, a = 0, n = 0; e % 4 == 0 ? ((i = 4 * -s * d), (n = 0)) : (e - 1) % 4 == 0 ? ((i = 0), (n = 4 * -s * d)) : (e - 2) % 4 == 0 ? ((i = d + 4 * s * d), (n = d)) : (e - 3) % 4 == 0 && ((i = -d), (n = 3 * d + 4 * d * s)), l && (i = -i), h || ((a = i), (i = 0)); var m = `rotateX(${h ? 0 : -t}deg) rotateY(${ h ? t : 0 }deg) translate3d(${i}px, ${a}px, ${n}px)`; D <= 1 && -1 < D && ((u = 90 * e + 90 * D), l && (u = 90 * -e - 90 * D)), f.transform(m), c.slideShadows && v(f, D, h); } if ( (t.css({ "-webkit-transform-origin": `50% 50% -${d / 2}px`, "transform-origin": `50% 50% -${d / 2}px`, }), c.shadow) ) if (h) n.transform( `translate3d(0px, ${s / 2 + c.shadowOffset}px, ${ -s / 2 }px) rotateX(90deg) rotateZ(0deg) scale(${c.shadowScale})` ); else { const e = Math.abs(u) - 90 * Math.floor(Math.abs(u) / 90), f = 1.5 - (Math.sin((2 * e * Math.PI) / 360) / 2 + Math.cos((2 * e * Math.PI) / 360) / 2), t = c.shadowScale, o = c.shadowScale / f, v = c.shadowOffset; n.transform( `scale3d(${t}, 1, ${o}) translate3d(0px, ${ i / 2 + v }px, ${-i / 2 / o}px) rotateX(-90deg)` ); } var r = a.isSafari || a.isWebView ? -d / 2 : 0; t.transform( `translate3d(0px,0,${r}px) rotateX(${ f.isHorizontal() ? 0 : u }deg) rotateY(${f.isHorizontal() ? -u : 0}deg)` ), t[0].style.setProperty("--swiper-cube-translate-z", r + "px"); }, setTransition: (e) => { const { $el: t, slides: s } = f; s .transition(e) .find( ".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left" ) .transition(e), f.params.cubeEffect.shadow && !f.isHorizontal() && t.find(".swiper-cube-shadow").transition(e); }, recreateShadows: () => { const s = f.isHorizontal(); f.slides.each((e) => { var t = Math.max(Math.min(e.progress, 1), -1); v(D(e), t, s); }); }, getEffectParams: () => f.params.cubeEffect, perspective: () => !0, overwriteParams: () => ({ slidesPerView: 1, slidesPerGroup: 1, watchSlidesProgress: !0, resistanceRatio: 0, spaceBetween: 0, centeredSlides: !1, virtualTranslate: !0, }), }); }, function (e) { let { swiper: h, extendParams: t, on: s } = e; t({ flipEffect: { slideShadows: !0, limitRotation: !0, transformEl: null, }, }); const p = (e, t, s) => { let i = h.isHorizontal() ? e.find(".swiper-slide-shadow-left") : e.find(".swiper-slide-shadow-top"), a = h.isHorizontal() ? e.find(".swiper-slide-shadow-right") : e.find(".swiper-slide-shadow-bottom"); 0 === i.length && (i = $(s, e, h.isHorizontal() ? "left" : "top")), 0 === a.length && (a = $(s, e, h.isHorizontal() ? "right" : "bottom")), i.length && (i[0].style.opacity = Math.max(-t, 0)), a.length && (a[0].style.opacity = Math.max(t, 0)); }; M({ effect: "flip", swiper: h, on: s, setTranslate: () => { const { slides: r, rtlTranslate: o } = h, l = h.params.flipEffect; for (let n = 0; n < r.length; n += 1) { const c = r.eq(n); let e = c[0].progress; h.params.flipEffect.limitRotation && (e = Math.max(Math.min(c[0].progress, 1), -1)); var d = c[0].swiperSlideOffset; let t = -180 * e, s = 0, i = h.params.cssMode ? -d - h.translate : -d, a = 0; h.isHorizontal() ? o && (t = -t) : ((a = i), (i = 0), (s = -t), (t = 0)), (c[0].style.zIndex = -Math.abs(Math.round(e)) + r.length), l.slideShadows && p(c, e, l); d = `translate3d(${i}px, ${a}px, 0px) rotateX(${s}deg) rotateY(${t}deg)`; O(l, c).transform(d); } }, setTransition: (e) => { var t = h.params.flipEffect["transformEl"]; (t ? h.slides.find(t) : h.slides) .transition(e) .find( ".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left" ) .transition(e), z({ swiper: h, duration: e, transformEl: t }); }, recreateShadows: () => { const i = h.params.flipEffect; h.slides.each((e) => { var t = D(e); let s = t[0].progress; h.params.flipEffect.limitRotation && (s = Math.max(Math.min(e.progress, 1), -1)), p(t, s, i); }); }, getEffectParams: () => h.params.flipEffect, perspective: () => !0, overwriteParams: () => ({ slidesPerView: 1, slidesPerGroup: 1, watchSlidesProgress: !0, spaceBetween: 0, virtualTranslate: !h.params.cssMode, }), }); }, function (e) { let { swiper: y, extendParams: t, on: s } = e; t({ coverflowEffect: { rotate: 50, stretch: 0, depth: 100, scale: 1, modifier: 1, slideShadows: !0, transformEl: null, }, }), M({ effect: "coverflow", swiper: y, on: s, setTranslate: () => { const { width: e, height: l, slides: d, slidesSizesGrid: c, } = y, h = y.params.coverflowEffect, p = y.isHorizontal(), u = y.translate, m = p ? e / 2 - u : l / 2 - u, f = p ? h.rotate : -h.rotate, v = h.depth; for (let o = 0, e = d.length; o < e; o += 1) { const y = d.eq(o), l = c[o], u = (m - y[0].swiperSlideOffset - l / 2) / l, w = "function" == typeof h.modifier ? h.modifier(u) : u * h.modifier; let e = p ? f * w : 0, t = p ? 0 : f * w, s = -v * Math.abs(w), i = h.stretch, a = ("string" == typeof i && -1 !== i.indexOf("%") && (i = (parseFloat(h.stretch) / 100) * l), p ? 0 : i * w), n = p ? i * w : 0, r = 1 - (1 - h.scale) * Math.abs(w); Math.abs(n) < 0.001 && (n = 0), Math.abs(a) < 0.001 && (a = 0), Math.abs(s) < 0.001 && (s = 0), Math.abs(e) < 0.001 && (e = 0), Math.abs(t) < 0.001 && (t = 0), Math.abs(r) < 0.001 && (r = 0); var g = `translate3d(${n}px,${a}px,${s}px) rotateX(${t}deg) rotateY(${e}deg) scale(${r})`; if ( (O(h, y).transform(g), (y[0].style.zIndex = 1 - Math.abs(Math.round(w))), h.slideShadows) ) { let e = p ? y.find(".swiper-slide-shadow-left") : y.find(".swiper-slide-shadow-top"), t = p ? y.find(".swiper-slide-shadow-right") : y.find(".swiper-slide-shadow-bottom"); 0 === e.length && (e = $(h, y, p ? "left" : "top")), 0 === t.length && (t = $(h, y, p ? "right" : "bottom")), e.length && (e[0].style.opacity = 0 < w ? w : 0), t.length && (t[0].style.opacity = 0 < -w ? -w : 0); } } }, setTransition: (e) => { var t = y.params.coverflowEffect["transformEl"]; (t ? y.slides.find(t) : y.slides) .transition(e) .find( ".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left" ) .transition(e); }, perspective: () => !0, overwriteParams: () => ({ watchSlidesProgress: !0 }), }); }, function (e) { let { swiper: y, extendParams: t, on: s } = e; t({ creativeEffect: { transformEl: null, limitProgress: 1, shadowPerProgress: !1, progressMultiplier: 1, perspective: !0, prev: { translate: [0, 0, 0], rotate: [0, 0, 0], opacity: 1, scale: 1, }, next: { translate: [0, 0, 0], rotate: [0, 0, 0], opacity: 1, scale: 1, }, }, }); M({ effect: "creative", swiper: y, on: s, setTranslate: () => { const { slides: a, $wrapperEl: e, slidesSizesGrid: n } = y, r = y.params.creativeEffect, o = r["progressMultiplier"], l = y.params.centeredSlides; if (l) { const a = n[0] / 2 - y.params.slidesOffsetBefore || 0; e.transform(`translateX(calc(50% - ${a}px))`); } for (let i = 0; i < a.length; i += 1) { const n = a.eq(i), u = n[0].progress, m = Math.min( Math.max(n[0].progress, -r.limitProgress), r.limitProgress ); let e = m; l || (e = Math.min( Math.max(n[0].originalProgress, -r.limitProgress), r.limitProgress )); const f = n[0].swiperSlideOffset, v = [y.params.cssMode ? -f - y.translate : -f, 0, 0], g = [0, 0, 0]; let t = !1, s = (y.isHorizontal() || ((v[1] = v[0]), (v[0] = 0)), { translate: [0, 0, 0], rotate: [0, 0, 0], scale: 1, opacity: 1, }); m < 0 ? ((s = r.next), (t = !0)) : 0 < m && ((s = r.prev), (t = !0)), v.forEach((e, t) => { v[t] = `calc(${e}px + (${ ((e = s.translate[t]), "string" == typeof e ? e : e + "px") } * ${Math.abs(m * o)}))`; }), g.forEach((e, t) => { g[t] = s.rotate[t] * Math.abs(m * o); }), (n[0].style.zIndex = -Math.abs(Math.round(u)) + a.length); var d = v.join(", "), c = `rotateX(${g[0]}deg) rotateY(${g[1]}deg) rotateZ(${g[2]}deg)`, h = e < 0 ? `scale(${1 + (1 - s.scale) * e * o})` : `scale(${1 - (1 - s.scale) * e * o})`, p = e < 0 ? 1 + (1 - s.opacity) * e * o : 1 - (1 - s.opacity) * e * o, d = `translate3d(${d}) ${c} ` + h; if ((t && s.shadow) || !t) { let e = n.children(".swiper-slide-shadow"); if ((e = 0 === e.length && s.shadow ? $(r, n) : e).length) { const y = r.shadowPerProgress ? m * (1 / r.limitProgress) : m; e[0].style.opacity = Math.min( Math.max(Math.abs(y), 0), 1 ); } } const w = O(r, n); w.transform(d).css({ opacity: p }), s.origin && w.css("transform-origin", s.origin); } }, setTransition: (e) => { var t = y.params.creativeEffect["transformEl"]; (t ? y.slides.find(t) : y.slides) .transition(e) .find(".swiper-slide-shadow") .transition(e), z({ swiper: y, duration: e, transformEl: t, allSlides: !0 }); }, perspective: () => y.params.creativeEffect.perspective, overwriteParams: () => ({ watchSlidesProgress: !0, virtualTranslate: !y.params.cssMode, }), }); }, function (e) { let { swiper: y, extendParams: t, on: s } = e; t({ cardsEffect: { slideShadows: !0, transformEl: null, rotate: !0, perSlideRotate: 2, perSlideOffset: 8, }, }), M({ effect: "cards", swiper: y, on: s, setTranslate: () => { const { slides: o, activeIndex: l } = y, d = y.params.cardsEffect, { startTranslate: c, isTouched: h } = y.touchEventsData, p = y.translate; for (let r = 0; r < o.length; r += 1) { const v = o.eq(r), g = v[0].progress, w = Math.min(Math.max(g, -4), 4); let e = v[0].swiperSlideOffset, t = (y.params.centeredSlides && !y.params.cssMode && y.$wrapperEl.transform( `translateX(${y.minTranslate()}px)` ), y.params.centeredSlides && y.params.cssMode && (e -= o[0].swiperSlideOffset), y.params.cssMode ? -e - y.translate : -e), s = 0; var u = -100 * Math.abs(w); let i = 1, a = -d.perSlideRotate * w, n = d.perSlideOffset - 0.75 * Math.abs(w); var m = y.virtual && y.params.virtual.enabled ? y.virtual.from + r : r, f = (m === l || m === l - 1) && 0 < w && w < 1 && (h || y.params.cssMode) && p < c, m = (m === l || m === l + 1) && w < 0 && -1 < w && (h || y.params.cssMode) && c < p; if (f || m) { const o = (1 - Math.abs((Math.abs(w) - 0.5) / 0.5)) ** 0.5; (a += -28 * w * o), (i += -0.5 * o), (n += 96 * o), (s = -25 * o * Math.abs(w) + "%"); } if ( ((t = w < 0 ? `calc(${t}px + (${n * Math.abs(w)}%))` : 0 < w ? `calc(${t}px + (-${n * Math.abs(w)}%))` : t + "px"), !y.isHorizontal()) ) { const o = s; (s = t), (t = o); } (f = w < 0 ? "" + (1 + (1 - i) * w) : "" + (1 - (1 - i) * w)), (m = ` translate3d(${t}, ${s}, ${u}px) rotateZ(${d.rotate ? a : 0}deg) scale(${f}) `); if (d.slideShadows) { let e = v.find(".swiper-slide-shadow"); (e = 0 === e.length ? $(d, v) : e).length && (e[0].style.opacity = Math.min( Math.max((Math.abs(w) - 0.5) / 0.5, 0), 1 )); } (v[0].style.zIndex = -Math.abs(Math.round(g)) + o.length), O(d, v).transform(m); } }, setTransition: (e) => { var t = y.params.cardsEffect["transformEl"]; (t ? y.slides.find(t) : y.slides) .transition(e) .find(".swiper-slide-shadow") .transition(e), z({ swiper: y, duration: e, transformEl: t }); }, perspective: () => !0, overwriteParams: () => ({ watchSlidesProgress: !0, virtualTranslate: !y.params.cssMode, }), }); }, ]), C ); }); var ANIUTIL = (function () { function t(e) { function t(e) { (this.opts = e), (this.resizeTiming = e.resizeTiming || 100), this.setElement(), this.setVideoStyle(), this.bindEvent(); } var s = t.prototype; (s.setElement = function () { void 0 !== this.opts.wrapElement && (this.wrapElement = this.opts.wrapElement.jquery ? this.opts.wrapElement[0] : this.opts.wrapElement), void 0 !== this.opts.targetVideo && (this.targetVideo = this.opts.targetVideo.jquery ? this.opts.targetVideo[0] : this.opts.targetVideo); }), (s.setVideoStyle = function () { (this.wrapElement.style.overflow = "hidden"), (this.targetVideo.style.position = "absolute"), (this.targetVideo.style.top = "50%"), (this.targetVideo.style.left = "50%"), (this.targetVideo.style.transform = "translate(-50%, -50%)"); }), (s.bindEvent = function () { var e = this; window.addEventListener("load", function () { e.setVideoSize(); }), window.addEventListener("resize", function () { e.setVideoSize(); }); }), (s.getVideoInfo = function () { (this.wrapWidth = this.wrapElement.clientWidth), (this.wrapHeight = this.wrapElement.clientHeight), (this.videoWidth = this.targetVideo.clientWidth), (this.videoHeight = this.targetVideo.clientHeight), (this.wrapRatio = this.wrapHeight / this.wrapWidth), (this.videoRatio = this.videoHeight / this.videoWidth); }), (s.setVideoSize = function () { var e = this; clearTimeout(null), setTimeout(function () { e.getVideoInfo(), e.wrapRatio < e.videoRatio ? ((e.targetVideo.style.width = "100%"), (e.targetVideo.style.height = "auto")) : ((e.targetVideo.style.width = "auto"), (e.targetVideo.style.height = "100%")); }, this.resizeTiming); }), new t(e); } function s(e) { var t, s, i = null, a = null, n = e ? e + 200 : 200, r = function () { null == i ? ((s = document.scrollingElement || document.documentElement || document.body.parentNode || document.body), (t = document.body.clientHeight), (s = window.pageYOffset + s.clientHeight), (i = s / t)) : (t = document.body.clientHeight); }, o = function () { clearTimeout(a), (a = setTimeout(function () { window.scrollTo(0, t * i - window.innerHeight), (i = null); }, n)); }; window.addEventListener("resize", function () { r(), o(); }); } function i() { return ( !( -1 < navigator.userAgent.indexOf("Windows") || -1 < navigator.userAgent.indexOf("Macintosh") ) && (!!( "ontouchstart" in window || (window.DocumentTouch && document instanceof window.DocumentTouch) ) || void 0) ); } return { calRange: function (e) { return ( 0 < (e = { targetValue: (e = e).targetValue, progress: e.progress, startPoint: e.startPoint || 0, endPoint: e.endPoint || 100, }).startPoint && (e.endPoint = 0 < e.endPoint - e.startPoint ? e.endPoint - e.startPoint : e.endPoint), (t = (t = (t = (e.targetValue * (e.progress - e.startPoint)) / e.endPoint) > e.targetValue ? e.targetValue : t) < 0 ? 0 : t) ); var t; }, videoObjectFit: function (e) { t(e); }, addClass: function (e) { for (var t = e, s = t.classList.length, i = 0; i < s; i++) t.targetElement.classList.add(t.classList[i]); }, removeClass: function (e) { for (var t = e, s = t.classList.length, i = 0; i < s; i++) t.targetElement.classList.remove(t.classList[i]); }, scrollController: function (e) { var s, i = (i = e) || {}, t = navigator.userAgent.toLowerCase(), a = document.scrollingElement || document.documentElement || document.body.parentNode || document.body, n = i.speed || 120, r = 0 <= i.duration ? i.duration : 1, o = a.scrollTop, l = a === document.body && document.documentElement ? document.documentElement : a, d = !1, c = null, e = function () { ("Netscape" == navigator.appName && -1 != navigator.userAgent.search("Trident")) || -1 != t.indexOf("msie") ? document.addEventListener( "mousewheel", function (e) { "hidden" != document.documentElement.style.overflow && p.scrollEvent(e); }, { passive: !1 } ) : document.addEventListener( "wheel", function (e) { p.hasScrollBox(e.target) || p.scrollEvent(e); }, { passive: !1 } ); }, h = function () { window.addEventListener("scroll", function () { "hidden" == document.documentElement.style.overflow || d || (o = a.scrollTop); }); }, p = { scrollEvent: function (e) { e.preventDefault(); var t = document.body.getAttribute("data-scroll-speed"), e = this.normalizeWheelDelta(e), t = i.currDelta && t ? t : t || n ? n : 120; (o += -e * t), (s = Math.max( 0, Math.min(o, a.scrollHeight - l.clientHeight) )), this.update(); }, normalizeWheelDelta: function (e) { return e.detail ? e.wheelDelta ? (e.wheelDelta / e.detail / 40) * (0 < e.detail ? 1 : -1) : -e.detail / 3 : e.wheelDelta / 120; }, update: function () { var e = s - a.scrollTop, e = Math.ceil(a.scrollTop + e) <= 0 ? 0 : s < o ? s : Math.ceil(a.scrollTop + e); (d = !0), TweenMax.to(a, r, { ease: "power1.out", scrollTop: e, onComplete: function () { clearTimeout(c), (c = null), (c = setTimeout(function () { (d = !1), (o = a.scrollTop); }, 500)); }, }), o <= 0 ? (o = 0) : s <= o && (o = s); }, hasScrollBox: function (e) { for (; e && e !== document.body && e !== document; ) { var t = window.getComputedStyle(e).overflow; if (t && (-1 < t.indexOf("auto") || -1 < t.indexOf("scroll"))) return !0; e = e.parentNode; } return !1; }, }; window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame, (-1 == t.indexOf("chrome") && -1 != t.indexOf("safari")) || (e(), h()); }, resizeScrollOffset: function (e) { s(e); }, checkTouchDevice: i, checkFold: function () { var e, t = screen.width / screen.height, s = i() && 0.7137 < t && t < 0.8 && "width=768" == document.getElementsByName("viewport")[0].content, t = i() && 0.8 < t && t < 0.95 && "width=768" == document.getElementsByName("viewport")[0].content; return s ? (e = "isFold") : t && (e = "isFoldLatest"), e; }, deviceConsole: function (e, t) { var s, i; document.querySelector(".console-layer") || ((s = document.createElement("div")).classList.add("console-layer"), s.setAttribute( "style", "position: fixed; left: 0; top: 0; padding: 20px; z-index:1000000000; background: #fff;" ), document.querySelector("body").append(s)), "multi" == t ? ((s = document.querySelector(".console-layer")), (i = document.createElement("div")).classList.add( "console-value" ), i.setAttribute( "style", "border: 1px #ddd solid; float: left; padding: 10px;" ), s.append(i)) : (i = (document.querySelector(".console-value") || ((i = document.createElement("div")).classList.add( "console-value" ), i.setAttribute( "style", "border: 1px #ddd solid; float: left; padding: 10px;" ), s.append(i)), document.querySelector(".console-value"))), (i.innerHTML = e); }, percentToPixel: function (e) { return e.targetValue * (e.progress / 100); }, responsiveHandler: function (i) { var a, e, n, r, t = (window.resolutionStatus = null), i = (window.innerWidth, { resolution: i.resolution, statusName: i.statusName || [], callback: i.callback || [], activeTiming: i.activeTiming || 100, }), s = function () { r = window.innerWidth; for (var e = 0; e < i.resolution.length; e++) { var t = i.resolution[e], s = i.resolution[e + 1] || 0; (r <= t && s < r && a != i.statusName[e]) || (r <= t && s < r && n != e) ? (document.documentElement.classList.remove(a), (a = i.statusName[e] || e), (n = e), document.documentElement.classList.add(a)) : ((r >= i.resolution[0] && a != i.statusName[0]) || (r >= i.resolution[0] && !n)) && (document.documentElement.classList.remove(a), (a = i.statusName[0] || e), (n = e), document.documentElement.classList.add(a)); } }, o = function () { clearTimeout(t), console.log(i.activeTiming), e != n && i.callback[n] && (t = setTimeout(function () { i.callback[n](), (t = null), (e = n); }, i.activeTiming)); }; return (function () { return ( window.addEventListener("DOMContentLoaded", function () { s(), (e = n); }), window.addEventListener("resize", function () { s(), o(); }), this ); })(); }, }; })(); window.ODDYSSEY = window.ODDYSSEY || {}; const UTILS = (function () { return { isIosDevice: ((i = /iPad|iPhone|iPod/.test(navigator.userAgent)) ? document.documentElement.classList.add("isIosDevice") : document.documentElement.classList.add("isNotIosDevice"), i), checkGlobal: void (0 === location.pathname.indexOf("/global/galaxy") || !0 === window.IS_CAMPAIGN ? document.documentElement.classList.add("global") : document.documentElement.classList.add("dotcom")), checkOS: ((i = (i = navigator.appVersion.match(/(mac|win|linux)/i)) ? i[1].toLowerCase() : ""), void document.documentElement.classList.add(i)), isFireFox: void ( /firefox/i.test(navigator.userAgent) && document.documentElement.classList.add("firefox") ), isWebkit: void ( /applewebkit/i.test(navigator.userAgent) && document.documentElement.classList.add("webkit") ), isChrome: void ( /chrome/i.test(navigator.userAgent) && document.documentElement.classList.add("chrome") ), isOpera: void ( /opera/i.test(navigator.userAgent) && document.documentElement.classList.add("opera") ), isIos: void ( /ip(ad|hone|od)/i.test(navigator.userAgent) && document.documentElement.classList.add("ios") ), isCrIos: void ( /crios/i.test(navigator.userAgent) && document.documentElement.classList.add("crios") ), isAndroid: void ( /android/i.test(navigator.userAgent) && document.documentElement.classList.add("android") ), isSafari: ((i = /applewebkit/i.test(navigator.userAgent)), (s = /chrome/i.test(navigator.userAgent)), void (i && !s && document.documentElement.classList.add("safari"))), isHuawei: void ( /HUAWEICLT/i.test(navigator.userAgent) && document.documentElement.classList.add("huawei") ), isUCBrowser: void ( /UCBrowser/i.test(navigator.userAgent) && document.documentElement.classList.add("ucbrowser") ), winSize: ((i = "Netscape" === navigator.appName), (s = -1 !== navigator.appVersion.indexOf("Mac")), (e = -1 !== navigator.userAgent.indexOf("Safari")), (t = -1 !== navigator.userAgent.indexOf("Chrome")), i && !s && e && !t ? function () { return { w: $(win).width(), h: $(win).height() }; } : function () { return { w: window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth, h: window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight, }; }), requestAFrame: window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function (e) { return window.setTimeout(e, 1e3 / 60); }, cancelAFrame: window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.webkitCancelRequestAnimationFrame || window.mozCancelAnimationFrame || window.oCancelAnimationFrame || window.msCancelAnimationFrame || function (e) { window.clearTimeout(e); }, isInVerticalViewPort: function (e) { e = e.getBoundingClientRect(); return e.top - 200 <= UTILS.getViewPort().height && 0 <= e.bottom; }, isInHorizontalViewPort: function (e) { e = e.getBoundingClientRect(); return ( e.left - 200 <= UTILS.getViewPort().width && 0 <= e.right + 200 ); }, isInViewPort(e) { return ( UTILS.isInVerticalViewPort(e) && UTILS.isInHorizontalViewPort(e) ); }, isVisible(e) { return ( UTILS.isInViewPort(e) && !!(e.offsetWidth || e.offsetHeight || e.getClientRects().length) ); }, isObject: function (e) { return ( "object" == typeof e && null !== e && e.constructor && e.constructor === Object ); }, def: function () { for (var e = [], t = arguments.length; t--; ) e[t] = arguments[t]; for (var s = Object(e[0]), i = 1; i < e.length; i += 1) { var a = e[i]; if (null != a) for ( var n = Object.keys(Object(a)), r = 0, o = n.length; r < o; r += 1 ) { var l = n[r], d = Object.getOwnPropertyDescriptor(a, l); void 0 !== d && d.enumerable && (this.isObject(s[l]) && this.isObject(a[l]) ? this.def(s[l], a[l]) : !this.isObject(s[l]) && this.isObject(a[l]) ? ((s[l] = {}), this.def(s[l], a[l])) : (s[l] = a[l])); } } return s; }, convertArray: function (e) { return Array.prototype.slice.call(e); }, getOffset: function (e) { return { top: e.getBoundingClientRect().top + window.pageYOffset, bottom: e.getBoundingClientRect().bottom + window.pageYOffset, }; }, getScroll: function () { var e = window.pageYOffset; return { top: e, bottom: e + window.innerHeight }; }, getViewPort: function () { var e = window, t = "inner"; return ( "innerWidth" in window || ((t = "client"), (e = document.documentElement || document.body)), { width: e[t + "Width"], height: e[t + "Height"] } ); }, getCurrentDevice: function () { var e = UTILS.getViewPort().width; return 1024 <= e ? "desktop" : e < 1024 && 768 <= e ? "tablet" : "mobile"; }, isVerticalVisible: function (e) { return ( UTILS.isInVerticalViewPort(e) && !!(e.offsetWidth || e.offsetHeight || e.getClientRects().length) ); }, isHorizontalVisible: function (e) { return ( UTILS.isInHorizontalViewPort(e) && !!(e.offsetWidth || e.offsetHeight || e.getClientRects().length) ); }, setCookie: function (e, t, s) { var i = new Date(); i.setTime(i.getTime() + 60 * s * 60 * 24 * 1e3), (document.cookie = e + "=" + t + "; exprires=" + i.toUTCString() + "; path=/"); }, getCookie: function (e) { e = document.cookie.match("(^|;) ?" + e + "=([^;]*)(;|$)"); return e ? e[2] : null; }, triggerEvent: function (e, t, s, i, a) { var n, s = s || null, i = i || !1, a = a || !0; null == s ? (n = document.createEvent("HTMLEvents")).initEvent(t, i, a) : (n = document.createEvent("CustomEvent")).initCustomEvent( t, i, a, s ), e.dispatchEvent(n); }, visibleScroll: function () { document.documentElement.classList.contains("isTouchDevice") || (!0 === this.scrollFlag && ((this.scrollFlag = !1), (document.body.style.position = ""), (document.body.style.width = ""), (document.body.style.top = ""), (document.body.style.boxSizing = ""), (document.body.style.paddingRight = ""), (document.documentElement.style.overflow = ""), null !== this.popupEl && ((this.popupEl.style.paddingRight = ""), (this.popupEl = null)), window.scrollTo(0, this.currentPos))); }, hiddenScroll: function (e) { var t; document.documentElement.classList.contains("isTouchDevice") || ((this.popupEl = e || null), (this.scrollFlag = !0), (this.currentPos = window.pageYOffset || document.documentElement.scrollTop), (e = window.innerWidth - document.documentElement.clientWidth), (t = 0 < this.currentPos ? "-" + this.currentPos + "px" : 0), (document.body.style.position = "fixed"), (document.body.style.width = "100%"), (document.body.style.top = t), (document.body.style.boxSizing = "border-box"), (document.body.style.paddingRight = e + "px"), (document.documentElement.style.overflow = "hidden"), null !== this.popupEl && (this.popupEl.style.paddingRight = e + "px")); }, closest: function (e, t) { do { if (e == document.documentElement) return null; if (e.matches ? e.matches(t) : e.msMatchesSelector(t)) return e; } while ( null !== (e = e.parentElement || e.parentNode) || 1 === e.nodeType ); return null; }, onPopupAccessibility: function (e) { e.setAttribute("aria-hidden", !0), e.setAttribute("tabindex", -1); for ( var t = e.querySelectorAll("a, button, input, select, iframe"), s = 0; s < t.length; s++ ) { var i = t[s].getAttribute("aria-hidden"), a = t[s].getAttribute("tabindex"); null != i && null == t[s].getAttribute("data-prev-aria-hidden") && t[s].setAttribute("data-prev-aria-hidden", i), null != a && null == t[s].getAttribute("data-prev-tabindex") && t[s].setAttribute("data-prev-tabindex", a), t[s].setAttribute("tabindex", -1), t[s].setAttribute("aria-hidden", !0); } }, offPopupAccessibility: function (e) { e.removeAttribute("aria-hidden"), e.removeAttribute("tabindex"); for ( var t = e.querySelectorAll("a, button, input, select, iframe"), s = 0; s < t.length; s++ ) { var i = t[s].getAttribute("data-prev-aria-hidden"), a = t[s].getAttribute("data-prev-tabindex"); null != i ? t[s].setAttribute("aria-hidden", i) : t[s].removeAttribute("aria-hidden"), null != a ? t[s].setAttribute("tabindex", a) : t[s].removeAttribute("tabindex"), t[s].removeAttribute("data-prev-aria-hidden"), t[s].removeAttribute("data-prev-tabindex"); } }, onAccessibility: function (e) { if ( !document.documentElement.classList.contains( "is-layer-popup-opened" ) ) { e.setAttribute("aria-hidden", !0), e.setAttribute("tabindex", -1); for ( var t = e.querySelectorAll("a, button, input, select, iframe"), s = 0; s < t.length; s++ ) t[s].setAttribute("tabindex", -1), t[s].setAttribute("aria-hidden", !0); } }, offAccessibility: function (e) { if ( !document.documentElement.classList.contains( "is-layer-popup-opened" ) ) { e.removeAttribute("aria-hidden"), e.removeAttribute("tabindex"); for ( var t = e.querySelectorAll("a, button, input, select, iframe"), s = 0; s < t.length; s++ ) t[s].removeAttribute("tabindex"), t[s].removeAttribute("aria-hidden"); } }, extend: function (t, s) { return ( Object.keys(s).forEach(function (e) { t[e] = s[e]; }), t ); }, getHeight: function (e) { var t, s, i; return e ? ((t = (s = window.getComputedStyle(e)).display), (s = parseInt(s.maxHeight)), (i = 0), "none" != t && 0 != s ? e.offsetHeight : ((e.style.position = "absolute"), (e.style.visibility = "hidden"), (e.style.display = "block"), (i = e.offsetHeight), (e.style.display = ""), (e.style.position = ""), (e.style.visibility = ""), i)) : 0; }, setLastActiveItem: function (e) { this.lastActiveItem = e || null; }, getLastActiveItem: function () { return null != this.lastActiveItem ? this.lastActiveItem : null; }, isRTL: function () { return document.documentElement.classList.contains("rtl"); }, checkRegion: function () { for ( var e = document.getElementsByTagName("meta"), t = "", s = 0; s < e.length; s++ ) if ("sitecode" == e[s].getAttribute("name")) return (t = e[s].getAttribute("content")); if ("" == t) return -1 < document.location.pathname.indexOf("global") ? "global" : "jp"; }, isLowNetwork: function () { var e = "global" == UTILS.checkRegion() || "jp" == UTILS.checkRegion() ? "___GALAXY_SPEED" : "__COM_SPEED"; return null == UTILS.getCookie(e) || null == UTILS.getCookie(e) ? null : "L" == UTILS.getCookie(e) || ("H" != UTILS.getCookie(e) && void 0); }, getQueryString: function (e) { var t = (i = location.href).indexOf("?") + 1, s = -1 < i.indexOf("#") ? i.indexOf("#") + 1 : i.length; if (0 == t) return ""; for ( var i = (i = i.substring(t, s)).split("&"), a = "", n = 0; n < i.length; n++ ) { var r = i[n].split("="); if (2 != r.length) break; r[0] == e && (a = r[1]); break; } return a; }, customParallax: function (e) { var t = e.mode || "center", s = e.delay || 0, i = e.ease || "Power0.easeNone", a = e.transZ || 0, n = e.duration || 0.3, r = e.distance || 0, o = e.correction || 0, l = e.windowCorrection ? window.innerHeight * e.windowCorrection : 0, d = e.direction || 1, c = e.activeElement, h = e.targetElement || c, p = e.wrapperElement || c, e = e.unit || "px", u = window.pageYOffset, m = window.pageYOffset + window.innerHeight, c = c.getBoundingClientRect(), f = u + p.getBoundingClientRect().top, p = f + p.getBoundingClientRect().height, v = window.innerHeight + c.height + 2 * l, g = "center" == t ? c.top - (window.innerHeight - c.height) / 2 : c.top - window.innerHeight; "px" == e && (r = (c.height * r) / 100), f <= m + l && u - l <= p && TweenMax.to(h, n, { y: o + ((g * ("center" == t ? 2 * r : r)) / v) * d + e, z: a, ease: i, delay: s, }); }, getNavHeight: function () { var e, t, s = 0, i = document.querySelector(".pd-g-header-navigation") || document.querySelector("#subnav") || document.querySelector(".sticky-menu") || document.querySelector(".pd-g-floating-nav"); return (s = i ? i.classList.contains("pd-g-header-navigation") ? ((t = (e = i.querySelector( ".pd-header-navigation" )).querySelector(".pd-header-navigation__menu-wrap")), e.clientHeight + t.clientHeight) : i.clientHeight : s); }, isBrokenFixed: function () { var e = window.innerWidth, t = window.innerHeight, s = !1; return ( document.documentElement.classList.remove("is-broken-fixed"), (1440 <= e && t <= 540) || (e <= 810 && t / e < 0.5277) || e / window.outerWidth < 0.4 || t < UTILS.MIN_VIEW_HEIGHT ? (document.documentElement.classList.add("is-broken-fixed"), (s = !0)) : document.documentElement.classList.remove("is-broken-fixed"), s ); }, isFullAnimationBrokenFixed: () => { var e = window.innerWidth, t = window.innerHeight, s = !!UTILS.isTouchDevice && window.matchMedia("(orientation: landscape)").matches; let i = !1; return ( (!!UTILS.isTouchDevice && !window.matchMedia("(orientation: landscape)").matches && t / e < 1.5) || s || t < 700 ? (document.documentElement.classList.add( "is-animation-broken-fixed" ), (i = !0)) : document.documentElement.classList.remove( "is-animation-broken-fixed" ), i ); }, isTouchDevice: ((i = "ontouchstart" in window || (window.DocumentTouch && document instanceof window.DocumentTouch)) ? document.documentElement.classList.add("isTouchDevice") : document.documentElement.classList.add("isNotTouchDevice"), i), isIEorEdge: (function () { var e, t = navigator.userAgent.toLowerCase(); if ("Microsoft Internet Explorer" == navigator.appName) e = "msie "; else if (-1 < t.search("trident")) e = "trident/.*rv:"; else { if (!(-1 < t.search("edge/"))) return -1; e = "edge/"; } return null != new RegExp(e + "([0-9]{1,})(\\.{0,}[0-9]{0,1})").exec(t) ? (document.documentElement.classList.add("isIEorEdge"), parseFloat(RegExp.$1 + RegExp.$2)) : -1; })(), page: { scrollLock: { className: "is-no-scroll", barWidth: function () { return window.innerWidth - document.documentElement.clientWidth; }, el: $("html"), run: function (e) { document.documentElement.style.paddingRight = e + "px"; }, off: function () { this.barWidth(); this.el.removeClass(this.className), this.el.removeClass("hive-layer-scroll-lock"), this.run(0); }, on: function () { var e = this.barWidth(); this.el.addClass(this.className), this.run(e); }, }, }, MIN_VIEW_HEIGHT: 400, RESPONSIVE: { PC: { NAME: "pc", WIDTH: 1440 }, TABLET: { NAME: "tablet", WIDTH: 1024 }, MOBILE: { NAME: "mobile", WIDTH: 767 }, }, }; var e, t, s, i; })(); ODDYSSEY.UTILS = UTILS; var SCROLLER = (function () { function t(e) { (this.initialize = !0), (this.opts = e), (this.correction = e.correction || 0), (this.removeCorrection = e.removeCorrection || 0), (this.trackHeight = e.trackHeight || 0), (this.activeClass = e.activeClass), (this.activeCallbackClass = e.activeCallbackClass || "callback-active"), (this.useStrictMode = null == e.useStrictMode || e.useStrictMode), (this.useFixed = e.useFixed || !1), (this.useFixedStyle = null == e.useFixedStyle || e.useFixedStyle), (this.useSticky = e.useSticky || !1), (this.useStickyStyle = null == e.useStickyStyle || e.useStickyStyle), (this.useViewportOver = e.useViewportOver || !0), (this.activeVisibility = e.activeVisibility || "before"), (this.activeType = e.activeType ? this.opts.activeType : "reverse"), (this.autoHeight = null == e.autoHeight || e.autoHeight), (this.offsetY = e.offsetY || 0), (this.resize = null == e.resize || e.resize), (this.resizeTiming = null != e.resizeTiming && e.resizeTiming), (this.windowHeight = window.innerHeight), (this.oldPregress = 0), (this.oldWinScrollTop = 0), (this.elementInformation = {}), (this.isFixedArea = !1), (this.checkTouchDevice = !1), this.elementEventList.setElement.call(this), this.bindEvent(); } var e = t.prototype; return ( (e.bindEvent = function () { var e = this, t = null; this.elementHandler(), this.resize && ((this.addEventList = function () { e.resizeTiming ? (clearTimeout(t), (t = setTimeout(function () { (e.windowHeight = window.innerHeight), e.elementHandler(); }, e.resizeTiming))) : ((e.windowHeight = window.innerHeight), e.elementHandler()); }), window.addEventListener("resize", this.addEventList)), this.opts.IEScroll && this.utilList.IEScrollHandler.call(this); }), (e.elementHandler = function () { return ( this.elementEventList.setTrackStyle.call(this), this.getFixedState(), 1 < this.trackHeight && this.elementEventList.setTrackHeigh.call(this), !this.useSticky && this.useFixed && this.useFixedStyle && this.elementEventList.setFixedStyle.call(this), this.useSticky && !this.useFixed && this.useStickyStyle && this.elementEventList.setStickyStyle.call(this), this ); }), (e.utilList = { checkTouchDevice: function () { return -1 < navigator.userAgent.indexOf("Windows") || -1 < navigator.userAgent.indexOf("Macintosh") ? (this.checkTouchDevice = !1) : "ontouchstart" in window || (window.DocumentTouch && document instanceof window.DocumentTouch) ? (this.checkTouchDevice = !0) : void 0; }, IEScrollHandler: function () { navigator.userAgent.match(/Trident\/7\./) && (this.body.addEventListener("mousewheel", function (e) { e.preventDefault(); var e = e.wheelDelta, t = window.pageYOffset; window.scrollTo(0, t - e); }), this.body.addEventListener("keydown", function (e) { var t = window.pageYOffset; switch (e.which) { case 38: e.preventDefault(), window.scrollTo(0, t - 40); break; case 40: e.preventDefault(), window.scrollTo(0, t + 40); break; default: return; } })); }, getScroll: function () { var e = window.pageYOffset; return { top: e, bottom: e + this.windowHeight }; }, getOffset: function (e) { return { top: e.getBoundingClientRect().top + window.pageYOffset, bottom: e.getBoundingClientRect().bottom + window.pageYOffset, }; }, getUserAgent: function () { return navigator.userAgent; }, }), (e.elementEventList = { setElement: function () { (this.body = document.querySelector("body")), void 0 !== this.opts.trackElement && (this.trackElement = this.opts.trackElement.jquery ? this.opts.trackElement[0] : this.opts.trackElement), void 0 !== this.opts.fixedElement && (this.fixedElement = this.opts.fixedElement.jquery ? this.opts.fixedElement[0] : this.opts.fixedElement), void 0 !== this.opts.activeElement && (this.activeElement = this.opts.activeElement.jquery ? this.opts.activeElement[0] : this.opts.activeElement); }, setTrackHeigh: function () { var e, t; this.trackHeight <= 1 || ((this.trackElement.style.height = ""), (e = 0 == this.trackElement.clientHeight), (t = this.windowHeight * this.trackHeight), e && (this.trackElement.style.height = this.windowHeight + "px"), (this.trackElement.style.height = t + "px")); }, setTrackStyle: function () { this.trackElement && this.useFixed && "static" == window.getComputedStyle(this.trackElement).position && (this.trackElement.style.position = "relative"); }, setFixedStyle: function () { this.isFixedArea || ((this.fixedElement.style.height = ""), (this.fixedElement.style.top = ""), (this.fixedElement.style.position = "absolute")), 0 == this.fixedElement.clientWidth && (this.fixedElement.style.width = "100%"), this.autoHeight && ("string" == typeof this.offsetY ? ((this.fixedElement.style.height = "calc(" + this.windowHeight + "px - " + this.offsetY + ")"), (this.fixedElement.style.top = this.offsetY)) : ((this.fixedElement.style.height = this.windowHeight - this.offsetY + "px"), (this.fixedElement.style.top = this.offsetY + "px"))); }, setStickyStyle: function () { this.isFixedArea || (this.fixedElement.style.position = "sticky"), 0 == this.fixedElement.clientWidth && (this.fixedElement.style.width = "100%"); }, setFixedElement: function () { (this.diffHeight = this.windowHeight - this.fixedElement.clientHeight), (this.trackTopOffset = this.utilList.getOffset.call( this, this.trackElement ).top), (this.trackBottomOffset = this.utilList.getOffset.call( this, this.trackElement ).bottom), this.winScrollTop <= this.trackTopOffset ? ((this.fixedElement.style.position = "absolute"), "string" == typeof this.offsetY ? (this.fixedElement.style.top = this.offsetY) : (this.fixedElement.style.top = this.offsetY + "px"), (this.fixedElement.style.bottom = "")) : this.winScrollBottom >= this.trackBottomOffset ? ((this.fixedElement.style.position = "absolute"), (this.fixedElement.style.top = this.trackElement.clientHeight - this.fixedElement.clientHeight + "px")) : this.isFixedArea || ((this.fixedElement.style.position = "fixed"), (this.fixedElement.style.top = "0")); }, }), (e.getWheelDirection = function () { this.winScrollTop >= this.oldWinScrollTop ? (this.wheelDirection = "down") : (this.wheelDirection = "up"), (this.oldWinScrollTop = this.winScrollTop); }), (e.getProgress = function () { var e = this.utilList.getOffset.call(this, this.trackElement).top - this.windowHeight * this.correction, t = this.useFixed || this.useSticky ? Math.abs(this.trackElement.clientHeight - this.windowHeight) : this.useViewportOver ? this.trackElement.clientHeight + this.windowHeight : this.trackElement.clientHeight, s = this.winScrollTop - e, e = this.winScrollBottom - e, s = this.useFixed || this.useSticky ? (s / t) * 100 : (e / t) * 100; return ( this.useStrictMode ? (this.progress = Math.floor(s) < 0 ? 0 : 100 < Math.floor(s) ? 100 : Math.floor(s)) : (this.progress = s), this.getWheelDirection(), this.progress ); }), (e.getFixedState = function () { 0 < this.progress && this.progress < 100 ? (this.isFixedArea = !0) : (this.isFixedArea = !1); }), (e.trackAnimation = function (e) { this.initialize && ((this.winScrollTop = this.utilList.getScroll.call(this).top - this.windowHeight * this.correction), (this.winScrollBottom = this.utilList.getScroll.call(this).bottom), this.useFixed && !this.useSticky && this.elementEventList.setFixedElement.call(this), this.getProgress(), this.getFixedState(), e && (this.oldPregress !== this.progress && e.call(this), (this.oldPregress = this.progress))); }), (e.activeAnimation = function () { if (this.initialize) { (this.winScrollTop = this.utilList.getScroll.call(this).top), (this.winScrollBottom = this.utilList.getScroll.call(this).bottom), (this.trackElementHeight = this.trackElement.clientHeight), (this.correctionValue = this.trackElementHeight * this.correction), (this.removeCorrectionValue = this.trackElementHeight * this.removeCorrection), (this.elementOffsetTop = this.utilList.getOffset.call( this, this.trackElement ).top), (this.elementOffsetBottom = this.utilList.getOffset.call( this, this.trackElement ).bottom), (this.downScrollTop = this.winScrollTop - this.correctionValue), (this.downScrollBottom = this.winScrollBottom - this.correctionValue), (this.upScrollTop = this.winScrollTop + this.correctionValue), (this.upScrollBottom = this.winScrollBottom + this.correctionValue); function e() { l(), r(); } function t() { d(), o(); } var s = this, i = this.activeVisibility, a = this.activeType, n = this.windowHeight / 2, r = function () { if (s.activeClass) if ("object" == typeof s.activeClass) for (var e = s.activeClass.length, t = 0; t < e; t++) s.activeElement.classList.contains(s.activeClass[t]) || s.activeElement.classList.add(s.activeClass[t]); else s.activeElement.classList.contains(s.activeClass) || s.activeElement.classList.add(s.activeClass); }, o = function () { if ("object" == typeof s.activeClass) for (var e = s.activeClass.length, t = 0; t < e; t++) s.activeElement.classList.contains(s.activeClass[t]) && s.activeElement.classList.remove(s.activeClass[t]); else s.activeElement.classList.contains(s.activeClass) && s.activeElement.classList.remove(s.activeClass); s.activeElement.classList.contains(s.activeCallbackClass) && s.activeElement.classList.remove(s.activeCallbackClass); }, l = function () { s.activeElement.classList.contains(s.activeCallbackClass) || (s.opts.activeCallback && (s.opts.activeCallback.call(s), s.activeElement.classList.add(s.activeCallbackClass))); }, d = function () { s.activeElement.classList.contains(s.activeCallbackClass) && s.opts.endCallback && s.opts.endCallback.call(s); }; switch ((this.getWheelDirection(), i)) { case "before": (("down" == this.wheelDirection && this.downScrollBottom >= this.elementOffsetTop && this.downScrollTop <= this.elementOffsetTop) || ("up" == this.wheelDirection && this.upScrollTop <= this.elementOffsetBottom && this.upScrollBottom >= this.elementOffsetBottom) || ("oneWay" == this.activeType && this.downScrollBottom >= this.elementOffsetTop)) && (e(), (this.activeStatus = !0)); break; case "visible": (("down" == this.wheelDirection && this.downScrollBottom >= this.elementOffsetTop + n && this.downScrollTop <= this.elementOffsetTop) || ("up" == this.wheelDirection && this.upScrollTop <= this.elementOffsetBottom - n && this.upScrollBottom >= this.elementOffsetBottom) || ("oneWay" == this.activeType && this.downScrollBottom >= this.elementOffsetTop + n)) && (e(), (this.activeStatus = !0)); } switch (a) { case "reverse": "visible" == i ? ((this.activeStatus && "down" == this.wheelDirection && this.winScrollTop > this.elementOffsetBottom) || (this.activeStatus && "up" == this.wheelDirection && this.winScrollBottom < this.elementOffsetTop)) && (t(), (this.activeStatus = !1)) : ((this.activeStatus && this.winScrollTop < this.elementOffsetTop && this.winScrollBottom < this.elementOffsetTop) || (this.activeStatus && this.winScrollTop > this.elementOffsetBottom && this.winScrollBottom > this.elementOffsetBottom)) && (t(), (this.activeStatus = !1)); break; case "oneWay": "visible" == i ? this.activeStatus && this.winScrollBottom < this.elementOffsetTop + n && (t(), (this.activeStatus = !1)) : this.activeStatus && this.winScrollTop < this.elementOffsetTop && this.winScrollBottom < this.elementOffsetTop && (t(), (this.activeStatus = !1)); } } }), (e.getElementInformation = function () { return ( this.trackElement && (this.elementInformation.trackElement = { element: this.trackElement, width: this.trackElement.clientWidth, height: this.trackElement.clientHeight, topOffset: this.utilList.getOffset.call(this, this.trackElement) .top, bottomOffset: this.utilList.getOffset.call( this, this.trackElement ).bottom, }), this.activeElement && (this.elementInformation.activeElement = { element: this.activeElement, width: this.activeElement.clientWidth, height: this.activeElement.clientHeight, topOffset: this.utilList.getOffset.call( this, this.activeElement ).top, bottomOffset: this.utilList.getOffset.call( this, this.activeElement ).bottom, }), this.elementInformation ); }), (e.destroy = function (e) { this.trackElement && ((this.trackElement.style.position = ""), (this.trackElement.style.height = "")), this.fixedElement && ((this.fixedElement.style.position = ""), (this.fixedElement.style.top = ""), (this.fixedElement.style.height = "")), (this.trackElement = ""), (this.fixedElement = ""), (this.activeElement = ""), (this.correction = ""), (this.trackHeight = ""), (this.activeCallbackClass = ""), (this.useFixed = ""), (this.activeVisibility = ""), (this.activeType = ""), (this.offsetY = ""), (this.resize = ""), (this.windowHeight = ""), (this.elementInformation = ""), window.removeEventListener("load", this.addEventList), window.removeEventListener("resize", this.addEventList), (this.initialize = !1); }), function (e) { return new t(e); } ); })(); !(function () { "use strict"; window.ODDYSSEY = window.ODDYSSEY || {}; const m = ODDYSSEY.UTILS; ODDYSSEY.ImageLoader = class { constructor(e = container, t) { t = { el: e, lazyClass: ".js-img-src", lazyCompleteClass: "load-complete", startLazyClass: t.startLazyClass || ".js-start-img-src", endLazyClass: t.endLazyClass || ".js-end-img-src", responsiveClass: t.responsiveClass || ".js-res-img", loadOption: t.loadOption, visiblePoint: t.visiblePoint || 0, useDefaultImg: t.useDefaultImg, resizeStart: null, }; (this.opts = t), (this.classes = t.classes), (this.el = document.querySelector(e)), this.init(); } init() { this.initOpts(), this.getLazyImage(), this.getResponsiveImage(), this.bindEvents(); } initOpts() { (this.targetAttr = this.opts.loadOption[0].attribute), (this.responsiveCheck = this.opts.loadOption), (this.dynamicCallCount = 0), (this.dynamicLoadedComplate = !1), this.opts.useDefaultImg && this.setDefaultImage(); } getLazyImage() { const e = Array.from(this.el.querySelectorAll(this.opts.lazyClass)); var t = Array.from( this.el.querySelectorAll(this.opts.startLazyClass) ), t = e.concat(t); (this.lazyImages = t), (this.lazyLength = t.length); } getResponsiveImage() { var e = this.el.querySelectorAll(this.opts.responsiveClass); (this.responsiveImages = e), (this.responsiveLength = e.length); } bindEvents() { window.addEventListener("load", this.onLoadHandler.bind(this)), window.addEventListener("scroll", this.lazyEvent.bind(this)), this.responsiveCheck && window.addEventListener( "resize", this.onResizeHandler.bind(this) ); } onLoadHandler() { this.responsiveHandler(), this.lazyEvent(); } onResizeHandler() { clearTimeout(this.opts.resizeStart), (this.opts.resizeStart = setTimeout(() => { this.responsiveHandler(), this.lazyEvent(); }, 80)); } lazyEvent() { this.setLazyImage(), this.lazyLength === this.lazyCompleteLength && window.removeEventListener("scroll", this.lazyEvent.bind(this)); } responsiveHandler() { this.windowWidth = window.innerWidth; var a = this.opts.loadOption.length; for (let i = 0; i < a; i++) { let e = i + 1, t = e == a ? 0 : this.opts.loadOption[e].resolution, s = !1; (s = (0 == i || this.windowWidth <= this.opts.loadOption[i].resolution) && this.windowWidth > t) && this.opts.loadOption[i].attribute !== this.oldAttr && ((this.targetAttr = this.opts.loadOption[i].attribute), (this.oldAttr = this.targetAttr), (this.attrIndex = i), (this.dynamicCallCount = 0), this.setResponsiveImage()); } } setResponsiveImage(s) { var e = this.opts.lazyClass.split("."), i = e[e.length - 1], e = this.opts.startLazyClass.split("."), a = e[e.length - 1]; if (s) for (let t = 0; t < s.length; t++) { var n = s[t]; let e = s[t].getAttribute(this.targetAttr); (e = e || this.findImageHandler(n)), s[t].classList.contains(this.opts.lazyCompleteClass) || (s[t].setAttribute("src", e), s[t].classList.add(this.opts.lazyCompleteClass), 1 == this.opts.startLazyClass.split(" ").length && s[t].classList.remove(a), 1 == this.opts.lazyClass.split(" ").length && s[t].classList.remove(i)); } else for (let s = 0; s < this.responsiveLength; s++) { let e = this.responsiveImages[s], t = e.getAttribute(this.targetAttr); (t = t || this.findImageHandler(e)), e.classList.contains(this.opts.lazyCompleteClass) && e.setAttribute("src", t); } } checkCompleteImage() { var e = this.el.querySelectorAll("." + this.opts.lazyCompleteClass); this.lazyCompleteLength = e.length; } setDefaultImage() { for (var e = 0; e < this.lazyLength; e++) this.lazyImages[e].setAttribute( "src", "data:image/gif;base64,R0lGODlhAQABAPAAAP///wAAACH/C1hNUCBEYXRhWE1QAz94cAAh+QQFAAAAACwAAAAAAQABAAACAkQBADs=" ); } setLazyImage() { this.windowHeight = window.innerHeight; for (let h = 0; h < this.lazyLength; h++) { let t = this.lazyImages[h], e = this.windowHeight * this.opts.visiblePoint, s = m.getScroll.call(this).top - e, i = m.getScroll.call(this).bottom + e, a = m.getOffset.call(this, t).top, n = m.getOffset.call(this, t).bottom, r = this.opts.lazyClass.split("."), o = r[r.length - 1], l = this.opts.startLazyClass.split("."), d = l[l.length - 1], c; var p, u; if ( ("none" === window.getComputedStyle(t).display ? null != (p = t.parentNode).offsetParent && ((c = p.offsetParent), (a = m.getOffset.call(this, p).top), (n = m.getOffset.call(this, p).bottom)) : (c = t.offsetParent), ((i > a && s <= a) || (s < n && i > n) || (s < a && i > n) || (s > a && i < n)) && null != c) ) { let e = t.getAttribute(this.targetAttr); (e = e || this.findImageHandler(t)), t.classList.contains(this.opts.lazyCompleteClass) || (t.setAttribute("src", e), (u = () => { 1 == this.opts.startLazyClass.split(" ").length && t.classList.remove(d), 1 == this.opts.lazyClass.split(" ").length && t.classList.remove(o), this.checkCompleteImage(), t.removeEventListener("load", u); }), t.addEventListener("load", u), t.classList.add(this.opts.lazyCompleteClass)); } } } findRemainingImageAttr(e) { for (var t = this.opts.loadOption.length, s = 0; s < t; s++) { var i = e.getAttribute(this.opts.loadOption[s].attribute); if (i) return i; } } findNextImageAttr(t) { for (let e = this.attrIndex; 0 <= e; e--) { var s = t.getAttribute(this.opts.loadOption[e].attribute); if (s) return s; if (0 == e && null == s) return this.findRemainingImageAttr(t); } } findImageHandler(e) { return 0 !== this.attrIndex ? this.findNextImageAttr(e) : this.findRemainingImageAttr(e); } }; })(), (function () { "use strict"; window.ODDYSSEY = window.ODDYSSEY || {}; const e = ODDYSSEY.UTILS, t = e.RESPONSIVE; ODDYSSEY.VideoLoader = class { constructor(e = container, t) { t = { el: e, lazyClass: t.lazyClass || ".js-video-src", responsiveClass: t.responsiveClass || ".js-res-video", imageLazyCompleteClass: "load-complete", imageEndLazyClass: t.imageEndLazyClass || ".js-end-img-src", notLoadElement: t.notLoadElement || [], loadOption: t.loadOption, visiblePoint: t.visiblePoint || 0, resizeStart: null, classes: { loaded: "loaded", ended: "ended" }, }; (this.opts = t), (this.classes = t.classes), (this.el = document.querySelector(e)), this.init(); } init() { this.initOpts(), this.getLazyVideo(), this.getResponsiveVideo(), this.bindEvents(); } initOpts() { this.getCurrentDevice(); var e = "mobile" !== this.currentDevice ? 0 : 1; (this.prevVideoSrc = ""), (this.targetAttr = this.opts.loadOption[e].attribute), (this.responsiveCheck = this.opts.loadOption), (this.videoCallStack = []); } getLazyVideo() { let e = Array.from( this.el.querySelectorAll(this.opts.lazyClass) ).filter((t) => { t.isVideoInit = !1; { let e = 0; if (e < this.opts.notLoadElement.length) return !t.closest(this.opts.notLoadElement[e]); } }); (e = e.filter((e) => { if (e.querySelector("video")) return e; })), (this.lazyVideos = e), (this.lazyLength = e.length); } getResponsiveVideo() { var e = Array.from( this.el.querySelectorAll(this.opts.responsiveClass) ).filter((t) => { { let e = 0; if (e < this.opts.notLoadElement.length) return !t.closest(this.opts.notLoadElement[e]); } }); (this.responsiveVideos = e), (this.responsiveLength = e.length); } bindEvents() { window.addEventListener("load", this.onLoadHandler.bind(this)), window.addEventListener("scroll", this.lazyEvent.bind(this)), this.responsiveCheck && window.addEventListener( "resize", this.onResizeHandler.bind(this) ); } getCurrentDevice() { (this.winWidth = e.winSize().w), this.winWidth >= t.TABLET.WIDTH ? (this.currentDevice = "desktop") : this.winWidth > t.MOBILE.WIDTH && this.winWidth < t.TABLET.WIDTH ? (this.currentDevice = "tablet") : (this.currentDevice = "mobile"), (this.prevDevice = this.currentDevice); } onLoadHandler() { this.getCurrentDevice(), this.responsiveHandler(), this.lazyEvent(); } onResizeHandler() { clearTimeout(this.opts.resizeStart), (this.opts.resizeStart = setTimeout(() => { this.getCurrentDevice(), this.responsiveHandler(), this.lazyEvent(); }, 80)); } lazyEvent() { this.setLazyVideo(), this.lazyLength === this.lazyCompleteLength && window.removeEventListener("scroll", this.lazyEvent.bind(this)); } responsiveHandler() { this.windowWidth = window.innerWidth; var a = this.opts.loadOption.length; for (let i = 0; i < a; i++) { let e = i + 1, t = e == a ? 0 : this.opts.loadOption[e].resolution, s = !1; (s = (0 == i || this.windowWidth <= this.opts.loadOption[i].resolution) && this.windowWidth > t) && this.opts.loadOption[i].attribute !== this.oldAttr && ((this.targetAttr = this.opts.loadOption[i].attribute), (this.oldAttr = this.targetAttr), (this.attrIndex = i), this.setResponsiveVideo()); } } setResponsiveVideo() { for (let e = 0; e < this.responsiveLength; e++) { const i = this.responsiveVideos[e], a = i.querySelector("video"); let s = i.getAttribute(this.targetAttr); (s = s.split(".mp4")[0]), i.classList.contains(this.classes.loaded) && i.isVideoInit && a.querySelectorAll("source").forEach((e) => { const t = e.getAttribute("type"); -1 < t.indexOf("webm") && (e.src = s + ".webm"), -1 < t.indexOf("mp4") && (e.src = s + ".mp4"), a.load(), a.addEventListener( "canplaythrough", () => { window.setTimeout(() => { i.classList.add(this.classes.loaded); }, 500), this.checkCompleteVideo(), this.getEndImage(i); }, { once: !0 } ); }); } } setLazyVideo() { for (let e = 0; e < this.lazyLength; e++) { var t = window.pageYOffset, s = t + window.innerHeight; const n = this.lazyVideos[e]; var i = n.getBoundingClientRect(), a = t + i.top, i = t + i.bottom; s > a - window.innerHeight * (0 != window.pageYOffset ? this.opts.visiblePoint : 0) && t < i + window.innerHeight * (0 != window.pageYOffset ? this.opts.visiblePoint : 0) && !n.isVideoInit && this.videoCallStack.indexOf(e) < 0 && (this.videoCallStack.push(e), this.setVideoSrc()); } } setVideoSrc() { var e = this.videoCallStack[0]; const t = this.lazyVideos[e], s = t.querySelector("video"); let i = t.getAttribute(this.targetAttr); i = i.split(".mp4")[0]; e = this.opts.lazyClass.split("."); const a = e[e.length - 1]; e = i; this.prevVideoSrc !== e && (s.querySelectorAll("source").forEach((e) => { const t = e.getAttribute("type"); -1 < t.indexOf("webm") && (e.src = i + ".webm"), -1 < t.indexOf("mp4") && (e.src = i + ".mp4"); }), s.load(), s.addEventListener( "canplaythrough", () => { window.setTimeout(() => { t.classList.add(this.classes.loaded); }, 500), 1 == this.opts.lazyClass.split(" ").length && t.classList.remove(a), this.checkCompleteVideo(), this.getEndImage(t), this.videoCallStack.splice(0, 1), 0 < this.videoCallStack.length && this.setVideoSrc(); }, { once: !0 } ), (t.isVideoInit = !0)), (this.prevVideoSrc = e); } getEndImage(e) { var t = "desktop" === this.currentDevice ? "data-src-pc" : "tablet" === this.currentDevice ? "data-src-tablet" : "data-src-mobile"; const s = e.querySelector(this.opts.imageEndLazyClass); e = this.opts.imageEndLazyClass.split("."); const i = e[e.length - 1]; s && !s.classList.contains(this.opts.imageLazyCompleteClass) && ((s.src = s.getAttribute(t)), s.addEventListener( "load", () => { 1 == this.opts.imageEndLazyClass.split(" ").length && s.classList.remove(i), s.classList.add(this.opts.imageLazyCompleteClass); }, { once: !0 } )); } checkCompleteVideo() { var e = Array.from( this.el.querySelectorAll("." + this.classes.loaded) ).filter((t) => { { let e = 0; if (e < this.opts.notLoadElement.length) return !t.closest(this.opts.notLoadElement[e]); } }); this.lazyCompleteLength = e.length; } }; })(), (function () { "use strict"; window.ODDYSSEY = window.ODDYSSEY || {}; const l = ODDYSSEY.UTILS, e = l.RESPONSIVE; ODDYSSEY.VideoPlayer = class { constructor(e, t) { e = { sectionElement: t.sectionElement, videoParentElement: null, videoElement: e, videoController: ".video__controller", hiddenElement: ".blind", endImage: ".video__end-frame img", videoLazyClass: ".js-video-src", lazyCompleteClass: "load-complete", imageEndLazyClass: ".js-end-img-src", visiblePoint: t.visiblePoint || 0, classes: { loaded: "loaded", ended: "ended", paused: "paused", playing: "playing", isPaused: "is-paused", }, resizeStart: null, on: { updateController: null, updatePlayState: null }, }; (this.opts = l.def(e, t || {})), (this.classes = e.classes), this.init(); } init() { this.setElements(), this.initOpts(), null !== this.video && (this.video.paused || this.video.pause(), (this.videoElement.playState = !1), this.updateController(), this.bindEvents()); } setElements() { (this.videoElement = this.opts.videoElement), (this.video = this.videoElement.querySelector("video")), null !== this.video && (null !== this.opts.videoParentElement ? (this.videoParentElement = this.video.closest( this.opts.videoParentElement )) : (this.videoParentElement = this.videoElement), (this.videoController = this.videoParentElement.querySelector( this.opts.videoController ))); } initOpts() { this.getCurrentDevice(), (this.autoPlay = !!this.videoElement.dataset.autoPlay && JSON.parse(this.videoElement.dataset.autoPlay)), (this.videoElement.playState = !1), (this.videoElement.autoPlayState = !1), (this.useController = !!this.videoController), (this.isReset = !1); } getCurrentDevice() { (this.winWidth = l.winSize().w), this.winWidth >= e.TABLET.WIDTH ? (this.currentDevice = "desktop") : this.winWidth > e.MOBILE.WIDTH && this.winWidth < e.TABLET.WIDTH ? (this.currentDevice = "tablet") : (this.currentDevice = "mobile"), (this.prevDevice = this.currentDevice); } getEndImage() { var e = "desktop" === this.currentDevice ? "data-src-pc" : "tablet" === this.currentDevice ? "data-src-tablet" : "data-src-mobile"; const t = this.videoElement.querySelector( this.opts.imageEndLazyClass ); var s = this.opts.imageEndLazyClass.split("."); const i = s[s.length - 1]; t && ((t.src = t.getAttribute(e)), t.addEventListener( "load", () => { 1 == this.opts.imageEndLazyClass.split(" ").length && t.classList.remove(i), t.classList.add(this.opts.lazyCompleteClass); }, { once: !0 } )); } bindEvents() { window.addEventListener("resize", this.onResizeHandler.bind(this)), window.addEventListener( "scroll", this.onScrollHandler.bind(this) ), this.video.addEventListener( "canplaythrough", this.onCanplayThrough.bind(this), { once: !0 } ), this.useController && this.videoController.addEventListener( "click", this.onClickController.bind(this) ); } onChange(e) { if (e === this.videoElement) { e = "mobile" !== this.currentDevice ? "data-src-pc" : "data-src-mobile"; let s = this.videoElement.getAttribute(e); e = s = s.split(".mp4")[0]; this.prevVideoSrc !== e && ((this.videoElement.playState = !1), this.video.querySelectorAll("source").forEach((e) => { const t = e.getAttribute("type"); -1 < t.indexOf("webm") && (e.src = s + ".webm"), -1 < t.indexOf("mp4") && (e.src = s + ".mp4"), this.video.load(); }), this.videoElement.classList.remove(this.classes.playing), this.videoElement.classList.remove(this.classes.paused), this.video.addEventListener( "canplaythrough", () => { l.isLowNetwork() || this.onPlay(), this.getEndImage(); }, { once: !0 } )), (this.prevVideoSrc = e); } } onLoad(e) { if (e === this.videoElement) { e = "mobile" !== this.currentDevice ? "data-src-pc" : "data-src-mobile"; let s = this.videoElement.getAttribute(e); (s = s.split(".mp4")[0]), (this.videoElement.playState = !1), this.video.querySelectorAll("source").forEach((e) => { const t = e.getAttribute("type"); -1 < t.indexOf("webm") && (e.src = s + ".webm"), -1 < t.indexOf("mp4") && (e.src = s + ".mp4"), this.video.load(); }), this.video.addEventListener( "canplaythrough", () => { l.isLowNetwork() || this.onPlay(), this.getEndImage(); }, { once: !0 } ); } } onPlay(e) { var t = () => { 0 < this.video.readyState && !this.videoElement.playState && (this.video.currentTime === this.video.duration && (this.video.currentTime = 0), this.autoPlay && (this.videoElement.autoPlayState = !0), (this.videoElement.playState = !0), this.videoElement.classList.contains(this.classes.paused) ? this.videoElement.classList.add(this.classes.playing) : window.setTimeout(() => { this.videoElement.classList.add(this.classes.playing); }, 350), this.videoElement.classList.remove(this.classes.ended), this.videoElement.classList.remove(this.classes.paused), window.setTimeout(() => { this.video.play(), (this.isReset = !1), this.updateController(), this.outCallback("updatePlayState", !0); }, 350), this.video.addEventListener( "ended", this.updatePlayEnded.bind(this), { once: !0 } )); }; (e && e !== this.videoElement) || t(); } onPause() { this.video.paused || this.video.pause(), (this.videoElement.playState = !1), this.videoElement.classList.remove(this.classes.ended), this.videoElement.classList.remove(this.classes.playing), this.videoElement.classList.add(this.classes.paused), this.updateController(); } onEnded() { 3 < this.video.readyState && (this.video.ended || this.video.pause(), (this.video.currentTime = this.video.duration), (this.videoElement.playState = !1), this.videoElement.classList.add(this.classes.ended), this.videoElement.classList.remove(this.classes.playing), this.videoElement.classList.remove(this.classes.paused), this.updateController()); } onReset(e) { var t = () => { this.video.pause(), (this.video.currentTime = 0), (this.videoElement.playState = !1), (this.isReset = !0), this.autoPlay && (this.videoElement.autoPlayState = !1), this.videoElement.classList.remove(this.classes.ended), this.videoElement.classList.remove(this.classes.playing), this.videoElement.classList.remove(this.classes.paused), this.updateController(); }; (e && e !== this.videoElement) || t(); } onCanplayThrough() { var e = this.opts.videoLazyClass.split("."), e = e[e.length - 1]; this.useController && window.setTimeout(() => { this.videoController.style.display = "block"; }, 500), this.videoElement.classList.add(this.classes.loaded), 1 == this.opts.videoLazyClass.split(" ").length && this.videoElement.classList.remove(e), (this.isCanplay = !0), this.onScrollHandler(), (this.isCanplay = !1); } onClickController(e) { e.preventDefault(), this.videoElement.playState ? this.onPause() : this.onPlay(); } updatePlayEnded() { this.onPause(); } updateController() { var e; this.useController && (this.videoElement.playState ? this.videoController.classList.add(this.classes.isPaused) : this.videoController.classList.remove(this.classes.isPaused), (e = { el: this.videoController, playState: this.videoElement.playState, }), this.outCallback("updateController", e)); } onScrollHandler() { if (!this.videoElement.closest(".cm-layer")) { var e = window.scrollY, t = (this.lastScrollY, l.getHeight(this.videoElement), l.winSize().h, l.getNavHeight()), s = l.getScroll().top, i = l.getScroll().bottom, a = l.getOffset(this.videoElement).top, t = l.getOffset(this.videoElement).bottom - t; const o = this.videoElement.classList.contains(this.classes.playing) && this.videoElement.playState; var n = this.videoElement.classList.contains(this.classes.paused) && !this.videoElement.playState, r = this.videoElement.classList.contains(this.classes.ended) && !this.videoElement.playState; if ( (a < i && s <= a) || (s < t && t < i) || (s < a && t < i) || (a < s && i < t) ) { const o = this.isCanplay || this.isReset; !o || !this.autoPlay || this.videoElement.playState || this.videoElement.autoPlayState || l.isLowNetwork() || this.onPlay(); } else ((this.autoPlay && this.videoElement.autoPlayState) || this.isReset) && (o || n || r) && this.onReset(); this.lastScrollY = e; } } onResponsiveChange() { window.setTimeout(() => { (this.isCanplay = !0), this.onReset(), this.onScrollHandler(), (this.isCanplay = !1); }, 20); } onResizeHandler() { l.winSize().w !== this.winWidth && ((this.winWidth = l.winSize().w), null == this.opts.resizeStart && ((this.opts.resizeStart = this.winWidth), this.resizeAnimateFunc()), window.clearTimeout(this.resizeEndTime), (this.resizeEndTime = window.setTimeout( this.resizeEndFunc.bind(this), 150 ))); } resizeAnimateFunc() { this.setLayout(), (this.resizeRequestFrame = l.requestAFrame.call( window, this.resizeAnimateFunc.bind(this) )); } resizeEndFunc() { (this.opts.resizeStart = null), l.cancelAFrame.call(window, this.resizeRequestFrame); } setLayout() { this.winWidth >= e.TABLET.WIDTH ? (this.currentDevice = "desktop") : this.winWidth > e.MOBILE.WIDTH && this.winWidth < e.TABLET.WIDTH ? (this.currentDevice = "tablet") : (this.currentDevice = "mobile"), this.currentDevice !== this.prevDevice && this.onResponsiveChange(), (this.prevDevice = this.currentDevice); } outCallback(e, t) { e = this.opts.on[e]; null != e && e(t); } }; })(), (function () { "use strict"; (e = !(r = {})), (t = null), (i = function () { a(), n(), UTILS.isLowNetwork() && document.documentElement.classList.add("low_network"), document.documentElement.classList.add("load"), window.removeEventListener("load", i); }), (a = function () { (e = 1024 <= window.innerWidth ? "desktop" : 768 <= window.innerWidth && window.innerWidth < 1024 ? "tablet" : "mobile"), clearTimeout(r.resizeTimeout), (r.resizeTimeout = setTimeout(function () { UTILS.isBrokenFixed(); }, 100)), e != t && (document.documentElement.classList.add(e), document.documentElement.classList.remove(t), (t = e)); }), (n = function () { for ( var e = window.pageYOffset, t = e + window.innerHeight, s = 0; s < r.allClickables.length; s++ ) { var i = r.allClickables[s], a = e + i.getBoundingClientRect().top, n = e + UTILS.getNavHeight(); n <= a && a <= t ? (i.isVisible = !0) : (a < n || t < a) && (i.isVisible = !1); } }), (o = function (e) { e.preventDefault(), e.stopPropagation(); var t = this, s = parseFloat(this.dataset.sup), i = document.querySelectorAll("#desc-section ol"), a = (i.forEach((e) => { "block" === window.getComputedStyle(e).display && (i = e); }), i.querySelectorAll("li")), n = i.querySelectorAll("li")[s - 1], r = n.querySelector("span"), o = r.innerHTML, l = ((r.innerHTML = '' + o + ""), e.currentTarget, function () { c.call(t), r.removeEventListener("focusin", l); }), d = function () { (r.innerHTML = o), r.removeAttribute("tabindex"), r.removeEventListener("focusout", d); }; e.currentTarget.closest(".cm-layer") && ((s = e.currentTarget.closest(".cm-layer")), $(s).trigger("closeLayer", !1)), r.addEventListener("focusin", l), r.addEventListener("focusout", d), n.querySelector("a").focus(), setTimeout(() => { n.querySelector("a").focus(); }, 0), a.forEach((e) => e.classList.remove("is-active")), n.classList.add("is-active"); }), (c = function (e) { var i; (!document.documentElement.classList.contains("ios") && e && null == e.relatedTarget) || ((i = this).isClicked || this.isVisible || s(this) || setTimeout(function () { var e = window.pageYOffset, t = i.getBoundingClientRect(), s = (window.innerHeight - UTILS.getNavHeight()) / 2, e = e - UTILS.getNavHeight() + t.top + t.height / 2; window.scrollTo(0, e - s); }, 10), (this.isClicked = !1)); }), (s = function (e) { var e = e.parentNode, t = e.getAttribute("id"); return ( "contents" != t && e != document.body && (!("subnav" != t && !e.classList.contains("sc-s22ultra-popup")) || s(e)) ); }), (l = function () { this.isClicked = !0; }); var r, e, t, i, a, n, o, c, s, l, d = { init: function () { (r.resizeTimeout = null), (r.supClicker = document.querySelectorAll("a.click_sup")), (r.contents = document.getElementById("contents") || document.getElementById("content")), (r.allClickables = r.contents.querySelectorAll( "a, button, input, select" )); var e = 0; for ( window.addEventListener("load", i), window.addEventListener("resize", a), window.addEventListener("scroll", n), e = 0; e < r.allClickables.length; e++ ) { var t = r.allClickables[e]; (t.isClicked = !1), (t.isVisible = !1), t.addEventListener("focusin", c), t.addEventListener("mousedown", l); } for (e = 0; e < r.supClicker.length; e++) r.supClicker[e].addEventListener("click", o); var s = document.documentElement.classList; "global" == UTILS.checkRegion() || s.contains("mac") || s.contains("safari") || ANIUTIL.scrollController({ speed: 120, duration: 0.5 }); }, reInitSup: function () { for (let e = 0; e < r.supClicker.length; e++) r.supClicker[e].removeEventListener("click", o); r.supClicker = document.querySelectorAll("a.click_sup"); for (let e = 0; e < r.supClicker.length; e++) r.supClicker[e].addEventListener("click", o); }, }; window.initialize = d; })(), (function () { "use strict"; window.ODDYSSEY = window.ODDYSSEY || {}; const n = ODDYSSEY.UTILS, e = n.RESPONSIVE; ODDYSSEY.HeightMatch = class { constructor(e = container, t) { var s = { container: e || ".heightmatch-wrap", childElement: ">li", notCompareElement: null, pushElement: null, matchElement: ".heightmatch-cont", column: 3, pushObjs: null, useDestroyHeight: !0, destroyType: !1, resizeStart: null, breakpoints: {}, matchBefore: null, matchAfter: null, loadAfter: null, }; (this.opts = n.def(s, t || {})), (this.classes = s.classes), (this.obj = $(document.querySelector(e))), this.init(); } init() { null !== this.obj && (this.setElements(), this.setOpts(), this.setRows(), this.buildHeightControl(), this.outCallback("loadAfter"), this.bindEvents()); } setElements() { (this.objChild = this.obj.find(this.opts.childElement)), (this.opts.pushObjs = null) == this.opts.pushElement ? (this.opts.pushObjs = this.objChild.not( this.opts.notCompareElement )) : (this.opts.pushObjs = this.objChild .not(this.opts.notCompareElement) .find(this.opts.pushElement)); } setOpts() { (this.currentDevice = !1), (this.prevDevice = null); var e, t, s = n.winSize().w, i = this.opts.breakpoints, a = []; for (t in i) e = s <= t ? (a.push(t), Math.min.apply(null, a)) : null; (this.breakOpts = n.def({}, this.opts)), null != e && (this.breakOpts = n.def(this.breakOpts, i[e])); } bindEvents() { window.addEventListener("resize", this.onResizeHandler.bind(this)); } onResizeHandler() { n.winSize().w !== this.winWidth && ((this.winWidth = n.winSize().w), null == this.opts.resizeStart && ((this.opts.resizeStart = this.winWidth), this.outCallback("matchBefore"), this.resizeAnimateFunc()), window.clearTimeout(this.resizeEndTime), (this.resizeEndTime = window.setTimeout( this.resizeEndFunc.bind(this), 150 ))); } resizeAnimateFunc() { this.setLayout(), this.setOpts(), this.setRows(), this.buildHeightControl(), (this.resizeRequestFrame = n.requestAFrame.call( window, this.resizeAnimateFunc.bind(this) )); } resizeEndFunc() { (this.opts.resizeStart = null), this.setOpts(), this.setRows(), this.buildHeightControl(), this.outCallback("matchAfter"), n.cancelAFrame.call(window, this.resizeRequestFrame); } setLayout() { this.winWidth >= e.TABLET.WIDTH ? (this.currentDevice = "desktop") : this.winWidth > e.MOBILE.WIDTH && this.winWidth < e.TABLET.WIDTH ? (this.currentDevice = "tablet") : (this.currentDevice = "mobile"), this.currentDevice, this.prevDevice, (this.prevDevice = this.currentDevice); } setRows() { this.rowNum = Math.ceil( this.objChild.length / this.breakOpts.column ); } buildHeightControl() { this.breakOpts.column <= 1 ? null !== this.opts.pushObjs && this.opts.pushObjs.css("height", "") : this.buildHeight(); } buildHeight() { this.heightArray = []; for (var e = 0; e < this.rowNum; e++) this.heightArray[e] = []; for (var e = 0, t = this.objChild.length; e < t; e++) { var s = parseInt(e / this.breakOpts.column, 10), i = this.objChild .eq(e) .not(this.opts.notCompareElement) .find(this.opts.matchElement), i = i.is(":visible") ? Math.ceil(i.outerHeight()) : 0; this.heightArray[s].push(i); } for (e = 0; e < this.rowNum; e++) this.heightArray[e] = Math.max.apply(null, this.heightArray[e]); this.setHeightLayout(); } setHeightLayout() { for (var e = 0, t = this.objChild.length; e < t; e++) { var s = parseInt(e / this.breakOpts.column, 10); (null == this.opts.pushElement ? this.objChild.eq(e).not(this.opts.notCompareElement) : this.objChild .eq(e) .not(this.opts.notCompareElement) .find(this.opts.pushElement) ).height(this.heightArray[s]); } } destroy() { this.opts.useDestroyHeight && null !== this.opts.pushObjs && this.opts.pushObjs.css("height", ""), (this.opts.destroyType = !0), this.bindEvents(!1); } reInit() { this.setElements(), this.setOpts(), this.setRows(), this.buildHeightControl(), this.onResizeHandler(), this.opts.destroyType && ((this.opts.destroyType = !1), this.bindEvents(!0)); } outCallback(e) { e = this.opts[e]; null != e && e(); } }; })(), (function (e) { e.HiveLayer = (function () { "use strict"; var e, t = window, i = t.jQuery, s = t.document, a = t.ODDYSSEY.UTILS, l = []; function n(e, t) { if (!(this instanceof n)) return new n(e, t); var s = { effect: "default", layerWrapElements: e, layerBody: ".cm-layer__body", layerElements: ".cm-layer__wrapper", openerElements: ".js-layer-opener", closerElements: ".js-layer-closer", dimmedElements: ".cm-layer__dimmed", classAttr: { htmlToggle: "is-layer-open", isAsync: "is-async" }, customEvent: ".HiveLayer" + new Date().getTime() + Math.random(), openerTarget: null, useOutside: false, useEscape: true, useCloseFocus: true, customToggle: false, dimmedDuration: 250, fps: 120, easing: "swing", duration: 250, on: { layerOpenBefore: null, layerOpenAfter: null, layerCloseBefore: null, layerCloseAfter: null, }, ariaNotHidden: [], }; if (!(this.layerWrap = s.layerWrapElements).length) return; this.layerWrap = i(s.layerWrapElements); this.opts = a.def(s, t || {}); this.init(); } return ( (n.prototype = { init: function () { this.initOpts(); this.setElements(); this.buildTween(); this.bindEvents(true); this.layerWrap.data("HiveLayer", this); }, initOpts: function () { this.layerWrapInstance = "#" + this.layerWrap.attr("id"); }, initLayout: function () { const e = document.querySelector("body"); e.appendChild(this.layerWrap[0]); }, setElements: function () { this.content = document.querySelector("#contents"); this.wrap = document.querySelector("#wrap"); this.layerBody = this.layerWrap.find(this.opts.layerBody); this.layerObj = this.layerWrap.find(this.opts.layerElements); this.closerObj = this.layerWrap.find(this.opts.closerElements); this.dimmedObj = this.layerWrap.find(this.opts.dimmedElements); this.baseContentsClickable = document.documentElement.querySelectorAll( "a, input, select, textarea, button, video, iframe" ); this.layerContentsClickable = this.layerWrap[0].querySelectorAll( "a, input, select, textarea, button, video, iframe" ); }, buildTween: function () { a.def(this, { tweens: { instance: [], kill: i.proxy(function () { for ( var e = 0, t = this.tweens.instance.length; e < t; e++ ) this.tweens.instance[e].kill(); this.tweens.instance = []; }, this), }, }); }, bindEvents: function (e) { if (e) { window.addEventListener( "resize", this.onResizeHandler.bind(this) ); i(s).on( "click clickCustom", this.opts.openerElements + '[data-target-layer="' + this.layerWrapInstance + '"]', i.proxy(this.onLayerOpen, this) ); this.layerWrap.on( "openLayer", i.proxy(this.onLayerOpen, this) ); this.closerObj.on( "mousedown click clickCustom", i.proxy(this.onLayerClose, this) ); this.layerWrap.on( "layerSetOptions", i.proxy(this.setOptions, this) ); if (this.opts.useEscape) this.layerObj.on( "keydown", i.proxy(this.onEscapeClose, this) ); } else { i(s).off("click clickCustom"); window.removeEventListener( "resize", this.onResizeHandler.bind(this) ); this.layerWrap.off("openLayer"); this.closerObj.off("mousedown click clickCustom"); this.layerWrap.off("layerSetOptions"); if (this.opts.useEscape) this.layerObj.off("keydown"); } }, bindOutsideEvents: function (e) { if (!this.opts.useOutside) return; if (e) this.layerObj.on( "clickoutside touchendoutside", i.proxy(this.onLayerOutsideFunc, this) ); else this.layerObj.off("clickoutside touchendoutside"); }, bindCloseEvents: function (e) { if (e) this.layerWrap.on( "closeLayer", i.proxy(this.closeLayer, this) ); else this.layerWrap.off("closeLayer"); }, setOptions: function (e, t) { a.def(this.opts, t || {}); if (t.customToggle) this.opts.effect = "default"; }, onLayerOpen: function (e) { e.preventDefault(); document.documentElement.classList.add("is-layer-popup-opened"); a.hiddenScroll(); setTimeout(() => { this.dimmedObj.on( "mousedown click clickCustom", i.proxy(this.onLayerClose, this) ); }, 500); if (e.type === "click" || e.type === "clickCustom") this.opts.openerTarget = i(e.currentTarget); if (e.type === "click") if ( this.opts.openerTarget.hasClass(this.opts.classAttr.isAsync) ) return; this.layerViewType = "open"; l.push({ POPUPWRAP: this.layerWrap }); if (document.querySelector("html.load div#header")) { document.querySelector( "html.load div#header" ).style.opacity = 0; document.querySelector( "html.load div#header" ).style.pointerEvents = "none"; } this.bindCloseEvents(true); if (!this.opts.customToggle) { this.layerWrap.css({ opacity: 0, display: "block" }); this.outCallback("layerOpenBefore"); this.layerWrap.css("opacity", ""); this.openAfterBugFunc(); } else this.outCallback("layerOpenBefore"); }, onLayerOpenAfter: function () { this.layerWrap[0].addEventListener("touchmove", function (e) { e.preventDefault(); }); this.exceptOpenLayer(); this.outCallback("layerOpenAfter"); window.setTimeout(() => { this.closerObj.focus(); }); }, openAfterBugFunc: function () { t.clearTimeout(this.openAfterTimeout); this.openAfterTimeout = t.setTimeout( i.proxy(this.onLayerOpenAfter, this), 30 ); }, onLayerClose: function (e) { var t = i(e.currentTarget); if (e.type === "mousedown") { if (!a.isDevice) { e.stopPropagation(); this.opts.useCloseFocus = false; } } else if (e.type === "click" || e.type === "clickCustom") { e.preventDefault(); if (e.type === "click") if (t.hasClass(this.opts.classAttr.isAsync)) return; this.layerWrap.trigger("closeLayer"); this.dimmedObj.off("mousedown click clickCustom"); } }, exceptCloseLayer: function () { this.baseContentsClickable.forEach((e, t) => { const s = e; const i = s.getAttribute("data-prev-tabindex"); const a = s.getAttribute("data-prev-aria-hidden"); if (!!i) s.setAttribute("tabindex", i); else s.removeAttribute("tabindex"); if (!!a) s.setAttribute("aria-hidden", a); else s.removeAttribute("aria-hidden"); s.removeAttribute("data-prev-tabindex"); s.removeAttribute("data-prev-aria-hidden"); }); }, exceptOpenLayer: function () { this.baseContentsClickable.forEach((a, e) => { this.layerContentsClickable.forEach((e) => { if (a !== e) { const t = a; const s = t.getAttribute("tabindex"); const i = t.getAttribute("aria-hidden"); if (!!s) t.setAttribute("data-prev-tabindex", s); if (!!i) t.setAttribute("data-prev-aria-hidden", i); t.setAttribute("tabindex", "-1"); t.setAttribute("aria-hidden", "true"); } }); }); }, closeLayer: function () { document.documentElement.classList.remove( "is-layer-popup-opened" ); this.closeType = arguments[1]; this.layerViewType = "close"; this.outCallback("layerCloseBefore"); this.popupOpenPropsControl(); a.visibleScroll(); this.exceptCloseLayer(); this.wrap.removeAttribute("aria-hidden", "true"); if (document.querySelector("html.load div#header")) { document.querySelector( "html.load div#header" ).style.opacity = 1; document.querySelector( "html.load div#header" ).style.pointerEvents = "unset"; } t.clearTimeout(this.closeBeforeTimeout); this.closeBeforeTimeout = t.setTimeout( i.proxy(this.closeBeforeBugFunc, this), 30 ); }, onEscapeClose: function (e) { var t = e.which || e.keyCode; if (t !== 27) return; this.layerWrap.trigger("closeLayer"); }, onLayerOutsideFunc: function () { this.layerWrap.trigger("closeLayer"); }, closeBeforeBugFunc: function () { if (!this.opts.customToggle) this.layerWrap.stop(true, true).hide(); this.closeAfterBugFunc(); }, closeAfterBugFunc: function () { t.clearTimeout(this.closeAfterTimeout); this.closeAfterTimeout = t.setTimeout( i.proxy(this.onLayerCloseAfter, this), 30 ); }, popupOpenPropsControl: function () { var e = l; for (var t = 0, s = e.length; t < s; t++) { var i = e[t], a = i["POPUPWRAP"][0]; if (a === this.layerWrap[0]) e[t] = null; } for (var n = 0, r = e.length; n < r; r--) { var o = e[r - 1]; if (o === null) e.splice(r - 1, 1); } }, onLayerCloseAfter: function () { if (this.opts.openerTarget !== null) { if (this.closeType !== false) this.opts.openerTarget.focus(); this.opts.openerTarget = null; } this.opts.useCloseFocus = true; this.bindCloseEvents(false); this.outCallback("layerCloseAfter"); }, onResizeHandler: function () { if (window.innerWidth >= 1024) this.currDevice = "desktop"; else if (window.innerWidth >= 768 && window.innerWidth < 1024) this.currDevice = "tablet"; else this.currDevice = "mobile"; if (this.currDevice != this.prevDevice) { this.onResponsiveChange(); this.prevDevice = this.currDevice; } }, onResponsiveChange: function () { clearTimeout(this.responsiveTimeout); this.responsiveTimeout = setTimeout(() => { a.offPopupAccessibility(this.content); if ( document.documentElement.classList.contains( "is-layer-popup-opened" ) ) a.onPopupAccessibility(this.content); }, 500); }, outCallback: function (e) { var t = this.opts.on[e]; this.layerWrap.trigger(e, this); if (t == null) return; t(this); }, styleDestroy: function () { this.dimmedObj.attr("style", ""); this.layerWrap.attr("style", ""); this.layerBody.attr("style", ""); this.layerObj.attr("style", ""); }, destroy: function () { document.documentElement.classList.remove( "is-layer-popup-opened" ); this.layerWrap.hide(); a.visibleScroll(); this.exceptCloseLayer(); this.wrap.removeAttribute("aria-hidden", "true"); this.tweens.kill(); this.styleDestroy(); this.bindEvents(false); this.bindCloseEvents(false); }, }), n ); })(); })(window), (function () { function e() { if ( (document.documentElement.classList.remove("is-layer-popup-opened"), d.visibleScroll(), l.layer) ) { l.layer.parentNode.removeChild(l.layer), (l.layer = null); for (var e = 0; e < l.baseContentsClickable.length; e++) { var t = l.baseContentsClickable[e]; var s = t.getAttribute("data-prev-tabindex"); var i = t.getAttribute("data-prev-aria-hidden"); if (!!s) t.setAttribute("tabindex", s); else t.removeAttribute("tabindex"); if (!!i) t.setAttribute("aria-hidden", i); else t.removeAttribute("aria-hidden"); t.removeAttribute("data-prev-tabindex"); t.removeAttribute("data-prev-aria-hidden"); } setTimeout(function () { l.opener && l.opener.focus(); }, 1100); } } function o(e) { return ( "https://www.youtube.com/embed/" + e + "?showinfo=0&wmode=transparent&autoplay=1&rel=0" ); } var l, d, t, s, i, c; (window.ODDYSSEY = window.ODDYSSEY || {}), (window.ODDYSSEY.video = window.ODDYSSEY.video || {}), (ODDYSSEY.video = ((l = {}), (d = ODDYSSEY.UTILS), (t = !1), (s = null), (i = function () { (t = 1024 <= window.innerWidth ? "desktop" : 768 <= window.innerWidth && window.innerWidth < 1024 ? "tablet" : "mobile") != s && (clearTimeout(l.responsiveTimeout), (l.responsiveTimeout = setTimeout(function () { d.offPopupAccessibility(l.contents), document.documentElement.classList.contains( "is-layer-popup-opened" ) && d.onPopupAccessibility(l.contents); }, 500)), (s = t)); }), (c = function () { e(), window.ODDYSSEY.compare && window.ODDYSSEY.compare.setSlideAccessibility(); }), { init: function () { (l.wrap = document.querySelector("#wrap")), l.wrap && ((l.contents = document.querySelector("#contents")), (l.responsiveTimeout = null), (l.layer = null), (l.opener = null), (l.baseContentsClickable = null), (l.closeButton = null), window.addEventListener("resize", i)); }, showVideoLayer: function (e, t, s) { document.documentElement.classList.add("is-layer-popup-opened"), d.hiddenScroll(); e = e.split("?v=")[1]; if ( ( (l.baseContentsClickable = document.documentElement.querySelectorAll( "a, input, select, textarea, button, video, iframe" )), !l.layer) ) { (l.layer = document.createElement("div")), l.layer.setAttribute("id", "layer-youtube"), l.layer.classList.add("m_layer-youtube"), l.layer.classList.add("show"), (l.layer.innerHTML = [ '
', '', 'Movie player Layer', '
', '', '', "", '
', '', "
", "
", "
", ].join("")), l.layer.addEventListener("touchmove", function (e) { e.preventDefault(); }), (l.closeButton = l.layer.querySelector( 'button[class*="_btn_close"]' )), l.closeButton.addEventListener("click", c); for (var i = 0; i < l.baseContentsClickable.length; i++) { var a = l.baseContentsClickable[i]; var n = a.getAttribute("tabindex"); var r = a.getAttribute("aria-hidden"); if (!!n) a.setAttribute("data-prev-tabindex", n); if (!!r) a.setAttribute("data-prev-aria-hidden", r); a.setAttribute("tabindex", "-1"); a.setAttribute("aria-hidden", "true"); } document.body.appendChild(l.layer), t && (l.opener = t), setTimeout(function () { l.closeButton && l.closeButton.focus(); }, 1100); } }, hideVideoLayer: e, getYoutubePlayerLink: o, })); })(), (function () { "use strict"; window.ODDYSSEY = window.ODDYSSEY || {}; ODDYSSEY.Compare = class { constructor(e = container, t) { var s = { el: e, featureHide: "is-feature-hide", productEl: ".odyssey-compare__product", productList: ".odyssey-compare__product-list", productItem: ".odyssey-compare__product-item", nextBtn: ".odyssey-compare__arrow-btn.btn-next", prevBtn: ".odyssey-compare__arrow-btn.btn-prev", buyCta: ".odyssey-compare__buy-link", tabCta: ".odyssey-compare__tab-cta", matchItem: ".js-match-item", matchElements: [ ".odyssey-compare__category-item--name", ".odyssey-compare__category-item--model", ".odyssey-compare__category-item--size", ".odyssey-compare__category-item--ratio", ".odyssey-compare__category-item--panel", ".odyssey-compare__category-item--flat", ".odyssey-compare__category-item--resolution", ".odyssey-compare__category-item--brightness", ".odyssey-compare__category-item--response", ".odyssey-compare__category-item--refresh", ".odyssey-compare__category-item--adaptive", ".odyssey-compare__category-item--smart", ".odyssey-compare__category-item--speaker", ".odyssey-compare__category-item--connectivity", ".odyssey-compare__buy", ], matchCommonOpts: { childElement: ".js-match-item", useDestroyHeight: !1, breakpoints: {}, }, tabBox: ".odyssey-compare__tab-box", classes: { isOn: "is-on", isHide: "is-hide", shadowRight: "shadow-right", shadowLeft: "shadow-left", }, on: { updateImageLoader: null }, }; (this.opts = UTILS.def(s, t || {})), (this.classes = s.classes), (this.el = document.querySelector(e)), this.init(); } init() { null === this.el || this.el.classList.contains(this.opts.featureHide) || (this.setElements(), this.initOpts(), this.initLayout(), this.buildSwiper(), this.buildHeightMatch(), this.bindEvents()); } setElements() { (this.productEl = this.el.querySelector(this.opts.productEl)), (this.productList = this.el.querySelector(this.opts.productList)), (this.productItem = this.el.querySelectorAll( this.opts.productItem )), (this.nextBtn = this.el.querySelector(this.opts.nextBtn)), (this.prevBtn = this.el.querySelector(this.opts.prevBtn)), (this.tabCta = this.el.querySelectorAll(this.opts.tabCta)), (this.tabBox = this.el.querySelectorAll(this.opts.tabBox)), (this.matchItem = this.el.querySelectorAll(this.opts.matchItem)); } initOpts() { (this.firstImageLoad = !1), (this.globalText = JSON.parse(this.el.dataset.globalText)), this.getCurrentDevice(); } initLayout() { this.tabCta.forEach((e) => { "all" === e.dataset.category ? (e.parentElement.classList.add(this.classes.isOn), e.setAttribute("title", this.globalText.selected), (this.currentCategory = e.dataset.category)) : (e.parentElement.classList.remove(this.classes.isOn), e.removeAttribute("title")); }), this.updateTagging(); } updateTagging() { const e = this.el.querySelectorAll(this.opts.buyCta), i = "all" !== this.currentCategory && "others" !== this.currentCategory ? "odyssey " + this.currentCategory : this.currentCategory; e.forEach((e) => { var t = e.getAttribute("data-omni").split(":"), s = e.getAttribute("ga-la").split(":"); e.setAttribute("data-omni", `${t[0]}:${i}:${t[2]}:` + t[3]), e.setAttribute("ga-la", `${s[0]}:${i}:${s[2]}:` + s[3]); }); } bindEvents() { this.onScrollHandler(), window.addEventListener( "scroll", this.onScrollHandler.bind(this) ), window.addEventListener( "resize", this.onResizeHandler.bind(this) ), this.tabCta.forEach((e) => { e.addEventListener("click", this.onClickTabCta.bind(this)); }); } getCurrentDevice() { window.innerWidth >= UTILS.RESPONSIVE.TABLET.WIDTH ? (this.currDevice = "desktop") : window.innerWidth > UTILS.RESPONSIVE.MOBILE.WIDTH && window.innerWidth < UTILS.RESPONSIVE.TABLET.WIDTH ? (this.currDevice = "tablet") : (this.currDevice = "mobile"); } updateImageLoader() { var e = window.innerHeight, e = UTILS.getScroll().top - e, t = UTILS.getScroll().bottom, s = UTILS.getOffset(this.el); ((t > s.top && e <= s.top) || (e < s.bottom && t > s.bottom) || (e < s.top && t > s.bottom) || (e > s.top && t < s.bottom)) && !this.firstImageLoad && ((e = this.el.querySelectorAll(".js-start-img-src")), this.outCallback("updateImageLoader", e), (this.firstImageLoad = !0)); } onResizeHandler() { this.getCurrentDevice(), clearTimeout(this.resizeTimeout), (this.resizeTimeout = setTimeout(() => { this.onResponsive(); }, 100)), this.currDevice != this.prevDevice && (this.onResponsiveChange(), (this.prevDevice = this.currDevice)); } onResponsive() { this.heightMatch.reInit(); } onResponsiveChange() { this.onResponsive(); var e = "mobile" === this.currDevice ? "auto" : 5; e !== this.swiper.options.slidesPerView && ((this.swiper.options.slidesPerView = e), this.swiper.destroy(), this.swiper.build()); } onScrollHandler() { this.updateImageLoader(); } onClickTabCta(e) { const t = e.target; (this.currentCategory = t.dataset.category), this.tabCta.forEach((e) => { e === t ? (e.parentElement.classList.add(this.classes.isOn), e.setAttribute("title", this.globalText.selected)) : (e.parentElement.classList.remove(this.classes.isOn), e.removeAttribute("title")); }), this.productItem.forEach((e) => { "all" === t.dataset.category || t.dataset.category === e.dataset.category ? e.classList.remove(this.classes.isHide) : e.classList.add(this.classes.isHide); }), this.swiper.updateSlide(), this.updateTagging(); } buildHeightMatch() { (this.heightMatch = { instance: [], reInit: () => { this.heightMatch.instance.length && this.heightMatch.instance.forEach((e) => { e.reInit(); }); }, initLayout: () => { for ( let e = 0, t = this.opts.matchElements.length; e < t; e++ ) { const i = this.opts.matchElements[e]; var s = "js-" + i.split(".")[1]; for (let e = 0, t = this.matchItem.length; e < t; e++) { const a = this.matchItem[e]; if (null === a.querySelector("." + s)) { const n = document.createElement("div"), r = a.querySelector(i); null !== r && ((n.innerHTML = r.innerHTML), n.classList.add(s), (r.innerHTML = ""), r.appendChild(n)); } } } }, build: () => { this.heightMatch.initLayout(); var e = { column: this.matchItem.length }; UTILS.def(this.opts.matchCommonOpts, e); for ( let e = 0, t = this.opts.matchElements.length; e < t; e++ ) { const a = this.opts.matchElements[e]; var s = { pushElement: "." + a.split(".")[1], childElement: this.opts.matchItem, matchElement: ".js-" + a.split(".")[1], }, i = JSON.parse(JSON.stringify(this.opts.matchCommonOpts)); UTILS.def(i, s), this.heightMatch.instance.push( new ODDYSSEY.HeightMatch(this.opts.el, i) ); } this.swiper.build(); }, }), this.heightMatch.build(); } buildSwiper() { this.swiper = { instance: null, options: { slidesPerView: "mobile" === this.currDevice ? 1 : 4, observer: !0, observeParents: !0, navigation: { nextEl: this.nextBtn, prevEl: this.prevBtn }, }, init: () => { this.swiper.instance.virtualSize > this.swiper.instance.width && (this.productEl.classList.add(this.classes.shadowRight), this.productEl.classList.remove(this.classes.shadowLeft), this.nextBtn.removeAttribute("style"), this.prevBtn.removeAttribute("style")); }, setTranslate: (e, t) => { null !== this.swiper.instance && ((t = UTILS.isRTL() ? t : -1 * t), this.swiper.instance.virtualSize - this.swiper.instance.width <= t ? (this.productEl.classList.remove( this.classes.shadowRight ), this.productEl.classList.add(this.classes.shadowLeft)) : (this.productEl.classList.add(this.classes.shadowRight), this.productEl.classList.remove( this.classes.shadowLeft ))); }, updateSlide: () => { this.productEl.getBoundingClientRect().width < this.productList.scrollWidth ? null !== this.swiper.instance ? (this.swiper.instance.update(), this.swiper.instance.slideTo(0)) : this.swiper.build() : this.swiper.destroy(); }, destroy: () => { null !== this.swiper.instance && (this.swiper.instance.destroy(), this.productEl.classList.remove(this.classes.shadowRight), this.productEl.classList.remove(this.classes.shadowLeft), (this.nextBtn.style.display = "none"), (this.prevBtn.style.display = "none"), (this.swiper.instance = null)); }, build: () => { null === this.swiper.instance && (this.productEl.getBoundingClientRect().width < this.productList.scrollWidth ? ((this.swiper.options.on = { setTranslate: this.swiper.setTranslate.bind(this), }), (this.swiper.instance = new Swiper( this.productEl, this.swiper.options )), this.swiper.instance.on( "init", this.swiper.init.bind(this) ), this.swiper.init()) : ((this.nextBtn.style.display = "none"), (this.prevBtn.style.display = "none"))); }, }; } outCallback(e, t) { e = this.opts.on[e]; null != e && e(t); } }; })(), (function () { "use strict"; window.ODDYSSEY = window.ODDYSSEY || {}; const t = ODDYSSEY.UTILS; t.RESPONSIVE; ODDYSSEY.Contrast = class { constructor(e = container, t) { var s = { el: e, defaultBtn: ".type-default", contrastBtn: ".type-contrast", cookieName: "highContrastMode", featureHide: "is-feature-hide", }; (this.opts = s), (this.classes = s.classes), (this.el = document.querySelector(e)), this.init(); } init() { null === this.el || this.el.classList.contains(this.opts.featureHide) || (this.setElements(), this.bindEvents()); } setElements() { (this.defaultBtn = this.el.querySelector(this.opts.defaultBtn)), (this.defaultBtnTitle = this.defaultBtn .getAttribute("title") .trim()), (this.contrastBtn = this.el.querySelector(this.opts.contrastBtn)), (this.contrastBtnTitle = this.contrastBtn .getAttribute("title") .trim()), (this.cookieName = this.opts.cookieName); } bindEvents() { window.addEventListener("load", this.onLoadHandler.bind(this)), this.defaultBtn && this.defaultBtn.addEventListener( "click", this.onClickDefaultBtn.bind(this) ), this.contrastBtn && this.contrastBtn.addEventListener( "click", this.onClickContrastBtn.bind(this) ); } onLoadHandler() { this.activeContrast(); } onClickDefaultBtn(e) { e.preventDefault(), t.setCookie(this.cookieName, "0", 1), this.activeContrast(); } onClickContrastBtn(e) { e.preventDefault(), t.setCookie(this.cookieName, "1", 1), this.activeContrast(); } activeContrast() { var e = t.getCookie(this.cookieName); null != e && e.length && "1" == e ? (document.documentElement.classList.add("color_yb"), this.contrastBtn.setAttribute( "title", this.contrastBtnTitle + " selected" ), this.defaultBtn.setAttribute("title", this.defaultBtnTitle)) : (document.documentElement.classList.remove("color_yb"), this.contrastBtn.setAttribute("title", this.contrastBtnTitle), this.defaultBtn.setAttribute( "title", this.defaultBtnTitle + " selected" )); } }; })(), (function () { "use strict"; window.ODDYSSEY = window.ODDYSSEY || {}; ODDYSSEY.Feature = class { constructor(e = container, t) { var s = { el: e, classes: {}, classes: { isHover: "is-hover", isFocus: "is-focus" }, featureHide: "is-feature-hide", itemCta: ".odyssey-feature__item-cta", featureSection: ".odyssey-feature__wrap", pictureQualityEl: ".odyssey-feature__popup.picture-quality-popup", refreshRateEl: ".odyssey-feature__popup.refresh-rate-popup", multiViewEl: ".odyssey-feature__popup.multi-view-popup", hubEl: ".odyssey-feature__popup.hub-popup", }; (this.opts = s), (this.classes = s.classes), (this.el = document.querySelector(e)), this.init(); } init() { null === this.el || this.el.classList.contains(this.opts.featureHide) || (this.setElements(), this.initOpts(), this.buildLayer(), this.bindEvnets()); } initOpts() { this.getCurrentDevice(), (this.isFocus = !1); } setElements() { (this.itemCta = this.el.querySelectorAll(this.opts.itemCta)), (this.featureSection = this.el.querySelector( this.opts.featureSection )), (this.pictureQualityEl = document.documentElement.querySelector( this.opts.pictureQualityEl )), (this.refreshRateEl = document.documentElement.querySelector( this.opts.refreshRateEl )), (this.multiViewEl = document.documentElement.querySelector( this.opts.multiViewEl )), (this.hubEl = document.documentElement.querySelector( this.opts.hubEl )); } bindEvnets() { this.onResponsive(), window.addEventListener( "resize", this.onResizeHandler.bind(this) ), window.addEventListener("mouseenter", () => { this.isHover = !1; }), this.itemCta.forEach((e) => { e.addEventListener("focus", this.onItemCtaFocus.bind(this)), e.addEventListener( "focusout", this.onItemCtaFocus.bind(this) ), e.addEventListener( "mouseenter", this.onItemCtaFocus.bind(this) ), e.addEventListener( "mouseleave", this.onItemCtaFocus.bind(this) ); }); } getCurrentDevice() { window.innerWidth >= UTILS.RESPONSIVE.TABLET.WIDTH ? (this.currDevice = "desktop") : window.innerWidth > UTILS.RESPONSIVE.MOBILE.WIDTH && window.innerWidth < UTILS.RESPONSIVE.TABLET.WIDTH ? (this.currDevice = "tablet") : (this.currDevice = "mobile"); } onItemCtaFocus(e) { if ((e.preventDefault(), "mobile" !== this.currDevice)) { const t = e.currentTarget.parentNode; (this.isHover = "mouseleave" !== e.type && "focusout" !== e.type), (this.isFocus = "focus" === e.type), this.isHover ? t.classList.add(this.classes.isHover) : t.classList.remove(this.classes.isHover), this.isFocus ? t.classList.add(this.classes.isFocus) : t.classList.remove(this.classes.isFocus); } } onResizeHandler() {} onResizeHandler() { this.getCurrentDevice(), clearTimeout(this.resizeTimeout), (this.resizeTimeout = setTimeout(() => { this.onResponsive(); }, 100)), this.currDevice != this.prevDevice && (this.onResponsiveChange(), (this.prevDevice = this.currDevice)); } onResponsive() {} onResponsiveChange() { this.onResponsive(), "mobile" === this.currDevice ? this.layer.build() : this.layer.destroy(); } buildLayer() { this.layer = { instance: [], destroy: () => { this.layer.instance.forEach((e) => { e.destroy(); }), (this.layer.instance = []); }, build: () => { this.layer.instance.length || (this.layer.instance.push( new HiveLayer(this.opts.pictureQualityEl, { effect: "default", on: { layerOpenBefore: () => { var e = "." + this.pictureQualityEl.getAttribute("id"), e = document.documentElement.querySelector( e ).innerHTML; (document.documentElement.querySelector( ".popup-content-wrap" ).innerHTML = e), window.initialize.reInitSup(); }, }, }) ), this.layer.instance.push( new HiveLayer(this.opts.refreshRateEl, { effect: "default", on: { layerOpenBefore: () => { var e = "." + this.refreshRateEl.getAttribute("id"), e = document.documentElement.querySelector( e ).innerHTML; (document.documentElement.querySelector( ".refresh-rate__popup-content-wrap" ).innerHTML = e), window.initialize.reInitSup(); }, }, }) ), this.layer.instance.push( new HiveLayer(this.opts.multiViewEl, { effect: "default", on: { layerOpenBefore: () => { var e = "." + this.multiViewEl.getAttribute("id"), e = document.documentElement.querySelector( e ).innerHTML; (document.documentElement.querySelector( ".multi-view__popup-content-wrap" ).innerHTML = e), window.initialize.reInitSup(); }, }, }) ), this.layer.instance.push( new HiveLayer(this.opts.hubEl, { effect: "default", on: { layerOpenBefore: () => { var e = "." + this.hubEl.getAttribute("id"), e = document.documentElement.querySelector( e ).innerHTML; (document.documentElement.querySelector( ".hub__popup-content-wrap" ).innerHTML = e), window.initialize.reInitSup(); }, }, }) )); }, }; } }; })(), (function () { "use strict"; window.ODDYSSEY = window.ODDYSSEY || {}; ODDYSSEY.Introducing = class { constructor(e = container, t) { var s = { el: e, subHeadlineEl: ".odyssey-introducing__detail-sub-headline", detailDescEl: ".odyssey-introducing__detail-desc", tabList: ".odyssey-introducing__tab-list", tabItem: ".odyssey-introducing__tab-item", tabPanels: ".odyssey-introducing__tab-panels", tabPanel: ".odyssey-introducing__tab-panel", moreCta: ".more-cta", moreCtaText: ".text", videoSwiperEl: ".odyssey-introducing__video", videoSwiperItem: ".odyssey-introducing__video-item", videoTitle: ".odyssey-introducing__video-title", pagination: ".odyssey-introducing__pagination", paginationItem: "li", paginationCta: ".s-line-wrap", featureHide: "is-feature-hide", classes: { isHide: "is-hide", isHold: "is-hold", isClose: "is-close", isActive: "is-active", isOpen: "is-open", isFixed: "is-fixed", isFixedEnd: "is-fixed-end", }, on: { updateImageLoader: null }, }; (this.opts = UTILS.def(s, t || {})), (this.classes = s.classes), (this.el = document.querySelector(e)), this.init(); } init() { null === this.el || this.el.classList.contains(this.opts.featureHide) || (this.setElements(), this.initOpts(), this.initLayout(), this.buildSwiper(), this.bindEvents()); } initOpts() { (this.firstImageLoad = !1), (this.scrollStart = null), (this.globalText = JSON.parse(this.el.dataset.globalText)), this.getCurrentDevice(); } initLayout() { this.moreCta.forEach((e) => { (e.querySelector(this.opts.moreCtaText).innerText = this.globalText.viewMore), e.setAttribute("aria-expanded", !1); }); } setElements() { (this.tabList = this.el.querySelector(this.opts.tabList)), (this.tabItem = this.tabList.querySelectorAll(this.opts.tabItem)), (this.tabPanels = this.el.querySelector(this.opts.tabPanels)), (this.tabPanel = this.tabPanels.querySelectorAll( this.opts.tabPanel )), (this.videoSwiperEl = this.el.querySelectorAll( this.opts.videoSwiperEl )), (this.moreCta = this.el.querySelectorAll(this.opts.moreCta)), (this.youtubeLayer = this.el.querySelectorAll(".js-youtube-layer")), (this.youtubeLink = UTILS.convertArray( this.el.querySelectorAll(".js-youtube-link") )), (this.youtubeDesc = this.el.querySelectorAll(".js-youtube-desc")), (this.iframeTitle = this.el.querySelectorAll(".js-iframe-title")); } bindEvents() { this.onScrollHandler(), window.addEventListener( "scroll", this.onScrollHandler.bind(this) ), window.addEventListener( "resize", this.onResizeHandler.bind(this) ), this.tabItem.forEach((e) => { e.addEventListener( "click", this.onClickTabItemHandler.bind(this) ); }), this.moreCta.forEach((e) => { e.addEventListener("click", this.onClickMoreHandler.bind(this)); }), this.youtubeLink.forEach((e) => { e.addEventListener("click", this.onClickYoutubeLink.bind(this)); }); } onClickYoutubeLink(e) { e.preventDefault(); const t = e.currentTarget; var e = t.getAttribute("href"), e = (ODDYSSEY.video.showVideoLayer(e, t, !0), document.querySelector("#layer-youtube")), s = e.querySelector("iframe"), i = this.youtubeLink.indexOf(t), a = null; (a = this.youtubeDesc[i]).removeAttribute("aria-hidden", ""), null != a && e.querySelector(".m_video_view").appendChild(a), s.setAttribute( "title", this.iframeTitle[i].getAttribute("data-iframe-title") ); } getCurrentDevice() { window.innerWidth >= UTILS.RESPONSIVE.TABLET.WIDTH ? (this.currDevice = "desktop") : window.innerWidth > UTILS.RESPONSIVE.MOBILE.WIDTH && window.innerWidth < UTILS.RESPONSIVE.TABLET.WIDTH ? (this.currDevice = "tablet") : (this.currDevice = "mobile"); } updateImageLoader() { var e = window.innerHeight, e = UTILS.getScroll().top - e, t = UTILS.getScroll().bottom, s = UTILS.getOffset(this.el); ((t > s.top && e <= s.top) || (e < s.bottom && t > s.bottom) || (e < s.top && t > s.bottom) || (e > s.top && t < s.bottom)) && !this.firstImageLoad && ((e = this.el.querySelectorAll(".js-start-img-src")), this.outCallback("updateImageLoader", e), (this.firstImageLoad = !0)); } updateLayout() { const a = UTILS.getNavHeight(); var e = this.tabList.getBoundingClientRect().height, t = this.tabPanels.getBoundingClientRect(), s = Math.floor(t.top - a), t = Math.floor(t.bottom - e - a); s <= 0 && 0 <= t ? (this.tabList.classList.add(this.classes.isFixed), this.tabList.classList.remove(this.classes.isFixedEnd), (this.tabList.style.top = a + "px")) : (0 < s ? this.tabList.classList.remove(this.classes.isFixed) : this.tabList.classList.add(this.classes.isFixedEnd), this.tabList.removeAttribute("style")), this.tabPanel.forEach((e) => { var t = e.getBoundingClientRect(), s = Math.floor(this.scrollY + t.top - a), t = Math.floor(this.scrollY + t.bottom - a); if ( !this.el.classList.contains(this.classes.isHold) && this.scrollY >= s && this.scrollY <= t ) { s = e.getAttribute("id"); const i = this.tabList.querySelector(`[aria-controls=${s}]`); i.classList.contains(this.classes.isActive) || this.tabItem.forEach((e) => { e === i ? e.classList.add(this.classes.isActive) : e.classList.remove(this.classes.isActive); }); } }); } onClickMoreHandler(e) { e.preventDefault(); const t = e.currentTarget, s = t.closest(this.opts.tabPanel); Array.from(this.tabPanel).indexOf(s); const i = s.querySelector(this.opts.subHeadlineEl), a = s.querySelector(this.opts.detailDescEl), n = s.querySelector(this.opts.videoSwiperEl); t.classList.contains(this.classes.isClose) ? ((e = "" + this.globalText.viewMore + t.getAttribute("aria-label").split(this.globalText.close)[1]), t.setAttribute("aria-label", e), (t.querySelector(this.opts.moreCtaText).innerText = this.globalText.viewMore), t.setAttribute("aria-expanded", !1), t.classList.remove(this.classes.isClose), i.classList.add(this.classes.isHide), a.classList.add(this.classes.isHide), n.classList.add(this.classes.isHide), s.classList.remove(this.classes.isOpen)) : ((e = "" + this.globalText.close + t .getAttribute("aria-label") .split(this.globalText.viewMore)[1]), t.setAttribute("aria-label", e), (t.querySelector(this.opts.moreCtaText).innerText = this.globalText.close), t.setAttribute("aria-expanded", !0), t.classList.add(this.classes.isClose), i.classList.remove(this.classes.isHide), a.classList.remove(this.classes.isHide), n.classList.remove(this.classes.isHide), s.classList.add(this.classes.isOpen)); } onClickTabItemHandler(e) { e.preventDefault(); const t = e.currentTarget; e = t.getAttribute("aria-controls"); const s = this.tabPanels.querySelector("#" + e); (e = s.getBoundingClientRect().top), (e = Math.floor(this.scrollY + e - UTILS.getNavHeight())); this.tabItem.forEach((e) => { e === t ? e.classList.add(this.classes.isActive) : e.classList.remove(this.classes.isActive); }), this.el.classList.add(this.classes.isHold), window.scrollTo({ top: e, behavior: "smooth" }); } onResizeHandler() { this.getCurrentDevice(), clearTimeout(this.resizeTimeout), (this.resizeTimeout = setTimeout(() => { this.onResponsive(); }, 100)), this.currDevice != this.prevDevice && (this.onResponsiveChange(), (this.prevDevice = this.currDevice)); } onResponsive() {} onResponsiveChange() { this.onResponsive(); var e = "mobile" === this.currDevice ? 1 : 4; e !== this.swiper.options.slidesPerView && ((this.swiper.options.slidesPerView = e), this.swiper.destroy(), this.swiper.build()); } onScrollHandler() { (this.scrollY = window.scrollY), null == this.scrollStart && ((this.scrollStart = this.scrollY), this.scrollAnimation()), this.updateImageLoader(), window.clearTimeout(this.scrollEndTime), (this.scrollEndTime = window.setTimeout( this.scrollEnd.bind(this), 150 )); } scrollEnd() { (this.scrollStart = null), this.updateLayout(), this.el.classList.remove(this.classes.isHold), UTILS.cancelAFrame.call(window, this.scrollRequestFrame); } scrollAnimation() { this.updateImageLoader(), this.updateLayout(), (this.scrollRequestFrame = UTILS.requestAFrame.call( window, this.scrollAnimation.bind(this) )); } buildSwiper() { (this.swiper = { instance: [], options: { slidesPerView: "mobile" === this.currDevice ? 1 : 4, observer: !0, observeParents: !0, navigation: { nextEl: ".navigation__cta-next", prevEl: ".navigation__cta-prev", }, pagination: { el: ".swiper-pagination", type: "bullets", clickable: !0, renderBullet: function (e, t) { const s = this.slides[e]; return `
  • `; }, }, }, destroy: () => { 0 !== this.swiper.instance.length && (this.swiper.instance.forEach((e) => { e.destroy(); }), (this.swiper.instance = [])); }, build: () => { 0 < this.swiper.instance.length || this.videoSwiperEl.forEach((e) => { e.querySelectorAll(this.opts.videoSwiperItem).length > this.swiper.options.slidesPerView && this.swiper.instance.push( new Swiper(e, this.swiper.options) ); }); }, }), this.swiper.build(); } outCallback(e, t) { e = this.opts.on[e]; null != e && e(t); } }; })(), (function () { "use strict"; window.ODDYSSEY = window.ODDYSSEY || {}; ODDYSSEY.KeyVisual = class { constructor(e = container, t) { var s = { el: e, classes: {}, headlineEl: ".odyssey-common__headline", subheadlineEl: ".odyssey-common__sub-headline", videoElement: ".video__container", featureHide: "is-feature-hide", }; (this.opts = s), (this.classes = s.classes), (this.el = document.querySelector(e)), this.init(); } init() { null === this.el || this.el.classList.contains(this.opts.featureHide) || (this.setElements(), this.buildVideoPlayer()); } setElements() { (this.headlineEl = this.el.querySelector(this.opts.headlineEl)), (this.subheadlineEl = this.el.querySelector( this.opts.subheadlineEl )), (this.videoElement = this.el.querySelector( this.opts.videoElement )); } buildVideoPlayer() { (this.videoPlayer = { instance: null, build: () => { null === this.videoPlayer.instance && (this.videoPlayer.instance = new ODDYSSEY.VideoPlayer( this.videoElement, { sectionElement: this.opts.el, on: { updateController: (e) => { const t = e.el; var e = e.playState, s = t.getAttribute("data-omni").split(":")[0], i = t.getAttribute("ga-la").split(":")[0], e = (e ? (t.setAttribute("data-omni", s + ":stop"), t.setAttribute("ga-la", i + ":stop")) : (t.setAttribute("data-omni", s + ":play"), t.setAttribute("ga-la", i + ":play")), this.videoElement.classList.contains("paused") || this.videoElement.classList.contains( "playing" )); e ? ((this.headlineEl.style.display = "none"), (this.subheadlineEl.style.display = "none")) : ((this.headlineEl.style.display = "block"), (this.subheadlineEl.style.display = "block")); }, }, } )); }, }), this.videoPlayer.build(); } }; })(), (function () { "use strict"; window.ODDYSSEY = window.ODDYSSEY || {}; ODDYSSEY.Why = class { constructor(e = container, t) { var s = { el: e, swiperEl: ".odyssey-why__logo-wrap", swiperSlide: ".odyssey-why__logo-item", swiperArrow: ".odyssey-why__arrow-cta", nextArrow: ".odyssey-why__arrow-next", prevArrow: ".odyssey-why__arrow-prev", controlsEl: ".odyssey-why__controls-cta", controlsHiddenEl: ".blind", swiperAutoplayStopButtonEl: ".swiper-autoplay-stop-btn", navigaionEl: ".odyssey-why__nav", pagination: ".odyssey-why__pagination", paginationItem: "li", paginationCta: ".s-line-wrap", classes: { isActive: "is-active" }, featureHide: "is-feature-hide", controlsTagging: { "data-omni-type": "microsite_pcontentinter", "data-omni": "carousel:index:", "ga-ca": "indication", "ga-ac": "carousel", "ga-la": "carousel:index:", }, paginationTagging: { "data-omni-type": "microsite_pcontentinter", "data-omni": "carousel:index:", "ga-ca": "indication", "ga-ac": "carousel", "ga-la": "carousel:index:", }, on: { updateImageLoader: null }, }; (this.opts = UTILS.def(s, t || {})), (this.classes = s.classes), (this.el = document.querySelector(e)), this.init(); } init() { null === this.el || this.el.classList.contains(this.opts.featureHide) || (this.setElements(), this.initOpts(), this.initLayout(), this.buildSwiper(), this.paginationControl || this.play || this.select(0), this.bindEvents(), this.checkCarouselShow()); } setElements() { (this.swiperEl = this.el.querySelector(this.opts.swiperEl)), (this.swiperSlide = this.swiperEl.querySelectorAll( this.opts.swiperSlide )), (this.swiperArrow = this.el.querySelectorAll( this.opts.swiperArrow )), (this.nextArrow = this.el.querySelector(this.opts.nextArrow)), (this.prevArrow = this.el.querySelector(this.opts.prevArrow)), (this.controlsEl = this.el.querySelector(this.opts.controlsEl)), (this.controlsHiddenEl = this.controlsEl.querySelector( this.opts.controlsHiddenEl )), (this.swiperAutoplayStopButtonEl = this.el.querySelector( this.opts.swiperAutoplayStopButtonEl )), (this.navigaionEl = this.el.querySelector(this.opts.navigaionEl)), (this.pagination = this.el.querySelector(this.opts.pagination)), (this.paginationItem = this.pagination.querySelectorAll( this.opts.paginationItem )), (this.paginationCta = this.pagination.querySelectorAll( this.opts.paginationCta )); } initOpts() { this.getCurrentDevice(), (this.isNext = !1), (this.isPaginationClick = !1), (this.firstImageLoad = !1), (this.globalText = JSON.parse(this.el.dataset.globalText)), (this.paginationControl = !1), (this.play = !1), (this.playing = !1), (this.autoPlay = !1), (this.autoRolling = !0), (this.infiniteRolling = !0), (this.currentIndex = -1), (this.elapseTime = 0), (this.control = "pause"), (this.transitionDuration = 400), (this.indicators = []), (this.isTouchScreen = !1), (this.isCarouselShow = !1), ("ontouchstart" in window || (window.DocumentTouch && document instanceof DocumentTouch)) && (this.isTouchScreen = !0), this.paginationItem.forEach((e) => { this.indicators.push(parseInt(e.dataset.indicatorDelay)); }), this.animReqId && (cancelAnimationFrame(this.animReqId), (this.animReqId = null)), this.controlsEl && (this.paginationControl = !0), this.autoRolling && (this.play = !1); } initLayout() { this.paginationItem[0].classList.add(this.classes.isActive), this.paginationItem.forEach((e, t) => { const s = this.swiperSlide[t].querySelector( ".odyssey-why__logo-img img" ); var i = s.getAttribute("alt"); e.querySelector(this.opts.paginationCta).setAttribute( "aria-label", `Slide ${t + 1}: ` + i ); }); } bindEvents() { this.onScrollHandler(), window.addEventListener( "resize", this.onResizeHandler.bind(this) ), window.addEventListener("orientationchange", () => { this.checkCarouselShow(); }), window.addEventListener("scroll", () => { this.checkCarouselShow(), this.onScrollHandler(); }), this.swiperEl.addEventListener("mouseenter", (e) => { this.isMouseDown = !0; }), this.swiperEl.addEventListener("mouseleave", (e) => { this.isMouseDown = !1; }), this.swiperAutoplayStopButtonEl.addEventListener("click", () => { this.pauseCarousel(), (this.autoplay = !1); }), this.controlsEl.addEventListener("click", () => { (this.autoPlay = !this.autoPlay), this.handleControl(); }), this.nextArrow.addEventListener("click", () => { (this.isNext = !1), (this.isPaginationClick = !1); }), this.nextArrow.addEventListener("mouseenter", () => { "play" !== this.control || this.autoPlay || (this.autoPlay = !0), this.isTouchScreen || this.pauseCarousel(); }), this.nextArrow.addEventListener("mouseleave", () => { var e = this.el.querySelector(":focus"); this.isTouchScreen || e || this.playCarousel(); }), this.nextArrow.addEventListener("focus", () => { "play" !== this.control || this.autoPlay || (this.autoPlay = !0), this.pauseCarousel(); }), this.nextArrow.addEventListener("focusout", () => { this.isMouseDown || this.playCarousel(); }), this.prevArrow.addEventListener("click", () => { (this.isNext = !1), (this.isPaginationClick = !1); }), this.prevArrow.addEventListener("mouseenter", () => { "play" !== this.control || this.autoPlay || (this.autoPlay = !0), this.isTouchScreen || pauseCarousel(); }), this.prevArrow.addEventListener("mouseleave", () => { var e = this.el.querySelector(":focus"); this.isTouchScreen || e || this.playCarousel(); }), this.prevArrow.addEventListener("focus", () => { "play" !== this.control || this.autoPlay || (this.autoPlay = !0), this.pauseCarousel(); }), this.prevArrow.addEventListener("focusout", () => { this.isMouseDown || this.playCarousel(); }), this.navigaionEl.addEventListener("mouseenter", (e) => { "play" !== this.control || this.autoPlay || (this.autoPlay = !0), this.isTouchScreen || this.pauseCarousel(); }), this.navigaionEl.addEventListener("mouseleave", (e) => { var t = this.el.querySelector(":focus"); this.isTouchScreen || t || this.playCarousel(); }); const e = this.navigaionEl.querySelectorAll("button"), t = (e.forEach((e) => { e.addEventListener("focus", () => { "play" !== this.control || this.autoPlay || (this.autoPlay = !0), this.pauseCarousel(); }), e.addEventListener("focusout", () => { this.isMouseDown || this.playCarousel(); }); }), this.paginationItem.forEach((e) => { e.addEventListener( "click", this.handlePaginationItem.bind(this) ); }), this.swiperEl.querySelectorAll(this.opts.swiperSlide)); t.forEach((e) => { e.addEventListener("mouseenter", (e) => { this.isTouchScreen || this.pauseCarousel(); }), e.addEventListener("mouseleave", () => { var e = this.el.querySelector(":focus"); this.isTouchScreen || e || this.playCarousel(); }); }); } checkCarouselShow() { UTILS.isVisible(this.el) && !this.isCarouselShow ? ((this.isCarouselShow = !0), this.playCarousel()) : !UTILS.isVisible(this.el) && this.isCarouselShow && ((this.isCarouselShow = !1), this.pauseCarousel()); } updateImageLoader() { var e = window.innerHeight, e = UTILS.getScroll().top - e, t = UTILS.getScroll().bottom, s = UTILS.getOffset(this.el); ((t > s.top && e <= s.top) || (e < s.bottom && t > s.bottom) || (e < s.top && t > s.bottom) || (e > s.top && t < s.bottom)) && !this.firstImageLoad && ((e = this.el.querySelectorAll(".js-start-img-src")), this.outCallback("updateImageLoader", e), (this.firstImageLoad = !0)); } updateSlide(e) { this.isNext && this.nextArrow.click(), this.isPaginationClick && this.swiper.instance.slideToLoop(this.currentIndex); } updateProgress(e) { Date.now() - this.start >= this.delay ? this.autoRolling && ((this.isNext = !0), (this.isPaginationClick = !1), e === this.indicators.length - 1 ? this.infiniteRolling ? this.select(0, !1, !0) : this.select(-1) : this.select(e + 1)) : (this.animReqId = requestAnimationFrame(() => this.updateProgress(e) )); } playCarousel() { this.autoPlay && this.handleControl("play"); } pauseCarousel() { this.autoPlay && this.handleControl("pause"); } playStart() { this.paginationControl && !this.controlsEl.classList.contains("is-pause") && (this.controlsEl.classList.add("is-pause"), (this.controlsHiddenEl.innerHTML = this.globalText.stop)), (this.playing = !0), (this.delay = this.indicators[this.currentIndex] - this.elapseTime), 0 < this.delay && ((this.start = Date.now()), (this.animReqId = requestAnimationFrame(() => this.updateProgress(this.currentIndex) ))); } playStop() { this.paginationControl && this.controlsEl.classList.contains("is-pause") && (this.controlsEl.classList.remove("is-pause"), (this.controlsHiddenEl.innerHTML = this.globalText.play)), (this.playing = !1), this.animReqId && ((this.elapseTime += Date.now() - this.start), cancelAnimationFrame(this.animReqId), (this.animReqId = null)); } select(e, t = !1, s) { var i = this.currentIndex; if (i !== e || t) { if ( (this.animReqId && (cancelAnimationFrame(this.animReqId), (this.animReqId = null)), -1 < i && (this.paginationItem[i].classList.contains( this.classes.isActive ) && this.paginationItem[i].classList.remove( this.classes.isActive ), this.paginationCta[i].removeAttribute("title")), e < 0) ) return ( this.paginationControl && this.playStop(), void (this.currentIndex = e) ); (this.currentIndex = e), this.paginationItem[this.currentIndex].classList.contains( this.classes.isActive ) || this.paginationItem[this.currentIndex].classList.add( this.classes.isActive ), this.paginationCta[this.currentIndex].setAttribute( "title", "selected" ), this.updateSlide(); (t = this.transitionDuration), (this.transitionTimer = setTimeout( () => { (this.elapseTime = 0), this.currentIndex === e && ("play" === this.control || (!this.autoRolling && this.play)) && this.playStart(); }, 0 < t ? t : 0 )); } } onAccessibility(e, t) {} offAccessibility(e) {} setSlidesAccessibility(t) { for (let e = 0; e < t.slides.length; e++) e != t.snapIndex ? this.onAccessibility(t.slides[e], e) : this.offAccessibility(t.slides[e], e); } getCurrentDevice() { window.innerWidth >= UTILS.RESPONSIVE.TABLET.WIDTH ? (this.currDevice = "desktop") : window.innerWidth > UTILS.RESPONSIVE.MOBILE.WIDTH && window.innerWidth < UTILS.RESPONSIVE.TABLET.WIDTH ? (this.currDevice = "tablet") : (this.currDevice = "mobile"); } buildSwiper() { (this.swiper = { instance: null, options: { slidesPerView: "mobile" === this.currDevice ? 1 : 3, loop: !0, a11y: !1, loopAdditionalSlides: 1, loopFillGroupWithBlank: !0, navigation: { nextEl: this.nextArrow, prevEl: this.prevArrow }, }, slideChange: () => { this.select(this.swiper.instance.realIndex), this.setSlidesAccessibility(this.swiper.instance); }, destroy: () => { null !== this.swiper.instance && (this.swiper.instance.destroy(), (this.swiper.instance = null)); }, build: () => { null === this.swiper.instance && 1 < this.swiperSlide.length && ((this.swiper.instance = new Swiper( this.swiperEl, this.swiper.options )), (this.autoPlay = !0), this.setPaginationTagging(), window.setTimeout(() => { this.setSlidesAccessibility(this.swiper.instance); }, 600), this.swiper.instance.on( "slideChange", this.swiper.slideChange.bind(this) )); }, }), this.swiper.build(); } setControlTagging(t) { Object.keys(this.opts.controlsTagging).forEach((e) => { "data-omni" == e || "ga-la" == e ? this.controlsEl.setAttribute( e, this.opts.controlsTagging[e] + t ) : this.controlsEl.setAttribute(e, this.opts.controlsTagging[e]); }); } setPaginationTagging() { const e = Array.from(this.paginationCta); e.forEach((t, s) => { Object.keys(this.opts.paginationTagging).forEach((e) => { "data-omni" == e || "ga-la" == e ? t.setAttribute(e, this.opts.paginationTagging[e] + (s + 1)) : t.setAttribute(e, this.opts.paginationTagging[e]); }); }); } handlePaginationItem(e) { (e = e.currentTarget), (e = Array.from(this.paginationItem).indexOf(e)); (this.isNext = !1), (this.isPaginationClick = !0), this.select(e), (this.isPaginationClick = !1); } handleControl(e) { let t = ""; (e ? this.playing || "play" !== e : this.playing) ? (e ? this.playing && "pause" === e : this.playing) && ((this.control = "pause"), this.playStop(), (t = "play")) : ((this.control = "play"), -1 < this.currentIndex ? this.playStart() : this.select(0), (t = "pause")), "" !== t && ((e = "pause" === t ? "stop" : "play"), this.setControlTagging(e)); } onScrollHandler() { this.updateImageLoader(); } onResizeHandler() { this.getCurrentDevice(), clearTimeout(this.resizeTimeout), (this.resizeTimeout = setTimeout(() => { this.onResponsive(); }, 100)), this.currDevice != this.prevDevice && (this.onResponsiveChange(), (this.prevDevice = this.currDevice)); } onResponsive() { this.checkCarouselShow(); } onResponsiveChange() { this.onResponsive(); var e = "mobile" === this.currDevice ? 1 : 3; e !== this.swiper.options.slidesPerView && ((this.swiper.options.slidesPerView = e), this.swiper.destroy(), this.swiper.build()); } outCallback(e, t) { e = this.opts.on[e]; null != e && e(t); } }; })(), (function () { "use strict"; ODDYSSEY.UTILS.RESPONSIVE; new (class { constructor(e = container) { (this.opts = { el: e, wrapEl: "#wrap", keyVisualEl: ".odyssey-kv", whyEl: ".odyssey-why", featureEl: ".odyssey-feature", introducingEl: ".odyssey-introducing", compareEl: ".odyssey-compare", contrastEl: ".cp-high-contrast", subNavEl: "#subnav", }), (this.el = document.querySelector(e)), this.init(); } init() { null !== this.el && (this.buildComponents(), initialize.init()); } buildComponents() { (this.video = ODDYSSEY.video.init()), (this.imageLoader = new ODDYSSEY.ImageLoader(this.opts.el, { loadOption: [ { resolution: 1920, attribute: "data-src-pc" }, { resolution: 1080, attribute: "data-src-tablet" }, { resolution: 767, attribute: "data-src-mobile" }, ], })), (this.videoLoader = new ODDYSSEY.VideoLoader(this.opts.el, { notLoadElement: [".cm-layer"], loadOption: [ { resolution: 1920, attribute: "data-src-pc" }, { resolution: 767, attribute: "data-src-mobile" }, ], })), (this.keyVisual = new ODDYSSEY.KeyVisual(this.opts.keyVisualEl)), (this.why = new ODDYSSEY.Why(this.opts.whyEl, { on: { updateImageLoader: (e) => { this.imageLoader.setResponsiveImage(e); }, }, })), (this.feature = new ODDYSSEY.Feature(this.opts.featureEl)), (this.introducing = new ODDYSSEY.Introducing( this.opts.introducingEl, { on: { updateImageLoader: (e) => { this.imageLoader.setResponsiveImage(e); }, }, } )), (this.compare = new ODDYSSEY.Compare(this.opts.compareEl, { on: { updateImageLoader: (e) => { this.imageLoader.setResponsiveImage(e); }, }, })), (this.contrast = new ODDYSSEY.Contrast(this.opts.contrastEl)); } })(".odyssey"); })(); });