Galaxy Watch6 Classic
Get up to £125 off when you trade in your old watch.*
BUY NOW
PRE-REGISTER
PRE-ORDER
Look your best. Get more done. That's the dream.
We're making it a reality with our largest watch screen yet, custom exercise routines and sleep tracking — finished with a timeless aesthetic.1, 2
Start your everyday wellness journey with a refined classic
A zoomed-in view of Galaxy Watch6 Classic and its rotating bezel getting thinner and the screen getting larger, highlighting the larger display.
More room to be more productive Go to Expansive Screen
A zoomed-in side view of Galaxy Watch6 Classic with the app being displayed changing as the bezel rotates.
Smooth, intuitive scrolling. Any way you spin it Go to Rotating Bezel
Track your workouts to maximise results Go to Exercise
Galaxy Watch6 Classic can be seen displaying the Sleep score screen. The progress bar is advancing as the sleep score '82' appears with the text 'Excellent' below. The sleep animal, a lion, appears at the bottom of the screen.
Understand your habits to improve your sleep Go to Sleep Tracking
Create a look tailored to your style Go to Customisable Aesthetics
Expansive Screen Rotating Bezel Exercise Sleep Tracking Customisable Aesthetics
Close Popup
More screen. Thinner bezel
More screen.
Thinner bezel
Experience enhanced visuals and clear motion graphics on a 20% larger display. The 15% thinner bezel and increased screen size create an aesthetically perfect display-to-bezel ratio — and extra space for every tap and swipe.3, 4
Sapphire Crystal glass.
A clear difference in durability
Designed to withstand daily wear and tear. The display of Galaxy Watch6 Classic is expertly crafted with Sapphire Crystal glass to protect its timeless beauty. And the finishing has IP68 and 5ATM ratings, so you can keep your watch on through all your adventures.5, 6
Take the improved
rotating bezel for a spin1
Embrace the time-defying style of a classic. Inspired by the iconic design of diving watches, the slim spinning bezel on Galaxy Watch6 Classic brings history into the future with more fluid, responsive scrolling for intuitive interaction with the screen. And the circular frame is crafted with sleek stainless steel to elevate every glance at the clock.
Go from boardroom to
weight room in a snap
Swapping bands is as seamless as pressing the quick release button. A convenient guide lets you install the new band with ease — just press gently until you hear a click. Transition from work to workout or back again without breaking a sweat.7
Don't fret even when it's wet
Defy the dangers of dust
More processing power to do more with every minute
Get more done in less time with Galaxy Watch6 Classic's upgraded processor. The 18% faster CPU speed and quick app launch time keep you productive and efficient throughout the day.1
Galaxy Watch6 Classic's processor is being assembled with the bezel and display.
Charge up in record time
With one full charge, the watch lasts up to 40 hours. Fast charge the watch to 45% in just 30 minutes and you're all set to explore the great outdoors or enjoy a well-deserved break in bed.8, 9, 10
Up to 45 %
charged in 30 min
Front view of Galaxy Watch6 Classic can be seen with the charging screen GUI on display. The number is going up from '50%' to '100%', implying the battery is being fully charged.
Hands-on
shooting, hands-free
On the left is Galaxy Z Fold5 on Flex mode. On the right is Galaxy Watch6 Classic displaying the same screen as Galaxy Z Fold5 , illustrating the Camera Controller feature.
Pair your watch with Galaxy Z Fold5 to capture the healthy you up close or from a distance. Galaxy Z Fold5's Flex mode and Camera Controller let you easily switch between photo and video mode, or zoom in and out, all from the comfort of your wrist. Then tap the shutter button on your watch to take a pic.11, 12
Begin with
your watch,
follow up on your phone
Team up with your Galaxy Z Fold5 to monitor your progress seamlessly. Use your Galaxy Watch6 Classic track your workouts and health stats. Then sync your watch with the Samsung Health app to graph your activities on a larger screen, including your daily steps, workout intensity, heart rate and more.11
Daily steps icon and progress bar can be seen. The number of steps go up from 824 to 3,456 and the progress bar advances accordingly. On the right is the Galaxy Z Fold5 displaying the Samsung Health app with the detailed data.
Power to do more in
your day
Keep your day running smoothly, even when you've left your phone behind. You can make calls, send texts and stream music directly from your Galaxy Watch6 Classic. Or locate your smartphone using the Find My Phone feature on your watch.13, 14, 15, 16
Call Text Find My Phone
Call
Text
Find My Phone
International Roaming keeps your world within reach
Galaxy Watch6 Classic can be seen on the wrist of a person wearing a blazer, displaying the Settings screen with the Mobile data and Data roaming feature enabled.
Whether exploring a new city, hiking in the mountains or lounging on a beach, international roaming keeps you connected to loved ones, or help you call for reservations and even access important information.13, 17
Find your way around with GPS
Navigate the world without constantly pulling out your phone. Simply glance at your wrist for GPS navigation on Google Maps, so you can find your way to the gallery opening, or track down a more challenging cycling path.18, 19
Samsung Wallet is always on hand
Access Samsung Wallet right from your Galaxy Watch6 Classic. Make payments, ride public transit, scan membership cards and more. You can even store non-payment items like digital IDs, tickets and keys, to lighten your load and empty out your pockets.18
Wake up to our most advanced sleep tracking
Get detailed sleep tracking with improved analysis and deeper insights to enhance the quality of your sleep. And now you can access Sleep Coaching on your Galaxy Watch6 Classic to build better sleeping habits. Get a good night's sleep when wearing your watch to bed by switching to the Fabric Band. Be sure to put your watch on sleep mode to change the PPG sensor's green LED to invisible infrared LED, dim the display brightness and mute notifications.19, 20, 21, 22, 23, 24, 25
Information on the time spent in each sleep stage can be seen: Awake 35m, REM 1h 30m, Light 4h 30m, Deep 55m. The information is also displayed as a graph.
Better together
Fabric Band
Light and comfortable Optimised for sleep
Learn more
Be prepared with Cycle Tracking
Get in tune with your health and body. Cycle Tracking powered by
uses your nightly skin temperature from your watch, measured while you sleep, to predict the dates of your period and other cycles. Plan ahead and live life to the fullest with Galaxy Watch6 Classic.26
A heart monitoring package that watches over you
The built-in PPG sensor periodically measures heart rate and heart rhythm while you wear your Galaxy Watch6 Classic, and will alert you if your heart rate is too high or too low. It will also send you a notification if it detects an irregular heart rhythm, along with a prompt to take an ECG to examine your heart rhythm in more detail.27, 28, 29
GUI of ECG being measured can be seen, with the measure time changing from 26 to 31 seconds and the bpm changing between 72 and 77. Under the numbers is a moving graph illustrating the heartbeat.
Keep a watchful eye on your blood pressure
Stay informed and stay healthy. Allow your watch to track your daily blood pressure so you can focus on making sound choices for a balanced lifestyle.30, 31, 32, 33
Clock your goals with BIA
Keep an eye on your body composition with detailed Bioelectrical Impedance Analysis (BIA). Set your target weight, body fat, muscle mass and more, then set up an optimised program to help you achieve your health and wellness goals.34, 35, 36
Safety features for your peace of mind
Fall detection should sense if you've suffered a fall and sends an Emergency SOS if you need help. When help arrives, you can access your medical info from the lock screen with a touch of a button to aid emergency services.37, 38, 39, 40
Meet your Personalised HR Zone
Your watch can assess your fitness capacity to determine your personal HR Zone. If there's a specific HR zone you want to hit, you can set the goal manually. As you workout you'll be alerted when you enter your target HR Zone, whether that's fat burning, cardio or high-intensity training. Move out of the zone, and it'll alert you too — letting you adjust your effort accordingly.41
5 different curved lines that form a U-shape can be seen. Each is in different shade of colour from yellow to red. A white dot placed in the middle of each line moves along the lines as a same-coloured heart and heart rate number indicating the Personalised HR Zone changes. GUI of Personalised HR Zone can be seen, with the function button enabled and 5 HR Zones. With the increasing heart rate from 90 to 114, 125, 158 and 174, the selected zone changes from 1 to 5, respectively.
Start a healthy competition amongst friends and family
Create challenges and let your competitive side shine. Invite your workout buddies, and encourage each other to go the extra mile. Celebrate progress, achievements and personal bests together.
Exercise tracking - Chart your growth to peak performance
Gain valuable insights into your progress and achievements with Galaxy Watch6 Classic. Track over 90 different workouts, or you can even create your own custom workout, to log your daily activity and monitor your progress. You can activate auto detect for select workouts like running, walking, and now, cycling to go straight from warm up mode to beast mode.42, 43, 44
Start your own friendly fitness challenges
Boost your workouts by challenging your crew to group exercises. Motivate each other along the way to meet your fitness goals together.
Change plans?
Change bands.
Change faces
Create your own bespoke look for Galaxy Watch6 Classic. Choose from a wide collection of bands to take your look from rugged to classy, depending on your mood. Customise your watch face with a sleek design or compilations to quickly access your favourite apps.45
Switch, upgrade and trade.
It's all easy
Trade in and save
Trade in your old smartwatch for an instant discount on the new Galaxy Watch6 Classic.
LEARN MORE
Watch how easy switching is
Smart Switch is the sure and secure way to transfer your data to Galaxy. Take all your apps, watch faces, settings and more, with you when you make the switch.46, 47, 48, 49
LEARN MORE
It's time to find your Watch
-
Galaxy Watch6 Classic
Buy Now
Learn More
-
Display Sapphire Crystal
-
Screen Size 37.3mm | 33.3mm
-
Fast Charge9, 10
-
Infrared
Temperature
Sensor - Material Stainless Steel
- Battery
(typical)8 425mAh |
300mAh - Sleep
Tracking - Cycle
Tracking - Body
Composition - Route
Workout /
Track Back - Durability 5ATM+IP68/
MIL-STD-810H - Size 47mm | 43mm
- Weight 59.0g | 52.0g
-
-
Galaxy Watch6
Buy Now
Learn More
-
Display Sapphire Crystal
-
Screen Size 37.3mm | 33.3mm
-
Fast Charge9, 10
-
Infrared
Temperature
Sensor - Material Armor
Aluminum - Battery
(typical)8 425mAh |
300mAh - Sleep
Tracking - Cycle
Tracking - Body
Composition - Route
Workout /
Track Back - Durability 5ATM+IP68/
MIL-STD-810H - Size 44mm | 40mm
- Weight 33.3g | 28.7g
-
-
Galaxy Watch4 Classic
Buy Now
Learn More
-
Display Corning®
Gorilla® Glass
with DX+ -
Screen Size 34.6mm | 30.4mm
-
Fast Charge9, 10
-
Infrared
Temperature
Sensor - Material Stainless Steel
- Battery
(typical)50 361mAh |
247mAh - Sleep
Tracking - Cycle
Tracking - Body
Composition - Route
workout /
Track back - Durability 5ATM+IP68/
MIL-STD-810G - Size 46mm | 42mm
- Weight 52.0g | 46.5g
-
-
Galaxy Watch5 Pro
Buy Now
Learn More
-
Display Sapphire Crystal
-
Screen Size 34.6mm
-
Fast Charge9, 10
-
Infrared
Temperature
Sensor - Material Titanium
- Battery
(typical)51 590mAh - Sleep
Tracking - Cycle
Tracking - Body
Composition - Route
Workout /
Track Back - Durability 5ATM+IP68/
MIL-STD-810H - Size 45mm
- Weight 46.5g
-
Join the Flip side
Go to galaxy Z flip5
Unfold your world
Go to galaxy Z fold5
Galaxy
Tab S9 | S9+ | S9
Ultra
Go to galaxy tab s9
Galaxy Watch6
Go to galaxy watch6
C C
- *Purchase by 28/09/23. £125 value based on Watch5 Pro. Values can vary by model and condition of Trade In device. Charges apply if you fail to send us your Trade In device.
- Compared to Galaxy Watch4 Classic.
- The screen size comparison is based on Galaxy Watch6 Classic 43mm model.
- The screen size and bezel width comparisons are based on Galaxy Watch6 Classic 43mm model.
- Galaxy Watch6 Classic 43mm model display size is compared to that of Galaxy Watch4 Classic 42mm model.
- Galaxy Watch6 Classic is water resistant to up to 50 meters in depth for 10 minutes under the 5ATM rating. It is not suitable for diving or high-pressure water activities. If the device or your hands are wet, they must be dried thoroughly prior to handling. Galaxy Watch6 Classic provides ingress protection (IP68) against dust and fresh water to a maximum of 1.5 meters for up to 30 minutes. Refer to user manual for further information, including care/use instructions.
- Based on Vickers hardness measured with constant load of 200gf.
- Availability of Watch bands may vary by country or region. Additional Watch bands are sold separately.
- Actual battery life may vary depending on network environment, usage patterns and other factors.
- Testing conducted by Samsung using pre-released version of Galaxy Watch6 Classic (BT & LTE), each paired to a Samsung phone; all devices tested with prerelease software, Galaxy Watch Magnetic Fast Charging USB C Cable (EP-OR900), and Samsung 25W USB C Power Adapter (EP-TA800). Charge time varies with region, settings, usage pattern and environmental factors; actual results may vary.
- Samsung 25W USB C Power Adapter (EP-TA800) sold separately.
- Galaxy Z Fold5 sold separately.
- Camera Controller is supported on Galaxy Watch4 and later released Galaxy Watch models when paired with Galaxy S9 Series and later. Camera Controller zoom feature is available on Samsung Galaxy Watch4 series and later released Galaxy Watch models that are paired with a Galaxy S series, Galaxy Note series and Galaxy Z series smartphone running One UI 5.1 or above with Camera Controller support.
- LTE connection required to use select features on Galaxy Watch6 Classic. LTE connectivity only available in LTE models.
- Bluetooth models must be paired with a compatible mobile device connected to a mobile network.
- Not all apps and services are compatible with Wear OS.
- Find My Phone is supported when Galaxy Watch in Wear OS is paired with a smartphone running Android 10 or above. To use this feature, the paired smartphone should be signed in to Samsung Account.
- Enabling International Roaming may result in roaming charges depending on your smartphone carrier's plan.
- GPS function requires internet connection. Can be used on LTE models without paired smartphone. Non-LTE models require Bluetooth connection to paired smartphone.
- By enabling GPS, your current location information may be gathered and used by Galaxy apps and third-party apps to provide location-based services.
- The availability of Samsung Wallet and its features may vary by country or region.
- Requires Samsung Health app version 6.24 or later.
- Galaxy Watch6 Classic must be paired with a Samsung Galaxy smartphone with Android 10.0 and minimum 1.5GB Memory.
- Sleep tracking features are intended for general wellness and fitness purposes only. Not intended for use in detection, diagnosis, treatment of any medical condition or sleep disorder. The measurements are for your personal reference only. Please consult a medical professional for advice.
- Sleep Coaching requires sleep data of at least 7 days, including 2 days off.
- Availability of blood oxygen level feature may vary by country or regions.
- Invisible LED is enabled when Sleep mode is turned on.
- Fabric Band is sold separately and compatible with Galaxy Watch4 and later released Galaxy Watch series. Availability of watch bands may vary by country/region or carrier.
- Cycle Tracking is available for cycle and period prediction which is powered by Natural Cycles. Due to country restrictions in obtaining approval/registration as a Software as a medical device (SaMD), Cycle Tracking based on skin temperature only works on phones and watches purchased in the countries where the service is currently available. NOT INTENDED FOR CONTRACEPTION. If you are currently taking hormonal birth control or undergoing hormonal treatment that inhibits ovulation, this service will not be useful for tracking ovulation. Predictions displayed are for personal reference only. To improve the accuracy of predictions, it is recommended to wear your watch for at least 4 hours during sleep, 5 times a week. Predictions may vary depending on the proper use of your watch, input data, environmental conditions, etc. Intended for users 18 years old and above. Users should not interpret or take clinical action based on the predictions made without consultation of a qualified healthcare professional. Requires latest version of Samsung Health app.
- HR alerts is intended for general wellness and fitness purposes only. Not intended for use in detection, diagnosis, treatment, monitoring or management of any medical condition or disease. Any health-related information accessed through the device and application should not be treated as medical advice. Users should seek any medical advice from a physician.
- Availability of Irregular Heart Rhythm Notification (IHRN) feature may vary by country or region. Due to country restrictions in obtaining approval/registration as a Software as a medical device (SaMD), it only works on watches and smartphones purchased in the countries where service is currently available (however, service may be restricted when users travel to non-service countries). Not intended to provide a notification on every episode of irregular rhythm suggestive of AFib and the absence of a notification is not intended to indicate no disease process is present. It is not intended for users with other known arrhythmias or users under 22 years old. Users should not interpret or take clinical action based on the predictions made without consultation of a qualified healthcare professional.
- Availability of ECG app may vary by country or region. Due to country restrictions in obtaining approval/registration as a Software as a medical device (SaMD), ECG app only works on watches and smartphones purchased in the countries where service is currently available (however, service may be restricted when users travel to non-service countries). Check out https://www.samsung.com/apps/samsung-health-monitor for more information and latest update on service countries. It is not intended for users by people under 22 years old. Users should not interpret or take clinical action based on the device output without consultation of a qualified healthcare professional.
- For accurate blood pressure readings, a calibration is required every 4 weeks by BP monitor & arm cuff. Requires a Galaxy smartphone running Android 9.0 or above.
- Availability of Blood pressure app may vary by country or region. Due to country restrictions in obtaining approval/registration as a Software as a medical device (SaMD), Blood pressure app only works on watches and smartphones purchased in the countries where service is currently available (however, service may be restricted when users travel to non-service countries). Check out https://www.samsung.com/apps/samsung-health-monitor for more information and latest update on service countries. It is not intended for use by people under 22 years old.
- Users should measure their blood pressure when at rest, as they would do with a traditional cuff, and refrain from measuring when they are working out, smoking, or drinking. Blood pressure app is not intended for any diagnostic purposes regarding hypertension or other heart conditions or users under 22 years old. Users should not interpret or take clinical action based on the device output without consultation of a qualified healthcare professional. Blood pressure app is not intended to replace traditional methods of diagnosis or treatment.
- Measured blood pressure history can be reviewed within the Samsung Health Monitor app on a paired smartphone.
- Not intended for use in detection, diagnosis, treatment. Intended for general wellness and fitness purposes only.
- Body composition is only supported in Samsung Galaxy Watch4 series and later released Galaxy Watch models. Body composition should not be used if you have an implanted pacemaker or other implanted medical devices, or if you are pregnant. Any health-related information accessed through the device and application should not be treated as medical advice. Measurement results may not be accurate if you are under 20 years old. The measurements are for your personal reference only. Please consult a medical professional for advice.
- Compatible smartphones and available features may vary by country/region, carrier or device.
- Galaxy Watch6 Classic must have the latest Wear OS version installed.
- Detect falls feature must be enabled on the Galaxy Wearable app on your Galaxy smartphone to use Fall Detection on the watch.
- Emergency call requires network connection or pairing with Galaxy smartphone.
- Information gathered from the watch, Samsung Health app or related software is not intended to diagnose, cure, mitigate, treat or prevent disease or other conditions.
- To update the ranges of each HR zone when running based on cardiopulmonary capabilities, it is required to run outdoors for more than 10 minutes with constant speed of 4km/h or faster.
- Compatible smartphones and available features may vary by country/region, carrier or device.
- Auto detect workouts must be turned on in Settings. Auto detect is not available for all workouts.
- Only available on Galaxy Watch6 series and must be paired with a compatible mobile device.
- Availability of Watch bands may vary by country or region. Additional Watch bands are sold separately.
- Discount values for broken devices will be considerably lower than those for fully-functional devices, unless there is a separate promotion running that specifically alters the value of broken devices.
- Purchase from Samsung.com before DD/MM/YY. £XX value based on any XXX (brand, product) smartwatch. Charges apply if you fail to send us your trade-in device. T&Cs apply.
- Bluetooth, Wi-Fi or LTE connection is required.
- Third-party apps must be downloaded separately.
- Compatible with Galaxy Watch in Wear OS powered by Samsung. Requires pairing with smartphone with latest version of Smart Switch installed.
- Data and content available for transfer may vary by OS.
- The typical capacity has been tested under third party laboratory conditions. The typical capacity is the estimated average capacity considering the deviation in battery capacity among the battery samples tested under the IEC 61960-3 standard.
- Testing conducted by Samsung in June 2022 using pre-released version of Galaxy Watch5 (BT & LTE), each paired to a Samsung phone; all devices tested with prerelease software, Galaxy Watch Magnetic Fast Charging USB C Cable (EP-OR900), and Samsung 25W USB C Power Adapter (EP-TA800). Charge time varies with region, settings, usage pattern and environmental factors; actual results may vary.
- The typical capacity has been tested under third party laboratory conditions. The typical capacity is the estimated average capacity considering the deviation in battery capacity among the battery samples tested under the IEC 61960-3 standard. Rated capacity is 573mAh. Actual battery life may vary depending on network environment, usage patterns and other factors.
" ) return ( e.attr("data-swiper-slide-index") || e.attr("data-swiper-slide-index", t), i.cache && (this.virtual.cache[t] = e), e ) }, appendSlide: function (e) { if ("object" == typeof e && "length" in e) for (var t = 0; t < e.length; t += 1) e[t] && this.virtual.slides.push(e[t]) else this.virtual.slides.push(e) this.virtual.update(!0) }, prependSlide: function (e) { var s, a, t = this.activeIndex, i = t + 1, n = 1 if (Array.isArray(e)) { for (var r = 0; r < e.length; r += 1) e[r] && this.virtual.slides.unshift(e[r]) ;(i = t + e.length), (n = e.length) } else this.virtual.slides.unshift(e) this.params.virtual.cache && ((s = this.virtual.cache), (a = {}), Object.keys(s).forEach(function (e) { var t = s[e], i = t.attr("data-swiper-slide-index") i && t.attr("data-swiper-slide-index", parseInt(i, 10) + 1), (a[parseInt(e, 10) + n] = t) }), (this.virtual.cache = a)), this.virtual.update(!0), this.slideTo(i, 0) }, removeSlide: function (e) { if (null != e) { var t = this.activeIndex if (Array.isArray(e)) for (var i = e.length - 1; 0 <= i; --i) this.virtual.slides.splice(e[i], 1), this.params.virtual.cache && delete this.virtual.cache[e[i]], e[i] < t && --t, (t = Math.max(t, 0)) else this.virtual.slides.splice(e, 1), this.params.virtual.cache && delete this.virtual.cache[e], e < t && --t, (t = Math.max(t, 0)) this.virtual.update(!0), this.slideTo(t, 0) } }, removeAllSlides: function () { ;(this.virtual.slides = []), this.params.virtual.cache && (this.virtual.cache = {}), this.virtual.update(!0), this.slideTo(0, 0) }, }, y = { name: "virtual", params: { virtual: { enabled: !1, slides: [], cache: !0, renderSlide: null, renderExternal: null, addSlidesBefore: 0, addSlidesAfter: 0, }, }, create: function () { X.extend(this, { virtual: { update: w.update.bind(this), appendSlide: w.appendSlide.bind(this), prependSlide: w.prependSlide.bind(this), removeSlide: w.removeSlide.bind(this), removeAllSlides: w.removeAllSlides.bind(this), renderSlide: w.renderSlide.bind(this), slides: this.params.virtual.slides, cache: {}, }, }) }, on: { beforeInit: function () { var e this.params.virtual.enabled && (this.classNames.push( this.params.containerModifierClass + "virtual" ), X.extend(this.params, (e = { watchSlidesProgress: !0 })), X.extend(this.originalParams, e), this.params.initialSlide || this.virtual.update()) }, setTranslate: function () { this.params.virtual.enabled && this.virtual.update() }, }, }, K = { handle: function (e) { var t = this.rtlTranslate, i = (e = e.originalEvent ? e.originalEvent : e).keyCode || e.charCode if ( !this.allowSlideNext && ((this.isHorizontal() && 39 === i) || (this.isVertical() && 40 === i) || 34 === i) ) return !1 if ( !this.allowSlidePrev && ((this.isHorizontal() && 37 === i) || (this.isVertical() && 38 === i) || 33 === i) ) return !1 if ( !( e.shiftKey || e.altKey || e.ctrlKey || e.metaKey || (c.activeElement && c.activeElement.nodeName && ("input" === c.activeElement.nodeName.toLowerCase() || "textarea" === c.activeElement.nodeName.toLowerCase())) ) ) { if ( this.params.keyboard.onlyInViewport && (33 === i || 34 === i || 37 === i || 39 === i || 38 === i || 40 === i) ) { var s = !1 if ( 0 < this.$el.parents("." + this.params.slideClass).length && 0 === this.$el.parents("." + this.params.slideActiveClass).length ) return var a = U.innerWidth, n = U.innerHeight, r = this.$el.offset() t && (r.left -= this.$el[0].scrollLeft) for ( var o = [ [r.left, r.top], [r.left + this.width, r.top], [r.left, r.top + this.height], [r.left + this.width, r.top + this.height], ], l = 0; l < o.length; l += 1 ) { var h = o[l] 0 <= h[0] && h[0] <= a && 0 <= h[1] && h[1] <= n && (s = !0) } if (!s) return } this.isHorizontal() ? ((33 !== i && 34 !== i && 37 !== i && 39 !== i) || (e.preventDefault ? e.preventDefault() : (e.returnValue = !1)), (((34 !== i && 39 !== i) || t) && ((33 !== i && 37 !== i) || !t)) || this.slideNext(), (((33 !== i && 37 !== i) || t) && ((34 !== i && 39 !== i) || !t)) || this.slidePrev()) : ((33 !== i && 34 !== i && 38 !== i && 40 !== i) || (e.preventDefault ? e.preventDefault() : (e.returnValue = !1)), (34 !== i && 40 !== i) || this.slideNext(), (33 !== i && 38 !== i) || this.slidePrev()), this.emit("keyPress", i) } }, enable: function () { this.keyboard.enabled || (S(c).on("keydown", this.keyboard.handle), (this.keyboard.enabled = !0)) }, disable: function () { this.keyboard.enabled && (S(c).off("keydown", this.keyboard.handle), (this.keyboard.enabled = !1)) }, }, E = { name: "keyboard", params: { keyboard: { enabled: !1, onlyInViewport: !0 } }, create: function () { X.extend(this, { keyboard: { enabled: !1, enable: K.enable.bind(this), disable: K.disable.bind(this), handle: K.handle.bind(this), }, }) }, on: { init: function () { this.params.keyboard.enabled && this.keyboard.enable() }, destroy: function () { this.keyboard.enabled && this.keyboard.disable() }, }, } function C() { for (var i, e = [], t = arguments.length; t--; ) e[t] = arguments[t] ;(i = (i = 1 === e.length && e[0].constructor && e[0].constructor === Object ? e[0] : ((n = e[0]), e[1])) || {}), (i = X.extend({}, i)), n && !i.el && (i.el = n), d.call(this, i), Object.keys($).forEach(function (t) { Object.keys($[t]).forEach(function (e) { C.prototype[e] || (C.prototype[e] = $[t][e]) }) }) var s, a, n, r = this, o = (void 0 === r.modules && (r.modules = {}), Object.keys(r.modules).forEach(function (e) { var t, e = r.modules[e] e.params && ((t = Object.keys(e.params)[0]), "object" == typeof (e = e.params[t]) && null !== e && t in i && "enabled" in e && (!0 === i[t] && (i[t] = { enabled: !0 }), "object" != typeof i[t] || "enabled" in i[t] || (i[t].enabled = !0), i[t] || (i[t] = { enabled: !1 }))) }), X.extend({}, R)), l = (r.useModulesParams(o), (r.params = X.extend({}, o, Y, i)), (r.originalParams = X.extend({}, r.params)), (r.passedParams = X.extend({}, i)), (r.$ = S)(r.params.el)) if ((n = l[0])) return 1 < l.length ? ((s = []), l.each(function (e, t) { t = X.extend({}, i, { el: t }) s.push(new C(t)) }), s) : ((n.swiper = r), l.data("swiper", r), n && n.shadowRoot && n.shadowRoot.querySelector ? ((a = S( n.shadowRoot.querySelector("." + r.params.wrapperClass) )).children = function (e) { return l.children(e) }) : (a = l.children("." + r.params.wrapperClass)), X.extend(r, { $el: l, el: n, $wrapperEl: a, wrapperEl: a[0], classNames: [], slides: S(), slidesGrid: [], snapGrid: [], slidesSizesGrid: [], isHorizontal: function () { return "horizontal" === r.params.direction }, isVertical: function () { return "vertical" === r.params.direction }, rtl: "rtl" === n.dir.toLowerCase() || "rtl" === l.css("direction"), rtlTranslate: "horizontal" === r.params.direction && ("rtl" === n.dir.toLowerCase() || "rtl" === l.css("direction")), wrongRTL: "-webkit-box" === a.css("display"), activeIndex: 0, realIndex: 0, isBeginning: !0, isEnd: !1, translate: 0, previousTranslate: 0, progress: 0, velocity: 0, animating: !1, allowSlideNext: r.params.allowSlideNext, allowSlidePrev: r.params.allowSlidePrev, touchEvents: ((o = b.pointerEvents ? ["pointerdown", "pointermove", "pointerup"] : ["mousedown", "mousemove", "mouseup"]), (r.touchEventsTouch = { start: (n = [ "touchstart", "touchmove", "touchend", "touchcancel", ])[0], move: n[1], end: n[2], cancel: n[3], }), (r.touchEventsDesktop = { start: o[0], move: o[1], end: o[2], }), b.touch || !r.params.simulateTouch ? r.touchEventsTouch : r.touchEventsDesktop), touchEventsData: { isTouched: void 0, isMoved: void 0, allowTouchCallbacks: void 0, touchStartTime: void 0, isScrolling: void 0, currentTranslate: void 0, startTranslate: void 0, allowThresholdMove: void 0, formElements: "input, select, option, textarea, button, video", lastClickTime: X.now(), clickTimeout: void 0, velocities: [], allowMomentumBounce: void 0, isTouchEvent: void 0, startMoving: void 0, }, allowClick: !0, allowTouchMove: r.params.allowTouchMove, touches: { startX: 0, startY: 0, currentX: 0, currentY: 0, diff: 0, }, imagesToLoad: [], imagesLoaded: 0, }), r.useModules(), r.params.init && r.init(), r) } var x = { lastScrollTime: X.now(), lastEventBeforeSnap: void 0, recentWheelEvents: [], event: function () { return -1 < U.navigator.userAgent.indexOf("firefox") ? "DOMMouseScroll" : ((t = "onwheel" in c) || ((e = c.createElement("div")).setAttribute( "onwheel", "return;" ), (t = "function" == typeof e.onwheel)), (t = !t && c.implementation && c.implementation.hasFeature && !0 !== c.implementation.hasFeature("", "") ? c.implementation.hasFeature("Events.wheel", "3.0") : t) ? "wheel" : "mousewheel") var e, t }, normalize: function (e) { var t = 0, i = 0, s = 0, a = 0 return ( "detail" in e && (i = e.detail), "wheelDelta" in e && (i = -e.wheelDelta / 120), "wheelDeltaY" in e && (i = -e.wheelDeltaY / 120), "wheelDeltaX" in e && (t = -e.wheelDeltaX / 120), "axis" in e && e.axis === e.HORIZONTAL_AXIS && ((t = i), (i = 0)), (s = 10 * t), (a = 10 * i), "deltaY" in e && (a = e.deltaY), "deltaX" in e && (s = e.deltaX), e.shiftKey && !s && ((s = a), (a = 0)), (s || a) && e.deltaMode && (1 === e.deltaMode ? ((s *= 40), (a *= 40)) : ((s *= 800), (a *= 800))), { spinX: (t = s && !t ? (s < 1 ? -1 : 1) : t), spinY: (i = a && !i ? (a < 1 ? -1 : 1) : i), pixelX: s, pixelY: a, } ) }, handleMouseEnter: function () { this.mouseEntered = !0 }, handleMouseLeave: function () { this.mouseEntered = !1 }, handle: function (e) { var t = e, i = this, s = i.params.mousewheel if ( (i.params.cssMode && t.preventDefault(), !i.mouseEntered && !s.releaseOnEdges) ) return !0 t.originalEvent && (t = t.originalEvent) var a = 0, n = i.rtlTranslate ? -1 : 1, r = x.normalize(t) if (s.forceToAxis) if (i.isHorizontal()) { if (!(Math.abs(r.pixelX) > Math.abs(r.pixelY))) return !0 a = r.pixelX * n } else { if (!(Math.abs(r.pixelY) > Math.abs(r.pixelX))) return !0 a = r.pixelY } else a = Math.abs(r.pixelX) > Math.abs(r.pixelY) ? -r.pixelX * n : -r.pixelY if (0 === a) return !0 if ((s.invert && (a = -a), i.params.freeMode)) { var o = { time: X.now(), delta: Math.abs(a), direction: Math.sign(a), }, n = i.mousewheel.lastEventBeforeSnap, r = n && o.time < n.time + 500 && o.delta <= n.delta && o.direction === n.direction if (!r) { ;(i.mousewheel.lastEventBeforeSnap = void 0), i.params.loop && i.loopFix() var l, h, n = i.getTranslate() + a * s.sensitivity, s = i.isBeginning, d = i.isEnd if ( ((n = n >= i.minTranslate() ? i.minTranslate() : n) <= i.maxTranslate() && (n = i.maxTranslate()), i.setTransition(0), i.setTranslate(n), i.updateProgress(), i.updateActiveIndex(), i.updateSlidesClasses(), ((!s && i.isBeginning) || (!d && i.isEnd)) && i.updateSlidesClasses(), i.params.freeModeSticky && (clearTimeout(i.mousewheel.timeout), (i.mousewheel.timeout = void 0), 15 <= (l = i.mousewheel.recentWheelEvents).length && l.shift(), (s = l.length ? l[l.length - 1] : void 0), (d = l[0]), l.push(o), s && (o.delta > s.delta || o.direction !== s.direction) ? l.splice(0) : 15 <= l.length && o.time - d.time < 500 && 1 <= d.delta - o.delta && o.delta <= 6 && ((h = 0 < a ? 0.8 : 0.2), (i.mousewheel.lastEventBeforeSnap = o), l.splice(0), (i.mousewheel.timeout = X.nextTick(function () { i.slideToClosest(i.params.speed, !0, void 0, h) }, 0))), i.mousewheel.timeout || (i.mousewheel.timeout = X.nextTick(function () { ;(i.mousewheel.lastEventBeforeSnap = o), l.splice(0), i.slideToClosest(i.params.speed, !0, void 0, 0.5) }, 500))), r || i.emit("scroll", t), i.params.autoplay && i.params.autoplayDisableOnInteraction && i.autoplay.stop(), n === i.minTranslate() || n === i.maxTranslate()) ) return !0 } } else { ;(s = { time: X.now(), delta: Math.abs(a), direction: Math.sign(a), raw: e, }), (d = i.mousewheel.recentWheelEvents), (r = (2 <= d.length && d.shift(), d.length ? d[d.length - 1] : void 0)) if ( (d.push(s), (!r || s.direction !== r.direction || s.delta > r.delta) && i.mousewheel.animateSlider(s), i.mousewheel.releaseScroll(s)) ) return !0 } return ( t.preventDefault ? t.preventDefault() : (t.returnValue = !1), !1 ) }, animateSlider: function (e) { return ( (6 <= e.delta && X.now() - this.mousewheel.lastScrollTime < 60) || (e.direction < 0 ? (this.isEnd && !this.params.loop) || this.animating || (this.slideNext(), this.emit("scroll", e.raw)) : (this.isBeginning && !this.params.loop) || this.animating || (this.slidePrev(), this.emit("scroll", e.raw)), (this.mousewheel.lastScrollTime = new U.Date().getTime()), !1) ) }, releaseScroll: function (e) { var t = this.params.mousewheel if (e.direction < 0) { if (this.isEnd && !this.params.loop && t.releaseOnEdges) return !0 } else if ( this.isBeginning && !this.params.loop && t.releaseOnEdges ) return !0 return !1 }, enable: function () { var e = x.event() if (this.params.cssMode) return ( this.wrapperEl.removeEventListener(e, this.mousewheel.handle), !0 ) if (!e) return !1 if (this.mousewheel.enabled) return !1 var t = this.$el return ( (t = "container" !== this.params.mousewheel.eventsTarged ? S(this.params.mousewheel.eventsTarged) : t).on("mouseenter", this.mousewheel.handleMouseEnter), t.on("mouseleave", this.mousewheel.handleMouseLeave), t.on(e, this.mousewheel.handle), (this.mousewheel.enabled = !0) ) }, disable: function () { var e = x.event() if (this.params.cssMode) return ( this.wrapperEl.addEventListener(e, this.mousewheel.handle), !0 ) if (!e) return !1 if (!this.mousewheel.enabled) return !1 var t = this.$el return ( (t = "container" !== this.params.mousewheel.eventsTarged ? S(this.params.mousewheel.eventsTarged) : t).off(e, this.mousewheel.handle), !(this.mousewheel.enabled = !1) ) }, }, L = { update: function () { var e, t, i = this.params.navigation this.params.loop || ((e = (t = this.navigation).$nextEl), (t = t.$prevEl) && 0 < t.length && (this.isBeginning ? t.addClass(i.disabledClass) : t.removeClass(i.disabledClass), t[ this.params.watchOverflow && this.isLocked ? "addClass" : "removeClass" ](i.lockClass)), e && 0 < e.length && (this.isEnd ? e.addClass(i.disabledClass) : e.removeClass(i.disabledClass), e[ this.params.watchOverflow && this.isLocked ? "addClass" : "removeClass" ](i.lockClass))) }, onPrevClick: function (e) { e.preventDefault(), (this.isBeginning && !this.params.loop) || this.slidePrev() }, onNextClick: function (e) { e.preventDefault(), (this.isEnd && !this.params.loop) || this.slideNext() }, init: function () { var e, t, i = this.params.navigation ;(i.nextEl || i.prevEl) && (i.nextEl && ((e = S(i.nextEl)), this.params.uniqueNavElements && "string" == typeof i.nextEl && 1 < e.length && 1 === this.$el.find(i.nextEl).length && (e = this.$el.find(i.nextEl))), i.prevEl && ((t = S(i.prevEl)), this.params.uniqueNavElements && "string" == typeof i.prevEl && 1 < t.length && 1 === this.$el.find(i.prevEl).length && (t = this.$el.find(i.prevEl))), e && 0 < e.length && e.on("click", this.navigation.onNextClick), t && 0 < t.length && t.on("click", this.navigation.onPrevClick), X.extend(this.navigation, { $nextEl: e, nextEl: e && e[0], $prevEl: t, prevEl: t && t[0], })) }, destroy: function () { var e = this.navigation, t = e.$nextEl, e = e.$prevEl t && t.length && (t.off("click", this.navigation.onNextClick), t.removeClass(this.params.navigation.disabledClass)), e && e.length && (e.off("click", this.navigation.onPrevClick), e.removeClass(this.params.navigation.disabledClass)) }, }, A = { update: function () { var e = this.rtl, s = this.params.pagination if ( s.el && this.pagination.el && this.pagination.$el && 0 !== this.pagination.$el.length ) { var a, t = ( this.virtual && this.params.virtual.enabled ? this.virtual : this ).slides.length, i = this.pagination.$el, n = this.params.loop ? Math.ceil( (t - 2 * this.loopedSlides) / this.params.slidesPerGroup ) : this.snapGrid.length if ( (this.params.loop ? ((a = Math.ceil( (this.activeIndex - this.loopedSlides) / this.params.slidesPerGroup )) > t - 1 - 2 * this.loopedSlides && (a -= t - 2 * this.loopedSlides), n - 1 < a && (a -= n), a < 0 && "bullets" !== this.params.paginationType && (a = n + a)) : (a = void 0 !== this.snapIndex ? this.snapIndex : this.activeIndex || 0), "bullets" === s.type && this.pagination.bullets && 0 < this.pagination.bullets.length) ) { var r, o, l, h = this.pagination.bullets if ( (s.dynamicBullets && ((this.pagination.bulletSize = h .eq(0) [this.isHorizontal() ? "outerWidth" : "outerHeight"](!0)), i.css( this.isHorizontal() ? "width" : "height", this.pagination.bulletSize * (s.dynamicMainBullets + 4) + "px" ), 1 < s.dynamicMainBullets && void 0 !== this.previousIndex && ((this.pagination.dynamicBulletIndex += a - this.previousIndex), this.pagination.dynamicBulletIndex > s.dynamicMainBullets - 1 ? (this.pagination.dynamicBulletIndex = s.dynamicMainBullets - 1) : this.pagination.dynamicBulletIndex < 0 && (this.pagination.dynamicBulletIndex = 0)), (r = a - this.pagination.dynamicBulletIndex), (l = ((o = r + (Math.min(h.length, s.dynamicMainBullets) - 1)) + r) / 2)), h.removeClass( s.bulletActiveClass + " " + s.bulletActiveClass + "-next " + s.bulletActiveClass + "-next-next " + s.bulletActiveClass + "-prev " + s.bulletActiveClass + "-prev-prev " + s.bulletActiveClass + "-main" ), 1 < i.length) ) h.each(function (e, t) { var t = S(t), i = t.index() i === a && t.addClass(s.bulletActiveClass), s.dynamicBullets && (r <= i && i <= o && t.addClass(s.bulletActiveClass + "-main"), i === r && t .prev() .addClass(s.bulletActiveClass + "-prev") .prev() .addClass(s.bulletActiveClass + "-prev-prev"), i === o && t .next() .addClass(s.bulletActiveClass + "-next") .next() .addClass(s.bulletActiveClass + "-next-next")) }) else { var t = h.eq(a), d = t.index() if ((t.addClass(s.bulletActiveClass), s.dynamicBullets)) { for (var t = h.eq(r), c = h.eq(o), u = r; u <= o; u += 1) h.eq(u).addClass(s.bulletActiveClass + "-main") if (this.params.loop) if (d >= h.length - s.dynamicMainBullets) { for (var p = s.dynamicMainBullets; 0 <= p; --p) h.eq(h.length - p).addClass( s.bulletActiveClass + "-main" ) h.eq(h.length - s.dynamicMainBullets - 1).addClass( s.bulletActiveClass + "-prev" ) } else t .prev() .addClass(s.bulletActiveClass + "-prev") .prev() .addClass(s.bulletActiveClass + "-prev-prev"), c .next() .addClass(s.bulletActiveClass + "-next") .next() .addClass(s.bulletActiveClass + "-next-next") else t .prev() .addClass(s.bulletActiveClass + "-prev") .prev() .addClass(s.bulletActiveClass + "-prev-prev"), c .next() .addClass(s.bulletActiveClass + "-next") .next() .addClass(s.bulletActiveClass + "-next-next") } } s.dynamicBullets && ((d = Math.min(h.length, s.dynamicMainBullets + 4)), (t = (this.pagination.bulletSize * d - this.pagination.bulletSize) / 2 - l * this.pagination.bulletSize), (c = e ? "right" : "left"), h.css(this.isHorizontal() ? c : "top", t + "px")) } "fraction" === s.type && (i .find("." + s.currentClass) .text(s.formatFractionCurrent(a + 1)), i.find("." + s.totalClass).text(s.formatFractionTotal(n))), "progressbar" === s.type && ((d = s.progressbarOpposite ? this.isHorizontal() ? "vertical" : "horizontal" : this.isHorizontal() ? "horizontal" : "vertical"), (l = (a + 1) / n), (c = e = 1), "horizontal" == d ? (e = l) : (c = l), i .find("." + s.progressbarFillClass) .transform( "translate3d(0,0,0) scaleX(" + e + ") scaleY(" + c + ")" ) .transition(this.params.speed)), "custom" === s.type && s.renderCustom ? (i.html(s.renderCustom(this, a + 1, n)), this.emit("paginationRender", this, i[0])) : this.emit("paginationUpdate", this, i[0]), i[ this.params.watchOverflow && this.isLocked ? "addClass" : "removeClass" ](s.lockClass) } }, render: function () { var e = this.params.pagination if ( e.el && this.pagination.el && this.pagination.$el && 0 !== this.pagination.$el.length ) { var t = ( this.virtual && this.params.virtual.enabled ? this.virtual : this ).slides.length, i = this.pagination.$el, s = "" if ("bullets" === e.type) { for ( var a = this.params.loop ? Math.ceil( (t - 2 * this.loopedSlides) / this.params.slidesPerGroup ) : this.snapGrid.length, n = 0; n < a; n += 1 ) e.renderBullet ? (s += e.renderBullet.call(this, n, e.bulletClass)) : (s += "<" + e.bulletElement + ' class="' + e.bulletClass + '">' + e.bulletElement + ">") i.html(s), (this.pagination.bullets = i.find("." + e.bulletClass)) } "fraction" === e.type && ((s = e.renderFraction ? e.renderFraction.call(this, e.currentClass, e.totalClass) : ' / '), i.html(s)), "progressbar" === e.type && ((s = e.renderProgressbar ? e.renderProgressbar.call(this, e.progressbarFillClass) : ''), i.html(s)), "custom" !== e.type && this.emit("paginationRender", this.pagination.$el[0]) } }, init: function () { var e, t = this, i = t.params.pagination i.el && 0 !== (e = S(i.el)).length && (t.params.uniqueNavElements && "string" == typeof i.el && 1 < e.length && 1 === t.$el.find(i.el).length && (e = t.$el.find(i.el)), "bullets" === i.type && i.clickable && e.addClass(i.clickableClass), e.addClass(i.modifierClass + i.type), "bullets" === i.type && i.dynamicBullets && (e.addClass("" + i.modifierClass + i.type + "-dynamic"), (t.pagination.dynamicBulletIndex = 0), i.dynamicMainBullets < 1 && (i.dynamicMainBullets = 1)), "progressbar" === i.type && i.progressbarOpposite && e.addClass(i.progressbarOppositeClass), i.clickable && e.on("click", "." + i.bulletClass, function (e) { e.preventDefault() e = S(this).index() * t.params.slidesPerGroup t.params.loop && (e += t.loopedSlides), t.slideTo(e) }), X.extend(t.pagination, { $el: e, el: e[0] })) }, destroy: function () { var e, t = this.params.pagination t.el && this.pagination.el && this.pagination.$el && 0 !== this.pagination.$el.length && ((e = this.pagination.$el).removeClass(t.hiddenClass), e.removeClass(t.modifierClass + t.type), this.pagination.bullets && this.pagination.bullets.removeClass(t.bulletActiveClass), t.clickable && e.off("click", "." + t.bulletClass)) }, }, k = { setTranslate: function () { var e, t, i, s, a, n, r, o this.params.scrollbar.el && this.scrollbar.el && ((n = this.scrollbar), (e = this.rtlTranslate), (o = this.progress), (t = n.dragSize), (i = n.trackSize), (s = n.$dragEl), (a = n.$el), (n = this.params.scrollbar), (o = (i - (r = t)) * o), e ? 0 < (o = -o) ? ((r = t - o), (o = 0)) : i < -o + t && (r = i + o) : o < 0 ? ((r = t + o), (o = 0)) : i < o + t && (r = i - o), this.isHorizontal() ? (s.transform("translate3d(" + o + "px, 0, 0)"), (s[0].style.width = r + "px")) : (s.transform("translate3d(0px, " + o + "px, 0)"), (s[0].style.height = r + "px")), n.hide && (clearTimeout(this.scrollbar.timeout), (a[0].style.opacity = 1), (this.scrollbar.timeout = setTimeout(function () { ;(a[0].style.opacity = 0), a.transition(400) }, 1e3)))) }, setTransition: function (e) { this.params.scrollbar.el && this.scrollbar.el && this.scrollbar.$dragEl.transition(e) }, updateSize: function () { var e, t, i, s, a, n, r this.params.scrollbar.el && this.scrollbar.el && ((t = (e = this.scrollbar).$dragEl), (i = e.$el), (t[0].style.width = ""), (t[0].style.height = ""), (s = this.isHorizontal() ? i[0].offsetWidth : i[0].offsetHeight), (n = (a = this.size / this.virtualSize) * (s / this.size)), (r = "auto" === this.params.scrollbar.dragSize ? s * a : parseInt(this.params.scrollbar.dragSize, 10)), this.isHorizontal() ? (t[0].style.width = r + "px") : (t[0].style.height = r + "px"), (i[0].style.display = 1 <= a ? "none" : ""), this.params.scrollbar.hide && (i[0].style.opacity = 0), X.extend(e, { trackSize: s, divider: a, moveDivider: n, dragSize: r, }), e.$el[ this.params.watchOverflow && this.isLocked ? "addClass" : "removeClass" ](this.params.scrollbar.lockClass)) }, getPointerPosition: function (e) { return this.isHorizontal() ? ("touchstart" === e.type || "touchmove" === e.type ? e.targetTouches[0] : e ).clientX : ("touchstart" === e.type || "touchmove" === e.type ? e.targetTouches[0] : e ).clientY }, setDragPosition: function (e) { var t = this.scrollbar, i = this.rtlTranslate, s = t.$el, a = t.dragSize, n = t.trackSize, r = t.dragStartPos, t = (t.getPointerPosition(e) - s.offset()[this.isHorizontal() ? "left" : "top"] - (null !== r ? r : a / 2)) / (n - a), e = ((t = Math.max(Math.min(t, 1), 0)), i && (t = 1 - t), this.minTranslate() + (this.maxTranslate() - this.minTranslate()) * t) this.updateProgress(e), this.setTranslate(e), this.updateActiveIndex(), this.updateSlidesClasses() }, onDragStart: function (e) { var t = this.params.scrollbar, i = this.scrollbar, s = this.$wrapperEl, a = i.$el, n = i.$dragEl ;(this.scrollbar.isTouched = !0), (this.scrollbar.dragStartPos = e.target === n[0] || e.target === n ? i.getPointerPosition(e) - e.target.getBoundingClientRect()[ this.isHorizontal() ? "left" : "top" ] : null), e.preventDefault(), e.stopPropagation(), s.transition(100), n.transition(100), i.setDragPosition(e), clearTimeout(this.scrollbar.dragTimeout), a.transition(0), t.hide && a.css("opacity", 1), this.params.cssMode && this.$wrapperEl.css("scroll-snap-type", "none"), this.emit("scrollbarDragStart", e) }, onDragMove: function (e) { var t = this.scrollbar, i = this.$wrapperEl, s = t.$el, a = t.$dragEl this.scrollbar.isTouched && (e.preventDefault ? e.preventDefault() : (e.returnValue = !1), t.setDragPosition(e), i.transition(0), s.transition(0), a.transition(0), this.emit("scrollbarDragMove", e)) }, onDragEnd: function (e) { var t = this.params.scrollbar, i = this.scrollbar, s = this.$wrapperEl, a = i.$el this.scrollbar.isTouched && ((this.scrollbar.isTouched = !1), this.params.cssMode && (this.$wrapperEl.css("scroll-snap-type", ""), s.transition("")), t.hide && (clearTimeout(this.scrollbar.dragTimeout), (this.scrollbar.dragTimeout = X.nextTick(function () { a.css("opacity", 0), a.transition(400) }, 1e3))), this.emit("scrollbarDragEnd", e), t.snapOnRelease && this.slideToClosest()) }, enableDraggable: function () { var e, t, i, s, a this.params.scrollbar.el && ((i = this.scrollbar), (e = this.touchEventsTouch), (t = this.touchEventsDesktop), (a = this.params), (i = i.$el[0]), (s = !(!b.passiveListener || !a.passiveListeners) && { passive: !1, capture: !1, }), (a = !(!b.passiveListener || !a.passiveListeners) && { passive: !0, capture: !1, }), b.touch ? (i.addEventListener(e.start, this.scrollbar.onDragStart, s), i.addEventListener(e.move, this.scrollbar.onDragMove, s), i.addEventListener(e.end, this.scrollbar.onDragEnd, a)) : (i.addEventListener(t.start, this.scrollbar.onDragStart, s), c.addEventListener(t.move, this.scrollbar.onDragMove, s), c.addEventListener(t.end, this.scrollbar.onDragEnd, a))) }, disableDraggable: function () { var e, t, i, s, a this.params.scrollbar.el && ((i = this.scrollbar), (e = this.touchEventsTouch), (t = this.touchEventsDesktop), (a = this.params), (i = i.$el[0]), (s = !(!b.passiveListener || !a.passiveListeners) && { passive: !1, capture: !1, }), (a = !(!b.passiveListener || !a.passiveListeners) && { passive: !0, capture: !1, }), b.touch ? (i.removeEventListener( e.start, this.scrollbar.onDragStart, s ), i.removeEventListener(e.move, this.scrollbar.onDragMove, s), i.removeEventListener(e.end, this.scrollbar.onDragEnd, a)) : (i.removeEventListener( t.start, this.scrollbar.onDragStart, s ), c.removeEventListener(t.move, this.scrollbar.onDragMove, s), c.removeEventListener(t.end, this.scrollbar.onDragEnd, a))) }, init: function () { var e, t, i, s this.params.scrollbar.el && ((e = this.scrollbar), (s = this.$el), (i = S((t = this.params.scrollbar).el)), 0 === (s = (i = this.params.uniqueNavElements && "string" == typeof t.el && 1 < i.length && 1 === s.find(t.el).length ? s.find(t.el) : i).find("." + this.params.scrollbar.dragClass)).length && ((s = S( '
' )), i.append(s)), X.extend(e, { $el: i, el: i[0], $dragEl: s, dragEl: s[0] }), t.draggable && e.enableDraggable()) }, destroy: function () { this.scrollbar.disableDraggable() }, }, Q = { setTransform: function (e, t) { var i = this.rtl, e = S(e), i = i ? -1 : 1, s = e.attr("data-swiper-parallax") || "0", a = e.attr("data-swiper-parallax-x"), n = e.attr("data-swiper-parallax-y"), r = e.attr("data-swiper-parallax-scale"), o = e.attr("data-swiper-parallax-opacity") a || n ? ((a = a || "0"), (n = n || "0")) : this.isHorizontal() ? ((a = s), (n = "0")) : ((n = s), (a = "0")), (a = 0 <= a.indexOf("%") ? parseInt(a, 10) * t * i + "%" : a * t * i + "px"), (n = 0 <= n.indexOf("%") ? parseInt(n, 10) * t + "%" : n * t + "px"), null != o && ((s = o - (o - 1) * (1 - Math.abs(t))), (e[0].style.opacity = s)), null == r ? e.transform("translate3d(" + a + ", " + n + ", 0px)") : ((i = r - (r - 1) * (1 - Math.abs(t))), e.transform( "translate3d(" + a + ", " + n + ", 0px) scale(" + i + ")" )) }, setTranslate: function () { var s = this, e = s.$el, t = s.slides, a = s.progress, n = s.snapGrid e .children( "[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]" ) .each(function (e, t) { s.parallax.setTransform(t, a) }), t.each(function (e, t) { var i = t.progress 1 < s.params.slidesPerGroup && "auto" !== s.params.slidesPerView && (i += Math.ceil(e / 2) - a * (n.length - 1)), (i = Math.min(Math.max(i, -1), 1)), S(t) .find( "[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]" ) .each(function (e, t) { s.parallax.setTransform(t, i) }) }) }, setTransition: function (s) { void 0 === s && (s = this.params.speed), this.$el .find( "[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]" ) .each(function (e, t) { var t = S(t), i = parseInt(t.attr("data-swiper-parallax-duration"), 10) || s 0 === s && (i = 0), t.transition(i) }) }, }, J = { getDistanceBetweenTouches: function (e) { if (e.targetTouches.length < 2) return 1 var t = e.targetTouches[0].pageX, i = e.targetTouches[0].pageY, s = e.targetTouches[1].pageX, e = e.targetTouches[1].pageY return Math.sqrt(Math.pow(s - t, 2) + Math.pow(e - i, 2)) }, onGestureStart: function (e) { var t = this.params.zoom, i = this.zoom, s = i.gesture if ( ((i.fakeGestureTouched = !1), (i.fakeGestureMoved = !1), !b.gestures) ) { if ( "touchstart" !== e.type || ("touchstart" === e.type && e.targetTouches.length < 2) ) return ;(i.fakeGestureTouched = !0), (s.scaleStart = J.getDistanceBetweenTouches(e)) } ;(s.$slideEl && s.$slideEl.length) || ((s.$slideEl = S(e.target).closest(".swiper-slide")), 0 === s.$slideEl.length && (s.$slideEl = this.slides.eq(this.activeIndex)), (s.$imageEl = s.$slideEl.find("img, svg, canvas")), (s.$imageWrapEl = s.$imageEl.parent("." + t.containerClass)), (s.maxRatio = s.$imageWrapEl.attr("data-swiper-zoom") || t.maxRatio), 0 !== s.$imageWrapEl.length) ? (s.$imageEl.transition(0), (this.zoom.isScaling = !0)) : (s.$imageEl = void 0) }, onGestureChange: function (e) { var t = this.params.zoom, i = this.zoom, s = i.gesture if (!b.gestures) { if ( "touchmove" !== e.type || ("touchmove" === e.type && e.targetTouches.length < 2) ) return ;(i.fakeGestureMoved = !0), (s.scaleMove = J.getDistanceBetweenTouches(e)) } s.$imageEl && 0 !== s.$imageEl.length && ((i.scale = b.gestures ? e.scale * i.currentScale : (s.scaleMove / s.scaleStart) * i.currentScale), i.scale > s.maxRatio && (i.scale = s.maxRatio - 1 + Math.pow(i.scale - s.maxRatio + 1, 0.5)), i.scale < t.minRatio && (i.scale = t.minRatio + 1 - Math.pow(t.minRatio - i.scale + 1, 0.5)), s.$imageEl.transform("translate3d(0,0,0) scale(" + i.scale + ")")) }, onGestureEnd: function (e) { var t = this.params.zoom, i = this.zoom, s = i.gesture if (!b.gestures) { if (!i.fakeGestureTouched || !i.fakeGestureMoved) return if ( "touchend" !== e.type || ("touchend" === e.type && e.changedTouches.length < 2 && !o.android) ) return ;(i.fakeGestureTouched = !1), (i.fakeGestureMoved = !1) } s.$imageEl && 0 !== s.$imageEl.length && ((i.scale = Math.max(Math.min(i.scale, s.maxRatio), t.minRatio)), s.$imageEl .transition(this.params.speed) .transform("translate3d(0,0,0) scale(" + i.scale + ")"), (i.currentScale = i.scale), (i.isScaling = !1), 1 === i.scale && (s.$slideEl = void 0)) }, onTouchStart: function (e) { var t = this.zoom, i = t.gesture, t = t.image i.$imageEl && 0 !== i.$imageEl.length && !t.isTouched && (o.android && e.preventDefault(), (t.isTouched = !0), (t.touchesStart.x = ( "touchstart" === e.type ? e.targetTouches[0] : e ).pageX), (t.touchesStart.y = ( "touchstart" === e.type ? e.targetTouches[0] : e ).pageY)) }, onTouchMove: function (e) { var t = this.zoom, i = t.gesture, s = t.image, a = t.velocity if ( i.$imageEl && 0 !== i.$imageEl.length && ((this.allowClick = !1), s.isTouched && i.$slideEl) ) { s.isMoved || ((s.width = i.$imageEl[0].offsetWidth), (s.height = i.$imageEl[0].offsetHeight), (s.startX = X.getTranslate(i.$imageWrapEl[0], "x") || 0), (s.startY = X.getTranslate(i.$imageWrapEl[0], "y") || 0), (i.slideWidth = i.$slideEl[0].offsetWidth), (i.slideHeight = i.$slideEl[0].offsetHeight), i.$imageWrapEl.transition(0), this.rtl && ((s.startX = -s.startX), (s.startY = -s.startY))) var n = s.width * t.scale, r = s.height * t.scale if (!(n < i.slideWidth && r < i.slideHeight)) { if ( ((s.minX = Math.min(i.slideWidth / 2 - n / 2, 0)), (s.maxX = -s.minX), (s.minY = Math.min(i.slideHeight / 2 - r / 2, 0)), (s.maxY = -s.minY), (s.touchesCurrent.x = ( "touchmove" === e.type ? e.targetTouches[0] : e ).pageX), (s.touchesCurrent.y = ( "touchmove" === e.type ? e.targetTouches[0] : e ).pageY), !s.isMoved && !t.isScaling) ) { if ( this.isHorizontal() && ((Math.floor(s.minX) === Math.floor(s.startX) && s.touchesCurrent.x < s.touchesStart.x) || (Math.floor(s.maxX) === Math.floor(s.startX) && s.touchesCurrent.x > s.touchesStart.x)) ) return void (s.isTouched = !1) if ( !this.isHorizontal() && ((Math.floor(s.minY) === Math.floor(s.startY) && s.touchesCurrent.y < s.touchesStart.y) || (Math.floor(s.maxY) === Math.floor(s.startY) && s.touchesCurrent.y > s.touchesStart.y)) ) return void (s.isTouched = !1) } e.preventDefault(), e.stopPropagation(), (s.isMoved = !0), (s.currentX = s.touchesCurrent.x - s.touchesStart.x + s.startX), (s.currentY = s.touchesCurrent.y - s.touchesStart.y + s.startY), s.currentX < s.minX && (s.currentX = s.minX + 1 - Math.pow(s.minX - s.currentX + 1, 0.8)), s.currentX > s.maxX && (s.currentX = s.maxX - 1 + Math.pow(s.currentX - s.maxX + 1, 0.8)), s.currentY < s.minY && (s.currentY = s.minY + 1 - Math.pow(s.minY - s.currentY + 1, 0.8)), s.currentY > s.maxY && (s.currentY = s.maxY - 1 + Math.pow(s.currentY - s.maxY + 1, 0.8)), a.prevPositionX || (a.prevPositionX = s.touchesCurrent.x), a.prevPositionY || (a.prevPositionY = s.touchesCurrent.y), a.prevTime || (a.prevTime = Date.now()), (a.x = (s.touchesCurrent.x - a.prevPositionX) / (Date.now() - a.prevTime) / 2), (a.y = (s.touchesCurrent.y - a.prevPositionY) / (Date.now() - a.prevTime) / 2), Math.abs(s.touchesCurrent.x - a.prevPositionX) < 2 && (a.x = 0), Math.abs(s.touchesCurrent.y - a.prevPositionY) < 2 && (a.y = 0), (a.prevPositionX = s.touchesCurrent.x), (a.prevPositionY = s.touchesCurrent.y), (a.prevTime = Date.now()), i.$imageWrapEl.transform( "translate3d(" + s.currentX + "px, " + s.currentY + "px,0)" ) } } }, onTouchEnd: function () { var e = this.zoom, t = e.gesture, i = e.image, s = e.velocity if (t.$imageEl && 0 !== t.$imageEl.length) { if (!i.isTouched || !i.isMoved) return (i.isTouched = !1), void (i.isMoved = !1) ;(i.isTouched = !1), (i.isMoved = !1) var a = 300, n = 300, r = s.x * a, r = i.currentX + r, o = s.y * n, o = i.currentY + o, s = (0 !== s.x && (a = Math.abs((r - i.currentX) / s.x)), 0 !== s.y && (n = Math.abs((o - i.currentY) / s.y)), Math.max(a, n)), a = ((i.currentX = r), (i.currentY = o), i.width * e.scale), n = i.height * e.scale ;(i.minX = Math.min(t.slideWidth / 2 - a / 2, 0)), (i.maxX = -i.minX), (i.minY = Math.min(t.slideHeight / 2 - n / 2, 0)), (i.maxY = -i.minY), (i.currentX = Math.max(Math.min(i.currentX, i.maxX), i.minX)), (i.currentY = Math.max(Math.min(i.currentY, i.maxY), i.minY)), t.$imageWrapEl .transition(s) .transform( "translate3d(" + i.currentX + "px, " + i.currentY + "px,0)" ) } }, onTransitionEnd: function () { var e = this.zoom, t = e.gesture t.$slideEl && this.previousIndex !== this.activeIndex && (t.$imageEl.transform("translate3d(0,0,0) scale(1)"), t.$imageWrapEl.transform("translate3d(0,0,0)"), (e.scale = 1), (e.currentScale = 1), (t.$slideEl = void 0), (t.$imageEl = void 0), (t.$imageWrapEl = void 0)) }, toggle: function (e) { var t = this.zoom t.scale && 1 !== t.scale ? t.out() : t.in(e) }, in: function (e) { var t, i, s, a, n = this.zoom, r = this.params.zoom, o = n.gesture, l = n.image o.$slideEl || ((o.$slideEl = this.clickedSlide ? S(this.clickedSlide) : this.slides.eq(this.activeIndex)), (o.$imageEl = o.$slideEl.find("img, svg, canvas")), (o.$imageWrapEl = o.$imageEl.parent("." + r.containerClass))), o.$imageEl && 0 !== o.$imageEl.length && (o.$slideEl.addClass("" + r.zoomedSlideClass), (l = void 0 === l.touchesStart.x && e ? ((t = ("touchend" === e.type ? e.changedTouches[0] : e) .pageX), ("touchend" === e.type ? e.changedTouches[0] : e).pageY) : ((t = l.touchesStart.x), l.touchesStart.y)), (n.scale = o.$imageWrapEl.attr("data-swiper-zoom") || r.maxRatio), (n.currentScale = o.$imageWrapEl.attr("data-swiper-zoom") || r.maxRatio), e ? ((r = o.$slideEl[0].offsetWidth), (e = o.$slideEl[0].offsetHeight), (t = o.$slideEl.offset().left + r / 2 - t), (l = o.$slideEl.offset().top + e / 2 - l), (s = o.$imageEl[0].offsetWidth), (a = o.$imageEl[0].offsetHeight), (s = s * n.scale), (a = a * n.scale), (s = -(r = Math.min(r / 2 - s / 2, 0))), (a = -(e = Math.min(e / 2 - a / 2, 0))), s < (i = (i = t * n.scale) < r ? r : i) && (i = s), a < (s = (s = l * n.scale) < e ? e : s) && (s = a)) : (s = i = 0), o.$imageWrapEl .transition(300) .transform("translate3d(" + i + "px, " + s + "px,0)"), o.$imageEl .transition(300) .transform("translate3d(0,0,0) scale(" + n.scale + ")")) }, out: function () { var e = this.zoom, t = this.params.zoom, i = e.gesture i.$slideEl || ((i.$slideEl = this.clickedSlide ? S(this.clickedSlide) : this.slides.eq(this.activeIndex)), (i.$imageEl = i.$slideEl.find("img, svg, canvas")), (i.$imageWrapEl = i.$imageEl.parent("." + t.containerClass))), i.$imageEl && 0 !== i.$imageEl.length && ((e.scale = 1), (e.currentScale = 1), i.$imageWrapEl.transition(300).transform("translate3d(0,0,0)"), i.$imageEl .transition(300) .transform("translate3d(0,0,0) scale(1)"), i.$slideEl.removeClass("" + t.zoomedSlideClass), (i.$slideEl = void 0)) }, enable: function () { var e, t, i = this.zoom i.enabled || ((i.enabled = !0), (e = !( "touchstart" !== this.touchEvents.start || !b.passiveListener || !this.params.passiveListeners ) && { passive: !0, capture: !1 }), (t = !b.passiveListener || { passive: !1, capture: !0 }), b.gestures ? (this.$wrapperEl.on( "gesturestart", ".swiper-slide", i.onGestureStart, e ), this.$wrapperEl.on( "gesturechange", ".swiper-slide", i.onGestureChange, e ), this.$wrapperEl.on( "gestureend", ".swiper-slide", i.onGestureEnd, e )) : "touchstart" === this.touchEvents.start && (this.$wrapperEl.on( this.touchEvents.start, ".swiper-slide", i.onGestureStart, e ), this.$wrapperEl.on( this.touchEvents.move, ".swiper-slide", i.onGestureChange, t ), this.$wrapperEl.on( this.touchEvents.end, ".swiper-slide", i.onGestureEnd, e ), this.touchEvents.cancel && this.$wrapperEl.on( this.touchEvents.cancel, ".swiper-slide", i.onGestureEnd, e )), this.$wrapperEl.on( this.touchEvents.move, "." + this.params.zoom.containerClass, i.onTouchMove, t )) }, disable: function () { var e, t, i = this.zoom i.enabled && ((this.zoom.enabled = !1), (e = !( "touchstart" !== this.touchEvents.start || !b.passiveListener || !this.params.passiveListeners ) && { passive: !0, capture: !1 }), (t = !b.passiveListener || { passive: !1, capture: !0 }), b.gestures ? (this.$wrapperEl.off( "gesturestart", ".swiper-slide", i.onGestureStart, e ), this.$wrapperEl.off( "gesturechange", ".swiper-slide", i.onGestureChange, e ), this.$wrapperEl.off( "gestureend", ".swiper-slide", i.onGestureEnd, e )) : "touchstart" === this.touchEvents.start && (this.$wrapperEl.off( this.touchEvents.start, ".swiper-slide", i.onGestureStart, e ), this.$wrapperEl.off( this.touchEvents.move, ".swiper-slide", i.onGestureChange, t ), this.$wrapperEl.off( this.touchEvents.end, ".swiper-slide", i.onGestureEnd, e ), this.touchEvents.cancel && this.$wrapperEl.off( this.touchEvents.cancel, ".swiper-slide", i.onGestureEnd, e )), this.$wrapperEl.off( this.touchEvents.move, "." + this.params.zoom.containerClass, i.onTouchMove, t )) }, }, Z = { loadInSlide: function (e, o) { void 0 === o && (o = !0) var l, h = this, d = h.params.lazy void 0 !== e && 0 !== h.slides.length && ((e = (l = h.virtual && h.params.virtual.enabled ? h.$wrapperEl.children( "." + h.params.slideClass + '[data-swiper-slide-index="' + e + '"]' ) : h.slides.eq(e)).find( "." + d.elementClass + ":not(." + d.loadedClass + "):not(." + d.loadingClass + ")" )), 0 !== (e = !l.hasClass(d.elementClass) || l.hasClass(d.loadedClass) || l.hasClass(d.loadingClass) ? e : e.add(l[0])).length && e.each(function (e, t) { var i = S(t), s = (i.addClass(d.loadingClass), i.attr("data-background")), a = i.attr("data-src"), n = i.attr("data-srcset"), r = i.attr("data-sizes") h.loadImage(i[0], a || s, n, r, !1, function () { var e, t null == h || !h || (h && !h.params) || h.destroyed || (s ? (i.css("background-image", 'url("' + s + '")'), i.removeAttr("data-background")) : (n && (i.attr("srcset", n), i.removeAttr("data-srcset")), r && (i.attr("sizes", r), i.removeAttr("data-sizes")), a && (i.attr("src", a), i.removeAttr("data-src"))), i.addClass(d.loadedClass).removeClass(d.loadingClass), l.find("." + d.preloaderClass).remove(), h.params.loop && o && ((e = l.attr("data-swiper-slide-index")), l.hasClass(h.params.slideDuplicateClass) ? ((t = h.$wrapperEl.children( '[data-swiper-slide-index="' + e + '"]:not(.' + h.params.slideDuplicateClass + ")" )), h.lazy.loadInSlide(t.index(), !1)) : ((t = h.$wrapperEl.children( "." + h.params.slideDuplicateClass + '[data-swiper-slide-index="' + e + '"]' )), h.lazy.loadInSlide(t.index(), !1))), h.emit("lazyImageReady", l[0], i[0])) }), h.emit("lazyImageLoad", l[0], i[0]) })) }, load: function () { var i = this, t = i.$wrapperEl, s = i.params, a = i.slides, e = i.activeIndex, n = i.virtual && s.virtual.enabled, r = s.lazy, o = s.slidesPerView function l(e) { if (n) { if ( t.children( "." + s.slideClass + '[data-swiper-slide-index="' + e + '"]' ).length ) return 1 } else if (a[e]) return 1 } function h(e) { return n ? S(e).attr("data-swiper-slide-index") : S(e).index() } if ( ("auto" === o && (o = 0), i.lazy.initialImageLoaded || (i.lazy.initialImageLoaded = !0), i.params.watchSlidesVisibility) ) t.children("." + s.slideVisibleClass).each(function (e, t) { t = n ? S(t).attr("data-swiper-slide-index") : S(t).index() i.lazy.loadInSlide(t) }) else if (1 < o) for (var d = e; d < e + o; d += 1) l(d) && i.lazy.loadInSlide(d) else i.lazy.loadInSlide(e) if (r.loadPrevNext) if (1 < o || (r.loadPrevNextAmount && 1 < r.loadPrevNextAmount)) { for ( var r = r.loadPrevNextAmount, c = o, u = Math.min(e + c + Math.max(r, c), a.length), c = Math.max(e - Math.max(c, r), 0), p = e + o; p < u; p += 1 ) l(p) && i.lazy.loadInSlide(p) for (var m = c; m < e; m += 1) l(m) && i.lazy.loadInSlide(m) } else { ;(r = t.children("." + s.slideNextClass)), (c = (0 < r.length && i.lazy.loadInSlide(h(r)), t.children("." + s.slidePrevClass))) 0 < c.length && i.lazy.loadInSlide(h(c)) } }, }, I = { LinearSpline: function (e, t) { var i, s, a, n, r return ( (this.x = e), (this.y = t), (this.lastIndex = e.length - 1), (this.interpolate = function (e) { return e ? ((r = (function (e, t) { for (s = -1, i = e.length; 1 < i - s; ) e[(a = (i + s) >> 1)] <= t ? (s = a) : (i = a) return i })(this.x, e)), (n = r - 1), ((e - this.x[n]) * (this.y[r] - this.y[n])) / (this.x[r] - this.x[n]) + this.y[n]) : 0 }), this ) }, getInterpolateFunction: function (e) { this.controller.spline || (this.controller.spline = this.params.loop ? new I.LinearSpline(this.slidesGrid, e.slidesGrid) : new I.LinearSpline(this.snapGrid, e.snapGrid)) }, setTranslate: function (e, t) { var i, s, a = this, n = a.controller.control function r(e) { var t = a.rtlTranslate ? -a.translate : a.translate "slide" === a.params.controller.by && (a.controller.getInterpolateFunction(e), (s = -a.controller.spline.interpolate(-t))), (s && "container" !== a.params.controller.by) || ((i = (e.maxTranslate() - e.minTranslate()) / (a.maxTranslate() - a.minTranslate())), (s = (t - a.minTranslate()) * i + e.minTranslate())), a.params.controller.inverse && (s = e.maxTranslate() - s), e.updateProgress(s), e.setTranslate(s, a), e.updateActiveIndex(), e.updateSlidesClasses() } if (Array.isArray(n)) for (var o = 0; o < n.length; o += 1) n[o] !== t && n[o] instanceof p && r(n[o]) else n instanceof p && t !== n && r(n) }, setTransition: function (t, e) { var i, s = this, a = s.controller.control function n(e) { e.setTransition(t, s), 0 !== t && (e.transitionStart(), e.params.autoHeight && X.nextTick(function () { e.updateAutoHeight() }), e.$wrapperEl.transitionEnd(function () { a && (e.params.loop && "slide" === s.params.controller.by && e.loopFix(), e.transitionEnd()) })) } if (Array.isArray(a)) for (i = 0; i < a.length; i += 1) a[i] !== e && a[i] instanceof p && n(a[i]) else a instanceof p && e !== a && n(a) }, }, ee = { makeElFocusable: function (e) { return e.attr("tabIndex", "0"), e }, addElRole: function (e, t) { return e.attr("role", t), e }, addElLabel: function (e, t) { return e.attr("aria-label", t), e }, disableEl: function (e) { return e.attr("aria-disabled", !0), e }, enableEl: function (e) { return e.attr("aria-disabled", !1), e }, onEnterKey: function (e) { var t = this.params.a11y 13 === e.keyCode && ((e = S(e.target)), this.navigation && this.navigation.$nextEl && e.is(this.navigation.$nextEl) && ((this.isEnd && !this.params.loop) || this.slideNext(), this.isEnd ? this.a11y.notify(t.lastSlideMessage) : this.a11y.notify(t.nextSlideMessage)), this.navigation && this.navigation.$prevEl && e.is(this.navigation.$prevEl) && ((this.isBeginning && !this.params.loop) || this.slidePrev(), this.isBeginning ? this.a11y.notify(t.firstSlideMessage) : this.a11y.notify(t.prevSlideMessage)), this.pagination && e.is("." + this.params.pagination.bulletClass) && e[0].click()) }, notify: function (e) { var t = this.a11y.liveRegion 0 !== t.length && (t.html(""), t.html(e)) }, updateNavigation: function () { var e, t !this.params.loop && this.navigation && ((e = (t = this.navigation).$nextEl), (t = t.$prevEl) && 0 < t.length && (this.isBeginning ? this.a11y.disableEl(t) : this.a11y.enableEl(t)), e && 0 < e.length && (this.isEnd ? this.a11y.disableEl(e) : this.a11y.enableEl(e))) }, updatePagination: function () { var i = this, s = i.params.a11y i.pagination && i.params.pagination.clickable && i.pagination.bullets && i.pagination.bullets.length && i.pagination.bullets.each(function (e, t) { t = S(t) i.a11y.makeElFocusable(t), i.a11y.addElRole(t, "button"), i.a11y.addElLabel( t, s.paginationBulletMessage.replace( /{{index}}/, t.index() + 1 ) ) }) }, init: function () { this.$el.append(this.a11y.liveRegion) var e, t, i = this.params.a11y this.navigation && this.navigation.$nextEl && (e = this.navigation.$nextEl), this.navigation && this.navigation.$prevEl && (t = this.navigation.$prevEl), e && (this.a11y.makeElFocusable(e), this.a11y.addElRole(e, "button"), this.a11y.addElLabel(e, i.nextSlideMessage), e.on("keydown", this.a11y.onEnterKey)), t && (this.a11y.makeElFocusable(t), this.a11y.addElRole(t, "button"), this.a11y.addElLabel(t, i.prevSlideMessage), t.on("keydown", this.a11y.onEnterKey)), this.pagination && this.params.pagination.clickable && this.pagination.bullets && this.pagination.bullets.length && this.pagination.$el.on( "keydown", "." + this.params.pagination.bulletClass, this.a11y.onEnterKey ) }, destroy: function () { var e, t this.a11y.liveRegion && 0 < this.a11y.liveRegion.length && this.a11y.liveRegion.remove(), this.navigation && this.navigation.$nextEl && (e = this.navigation.$nextEl), this.navigation && this.navigation.$prevEl && (t = this.navigation.$prevEl), e && e.off("keydown", this.a11y.onEnterKey), t && t.off("keydown", this.a11y.onEnterKey), this.pagination && this.params.pagination.clickable && this.pagination.bullets && this.pagination.bullets.length && this.pagination.$el.off( "keydown", "." + this.params.pagination.bulletClass, this.a11y.onEnterKey ) }, }, z = { init: function () { if (this.params.history) { if (!U.history || !U.history.pushState) return ( (this.params.history.enabled = !1), void (this.params.hashNavigation.enabled = !0) ) var e = this.history ;(e.initialized = !0), (e.paths = z.getPathValues()), (e.paths.key || e.paths.value) && (e.scrollToSlide( 0, e.paths.value, this.params.runCallbacksOnInit ), this.params.history.replaceState || U.addEventListener( "popstate", this.history.setHistoryPopState )) } }, destroy: function () { this.params.history.replaceState || U.removeEventListener("popstate", this.history.setHistoryPopState) }, setHistoryPopState: function () { ;(this.history.paths = z.getPathValues()), this.history.scrollToSlide( this.params.speed, this.history.paths.value, !1 ) }, getPathValues: function () { var e = U.location.pathname .slice(1) .split("/") .filter(function (e) { return "" !== e }), t = e.length return { key: e[t - 2], value: e[t - 1] } }, setHistory: function (e, t) { this.history.initialized && this.params.history.enabled && ((t = this.slides.eq(t)), (t = z.slugify(t.attr("data-history"))), U.location.pathname.includes(e) || (t = e + "/" + t), ((e = U.history.state) && e.value === t) || (this.params.history.replaceState ? U.history.replaceState({ value: t }, null, t) : U.history.pushState({ value: t }, null, t))) }, slugify: function (e) { return e .toString() .replace(/\s+/g, "-") .replace(/[^\w-]+/g, "") .replace(/--+/g, "-") .replace(/^-+/, "") .replace(/-+$/, "") }, scrollToSlide: function (e, t, i) { if (t) for (var s = 0, a = this.slides.length; s < a; s += 1) { var n = this.slides.eq(s) z.slugify(n.attr("data-history")) !== t || n.hasClass(this.params.slideDuplicateClass) || ((n = n.index()), this.slideTo(n, e, i)) } else this.slideTo(0, e, i) }, }, P = { onHashCange: function () { var e = c.location.hash.replace("#", "") e !== this.slides.eq(this.activeIndex).attr("data-hash") && void 0 !== (e = this.$wrapperEl .children( "." + this.params.slideClass + '[data-hash="' + e + '"]' ) .index()) && this.slideTo(e) }, setHash: function () { var e this.hashNavigation.initialized && this.params.hashNavigation.enabled && (this.params.hashNavigation.replaceState && U.history && U.history.replaceState ? U.history.replaceState( null, null, "#" + this.slides.eq(this.activeIndex).attr("data-hash") || "" ) : ((e = (e = this.slides.eq(this.activeIndex)).attr("data-hash") || e.attr("data-history")), (c.location.hash = e || ""))) }, init: function () { if ( !( !this.params.hashNavigation.enabled || (this.params.history && this.params.history.enabled) ) ) { this.hashNavigation.initialized = !0 var e = c.location.hash.replace("#", "") if (e) for (var t = 0, i = this.slides.length; t < i; t += 1) { var s = this.slides.eq(t) ;(s.attr("data-hash") || s.attr("data-history")) !== e || s.hasClass(this.params.slideDuplicateClass) || ((s = s.index()), this.slideTo(s, 0, this.params.runCallbacksOnInit, !0)) } this.params.hashNavigation.watchState && S(U).on("hashchange", this.hashNavigation.onHashCange) } }, destroy: function () { this.params.hashNavigation.watchState && S(U).off("hashchange", this.hashNavigation.onHashCange) }, }, H = { run: function () { var e = this, t = e.slides.eq(e.activeIndex), i = e.params.autoplay.delay t.attr("data-swiper-autoplay") && (i = t.attr("data-swiper-autoplay") || e.params.autoplay.delay), clearTimeout(e.autoplay.timeout), (e.autoplay.timeout = X.nextTick(function () { e.params.autoplay.reverseDirection ? e.params.loop ? (e.loopFix(), e.slidePrev(e.params.speed, !0, !0), e.emit("autoplay")) : e.isBeginning ? e.params.autoplay.stopOnLastSlide ? e.autoplay.stop() : (e.slideTo(e.slides.length - 1, e.params.speed, !0, !0), e.emit("autoplay")) : (e.slidePrev(e.params.speed, !0, !0), e.emit("autoplay")) : e.params.loop ? (e.loopFix(), e.slideNext(e.params.speed, !0, !0), e.emit("autoplay")) : e.isEnd ? e.params.autoplay.stopOnLastSlide ? e.autoplay.stop() : (e.slideTo(0, e.params.speed, !0, !0), e.emit("autoplay")) : (e.slideNext(e.params.speed, !0, !0), e.emit("autoplay")), e.params.cssMode && e.autoplay.running && e.autoplay.run() }, i)) }, start: function () { return ( void 0 === this.autoplay.timeout && !this.autoplay.running && ((this.autoplay.running = !0), this.emit("autoplayStart"), this.autoplay.run(), !0) ) }, stop: function () { return ( !!this.autoplay.running && void 0 !== this.autoplay.timeout && (this.autoplay.timeout && (clearTimeout(this.autoplay.timeout), (this.autoplay.timeout = void 0)), (this.autoplay.running = !1), this.emit("autoplayStop"), !0) ) }, pause: function (e) { !this.autoplay.running || this.autoplay.paused || (this.autoplay.timeout && clearTimeout(this.autoplay.timeout), (this.autoplay.paused = !0), 0 !== e && this.params.autoplay.waitForTransition ? (this.$wrapperEl[0].addEventListener( "transitionend", this.autoplay.onTransitionEnd ), this.$wrapperEl[0].addEventListener( "webkitTransitionEnd", this.autoplay.onTransitionEnd )) : ((this.autoplay.paused = !1), this.autoplay.run())) }, }, te = { setTranslate: function () { for (var e = this.slides, t = 0; t < e.length; t += 1) { var i = this.slides.eq(t), s = -i[0].swiperSlideOffset, a = (this.params.virtualTranslate || (s -= this.translate), 0), n = (this.isHorizontal() || ((a = s), (s = 0)), this.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(i[0].progress), 0) : 1 + Math.min(Math.max(i[0].progress, -1), 0)) i.css({ opacity: n }).transform( "translate3d(" + s + "px, " + a + "px, 0px)" ) } }, setTransition: function (e) { var i, s = this, t = s.slides, a = s.$wrapperEl t.transition(e), s.params.virtualTranslate && 0 !== e && ((i = !1), t.transitionEnd(function () { if (!i && s && !s.destroyed) { ;(i = !0), (s.animating = !1) for ( var e = ["webkitTransitionEnd", "transitionend"], t = 0; t < e.length; t += 1 ) a.trigger(e[t]) } })) }, }, ie = { setTranslate: function () { var e, t = this.$el, i = this.$wrapperEl, s = this.slides, a = this.width, n = this.height, r = this.rtlTranslate, o = this.size, l = this.params.cubeEffect, h = this.isHorizontal(), d = this.virtual && this.params.virtual.enabled, c = 0 l.shadow && (h ? (0 === (e = i.find(".swiper-cube-shadow")).length && ((e = S('
')), i.append(e)), e.css({ height: a + "px" })) : 0 === (e = t.find(".swiper-cube-shadow")).length && ((e = S('
')), t.append(e))) for (var u, p = 0; p < s.length; p += 1) { var m = s.eq(p), v = p, f = 90 * (v = d ? parseInt(m.attr("data-swiper-slide-index"), 10) : v), g = Math.floor(f / 360), w = (r && ((f = -f), (g = Math.floor(-f / 360))), Math.max(Math.min(m[0].progress, 1), -1)), y = 0, b = 0, E = 0, g = (v % 4 == 0 ? ((y = 4 * -g * o), (E = 0)) : (v - 1) % 4 == 0 ? ((y = 0), (E = 4 * -g * o)) : (v - 2) % 4 == 0 ? ((y = o + 4 * g * o), (E = o)) : (v - 3) % 4 == 0 && ((y = -o), (E = 3 * o + 4 * o * g)), r && (y = -y), h || ((b = y), (y = 0)), "rotateX(" + (h ? 0 : -f) + "deg) rotateY(" + (h ? f : 0) + "deg) translate3d(" + y + "px, " + b + "px, " + E + "px)") w <= 1 && -1 < w && (c = r ? 90 * -v - 90 * w : 90 * v + 90 * w), m.transform(g), l.slideShadows && ((f = h ? m.find(".swiper-slide-shadow-left") : m.find(".swiper-slide-shadow-top")), (y = h ? m.find(".swiper-slide-shadow-right") : m.find(".swiper-slide-shadow-bottom")), 0 === f.length && ((f = S( '
' )), m.append(f)), 0 === y.length && ((y = S( '
' )), m.append(y)), f.length && (f[0].style.opacity = Math.max(-w, 0)), y.length && (y[0].style.opacity = Math.max(w, 0))) } i.css({ "-webkit-transform-origin": "50% 50% -" + o / 2 + "px", "-moz-transform-origin": "50% 50% -" + o / 2 + "px", "-ms-transform-origin": "50% 50% -" + o / 2 + "px", "transform-origin": "50% 50% -" + o / 2 + "px", }), l.shadow && (h ? e.transform( "translate3d(0px, " + (a / 2 + l.shadowOffset) + "px, " + -a / 2 + "px) rotateX(90deg) rotateZ(0deg) scale(" + l.shadowScale + ")" ) : ((t = Math.abs(c) - 90 * Math.floor(Math.abs(c) / 90)), (a = 1.5 - (Math.sin((2 * t * Math.PI) / 360) / 2 + Math.cos((2 * t * Math.PI) / 360) / 2)), (t = l.shadowScale), (a = l.shadowScale / a), (u = l.shadowOffset), e.transform( "scale3d(" + t + ", 1, " + a + ") translate3d(0px, " + (n / 2 + u) + "px, " + -n / 2 / a + "px) rotateX(-90deg)" ))), i.transform( "translate3d(0px,0," + (T.isSafari || T.isUiWebView ? -o / 2 : 0) + "px) rotateX(" + (this.isHorizontal() ? 0 : c) + "deg) rotateY(" + (this.isHorizontal() ? -c : 0) + "deg)" ) }, setTransition: function (e) { var t = this.$el this.slides .transition(e) .find( ".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left" ) .transition(e), this.params.cubeEffect.shadow && !this.isHorizontal() && t.find(".swiper-cube-shadow").transition(e) }, }, se = { setTranslate: function () { for ( var e = this.slides, t = this.rtlTranslate, i = 0; i < e.length; i += 1 ) { var s, a, n = e.eq(i), r = n[0].progress, o = -180 * (r = this.params.flipEffect.limitRotation ? Math.max(Math.min(n[0].progress, 1), -1) : r), l = 0, h = -n[0].swiperSlideOffset, d = 0 this.isHorizontal() ? t && (o = -o) : ((d = h), (l = -o), (o = h = 0)), (n[0].style.zIndex = -Math.abs(Math.round(r)) + e.length), this.params.flipEffect.slideShadows && ((s = this.isHorizontal() ? n.find(".swiper-slide-shadow-left") : n.find(".swiper-slide-shadow-top")), (a = this.isHorizontal() ? n.find(".swiper-slide-shadow-right") : n.find(".swiper-slide-shadow-bottom")), 0 === s.length && ((s = S( '
' )), n.append(s)), 0 === a.length && ((a = S( '
' )), n.append(a)), s.length && (s[0].style.opacity = Math.max(-r, 0)), a.length && (a[0].style.opacity = Math.max(r, 0))), n.transform( "translate3d(" + h + "px, " + d + "px, 0px) rotateX(" + l + "deg) rotateY(" + o + "deg)" ) } }, setTransition: function (e) { var i, s = this, t = s.slides, a = s.activeIndex, n = s.$wrapperEl t .transition(e) .find( ".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left" ) .transition(e), s.params.virtualTranslate && 0 !== e && ((i = !1), t.eq(a).transitionEnd(function () { if (!i && s && !s.destroyed) { ;(i = !0), (s.animating = !1) for ( var e = ["webkitTransitionEnd", "transitionend"], t = 0; t < e.length; t += 1 ) n.trigger(e[t]) } })) }, }, ae = { setTranslate: function () { for ( var e = this.width, t = this.height, i = this.slides, s = this.$wrapperEl, a = this.slidesSizesGrid, n = this.params.coverflowEffect, r = this.isHorizontal(), o = this.translate, l = r ? e / 2 - o : t / 2 - o, h = r ? n.rotate : -n.rotate, d = n.depth, c = 0, u = i.length; c < u; c += 1 ) { var p = i.eq(c), m = a[c], m = ((l - p[0].swiperSlideOffset - m / 2) / m) * n.modifier, v = r ? h * m : 0, f = r ? 0 : h * m, g = -d * Math.abs(m), w = r ? 0 : n.stretch * m, y = r ? n.stretch * m : 0, y = (Math.abs(y) < 0.001 && (y = 0), Math.abs(w) < 0.001 && (w = 0), Math.abs(g) < 0.001 && (g = 0), Math.abs(v) < 0.001 && (v = 0), "translate3d(" + y + "px," + w + "px," + g + "px) rotateX(" + (f = Math.abs(f) < 0.001 ? 0 : f) + "deg) rotateY(" + v + "deg)") p.transform(y), (p[0].style.zIndex = 1 - Math.abs(Math.round(m))), n.slideShadows && ((w = r ? p.find(".swiper-slide-shadow-left") : p.find(".swiper-slide-shadow-top")), (g = r ? p.find(".swiper-slide-shadow-right") : p.find(".swiper-slide-shadow-bottom")), 0 === w.length && ((w = S( '
' )), p.append(w)), 0 === g.length && ((g = S( '
' )), p.append(g)), w.length && (w[0].style.opacity = 0 < m ? m : 0), g.length && (g[0].style.opacity = 0 < -m ? -m : 0)) } ;(b.pointerEvents || b.prefixedPointerEvents) && (s[0].style.perspectiveOrigin = l + "px 50%") }, setTransition: function (e) { this.slides .transition(e) .find( ".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left" ) .transition(e) }, }, ne = { init: function () { var e = this.params.thumbs, t = this.constructor e.swiper instanceof t ? ((this.thumbs.swiper = e.swiper), X.extend(this.thumbs.swiper.originalParams, { watchSlidesProgress: !0, slideToClickedSlide: !1, }), X.extend(this.thumbs.swiper.params, { watchSlidesProgress: !0, slideToClickedSlide: !1, })) : X.isObject(e.swiper) && ((this.thumbs.swiper = new t( X.extend({}, e.swiper, { watchSlidesVisibility: !0, watchSlidesProgress: !0, slideToClickedSlide: !1, }) )), (this.thumbs.swiperCreated = !0)), this.thumbs.swiper.$el.addClass( this.params.thumbs.thumbsContainerClass ), this.thumbs.swiper.on("tap", this.thumbs.onThumbClick) }, onThumbClick: function () { var e, t, i, s = this.thumbs.swiper s && ((e = s.clickedIndex), ((i = s.clickedSlide) && S(i).hasClass(this.params.thumbs.slideThumbActiveClass)) || null == e || ((i = s.params.loop ? parseInt( S(s.clickedSlide).attr("data-swiper-slide-index"), 10 ) : e), this.params.loop && ((s = this.activeIndex), this.slides.eq(s).hasClass(this.params.slideDuplicateClass) && (this.loopFix(), (this._clientLeft = this.$wrapperEl[0].clientLeft), (s = this.activeIndex)), (e = this.slides .eq(s) .prevAll('[data-swiper-slide-index="' + i + '"]') .eq(0) .index()), (t = this.slides .eq(s) .nextAll('[data-swiper-slide-index="' + i + '"]') .eq(0) .index()), (i = void 0 === e || (void 0 !== t && t - s < s - e) ? t : e)), this.slideTo(i))) }, update: function (e) { var t = this.thumbs.swiper if (t) { var i, s, a, n = "auto" === t.params.slidesPerView ? t.slidesPerViewDynamic() : t.params.slidesPerView, r = (this.realIndex !== t.realIndex && ((i = t.activeIndex), (a = t.params.loop ? (t.slides .eq(i) .hasClass(t.params.slideDuplicateClass) && (t.loopFix(), (t._clientLeft = t.$wrapperEl[0].clientLeft), (i = t.activeIndex)), (s = t.slides .eq(i) .prevAll( '[data-swiper-slide-index="' + this.realIndex + '"]' ) .eq(0) .index()), (a = t.slides .eq(i) .nextAll( '[data-swiper-slide-index="' + this.realIndex + '"]' ) .eq(0) .index()), void 0 === s ? a : void 0 === a ? s : a - i == i - s ? i : a - i < i - s ? a : s) : this.realIndex), t.visibleSlidesIndexes && t.visibleSlidesIndexes.indexOf(a) < 0 && (t.params.centeredSlides ? (a = i < a ? a - Math.floor(n / 2) + 1 : a + Math.floor(n / 2) - 1) : i < a && (a = a - n + 1), t.slideTo(a, e ? 0 : void 0))), 1), o = this.params.thumbs.slideThumbActiveClass if ( (1 < this.params.slidesPerView && !this.params.centeredSlides && (r = this.params.slidesPerView), this.params.thumbs.multipleActiveThumbs || (r = 1), (r = Math.floor(r)), t.slides.removeClass(o), t.params.loop || (t.params.virtual && t.params.virtual.enabled)) ) for (var l = 0; l < r; l += 1) t.$wrapperEl .children( '[data-swiper-slide-index="' + (this.realIndex + l) + '"]' ) .addClass(o) else for (var h = 0; h < r; h += 1) t.slides.eq(this.realIndex + h).addClass(o) } }, }, M = [ m, j, G, v, g, y, E, { name: "mousewheel", params: { mousewheel: { enabled: !1, releaseOnEdges: !1, invert: !1, forceToAxis: !1, sensitivity: 1, eventsTarged: "container", }, }, create: function () { X.extend(this, { mousewheel: { enabled: !1, enable: x.enable.bind(this), disable: x.disable.bind(this), handle: x.handle.bind(this), handleMouseEnter: x.handleMouseEnter.bind(this), handleMouseLeave: x.handleMouseLeave.bind(this), animateSlider: x.animateSlider.bind(this), releaseScroll: x.releaseScroll.bind(this), lastScrollTime: X.now(), lastEventBeforeSnap: void 0, recentWheelEvents: [], }, }) }, on: { init: function () { !this.params.mousewheel.enabled && this.params.cssMode && this.mousewheel.disable(), this.params.mousewheel.enabled && this.mousewheel.enable() }, destroy: function () { this.params.cssMode && this.mousewheel.enable(), this.mousewheel.enabled && this.mousewheel.disable() }, }, }, { name: "navigation", params: { navigation: { nextEl: null, prevEl: null, hideOnClick: !1, disabledClass: "swiper-button-disabled", hiddenClass: "swiper-button-hidden", lockClass: "swiper-button-lock", }, }, create: function () { X.extend(this, { navigation: { init: L.init.bind(this), update: L.update.bind(this), destroy: L.destroy.bind(this), onNextClick: L.onNextClick.bind(this), onPrevClick: L.onPrevClick.bind(this), }, }) }, on: { init: function () { this.navigation.init(), this.navigation.update() }, toEdge: function () { this.navigation.update() }, fromEdge: function () { this.navigation.update() }, destroy: function () { this.navigation.destroy() }, click: function (e) { var t, i = this.navigation, s = i.$nextEl, i = i.$prevEl !this.params.navigation.hideOnClick || S(e.target).is(i) || S(e.target).is(s) || (s ? (t = s.hasClass(this.params.navigation.hiddenClass)) : i && (t = i.hasClass(this.params.navigation.hiddenClass)), !0 === t ? this.emit("navigationShow", this) : this.emit("navigationHide", this), s && s.toggleClass(this.params.navigation.hiddenClass), i && i.toggleClass(this.params.navigation.hiddenClass)) }, }, }, { name: "pagination", params: { 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: function (e) { return e }, formatFractionTotal: function (e) { return e }, bulletClass: "swiper-pagination-bullet", bulletActiveClass: "swiper-pagination-bullet-active", modifierClass: "swiper-pagination-", currentClass: "swiper-pagination-current", totalClass: "swiper-pagination-total", hiddenClass: "swiper-pagination-hidden", progressbarFillClass: "swiper-pagination-progressbar-fill", progressbarOppositeClass: "swiper-pagination-progressbar-opposite", clickableClass: "swiper-pagination-clickable", lockClass: "swiper-pagination-lock", }, }, create: function () { X.extend(this, { pagination: { init: A.init.bind(this), render: A.render.bind(this), update: A.update.bind(this), destroy: A.destroy.bind(this), dynamicBulletIndex: 0, }, }) }, on: { init: function () { this.pagination.init(), this.pagination.render(), this.pagination.update() }, activeIndexChange: function () { ;(!this.params.loop && void 0 !== this.snapIndex) || this.pagination.update() }, snapIndexChange: function () { this.params.loop || this.pagination.update() }, slidesLengthChange: function () { this.params.loop && (this.pagination.render(), this.pagination.update()) }, snapGridLengthChange: function () { this.params.loop || (this.pagination.render(), this.pagination.update()) }, destroy: function () { this.pagination.destroy() }, click: function (e) { this.params.pagination.el && this.params.pagination.hideOnClick && 0 < this.pagination.$el.length && !S(e.target).hasClass(this.params.pagination.bulletClass) && (!0 === this.pagination.$el.hasClass( this.params.pagination.hiddenClass ) ? this.emit("paginationShow", this) : this.emit("paginationHide", this), this.pagination.$el.toggleClass( this.params.pagination.hiddenClass )) }, }, }, { name: "scrollbar", params: { scrollbar: { el: null, dragSize: "auto", hide: !1, draggable: !1, snapOnRelease: !0, lockClass: "swiper-scrollbar-lock", dragClass: "swiper-scrollbar-drag", }, }, create: function () { X.extend(this, { scrollbar: { init: k.init.bind(this), destroy: k.destroy.bind(this), updateSize: k.updateSize.bind(this), setTranslate: k.setTranslate.bind(this), setTransition: k.setTransition.bind(this), enableDraggable: k.enableDraggable.bind(this), disableDraggable: k.disableDraggable.bind(this), setDragPosition: k.setDragPosition.bind(this), getPointerPosition: k.getPointerPosition.bind(this), onDragStart: k.onDragStart.bind(this), onDragMove: k.onDragMove.bind(this), onDragEnd: k.onDragEnd.bind(this), isTouched: !1, timeout: null, dragTimeout: null, }, }) }, on: { init: function () { this.scrollbar.init(), this.scrollbar.updateSize(), this.scrollbar.setTranslate() }, update: function () { this.scrollbar.updateSize() }, resize: function () { this.scrollbar.updateSize() }, observerUpdate: function () { this.scrollbar.updateSize() }, setTranslate: function () { this.scrollbar.setTranslate() }, setTransition: function (e) { this.scrollbar.setTransition(e) }, destroy: function () { this.scrollbar.destroy() }, }, }, { name: "parallax", params: { parallax: { enabled: !1 } }, create: function () { X.extend(this, { parallax: { setTransform: Q.setTransform.bind(this), setTranslate: Q.setTranslate.bind(this), setTransition: Q.setTransition.bind(this), }, }) }, on: { beforeInit: function () { this.params.parallax.enabled && ((this.params.watchSlidesProgress = !0), (this.originalParams.watchSlidesProgress = !0)) }, init: function () { this.params.parallax.enabled && this.parallax.setTranslate() }, setTranslate: function () { this.params.parallax.enabled && this.parallax.setTranslate() }, setTransition: function (e) { this.params.parallax.enabled && this.parallax.setTransition(e) }, }, }, { name: "zoom", params: { zoom: { enabled: !1, maxRatio: 3, minRatio: 1, toggle: !0, containerClass: "swiper-zoom-container", zoomedSlideClass: "swiper-slide-zoomed", }, }, create: function () { var s = this, t = { enabled: !1, scale: 1, currentScale: 1, isScaling: !1, gesture: { $slideEl: void 0, slideWidth: void 0, slideHeight: void 0, $imageEl: void 0, $imageWrapEl: void 0, maxRatio: 3, }, image: { 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: {}, }, velocity: { x: void 0, y: void 0, prevPositionX: void 0, prevPositionY: void 0, prevTime: void 0, }, }, a = ("onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out" .split(" ") .forEach(function (e) { t[e] = J[e].bind(s) }), X.extend(s, { zoom: t }), 1) Object.defineProperty(s.zoom, "scale", { get: function () { return a }, set: function (e) { var t, i a !== e && ((t = s.zoom.gesture.$imageEl ? s.zoom.gesture.$imageEl[0] : void 0), (i = s.zoom.gesture.$slideEl ? s.zoom.gesture.$slideEl[0] : void 0), s.emit("zoomChange", e, t, i)), (a = e) }, }) }, on: { init: function () { this.params.zoom.enabled && this.zoom.enable() }, destroy: function () { this.zoom.disable() }, touchStart: function (e) { this.zoom.enabled && this.zoom.onTouchStart(e) }, touchEnd: function (e) { this.zoom.enabled && this.zoom.onTouchEnd(e) }, doubleTap: function (e) { this.params.zoom.enabled && this.zoom.enabled && this.params.zoom.toggle && this.zoom.toggle(e) }, transitionEnd: function () { this.zoom.enabled && this.params.zoom.enabled && this.zoom.onTransitionEnd() }, slideChange: function () { this.zoom.enabled && this.params.zoom.enabled && this.params.cssMode && this.zoom.onTransitionEnd() }, }, }, { name: "lazy", params: { lazy: { enabled: !1, loadPrevNext: !1, loadPrevNextAmount: 1, loadOnTransitionStart: !1, elementClass: "swiper-lazy", loadingClass: "swiper-lazy-loading", loadedClass: "swiper-lazy-loaded", preloaderClass: "swiper-lazy-preloader", }, }, create: function () { X.extend(this, { lazy: { initialImageLoaded: !1, load: Z.load.bind(this), loadInSlide: Z.loadInSlide.bind(this), }, }) }, on: { beforeInit: function () { this.params.lazy.enabled && this.params.preloadImages && (this.params.preloadImages = !1) }, init: function () { this.params.lazy.enabled && !this.params.loop && 0 === this.params.initialSlide && this.lazy.load() }, scroll: function () { this.params.freeMode && !this.params.freeModeSticky && this.lazy.load() }, resize: function () { this.params.lazy.enabled && this.lazy.load() }, scrollbarDragMove: function () { this.params.lazy.enabled && this.lazy.load() }, transitionStart: function () { this.params.lazy.enabled && (this.params.lazy.loadOnTransitionStart || (!this.params.lazy.loadOnTransitionStart && !this.lazy.initialImageLoaded)) && this.lazy.load() }, transitionEnd: function () { this.params.lazy.enabled && !this.params.lazy.loadOnTransitionStart && this.lazy.load() }, slideChange: function () { this.params.lazy.enabled && this.params.cssMode && this.lazy.load() }, }, }, { name: "controller", params: { controller: { control: void 0, inverse: !1, by: "slide" }, }, create: function () { X.extend(this, { controller: { control: this.params.controller.control, getInterpolateFunction: I.getInterpolateFunction.bind(this), setTranslate: I.setTranslate.bind(this), setTransition: I.setTransition.bind(this), }, }) }, on: { update: function () { this.controller.control && this.controller.spline && ((this.controller.spline = void 0), delete this.controller.spline) }, resize: function () { this.controller.control && this.controller.spline && ((this.controller.spline = void 0), delete this.controller.spline) }, observerUpdate: function () { this.controller.control && this.controller.spline && ((this.controller.spline = void 0), delete this.controller.spline) }, setTranslate: function (e, t) { this.controller.control && this.controller.setTranslate(e, t) }, setTransition: function (e, t) { this.controller.control && this.controller.setTransition(e, t) }, }, }, { name: "a11y", params: { 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}}", }, }, create: function () { var t = this X.extend(t, { a11y: { liveRegion: S( '' ), }, }), Object.keys(ee).forEach(function (e) { t.a11y[e] = ee[e].bind(t) }) }, on: { init: function () { this.params.a11y.enabled && (this.a11y.init(), this.a11y.updateNavigation()) }, toEdge: function () { this.params.a11y.enabled && this.a11y.updateNavigation() }, fromEdge: function () { this.params.a11y.enabled && this.a11y.updateNavigation() }, paginationUpdate: function () { this.params.a11y.enabled && this.a11y.updatePagination() }, destroy: function () { this.params.a11y.enabled && this.a11y.destroy() }, }, }, { name: "history", params: { history: { enabled: !1, replaceState: !1, key: "slides" }, }, create: function () { X.extend(this, { history: { init: z.init.bind(this), setHistory: z.setHistory.bind(this), setHistoryPopState: z.setHistoryPopState.bind(this), scrollToSlide: z.scrollToSlide.bind(this), destroy: z.destroy.bind(this), }, }) }, on: { init: function () { this.params.history.enabled && this.history.init() }, destroy: function () { this.params.history.enabled && this.history.destroy() }, transitionEnd: function () { this.history.initialized && this.history.setHistory( this.params.history.key, this.activeIndex ) }, slideChange: function () { this.history.initialized && this.params.cssMode && this.history.setHistory( this.params.history.key, this.activeIndex ) }, }, }, { name: "hash-navigation", params: { hashNavigation: { enabled: !1, replaceState: !1, watchState: !1 }, }, create: function () { X.extend(this, { hashNavigation: { initialized: !1, init: P.init.bind(this), destroy: P.destroy.bind(this), setHash: P.setHash.bind(this), onHashCange: P.onHashCange.bind(this), }, }) }, on: { init: function () { this.params.hashNavigation.enabled && this.hashNavigation.init() }, destroy: function () { this.params.hashNavigation.enabled && this.hashNavigation.destroy() }, transitionEnd: function () { this.hashNavigation.initialized && this.hashNavigation.setHash() }, slideChange: function () { this.hashNavigation.initialized && this.params.cssMode && this.hashNavigation.setHash() }, }, }, { name: "autoplay", params: { autoplay: { enabled: !1, delay: 3e3, waitForTransition: !0, disableOnInteraction: !0, stopOnLastSlide: !1, reverseDirection: !1, }, }, create: function () { var t = this X.extend(t, { autoplay: { running: !1, paused: !1, run: H.run.bind(t), start: H.start.bind(t), stop: H.stop.bind(t), pause: H.pause.bind(t), onVisibilityChange: function () { "hidden" === document.visibilityState && t.autoplay.running && t.autoplay.pause(), "visible" === document.visibilityState && t.autoplay.paused && (t.autoplay.run(), (t.autoplay.paused = !1)) }, onTransitionEnd: function (e) { t && !t.destroyed && t.$wrapperEl && e.target === this && (t.$wrapperEl[0].removeEventListener( "transitionend", t.autoplay.onTransitionEnd ), t.$wrapperEl[0].removeEventListener( "webkitTransitionEnd", t.autoplay.onTransitionEnd ), (t.autoplay.paused = !1), t.autoplay.running ? t.autoplay.run() : t.autoplay.stop()) }, }, }) }, on: { init: function () { this.params.autoplay.enabled && (this.autoplay.start(), document.addEventListener( "visibilitychange", this.autoplay.onVisibilityChange )) }, beforeTransitionStart: function (e, t) { this.autoplay.running && (t || !this.params.autoplay.disableOnInteraction ? this.autoplay.pause(e) : this.autoplay.stop()) }, sliderFirstMove: function () { this.autoplay.running && (this.params.autoplay.disableOnInteraction ? this.autoplay.stop() : this.autoplay.pause()) }, touchEnd: function () { this.params.cssMode && this.autoplay.paused && !this.params.autoplay.disableOnInteraction && this.autoplay.run() }, destroy: function () { this.autoplay.running && this.autoplay.stop(), document.removeEventListener( "visibilitychange", this.autoplay.onVisibilityChange ) }, }, }, { name: "effect-fade", params: { fadeEffect: { crossFade: !1 } }, create: function () { X.extend(this, { fadeEffect: { setTranslate: te.setTranslate.bind(this), setTransition: te.setTransition.bind(this), }, }) }, on: { beforeInit: function () { var e "fade" === this.params.effect && (this.classNames.push( this.params.containerModifierClass + "fade" ), X.extend( this.params, (e = { slidesPerView: 1, slidesPerColumn: 1, slidesPerGroup: 1, watchSlidesProgress: !0, spaceBetween: 0, virtualTranslate: !0, }) ), X.extend(this.originalParams, e)) }, setTranslate: function () { "fade" === this.params.effect && this.fadeEffect.setTranslate() }, setTransition: function (e) { "fade" === this.params.effect && this.fadeEffect.setTransition(e) }, }, }, { name: "effect-cube", params: { cubeEffect: { slideShadows: !0, shadow: !0, shadowOffset: 20, shadowScale: 0.94, }, }, create: function () { X.extend(this, { cubeEffect: { setTranslate: ie.setTranslate.bind(this), setTransition: ie.setTransition.bind(this), }, }) }, on: { beforeInit: function () { var e "cube" === this.params.effect && (this.classNames.push( this.params.containerModifierClass + "cube" ), this.classNames.push( this.params.containerModifierClass + "3d" ), X.extend( this.params, (e = { slidesPerView: 1, slidesPerColumn: 1, slidesPerGroup: 1, watchSlidesProgress: !0, resistanceRatio: 0, spaceBetween: 0, centeredSlides: !1, virtualTranslate: !0, }) ), X.extend(this.originalParams, e)) }, setTranslate: function () { "cube" === this.params.effect && this.cubeEffect.setTranslate() }, setTransition: function (e) { "cube" === this.params.effect && this.cubeEffect.setTransition(e) }, }, }, { name: "effect-flip", params: { flipEffect: { slideShadows: !0, limitRotation: !0 } }, create: function () { X.extend(this, { flipEffect: { setTranslate: se.setTranslate.bind(this), setTransition: se.setTransition.bind(this), }, }) }, on: { beforeInit: function () { var e "flip" === this.params.effect && (this.classNames.push( this.params.containerModifierClass + "flip" ), this.classNames.push( this.params.containerModifierClass + "3d" ), X.extend( this.params, (e = { slidesPerView: 1, slidesPerColumn: 1, slidesPerGroup: 1, watchSlidesProgress: !0, spaceBetween: 0, virtualTranslate: !0, }) ), X.extend(this.originalParams, e)) }, setTranslate: function () { "flip" === this.params.effect && this.flipEffect.setTranslate() }, setTransition: function (e) { "flip" === this.params.effect && this.flipEffect.setTransition(e) }, }, }, { name: "effect-coverflow", params: { coverflowEffect: { rotate: 50, stretch: 0, depth: 100, modifier: 1, slideShadows: !0, }, }, create: function () { X.extend(this, { coverflowEffect: { setTranslate: ae.setTranslate.bind(this), setTransition: ae.setTransition.bind(this), }, }) }, on: { beforeInit: function () { "coverflow" === this.params.effect && (this.classNames.push( this.params.containerModifierClass + "coverflow" ), this.classNames.push( this.params.containerModifierClass + "3d" ), (this.params.watchSlidesProgress = !0), (this.originalParams.watchSlidesProgress = !0)) }, setTranslate: function () { "coverflow" === this.params.effect && this.coverflowEffect.setTranslate() }, setTransition: function (e) { "coverflow" === this.params.effect && this.coverflowEffect.setTransition(e) }, }, }, { name: "thumbs", params: { thumbs: { multipleActiveThumbs: !0, swiper: null, slideThumbActiveClass: "swiper-slide-thumb-active", thumbsContainerClass: "swiper-container-thumbs", }, }, create: function () { X.extend(this, { thumbs: { swiper: null, init: ne.init.bind(this), update: ne.update.bind(this), onThumbClick: ne.onThumbClick.bind(this), }, }) }, on: { beforeInit: function () { var e = this.params.thumbs e && e.swiper && (this.thumbs.init(), this.thumbs.update(!0)) }, slideChange: function () { this.thumbs.swiper && this.thumbs.update() }, update: function () { this.thumbs.swiper && this.thumbs.update() }, resize: function () { this.thumbs.swiper && this.thumbs.update() }, observerUpdate: function () { this.thumbs.swiper && this.thumbs.update() }, setTransition: function (e) { var t = this.thumbs.swiper t && t.setTransition(e) }, beforeDestroy: function () { var e = this.thumbs.swiper e && this.thumbs.swiperCreated && e && e.destroy() }, }, }, ] return ( void 0 === p.use && ((p.use = p.Class.use), (p.installModule = p.Class.installModule)), p.use(M), p ) }) var ANIUTIL = (function () { function t(e) { function t(e) { ;(this.opts = e), (this.resizeTiming = e.resizeTiming || 100), this.setElement(), this.setVideoStyle(), this.bindEvent() } var i = t.prototype ;(i.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) }), (i.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%)") }), (i.bindEvent = function () { var e = this window.addEventListener("load", function () { e.setVideoSize() }), window.addEventListener("resize", function () { e.setVideoSize() }) }), (i.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) }), (i.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 i(e) { var t, i, s = null, a = null, n = e ? e + 200 : 200, r = function () { null == s ? ((i = document.scrollingElement || document.documentElement || document.body.parentNode || document.body), (t = document.body.clientHeight), (i = window.pageYOffset + i.clientHeight), (s = i / t)) : (t = document.body.clientHeight) }, o = function () { clearTimeout(a), (a = setTimeout(function () { window.scrollTo(0, t * s - window.innerHeight), (s = null) }, n)) } window.addEventListener("resize", function () { r(), o() }) } function s() { 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, i = t.classList.length, s = 0; s < i; s++) t.targetElement.classList.add(t.classList[s]) }, removeClass: function (e) { for (var t = e, i = t.classList.length, s = 0; s < i; s++) t.targetElement.classList.remove(t.classList[s]) }, scrollController: function (e) { var i, s = (s = e) || {}, t = navigator.userAgent.toLowerCase(), a = document.scrollingElement || document.documentElement || document.body.parentNode || document.body, n = s.speed || 120, r = 0 <= s.duration ? s.duration : 1, o = a.scrollTop, l = a === document.body && document.documentElement ? document.documentElement : a, h = !1, d = 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 && u.scrollEvent(e) }, { passive: !1 } ) : document.addEventListener( "wheel", function (e) { u.scrollEvent(e) }, { passive: !1 } ) }, c = function () { window.addEventListener("scroll", function () { "hidden" == document.documentElement.style.overflow || h || (o = a.scrollTop) }) }, u = { scrollEvent: function (e) { e.preventDefault() var t = document.body.getAttribute("data-scroll-speed"), e = this.normalizeWheelDelta(e), t = s.currDelta && t ? t : t || n ? n : 120 ;(o += -e * t), (i = 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 = i - a.scrollTop, e = Math.ceil(a.scrollTop + e) <= 0 ? 0 : i < o ? i : Math.ceil(a.scrollTop + e) ;(h = !0), TweenMax.to(a, r, { ease: "power1.out", scrollTop: e, onComplete: function () { clearTimeout(d), (d = null), (d = setTimeout(function () { ;(h = !1), (o = a.scrollTop) }, 500)) }, }), o <= 0 ? (o = 0) : i <= o && (o = i) }, } window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame, (-1 == t.indexOf("chrome") && -1 != t.indexOf("safari")) || (e(), c()) }, resizeScrollOffset: function (e) { i(e) }, checkTouchDevice: s, checkFold: function () { var e, t = screen.width / screen.height, i = s() && 0.7137 < t && t < 0.8 && "width=768" == document.getElementsByName("viewport")[0].content, t = s() && 0.8 < t && t < 0.95 && "width=768" == document.getElementsByName("viewport")[0].content return i ? (e = "isFold") : t && (e = "isFoldLatest"), e }, deviceConsole: function (e, t) { var i, s document.querySelector(".console-layer") || ((i = document.createElement("div")).classList.add("console-layer"), i.setAttribute( "style", "position: fixed; left: 0; top: 0; padding: 20px; z-index:1000000000; background: #fff;" ), document.querySelector("body").append(i)), "multi" == t ? ((i = document.querySelector(".console-layer")), (s = document.createElement("div")).classList.add( "console-value" ), s.setAttribute( "style", "border: 1px #ddd solid; float: left; padding: 10px;" ), i.append(s)) : (s = (document.querySelector(".console-value") || ((s = document.createElement("div")).classList.add( "console-value" ), s.setAttribute( "style", "border: 1px #ddd solid; float: left; padding: 10px;" ), i.append(s)), document.querySelector(".console-value"))), (s.innerHTML = e) }, percentToPixel: function (e) { return e.targetValue * (e.progress / 100) }, responsiveHandler: function (s) { var a, e, n, r, t = (window.resolutionStatus = null), s = (window.innerWidth, { resolution: s.resolution, statusName: s.statusName || [], callback: s.callback || [], activeTiming: s.activeTiming || 100, }), i = function () { r = window.innerWidth for (var e = 0; e < s.resolution.length; e++) { var t = s.resolution[e], i = s.resolution[e + 1] || 0 ;(r <= t && i < r && a != s.statusName[e]) || (r <= t && i < r && n != e) ? (document.documentElement.classList.remove(a), (a = s.statusName[e] || e), (n = e), document.documentElement.classList.add(a)) : ((r >= s.resolution[0] && a != s.statusName[0]) || (r >= s.resolution[0] && !n)) && (document.documentElement.classList.remove(a), (a = s.statusName[0] || e), (n = e), document.documentElement.classList.add(a)) } }, o = function () { clearTimeout(t), console.log(s.activeTiming), e != n && s.callback[n] && (t = setTimeout(function () { s.callback[n](), (t = null), (e = n) }, s.activeTiming)) } return (function () { return ( window.addEventListener("DOMContentLoaded", function () { i(), (e = n) }), window.addEventListener("resize", function () { i(), o() }), this ) })() }, } })() window.WATCH6 = window.WATCH6 || {} const UTILS = (function () { return { isIosDevice: ((s = /iPad|iPhone|iPod/.test(navigator.userAgent)) ? document.documentElement.classList.add("isIosDevice") : document.documentElement.classList.add("isNotIosDevice"), s), checkGlobal: void (0 === location.pathname.indexOf("/global/galaxy") || !0 === window.IS_CAMPAIGN ? document.documentElement.classList.add("global") : document.documentElement.classList.add("dotcom")), checkOS: ((s = (s = navigator.appVersion.match(/(mac|win|linux)/i)) ? s[1].toLowerCase() : ""), void document.documentElement.classList.add(s)), 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: ((s = /applewebkit/i.test(navigator.userAgent)), (i = /chrome/i.test(navigator.userAgent)), void (s && !i && 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: ((s = "Netscape" === navigator.appName), (i = -1 !== navigator.appVersion.indexOf("Mac")), (e = -1 !== navigator.userAgent.indexOf("Safari")), (t = -1 !== navigator.userAgent.indexOf("Chrome")), s && !i && 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) }, 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 i = Object(e[0]), s = 1; s < e.length; s += 1) { var a = e[s] if (null != a) for ( var n = Object.keys(Object(a)), r = 0, o = n.length; r < o; r += 1 ) { var l = n[r], h = Object.getOwnPropertyDescriptor(a, l) void 0 !== h && h.enumerable && (this.isObject(i[l]) && this.isObject(a[l]) ? this.def(i[l], a[l]) : !this.isObject(i[l]) && this.isObject(a[l]) ? ((i[l] = {}), this.def(i[l], a[l])) : (i[l] = a[l])) } } return i }, 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" }, 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 }, 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, i) { var s = new Date() s.setTime(s.getTime() + 60 * i * 60 * 24 * 1e3), (document.cookie = e + "=" + t + "; exprires=" + s.toUTCString() + "; path=/") }, getCookie: function (e) { e = document.cookie.match("(^|;) ?" + e + "=([^;]*)(;|$)") return e ? e[2] : null }, triggerEvent: function (e, t, i, s, a) { var n, i = i || null, s = s || !1, a = a || !0 null == i ? (n = document.createEvent("HTMLEvents")).initEvent(t, s, a) : (n = document.createEvent("CustomEvent")).initCustomEvent( t, s, a, i ), 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"), i = 0; i < t.length; i++ ) { var s = t[i].getAttribute("aria-hidden"), a = t[i].getAttribute("tabindex") null != s && null == t[i].getAttribute("data-prev-aria-hidden") && t[i].setAttribute("data-prev-aria-hidden", s), null != a && null == t[i].getAttribute("data-prev-tabindex") && t[i].setAttribute("data-prev-tabindex", a), t[i].setAttribute("tabindex", -1), t[i].setAttribute("aria-hidden", !0) } }, offPopupAccessibility: function (e) { e.removeAttribute("aria-hidden"), e.removeAttribute("tabindex") for ( var t = e.querySelectorAll("a, button, input, select, iframe"), i = 0; i < t.length; i++ ) { var s = t[i].getAttribute("data-prev-aria-hidden"), a = t[i].getAttribute("data-prev-tabindex") null != s ? t[i].setAttribute("aria-hidden", s) : t[i].removeAttribute("aria-hidden"), null != a ? t[i].setAttribute("tabindex", a) : t[i].removeAttribute("tabindex"), t[i].removeAttribute("data-prev-aria-hidden"), t[i].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"), i = 0; i < t.length; i++ ) t[i].setAttribute("tabindex", -1), t[i].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"), i = 0; i < t.length; i++ ) t[i].removeAttribute("tabindex"), t[i].removeAttribute("aria-hidden") } }, extend: function (t, i) { return ( Object.keys(i).forEach(function (e) { t[e] = i[e] }), t ) }, getHeight: function (e) { var t, i, s return e ? ((t = (i = window.getComputedStyle(e)).display), (i = parseInt(i.maxHeight)), (s = 0), "none" != t && 0 != i ? e.offsetHeight : ((e.style.position = "absolute"), (e.style.visibility = "hidden"), (e.style.display = "block"), (s = e.offsetHeight), (e.style.display = ""), (e.style.position = ""), (e.style.visibility = ""), s)) : 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 = "", i = 0; i < e.length; i++ ) if ("sitecode" == e[i].getAttribute("name")) return (t = e[i].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 = (s = location.href).indexOf("?") + 1, i = -1 < s.indexOf("#") ? s.indexOf("#") + 1 : s.length if (0 == t) return "" for ( var s = (s = s.substring(t, i)).split("&"), a = "", n = 0; n < s.length; n++ ) { var r = s[n].split("=") if (2 != r.length) break r[0] == e && (a = r[1]) break } return a }, customParallax: function (e) { var t = e.mode || "center", i = e.delay || 0, s = 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, h = e.direction || 1, d = e.activeElement, c = e.targetElement || d, u = e.wrapperElement || d, e = e.unit || "px", p = window.pageYOffset, m = window.pageYOffset + window.innerHeight, d = d.getBoundingClientRect(), v = p + u.getBoundingClientRect().top, u = v + u.getBoundingClientRect().height, f = window.innerHeight + d.height + 2 * l, g = "center" == t ? d.top - (window.innerHeight - d.height) / 2 : d.top - window.innerHeight "px" == e && (r = (d.height * r) / 100), v <= m + l && p - l <= u && TweenMax.to(c, n, { y: o + ((g * ("center" == t ? 2 * r : r)) / f) * h + e, z: a, ease: s, delay: i, }) }, getNavHeight: function () { var e, t, i = 0, s = document.querySelector(".pd-g-header-navigation") || document.querySelector("#subnav") || document.querySelector(".sticky-menu") || document.querySelector(".pd-g-floating-nav") return (i = s ? s.classList.contains("pd-g-header-navigation") ? ((t = (e = s.querySelector( ".pd-header-navigation" )).querySelector(".pd-header-navigation__menu-wrap")), e.clientHeight + t.clientHeight) : s.clientHeight : i) }, isBrokenFixed: function () { var e = window.innerWidth, t = window.innerHeight, i = !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"), (i = !0)) : document.documentElement.classList.remove("is-broken-fixed"), i ) }, isFullAnimationBrokenFixed: () => { var e = window.innerWidth, t = window.innerHeight, i = !!UTILS.isTouchDevice && window.matchMedia("(orientation: landscape)").matches let s = !1 return ( (!!UTILS.isTouchDevice && !window.matchMedia("(orientation: landscape)").matches && t / e < 1.5) || i || t < 700 ? (document.documentElement.classList.add( "is-animation-broken-fixed" ), (s = !0)) : document.documentElement.classList.remove( "is-animation-broken-fixed" ), s ) }, isTouchDevice: ((s = "ontouchstart" in window || (window.DocumentTouch && document instanceof window.DocumentTouch)) ? document.documentElement.classList.add("isTouchDevice") : document.documentElement.classList.add("isNotTouchDevice"), s), 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) const e = document.querySelector("body") ;(e.style.position = null), (e.style.top = null), (e.style.width = null), window.scrollTo(0, this.scrollEnd) }, on: function () { var e = this.barWidth() this.el.addClass(this.className), this.run(e) const t = document.querySelector("body") e = window.pageYOffset || document.documentElement.scrollTop ;(t.style.position = "fixed"), (t.style.top = -e + "px"), (t.style.width = "100%"), (this.scrollEnd = e <= 0 ? 0 : e) }, }, }, MIN_VIEW_HEIGHT: 400, RESPONSIVE: { PC: { NAME: "pc", WIDTH: 1440 }, TABLET: { NAME: "tablet", WIDTH: 1024 }, MOBILE: { NAME: "mobile", WIDTH: 767 }, }, } var e, t, i, s })() WATCH6.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, i = this.winScrollTop - e, e = this.winScrollBottom - e, i = this.useFixed || this.useSticky ? (i / t) * 100 : (e / t) * 100 return ( this.useStrictMode ? (this.progress = Math.floor(i) < 0 ? 0 : 100 < Math.floor(i) ? 100 : Math.floor(i)) : (this.progress = i), 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() { h(), o() } var i = this, s = this.activeVisibility, a = this.activeType, n = this.windowHeight / 2, r = function () { if (i.activeClass) if ("object" == typeof i.activeClass) for (var e = i.activeClass.length, t = 0; t < e; t++) i.activeElement.classList.contains(i.activeClass[t]) || i.activeElement.classList.add(i.activeClass[t]) else i.activeElement.classList.contains(i.activeClass) || i.activeElement.classList.add(i.activeClass) }, o = function () { if ("object" == typeof i.activeClass) for (var e = i.activeClass.length, t = 0; t < e; t++) i.activeElement.classList.contains(i.activeClass[t]) && i.activeElement.classList.remove(i.activeClass[t]) else i.activeElement.classList.contains(i.activeClass) && i.activeElement.classList.remove(i.activeClass) i.activeElement.classList.contains(i.activeCallbackClass) && i.activeElement.classList.remove(i.activeCallbackClass) }, l = function () { i.activeElement.classList.contains(i.activeCallbackClass) || (i.opts.activeCallback && (i.opts.activeCallback.call(i), i.activeElement.classList.add(i.activeCallbackClass))) }, h = function () { i.activeElement.classList.contains(i.activeCallbackClass) && i.opts.endCallback && i.opts.endCallback.call(i) } switch ((this.getWheelDirection(), s)) { 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" == s ? ((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" == s ? 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.WATCH6 = window.WATCH6 || {} const u = WATCH6.UTILS WATCH6.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 s = 0; s < a; s++) { let e = s + 1, t = e == a ? 0 : this.opts.loadOption[e].resolution, i = !1 ;(i = (0 == s || this.windowWidth <= this.opts.loadOption[s].resolution) && this.windowWidth > t) && this.opts.loadOption[s].attribute !== this.oldAttr && ((this.targetAttr = this.opts.loadOption[s].attribute), (this.oldAttr = this.targetAttr), (this.attrIndex = s), (this.dynamicCallCount = 0), this.setResponsiveImage()) } } setResponsiveImage(i) { if (i) for (let t = 0; t < i.length; t++) { var s = i[t] let e = i[t].getAttribute(this.targetAttr) ;(e = e || this.findImageHandler(s)), i[t].classList.contains(this.opts.lazyCompleteClass) || (i[t].setAttribute("src", e), i[t].classList.add(this.opts.lazyCompleteClass)) } else for (let i = 0; i < this.responsiveLength; i++) { let e = this.responsiveImages[i], 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 d = 0; d < this.lazyLength; d++) { let t = this.lazyImages[d], e = this.windowHeight * this.opts.visiblePoint, i = u.getScroll.call(this).top - e, s = u.getScroll.call(this).bottom + e, a = u.getOffset.call(this, t).top, n = u.getOffset.call(this, t).bottom, r = this.opts.lazyClass.split("."), o = r[r.length - 1], l = this.opts.startLazyClass.split("."), h = l[l.length - 1] if ( ((a < s && i <= a) || (i < n && n < s) || (i < a && n < s) || (a < i && s < n)) && null != t.offsetParent ) { let e = t.getAttribute(this.targetAttr) var c ;(e = e || this.findImageHandler(t)), t.classList.contains(this.opts.lazyCompleteClass) || (t.setAttribute("src", e), (c = () => { 1 == this.opts.startLazyClass.split(" ").length && t.classList.remove(h), 1 == this.opts.lazyClass.split(" ").length && t.classList.remove(o), this.checkCompleteImage(), t.removeEventListener("load", c) }), t.addEventListener("load", c), t.classList.add(this.opts.lazyCompleteClass)) } } } findRemainingImageAttr(e) { for (var t = this.opts.loadOption.length, i = 0; i < t; i++) { var s = e.getAttribute(this.opts.loadOption[i].attribute) if (s) return s } } findNextImageAttr(t) { for (let e = this.attrIndex; 0 <= e; e--) { var i = t.getAttribute(this.opts.loadOption[e].attribute) if (i) return i if (0 == e && null == i) return this.findRemainingImageAttr(t) } } findImageHandler(e) { return 0 !== this.attrIndex ? this.findNextImageAttr(e) : this.findRemainingImageAttr(e) } } })(), (function () { "use strict" window.WATCH6 = window.WATCH6 || {} const e = WATCH6.UTILS, t = e.RESPONSIVE WATCH6.VideoLoader = class { constructor(e = container, t) { t = { el: e, lazyCompleteClass: "load-complete", lazyClass: t.startLazyClass || ".js-video-src", responsiveClass: t.startResponsiveClass || ".js-res-video", 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 s = 0; s < a; s++) { let e = s + 1, t = e == a ? 0 : this.opts.loadOption[e].resolution, i = !1 ;(i = (0 == s || this.windowWidth <= this.opts.loadOption[s].resolution) && this.windowWidth > t) && this.opts.loadOption[s].attribute !== this.oldAttr && ((this.targetAttr = this.opts.loadOption[s].attribute), (this.oldAttr = this.targetAttr), (this.attrIndex = s), this.setResponsiveVideo()) } } setResponsiveVideo() { for (let e = 0; e < this.responsiveLength; e++) { const i = this.responsiveVideos[e], s = i.querySelector("video"), a = i.getAttribute(this.targetAttr) i.classList.contains(this.classes.loaded) && i.isVideoInit && s.querySelectorAll("source").forEach((e) => { const t = e.getAttribute("type") ;-1 < t.indexOf("webm") && (e.src = a + ".webm"), -1 < t.indexOf("mp4") && (e.src = a + ".mp4"), s.load(), s.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, i = t + window.innerHeight const n = this.lazyVideos[e] var s = n.getBoundingClientRect(), a = t + s.top, s = t + s.bottom i > a - window.innerHeight * (0 != window.pageYOffset ? this.opts.visiblePoint : 0) && t < s + 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], i = t.querySelector("video"), s = t.getAttribute(this.targetAttr) e = this.opts.lazyClass.split(".") const a = e[e.length - 1] e = s this.prevVideoSrc !== e && (i.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") }), i.load(), i.addEventListener( "canplaythrough", () => { window.setTimeout(() => { t.classList.add(this.classes.loaded), t.classList.remove(this.classes.ended) }, 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 i = e.querySelector(this.opts.imageEndLazyClass) e = this.opts.imageEndLazyClass.split(".") const s = e[e.length - 1] i && !i.classList.contains(this.opts.lazyCompleteClass) && ((i.src = i.getAttribute(t)), i.addEventListener( "load", () => { 1 == this.opts.imageEndLazyClass.split(" ").length && i.classList.remove(s), i.classList.add(this.opts.lazyCompleteClass) }, { 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.WATCH6 = window.WATCH6 || {} const d = WATCH6.UTILS, e = d.RESPONSIVE WATCH6.VideoPlayer = class { constructor(e, t) { e = { sectionElement: t.sectionElement, videoParentElement: null, videoElement: e, videoController: ".video__controller", hiddenElement: ".blind", endImage: ".video__end-frame img", 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 }, } ;(this.opts = d.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.prevDevice = null), (this.autoPlay = !!this.videoElement.dataset.autoPlay && JSON.parse(this.videoElement.dataset.autoPlay)), (this.videoElement.playState = !1), (this.videoElement.autoPlayState = !1), (this.useController = !!this.videoController) } getCurrentDevice() { ;(this.winWidth = d.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 i = this.opts.imageEndLazyClass.split(".") const s = i[i.length - 1] t && ((t.src = t.getAttribute(e)), t.addEventListener( "load", () => { 1 == this.opts.imageEndLazyClass.split(" ").length && t.classList.remove(s), 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-media-pc" : "data-media-mo" const i = this.videoElement.getAttribute(e) e = i this.prevVideoSrc !== e && ((this.videoElement.playState = !1), this.video.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"), this.video.load() }), this.videoElement.classList.remove(this.classes.playing), this.videoElement.classList.remove(this.classes.paused), this.video.addEventListener( "canplaythrough", () => { d.isLowNetwork() || this.onPlay(), this.getEndImage() }, { once: !0 } )), (this.prevVideoSrc = e) } } onLoad(e) { if (e === this.videoElement) { e = "mobile" !== this.currentDevice ? "data-media-pc" : "data-media-mo" const i = this.videoElement.getAttribute(e) ;(this.videoElement.playState = !1), this.video.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"), this.video.load() }), this.video.addEventListener( "canplaythrough", () => { d.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.remove(this.classes.ended), this.videoElement.classList.remove(this.classes.paused), this.videoElement.classList.add(this.classes.playing), window.setTimeout(() => { this.video.play(), this.updateController() }, 100), 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.autoPlay && (this.videoElement.autoPlayState = !1), this.videoElement.classList.remove(this.classes.ended), this.videoElement.classList.remove(this.classes.playing), this.updateController() } ;(e && e !== this.videoElement) || t() } onCanplayThrough() { this.useController && window.setTimeout(() => { this.videoController.style.display = "block" }, 500), this.videoElement.classList.add(this.classes.loaded), (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 = e > this.lastScrollY ? "down" : "up", i = d.getHeight(this.videoElement), i = (d.winSize().h, 0.5 * i), s = d.getScroll().top, a = d.getScroll().bottom, n = d.getOffset(this.videoElement).top, r = d.getOffset(this.videoElement).bottom - i const h = this.videoElement.classList.contains(this.classes.playing) && this.videoElement.playState var o = this.videoElement.classList.contains(this.classes.paused) && !this.videoElement.playState, l = this.videoElement.classList.contains(this.classes.ended) && !this.videoElement.playState if (r + i < s) this.autoPlay && this.videoElement.autoPlayState && (h || o) && this.onEnded() else if (a < n) this.autoPlay && this.videoElement.autoPlayState && (h || o || l) && this.onReset() else if (r < a && s < n) { const h = this.isCanplay || "down" == t !h || !this.autoPlay || this.videoElement.playState || this.videoElement.autoPlayState || d.isLowNetwork() || this.onPlay() } this.lastScrollY = e } } onResponsiveChange() { window.setTimeout(() => { ;(this.isCanplay = !0), this.onReset(), this.onScrollHandler(), (this.isCanplay = !1) }, 20) } onResizeHandler() { d.winSize().w !== this.winWidth && ((this.winWidth = d.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 = d.requestAFrame.call( window, this.resizeAnimateFunc.bind(this) )) } resizeEndFunc() { ;(this.opts.resizeStart = null), d.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" ;(t = !(r = {})), (h = i = null), (s = function () { a(), n(), UTILS.isLowNetwork() && document.documentElement.classList.add("low_network"), document.documentElement.classList.add("load"), window.removeEventListener("load", s) }), (a = function () { ;(t = 1024 <= window.innerWidth ? "desktop" : 768 <= window.innerWidth && window.innerWidth < 1024 ? "tablet" : "mobile"), clearTimeout(r.resizeTimeout), (r.resizeTimeout = setTimeout(function () { UTILS.isBrokenFixed() }, 100)), t != i && (document.documentElement.classList.add(t), document.documentElement.classList.remove(i), (i = t)) }), (n = function () { for ( var e = window.pageYOffset, t = e + window.innerHeight, i = 0; i < r.allClickables.length; i++ ) { var s = r.allClickables[i], a = e + s.getBoundingClientRect().top, n = e + UTILS.getNavHeight() n <= a && a <= t ? (s.isVisible = !0) : (a < n || t < a) && (s.isVisible = !1) } }), (o = function (e) { e.preventDefault(), e.stopPropagation() var t = this, i = parseFloat(this.innerText), s = document.querySelectorAll("#desc-section li"), i = document.querySelectorAll("#desc-section li")[i - 1], a = i.querySelector("span"), n = a.innerText, r = ((a.innerHTML = '' + n + ""), (h = e.currentTarget), function () { d.call(t), a.removeEventListener("focusin", r) }), o = function () { ;(a.innerHTML = n), a.removeAttribute("tabindex"), a.removeEventListener("focusout", o) } e.currentTarget.closest(".cm-layer") && ((e = e.currentTarget.closest(".cm-layer")), $(e).trigger("closeLayer", !1)), a.addEventListener("focusin", r), a.addEventListener("focusout", o), i.querySelector("a").focus(), s.forEach((e) => e.classList.remove("is-active")), i.classList.add("is-active") }), (l = function (e) { var e = e.target.closest("li"), t = e.getAttribute("data-sup"), i = document.querySelectorAll(".click_sup") const s = h.closest(".wearable-watch-screen__frame") let a = (s ? JSON.parse(s.dataset.rectTop) : "") - UTILS.getNavHeight() if (s) s.classList.contains("wearable-watch-screen__frame--first") && (a += 5), window.scrollTo(0, a), h.focus() else for (let e = 0; e < i.length; e++) i[e].innerText === t && (d.call(this), h.focus()) var n = h.closest(".cm-layer") if (n) { var r = n.id const o = n.parentNode, l = o.querySelector(`[data-layer-target="#${r}"]`) h.innerText === t && l.focus() } e.classList.remove("is-active") }), (d = function (e) { var s ;(!document.documentElement.classList.contains("ios") && e && null == e.relatedTarget) || ((s = this).isClicked || this.isVisible || c(this) || setTimeout(function () { var e = window.pageYOffset, t = s.getBoundingClientRect(), i = (window.innerHeight - UTILS.getNavHeight()) / 2, e = e - UTILS.getNavHeight() + t.top + t.height / 2 window.scrollTo(0, e - i) }, 10), (this.isClicked = !1)) }), (c = function (e) { var e = e.parentNode, t = e.getAttribute("id") return ( "contents" != t && e != document.body && (!("subnav" != t && !e.classList.contains("sc-s22ultra-popup")) || c(e)) ) }), (u = function () { this.isClicked = !0 }) const e = { init: function () { ;(r.resizeTimeout = null), (r.supClicker = document.querySelectorAll("a.click_sup")), (r.supTopBtn = document.querySelectorAll( "button.click_disclaimer" )), (r.contents = document.getElementById("contents") || document.getElementById("content")), (r.allClickables = r.contents.querySelectorAll( "a, button, input, select" )) var e = 0 for ( window.addEventListener("load", s), 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", d), t.addEventListener("mousedown", u) } for (e = 0; e < r.supClicker.length; e++) r.supClicker[e].addEventListener("click", o) for (e = 0; e < r.supTopBtn.length; e++) r.supTopBtn[e].addEventListener("click", l) var i = document.documentElement.classList "global" == UTILS.checkRegion() || i.contains("mac") || i.contains("safari") || ANIUTIL.scrollController({ speed: 120, duration: 0.5 }) }, } var r, t, i, h, s, a, n, o, l, d, c, u window.setTimeout(() => { e.init() }) })(), (function (e) { e.TrapFocus = (function () { "use strict" var e, g = void 0, t = window, i = t.document, w = t.jQuery, s = null, a = t.WATCH6.UTILS function n(e, t) { if (!(this instanceof n)) return new n(e, t) var i = { obj: e, prevStep: null, isDestroy: false, IgnoreUtilFocusChanges: false, ariaAttr: { hidden: "aria-hidden", disabled: "aria-disabled", modal: "aria-modal", }, ariaNotHidden: (() => { return t && t.ariaNotHidden ? t.ariaNotHidden : [] })(), classAttr: { clone: "trapfocus" }, elAttr: { tabIndex: "tabindex", role: "role" }, customEvent: ".TrapFocus" + new Date().getTime() + Math.random(), } this.opts = a.def(i, t || {}) if (!(this.obj = w(this.opts.obj)).length) return if (s != null) s.destroy() s = this this.init() } return ( (n.prototype = { init: function () { this.initLayout() this.buildAria() this.bindEvents(true) this.loadComponent() this.obj.data("TrapFocus", this) }, initLayout: function () { var e = this.opts.ariaAttr var t = this.opts.elAttr this.obj.attr(e.modal, "true") this.obj.attr(t.role, "dialog") }, buildAria: function () { var v = this.opts.ariaAttr var f = this.opts.elAttr var e = "head, script, noscript, link, style, meta" var t = this.opts.ariaNotHidden.length > 0 ? `, ${this.opts.ariaNotHidden.join(",")}` : "" a.def(this, { aria: { notHidden: Array(e + t), focusType: ["A", "BUTTON", "INPUT", "SELECT", "TEXTAREA"], dataAttr: { ariaHidden: "trapfocusariahidden", ariaDisabled: "trapfocusariadisabled", tabIndex: "trapfocustabindex", role: "trapfocusrole", }, destroy: w.proxy(function () { var a = this.aria.dataAttr var n = this.aria.hiddenEls var s = this.aria.focusEls var r = this.aria.tabindexEls for (var e = 0, t = n.length; e < t; e++) (function (e) { var t = n.eq(e), i = t.data(a.ariaHidden), s = t.data(a.role) if (i != g) { t.attr(v.hidden, i) t.removeData(a.ariaHidden) } else t.removeAttr(v.hidden) if (s != g) { t.attr(f.role, s) t.removeData(a.role) } else t.removeAttr(f.role) })(e) for (var i = 0, o = s.length; i < o; i++) (function (e) { var t = s.eq(e), i = t.data(a.ariaDisabled) t.removeAttr(f.tabIndex) if (i != g) { t.attr(v.disabled, i) t.removeData(a.ariaDisabled) } else t.removeAttr(v.disabled) })(i) for (var l = 0, h = r.length; l < h; l++) (function (e) { var t = r.eq(e), i = t.data(a.tabIndex) if (i != g) { t.attr(f.tabIndex, i) t.removeData(a.tabIndex) } else t.removeAttr(f.tabIndex) })(l) var d = document.getElementById("teconsent") if (d) { var c = d.querySelector("a") if (c && c.getAttribute("tabindex") === "-1") { c.setAttribute("tabindex", "0") c.removeAttribute("aria-disabled") } } }, this), build: w.proxy(function () { var i = this var e = this.aria.focusType var a = this.aria.dataAttr var s = this.obj.parents() var n = this.obj .siblings() .not(i.aria.notHidden.join(",")) var r = w("