PageSourceSearch

https://www.keyence.com.cn/js/core/master.js?var=20260930101321

js keyence.com.cn collected 2026-10-08 03:28:28 UTC 1,489,286 bytes, 25,976 lines download raw bytes

1(function (win, doc, $, util) {
2    'use strict';
3
4    var KEYENCE = {};
5    var kpi_openedModalWindow = '';
6    var SMALL_SCREEN = 969;
7    var smallScreenMql = win.matchMedia('(max-width: ' + SMALL_SCREEN + 'px)');
8
9    if ($ === undefined) {
10        return;
11    }
12
13    KEYENCE.init = function () {
14        var self = this;
15
16        self.getElem = {
17            docElement: doc.documentElement ? doc.documentElement : doc.body,
18            spMenu: doc.getElementById('js-setMenu'),
19            spPhoneMenu: doc.getElementById('js-setPhoneMenu'),
20            spMenuTarget: doc.getElementById('js-setMenu-target'),
21            spSearchTarget: doc.getElementById('js-setMenu-searchTarget'),
22            spPhoneTarget: doc.getElementById('js-setMenu-phoneTarget'),
23            spMenuBtn: doc.getElementById('js-setMenu-button'),
24            spSearchBtn: doc.getElementById('js-setMenu-searchButton'),
25            spPhoneBtn: doc.getElementById('js-setMenu-phoneButton'),
26            changeLang: doc.getElementById('js-changeLanguage'),
27            changeLangTrigger: doc.getElementById('js-changeLanguage-trigger'),
28            changeLangTarget: doc.getElementById('js-changeLanguage-target'),
29            focusOrderTrigger: doc.getElementById('js-ctrlFocusOrder'),
30            divideMenu: doc.getElementById('js-divideMenu'),
31            megaMenu: doc.querySelectorAll('.js-megaMenu'),
32            slideNavTarget: doc.querySelectorAll('.js-slideNavigation-target'),
33            slideNavPrevTrigger: doc.querySelectorAll('.js-slideNavigation-previousTrigger'),
34            slideNavNextTrigger: doc.querySelectorAll('.js-slideNavigation-nextTrigger'),
35            menuConversionGroup: doc.querySelector('.js-menuConversion-group'),
36            menuConversion: doc.querySelector('.js-menuConversion'),
37            categoryHeader: doc.querySelectorAll('.js-categoryHeader'),
38            carousel: doc.querySelector('.js-setHomeCarousel'),
39            changeCategoryTarget: doc.querySelectorAll('.js-setChangeCategory-target'),
40            changeCategoryTrigger: doc.querySelectorAll('.js-setChangeCategory-trigger'),
41            adjustHeight: doc.querySelectorAll('.js-setHomeAdjustHeight'),
42            toggleCart: doc.querySelector('.js-toggleCart'),
43            richSurvey: doc.getElementById('js-setRichSurvey')
44        };
45
46        self.CONFIG = {
47            FOCUSABLE: 'a, area, [tabindex], input, button, select, option, textarea, output, summary, video, audio, object, embed',
48            SHOW_CLASS: 'is-show',
49            MENU_SHOW_CLASS: 'is-menu-show',
50            MEGA_MENU_SHOW_CLASS: 'is-megaMenu-show',
51            SUGGEST_SHOW_CLASS: 'is-suggest-show',
52            HIDE_CLASS: 'is-hide',
53            ACTIVE_CLASS: 'is-active',
54            CURRENT_CLASS: 'is-current',
55            FIXED_CLASS: 'is-fixed',
56            STOP_CLASS: 'is-stop',
57            ARIA_EXPANDED: 'aria-expanded',
58            ARIA_CONTROLS: 'aria-controls'
59        };
60
61        self.polyfill.setChildNodeRemove();
62        self.polyfill.setNodeListForEach();
63        self.polyfill.setElemClosest();
64    };
65
66    KEYENCE.ctrlHeader = function () {
67        var self = this;
68        var header = doc.getElementById('js-controlHeader');
69        var seriesHeader = doc.querySelector('[data-series-header-target="sticky"]');
70        var observationTarget = doc.createElement('div');
71        var fn = {};
72        var observer = null;
73        var intersectionClassName = 'is-intersection';
74        var searchHiddenClassName = 'IsHidden';
75        var suggestTarget = doc.querySelector('.JSHeaderSuggest .JSSearchSuggestTarget');
76        var delayVal = 100;
77        var resizeTimer = null;
78
79        if (!header) {
80            return;
81        }
82
83        if (seriesHeader) {
84            return;
85        }
86
87        fn.hasIntersectionObserver = function () {
88            return ('IntersectionObserver' in win && 'IntersectionObserverEntry' in win);
89        };
90
91        fn.init = function () {
92            if (fn.hasIntersectionObserver()) {
93                observationTarget.dataset.observationTarget = 'header';
94                observationTarget.style.cssText =
95                    'position: absolute; bottom: 0; width: 100%; height: 1px;';
96                header.insertBefore(observationTarget, header.firstChild);
97
98                observer = new IntersectionObserver(fn.handleIntersect);
99                observer.observe(observationTarget);
100            }
101        };
102
103        fn.adjustHeaderHeight = function () {
104            header.style.height = self.getElem.spMenu.offsetHeight + 'px';
105        };
106
107        fn.passIntersection = function () {
108            if (self.getElem.spSearchTarget) {
109                self.getElem.spSearchTarget.classList.add(intersectionClassName);
110
111                setTimeout(function () {
112                    self.getElem.spSearchTarget.classList.remove(intersectionClassName);
113                }, delayVal);
114            }
115        };
116
117        fn.fixHeader = function () {
118            header.classList.add(self.CONFIG.FIXED_CLASS);
119
120            setTimeout(function () {
121                header.classList.add(self.CONFIG.SHOW_CLASS);
122            }, delayVal);
123
124            if (self.getElem.spSearchTarget && self.getElem.spSearchBtn) {
125                if (self.getElem.spSearchTarget.classList.contains(self.CONFIG.SHOW_CLASS)) {
126                    self.getElem.spSearchBtn.setAttribute(self.CONFIG.ARIA_EXPANDED, true);
127                } else {
128                    self.getElem.spSearchBtn.setAttribute(self.CONFIG.ARIA_EXPANDED, false);
129                }
130                self.getElem.spSearchBtn.disabled = false;
131            }
132
133            fn.passIntersection();
134        };
135
136        fn.releaseHeader = function () {
137            header.classList.remove(self.CONFIG.FIXED_CLASS);
138            setTimeout(function () {
139                header.classList.remove(self.CONFIG.SHOW_CLASS);
140            }, delayVal);
141
142            if (!smallScreenMql.matches && self.getElem.spSearchBtn && self.getElem.spSearchTarget) {
143                self.getElem.spSearchBtn.setAttribute(self.CONFIG.ARIA_EXPANDED, true);
144                self.getElem.spSearchBtn.disabled = true;
145                self.getElem.spSearchTarget.classList.remove(self.CONFIG.HIDE_CLASS);
146            }
147
148            fn.passIntersection();
149        };
150
151        fn.handleResize = function () {
152            if (resizeTimer !== null) {
153                clearTimeout(resizeTimer);
154            }
155
156            resizeTimer = setTimeout(function () {
157                fn.adjustHeaderHeight();
158
159                if (!fn.hasIntersectionObserver()) {
160                    fn.runForLegacy();
161                }
162            }, delayVal);
163        };
164
165        fn.handleIntersect = function (entries) {
166            entries.forEach(function (entry) {
167                if (entry.isIntersecting) {
168                    fn.releaseHeader();
169                    fn.adjustHeaderHeight();
170                } else {
171                    fn.fixHeader();
172                    fn.adjustHeaderHeight();
173                }
174            });
175        };
176
177        fn.runForLegacy = function () {
178            if (win.pageYOffset > Math.round(header.getBoundingClientRect().top)) {
179                fn.fixHeader();
180            } else {
181                fn.releaseHeader();
182            }
183
184            fn.adjustHeaderHeight();
185        };
186
187        fn.runForEachScreen = function () {
188            if (smallScreenMql.matches) {
189                if (!fn.hasIntersectionObserver()) {
190                    win.removeEventListener('load', fn.runForLegacy);
191                    win.removeEventListener('scroll', fn.runForLegacy);
192                }
193
194                if (self.getElem.spSearchTarget && self.getElem.spSearchBtn) {
195                    self.getElem.spSearchBtn.disabled = false;
196                    if (self.getElem.spSearchTarget.classList.contains(self.CONFIG.SHOW_CLASS)) {
197                        self.getElem.spSearchBtn.setAttribute(self.CONFIG.ARIA_EXPANDED, true);
198                    } else {
199                        self.getElem.spSearchBtn.setAttribute(self.CONFIG.ARIA_EXPANDED, false);
200                    }
201                }
202
203                if (suggestTarget) {
204                    doc.body.classList.remove(self.CONFIG.SUGGEST_SHOW_CLASS);
205                    suggestTarget.classList.add(searchHiddenClassName);
206                }
207            } else {
208                header.style.height = 'auto';
209                if (!fn.hasIntersectionObserver()) {
210                    win.addEventListener('load', fn.runForLegacy);
211                    win.addEventListener('scroll', fn.runForLegacy);
212                }
213
214                if (self.getElem.spSearchBtn) {
215                    setTimeout(function () {
216                        if (header.classList.contains(self.CONFIG.FIXED_CLASS)) {
217                            self.getElem.spSearchBtn.disabled = false;
218                            self.getElem.spSearchBtn.setAttribute(self.CONFIG.ARIA_EXPANDED, false);
219                        } else {
220                            self.getElem.spSearchBtn.disabled = true;
221                            self.getElem.spSearchBtn.setAttribute(self.CONFIG.ARIA_EXPANDED, true);
222                        }
223                    }, delayVal);
224                }
225
226                if (suggestTarget) {
227                    doc.body.classList.remove(self.CONFIG.SUGGEST_SHOW_CLASS);
228                    suggestTarget.classList.add(searchHiddenClassName);
229                }
230            }
231        };
232
233        fn.init();
234        fn.runForEachScreen();
235        smallScreenMql.addListener(fn.runForEachScreen);
236        win.addEventListener('resize', fn.handleResize);
237    };
238
239    KEYENCE.hideHamburgerMenu = function () {
240        var self = this;
241        var menuTarget = self.getElem && self.getElem.spMenuTarget;
242        var menuBtn = self.getElem && self.getElem.spMenuBtn;
243        var rect;
244
245        if (!menuTarget) {
246            return;
247        }
248
249        // is-show の absolute を外すと fixed になり先頭へ跳ねるので、消えるまで画面上の位置を固定する
250        if (menuTarget.classList.contains(self.CONFIG.SHOW_CLASS)) {
251            rect = menuTarget.getBoundingClientRect();
252            menuTarget.style.position = 'fixed';
253            menuTarget.style.top = rect.top + 'px';
254
255            if (!menuTarget.style.left) {
256                menuTarget.style.left = rect.left + 'px';
257            }
258        }
259
260        menuTarget.classList.remove(self.CONFIG.SHOW_CLASS);
261        menuTarget.classList.add(self.CONFIG.HIDE_CLASS);
262
263        if (menuBtn) {
264            menuBtn.setAttribute(self.CONFIG.ARIA_EXPANDED, false);
265        }
266    };
267
268    KEYENCE.resetHamburgerMenuState = function () {
269        var self = this;
270        var menuTarget = self.getElem && self.getElem.spMenuTarget;
271        var slideNavTarget = self.getElem && self.getElem.slideNavTarget;
272
273        if (!menuTarget) {
274            return;
275        }
276
277        menuTarget.classList.remove('is-back');
278        menuTarget.removeAttribute('style');
279
280        if (slideNavTarget && slideNavTarget.length) {
281            slideNavTarget.forEach(function (items) {
282                items.classList.remove(self.CONFIG.SHOW_CLASS);
283                items.classList.remove('is-targeted');
284            });
285        }
286
287        $(menuTarget).find(self.CONFIG.FOCUSABLE).removeAttr('tabindex');
288    };
289
290    KEYENCE.scheduleHamburgerMenuReset = function () {
291        var self = this;
292        var delay = 200;
293
294        if (self.hamburgerResetTimer) {
295            clearTimeout(self.hamburgerResetTimer);
296        }
297
298        self.hamburgerResetTimer = win.setTimeout(function () {
299            self.hamburgerResetTimer = null;
300            self.resetHamburgerMenuState();
301        }, delay);
302    };
303
304    KEYENCE.flushHamburgerMenuReset = function () {
305        var self = this;
306
307        if (self.hamburgerResetTimer) {
308            clearTimeout(self.hamburgerResetTimer);
309            self.hamburgerResetTimer = null;
310        }
311
312        self.resetHamburgerMenuState();
313    };
314
315    KEYENCE.setMenu = function () {
316        var self = this;
317        var isAnimated = false;
318        var toggleMenu = null;
319        var closeMypageMenu = null;
320        var transitionEndMenu = null;
321        var transitionEndSearch = null;
322        var transitionEndPhone = null;
323        var runKeydown = null;
324        var runForEachScreen = null;
325        var body = null;
326
327        if (!self.getElem.spMenu) {
328            return;
329        }
330
331        body = doc.body;
332
333        if (doc.getElementById('js-controlHeader')) {
334            body.dataset.header = 'full';
335        }
336
337        // 閉じる指示はクラスで出し、フェードアウト後のdetailsの開閉はsetLoginHeaderMenuが担う
338        closeMypageMenu = function () {
339            var mypageMenu = doc.querySelector('.js-headerMypageTooltip-menuTarget .js-headerMypageTooltip');
340            var mypageButton;
341            var mypageContainer;
342
343            if (!mypageMenu || !mypageMenu.open) {
344                return;
345            }
346
347            mypageMenu.classList.remove('is-tooltip-open');
348            mypageMenu.classList.add('is-tooltip-close');
349
350            mypageButton = mypageMenu.querySelector('.js-headerMypageTooltip-button');
351            mypageContainer = mypageMenu.querySelector('.js-headerMypageTooltip-container');
352
353            if (mypageButton) {
354                mypageButton.setAttribute('aria-expanded', 'false');
355            }
356
357            if (mypageContainer) {
358                mypageContainer.setAttribute('aria-hidden', 'true');
359            }
360
361            win.setTimeout(function () {
362                if (mypageMenu.classList.contains('is-tooltip-close')) {
363                    mypageMenu.open = false;
364                }
365            }, 200);
366        };
367
368        toggleMenu = function (e) {
369            var thisTrigger = e.currentTarget;
370
371            e.preventDefault();
372
373            if (!isAnimated) {
374                isAnimated = true;
375                closeMypageMenu();
376
377                if (this.otherTargets.length) {
378                    this.otherTargets.forEach((target) => {
379                        if (target === self.getElem.spMenuTarget) {
380                            self.hideHamburgerMenu();
381                            self.scheduleHamburgerMenuReset();
382                        } else if (target) {
383                            target.classList.remove(self.CONFIG.SHOW_CLASS);
384                        }
385                    });
386                }
387
388                if (this.triggers.length) {
389                    this.triggers.forEach((trigger) => {
390                        if (trigger) {
391                            trigger.setAttribute(self.CONFIG.ARIA_EXPANDED, false);
392                        }
393                    });
394                }
395
396                if (this.target.classList.contains(self.CONFIG.SHOW_CLASS)) {
397                    thisTrigger.setAttribute(self.CONFIG.ARIA_EXPANDED, false);
398                    this.target.classList.remove(self.CONFIG.SHOW_CLASS);
399                    this.target.classList.add(self.CONFIG.HIDE_CLASS);
400                    body.classList.remove(self.CONFIG.MENU_SHOW_CLASS);
401                } else {
402                    if (this.target === self.getElem.spMenuTarget && self.hamburgerResetTimer) {
403                        body.classList.add('is-menu-initializing');
404                        self.flushHamburgerMenuReset();
405                        self.getElem.spMenuTarget.offsetHeight;
406                        body.classList.remove('is-menu-initializing');
407                    }
408
409                    thisTrigger.setAttribute(self.CONFIG.ARIA_EXPANDED, true);
410                    this.target.classList.add(self.CONFIG.SHOW_CLASS);
411                    this.target.classList.remove(self.CONFIG.HIDE_CLASS);
412                    body.classList.add(self.CONFIG.MENU_SHOW_CLASS);
413                }
414
415                if (smallScreenMql.matches) {
416                    if (self.getElem.docElement.scrollTop) {
417                        self.getElem.docElement.scrollTop = 0;
418                    }
419
420                    if (doc.body.scrollTop) {
421                        doc.body.scrollTop = 0;
422                    }
423                }
424            }
425        };
426
427        runKeydown = function (e) {
428            if (e.key === 'Esc' || e.key === 'Escape') {
429                e.preventDefault();
430
431                if (!this.classList.contains(self.CONFIG.MENU_SHOW_CLASS)) {
432                    return;
433                }
434
435                this.classList.remove(self.CONFIG.MENU_SHOW_CLASS);
436
437                if (self.getElem.spMenuBtn && self.getElem.spMenuTarget) {
438                    self.getElem.spMenuBtn.setAttribute(self.CONFIG.ARIA_EXPANDED, false);
439                    self.getElem.spMenuTarget.classList.remove(self.CONFIG.SHOW_CLASS);
440                    self.getElem.spMenuTarget.classList.add(self.CONFIG.HIDE_CLASS);
441                }
442
443                if (self.getElem.spSearchBtn && self.getElem.spSearchTarget) {
444                    self.getElem.spSearchBtn.setAttribute(self.CONFIG.ARIA_EXPANDED, false);
445                    self.getElem.spSearchTarget.classList.remove(self.CONFIG.SHOW_CLASS);
446                    self.getElem.spSearchTarget.classList.add(self.CONFIG.HIDE_CLASS);
447                }
448
449                if (self.getElem.spPhoneBtn && self.getElem.spPhoneTarget) {
450                    self.getElem.spPhoneBtn.setAttribute(self.CONFIG.ARIA_EXPANDED, false);
451                    self.getElem.spPhoneTarget.classList.remove(self.CONFIG.SHOW_CLASS);
452                    self.getElem.spPhoneTarget.classList.add(self.CONFIG.HIDE_CLASS);
453                }
454
455                closeMypageMenu();
456            }
457        };
458
459        transitionEndMenu = function () {
460            isAnimated = false;
461
462            if (!body.classList.contains(self.CONFIG.MENU_SHOW_CLASS)) {
463                self.resetHamburgerMenuState();
464            }
465        };
466
467        transitionEndSearch = function () {
468            isAnimated = false;
469            self.flushHamburgerMenuReset();
470
471            if (!smallScreenMql.matches && self.getElem.spSearchTarget &&
472                self.getElem.spSearchTarget.classList.contains(self.CONFIG.SHOW_CLASS)
473            ) {
474                if (self.getElem.spSearchTarget.querySelector('.JSSearchSuggestInput')) {
475                    self.getElem.spSearchTarget.querySelector('.JSSearchSuggestInput').focus();
476                }
477            }
478        };
479
480        transitionEndPhone = function () {
481            isAnimated = false;
482            self.flushHamburgerMenuReset();
483
484            if (!body.classList.contains(self.CONFIG.MENU_SHOW_CLASS)) {
485                self.getElem.spPhoneTarget.removeAttribute('style');
486                $(self.getElem.spPhoneTarget).find(self.CONFIG.FOCUSABLE).removeAttr('tabindex');
487            }
488        };
489
490        if (self.getElem.spMenuBtn && self.getElem.spMenuTarget) {
491            var triggers = [self.getElem.spSearchBtn, self.getElem.spPhoneBtn];
492            var otherTargets = [self.getElem.spSearchTarget, self.getElem.spPhoneTarget];
493
494            self.getElem.spMenuBtn.setAttribute(self.CONFIG.ARIA_EXPANDED, false);
495            self.getElem.spMenuBtn.setAttribute(self.CONFIG.ARIA_CONTROLS, self.getElem.spMenuTarget.id);
496            self.getElem.spMenuBtn.addEventListener('click', {
497                handleEvent: toggleMenu,
498                triggers: triggers,
499                target: self.getElem.spMenuTarget,
500                otherTargets: otherTargets
501            }, false);
502        }
503
504        if (self.getElem.spSearchBtn && self.getElem.spSearchTarget) {
505            var triggers = [self.getElem.spMenuBtn, self.getElem.spPhoneBtn];
506            var otherTargets = [self.getElem.spMenuTarget, self.getElem.spPhoneTarget];
507
508            self.getElem.spSearchBtn.setAttribute(self.CONFIG.ARIA_EXPANDED, false);
509            self.getElem.spSearchBtn.setAttribute(self.CONFIG.ARIA_CONTROLS, self.getElem.spSearchTarget.id);
510            self.getElem.spSearchBtn.addEventListener('click', {
511                handleEvent: toggleMenu,
512                triggers: triggers,
513                target: self.getElem.spSearchTarget,
514                otherTargets: otherTargets
515            }, false);
516        }
517
518        if (self.getElem.spPhoneBtn && self.getElem.spPhoneTarget) {
519            var triggers = [self.getElem.spMenuBtn, self.getElem.spSearchBtn];
520            var otherTargets = [self.getElem.spMenuTarget, self.getElem.spSearchTarget];
521
522            self.getElem.spPhoneBtn.setAttribute(self.CONFIG.ARIA_EXPANDED, false);
523            self.getElem.spPhoneBtn.setAttribute(self.CONFIG.ARIA_CONTROLS, self.getElem.spPhoneTarget.id);
524            self.getElem.spPhoneBtn.addEventListener('click', {
525                handleEvent: toggleMenu,
526                triggers: triggers,
527                target: self.getElem.spPhoneTarget,
528                otherTargets: otherTargets
529            }, false);
530        }
531
532        self.getElem.spMenuBtn.children[0].addEventListener('transitionend', transitionEndMenu, false);
533        self.getElem.spSearchBtn.addEventListener('transitionend', transitionEndSearch, false);
534
535        if (self.getElem.spPhoneBtn) {
536            self.getElem.spPhoneBtn.addEventListener('transitionend', transitionEndPhone, false);
537        }
538
539        runForEachScreen = function () {
540            body.classList.add('is-menu-initializing');
541            setTimeout(function () {
542                body.classList.remove('is-menu-initializing');
543            }, 200);
544
545            if (smallScreenMql.matches) {
546                body.addEventListener('keydown', runKeydown, false);
547                body.classList.remove(self.CONFIG.MENU_SHOW_CLASS);
548                doc.querySelector('.JSHeaderSuggest .JSSearchSuggestInput').blur();
549                if (self.getElem.spMenuBtn && self.getElem.spMenuTarget) {
550                    self.getElem.spMenuTarget.classList.add(self.CONFIG.HIDE_CLASS);
551                    self.getElem.spMenuTarget.classList.remove(self.CONFIG.SHOW_CLASS);
552                    self.getElem.spMenuBtn.setAttribute(self.CONFIG.ARIA_EXPANDED, false);
553                }
554                if (self.getElem.spSearchBtn && self.getElem.spSearchTarget) {
555                    self.getElem.spSearchTarget.classList.add(self.CONFIG.HIDE_CLASS);
556                    self.getElem.spSearchTarget.classList.remove(self.CONFIG.SHOW_CLASS);
557                    self.getElem.spSearchBtn.setAttribute(self.CONFIG.ARIA_EXPANDED, false);
558                }
559                if (self.getElem.spPhoneBtn && self.getElem.spPhoneTarget) {
560                    self.getElem.spPhoneTarget.classList.add(self.CONFIG.HIDE_CLASS);
561                    self.getElem.spPhoneTarget.classList.remove(self.CONFIG.SHOW_CLASS);
562                    self.getElem.spPhoneBtn.setAttribute(self.CONFIG.ARIA_EXPANDED, false);
563                }
564            } else {
565                body.removeEventListener('keydown', runKeydown, false);
566
567                if (self.getElem.spMenuBtn && self.getElem.spMenuTarget) {
568                    self.getElem.spMenuTarget.classList.remove(self.CONFIG.HIDE_CLASS);
569                }
570
571                if (self.getElem.spSearchBtn && self.getElem.spSearchTarget) {
572                    self.getElem.spSearchTarget.classList.remove(self.CONFIG.HIDE_CLASS);
573                    self.getElem.spSearchTarget.classList.remove(self.CONFIG.SHOW_CLASS);
574                    self.getElem.spSearchBtn.setAttribute(self.CONFIG.ARIA_EXPANDED, false);
575
576                    if (doc.querySelector('[data-series-header-target="sticky"]')) {
577                        self.getElem.spSearchBtn.disabled = false;
578                        self.getElem.spSearchBtn.setAttribute(self.CONFIG.ARIA_EXPANDED, false);
579                        self.getElem.spSearchTarget.classList.add(self.CONFIG.HIDE_CLASS);
580                        body.classList.remove(self.CONFIG.MENU_SHOW_CLASS);
581                    }
582                }
583                if (self.getElem.spPhoneBtn && self.getElem.spPhoneTarget) {
584                    self.getElem.spPhoneTarget.classList.remove(self.CONFIG.HIDE_CLASS);
585                    self.getElem.spPhoneTarget.classList.remove(self.CONFIG.SHOW_CLASS);
586                    self.getElem.spPhoneBtn.setAttribute(self.CONFIG.ARIA_EXPANDED, false);
587                }
588            }
589        };
590
591        runForEachScreen();
592        smallScreenMql.addListener(runForEachScreen);
593    };
594
595    KEYENCE.setPhoneMenu = function () {
596        var self = this;
597        var isAnimated = false;
598        var togglePhoneMenu = null;
599        var transitionEndPhone = null;
600        var runForEachScreen = null;
601        var runKeydown = null;
602        var body = doc.body;
603
604        if (!self.getElem.spPhoneMenu || !self.getElem.spPhoneBtn || !self.getElem.spPhoneTarget) {
605            return;
606        }
607
608        togglePhoneMenu = function (e) {
609            var thisTrigger = e.currentTarget;
610
611            e.preventDefault();
612
613            if (!isAnimated) {
614                isAnimated = true;
615
616                if (this.phoneTarget.classList.contains(self.CONFIG.SHOW_CLASS)) {
617                    thisTrigger.setAttribute(self.CONFIG.ARIA_EXPANDED, false);
618                    this.phoneTarget.classList.remove(self.CONFIG.SHOW_CLASS);
619                    this.phoneTarget.classList.add(self.CONFIG.HIDE_CLASS);
620                    body.classList.remove(self.CONFIG.MENU_SHOW_CLASS);
621                } else {
622                    thisTrigger.setAttribute(self.CONFIG.ARIA_EXPANDED, true);
623                    this.phoneTarget.classList.add(self.CONFIG.SHOW_CLASS);
624                    this.phoneTarget.classList.remove(self.CONFIG.HIDE_CLASS);
625                    body.classList.add(self.CONFIG.MENU_SHOW_CLASS);
626                }
627            }
628        };
629
630        runKeydown = function (e) {
631            if (e.key === 'Esc' || e.key === 'Escape') {
632                e.preventDefault();
633
634                if (!this.classList.contains(self.CONFIG.MENU_SHOW_CLASS)) {
635                    return;
636                }
637
638                this.classList.remove(self.CONFIG.MENU_SHOW_CLASS);
639
640                self.getElem.spPhoneBtn.setAttribute(self.CONFIG.ARIA_EXPANDED, false);
641                self.getElem.spPhoneTarget.classList.remove(self.CONFIG.SHOW_CLASS);
642                self.getElem.spPhoneTarget.classList.add(self.CONFIG.HIDE_CLASS);
643            }
644        };
645
646        transitionEndPhone = function () {
647            isAnimated = false;
648        };
649
650        self.getElem.spPhoneTarget.classList.add(self.CONFIG.HIDE_CLASS);
651        self.getElem.spPhoneBtn.setAttribute(self.CONFIG.ARIA_EXPANDED, false);
652        self.getElem.spPhoneBtn.setAttribute(self.CONFIG.ARIA_CONTROLS, self.getElem.spPhoneTarget.id);
653        self.getElem.spPhoneBtn.addEventListener('click', {
654            handleEvent: togglePhoneMenu,
655            phoneTrigger: self.getElem.spPhoneBtn,
656            phoneTarget: self.getElem.spPhoneTarget
657        }, false);
658
659        self.getElem.spPhoneBtn.addEventListener('transitionend', transitionEndPhone, false);
660
661        runForEachScreen = function () {
662            body.classList.remove(self.CONFIG.MENU_SHOW_CLASS);
663            self.getElem.spPhoneBtn.setAttribute(self.CONFIG.ARIA_EXPANDED, false);
664            self.getElem.spPhoneTarget.classList.remove(self.CONFIG.SHOW_CLASS);
665
666            if (smallScreenMql.matches) {
667                body.addEventListener('keydown', runKeydown, false);
668                self.getElem.spPhoneTarget.classList.add(self.CONFIG.HIDE_CLASS);
669            } else {
670                body.removeEventListener('keydown', runKeydown, false);
671                self.getElem.spPhoneTarget.classList.remove(self.CONFIG.HIDE_CLASS);
672            }
673        };
674
675        runForEachScreen();
676        smallScreenMql.addListener(runForEachScreen);
677    };
678
679    KEYENCE.setMegaMenu = function () {
680        var self = this;
681        var rootSelector = '.js-megaMenu';
682        var targetSelector = null;
683        var triggerSelector = null;
684        var overlayName = 'js-menu-overlay';
685        var targets = null;
686        var triggers = null;
687        var fn = {};
688        var handlers = {};
689        var isAnimated = false;
690        var slideNavTargetSelector = '.js-slideNavigation-target';
691        var arrPageX = [];
692        var arrPageY = [];
693        var resizeTimer = null;
694        var delayVal = 100;
695
696        if (!self.getElem.megaMenu.length) {
697            return;
698        }
699
700        targetSelector = rootSelector + '-target';
701        triggerSelector = rootSelector + '-trigger';
702        targets = doc.querySelectorAll(targetSelector);
703        triggers = doc.querySelectorAll(triggerSelector);
704
705        if (!targets.length || !triggers.length) {
706            return;
707        }
708
709        fn.hideMenu = function (target) {
710            if (target && target.nodeType === 1 && target.classList.contains(self.CONFIG.SHOW_CLASS)) {
711                target.classList.remove(self.CONFIG.SHOW_CLASS);
712                target.classList.add(self.CONFIG.HIDE_CLASS);
713                target.removeAttribute('style');
714            }
715        };
716
717        fn.hideSuggest = function () {
718            doc.body.classList.remove(self.CONFIG.SUGGEST_SHOW_CLASS);
719            doc.querySelector('.JSHeaderSuggest .JSSearchSuggestTarget').classList.add('IsHidden');
720        };
721
722        fn.showMenu = function (target) {
723            if (target && target.nodeType === 1) {
724                target.classList.add(self.CONFIG.SHOW_CLASS);
725                target.classList.remove(self.CONFIG.HIDE_CLASS);
726                doc.body.classList.add(self.CONFIG.MEGA_MENU_SHOW_CLASS);
727                if (doc.getElementById(overlayName)) {
728                    doc.getElementById(overlayName).setAttribute('data-owner', 'megaMenu');
729                }
730            }
731        };
732
733        fn.adjustTargetHeight = function (target) {
734            if (target && target.nodeType === 1 && target.children[0]) {
735                if (target.offsetHeight < target.children[0].offsetHeight) {
736                    target.style.height = target.children[0].offsetHeight + 'px';
737                } else {
738                    target.style.height = target.offsetHeight + 'px';
739                }
740            }
741        };
742
743        fn.activateTrigger = function (trigger) {
744            if (trigger && trigger.nodeType === 1) {
745                trigger.classList.add(self.CONFIG.ACTIVE_CLASS);
746            }
747        };
748
749        fn.deactivateTrigger = function (trigger) {
750            if (trigger && trigger.nodeType === 1) {
751                trigger.classList.remove(self.CONFIG.ACTIVE_CLASS);
752            }
753        };
754
755        fn.removeMenuShowClass = function () {
756            doc.body.classList.remove(self.CONFIG.MEGA_MENU_SHOW_CLASS);
757        };
758
759        handlers.onForcusinForFocusable = function (e) {
760            if (!e.target.closest(rootSelector)) {
761                targets.forEach(function (items) {
762                    fn.hideMenu(items);
763                });
764
765                triggers.forEach(function (items) {
766                    fn.deactivateTrigger(items);
767                });
768
769                fn.removeMenuShowClass();
770            }
771        };
772
773        handlers.onMouseenterForTrigger = function (e) {
774            var thisTrigger = e.currentTarget;
775
776            e.preventDefault();
777
778            triggers.forEach(function (items) {
779                fn.deactivateTrigger(items);
780            });
781            targets.forEach(function (items) {
782                fn.hideMenu(items);
783            });
784            fn.showMenu(this.target);
785            fn.adjustTargetHeight(this.target);
786            fn.activateTrigger(thisTrigger);
787            doc.activeElement.blur();
788            fn.hideSuggest();
789        };
790
791        handlers.onForcusinForTrigger = function (e) {
792            var thisTrigger = e.currentTarget;
793
794            triggers.forEach(function (items) {
795                fn.deactivateTrigger(items);
796            });
797            targets.forEach(function (items) {
798                fn.hideMenu(items);
799            });
800            fn.showMenu(this.target);
801            fn.adjustTargetHeight(this.target);
802            fn.activateTrigger(thisTrigger);
803            fn.hideSuggest();
804        };
805
806        handlers.onTouchstartForTrigger = function (e) {
807            arrPageX.length = 0;
808            arrPageY.length = 0;
809            arrPageX.push(e.touches[0].pageX);
810            arrPageY.push(e.touches[0].pageY);
811
812            if (doc.querySelectorAll('.JSSearchSuggestTarget').length) {
813                doc.querySelectorAll('.JSSearchSuggestTarget').forEach(function (items) {
814                    items.classList.add('IsHidden');
815                });
816            }
817        };
818
819        handlers.onTouchendForTrigger = function (e) {
820            if (e.changedTouches[0].pageX !== arrPageX[0] || e.changedTouches[0].pageY !== arrPageY[0]) {
821                e.preventDefault();
822            }
823        };
824
825        handlers.onMouseleaveForTrigger = function (e) {
826            var thisTrigger = e.currentTarget;
827
828            fn.hideMenu(this.target);
829            fn.deactivateTrigger(thisTrigger);
830            fn.removeMenuShowClass();
831        };
832
833        handlers.onMouseenterForTarget = function () {
834            fn.showMenu(this.target);
835            fn.adjustTargetHeight(this.target);
836            fn.activateTrigger(this.trigger);
837            fn.hideSuggest();
838        };
839
840        handlers.onMouseleaveForTarget = function () {
841            fn.hideMenu(this.target);
842            fn.deactivateTrigger(this.trigger);
843            fn.removeMenuShowClass();
844        };
845
846        handlers.onFocusinForTarget = function () {
847            fn.showMenu(this.target);
848            fn.hideSuggest();
849        };
850
851        handlers.onTouchstartForDoc = function (e) {
852            arrPageX.length = 0;
853            arrPageY.length = 0;
854            arrPageX.push(e.touches[0].pageX);
855            arrPageY.push(e.touches[0].pageY);
856        };
857
858        handlers.onTouchstartCloseMegaMenu = function (e) {
859            if (e.changedTouches[0].pageX === arrPageX[0] || e.changedTouches[0].pageY === arrPageY[0]) {
860                if (!e.target.closest(rootSelector)) {
861                    if (e.target.id === overlayName) {
862                        e.preventDefault();
863                    }
864                    fn.deactivateTrigger(this.trigger);
865                    fn.hideMenu(this.target);
866                    fn.removeMenuShowClass();
867                }
868            }
869        };
870
871        handlers.resizeTarget = function () {
872            if (resizeTimer !== null) {
873                clearTimeout(resizeTimer);
874            }
875
876            resizeTimer = setTimeout(function () {
877                targets.forEach(function (items) {
878                    if (items.classList.contains(self.CONFIG.SHOW_CLASS) && items.children[0]) {
879                        items.style.height = items.children[0].offsetHeight + 'px';
880                    }
881                });
882            }, delayVal);
883        };
884
885        handlers.slideNext = function (e) {
886            var $this = $(this);
887
888            if (!self.getElem.slideNavTarget.length) {
889                return;
890            }
891
892            e.preventDefault();
893
894            if (!isAnimated) {
895                isAnimated = true;
896
897                if (self.getElem.docElement.scrollTop) {
898                    self.getElem.docElement.scrollTop = 0;
899                }
900
901                if (doc.body.scrollTop) {
902                    doc.body.scrollTop = 0;
903                }
904
905                self.getElem.slideNavTarget.forEach(function (items) {
906                    items.classList.remove(self.CONFIG.SHOW_CLASS);
907                });
908
909                if (this.closest('li') && this.closest('li').querySelector(slideNavTargetSelector)) {
910                    this.closest('li').querySelector(slideNavTargetSelector).classList.add(self.CONFIG.SHOW_CLASS);
911                    $(self.getElem.spMenuTarget).find(self.CONFIG.FOCUSABLE).attr('tabindex', -1);
912                    $(this.closest('li').querySelector(slideNavTargetSelector)).find(self.CONFIG.FOCUSABLE).removeAttr('tabindex');
913                }
914
915                if ($this.parents(slideNavTargetSelector).length) {
916                    $this.parents(slideNavTargetSelector).addClass(self.CONFIG.SHOW_CLASS);
917                }
918
919                if (self.getElem.spMenuTarget) {
920                    self.getElem.spMenuTarget.style.left = Number(self.getElem.spMenuTarget.style.left.slice(0, -1)) - 100 + '%';
921                }
922                this.blur();
923            }
924        };
925
926        handlers.slidePrev = function (e) {
927            if (!self.getElem.spMenuTarget) {
928                return;
929            }
930
931            e.preventDefault();
932
933            if (!isAnimated) {
934                isAnimated = true;
935
936                if (self.getElem.docElement.scrollTop) {
937                    self.getElem.docElement.scrollTop = 0;
938                }
939
940                if (doc.body.scrollTop) {
941                    doc.body.scrollTop = 0;
942                }
943
944                self.getElem.spMenuTarget.classList.add('is-back');
945                self.getElem.spMenuTarget.style.left = Number(self.getElem.spMenuTarget.style.left.slice(0, -1)) + 100 + '%';
946                if (this.closest(slideNavTargetSelector)) {
947                    this.closest(slideNavTargetSelector).classList.add('is-targeted');
948                }
949                this.blur();
950            }
951        };
952
953        handlers.slideEnd = function () {
954            var target = null;
955
956            if (this.classList.contains('is-back')) {
957                if (self.getElem.slideNavPrevTrigger.length) {
958                    self.getElem.slideNavPrevTrigger.forEach(function (items) {
959                        target = items.closest(slideNavTargetSelector + '.is-targeted');
960
961                        if (target) {
962                            target.classList.remove(self.CONFIG.SHOW_CLASS);
963                            target.classList.remove('is-targeted');
964                            $(self.getElem.spMenuTarget).find(self.CONFIG.FOCUSABLE).attr('tabindex', -1);
965                            $(self.getElem.slideNavTarget).filter('.' + self.CONFIG.SHOW_CLASS).find(self.CONFIG.FOCUSABLE).removeAttr('tabindex');
966                        }
967                    });
968                }
969                this.classList.remove('is-back');
970            }
971
972            if (Number(self.getElem.spMenuTarget.style.left.slice(0, -1)) === 0) {
973                $(self.getElem.spMenuTarget).find(self.CONFIG.FOCUSABLE).removeAttr('tabindex');
974            }
975            isAnimated = false;
976        };
977
978        self.getElem.megaMenu.forEach(function (items) {
979            var target = items.querySelector(targetSelector);
980            var trigger = items.querySelector(triggerSelector);
981            var objMouseenterForTrigger = {
982                handleEvent: handlers.onMouseenterForTrigger,
983                target: target
984            };
985            var objForcusinForTrigger = {
986                handleEvent: handlers.onForcusinForTrigger,
987                target: target
988            };
989            var objMouseleaveForTrigger = {
990                handleEvent: handlers.onMouseleaveForTrigger,
991                target: target
992            };
993            var objMouseenterForTarget = {
994                handleEvent: handlers.onMouseenterForTarget,
995                trigger: trigger,
996                target: target
997            };
998            var objMouseleaveForTarget = {
999                handleEvent: handlers.onMouseleaveForTarget,
1000                trigger: trigger,
1001                target: target
1002            };
1003            var objFocusinForTarget = {
1004                handleEvent: handlers.onFocusinForTarget,
1005                target: target
1006            };
1007            var objTouchstarCloseMegaMenu = {
1008                handleEvent: handlers.onTouchstartCloseMegaMenu,
1009                trigger: trigger,
1010                target: target
1011            };
1012
1013            fn.runForEachScreen1 = function () {
1014                if (smallScreenMql.matches) {
1015                    trigger.removeEventListener('mouseenter', objMouseenterForTrigger, false);
1016                    trigger.removeEventListener('touchstart', handlers.onTouchstartForTrigger, false);
1017                    trigger.removeEventListener('touchmove', objMouseenterForTrigger, false);
1018                    trigger.removeEventListener('touchend', handlers.onTouchendForTrigger, false);
1019                    trigger.removeEventListener('focusin', objForcusinForTrigger, false);
1020                    trigger.removeEventListener('mouseleave', objMouseleaveForTrigger, false);
1021                    target.removeEventListener('mouseenter', objMouseenterForTarget, false);
1022                    target.removeEventListener('mouseleave', objMouseleaveForTarget, false);
1023                    target.removeAttribute('style');
1024                    target.querySelectorAll(self.CONFIG.FOCUSABLE).forEach(function (selectors) {
1025                        selectors.removeEventListener('focusin', objFocusinForTarget, false);
1026                    });
1027                    fn.removeMenuShowClass();
1028                    fn.deactivateTrigger(trigger);
1029                    doc.removeEventListener('touchstart', handlers.onTouchstartForDoc, false);
1030                    doc.removeEventListener('touchend', objTouchstarCloseMegaMenu, false);
1031                    win.removeEventListener('resize', handlers.resizeTarget, false);
1032                } else {
1033                    trigger.addEventListener('touchstart', handlers.onTouchstartForTrigger, false);
1034                    trigger.addEventListener('touchend', handlers.onTouchendForTrigger, false);
1035                    trigger.addEventListener('mouseenter', objMouseenterForTrigger, false);
1036                    trigger.addEventListener('touchmove', objMouseenterForTrigger, false);
1037                    trigger.addEventListener('focusin', objForcusinForTrigger, false);
1038                    trigger.addEventListener('mouseleave', objMouseleaveForTrigger, false);
1039                    target.addEventListener('mouseenter', objMouseenterForTarget, false);
1040                    target.addEventListener('mouseleave', objMouseleaveForTarget, false);
1041                    target.querySelectorAll(self.CONFIG.FOCUSABLE).forEach(function (selectors) {
1042                        selectors.addEventListener('focusin', objFocusinForTarget, false);
1043                    });
1044                    doc.addEventListener('touchstart', handlers.onTouchstartForDoc, false);
1045                    doc.addEventListener('touchend', objTouchstarCloseMegaMenu, false);
1046                    win.addEventListener('resize', handlers.resizeTarget, false);
1047                }
1048            };
1049
1050            fn.runForEachScreen1();
1051            smallScreenMql.addListener(fn.runForEachScreen1);
1052        });
1053
1054        fn.spMegaMenuEvents = function () {
1055            if (self.getElem.slideNavNextTrigger.length) {
1056                self.getElem.slideNavNextTrigger.forEach(function (items) {
1057                    items.addEventListener('click', handlers.slideNext, false);
1058                });
1059            }
1060
1061            if (self.getElem.slideNavPrevTrigger.length) {
1062                self.getElem.slideNavPrevTrigger.forEach(function (items) {
1063                    items.addEventListener('click', handlers.slidePrev, false);
1064                });
1065            }
1066
1067            if (self.getElem.spMenuTarget) {
1068                self.getElem.spMenuTarget.addEventListener('transitionend', handlers.slideEnd, false);
1069            }
1070        };
1071
1072        fn.runForEachScreen2 = function () {
1073            if (smallScreenMql.matches) {
1074                fn.spMegaMenuEvents();
1075
1076                targets.forEach(function (items) {
1077                    items.classList.remove(self.CONFIG.SHOW_CLASS);
1078                    items.classList.remove(self.CONFIG.HIDE_CLASS);
1079                });
1080
1081                doc.querySelectorAll(self.CONFIG.FOCUSABLE).forEach(function (selectors) {
1082                    selectors.removeEventListener('focusin', handlers.onForcusinForFocusable, false);
1083                });
1084
1085                if (self.getElem.changeLangTrigger) {
1086                    self.getElem.changeLangTrigger.removeEventListener('focusin', handlers.onForcusinForFocusable, false);
1087                }
1088            } else {
1089                $(self.getElem.spMenuTarget).find(self.CONFIG.FOCUSABLE).removeAttr('tabindex');
1090
1091                if (self.getElem.slideNavNextTrigger.length) {
1092                    self.getElem.slideNavNextTrigger.forEach(function (items) {
1093                        items.removeEventListener('click', handlers.slideNext, false);
1094                    });
1095                }
1096
1097                if (self.getElem.slideNavPrevTrigger.length) {
1098                    self.getElem.slideNavPrevTrigger.forEach(function (items) {
1099                        items.removeEventListener('click', handlers.slidePrev, false);
1100                    });
1101                }
1102
1103                if (self.getElem.spMenuTarget) {
1104                    self.getElem.spMenuTarget.removeAttribute('style');
1105                    self.getElem.spMenuTarget.removeEventListener('transitionend', handlers.slideEnd, false);
1106                }
1107
1108                if (self.getElem.slideNavTarget) {
1109                    self.getElem.slideNavTarget.forEach(function (items) {
1110                        items.classList.remove(self.CONFIG.SHOW_CLASS);
1111                    });
1112                }
1113
1114                doc.querySelectorAll(self.CONFIG.FOCUSABLE).forEach(function (selectors) {
1115                    selectors.addEventListener('focusin', handlers.onForcusinForFocusable, false);
1116                });
1117
1118                if (self.getElem.changeLangTrigger) {
1119                    self.getElem.changeLangTrigger.addEventListener('focusin', handlers.onForcusinForFocusable, false);
1120                }
1121            }
1122        };
1123
1124        fn.runForEachScreen2();
1125        smallScreenMql.addListener(fn.runForEachScreen2);
1126    };
1127
1128    KEYENCE.divideMenu = function () {
1129        var self = this;
1130        var targetList = null;
1131        var targetListLength = null;
1132        var $targetList = null;
1133        var i = null;
1134        var j = null;
1135        var rowNumArrLength = null;
1136        var divideArrLength = null;
1137        var divideArrsLength = null;
1138        var rowNumArr = [];
1139        var divideArr = [];
1140        var accumulation = 0;
1141        var divideCount = 0;
1142        var groupCount = 0;
1143        var groupClassStr = 'group';
1144
1145        if (!self.getElem.divideMenu) {
1146            return;
1147        }
1148
1149        targetList = self.getElem.divideMenu.querySelectorAll('.navigationMegaMenu-list');
1150        $targetList = $(targetList);
1151        targetListLength = $targetList.length;
1152
1153        if (!targetListLength) {
1154            return;
1155        }
1156
1157        for (i = 0; i < targetListLength; i++) {
1158            if (!$targetList.eq(i).hasClass('smallScreen-show')) {
1159                rowNumArr.push($targetList.eq(i).find('li:not(".smallScreen-show")').length);
1160            } else {
1161                rowNumArr.push(0);
1162            }
1163        }
1164
1165        divideArr[divideCount] = [];
1166        for (i = 0, rowNumArrLength = rowNumArr.length; i < rowNumArrLength; i++) {
1167            if (accumulation <= win.kpi_usersettings.MegaMenuRowsNum) {
1168                accumulation += rowNumArr[i];
1169
1170                if (accumulation + rowNumArr[i + 1] <= win.kpi_usersettings.MegaMenuRowsNum) {
1171                    divideArr[divideCount].push(rowNumArr[i]);
1172                    divideArr[divideCount + 1] = [];
1173                } else {
1174                    divideArr[divideCount].push(rowNumArr[i]);
1175                    divideArr[divideCount + 1] = [];
1176                    accumulation = 0;
1177                    divideCount++;
1178                }
1179            }
1180        }
1181
1182        divideArr.pop();
1183        $(self.getElem.divideMenu).find('.layout-megaMenuGrid').addClass('of-column-' + divideArr.length);
1184
1185        for (i = 0, divideArrLength = divideArr.length; i < divideArrLength; i++) {
1186            for (j = 0, divideArrsLength = divideArr[i].length; j < divideArrsLength; j++) {
1187                groupCount++;
1188                $targetList.eq(groupCount - 1).addClass(groupClassStr + i);
1189            }
1190
1191            $targetList.filter('.' + groupClassStr + i).wrapAll('<div class="layout-megaMenuGrid-column of-column-1" />');
1192            $targetList.filter('.' + groupClassStr + i).removeClass(groupClassStr + i);
1193        }
1194    };
1195
1196    KEYENCE.setCategoryHeader = function () {
1197        var self = this;
1198        var roots = self.getElem.categoryHeader;
1199        var classNames = {
1200            commonInner: 'js-categoryHeader-commonInner',
1201            titleArea: 'js-categoryHeader-titleArea',
1202            navigationGroup: 'js-categoryHeader-navigationGroup',
1203            navigationListOuter: 'js-categoryHeader-navigationListOuter',
1204            trigger: 'js-categoryHeader-trigger',
1205            targetGroup: 'js-categoryHeader-targetGroup',
1206            target: 'js-categoryHeader-target',
1207            subNavigationLink: 'js-categoryHeader-subNavigationLink'
1208		};
1209        var arrPageX = [];
1210        var arrPageY = [];
1211        var fn = {};
1212		var handlers = {};
1213
1214        if (!roots.length) {
1215            return;
1216        }
1217
1218        fn.init = function () {
1219            roots.forEach(function (root) {
1220                var handlerSet = fn.createHandlerSet(root);
1221                fn.runForEachScreen(root, handlerSet);
1222
1223                smallScreenMql.addEventListener('change', function () {
1224                    fn.runForEachScreen(root, handlerSet);
1225                });
1226            });
1227        };
1228
1229        fn.setAttribute = function (root) {
1230            var targets = root.querySelectorAll('.' + classNames.target);
1231
1232            targets.forEach(function (target) {
1233                target.setAttribute("aria-hidden", true);
1234            });
1235        };
1236
1237        fn.setMaxWidthOfNavigation = function (root, mql) {
1238            var commonInner = root.querySelector('.' + classNames.commonInner);
1239            var titleArea = root.querySelector('.' + classNames.titleArea);
1240            var navigationGroup = root.querySelector('.' + classNames.navigationGroup);
1241            var commonInnerWidth;
1242            var titleAreaWidth;
1243            var maxWidth;
1244
1245            if (!commonInner || !titleArea || !navigationGroup) {
1246                return;
1247            }
1248
1249            commonInnerWidth = commonInner.offsetWidth;
1250            titleAreaWidth = titleArea.offsetWidth;
1251
1252            maxWidth = mql.matches ? "none" : commonInnerWidth - titleAreaWidth + 'px';
1253
1254            navigationGroup.style.maxWidth = maxWidth;
1255        };
1256
1257        fn.setOverflowingClass = function (root) {
1258            var navigationListOuter = root.querySelector('.' + classNames.navigationListOuter);
1259
1260            if (!navigationListOuter) {
1261                return;
1262            }
1263
1264            fn.deActiveSubNavigation(root);
1265
1266            if (navigationListOuter.scrollWidth > navigationListOuter.clientWidth) {
1267                navigationListOuter.classList.add('is-overflowing')
1268            } else {
1269                navigationListOuter.classList.remove('is-overflowing')
1270            }
1271        };
1272        fn.setPositionOfSubNavigation = function (root, currentNavigation) {
1273            var navigationGroup = root.querySelector('.' + classNames.navigationGroup);
1274            var targetGroup = root.querySelector('.' + classNames.targetGroup);
1275            var currentLeft;
1276            var currentRight;
1277            var wrapperLeft;
1278            var wrapperRight;
1279            var targetGroupWidth;
1280            var left;
1281            if (!currentNavigation || !navigationGroup || !targetGroup) {
1282                return;
1283            }
1284
1285            setTimeout(() => {
1286                currentLeft = currentNavigation.getBoundingClientRect().left;
1287                currentRight = currentNavigation.getBoundingClientRect().right;
1288                wrapperLeft = navigationGroup.getBoundingClientRect().left;
1289                wrapperRight = navigationGroup.getBoundingClientRect().right;
1290                targetGroupWidth = targetGroup.offsetWidth;
1291
1292                if (currentLeft < wrapperLeft) {
1293                    left = wrapperLeft + 'px';
1294                } else if (currentRight >= wrapperRight) {
1295                    left = wrapperRight - targetGroupWidth + 'px';
1296                } else if (wrapperRight - currentLeft < targetGroupWidth) {
1297                    left = currentLeft - (targetGroupWidth - currentNavigation.offsetWidth) + 'px';
1298                } else {
1299                    left = currentLeft + 'px';
1300                }
1301
1302                targetGroup.style.left = left;
1303            }, 0);
1304
1305        };
1306
1307
1308
1309        fn.activeSubNavigation = function (root, currentNavigation) {
1310            var triggers = root.querySelectorAll('.' + classNames.trigger);
1311            var targets = root.querySelectorAll('.' + classNames.target);
1312            var targetGroup = root.querySelector('.' + classNames.targetGroup);
1313            var currentNavigationId = currentNavigation ? currentNavigation.getAttribute("aria-controls") : null;
1314            var hasSubNavigation = root.querySelector('#' + currentNavigationId) ? true : false;
1315
1316            hasSubNavigation ? targetGroup.classList.add(KEYENCE.CONFIG.SHOW_CLASS) : targetGroup.classList.remove(KEYENCE.CONFIG.SHOW_CLASS);
1317
1318            triggers.forEach(function (trigger) {
1319                var isSelected = trigger === currentNavigation;
1320
1321                trigger.tabIndex = isSelected ? 0 : -1;
1322                isSelected && hasSubNavigation ? trigger.classList.add(KEYENCE.CONFIG.ACTIVE_CLASS) : trigger.classList.remove(KEYENCE.CONFIG.ACTIVE_CLASS);
1323            });
1324
1325            targets.forEach(function (target) {
1326                var isSelected = target.id === currentNavigationId;
1327
1328                hasSubNavigation ? target.setAttribute("aria-hidden", !isSelected) : target.setAttribute("aria-hidden", true);
1329            });
1330        };
1331
1332        fn.deActiveSubNavigation = function (root) {
1333            var triggers = root.querySelectorAll('.' + classNames.trigger);
1334            var targets = root.querySelectorAll('.' + classNames.target);
1335            var targetGroup = root.querySelector('.' + classNames.targetGroup);
1336
1337            targetGroup.classList.remove(KEYENCE.CONFIG.SHOW_CLASS);
1338            targetGroup.style.left = "";
1339
1340            triggers.forEach(function (trigger) {
1341                trigger.classList.remove(KEYENCE.CONFIG.ACTIVE_CLASS);
1342            });
1343
1344            targets.forEach(function (target) {
1345                target.setAttribute("aria-hidden", true);
1346            });
1347        };
1348
1349        fn.switchNavigation = function (root, event) {
1350            var triggers = root.querySelectorAll('.' + classNames.trigger);
1351            var selectedIndex = fn.getSelectedNavigationIndex(root);
1352
1353            switch (event.key) {
1354                case "ArrowRight": {
1355                    if (triggers[selectedIndex + 1]) {
1356                        triggers[selectedIndex + 1].focus();
1357                    } else {
1358                        fn.getFirstNavigation(root).focus();
1359                    }
1360                    break;
1361                }
1362                case "ArrowLeft": {
1363                    if (triggers[selectedIndex - 1]) {
1364                        triggers[selectedIndex - 1].focus();
1365                    } else {
1366                        fn.getLastNavigation(root).focus();
1367                    }
1368                    break;
1369                }
1370            }
1371        };
1372
1373        fn.getFirstNavigation = function (root) {
1374            var triggers = root.querySelectorAll('.' + classNames.trigger);
1375
1376            return triggers[0];
1377        };
1378
1379        fn.getLastNavigation = function (root) {
1380            var triggers = root.querySelectorAll('.' + classNames.trigger);
1381
1382            return triggers[triggers.length - 1];
1383        };
1384
1385        fn.getSelectedNavigationIndex = function (root) {
1386            var triggers = root.querySelectorAll('.' + classNames.trigger);
1387
1388            return Array.from(triggers).findIndex(function (elm) {
1389                return elm.tabIndex === 0;
1390            });
1391        };
1392
1393        handlers.scrollForNavigationListOuter = function (root) {
1394            var navigationListOuter = root.querySelector('.' + classNames.navigationListOuter);
1395
1396            if (!navigationListOuter) {
1397                return;
1398            }
1399
1400            fn.deActiveSubNavigation(root);
1401            navigationListOuter.classList.add('is-hasScrolled')
1402        };
1403
1404        handlers.mouseenterForTrigger = function (root, event) {
1405            var currentNavigation = event.currentTarget;
1406
1407            fn.setPositionOfSubNavigation(root, currentNavigation);
1408            fn.activeSubNavigation(root, currentNavigation);
1409        };
1410
1411        handlers.focusinForTrigger = function (root, event) {
1412            var currentNavigation = event.currentTarget;
1413
1414            fn.setPositionOfSubNavigation(root, currentNavigation);
1415            fn.activeSubNavigation(root, currentNavigation);
1416        };
1417
1418        handlers.clickForTrigger = function (root, event) {
1419            var currentNavigation = event.currentTarget;
1420            var hasActiveClass = currentNavigation.classList.contains(KEYENCE.CONFIG.ACTIVE_CLASS);
1421
1422            if (currentNavigation.getAttribute('aria-controls') || currentNavigation.getAttribute('href') === "") {
1423                event.preventDefault();
1424            }
1425
1426            if (hasActiveClass) {
1427                fn.deActiveSubNavigation(root);
1428            } else {
1429                fn.activeSubNavigation(root, currentNavigation);
1430            }
1431        };
1432
1433        handlers.touchstart = function (event) {
1434            arrPageX.length = 0;
1435            arrPageY.length = 0;
1436            arrPageX.push(event.touches[0].pageX);
1437            arrPageY.push(event.touches[0].pageY);
1438        };
1439
1440        handlers.touchend = function (root, event) {
1441            if (event.changedTouches[0].pageX === arrPageX[0] || event.changedTouches[0].pageY === arrPageY[0]) {
1442                if (!event.target.closest('.' + classNames.navigationGroup)) {
1443                    fn.deActiveSubNavigation(root);
1444                }
1445            }
1446        };
1447
1448        handlers.mouseleaveForNavigation = function (root) {
1449            fn.deActiveSubNavigation(root);
1450        };
1451
1452        handlers.keyupForTrigger = function (root, event) {
1453            fn.switchNavigation(root, event);
1454        };
1455
1456        fn.createHandlerSet = function (root) {
1457            return {
1458                scrollForNavigationListOuter: {
1459                    handleEvent: function () {
1460                        handlers.scrollForNavigationListOuter(root);
1461                    }
1462                },
1463                mouseenterForTrigger: {
1464                    handleEvent: function (event) {
1465                        handlers.mouseenterForTrigger(root, event);
1466                    }
1467                },
1468                focusinForTrigger: {
1469                    handleEvent: function (event) {
1470                        handlers.focusinForTrigger(root, event);
1471                    }
1472                },
1473                clickForTrigger: {
1474                    handleEvent: function (event) {
1475                        handlers.clickForTrigger(root, event);
1476                    }
1477                },
1478                mouseleaveForNavigation: {
1479                    handleEvent: function () {
1480                        handlers.mouseleaveForNavigation(root);
1481                    }
1482                },
1483                keyupForTrigger: {
1484                    handleEvent: function (event) {
1485                        handlers.keyupForTrigger(root, event);
1486                    }
1487                },
1488                touchstart: {
1489                    handleEvent: handlers.touchstart
1490                },
1491                touchend: {
1492                    handleEvent: function (event) {
1493                        handlers.touchend(root, event);
1494                    }
1495                },
1496                preventEmptyHrefClick: {
1497                    handleEvent: function (event) {
1498                        if (event.currentTarget.getAttribute('href') === '') {
1499                            event.preventDefault();
1500                        }
1501                    }
1502                },
1503                focusinOutsideNavigation: {
1504                    handleEvent: function (event) {
1505                        if (!event.target.closest('.' + classNames.navigationGroup)) {
1506                            fn.deActiveSubNavigation(root);
1507                        }
1508                    }
1509                }
1510            };
1511        };
1512
1513        fn.runForEachScreen = function (root, handlerSet) {
1514            var commonInner = root.querySelector('.' + classNames.c
1514ommonInner);
1515            var navigationGroup = root.querySelector('.' + classNames.navigationGroup);
1516            var trigger = root.querySelectorAll('.' + classNames.trigger);
1517            var navigationListOuter = root.querySelector('.' + classNames.navigationListOuter);
1518            var targetGroup = root.querySelector('.' + classNames.targetGroup);
1519            var resizeObserver = new ResizeObserver(function () {
1520                fn.setMaxWidthOfNavigation(root, smallScreenMql);
1521            });
1522            var resizeObserverOfNavigationListOuter = new ResizeObserver(function () {
1523                fn.setOverflowingClass(root);
1524            });
1525
1526            if (!commonInner || !navigationGroup || !targetGroup || !navigationListOuter) {;
1527                return;
1528            }
1529
1530            fn.setAttribute(root);
1531
1532            resizeObserverOfNavigationListOuter.observe(navigationListOuter);
1533            navigationListOuter.removeEventListener('scroll', handlerSet.scrollForNavigationListOuter, false);
1534            navigationListOuter.addEventListener('scroll', handlerSet.scrollForNavigationListOuter, false);
1535            doc.removeEventListener('touchstart', handlerSet.touchstart, false);
1536            doc.removeEventListener('touchend', handlerSet.touchend, false);
1537            doc.addEventListener('touchstart', handlerSet.touchstart, false);
1538            doc.addEventListener('touchend', handlerSet.touchend, false);
1539
1540            if (smallScreenMql.matches) {
1541                fn.deActiveSubNavigation(root);
1542                resizeObserver.unobserve(commonInner);
1543                navigationGroup.removeEventListener('mouseleave', handlerSet.mouseleaveForNavigation, false);
1544
1545                trigger.forEach(function(elm) {
1546                    elm.removeEventListener('mouseenter', handlerSet.mouseenterForTrigger, false);
1547                    elm.removeEventListener('focusin', handlerSet.focusinForTrigger, false);
1548                    elm.removeEventListener('click', handlerSet.preventEmptyHrefClick, false);
1549                    elm.addEventListener('click', handlerSet.clickForTrigger, false);
1550                });
1551            } else {
1552                resizeObserver.observe(commonInner);
1553                navigationGroup.removeEventListener('mouseleave', handlerSet.mouseleaveForNavigation, false);
1554                navigationGroup.addEventListener('mouseleave', handlerSet.mouseleaveForNavigation, false);
1555
1556                trigger.forEach(function(elm) {
1557                    elm.removeEventListener('click', handlerSet.clickForTrigger, false);
1558                    elm.removeEventListener('click', handlerSet.preventEmptyHrefClick, false);
1559                    elm.removeEventListener('focusin', handlerSet.focusinForTrigger, false);
1560                    elm.removeEventListener('mouseenter', handlerSet.mouseenterForTrigger, false);
1561                    elm.removeEventListener('keyup', handlerSet.keyupForTrigger, false);
1562
1563                    elm.addEventListener('click', handlerSet.preventEmptyHrefClick, false);
1564                    elm.addEventListener('focusin', handlerSet.focusinForTrigger, false);
1565                    elm.addEventListener('mouseenter', handlerSet.mouseenterForTrigger, false);
1566                    elm.addEventListener('keyup', handlerSet.keyupForTrigger, false);
1567                });
1568                doc.querySelectorAll(KEYENCE.CONFIG.FOCUSABLE).forEach(function (selectors) {
1569                    selectors.removeEventListener('focusin', handlerSet.focusinOutsideNavigation, false);
1570                    selectors.addEventListener('focusin', handlerSet.focusinOutsideNavigation, false);
1571                });
1572            }
1573        };
1574
1575        fn.init();
1576    };
1577
1578    KEYENCE.setChangeLanguage = function () {
1579        var self = this;
1580        var setToggle = null;
1581        var runClick = null;
1582        var runKeydown = null;
1583        var closeTarget = null;
1584        var runForEachScreen = null;
1585
1586        if (!self.getElem.changeLangTrigger || !self.getElem.changeLangTarget) {
1587            return;
1588        }
1589
1590        if (self.getElem.changeLangTarget.querySelectorAll('li').length <= 1) {
1591            return;
1592        }
1593
1594        setToggle = function (target) {
1595            if (target.getAttribute(self.CONFIG.ARIA_EXPANDED) === 'true') {
1596                self.getElem.changeLangTarget.classList.remove(self.CONFIG.SHOW_CLASS);
1597                target.setAttribute(self.CONFIG.ARIA_EXPANDED, false);
1598            } else {
1599                self.getElem.changeLangTarget.classList.add(self.CONFIG.SHOW_CLASS);
1600                target.setAttribute(self.CONFIG.ARIA_EXPANDED, true);
1601            }
1602        };
1603
1604        runClick = function (e) {
1605            e.preventDefault();
1606
1607            setToggle(this);
1608        };
1609
1610        runKeydown = function (e) {
1611            if (e.key === 'Spacebar' || e.key === ' ' || e.key === 'Enter') {
1612                e.preventDefault();
1613
1614                setToggle(this);
1615            }
1616        };
1617
1618        closeTarget = function (e) {
1619            if (!e.target.closest('#' + self.getElem.changeLang.id)) {
1620                self.getElem.changeLangTarget.classList.remove(self.CONFIG.SHOW_CLASS);
1621                self.getElem.changeLangTrigger.setAttribute(self.CONFIG.ARIA_EXPANDED, false);
1622            }
1623        };
1624
1625        runForEachScreen = function () {
1626            if (smallScreenMql.matches) {
1627                self.getElem.changeLangTrigger.removeAttribute(self.CONFIG.ARIA_CONTROLS);
1628                self.getElem.changeLangTrigger.removeAttribute(self.CONFIG.ARIA_EXPANDED);
1629                self.getElem.changeLangTrigger.removeAttribute('tabindex');
1630                self.getElem.changeLangTrigger.removeEventListener('click', runClick, false);
1631                self.getElem.changeLangTrigger.removeEventListener('keydown', runKeydown, false);
1632                doc.removeEventListener('click', closeTarget, false);
1633            } else {
1634                self.getElem.changeLangTrigger.setAttribute(self.CONFIG.ARIA_CONTROLS, self.getElem.changeLangTarget.id);
1635                self.getElem.changeLangTrigger.setAttribute(self.CONFIG.ARIA_EXPANDED, false);
1636                self.getElem.changeLangTrigger.tabIndex = 0;
1637                self.getElem.changeLangTrigger.addEventListener('click', runClick, false);
1638                self.getElem.changeLangTrigger.addEventListener('keydown', runKeydown, false);
1639                doc.addEventListener('click', closeTarget, false);
1640            }
1641        };
1642
1643        runForEachScreen();
1644        smallScreenMql.addListener(runForEachScreen);
1645    };
1646
1647    KEYENCE.setCurrentNav = function () {
1648        var self = this;
1649        var nav;
1650        var href = null;
1651        var hrefRegexp = null;
1652        var pathname = win.location.pathname;
1653
1654        if (win.suz_LanguagePath + '/' === pathname) {
1655            return;
1656        }
1657
1658        if (!self.getElem.focusOrderTrigger) {
1659            return;
1660        }
1661
1662        nav = self.getElem.focusOrderTrigger.querySelectorAll('.navigationGlobal > li > a');
1663
1664        if (!nav.length) {
1665            return;
1666        }
1667
1668        nav.forEach(function (items) {
1669            href = items.pathname.replace(/^\/(.+)(\/index\.jsp?)$/, '/$1/');
1670            hrefRegexp = new RegExp('^' + href);
1671
1672            if (hrefRegexp.test(pathname)) {
1673                items.classList.add(self.CONFIG.CURRENT_CLASS);
1674            }
1675        });
1676    };
1677
1678    KEYENCE.ctrlTelLink = function () {
1679        var telLink = doc.querySelectorAll('a[href^="tel:"]');
1680        var hasTouchScreen = false;
1681        var mQ = null;
1682        var ua = win.navigator.userAgent;
1683        var cancelLink = null;
1684
1685        if (!telLink.length) {
1686            return;
1687        }
1688
1689        cancelLink = function (e) {
1690            e.preventDefault();
1691        };
1692
1693        if ('maxTouchPoints' in navigator) {
1694            hasTouchScreen = win.navigator.maxTouchPoints > 0;
1695            if (ua.indexOf('Edge') !== -1) {
1696                if (ua.indexOf('Windows Phone') === -1 && ua.indexOf('IEMobile') === -1) {
1697                    hasTouchScreen = false;
1698                }
1699            }
1700        } else if ('msMaxTouchPoints' in navigator) {
1701            hasTouchScreen = win.navigator.msMaxTouchPoints > 0;
1702        } else {
1703            mQ = win.matchMedia && matchMedia('(pointer:coarse)');
1704
1705            if (mQ && mQ.media === '(pointer:coarse)') {
1706                hasTouchScreen = Boolean(mQ.matches);
1707            } else if ('orientation' in win) {
1708                hasTouchScreen = true;
1709            } else {
1710                hasTouchScreen = (
1711                    /\b(BlackBerry|webOS|iPhone|IEMobile)\b/i.test(ua) ||
1712                    /\b(Android|Windows Phone|iPad|iPod)\b/i.test(ua)
1713                );
1714            }
1715        }
1716
1717        if (!hasTouchScreen) {
1718            telLink.forEach(function (item) {
1719                item.addEventListener('click', cancelLink, false);
1720            });
1721        }
1722    };
1723
1724    KEYENCE.ctrlFocusOrder = function () {
1725        var self = this;
1726        var $gNav = $(self.getElem.focusOrderTrigger);
1727        var $spMenuTarget = $(self.getElem.spMenuTarget);
1728        var $spMenuBtn = $(self.getElem.spMenuBtn);
1729        var $spSearchBtn = $(self.getElem.spSearchBtn);
1730        var runForEachScreen = null;
1731
1732        runForEachScreen = function () {
1733            if (smallScreenMql.matches) {
1734                $gNav.insertBefore($spMenuTarget.children().filter(':first'));
1735                $spSearchBtn.insertAfter($spMenuBtn);
1736            } else {
1737                $gNav.insertAfter($spMenuTarget.children().filter(':last'));
1738                $spSearchBtn.insertAfter($gNav.children().filter(':last'));
1739            }
1740        };
1741
1742        runForEachScreen();
1743        smallScreenMql.addListener(runForEachScreen);
1744    };
1745
1746    KEYENCE.setHomeAdjustHeight = function () {
1747        var self = this;
1748        var roots = self.getElem.adjustHeight;
1749        var fn = {};
1750        var className = {
1751            adjustHeightTarget: 'js-setHomeAdjustHeight-target'
1752        };
1753
1754        if (!roots.length) {
1755            return;
1756        }
1757
1758        fn.init = function () {
1759            roots.forEach(function (root) {
1760                fn.setTargetHeight(root);
1761                fn.resizeWindow(root);
1762            });
1763        };
1764
1765        fn.resizeWindow = function (root) {
1766            var timer = null;
1767
1768            win.addEventListener('resize', function () {
1769                if (timer !== null) {
1770                    clearTimeout(timer);
1771                }
1772
1773                timer = setTimeout(function () {
1774                    fn.setTargetHeight(root);
1775                }, 200);
1776            });
1777        };
1778
1779        fn.getTarget = function (root) {
1780            var adjustHeightTarget = root.querySelectorAll('.' + className.adjustHeightTarget);
1781
1782            return adjustHeightTarget;
1783        };
1784
1785        fn.destroyHeight = function (root) {
1786            var target = fn.getTarget(root);
1787
1788            if (!target.length) {
1789                return;
1790            }
1791
1792            target.forEach(function (elm) {
1793                elm.style.height = '';
1794            });
1795        };
1796
1797        fn.setTargetHeight = function (root) {
1798            var target = fn.getTarget(root);
1799            var targetHeight = 0;
1800            var maxHeight = 0;
1801            var windowWidth = win.innerWidth;
1802
1803            if (!target.length) {
1804                return;
1805            }
1806
1807            if (windowWidth > 640) {
1808                target.forEach(function (elm) {
1809                    elm.style.height = '';
1810                    targetHeight = elm.offsetHeight;
1811
1812                    if (targetHeight > maxHeight) {
1813                        maxHeight = targetHeight;
1814                    }
1815                });
1816
1817                target.forEach(function (elm) {
1818                    elm.style.height = maxHeight + 'px';
1819                });
1820            } else {
1821                fn.destroyHeight(root);
1822            }
1823        };
1824
1825        fn.init();
1826    };
1827
1828    KEYENCE.setHomeCarousel = function () {
1829        var self = this;
1830        var className = {
1831            utilityTemplate: 'js-setHomeCarousel-utilityControllerTemplate',
1832            paginationListTemplate: 'js-setHomeCarousel-paginationListTemplate',
1833            targetOuter: 'js-setHomeCarousel-targetOuter',
1834            target: 'js-setHomeCarousel-target',
1835            clone: 'js-setHomeCarousel-clone',
1836            utility: 'js-setHomeCarousel-utilityController',
1837            image: 'js-setHomeCarousel-image',
1838            pagination: 'js-setHomeCarousel-pagination',
1839            paginationBtn: 'js-setHomeCarousel-paginationButton',
1840            prevBtn: 'js-setCrousel-prevButton',
1841            nextBtn: 'js-setCrousel-nextButton',
1842            controller: 'js-setHomeCarousel-controller',
1843            isInitialized: 'is-initialized'
1844        };
1845        var root = null;
1846        var targetOuter = null;
1847        var targetWidth = null;
1848        var target = null;
1849        var targetLength = null;
1850        var arrTargetLength = [];
1851        var currentNum = 0;
1852        var timer = null;
1853        var isAnimate = false;
1854        var isAutoPlay = true;
1855        var isEnterSlide = false;
1856        var num = 0;
1857        var arrPageX = [];
1858        var arrPageY = [];
1859        var fn = {};
1860        var DURATION = 4000;
1861
1862        if (self.getElem.carousel === null) {
1863            return;
1864        }
1865
1866        root = self.getElem.carousel;
1867
1868        root.classList.add(className.isInitialized);
1869
1870        fn.init = function () {
1871            fn.setSlide();
1872            fn.setUtility();
1873            fn.setSlideClone();
1874            fn.setSlideWidth();
1875            fn.setAlly();
1876            fn.setPaginationCurrent(0);
1877            fn.swipe();
1878            fn.resizeWindow();
1879            fn.addMouseEnterEvent();
1880            fn.addMouseLeaveEvent();
1881
1882            if (isAutoPlay) {
1883                fn.setAutoPlay();
1884            }
1885        };
1886
1887        targetOuter = root.querySelector('.' + className.targetOuter);
1888        target = root.querySelectorAll('.' + className.target);
1889
1890        if (targetOuter === null || !target.length) {
1891            return;
1892        }
1893
1894        fn.setSlide = function () {
1895            targetLength = target.length;
1896            arrTargetLength.push(targetLength);
1897            num = 1;
1898            currentNum = 0;
1899            targetWidth = win.innerWidth;
1900            targetOuter.style.transform = 'translate3d(-' + (targetWidth * num) + 'px ,0, 0)';
1901        };
1902
1903        fn.setSlideClone = function () {
1904            var firstClone;
1905            var lastClone;
1906
1907            if (target.length > 1) {
1908                firstClone = targetOuter.firstElementChild.cloneNode(true);
1909                lastClone = targetOuter.lastElementChild.cloneNode(true);
1910
1911                firstClone.classList.add(className.clone);
1912                lastClone.classList.add(className.clone);
1913
1914                targetOuter.appendChild(firstClone);
1915                targetOuter.insertBefore(lastClone, targetOuter.firstElementChild);
1916            }
1917        };
1918
1919        fn.setSlideWidth = function () {
1920            target = root.querySelectorAll('.' + className.target);
1921            targetLength = target.length;
1922
1923            if (/Macintosh|iP(hone|ad|od)/.test(win.navigator.userAgent) && 'ontouchend' in doc) {
1924                targetWidth = doc.documentElement.clientWidth;
1925            } else {
1926                targetWidth = win.innerWidth;
1927            }
1928
1929            if (!target.length) {
1930                return;
1931            }
1932
1933            targetOuter.style.width = (targetWidth * targetLength) + 'px';
1934
1935            target.forEach(function (elm) {
1936                elm.style.width = targetWidth + 'px';
1937            });
1938        };
1939
1940        fn.setSlideCurrent = function () {
1941            target.forEach(function (elm, idx) {
1942                elm.classList.remove(self.CONFIG.CURRENT_CLASS);
1943
1944                if (elm.classList.contains(self.CONFIG.CURRENT_CLASS)) {
1945                    num = idx;
1946                }
1947            });
1948
1949            targetOuter.style.transform = 'translate3d(-' + (targetWidth * num) + 'px ,0, 0)';
1950            target[num].classList.add(self.CONFIG.CURRENT_CLASS);
1951        };
1952
1953        fn.setUtility = function () {
1954            var utility = doc.getElementById(className.utilityTemplate);
1955            var utilityClone;
1956
1957            if (utility === null) {
1958                return;
1959            }
1960
1961            utilityClone = fn.createNodeClone(utility, '.' + className.utility);
1962
1963            root.appendChild(utilityClone);
1964
1965            fn.setPagination();
1966            fn.clickPrevBtn();
1967            fn.clickNextBtn();
1968            fn.clickController();
1969        };
1970
1971        fn.setPagination = function () {
1972            var paginationList = doc.getElementById(className.paginationListTemplate);
1973            var image = root.querySelectorAll('.' + className.image);
1974            var fragment = doc.createDocumentFragment();
1975            var pagination = root.querySelector('.' + className.pagination);
1976            var paginationListClone;
1977            var srcList = [];
1978            var i;
1979            var thumbnail;
1980
1981            if (pagination === null || paginationList === null || !image.length) {
1982                return;
1983            }
1984
1985            image.forEach(function (elm) {
1986                var img;
1987                var src;
1988
1989                img = elm.querySelector('img');
1990
1991                if (img === null) {
1992                    return;
1993                }
1994
1995                src = img.getAttribute('src');
1996                srcList.push(src);
1997            });
1998
1999            for (i = 0; i < arrTargetLength[0]; i++) {
2000                paginationListClone = fn.createNodeClone(paginationList, 'li');
2001                thumbnail = paginationListClone.querySelector('img');
2002                thumbnail.setAttribute('src', srcList[i]);
2003                thumbnail.setAttribute('alt', i + 1);
2004                fragment.appendChild(paginationListClone);
2005            }
2006
2007            pagination.appendChild(fragment);
2008
2009            fn.setPaginationStyle();
2010            fn.clickPagination();
2011        };
2012
2013        fn.setPaginationStyle = function () {
2014            var pagination = root.querySelector('.' + className.pagination);
2015            var paginationBtn;
2016            var styleList = [];
2017
2018            if (pagination === null) {
2019                return;
2020            }
2021
2022            target.forEach(function (elm) {
2023                var style;
2024
2025                style = elm.style.background;
2026
2027                styleList.push(style);
2028            });
2029
2030            paginationBtn = pagination.querySelectorAll('.' + className.paginationBtn);
2031
2032            if (!paginationBtn.length) {
2033                return;
2034            }
2035
2036            paginationBtn.forEach(function (elm, idx) {
2037                elm.style.background = styleList[idx];
2038            });
2039        };
2040
2041        fn.setPaginationCurrent = function (currentNumber) {
2042            var pagination = root.querySelector('.' + className.pagination);
2043            var paginationBtn;
2044
2045            if (pagination === null) {
2046                return;
2047            }
2048
2049            currentNum = currentNumber;
2050            paginationBtn = pagination.querySelectorAll('.' + className.paginationBtn);
2051
2052            if (!paginationBtn.length) {
2053                return;
2054            }
2055
2056            paginationBtn.forEach(function (elm, idx) {
2057
2058                if (elm.classList.contains(self.CONFIG.CURRENT_CLASS)) {
2059                    currentNum = idx;
2060                }
2061
2062                elm.classList.remove(self.CONFIG.CURRENT_CLASS);
2063            });
2064
2065            paginationBtn[currentNum].classList.add(self.CONFIG.CURRENT_CLASS);
2066        };
2067
2068        fn.setAlly = function () {
2069            var $target = $('.' + className.target);
2070
2071            if (!$target.length) {
2072                return;
2073            }
2074
2075            $target.find(self.CONFIG.FOCUSABLE).attr('tabIndex', -1);
2076            $target.filter('.' + self.CONFIG.CURRENT_CLASS).find(self.CONFIG.FOCUSABLE).attr('tabIndex', 0);
2077        };
2078
2079        fn.setAutoPlay = function () {
2080            timer = setTimeout(function () {
2081                fn.slideNext();
2082                fn.setAutoPlay();
2083            }, DURATION);
2084        };
2085
2086        fn.changeSlideCurrent = function () {
2087            target.forEach(function (elm, idx) {
2088                if (idx === currentNum + 1) {
2089                    elm.classList.add(self.CONFIG.CURRENT_CLASS);
2090                } else {
2091                    elm.classList.remove(self.CONFIG.CURRENT_CLASS);
2092                }
2093            });
2094        };
2095
2096        fn.changePaginationCurrent = function () {
2097            var pagination = root.querySelector('.' + className.pagination);
2098            var paginationBtn;
2099
2100            if (pagination === null) {
2101                return;
2102            }
2103
2104            paginationBtn = pagination.querySelectorAll('.' + className.paginationBtn);
2105
2106            if (!paginationBtn.length) {
2107                return;
2108            }
2109
2110            paginationBtn.forEach(function (elm, idx) {
2111                if (idx === currentNum) {
2112                    elm.classList.add(self.CONFIG.CURRENT_CLASS);
2113                } else {
2114                    elm.classList.remove(self.CONFIG.CURRENT_CLASS);
2115                }
2116            });
2117        };
2118
2119        fn.clickPagination = function () {
2120            var pagination = root.querySelector('.' + className.pagination);
2121            var btn;
2122            var currentBtn;
2123
2124            if (pagination === null) {
2125                return;
2126            }
2127
2128            btn = pagination.querySelectorAll('.' + className.paginationBtn);
2129
2130            if (!btn.length) {
2131                return;
2132            }
2133
2134            btn.forEach(function (elm, idx) {
2135                if (isAnimate === false) {
2136                    elm.addEventListener('click', function () {
2137                        isAnimate = true;
2138
2139                        currentBtn = pagination.querySelector('.' + self.CONFIG.CURRENT_CLASS);
2140
2141                        if (currentBtn === null) {
2142                            return;
2143                        }
2144
2145                        currentBtn.classList.remove(self.CONFIG.CURRENT_CLASS);
2146                        elm.classList.add(self.CONFIG.CURRENT_CLASS);
2147                        num = idx + 1;
2148                        currentNum = idx;
2149                        fn.slide();
2150                        fn.changeSlideCurrent();
2151                        fn.setAlly();
2152                    });
2153                }
2154            });
2155        };
2156
2157        fn.clickController = function () {
2158            var utility = root.querySelector('.' + className.utility);
2159            var controller;
2160            var text;
2161            var playText;
2162            var stopText;
2163
2164            if (utility === null) {
2165                return;
2166            }
2167
2168            controller = utility.querySelector('.' + className.controller);
2169
2170            if (controller === null) {
2171                return;
2172            }
2173
2174            text = controller.querySelector('span');
2175
2176            if (text === null) {
2177                return;
2178            }
2179
2180            playText = text.dataset.playlabel;
2181            stopText = text.dataset.stoplabel;
2182
2183            if (isAutoPlay) {
2184                text.innerText = playText;
2185            } else {
2186                text.innerText = stopText;
2187            }
2188
2189            controller.addEventListener('click', function () {
2190                if (isAutoPlay) {
2191                    isAutoPlay = false;
2192                    clearTimeout(timer);
2193                    text.innerText = playText;
2194                    controller.classList.add(self.CONFIG.STOP_CLASS);
2195                } else {
2196                    isAutoPlay = true;
2197                    fn.setAutoPlay();
2198                    text.innerText = stopText;
2199                    controller.classList.remove(self.CONFIG.STOP_CLASS);
2200                }
2201            });
2202        };
2203
2204        fn.clickPrevBtn = function () {
2205            var prevBtn = root.querySelector('.' + className.prevBtn);
2206
2207            if (prevBtn === null) {
2208                return;
2209            }
2210
2211            prevBtn.addEventListener('click', function () {
2212                fn.slidePrev();
2213            });
2214        };
2215
2216        fn.clickNextBtn = function () {
2217            var nextBtn = root.querySelector('.' + className.nextBtn);
2218
2219            if (nextBtn === null) {
2220                return;
2221            }
2222
2223            nextBtn.addEventListener('click', function () {
2224                fn.slideNext();
2225            });
2226        };
2227
2228        fn.slidePrev = function () {
2229            var paginationMax = arrTargetLength[0] - 1;
2230
2231            if (isAnimate === false) {
2232                isAnimate = true;
2233
2234                if (num === 1) {
2235                    num--;
2236                    currentNum = paginationMax;
2237                }
2238                if (num !== 0) {
2239                    num--;
2240                    currentNum--;
2241                }
2242
2243                fn.slide();
2244                fn.changeSlideCurrent();
2245                fn.changePaginationCurrent();
2246            }
2247        };
2248
2249        fn.slideNext = function () {
2250            var max = targetLength - 1;
2251
2252            if (isAnimate === false) {
2253                isAnimate = true;
2254
2255                if (num === arrTargetLength[0]) {
2256                    num++;
2257                    currentNum = 0;
2258                } else if (num < max) {
2259                    num++;
2260                    currentNum++;
2261                }
2262
2263                fn.slide();
2264                fn.changeSlideCurrent();
2265                fn.changePaginationCurrent();
2266                fn.setAlly();
2267            }
2268        };
2269
2270        fn.slide = function () {
2271            var max = targetLength - 1;
2272
2273            targetOuter.style.transform = 'translate3d(-' + (targetWidth * num) + 'px ,0, 0)';
2274            targetOuter.style.transition = 'transform 1s ease 0s';
2275
2276            fn.addEventListenerOnce(targetOuter, 'transitionend', function () {
2277                isAnimate = false;
2278                targetOuter.style.transition = '';
2279
2280                if (num === max) {
2281                    targetOuter.style.transform = 'translate3d(-' + (targetWidth) + 'px ,0, 0)';
2282                    num = 1;
2283                } else if (num === 0) {
2284                    targetOuter.style.transform = 'translate3d(-' + (targetWidth * (max - 1)) + 'px ,0, 0)';
2285                    num = max - 1;
2286                }
2287
2288                if (isAutoPlay) {
2289                    clearTimeout(timer);
2290                    fn.setAutoPlay();
2291                }
2292            });
2293        };
2294
2295        fn.enterSlide = function () {
2296            var utility = root.querySelector('.' + className.utility);
2297            var controller;
2298            var text;
2299            var playText;
2300
2301            if (utility === null) {
2302                return;
2303            }
2304
2305            controller = utility.querySelector('.' + className.controller);
2306
2307            if (controller === null) {
2308                return;
2309            }
2310
2311            text = controller.querySelector('span');
2312
2313            if (text === null) {
2314                return;
2315            }
2316
2317            playText = text.dataset.playlabel;
2318
2319            if (isAutoPlay && !isEnterSlide) {
2320                isAutoPlay = false;
2321                isEnterSlide = true;
2322                clearTimeout(timer);
2323                text.innerText = playText;
2324                controller.classList.add(self.CONFIG.STOP_CLASS);
2325            }
2326        };
2327
2328        fn.leaveSlide = function () {
2329            var utility = root.querySelector('.' + className.utility);
2330            var controller;
2331            var text;
2332            var stopText;
2333
2334            if (utility === null) {
2335                return;
2336            }
2337
2338            controller = utility.querySelector('.' + className.controller);
2339
2340            if (controller === null) {
2341                return;
2342            }
2343
2344            text = controller.querySelector('span');
2345
2346            if (text === null) {
2347                return;
2348            }
2349
2350            stopText = text.dataset.stoplabel;
2351
2352            if (!isAutoPlay && isEnterSlide) {
2353                isAutoPlay = true;
2354                isEnterSlide = false;
2355                fn.setAutoPlay();
2356                text.innerText = stopText;
2357                controller.classList.remove(self.CONFIG.STOP_CLASS);
2358            }
2359        };
2360
2361        fn.swipe = function () {
2362            var startX;
2363            var startY;
2364            var moveX;
2365            var moveY;
2366            var distanceX;
2367            var distanceY;
2368            var nowPosition;
2369            var endPosition;
2370            var x;
2371            var radian;
2372            var swipeAngle;
2373
2374            target.forEach(function (elm) {
2375                elm.addEventListener('touchstart', function (e) {
2376                    arrPageX.length = 0;
2377                    arrPageY.length = 0;
2378                    startX = e.touches[0].pageX;
2379                    startY = e.touches[0].pageY;
2380                    arrPageX.push(startX);
2381                    arrPageY.push(startY);
2382                    distanceX = 0;
2383                    clearTimeout(timer);
2384                });
2385
2386                elm.addEventListener('touchmove', function (e) {
2387                    moveX = e.changedTouches[0].pageX;
2388                    moveY = e.changedTouches[0].pageY;
2389                    distanceX = moveX - arrPageX[0];
2390                    distanceY = moveY - arrPageY[0];
2391
2392                    if (distanceX === 0 && e.cancelable) {
2393                        e.preventDefault();
2394                    }
2395
2396                    if (isAnimate === true) {
2397                        return;
2398                    }
2399
2400                    radian = Math.atan2(distanceY, distanceX);
2401                    swipeAngle = Math.round(radian * 180 / Math.PI);
2402
2403                    if (swipeAngle < 0) {
2404                        swipeAngle = 360 - Math.abs(swipeAngle);
2405                    }
2406
2407                    if ((0 < swipeAngle && swipeAngle < 45) || (135 < swipeAngle && swipeAngle < 225) || (315 < swipeAngle && swipeAngle < 360)) {
2408                        if (Math.abs(distanceX) > 20) {
2409                            doc.addEventListener('touchmove', fn.scrollControl, {passive: false});
2410                        }
2411
2412                        nowPosition = targetWidth * num;
2413                        x = nowPosition + -distanceX;
2414
2415                        if (nowPosition - x < 0 && -targetWidth < nowPosition - x) {
2416                            targetOuter.style.transition = '';
2417                            targetOuter.style.transform = 'translate3d(-' + x + 'px ,0, 0)';
2418                        } else if (nowPosition - x > 0 && targetWidth > nowPosition - x) {
2419                            targetOuter.style.transition = '';
2420                            targetOuter.style.transform = 'translate3d(-' + x + 'px ,0, 0)';
2421                        }
2422                    } else {
2423                        doc.removeEventListener('touchmove', fn.scrollControl, {passive: false});
2424                    }
2425                });
2426
2427                elm.addEventListener('touchend', function (e) {
2428                    endPosition = e.changedTouches[0].pageX;
2429
2430                    if (distanceX === 0) {
2431                        return;
2432                    }
2433
2434                    if (startX !== endPosition && e.cancelable) {
2435                        e.preventDefault();
2436                    }
2437
2438                    doc.removeEventListener('touchmove', fn.scrollControl, {passive: false});
2439
2440
2441                    if (endPosition < startX) {
2442                        fn.slideNext();
2443                    } else if (endPosition > startX) {
2444                        fn.slidePrev();
2445                    }
2446                });
2447            });
2448        };
2449
2450        fn.scrollControl = function (e) {
2451            if (e.cancelable) {
2452                e.preventDefault();
2453            }
2454        };
2455
2456        fn.resizeWindow = function () {
2457            var resizeTimer = null;
2458
2459            win.addEventListener('resize', function () {
2460                clearTimeout(timer);
2461
2462                if (resizeTimer !== null) {
2463                    clearTimeout(resizeTimer);
2464                }
2465
2466                resizeTimer = setTimeout(function () {
2467                    fn.setSlideWidth();
2468                    fn.setSlideCurrent();
2469                    fn.setAlly();
2470                    fn.setPaginationCurrent();
2471
2472                    if (isAutoPlay) {
2473                        fn.setAutoPlay();
2474                    }
2475                }, 30);
2476            });
2477        };
2478
2479        fn.addMouseEnterEvent = function () {
2480            targetOuter.addEventListener('mouseenter', fn.enterSlide);
2481        };
2482
2483        fn.addMouseLeaveEvent = function () {
2484            targetOuter.addEventListener('mouseleave', fn.leaveSlide);
2485        };
2486
2487        fn.addEventListenerOnce = function (elm, type, listener) {
2488            elm.addEventListener(type, function func() {
2489                elm.removeEventListener(type, func);
2490                listener();
2491            });
2492        };
2493
2494        fn.checkSupportsTemp = function () {
2495            return 'content' in doc.createElement('template');
2496        };
2497
2498        fn.createNodeClone = function (template, selectorForIE) {
2499            if (fn.checkSupportsTemp() === true) {
2500                return doc.importNode(template.content, true);
2501            }
2502
2503            return doc.importNode(template.querySelector(selectorForIE), true);
2504        };
2505
2506        fn.init();
2507    };
2508
2509    KEYENCE.setHomeChangeCategory = function () {
2510        var self = this;
2511        var target;
2512        var trigger;
2513        var cookieValue;
2514        var isAnimate = false;
2515        var DELAY = 600;
2516        var ORIGINAL_DOMAIN = win.kpi_originalDomain;
2517        var CATEGORY_COOKIE_NAME = 'kpi_has_changeCategory';
2518        var fn = {};
2519
2520        if (!self.getElem.changeCategoryTarget.length || !self.getElem.changeCategoryTrigger.length) {
2521            return;
2522        }
2523
2524        target = self.getElem.changeCategoryTarget;
2525        trigger = self.getElem.changeCategoryTrigger;
2526        cookieValue = util.getCookie(CATEGORY_COOKIE_NAME);
2527
2528        fn.init = function () {
2529            fn.setMql();
2530        };
2531
2532        fn.setMql = function () {
2533            smallScreenMql.addListener(fn.checkBreakPoint);
2534            fn.checkBreakPoint(smallScreenMql);
2535        };
2536
2537        fn.checkBreakPoint = function () {
2538            if (smallScreenMql.matches) {
2539                fn.removeCurrentClassForTrigegr();
2540                fn.addShowClassForTarget();
2541            } else {
2542                fn.setTrigger();
2543                fn.setTarget();
2544                fn.clickTrigger();
2545            }
2546        };
2547
2548        fn.setTrigger = function () {
2549            var category;
2550
2551            if (cookieValue) {
2552                trigger.forEach(function (elm) {
2553                    category = elm.getAttribute('data-category');
2554
2555                    if (category === cookieValue) {
2556                        elm.classList.add(self.CONFIG.CURRENT_CLASS);
2557                    }
2558                });
2559            } else {
2560                trigger[0].classList.add(self.CONFIG.CURRENT_CLASS);
2561            }
2562        };
2563
2564        fn.setTarget = function () {
2565            var category;
2566
2567            target.forEach(function (elm) {
2568                category = elm.getAttribute('data-category');
2569
2570                if (cookieValue) {
2571                    if (cookieValue === 'all') {
2572                        elm.classList.add(self.CONFIG.SHOW_CLASS);
2573                    } else {
2574                        if (category === cookieValue) {
2575                            elm.classList.add(self.CONFIG.SHOW_CLASS);
2576                        } else {
2577                            elm.style.display = 'none';
2578                            elm.classList.add(self.CONFIG.HIDE_CLASS);
2579                            elm.classList.remove(self.CONFIG.SHOW_CLASS);
2580                        }
2581                    }
2582                } else {
2583                    elm.classList.add(self.CONFIG.SHOW_CLASS);
2584                }
2585            });
2586        };
2587
2588        fn.clickTrigger = function () {
2589            var category;
2590
2591            trigger.forEach(function (elm) {
2592                elm.addEventListener('click', function () {
2593                    if (isAnimate === false) {
2594                        isAnimate = true;
2595                        fn.removeCurrentClassForTrigegr();
2596                        elm.classList.add(self.CONFIG.CURRENT_CLASS);
2597                        category = elm.getAttribute('data-category');
2598                        cookieValue = category;
2599                        util.setCookie(CATEGORY_COOKIE_NAME, cookieValue);
2600                        fn.changeCategory(category);
2601                    }
2602                });
2603            });
2604        };
2605
2606        fn.changeCategory = function (category) {
2607            var targetCategory;
2608
2609            target = doc.querySelectorAll('.js-setChangeCategory-target');
2610
2611            if (!target.length) {
2612                return;
2613            }
2614
2615            if (category === 'all') {
2616                fn.addHideClassForTarget();
2617
2618                setTimeout(function () {
2619                    fn.addShowClassForTarget();
2620                }, DELAY);
2621            } else {
2622                target.forEach(function (elm) {
2623                    targetCategory = elm.getAttribute('data-category');
2624                    elm.classList.add(self.CONFIG.HIDE_CLASS);
2625                    elm.classList.remove(self.CONFIG.SHOW_CLASS);
2626                    elm.addEventListener('animationend', function () {
2627                        isAnimate = false;
2628                        if (elm.classList.contains(self.CONFIG.HIDE_CLASS)) {
2629                            elm.style.display = 'none';
2630                        }
2631                    });
2632
2633                    if (category === targetCategory) {
2634                        setTimeout(function () {
2635                            if (elm.classList.contains(self.CONFIG.HIDE_CLASS)) {
2636                                elm.style.display = 'flex';
2637                            }
2638                            elm.classList.remove(self.CONFIG.HIDE_CLASS);
2639                            elm.classList.add(self.CONFIG.SHOW_CLASS);
2640
2641                            elm.addEventListener('animationend', function () {
2642                                isAnimate = false;
2643                            });
2644                        }, DELAY);
2645                    }
2646                });
2647            }
2648        };
2649
2650        fn.removeCurrentClassForTrigegr = function () {
2651            trigger = doc.querySelectorAll('.js-setChangeCategory-trigger');
2652
2653            if (!trigger.length) {
2654                return;
2655            }
2656
2657            trigger.forEach(function (elm) {
2658                elm.classList.remove(self.CONFIG.CURRENT_CLASS);
2659            });
2660        };
2661
2662        fn.addShowClassForTarget = function () {
2663            target.forEach(function (elm) {
2664                elm.classList.remove(self.CONFIG.HIDE_CLASS);
2665                elm.classList.add(self.CONFIG.SHOW_CLASS);
2666                if (elm.classList.contains(self.CONFIG.SHOW_CLASS)) {
2667                    elm.style.display = 'flex';
2668                }
2669                elm.addEventListener('animationend', function () {
2670                    isAnimate = false;
2671                });
2672            });
2673        };
2674
2675        fn.addHideClassForTarget = function () {
2676            target.forEach(function (elm) {
2677                elm.classList.remove(self.CONFIG.SHOW_CLASS);
2678                elm.classList.add(self.CONFIG.HIDE_CLASS);
2679            });
2680        };
2681
2682        fn.init();
2683    };
2684
2685    KEYENCE.setToggleCart = function () {
2686        var self = this;
2687        var fn = {};
2688        var className = {
2689            toggle: 'js-toggleCart',
2690            toggleItem: 'js-toggleCart-item',
2691            toggleHook: 'js-toggleCart-hook',
2692            toggleContent: 'js-toggleCart-content',
2693            toggleState: 'js-toggleCart-state',
2694            totalizer: 'totalizer',
2695            totalizerTxt: 'totalizer-text',
2696            class: {
2697                isHide: 'is-hide'
2698            }
2699        };
2700        var elm = {};
2701
2702        if (self.getElem.toggleCart === null) {
2703            return;
2704        }
2705
2706        elm.$root = $('.' + className.toggle);
2707        elm.$toggleItem = elm.$root.find('.' + className.toggleItem);
2708        elm.$toggleHook = elm.$root.find('.' + className.toggleHook);
2709        elm.$toggleContent = elm.$root.find('.' + className.toggleContent);
2710        elm.$totalizer = elm.$root.find('.' + className.totalizer);
2711
2712        fn.init = function () {
2713            fn.setMql();
2714        };
2715
2716        fn.setMql = function () {
2717            function checkBp(mq) {
2718                if (mq.matches) {
2719                    fn.set();
2720                    fn.openContent();
2721                } else {
2722                    fn.unSet();
2723                }
2724            }
2725
2726            smallScreenMql.addListener(checkBp);
2727            checkBp(smallScreenMql);
2728        };
2729
2730        fn.set = function () {
2731            var i;
2732            var $totalizerTxt;
2733            var text = '';
2734
2735            $totalizerTxt = elm.$totalizer.find('.' + className.totalizerTxt);
2736            elm.$toggleItem.prepend('<button type="button" class="' + className.toggleHook + '">');
2737            elm.$toggleHook = elm.$root.find('.' + className.toggleHook);
2738
2739            for (i = 0; i < $totalizerTxt.length; i++) {
2740                if (i !== 0) {
2741                    text += ' ' + $totalizerTxt.eq(i).html();
2742                } else {
2743                    text += $totalizerTxt.eq(i).html();
2744                }
2745            }
2746
2747            elm.$toggleHook.append(text);
2748            elm.$toggleItem.attr('aria-expanded', false);
2749            elm.$toggleContent.attr('aria-hidden', true);
2750        };
2751
2752        fn.unSet = function () {
2753            if (elm.$toggleHook.length) {
2754                elm.$toggleHook.remove();
2755                elm.$toggleItem.removeAttr('aria-expanded');
2756                elm.$toggleContent.removeAttr('aria-hidden');
2757            }
2758        };
2759
2760        fn.openContent = function () {
2761            elm.$toggleHook.on('click', function () {
2762                var $this = $(this);
2763                var $thisItem = $this.closest('.' + className.toggleItem);
2764                var $thisItemContent = $thisItem.find('.' + className.toggleContent);
2765
2766                if ($thisItem.attr('aria-expanded') === 'false') {
2767                    $thisItem.attr('aria-expanded', true);
2768                    $thisItemContent.attr('aria-hidden', false);
2769                } else {
2770                    $thisItem.attr('aria-expanded', false);
2771                    $thisItemContent.attr('aria-hidden', true);
2772                }
2773            });
2774        };
2775
2776        fn.init();
2777    };
2778
2779    KEYENCE.setRichSurvey = function () {
2780        var self = this;
2781        var classNames = {
2782            content: 'js-setRichSurvey-content',
2783            targetParent: 'js-setRichSurvey-targetParent',
2784            target: 'js-setRichSurvey-target',
2785            utility: 'js-setRichSurvey-utility',
2786            prevButton: 'js-setRichSurvey-prevButton',
2787            nextButton: 'js-setRichSurvey-nextButton',
2788            progress: 'js-setRichSurvey-progress',
2789            progressBar: 'js-setRichSurvey-progressBar',
2790            progressText: 'js-setRichSurvey-progressText',
2791            video: 'js-setRichSurvey-video',
2792            videoJsOuter: 'js-setRichSurvey-videoJsOuter',
2793            videoJs: 'video-js',
2794            videoJsScript: 'js-setRichSurvey-videoJsScript',
2795            form: 'LoginForm',
2796            titleAndText: 'TitleAndText',
2797            isCurrent: 'is-current',
2798            isHide: 'is-hide',
2799            isHideForToggleDisplay: 'IsHide',
2800            isInitialized: 'is-initialized',
2801            isRequired: 'IsRequired',
2802            isAutoplay: 'is-autoplay'
2803        };
2804        var idNames = {
2805            utilityTemplate: 'js-setRichSurvey-utilityTemplate',
2806            multiStepFormSignin: win.MultiStepForm.SignIn.idNames.signinForm,
2807            multiStepFormRegistration: win.MultiStepForm.Register.idNames.regForm
2808        };
2809        var root = null;
2810        var targetParent = null;
2811        var target = null;
2812        var currentTarget = null;
2813        var prevButton = null;
2814        var nextButton = null;
2815        var progress = null;
2816        var progressBar = null;
2817        var progressText = null;
2818        var form = null;
2819        var multiStepFormSignin = null;
2820        var multiStepFormRegistration = null;
2821        var targetLength = 0;
2822        var rootPosition = 0;
2823        var rootTopPosition = 0;
2824        var scrollAmount = 0;
2825        var num = 0;
2826        var ratio = 0;
2827        var resizeTimer = null;
2828        var enqueteData = win.enqueteData || {};
2829        var isSlide = false;
2830        var fn = {};
2831        var videoJsOuter = null;
2832        var brightcoveSettings = win.brightcove_settings ? win.brightcove_settings : null;
2833        var brightcoveId = brightcoveSettings && brightcoveSettings.brightcoveId ? brightcoveSettings.brightcoveId : null;
2834        var brightcovePlayer = brightcoveSettings && brightcoveSettings.brightcovePlayer ? brightcoveSettings.brightcovePlayer : null;
2835        var PLAYER_DATA = {
2836            ACCOUNT_ID: brightcoveId,
2837            PLAYER_ID: brightcovePlayer
2838        };
2839
2840        root = self.getElem.richSurvey;
2841
2842        if (root === null) {
2843            return;
2844        }
2845
2846        fn.init = function () {
2847            fn.setUtility();
2848            fn.setElement();
2849            fn.setSlide();
2850        };
2851
2852        fn.setUtility = function () {
2853            var utility = doc.getElementById(idNames.utilityTemplate);
2854            var utilityClone = null;
2855
2856            if (utility === null) {
2857                return;
2858            }
2859
2860            utilityClone = fn.createNodeClone(utility, '.' + classNames.utility);
2861
2862            if (utilityClone === null) {
2863                return;
2864            }
2865
2866            root.appendChild(utilityClone);
2867        };
2868
2869        fn.setElement = function () {
2870            targetParent = root.querySelector('.' + classNames.targetParent);
2871
2872            if (targetParent === null) {
2873                return;
2874            }
2875
2876            target = targetParent.querySelectorAll('.' + classNames.target);
2877
2878            if (!target.length) {
2879                return;
2880            }
2881
2882            prevButton = root.querySelector('.' + classNames.prevButton);
2883            nextButton = root.querySelector('.' + classNames.nextButton);
2884            progress = root.querySelector('.' + classNames.progress);
2885            progressBar = root.querySelector('.' + classNames.progressBar);
2886            progressText = root.querySelector('.' + classNames.progressText);
2887            videoJsOuter = root.querySelectorAll('.' + classNames.videoJsOuter);
2888            form = doc.getElementById(classNames.form);
2889            multiStepFormSignin = doc.getElementById(idNames.multiStepFormSignin);
2890            multiStepFormRegistration = doc.getElementById(idNames.multiStepFormRegistration);
2891        };
2892
2893        fn.setSlide = function () {
2894            root.classList.add(classNames.isInitialized);
2895            fn.runWhenFormShow();
2896            fn.changeCurrentClass();
2897            fn.changeTabIndex();
2898            fn.changeProgressDisplay();
2899            fn.changeButtonDisplay();
2900            fn.changeProgressBar();
2901            fn.changeFormDisplay();
2902            fn.setEnquete();
2903            fn.setVideoJs();
2904            fn.observeAttrforRequiredInput(fn.getRequiredItem());
2905            fn.addResizeEvent();
2906            fn.clickPrevButton();
2907            fn.clickNextButton();
2908        };
2909
2910        fn.clickPrevButton = function () {
2911            if (prevButton === null) {
2912                return;
2913            }
2914
2915            prevButton.addEventListener('click', fn.slidePrev, false);
2916        };
2917
2918        fn.clickNextButton = function () {
2919            if (nextButton === null) {
2920                return;
2921            }
2922
2923            nextButton.addEventListener('click', fn.slideNext, false);
2924        };
2925
2926        fn.slidePrev = function () {
2927            if (isSlide) {
2928                return;
2929            }
2930
2931            do {
2932                num--;
2933            } while (target[num].classList.contains(classNames.isHideForToggleDisplay));
2934
2935            if (num < 0) {
2936                num = 0;
2937
2938                return;
2939            }
2940
2941            fn.getPosition();
2942            fn.changePosition();
2943            fn.slide();
2944        };
2945
2946        fn.slideNext = function () {
2947            targetLength = target.length;
2948
2949            if (isSlide) {
2950                return;
2951            }
2952
2953            do {
2954                num++;
2955            } while (target[num].classList.contains(classNames.isHideForToggleDisplay));
2956
2957            if (num >= targetLength) {
2958                num = targetLength - 1;
2959
2960                return;
2961            }
2962
2963            fn.getPosition();
2964            fn.changePosition();
2965            fn.slide();
2966        };
2967
2968        fn.slide = function () {
2969            isSlide = true;
2970
2971            fn.changeCurrentClass();
2972            fn.changeTabIndex();
2973            fn.changeProgressBar();
2974            fn.changeButtonDisplay();
2975            fn.changeProgressDisplay();
2976            fn.changeFormDisplay();
2977            fn.setEnquete();
2978            fn.setVideoJs();
2979            fn.ctrlVideo();
2980            fn.changeFocus();
2981        };
2982
2983        fn.changeCurrentClass = function () {
2984            target.forEach(function (elm) {
2985                fn.removeCurrentClass(elm);
2986            });
2987
2988            fn.addCurrentClass(target[num]);
2989        };
2990
2991        fn.changeTabIndex = function () {
2992            var focusable = null;
2993
2994            target.forEach(function (elm) {
2995                focusable = elm.querySelectorAll(self.CONFIG.FOCUSABLE);
2996
2997                if (focusable.length) {
2998                    if (elm.classList.contains(classNames.isCurrent)) {
2999                        focusable.forEach(function (item) {
3000                            item.tabIndex = 0;
3001                        });
3002                    } else {
3003                        focusable.forEach(function (item) {
3004                            item.tabIndex = -1;
3005                        });
3006                    }
3007                }
3008            });
3009        };
3010
3011        fn.preventSubmit = function () {
3012            var focusable = null;
3013            var focusableForm = 'input, button, select, option, textarea, output';
3014
3015            currentTarget = targetParent.querySelector('.' + classNames.isCurrent);
3016
3017            if (currentTarget === null) {
3018                return;
3019            }
3020
3021            focusable = currentTarget.querySelectorAll(focusableForm);
3022
3023            if (!focusable.length) {
3024                return;
3025            }
3026
3027            focusable.forEach(function (elm) {
3028                elm.addEventListener('keydown', fn.handlers.keyDown, false);
3029            });
3030        };
3031
3032        fn.changeFocus = function () {
3033            fn.addEventListenerOnce(targetParent, 'transitionend', function () {
3034                isSlide = false;
3035
3036                target.forEach(function (elm) {
3037                    if (elm.classList.contains(classNames.isCurrent)) {
3038                        elm.tabIndex = -1;
3039                        elm.focus();
3040                    } else {
3041                        elm.removeAttribute('tabIndex');
3042                    }
3043                });
3044            });
3045        };
3046
3047        fn.addCurrentClass = function (elm) {
3048            elm.classList.add(classNames.isCurrent);
3049        };
3050
3051        fn.removeCurrentClass = function (elm) {
3052            elm.classList.remove(classNames.isCurrent);
3053        };
3054
3055        fn.getNotHideTarget = function () {
3056            var notHideTarget = [];
3057
3058            if (targetParent !== null) {
3059                target = targetParent.querySelectorAll('.' + classNames.target);
3060            }
3061
3062
3063            if (target.length) {
3064                target.forEach(function (elm) {
3065                    if (!elm.classList.contains('IsHide')) {
3066                        notHideTarget.push(elm);
3067                    }
3068                });
3069            }
3070
3071            return notHideTarget;
3072        };
3073
3074        fn.changeProgressBar = function () {
3075            ratio = (num * 100) / (targetLength - 1);
3076
3077            ratio = Math.floor(ratio);
3078
3079            if (progressText === null) {
3080                return;
3081            }
3082
3083            progressText.innerText = ratio + '%';
3084
3085            if (progressBar === null) {
3086                return;
3087            }
3088
3089            progressBar.style.width = ratio + '%';
3090        };
3091
3092        fn.changeButtonDisplay = function () {
3093            if (prevButton === null || nextButton === null) {
3094                return;
3095            }
3096
3097            if (num === 0) {
3098                fn.addHideClass(prevButton);
3099                fn.removeHideClass(nextButton);
3100            } else if (num === targetLength - 1) {
3101                fn.addHideClass(nextButton);
3102                fn.removeHideClass(prevButton);
3103            } else {
3104                fn.removeHideClass(nextButton);
3105                fn.removeHideClass(prevButton);
3106            }
3107        };
3108
3109        fn.changeProgressDisplay = function () {
3110            if (progress === null) {
3111                return;
3112            }
3113
3114            if (num === targetLength - 1) {
3115                fn.addHideClass(progress);
3116            } else {
3117                fn.removeHideClass(progress);
3118            }
3119        };
3120
3121        fn.changeFormDisplay = function () {
3122            if (form === null) {
3123                return;
3124            }
3125
3126            if (num === targetLength - 1) {
3127                fn.removeHideClass(form);
3128            } else {
3129                fn.addHideClass(form);
3130            }
3131        };
3132
3133        fn.getPosition = function () {
3134            rootTopPosition = root.getBoundingClientRect().top;
3135        };
3136
3137        fn.changePosition = function () {
3138            scrollAmount = win.pageYOffset;
3139            rootPosition = rootTopPosition + scrollAmount;
3140
3141            win.scrollTo(0, rootPosition - 30);
3142        };
3143
3144        fn.addHideClass = function (elm) {
3145            elm.classList.add(classNames.isHide);
3146        };
3147
3148        fn.removeHideClass = function (elm) {
3149            elm.classList.remove(classNames.isHide);
3150        };
3151
3152        fn.destroySize = function () {
3153            targetParent.style.width = '';
3154            targetParent.style.height = '';
3155
3156            target.forEach(function (elm) {
3157                elm.style.width = '';
3158            });
3159        };
3160
3161        fn.addResizeEvent = function () {
3162            win.addEventListener('resize', fn.handlers.resize, false);
3163        };
3164
3165        fn.setEnquete = function () {
3166            fn.preventSubmit();
3167            fn.validateForm(fn.getRequiredItem());
3168            fn.addChangeEvent();
3169            fn.observeClassforTitleAndText();
3170        };
3171
3172        fn.getRequiredItem = function () {
3173            var requiredData = fn.rebuildRequiredData(enqueteData.required);
3174            var requiredItem = null;
3175
3176            currentTarget = targetParent.querySelector('.' + classNames.isCurrent);
3177
3178            if (currentTarget !== null) {
3179                if (requiredData.length) {
3180                    requiredItem = currentTarget.querySelectorAll(requiredData);
3181                } else {
3182                    requiredItem = [];
3183                }
3184            }
3185
3186            return requiredItem;
3187        };
3188
3189        fn.rebuildRequiredData = function (data) {
3190            var i;
3191            var len = data.length;
3192            var list = [];
3193
3194            for (i = 0; i < len; i++) {
3195                list.push(data[i].name);
3196            }
3197
3198            list = fn.supplementItemList(list);
3199
3200            return list;
3201        };
3202
3203        fn.supplementItemList = function (list) {
3204            var requiredInput = null;
3205
3206            currentTarget = targetParent.querySelector('.' + classNames.isCurrent);
3207
3208            if (currentTarget !== null) {
3209                requiredInput = currentTarget.querySelectorAll('.' + classNames.isRequired);
3210
3211                if (requiredInput.length) {
3212                    requiredInput.forEach(function (elm) {
3213                        list.push("[name='" + elm.getAttribute('name') + "']");
3214                    });
3215                }
3216            }
3217
3218            return list;
3219        };
3220
3221        fn.validateForm = function (requiredList) {
3222            var isEntered = false;
3223            var isInputted = false;
3224            var inputList = [];
3225            var requiredInputList = [];
3226
3227            if (!requiredList.length) {
3228                isEntered = true;
3229            } else {
3230                requiredList.forEach(function (elm) {
3231                    if (elm.type === 'checkbox' || elm.type === 'radio') {
3232                        isEntered = isEntered || elm.checked;
3233                    } else if (!elm.classList.contains(classNames.isRequired)) {
3234                        inputList.push(elm);
3235                    } else if (elm.classList.contains(classNames.isRequired) && !elm.disabled) {
3236                        requiredInputList.push(elm);
3237                    }
3238                });
3239            }
3240
3241            if (inputList.length) {
3242                isInputted = inputList.every(function (elm) {
3243                    return elm.value !== null && elm.value.trim() !== '';
3244                });
3245
3246                if (isInputted) {
3247                    isEntered = true;
3248                } else {
3249                    isEntered = false;
3250                }
3251            }
3252
3253            if (requiredInputList.length) {
3254                requiredInputList.forEach(function (elm) {
3255                    if (elm.value.trim() === '') {
3256                        isEntered = false;
3257                    }
3258                });
3259            }
3260
3261            if (isEntered) {
3262                fn.enableButton();
3263            } else {
3264                fn.disableButton();
3265            }
3266        };
3267
3268        fn.observeAttrforRequiredInput = function (requiredList) {
3269            var obs;
3270            var config = {attributes: true};
3271
3272            requiredList.forEach(function (elm) {
3273                if ((elm.tagName === 'TEXTAREA' || elm.getAttribute('type') === 'text') && elm.classList.contains(classNames.isRequired)) {
3274                    obs = new MutationObserver(function () {
3275                        fn.validateForm(fn.getRequiredItem());
3276                    });
3277
3278                    obs.observe(elm, config);
3279                }
3280            });
3281        };
3282
3283        fn.observeClassforTitleAndText = function () {
3284            var obs;
3285            var config = {attributes: true};
3286            var titleAndText = root.querySelectorAll('.' + classNames.titleAndText);
3287
3288            if (!titleAndText.length) {
3289                return;
3290            }
3291
3292            titleAndText.forEach(function (elm) {
3293                obs = new MutationObserver(function () {
3294                    fn.toggleDisplayForTarget(elm);
3295                });
3296
3297                obs.observe(elm, config);
3298            });
3299        };
3300
3301        fn.toggleDisplayForTarget = function (elm) {
3302            var parentTarget;
3303
3304            if (!elm) {
3305                return;
3306            }
3307
3308            parentTarget = elm.closest('.' + classNames.target);
3309
3310            if (parentTarget && !fn.hasChildQuestion(parentTarget)) {
3311                if (elm.classList.contains(classNames.isHideForToggleDisplay)) {
3312                    fn.addHideClassforTitleAndTextParent(parentTarget);
3313                } else {
3314                    fn.removeHideClassforTitleAndTextParent(parentTarget);
3315                }
3316            }
3317        };
3318
3319        fn.hasChildQuestion = function (elm) {
3320            if (elm && elm.querySelectorAll('.EnqTitle02').length) {
3321                return true;
3322            }
3323
3324            return false;
3325        };
3326
3327        fn.addHideClassforTitleAndTextParent = function (elm) {
3328            if (elm) {
3329                elm.classList.add(classNames.isHideForToggleDisplay);
3330            }
3331        };
3332
3333        fn.removeHideClassforTitleAndTextParent = function (elm) {
3334            if (elm) {
3335                elm.classList.remove(classNames.isHideForToggleDisplay);
3336            }
3337        };
3338
3339        fn.enableButton = function () {
3340            if (nextButton === null) {
3341                return;
3342            }
3343
3344            nextButton.removeAttribute('disabled');
3345        };
3346
3347        fn.disableButton = function () {
3348            if (nextButton === null) {
3349                return;
3350            }
3351
3352            nextButton.setAttribute('disabled', true);
3353        };
3354
3355        fn.addChangeEvent = function () {
3356            var requiredList = fn.getRequiredItem();
3357
3358            requiredList.forEach(function (elm) {
3359                if (elm.tagName === 'TEXTAREA' || elm.getAttribute('type') === 'text') {
3360                    elm.addEventListener('input', fn.handlers.input);
3361                } else {
3362                    elm.addEventListener('change', fn.handlers.change);
3363                }
3364            });
3365        };
3366
3367        fn.runWhenFormShow = function () {
3368            if (multiStepFormSignin === null || multiStepFormRegistration === null) {
3369                return;
3370            }
3371
3372            if (!multiStepFormSignin.classList.contains(classNames.isHide) || !multiStepFormRegistration.classList.contains(classNames.isHide)) {
3373                targetLength = target.length;
3374
3375                if (targetLength) {
3376                    target.forEach(function (elm) {
3377                        fn.removeCurrentClass(elm);
3378                    });
3379
3380                    num = targetLength - 1;
3381                    fn.addCurrentClass(target[targetLength - 1]);
3382                }
3383            }
3384        };
3385
3386        fn.ctrlVideo = function () {
3387            var videos;
3388            var data;
3389
3390            if (targetParent) {
3391                videos = targetParent.querySelectorAll('.' + classNames.video);
3392            }
3393
3394            if (videos.length) {
3395                videos.forEach(function (elm) {
3396                    data = elm.dataset.video;
3397
3398                    if (data) {
3399                        if (fn.checkVideoJs()) {
3400                            fn.stopVideoJs(Number(data) - 1);
3401                        } else {
3402                            fn.stopVideo(Number(data) - 1);
3403                        }
3404                    }
3405                });
3406            }
3407
3408            if (root.classList.contains(classNames.isAutoplay)) {
3409                fn.startCurrentVideo();
3410            }
3411        };
3412
3413        fn.startCurrentVideo = function () {
3414            var currentVideo = null;
3415
3416            if (targetParent) {
3417                target = targetParent.querySelectorAll('.' + classNames.target);
3418            }
3419
3420            if (!target.length) {
3421                return;
3422            }
3423
3424            target.forEach(function (elm) {
3425                if (elm.classList.contains(classNames.isCurrent)) {
3426                    currentVideo = elm.querySelector('.' + classNames.video);
3427
3428                    if (currentVideo) {
3429                        if (fn.checkVideoJs()) {
3430                            fn.startVideoJs(currentVideo.dataset.video);
3431                        } else {
3432                            fn.startVideo(currentVideo.dataset.video);
3433                        }
3434                    }
3435                }
3436            });
3437        };
3438
3439        fn.startVideo = function (idx) {
3440            if (!fn.checkVideoList()) {
3441                return;
3442            }
3443
3444            if (fn.getState(win.surveyVideoPlayers[idx - 1]) !== 'complete') {
3445                win.surveyVideoPlayers[idx - 1].accessor.play();
3446            }
3447        };
3448
3449        fn.stopVideo = function (idx) {
3450            if (!fn.checkVideoList()) {
3451                return;
3452            }
3453
3454            win.surveyVideoPlayers[idx].accessor.pause();
3455        };
3456
3457        fn.getState = function (player) {
3458            var stete;
3459
3460            if (player) {
3461                stete = player.accessor.state;
3462            }
3463
3464            return stete;
3465        };
3466
3467        fn.checkVideoList = function () {
3468            var result = false;
3469
3470            if (typeof win.surveyVideoPlayers === 'undefined' || !win.surveyVideoPlayers.length) {
3471                result = false;
3472            } else {
3473                result = true;
3474            }
3475
3476            return result;
3477        };
3478
3479        fn.setVideoJs = function () {
3480            if (!target.length) {
3481                return;
3482            }
3483
3484            target.forEach(function (elm) {
3485                var videoOuter;
3486                var videoJs;
3487                var videoJsAttr = {};
3488                var video;
3489
3490                if (elm.classList.contains(classNames.isCurrent)) {
3491                    videoOuter = elm.querySelector('.' + classNames.videoJsOuter);
3492
3493                    if (videoOuter) {
3494                        videoJs = videoOuter.querySelector('.' + classNames.videoJs);
3495
3496                        if (!videoJs) {
3497                            videoJsAttr.id = videoOuter.dataset.videoJsId;
3498                            videoJsAttr.accountId = PLAYER_DATA.ACCOUNT_ID ? PLAYER_DATA.ACCOUNT_ID : videoOuter.dataset.videoJsAccount;
3499                            videoJsAttr.player = PLAYER_DATA.PLAYER_ID ? PLAYER_DATA.PLAYER_ID : videoOuter.dataset.videoJsPlayer;
3500                            videoJsAttr.embed = videoOuter.dataset.videoJsEmbed;
3501                            videoJsAttr.videoId = videoOuter.dataset.videoJsVideoId;
3502                            videoJsAttr.class = videoOuter.dataset.videoJsClass;
3503                            videoJsAttr.attr = videoOuter.dataset.videoJsVideoAttr;
3504
3505                            video = fn.createVideoJs(videoJsAttr);
3506
3507                            videoOuter.appendChild(video);
3508                            fn.setVideoJsScript(videoJsAttr.accountId, videoJsAttr.player);
3509                        }
3510                    }
3511                }
3512            });
3513        };
3514
3515        fn.createVideoJs = function (videoJsAttr) {
3516            var videoJs = doc.createElement('video-js');
3517            var key;
3518            var videoAttr;
3519
3520            videoJs.id = videoJsAttr.id ? videoJsAttr.id : '';
3521            videoJs.dataset.account = videoJsAttr.accountId ? videoJsAttr.accountId : '';
3522            videoJs.dataset.player = videoJsAttr.player ? videoJsAttr.player : '';
3523            videoJs.dataset.embed = videoJsAttr.embed ? videoJsAttr.embed : '';
3524            videoJs.dataset.videoId = videoJsAttr.videoId ? videoJsAttr.videoId : '';
3525
3526            if (videoJsAttr.class) {
3527                videoJs.classList.add(videoJsAttr.class);
3528            }
3529
3530            videoAttr = JSON.parse(videoJsAttr.attr);
3531
3532            if (typeof videoAttr !== 'undefined') {
3533                for (key in videoAttr) {
3534                    if (videoAttr.hasOwnProperty(key) && videoAttr[key]) {
3535                        if (videoAttr[key] === 'false') {
3536                            continue;
3537                        }
3538
3539                        if (videoAttr[key] === 'true') {
3540                            videoJs.setAttribute(key, Boolean(videoAttr[key]));
3541                        } else {
3542                            videoJs.setAttribute(key, videoAttr[key]);
3543                        }
3544                    }
3545                }
3546            }
3547
3548            return videoJs;
3549        };
3550
3551        fn.setVideoJsScript = function (accountId, player) {
3552            var bcScript = doc.querySelector('.' + classNames.videoJsScript);
3553            var script = doc.createElement('script');
3554            var src = 'https://players.brightcove.net/' + accountId + '/' + player + '_default/index.min.js';
3555
3556            script.classList.add(classNames.videoJsScript);
3557            script.src = src;
3558
3559            if (bcScript) {
3560                bcScript.parentNode.removeChild(bcScript);
3561            }
3562
3563            doc.body.appendChild(script);
3564        };
3565
3566        fn.startVideoJs = function (idx) {
3567            var bcScript;
3568            var videoJs;
3569            var id;
3570
3571            if (fn.checkVideoJs()) {
3572                videoJs = videoJsOuter[idx - 1].querySelector(classNames.videoJs);
3573                id = videoJs ? videoJs.id : null;
3574                bcScript = doc.querySelector('.' + classNames.videoJsScript);
3575
3576                if (win.videojs && win.videojs.players.hasOwnProperty(id)) {
3577                    win.videojs.getPlayer(id).play();
3578                } else {
3579                    if (bcScript) {
3580                        bcScript.addEventListener('load', function () {
3581                            if (win.videojs && win.videojs.players.hasOwnProperty(id)) {
3582                                win.videojs.getPlayer(id).play();
3583                            }
3584                        });
3585                    }
3586                }
3587            }
3588        };
3589
3590        fn.stopVideoJs = function (idx) {
3591            var bcScript;
3592            var videoJs;
3593            var id;
3594
3595            if (fn.checkVideoJs()) {
3596                videoJs = videoJsOuter[idx].querySelector(classNames.videoJs);
3597                id = videoJs ? videoJs.id : null;
3598                bcScript = doc.querySelector('.' + classNames.videoJsScript);
3599
3600                if (win.videojs && win.videojs.players.hasOwnProperty(id)) {
3601                    win.videojs.getPlayer(id).pause();
3602                } else {
3603                    if (bcScript) {
3604                        bcScript.addEventListener('load', function () {
3605                            if (win.videojs && win.videojs.players.hasOwnProperty(id)) {
3606                                win.videojs.getPlayer(id).pause();
3607                            }
3608                        });
3609                    }
3610                }
3611            }
3612        };
3613
3614        fn.checkVideoJs = function () {
3615            var result;
3616
3617            if (!videoJsOuter.length) {
3618                result = false;
3619            } else {
3620                result = true;
3621            }
3622
3623            return result;
3624        };
3625
3626        fn.addEventListenerOnce = function (elm, type, listener) {
3627            elm.addEventListener(type, function func() {
3628                elm.removeEventListener(type, func);
3629                listener();
3630            });
3631        };
3632
3633        fn.checkSupportsTemp = function () {
3634            return 'content' in doc.createElement('template');
3635        };
3636
3637        fn.createNodeClone = function (template, selectorForIE) {
3638            if (fn.checkSupportsTemp() === true) {
3639                return doc.importNode(template.content, true);
3640            }
3641
3642            return doc.importNode(template.querySelector(selectorForIE), true);
3643        };
3644
3645        fn.handlers = {
3646            change: function () {
3647                fn.validateForm(fn.getRequiredItem());
3648            },
3649            input: function () {
3650                fn.validateForm(fn.getRequiredItem());
3651            },
3652            resize: function () {
3653                if (resizeTimer !== null) {
3654                    clearTimeout(resizeTimer);
3655                }
3656
3657                resizeTimer = setTimeout(function () {
3658                    fn.destroySize();
3659                    fn.getPosition();
3660                }, 50);
3661            },
3662            keyDown: function (e) {
3663                if (e.key === 'Enter') {
3664                    e.preventDefault();
3665                }
3666            }
3667        };
3668
3669        fn.init();
3670    };
3671
3672    KEYENCE.setStepRegistrationForm = function () {
3673        var fn = {}; // namespace
3674
3675        var idNames = {
3676            regArea: 'suz_regArea',
3677            regForm: 'suz_registrationForm'
3678        };
3679
3680        var classNames = {
3681            hiddenForm: 'js-hiddenFormItem',
3682            isHide: 'is-hide',
3683            preForm: 'js-preInput',
3684            isPreInputCompleted: 'is-preInput-completed',
3685            isError: 'is-error',
3686            btnContinue: 'js-formContinue',
3687            btnSubmit: 'js-formSubmit',
3688            errorMsg: 'suz_errorMsg'
3689        };
3690
3691        var formElementSelector = 'input, textarea, select';
3692
3693        var elements = {
3694            $regArea: $('#' + idNames.regArea),
3695            $btnContinue: $('.' + classNames.btnContinue, '#' + idNames.regForm)
3696        };
3697
3698        fn.init = function () {
3699            var $regArea = elements.$regArea;
3700            var $btnContinue = elements.$btnContinue;
3701
3702            if (!$regArea.length || !$btnContinue.length) {
3703                return;
3704            }
3705
3706            if (fn.isPreInputCompleted()) {
3707                fn.enableFullForm();
3708
3709                return;
3710            }
3711
3712            fn.bindClickContinue();
3713
3714            fn.deployObserver(function () {
3715                if (fn.isPreInputCompleted()) {
3716                    fn.enableFullForm();
3717                }
3718            });
3719        };
3720
3721        fn.existsElem = function ($element) {
3722            if ($element && $element.length) {
3723                return true;
3724            }
3725
3726            return false;
3727        };
3728
3729        fn.show = function ($item) {
3730            if (fn.existsElem($item)) {
3731                $item.removeClass(classNames.isHide);
3732            }
3733        };
3734
3735        fn.showAll = function ($items, needFocus) {
3736            if (!fn.existsElem($items)) {
3737                return;
3738            }
3739
3740            $items.each(function (index) {
3741                var $this = $(this);
3742                var $formElement;
3743
3744                fn.show($this);
3745
3746                if (needFocus && index === 0) {
3747                    $formElement = $this.find(formElementSelector);
3748
3749                    if (!$formElement.length) {
3750                        return;
3751                    }
3752
3753                    if (fn.existsElem($formElement)) {
3754                        $formElement[0].focus();
3755                    }
3756                }
3757            });
3758        };
3759
3760        fn.hide = function ($item) {
3761            if (fn.existsElem($item)) {
3762                $item.addClass(classNames.isHide);
3763            }
3764        };
3765
3766        fn.isPreInputCompleted = function () {
3767            var $regArea = elements.$regArea;
3768
3769            if ($regArea.hasClass(classNames.isPreInputCompleted)) {
3770                return true;
3771            }
3772
3773            return false;
3774        };
3775
3776        fn.deployObserver = function (handler) {
3777            var $regArea = elements.$regArea;
3778            var obs;
3779
3780            obs = new MutationObserver(function () {
3781                if (handler) {
3782                    handler();
3783                }
3784            });
3785
3786            if ($regArea.length) {
3787                obs.observe($regArea[0], {
3788                    childList: true
3789                });
3790            }
3791
3792            return obs;
3793        };
3794
3795        fn.deleteObserver = function (obs) {
3796            if (obs && typeof obs.disconnect === 'function') {
3797                obs.disconnect();
3798            }
3799        };
3800
3801        fn.enableFullForm = function (needFocus) {
3802            var $regArea = elements.$regArea;
3803            var $btnContinue = elements.$btnContinue;
3804            var $btnSubmit = $('.' + classNames.btnSubmit);
3805            var $hiddenItems = $('.' + classNames.hiddenForm);
3806
3807            fn.showAll($hiddenItems, needFocus);
3808            fn.show($btnSubmit);
3809            fn.hide($btnContinue);
3810            $regArea.addClass(classNames.isPreInputCompleted);
3811        };
3812
3813        fn.bindClickContinue = function () {
3814            var $btnContinue = elements.$btnContinue;
3815            var $input = $btnContinue.find('input');
3816
3817            if ($input.length) {
3818                $input.off().on('click', fn.onclickContinue);
3819            }
3820        };
3821
3822        fn.onclickContinue = function () {
3823            var deferreds = [];
3824            var $regArea = elements.$regArea;
3825            var $preForms = $regArea.find('.' + classNames.preForm);
3826
3827            $preForms.each(function () {
3828                var $item = $(this);
3829                var $input = $item.find('input');
3830
3831                if ($input.length) {
3832                    deferreds.push(
3833                        fn.validateForm($input)
3834                    );
3835                }
3836            });
3837
3838            if (deferreds.length) {
3839                $.when.apply(null, deferreds).done(function () {
3840                    if (fn.isCompletedAll($preForms)) {
3841                        fn.enableFullForm(true);
3842                        fn.clearAll($('.' + classNames.hiddenForm));
3843                    }
3844                }).fail(function () {
3845                    fn.enableFullForm(true);
3846                    fn.clearAll($('.' + classNames.hiddenForm));
3847                });
3848            }
3849        };
3850
3851        fn.clearAll = function ($items) {
3852            if (!fn.existsElem($items)) {
3853                return;
3854            }
3855
3856            $items.each(function (index) {
3857                var $this = $(this);
3858                var $input;
3859                var $errorMsg;
3860
3861                if ($this.hasClass(classNames.isError)) {
3862                    $this.removeClass(classNames.isError);
3863
3864                    $input = $this.find(':text,:password,input[type="email"], input[type="tel"]');
3865
3866                    if ($input.length) {
3867                        $input.val('');
3868                    }
3869
3870                    $errorMsg = $this.find('.' + classNames.errorMsg);
3871
3872                    if ($errorMsg.length) {
3873                        $errorMsg.text('');
3874                    }
3875                }
3876            });
3877        };
3878
3879        fn.isCompletedAll = function ($forms) {
3880            var result = true;
3881
3882            if (!fn.existsElem($forms)) {
3883                return false;
3884            }
3885
3886            $forms.each(function () {
3887                var $this = $(this);
3888
3889                if ($this.hasClass(classNames.isError)) {
3890                    result = false;
3891
3892                    return false;
3893                }
3894
3895                return true;
3896            });
3897
3898            return result;
3899        };
3900
3901        fn.updateFieldStatus = function (data, fieldName) {
3902            var $trgtTr = $('#suz_tr_' + fieldName);
3903            var $trgtDiv = $('#suz_div_' + fieldName);
3904
3905            if (!data) {
3906                return;
3907            }
3908
3909            if ($trgtTr.length) {
3910                if (data.message) {
3911                    $trgtTr.removeClass('ProperRow');
3912                    $trgtTr.addClass('is-error');
3913                    $trgtTr.find('p').html(data.message);
3914                    $trgtTr.find('p').parent().css('display', 'block');
3915                } else {
3916                    $trgtTr.removeClass('is-error');
3917                    $trgtTr.addClass('ProperRow');
3918                    $trgtTr.find('p').html('');
3919                    $trgtTr.find('p').parent().css('display', 'none');
3920                }
3921                $trgtTr.addClass('suzChecked');
3922            } else if ($trgtDiv.length) {
3923                if (data.message) {
3924                    $trgtDiv.addClass('is-error');
3925                    $trgtDiv.find('.suz_errorMsg').html(data.message);
3926                    $trgtDiv.find('.suz_errorMsg').css('display', 'block');
3927                } else {
3928                    $trgtDiv.removeClass('is-error');
3929                    $trgtDiv.find('.suz_errorMsg').html('');
3930                    $trgtDiv.find('.suz_errorMsg').css('display', 'none');
3931                }
3932                $trgtDiv.addClass('suzChecked');
3933            }
3934        };
3935
3936        fn.validateForm = function ($input) {
3937            var deferred = new $.Deferred();
3938            var fieldName;
3939            var fieldValue;
3940
3941            if (!fn.existsElem($input)) {
3942                return deferred.fail();
3943            }
3944
3945            fieldName = $input.attr('name') || '';
3946
3947            if ($input.attr('type') === 'checkbox') {
3948                fieldValue = $input.prop('checked') ? 'on' : 'off';
3949            } else {
3950                fieldValue = $input.val() || '';
3951            }
3952
3953            $.ajax({
3954                url: win.suz_getCurrentDomain() + '/ajax/registrationAjax/validator/',
3955                data: {
3956                    fieldName: fieldName,
3957                    fieldValue: encodeURIComponent(fieldValue),
3958                    token: $("input[name='org.apache.struts.taglib.html.TOKEN']").attr('value')
3959                },
3960                dataType: 'jsonp',
3961                jsonp: 'callback',
3962                scriptCharset: 'UTF-8'
3963            }).done(function (data) {
3964                fn.updateFieldStatus(data, fieldName);
3965
3966                deferred.resolve();
3967            }).fail(function (req, stat, err) {
3968                if (req.status === 401) {
3969                    window.location.href = win.suz_getCurrentDomain() + '/error/tokenError.jsp';
3970
3971                    return false;
3972                }
3973
3974                win.alert(err);
3975
3976                deferred.fail();
3977            });
3978
3979            return deferred.promise();
3980        };
3981
3982        fn.init();
3983    };
3984
3985    KEYENCE.scrollTransitionToAnchor = function () {
3986        var self = this;
3987        var hash = win.location.hash;
3988        var target = doc.getElementById(hash.substring(1));
3989        var seriesHeader = doc.querySelector('[data-series-header-target="sticky"]');
3990        var fixedHeader = null;
3991        var needsInitialScroll = target !== null;
3992        var smallHeightScreenMql = win.matchMedia('only screen and (max-height: 770px)');
3993        var scroller = {};
3994        var SCROLL_ADJUST = {
3995            THRESHOLD: 3,
3996            COOL_DOWN: 250,
3997            ADJUSTMENT_LOCKOUT: 1000,
3998            MAX_CORRECTION_COUNT: 2,
3999            LOCK_DURATION: 1500,
4000        };
4001        var userInterruptedUntil = 0;
4002        var lastAdjusted = {
4003            key: null,
4004            time: 0
4005        };
4006        var adjustTimerId = null;
4007        var isPending = false;
4008        var USER_INPUT_EVENTS = ['wheel', 'touchmove', 'keydown', 'mousedown'];
4009        var LISTENER_OPTIONS = { passive: true };
4010
4011        scroller.init = new SmoothScroll();
4012
4013        scroller.run = function () {
4014            scroller.init.destroy();
4015
4016            if (smallScreenMql.matches) {
4017                fixedHeader = seriesHeader ? '[data-series-header-target="sticky"]' : '#js-controlHeader';
4018            } else {
4019                if (smallHeightScreenMql.matches) {
4020                    fixedHeader = seriesHeader ? '[data-series-header-target="sticky"]' : null;
4021                } else {
4022                    fixedHeader = seriesHeader ? '[data-series-header-target="sticky"]' : '#js-controlHeader';
4023                }
4024            }
4025
4026            scroller.init = new SmoothScroll('.js-scrollTransition[href^="#"], #LpcContentsArea [href^="#"]', {
4027                header: fixedHeader,
4028                speed: 400,
4029                easing: 'easeInOutQuart',
4030                updateURL: false,
4031                speedAsDuration: true
4032            });
4033        };
4034
4035        scroller.runForEachScreen = function () {
4036            scroller.run();
4037        };
4038
4039        scroller.handleLoad = function () {
4040            if (needsInitialScroll) {
4041                scroller.init.animateScroll(target, null, {
4042                    speed: 100
4043                });
4044            }
4045        };
4046
4047        scroller.handleScrollStart = async function (e) {
4048            var anchor = e?.detail?.anchor;
4049
4050            if (self.getElem.spSearchBtn && self.getElem.spSearchTarget) {
4051                self.getElem.spSearchBtn.setAttribute(self.CONFIG.ARIA_EXPANDED, false);
4052                self.getElem.spSearchTarget.classList.remove(self.CONFIG.SHOW_CLASS);
4053                doc.body.classList.remove(self.CONFIG.MENU_SHOW_CLASS);
4054            }
4055
4056            scroller.addUserInputListeners();
4057
4058            if (anchor) {
4059                try { await scroller.preflightLayoutTo(anchor); } catch(_) {}
4060            }
4061        };
4062
4063        scroller.preflightLayoutTo = async function (target) {
4064            var startY = win.pageYOffset || doc.documentElement.scrollTop || 0;
4065            var targetY = target.getBoundingClientRect().top + startY;
4066            var minY = Math.min(startY, targetY);
4067            var maxY = Math.max(startY, targetY);
4068
4069            var imgs = [...doc.images].filter(img => {
4070                var y = 0;
4071
4072                if (img.loading !== 'lazy') {
4073                    return false;
4074                }
4075
4076                y = img.getBoundingClientRect().top + startY;
4077
4078                return y >= minY && y <= maxY;
4079            });
4080
4081            imgs.forEach(img => {
4082                try { img.loading = 'eager'; } catch(_) {}
4083                if (!img.hasAttribute('fetchpriority')) {
4084                    img.setAttribute('fetchpriority', 'high');
4085                }
4086            });
4087
4088            await Promise.all(imgs.map(img => img.decode?.().catch(() => {})));
4089        };
4090
4091        scroller.handleScrollStop = function (e) {
4092            var anchor = e?.detail?.anchor;
4093            var currentTime = Date.now();
4094            var anchorKey = null;
4095            var diff = 0;
4096            var isAdjusted = false;
4097            var scrollMetrics;
4098
4099            if (!anchor || currentTime < userInterruptedUntil) {
4100                scroller.removeUserInputListeners();
4101                return;
4102            }
4103
4104            anchorKey = anchor.id || anchor?.getAttribute('name') || anchor;
4105
4106            if (lastAdjusted.key === anchorKey && (currentTime - lastAdjusted.time) < SCROLL_ADJUST.ADJUSTMENT_LOCKOUT) {
4107                scroller.removeUserInputListeners();
4108                return;
4109            }
4110
4111            if (adjustTimerId) {
4112                clearTimeout(adjustTimerId);
4113                adjustTimerId = null;
4114            }
4115
4116            if (smallScreenMql.matches) {
4117                isPending = true;
4118
4119                adjustTimerId = setTimeout(function () {
4120                    if (!isPending || Date.now() < userInterruptedUntil) {
4121                        isPending = false;
4122                        adjustTimerId = null;
4123                        scroller.removeUserInputListeners();
4124
4125                        return;
4126                    }
4127
4128                    scrollMetrics = scroller.getScrollMetrics(anchor);
4129                    diff = scrollMetrics?.diff ?? 0;
4130
4131                    if (diff > SCROLL_ADJUST.THRESHOLD) {
4132                        lastAdjusted.key = anchorKey;
4133                        lastAdjusted.time = currentTime;
4134                        isAdjusted = true;
4135
4136                        scroller.init && scroller.init.animateScroll(anchor, null, {
4137                            speed: 100,
4138                            updateURL: false
4139                        });
4140                    }
4141
4142                    isPending = false;
4143                    adjustTimerId = null;
4144
4145                    if (!isAdjusted) {
4146                        scroller.removeUserInputListeners();
4147                    }
4148                }, 1000);
4149            } else {
4150                isPending = false;
4151
4152                scrollMetrics = scroller.getScrollMetrics(anchor);
4153                diff = scrollMetrics?.diff ?? 0;
4154
4155                if (diff > SCROLL_ADJUST.THRESHOLD) {
4156                    lastAdjusted.key = anchorKey;
4157                    lastAdjusted.time = currentTime;
4158
4159                    scroller.instantCorrectTo(anchor, fixedHeader);
4160                }
4161
4162                scroller.startScrollLock(anchor, fixedHeader);
4163
4164                scroller.removeUserInputListeners();
4165            }
4166        };
4167
4168        scroller.getScrollMetrics = function (target) {
4169            var header = doc.querySelector(fixedHeader) ?? null;
4170            var headerHeight = header?.offsetHeight ?? 0;
4171            var currentY = win.pageYOffset ?? doc.documentElement.scrollTop ?? 0;
4172            var rectTop = target?.getBoundingClientRect?.().top ?? 0;
4173            var expectedTop = rectTop + currentY - headerHeight;
4174            var diff = Math.abs(currentY - expectedTop);
4175
4176            return {
4177                header: header,
4178                headerHeight: headerHeight,
4179                currentY: currentY,
4180                expectedTop: expectedTop,
4181                diff: diff
4182            };
4183        };
4184
4185        scroller.instantCorrectTo = function (anchor, headerSelector) {
4186            var header = headerSelector ? doc.querySelector(headerSelector) : null;
4187            var headerHeight = header?.offsetHeight ?? 0;
4188            var currentY = win.pageYOffset ?? doc.documentElement.scrollTop ?? 0;
4189            var rect = anchor.getBoundingClientRect();
4190            var expectedTop = rect.top + currentY - headerHeight;
4191
4192            win.scrollTo({ top: expectedTop, behavior: 'auto' });
4193        };
4194
4195        scroller.startScrollLock = function (anchor, headerSelector) {
4196            var correctionCount = 0;
4197            var header = headerSelector ? doc.querySelector(headerSelector) : null;
4198            var headerHeight = header?.offsetHeight ?? 0;
4199            var resizeObserver = new ResizeObserver(function () {
4200                var currentY = 0;
4201                var rect = 0;
4202                var expectedTop = 0;
4203                var diff = 0;
4204
4205                if (Date.now() < userInterruptedUntil || correctionCount >= SCROLL_ADJUST.MAX_CORRECTION_COUNT) {
4206                    return;
4207                }
4208
4209                currentY = win.pageYOffset ?? doc.documentElement.scrollTop ?? 0;
4210                rect = anchor.getBoundingClientRect();
4211                expectedTop = rect.top + currentY - headerHeight;
4212                diff = Math.abs(currentY - expectedTop);
4213
4214                if (diff > SCROLL_ADJUST.THRESHOLD) {
4215                    correctionCount += 1;
4216                    win.scrollTo({ top: expectedTop, behavior: 'auto' });
4217                }
4218            });
4219
4220            try { resizeObserver.observe(doc.body); } catch(_) {}
4221            setTimeout(function () { resizeObserver.disconnect(); }, SCROLL_ADJUST.LOCK_DURATION);
4222        };
4223
4224        scroller.addUserInputListeners = function () {
4225            USER_INPUT_EVENTS.forEach(function (e) {
4226                win.addEventListener(e, scroller.markUserInput, LISTENER_OPTIONS);
4227            });
4228        };
4229
4230        scroller.removeUserInputListeners = function () {
4231            USER_INPUT_EVENTS.forEach(function (e) {
4232                win.removeEventListener(e, scroller.markUserInput, LISTENER_OPTIONS);
4233            });
4234        };
4235
4236        scroller.markUserInput = function () {
4237            userInterruptedUntil = Date.now() + SCROLL_ADJUST.COOL_DOWN;
4238
4239            if (adjustTimerId) {
4240                clearTimeout(adjustTimerId);
4241                adjustTimerId = null;
4242            }
4243
4244            isPending = false;
4245            scroller.removeUserInputListeners();
4246        };
4247
4248        scroller.runForEachScreen();
4249        smallScreenMql.addListener(scroller.runForEachScreen);
4250        smallHeightScreenMql.addListener(scroller.runForEachScreen);
4251        win.addEventListener('load', scroller.handleLoad);
4252        doc.addEventListener('scrollStart', scroller.handleScrollStart);
4253        doc.addEventListener('scrollStop', scroller.handleScrollStop);
4254    };
4255
4256    KEYENCE.setLoginHeaderMenu = function () {
4257        var self = this;
4258        var ROOT_SELECTOR = 'js-headerMypageTooltip';
4259        var BUTTON_SELECTOR = 'js-headerMypageTooltip-button';
4260        var CONTAINER_SELECTOR = 'js-headerMypageTooltip-container';
4261        var MENU_TARGET_SELECTOR = 'js-headerMypageTooltip-menuTarget';
4262        var STATE_OPEN_CLASS = 'is-tooltip-open';
4263        var STATE_CLOSE_CLASS = 'is-tooltip-close';
4264        var ACTIVE_PC_ATTR = 'data-tooltip-active-pc';
4265        var READY_ATTR = 'data-header-tooltip-ready';
4266        var OVERFLOW_LEFT_VAR = '--tooltip-over-left';
4267        var OVERFLOW_RIGHT_VAR = '--tooltip-over-right';
4268        var FOCUS_OUT_DELAY = 100;
4269        var OVERFLOW_CLASS = {
4270            left: 'is-windowOverFlow-leftOver',
4271            right: 'is-windowOverFlow-rightOver',
4272            window: 'is-windowOverFlow-windowOver',
4273            top: 'is-windowOverFlow-topOver',
4274            bottom: 'is-windowOverFlow-bottomOver'
4275        };
4276
4277        function preventDefaultEvent(event) {
4278            event.preventDefault();
4279        }
4280
4281        function checkInsideActiveElement(container) {
4282            return container.contains(doc.activeElement);
4283        }
4284
4285        function isElementOutOfViewportHorizontally(target) {
4286            var windowWidth = doc.documentElement.clientWidth;
4287            var targetPosition = target.getBoundingClientRect();
4288            var result = {
4289                state: '',
4290                className: '',
4291                overFlowSize: {
4292                    left: Math.round(targetPosition.right - windowWidth) || 0,
4293                    right: Math.round(targetPosition.left) || 0
4294                }
4295            };
4296            var isLeftOver = targetPosition.left < 0;
4297            var isRightOver = windowWidth < targetPosition.right;
4298
4299            if (isLeftOver && isRightOver) {
4300                result.state = 'window';
4301                result.className = OVERFLOW_CLASS.window;
4302            } else if (isLeftOver) {
4303                result.state = 'left';
4304                result.className = OVERFLOW_CLASS.left;
4305            } else if (isRightOver) {
4306                result.state = 'right';
4307                result.className = OVERFLOW_CLASS.right;
4308            }
4309
4310            return result;
4311        }
4312
4313        function resetTargetOverflowClass(target) {
4314            target.classList.remove(OVERFLOW_CLASS.top);
4315            target.classList.remove(OVERFLOW_CLASS.bottom);
4316            target.classList.remove(OVERFLOW_CLASS.left);
4317            target.classList.remove(OVERFLOW_CLASS.right);
4318            target.classList.remove(OVERFLOW_CLASS.window);
4319        }
4320
4321        function isDetailsElement(element) {
4322            return element instanceof HTMLDetailsElement;
4323        }
4324
4325        // SPのハンバーガー・検索・電話の各ドロワーをフェードアウトさせる
4326        function closeOtherHeaderMenu() {
4327            var targets = [
4328                self.getElem.spSearchTarget,
4329                self.getElem.spPhoneTarget
4330            ];
4331            var triggers = [
4332                self.getElem.spSearchBtn,
4333                self.getElem.spPhoneBtn
4334            ];
4335
4336            self.hideHamburgerMenu();
4337            self.scheduleHamburgerMenuReset();
4338
4339            targets.forEach(function (target) {
4340                if (target && target.classList.contains(self.CONFIG.SHOW_CLASS)) {
4341                    target.classList.remove(self.CONFIG.SHOW_CLASS);
4342                    target.classList.add(self.CONFIG.HIDE_CLASS);
4343                }
4344            });
4345
4346            triggers.forEach(function (trigger) {
4347                if (trigger) {
4348                    trigger.setAttribute(self.CONFIG.ARIA_EXPANDED, false);
4349                }
4350            });
4351        }
4352
4353        class LoginHeaderMenu {
4354            constructor(element) {
4355                this.root = element;
4356                this.button = null;
4357                this.container = null;
4358                this.containerId = ROOT_SELECTOR + '-' + Math.random().toString().substring(2);
4359                this.isOpen = false;
4360                this.isPcHoverBound = false;
4361                this.focusInEvent = this.open.bind(this);
4362                this.closeFocusOutEvent = this.closeFocusOut.bind(this);
4363                this.mouseLeaveEvent = this.close.bind(this);
4364                this.mouseMoveEvent = this.open.bind(this);
4365                this.detailsEvent = this.setDetailsOpenState.bind(this);
4366                this.keydownEvent = this.onKeydown.bind(this);
4367                this.mediaQueryChangeEvent = this.switchMediaQuery.bind(this);
4368            }
4369
4370            init() {
4371                this.set();
4372                this.switchMediaQuery();
4373                this.bindEvent();
4374            }
4375
4376            set() {
4377                this.container = this.root.querySelector('.' + CONTAINER_SELECTOR);
4378                this.button = this.root.querySelector('.' + BUTTON_SELECTOR);
4379
4380                if (this.container) {
4381                    var id = this.container.getAttribute('id');
4382
4383                    if (id) {
4384                        this.containerId = id;
4385                    }
4386
4387                    this.container.setAttribute('id', this.containerId);
4388                }
4389            }
4390
4391            bindEvent() {
4392                win.addEventListener('keydown', this.keydownEvent);
4393
4394                if (smallScreenMql.addEventListener) {
4395                    smallScreenMql.addEventListener('change', this.mediaQueryChangeEvent);
4396                } else if (smallScreenMql.addListener) {
4397                    smallScreenMql.addListener(this.mediaQueryChangeEvent);
4398                }
4399            }
4400
4401            onKeydown(event) {
4402                if (event.key === 'Escape' && this.isOpen) {
4403                    this.close();
4404                }
4405            }
4406
4407            switchMediaQuery() {
4408                this.destroyBindEventHover();
4409
4410                if (smallScreenMql.matches) {
4411                    if (isDetailsElement(this.root)) {
4412                        this.root.open = false;
4413                    }
4414
4415                    this.root.classList.remove(STATE_CLOSE_CLASS);
4416                    this.root.classList.remove(STATE_OPEN_CLASS);
4417
4418                    if (this.container) {
4419                        this.container.inert = false;
4420                    }
4421
4422                    if (this.button) {
4423                        this.button.inert = false;
4424                    }
4425
4426                    return;
4427                }
4428
4429                this.removeAttribute();
4430
4431                if (this.root.getAttribute(ACTIVE_PC_ATTR) !== 'hover') {
4432                    return;
4433                }
4434
4435                this.toggleA11y(false);
4436                this.setBindEventHover();
4437                this.addAttribute();
4438            }
4439
4440            addAttribute() {
4441                if (this.button) {
4442                    this.button.setAttribute('aria-expanded', 'false');
4443                    this.button.setAttribute('aria-controls', this.containerId);
4444                }
4445
4446                if (this.container) {
4447                    this.container.setAttribute('id', this.containerId);
4448                    this.container.setAttribute('aria-hidden', 'true');
4449                }
4450            }
4451
4452            removeAttribute() {
4453                if (isDetailsElement(this.root)) {
4454                    this.root.open = false;
4455                }
4456
4457                this.root.classList.remove(STATE_CLOSE_CLASS);
4458                this.root.classList.remove(STATE_OPEN_CLASS);
4459
4460                if (this.button) {
4461                    this.button.removeAttribute('aria-expanded');
4462                    this.button.removeAttribute('aria-controls');
4463                }
4464
4465                if (this.container) {
4466                    this.container.removeAttribute('aria-hidden');
4467                }
4468            }
4469
4470            setBindEventHover() {
4471                if (this.isPcHoverBound) {
4472                    return;
4473                }
4474
4475                if (isDetailsElement(this.root) && this.button) {
4476                    this.button.addEventListener('click', preventDefaultEvent);
4477                }
4478
4479                this.root.addEventListener('focusin', this.focusInEvent);
4480                this.root.addEventListener('focusout', this.closeFocusOutEvent);
4481                this.root.addEventListener('mouseover', this.mouseMoveEvent);
4482                this.root.addEventListener('mouseleave', this.mouseLeaveEvent);
4483
4484                if (this.container) {
4485                    this.container.addEventListener('focusout', this.closeFocusOutEvent);
4486                    this.container.addEventListener('animationend', this.detailsEvent);
4487                }
4488
4489                if (this.button) {
4490                    this.button.inert = false;
4491                }
4492
4493                this.isPcHoverBound = true;
4494            }
4495
4496            destroyBindEventHover() {
4497                if (isDetailsElement(this.root) && this.button) {
4498                    this.button.removeEventListener('click', preventDefaultEvent);
4499                }
4500
4501                if (this.container) {
4502                    this.container.inert = false;
4503                }
4504
4505                if (this.button) {
4506                    this.button.inert = false;
4507                }
4508
4509                if (!this.isPcHoverBound) {
4510                    return;
4511                }
4512
4513                this.root.removeEventListener('focusin', this.focusInEvent);
4514                this.root.removeEventListener('focusout', this.closeFocusOutEvent);
4515                this.root.removeEventListener('mouseover', this.mouseMoveEvent);
4516                this.root.removeEventListener('mouseleave', this.mouseLeaveEvent);
4517
4518                if (this.container) {
4519                    this.container.removeEventListener('focusout', this.closeFocusOutEvent);
4520                    this.container.removeEventListener('animationend', this.detailsEvent);
4521                }
4522
4523                this.isPcHoverBound = false;
4524            }
4525
4526            toggleA11y(state) {
4527                if (this.button) {
4528                    this.button.setAttribute('aria-expanded', String(state));
4529                }
4530
4531                if (this.container) {
4532                    this.container.setAttribute('aria-hidden', String(!state));
4533                    this.container.inert = !state;
4534                }
4535            }
4536
4537            open() {
4538                if (isDetailsElement(this.root) && !this.root.open) {
4539                    this.root.open = true;
4540                }
4541
4542                this.isOpen = true;
4543                this.toggleA11y(true);
4544                this.root.classList.remove(STATE_CLOSE_CLASS);
4545                this.root.classList.add(STATE_OPEN_CLASS);
4546                this.judgementOverFlowWindow();
4547            }
4548
4549            close() {
4550                this.toggleA11y(false);
4551                this.root.classList.remove(STATE_OPEN_CLASS);
4552                this.root.classList.add(STATE_CLOSE_CLASS);
4553                this.isOpen = false;
4554            }
4555
4556            closeFocusOut(event) {
4557                var self = this;
4558
4559                win.setTimeout(function () {
4560                    var target = event.target;
4561
4562                    if (target === self.button) {
4563                        return;
4564                    }
4565
4566                    if (!event.relatedTarget) {
4567                        return;
4568                    }
4569
4570                    if (self.container && checkInsideActiveElement(self.container)) {
4571                        return;
4572                    }
4573
4574                    self.close();
4575                }, FOCUS_OUT_DELAY);
4576            }
4577
4578            setDetailsOpenState() {
4579                if (isDetailsElement(this.root) && this.root.open) {
4580                    this.root.open = this.root.classList.contains(STATE_OPEN_CLASS);
4581                }
4582            }
4583
4584            judgementOverFlowWindow() {
4585                if (!this.container) {
4586                    return;
4587                }
4588
4589                resetTargetOverflowClass(this.container);
4590                var isWindowOver = isElementOutOfViewportHorizontally(this.container);
4591
4592                if (isWindowOver.state) {
4593                    this.container.classList.add(isWindowOver.className);
4594                    this.container.style.setProperty(
4595                        OVERFLOW_LEFT_VAR,
4596                        isWindowOver.overFlowSize.left + 'px'
4597                    );
4598                    this.container.style.setProperty(
4599                        OVERFLOW_RIGHT_VAR,
4600                        isWindowOver.overFlowSize.right + 'px'
4601                    );
4602                }
4603            }
4604        }
4605
4606        // SPではヘッダー内のdetailsをクリックで開閉し、他ドロワーとフェードを入れ替える
4607        class LoginHeaderSpMenu {
4608            constructor(element) {
4609                this.root = element;
4610                this.details = null;
4611                this.button = null;
4612                this.container = null;
4613                this.isSpBound = false;
4614                this.closeTimerId = null;
4615                this.toggleEvent = this.onToggle.bind(this);
4616                this.animationEndEvent = this.onAnimationEnd.bind(this);
4617                this.mediaQueryChangeEvent = this.switchMediaQuery.bind(this);
4618            }
4619
4620            init() {
4621                this.set();
4622
4623                if (!this.details) {
4624                    return false;
4625                }
4626
4627                this.switchMediaQuery();
4628                this.bindEvent();
4629                return true;
4630            }
4631
4632            set() {
4633                this.details = this.root.querySelector('.' + ROOT_SELECTOR);
4634                this.button = this.root.querySelector('.' + BUTTON_SELECTOR);
4635                this.container = this.root.querySelector('.' + CONTAINER_SELECTOR);
4636            }
4637
4638            bindEvent() {
4639                if (smallScreenMql.addEventListener) {
4640                    smallScreenMql.addEventListener('change', this.mediaQueryChangeEvent);
4641                } else if (smallScreenMql.addListener) {
4642                    smallScreenMql.addListener(this.mediaQueryChangeEvent);
4643                }
4644            }
4645
4646            switchMediaQuery() {
4647                if (smallScreenMql.matches) {
4648                    this.setBindEventAnimation();
4649                } else {
4650                    this.destroyBindEventAnimation();
4651                }
4652            }
4653
4654            setBindEventAnimation() {
4655                this.set();
4656
4657                if (!this.details) {
4658                    return;
4659                }
4660
4661                if (!this.isSpBound) {
4662                    this.details.addEventListener('toggle', this.toggleEvent);
4663
4664                    if (this.container) {
4665                        this.container.addEventListener('animationend', this.animationEndEvent);
4666                    }
4667
4668                    this.isSpBound = true;
4669                }
4670
4671                this.addSpAttribute();
4672            }
4673
4674            destroyBindEventAnimation() {
4675                if (!this.isSpBound) {
4676                    return;
4677                }
4678
4679                if (this.details) {
4680                    this.details.removeEventListener('toggle', this.toggleEvent);
4681                    this.details.classList.remove(STATE_OPEN_CLASS);
4682                    this.details.classList.remove(STATE_CLOSE_CLASS);
4683                }
4684
4685                if (this.container) {
4686                    this.container.removeEventListener('animationend', this.animationEndEvent);
4687                }
4688
4689                this.clearCloseTimer();
4690                this.isSpBound = false;
4691            }
4692
4693            addSpAttribute() {
4694                var isOpen = this.details &&
4695                    this.details.classList.contains(STATE_OPEN_CLASS) &&
4696                    !this.details.classList.contains(STATE_CLOSE_CLASS);
4697
4698                if (this.button) {
4699                    this.button.setAttribute('aria-expanded', isOpen ? 'true' : 'false');
4700
4701                    if (this.container && this.container.id) {
4702                        this.button.setAttribute('aria-controls', this.container.id);
4703                    }
4704                }
4705
4706                if (this.container) {
4707                    this.container.setAttribute('aria-hidden', isOpen ? 'false' : 'true');
4708                }
4709            }
4710
4711            toggleSpA11y(state) {
4712                if (this.button) {
4713                    this.button.setAttribute('aria-expanded', String(state));
4714                }
4715
4716                if (this.container) {
4717                    this.container.setAttribute('aria-hidden', String(!state));
4718                }
4719            }
4720
4721            onClick(event) {
4722                event.preventDefault();
4723                this.set();
4724
4725                if (!this.details) {
4726                    return;
4727                }
4728
4729                if (
4730                    this.details.classList.contains(STATE_OPEN_CLASS) &&
4731                    !this.details.classList.contains(STATE_CLOSE_CLASS)
4732                ) {
4733                    this.close();
4734                    return;
4735                }
4736
4737                this.details.open = true;
4738                this.open();
4739            }
4740
4741            // 他のドロワーのフェードアウトと入れ替えるため、ハンバーガーメニューと同じ手順で開く
4742            open() {
4743                this.set();
4744
4745                if (!this.details) {
4746                    return;
4747                }
4748
4749                this.clearCloseTimer();
4750                closeOtherHeaderMenu();
4751
4752                if (self.getElem.docElement.scrollTop) {
4753                    self.getElem.docElement.scrollTop = 0;
4754                }
4755
4756                if (doc.body.scrollTop) {
4757                    doc.body.scrollTop = 0;
4758                }
4759
4760                doc.body.classList.add(self.CONFIG.MENU_SHOW_CLASS);
4761                this.details.classList.remove(STATE_CLOSE_CLASS);
4762                this.details.classList.add(STATE_OPEN_CLASS);
4763                this.toggleSpA11y(true);
4764            }
4765
4766            close() {
4767                this.set();
4768
4769                if (!this.details) {
4770                    return;
4771                }
4772
4773                doc.body.classList.remove(self.CONFIG.MENU_SHOW_CLASS);
4774                this.details.classList.remove(STATE_OPEN_CLASS);
4775                this.details.classList.add(STATE_CLOSE_CLASS);
4776                this.toggleSpA11y(false);
4777                this.scheduleFinishClose();
4778            }
4779
4780            onToggle() {
4781                this.set();
4782
4783                if (!this.details || this.details.open) {
4784                    return;
4785                }
4786
4787                this.clearCloseTimer();
4788                this.details.classList.remove(STATE_OPEN_CLASS);
4789                this.details.classList.remove(STATE_CLOSE_CLASS);
4790                this.toggleSpA11y(false);
4791            }
4792
4793            onAnimationEnd() {
4794                this.set();
4795
4796                if (!this.details || !this.details.classList.contains(STATE_CLOSE_CLASS)) {
4797                    return;
4798                }
4799
4800                this.finishClose();
4801            }
4802
4803            scheduleFinishClose() {
4804                var selfMenu = this;
4805
4806                this.clearCloseTimer();
4807                this.closeTimerId = win.setTimeout(function () {
4808                    selfMenu.finishClose();
4809                }, 200);
4810            }
4811
4812            clearCloseTimer() {
4813                if (this.closeTimerId) {
4814                    win.clearTimeout(this.closeTimerId);
4815                    this.closeTimerId = null;
4816                }
4817            }
4818
4819            finishClose() {
4820                this.clearCloseTimer();
4821                this.set();
4822
4823                if (!this.details || !this.details.classList.contains(STATE_CLOSE_CLASS)) {
4824                    return;
4825                }
4826
4827                this.details.open = false;
4828            }
4829        }
4830
4831        function getSpMenu(menuTarget) {
4832            var menus = self.loginHeaderSpMenus || [];
4833            var i;
4834
4835            for (i = 0; i < menus.length; i += 1) {
4836                if (menus[i].root === menuTarget) {
4837                    return menus[i];
4838                }
4839            }
4840
4841            return null;
4842        }
4843
4844        function ensureSpMenu(menuTarget) {
4845            var menu = getSpMenu(menuTarget);
4846
4847            if (menu) {
4848                menu.set();
4849                return menu.details ? menu : null;
4850            }
4851
4852            menu = new LoginHeaderSpMenu(menuTarget);
4853
4854            if (!menu.init()) {
4855                return null;
4856            }
4857
4858            if (!self.loginHeaderSpMenus) {
4859                self.loginHeaderSpMenus = [];
4860            }
4861
4862            self.loginHeaderSpMenus.push(menu);
4863            menuTarget.setAttribute(READY_ATTR, 'true');
4864            return menu;
4865        }
4866
4867        function onDelegatedSpClick(event) {
4868            var eventTarget = event.target;
4869            var button;
4870            var menuTarget;
4871            var menu;
4872
4873            if (!smallScreenMql.matches) {
4874                return;
4875            }
4876
4877            if (eventTarget && eventTarget.nodeType !== 1) {
4878                eventTarget = eventTarget.parentElement;
4879            }
4880
4881            if (!eventTarget || !eventTarget.closest) {
4882                return;
4883            }
4884
4885            button = eventTarget.closest('.' + BUTTON_SELECTOR);
4886
4887            if (!button) {
4888                return;
4889            }
4890
4891            menuTarget = button.closest('.' + MENU_TARGET_SELECTOR);
4892
4893            if (!menuTarget) {
4894                return;
4895            }
4896
4897            event.preventDefault();
4898            menu = ensureSpMenu(menuTarget);
4899
4900            if (!menu) {
4901                return;
4902            }
4903
4904            if (!menu.isSpBound) {
4905                menu.setBindEventAnimation();
4906            }
4907
4908            menu.onClick(event);
4909        }
4910
4911        var elements = doc.querySelectorAll('.' + ROOT_SELECTOR + '[' + ACTIVE_PC_ATTR + '="hover"]');
4912        var menuTargets = doc.querySelectorAll('.' + MENU_TARGET_SELECTOR);
4913        var i;
4914        var spMenu;
4915
4916        if (!self.loginHeaderSpMenus) {
4917            self.loginHeaderSpMenus = [];
4918        }
4919
4920        for (i = 0; i < elements.length; i += 1) {
4921            if (elements[i].getAttribute(READY_ATTR) === 'true') {
4922                continue;
4923            }
4924
4925            elements[i].setAttribute(READY_ATTR, 'true');
4926            new LoginHeaderMenu(elements[i]).init();
4927        }
4928
4929        for (i = 0; i < menuTargets.length; i += 1) {
4930            if (menuTargets[i].getAttribute(READY_ATTR) === 'true') {
4931                continue;
4932            }
4933
4934            spMenu = new LoginHeaderSpMenu(menuTargets[i]);
4935
4936            if (!spMenu.init()) {
4937                continue;
4938            }
4939
4940            menuTargets[i].setAttribute(READY_ATTR, 'true');
4941            self.loginHeaderSpMenus.push(spMenu);
4942        }
4943
4944        if (!self.loginHeaderSpClickBound) {
4945            doc.addEventListener('click', onDelegatedSpClick, true);
4946            self.loginHeaderSpClickBound = true;
4947        }
4948    };
4949
4950    KEYENCE.setHeaderMypageUserName = function () {
4951        var SOURCE_SELECTOR = 'js-headerMypageUserName';
4952        var TARGET_SELECTOR = 'js-headerMypageUserName-target';
4953        var ROOT_SELECTOR = 'js-headerMypageTooltip';
4954        var ATTR_SORT_ORDER = 'data-headerUser-nameSortOrder';
4955        var ATTR_FIRST_NAME = 'data-headerUser-firstName';
4956        var ATTR_LAST_NAME = 'data-headerUser-lastName';
4957        var sources = doc.querySelectorAll('.' + SOURCE_SELECTOR);
4958        var i;
4959        var source;
4960        var root;
4961        var target;
4962        var displayName;
4963
4964        function formatDisplayName(element) {
4965            var format = element.getAttribute(ATTR_SORT_ORDER) || '';
4966            var firstName = element.getAttribute(ATTR_FIRST_NAME) || '';
4967            var lastName = element.getAttribute(ATTR_LAST_NAME) || '';
4968
4969            if (!format || (!firstName && !lastName)) {
4970                return '';
4971            }
4972
4973            return format
4974                .replace(/\{firstName\}/g, firstName)
4975                .replace(/\{lastName\}/g, lastName);
4976        }
4977
4978        for (i = 0; i < sources.length; i += 1) {
4979            source = sources[i];
4980            displayName = formatDisplayName(source);
4981            source.textContent = displayName;
4982            root = source.closest('.' + ROOT_SELECTOR);
4983
4984            if (!root) {
4985                continue;
4986            }
4987
4988            target = root.querySelector('.' + TARGET_SELECTOR);
4989
4990            if (target) {
4991                target.textContent = displayName;
4992            }
4993        }
4994    };
4995
4996    KEYENCE.setMultiStepForm = function () {
4997        var multiStepForm = win.MultiStepForm;
4998
4999        if (multiStepForm) {
5000            multiStepForm.init();
5001        }
5002    };
5003
5004    KEYENCE.MultiStepForm = (function () {
5005        var $window = $(window);
5006        var $htmlBody = $('html, body');
5007
5008        var LAUNCH_MODE = {
5009            DEV: 0,
5010            PUB: 1
5011        };
5012
5013        var EVENT_TYPE = {
5014            CLICK_LEFT: 1
5015        };
5016
5017        var PANEL_INDEX = {
5018            FIRST: 0,
5019            SECOND: 1,
5020            THIRD: 2,
5021            FOURTH: 3
5022        };
5023
5024        var PANEL_NUM = {
5025            NONE: 0,
5026            FIRST: 1,
5027            SECOND: 2,
5028            THIRD: 3,
5029            FOURTH: 4
5030        };
5031
5032        var FORM_TYPE = {
5033            DEFAULT: 'default',
5034            EMAIL: 'email',
5035            MOBILE_NUMBER: 'mobileNumber'
5036        };
5037
5038        var isScrolling = false;
5039
5040        var Form = (function () {
5041            var classNames = {
5042                isHide: 'is-hide',
5043                isCurrent: 'is-current',
5044                errText: 'js-formErrText',
5045                isError: 'is-error',
5046                isFixed: 'is-fixed',
5047                scrollTransition: 'js-scrollTransition',
5048                isInitialized: 'is-initialized',
5049                errMessage: 'suz_errorMsg',
5050                checkCurrentScreen: 'js-checkCurrentFormScreen'
5051            };
5052
5053            var idNames = {
5054                trigger: 'js-multiStepForm',
5055                signinForm: 'js-multiStepForm-signin',
5056                regForm: 'js-multiStepForm-registration',
5057                header: 'js-controlHeader',
5058                stickyHeader: 'js-setMenu'
5059            };
5060
5061            var urls = {
5062                validator: '/ajax/registrationAjax/validator/',
5063                getEmailStatus: '/ajax/registrationAjax/getEmailStatus/',
5064                getMobileNumberStatus: '/ajax/registrationAjax/getMobileNumberStatus/',
5065                createVerificationCode: '/ajax/registrationAjax/createVerificationCode/',
5066                actionPwdAssistance: '/user/passwordAssistance/',
5067                checkRegularMember: '/ajax/userAjax/isRegularMember/',
5068            };
5069
5070            var selectors = {
5071                token: 'input[name="org.apache.struts.taglib.html.TOKEN"]',
5072                focusableElements: 'a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, [tabindex="0"], [contenteditable], summary, video, audio, [role="button"]',
5073                focusableInputElements: 'input:not([disabled]), select:not([disabled]), textarea:not([disabled])',
5074                disabledInputElements: 'input:disabled, select:disabled, textarea:disabled'
5075            };
5076
5077            var siteData = {
5078                KA: {
5079                    id: 1,
5080                    lang: 'en-US'
5081                },
5082                KBR: {
5083                    id: 14,
5084                    lang: 'pt-BR'
5085                } ,
5086                KC: {
5087                    id: 21,
5088                    lang: 'zh-CN'
5089                },
5090                KCN_en: {
5091                    id: 9,
5092                    lang: 'en-GB'
5093                },
5094                KCN_fr: {
5095                    id: 9,
5096                    lang: 'fr-FR'
5097                },
5098                KD: {
5099                    id: 3,
5100                    lang: 'de-DE'
5101                },
5102                KF: {
5103                    id: 8,
5104                    lang: 'fr-FR'
5105                },
5106                KI: {
5107                    id: 15,
5108                    lang: 'it-IT'
5109                },
5110                KIB_cs: {
5111                    id: 10,
5112                    lang: 'cs-CZ'
5113                },
5114                KIB_de: {
5115                    id: 10,
5116                    lang: 'de-DE'
5117                },
5118                KIB_en: {
5119                    id: 10,
5120                    lang: 'en-GB'
5121                },
5122                KIB_fr: {
5123                    id: 10,
5124                    lang: 'fr-FR'
5125                },
5126                KIB_hu: {
5127                    id: 10,
5128                    lang: 'hu-HU'
5129                },
5130                KIB_nl: {
5131                    id: 10,
5132                    lang: 'nl-NL'
5133                },
5134                KIB_pl: {
5135                    id: 10,
5136                    lang: 'pl-PL'
5137                },
5138                KID: {
5139                    id: 18,
5140                    lang: 'id-ID'
5141                },
5142                KIN: {
5143                    id: 7,
5144                    lang: 'en-GB'
5145                },
5146                KJ: {
5147                    id: 17,
5148                    lang: 'ja-JP'
5149                },
5150                KK: {
5151                    id: 16,
5152                    lang: 'ko-KR'
5153                },
5154                KM: {
5155                    id: 6,
5156                    lang: 'en-GB'
5157                },
5158                KMX: {
5159                    id: 12,
5160                    lang: 'es-MX'
5161                },
5162                KPH: {
5163                    id: 20,
5164                    lang: 'en-GB'
5165                },
5166                KS: {
5167                    id: 4,
5168                    lang: 'en-GB'
5169                },
5170                KT: {
5171                    id: 13,
5172                    lang: 'th-TH'
5173                },
5174                KU: {
5175                    id: 5,
5176                    lang: 'en-GB'
5177                },
5178                KVN: {
5179                    id: 19,
5180                    lang: 'vi-VN'
5181                },
5182                KW: {
5183                    id: 11,
5184                    lang: 'zh-TW'
5185                }
5186            };
5187
5188            var screenNames = {
5189                initial: 'initial',
5190                login: 'login',
5191                loginSMSCode: 'login-smsCode',
5192                loginPassword: 'login-password',
5193                OneClickLoginSendEmail: 'ocli-sendEmail',
5194                AutoSignUp: 'asu',
5195                hospitalitySignUp: 'osu',
5196                hospitalitySignUpSendEmail: 'osu-sendEmail',
5197                step1: 'register-step1',
5198                flat: 'register-flat',
5199                checkRegistered: 'check-registered',
5200            };
5201
5202            var Main = {
5203                needScrollAnimation: false,
5204                needFocus: true,
5205                scrollSpeed: 500,
5206                idNames: idNames,
5207                classNames: classNames,
5208                urls: urls,
5209                selectors: selectors,
5210                $header: $('#' + idNames.header),
5211                $stickyHeader: $('#' + idNames.stickyHeader),
5212                $modal: null,
5213                siteData: siteData,
5214                screenNames: screenNames,
5215                formWrapper: doc.querySelector('.' + classNames.checkCurrentScreen)
5216            };
5217
5218            Main.mode = LAUNCH_MODE.DEV;
5219
5220            Main.init = function () {
5221                if (doc.getElementById(Main.idNames.trigger)) {
5222                    if (win.shouldFormInitialFocus === undefined) {
5223                        win.shouldFormInitialFocus = true;
5224                    }
5225
5226                    Main.readyPreventUnload();
5227                    Main.addEventAll();
5228                    Form.PreForm.init();
5229                    Form.SignIn.init();
5230                    Form.Register.init();
5231                    Form.SendEmail.init();
5232
5233                    if (Main.isReEnterPage() && Main.isModalContent()) {
5234                        Form.Modal.open();
5235                    }
5236                }
5237            };
5238
5239            Main.addEventAll = function () {
5240                Main.addScroll();
5241                Main.attachSubmitEvent();
5242                Main.attachBeforeunloadEvent();
5243            };
5244
5245            Main.addScroll = function () {
5246                var timeID = null;
5247
5248                $(doc).on('scroll', function () {
5249                    isScrolling = true;
5250
5251                    if (timeID !== null) {
5252                        win.clearTimeout(timeID);
5253                    }
5254
5255                    timeID = win.setTimeout(function () {
5256                        isScrolling = false;
5257                    }, 200);
5258                });
5259            };
5260
5261            Main.attachSubmitEvent = function () {
5262                $(doc).on('submit', 'form', this.onSubmitForm.bind(this));
5263            };
5264
5265            Main.attachBeforeunloadEvent = function () {
5266                win.addEventListener('beforeunload', this.onBeforeunload.bind(this));
5267            };
5268
5269            Main.onSubmitForm = function () {
5270                delete doc.getElementById(Main.idNames.trigger).dataset.preventUnload;
5271            };
5272
5273            Main.onBeforeunload = function (e) {
5274                if (doc.getElementById(Main.idNames.trigger).dataset.preventUnload === 'true') {
5275                    e.preventDefault();
5276                    e.returnValue = '';
5277                }
5278            };
5279
5280            Main.readyPreventUnload = function () {
5281                var signinForm = doc.getElementById(Main.idNames.signinForm);
5282                var regForm = doc.getElementById(Main.idNames.regForm);
5283
5284                if (!signinForm || !regForm) {
5285                    return;
5286                }
5287
5288                if (!signinForm.classList.contains(Main.classNames.isHide) ||
5289                    !regForm.classList.contains(Main.classNames.isHide)) {
5290                    doc.getElementById(Main.idNames.trigger).dataset.preventUnload = 'true';
5291                }
5292            };
5293
5294            Main.show = function ($element) {
5295                var $currentPanel;
5296
5297                if (!$element || !$element.length) {
5298                    return;
5299                }
5300
5301                $element.removeClass(this.classNames.isHide);
5302
5303                // signin or registration form
5304                if ($element.attr('id') === Form.PreForm.idNames.root) {
5305                    Form.PreForm.$formCheckEmail.prop('disabled', false);
5306
5307                    if (Main.isModalContent()) {
5308                        $.colorbox.close();
5309                    }
5310                }
5311
5312                if ($element.attr('id') === Form.SignIn.idNames.signinForm) {
5313                    Main.clearInputError(Form.SignIn.names.loginPassword, false);
5314                }
5315
5316                // registration form
5317                if ($element.attr('id') === Form.Register.idNames.regForm) {
5318                    $element.attr('data-index-current', 1);
5319                    Form.Register.$description.removeClass('is-hide');
5320
5321                    $currentPanel = $element.find('[data-panel-index="1"]');
5322
5323                    if ($currentPanel.attr('data-panel-displayed') === 'false') {
5324                        Form.Register.clearInputErrorAll($currentPanel);
5325                        $currentPanel.data('data-panel-displayed', true);
5326                    }
5327
5328                    if ($('#as_agreeBoxCheked').length) {
5329                        win.suz_checkBoxDecision();
5330                    }
5331                }
5332
5333                if (Main.needFocus && !Main.isModalContent()) {
5334                    $element.on('animationend', function() {
5335                        Main.scrollToElement(idNames.trigger);
5336
5337                        setTimeout(function () {
5338                            Form.focusFirstInputElement($element);
5339                        }, 0);
5340
5341                        $element.off('animationend');
5342                    });
5343                } else {
5344                    Main.scrollToElement(idNames.trigger);
5345                }
5346            };
5347
5348            Main.focusFirstInputElement = function ($element) {
5349                var $inputElement = this.getFocusableFirstInputElement($element);
5350
5351                if ($inputElement.length) {
5352                    $inputElement.get(0).focus();
5353                }
5354            };
5355
5356            Main.hide = function ($element) {
5357                if (!$element || !$element.length) {
5358                    return;
5359                }
5360
5361                $element.addClass(this.classNames.isHide);
5362
5363                if ($element.attr('id') === Form.PreForm.idNames.root) {
5364                    Form.PreForm.$formCheckEmail.prop('disabled', true);
5365                }
5366
5367                if ($element.attr('id') === Form.SignIn.idNames.signinForm) {
5368                    win.KeyenceForm.ModalPasswordError.resetErrorCount();
5369                }
5370            };
5371
5372            Main.getEmailStatus = function (emailAddress) {
5373                var deferred = new $.Deferred();
5374                var options;
5375                var url;
5376
5377                if (typeof emailAddress !== 'string') {
5378                    return deferred.reject();
5379                }
5380
5381                url = win.suz_getCurrentDomain() + this.urls.getEmailStatus;
5382
5383                options = {
5384                    url: url,
5385                    data: {
5386                        emailAddress: emailAddress,
5387                        token: $("input[name='org.apache.struts.taglib.html.TOKEN']").attr('value')
5388                    },
5389                    dataType: 'jsonp',
5390                    jsonp: 'callback',
5391                    scriptCharset: 'UTF-8'
5392                }
5393
5394                $.ajax(options).done(function (data) {
5395                    deferred.resolve(data);
5396                }).fail(function (jqXHR, textStatus, errorThrown) {
5397                    Main.asyncErrorHundler(jqXHR.status, textStatus);
5398                    deferred.reject(jqXHR, textStatus, errorThrown);
5399                });
5400
5401                return deferred.promise();
5402            };
5403
5404            Main.asyncErrorHundler = function (status, err) {
5405                if (status && status === 401) {
5406                    window.location.href = suz_getCurrentDomain() + "/error/tokenError.jsp";
5407
5408                    return false;
5409                }
5410
5411                if (err) {
5412                    win.alert(err);
5413                }
5414
5415                return true;
5416            };
5417
5418            Main.insertErrorText = function (nameAttr, text) {
5419                var $formElement;
5420                var $errText;
5421                var $group;
5422
5423                if (typeof nameAttr === 'string') {
5424                    $formElement = $('input[name="' + nameAttr + '"');
5425                }
5426
5427                if (!$formElement || !$formElement.length) {
5428                    return;
5429                }
5430
5431                if ($('.prd-inputGroup').length) {
5432                    $group = $formElement.closest('.prd-inputGroup');
5433                } else {
5434                    $group = $formElement.parent();
5435                }
5436
5437                if ($group.length) {
5438                    $group.removeClass(KeyenceForm.AvailableValidator.targetClass.status);
5439                    $group.addClass(Main.classNames.isError);
5440
5441                    $errText = $group.find('.' + Main.classNames.errText);
5442
5443                    if (!$errText.length) {
5444                        return;
5445                    }
5446
5447                    if (typeof $errText.get(0).getAttribute('style') === 'string') {
5448                        $errText.css('display', 'block');
5449                    } else {
5450                        $errText.removeClass('is-hide');
5451                    }
5452
5453                    if (
5454                        text === 'data-message-required' &&
5455                        typeof $errText.attr('data-message-required') === 'string'
5456                    ) {
5457                        text = $errText.attr('data-message-required');
5458                    } else if (
5459                        text === 'data-message-mobile-number-format' &&
5460                        typeof $errText.attr('data-message-required') === 'string'
5461                    ) {
5462                        text = $errText.attr('data-message-mobile-number-format');
5463                    } else if (
5464                        text === 'data-message-verification-code-format' &&
5465                        typeof $errText.attr('data-message-required') === 'string'
5466                    ) {
5467                        text = $errText.attr('data-message-verification-code-format');
5468                    } else if (
5469                        text === 'data-message-email-address-format' &&
5470                        typeof $errText.attr('data-message-required') === 'string'
5471                    ) {
5472                        text = $errText.attr('data-message-email-address-format');
5473                    } else if (
5474                        text === 'data-message-zipcode-format'
5475                    ) {
5476                        text = $errText.attr('data-message-zipcode-format');
5477                    } else if (
5478                        text === 'data-message-email-address-registered'
5479                    ) {
5480                        text = $errText.attr('data-message-email-address-registered');
5481                    }
5482
5483                    if (typeof text === 'string') {
5484                        $errText.text(text);
5485                    }
5486                }
5487            };
5488
5489            Main.clearInputError = function (name, isSaveText) {
5490                var $formElement;
5491                var $errText;
5492                var $group;
5493
5494                if (typeof name === 'string') {
5495                    $formElement = $('input[name="' + name + '"');
5496                }
5497
5498                if (!$formElement || !$formElement.length) {
5499                    return;
5500                }
5501
5502                if ($('.prd-inputGroup').length) {
5503                    $group = $formElement.closest('.prd-inputGroup');
5504                } else {
5505                    $group = $formElement.parent();
5506                }
5507
5508                if ($group.length) {
5509                    $group.removeClass(Main.classNames.isError);
5510
5511                    $errText = $group.find('.' + Main.classNames.errText + ', .' + Main.classNames.errMessage);
5512
5513                    if (!$errText.length) {
5514                        return;
5515                    }
5516
5517                    if (typeof $errText.get(0).getAttribute('style') === 'string') {
5518                        $errText.css('display', 'none');
5519                    } else {
5520                        $errText.addClass('is-hide');
5521                    }
5522
5523                    if (!isSaveText) {
5524                        $errText.text('');
5525                    }
5526                }
5527            };
5528
5529            Main.enableFocus = function ($elements) {
5530                if ($elements.length) {
5531                    $elements.attr('tabindex', 0);
5532                }
5533            };
5534
5535            Main.disableFocus = function ($elements) {
5536                if ($elements.length) {
5537                    $elements.attr('tabindex', -1);
5538                }
5539            };
5540
5541            Main.scrollToElement = function (id) {
5542                var position = 0;
5543                var adjust = 0;
5544                var gap = 5;
5545
5546                if (typeof id !== 'string') {
5547                    return;
5548                }
5549
5550                if (Main.$header.length && !smallScreenMql.matches) {
5551                    adjust = Main.$header.height();
5552                }
5553
5554                position = ($('#' + id).offset().top - gap) - adjust;
5555
5556                if (Main.needScrollAnimation) {
5557                    $htmlBody.animate({
5558                        scrollTop: position
5559                    }, Main.scrollSpeed, 'ease');
5560                } else {
5561                    $htmlBody.animate({
5562                        scrollTop: position
5563                    }, 1);
5564                }
5565            };
5566
5567            Main.isShow = function ($element) {
5568                if (($element && $element.length) && !$element.hasClass(classNames.isHide)) {
5569                    return true;
5570                }
5571
5572                return false;
5573            };
5574
5575            Main.isModalContent = function () {
5576                if (doc.getElementById(Form.Modal.idNames.root)) {
5577                    return true;
5578                }
5579
5580                return false;
5581            };
5582
5583            Main.isReEnterPage = function () {
5584                if (
5585                    !Form.SignIn.$root.hasClass(classNames.isHide) ||
5586                    !Form.Register.$root.hasClass(classNames.isHide)
5587                ) {
5588                    return true;
5589                }
5590
5591                return false;
5592            };
5593
5594            Main.isInView = function (elem, isInside) {
5595                var rect = elem.getBoundingClientRect();
5596                var isInView;
5597
5598                if (isInside) {
5599                    isInView = (0 < rect.top) && (rect.bottom < window.innerHeight);
5600                } else {
5601                    isInView = (0 < rect.bottom) && (rect.top < window.innerHeight);
5602                }
5603
5604                return isInView;
5605            };
5606
5607            Main.setInitialFocus = function ($page) {
5608                var $firstInputElem;
5609
5610                if (!win.shouldFormInitialFocus || !$page || !$page.length || $page.hasClass(classNames.isHide)) {
5611                    return;
5612                }
5613
5614                $firstInputElem = this.getFocusableFirstInputElement($page);
5615
5616                if ($firstInputElem.length && this.isInView($firstInputElem.get(0), false)) {
5617                    Main.focusFirstInputElement($page);
5618                }
5619            };
5620
5621            Main.getFocusableFirstInputElement = function ($element) {
5622                var $inputElem = $(null);
5623                var $parents;
5624
5625                if (!$element || !$element.length) {
5626                    return $(null);
5627                }
5628
5629                if ($element.attr('id') === Form.Register.idNames.root) {
5630                    $parents = $element.find('.' + Form.Register.classNames.formPanel).eq(0);
5631                } else {
5632                    $parents = $element;
5633                }
5634
5635                if ($parents && $parents.length) {
5636                    $inputElem = $parents.find(Main.selectors.focusableInputElements).filter(':visible');
5637                }
5638
5639                return $inputElem;
5640            };
5641
5642            Main.focusFirstErrorItem = function ($argParentElement) {
5643                var $parentElement;
5644                var $errorItems;
5645                var $formElem;
5646                var availableValidator = win.KeyenceForm.AvailableValidator;
5647
5648                if ($argParentElement && $argParentElement.length) {
5649                    $parentElement = $argParentElement;
5650                } else {
5651                    $parentElement = $('#' + idNames.trigger);
5652                }
5653
5654                if ($parentElement.length) {
5655                    $errorItems = $parentElement.find('[id^="suz_div_"].is-error:visible, [id^="suz_div_"].' + availableValidator.targetClass.status + ':visible');
5656
5657                    if ($errorItems.length) {
5658                        $formElem = $errorItems.eq(0).find(Form.selectors.focusableInputElements);
5659                    }
5660
5661                    if ($formElem && $formElem.length) {
5662                        if ($formElem.length === 2) {
5663                            if (
5664                                $formElem.get(0).tagName.toLowerCase() === 'select' &&
5665                                $formElem.get(1).tagName.toLowerCase() === 'input'
5666                            ) {
5667                                $formElem.get(1).focus();
5668                            }
5669                        } else {
5670                            $formElem.get(0).focus();
5671                        }
5672                    }
5673                }
5674            };
5675
5676            Main.getMobileNumberStatus = function (mobileCountryId, mobileNumber) {
5677                var deferred = new $.Deferred();
5678                var options;
5679                var url;
5680
5681                if (typeof mobileCountryId !== 'string' || typeof mobileNumber !== 'string') {
5682                    return;
5683                }
5684
5685                url = win.suz_getCurrentDomain() + this.urls.getMobileNumberStatus;
5686
5687                options = {
5688                    url: url,
5689                    data: {
5690                        mobileCountryId: mobileCountryId,
5691                        mobileNumber: mobileNumber,
5692                        token: $("input[name='org.apache.struts.taglib.html.TOKEN']").attr('value')
5693                    },
5694                    dataType: 'jsonp',
5695                    jsonp: 'callback',
5696                    scriptCharset: 'UTF-8'
5697                };
5698
5699                $.ajax(options).done(function (data) {
5700                    deferred.resolve(data);
5701                }).fail(function (jqXHR, textStatus, errorThrown) {
5702                    Main.asyncErrorHundler(jqXHR.status, textStatus);
5703                    deferred.reject(jqXHR, textStatus, errorThrown);
5704                });
5705
5706                return deferred.promise();
5707            };
5708
5709            Main.createVerificationCode = function (mobileNumber, 
5709countyCode) {
5710                var deferred = new $.Deferred();
5711                var options;
5712                var url;
5713
5714                if (typeof mobileNumber !== 'string' || typeof countyCode !== 'string') {
5715                    return;
5716                    }
5717
5718                url = win.suz_getCurrentDomain() + this.urls.getMobileNumberStatus;
5719
5720                options = {
5721                    url: url,
5722                    data: {
5723                        mobileCountryId: mobileCountryId,
5724                        mobileNumber: mobileNumber
5725                    },
5726                    dataType: 'jsonp',
5727                    jsonp: 'callback',
5728                    scriptCharset: 'UTF-8'
5729                };
5730
5731                $.ajax(options).done(function (data) {
5732                    deferred.resolve(data);
5733                }).fail(function (jqXHR, textStatus, errorThrown) {
5734                    Main.asyncErrorHundler(jqXHR.status, textStatus);
5735                    deferred.reject(jqXHR, textStatus, errorThrown);
5736                });
5737
5738                return deferred.promise();
5739            };
5740
5741            Main.getRequiredMessage = function (name) {
5742                var wrapper;
5743                var errTextElement;
5744                var message = '';
5745
5746                if (typeof name === 'string') {
5747                    wrapper = doc.getElementById('suz_div_' + name);
5748                }
5749
5750                if (wrapper) {
5751                    errTextElement = wrapper.querySelector('.js-formErrText');
5752                }
5753
5754                if (errTextElement) {
5755                    message = errTextElement.getAttribute('data-message-required');
5756                }
5757
5758                return message;
5759            };
5760
5761            Main.isEditProfileForm = function () {
5762                var form = doc.querySelector('form[name="user_profileActionForm"]');
5763
5764                return form !== null;
5765            };
5766
5767            Main.changeCurrentScreenName = function (screenName, stepNumber) {
5768                var formFilter = win.KeyenceForm.FormFilter;
5769                var WechatLoginFlow = win.KeyenceForm.WechatLoginFlow;
5770                var prefix = '';
5771                var formType = '';
5772
5773                if (!this.formWrapper) {
5774                    return;
5775                }
5776
5777                formType = formFilter.General.getFormType();
5778
5779                if (this.formWrapper.classList.contains(WechatLoginFlow.classNames.isLoginActive) ||
5780                    formType === formFilter.General.FORM_TYPE.WECHAT) {
5781                    prefix = 'wechat-';
5782                } else if (formType === formFilter.General.FORM_TYPE.MOBILE_NUMBER) {
5783                    prefix = 'mobile-';
5784                } else if (formType === formFilter.General.FORM_TYPE.EMAIL) {
5785                    prefix = 'email-';
5786                }
5787
5788                if (screenName === 'step' && stepNumber) {
5789                    this.formWrapper.dataset.currentScreenName = prefix + 'register-step' + stepNumber;
5790                } else if (screenName) {
5791                    this.formWrapper.dataset.currentScreenName = prefix + screenName;
5792                }
5793            };
5794
5795            Main.checkRegularMember = function (emailAddressValue) {
5796                var deferred = new $.Deferred();
5797                var options;
5798                var url;
5799
5800                if (typeof emailAddressValue !== 'string') {
5801                    return deferred.reject();
5802                }
5803
5804                url = win.suz_getCurrentDomain() + this.urls.checkRegularMember;
5805
5806                options = {
5807                    url: url,
5808                    data: {
5809                        emailAddress: emailAddressValue,
5810                        token: $("input[name='org.apache.struts.taglib.html.TOKEN']").attr('value')
5811                    },
5812                    dataType: 'jsonp',
5813                    jsonp: 'callback',
5814                    scriptCharset: 'UTF-8'
5815                }
5816
5817                $.ajax(options).done(function (data) {
5818                    deferred.resolve(data);
5819                }).fail(function (jqXHR, textStatus, errorThrown) {
5820                    Main.asyncErrorHundler(jqXHR.status, textStatus);
5821                    deferred.reject(jqXHR, textStatus, errorThrown);
5822                });
5823
5824                return deferred.promise();
5825            };
5826
5827            return Main;
5828        }());
5829
5830        /**
5831         * Signin or Registration
5832         */
5833        Form.PreForm = (function () {
5834            var idNames = {
5835                btnConitnue: 'js-form-btnCheckRegistered',
5836                btnMobileContinue: 'js-form-btnCheckMobileRegistered',
5837                root: 'js-multiStepForm-signinOrRegister',
5838                showEmailForm: 'js-showEmailForm',
5839                multiStepForm: 'js-multiStepForm',
5840            };
5841
5842            var classNames = {
5843                formFilterGeneral: 'js-formFilterGeneral',
5844                formFilterGeneralTrigger: 'js-formFilterGeneral-trigger',
5845                isFilterEmail: 'is-filter-email',
5846                isFilterMobileNumber: 'is-filter-mobileNumber',
5847                isFilterDefault: 'is-filter-default',
5848            };
5849
5850            var PreForm = {
5851                idNames: idNames,
5852                $root: $('#' + idNames.root),
5853                $btnContinue: $('#' + idNames.btnConitnue),
5854                $btnMobileContinue: $('#' + idNames.btnMobileContinue),
5855                $formCheckEmail: $('input[name="checkRegistered"]'),
5856                $formCheckMobileNumber: $('input[name="checkMobileNumber"]'),
5857                $formFilterGeneral: $('.' + classNames.formFilterGeneral),
5858                $formFilterGeneralTriggers: $('.' + classNames.formFilterGeneralTrigger),
5859                $buttonShowEmailForm: $('#' + idNames.showEmailForm),
5860                $multiStepFormTrigger: $('#' + idNames.multiStepForm),
5861                $passwordAssistanceFormTrigger: $('form[name="user_passwordAssistanceActionForm"]'),
5862            };
5863
5864            var signInMessageEvent = {
5865                handleEvent: null,
5866            };
5867
5868            PreForm.isClickContinueRunning = false;
5869
5870            PreForm.init = function () {
5871                if (this.$root.length) {
5872                    this.$root.find('svg').attr('focusable', false);
5873                    this.addEventAll();
5874                    Form.setInitialFocus(this.$root);
5875                }
5876            };
5877
5878            PreForm.addEventAll = function () {
5879                this.clickContinueButton();
5880                this.attachEmailFormKeydownEvent();
5881                this.onMessageAction();
5882            };
5883
5884            PreForm.clickContinueButton = function () {
5885                PreForm.$btnContinue.on('click', this.onClickContinue.bind(this));
5886                PreForm.$btnMobileContinue.on('click', this.onClickContinue.bind(this));
5887            };
5888
5889            PreForm.onClickContinue = function (e) {
5890                var BlankFieldValidator = KeyenceForm.BlankFieldValidator;
5891                var MobileNumberValidator = KeyenceForm.MobileNumberValidator;
5892                var PatternValidator = KeyenceForm.PatternMatchValidator;
5893                var AvailableValidator = KeyenceForm.AvailableValidator;
5894                var ControlErrorDisplay = KeyenceForm.ControlErrorDisplay;
5895                var SMSCodeButton = KeyenceForm.SMSCodeButton;
5896                var WechatLoginFlow = KeyenceForm.WechatLoginFlow;
5897                var formType = KEYENCE.Form.FormFilter.General.getFormType()
5898                var formInfo = PreForm.getFormInfo();
5899                var FormFilter = KEYENCE.Form.FormFilter;
5900                var targetInput = doc.querySelector('input[name="' + formInfo.name + '"]');
5901                var multiStepFormElem = doc.getElementById(PreForm.idNames.multiStepForm);
5902                var fieldWrapper = null;
5903                var errorText = null;
5904                var mobileContinueButton = PreForm.$btnMobileContinue[0];
5905
5906                if (e.type === 'click'
5907                    && win.AnalyticsViews
5908                    && PreForm.checkMessageTargetForm()) {
5909                    return;
5910                }
5911
5912                if (e.type === 'message'
5913                    && e.data !== AnalyticsViews.Utility.messageNames.nextForm) {
5914                    return;
5915                }
5916
5917                if (targetInput) {
5918                    if (targetInput.classList.contains('js-check-blank') && !BlankFieldValidator.isBlank(targetInput)) {
5919                        if (!ControlErrorDisplay.isTriggerClicked(PreForm.$btnContinue.get(0))) {
5920                            BlankFieldValidator.config.isClickedContinueButton = true;
5921                            ControlErrorDisplay.setTriggerClickedData(PreForm.$btnContinue.get(0));
5922
5923                            if (targetInput.classList.contains('js-check-pattern')) {
5924                                if (AvailableValidator.config.isRunningVerification) {
5925                                    PreForm.isClickContinueRunning = true;
5926                                }
5927
5928                                PatternValidator.updateFieldStatus(targetInput);
5929
5930                                if (targetInput.classList.contains(MobileNumberValidator.classNames.status) ||
5931                                    targetInput.classList.contains(PatternValidator.classNames.status)) {
5932                                    targetInput.focus();
5933
5934                                    return;
5935                                }
5936
5937                                fieldWrapper = targetInput.closest('.is-unavailable');
5938
5939                                if (fieldWrapper) {
5940                                    errorText = fieldWrapper.querySelector('.js-formErrText');
5941                                }
5942
5943                                if (errorText) {
5944                                    errorText.classList.remove('is-hide');
5945                                }
5946
5947                                PreForm.isClickContinueRunning = false;
5948                            }
5949                        }
5950
5951                        AvailableValidator.updatePreFormBlockStatus(formType, FormFilter, PreForm, e);
5952
5953                        if (AvailableValidator.config.isPreFormContinueBlocked) {
5954                            return;
5955                        }
5956                    }
5957                }
5958
5959                // for beforeunload event
5960                if (multiStepFormElem) {
5961                    multiStepFormElem.dataset.preventUnload = 'true';
5962                }
5963
5964                BlankFieldValidator.config.isClickedContinueButton = true;
5965                ControlErrorDisplay.setTriggerClickedData(PreForm.$btnContinue.get(0));
5966
5967                if (targetInput) {
5968                    if (targetInput.classList.contains('js-check-blank') && BlankFieldValidator.isBlank(targetInput)) {
5969                        MultiStepForm.insertErrorText(formInfo.name, 'data-message-required');
5970                        targetInput.classList.add(BlankFieldValidator.classNames.status);
5971                        targetInput.classList.remove(MobileNumberValidator.classNames.status);
5972                        targetInput.classList.remove(PatternValidator.classNames.status);
5973                        targetInput.focus();
5974
5975                        return;
5976                    } else {
5977                        MultiStepForm.clearInputError(formInfo.name, true);
5978                        targetInput.classList.remove(BlankFieldValidator.classNames.status);
5979                    }
5980                }
5981
5982                if (formType === FormFilter.General.FORM_TYPE.MOBILE_NUMBER) {
5983                    if (PreForm.$formCheckMobileNumber.hasClass('js-checkMobileNumberFormat')) {
5984                        KeyenceForm.MobileNumberValidator.checkFormat(formInfo.countryCode, formInfo.mobileNumber ).done(function (status) {
5985                            if (status.message) {
5986                                Form.insertErrorText(formInfo.name, status.message);
5987                                targetInput.focus();
5988                            } else {
5989                                if (WechatLoginFlow.isLoginActive()) {
5990                                    WechatLoginFlow.getStatus(WechatLoginFlow.cacheId.value, formInfo.countryCode, formInfo.mobileNumber, formInfo)
5991                                        .then((result) => {
5992                                            if (!result.status) {
5993                                                if (SMSCodeButton.maxCountOver.errorFlag === result.maxCntOverFlg) {
5994                                                    SMSCodeButton.setMaxCountOverDisabled(mobileContinueButton, formInfo.mobileNumber);
5995                                                }
5996
5997                                                Form.insertErrorText(formInfo.name, result.message);
5998                                                targetInput.focus();
5999                                                return;
6000                                            }
6001
6002                                            if (result.wechatStateCode === WechatLoginFlow.STATE_CODE.R20) {
6003                                                WechatLoginFlow.STATE_CODE.current = result.wechatStateCode;
6004                                                WechatLoginFlow.showRegisterForm(result.wechatStateCode, formInfo.mobileNumberCode, formInfo.mobileNumber, formInfo);
6005                                            } else if (result.wechatStateCode !== WechatLoginFlow.STATE_CODE.L10) {
6006                                                WechatLoginFlow.STATE_CODE.current = result.wechatStateCode;
6007                                                WechatLoginFlow.showLoginForm(result.wechatStateCode, formInfo.mobileNumberCode, formInfo.mobileNumber, formInfo);
6008                                            } else {
6009                                                WechatLoginFlow.STATE_CODE.current = result.wechatStateCode;
6010                                                WechatLoginFlow.submitLoginForm(WechatLoginFlow.cacheId.value, formInfo.mobileNumberCode, formInfo.mobileNumber, formInfo);
6011                                            }
6012                                        })
6013                                        .catch((error) => {
6014                                            return;
6015                                        });
6016
6017                                    return;
6018                                }
6019
6020                                Form.getMobileNumberStatus(formInfo.countryCode, formInfo.mobileNumber).done(function (status) {
6021                                    if (status.message) {
6022                                        Form.insertErrorText(formInfo.name, status.message);
6023                                        targetInput.focus();
6024                                    } else {
6025                                        PreForm.showNextForm(status.isRegistered, formInfo, PreForm.isAutoSignupUser(status));
6026                                    }
6027                                });
6028                            }
6029                        });
6030                    } else {
6031                        Form.getMobileNumberStatus(formInfo.countryCode, formInfo.mobileNumber).done(function (status) {
6032                            if (status.message) {
6033                                Form.insertErrorText(formInfo.name, status.message);
6034                                targetInput.focus();
6035                            } else {
6036                                PreForm.showNextForm(status.isRegistered, formInfo, PreForm.isAutoSignupUser(status));
6037                            }
6038                        });
6039                    }
6040                } else {
6041                    Form.getEmailStatus(formInfo.value).done(function (status) {
6042                        // done
6043                        if (status.message) {
6044                            Form.insertErrorText(formInfo.name, status.message);
6045                            targetInput.focus();
6046                        } else {
6047                            PreForm.showNextForm(status.isRegistered, formInfo, PreForm.isEmailAutoSignupUser(status));
6048                        }
6049                    });
6050                }
6051            };
6052
6053            PreForm.showNextForm = function (isRegistered, formInfo, isAutoSignup) {
6054                var formType = KEYENCE.Form.FormFilter.General.getFormType();
6055                var $email;
6056                var FormFilter = KEYENCE.Form.FormFilter;
6057                var id;
6058                var currentScreen = '';
6059                var SMSCodeButton = KEYENCE.Form.SMSCodeButton;
6060                var $verificationCodeCreateTrigger = null;
6061                var mobileContinueButton = PreForm.$btnMobileContinue[0];
6062
6063                if (typeof isRegistered !== 'boolean' || !formInfo) {
6064                    return;
6065                }
6066
6067                if (formType === FormFilter.General.FORM_TYPE.MOBILE_NUMBER) {
6068                    if (PreForm.$btnMobileContinue.length
6069                        && PreForm.$btnMobileContinue.is(':disabled')) {
6070                        return;
6071                    }
6072                }
6073
6074                if (isRegistered || isAutoSignup) {
6075                    if (formType === FormFilter.General.FORM_TYPE.MOBILE_NUMBER) {
6076                        Form.SignIn.$loginMobileNumber.val(formInfo.mobileNumber);
6077                        document.getElementById('loginCountryNumber').value = formInfo.mobileNumberCode;
6078                        $verificationCodeCreateTrigger = Form.SignIn.$root.find('.' + SMSCodeButton.classNames.trigger);
6079
6080                        if ($verificationCodeCreateTrigger.length
6081                            && PreForm.$btnMobileContinue.length) {
6082                            SMSCodeButton.onclick(null, $verificationCodeCreateTrigger[0]).then(function (status) {
6083                                if (status.message) {
6084                                    if (SMSCodeButton.maxCountOver.errorFlag === status.maxCntOverFlg) {
6085                                        SMSCodeButton.setMaxCountOverDisabled(mobileContinueButton, formInfo.mobileNumber);
6086                                    }
6087
6088                                    MultiStepForm.insertErrorText(formInfo.name, status.message);
6089
6090                                    Form.SignIn.$loginMobileNumber.val('');
6091                                    document.getElementById('loginCountryNumber').value = '';
6092                                } else {
6093                                    FormFilter.SignIn.changeAutoSignUp(isAutoSignup, formType);
6094
6095                                    if (!isAutoSignup) {
6096                                        $('#' + FormFilter.SignIn.idNames.smscode).trigger('click');
6097                                    }
6098
6099                                    if (Form.SignIn.$root.hasClass(FormFilter.SignIn.classNames.isFilterAutoSignUp
6099)) {
6100                                        currentScreen = 'AutoSignUp';
6101                                    } else if (Form.SignIn.$root.hasClass(FormFilter.SignIn.classNames.isFilterPassword)) {
6102                                        currentScreen = 'loginPassword';
6103                                    } else {
6104                                        currentScreen = 'loginSMSCode';
6105                                    }
6106
6107                                    PreForm.showNextSignInForm(formInfo, currentScreen);
6108                                }
6109                            }).catch(function (error) {
6110                                if (error?.errorMessage) {
6111                                    MultiStepForm.insertErrorText(formInfo.name, error.message);
6112                                }
6113
6114                                Form.SignIn.$loginMobileNumber.val('');
6115                                document.getElementById('loginCountryNumber').value = '';
6116                            });
6117                        }
6118                    } else {
6119                        if ((isRegistered && isAutoSignup) || (isRegistered && !isAutoSignup)) {
6120                            Form.SignIn.$loginUserName.val(formInfo.value);
6121                            Form.SignIn.$loginPassword.each(function () {
6122                                this.removeAttribute('disabled');
6123                            });
6124
6125                            currentScreen = 'login';
6126                        } else {
6127                            Form.SendEmail.enterEmailAddress();
6128                            FormFilter.SignIn.changeAutoSignUp(isAutoSignup, formType);
6129
6130                            if (Form.SignIn.$root.hasClass(FormFilter.SignIn.classNames.isFilterAutoSignUp)) {
6131                                currentScreen = 'hospitalitySignUp';
6132                            } else {
6133                                currentScreen = 'login';
6134                            }
6135                        }
6136
6137                        PreForm.showNextSignInForm(formInfo, currentScreen);
6138                    }
6139                } else {
6140                    if (formType === FormFilter.General.FORM_TYPE.MOBILE_NUMBER) {
6141                        $('#' + Form.Register.idNames.mobileNumber).val(formInfo.mobileNumber);
6142                        $('#suz_mobileCountryNumber').val(formInfo.mobileNumberCode);
6143                        $verificationCodeCreateTrigger = Form.Register.$root.find('.' + SMSCodeButton.classNames.trigger);
6144
6145                        if ($verificationCodeCreateTrigger.length
6146                            && PreForm.$btnMobileContinue.length) {
6147                            SMSCodeButton.onclick(null, $verificationCodeCreateTrigger[0]).then(function (status) {
6148                                if (status.message) {
6149                                    if (SMSCodeButton.maxCountOver.errorFlag === status.maxCntOverFlg) {
6150                                        SMSCodeButton.setMaxCountOverDisabled(mobileContinueButton, formInfo.mobileNumber);
6151                                    }
6152
6153                                    MultiStepForm.insertErrorText(formInfo.name, status.message);
6154
6155                                    $('#' + Form.Register.idNames.mobileNumber).val('');
6156                                    $('#suz_mobileCountryNumber').val('');
6157                                } else {
6158                                    $('#' + Form.Register.idNames.mobileNumber).prop('disabled', true);
6159                                    $('#suz_mobileCountryNumber').prop('disabled', true);
6160
6161                                    PreForm.showNextRegisterForm(formInfo);
6162                                }
6163                            }).catch(function (error) {
6164                                if (error?.errorMessage) {
6165                                    MultiStepForm.insertErrorText(formInfo.name, error.message);
6166                                }
6167
6168                                $('#' + Form.Register.idNames.mobileNumber).val('');
6169                                $('#suz_mobileCountryNumber').val('');
6170                            });
6171                        }
6172                    } else {
6173                        $email = $('#' + Form.Register.idNames.email);
6174
6175                        $email.val(formInfo.value);
6176                        win.suz_callRegValidator($email.attr('name'), $email.val());
6177
6178                        PreForm.showNextRegisterForm(formInfo);
6179                    }
6180                }
6181
6182                if (Form.isModalContent()) {
6183                    Form.Modal.open();
6184                }
6185            };
6186
6187            PreForm.showNextSignInForm = function (formInfo, currentScreen) {
6188                var countryCode = '';
6189                var mobileNumber = '';
6190
6191                Form.show(Form.SignIn.$root);
6192                Form.hide(Form.PreForm.$root);
6193
6194                Form.changeCurrentScreenName(Form.screenNames[currentScreen]);
6195
6196                Form.clearInputError(formInfo.name, false);
6197
6198                countryCode = $('#checkCountryNumber').find('option:selected').attr('data-code');
6199                mobileNumber = $('#checkMobileNumber').val();
6200
6201                $('#loginFullMobileNumber').val(countryCode + mobileNumber);
6202            };
6203
6204            PreForm.showNextRegisterForm = function (formInfo) {
6205                Form.Register.showPanelByIndex(0);
6206
6207                Form.show(Form.Register.$root);
6208                Form.hide(Form.PreForm.$root);
6209
6210                Form.changeCurrentScreenName(Form.screenNames.step1);
6211
6212                Form.clearInputError(formInfo.name, false);
6213            };
6214
6215            PreForm.onMessageAction = function () {
6216                signInMessageEvent.handleEvent = PreForm.onClickContinue;
6217
6218                win.addEventListener('message', signInMessageEvent, false);
6219            };
6220
6221            PreForm.attachEmailFormKeydownEvent = function () {
6222                PreForm.$formCheckEmail.on('keydown.enterKeySubmit', PreForm.onKeydownEmailForm);
6223
6224                if (PreForm.$formCheckMobileNumber.length) {
6225                    PreForm.$formCheckMobileNumber.on('keydown.enterKeySubmit', PreForm.onKeydownEmailForm);
6226                }
6227            };
6228
6229            PreForm.onKeydownEmailForm = function (event) {
6230                var AvailableValidator = win.KeyenceForm.AvailableValidator;
6231                var PatternMatchValidator = win.KeyenceForm.PatternMatchValidator;
6232                var ControlErrorDisplay = KeyenceForm.ControlErrorDisplay;
6233                var $field = null;
6234                var FormFilter = KEYENCE.Form.FormFilter;
6235                var formType = KEYENCE.Form.FormFilter.General.getFormType();
6236
6237                if (event.key === 'Enter') {
6238                    $field = PreForm.$root.find('.' + AvailableValidator.targetClass.emailAddress + ':visible, .' + AvailableValidator.targetClass.mobileNumber + ':visible');
6239
6240                    if ($field.length === 1) {
6241                        if (!ControlErrorDisplay.isTriggerClicked(event.currentTarget)) {
6242                            AvailableValidator.runValidate($(this).attr('name'), true).always(function (field) {
6243                                var errorFieldWrapper = field.closest('.is-error');
6244
6245                                if (errorFieldWrapper) {
6246                                    errorFieldWrapper.classList.remove('is-error');
6247                                }
6248
6249                                AvailableValidator.changeDisplayNoteText(field.name);
6250
6251                                if (formType === FormFilter.General.FORM_TYPE.MOBILE_NUMBER
6252                                    && PreForm.$btnMobileContinue.length) {
6253                                    PreForm.$btnMobileContinue.get(0).click();
6254                                } else {
6255                                    PreForm.$btnContinue.get(0).click();
6256                                }
6257                            });
6258
6259                            return false;
6260                        }
6261
6262                        AvailableValidator.runValidate($(this).attr('name'), true).always(function (field) {
6263                            PatternMatchValidator.updateFieldStatus(field);
6264                            AvailableValidator.changeDisplayNoteText(field.name);
6265
6266                            if (formType === FormFilter.General.FORM_TYPE.MOBILE_NUMBER
6267                                && PreForm.$btnMobileContinue.length) {
6268                                PreForm.$btnMobileContinue.get(0).click();
6269                            } else {
6270                                PreForm.$btnContinue.get(0).click();
6271                            }
6272                        });
6273                    } else {
6274                        if (formType === FormFilter.General.FORM_TYPE.MOBILE_NUMBER
6275                            && PreForm.$btnMobileContinue.length) {
6276                            PreForm.$btnMobileContinue.get(0).click();
6277                        } else {
6278                            PreForm.$btnContinue.get(0).click();
6279                        }
6280                    }
6281
6282                    return false;
6283                }
6284            };
6285
6286            PreForm.getFormInfo = function () {
6287                var FormFilter = KEYENCE.Form.FormFilter;
6288                var formInfo = {
6289                    name: PreForm.$formCheckEmail.attr('name'),
6290                    value: PreForm.$formCheckEmail.val()
6291                };
6292
6293                if (FormFilter.General.getFormType() === FormFilter.General.FORM_TYPE.MOBILE_NUMBER) {
6294                    formInfo = {
6295                        name: $('#checkMobileNumber').attr('name'),
6296                        mobileNumber: $('#checkMobileNumber').val(),
6297                        countryCode: $('#checkCountryNumber').val(),
6298                        mobileNumberCode: $('#checkCountryNumber').find('option:selected').attr('data-code'),
6299                    };
6300                }
6301
6302                return formInfo;
6303            };
6304
6305            PreForm.getMobileCountryInfo = function () {
6306                var info = {};
6307                var $select = $('#checkCountryNumber');
6308                var $option;
6309
6310                if (!$select.length) {
6311                    return info;
6312                }
6313
6314                $option = $select.find('option:selected');
6315
6316                info.id = $select.val();
6317                info.code = $option.attr('data-code');
6318                info.text = $option.text();
6319
6320                return info;
6321            };
6322
6323            PreForm.isAutoSignupUser = function (accountStatus) {
6324                if (accountStatus && (accountStatus.isAutoSignup && doc.getElementById(Form.SignIn.idNames.asuLoginButton))) {
6325                    return true;
6326                }
6327
6328                return false;
6329            };
6330
6331            PreForm.isEmailAutoSignupUser = function (accountStatus) {
6332                if (accountStatus && (accountStatus.isAutoSignup && doc.getElementById(Form.SignIn.idNames.asuSendMailButton))) {
6333                    return true;
6334                }
6335
6336                return false;
6337            };
6338
6339            PreForm.changeDisplayForm = function (isRegistered, formInfo, isAutoSignup) {
6340                if (typeof isRegistered !== 'boolean' || !formInfo) {
6341                    return;
6342                }
6343
6344                if (isRegistered || isAutoSignup) {
6345                    Form.show(Form.SignIn.$root);
6346                    Form.hide(Form.PreForm.$root);
6347                } else {
6348                    Form.show(Form.Register.$root);
6349                    Form.hide(Form.PreForm.$root);
6350                }
6351            };
6352
6353            PreForm.checkMessageTargetForm = function () {
6354                var isTargetForm = false;
6355
6356                if (PreForm.$multiStepFormTrigger.length || PreForm.$passwordAssistanceFormTrigger.length) {
6357                    isTargetForm = true;
6358                } else {
6359                    isTargetForm = false;
6360                }
6361
6362                return isTargetForm;
6363            };
6364
6365            return PreForm;
6366        }());
6367
6368        Form.SignIn = (function () {
6369            var canSubmit = false;
6370
6371            var idNames = {
6372                signinForm: 'js-multiStepForm-signin',
6373                btnBack: 'js-signinForm-btnBackToEmail',
6374                btnBackToMobileNumber: 'js-signinForm-btnBackToMobile',
6375                loginUserName: 'loginUserName',
6376                loginMobileNumber: 'loginMobileNumber',
6377                loginPassword: 'loginPassword',
6378                loginVerificationCode: 'loginVerificationCode',
6379                asuLoginButton: 'js-form-autoSignupSwitch',
6380                registerLoginPassword: 'suz_registerLoginPassword',
6381                btnCheckSendEmail: 'js-form-btnCheckSendMail',
6382                asuSendMailButton: 'js-form-btnCheckSendAutoSignupMail',
6383                btnForwardToRegister: 'js-signinForm-btnForwardToRegister',
6384            };
6385
6386            var names = {
6387                loginActionForm: $('#' + idNames.signinForm).parent().attr('name'),
6388                loginPassword: 'loginPassword'
6389            };
6390
6391            var SignIn = {
6392                idNames: idNames,
6393                names: names,
6394                $root: $('#' + idNames.signinForm),
6395                $loginUserName: $('#' + idNames.loginUserName),
6396                $btnBackToEmail: $('#' + idNames.btnBack),
6397                $btnBackToMobile: $('#' + idNames.btnBackToMobileNumber),
6398                $loginActionForm: $('form[name="' + names.loginActionForm + '"]'),
6399                $loginMobileNumber: $('#' + idNames.loginMobileNumber),
6400                $loginPassword: $('#' + idNames.loginPassword),
6401                $loginVerificationCode: $('#' + idNames.loginVerificationCode),
6402                $registerLoginPassword: $('#' + idNames.registerLoginPassword),
6403                $btnCheckSendEmail: $('#' + idNames.btnCheckSendEmail),
6404                $asuSendMailButton: $('#' + idNames.asuSendMailButton),
6405                $btnForwardToRegister: $('#' + idNames.btnForwardToRegister),
6406            };
6407
6408            var backMessageEvent = {
6409                handleEvent: null,
6410            };
6411
6412            var forwardMessageEvent = {
6413                handleEvent: null,
6414            };
6415
6416            SignIn.init = function () {
6417                if (this.$root.length) {
6418                    this.initAttributes();
6419                    this.addEventAll();
6420                    this.checkSendEmailButton();
6421
6422                    if (Form.isReEnterPage() && !win.KeyenceEnquete.hasError()) {
6423                        Form.setInitialFocus(this.$root);
6424                        Form.scrollToElement(idNames.signinForm);
6425                    }
6426                }
6427            };
6428
6429            SignIn.initAttributes = function () {
6430                this.$root.find('svg').attr('focusable', false);
6431                this.$loginUserName.prop('disabled', true);
6432            };
6433
6434            SignIn.addEventAll = function () {
6435                this.clickBackButton();
6436                this.clickForwardButton();
6437                this.submitSignin();
6438                this.attachKeydownFormInputEvent();
6439                this.onMessageAction();
6440            };
6441
6442            SignIn.clickBackButton = function () {
6443                this.$btnBackToEmail.on('click', this.onclickBackButton.bind(this));
6444
6445                if (this.$btnBackToMobile.length) {
6446                    this.$btnBackToMobile.on('click', this.onclickBackButton.bind(this));
6447                }
6448            };
6449
6450            SignIn.clickForwardButton = function () {
6451                if (this.$btnForwardToRegister.length) {
6452                    this.$btnForwardToRegister.on('click', this.onclickForwardButton.bind(this));
6453                }
6454            };
6455
6456            SignIn.onclickBackButton = function (event) {
6457                var AvailableValidator = win.KeyenceForm.AvailableValidator;
6458                var SMSCodeButton = KEYENCE.Form.SMSCodeButton;
6459
6460                event.preventDefault();
6461
6462                if (!win.AnalyticsViews || !Form.PreForm.checkMessageTargetForm()) {
6463                    if (SMSCodeButton && SMSCodeButton.maxCountOver.isLimitOver) {
6464                        SMSCodeButton.removeMaxCountOverDisabledInScreen(Form.SignIn.$root[0]);
6465                    }
6466
6467                    AvailableValidator.hideNoteText(Form.PreForm.$root);
6468
6469                    Form.show(Form.PreForm.$root);
6470                    Form.hide(this.$root);
6471
6472                    KEYENCE.Form.FormFilter.SignIn.clickLoginPasswordTrigger();
6473                    KEYENCE.Form.WechatLoginFlow.resetLoginFlow();
6474                }
6475            };
6476
6477            SignIn.onclickForwardButton = function (event) {
6478                var $email = null;
6479                var formInfo = null;
6480
6481                event.preventDefault();
6482
6483                if (!win.AnalyticsViews || !Form.PreForm.checkMessageTargetForm()) {
6484                    $email = $('#' + Form.Register.idNames.email);
6485                    formInfo = Form.PreForm.getFormInfo();
6486
6487                    if (!formInfo.value || !$email.length) {
6488                        return;
6489                    }
6490
6491                    $email.val(formInfo.value);
6492                    win.suz_callRegValidator($email.attr('name'), $email.val());
6493
6494                    Form.Register.showPanelByIndex(0);
6495                    KEYENCE.Form.FormFilter.SignIn.clickLoginPasswordTrigger();
6496
6497                    Form.show(Form.Register.$root);
6498                    Form.hide(Form.SignIn.$root);
6499
6500                    Form.clearInputError(Form.SignIn.$loginUserName.attr('name'), false);
6501                }
6502            };
6503
6504            SignIn.onMessageAction = function () {
6505                backMessageEvent.handleEvent = SignIn.changeBackDisplayForm;
6506                forwardMessageEvent.handleEvent = SignIn.changeForwardDisplayForm
6507
6508                win.addEventListener('message', backMessageEvent, false);
6509                win.addEventListener('message', forwardMessageEvent, false);
6510            };
6511
6512            SignIn.checkSendEmailButton = function () {
6513                if (this.$btnCheckSendEmail.length) {
6514                    Form.SendEmail.attachClickSendEmailButton(this.$btnCheckSendEmail);
6515                }
6516
6517                if (this.$asuSendMailButton.length) {
6518                    Form.SendEmail.attachClickSendEmailButton(this.$asuSendMailButton);
6519                }
6520            };
6521
6522            SignIn.submitSignin = function () {
6523                if (this.$loginActionForm.length) {
6524                    this.$loginActionForm.on('submit', this.onSubmitLoginAction.bind(this));
6525                }
6526            };
6527
6528            SignIn.onSubmitLoginAction = function () {
6529                SignIn.$loginUserName.prop('disabled', false);
6530            };
6531
6532            SignIn.validateForm = function (trigger) {
6533                var BlankFieldValidator = KEYENCE.Form.BlankFieldValidator;
6534                var PatternValidator = KEYENCE.Form.PatternMatchValidator;
6535                var ControlErrorDisplay = KEYENCE.Form.ControlErrorDisplay
6536                var FormFilter = KEYENCE.Form.FormFilter;
6537                var WechatLoginFlow = KEYENCE.Form.WechatLoginFlow;
6538                var formTypeGeneral = FormFilter.General.getFormType();
6539                var formTypeSignIn = FormFilter.SignIn.getFormType();
6540                var inputBlankCheckTargetList = $.makeArray(SignIn.$root.find('.js-check-blank:visible'));
6541                var ModalPasswordError = KEYENCE.Form.ModalPasswordError;
6542                var controlErrorDispalyTrigger = null;
6543                var isVerificationCodeChecking = false;
6544                var loginButton = doc.getElementById('js-form-regBtnSignin');
6545                var AsuLoginButton = doc.getElementById('js-form-autoSignupSwitch');
6546
6547                controlErrorDispalyTrigger = trigger ? trigger : ControlErrorDisplay.browserValidaterTarget;
6548
6549                if (formTypeGeneral === FormFilter.General.FORM_TYPE.EMAIL) {
6550                    ControlErrorDisplay.setTriggerClickedData(controlErrorDispalyTrigger);
6551
6552                    if (inputBlankCheckTargetList.length && BlankFieldValidator.validateFieldAll(inputBlankCheckTargetList)) {
6553                        SignIn.$loginPassword[0] && SignIn.$loginPassword[0].focus();
6554
6555                        return;
6556                    }
6557
6558                    Form.clearInputError(Form.SignIn.$loginPassword.attr('name'), true);
6559                    FormFilter.General.enableFields('email', true);
6560                    ModalPasswordError.enableErrorCount(formTypeGeneral);
6561                } else if (formTypeGeneral === FormFilter.General.FORM_TYPE.MOBILE_NUMBER) {
6562                    if (formTypeSignIn === FormFilter.SignIn.FORM_TYPE.PASSWORD) {
6563                        if (inputBlankCheckTargetList.length && BlankFieldValidator.validateFieldAll(inputBlankCheckTargetList)) {
6564                            SignIn.$loginPassword[0] && SignIn.$loginPassword[0].focus();
6565
6566                            return;
6567                        }
6568
6569                        Form.clearInputError(Form.SignIn.$loginPassword.attr('name'), true);
6570                        FormFilter.SignIn.enableFields('password', true);
6571                    } else if (formTypeSignIn === FormFilter.SignIn.FORM_TYPE.SMS_CODE) {
6572                        if (inputBlankCheckTargetList.length && BlankFieldValidator.validateFieldAll(inputBlankCheckTargetList)) {
6573                            ControlErrorDisplay.setTriggerClickedData(controlErrorDispalyTrigger);
6574                            SignIn.$loginVerificationCode[0] && SignIn.$loginVerificationCode[0].focus();
6575
6576                            return;
6577                        }
6578
6579                        if (!ControlErrorDisplay.isTriggerClicked(SignIn.$loginVerificationCode.get(0))) {
6580                            PatternValidator.updateFieldStatus(SignIn.$loginVerificationCode.get(0));
6581
6582                            if (SignIn.$loginVerificationCode.hasClass(PatternValidator.classNames.status)) {
6583                                ControlErrorDisplay.setTriggerClickedData(controlErrorDispalyTrigger);
6584                                SignIn.$loginVerificationCode[0] && SignIn.$loginVerificationCode[0].focus();
6585
6586                                return;
6587                            }
6588                        }
6589
6590                        isVerificationCodeChecking = true;
6591
6592                        if (!this.canSubmit) {
6593                            WechatLoginFlow.checkVerificationCode(
6594                                WechatLoginFlow.getMobileCountryId(FormFilter.SignIn.$loginCountryNumber.val()),
6595                                Form.SignIn.$loginMobileNumber.val(),
6596                                Form.SignIn.$loginVerificationCode.val()
6597                            ).then((result) => {
6598                                if (result.message) {
6599                                    ControlErrorDisplay.setTriggerClickedData(controlErrorDispalyTrigger);
6600                                    Form.insertErrorText(Form.SignIn.$loginVerificationCode.attr('name'), result.message);
6601                                    SignIn.$loginVerificationCode[0] && SignIn.$loginVerificationCode[0].focus();
6602
6603                                    return;
6604                                } else {
6605                                    Form.clearInputError(Form.SignIn.$loginVerificationCode.attr('name'), true);
6606                                    FormFilter.SignIn.enableFields('smscode', true);
6607
6608                                    SignIn.canSubmit = true;
6609                                    loginButton.click();
6610                                }
6611                            }).catch((error) => {
6612                                SignIn.canSubmit = true;
6613                                loginButton.click();
6614                            });
6615                        }
6616                    } else if (formTypeSignIn === FormFilter.SignIn.FORM_TYPE.ASU) {
6617                        ControlErrorDisplay.setTriggerClickedData(controlErrorDispalyTrigger);
6618
6619                        if (inputBlankCheckTargetList.length && BlankFieldValidator.validateFieldAll(inputBlankCheckTargetList)) {
6620                            if (BlankFieldValidator.isBlank(SignIn.$loginVerificationCode.get(0))) {
6621                                SignIn.$loginVerificationCode[0] && SignIn.$loginVerificationCode[0].focus();
6622                            } else {
6623                                SignIn.$registerLoginPassword[0] && SignIn.$registerLoginPassword[0].focus();
6624                            }
6625
6626                            return;
6627                        }
6628
6629                        isVerificationCodeChecking = true;
6630
6631                        if (!this.canSubmit) {
6632                            WechatLoginFlow.checkVerificationCode(
6633                                WechatLoginFlow.getMobileCountryId(FormFilter.SignIn.$loginCountryNumber.val()),
6634                                Form.SignIn.$loginMobileNumber.val(),
6635                                Form.SignIn.$loginVerificationCode.val()
6636                            ).then((result) => {
6637                                if (result.message) {
6638                                    Form.insertErrorText(Form.SignIn.$loginVerificationCode.attr('name'), result.message);
6639                                    SignIn.$loginVerificationCode[0] && SignIn.$loginVerificationCode[0].focus();
6640
6641                                    return;
6642                                } else {
6643                                    Form.clearInputError(Form.SignIn.$registerLoginPassword.attr('name'), true);
6644                                    Form.clearInputError(Form.SignIn.$loginVerificationCode.attr('name'), true);
6645                                    FormFilter.SignIn.enableFields('asu', true);
6646
6647                                    SignIn.canSubmit = true;
6648                                    AsuLoginButton.click();
6649                                }
6650                            }).catch((error) => {
6651                                SignIn.canSubmit = true;
6652                                AsuLoginButton.click();
6653                            });
6654                        }
6655                    }
6656                } else if (formTypeGeneral === FormFilter.General.FORM_TYPE.DEFAULT) {
6657                    ControlErrorDisplay.setTriggerClickedData(controlErrorDispalyTrigger);
6658
6659                    if (inputBlankCheckTargetList.length && BlankFieldValidator.validateFieldAll(inputBlankCheckTargetList)) {
6660                        SignIn.$loginPassword[0] && SignIn.$loginPassword[0].focus();
6661
6662                        return;
6663                    }
6664
6665                    Form.SignIn.$loginUserName.prop('disabled', false);
6666                    ModalPasswordError.enableErrorCount(formTypeGeneral);
6667                }
6668
6669                if (isVerificationCodeChecking) {
6670                    return;
6671                }
6672
6673                this.canSubmit = true;
6674                return;
6675            };
6676
6677            SignIn.attachKeydownFormInputEvent = function () {
6678                this.$root.on('keydown.enterKeyAutoSignUpSubmit', 'input, textarea', this.onKeydownFormInput.bind(this));
6679            };
6680
6681            SignIn.onKeydownFormInput = function (event) {
6682                if (event.key !== 'Enter') {
6683                    return;
6684                }
6685
6686                if (this.$root.get(0).classList.contains(KEYENCE.Form.FormFilter.SignIn.classNames.isFilterAutoSignUp
6686)) {
6687                    $('#' + this.idNames.asuLoginButton).trigger('click');
6688
6689                    return false;
6690                }
6691            };
6692
6693            SignIn.changeBackDisplayForm = function (e) {
6694                var availableValidator = win.KeyenceForm.AvailableValidator;
6695                var SMSCodeButton = KEYENCE.Form.SMSCodeButton;
6696
6697                if (e.data === AnalyticsViews.Utility.messageNames.backLink) {
6698                    if (SMSCodeButton && SMSCodeButton.maxCountOver.isLimitOver) {
6699                        SMSCodeButton.removeMaxCountOverDisabledInScreen(Form.SignIn.$root[0]);
6700                    }
6701
6702                    KEYENCE.Form.FormFilter.SignIn.clickLoginPasswordTrigger();
6703                    availableValidator.hideNoteText(Form.PreForm.$root);
6704
6705                    Form.show(Form.PreForm.$root);
6706                    Form.hide(win.MultiStepForm.SignIn.$root);
6707
6708                    KEYENCE.Form.WechatLoginFlow.resetLoginFlow();
6709                    Form.changeCurrentScreenName(Form.screenNames.initial);
6710                }
6711            };
6712
6713            SignIn.changeForwardDisplayForm = function (e) {
6714                var $email = null;
6715                var formInfo = null;
6716
6717                if (e.data === AnalyticsViews.Utility.messageNames.forwardLink) {
6718                    $email = $('#' + Form.Register.idNames.email);
6719                    formInfo = Form.PreForm.getFormInfo();
6720
6721                    if (!formInfo.value || !$email.length) {
6722                        return;
6723                    }
6724
6725                    $email.val(formInfo.value);
6726                    win.suz_callRegValidator($email.attr('name'), $email.val());
6727
6728                    Form.Register.showPanelByIndex(0);
6729                    KEYENCE.Form.FormFilter.SignIn.clickLoginPasswordTrigger();
6730
6731                    Form.show(Form.Register.$root);
6732                    Form.hide(Form.SignIn.$root);
6733
6734                    Form.changeCurrentScreenName(Form.screenNames.step1);
6735
6736                    Form.clearInputError(Form.SignIn.$loginUserName.attr('name'), false);
6737                }
6738            };
6739
6740            return SignIn;
6741        }());
6742
6743        /**
6744         * Create Register Form
6745         */
6746        Form.Register = (function () {
6747            var canSubmit = false;
6748
6749            var idNames = {
6750                btnSubmit: 'js-regForm-btnSubmit',
6751                regForm: 'js-multiStepForm-registration',
6752                ageeBox: 'as_agreeBoxCheked',
6753                btnBackLink: 'js-regForm-btnBackToEmail',
6754                formPanelParent: 'js-multiStep-targetParent',
6755                formRoot: 'suz_registrationForm',
6756                email: 'suz_emailAddress',
6757                description: 'js-regForm-description',
6758                progressBarRoot: 'js-formProgress-trigger',
6759                progressTotalNum: 'js-formProgress-totalNum',
6760                progressCurrentNum: 'js-formProgress-currentNum',
6761                progressBarTrigger: 'js-formProgress-triggerBar',
6762                btnSearchAddress: 'js-regForm-btnSearchAddress',
6763                agreeAll: 'agreeAll',
6764                btnBackToMobileLink: 'js-regForm-btnBackToMobile',
6765                mobileNumber: 'suz_mobileNumber',
6766                formStepCurrentNum: 'js-formStep-currentNum',
6767                country: 'suz_countryID',
6768                state: 'suz_stateID',
6769                city: 'suz_cityName',
6770                cityId: 'suz_cityID',
6771                addressWrapper: 'suz_div_address1',
6772                address1: 'suz_address1',
6773                zipCode: 'suz_zipCode',
6774                company: 'suz_companyName',
6775                suggestListTemplate: 'js-suggestAddressList-template',
6776                addressSuggestWrapper: 'js-setAddressAttribute',
6777                addressSuggest: 'js-setAddressSuggest',
6778                suzRegArea: 'suz_regArea',
6779                suggestListShowMoreTemplate: 'js-suggestAddressList-showMoreTemplate'
6780            };
6781
6782            var classNames = {
6783                btnSubmit: 'js-regForm-btnSubmit',
6784                btnNext: 'js-regForm-btnNext',
6785                formPanel: 'js-multiStep-target',
6786                required: 'js-form-required',
6787                isRequired: 'is-required',
6788                btnPrevious: 'js-regForm-btnPrevious',
6789                progressBar: 'js-formProgress-triggerBar',
6790                isRegError: 'is-register-error',
6791                isRegFlat: 'is-register-flat',
6792                isHide: 'is-hide',
6793                isAutoCompleteElementHide: 'is-autoCompleteElement-hide',
6794                isError: 'is-error',
6795                inputWrapper: 'prd-inputGroup',
6796                errorText: 'prd-form-errorText',
6797                suggestButton: 'js-setFormValue',
6798                suggestShowMoreButton: 'js-showMoreSuggestAddress'
6799            };
6800
6801            var names = {
6802                privacyChk: 'privacyChk'
6803            };
6804
6805            var suggestElems = {
6806                country: null,
6807                addressWrapper: null,
6808                address1: null,
6809                state: null,
6810                city: null,
6811                zipCode: null,
6812                addressSuggestWrapper: null,
6813                addressSuggest: null,
6814                suggestListTemplate: null,
6815                suggestListShowMoreTemplate: null
6816            };
6817
6818            var suggestConfig = {
6819                valid: true,
6820                country: '',
6821                timer: null,
6822                timeOutTimer: null,
6823                api: [
6824                    {
6825                        name: 'postGrid',
6826                        url: 'https://api.postgrid.com/v1/intl_addver/completions',
6827                        key: 'live_pk_uVtrFSaKtXSzcowhhF5TaK',
6828                        length: 0,
6829                        maxLength: 0,
6830                        target: ['US', 'CA'],
6831                        siteId: 0
6832                    },
6833                    {
6834                        name: 'juso',
6835                        url: 'https://business.juso.go.kr/addrlink/addrLinkApiJsonp.do',
6836                        key: 'U01TX0FVVEgyMDIzMDUxMTE2NDQyOTExMzc2MjU=',
6837                        length: 0,
6838                        maxLength: 100,
6839                        target: ['KR'],
6840                        siteId: 16
6841                    },
6842                    {
6843                        name: 'google',
6844                        target: ['MX', 'BR', 'BE', 'NL', 'CH', 'AT', 'PL', 'HU', 'CZ', 'SK', 'SI', 'RO', 'IN', 'FR', 'IT', 'TW', 'SG', 'MY', 'ID', 'DE', 'GB', 'IE']
6845                    }
6846                ],
6847                hasAddressValue: false,
6848                isAutoCompleteElementsHide: false,
6849                currentApi: null,
6850                isMultiStep: false,
6851                isSuggestObserverReady: false,
6852                isSuggestItemObserverReady: false,
6853                isCurrentSuggestItem: false
6854            };
6855
6856            var countryArray = [];
6857
6858            var googleAutocomplete = {
6859                api: null,
6860                triggerField: null,
6861                currentApiCategory: null,
6862                targetElems: {
6863                    address1: null,
6864                    state: null,
6865                    city: null,
6866                    cityId: null,
6867                    zipCode: null,
6868                    company: null
6869                },
6870                selectedSuggestItem: null,
6871                config: {
6872                    url: 'https://maps.googleapis.com/maps/api/js?key=AIzaSyCwRLytbkfMvZgopJQ8yq3NPyyba1X-ux8&libraries=places&callback=initGoogleAutocompleteAddress',
6873                    valid: true,
6874                    countryFormatList: null,
6875                    isRunning: false,
6876                    isOptionUpdateTriggerField: false,
6877                    isMatchedTempValueTrigger: false,
6878                    tempInputValue: {
6879                        company: '',
6880                        cityLevel2: '',
6881                        cityLevel3: '',
6882                        address1: '',
6883                        zipcode: '',
6884                        cityId: '',
6885                        city: ''
6886                    },
6887                    selectedSuggestMainText: '',
6888                    isSuggestItemEventReady: false
6889                },
6890                category: {
6891                    address: {
6892                        name: 'address',
6893                        target: ['MX', 'BR', 'BE', 'NL', 'CH', 'AT', 'PL', 'HU', 'CZ', 'SK', '
6893SI', 'RO', 'FR', 'SG', 'MY', 'ID'],
6894                        field: 'address1',
6895                        fieldArray: ['address_components'],
6896                        typeArray: ['address'],
6897                    },
6898                    zipcode: {
6899                        name: 'zipcode',
6900                        target: ['IN'],
6901                        field: 'zipCode',
6902                        fieldArray: ['address_components'],
6903                        typeArray: ['postal_code'],
6904                    },
6905                    company: {
6906                        name: 'company',
6907                        target: ['TW', 'DE', 'IT', 'GB', 'IE'],
6908                        field: 'company',
6909                        fieldArray: ['address_components', 'name', 'formatted_address'],
6910                        typeArray: ['establishment'],
6911                    }
6912                },
6913                classNames: {
6914                    suggestWrpper: 'pac-container',
6915                    suggestItem: 'pac-item',
6916                    selectedSuggestItem: 'pac-item-selected',
6917                    suggestMainText: 'pac-item-query'
6918                }
6919            };
6920
6921            var Register = {
6922                idNames: idNames,
6923                classNames: classNames,
6924                names: names,
6925                suggestElems: suggestElems,
6926                suggestConfig: suggestConfig,
6927                googleAutocomplete: googleAutocomplete,
6928                countryArray: countryArray,
6929                $root: $('#' + idNames.regForm),
6930                $formRoot: $('#' + idNames.formRoot),
6931                $description: $('#' + idNames.description),
6932                $email: $('#' + idNames.email),
6933                $agreeBox: $('#' + idNames.ageeBox),
6934                $progressBarRoot: $('#' + idNames.progressBarRoot),
6935                $progressBar: $('#' + idNames.progressBar),
6936                $progressBarTrigger: $('#' + idNames.progressBarTrigger),
6937                $progressTotalNum: $('#' + idNames.progressTotalNum),
6938                $progressCurrentNum: $('#' + idNames.progressCurrentNum),
6939                $btnSearchAddress: $('#' + idNames.btnSearchAddress),
6940                isErrorPage: Form.isShow($('#' + idNames.regForm)),
6941                $formStepCurrentNum: $('#' + idNames.formStepCurrentNum),
6942            };
6943
6944            Register.init = function () {
6945                if (!this.$root.length) {
6946                    return;
6947                }
6948
6949                if (this.isRegError() || this.isRegFlat()) {
6950                    suggestConfig.isMultiStep = false;
6951
6952                    this.initAttributes();
6953                    this.clickBackLink();
6954                    this.clickPrevButton();
6955                    this.initAgreeBoxControl();
6956                    this.attachKeydownFormInputEvent();
6957                    this.submitForm();
6958
6959                    if (suggestConfig.valid) {
6960                        this.initAutocompleteAddress(suggestConfig.isMultiStep);
6961                    }
6962
6963                    if (Form.isEditProfileForm() && $('#' + Form.idNames.trigger).find('[id^="suz_div_"].is-error').length) {
6964                        setTimeout(function () {
6965                            Form.focusFirstErrorItem();
6966                        }, 0);
6967                    } else if (Form.isEditProfileForm()) {
6968                        Form.setInitialFocus(this.$root);
6969                    } else if ($('#' + Form.idNames.trigger).find('[id^="suz_div_"].is-error').length) {
6970                        setTimeout(function () {
6971                            Form.focusFirstErrorItem();
6972                        }, 0);
6973                    } else {
6974                        Form.setInitialFocus(this.$root);
6975                    }
6976
6977                    if (googleAutocomplete.config.valid) {
6978                        this.setGoogleAutocomplete();
6979                    }
6980
6981                    if (Form.formWrapper && !this.$root.hasClass(Form.classNames.isHide)) {
6982                        if (Form.formWrapper.dataset.currentScreenName !== 'email-register-flat' && Form.formWrapper.dataset.currentScreenName !== 'mobile-register-flat') {
6983                            Form.changeCurrentScreenName(Form.screenNames.flat);
6984                        }
6985                    }
6986                } else {
6987                    suggestConfig.isMultiStep = true;
6988
6989                    this.initAttributes();
6990                    this.addEventAll();
6991                    this.setPanelAttributes();
6992                    this.initProgressBar();
6993                    this.initAgreeBoxControl();
6994
6995                    if (suggestConfig.valid) {
6996                        this.initAutocompleteAddress(suggestConfig.isMultiStep);
6997                    }
6998
6999                    if (googleAutocomplete.config.valid) {
7000                        this.setGoogleAutocomplete();
7001                    }
7002
7003                    Form.focusFirstErrorItem();
7004                }
7005            };
7006
7007            Register.initAttributes = function () {
7008                this.$root.attr('data-index-current', 0);
7009                this.$root.addClass(Form.classNames.isInitialized);
7010
7011                if (!this.isErrorPage) {
7012                    $('#' + idNames.email).prop('disabled', true);
7013                }
7014            };
7015
7016            Register.addEventAll = function () {
7017                this.clickNextButton();
7018                this.clickPrevButton();
7019                this.clickBackLink();
7020                this.submitForm();
7021                this.attachKeydownFormInputEvent();
7022            };
7023
7024            Register.isRegError = function () {
7025                if (this.$root.hasClass(classNames.isRegError)) {
7026                    return true;
7027                }
7028
7029                return false;
7030            };
7031
7032            Register.isRegFlat = function () {
7033                if (this.$root.hasClass(classNames.isRegFlat)) {
7034                    return true;
7035                }
7036
7037                return false;
7038            };
7039
7040            Register.getPanels = function () {
7041                var $parentElement = this.$root.find('#' + idNames.formPanelParent);
7042                var $panels;
7043
7044                if ($parentElement.length) {
7045                    $panels = $parentElement.children('.' + classNames.formPanel);
7046                } else {
7047                    $panels = this.$root.find('.' + classNames.formPanel);
7048                }
7049
7050                return $panels;
7051            };
7052
7053            Register.setPanelAttributes = function () {
7054                var $panels = this.getPanels();
7055                var mobileCountryInfo = Form.PreForm.getMobileCountryInfo();
7056                var $regMobileCountryNumber = $('#suz_mobileCountryNumber');
7057
7058                $panels.each(function (index) {
7059                    $(this).attr('data-panel-index', index + 1);
7060                    $(this).attr('data-panel-displayed', false);
7061                });
7062
7063                if (!this.isErrorPage) {
7064                    $('#' + idNames.email).prop('disabled', true);
7065                }
7066
7067                if (Register.$root.attr('data-index-current') === PANEL_NUM.NONE) {
7068                    this.showPanelByIndex(PANEL_INDEX.FIRST)
7069                }
7070
7071                if (!this.isRegError() && !this.isRegFlat()) {
7072                    Form.setInitialFocus(this.$root);
7073                }
7074
7075                Form.focusFirstErrorItem(Register.$root.find('#' + idNames.formPanelParent));
7076
7077                if ($regMobileCountryNumber.length) {
7078                    $regMobileCountryNumber.val(mobileCountryInfo.code);
7079                    $regMobileCountryNumber.attr('disabled', true);
7080                    $('#suz_mobileNumber').val($('#checkMobileNumber').val());
7081                }
7082            };
7083
7084            Register.initAgreeBoxControl = function () {
7085                if (this.$agreeBox.length) {
7086                    win.suz_checkBoxDecision();
7087                }
7088            };
7089
7090            Register.setPassedStatusByButton = function (button, status) {
7091                var $panel;
7092
7093                if (button && typeof status === 'boolean') {
7094                    $panel = $(button).parents('.' + this.classNames.formPanel);
7095
7096                    if ($panel.length) {
7097                        $panel.attr('data-panel-passed', status);
7098                    }
7099                }
7100            };
7101
7102            Register.showNext = function (event, isEnterKeyTrigger) {
7103                var button = event.currentTarget;
7104                var $panels = this.getPanels();
7105                var $currentPanel;
7106                var $autoCompleteElements = null;
7107                var AvailableValidator = KeyenceForm.AvailableValidator;
7108                var $mobileNumber = null;
7109                var $phoneNumber = null;
7110                var $registerEmailAddress = null;
7111                var blurEvent = new Event('blur');
7112                var SetMobileNumberToPhoneField = KeyenceForm.SetMobileNumberToPhoneField;
7113
7114                if (button.disabled) {
7115                    return;
7116                }
7117
7118                if (event.handleObj.type !== 'keydown') {
7119                    event.preventDefault();
7120                }
7121
7122                if (!isEnterKeyTrigger) {
7123                    if (event.handleObj.type === 'keydown' && event.key !== 'Enter') {
7124                        return;
7125                    }
7126
7127                    if (event.handleObj.type === 'mousedown' && event.which !== EVENT_TYPE.CLICK_LEFT) {
7128                        return;
7129                    }
7130
7131                    if (event.handleObj.type === 'touchend' && isScrolling) {
7132                        return;
7133                    }
7134                }
7135
7136                if (this.getCurrentIndex() === this.getLastIndex()) {
7137                    return;
7138                }
7139
7140                $currentPanel = $(button).parents('.' + this.classNames.formPanel + '.' + Form.classNames.isCurrent);
7141
7142                if ($currentPanel.attr('data-panel-passed') === 'true') {
7143                    return;
7144                }
7145
7146                KeyenceForm.ControlErrorDisplay.setTriggerClickedData(button, 'register');
7147
7148                AvailableValidator.updateRegisterBlockStatus($currentPanel, event, 'n
7148otLastPanel');
7149
7150                if (AvailableValidator.config.isRegisterContinueBlocked) {
7151                    if (AvailableValidator.config.currentTarget) {
7152                        AvailableValidator.config.currentTarget.dispatchEvent(blurEvent);
7153                    }
7154
7155                    return;
7156                }
7157
7158                $mobileNumber = $currentPanel.find('.' + AvailableValidator.targetWrapperClass.mobile);
7159                $phoneNumber = $currentPanel.find('.' + AvailableValidator.targetWrapperClass.phone);
7160                $registerEmailAddress = $currentPanel.find('.' + AvailableValidator.targetWrapperClass.email);
7161
7162                if ($mobileNumber.length) {
7163                    AvailableValidator.setUnavailableData($mobileNumber);
7164                }
7165
7166                if ($phoneNumber.length) {
7167                    AvailableValidator.setUnavailableData($phoneNumber);
7168                }
7169
7170                if ($registerEmailAddress.length) {
7171                    AvailableValidator.setUnavailableData($registerEmailAddress);
7172                }
7173
7174                $autoCompleteElements = $currentPanel.find('.' + classNames.isAutoCompleteElementHide);
7175
7176                if ($autoCompleteElements.length) {
7177                    Register.setAutoCompleteHideClass(true);
7178                }
7179
7180                $currentPanel.attr('data-panel-passed', true);
7181
7182                this.updateInputFieldStatus($currentPanel).done(function (hasError) {
7183                    var $currentPanel;
7184                    var $newPanel;
7185                    var nextIndex;
7186
7187                    $currentPanel = $panels.filter('.' + Form.classNames.isCurrent);
7188
7189                    if (hasError) {
7190                        $currentPanel.removeAttr('data-panel-passed');
7191                        Form.focusFirstErrorItem($currentPanel);
7192
7193                        SetMobileNumberToPhoneField.config.isScreenValidateRunning = false;
7194                        return;
7195                    }
7196
7197                    if (!$currentPanel.length) {
7198                        SetMobileNumberToPhoneField.config.isScreenValidateRunning = false;
7199                        return;
7200                    }
7201
7202                    $newPanel = $panels.filter('.' + Form.classNames.isCurrent).next();
7203
7204                    if ($newPanel.length) {
7205                        if (AvailableValidator.isBlockedProcessingStatus($currentPanel)) {
7206                            SetMobileNumberToPhoneField.config.isScreenValidateRunning = false;
7207                            return;
7208                        }
7209
7210                        AvailableValidator.hideNoteText($newPanel);
7211                        nextIndex = $newPanel.index();
7212
7213                        Register.disableInputElementAll($currentPanel.find(Form.selectors.focusableInputElements));
7214                        Register.showPanelByIndex(nextIndex);
7215
7216                        Form.changeCurrentScreenName('step', nextIndex + 1);
7217
7218                        Register.changeProgress($newPanel.data('panelIndex'));
7219                        Form.scrollToElement(Register.idNames.regForm);
7220
7221                        $currentPanel.removeAttr('data-panel-passed');
7222
7223                        if ($newPanel.attr('data-panel-displayed') === 'false') {
7224                            Form.Register.clearInputErrorAll($newPanel);
7225                            $newPanel.attr('data-panel-displayed', true);
7226                        }
7227
7228                        SetMobileNumberToPhoneField.config.isScreenValidateRunning = false;
7229                    }
7230                }).fail(function () {
7231                    $currentPanel.removeAttr('data-panel-passed');
7232                    SetMobileNumberToPhoneField.config.isScreenValidateRunning = false;
7233                });
7234            };
7235
7236            Register.showPrev = function (event) {
7237                var button = event.currentTarget;
7238                var $panels = this.getPanels();
7239                var $currentPanel;
7240                var $prevPanel;
7241                var prevIndex;
7242                var availableValidator = KeyenceForm.AvailableValidator;
7243                var SMSCodeButton = KEYENCE.Form.SMSCodeButton;
7244
7245                if (event.handleObj.type !== 'keydown') {
7246                    event.preventDefault();
7247                }
7248
7249                if (event.handleObj.type === 'keydown' && event.key !== 'Enter') {
7250                    return;
7251                }
7252
7253                if (event.handleObj.type === 'mousedown' && event.which !== EVENT_TYPE.CLICK_LEFT) {
7254                    return;
7255                }
7256
7257                if (event.handleObj.type === 'touchend' && isScrolling) {
7258                    return;
7259                }
7260
7261                $currentPanel = $(button).parents('.' + this.classNames.formPanel + '.' + Form.classNames.isCurrent);
7262
7263                if (!$currentPanel.length) {
7264                    return;
7265                }
7266
7267                if ($currentPanel.attr('data-panel-passed') === 'true') {
7268                    return;
7269                }
7270
7271                this.$root.off('keypress.enterKeySubmit');
7272                $currentPanel.attr('data-panel-passed', true);
7273
7274                $prevPanel = $panels.filter('.' + Form.classNames.isCurrent).prev();
7275
7276                if ($prevPanel.length) {
7277                    availableValidator.hideNoteText($prevPanel);
7278
7279                    prevIndex = $prevPanel.index();
7280
7281                    Register.showPanelByIndex(prevIndex);
7282
7283                    Form.changeCurrentScreenName('step', prevIndex + 1);
7284
7285                    Register.changeProgress($prevPanel.data('panelIndex'));
7286                } else {
7287                    if (SMSCodeButton && SMSCodeButton.maxCountOver.isLimitOver) {
7288                        SMSCodeButton.removeMaxCountOverDisabledInScreen(Form.Register.$root[0]);
7289                    }
7290
7291                    availableValidator.hideNoteText(Form.PreForm.$root);
7292
7293                    Form.show(Form.PreForm.$root);
7294                    Form.hide(Register.$root);
7295
7296                    KEYENCE.Form.WechatLoginFlow.resetLoginFlow();
7297                    Form.changeCurrentScreenName(Form.screenNames.initial);
7298                }
7299
7300                $currentPanel.removeAttr('data-panel-passed');
7301                Form.scrollToElement(Form.idNames.trigger);
7302
7303            };
7304
7305            Register.updateInputFieldStatus = function ($currentPanel) {
7306                var $requiredInputs;
7307                var deferred = new $.Deferred();
7308                var hasError = false;
7309                var deferreds = [];
7310                var BlankFieldValidator = win.KeyenceForm.BlankFieldValidator;
7311                var PatternMatchValidator = win.KeyenceForm.PatternMatchValidator;
7312
7313                win.KeyenceForm.SetMobileNumberToPhoneField.config.isScreenValidateRunning = true;
7314
7315                if (!$currentPanel.length) {
7316                    deferred.resolve(false);
7317                }
7318
7319                $requiredInputs = $currentPanel.find('.' + this.classNames.required).filter(':visible');
7320
7321                if ($requiredInputs.length) {
7322                    $requiredInputs.each(function () {
7323                        var field = this;
7324
7325                        if (field.classList.contains(BlankFieldValidator.classNames.trigger)
7326                            && field.classList.contains(PatternMatchValidator.classNames.replaceValueTrigger)) {
7327                            if (BlankFieldValidator.isBlank(field)) {
7328                                Form.insertErrorText(field.name);
7329
7330                                hasError = true;
7331                                return;
7332                            }
7333
7334                            PatternMatchValidator.updateFieldStatus(field);
7335
7336                            if (field.classList.contains(PatternMatchValidator.classNames.status)) {
7337                                hasError = true;
7338                                return;
7339                            }
7340
7341                            Form.clearInputError(field.name, true, false);
7342                        } else if (field.classList.contains(BlankFieldValidator.classNames.trigger)) {
7343                            if (BlankFieldValidator.isBlank(field)) {
7344                                Form.insertErrorText(field.name);
7345
7346                                hasError = true;
7347                            } else {
7348                                Form.clearInputError(field.name, true, false);
7349                            }
7350                        } else if (field.classList.contains(PatternMatchValidator.classNames.replaceValueTrigger)) {
7351                            PatternMatchValidator.updateFieldStatus(field);
7352
7353                            if (field.classList.contains(PatternMatchValidator.classNames.status)) {
7354                                hasError = true;
7355                            } else {
7356                                deferreds.push(win.suz_callRegValidator(field.name, field.value));
7357                            }
7358                        } else {
7359                            deferreds.push(win.suz_callRegValidator(field.name, field.value));
7360                        }
7361                    });
7362
7363                    if (hasError) {
7364                        deferred.resolve(hasError);
7365                    } else {
7366                        $.when.apply(null, deferreds).then(function () {
7367                            Array.prototype.slice.call(arguments).forEac
7367h(function (result) {
7368                                if (result && (result.message && result.message.length)) {
7369                                    hasError = true;
7370                                }
7371                            });
7372
7373                            deferred.resolve(hasError);
7374                        });
7375                    }
7376                } else {
7377                    deferred.resolve(false);
7378                }
7379
7380                return deferred.promise();
7381            };
7382
7383            Register.enableInputElements = function ($inputElements) {
7384                if ($inputElements && $inputElements.length) {
7385                    $inputElements.prop('disabled', false);
7386                }
7387            };
7388
7389            Register.disableInputElementAll = function ($inputElements) {
7390                if ($inputElements && $inputElements.length) {
7391                    $inputElements.prop('disabled', true);
7392                }
7393            };
7394
7395            Register.showPanelByIndex = function (nextIndex) {
7396                var $panels = this.getPanels();
7397                var $email = $('#suz_emailAddress');
7398
7399                if (typeof nextIndex !== 'number' || !$panels.length) {
7400                    return;
7401                }
7402
7403                if (nextIndex === 0) {
7404                    Form.Register.$description.removeClass('is-hide');
7405                } else {
7406                    Form.Register.$description.addClass('is-hide');
7407                }
7408
7409                $panels.each(function (index) {
7410                    var $this = $(this);
7411
7412                    $this.find('svg').attr('focusable', false);
7413
7414                    if (index === nextIndex) {
7415                        Register.showPanel($this);
7416                    } else {
7417                        if (Register.isRegError() || Register.isRegFlat()) {
7418                            return;
7419                        }
7420
7421                        Register.hidePanel($this);
7422
7423                        if (index < nextIndex) {
7424                            Register.disableInputElementAll($this.find(Form.selectors.focusableInputElements));
7425                        }
7426                    }
7427                });
7428            };
7429
7430            Register.showPanel = function ($panel) {
7431                var $inputElements;
7432                var $inputForEnterKey;
7433                var panelNum;
7434
7435                if (!$panel || !$panel.length) {
7436                    return;
7437                }
7438
7439                panelNum = $panel.data('panelIndex');
7440
7441                if (panelNum === undefined) {
7442                    panelNum = PANEL_NUM.FIRST;
7443                }
7444
7445                $inputElements = $panel.find(Form.selectors.disabledInputElements + ',' + Form.selectors.focusableInputElements);
7446
7447                if ($inputElements.length) {
7448                    if (panelNum === PANEL_NUM.FIRST) {
7449                        $inputElements = $inputElements.filter(function () {
7450                            return this.name !== 'emailAddress' && this.name !== 'mobileNumber' && this.name !== 'countryNumber' && this.name !== 'mobileCountryNumber'
7451                        });
7452                    }
7453
7454                    // enable input elements
7455                    Register.enableInputElements($inputElements);
7456                }
7457
7458                Form.enableFocus($panel.find(Form.selectors.focusableElements));
7459                $panel.addClass(Form.classNames.isCurrent);
7460                this.$root.attr('data-index-current', panelNum);
7461
7462                if (Form.needFocus && $inputElements.length && !this.isRegError() && !this.isRegFlat()) {
7463                    $inputElements.get(0).focus();
7464                }
7465            };
7466
7467            Register.hidePanel = function ($panel) {
7468                var $focusableElements;
7469
7470                if (!$panel || !$panel.length) {
7471                    return;
7472                }
7473
7474                $panel.removeClass(Form.classNames.isCurrent);
7475
7476                $focusableElements = $panel.find(Form.selectors.focusableElements);
7477
7478                Form.disableFocus($focusableElements);
7479            };
7480
7481            Register.initProgressBar = function () {
7482                var $panels = this.getPanels();
7483
7484                if ($panels.length) {
7485                    this.$progressTotalNum.text($panels.length);
7486                    this.changeProgress(1);
7487                }
7488            };
7489
7490            Register.changeProgress = function (num) {
7491                var $panels = this.getPanels();
7492                var percentage = 0;
7493
7494                if (typeof num !== 'number' || !$panels.length) {
7495                    return;
7496                }
7497
7498                if (num === $panels.length) {
7499                    percentage = 100;
7500                } else {
7501                    percentage = Math.floor((num / $panels.length) * 100);
7502                }
7503
7504                if (Register.$formStepCurrentNum.length) {
7505                    Register.$formStepCurrentNum.text(num);
7506                } else {
7507                    Register.$progressCurrentNum.text(num);
7508                }
7509
7510                Register.$progressBarTrigger.css('width', percentage + '%');
7511            }
7512
7513            Register.clickNextButton = function () {
7514                this.$root.on('keydown mousedown touchend', '.' + this.classNames.btnNext, this.showNext.bind(this));
7515            };
7516
7517            Register.clickPrevButton = function () {
7518                this.$root.on('keydown mousedown touchend', '.' + this.classNames.btnPrevious, this.showPrev.bind(this));
7519            };
7520
7521            Register.clickBackLink = function () {
7522                var SMSCodeButton = KEYENCE.Form.SMSCodeButton;
7523
7524                this.$root.on('click', '#' + this.idNames.btnBackLink, function (event) {
7525                    event.preventDefault();
7526                    Form.show(Form.PreForm.$root);
7527                    Form.hide(Register.$root);
7528
7529                    Form.changeCurrentScreenName(Form.screenNames.initial);
7530                });
7531
7532                this.$root.on('click', '#' + this.idNames.btnBackToMobileLink, function (event) {
7533                    if (SMSCodeButton && SMSCodeButton.maxCountOver.isLimitOver) {
7534                        SMSCodeButton.removeMaxCountOverDisabledInScreen(Form.Register.$root[0]);
7535                    }
7536
7537                    event.preventDefault();
7538                    Form.show(Form.PreForm.$root);
7539                    Form.hide(Register.$root);
7540
7541                    KEYENCE.Form.WechatLoginFlow.resetLoginFlow();
7542                    Form.changeCurrentScreenName(Form.screenNames.initial);
7543                });
7544            };
7545
7546            Register.getCurrentIndex = function () {
7547                var $panels = this.getPanels();
7548                var $current;
7549
7550                if (!$panels.length) {
7551                    return null;
7552                }
7553
7554                $current = $panels.filter('.' + Form.classNames.isCurrent);
7555
7556                return $current.index();
7557            };
7558
7559            Register.getLastIndex = function () {
7560                var $panels = this.getPanels();
7561
7562                if ($panels.length) {
7563                    return $panels.length - 1;
7564                }
7565
7566                return null;
7567            };
7568
7569            Register.isLastPage = function () {
7570                var $panels = this.getPanels();
7571
7572                if ($panels.length === this.getCurrentIndex()) {
7573                    return true;
7574                }
7575
7576                return false;
7577            };
7578
7579            Register.isActionPwdAssistance = function () {
7580                var actionValue = Register.$formRoot.attr('action');
7581
7582                if (new RegExp(Form.urls.actionPwdAssistance).test(actionValue)) {
7583                    return true;
7584                }
7585
7586                return false;
7587            };
7588
7589            Register.submitForm = function () {
7590                this.$formRoot.on('submit.reg-submit', this.onSubmitForm.bind(this));
7591            };
7592
7593            Register.onSubmitForm = function (event) {
7594                var FormFilter = KEYENCE.Form.FormFilter;
7595                var $panels = this.getPanels();
7596                var $currentPanel;
7597                var formTypeGeneral = FormFilter.General.getFormType();
7598                var $autoCompleteElements = null;
7599                var AvailableValidator = win.KeyenceForm.AvailableValidator;
7600                var PatternMatchValidator = win.KeyenceForm.PatternMatchValidator;
7601                var RegisteredValidator = win.KeyenceForm.RegisteredValidator;
7602                var ControlErrorDisplay = win.KeyenceForm.ControlErrorDisplay;
7603                var WechatLoginFlow = win.KeyenceForm.WechatLoginFlow;
7604                var MultiFactorAuthentication = win.KeyenceForm.MultiFactorAuthentication;
7605                var $mobileNumber = null;
7606                var $phoneNumber = null;
7607                var $registerEmailAddress = null;
7608                var blurEvent = new Event('blur');
7609                var $replaceValueTargets = null;
7610                var replaceValueTargetsLength = 0;
7611                var patternError = false;
7612                var errorElementsLength = 0;
7613                var $checkRegisteredTarget = null;
7614                var SetMobileNumberToPhoneField = KEYENCE.Form.SetMobileNumberToPhoneField;
7615                var controlErrorDispalyTrigger = null;
7616
7617                if (Form.isShow(Form.PreForm.$root) &&
7618                    !WechatLoginFlow.filterTarget?.classList.contains(WechatLoginFlow.classNames.isLoginActive)) {
7619                    return false;
7620                }
7621
7622                if (Register.isActionPwdAssistance()) {
7623                    return true;
7624                }
7625
7626                if (Form.isShow(Form.SignIn.$root) ||
7627                    (WechatLoginFlow.filterTarget?.classList.contains(WechatLoginFlow.classNames.isLoginActive) &&
7628                    Form.isShow(Form.PreForm.$root))
7629                ) {
7630                    if (WechatLoginFlow.filterTarget.classList.contains(WechatLoginFlow.classNames.isLoginActive) &&
7631                        WechatLoginFlow.STATE_CODE.current === WechatLoginFlow.STATE_CODE.L10) {
7632                        return true;
7633                    }
7634
7635                    Form.SignIn.validateForm(event.originalEvent.submitter);
7636
7637                    if (Form.SignIn.canSubmit) {
7638                        return true;
7639                    }
7640
7641                    return false;
7642                }
7643
7644                $currentPanel = $panels.filter('.' + Form.classNames.isCurrent);
7645
7646                controlErrorDispalyTrigger = event.originalEvent.submitter ? event.originalEvent.submitter : ControlErrorDisplay.browserValidaterTarget;
7647                ControlErrorDisplay.setTriggerClickedData(controlErrorDispalyTrigger, 'register');
7648
7649                AvailableValidator.updateRegisterBlockStatus($currentPanel, event, 'lastPanel');
7650                MultiFactorAuthentication.activeNoteTextHideFlag = false;
7651
7652                if (AvailableValidator.config.isRegisterContinueBlocked &&
7653                    !MultiFactorAuthentication.initialErrorItemRootArray.length
7654                ) {
7655                    if (Form.isEditProfileForm()) {
7656                        if (!AvailableValidator.config.currentTarget) {
7657                            AvailableValidator.config.registerCurrentPanelType === '';
7658                            AvailableValidator.config.registerProcessingEventObject = null;
7659                        } else if (AvailableValidator.config.currentTarget
7660                            && AvailableValidator.config.isPressedEnterOnEditProfileForm) {
7661                            AvailableValidator.config.currentTarget.dispatchEvent(blurEvent);
7662                        }
7663                    } else if (AvailableValidator.config.currentTarget
7664                        && AvailableValidator.config.isPressedEnterOnEditProfileForm) {
7665                        AvailableValidator.config.currentTarget.dispatchEvent(blurEvent);
7666                    }
7667
7668                    AvailableValidator.config.isPressedEnterOnEditProfileForm = false;
7669
7670                    return false;
7671                }
7672
7673                if (Register.isRegError() || Register.isRegFlat()) {
7674                    SetMobileNumberToPhoneField.config.isScreenValidateRunning = true;
7675                    $replaceValueTargets = $currentPanel.find('.' + PatternMatchValidator.classNames.replaceValueTrigger);
7676
7677                    if ($replaceValueTargets.length) {
7678                        replaceValueTargetsLength = $replaceValueTargets.length;
7679
7680                        $replaceValueTargets.each(function () {
7681                            PatternMatchValidator.updateFieldStatus(this);
7682
7683                            if (this.classList.contains(PatternMatchValidator.classNames.status)) {
7684                                patternError = true;
7685                            }
7686                        });
7687
7688                        errorElementsLength = $currentPanel.find('.' + this.classNames.isError).length;
7689                    }
7690
7691                    if (patternError && replaceValueTargetsLength === errorElementsLength) {
7692                        Form.focusFirstErrorItem();
7693
7694                        SetMobileNumberToPhoneField.config.isScreenValidateRunning = false;
7695                        return false;
7696                    }
7697
7698                    if (formTypeGeneral === FormFilter.General.FORM_TYPE.E
7698MAIL) {
7699                        $('#' + idNames.email).prop('disabled', false);
7700                    } else if (formTypeGeneral === FormFilter.General.FORM_TYPE.MOBILE_NUMBER) {
7701                        $('#' + idNames.mobileNumber).prop('disabled', false);
7702                    } else {
7703                        $('#' + idNames.email).prop('disabled', false);
7704                    }
7705
7706                    SetMobileNumberToPhoneField.config.isScreenValidateRunning = false;
7707
7708                    if (Form.isEditProfileForm()) {
7709                        KEYENCE.Form.MultiFactorAuthentication.enableAllInputs();
7710                    }
7711
7712                    return true;
7713                }
7714
7715                if (this.getCurrentIndex() !== this.getLastIndex()) {
7716                    return false;
7717                }
7718
7719                if (canSubmit) {
7720                    $panels.each(function () {
7721                        Register.enableInputElements($(this).find(Form.selectors.disabledInputElements));
7722                    });
7723
7724                    if (formTypeGeneral === FormFilter.General.FORM_TYPE.EMAIL) {
7725                        FormFilter.General.disableFields('mobileNumber', true);
7726                    } else if (formTypeGeneral === FormFilter.General.FORM_TYPE.MOBILE_NUMBER) {
7727                        FormFilter.General.disableFields('email', true);
7728                    }
7729
7730                    return true;
7731                }
7732
7733                $mobileNumber = $currentPanel.find('.' + AvailableValidator.targetWrapperClass.mobile);
7734                $phoneNumber = $currentPanel.find('.' + AvailableValidator.targetWrapperClass.phone);
7735                $registerEmailAddress = $currentPanel.find('.' + AvailableValidator.targetWrapperClass.email);
7736
7737                if ($mobileNumber.length) {
7738                    AvailableValidator.setUnavailableData($mobileNumber);
7739                }
7740
7741                if ($phoneNumber.length) {
7742                    AvailableValidator.setUnavailableData($phoneNumber);
7743                }
7744
7745                if ($registerEmailAddress.length) {
7746                    AvailableValidator.setUnavailableData($registerEmailAddress);
7747                }
7748
7749                $autoCompleteElements = $currentPanel.find('.' + classNames.isAutoCompleteElementHide);
7750
7751                if ($autoCompleteElements.length) {
7752                    Register.setAutoCompleteHideClass(true);
7753                }
7754
7755                this.updateInputFieldStatus($currentPanel).done(function (hasError) {
7756                    setTimeout(function () {
7757                        $checkRegisteredTarget = $currentPanel.find('.' + RegisteredValidator.targetClass.emailAddress);
7758
7759                        if (hasError) {
7760                            if ($checkRegisteredTarget.length) {
7761                                if ($checkRegisteredTarget.hasClass(RegisteredValidator.targetClass.status)) {
7762                                    MultiStepForm.insertErrorText($checkRegisteredTarget[0].name, 'data-message-email-address-registered');
7763                                } else if ($checkRegisteredTarget.val() !== '') {
7764                                    MultiStepForm.checkRegularMember($checkRegisteredTarget.val()).always(function (status) {
7765                                        if (status && status.isRegularMember) {
7766                                            RegisteredValidator.showRegisteredError($checkRegisteredTarget[0]);
7767                                        }
7768                                    });
7769                                }
7770                            }
7771
7772                            Form.scrollToElement(Form.idNames.trigger);
7773                            Form.focusFirstErrorItem($currentPanel);
7774                            SetMobileNumberToPhoneField.config.isScreenValidateRunning = false;
7775                        } else {
7776                            if (AvailableValidator.isBlockedProcessingStatus($currentPanel)) {
7777                                SetMobileNumberToPhoneField.config.isScreenValidateRunning = false;
7778                                return;
7779                            }
7780
7781                            if ($checkRegisteredTarget.length) {
7782                                if ($checkRegisteredTarget.hasClass(RegisteredValidator.targetClass.status)) {
7783                                    MultiStepForm.insertErrorText($checkRegisteredTarget[0].name, 'data-message-email-address-registered');
7784                                    Form.scrollToElement(Form.idNames.trigger);
7785                                    Form.focusFirstErrorItem($currentPanel);
7786
7787                                    SetMobileNumberToPhoneField.config.isScreenValidateRunning = false;
7788                                    return;
7789                                }
7790
7791                                MultiStepForm.checkRegularMember($checkRegisteredTarget.val()).always(function (status) {
7792                                    if (status && status.isRegularMember && $checkRegisteredTarget.val() !== '') {
7793                                        RegisteredValidator.showRegisteredError($checkRegisteredTarget[0]);
7794                                        Form.scrollToElement(Form.idNames.trigger);
7795                                        Form.focusFirstErrorItem($currentPanel);
7796
7797                                        SetMobileNumberToPhoneField.config.isScreenValidateRunning = false;
7798                                        return;
7799                                    } else {
7800                                        canSubmit = true;
7801
7802                                        SetMobileNumberToPhoneField.config.isScreenValidateRunning = false;
7803                                        $('.' + classNames.btnSubmit).trigger('click');
7804                                    }
7805                                });
7806                            } else {
7807                                canSubmit = true;
7808
7809                                SetMobileNumberToPhoneField.config.isScreenValidateRunning = false;
7810                                $('.' + classNames.btnSubmit).trigger('click');
7811                            }
7812                        }
7813                    }, 0);
7814                });
7815
7816                return false;
7817            };
7818
7819            Register.clearInputErrorAll = function ($panel) {
7820                var $inputs;
7821
7822                if ($panel && $panel.length) {
7823                    $inputs = $panel.find('.' + this.classNames.required);
7824
7825                    $inputs.each(function () {
7826                        Form.clearInputError(this.name, false);
7827                    });
7828                }
7829            };
7830
7831            Register.attachKeydownFormInputEvent = function () {
7832                this.$root.on('keydown.enterKeySubmit', 'input:not([disabled]), textarea:not([disabled])', this.onKeydownFormInput.bind(this));
7833            };
7834
7835            Register.onKeydownFormInput = function (event) {
7836                var $currentPanel;
7837                var $buttonContinue;
7838
7839                if (event.key !== 'Enter') {
7840                    return;
7841                }
7842
7843                if (Register.googleAutocomplete.triggerField
7844                    && Register.suggestConfig.isCurrentSuggestItem) {
7845                    Register.googleAutocomplete.triggerField.blur();
7846
7847                    return false;
7848                }
7849
7850                if (Register.isRegError() || Register.isRegFlat() || (this.getCurrentIndex() === this.getLastIndex())) {
7851                    win.KeyenceForm.AvailableValidator.config.isPressedEnterOnEditProfileForm = true;
7852
7853                    if (Form.isEditProfileForm()) {
7854                        $('#submit2').trigger('click');
7855                    } else {
7856                        $('.' + classNames.btnSubmit).trigger('click');
7857                    }
7858
7859                    return false;
7860                }
7861
7862                $currentPanel = $(event.currentTarget).parents('.js-multiStep-target');
7863
7864                if ($currentPanel.length && $currentPanel.hasClass('is-current')) {
7865                    $buttonContinue = $currentPanel.find('.js-regForm-btnNext');
7866
7867                    if ($buttonContinue.length) {
7868                        $buttonContinue.trigger('mousedown', true);
7869                    }
7870                }
7871
7872                return false;
7873            };
7874
7875            Register.initAutocompleteAddress = function (isMultiStep) {
7876                Register.getSuggestElements();
7877
7878                if (!suggestElems.suggestListTemplate) {
7879                    return;
7880                }
7881
7882                Register.addEventSuggest();
7883                Register.setMutationObserver(isMultiStep);
7884                Register.setTargetCountry();
7885
7886                if (suggestConfig.country
7887                    && suggestElems.addressSuggestWrapper
7888                    && Register.isSuggestTargetSite()) {
7889                    Register.changeAttribute();
7890                    Register.addEventAfterReplace();
7891
7892                    if (isMultiStep) {
7893                        Register.setAutoCompleteHideClass(false);
7894                    }
7895                }
7896            };
7897
7898            Register.getSuggestElements = function () {
7899                suggestElems = {
7900                    country: doc.getElementById(idNames.country),
7901                    addressWrapper: doc.getElementById(idNames.addressWrapper),
7902                    address1: doc.getElementById(idNames.address1),
7903                    state: doc.getElementById(idNames.state),
7904                    city: doc.getElementById(idNames.city),
7905                    cityId: doc.getElementById(idNames.cityId),
7906                    zipCode: doc.getElementById(idNames.zipCode),
7907                    addressSuggestWrapper: doc.getElementById(idNames.addressSuggestWrapper),
7908                    addressSuggest: doc.getElementById(idNames.addressSuggest),
7909                    suggestListTemplate: doc.getElementById(idNames.suggestListTemplate),
7910                    suggestListShowMoreTemplate: doc.getElementById(idNames.suggestListShowMoreTemplate)
7911                };
7912            };
7913
7914            Register.addEventSuggest = function () {
7915                var targetParent = null;
7916
7917                doc.addEventListener('click', function (e) {
7918                    if (e.target && e.target.classList.contains(classNames.suggestButton)) {
7919                        e.preventDefault();
7920
7921                        switch (suggestConfig.currentApi.name) {
7922                            case 'postGrid':
7923                                Register.setFormPostGridValue(e.target);
7924                                break;
7925
7926                            case 'juso':
7927                                Register.setFormJusoValue(e.target);
7928                                break;
7929
7930                            default:
7931                                return;
7932                        }
7933                    }
7934                });
7935
7936                doc.addEventListener('click', function (e) {
7937                    if (e.target
7938                        && (e.target.classList.contains(classNames.suggestShowMoreButton)
7939                        || e.target.closest('.' + classNames.suggestShowMoreButton))) {
7940                        e.preventDefault();
7941
7942                        targetParent = e.target.closest('.' + classNames.suggestShowMoreButton);
7943
7944                        if (targetParent) {
7945                            Register.setFormJusoValue(targetParent);
7946                            e.target.parentElement.remove();
7947                        } else {
7948                            Register.setFormJusoValue(e.target);
7949                            e.target.remove();
7950                        }
7951                    }
7952                });
7953
7954                doc.addEventListener('click', function (e) {
7955                    if (e.target !== suggestElems.address1
7956                        && suggestElems.addressSuggestWrapper
7957                        && (!e.target.classList.contains(classNames.suggestShowMoreButton)
7958                        && !e.target.closest('.' + classNames.suggestShowMoreButton))) {
7959                        suggestElems.addressSuggestWrapper.classList.add(classNames.isHide);
7960
7961                        if (suggestElems.addressSuggest) {
7962                            while (suggestElems.addressSuggest.lastChild) {
7963                                suggestElems.addressSuggest.removeChild(suggestElems.addressSuggest.lastChild);
7964                            }
7965
7966                            suggestElems.addressSuggestWrapper.style.height = 'auto';
7967                        }
7968                    }
7969                });
7970            };
7971
7972            Register.setMutationObserver = function (isMultiStep) {
7973                var target = doc.getElementById(idNames.suzRegArea);
7974                var observer = null;
7975                var observersuggestConfig = {
7976                    attributeFilter: ['id'],
7977                    childList: true
7978                };
7979                var $currentPanel = null;
7980                var $panels = null;
7981                var $state = null;
7982
7983                if (!target) {
7984                    return;
7985                }
7986
7987                observer = new MutationObserver(function (record) {
7988                    if (record[0].target.id === idNames.suzRegArea) {
7989                        suggestConfig.country = '';
7990                        googleAutocomplete.triggerField = null;
7991
7992                        Register.getSuggestElements();
7993                        Register.getGoogleSuggestElements();
7994                        Register.setTargetCountry();
7995                        Register.removeGoogleSuggestArea();
7996
7997                        if (!suggestConfig.country) {
7998                            return;
7999                        }
8000
8001                        Register.setCurrentApi();
8002
8003                        if (suggestConfig.currentApi.name === 'google'
8004                            && googleAutocomplete.config.isRunning) {
8005                            googleAutocomplete.currentApiCategory = Register.getGoogleSuggestCategory();
8006
8007                            if (googleAutocomplete.currentApiCategory) {
8008                                googleAutocomplete.triggerField = googleAutocomplete.targetElems[googleAutocomplete.currentApiCategory.field];
8009
8010                                if (!googleAutocomplete.config.countryFormatList) {
8011                                    Register.setCountryFormatList();
8012                                }
8013
8014                                $panels = Register.getPanels();
8015
8016                                suggestConfig.isSuggestItemObserverReady = false;
8017
8018                                Register.setGoogleAutocompleteApi();
8019                                Register.addGoogleAutocompleteEvent();
8020
8021                                if (suggestConfig.country !== 'TW') {
8022                                    Register.changeAttribute();
8023                                }
8024
8025                                Register.setReplacedElementValue();
8026                                googleAutocomplete.config.isOptionUpdateTriggerField = false;
8027
8028                                if ($panels.length) {
8029                                    $currentPanel = $panels.filter('.' + Form.classNames.isCurrent);
8030
8031                                    if ($currentPanel.length) {
8032                                        $state = $currentPanel.find('#' + idNames.state);
8033                                    }
8034                                }
8035
8036                                if (isMultiStep && ($state === null || !$state.length)) {
8037                                    Register.setAutoCompleteHideClass(false);
8038                                }
8039                            }
8040                        } else if (suggestElems.addressSuggestWrapper && Register.isSuggestTargetSite()) {
8041                            $panels = Register.getPanels();
8042
8043                            Register.changeAttribute();
8044                            Register.addEventAfterReplace();
8045
8046                            if ($panels.length) {
8047                                $currentPanel = $panels.filter('.' + Form.classNames.isCurrent);
8048
8049                                if ($currentPanel.length) {
8050                                    $state = $currentPanel.find('#' + idNames.state);
8051                                }
8052                            }
8053
8054                            if (isMultiStep && ($state === null || !$state.length)) {
8055                                Register.setAutoCompleteHideClass(false);
8056                            }
8057                        }
8058                    }
8059                });
8060
8061                observer.observe(target, observersuggestConfig);
8062
8063                suggestConfig.isSuggestObserverReady = true;
8064            };
8065
8066            Register.setTargetCountry = function () {
8067                var country = suggestElems.country;
8068                var optionElements = null;
8069                var CountryValue = null;
8070                var targeCountry = '';
8071
8072                if(!country) {
8073                    return;
8074                }
8075
8076                optionElements = country.options;
8077                CountryValue = optionElements[country.selectedIndex].value;
8078                targeCountry = Register.getTargetCountryName(CountryValue);
8079
8080                if (targeCountry) {
8081                    suggestConfig.country = targeCountry;
8082                }
8083            };
8084
8085            Register.getTargetCountryName = function (CountryValue) {
8086                var countryName = '';
8087
8088                if (!countryArray.length) {
8089                    Register.connectCountryArray();
8090                };
8091
8092                if (typeof CountryValue === 'string' && CountryValue) {
8093                    countryArray.forEach(function (country) {
8094                        if (CountryValue === country) {
8095                            countryName = country;
8096                        }
8097                    });
8098                }
8099
8100                return countryName;
8101            };
8102
8103            Register.connectCountryArray = function () {
8104                var partialArray = [];
8105
8106                Object.keys(suggestConfig.api).forEach(function (key) {
8107                    if (suggestConfig.api[key]) {
8108                        if (!partialArray.length) {
8109                            partialArray = suggestConfig.api[key].target;
8110                        } else {
8111                            partialArray = partialArray.concat(suggestConfig.api[key].target);
8112                        }
8113                    }
8114                });
8115
8116                countryArray = partialArray;
8117            };
8118
8119            Register.isSuggestTargetSite = function () {
8120                Register.setCurrentApi();
8121
8122                if (suggestConfig.country !== 'KR') {
8123                    return true;
8124                } else if (win.kpi_siteSettings.siteId === suggestConfig.currentApi.siteId) {
8125                    return true;
8126                }
8127
8128                return false;
8129            };
8130
8131            Register.changeAttribute = function () {
8132                if (googleAutocomplete.triggerField) {
8133                    googleAutocomplete.triggerField.setAttribute('autocomplete', 'off');
8134
8135                    if (googleAutocomplete.triggerField === suggestElems.zipCode) {
8136                        googleAutocomplete.triggerField.placeholder = '';
8137                    }
8138                } else if (suggestElems.address1 && suggestElems.addressWrapper) {
8139                    suggestElems.address1.setAttribute('autocomplete', 'off');
8140                    suggestElems.addressWrapper.style.position = 'relative';
8141                }
8142            };
8143
8144            Register.addEventAfterReplace = function () {
8145                if (!suggestElems.address1) {
8146                    return;
8147                }
8148
8149                suggestElems.address1.addEventListener('input', Register.setSuggest, false);
8150            };
8151
8152            Register.setSuggest = function (e) {
8153                var address = e.currentTarget;
8154                var addressWrapper = address.closest('#' + idNames.addressWrapper);
8155                var addressSuggestWrapper = null;
8156
8157                if (e.inputType === 'deleteCompositionText' || e.inputType === 'insertFromComposition') {
8158                    return;
8159                }
8160
8161                if (addressWrapper) {
8162                    addressSuggestWrapper = addressWrapper.querySelector('#' + idNames.addressSuggestWrapper);
8163                }
8164
8165                if (!address || !addressSuggestWrapper) {
8166                    return;
8167                }
8168
8169                if (!suggestConfig.currentApi) {
8170                    Register.setCurrentApi();
8171                }
8172
8173                if (suggestConfig.timer !== null) {
8174                    clearTimeout(suggestConfig.timer);
8175                }
8176
8177                suggestConfig.timer = setTimeout(function () {
8178                    if (address.value === '') {
8179                        addressSuggestWrapper.classList.add(classNames.isHide);
8180
8181                        return;
8182                    }
8183
8184                    switch (suggestConfig.currentApi.name) {
8185                        case 'postGrid':
8186                            Register.getSuggestPostGridValue(address).then(function (result) {
8187                                if (result) {
8188                                    suggestConfig.currentApi.length = result.data.length;
8189
8190                                    Register.expandSuggest(address, result);
8191                                }
8192                            }).catch(function (error) {
8193                                if (suggestConfig.isAutoCompleteElementsHide) {
8194                                    Register.setAutoCompleteHideClass(true);
8195                                }
8196                            });
8197                            break;
8198
8199                        case 'juso':
8200                            Register.getSuggestJusoValue(address, 1).then(function (result) {
8201                                suggestConfig.currentApi.length = result[0].results.juso.length;
8202
8203                                Register.expandSuggest(address, result);
8204                            }).catch(function (error) {
8205                                if (suggestConfig.isAutoCompleteElementsHide) {
8206                                    Register.setAutoCompleteHideClass(true);
8207                                }
8208                            });
8209                            break;
8210
8211                        default:
8212                            return;
8213                    }
8214                }, 200);
8215            };
8216
8217            Register.setCurrentApi = function () {
8218                suggestConfig.api.forEach(function (item) {
8219                    if (item.target) {
8220                        if(item.target.indexOf(suggestConfig.country) !== -1) {
8221                            suggestConfig.currentApi = item;
8222                        }
8223                    }
8224                });
8225            };
8226
8227            Register.expandSuggest = function (address, result) {
8228                if (result || result.length) {
8229                    if (address.value === '') {
8230                        return;
8231                    }
8232
8233                    Register.updateSuggest(result);
8234                    Register.showSuggest();
8235
8236                    if (suggestConfig.isAutoCompleteElementsHide) {
8237                        Register.setAutoCompleteHideClass(true);
8238                    }
8239                }
8240            };
8241
8242            Register.getSuggestPostGridValue = function (item) {
8243                var api = suggestConfig.currentApi;
8244                var myHeaders = new Headers();
8245                var controller = new AbortController();
8246                var requestOptions = {
8247                    method: 'GET',
8248                    headers: myHeaders,
8249                    redirect: 'follow',
8250                    signal: controller.signal
8251                };
8252                var url = api.url;
8253                var partialStreet = '';
8254                var idInfo = '';
8255
8256                myHeaders.append('x-api-key', api.key);
8257
8258                if (typeof item === 'object' && item === suggestElems.address1) {
8259                    partialStreet = item.value;
8260
8261                    if (partialStreet) {
8262                        url += '?partialStreet=' + partialStreet + '&countriesFilter=' + suggestConfig.country;
8263                    } else {
8264                        item.value = '';
8265                        suggestElems.addressSuggestWrapper.classList.add(classNames.isHide);
8266
8267                        return;
8268                    }
8269                } else if (typeof item === 'object') {
8270                    idInfo = item.dataset.idInfo;
8271
8272                    if (idInfo) {
8273                        url += '?container=' + idInfo + '&advanced=true';
8274                    } else {
8275                        return;
8276                    }
8277                }
8278
8279                if (suggestConfig.timeOutTimer !== null) {
8280                    clearTimeout(suggestConfig.timeOutTimer);
8281                }
8282
8283                suggestConfig.timeOutTimer = setTimeout(function () {
8284                    controller.abort();
8285                }, 10000);
8286
8287                return new Promise(function (resolve, reject) {
8288                    fetch(url, requestOptions)
8289                    .then(function (result) {
8290                        if (!result.ok) {
8291                            throw new Error(result.status);
8292                        }
8293
8294                        return result.json();
8295                    })
8296                    .then(function (result) {
8297                        resolve(result);
8298                    })
8299                    .catch(function (error) {
8300                        reject(error);
8301                    });
8302                });
8303            };
8304
8305            Register.getSuggestJusoValue = function (item, currentPageNumber) {
8306                var api = suggestConfig.currentApi;
8307                var searchKeyword = item.value;
8308                var targetCurrentPageNumber = 1
8309
8310                if (currentPageNumber > 1) {
8311                    targetCurrentPageNumber = Number(item.dataset.showCount);
8312                    searchKeyword = suggestElems.address1.value;
8313                }
8314
8315                return new Promise(function (resolve, reject) {
8316                    $.ajax({
8317                        url: api.url,
8318                        type: 'post',
8319                        data: {
8320                            keyword: searchKeyword,
8321                            resultType: 'json',
8322                            currentPage: targetCurrentPageNumber,
8323                            countPerPage: 100,
8324                            confmKey: api.key,
8325                            hstryYn: 'Y'
8326                        },
8327                        dataType: 'jsonp',
8328                        crossDomain: true,
8329                        jsonpCallback: 'callbackAddress',
8330                        timeout: 10000
8331                    }).done(function (result) {
8332                        if (result.results.common.errorCode !== '0') {
8333                            reject(result.results.common.errorMessage);
8334                        }
8335
8336                        resolve([result, targetCurrentPageNumber]);
8337                    }).fail(function (errorThrown) {
8338                        reject(errorThrown);
8339                    });
8340                });
8341            };
8342
8343            Register.updateSuggest = function (result) {
8344                var api = suggestConfig.currentApi;
8345                var fragment = doc.createDocumentFragment();
8346                var suggestListNodeClone = null;
8347                var id = '';
8348                var type = '';
8349                var addressText = '';
8350                var zipCode = '';
8351                var address = '';
8352                var city = '';
8353                var stateId = '';
8354                var addressDescription = '';
8355                var button = null;
8356                var currentPageNumber = 0;
8357
8358                if (result[1]) {
8359                    currentPageNumber = result[1];
8360
8361                    if (suggestElems.addressSuggest && currentPageNumber === 1) {
8362                        while (suggestElems.addressSuggest.lastChild) {
8363                            suggestElems.addressSuggest.removeChild(suggestElems.addressSuggest.lastChild);
8364                        }
8365                    }
8366                } else {
8367                    if (suggestElems.addressSuggest) {
8368                        while (suggestElems.addressSuggest.lastChild) {
8369                            suggestElems.addressSuggest.removeChild(suggestElems.addressSuggest.lastChild);
8370                        }
8371                    }
8372                }
8373
8374                switch (api.name) {
8375                    case 'postGrid':
8376                        result.data.forEach(function (elem) {
8377                            suggestListNodeClone = Register.createNodeClone(suggestElems.suggestListTemplate);
8378                            button = suggestListNodeClone.querySelector('.' + classNames.suggestButton);
8379
8380                            id = elem.id;
8381                            type = elem.type;
8382                            addressText = elem.text;
8383                            addressDescription = elem.description;
8384
8385                            if (!button) {
8386                                return;
8387                            }
8388
8389                            if (addressText && addressDescription) {
8390                                button.textContent = addressText + ' ' + addressDescription;
8391                            } else if (addressText) {
8392                                button.textContent = addressText;
8393                            }
8394
8395                            if (id && type) {
8396                                button.dataset.idInfo = id;
8397                                button.dataset.typeInfo = type;
8398                            }
8399
8400                            fragment.appendChild(suggestListNodeClone);
8401                        });
8402                        break;
8403
8404                    case 'juso':
8405                        result[0].results.juso.forEach(function (elem) {
8406                            suggestListNodeClone = Register.createNodeClone(suggestElems.suggestListTemplate);
8407                            button = suggestListNodeClone.querySelector('.' + classNames.suggestButton);
8408
8409                            zipCode = elem.zipNo;
8410                            addressText = elem.roadAddr;
8411
8412                            if (!button || !addressText) {
8413                                return;
8414                            }
8415
8416                            if (zipCode) {
8417                                button.textContent = zipCode + ' ' + addressText;
8418                            } else {
8419                                button.textContent = addressText;
8420                            }
8421
8422                            if (suggestElems.city && suggestElems.state) {
8423                                city = elem.sggNm;
8424                                stateId = elem.siNm;
8425
8426                                if (city && stateId) {
8427                                    address = addressText.replace(`${city} `, '').replace(`${stateId} `, '');
8428                                } else if (city) {
8429                                    address = addressText.replace(`${city} `, '');
8430                                } else if (stateId) {
8431                                    address = addressText.replace(`${stateId} `, '');
8432                                }
8433                            }
8434
8435                            if (address) {
8436                                button.dataset.address = address;
8437                            } else {
8438                                button.dataset.address = addressText;
8439                            }
8440
8441                            if (zipCode) {
8442                                button.dataset.zipcode = zipCode;
8443                            }
8444
8445                            if (city) {
8446                                button.dataset.city = city;
8447                            }
8448
8449                            if (stateId) {
8450                                button.dataset.stateId = stateId;
8451                            }
8452
8453                            fragment.appendChild(suggestListNodeClone);
8454                        });
8455
8456                        Register.setShowMoreButton(fragment, api, currentPageNumber);
8457                        break;
8458
8459                    default:
8460                        return;
8461                }
8462
8463                suggestElems.addressSuggest.append(fragment);
8464            };
8465
8466            Register.setShowMoreButton = function (fragment, api, currentPageNumber) {
8467                var suggestListNodeClone = null;
8468                var button = null;
8469
8470                if (!suggestElems.suggestListShowMoreTemplate) {
8471                    return;
8472                }
8473
8474                if ((api.maxLength > 0)
8475                    && (api.length === api.maxLength)) {
8476                    suggestListNodeClone = Register.createNodeClone(suggestElems.suggestListShowMoreTemplate);
8477                    button = suggestListNodeClone.querySelector('.' + classNames.suggestShowMoreButton);
8478                    button.dataset.showCount = currentPageNumber + 1;
8479
8480                    fragment.appendChild(suggestListNodeClone);
8481                }
8482            };
8483
8484            Register.showSuggest = function () {
8485                var suggestHeight = 0;
8486
8487                if (suggestConfig.currentApi.length > 0) {
8488                    suggestElems.addressSuggestWrapper.style.height = 'auto';
8489                    suggestElems.addressSuggestWrapper.style.bottom = null;
8490                    suggestElems.addressSuggestWrapper.classList.remove(classNames.isHide);
8491                    suggestHeight = suggestElems.addressSuggestWrapper.offsetHeight;
8492                    suggestHeight += suggestElems.addressSuggestWrapper.marginTop;
8493
8494                    if (suggestHeight >= 300) {
8495                        suggestElems.addressSuggestWrapper.style.height = '300px';
8496                        suggestElems.addressSuggestWrapper.style.bottom = '-300px';
8497                    } else {
8498                        suggestElems.addressSuggestWrapper.style.height = 'auto';
8499                        suggestElems.addressSuggestWrapper.style.bottom = (suggestHeight * -1) + 'px';
8500                    }
8501                } else {
8502                    suggestElems.addressSuggestWrapper.classList.add(classNames.isHide);
8503                }
8504            };
8505
8506            Register.setFormPostGridValue = function (item) {
8507                var api = suggestConfig.currentApi;
8508                var myHeaders = new Headers();
8509                var urlEncoded = new URLSearchParams();
8510                var controller = new AbortController();
8511                var requestOptions = {
8512                    method: 'POST',
8513                    headers: myHeaders,
8514                    body: urlEncoded,
8515                    redirect: 'follow',
8516                    signal: controller.signal
8517                };
8518                var url = api.url;
8519                var idInfo = '';
8520                var line1 = '';
8521                var line2 = '';
8522                var line3 = '';
8523                var line4 = '';
8524                var city = '';
8525                var province = '';
8526                var provinceState = '';
8527                var pc = '';
8528                var address = '';
8529
8530                if (!item) {
8531                    return;
8532                }
8533
8534                if (item.dataset.typeInfo !== 'Address') {
8535                    Register.getSuggestPostGridValue(item).then(function (result) {
8536                        if (result) {
8537                            api.length = result.data.length;
8538
8539                            Register.updateSuggest(result);
8540                            Register.showSuggest();
8541                        }
8542                    });
8543
8544                    return;
8545                }
8546
8547                idInfo = item.dataset.idInfo;
8548
8549                if (idInfo) {
8550                    urlEncoded.append('id', idInfo);
8551                } else {
8552                    return;
8553                }
8554
8555                myHeaders.append('x-api-key', api.key);
8556
8557                if (suggestConfig.timeOutTimer !== null) {
8558                    clearTimeout(suggestConfig.timeOutTimer);
8559                }
8560
8561                suggestConfig.timeOutTimer = setTimeout(function () {
8562                    controller.abort();
8563                }, 10000);
8564
8565                fetch(url, requestOptions)
8566                .then(function (result) {
8567                    if (!result.ok) {
8568                        throw new Error();
8569                    }
8570
8571                    return result.json();
8572                })
8573                .then(function (result) {
8574                    line1 = result.data.line1;
8575                    line2 = result.data.line2;
8576                    line3 = result.data.line3;
8577                    line4 = result.data.line4;
8578                    city = result.data.city;
8579                    province = result.data.provinceCode;
8580                    provinceState = result.data.provinceOrState;
8581                    pc = result.data.postalOrZip;
8582
8583                    if (line1 && line2 && line3 && line4) {
8584                        address = line1 + ' ' + line2 + ' ' + line3 + ' ' + line4;
8585                    } else if (line1 && line2 && line3) {
8586                        address = line1 + ' ' + line2 + ' ' + line3;
8587                    } else if (line1 && line2) {
8588                        address = line1 + ' ' + line2;
8589                    } else if (line1) {
8590                        address = line1;
8591                    }
8592
8593                    if (address) {
8594                        suggestConfig.hasAddressValue = true;
8595
8596                        Register.inputValue(suggestElems.address1, address);
8597                    }
8598
8599                    if (city) {
8600                        Register.inputValue(suggestElems.city, city);
8601                    }
8602
8603                    if (pc) {
8604                        if (suggestConfig.country === 'US' && pc.length !== 5) {
8605                            pc = pc.substring(0, pc.indexOf('-'));
8606                        }
8607
8608                        Register.inputValue(suggestElems.zipCode, pc);
8609                    }
8610
8611                    if (province) {
8612                        if (suggestConfig.country === 'IE' && provinceState) {
8613                            Register.inputValue(suggestElems.state, provinceState, false);
8614
8615                            suggestConfig.hasAddressValue = false;
8616
8617                            return;
8618                        }
8619
8620                        Register.inputValue(suggestElems.state, province, true);
8621                    } else if (provinceState) {
8622                        Register.inputValue(suggestElems.state, provinceState, false);
8623                    }
8624
8625                    suggestConfig.hasAddressValue = false;
8626                })
8627                .catch(function (error) {
8628                    suggestElems.addressSuggestWrapper.classList.add(classNames.isHide);
8629                });
8630            };
8631
8632            Register.setFormJusoValue = function (item) {
8633                var address = '';
8634                var zipCode = '';
8635                var city = '';
8636                var stateId = '';
8637
8638                if (!item) {
8639                    return;
8640                }
8641
8642                if (item.dataset.showCount) {
8643                    this.getSuggestJusoValue(item, item.dataset.showCount).then(function (result) {
8644                        suggestConfig.currentApi.length = result[0].results.juso.length;
8645
8646                        Register.updateSuggest(result);
8647                        Register.showSuggest();
8648                    });
8649
8650                    return;
8651                }
8652
8653                address = item.dataset.address;
8654                zipCode = item.dataset.zipcode;
8655                city = item.dataset.city;
8656                stateId = item.dataset.stateId;
8657
8658                if (address) {
8659                    suggestConfig.hasAddressValue = true;
8660
8661                    this.inputValue(suggestElems.address1, address);
8662                }
8663
8664                if (zipCode) {
8665                    this.inputValue(suggestElems.zipCode, zipCode);
8666                }
8667
8668                if (city) {
8669                    this.inputValue(suggestElems.city, city);
8670                }
8671
8672                if (stateId) {
8673                    this.inputValue(suggestElems.state, stateId);
8674                }
8675            };
8676
8677            Register.inputValue = function (field, value, isStateCode) {
8678                var selector = null;
8679                var i = 0;
8680
8681                if ((typeof field !== 'object' || !field) && suggestConfig.hasAddressValue) {
8682                    Register.updateAddressValue(value);
8683
8684                    return;
8685                } else if ((typeof field !== 'object' || !field) && !suggestConfig.hasAddressValue) {
8686                    return;
8687                }
8688
8689                if (field === suggestElems.state) {
8690                    if (isStateCode) {
8691                        selector = field.querySelector('option[value="' + value + '"]');
8692
8693                        if (selector) {
8694                            selector.selected = true;
8695                            Register.clearInputError(field);
8696                        }
8697                    } else {
8698                        selector = field.options;
8699
8700                        for (i = 0; i < selector.length; i++) {
8701                            if (selector[i].text === value) {
8702                                selector[i].selected = true;
8703                                Register.clearInputError(field);
8704
8705                                break;
8706                            }
8707                        }
8708                    }
8709                } else {
8710                    field.value = value;
8711                    Register.clearInputError(field);
8712
8713                    if (field.classList.contains(win.KeyenceForm.PatternMatchValidator.classNames.replaceValueTrigger)) {
8714                        win.KeyenceForm.PatternMatchValidator.updateFieldStatus(field);
8715
8716                        if (!field.classList.contains(win.KeyenceForm.PatternMatchValidator.classNames.status)) {
8717                            win.suz_callRegValidator(field.name, field.value);
8718                        }
8719                    } else {
8720                        win.suz_callRegValidator(field.name, field.value);
8721                    }
8722                }
8723
8724                suggestElems.addressSuggestWrapper.classList.add(classNames.isHide);
8725            };
8726
8727            Register.updateAddressValue = function (value) {
8728                var addressValue = suggestElems.address1.value;
8729
8730                addressValue += ', ' + value;
8731                suggestElems.address1.value = addressValue;
8732
8733                win.suz_callRegValidator(suggestElems.address1.name, addressValue);
8734            };
8735
8736            Register.createNodeClone = function (template) {
8737                return doc.importNode(template.content, true);
8738            };
8739
8740            Register.clearInputError = function (field) {
8741                var fieldWrapper = null;
8742                var errorElem = null;
8743
8744                if (typeof field !== 'object' || !field) {
8745                    return;
8746                }
8747
8748                fieldWrapper = field.closest('.' + classNames.inputWrapper);
8749
8750                if (fieldWrapper) {
8751                    fieldWrapper.classList.remove(classNames.isError);
8752                    errorElem = fieldWrapper.querySelector('.' + classNames.errorText);
8753                }
8754
8755                if (errorElem) {
8756                    errorElem.style.display = 'none';
8757                }
8758            };
8759
8760            Register.setAutoCompleteHideClass = function (isHide) {
8761                var targets = {
8762                    address1: suggestElems.address1,
8763                    city: suggestElems.city,
8764                    state: suggestElems.state,
8765                    zipCode: suggestElems.zipCode
8766                }
8767                var targetWrapper = null;
8768
8769                if (isHide) {
8770                    if (!suggestConfig.isAutoCompleteElementsHide) {
8771                        return;
8772                    }
8773                }
8774
8775                if (suggestConfig.currentApi.name === 'google'
8776                    && !googleAutocomplete.triggerField) {
8777                    return;
8778                }
8779
8780                if (suggestConfig.currentApi.name !== 'google') {
8781                    delete targets.address1;
8782                }
8783
8784                if (suggestConfig.country === 'TW') {
8785                    targets.cityId = suggestElems.cityId;
8786                }
8787
8788                Object.keys(targets).forEach(function (key) {
8789                    if (targets[key]) {
8790                        if (suggestConfig.currentApi.name === 'google'
8791                            && targets[key] === googleAutocomplete.triggerField) {
8792                            return;
8793                        }
8794
8795                        targetWrapper = targets[key].closest('.prd-inputGroup');
8796
8797                        if (targetWrapper) {
8798                            Register.updateClass(targetWrapper, isHide);
8799                        }
8800                    }
8801                });
8802            };
8803
8804            Register.updateClass = function (target, isHide) {
8805                if (isHide) {
8806                    target.classList.remove(classNames.isAutoCompleteElementHide);
8807                    suggestConfig.isAutoCompleteElementsHide = false;
8808                } else {
8809                    target.classList.add(classNames.isAutoCompleteElementHide);
8810                    suggestConfig.isAutoCompleteElementsHide = true;
8811                }
8812            };
8813
8814            Register.setGoogleAutocomplete = function () {
8815                var scriptElement = doc.createElement('script');
8816
8817                Register.addLanguageQuery();
8818
8819                scriptElement.src = googleAutocomplete.config.url;
8820                scriptElement.async = true;
8821
8822                doc.head.appendChild(scriptElement);
8823
8824                win.initGoogleAutocompleteAddress = function () {
8825                    googleAutocomplete.config.isRunning = true;
8826
8827                    Register.addAutocompleteRunningData();
8828                    Register.getGoogleSuggestElements();
8829                    Register.setCurrentApi();
8830
8831                    if (!suggestConfig.country) {
8832                        Register.setTargetCountry();
8833                    }
8834
8835                    if (!suggestConfig.isSuggestObserverReady) {
8836                        Register.setMutationObserver(suggestConfig.isMultiStep);
8837                    }
8838
8839                    if (suggestConfig.country
8840                        && suggestConfig.currentApi.name === 'google') {
8841                        googleAutocomplete.currentApiCategory = Register.getGoogleSuggestCategory();
8842
8843                        if (googleAutocomplete.currentApiCategory) {
8844                            googleAutocomplete.triggerField = googleAutocomplete.targetElems[googleAutocomplete.currentApiCategory.field];
8845
8846                            if (!googleAutocomplete.config.countryFormatList) {
8847                                Register.setCountryFormatList();
8848                            }
8849
8850                            Register.removeGoogleSuggestArea();
8851                            Register.changeAttribute();
8852                            Register.setGoogleAutocompleteApi();
8853                            Register.addGoogleAutocompleteEvent();
8854                        }
8855
8856                        if (suggestConfig.isMultiStep) {
8857                            Register.setAutoCompleteHideClass(false);
8858                        }
8859                    }
8860                };
8861            };
8862
8863            Register.addLanguageQuery = function () {
8864                var siteId = win.kpi_siteSettings.siteId;
8865
8866                if (siteId === Form.siteData.KW.id) {
8867                    googleAutocomplete.config.url = googleAutocomplete.config.url + '&language=zh-TW';
8868                } else if (siteId === Form.siteData.KIN.id) {
8869                    googleAutocomplete.config.url = googleAutocomplete.config.url + '&language=en-GB';
8870                }
8871            };
8872
8873            Register.addAutocompleteRunningData = function () {
8874                var registerWrapper = null;
8875
8876                registerWrapper = doc.getElementById('js-multiStepForm-registration');
8877
8878                if (registerWrapper) {
8879                    registerWrapper.dataset.googleAutocompleteForVwo = true;
8880                }
8881            };
8882
8883            Register.getGoogleSuggestElements = function () {
8884                googleAutocomplete.targetElems = {
8885                    address1: doc.getElementById(idNames.address1),
8886                    state: doc.getElementById(idNames.state),
8887                    city: doc.getElementById(idNames.city),
8888                    cityId: doc.getElementById(idNames.cityId),
8889                    zipCode: doc.getElementById(idNames.zipCode),
8890                    company: doc.getElementById(idNames.company)
8891                }
8892            };
8893
8894            Register.getGoogleSuggestCategory = function () {
8895                var category = null;
8896
8897                Object.keys(googleAutocomplete.category).forEach(function (key) {
8898                    if (googleAutocomplete.category[key]) {
8899                        if (googleAutocomplete.category[key].target.indexOf(suggestConfig.country) !== -1) {
8900                            category = googleAutocomplete.category[key];
8901                        }
8902                    }
8903                });
8904
8905                return category;
8906            };
8907
8908            Register.setCountryFormatList = function () {
8909                googleAutocomplete.config.countryFormatList = {
8910                    MX: {
8911                        isAddressSortRequired: false,
8912                        notAutoCompleteField: ['cityId', 'company'],
8913                        addressInputTarget: 'address1',
8914                        hasMultiCountry: false,
8915                        subpremise: ['totalValue', ', ', 'long_name'],
8916                        streetNumber: ['long_name', ', ', 'totalValue'],
8917                        route: ['long_name', ' ', 'totalValue'],
8918                        neighborhood: ['totalValue', ', ', 'long_name'],
8919                        sublocalityLevel1: ['totalValue', ', ', 'long_name'],
8920                        postalCode: ['long_name', 'totalValue'],
8921                        postalCodeSuffix: ['totalValue', '-', 'long_name'],
8922                        locality: {
8923                            type: function (targetField) {
8924                                return targetField.tagName.toLowerCase();
8925                            },
8926                            target: 'city',
8927                            name: 'long_name'
8928                        },
8929                        administrativeAreaLevel1: {
8930                            type: function (targetField) {
8931                                return targetField.tagName.toLowerCase();
8932                            },
8933                            target: 'state',
8934                            name: 'long_name'
8935                        }
8936                    },
8937                    BR: {
8938                        isAddressSortRequired: false,
8939                        notAutoCompleteField: ['cityId', 'company'],
8940                        addressInputTarget: 'address1',
8941                        hasMultiCountry: false,
8942                        subpremise: ['totalValue', ', ', 'long_name'],
8943                        streetNumber: ['long_name', 'totalValue'],
8944                        route: ['long_name', ' ', 'totalValue'],
8945                        neighborhood: ['totalValue', ', ', 'long_name'],
8946                        sublocalityLevel1:['totalValue', ' - ', 'long_name'],
8947                        postalCode: ['long_name', 'totalValue'],
8948                        postalCodeSuffix: ['totalValue', '-', 'long_name'],
8949                        administrativeAreaLevel2: {
8950                            type: function (targetField) {
8951                                return targetField.tagName.toLowerCase();
8952                            },
8953                            target: 'city',
8954                            name: 'long_name'
8955                        },
8956                        administrativeAreaLevel1: {
8957                            type: function (targetField) {
8958                                return targetField.tagName.toLowerCase();
8959                            },
8960                            target: 'state',
8961                            name: 'short_name'
8962                        },
8963                        custom: {
8964                            zipCode: {
8965                                replaceValue: function (zipCode) {
8966                                    return zipCode.replace('-', '');
8967                                }
8968                            }
8969                        }
8970                    },
8971                    BE: {
8972                        isAddressSortRequired: false,
8973                        notAutoCompleteField: ['cityId', 'company'],
8974                        addressInputTarget: 'address1',
8975                        hasMultiCountry: true,
8976                        subpremise: ['totalValue', ', ', 'long_name'],
8977                        streetNumber: ['long_name', 'totalValue'],
8978                        route: ['long_name', ' ', 'totalValue'],
8979                        neighborhood: ['totalValue', ', ', 'long_name'],
8980                        locality: {
8981                            type: function (targetField) {
8982                                return targetField.tagName.toLowerCase();
8983                            },
8984                            target: 'city',
8985                            name: 'long_name',
8986                            country: ['BE', 'NL', 'CH', 'AT', 'PL', 'HU', 'SK', 'RO']
8987                        },
8988                        postalCode: ['long_name', 'totalValue'],
8989                        postalCodeSuffix: ['totalValue', '-', 'long_name'],
8990                        administrativeAreaLevel1: {
8991                            type: function (targetField) {
8992                                return targetField.tagName.toLowerCase();
8993                            },
8994                            target: 'city',
8995                            name: 'long_name',
8996                            country: ['SI']
8997                        },
8998                        sublocalityLevel1: {
8999                            type: function (targetField) {
9000                                return targetField.tagName.toLowerCase();
9001                            },
9002                            target: 'city',
9003                            name: 'long_name',
9004                            country: ['CZ']
9005                        },
9006                        allCountry: ['BE', 'NL', 'CH', 'AT', 'PL', 'HU', 'SK', 'RO', 'SI', 'CZ']
9007                    },
9008                    IN: {
9009                        isAddressSortRequired: false,
9010                        notAutoCompleteField: ['address1', 'cityId', 'company'],
9011                        hasMultiCountry: false,
9012                        postalCode: ['long_name', 'totalValue'],
9013                        postalCodeSuffix: ['totalValue', '-', 'long_name'],
9014                        locality: {
9015                            type: function (targetField) {
9016                                return targetField.tagName.toLowerCase();
9017                            },
9018                            target: 'city',
9019                            name: 'long_name'
9020                        },
9021                        administrativeAreaLevel1: {
9022                            type: function (targetField) {
9023                                return targetField.tagName.toLowerCase();
9024                            },
9025                            target: 'state',
9026                            name: 'custom',
9027                            parts: ['IN:', 'long_name_upperCase']
9028                        }
9029                    },
9030                    FR: {
9031                        isAddressSortRequired: false,
9032                        notAutoCompleteField: ['cityId', 'company'],
9033                        addressInputTarget: 'address1',
9034                        hasMultiCountry: false,
9035                        subpremise: ['totalValue', ', ', 'long_name'],
9036                        streetNumber: ['long_name', 'totalValue'],
9037                        route: ['totalValue', ' ', 'long_name'],
9038                        neighborhood: ['totalValue', ', ', 'long_name'],
9039                        sublocalityLevel1:['totalValue', ', ', 'long_name'],
9040                        postalCode: ['long_name', 'totalValue'],
9041                        postalCodeSuffix: ['totalValue', '-', 'long_name'],
9042                        locality: {
9043                            type: function (targetField) {
9044                                return targetField.tagName.toLowerCase();
9045                            },
9046                            target: 'city',
9047                            name: 'long_name'
9048                        }
9049                    },
9050                    IT: {
9051                        isAddressSortRequired: true,
9052                        notAutoCompleteField: ['cityId'],
9053                        addressInputTarget: 'address1',
9054                        hasMultiCountry: false,
9055                        streetNumber: ['long_name', 'totalValue'],
9056                        route: ['long_name', ' ', 'totalValue'],
9057                        postalCode: ['long_name', 'totalValue'],
9058                        administrativeAreaLevel2: {
9059                            type: function (targetField) {
9060                                return targetField.tagName.toLowerCase();
9061                            },
9062                            target: 'state',
9063                            name: 'short_name'
9064                        },
9065                        administrativeAreaLevel3: {
9066                            type: function (targetField) {
9067                                return targetField.tagName.toLowerCase();
9068                            },
9069                            target: 'city',
9070                            name: 'long_name'
9071                        },
9072                        addressOrder: {
9073                            street_number: {
9074                                isValue: false,
9075                                value: '',
9076                                getReorderedValue: function (totalValue, apiValue, orderObject) {
9077                                    if (orderObject.route.value) {
9078                                        return orderObject.route.value + ' ' + apiValue;
9079                                    } else if (orderObject.route.isValue) {
9080                                        orderObject.street_number.value = apiValue;
9081
9082                                        return totalValue;
9083                                    } else if (totalValue) {
9084                                        return totalValue + ' ' + apiValue;
9085                                    }
9086
9087                                    return apiValue;
9088                                }
9089                            },
9090                            route: {
9091                                isValue: false,
9092                                value: '',
9093                                getReorderedValue: function (totalValue, apiValue, orderObject) {
9094                                    if (orderObject.street_number.value) {
9095                                        return apiValue + ' ' + orderObject.street_number.value;
9096                                    } else if (orderObject.street_number.isValue) {
9097                                        orderObject.route.value = apiValue;
9098
9099                                        return totalValue;
9100                                    } else if (totalValue) {
9101                                        return apiValue + ' ' + totalValue;
9102                                    }
9103
9104                                    return apiValue;
9105                                }
9106                            }
9107                        },
9108                        custom: {
9109                            company: 'getSelectedSuggestText'
9110                        }
9111                    },
9112                    TW: {
9113                        isAddressSortRequired: true,
9114                        notAutoCompleteField: [],
9115                        addressInputTarget: 'address1',
9116                        hasMultiCountry: false,
9117                        optionUpdateTriggerName: 'state',
9118                        optionUpdateTriggerId: 'suz_stateID',
9119                        subpremise: ['totalValue', ', ', 'long_name'],
9120                        streetNumber: ['totalValue', 'long_name'],
9121                        route: ['long_name', 'totalValue'],
9122                        sublocalityLevel2: ['totalValue', ', ', 'long_name'],
9123                        postalCode: ['long_name', 'totalValue'],
9124                        postalCodeSuffix: ['totalValue', '-', 'long_name'],
9125                        administrativeAreaLevel1: {
9126                            type: function (targetField) {
9127                                return targetField.tagName.toLowerCase();
9128                            },
9129                            target: 'state',
9130                            optionUpdateTriggerId: 'state',
9131                            name: 'replace',
9132                            parts: ['long_name'],
9133                            replaceValue: function (apiValue) {
9134                                if (apiValue.indexOf('臺') !== -1) {
9135                                    return apiValue.replace('臺', '台');
9136                                }
9137
9138                                return apiValue;
9139                            }
9140                        },
9141                        administrativeAreaLevel2: {
9142                            type: function (targetField) {
9143                                return targetField.tagName.toLowerCase();
9144                            },
9145                            target: 'state',
9146                            subTarget: 'cityId',
9147                            optionUpdateTriggerId: 'state',
9148                            tempValue: {
9149                                target: 'cityId',
9150                                strageLocation: 'cityLevel2'
9151                            },
9152                            name: 'replace',
9153                            parts: ['long_name'],
9154                            replaceValue: function (apiValue) {
9155                                if (apiValue.indexOf('臺') !== -1) {
9156                                    return apiValue.replace('臺', '台');
9157                                }
9158
9159                                return apiValue;
9160                            }
9161                        },
9162                        administrativeAreaLevel3: {
9163                            type: function (targetField) {
9164                                return targetField.tagName.toLowerCase();
9165                            },
9166                            target: 'cityId',
9167                            tempValue: {
9168                                target: 'cityId',
9169                                strageLocation: 'cityLevel3'
9170                            },
9171                            name: 'long_name'
9172                        },
9173                        addressOrder: {
9174                            subpremise: {
9175                                isValue: false,
9176                                value: '',
9177                                getReorderedValue: function (totalValue, apiValue, orderObject) {
9178                                    if (orderObject.street_number.isValue) {
9179                                        orderObject.subpremise.value = apiValue;
9180
9181                                        return totalValue;
9182                                    } else {
9183                                        if (totalValue === '') {
9184                                            return apiValue;
9185                                        } else {
9186                                            return totalValue + ', ' + apiValue;
9187                                        }
9188                                    }
9189                                }
9190                            },
9191                            street_number: {
9192                                isValue: false,
9193                                value: '',
9194                                getReorderedValue: function (totalValue, apiValue, orderObject) {
9195                                    if (orderObject.subpremise.value) {
9196                                        if (totalValue === '') {
9197                                            return apiValue + orderObject.subpremise.value;
9198                                        } else {
9199                                            return totalValue + apiValue + orderObject.subpremise.value;
9200                                        }
9201                                    } else {
9202                                        if (totalValue === '') {
9203                                            return apiValue;
9204                                        } else {
9205                                            return totalValue + apiValue;
9206                                        }
9207                                    }
9208                                }
9209                            }
9210          
9210              },
9211                        replaceName: {
9212                            target: 'cityId',
9213                            replaceValue: function (value) {
9214                                if (value.indexOf('区') !== -1) {
9215                                    return value.replace('区', '區');
9216                                }
9217
9218                                return value;
9219                            }
9220                        }
9221                    },
9222                    SG: {
9223                        isAddressSortRequired: true,
9224                        notAutoCompleteField: ['cityId', 'company'],
9225                        addressInputTarget: 'address1',
9226                        hasMultiCountry: false,
9227                        subpremise: ['totalValue', ', ', 'long_name'],
9228                        streetNumber: ['long_name'],
9229                        route: ['totalValue', ' ', 'long_name'],
9230                        sublocalityLevel1: ['totalValue', ', ', 'long_name'],
9231                        postalCode: ['long_name', 'totalValue'],
9232                        postalCodeSuffix: ['totalValue', '-', 'long_name'],
9233                        sublocalityLevel2: ['totalValue', ', ', 'long_name'],
9234                        addressOrder: {
9235                            street_number: {
9236                                isValue: false,
9237                                value: '',
9238                                getReorderedValue: function (totalValue, apiValue, orderObject) {
9239                                    if (orderObject.route.isValue) {
9240                                        orderObject.street_number.value = apiValue;
9241
9242                                        return totalValue;
9243                                    } else {
9244                                        if (totalValue === '') {
9245                                            return apiValue;
9246                                        } else {
9247                                            return apiValue + ', ' + totalValue;
9248                                        }
9249                                    }
9250                                }
9251                            },
9252                            route: {
9253                                isValue: false,
9254                                value: '',
9255                                getReorderedValue: function (totalValue, apiValue, orderObject) {
9256                                    if (orderObject.street_number.value) {
9257                                        if (totalValue === '') {
9258                                            return orderObject.street_number.value + ' ' + apiValue;
9259                                        } else {
9260                                            return orderObject.street_number.value + ' ' + apiValue + ', ' + totalValue;
9261                                        }
9262                                    } else {
9263                                        if (totalValue === '') {
9264                                            return apiValue;
9265                                        } else {
9266                                            return apiValue + ', ' + totalValue;
9267                                        }
9268                                    }
9269                                }
9270                            },
9271                        },
9272                    },
9273                    MY: {
9274                        isAddressSortRequired: false,
9275                        notAutoCompleteField: ['cityId', 'company'],
9276                        addressInputTarget: 'address1',
9277                        hasMultiCountry: false,
9278                        subpremise: ['long_name', ', ', 'totalValue'],
9279                        streetNumber: ['totalValue', ', ', 'long_name'],
9280                        route: ['totalValue', ', ', 'long_name'],
9281                        neighborhood: ['totalValue', ', ', 'long_name'],
9282                        sublocalityLevel1: ['totalValue', ', ', 'long_name'],
9283                        postalCode: ['long_name', 'totalValue'],
9284                        postalCodeSuffix: ['totalValue', '-', 'long_name'],
9285                        locality: {
9286                            type: function (targetField) {
9287                                return targetField.tagName.toLowerCase();
9288                            },
9289                            target: 'city',
9290                            name: 'long_name'
9291                        },
9292                        administrativeAreaLevel1: {
9293                            type: function (targetField) {
9294                                return targetField.tagName.toLowerCase();
9295                            },
9296                            target: 'state',
9297                            name: 'custom',
9298                            parts: ['MY:', 'long_name']
9299                        },
9300                        sublocalityLevel2: ['totalValue', ', ', 'long_name'],
9301                    },
9302                    ID: {
9303                        isAddressSortRequired: true,
9304                        notAutoCompleteField: ['cityId', 'company'],
9305                        addressInputTarget: 'address1',
9306                        hasMultiCountry: false,
9307                        subpremise: ['long_name', ', ', 'totalValue'],
9308                        streetNumber: ['long_name'],
9309                        route: ['totalValue', ', ', 'long_name'],
9310                        neighborhood: ['totalValue', ', ', 'long_name'],
9311                        sublocalityLevel1: ['totalValue', ', ', 'long_name'],
9312                        postalCode: ['long_name', 'totalValue'],
9313                        postalCodeSuffix: ['totalValue', '-', 'long_name'],
9314                        administrativeAreaLevel2: {
9315                            type: function (targetField) {
9316                                return targetField.tagName.toLowerCase();
9317                            },
9318                            target: 'city',
9319                            name: 'long_name'
9320                        },
9321                        administrativeAreaLevel3: ['totalValue', ', ', 'long_name'],
9322                        administrativeAreaLevel4: ['totalValue', ', ', 'long_name'],
9323                        sublocalityLevel2: ['totalValue', ', ', 'long_name'],
9324                        administrativeAreaLevel6: ['totalValue', ', ', 'long_name'],
9325                        administrativeAreaLevel7: ['totalValue', '/', 'long_name'],
9326                        addressOrder: {
9327                            subpremise: {
9328                                isValue: false,
9329                                value: '',
9330                                getReorderedValue: function (totalValue, apiValue, orderObject) {
9331                                    if (orderObject.route.isValue) {
9332                                        orderObject.subpremise.value = apiValue;
9333
9334                                        return totalValue;
9335                                    } else {
9336                                        if (totalValue === '') {
9337                                            return apiValue;
9338                                        } else {
9339                                            return totalValue + ', ' + apiValue;
9340                                        }
9341                                    }
9342                                }
9343                            },
9344                            street_number: {
9345                                isValue: false,
9346                                value: '',
9347                                getReorderedValue: function (totalValue, apiValue, orderObject) {
9348                                    if (orderObject.route.isValue) {
9349                                        orderObject.street_number.value = apiValue;
9350
9351                                        return totalValue;
9352                                    } else {
9353                                        if (totalValue === '') {
9354                                            return apiValue;
9355                                        } else {
9356                                            return totalValue + ', ' + apiValue;
9357                                        }
9358                                    }
9359                                }
9360                            },
9361                            route: {
9362                                isValue: false,
9363                                value: '',
9364                                getReorderedValue: function (totalValue, apiValue, orderObject) {
9365                                    if (orderObject.street_number.value
9366                                        && orderObject.subpremise.value
9367                                    ) {
9368                                        if (totalValue === '') {
9369                                            return apiValue + ', ' + orderObject.street_number.value + ', ' + orderObject.subpremise.value;
9370                                        } else {
9371                                            return totalValue + ', ' + apiValue + ', ' + orderObject.street_number.value + ', ' + orderObject.subpremise.value;
9372                                        }
9373                                    } else if (orderObject.street_number.value) {
9374                                        if (totalValue === '') {
9375                                            return apiValue + ', ' + orderObject.street_number.value;
9376                                        } else {
9377                                            return totalValue + ', ' + apiValue + ', ' + orderObject.street_number.value;
9378                                        }
9379                                    } else if (orderObject.subpremise.value) {
9380                                        if (totalValue === '') {
9381                                            return apiValue + ', ' + orderObject.subpremise.value;
9382                                        } else {
9383                                            return totalValue + ', ' + apiValue + ', ' + orderObject.subpremise.value;
9384                                        }
9385                                    } else {
9386                                        if (totalValue === '') {
9387                                            return apiValue;
9388                                        } else {
9389                                            return totalValue + ', ' + apiValue;
9390                                        }
9391                                    }
9392                                }
9393                            },
9394                            administrative_area_level_7: {
9395                                isValue: false,
9396                                value: '',
9397                                getReorderedValue: function (totalValue, apiValue, orderObject) {
9398                                    if (orderObject.administrative_area_level_6.isValue) {
9399                                        orderObject.administrative_area_level_7.value = apiValue;
9400
9401                                        return totalValue;
9402                                    } else {
9403                                        if (totalValue === '') {
9404                                            return apiValue;
9405                                        } else {
9406                                            return totalValue + ', ' + apiValue;
9407                                        }
9408                                    }
9409                                }
9410                            },
9411                            administrative_area_level_6: {
9412                                isValue: false,
9413                                value: '',
9414                                getReorderedValue: function (totalValue, apiValue, orderObject) {
9415                                    if (orderObject.administrative_area_level_7.value) {
9416                                        if (totalValue === '') {
9417                                            return orderObject.administrative_area_level_7.value + '/' + apiValue;
9418                                        } else {
9419                                            return totalValue + ', ' + orderObject.administrative_area_level_7.value + '/' + apiValue;
9420                                        }
9421                                    } else {
9422                                        if (totalValue === '') {
9423                                            return apiValue;
9424                                        } else {
9425                                            return totalValue + ', ' + apiValue;
9426                                        }
9427                                    }
9428                                }
9429                            },
9430                        }
9431                    },
9432                    DE: {
9433                        isAddressSortRequired: true,
9434                        notAutoCompleteField: ['cityId'],
9435                        addressInputTarget: 'address1',
9436                        hasMultiCountry: false,
9437                        streetNumber: ['totalValue', 'long_name'],
9438                        route: ['long_name', 'totalValue'],
9439                        postalCode: ['long_name'],
9440                        locality: {
9441                            type: function (targetField) {
9442                                return targetField.tagName.toLowerCase();
9443                            },
9444                            target: 'city',
9445                            name: 'long_name'
9446                        },
9447                        addressOrder: {
9448                            street_number: {
9449                                isValue: false,
9450                                value: '',
9451                                getReorderedValue: function (totalValue, apiValue, orderObject) {
9452                                    if (orderObject.route.value) {
9453                                        return orderObject.route.value + ' ' + apiValue;
9454                                    } else if (orderObject.route.isValue) {
9455                                        orderObject.street_number.value = apiValue;
9456
9457                                        return totalValue;
9458                                    } else if (totalValue) {
9459                                        return totalValue + ' ' + apiValue;
9460                                    }
9461
9462                                    return apiValue;
9463                                }
9464                            },
9465                            route: {
9466                                isValue: false,
9467                                value: '',
9468                                getReorderedValue: function (totalValue, apiValue, orderObject) {
9469                                    if (orderObject.street_number.value) {
9470                                        return apiValue + ' ' + orderObject.street_number.value;
9471                                    } else if (orderObject.street_number.isValue) {
9472                                        orderObject.route.value = apiValue;
9473
9474                                        return totalValue;
9475                                    } else if (totalValue) {
9476                                        return apiValue + ' ' + totalValue;
9477                                    }
9478
9479                                    return apiValue;
9480                                }
9481                            }
9482                        },
9483                        custom: {
9484                            company: 'getSelectedSuggestText'
9485                        }
9486                    },
9487                    GB: {
9488                        isAddressSortRequired: false,
9489                        notAutoCompleteField: ['cityId'],
9490                        addressInputTarget: 'address1',
9491                        hasMultiCountry: false,
9492                        postalCode: ['long_name'],
9493                        postalTown: {
9494                            type: function (targetField) {
9495                                return targetField.tagName.toLowerCase();
9496                            },
9497                            target: 'city',
9498                            name: 'long_name'
9499                        },
9500                        custom: {
9501                            address: {
9502                                functionName: 'getConfirmedAddr
9502essValue',
9503                                target: 'city'
9504                            }
9505                        }
9506                    },
9507                    IE: {
9508                        isAddressSortRequired: false,
9509                        notAutoCompleteField: ['cityId'],
9510                        addressInputTarget: 'address1',
9511                        hasMultiCountry: false,
9512                        postalCode: ['long_name'],
9513                        locality: {
9514                            type: function (targetField) {
9515                                return targetField.tagName.toLowerCase();
9516                            },
9517                            target: 'city',
9518                            name: 'long_name'
9519                        },
9520                        postalTown: {
9521                            type: function (targetField) {
9522                                return targetField.tagName.toLowerCase();
9523                            },
9524                            target: 'city',
9525                            name: 'long_name'
9526                        },
9527                        administrativeAreaLevel1: {
9528                            type: function (targetField) {
9529                                return targetField.tagName.toLowerCase();
9530                            },
9531                            target: 'state',
9532                            name: 'replace',
9533                            parts: ['long_name'],
9534                            replaceValue: function (apiValue) {
9535                                var spritApiValue = apiValue.split(' ');
9536
9537                                if (!spritApiValue[1]) {
9538                                    return apiValue;
9539                                }
9540
9541                                return spritApiValue[1];
9542                            }
9543                        },
9544                        priorityOrder: {
9545                            locality: {
9546                                getPriorityValue: function (apiValue, priorityOrderObject, dataName) {
9547                                    if (!priorityOrderObject.priorityInputValue || dataName === priorityOrderObject.priorityComponentType) {
9548                                        return apiValue;
9549                                    } else {
9550                                        return priorityOrderObject.priorityInputValue;
9551                                    }
9552                                }
9553                            },
9554                            postal_town: {
9555                                getPriorityValue: function (apiValue, priorityOrderObject, dataName) {
9556                                    if (!priorityOrderObject.priorityInputValue || dataName === priorityOrderObject.priorityComponentType) {
9557                                        return apiValue;
9558                                    } else {
9559                                        return priorityOrderObject.priorityInputValue;
9560                                    }
9561                                }
9562                            },
9563                            priorityComponentType: 'locality',
9564                            priorityInputValue: '',
9565                            target: 'city'
9566                        },
9567                        custom: {
9568                            address: {
9569                                functionName: 'getConfirmedAddressValue',
9570                                target: 'city'
9571                            }
9572                        }
9573                    }
9574                }
9575            };
9576
9577            Register.setGoogleAutocompleteApi = function () {
9578                if (!googleAutocomplete.triggerField
9579                    || !googleAutocomplete.currentApiCategory.fieldArray.length
9580                    || !googleAutocomplete.currentApiCategory.typeArray.length) {
9581                    return;
9582                }
9583
9584                googleAutocomplete.api = new google.maps.places.Autocomplete(googleAutocomplete.triggerField, {
9585                    componentRestrictions: {
9586                        country: ['' + suggestConfig.country.toLowerCase() + ''],
9587                    },
9588                    fields: googleAutocomplete.currentApiCategory.fieldArray,
9589                    types: googleAutocomplete.currentApiCategory.typeArray
9590                });
9591            };
9592
9593            Register.addGoogleAutocompleteEvent = function () {
9594                if (googleAutocomplete.api) {
9595                    googleAutocomplete.api.addListener("place_changed", this.setAutocompleteValue.bind(this));
9596                }
9597
9598                if (googleAutocomplete.triggerField) {
9599                    googleAutocomplete.triggerField.addEventListener('blur', this.showAutocompleteTargetField.bind(this), false);
9600                    googleAutocomplete.triggerField.addEventListener('focus', this.setSuggestItemMutationObserver.bind(this), false);
9601
9602                    if (!googleAutocomplete.config.isSuggestItemEventReady) {
9603                        doc.addEventListener('mousedown', this.setSelectedSuggestMainText.bind(this), false);
9604                        doc.addEventListener('touchend', this.setSelectedSuggestMainText.bind(this), false);
9605
9606                        googleAutocomplete.config.isSuggestItemEventReady = true;
9607                    }
9608                }
9609            };
9610
9611            Register.setAutocompleteValue = function () {
9612                var placeObject = googleAutocomplete.api.getPlace();
9613                var countryFormatList = googleAutocomplete.config.countryFormatList;
9614                var addressTotalValue = '';
9615                var zipCodeTotalValue = '';
9616                var addressValue = '';
9617                var zipCodeValue = '';
9618                var component = null;
9619                var componentType = null;
9620                var currentCountryObject = null;
9621                var addressInputTarget = null;
9622                var zipCodeInputTarget = null;
9623                var companyInputTarget = null;
9624                var priorityValueInputTarget = null;
9625                var ControlErrorDisplay = KeyenceForm.ControlErrorDisplay;
9626
9627                Register.suggestConfig.isCurrentSuggestItem = false;
9628                Register.googleAutocomplete.config.isMatchedTempValueTrigger = false;
9629
9630                if (!placeObject || placeObject.address_components === undefined) {
9631                    return;
9632                }
9633
9634                if (!placeObject.address_components.length) {
9635                    return;
9636                }
9637
9638                if (Register.checkBelgiumGroup(countryFormatList)) {
9639                    currentCountryObject = countryFormatList.BE;
9640                } else {
9641                    currentCountryObject = countryFormatList[suggestConfig.country];
9642                }
9643
9644                Register.initAutocompleteFieldValue(currentCountryObject);
9645                Register.checkSortOrderItem(currentCountryObject, placeObject.address_components);
9646
9647                if (currentCountryObject.optionUpdateTriggerName) {
9648                    Register.googleAutocomplete.config.isOptionUpdateTriggerField = true;
9649                }
9650
9651                for (component of placeObject.address_components) {
9652                    componentType = component.types[0];
9653
9654                    switch (componentType) {
9655                        case "subpremise": {
9656                            addressValue = addressTotalValue;
9657
9658                            addressTotalValue = Register.getPartialValue(addressValue, currentCountryObject.subpremise, component.long_name, 'subpremise', 
9658currentCountryObject);
9659
9660                            break;
9661                        }
9662
9663                        case "street_number": {
9664                            addressValue = addressTotalValue;
9665
9666                            addressTotalValue = Register.getPartialValue(addressValue, currentCountryObject.streetNumber, component.long_name, 'street_number', currentCountryObject);
9667
9668                            break;
9669                        }
9670
9671                        case "route": {
9672                            addressValue = addressTotalValue;
9673
9674                            addressTotalValue = Register.getPartialValue(addressValue, currentCountryObject.route, component.long_name, 'route', currentCountryObject);
9675
9676                            break;
9677                        }
9678
9679                        case "neighborhood": {
9680                            addressValue = addressTotalValue;
9681
9682                            addressTotalValue = Register.getPartialValue(addressValue, currentCountryObject.neighborhood, component.long_name, 'neighborhood', currentCountryObject);
9683
9684                            break;
9685                        }
9686
9687                        case "postal_code": {
9688                            zipCodeValue = zipCodeTotalValue;
9689
9690                            zipCodeTotalValue = Register.getPartialValue(zipCodeValue, currentCountryObject.postalCode, component.long_name, 'postal_code', currentCountryObject);
9691
9692                            break;
9693                        }
9694
9695                        case "postal_code_suffix": {
9696                            zipCodeValue = zipCodeTotalValue;
9697
9698                            zipCodeTotalValue = Register.getPartialValue(zipCodeValue, currentCountryObject.postalCodeSuffix, component.long_name, 'postal_code_suffix', currentCountryObject);
9699
9700                            break;
9701                        }
9702
9703                        case "locality": {
9704                            var itemObject = currentCountryObject.locality;
9705
9706                            if (!itemObject) {
9707                                break;
9708                            }
9709
9710                            if (Array.isArray(itemObject)) {
9711                                addressValue = addressTotalValue;
9712
9713                                addressTotalValue = Register.getPartialValue(addressValue, itemObject, component.long_name, 'locality', currentCountryObject);
9714                            } else {
9715                                if (currentCountryObject.hasMultiCountry) {
9716                                    if (itemObject.country.indexOf(suggestConfig.country) === -1) {
9717                                        break;
9718                                    }
9719                                }
9720
9721                                Register.inputApiValue(itemObject, component.long_name, component.short_name, 'locality', currentCountryObject);
9722                            }
9723
9724                            break;
9725                        }
9726
9727                        case "sublocality_level_1": {
9728                            var itemObject = currentCountryObject.sublocalityLevel1;
9729
9730                            if (!itemObject) {
9731                                break;
9732                            }
9733
9734                            if (Array.isArray(itemObject)) {
9735                                addressValue = addressTotalValue;
9736
9737                                addressTotalValue = Register.getPartialValue(addressValue, itemObject, component.long_name, 'sublocality_level_1', currentCountryObject);
9738                            } else {
9739                                if (currentCountryObject.hasMultiCountry) {
9740                                    if (itemObject.country.indexOf(suggestConfig.country) === -1) {
9741                                        break;
9742                                    }
9743                                }
9744
9745                                Register.inputApiValue(itemObject, component.long_name, component.short_name, 'sublocality_level_1', currentCountryObject);
9746                            }
9747
9748                            break;
9749                        }
9750
9751                        case "sublocality_level_2": {
9752                            var itemObject = currentCountryObject.sublocalityLevel2;
9753
9754                            if (!itemObject) {
9755                                break;
9756                            }
9757
9758                            if (Array.isArray(itemObject)) {
9759                                addressValue = addressTotalValue;
9760
9761                                addressTotalValue = Register.getPartialValue(addressValue, itemObject, component.long_name, 'sublocality_level_2', currentCountryObject);
9762                            } else {
9763                                if (currentCountryObject.hasMultiCountry) {
9764                                    if (itemObject.country.indexOf(suggestConfig.country) === -1) {
9765                                        break;
9766                                    }
9767                                }
9768
9769                                Register.inputApiValue(itemObject, component.long_name, component.short_name, 'sublocality_level_2', currentCountryObject);
9770                            }
9771
9772                            break;
9773                        }
9774
9775                        case "administrative_area_level_1": {
9776                            var itemObject = currentCountryObject.administrativeAreaLevel1;
9777
9778                            if (!itemObject) {
9779                                break;
9780                            }
9781
9782                            if (Array.isArray(itemObject)) {
9783                                addressValue = addressTotalValue;
9784
9785                                addressTotalValue = Register.getPartialValue(addressValue, itemObject, component.long_name, 'administrative_area_level_1', currentCountryObject);
9786                            } else {
9787                                if (currentCountryObject.hasMultiCountry) {
9788                                    if (itemObject.country.indexOf(suggestConfig.country) === -1) {
9789                                        break;
9790                                    }
9791                                }
9792
9793                                Register.inputApiValue(itemObject, component.long_name, component.short_name, 'administrative_area_level_1', currentCountryObject);
9794                            }
9795
9796                            break;
9797                        }
9798
9799                        case "administrative_area_level_2": {
9800                            var itemObject = currentCountryObject.administrativeAreaLevel2;
9801
9802                            if (!itemObject) {
9803                                break;
9804                            }
9805
9806                            if (Array.isArray(itemObject)) {
9807                                addressValue = addressTotalValue;
9808
9809                                addressTotalValue = Register.getPartialValue(addressValue, itemObject, component.long_name, 'administrative_area_level_2', currentCountryObject);
9810                            } else {
9811                                if (currentCountryObject.hasMultiCountry) {
9812                                    if (itemObject.country.indexOf(suggestConfig.country) === -1) {
9813                                        break;
9814                                    }
9815                                }
9816
9817                                Register.inputApiValue(itemObject, component.long_name, component.short_name, 'administrative_area_level_2', currentCountryObject);
9818                            }
9819
9820                            break;
9821                        }
9822
9823                        case "administrative_area_level_3": {
9824                            var itemObject = currentCountryObject.administrativeAreaLevel3;
9825
9826                            if (!itemObject) {
9827                                break;
9828                            }
9829
9830                            if (Array.isArray(itemObject)) {
9831                                addressValue = addressTotalValue;
9832
9833                                addressTotalValue = Register.getPartialValue(addressValue, itemObject, component.long_name, 'administrative_area_level_3', currentCountryObject);
9834                            } else {
9835                                if (currentCountryObject.hasMultiCountry) {
9836                                    if (itemObject.country.indexOf(suggestConfig.country) === -1) {
9837                                        break;
9838                                    }
9839                                }
9840
9841                                Register.inputApiValue(itemObject, component.long_name, component.short_name, 'administrative_area_level_3', currentCountryObject);
9842                            }
9843
9844                            break;
9845                        }
9846
9847                        case "administrative_area_level_4": {
9848                            var itemObject = currentCountryObject.administrativeAreaLevel4;
9849
9850                            if (!itemObject) {
9851                                break;
9852                            }
9853
9854                            if (Array.isArray(itemObject)) {
9855                                addressValue = addressTotalValue;
9856
9857                                addressTotalValue = Register.getPartialValue(addressValue, itemObject, component.long_name, 'administrative_area_level_4', currentCountryObject);
9858                            } else {
9859                                if (currentCountryObject.hasMultiCountry) {
9860                                    if (itemObject.country.indexOf(suggestConfig.country) === -1) {
9861                                        break;
9862                                    }
9863                                }
9864
9865                                Register.inputApiValue(itemObject, component.long_name, component.short_name, 'administrative_area_level_4', currentCountryObject);
9866                            }
9867
9868                            break;
9869                        }
9870
9871                        case "administrative_area_level_6": {
9872                            addressValue = addressTotalValue;
9873
9874                            addressTotalValue = Register.getPartialValue(addressValue, currentCountryObject.administrativeAreaLevel6, component.long_name, 'administrative_area_level_6', currentCountryObject);
9875
9876                            break;
9877                        }
9878
9879                        case "administrative_area_level_7": {
9880                            addressValue = addressTotalValue;
9881
9882                            addressTotalValue = Register.getPartialValue(addressValue, currentCountryObject.administrativeAreaLevel7, component.long_name, 'administrative_area_level_7', currentCountryObject);
9883
9884                            break;
9885                        }
9886
9887                        case "postal_town": {
9888                            var itemObject = currentCountryObject.postalTown;
9889
9890                            if (!itemObject) {
9891                                break;
9892                            }
9893
9894                            if (Array.isArray(itemObject)) {
9895                                addressValue = addressTotalValue;
9896
9897                                addressTotalValue = Register.getPartialValue(addressValue, itemObject, component.long_name, 'postal_town', currentCountryObject);
9898                            } else {
9899                                if (currentCountryObject.hasMultiCountry) {
9900                                    if (itemObject.country.indexOf(suggestConfig.country) === -1) {
9901                                        break;
9902                                    }
9903                                }
9904
9905                                Register.inputApiValue(itemObject, component.long_name, component.short_name, 'postal_town', currentCountryObject);
9906                            }
9907
9908                            break;
9909                        }
9910                    }
9911                }
9912
9913                if (currentCountryObject.custom) {
9914                    if (currentCountryObject.custom.address && currentCountryObject.custom.address.functionName === 'getConfirmedAddressValue') {
9915                        if (currentCountryObject.priorityOrder) {
9916                            addressTotalValue = Register.getConfirmedAddressValue(placeObject, currentCountryObject.priorityOrder.priorityInputValue);
9917                        } else if (googleAutocomplete.targetElems[currentCountryObject.custom.address.target]) {
9918                            addressTotalValue = Register.getConfirmedAddressValue(placeObject, googleAutocomplete.targetElems[currentCountryObject.custom.address.target].value);
9919                        }
9920                    } else if (addressTotalValue && currentCountryObject.custom.address) {
9921                        addressValue = addressTotalValue;
9922                        addressTotalValue = currentCountryObject.custom.address.replaceValue(addressValue);
9923                    }
9924
9925                    if (zipCodeTotalValue && currentCountryObject.custom.zipCode) {
9926                        zipCodeValue = zipCodeTotalValue;
9927                        zipCodeTotalValue = currentCountryObject.custom.zipCode.replaceValue(zipCodeValue);
9928                    }
9929                }
9930
9931                if (googleAutocomplete.config.isMatchedTempValueTrigger) {
9932                    if (googleAutocomplete.currentApiCategory.name === 'company') {
9933                        if (currentCountryObject.custom &&
9934                            currentCountryObject.custom.company === 'getSelectedSuggestText') {
9935                            googleAutocomplete.config.tempInputValue.company = Register.getSelectedSuggestText(placeObject.name);
9936                        } else if (placeObject.name) {
9937                            googleAutocomplete.config.tempInputValue.company = placeObject.name;
9938                        }
9939                    }
9940
9941                    if (addressTotalValue) {
9942                        googleAutocomplete.config.tempInputValue[currentCountryObject.addressInputTarget] = addressTotalValue;
9943                    }
9944
9945                    if (zipCodeTotalValue) {
9946                        googleAutocomplete.config.tempInputValue.zipcode = zipCodeTotalValue;
9947                    }
9948
9949                    if (currentCountryObject.priorityOrder &&
9950                        currentCountryObject.priorityOrder.priorityInputValue) {
9951                            googleAutocomplete.config.tempInputValue[currentCountryObject.priorityOrder.target] = currentCountryObject.priorityOrder.priorityInputValue;
9952                    }
9953
9954                    $('#' + currentCountryObject.optionUpdateTriggerId).trigger('change');
9955                } else {
9956                    if (googleAutocomplete.currentApiCategory.name === 'company') {
9957                        companyInputTarget = googleAutocomplete.targetElems.company;
9958                    }
9959
9960                    if (companyInputTarget) {
9961                        if (currentCountryObject.custom &&
9962                            currentCountryObject.custom.company === 'getSelectedSuggestText') {
9963                            companyInputTarget.value = Register.getSelectedSuggestText(placeObject.name);
9964                        } else if (placeObject.name) {
9965                            companyInputTarget.value = placeObject.name;
9966                        }
9967
9968                        if (ControlErrorDisplay.isTriggerClicked(companyInputTarget)) {
9969                            Register.clearInputError(companyInputTarget);
9970                        }
9971
9972                        win.suz_callRegValidator(companyInputTarget.name, companyInputTarget.value);
9973                    }
9974
9975                    if (addressTotalValue) {
9976                        addressInputTarget = googleAutocomplete.targetElems[currentCountryObject.addressInputTarget];
9977
9978                        if (addressInputTarget) {
9979                            addressInputTarget.value = addressTotalValue;
9980
9981                            if (ControlErrorDisplay.isTriggerClicked(addressInputTarget)) {
9982                                Register.clearInputError(addressInputTarget);
9983                            }
9984
9985          
9985                  win.suz_callRegValidator(addressInputTarget.name, addressInputTarget.value);
9986                        }
9987                    }
9988
9989                    if (zipCodeTotalValue) {
9990                        zipCodeInputTarget = googleAutocomplete.targetElems.zipCode;
9991
9992                        if (zipCodeInputTarget) {
9993                            zipCodeInputTarget.value = zipCodeTotalValue;
9994
9995                            if (ControlErrorDisplay.isTriggerClicked(zipCodeInputTarget)) {
9996                                Register.clearInputError(zipCodeInputTarget);
9997                            }
9998
9999                            win.suz_callRegValidator(zipCodeInputTarget.name, zipCodeInputTarget.value);
10000                        }
10001                    }
10002
10003                    if (currentCountryObject.priorityOrder) {
10004                        priorityValueInputTarget = googleAutocomplete.targetElems[currentCountryObject.priorityOrder.target];
10005
10006                        if (priorityValueInputTarget) {
10007                            priorityValueInputTarget.value = currentCountryObject.priorityOrder.priorityInputValue;
10008
10009                            if (ControlErrorDisplay.isTriggerClicked(priorityValueInputTarget)) {
10010                                Register.clearInputError(priorityValueInputTarget);
10011                            }
10012
10013                            win.suz_callRegValidator(priorityValueInputTarget.name, priorityValueInputTarget.value);
10014                            currentCountryObject.priorityOrder.priorityInputValue = '';
10015                        }
10016                    }
10017                }
10018
10019                Register.googleAutocomplete.selectedSuggestItem = null;
10020                Register.googleAutocomplete.config.selectedSuggestMainText = '';
10021                Register.initOrderAddressList(currentCountryObject.addressOrder);
10022            };
10023
10024            Register.getConfirmedAddressValue = function (placeObject, targetValue) {
10025                var sameValueCount = 0;
10026                var formattedAddressPartialValue = '';
10027                var formattedAddress = placeObject.formatted_address;
10028
10029                if (formattedAddress && targetValue) {
10030                    sameValueCount = formattedAddress.split(targetValue).length - 1;
10031
10032                    if (sameValueCount >= 1) {
10033                        formattedAddressPartialValue = Register.getFormattedAddressPartialValue(formattedAddress, targetValue);
10034
10035                        return formattedAddressPartialValue;
10036                    }
10037
10038                    return formattedAddress;
10039                }
10040
10041                return formattedAddressPartialValue;
10042            };
10043
10044            Register.getFormattedAddressPartialValue = function (formatted_address, targetValue) {
10045                var lastIndex = formatted_address.lastIndexOf(targetValue);
10046                var textBeforeLastTarget = '';
10047
10048                if (lastIndex === -1) {
10049                    return formatted_address;
10050                }
10051
10052                textBeforeLastTarget = formatted_address.slice(0, lastIndex);
10053
10054                return textBeforeLastTarget.replace(/[ ,\.]+$/, '');
10055            };
10056
10057            Register.getPartialValue = function (totalValue, countryFormat, apiValue, dataName, currentCountryObject) {
10058                var itemValue = '';
10059
10060                if ((typeof countryFormat !== 'object' || !countryFormat)
10061                    || (typeof apiValue !== 'string' || !apiValue)) {
10062                    return totalValue;
10063                }
10064
10065                if (currentCountryObject.addressOrder) {
10066                    if (currentCountryObject.addressOrder[dataName]) {
10067                        return currentCountryObject.addressOrder[dataName].getReorderedValue(totalValue, apiValue, currentCountryObject.addressOrder);
10068                    }
10069                }
10070
10071                if (totalValue === '') {
10072                    return apiValue;
10073                }
10074
10075                countryFormat.forEach(function (text) {
10076                    if (text === 'totalValue') {
10077                        itemValue += totalValue;
10078                    } else if (text === 'long_name') {
10079                        itemValue += apiValue;
10080                    } else {
10081                        itemValue += text;
10082                    }
10083                });
10084
10085                return itemValue;
10086            };
10087
10088            Register.inputApiValue = function (countryFormat, apiLongV
10088alue, apiShortValue, dataName, currentCountryObject) {
10089                var selector = null;
10090                var targetField = null;
10091                var optionValue = '';
10092                var valueType = '';
10093                var ControlErrorDisplay = KeyenceForm.ControlErrorDisplay;
10094
10095                if ((typeof countryFormat !== 'object' || !countryFormat)
10096                    || (!apiLongValue || !apiShortValue)) {
10097                    return;
10098                }
10099
10100                targetField = googleAutocomplete.targetElems[countryFormat.target];
10101
10102                if (countryFormat.type(targetField) === 'input') {
10103                    if (dataName &&
10104                        currentCountryObject &&
10105                        currentCountryObject.priorityOrder &&
10106                        currentCountryObject.priorityOrder[dataName]) {
10107                        currentCountryObject.priorityOrder.priorityInputValue = currentCountryObject.priorityOrder[dataName].getPriorityValue(apiLongValue, currentCountryObject.priorityOrder, dataName);
10108                    } else if (countryFormat.name === 'long_name') {
10109                        if (countryFormat.tempValue) {
10110                            if (countryFormat.tempValue.target === countryFormat.target) {
10111                                googleAutocomplete.config.tempInputValue[countryFormat.tempValue.strageLocation] = apiLongValue;
10112
10113                                return;
10114                            }
10115                        }
10116
10117                        Register.inputApiTextValue(targetField, apiLongValue);
10118                    } else {
10119                        if (countryFormat.tempValue) {
10120                            if (countryFormat.tempValue.target === countryFormat.target) {
10121                                googleAutocomplete.config.tempInputValue[countryFormat.tempValue.strageLocation] = apiShortValue;
10122
10123                                return;
10124                            }
10125                        }
10126
10127                        Register.inputApiTextValue(targetField, apiShortValue);
10128                    }
10129                } else if (countryFormat.type(targetField) === 'select') {
10130                    selector = targetField.options;
10131
10132                    if (countryFormat.name === 'custom') {
10133                        countryFormat.parts.forEach(function (part) {
10134                            if (part === 'long_name') {
10135                                optionValue += apiLongValue;
10136                            } else if (part === 'short_name') {
10137                                optionValue += apiShortValue;
10138                            } else if (part === 'long_name_upperCase') {
10139                                optionValue += apiLongValue.toUpperCase();
10140                            } else {
10141                                optionValue += part;
10142                            }
10143                        });
10144
10145                        if (countryFormat.tempValue) {
10146                            if (countryFormat.optionUpdateTriggerId === countryFormat.target
10147                                && googleAutocomplete.config.isMatchedTempValueTrigger) {
10148                                return;
10149                            }
10150
10151                            if (countryFormat.tempValue.target === countryFormat.target) {
10152                                googleAutocomplete.config.tempInputValue[countryFormat.tempValue.strageLocation] = optionValue;
10153                                return;
10154                            }
10155                        }
10156
10157                        for (i = 0; i < selector.length; i++) {
10158                            if (selector[i].value === optionValue) {
10159                                selector[i].selected = true;
10160
10161                                if (ControlErrorDisplay.isTriggerClicked(targetField)) {
10162                                    Register.clearInputError(targetField);
10163                                }
10164
10165                                win.suz_callRegValidator(targetField.name, selector[i].value);
10166
10167                                if (countryFormat.optionUpdateTriggerId === countryFormat.target) {
10168                                    googleAutocomplete.config.isMatchedTempValueTrigger = true;
10169                                }
10170
10171                                return;
10172                            }
10173                        }
10174
10175                        if (!googleAutocomplete.config.isMatchedTempValueTrigger) {
10176                            if (countryFormat.tempValue) {
10177                                if (countryFormat.tempValue.target === countryFormat.subTarget
10178                                    && !googleAutocomplete.config.isMatchedTempValueTrigger) {
10179                                    googleAutocomplete.config.tempInputValue[countryFormat.tempValue.strageLocation] = optionValue;
10180
10181                                    return;
10182                                }
10183                            }
10184                        }
10185                    } else if (countryFormat.name === 'replace') {
10186                        if (typeof countryFormat.replaceValue !== 'function') {
10187                            return;
10188                        }
10189
10190                        countryFormat.parts.forEach(function (part) {
10191                            if (part === 'long_name') {
10192                                valueType += apiLongValue;
10193                            } else if (part === 'short_name') {
10194                                valueType += apiShortValue;
10195                            } else if (part === 'long_name_upperCase') {
10196                                valueType += apiLongValue.toUpperCase();
10197                            } else {
10198                                valueType += part;
10199                            }
10200                        });
10201
10202                        optionValue = countryFormat.replaceValue(valueType);
10203
10204                        if (countryFormat.tempValue) {
10205                            if (countryFormat.optionUpdateTriggerId === countryFormat.target
10206                                && googleAutocomplete.config.isMatchedTempValueTrigger) {
10207                                return true;
10208                            }
10209
10210                            if (countryFormat.tempValue.target === countryFormat.target) {
10211                                googleAutocomplete.config.tempInputValue[countryFormat.tempValue.strageLocation] = optionValue;
10212                                return;
10213                            }
10214                        }
10215
10216                        for (i = 0; i < selector.length; i++) {
10217                            if (selector[i].value === optionValue) {
10218                                selector[i].selected = true;
10219
10220                                if (ControlErrorDisplay.isTriggerClicked(targetField)) {
10221                                    Register.clearInputError(targetField);
10222                                }
10223
10224                                win.suz_callRegValidator(targetField.name, selector[i].value);
10225
10226                                if (countryFormat.optionUpdateTriggerId === countryFormat.target) {
10227                                    googleAutocomplete.config.isMatchedTempValueTrigger = true;
10228                                }
10229
10230                                return;
10231                            }
10232                        }
10233
10234                        for (i = 0; i < selector.length; i++) {
10235                            if (selector[i].text === optionValue) {
10236                                selector[i].selected = true;
10237
10238                                if (ControlErrorDisplay.isTriggerClicked(targetField)) {
10239                                    Register.clearInputError(targetField);
10240                                }
10241
10242                                win.suz_callRegValidator(targetField.name, selector[i].value);
10243
10244                                if (countryFormat.optionUpdateTriggerId === countryFormat.target) {
10245                                    googleAutocomplete.config.isMatchedTempValueTrigger = true;
10246                                }
10247
10248                                return;
10249                            }
10250                        }
10251
10252                        if (!googleAutocomplete.config.isMatchedTempValueTrigger) {
10253                            if (countryFormat.tempValue) {
10254                                if (countryFormat.tempValue.target === countryFormat.subTarget
10255                                    && !googleAutocomplete.config.isMatchedTempValueTrigger) {
10256                                    googleAutocomplete.config.tempInputValue[countryFormat.tempValue.strageLocation] = optionValue;
10257
10258                                    return;
10259                                }
10260                            }
10261                        }
10262                    } else if (countryFormat.name === 'long_name') {
10263                        if (countryFormat.tempValue) {
10264                            if (countryFormat.optionUpdateTriggerId === countryFormat.target
10265                                && googleAutocomplete.config.isMatchedTempValueTrigger) {
10266                                return;
10267                            }
10268
10269                            if (countryFormat.tempValue.target === countryFormat.target) {
10270                                googleAutocomplete.config.tempInputValue[countryFormat.tempValue.strageLocation] = apiLongValue;
10271                                return;
10272                            }
10273                        }
10274
10275                        for (i = 0; i < selector.length; i++) {
10276                            if (selector[i].text === apiLongValue) {
10277                                selector[i].selected = true;
10278
10279                                if (ControlErrorDisplay.isTriggerClicked(targetField)) {
10280                                    Register.clearInputError(targetField);
10281                                }
10282
10283                                win.suz_callRegValidator(targetField.name, selector[i].value);
10284
10285                                if (countryFormat.optionUpdateTriggerId === countryFormat.target) {
10286                                    googleAutocomplete.config.isMatchedTempValueTrigger = true;
10287                                }
10288
10289                                return;
10290                            }
10291                        }
10292
10293                        if (!googleAutocomplete.config.isMatchedTempValueTrigger) {
10294                            if (countryFormat.tempValue) {
10295                                if (countryFormat.tempValue.target === countryFormat.subTarget
10296                                    && !googleAutocomplete.config.isMatchedTempValueTrigger) {
10297                                    googleAutocomplete.config.tempInputValue[countryFormat.tempValue.strageLocation] = apiLongValue;
10298
10299                                    return;
10300                                }
10301                            }
10302                        }
10303                    } else if (countryFormat.name === 'short_name') {
10304                        if (countryFormat.tempValue) {
10305                            if (countryFormat.optionUpdateTriggerId === countryFormat.target
10306                                && googleAutocomplete.config.isMatchedTempValueTrigger) {
10307                                return;
10308                            }
10309
10310                            if (countryFormat.tempValue.target === countryFormat.target) {
10311                                googleAutocomplete.config.tempInputValue[countryFormat.tempValue.strageLocation] = apiShortValue;
10312                                return;
10313                            }
10314                        }
10315
10316                        for (i = 0; i < selector.length; i++) {
10317                            if (selector[i].value === apiShortValue) {
10318                                selector[i].selected = true;
10319
10320                                if (ControlErrorDisplay.isTriggerClicked(targetField)) {
10321                                    Register.clearInputError(targetField);
10322                                }
10323
10324                                win.suz_callRegValidator(targetField.name, selector[i].value);
10325
10326                                if (countryFormat.optionUpdateTriggerId === countryFormat.target) {
10327                                    googleAutocomplete.config.isMatchedTempValueTrigger = true;
10328                                }
10329
10330                                return;
10331                            }
10332                        }
10333
10334                        if (!googleAutocomplete.config.isMatchedTempValueTrigger) {
10335                            if (countryFormat.tempValue) {
10336                                if (countryFormat.tempValue.target === countryFormat.subTarget
10337                                    && !googleAutocomplete.config.isMatchedTempValueTrigger) {
10338                                    googleAutocomplete.config.tempInputValue[countryFormat.tempValue.strageLocation] = apiShortValue;
10339
10340                                    return;
10341                                }
10342                            }
10343                        }
10344                    }
10345                }
10346            };
10347
10348            Register.inputApiTextValue = function (Field, value) {
10349                Field.value = value;
10350
10351                if (KeyenceForm.ControlErrorDisplay.isTriggerClicked(Field)) {
10352                    Register.clearInputError(Field);
10353                }
10354
10355                win.suz_callRegValidator(Field.name, Field.value);
10356            };
10357
10358            Register.initAutocompleteFieldValue = function (currentCountryObject) {
10359                var targets = googleAutocomplete.targetElems;
10360                var i = 0;
10361
10362                Object.keys(targets).forEach(function (key) {
10363                    if (!targets[key]
10364                        || targets[key] === googleAutocomplete.triggerField) {
10365                        return;
10366                    }
10367
10368                    if (currentCountryObject.notAutoCompleteField.length) {
10369                        for (i = 0; i < currentCountryObject.notAutoCompleteField.length; i++) {
10370                            if (currentCountryObject.notAutoCompleteField[i] === key) {
10371                                return;
10372                            }
10373                        }
10374                    }
10375
10376                    if (targets[key].tagName.toLowerCase() === 'select') {
10377                        targets[key].options[0].selected = true;
10378                    } else {
10379                        targets[key].value = '';
10380                    }
10381                });
10382            };
10383
10384            Register.checkBelgiumGroup = function (countryFormatList) {
10385                if (countryFormatList.BE.allCountry.indexOf(suggestConfig.country) !== -1) {
10386                    return true;
10387                }
10388
10389                return false;
10390            };
10391
10392            Register.removeGoogleSuggestArea = function () {
10393                var suggestArea = doc.querySelector('.' + googleAutocomplete.classNames.suggestWrpper);
10394
10395                if (suggestArea) {
10396                    suggestArea.remove();
10397                }
10398            };
10399
10400            Register.showAutocompleteTargetField = function () {
10401                if (suggestConfig.isAutoCompleteElementsHide
10402                    && googleAutocomplete.triggerField.value !== '') {
10403                    Register.setAutoCompleteHideClass(true);
10404                }
10405            };
10406
10407            Register.setSuggestItemMutationObserver = function () {
10408                var target = null;
10409                var observer = null;
10410                var observersuggestConfig = {
10411                    attributeFilter: ['class'],
10412                    subtree: true
10413                };
10414                var selectedItem = null;
10415
10416                if (suggestConfig.isSuggestItemObserverReady) {
10417                    return;
10418                }
10419
10420                target = doc.querySelector('.' + googleAutocomplete.classNames.suggestWrpper);
10421
10422                if (!target) {
10423                    return;
10424                }
10425
10426                observer = new MutationObserver(function () {
10427                    selectedItem = target.querySelector('.' + Register.googleAutocomplete.classNames.selectedSuggestItem);
10428
10429                    if (selectedItem) {
10430                        Register.suggestConfig.isCurrentSuggestItem = true;
10431                        Register.googleAutocomplete.selectedSuggestItem = selectedItem;
10432                    } else {
10433                        if (Register.suggestConfig.isCurrentSuggestItem
10434                            && Register.googleAutocomplete.triggerField === doc.activeElement) {
10435                            return;
10436                        }
10437
10438                        Register.suggestConfig.isCurrentSuggestItem = false;
10439                    }
10440                });
10441
10442                observer.observe(target, observersuggestConfig);
10443
10444                suggestConfig.isSuggestItemObserverReady = true;
10445            };
10446
10447            Register.setSelectedSuggestMainText = function (event) {
10448                var MainTextWrapper = null;
10449                var suggestClassList = googleAutocomplete.classNames;
10450
10451                if (!event.target
10452                    || (event.type === 'touchend' && isScrolling)
10453                    || (event.type === 'mousedown' && event.which !== EVENT_TYPE.CLICK_LEFT)
10454                ) {
10455                    return;
10456                }
10457
10458                if (event.target.classList.contains(suggestClassList.suggestItem)) {
10459                    MainTextWrapper = event.target.querySelector('.' + suggestClassList.suggestMainText);
10460                } else if (event.target.closest('.' + suggestClassList.suggestItem)) {
10461                    MainTextWrapper = event.target.closest('.' + suggestClassList.suggestItem).querySelector('.' + suggestClassList.suggestMainText);
10462                }
10463
10464                if (MainTextWrapper) {
10465                    googleAutocomplete.config.selectedSuggestMainText = MainTextWrapper.innerText;
10466                }
10467            };
10468
10469            Register.setReplacedElementValue = function () {
10470                var currentFormatList = googleAutocomplete.config.countryFormatList[suggestConfig.country];
10471                var triggerFieldName = null;
10472
10473                if (!currentFormatList) {
10474                    return;
10475                }
10476
10477                triggerFieldName = currentFormatList.optionUpdateTriggerName;
10478
10479                if (!triggerFieldName
10480                    || !googleAutocomplete.targetElems[triggerFieldName]
10481                    || googleAutocomplete.targetElems[triggerFieldName].value === '00'
10482                    || !googleAutocomplete.config.isOptionUpdateTriggerField) {
10483                    return;
10484                }
10485
10486                this.setValueReplacedField();
10487            };
10488
10489            Register.setValueReplacedField = function () {
10490                var suggestElements = googleAutocomplete.targetElems;
10491                var currentCountryObject = googleAutocomplete.config.countryFormatList[suggestConfig.country];
10492                var tempValue = googleAutocomplete.config.tempInputValue;
10493                var citySelector = null;
10494                var isMatchCity = false;
10495
10496                if (suggestElements.company && tempValue.company) {
10497                    suggestElements.company.value = tempValue.company;
10498                    win.suz_callRegValidator(suggestElements.company.name, suggestElements.company.value);
10499                }
10500
10501                if (suggestElements.address1 && tempValue.address1) {
10502                    suggestElements.address1.value = tempValue.address1;
10503                    win.suz_callRegValidator(suggestElements.address1.name, suggestElements.address1.value);
10504                }
10505
10506                if (suggestElements.zipCode && tempValue.zipcode) {
10507                    suggestElements.zipCode.value = tempValue.zipcode;
10508                    win.suz_callRegValidator(suggestElements.zipCode.name, suggestElements.zipCode.value);
10509                }
10510
10511                if (suggestElements.cityId) {
10512                    citySelector = suggestElements.cityId.options;
10513
10514                    if (tempValue.cityLevel2) {
10515                        if (currentCountryObject.replaceName.target === 'cityId') {
10516                            tempValue.cityLevel2 = currentCountryObject.replaceName.replaceValue(tempValue.cityLevel2);
10517                        }
10518
10519                        for (i = 0; i < citySelector.length; i++) {
10520                            if (citySelector[i].text === tempValue.cityLevel2) {
10521                                citySelector[i].selected = true;
10522
10523                                win.suz_callRegValidator(suggestElements.cityId.name, suggestElements.cityId.value);
10524
10525                                isMatchCity = true;
10526                                break;
10527                            }
10528                        }
10529
10530                        if (!isMatchCity) {
10531                            for (i = 0; i < citySelector.length; i++) {
10532                                if (citySelector[i].text === tempValue.cityLevel2) {
10533                                    citySelector[i].selected = true;
10534
10535                                    win.suz_callRegValidator(suggestElements.cityId.name, suggestElements.cityId.value);
10536
10537                                    break;
10538                                }
10539                            }
10540                        }
10541                    } else if (tempValue.cityLevel3) {
10542                        if (currentCountryObject.replaceName.target === 'cityId') {
10543                            tempValue.cityLevel3 = currentCountryObject.replaceName.replaceValue(tempValue.cityLevel3);
10544                        }
10545
10546                        for (i = 0; i < citySelector.length; i++) {
10547                            if (citySelector[i].text === tempValue.cityLevel3) {
10548                                citySelector[i].selected = true;
10549
10550                                win.suz_callRegValidator(suggestElements.cityId.name, suggestElements.cityId.value);
10551
10552                                isMatchCity = true;
10553                                break;
10554                            }
10555                        }
10556
10557                        if (!isMatchCity) {
10558                            for (i = 0; i < citySelector.length; i++) {
10559                                if (citySelector[i].text === tempValue.cityLevel3) {
10560                                    citySelector[i].selected = true;
10561
10562                                    win.suz_callRegValidator(suggestElements.cityId.name, suggestElements.cityId.value);
10563
10564                                    break;
10565                                }
10566                            }
10567                        }
10568                    } else if (tempValue.city) {
10569                        if (currentCountryObject.replaceName.target === 'cityId') {
10570                            tempValue.city = currentCountryObject.replaceName.replaceValue(tempValue.city);
10571                        }
10572
10573                        for (i = 0; i < citySelector.length; i++) {
10574                            if (citySelector[i].text === tempValue.city) {
10575                                citySelector[i].selected = true;
10576
10577                                win.suz_callRegValidator(suggestElements.cityId.name, suggestElements.cityId.value);
10578
10579                                isMatchCity = true;
10580                                break;
10581                            }
10582                        }
10583
10584                        if (!isMatchCity) {
10585                            for (i = 0; i < citySelector.length; i++) {
10586                                if (citySelector[i].text === tempValue.city) {
10587                                    citySelector[i].selected = true;
10588
10589                                    win.suz_callRegValidator(suggestElements.cityId.name, suggestElements.cityId.value);
10590
10591                                    break;
10592                                }
10593                            }
10594                        }
10595                    }
10596                }
10597            };
10598
10599            Register.checkSortOrderItem = function (currentCountryObject, placeObject) {
10600                var orderObject = currentCountryObject.addressOrder;
10601
10602                if (!orderObject) {
10603                    return;
10604                }
10605
10606                Object.keys(placeObject).forEach(function (number) {
10607                    if (placeObject[number] && placeObject[number].types[0] && orderObject[placeObject[number].types[0]]) {
10608                        orderObject[placeObject[number].types[0]]['isValue'] = true;
10609                    }
10610                });
10611            };
10612
10613            Register.initOrderAddressList = function (orderList) {
10614                if (orderList) {
10615                    Object.keys(orderList).forEach(function (target) {
10616                        orderList[target]['isValue'] = false;
10617                        orderList[target].value = '';
10618                    });
10619                }
10620            };
10621
10622            Register.getSelectedSuggestText = function (companyName) {
10623                var targetItem = null;
10624
10625                if (googleAutocomplete.selectedSuggestItem) {
10626                    targetItem = googleAutocomplete.selectedSuggestItem.querySelector('.' + googleAutocomplete.classNames.suggestMainText);
10627
10628                    if (targetItem) {
10629                        googleAutocomplete.config.selectedSuggestMainText = targetItem.innerText;
10630                    }
10631                }
10632
10633                if (googleAutocomplete.config.selectedSuggestMainText) {
10634                    return googleAutocomplete.config.selectedSuggestMainText;
10635                } else if (companyName) {
10636                    return companyName;
10637                }
10638
10639                return googleAutocomplete.config.selectedSuggestMainText;
10640            };
10641
10642            return Register;
10643        }());
10644
10645        Form.SendEmail = (function () {
10646            var idNames = {
10647                root: 'js-multiStepForm-sendEmail',
10648                btnBackToSignin: 'js-sendEmail-btnBackToSignin',
10649                btnBackToAutoSignup: 'js-sendEmail-btnBackToAutoSignup',
10650            };
10651
10652            var classNames = {
10653                enterEmailAddress: 'js-enterEmailAddress',
10654                verificationEmailTarget: 'js-showVerificationEmail-target',
10655                isVerificationEmailActive: 'is-sendVerificationEmail-active',
10656                isHide: 'is-hide',
10657            };
10658
10659            var config = {
10660                api: {
10661                    signin: {
10662                        url: '/ajax/userAjax/publishLoginUrl/',
10663                    },
10664                    autoSignup: {
10665                        url: '/ajax/userAjax/publishAutoSignupUrl/',
10666                    }
10667                }
10668            }
10669
10670            var SendEmail = {
10671                idNames: idNames,
10672                classNames: classNames,
10673                config: config,
10674                root: doc.getElementById(idNames.root),
10675                btnBackToSignin: doc.getElementById(idNames.btnBackToSignin),
10676                enterEmailAddressTargets: doc.querySelectorAll('.' + classNames.enterEmailAddress),
10677                verificationEmailTarget: doc.querySelectorAll('.' + classNames.verificationEmailTarget),
10678                btnBackToAutoSignup: doc.getElementById(idNames.btnBackToAutoSignup),
10679            };
10680
10681            SendEmail.init = function () {
10682                if (!this.root) {
10683                    return;
10684                }
10685
10686                if (Form.PreForm.$multiStepFormTrigger.hasClass(this.classNames.isVerificationEmailActive)) {
10687                    this.showTarget(this.verificationEmailTarget);
10688                }
10689
10690                SendEmail.addClickBackButton();
10691            };
10692
10693            SendEmail.showTarget = function (targets) {
10694                if (typeof targets === 'object' && targets.length) {
10695                    targets.forEach(function (target) {
10696                        target.classList.remove(SendEmail.classNames.isHide);
10697                    });
10698                }
10699            };
10700
10701            SendEmail.attachClickSendEmailButton = function ($trigger) {
10702                if ($trigger.length) {
10703                    $trigger.on('click', this.showResultView.bind(this));
10704                }
10705            };
10706
10707            SendEmail.showResultView = function (e) {
10708                var triggerId = e.currentTarget.id;
10709
10710                if (!this.root || !triggerId) {
10711                    return;
10712                }
10713
10714                if (triggerId === Form.SignIn.idNames.btnCheckSendEmail) {
10715                    this.sendVerificationEmail(this.config.api.signin.url).done(function () {
10716                        SendEmail.enterEmailAddress();
10717                        KEYENCE.Form.FormFilter.SendEmail.changeFilterClass(triggerId);
10718                        Form.show($(Form.SendEmail.root));
10719                        Form.hide(Form.SignIn.$root);
10720
10721                        Form.changeCurrentScreenName(Form.screenNames.OneClickLoginSendEmail);
10722                    }).fail(function () {
10723                        console.log('error');
10724                    });
10725                } else if (triggerId === Form.SignIn.idNames.asuSendMailButton) {
10726                    this.sendVerificationEmail(this.config.api.autoSignup.url).done(function () {
10727                        KEYENCE.Form.FormFilter.SendEmail.changeFilterClass(triggerId);
10728                        Form.show($(Form.SendEmail.root));
10729                        Form.hide(Form.SignIn.$root);
10730
10731                        Form.changeCurrentScreenName(Form.screenNames.hospitalitySignUpSendEmail);
10732                    }).fail(function () {
10733                        console.log('error');
10734                    });
10735                }
10736            };
10737
10738            SendEmail.sendVerificationEmail = function (apiUrl) {
10739                var deferred = new $.Deferred();
10740                var options;
10741                var $triggerField = Form.PreForm.$formCheckEmail;
10742                var $targetForm = null;
10743                var formData = '';
10744
10745                if ($triggerField.length) {
10746                    $targetForm = $triggerField.closest('form');
10747                }
10748
10749                if ($targetForm.length) {
10750                    formData = $targetForm.serialize();
10751                }
10752
10753                if (!formData.length || !apiUrl) {
10754                    return deferred.resolve();
10755                }
10756
10757                options = {
10758                    url: win.suz_getCurrentDomain() + apiUrl,
10759                    type: 'post',
10760                    data: {
10761                        formData: formData
10762                    },
10763                    dataType: 'jsonp',
10764                    jsonp: 'callback',
10765                    scriptCharset: 'UTF-8',
10766                    timeout: 10000,
10767                };
10768
10769                $.ajax(options).done(function () {
10770                    deferred.resolve();
10771                }).fail(function () {
10772                    // Treat failure as success
10773                    deferred.resolve();
10774                });
10775
10776                return deferred.promise();
10777            };
10778
10779            SendEmail.enterEmailAddress = function () {
10780                var emailAddressField = Form.PreForm.$formCheckEmail;
10781
10782                if (emailAddressField.length && this.enterEmailAddressTargets.length) {
10783                    this.enterEmailAddressTargets.forEach(function (target) {
10784                        target.textContent = emailAddressField.val();
10785                    });
10786                }
10787            };
10788
10789            SendEmail.addClickBackButton = function () {
10790                if (this.btnBackToSignin) {
10791                    this.btnBackToSignin.addEventListener('click', this.changeDisplayForm.bind(this));
10792                }
10793
10794                if (this.btnBackToAutoSignup) {
10795                    this.btnBackToAutoSignup.addEventListener('click', this.changeDisplayForm.bind(this));
10796                }
10797            };
10798
10799            SendEmail.changeDisplayForm = function (event) {
10800                Form.show(Form.SignIn.$root);
10801                Form.hide($(this.root));
10802
10803                if (event.currentTarget.id === 'js-sendEmail-btnBackToSignin') {
10804                    Form.changeCurrentScreenName(Form.screenNames.login);
10805                } else {
10806                    Form.changeCurrentScreenName(Form.screenNames.hospital
10806itySignUp);
10807                }
10808            };
10809
10810            return SendEmail;
10811        }());
10812
10813        Form.Modal = (function () {
10814            var idNames = {
10815                colorbox: 'colorbox',
10816                content: 'cboxContent',
10817                loadedContent: 'cboxLoadedContent',
10818                overlay: 'cboxOverlay',
10819                modalbox: 'kpi_modalbox',
10820                title: 'cboxTitle',
10821                btnClose: 'cboxClose',
10822                wrapper: 'cboxWrapper',
10823                root: 'js-multiStepForm-modal',
10824                lowerMargin: 'js-multiStepForm-modalLowerMargin'
10825            };
10826
10827            var classNames = {
10828                extension: 'of-multiStepForm',
10829                lowerMargin: 'formMultiStep-lowerMargin'
10830            };
10831
10832            var Modal = {
10833                idNames: idNames
10834            };
10835
10836            var elements= null;
10837
10838            Modal.open = function () {
10839                if (!Form.isModalContent()) {
10840                    return;
10841                }
10842
10843                Form.$modal = $.colorbox({
10844                    width: 840,
10845                    inline: true,
10846                    href: $('#' + idNames.root),
10847                    onOpen: Modal.onOpen,
10848                    onComplete: Modal.onComplete,
10849                    onCleanup: Modal.onCleanup,
10850                    onClosed: Form.onClosed
10851                })
10852            };
10853
10854            Modal.getModalElementsAll = function () {
10855                var $root = $('#' + Modal.idNames.colorbox);
10856
10857                if (!$root.length) {
10858                    return null;
10859                }
10860
10861                return {
10862                    $root: $root,
10863                    $content: $root.find('#' + idNames.content),
10864                    $loadedContent: $root.find('#' + idNames.loadedContent),
10865                    $title: $root.find('#' + idNames.title),
10866                    $overlay: $('#' + Modal.idNames.overlay),
10867                    $wrapper: $('#' + Modal.idNames.wrapper),
10868                };
10869            };
10870
10871            Modal.onOpen = function () {
10872                $('#' + Modal.idNames.overlay).addClass('of-multiStepForm');
10873                $('#' + Modal.idNames.modalbox).removeClass('ModalLarge');
10874            };
10875
10876            Modal.onComplete = function () {
10877                elements = Modal.getModalElementsAll();
10878
10879                if (elements === null) {
10880                    return;
10881                }
10882
10883                Modal.addAttributes();
10884                Modal.addCLoseButton();
10885                Modal.stopBubbling(elements.$title);
10886                Modal.clickCloseButton();
10887                Modal.appendLowerMargin();
10888                Form.focusFirstInputElement($('#' + Form.Register.idNames.regForm));
10889            };
10890
10891            Modal.onCleanup = function () {
10892                Form.show(Form.PreForm.$root);
10893                Form.hide(Form.SignIn.$root);
10894                Form.hide(Form.Register.$root);
10895                Form.hide($(Form.SendEmail.root));
10896            };
10897
10898            Modal.onClosed = function () {
10899                if (elements === null) {
10900                    return;
10901                }
10902
10903                Modal.removeAttributes();
10904
10905                elements = null;
10906                Main.$modal = null;
10907            };
10908
10909            Modal.addAttributes = function () {
10910                if (elements === null) {
10911                    return;
10912                }
10913
10914                elements.$root.addClass(classNames.extension);
10915                elements.$title.addClass(classNames.extension);
10916                elements.$content.addClass(classNames.extension);
10917                elements.$loadedContent.addClass(classNames.extension);
10918            };
10919
10920            Modal.removeAttributes = function () {
10921                if (elements === null) {
10922                    return;
10923                }
10924
10925                elements.$root.removeClass(classNames.extension);
10926                elements.$title.removeClass(classNames.extension);
10927                elements.$content.removeClass(classNames.extension);
10928                elements.$loadedContent.removeClass(classNames.extension);
10929                elements.$overlay.removeClass(classNames.extension);
10930            };
10931
10932            Modal.addCLoseButton = function () {
10933                if (elements && elements.$loadedContent.length) {
10934                    elements.$loadedContent.prepend('<button id="' + idNames.btnClose + '"><span>' + kpi_translation.Close + '</span></button>');
10935                }
10936            };
10937
10938            Modal.stopBubbling = function ($target) {
10939                if ($target && $target.length) {
10940                    $target.off('click').on('click', function (event) {
10941                        event.stopPropagation();
10942                    });
10943                }
10944            };
10945
10946            Modal.clickCloseButton = function () {
10947                $('#idNames.btnClose').off('click').on('click', function () {
10948                    $.colorbox.close();
10949                });
10950            };
10951
10952            Modal.appendLowerMargin = function () {
10953                var $lowerMargin = $('#' + idNames.lowerMargin);
10954
10955                if (!elements || !elements.$wrapper.length || $lowerMargin.length) {
10956                    return;
10957                }
10958
10959                elements.$wrapper.append(
10960                    '<div id="' + idNames.lowerMargin + '"' + ' class="' + classNames.lowerMargin + '"></div>'
10961                );
10962
10963                $lowerMargin = $('#' + idNames.lowerMargin);
10964
10965                $lowerMargin.on('click', function () {
10966                    $.colorbox.close();
10967                });
10968            };
10969
10970            return Modal;
10971        }());
10972
10973        win.MultiStepForm = Form;
10974    }());
10975
10976    KEYENCE.setCurrentPageNavi = function () {
10977        var fn = {};
10978
10979        fn.init = function () {
10980            var self = this;
10981            var categoryValue = null;
10982            var items = self.getItems();
10983
10984            if (!items.pageCategory || !items.navigationLinks.length) {
10985                return;
10986            }
10987
10988            categoryValue = self.getCategoryValue(items.pageCategory);
10989            self.addCurrentAttribute(categoryValue);
10990        };
10991
10992        fn.getItems = function () {
10993            var items = {
10994                pageCategory: doc.querySelector('[data-page-category]'),
10995                navigationLinks: doc.querySelectorAll('[data-navigation-link]')
10996            };
10997
10998            return items;
10999        };
11000
11001        fn.getCategoryValue = function (item) {
11002            var categoryValue = null;
11003
11004            if (!item || item.nodeType !== 1) {
11005                return false;
11006            }
11007
11008            categoryValue = item.dataset.pageCategory;
11009
11010            return categoryValue;
11011        };
11012
11013        fn.addCurrentAttribute = function (categoryValue) {
11014            var self = this;
11015            var linkValue = null;
11016            var items = self.getItems();
11017
11018            if (!categoryValue || typeof categoryValue !== 'string') {
11019                return;
11020            }
11021
11022            Array.prototype.forEach.call(items.navigationLinks, function (link) {
11023                linkValue = self.getLinkValue(link);
11024
11025                if (!linkValue || typeof linkValue !== 'string') {
11026                    return;
11027                }
11028
11029                if (categoryValue === linkValue) {
11030                    link.setAttribute('aria-current', 'page');
11031                }
11032            });
11033        };
11034
11035        fn.getLinkValue = function (item) {
11036            var linkValue = null;
11037
11038            if (!item || item.nodeType !== 1) {
11039                return false;
11040            }
11041
11042            linkValue = item.dataset.navigationLink;
11043
11044            return linkValue;
11045        };
11046
11047        fn.init();
11048    };
11049
11050    KEYENCE.setMenuConversion = function () {
11051        var self = this;
11052        var root = null;
11053        var settingObj = win.kg_cp;
11054        var links = null;
11055        var removeButton = null;
11056        var openButton = null;
11057        var closeButton = null;
11058        var list = null;
11059        var displayPreventTrigger = null;
11060        var isFirstDisplayed = false;
11061        var app = null;
11062        var appOpenButton = null;
11063        var appCloseButton = null;
11064        var appButton = null;
11065        var appLinkOuter = null;
11066        var header = null;
11067        var seriesHeader = null;
11068        var resizeTimer = null;
11069        var closeTimer = null;
11070        var delayVal = 200;
11071        var fn = {};
11072        var handlers = {};
11073        var dataLayer = win.dataLayer ? win.dataLayer : [];
11074        var displayPreventTriggerobserver = null;
11075
11076        var config = {
11077            originalDomain: win.kpi_originalDomain ? win.kpi_originalDomain : ''
11078        };
11079
11080        var apiPath = {
11081            sunCode: `${config.originalDomain}/ajax/userAjax/sunCodeImage/`
11082        };
11083
11084        var classNames = {
11085            body: 'js-menuConversion-body',
11086            list: 'js-menuConversion-list',
11087            listItemChild: 'js-menuConversion-listItemChild',
11088            link: 'js-menuConversion-link',
11089            linkText: 'js-menuConversion-linkText',
11090            removeButton: 'js-menuConversion-removeButton',
11091            openButton: 'js-menuConversion-openButton',
11092            closeButton: 'js-menuConversion-closeButton',
11093            displayPreventTrigger: 'js-menuConversion-displayPreventTrigger',
11094            app: 'js-menuConversion-app',
11095            appOpenButton: 'js-menuConversion-appOpenButton',
11096            appCloseButton: 'js-menuConversion-appCloseButton',
11097            appText: 'js-menuConversion-appText',
11098            appImage: 'js-menuConversion-appImage',
11099            appButton: 'js-menuConversion-appButton',
11100            appLinkOuter: 'js-menuConversion-appLinkOuter',
11101            appLink: 'js-menuConversion-appLink',
11102            sunCode: 'js-menuConversion-sunCode',
11103            isShow: self.CONFIG.SHOW_CLASS,
11104            isHide: self.CONFIG.HIDE_CLASS,
11105            isVisible: 'is-visible',
11106            isHidden: 'is-hidden',
11107            isClose: 'is-close',
11108        };
11109
11110        var idNames = {
11111            template: 'js-menuConversion-template',
11112            appTemplate: 'js-menuConversion-appTemplate',
11113            appButtonTemplate: 'js-menuConversion-appButtonTemplate',
11114            appLinkTemplate: 'js-menuConversion-appLinkTemplate',
11115            appListItemTemplate: 'js-menuConversion-appListItemTemplate',
11116            header: 'js-controlHeader'
11117        };
11118
11119        var cookies = {
11120            closed: 'kpi_has_menuConversionClosed',
11121            appClosed: 'kpi_has_menuConversionAppClosed'
11122        };
11123
11124        if (!self.getElem.menuConversion || !settingObj || !win.kpi_menu_conversion) {
11125            return;
11126        }
11127
11128        root = self.getElem.menuConversion;
11129        displayPreventTrigger = doc.querySelector(`.${classNames.displayPreventTrigger}`);
11130
11131        fn.init = function () {
11132            if (!fn.isShow()) {
11133                return;
11134            }
11135
11136            fn.setHtml();
11137            fn.getSelector();
11138            fn.setApp();
11139            fn.ctrlTelLink();
11140            fn.onClickForRemoveButton();
11141            fn.onKeydownForEscape();
11142            fn.runForEachScreen();
11143            smallScreenMql.addListener(fn.runForEachScreen);
11144        };
11145
11146        fn.runForEachScreen = function () {
11147            fn.observeDisplayTrigger();
11148
11149            if (smallScreenMql.matches) {
11150                fn.onClickForOpenButton();
11151                fn.onClickForCloseButton();
11152            } else {
11153                if (list) {
11154                    list.removeEventListener('transitionend', handlers.onTransitionendList, false);
11155                }
11156
11157                if (!displayPreventTrigger) {
11158                    fn.openMenu();
11159                }
11160
11161                if (!fn.isAlwaysOpened()) {
11162                    fn.onMouseenterForListItem();
11163                    fn.onFocusinForLink();
11164                    fn.onMouseleaveForListItem();
11165                    fn.onFocusoutForListItem();
11166                }
11167            }
11168
11169            fn.setTopPosition();
11170            fn.onResizeWindow();
11171            fn.onScrollWindow();
11172        };
11173
11174        fn.isShow = function () {
11175            if (!win.kpi_menu_conversion.isShow || fn.isExcludedUrl() || fn.hasCookie(cookies.closed)) {
11176                return false;
11177            }
11178
11179            return true;
11180        };
11181
11182        fn.isTelShow = function () {
11183            if (!win.kpi_menu_conversion.isTelShow) {
11184                return false;
11185            }
11186
11187            return true;
11188        };
11189
11190        fn.isAlwaysOpened = function () {
11191            var currentURL = win.location.pathname;
11192            var pattern = new RegExp('^' + win.suz_LanguagePath + '\/landing\/lpc\/');
11193
11194            if (pattern.test(currentURL)) {
11195                return true;
11196            }
11197
11198            return false;
11199        };
11200
11201        fn.openMenu = function () {
11202            var delay;
11203
11204            if (!win.kpi_menu_conversion.openDelay || !list || isFirstDisplayed) {
11205                return;
11206            }
11207
11208            isFirstDisplayed = true;
11209
11210            delay = Number(win.kpi_menu_conversion.openDelay) >= 0 ? Number(win.kpi_menu_conversion.openDelay) : 3000;
11211
11212            list.classList.add(classNames.isShow);
11213
11214            if (closeTimer !== null) {
11215                clearTimeout(closeTimer);
11216            }
11217
11218            if (!fn.isAlwaysOpened()) {
11219                closeTimer = setTimeout(function () {
11220                    list.classList.remove(classNames.isShow);
11221                }, delay);
11222            }
11223        };
11224
11225        fn.setHtml = function () {
11226            var template = doc.getElementById(idNames.template);
11227            var clone;
11228            var list;
11229
11230            if (template) {
11231                clone = fn.createNodeClone(template);
11232
11233                if (displayPreventTrigger) {
11234                    list = clone.querySelector(`.${classNames.list}`);
11235
11236                    if (list) {
11237                        list.classList.add(classNames.isHidden);
11238                    }
11239                }
11240
11241                fn.setUrl(clone);
11242                fn.setAppHtml(clone);
11243                fn.setA11y(clone);
11244                root.appendChild(clone);
11245            }
11246        };
11247
11248        fn.setAppHtml = function (clone) {
11249            var menuConversionGroup = self.getElem.menuConversionGroup;
11250            var appTemplate = doc.getElementById(idNames.appTemplate);
11251            var appButtonTemplate = doc.getElementById(idNames.appButtonTemplate);
11252            var appLinkTemplate = doc.getElementById(idNames.appLinkTemplate);
11253            var appListItemTemplate = doc.getElementById(idNames.appListItemTemplate);
11254            var openButton = clone.querySelector(`.${classNames.openButton}`);
11255            var list = clone.querySelector(`.${classNames.list}`);
11256            var listLastElement;
11257            var appClone;
11258            var appButtonClone;
11259            var appLinkClone;
11260            var appListItemClone;
11261
11262            if (menuConversionGroup && appTemplate) {
11263                appClone = fn.createNodeClone(appTemplate);
11264                menuConversionGroup.appendChild(appClone);
11265            }
11266
11267            if (openButton && appButtonTemplate) {
11268                appButtonClone = fn.createNodeClone(appButtonTemplate);
11269                openButton.parentNode.insertBefore(appButtonClone, openButton.nextElementSibling);
11270            }
11271
11272            if (list && appLinkTemplate) {
11273                appLinkClone = fn.createNodeClone(appLinkTemplate);
11274                list.parentNode.insertBefore(appLinkClone, list.nextElementSibling);
11275            }
11276
11277            if (list && appListItemTemplate) {
11278                listLastElement = list.lastElementChild;
11279                appListItemClone = fn.createNodeClone(appListItemTemplate);
11280
11281                if (listLastElement?.querySelector('[data-menu-conversion-url="aiAssistant"]')) {
11282                    list.insertBefore(appListItemClone, listLastElement);
11283                } else {
11284                    list.appendChild(appListItemClone);
11285                }
11286            }
11287        };
11288
11289        fn.setA11y = function (clone) {
11290            var list = clone.querySelector(`.${classNames.list}`);
11291            var listItems = list?.children;
11292
11293            if (!listItems?.length) {
11294                return;
11295            }
11296
11297            [...listItems].forEach((item) => {
11298                var childContent = item.querySelector(`.${classNames.listItemChild}`);
11299                var link = null;
11300
11301
11302                if (childContent) {
11303                    link = item.querySelector(`:scope > .${classNames.link}`);
11304                    link?.setAttribute('aria-expanded', false);
11305                }
11306            })
11307        }
11308
11309        fn.setApp = function () {
11310            var sunCode = doc.querySelector('.' + classNames.sunCode);
11311
11312            if (!app) {
11313                return;
11314            }
11315
11316            fn.onClickForAppOpenButton();
11317            fn.onClickForAppCloseButton();
11318
11319            if (util.getCookie(cookies.appClosed) === 'true') {
11320                fn.closedApp();
11321            } else {
11322                fn.openedApp();
11323            }
11324
11325            if (sunCode) {
11326                fn.setSunCode();
11327            }
11328        };
11329
11330        fn.setSunCode = function () {
11331            var signinStat = dataLayer[1].signinStat ? dataLayer[1].signinStat : '';
11332            var savedSunCodeImage = null;
11333            var expireDate = null;
11334
11335            if (signinStat !== 'signin') {
11336                return;
11337            }
11338
11339            savedSunCodeImage = localStorage.getItem("sunCodeImage") ? JSON.parse(localStorage.getItem("sunCodeImage")) : null;
11340            expireDate = savedSunCodeImage && savedSunCodeImage.expireDate ? savedSunCodeImage.expireDate : null;
11341
11342            if (savedSunCodeImage && (expireDate && fn.isWithinDeadline(expireDate))) {
11343                fn.setSunCodeText(savedSunCodeImage);
11344                fn.setSunCodePath(savedSunCodeImage);
11345            } else {
11346                fn.loadSunCodeApi();
11347            }
11348        };
11349
11350        fn.setSunCodeText = function (sunCodeImageData) {
11351            var status = sunCodeImageData.status ? sunCodeImageData.status : false;
11352            var appText = doc.querySelector('.' + classNames.appText);
11353            var successedText = appText ? appText.dataset.textSuccessed : "";
11354
11355            if (!status) {
11356                return;
11357            }
11358
11359            if (appText && (successedText && successedText !== "")) {
11360                appText.innerText = successedText;
11361            }
11362        };
11363
11364        fn.setSunCodePath = function (sunCodeImageData) {
11365            var sunCodeImage = sunCodeImageData.sunCodeImage ? sunCodeImageData.sunCodeImage : null;
11366            var wechatLoginUrl = sunCodeImageData.wechatLoginUrl ? sunCodeImageData.wechatLoginUrl : null;
11367            var appImage = doc.querySelector('.' + classNames.appImage);
11368            var appButton = doc.querySelector('.' + classNames.appButton);
11369            var appLinks = doc.querySelectorAll('.' + classNames.appLink);
11370
11371            if (sunCodeImage && appImage) {
11372                appImage.src = `data:image/png;base64, ${sunCodeImage}`;
11373            }
11374
11375            if (wechatLoginUrl) {
11376                if (appButton) {
11377                    appButton.href = wechatLoginUrl;
11378                }
11379
11380                if (appLinks.length) {
11381                    appLinks.forEach((appLink) => {
11382                        appLink.href = wechatLoginUrl;
11383                    })
11384                }
11385            }
11386        };
11387
11388        fn.loadSunCodeApi = function () {
11389            fetch(apiPath.sunCode, {
11390                method: 'GET'
11391            }).then((response) => {
11392                if (response.ok) {
11393                    return response.json();
11394                }
11395                throw new Error('Network response was not OK');
11396            }).then((result) => {
11397                localStorage.setItem("sunCodeImage", JSON.stringify(result));
11398                fn.setSunCodeText(result);
11399                fn.setSunCodePath(result);
11400            }).catch((error) => {
11401                console.error(error);
11402            });
11403        };
11404
11405        fn.isWithinDeadline = function (expireDate) {
11406            var date = new Date();
11407            var year = date.getFullYear();
11408            var month = (date.getMonth() + 1).toString().padStart(2, 0);
11409            var day = date.getDate().toString().padStart(2, 0);
11410            var isWithinDeadline = false;
11411
11412            if (Number(expireDate) > Number(`${year}${month}${day}`)) {
11413                isWithinDeadline = true;
11414            }
11415
11416            return isWithinDeadline;
11417        };
11418
11419        fn.setUrl = function (clone) {
11420            var links;
11421            var linkText;
11422            var urlObj = settingObj.url ? settingObj.url: settingObj;
11423            var phoneKeys = [];
11424            const fragment = doc.createDocumentFragment();
11425
11426            links = clone ? clone.querySelectorAll('.' + classNames.link) : null;
11427
11428            if (!urlObj || !links) {
11429                return;
11430            }
11431
11432            phoneKeys = Object.keys(urlObj).filter(x => x.match(/^phone(\d)*$/g));
11433
11434            Array.prototype.forEach.call(links, function (link) {
11435                var data = link.dataset.menuConversionUrl;
11436
11437                if (data === 'phone' && !fn.isTelShow()) {
11438                    link.parentNode.remove();
11439                } else {
11440                    if (data && urlObj[data] && urlObj[data] !== "") {
11441                        if (data === 'phone') {
11442                            linkText = link.querySelector('.' + classNames.linkText);
11443
11444                            if (link.hasAttribute('href')) {
11445                                link.href = 'tel:' + urlObj[data];
11446                            }
11447
11448                            if (phoneKeys.length) {
11449                                phoneKeys.forEach((key) => {
11450                                    if (urlObj[key] && urlObj[key] !== "") {
11451                                        var body = doc.createElement('span');
11452                                        body.classList.add('prd-menuConversion-linkTextBody');
11453                                        body.textContent = urlObj[key];
11454                                        fragment.appendChild(body);
11455                                    }
11456                                });
11457                            }
11458
11459                            if (linkText) {
11460                                linkText.appendChild(fragment);
11461                            }
11462                        } else {
11463                            link.href = urlObj[data];
11464                        }
11465                    } else if (!urlObj[data] || urlObj[data] === "") {
11466                        link.parentNode.remove();
11467                    }
11468                }
11469            });
11470        };
11471
11472        fn.getSelector = function () {
11473            links = root.querySelectorAll('.' + classNames.link);
11474            removeButton = root.querySelector('.' + classNames.removeButton);
11475            openButton = root.querySelector('.' + classNames.openButton);
11476            closeButton = root.querySelector('.' + classNames.closeButton);
11477            list = root.querySelector('.' + classNames.list);
11478            app = doc.querySelector('.' + classNames.app);
11479            appOpenButton = doc.querySelector('.' + classNames.appOpenButton);
11480            appCloseButton = doc.querySelector('.' + classNames.appCloseButton);
11481            appButton = root.querySelector('.' + classNames.appButton);
11482            appLinkOuter = root.querySelector('.' + classNames.appLinkOuter);
11483            header = doc.getElementById(idNames.header);
11484            seriesHeader = doc.querySelector('[data-series-header-target="sticky"]');
11485        };
11486
11487        fn.setTopPosition = function () {
11488            var rootTop;
11489            var headerBottom;
11490            var seriesHeaderBottom;
11491            var topVal;
11492            var transformVal;
11493            var buffer = 5;
11494
11495            root.style.top = '50%';
11496            root.style.transform = 'translateY(-50%)';
11497
11498            rootTop = root.getBoundingClientRect().top;
11499
11500            if (seriesHeader) {
11501                seriesHeaderBottom = seriesHeader.getBoundingClientRect().bottom;
11502                topVal = seriesHeaderBottom > rootTop ? (seriesHeaderBottom + buffer) + 'px' : '50%';
11503                transformVal = seriesHeaderBottom > rootTop ? 'inherit' : 'translateY(-50%)';
11504            } else if (header) {
11505                headerBottom = header.getBoundingClientRect().bottom;
11506                topVal = headerBottom > rootTop ? (headerBottom + buffer) + 'px' : '50%';
11507                transformVal = headerBottom > rootTop ? 'inherit' : 'translateY(-50%)';
11508            } else {
11509                topVal = '50%';
11510                transformVal = 'translateY(-50%)';
11511            }
11512
11513            root.style.top = topVal;
11514            root.style.transform = transformVal;
11515        };
11516
11517        fn.observeDisplayTrigger = function () {
11518            if (!displayPreventTrigger) {
11519                return;
11520            }
11521
11522            if (smallScreenMql.matches) {
11523                if (displayPreventTriggerobserver) {
11524                    displayPreventTriggerobserver.disconnect();
11525                }
11526                list.classList.remove(classNames.isClose);
11527                list.classList.remove(classNames.isHidden);
11528            } else {
11529                displayPreventTriggerobserver = new IntersectionObserver(fn.toggleDisplayForDisplayTrigger, {root: null, threshold: 0})
11530                displayPreventTriggerobserver.observe(displayPreventTrigger);
11531            }
11532        };
11533
11534        fn.toggleDisplayForDisplayTrigger = function (entries) {
11535            entries.forEach((entry)=>{
11536                if (entry.isIntersecting) {
11537                    if (closeTimer !== null) {
11538                        clearTimeout(closeTimer);
11539                        list.classList.remove(classNames.isShow);
11540                    }
11541                    list.classList.add(classNames.isClose);
11542                } else {
11543                    list.classList.remove(classNames.isHidden);
11544                    list.classList.remove(classNames.isClose);
11545                    fn.openMenu();
11546                }
11547            });
11548        };
11549
11550        fn.openedApp = function () {
11551            if (app) {
11552                app.classList.add(classNames.isShow);
11553            }
11554
11555            if (appOpenButton) {
11556                appOpenButton.classList.remove(classNames.isShow);
11557            }
11558        };
11559
11560        fn.closedApp = function () {
11561            if (app) {
11562                app.classList.remove(classNames.isShow);
11563            }
11564
11565            if (appOpenButton) {
11566                appOpenButton.classList.add(classNames.isShow);
11567            }
11568        };
11569
11570        fn.toggleListItem = function (listItem, isOpen) {
11571            if (!list || !listItem) {
11572                return;
11573            }
11574
11575            const link = listItem.querySelector(`:scope > .${classNames.link}`);
11576            const childContent = listItem.querySelector(`.${classNames.listItemChild}`);
11577
11578            if (!link) {
11579                return;
11580            }
11581
11582            const isExpandable = !!childContent;
11583
11584            if (isOpen) {
11585                if (closeTimer !== null) {
11586                    clearTimeout(closeTimer);
11587                    closeTimer = null;
11588                }
11589
11590                list.classList.add(classNames.isShow);
11591
11592                if (isExpandable) {
11593                    link.setAttribute('aria-expanded', 'true');
11594                    childContent.setAttribute('aria-hidden', 'false');
11595                }
11596            } else {
11597                list.classList.remove(classNames.isShow);
11598
11599                if (isExpandable) {
11600                    link.setAttribute('aria-expanded', 'false');
11601                    childContent.setAttribute('aria-hidden', 'true');
11602                }
11603            }
11604
11605        };
11606
11607
11608        fn.closeAllMenu = function () {
11609            var openedLinks = null;
11610
11611            if (!list) {
11612                return;
11613            }
11614
11615            if (closeTimer !== null) {
11616                clearTimeout(closeTimer);
11617                closeTimer = null;
11618            }
11619
11620            openedLinks = list.querySelectorAll(`.${classNames.link}[aria-expanded="true"]`);
11621
11622            openedLinks.forEach((link) => {
11623                var listItem = link.closest('li');
11624                fn.toggleListItem(listItem, false);
11625            });
11626
11627            list.classList.remove(classNames.isShow);
11628        };
11629
11630
11631        fn.onMouseenterForListItem = function () {
11632            var listItems = list?.children;
11633
11634            if (!listItems?.length) {
11635                return;
11636            }
11637
11638            [...listItems].forEach((item) => {
11639                item.addEventListener('mouseenter', handlers.onMouseenterForListItem, false);
11640            });
11641        };
11642
11643        fn.onFocusinForLink = function () {
11644            if (!links.length) {
11645                return;
11646            }
11647
11648            links.forEach(function(link) {
11649                link.addEventListener('focusin', handlers.onFocusinForLink, false);
11650            });
11651        };
11652
11653        fn.onMouseleaveForListItem = function () {
11654            const listItems = list?.children;
11655
11656            if (!listItems?.length) {
11657                return;
11658            }
11659
11660            [...listItems].forEach((item) => {
11661                item.addEventListener('mouseleave', handlers.onMouseleaveForListItem, false);
11662            });
11663        };
11664
11665        fn.onFocusoutForListItem = function () {
11666            const listItems = list?.children;
11667
11668            if (!listItems?.length) {
11669                return;
11670            }
11671
11672            [...listItems].forEach((item) => {
11673                item.addEventListener('focusout', handlers.onFocusoutForListItem, false);
11674            });
11675        };
11676
11677        fn.onKeydownForEscape = function () {
11678            doc.addEventListener('keydown', handlers.onKeydownForEscape, false);
11679        };
11680
11681        fn.onClickForRemoveButton = function () {
11682            if (!removeButton) {
11683                return;
11684            }
11685
11686            removeButton.addEventListener('click', handlers.onClickForRemoveButton, false);
11687        };
11688
11689        fn.onClickForOpenButton = function () {
11690            if (!openButton) {
11691                return;
11692            }
11693
11694            openButton.addEventListener('click', handlers.onClickForOpenButton, false);
11695        };
11696
11697        fn.onClickForCloseButton = function () {
11698            if (!closeButton) {
11699                return;
11700            }
11701
11702            closeButton.addEventListener('click', handlers.onClickForCloseButton, false);
11703        };
11704
11705        fn.onClickForAppOpenButton = function () {
11706            if (!appOpenButton) {
11707                return;
11708            }
11709
11710            appOpenButton.addEventListener('click', handlers.onClickForAppOpenButton, false);
11711        };
11712
11713        fn.onClickForAppCloseButton = function () {
11714            if (!appCloseButton) {
11715                return;
11716            }
11717
11718            appCloseButton.addEventListener('click', handlers.onClickForAppCloseButton, false);
11719        };
11720
11721        fn.onResizeWindow = function () {
11722            win.addEventListener('resize', handlers.onResizeWindow);
11723        };
11724
11725        fn.onScrollWindow = function () {
11726            win.addEventListener('scroll', handlers.onScrollWindow);
11727        };
11728
11729        fn.isExcludedUrl = function () {
11730            var currentURL = win.location.pathname;
11731            var pattern = win.kpi_menu_conversion.excludedUrl;
11732
11733            if (pattern.test(currentURL)) {
11734                return true;
11735            }
11736
11737            return false;
11738        };
11739
11740        fn.setCookie = function (name, value) {
11741            var path;
11742
11743            if (win.suz_LanguagePath) {
11744                path = win.suz_LanguagePath + '/';
11745            } else {
11746                path = '/';
11747            }
11748
11749            doc.cookie = name + '=' + value + '; path=' + path;
11750        };
11751
11752        fn.hasCookie = function (name) {
11753            var cookieArray = doc.cookie.split(';');
11754            var flag = false;
11755
11756            Array.prototype.forEach.call(cookieArray, function (item) {
11757                if (item.indexOf(name + '=') > -1) {
11758                    flag = true;
11759                }
11760            });
11761
11762            return flag;
11763        };
11764
11765        fn.ctrlTelLink = function () {
11766            var telLink = list.querySelectorAll('a[href^="tel:"]');
11767            var hasTouchScreen = false;
11768            var mQ = null;
11769            var ua = win.navigator.userAgent;
11770            var cancelLink = null;
11771
11772            if (!telLink.length) {
11773                return;
11774            }
11775
11776            cancelLink = function (e) {
11777                e.preventDefault();
11778            };
11779
11780            if ('maxTouchPoints' in navigator) {
11781                hasTouchScreen = win.navigator.maxTouchPoints > 0;
11782                if (ua.indexOf('Edge') !== -1) {
11783                    if (ua.indexOf('Windows Phone') === -1 && ua.indexOf('IEMobile') === -1) {
11784                        hasTouchScreen = false;
11785                    }
11786                }
11787            } else if ('msMaxTouchPoints' in navigator) {
11788                hasTouchScreen = win.navigator.msMaxTouchPoints > 0;
11789            } else {
11790                mQ = win.matchMedia && matchMedia('(pointer:coarse)');
11791
11792                if (mQ && mQ.media === '(pointer:coarse)') {
11793                    hasTouchScreen = Boolean(mQ.matches);
11794                } else if ('orientation' in win) {
11795                    hasTouchScreen = true;
11796                } else {
11797                    hasTouchScreen = (
11798                        /\b(BlackBerry|webOS|iPhone|IEMobile)\b/i.test(ua) ||
11799                        /\b(Android|Windows Phone|iPad|iPod)\b/i.test(ua)
11800                    );
11801                }
11802            }
11803
11804            if (!hasTouchScreen) {
11805                telLink.forEach(function (item) {
11806                    item.addEventListener('click', cancelLink, false);
11807                });
11808            }
11809        };
11810
11811        fn.createNodeClone = function (template) {
11812            return doc.importNode(template.content, true);
11813        };
11814
11815        handlers.onMouseenterForListItem = function (e) {
11816            fn.toggleListItem(e.currentTarget, true);
11817        }
11818
11819        handlers.onFocusinForLink = function (e) {
11820            var listItem = e.currentTarget.closest('li');
11821            fn.toggleListItem(listItem, true);
11822
11823        };
11824
11825        handlers.onMouseleaveForListItem = function (e) {
11826            fn.toggleListItem(e.currentTarget, false);
11827        };
11828
11829        handlers.onFocusoutForListItem = function (e) {
11830            var listItem = e.currentTarget;
11831            var relatedTarget = e.relatedTarget;
11832
11833            if (relatedTarget && listItem.contains(relatedTarget)) {
11834                return;
11835            }
11836
11837            fn.toggleListItem(listItem, false);
11838        };
11839
11840        handlers.onKeydownForEscape = function (e) {
11841            if (e.key === 'Esc' || e.key === 'Escape') {
11842                if (!list || !list.classList.contains(classNames.isShow)) {
11843                    return;
11844                }
11845
11846                e.preventDefault();
11847                fn.closeAllMenu();
11848            }
11849        };
11850
11851        handlers.onClickForRemoveButton = function () {
11852            root.addEventListener('transitionend', handlers.onTransitionendRoot, false);
11853            root.classList.add(classNames.isClose);
11854            fn.setCookie(cookies.closed, '1');
11855        };
11856
11857        handlers.onTransitionendList = function () {
11858            if (!list || !links.length) {
11859                return;
11860            }
11861
11862            if (list.classList.contains(classNames.isVisible)) {
11863                list.focus();
11864            }
11865        };
11866
11867        handlers.onTransitionendRoot = function () {
11868            root.remove();
11869        };
11870
11871        handlers.onClickForOpenButton = function () {
11872            if (list) {
11873                list.classList.add(classNames.isVisible);
11874                list.tabIndex = 0;
11875                list.addEventListener('transitionend', handlers.onTransitionendList, false);
11876            }
11877
11878            if (openButton) {
11879                openButton.classList.add(classNames.isHidden);
11880            }
11881
11882            if (removeButton) {
11883                removeButton.classList.add(classNames.isHide);
11884            }
11885
11886            if (closeButton) {
11887                closeButton.classList.add(classNames.isShow);
11888            }
11889
11890            if (appButton) {
11891                appButton.classList.add(classNames.isHidden);
11892            }
11893
11894            if (appLinkOuter) {
11895                appLinkOuter.classList.add(classNames.isVisible);
11896            }
11897        };
11898
11899        handlers.onClickForCloseButton = function () {
11900            if (list) {
11901                list.classList.remove(classNames.isVisible);
11902                list.removeEventListener('transitionend', handlers.onTransitionendList, false);
11903            }
11904
11905            if (openButton) {
11906                openButton.classList.remove(classNames.isHidden);
11907            }
11908
11909            if (removeButton) {
11910                removeButton.classList.remove(classNames.isHide);
11911            }
11912
11913            if (closeButton) {
11914                closeButton.classList.remove(classNames.isShow);
11915            }
11916
11917            if (appButton) {
11918                appButton.classList.remove(classNames.isHidden);
11919            }
11920
11921            if (appLinkOuter) {
11922                appLinkOuter.classList.remove(classNames.isVisible);
11923            }
11924        };
11925
11926        handlers.onClickForAppOpenButton = function () {
11927            fn.openedApp();
11928            fn.setCookie(cookies.appClosed, 'false');
11929        };
11930
11931        handlers.onClickForAppCloseButton = function () {
11932            if (app) {
11933                app.classList.remove(classNames.isShow);
11934            }
11935
11936            if (appOpenButton) {
11937                appOpenButton.classList.add(classNames.isShow);
11938            }
11939
11940            fn.setCookie(cookies.appClosed, 'true');
11941        };
11942
11943        handlers.onResizeWindow = function () {
11944            if (resizeTimer !== null) {
11945                clearTimeout(resizeTimer);
11946            }
11947
11948            resizeTimer = setTimeout(function () {
11949                fn.setTopPosition();
11950            }, delayVal);
11951        };
11952
11953        handlers.onScrollWindow = function () {
11954            fn.setTopPosition();
11955        };
11956
11957        fn.init();
11958    };
11959
11960    KEYENCE.ctrlHeaderForDynamicJumbotron = () => {
11961        class CtrlHeaderForDynamicJumbotron {
11962            constructor(){
11963                this.classNames = {
11964                    target: "js-ctrlHeaderForDynamicJumbotron",
11965                    trigger: "js-ctrlHeaderForDynamicJumbotron-trigger",
11966                    isShown: "is-shown",
11967                }
11968
11969                this.target = doc.querySelector(`.${this.classNames.target}`);
11970                this.trigger = doc.querySelector(`.${this.classNames.trigger}`);
11971                this.observer = null;
11972            }
11973
11974            init() {
11975                if (!this.target || !this.trigger) {
11976                    return;
11977                }
11978
11979                this.runForEachScreen();
11980                smallScreenMql.addEventListener("change", this.runForEachScreen.bind(this));
11981            }
11982
11983            runForEachScreen() {
11984                if (smallScreenMql.matches) {
11985                    if (this.observer) {
11986                        this.observer.disconnect();
11987                    }
11988                } else {
11989                    this.observer = new IntersectionObserver(this.toggleIsShownClass.bind(this), {root: null, threshold: 0});
11990                    this.observer.observe(this.trigger);
11991                }
11992            }
11993
11994            toggleIsShownClass(entries) {
11995                entries.forEach((entry) => {
11996                    if (entry.isIntersecting) {
11997                        this.target.classList.remove(this.classNames.isShown);
11998                    } else {
11999                        this.target.classList.add(this.classNames.isShown);
12000                    }
12001                });
12002            }
12003        }
12004        const ctrlHeaderForDynamicJumbotron = new CtrlHeaderForDynamicJumbotron();
12005        ctrlHeaderForDynamicJumbotron.init();
12006    };
12007
12008    KEYENCE.ctrlDynamicJumbotronVideo = () => {
12009        class CtrlDynamicJumbotronVideo {
12010            constructor(){
12011                this.idNames = {
12012                    root: "js-controlDynamicJumbotronVideo",
12013                    target: "js-controlDynamicJumbotronVideo-target",
12014                    controllerTemplate: "js-controlDynamicJumbotronVideo-controllerTemplate",
12015                    triggerOuter: "js-controlDynamicJumbotronVideo-triggerOuter",
12016                    trigger: "js-controlDynamicJumbotronVideo-trigger",
12017                    triggerText: "js-controlDynamicJumbotronVideo-triggerText"
12018                };
12019
12020                this.root = doc.getElementById(this.idNames.root);
12021                this.target = win.videojs ? win.videojs.getPlayer(`${this.idNames.target}`) : null;
12022                this.trigger = null;
12023                this.triggerText = null;
12024                this.controllerTemplate = doc.getElementById(this.idNames.controllerTemplate);
12025                this.isPausedClass = "is-paused";
12026            }
12027            init() {
12028                if (!this.root || !this.target || !this.controllerTemplate) {
12029                    return;
12030                }
12031
12032                this.createController();
12033                this.controlVideo();
12034            }
12035            createController() {
12036                const controllerClone = this.controllerTemplate.content ? this.controllerTemplate.content.cloneNode(true): null;
12037
12038                if (!controllerClone) {
12039                    return;
12040                }
12041
12042                const triggerText = controllerClone.getElementById(this.idNames.triggerText);
12043
12044                if (triggerText) {
12045                    triggerText.textContent = triggerText.dataset.pauselabel;
12046                }
12047
12048                this.root.parentNode.insertBefore(controllerClone, this.root.nextElementSibling);
12049                this.trigger = doc.getElementById(this.idNames.trigger);
12050                this.triggerText = doc.getElementById(this.idNames.triggerText);
12051            }
12052            controlVideo() {
12053                this.target.ready(()=>{
12054                    this.addEndedEvent();
12055                    this.addClickEvent();
12056                });
12057            }
12058            addEndedEvent() {
12059                if (!this.trigger || !this.triggerText) {
12060                    return;
12061                }
12062
12063                this.target.on("ended", ()=>{
12064                    this.trigger.classList.add(this.isPausedClass);
12065                    this.triggerText.textContent = this.triggerText.dataset.playlabel;
12066                });
12067            }
12068            addClickEvent() {
12069                if (!this.trigger || !this.triggerText) {
12070                    return;
12071                }
12072
12073                this.trigger.addEventListener("click", ()=>{
12074                    if (this.trigger.classList.contains(this.isPausedClass)) {
12075                        this.trigger.classList.remove(this.isPausedClass);
12076                        this.target.play();
12077                        this.triggerText.textContent = this.triggerText.dataset.pauselabel;
12078                    } else {
12079                        this.trigger.classList.add(this.isPausedClass);
12080                        this.target.pause();
12081                        this.triggerText.textContent = this.triggerText.dataset.playlabel;
12082                    }
12083                });
12084            }
12085        }
12086
12087        const ctrlDynamicJumbotronVideo = new CtrlDynamicJumbotronVideo();
12088        ctrlDynamicJumbotronVideo.init();
12089    };
12090
12091    KEYENCE.setZaloChatBanner = () => {
12092        class ZaloChatBanner {
12093            constructor() {
12094                this.idNames = {
12095                    zaloChatBanner: 'js-zaloChatBanner'
12096                }
12097
12098                this.classNames = {
12099                    zaloChatBanner: 'prd-zaloChatBanner',
12100                    isHidden: 'is-hidden'
12101                }
12102
12103                this.config = {
12104                    imgSrc: win.kpi_zalo_chat_banner.imgSrc,
12105                    imgAlt: win.kpi_zalo_chat_banner.imgAlt
12106                }
12107
12108                this.observerConfig = {
12109                    subtree: true,
12110                    attributes: true,
12111                }
12112
12113                this.banner = null;
12114            }
12115
12116            init() {
12117                this.observeZaloChat();
12118            }
12119
12120            observeZaloChat() {
12121                const observer = new MutationObserver((mutationsList) => {
12122                    const zaloChat = mutationsList[0].target.classList.contains('zalo-chat-widget') ? mutationsList[0].target : null;
12123                    const iframe = zaloChat ? zaloChat.querySelector('iframe') : null;
12124
12125                    if (!zaloChat || !iframe) {
12126                        return;
12127                    }
12128
12129                    iframe.addEventListener('load', () => {
12130                        this.banner = doc.getElementById(this.idNames.zaloChatBanner);
12131
12132                        if (!this.banner) {
12133                            const banner = this.createBanner();
12134
12135                            zaloChat.appendChild(banner);
12136                            this.banner = doc.getElementById(this.idNames.zaloChatBanner);
12137                        }
12138                    });
12139
12140                    if (this.banner) {
12141                        if (iframe.style.minHeight) {
12142                            this.banner.classList.add(this.classNames.isHidden);
12143                        } else {
12144                            this.banner.classList.remove(this.classNames.isHidden);
12145                        }
12146                    }
12147                });
12148
12149                observer.observe(doc.body, this.observerConfig);
12150            }
12151
12152            createBanner() {
12153                const banner = doc.createElement('div');
12154                const img = doc.createElement('img');
12155
12156                banner.id = this.idNames.zaloChatBanner;
12157                banner.classList.add(this.classNames.zaloChatBanner);
12158                img.src = this.config.imgSrc;
12159                img.alt = this.config.imgAlt;
12160
12161                banner.appendChild(img);
12162
12163                return banner;
12164            }
12165        }
12166
12167        if (win.kpi_zalo_chat_banner && win.kpi_zalo_chat_banner.isShow) {
12168            const zaloChatBanner = new ZaloChatBanner();
12169
12170            zaloChatBanner.init();
12171        }
12172    };
12173
12174    KEYENCE.setSuggestHigherSeriesModal = () => {
12175        class OpenModal {
12176            constructor() {
12177                this.idName = {
12178                    trigger: 'js-suggestHigherSeriesModal-trigger'
12179                }
12180
12181                this.cookieConfig = {
12182                    cookieName: 'suggestHigherSeriesCookie',
12183                    session_limit: 1,
12184                    maxAge: 60 * 60 / 2
12185                }
12186
12187                this.trigger = doc.getElementById(this.idName.trigger);
12188            }
12189
12190            init() {
12191                if (win.suggestHigherSeriesModalComplete === true) {
12192                    return;
12193                }
12194
12195                this.controlSuggestHigherSeriesCookie();
12196                win.suggestHigherSeriesModalComplete = true;
12197            }
12198
12199            run() {
12200                this.trigger.click();
12201            }
12202
12203            controlSuggestHigherSeriesCookie() {
12204                if (!this.trigger) {
12205                    return;
12206                }
12207
12208                this.bySession();
12209            }
12210
12211            bySession() {
12212                const cookieName = this.cookieConfig.cookieName;
12213                const sameSessionDisplayCount = this.cookieConfig.session_limit;
12214                const cookieValue = Number(OpenModal.getCookieValue(cookieName));
12215
12216                if (cookieValue < sameSessionDisplayCount) {
12217                    OpenModal.setCookie(cookieName, cookieValue + 1, this.cookieConfig.maxAge);
12218                    this.run();
12219                }
12220            }
12221
12222            static setCookie(name, value, maxAge) {
12223                let path;
12224
12225                if (win.suz_LanguagePath) {
12226                    path = `${win.suz_LanguagePath}/`;
12227                } else {
12228                    path = '/';
12229                }
12230
12231                doc.cookie = `${name}=${value}; max-age=${maxAge}; path=${path}`;
12232            }
12233
12234            static getCookieValue(name) {
12235                const cookies = doc.cookie.split(';');
12236
12237                if (!name) {
12238                    return false;
12239                }
12240
12241                if (!cookies.some((item) => item.trim().startsWith(`${name}=`))) {
12242                    return false;
12243                }
12244
12245                const targetCookie = cookies.find((item) => item.trim().startsWith(`${name}=`));
12246
12247                return targetCookie.split('=')[1];
12248            }
12249
12250            static get hasCookiebot() {
12251                const cookieBotScript = doc.getElementById('Cookiebot');
12252                const consentCookie = OpenModal.getCookieValue('CookieConsent');
12253
12254                if (!cookieBotScript || (cookieBotScript && consentCookie)) {
12255                    return false;
12256                }
12257
12258                return true;
12259            }
12260
12261            static afterCookiebotClosed(callback) {
12262                const config = {
12263                    subtree: true,
12264                    attributeFilter: ['class']
12265                };
12266                let isExecuted = false;
12267                const targetId = 'CybotCookiebotDialog';
12268                const targetClass = 'CybotCookiebotDialogActive';
12269
12270                const observer = new MutationObserver((record) => {
12271                    if (record[0].target.id === targetId) {
12272                        if (!doc.getElementById(record[0].target.id).classList.contains(targetClass) && !isExecuted) {
12273                            if (callback) {
12274                                callback.init();
12275
12276                                isExecuted = true;
12277                                observer.disconnect();
12278                            }
12279                        }
12280                    }
12281                });
12282
12283                observer.observe(doc.body, config);
12284            }
12285        }
12286
12287        const openModal = new OpenModal();
12288
12289        if (OpenModal.hasCookiebot) {
12290            OpenModal.afterCookiebotClosed(openModal);
12291        } else {
12292            openModal.init();
12293        }
12294    }
12295
12296    KEYENCE.setCopyMovieUrl = function () {
12297        class CopyMovieUrl {
12298            constructor() {
12299                this.classNames = {
12300                    trigger: 'js-copyMovieUrl-trigger',
12301                    triggerBody: 'js-copyMovieUrl-triggerBody',
12302                    isCopied: 'is-copied'
12303                }
12304
12305                this.triggers = doc.querySelectorAll(`.${this.classNames.trigger}`);
12306                this.originalDomain = win.kpi_originalDomain ? win.kpi_originalDomain : '';
12307                this.pathName = win.copyMovieUrlPathName ? win.copyMovieUrlPathName : '';
12308
12309                this.url = this.originalDomain + this.pathName;
12310            }
12311
12312            init () {
12313                if (!this.triggers.length) {
12314                    return;
12315                }
12316
12317                this.set();
12318            }
12319
12320            set () {
12321                this.triggers.forEach((trigger) => {
12322                    const videoID = trigger.dataset.videoId ? trigger.dataset.videoId : '';
12323                    const triggerBody = trigger.querySelector(`.${this.classNames.triggerBody}`);
12324
12325                    if (videoID) {
12326                        const searchParams = new URLSearchParams();
12327                        searchParams.set("id", videoID);
12328                        const copyUrl = `${this.url}?${searchParams.toString()}`;
12329
12330                        trigger.dataset.copyMovieUrl = copyUrl;
12331                    }
12332
12333                    if (triggerBody) {
12334                        triggerBody.dataset.copyLabel = triggerBody.textContent;
12335                    }
12336
12337                    trigger.addEventListener('click', this.copyUrl.bind(this));
12338                });
12339            }
12340
12341            copyUrl(e) {
12342                const trigger = e.currentTarget;
12343                const copyUrl = trigger.dataset.copyMovieUrl;
12344
12345                if (copyUrl) {
12346                    navigator.clipboard.writeText(copyUrl).then(
12347                        () => {
12348                            this.changeLabel(trigger);
12349                        }
12350                    );
12351                }
12352            }
12353
12354            changeLabel(trigger) {
12355                const triggerBody = trigger.querySelector(`.${this.classNames.triggerBody}`);
12356
12357                if (!triggerBody) {
12358                    return;
12359                }
12360
12361                trigger.classList.add(this.classNames.isCopied);
12362                triggerBody.textContent = triggerBody.dataset.copiedLabel;
12363
12364                setTimeout(() => {
12365                    trigger.classList.remove(this.classNames.isCopied);
12366                    triggerBody.textContent = triggerBody.dataset.copyLabel;
12367                }, 1000)
12368            }
12369        }
12370
12371        const copyMovieUrl = new CopyMovieUrl();
12372        copyMovieUrl.init();
12373    };
12374
12375    KEYENCE.resetAgreementCheck = function (event) {
12376        class ResetAgreementCheck {
12377            constructor() {
12378                this.classNames = {
12379                    target: 'js-changeButtonStateByAgreement-checkbox',
12380                };
12381                this.targets = doc.querySelectorAll(`.${this.classNames.target}`);
12382            }
12383
12384            init (event) {
12385                if (!this.targets.length) {
12386                    return;
12387                }
12388
12389                this.run(event);
12390            }
12391
12392            run (event) {
12393                if (event.persisted) {
12394                    this.uncheckAll();
12395
12396                    return;
12397                }
12398
12399                const entries = performance.getEntriesByType('navigation');
12400
12401                if (!entries.length) {
12402                    return;
12403                }
12404
12405                entries.forEach((entry) => {
12406                    if (entry.type === 'back_forward') {
12407                        this.uncheckAll();
12408                    }
12409                });
12410            }
12411
12412            uncheckAll () {
12413                this.targets.forEach((target) => {
12414                    target.checked = false;
12415                });
12416            }
12417        }
12418
12419        const resetAgreementCheck = new ResetAgreementCheck();
12420        resetAgreementCheck.init(event);
12421    };
12422
12423    KEYENCE.Form = {};
12424
12425    KEYENCE.Form.TogglePassword = (function () {
12426        var classNames = {
12427            trigger: 'js-togglePassword',
12428            text: 'js-togglePassword-text'
12429        };
12430
12431        var TogglePassword = {};
12432
12433        TogglePassword = {
12434            classNames: classNames
12435        };
12436
12437        TogglePassword.init = function () {
12438            var $button = $('.' + classNames.trigger);
12439
12440            if ($button.length) {
12441                $(doc).on('click', '.' + classNames.trigger, this.onClickButton);
12442            }
12443        };
12444
12445        TogglePassword.onClickButton = function () {
12446            var targetId = this.dataset.togglePasswordTarget;
12447            var textShow = this.dataset.togglePasswordTextShow;
12448            var textHide = this.dataset.togglePasswordTextHide;
12449            var pwdField;
12450            var textElement;
12451
12452            if (typeof targetId !== 'string' || typeof textShow !== 'string' || typeof textHide !== 'string') {
12453                return;
12454            }
12455
12456            pwdField = doc.getElementById(targetId);
12457            textElement = this.querySelector('.' + classNames.text);
12458
12459            if (!pwdField || !textElement) {
12460                return;
12461            }
12462
12463            if (pwdField.type === 'password') {
12464                pwdField.type = 'text';
12465                textElement.textContent = textHide;
12466            } else {
12467                pwdField.type = 'password';
12468                textElement.textContent = textShow;
12469            }
12470        };
12471
12472        return TogglePassword;
12473    }());
12474
12475    KEYENCE.Form.SelectCountryNumber = (function () {
12476        var classNames = {
12477            trigger: 'js-selectCountryNumber',
12478            target: 'js-selectCountryNumber-target',
12479        };
12480
12481        var SelectCountryNumber = {
12482            classNames: classNames,
12483            triggers: null
12484        };
12485
12486        SelectCountryNumber.init = function () {
12487            var html = doc.querySelector('html');
12488
12489            this.triggers = doc.querySelectorAll('.' + classNames.trigger);
12490
12491            if (!this.triggers.length || html.classList.contains('gtie9')) {
12492                return;
12493            }
12494
12495            this.attachClickSelectEvent();
12496        };
12497
12498        SelectCountryNumber.changeOverrideText = function (trigger) {
12499            var select = trigger.querySelector('.' + classNames.target);
12500            var selectedOption;
12501
12502            if (!select) {
12503                return;
12504            }
12505
12506            selectedOption = select.options[select.selectedIndex];
12507
12508            if (selectedOption && typeof selectedOption.textContent === 'string') {
12509                trigger.dataset.content = selectedOption.textContent;
12510            }
12511        };
12512
12513        SelectCountryNumber.attachClickSelectEvent = function () {
12514            var self = this;
12515
12516            Array.prototype.forEach.call(this.triggers, function (trigger) {
12517                self.changeOverrideText(trigger);
12518
12519                trigger.addEventListener('change', function () {
12520                    self.changeOverrideText(trigger);
12521                });
12522            });
12523        };
12524
12525        return SelectCountryNumber;
12526    }());
12527
12528    KEYENCE.Form.FormFilter = (function () {
12529        var FormFilter = {};
12530
12531        FormFilter.init = function () {
12532            FormFilter.General.init();
12533            FormFilter.SignIn.init();
12534            FormFilter.SendEmail.init();
12535        };
12536
12537        FormFilter.General = (function () {
12538            var idNames = {
12539                mobileNumberTrigger: 'js-formFilterGeneral-mobileNumber',
12540                emailTtrigger: 'js-formFilterGeneral-email',
12541                wechatTtrigger: 'js-formFilterGeneral-wechat'
12542            };
12543
12544            var classNames = {
12545                root: 'js-formFilterGeneral',
12546                trigger: 'js-formFilterGeneral-trigger',
12547                isFilterMobilenumber: 'is-filter-mobileNumber',
12548                isFilterEmail: 'is-filter-email',
12549                isFilterWechat: 'is-filter-wechat',
12550                itemMobileNumber: 'js-formFilterGeneralItem-mobileNumber',
12551                itemEmail: 'js-formFilterGeneralItem-email',
12552                itemFilterEmal: 'js-formFilter-registEmail',
12553                runFilterEmail: 'js-runFilter-email',
12554                runFilterMobileNumber: 'js-runFilter-mobileNumber',
12555                isMobileLoginWithPasswordActive: 'is-mobileLoginWithPassword-active',
12556            };
12557
12558            var urls = {
12559                updateFormElement: '/ajax/registrationAjax/getFormListForMobileNumber/',
12560            };
12561
12562            var General = {
12563                idNames: idNames,
12564                classNames: classNames,
12565                rootElement: null,
12566                triggerElements: null,
12567                disabledIds: [],
12568                urls: urls,
12569                reloginActionFormName: 'user_reloginActionForm',
12570                mobileInterLockIdList: [],
12571                emailInterLockIdList: [],
12572            };
12573
12574            var generalMessageEvent = {
12575                handleEvent: null,
12576                target: null,
12577            };
12578
12579            General.FORM_TYPE = {
12580                EMAIL: 'email',
12581                MOBILE_NUMBER: 'mobileNumber',
12582                WECHAT: 'wechat',
12583                DEFAULT: 'default',
12584            };
12585
12586            General.init = function () {
12587                this.rootElement = doc.querySelector('.' + classNames.root);
12588                this.triggerElements = doc.querySelectorAll('.' + classNames.trigger);
12589                this.mobileLoginWithPasswordActiveTrigger = doc.querySelector('.' + classNames.isMobileLoginWithPasswordActive);
12590
12591                if (!this.rootElement || !this.triggerElements.length) {
12592                    return;
12593                }
12594
12595                this.getDisalbedIds();
12596
12597                if (this.getFormType() === this.FORM_TYPE.MOBILE_NUMBER) {
12598                    FormFilter.General.disableFields('email');
12599                } else if (this.getFormType() === this.FORM_TYPE.WECHAT) {
12600                    FormFilter.General.disableFields('mobileNumber');
12601                    FormFilter.General.disableFields('email');
12602                } else {
12603                    FormFilter.General.disableFields('mobileNumber');
12604                }
12605
12606                if (doc.querySelector('form[name="' + this.reloginActionFormName + '"]')
12607                    && !this.mobileLoginWithPasswordActiveTrigger
12608                    && this.getFormType() === this.FORM_TYPE.MOBILE_NUMBER) {
12609                    $('#' + win.MultiStepForm.SignIn.idNames.loginPassword).prop('disabled', true);
12610                }
12611
12612                this.setInterlockItems();
12613                this.attachClickFilterEvent();
12614                this.attachClickShowEmailFormButton();
12615                this.onMessageAction();
12616            };
12617
12618            General.getFormType = function () {
12619                var formType = this.FORM_TYPE.DEFAULT;
12620
12621                if (!this.rootElement) {
12622                    return this.FORM_TYPE.DEFAULT;
12623                }
12624
12625                if (this.rootElement.classList.contains(classNames.isFilterEmail)) {
12626                    formType = this.FORM_TYPE.EMAIL;
12627                } else if (this.rootElement.classList.contains(classNames.isFilterMobilenumber)) {
12628                    formType = this.FORM_TYPE.MOBILE_NUMBER;
12629                } else if (this.rootElement.classList.contains(classNames.isFilterWechat)) {
12630                    formType = this.FORM_TYPE.WECHAT;
12631                }
12632
12633                return formType;
12634            };
12635
12636            General.setInterlockItems = function () {
12637                var InputInterlock = KEYENCE.Form.InputInterlock;
12638                var interLockItems = null;
12639
12640                if (InputInterlock) {
12641                    interLockItems = document.querySelectorAll('.' + InputInterlock.classNames.trigger);
12642                }
12643
12644                if (!interLockItems.length) {
12645                    return;
12646                }
12647
12648                interLockItems.forEach(function (item) {
12649                    if (item.id === 'loginPassword') {
12650                        General.mobileInterLockIdList = InputInterlock.getTargetIdListFromTrigger(item);
12651                    } else {
12652                        General.emailInterLockIdList = InputInterlock.getTargetIdListFromTrigger(item);
12653                    }
12654                });
12655            };
12656
12657            General.attachClickFilterEvent = function () {
12658                var self = this;
12659
12660                Array.prototype.forEach.call(this.triggerElements, function (trigger) {
12661                    trigger.addEventListener('click', self.onClickFilter.bind(this));
12662                });
12663            };
12664
12665            General.getDisalbedIds = function () {
12666                var items = document.querySelectorAll('.' + classNames.itemMobileNumber + ', .' + classNames.itemEmail);
12667
12668                Array.prototype.forEach.call(items, function (item) {
12669                    var disabledFormElements = item.querySelectorAll('input:disabled, select:disabled, textarea:disabled');
12670
12671                    Array.prototype.forEach.call(disabledFormElements, function (disabledFormElement) {
12672                        General.disabledIds.push(disabledFormElement.id);
12673                    });
12674                });
12675            };
12676
12677            General.getFilterFields = function (type) {
12678                var fields;
12679
12680                switch (type) {
12681                case 'mobileNumber':
12682                    fields = document.querySelectorAll('.' + classNames.itemMobileNumber);
12683                    break;
12684                case 'email':
12685                default:
12686                    fields = document.querySelectorAll('.' + classNames.itemEmail);
12687                    break;
12688                }
12689
12690                return fields;
12691            };
12692
12693            General.disableFields = function (type) {
12694                var fields = this.getFilterFields(type);
12695
12696                if (!fields.length) {
12697                    return;
12698                }
12699
12700                Array.prototype.forEach.call(fields, function (item) {
12701                    var formElements = item.querySelectorAll('input, select, textarea');
12702
12703                    Array.prototype.forEach.call(formElements, function (formElement) {
12704                        formElement.disabled = true;
12705                    });
12706                });
12707
12708                if (!this.mobileLoginWithPasswordActiveTrigger
12709                    && (type === 'email' || type === 'asu')) {
12710                    $('#' + win.MultiStepForm.SignIn.idNames.registerLoginPassword).prop('disabled', true);
12711                    $('#' + win.MultiStepForm.SignIn.idNames.loginPassword).prop('disabled', true);
12712                }
12713            };
12714
12715            General.enableFields = function (type, isAll) {
12716                var items = this.getFilterFields(type);
12717
12718                Array.prototype.forEach.call(items, function (item) {
12719                    var formElements = item.querySelectorAll('input, select, textarea');
12720
12721                    Array.prototype.forEach.call(formElements, function (formElement) {
12722
12723                        if (isAll) {
12724                            formElement.disabled = false;
12725                        } else if (General.disabledIds.indexOf(formElement.id) === -1) {
12726                            formElement.disabled = false;
12727                        }
12728                    });
12729                });
12730
12731                if (!this.mobileLoginWithPasswordActiveTrigger
12732                    && (type === 'mobile' || type === 'asu')) {
12733                    $('#' + win.MultiStepForm.SignIn.idNames.registerLoginPassword).prop('disabled', true);
12734                    $('#' + win.MultiStepForm.SignIn.idNames.loginPassword).prop('disabled', true);
12735                }
12736            };
12737
12738            General.onClickFilter = function (event) {
12739                var self = General;
12740                var currentTarget = event.currentTarget;
12741                var $regArea = null;
12742                var isWechatPreviousCurrent = self.rootElement.classList.contains(classNames.isFilterWechat);
12743
12744                generalMessageEvent.target = currentTarget;
12745
12746                Array.prototype.forEach.call(self.triggerElements, function (trigger) {
12747                    trigger.removeAttribute('aria-current');
12748                });
12749
12750                currentTarget.setAttribute('aria-current', 'page');
12751
12752                if (currentTarget.id === self.idNames.wechatTtrigger) {
12753                    $('.' + KEYENCE.Form.InputInterlock.classNames.trigger + ':visible').each(function () {
12754                        this.value = '';
12755                    });
12756                } else if (isWechatPreviousCurrent) {
12757                    if (currentTarget.id === self.idNames.mobileNumberTrigger) {
12758                        self.changeInterLockItemStatus(self.mobileInterLockIdList);
12759                    } else {
12760                        self.changeInterLockItemStatus(self.emailInterLockIdList);
12761                    }
12762                } else {
12763                    $('.' + KEYENCE.Form.InputInterlock.classNames.trigger + ':visible').each(function () {
12764                        var targetIdList = KEYENCE.Form.InputInterlock.getTargetIdListFromTrigger(this);
12765
12766                        this.value = '';
12767
12768                        self.changeInterLockItemStatus(targetIdList);
12769                    });
12770                }
12771
12772                if (!win.AnalyticsViews || !win.MultiStepForm.PreForm.checkMessageTargetForm()) {
12773                    $regArea = $('#suz_regArea');
12774
12775                    if (currentTarget.id === idNames.mobileNumberTrigger) {
12776                        self.rootElement.classList.remove(classNames.isFilterEmail);
12777                        self.rootElement.classList.remove(classNames.isFilterWechat);
12778                        self.rootElement.classList.add(classNames.isFilterMobilenumber);
12779
12780                        if ($regArea.length) {
12781                            self.updateFormElement(true).done(function (data) {
12782                                $regArea.html(data);
12783                                KeyenceForm.SelectCountryNumber.init();
12784                                self.updateDisabledId();
12785                                self.enableFields('mobileNumber');
12786                                self.disableFields('email');
12787                            }).fail(function () {
12788                                self.updateDisabledId();
12789                                self.enableFields('mobileNumber');
12790                                self.disableFields('email');
12791                            });
12792                        } else {
12793                            self.enableFields('mobileNumber');
12794                            self.disableFields('email');
12795                        }
12796
12797                        win.KeyenceForm.ModalPasswordError.resetErrorCount();
12798                    } else if (currentTarget.id === idNames.wechatTtrigger) {
12799                        self.rootElement.classList.remove(classNames.isFilterMobilenumber);
12800                        self.rootElement.classList.remove(classNames.isFilterEmail);
12801                        self.rootElement.classList.add(classNames.isFilterWechat);
12802
12803                        self.disableFields('email');
12804                        self.disableFields('mobileNumber');
12805
12806                        KEYENCE.Form.WechatLoginFlow.run();
12807                    } else {
12808                        self.rootElement.classList.remove(classNames.isFilterMobilenumber);
12809                        self.rootElement.classList.remove(classNames.isFilterWechat);
12810                        self.rootElement.classList.add(classNames.isFilterEmail);
12811                        KEYENCE.Form.WechatLoginFlow.resetLoginFlow();
12812
12813                        if ($regArea.length) {
12814                            self.updateFormElement(false).done(function (data) {
12815                                $regArea.html(data);
12816                                KeyenceForm.SelectCountryNumber.init();
12817                                self.updateDisabledId();
12818                                self.enableFields('email');
12819                                self.disableFields('mobileNumber');
12820                            }).fail(function () {
12821                                self.updateDisabledId();
12822                                self.enableFields('email');
12823                                self.disableFields('mobileNumber');
12824                            });
12825                        } else {
12826                            self.enableFields('email');
12827                            self.disableFields('mobileNumber');
12828                        }
12829                    }
12830                }
12831            };
12832
12833            General.changeInterLockItemStatus = function (idList) {
12834                if (!Array.isArray(idList) || !idList.length) {
12835                    return;
12836                }
12837
12838                idList.forEach(function (id) {
12839                    var target = doc.getElementById(id);
12840
12841                    if (target && target.tagName.toLowerCase() === 'input') {
12842                        target.value = '';
12843                    }
12844
12845                    KEYENCE.Form.InputInterlock.changeRelatedInputStatus(target, 'enable');
12846                });
12847            }
12848
12849            General.attachClickShowEmailFormButton = function () {
12850                var filterEmailButton = doc.querySelector('#' + idNames.emailTtrigger);
12851
12852                $(doc).on('click', '.' + classNames.runFilterEmail, function () {
12853                    if (filterEmailButton) {
12854                        filterEmailButton.click();
12855                    }
12856                });
12857            };
12858
12859            General.onMessageAction = function () {
12860                generalMessageEvent.handleEvent = General.changeGeneralFilterClass;
12861
12862                win.addEventListener('message', generalMessageEvent, false);
12863            };
12864
12865            General.changeGeneralFilterClass = function (e) {
12866                var $regArea = $('#suz_regArea');
12867                var WechatLoginFlow = KEYENCE.Form.WechatLoginFlow;
12868
12869                if (e.data === AnalyticsViews.Utility.messageNames.generalForm) {
12870                    if (this.target.id === idNames.mobileNumberTrigger) {
12871                        General.rootElement.classList.remove(classNames.isFilterEmail);
12872                        General.rootElement.classList.remove(classNames.isFilterWechat);
12873                        General.rootElement.classList.add(classNames.isFilterMobilenumber);
12874
12875                        if ($regArea.length) {
12876                            General.updateFormElement(true).done(function (data) {
12877                                $regArea.html(data);
12878                                KeyenceForm.SelectCountryNumber.init();
12879                                General.updateDisabledId();
12880                                General.enableFields('mobileNumber');
12881                                General.disableFields('email');
12882                            }).fail(function () {
12883                                General.updateDisabledId();
12884                                General.enableFields('mobileNumber');
12885                                General.disableFields('email');
12886                            });
12887                        } else {
12888                            General.enableFields('mobileNumber');
12889                            General.disableFields('email');
12890                        }
12891
12892                        win.KeyenceForm.ModalPasswordError.resetErrorCount();
12893                    } else if (this.target.id === idNames.wechatTtrigger) {
12894                        General.rootElement.classList.remove(classNames.isFilterMobilenumber);
12895                        General.rootElement.classList.remove(classNames.isFilterEmail);
12896                        General.rootElement.classList.add(classNames.isFilterWechat);
12897
12898                        General.disableFields('email');
12899                        General.disableFields('mobileNumber');
12900
12901                        WechatLoginFlow.run();
12902                    } else {
12903                        General.rootElement.classList.remove(classNames.isFilterMobilenumber);
12904                        General.rootElement.classList.remove(classNames.isFilterWechat);
12905                        General.rootElement.classList.add(classNames.isFilterEmail);
12906                        WechatLoginFlow.resetLoginFlow();
12907
12908                        if ($regArea.length) {
12909                            General.updateFormElement(false).done(function (data) {
12910                                $regArea.html(data);
12911                                KeyenceForm.SelectCountryNumber.init();
12912                                General.updateDisabledId();
12913                                General.enableFields('email');
12914                                General.disableFields('mobileNumber');
12915                            }).fail(function () {
12916                                General.updateDisabledId();
12917                                General.enableFields('email');
12918                                General.disableFields('mobileNumber');
12919                            });
12920                        } else {
12921                            General.enableFields('email');
12922                            General.disableFields('mobileNumber');
12923                        }
12924                    }
12925
12926                    if (this.target.id === idNames.mobileNumberTrigger &&
12927                        WechatLoginFlow.STATE_CODE.current === WechatLoginFlow.STATE_CODE.R10
12928                    ) {
12929                        win.MultiStepForm.changeCurrentScreenName(win.MultiStepForm.screenNames.checkReg
12929istered);
12930                    } else if (this.target.id === idNames.mobileNumberTrigger &&
12931                        WechatLoginFlow.STATE_CODE.current !== WechatLoginFlow.STATE_CODE.R10
12932                    ) {
12933                        return;
12934                    } else {
12935                        win.MultiStepForm.changeCurrentScreenName(win.MultiStepForm.screenNames.initial);
12936                    }
12937                }
12938            };
12939
12940            General.checkRootElement = function () {
12941                if (!this.rootElement) {
12942                    return false;
12943                }
12944
12945                return true;
12946            };
12947
12948            General.updateFormElement = function (isFilterMobileNumber) {
12949                var deferred = new $.Deferred();
12950                var options;
12951                var url;
12952
12953                url = win.suz_getCurrentDomain() + this.urls.updateFormElement;
12954
12955                options = {
12956                    url: url,
12957                    type: 'POST',
12958                    data: {
12959                        mobileNumberTabFlag: isFilterMobileNumber
12960                    },
12961                    dataType: 'html',
12962                    scriptCharset: 'UTF-8',
12963                };
12964
12965                $.ajax(options).done(function (data) {
12966                    deferred.resolve(data);
12967                    $('#js-formStep-totalNum').text($('#hidMaxStepCount').val());
12968                }).fail(function (jqXHR, textStatus, errorThrown) {
12969                    deferred.reject(jqXHR, textStatus, errorThrown);
12970                });
12971
12972                return deferred.promise();
12973            };
12974
12975            General.updateDisabledId = function () {
12976                var regArea = document.getElementById('suz_regArea');
12977                var items = null;
12978
12979                if (!regArea) {
12980                    return;
12981                }
12982
12983                items = regArea.querySelectorAll('.' + classNames.itemMobileNumber + ', .' + classNames.itemEmail);
12984
12985                Array.prototype.forEach.call(items, function (item) {
12986                    var disabledFormElements = item.querySelectorAll('input:disabled, select:disabled, textarea:disabled');
12987
12988                    Array.prototype.forEach.call(disabledFormElements, function (disabledFormElement) {
12989                        if (!General.disabledIds.includes(disabledFormElement.id)) {
12990                            General.disabledIds.push(disabledFormElement.id);
12991                        }
12992                    });
12993                });
12994            };
12995
12996            return General;
12997        }());
12998
12999        FormFilter.SignIn = (function () {
13000            var idNames = {
13001                passwordTrigger: 'js-formFilterLogin-password',
13002                smscode: 'js-formFilterLogin-smscode',
13003                loginCountryNumber: 'loginCountryNumber',
13004            };
13005
13006            var classNames = {
13007                root: 'js-formFilterLogin',
13008                trigger: 'js-formFilterLogin-trigger',
13009                isFilterPassword: 'is-filter-password',
13010                isFilterSmscode: 'is-filter-smscode',
13011                isFilterPasswordItem: 'js-formFilter-loginPassword',
13012                isFilterSMSCodeItem: 'js-formFilter-loginSMSCode',
13013                isFilterEmailItem: 'js-formFilter-loginEmail',
13014                itemPassword: 'js-formFilterLoginItem-password',
13015                itemSMSCode: 'js-formFilterLoginItem-smscode',
13016                isFilterAutoSignUp: 'is-filter-autoSignUp',
13017                itemAutoSignUp: 'js-formFilterLoginItem-autoSignUp',
13018            };
13019
13020            var SignIn = {
13021                idNames: idNames,
13022                classNames: classNames,
13023                rootElement: null,
13024                triggerElements: null,
13025                disabledIds: [],
13026                $passwordTrigger: $('#' + idNames.passwordTrigger),
13027                $loginCountryNumber: $('#' + idNames.loginCountryNumber),
13028            };
13029
13030            var asuMessageEvent = {
13031                handleEvent: null,
13032            };
13033
13034            SignIn.FORM_TYPE = {
13035                EMAIL: 'email',
13036                PASSWORD: 'password',
13037                SMS_CODE: 'smscode',
13038                DEFAULT: 'default',
13039                ASU: 'asu',
13040            };
13041
13042            SignIn.init = function () {
13043                this.rootElement = doc.querySelector('.' + classNames.root);
13044                this.triggerElements = doc.querySelectorAll('.' + classNames.trigger);
13045
13046                if (!this.rootElement || !this.triggerElements.length) {
13047                    return;
13048                }
13049
13050                this.getDisalbedIds();
13051
13052                if (this.getFormType() === this.FORM_TYPE.PASSWORD) {
13053                    FormFilter.SignIn.disableFields('smscode');
13054                    FormFilter.SignIn.disableFields('asu');
13055                    FormFilter.SignIn.enableFields('password', true);
13056                } else if (this.getFormType() === this.FORM_TYPE.SMS_CODE) {
13057                    FormFilter.SignIn.disableFields('password');
13058                    FormFilter.SignIn.disableFields('asu');
13059                    FormFilter.SignIn.enableFields('smscode', true);
13060                } else if (this.getFormType() === this.FORM_TYPE.ASU) {
13061                    FormFilter.SignIn.disableFields('password');
13062                    FormFilter.SignIn.disableFields('smscode');
13063                    FormFilter.SignIn.enableFields('asu', true);
13064                }
13065
13066                FormFilter.SignIn.$loginCountryNumber.prop('disabled', true);
13067                win.MultiStepForm.SignIn.$loginMobileNumber.prop('disabled', true);
13068
13069                this.attachClickFilterEvent();
13070                // this.onMessageAction();
13071            };
13072
13073            SignIn.attachClickFilterEvent = function () {
13074                var self = this;
13075
13076                Array.prototype.forEach.call(this.triggerElements, function (trigger) {
13077                    trigger.addEventListener('click', self.onClickFilter.b
13077ind(this));
13078                });
13079            };
13080
13081            SignIn.onClickFilter = function (event) {
13082                Array.prototype.forEach.call(SignIn.triggerElements, function (trigger) {
13083                    trigger.removeAttribute('aria-current');
13084                });
13085
13086                event.currentTarget.setAttribute('aria-current', 'page');
13087
13088                if (event.currentTarget.id === idNames.smscode) {
13089                    SignIn.rootElement.classList.remove(classNames.isFilterPassword);
13090                    SignIn.rootElement.classList.remove(classNames.isFilterAutoSignUp);
13091                    SignIn.rootElement.classList.add(classNames.isFilterSmscode);
13092                    $('#' + win.MultiStepForm.SignIn.idNames.loginPassword).prop('disabled', true);
13093                    $('#' + win.MultiStepForm.SignIn.idNames.loginVerificationCode).prop('disabled', false);
13094                    $('#' + win.MultiStepForm.SignIn.idNames.registerLoginPassword).prop('disabled', true);
13095
13096                    win.MultiStepForm.changeCurrentScreenName(win.MultiStepForm.screenNames.loginSMSCode);
13097                } else {
13098                    SignIn.rootElement.classList.remove(classNames.isFilterSmscode);
13099                    SignIn.rootElement.classList.remove(classNames.isFilterAutoSignUp);
13100                    SignIn.rootElement.classList.add(classNames.isFilterPassword);
13101                    $('#' + win.MultiStepForm.SignIn.idNames.loginPassword).prop('disabled', false);
13102                    $('#' + win.MultiStepForm.SignIn.idNames.loginVerificationCode).prop('disabled', true);
13103                    $('#' + win.MultiStepForm.SignIn.idNames.registerLoginPassword).prop('disabled', true);
13104
13105                    win.MultiStepForm.changeCurrentScreenName(win.MultiStepForm.screenNames.loginPassword);
13106                }
13107            };
13108
13109            SignIn.onMessageAction = function () {
13110                asuMessageEvent.handleEvent = SignIn.runValidation;
13111
13112                win.addEventListener('message', asuMessageEvent, false);
13113            };
13114
13115            SignIn.changeAutoSignUp = function (isAutoSignup, formType) {
13116                if (!isAutoSignup) {
13117                    return;
13118                }
13119
13120                SignIn.rootElement.classList.add(classNames.isFilterAutoSignUp);
13121                SignIn.rootElement.classList.remove(classNames.isFilterPassword);
13122                SignIn.rootElement.classList.remove(classNames.isFilterSmscode);
13123                $('#' + win.MultiStepForm.SignIn.idNames.loginPassword).prop('disabled', true);
13124
13125                if (formType === FormFilter.General.FORM_TYPE.MOBILE_NUMBER) {
13126                    $('#' + win.MultiStepForm.SignIn.idNames.loginVerificationCode).prop('disabled', false);
13127                }
13128
13129                if (formType === FormFilter.General.FORM_TYPE.MOBILE_NUMBER
13130                    && this.mobileLoginWithPasswordActiveTrigger) {
13131                    $('#' + win.MultiStepForm.SignIn.idNames.registerLoginPassword).prop('disabled', false);
13132                }
13133            };
13134
13135            SignIn.clickLoginPasswordTrigger = function () {
13136                if (SignIn.rootElement.classList.contains(classNames.isFilterAutoSignUp) && this.$passwordTrigger.length) {
13137                    this.$passwordTrigger.trigger('click');
13138                }
13139            };
13140
13141            SignIn.getFormType = function () {
13142                var formType = this.FORM_TYPE.DEFAULT;
13143
13144                if (!this.rootElement) {
13145                    return this.FORM_TYPE.DEFAULT;
13146                }
13147
13148                if (this.rootElement.classList.contains(classNames.isFilterPassword)) {
13149                    formType = this.FORM_TYPE.PASSWORD;
13150                } else if (this.rootElement.classList.contains(classNames.isFilterSmscode)) {
13151                    formType = this.FORM_TYPE.SMS_CODE;
13152                } else if (this.rootElement.classList.contains(classNames.isFilterAutoSignUp)) {
13153                    formType = this.FORM_TYPE.ASU;
13154                }
13155
13156                return formType;
13157            };
13158
13159            SignIn.getDisalbedIds = function () {
13160                var items = document.querySelectorAll('.' + classNames.itemPassword + ', .' + classNames.itemSMSCode);
13161
13162                Array.prototype.forEach.call(items, function (item) {
13163                    var disabledFormElements = item.querySelectorAll('input:disabled, select:disabled, textarea:disabled');
13164
13165                    Array.prototype.forEach.call(disabledFormElements, function (disabledFormElement) {
13166                        SignIn.disabledIds.push(disabledFormElement.id);
13167                    });
13168                });
13169            };
13170
13171            SignIn.getFilterFields = function (type) {
13172                var fields = [];
13173
13174                switch (type) {
13175                case 'password':
13176                    fields = document.querySelectorAll('.' + classNames.itemPassword);
13177                    break;
13178                case 'smscode':
13179                    fields = document.querySelectorAll('.' + classNames.itemSMSCode);
13180                    break;
13181                case 'asu':
13182                    fields = document.querySelectorAll('.' + classNames.itemAutoSignUp
13182);
13183                    break;
13184                default:
13185                    break;
13186                }
13187
13188                return fields;
13189            };
13190
13191            SignIn.disableFields = function (type) {
13192                var fields = this.getFilterFields(type);
13193
13194                if (!fields.length) {
13195                    return;
13196                }
13197
13198                Array.prototype.forEach.call(fields, function (item) {
13199                    var formElements = item.querySelectorAll('input, select, textarea');
13200
13201                    Array.prototype.forEach.call(formElements, function (formElement) {
13202                        formElement.disabled = true;
13203                    });
13204                });
13205            };
13206
13207            SignIn.enableFields = function (type, isAll) {
13208                var fields = this.getFilterFields(type);
13209
13210                Array.prototype.forEach.call(fields, function (field) {
13211                    var formElements = field.querySelectorAll('input, select, textarea');
13212
13213                    Array.prototype.forEach.call(formElements, function (formElement) {
13214                        if (isAll) {
13215                            if (formElement.id === win.KeyenceForm.ModalPasswordError.idNames.passwordErrorCountUpField) {
13216                                return;
13217                            }
13218
13219                            formElement.disabled = false;
13220                        } else if (SignIn.disabledIds.indexOf(formElement.id) === -1) {
13221                            formElement.disabled = false;
13222                        }
13223                    });
13224                });
13225            };
13226
13227            SignIn.runValidation  = function (e) {
13228                var BlankFieldValidator = win.KeyenceForm.BlankFieldValidator;
13229                var preForm = win.MultiStepForm.PreForm;
13230                var formInfo = preForm.getFormInfo();
13231                var formType = KEYENCE.Form.FormFilter.General.getFormType();
13232                var targetInput = doc.querySelector('input[name="' + formInfo.name + '"]');
13233
13234                if (e.data === AnalyticsViews.Utility.messageNames.nextForm) {
13235                    if (targetInput) {
13236                        if (targetInput.classList.contains('js-check-blank') && BlankFieldValidator.isBlank(targetInput)) {
13237                            return;
13238                        }
13239                    }
13240
13241                    if (formType === KEYENCE.Form.FormFilter.General.FORM_TYPE.MOBILE_NUMBER) {
13242                        if (preForm.$formCheckMobileNumber.hasClass('js-checkMobileNumberFormat')) {
13243                            KeyenceForm.MobileNumberValidator.checkFormat(formInfo.countryCode, formInfo.mobileNumber ).done(function (status) {
13244                                if (!status.message) {
13245                                    win.MultiStepForm.getMobileNumberStatus(formInfo.countryCode, formInfo.mobileNumber).done(function (status) {
13246                                        if (!status.message) {
13247                                            SignIn.changeAsuFilterClass(status.isRegistered, formInfo, preForm.isAutoSignupUser(status));
13248                                        }
13249                                    });
13250                                }
13251                            });
13252                        } else {
13253                            win.MultiStepForm.getMobileNumberStatus(formInfo.countryCode, formInfo.mobileNumber).done(function (status) {
13254                                if (!status.message) {
13255                                    SignIn.changeAsuFilterClass(status.isRegistered, formInfo, PreForm.isAutoSignupUser(status));
13256                                }
13257                            });
13258                        }
13259                    }
13260                }
13261            };
13262
13263            SignIn.changeAsuFilterClass = function (isRegistered, formInfo, isAutoSignup) {
13264                if (typeof isRegistered !== 'boolean' || !formInfo) {
13265                    return;
13266                }
13267
13268                if (isAutoSignup) {
13269                    SignIn.rootElement.classList.add(classNames.isFilterAutoSignUp
13269);
13270                    SignIn.rootElement.classList.remove(classNames.isFilterPassword);
13271                    SignIn.rootElement.classList.remove(classNames.isFilterSmscode);
13272                    $('#' + win.MultiStepForm.SignIn.idNames.loginPassword).prop('disabled', true);
13273                    $('#' + win.MultiStepForm.SignIn.idNames.loginVerificationCode).prop('disabled', false);
13274
13275                    if (this.mobileLoginWithPasswordActiveTrigger) {
13276                        $('#' + win.MultiStepForm.SignIn.idNames.registerLoginPassword).prop('disabled', false);
13277                    }
13278                }
13279            };
13280
13281            return SignIn;
13282        }());
13283
13284        FormFilter.SendEmail = (function () {
13285            var classNames = {
13286                root: 'js-formFilterSendEmail',
13287                isFilterSignin: 'is-filter-signin',
13288                isFilterAutoSignup: 'is-filter-autoSignUp',
13289                isFilterRelogin: 'is-filter-relogin',
13290            };
13291
13292            var SendEmail = {
13293                classNames: classNames,
13294                rootElement: null,
13295            };
13296
13297            SendEmail.FORM_TYPE = {
13298                SIGNIN: 'signin',
13299                ASU: 'autoSignup',
13300            };
13301
13302            SendEmail.init = function () {
13303                this.root = doc.querySelector(this.classNames.root);
13304            }
13305
13306            SendEmail.changeFilterClass = function (triggerId) {
13307                var multiStepForm = win.MultiStepForm;
13308
13309                if (typeof triggerId !== 'string' || !triggerId) {
13310                    return;
13311                }
13312
13313                if (triggerId === multiStepForm.SignIn.idNames.btnCheckSendEmail) {
13314                    if (KEYENCE.Form.commonSendVerificationEmail.config.isSendEmailActive) {
13315                        multiStepForm.SendEmail.root.classList.add(classNames.isFilterRelogin);
13316                        multiStepForm.SendEmail.root.classList.remove(classNames.isFilterSignin);
13317                        multiStepForm.SendEmail.root.classList.remove(classNames.isFilterAutoSignup);
13318
13319                        return;
13320                    }
13321
13322                    multiStepForm.SendEmail.root.classList.add(classNames.isFilterSignin);
13323                    multiStepForm.SendEmail.root.classList.remove(classNames.isFilterAutoSignup);
13324                    multiStepForm.SendEmail.root.classList.remove(classNames.isFilterRelogin);
13325                } else if (triggerId === multiStepForm.SignIn.idNames.asuSendMailButton) {
13326                    multiStepForm.SendEmail.root.classList.add(classNames.isFilterAutoSignup);
13327                    multiStepForm.SendEmail.root.classList.remove(classNames.isFilterSignin);
13328                    multiStepForm.SendEmail.root.classList.remove(classNames.isFilterRelogin);
13329                }
13330            };
13331
13332            return SendEmail;
13333        }());
13334
13335        return FormFilter;
13336    }());
13337
13338    KEYENCE.Form.WechatLoginFlow = (function () {
13339        class WechatLoginFlow {
13340            constructor() {
13341                this.idNames = {
13342                    formRoot: 'js-multiStepForm',
13343                }
13344
13345                this.classNames = {
13346                    root: 'js-displayLoginFormWechatCode',
13347                    sunCodeImage: 'js-displayLoginFormWechatCode-target',
13348                    reloadButton: 'js-displayLoginFormWechatCode-reloadTrigger',
13349                    loadingIndicator: 'js-displayLoginFormWechatCode-loadingIndicator',
13350                    errorText: 'js-displayLoginFormWechatCode-errorText',
13351                    isLoginActive: 'is-wechatLoginFlow-active',
13352                    filterRoot: 'js-formFilterGeneral',
13353                };
13354
13355                this.ajaxUrl = {
13356                    createSunCode: '/ajax/userAjax/wechatSunCodeImage',
13357                    observeState: '/ajax/userAjax/wechatLoginState',
13358                    getStatus: '/ajax/userAjax/getStatusForWechat',
13359                    checkVerificationCode: '/ajax/registrationAjax/checkVerificationCode/'
13360                };
13361
13362                this.STATE_CODE = {
13363                    NA: 'NA',
13364                    R10: 'R10',
13365                    R20: 'R20',
13366                    A10: 'A10',
13367                    L10: 'L10',
13368                    L20: 'L20',
13369                    current: '',
13370                };
13371
13372                this.config = {
13373                    isObserveStopped: false,
13374                    timeoutMs: 10000,
13375                    observeTimeLimit: 900000,
13376                    observeResendInterval: 5000,
13377                    currentCreateCodeToken: null,
13378                    currentObserveToken: null,
13379                }
13380
13381                this.originalDomain = win.kpi_originalDomain ?? location.origin;
13382                this.MultiStepForm = null;
13383                this.Filter = null;
13384                this.SMSCodeButton = null;
13385                this.CommonSubmitValidator = null;
13386
13387                this.formRoot = doc.getElementById(this.idNames.formRoot);
13388                this.root = doc.querySelector(`.${this.classNames.root}`);
13389                this.sunCodeImage = doc.querySelector(`.${this.classNames.sunCodeImage}`);
13390                this.reloadButton = doc.querySelector(`.${this.classNames.reloadButton}`);
13391                this.loadingIndicator = doc.querySelector(`.${this.classNames.loadingIndicator}`);
13392                this.errorText = doc.querySelector(`.${this.classNames.errorText}`);
13393                this.filterRoot = doc.querySelector(`.${this.classNames.filterRoot}`);
13394                this.cacheId = doc.getElementById('wechatCacheId');
13395                this.filterMobileButton = null;
13396                this.filterWechatButton = null;
13397                this.filterTarget = null;
13398                this.loginCountryCode = null;
13399                this.loginMobileNumber = null;
13400            }
13401
13402            init() {
13403                if ((!this.formRoot && !this.filterRoot) ||
13404                    !this.root ||
13405                    !this.cacheId
13406                ) {
13407                    return;
13408                }
13409
13410                this.MultiStepForm = win.MultiStepForm;
13411                this.Filter = KEYENCE.Form.FormFilter;
13412                this.SMSCodeButton = KEYENCE.Form.SMSCodeButton;
13413
13414                if (!this.MultiStepForm ||
13415                    !this.Filter ||
13416                    !this.SMSCodeButton
13417                ) {
13418                    return;
13419                }
13420
13421                this.attachEvent();
13422                this.setObserverConfig();
13423                this.filterMobileButton = doc.querySelector(`#${this.Filter.General.idNames.mobileNumberTrigger}`);
13424                this.filterWechatButton = doc.querySelector(`#${this.Filter.General.idNames.wechatTtrigger}`);
13425                this.filterTarget = this.formRoot ?? this.filterRoot;
13426
13427                if (this.filterTarget.classList.contains(this.Filter.General.classNames.isFilterWechat)) {
13428                    this.run();
13429                }
13430            }
13431
13432            attachEvent() {
13433                if (this.reloadButton) {
13434                    this.reloadButton.addEventListener('click', this.onClickReload.bind(this), false);
13435                }
13436            }
13437
13438            onClickReload(event) {
13439                event.preventDefault();
13440                this.run();
13441            }
13442
13443            setObserverConfig() {
13444                const timeLimit = this.config.observeTimeLimit;
13445
13446                if (typeof win.wechatOperationSettings?.timeLimit === 'number') {
13447                    this.config.observeTimeLimit = win.wechatOperationSettings.timeLimit;
13448
13449                    if (this.config.observeTimeLimit > timeLimit) {
13450                        this.config.observeTimeLimit = timeLimit;
13451                    }
13452                }
13453
13454                if (typeof win.wechatOperationSettings?.resendInterval === 'number') {
13455                    this.config.resendInterval = win.wechatOperationSettings.resendInterval;
13456                }
13457            }
13458
13459            async run() {
13460                if (!this.sunCodeImage ||
13461                    !this.reloadButton ||
13462                    !this.loadingIndicator ||
13463                    !this.errorText
13464                ) {
13465                    return;
13466                }
13467
13468                const token = Symbol();
13469                this.config.currentCreateCodeToken = token;
13470                this.showLoadingIndicator();
13471
13472                try {
13473                    const result = await this.createSunCode();
13474
13475                    if (token !== this.config.currentCreateCodeToken) {
13476                        return;
13477                    }
13478
13479                    if (result.status === true) {
13480                        if (result.sunCodeImage) {
13481                            this.sunCodeImage.setAttribute('src', `data:image/jpeg;base64,${result.sunCodeImage}`);
13482                        }
13483
13484                        this.loadingIndicator.classList.add(this.MultiStepForm.classNames.isHide);
13485
13486                        await this.retry(this.config.observeResendInterval);
13487
13488                        if (token !== this.config.currentCreateCodeToken ||
13489                            !this.filterTarget.classList.contains(this.Filter.General.classNames.isFilterWechat)
13490                        ) {
13491                            return;
13492                        }
13493
13494                        await this.observeStatus(result.wechatCacheId, token);
13495                    } else {
13496                        this.showReloadButton();
13497                    }
13498                } catch (error) {
13499                    if (token !== this.config.currentCreateCodeToken) {
13500                        return;
13501                    }
13502
13503                    this.showReloadButton();
13504                }
13505            }
13506
13507            async createSunCode() {
13508                const url = this.originalDomain + this.ajaxUrl.createSunCode;
13509
13510                return await this.fetchJson(url, {
13511                    method: 'GET',
13512                    headers: {
13513                        'Accept': 'application/json'
13514                    }
13515                }, this.config.timeoutMs);
13516            }
13517
13518            async observeStatus(cacheId, createCodeToken) {
13519                if (!cacheId || !createCodeToken) {
13520                    return;
13521                }
13522
13523                this.config.isObserveStopped = false;
13524
13525                const duration = Date.now() + this.config.observeTimeLimit;
13526                const url = this.originalDomain + this.ajaxUrl.observeState;
13527                const formData = new FormData();
13528                const token = Symbol();
13529
13530                formData.append('wechatCacheId', cacheId);
13531                this.config.currentObserveToken = token;
13532
13533                const requestOptions = {
13534                    method: 'POST',
13535                    body: formData,
13536                };
13537
13538                while (Date.now() < duration &&
13539                    !this.config.isObserveStopped &&
13540                    this.filterTarget.classList.contains(this.Filter.General.classNames.isFilterWechat) &&
13541                    token === this.config.currentObserveToken &&
13542                    createCodeToken === this.config.currentCreateCodeToken
13543                ) {
13544                    let result = null;
13545
13546                    try {
13547                        result = await this.fetchJson(url, requestOptions, this.config.timeoutMs);
13548                    } catch (error) {
13549                        if (token !== this.config.currentObserveToken ||
13550                            createCodeToken !== this.config.currentCreateCodeToken
13551                        ) {
13552                            return;
13553                        }
13554
13555                        this.showReloadButton();
13556                        this.config.isObserveStopped = true;
13557
13558                        return;
13559                    }
13560
13561                    if (token !== this.config.currentObserveToken ||
13562                        createCodeToken !== this.config.currentCreateCodeToken
13563                    ) {
13564                        return;
13565                    }
13566
13567                    if (this.config.isObserveStopped) {
13568                        return;
13569                    }
13570
13571                    if (result.message &&
13572                        (this.SMSCodeButton.maxCountOver.errorFlag === result.maxCntOverFlg)
13573                    ) {
13574                        this.showErrorText(result.message);
13575                        this.config.isObserveStopped = true;
13576
13577                        return;
13578                    }
13579
13580                    if (!result.status || !result.wechatStateCode) {
13581                        this.showReloadButton();
13582                        this.config.isObserveStopped = true;
13583
13584                        return;
13585                    }
13586
13587                    const code = result.wechatStateCode;
13588
13589                    if (code === this.STATE_CODE.NA) {
13590                        if (this.config.isObserveStopped) {
13591                            return;
13592                        }
13593
13594                        await this.retry(this.config.observeResendInterval);
13595
13596                        continue;
13597                    }
13598
13599                    this.CommonSubmitValidator = KEYENCE.Form.CommonSubmitValidator;
13600
13601                    if (code === this.STATE_CODE.R10) {
13602                        if (this.CommonSubmitValidator?.isLoginActionForm()) {
13603                            this.showErrorText();
13604
13605                            return;
13606                        }
13607
13608                        this.STATE_CODE.current = code;
13609
13610                        if (this.filterMobileButton) {
13611                            this.filterMobileButton.click();
13612                        }
13613
13614                        this.filterTarget.classList.add(this.classNames.isLoginActive);
13615                        this.cacheId.value = cacheId;
13616
13617                        return;
13618                    }
13619
13620                    if (code === this.STATE_CODE.L20 || code === this.STATE_CODE.A10) {
13621                        this.STATE_CODE.current = code;
13622                        this.showLoginForm(code, result.mobileCountryId, result.mobileNumber);
13623                        this.cacheId.value = cacheId;
13624
13625                        return;
13626                    }
13627
13628                    if (code === this.STATE_CODE.R20) {
13629                        if (this.CommonSubmitValidator?.isLoginActionForm() &&
13630                            code === this.STATE_CODE.R20
13631                        ) {
13632                            this.showErrorText();
13633
13634                            return;
13635                        }
13636
13637                        this.STATE_CODE.current = code;
13638                        this.showRegisterForm(code, result.mobileCountryId, result.mobileNumber);
13639                        this.cacheId.value = cacheId;
13640
13641                        return;
13642                    }
13643
13644                    if (code === this.STATE_CODE.L10) {
13645                        this.STATE_CODE.current = code;
13646                        this.submitLoginForm(cacheId, result.mobileCountryId, result.mobileNumber);
13647
13648                        return;
13649                    }
13650
13651                    this.showReloadButton();
13652                    return;
13653                }
13654
13655                if (token === this.config.currentObserveToken &&
13656                    createCodeToken === this.config.currentCreateCodeToken
13657                ) {
13658                    this.showReloadButton();
13659                }
13660            }
13661
13662            async getStatus(cacheId, mobileCountryId, mobileNumber) {
13663                if (!cacheId ||
13664                    !mobileCountryId ||
13665                    !mobileNumber
13666                ) {
13667                    return;
13668                }
13669
13670                const url = this.originalDomain + this.ajaxUrl.getStatus;
13671                const formData = new FormData();
13672
13673                formData.append('wechatCacheId', cacheId);
13674                formData.append('mobileCountryId', mobileCountryId);
13675                formData.append('mobileNumber', mobileNumber);
13676
13677                const requestOptions = {
13678                    method: 'POST',
13679                    body: formData,
13680                };
13681
13682                try {
13683                    
13683const result = await this.fetchJson(url, requestOptions, this.config.timeoutMs);
13684
13685                    return result;
13686                } catch (error) {
13687                     throw new Error('status: false');
13688                }
13689            }
13690
13691            async fetchJson(url, requestOptions, timeOutLimit = this.config.timeoutMs) {
13692                const controller = new AbortController();
13693                const timeOutTimer = setTimeout(() => {
13694                    controller.abort();
13695                }, timeOutLimit);
13696
13697                try {
13698                    const response = await fetch(url, {
13699                        ...requestOptions,
13700                        signal: controller.signal,
13701                    });
13702
13703                    if (!response.ok) {
13704                        throw new Error('Network response was not OK');
13705                    }
13706
13707                    return await response.json();
13708                } finally {
13709                    clearTimeout(timeOutTimer);
13710                }
13711            }
13712
13713            async checkVerificationCode(mobileCountryId, mobileNumber, verificationCode) {
13714                if (!mobileCountryId ||
13715                    !mobileNumber ||
13716                    !verificationCode
13717                ) {
13718                    return;
13719                }
13720
13721                const url = this.originalDomain + this.ajaxUrl.checkVerificationCode;
13722                const formData = new FormData();
13723
13724                formData.append('mobileCountryId', mobileCountryId);
13725                formData.append('mobileNumber', mobileNumber);
13726                formData.append('verificationCode', verificationCode);
13727
13728                const requestOptions = {
13729                    method: 'POST',
13730                    body: formData,
13731                };
13732
13733                try {
13734                    const result = await this.fetchJson(url, requestOptions, this.config.timeoutMs);
13735
13736                    return result;
13737                } catch (error) {
13738                    throw new Error('status: false');
13739                }
13740            }
13741
13742            retry(interval) {
13743                return new Promise((resolve) => {
13744                    setTimeout(() => {
13745                        resolve();
13746                    }, interval);
13747                });
13748            }
13749
13750            showLoadingIndicator() {
13751                this.loadingIndicator.classList.remove(this.MultiStepForm.classNames.isHide);
13752                this.errorText.classList.add(this.MultiStepForm.classNames.isHide);
13753                this.reloadButton.classList.add(this.MultiStepForm.classNames.isHide);
13754            }
13755
13756            showReloadButton() {
13757                this.reloadButton.classList.remove(this.MultiStepForm.classNames.isHide);
13758                this.loadingIndicator.classList.add(this.MultiStepForm.classNames.isHide);
13759            }
13760
13761            showErrorText(text) {
13762                this.reloadButton.classList.remove(this.MultiStepForm.classNames.isHide);
13763                this.loadingIndicator.classList.add(this.MultiStepForm.classNames.isHide);
13764
13765                const errorMessage = text ||
13766                    this.errorText.dataset.messageMobileNumberRegistration ||
13767                    '';
13768
13769                if (errorMessage) {
13770                    this.errorText.textContent = errorMessage;
13771                    this.errorText.classList.remove(this.MultiStepForm.classNames.isHide);
13772                }
13773            }
13774
13775            showLoginForm(statusCode, mobileCountryId, mobileNumber, formInfo) {
13776                if (!statusCode) {
13777                    return;
13778                }
13779
13780                const CommonSubmitValidator = KEYENCE.Form.CommonSubmitValidator;
13781
13782                if (this.filterMobileButton) {
13783                    this.filterMobileButton.click();
13784                }
13785
13786                this.filterTarget.classList.add(this.classNames.isLoginActive);
13787
13788                if (statusCode === this.STATE_CODE.A10 && !CommonSubmitValidator?.isLoginActionForm()) {
13789                    this.Filter.SignIn.changeAutoSignUp(true, this.Filter.General.FORM_TYPE.MOBILE_NUMBER);
13790
13791                    this.MultiStepForm.changeCurrentScreenName('asu');
13792                } else {
13793                    this.MultiStepForm.changeCurrentScreenName('login-smsCode');
13794                }
13795
13796                this.setLoginMobileNumber(mobileCountryId, mobileNumber, formInfo);
13797
13798                this.MultiStepForm.show(this.MultiStepForm.SignIn.$root);
13799                this.MultiStepForm.hide(this.MultiStepForm.PreForm.$root);
13800
13801                if (CommonSubmitValidator?.isLoginActionForm()) {
13802                    this.loginCountryCode?.setAttribute('disabled', true);
13803                    this.loginMobileNumber?.setAttribute('disabled', true);
13804                }
13805
13806                let verificationCodeCreateButton = null;
13807
13808                if (!this.MultiStepForm || !this.SMSCodeButton) {
13809                    return;
13810                }
13811
13812                const signInForm = doc.getElementById(this.MultiStepForm.SignIn.idNames.signinForm);
13813
13814                if (signInForm) {
13815                    verificationCodeCreateButton = signInForm.querySelector(`.${this.SMSCodeButton.classNames.trigger}`);
13816                } else {
13817                    verificationCodeCreateButton = doc.querySelector(`.${this.SMSCodeButton.classNames.trigger}`);
13818                }
13819
13820                if (verificationCodeCreateButton) {
13821                    this.startVerificationCountDown(verificationCodeCreateButton, statusCode);
13822                }
13823            }
13824
13825            showRegisterForm(statusCode, mobileCountryId, mobileNumber, formInfo) {
13826                if (!statusCode) {
13827                    return;
13828                }
13829
13830                this.filterTarget.classList.add(this.classNames.isLoginActive);
13831
13832                if (formInfo) {
13833                    this.setRegisterForm(statusCode, mobileCountryId, mobileNumber, formInfo);
13834                } else {
13835                    this.Filter.General.rootElement.classList.remove(this.Filter.General.classNames.isFilterEmail);
13836                    this.Filter.General.rootElement.classList.remove(this.Filter.General.classNames.isFilterWechat);
13837                    this.Filter.General.rootElement.classList.add(this.Filter.General.classNames.isFilterMobilenumber);
13838
13839                    this.filterMobileButton?.setAttribute('aria-current', 'page');
13840                    this.filterWechatButton?.removeAttribute('aria-current');
13841
13842                    const registerArea = doc.getElementById('suz_regArea');
13843
13844                    if (!registerArea) {
13845                        return;
13846                    }
13847
13848                    this.Filter.General.updateFormElement(true).done(function (data) {
13849                        $(registerArea).html(data);
13850                        KEYENCE.Form.SelectCountryNumber?.init();
13851                        KEYENCE.Form.FormFilter.General.updateDisabledId();
13852                        KEYENCE.Form.FormFilter.General.enableFields('mobileNumber');
13853                        KEYENCE.Form.FormFilter.General.disableFields('email');
13854                        KEYENCE.Form.WechatLoginFlow.setRegisterForm(statusCode, mobileCountryId, mobileNumber, formInfo);
13855                    }).fail(function () {
13856                        KEYENCE.Form.FormFilter.General.updateDisabledId();
13857                        KEYENCE.Form.FormFilter.General.enableFields('mobileNumber');
13858                        KEYENCE.Form.FormFilter.General.disableFields('email');
13859                    });
13860                }
13861            }
13862
13863            setRegisterForm(statusCode, mobileCountryId, mobileNumber, formInfo) {
13864                if (!this.MultiStepForm || !this.SMSCodeButton) {
13865                    return;
13866                }
13867
13868                const multiStepForm = this.MultiStepForm;
13869
13870                this.setRegisterMobileNumber(mobileCountryId, mobileNumber, formInfo);
13871
13872                multiStepForm.Register.showPanelByIndex(0);
13873                multiStepForm.show(multiStepForm.Register.$root);
13874                multiStepForm.hide(multiStepForm.PreForm.$root);
13875                multiStepForm.changeCurrentScreenName(multiStepForm.screenNames.step1);
13876
13877                let verificationCodeCreateButton = null;
13878
13879                const RegisterForm = doc.getElementById(multiStepForm.Register.idNames.regForm);
13880
13881                if (RegisterForm) {
13882                    verificationCodeCreateButton = RegisterForm.querySelector(`.${this.SMSCodeButton.classNames.trigger}`);
13883                }
13884
13885                if (verificationCodeCreateButton) {
13886                    this.startVerificationCountDown(verificationCodeCreateButton, statusCode);
13887                }
13888            }
13889
13890            setRegisterMobileNumber(mobileCountryId, mobileNumber, formInfo) {
13891                if (!mobileCountryId || !mobileNumber) {
13892                    return;
13893                }
13894
13895                this.registerCountryCode = null;
13896                this.registerMobileNumber = null;
13897                this.checkMobileNumber = null;
13898
13899                this.registerCountryCode = doc.getElementById('suz_mobileCountryNumber');
13900                this.registerMobileNumber = doc.getElementById('suz_mobileNumber');
13901                const mobileCountrySelector = doc.getElementById('checkCountryNumber');
13902                this.checkMobileNumber = doc.getElementById('checkMobileNumber');
13903                let countryCode = '';
13904
13905                if (!this.registerCountryCode
13906                    || !this.registerMobileNumber
13907                    || !this.checkMobileNumber) {
13908                    return;
13909                }
13910
13911                if (formInfo) {
13912                    this.MultiStepForm.clearInputError(formInfo.name, false);
13913                    countryCode = formInfo.mobileNumberCode;
13914                } else {
13915                    const targetOption = mobileCountrySelector?.querySelector(`option[value="${mobileCountryId}"]`);
13916
13917                    if (targetOption) {
13918                        countryCode = targetOption.dataset.code;
13919                    }
13920                }
13921
13922                this.registerCountryCode.value = countryCode;
13923                this.registerCountryCode.disabled = true;
13924                this.registerMobileNumber.value = mobileNumber;
13925                this.registerMobileNumber.disabled = true;
13926                this.checkMobileNumber.value = mobileNumber;
13927            }
13928
13929            startVerificationCountDown(button, statusCode) {
13930                if (!button) {
13931                    return;
13932                }
13933
13934                if (this.SMSCodeButton.timeIds[button.id]?.timeId) {
13935                    win.clearInterval(this.SMSCodeButton.timeIds[button.id].timeId);
13936                    delete this.SMSCodeButton.timeIds[button.id];
13937                }
13938
13939                this.SMSCodeButton.disableButton(button);
13940                this.SMSCodeButton.replaceButtonText(button, button.getAttribute('data-resend-text'));
13941                this.SMSCodeButton.toggleResendCount(button, 'show');
13942                this.SMSCodeButton.countResendTime(button);
13943
13944                if (statusCode === this.STATE_CODE.R10) {
13945                    return;
13946                }
13947
13948                if (this.MultiStepForm.PreForm.$btnMobileContinue[0]) {
13949                    const mobileContinueButton = this.MultiStepForm.PreForm.$btnMobileContinue[0];
13950
13951                    if (mobileContinueButton && this.SMSCodeButton.timeIds[mobileContinueButton.id]?.timeId) {
13952                        win.clearInterval(this.SMSCodeButton.timeIds[mobileContinueButton.id].timeId);
13953                        delete this.SMSCodeButton.timeIds[mobileContinueButton.id];
13954                    }
13955
13956                    this.SMSCodeButton.disableButton(mobileContinueButton);
13957                    this.SMSCodeButton.replaceButtonText(mobileContinueButton, mobileContinueButton.getAttribute('data-resend-text'));
13958                    this.SMSCodeButton.toggleResendCount(mobileContinueButton, 'show');
13959                    this.SMSCodeButton.countResendTime(mobileContinueButton);
13960                }
13961            }
13962
13963            submitLoginForm(cacheId, mobileCountryId, mobileNumber, formInfo) {
13964                if (!cacheId) {
13965                    return;
13966                }
13967
13968                const CommonSubmitValidator = KEYENCE.Form.CommonSubmitValidator;
13969
13970                this.cacheId.value = cacheId;
13971                this.filterTarget.classList.add(this.classNames.isLoginActive);
13972
13973                if (!this.MultiStepForm) {
13974                    return;
13975                }
13976
13977                const formTypeSignIn = this.Filter.SignIn.getFormType();
13978                const loginButton = doc.getElementById('js-form-regBtnSignin');
13979                const MyKeyenceReloginButton = doc.querySelector('input[type="submit"]');
13980
13981                if (formTypeSignIn === this.Filter.SignIn.FORM_TYPE.SMS_CODE) {
13982                    this.Filter.SignIn.enableFields('smscode', true);
13983                    this.MultiStepForm.SignIn.$loginVerificationCode.prop('disable', true);
13984                }
13985
13986                this.setLoginMobileNumber(mobileCountryId, mobileNumber, formInfo);
13987
13988                if (CommonSubmitValidator?.isLoginActionForm() && this.filterMobileButton) {
13989                    this.filterMobileButton.click();
13990                }
13991
13992                if (loginButton) {
13993                    loginButton.click();
13994                } else if (MyKeyenceReloginButton) {
13995                    CommonSubmitValidator?.$targetForm[0]?.requestSubmit(MyKeyenceReloginButton);
13996                }
13997
13998                return;
13999            }
14000
14001            setLoginMobileNumber(mobileCountryId, mobileNumber, formInfo) {
14002                if (!mobileCountryId || !mobileNumber) {
14003                    return;
14004                }
14005
14006                this.loginCountryCode = null;
14007                this.loginMobileNumber = null;
14008
14009                this.loginCountryCode = doc.getElementById('loginCountryNumber');
14010                this.loginMobileNumber = doc.getElementById('loginMobileNumber');
14011                const mobileCountrySelector = doc.getElementById('checkCountryNumber');
14012                const loginFullMobileNumber = doc.getElementById('loginFullMobileNumber');
14013                let countryCode = '';
14014
14015                if (!this.loginCountryCode || !this.loginMobileNumber) {
14016                    return;
14017                }
14018
14019                if (formInfo) {
14020                    this.MultiStepForm.clearInputError(formInfo.name, false);
14021                    countryCode = formInfo.mobileNumberCode;
14022                } else {
14023                    const targetOption = mobileCountrySelector?.querySelector(`option[value="${mobileCountryId}"]`);
14024
14025                    if (targetOption) {
14026                        countryCode = targetOption.dataset.code;
14027                    }
14028                }
14029
14030                this.loginCountryCode.value = countryCode;
14031                this.loginMobileNumber.value = mobileNumber;
14032
14033                if (loginFullMobileNumber) {
14034                    loginFullMobileNumber.value = countryCode + mobileNumber;
14035                }
14036            }
14037
14038            getMobileCountryId(mobileCountryCode) {
14039                if (!mobileCountryCode) {
14040                    return;
14041                }
14042
14043                const mobileCountrySelector = doc.getElementById('checkCountryNumber');
14044                let mobileCountryId = '';
14045
14046                if (mobileCountrySelector) {
14047                    mobileCountryId = mobileCountrySelector.querySelector(`option[data-code="${mobileCountryCode}"]`);
14048                }
14049
14050                return mobileCountryId.value;
14051            }
14052
14053            isLoginActive() {
14054                return this.filterTarget?.classList.contains(this.classNames.isLoginActive);
14055            }
14056
14057            resetLoginFlow() {
14058                if (!this.isLoginActive()) {
14059                    return;
14060                }
14061
14062                this.cacheId.value = '';
14063                this.filterTarget.classList.remove(this.classNames.isLoginActive);
14064                this.STATE_CODE.current = '';
14065            }
14066        }
14067
14068        return new WechatLoginFlow();
14069    })();
14070
14071    KEYENCE.Form.InputInterlock = (function () {
14072        var classNames = {
14073            trigger: 'js-input-interlock',
14074            group: 'js-input-interlockGroup',
14075            item: 'js-input-interlockItem',
14076            isHide: 'is-hide'
14077        };
14078
14079        var InputInterlock = {
14080            triggerElements: null,
14081            classNames: classNames
14082        };
14083
14084        InputInterlock.init = function () {
14085            var self = this;
14086            var $triggers = $('.' + classNames.trigger);
14087            var $targetForm = $('form[name="user_reloginActionForm"], form[name="user_profile_withdrawActionForm"]');
14088
14089            $(doc).off('input.formInterlock').on('input.formInterlock', '.' + classNames.trigger, this.onInput.bind(self));
14090
14091            if ($triggers.length && $targetForm.length) {
14092                $triggers.each(function (index, item) {
14093                    var style = getComputedStyle(item);
14094
14095                    if ($(item).val() !== "") {
14096                        if (style &&
14097                            (item.offsetParent === null ||
14098                            style.visibility === 'hidden' ||
14099                            style.opacity === '0')
14100                        ) {
14101                            return;
14102                        }
14103
14104                        $(item).trigger('input');
14105
14106                        return false;
14107                    }
14108                });
14109            }
14110        };
14111
14112        InputInterlock.onInput = function (event) {
14113            var target = event.currentTarget;
14114            var targetIdList = this.getTargetIdListFromTrigger(target);
14115
14116            if (!targetIdList.length) {
14117                return;
14118            }
14119
14120            if (target.value.length > 0) {
14121                targetIdList.forEach(function (id) {
14122                    InputInterlock.changeRelatedInputStatus(document.getElementById(id), 'disable');
14123                });
14124            } else if (target.value.length === 0) {
14125                targetIdList.forEach(function (id) {
14126                    InputInterlock.changeRelatedInputStatus(document.getElementById(id), 'enable');
14127                });
14128            }
14129        };
14130
14131        InputInterlock.changeRelatedInputStatus = function (targetElement, status) {
14132            if (!targetElement || typeof status !== 'string') {
14133                return;
14134            }
14135
14136            if (status === 'enable') {
14137                targetElement.disabled = false;
14138
14139                if (targetElement.tagName.toLowerCase() === 'button') {
14140                    targetElement.removeAttribute('aria-disabled');
14141                }
14142
14143                InputInterlock.toggleItems(targetElement, 'show');
14144            } else if (status === 'disable') {
14145                targetElement.disabled = true;
14146
14147                if (targetElement.name) {
14148                    win.MultiStepForm.clearInputError(targetElement.name, true);
14149                }
14150
14151                if (targetElement.tagName.toLowerCase() === 'button') {
14152                    targetElement.setAttribute('aria-disabled', true);
14153                }
14154
14155                InputInterlock.toggleItems(targetElement, 'hide');
14156            }
14157        };
14158
14159        InputInterlock.getTargetIdListFromTrigger = function (target) {
14160            var idList = [];
14161
14162            if (target && target.dataset.interlock) {
14163                idList = target.dataset.interlock.split(',');
14164            }
14165
14166            return idList;
14167        };
14168
14169        InputInterlock.toggleItems = function (targetInputItem, status) {
14170            var $interlockGroup;
14171            var $targetItems;
14172
14173            if (!targetInputItem || typeof status !== 'string') {
14174                return;
14175            }
14176
14177            $interlockGroup = $(targetInputItem).closest('.' + classNames.group);
14178
14179            if ($interlockGroup.length) {
14180                $targetItems = $interlockGroup.find('.' + classNames.item);
14181            }
14182
14183            if (!$targetItems || !$targetItems.length) {
14184                return
14185            }
14186
14187            if (status === 'hide') {
14188                $targetItems.addClass(classNames.isHide);
14189            } else if (status === 'show') {
14190                $targetItems.removeClass(classNames.isHide);
14191            }
14192        };
14193
14194        return InputInterlock;
14195    }());
14196
14197    KEYENCE.Form.SMSCodeButton = (function () {
14198        var classNames = {
14199            trigger: 'js-sendSMSCode',
14200            text: 'js-sendSMSCode-text',
14201            resendCount: 'js-sendSMSCode-resendCount',
14202            resendCountNumber: 'js-sendSMSCode-resendCountNumber',
14203            isHide: 'is-hide'
14204        };
14205
14206        var urls = {
14207            createVerificationCode: '/ajax/registrationAjax/createVerificationCode/',
14208            getVerificationCodeRemainingTime: '/ajax/registrationAjax/getVerificationCodeRemainingTime/',
14209        };
14210
14211        var SMSCodeButton = {
14212            urls: urls,
14213            classNames: classNames,
14214            defaultResendTime: 10,
14215            timeIds: {},
14216            targetButtons: {
14217                preformMobile: 'js-form-btnCheckMobileRegistered',
14218                mobile: 'getCode',
14219                email: 'getEmailCode',
14220            },
14221            maxCountOver: {
14222                errorFlag: '1',
14223                mobileNumberInputIds: {
14224                    multiStep: 'checkMobileNumber',
14225                    relogin: 'loginMobileNumber',
14226                    profile: 'suz_mobileNumber',
14227                },
14228                isLimitOver: false,
14229                targetIds: [],
14230                limitedMobileNumber: '',
14231            },
14232        };
14233
14234        SMSCodeButton.init = function () {
14235            var self = this;
14236
14237            $(doc).off('click.formSMSCodeButton').on('click.formSMSCodeButton', '.' + classNames.trigger, self.onclick.bind(self));
14238            this.showResendRemainingTime();
14239            this.restoreMaxCountOver();
14240        };
14241
14242        SMSCodeButton.replaceButtonText = function (button, text) {
14243            var textElement;
14244
14245            if (!button || typeof text !== 'string') {
14246                return;
14247            }
14248
14249            textElement = button.querySelector('.' + classNames.text);
14250
14251            if (!textElement) {
14252                return;
14253            }
14254
14255            textElement.textContent = text;
14256        };
14257
14258        SMSCodeButton.toggleResendCount = function (button, status) {
14259            var countContent;
14260
14261            if (!button || typeof status !== 'string') {
14262                return;
14263            }
14264
14265            countContent = button.querySelector('.' + classNames.resendCount);
14266
14267            if (!countContent) {
14268                return;
14269            }
14270
14271            if (status === 'show') {
14272                countContent.classList.remove(classNames.isHide);
14273            } else if (status === 'hide') {
14274                countContent.classList.add(classNames.isHide);
14275            }
14276        };
14277
14278        SMSCodeButton.insertResetCountNumber = function (button, number) {
14279            var numberElement;
14280
14281            if (!button || typeof number !== 'number') {
14282                return;
14283            }
14284
14285            numberElement = button.querySelector('.' + classNames.resendCountNumber);
14286
14287            if (!numberElement) {
14288                return;
14289            }
14290
14291            numberElement.textContent = number;
14292        };
14293
14294        SMSCodeButton.removeResetCountNumber = function (button) {
14295            var numberElement;
14296
14297            if (!button) {
14298                return;
14299            }
14300
14301            numberElement = button.querySelector('.' + classNames.resendCountNumber);
14302
14303            if (!numberElement) {
14304                return;
14305            }
14306
14307            numberElement.textContent = '';
14308        };
14309
14310        SMSCodeButton.onclick = function (event, targetElement) {
14311            var promise = SMSCodeButton.sendVerificationCode(event, targetElement);
14312
14313            promise.catch(function () {
14314                console.error('Create VerificationCode Error');
14315            });
14316
14317            return promise;
14318        };
14319
14320        SMSCodeButton.sendVerificationCode = function (event, targetElement) {
14321            return new Promise(function (resolve, reject) {
14322                var button = null;
14323                var MultiStepForm = window.MultiStepForm;
14324                var input = null;
14325                var mobileNumberInfo = {};
14326                var $mobileContinueButton = null;
14327                var wechatCacheId = null;
14328                var wechatLoginFlow = KEYENCE.Form.WechatLoginFlow;
14329
14330                if (event && event.currentTarget) {
14331                    button = event.currentTarget;
14332                } else if (targetElement) {
14333                    button = targetElement;
14334                }
14335
14336                input = SMSCodeButton.getInput(button);
14337                mobileNumberInfo = SMSCodeButton.getMobileNumberInfo(button);
14338
14339                if (
14340                    !input ||
14341                    (
14342                        typeof mobileNumberInfo.number !== 'string' ||
14343                        typeof mobileNumberInfo.countryId !== 'string'
14344                    ) ||
14345                    button.disabled
14346                ) {
14347                    resolve(null);
14348                    return;
14349                }
14350
14351                if (
14352                    wechatLoginFlow.cacheId &&
14353                    (
14354                        wechatLoginFlow.STATE_CODE.current === wechatLoginFlow.STATE_CODE.R20 ||
14355                        wechatLoginFlow.STATE_CODE.current === wechatLoginFlow.STATE_CODE.L20 ||
14356                        wechatLoginFlow.STATE_CODE.current === wechatLoginFlow.STATE_CODE.A10
14357                    )
14358                ) {
14359                    wechatCacheId = wechatLoginFlow.cacheId.value;
14360                }
14361
14362                SMSCodeButton.createVerificationCode(
14363                    mobileNumberInfo.countryId,
14364                    mobileNumberInfo.number,
14365                    wechatCacheId
14366                ).done(function (status) {
14367                    if (status.message && (MultiStepForm && MultiStepForm.insertErrorText)) {
14368                        if (targetElement) {
14369                            resolve(status);
14370
14371                            return;
14372                        }
14373
14374                        if (SMSCodeButton.maxCountOver.errorFlag === status.maxCntOverFlg) {
14375                            SMSCodeButton.setMaxCountOverDisabled(button, mobileNumberInfo.number);
14376                        }
14377
14378                        MultiStepForm.insertErrorText(input.name, status.message);
14379                    } else {
14380                        MultiStepForm.clearInputError(input.name, true);
14381
14382                        SMSCodeButton.disableButton(button);
14383                        SMSCodeButton.replaceButtonText(button, button.getAttribute('data-resend-text'));
14384                        SMSCodeButton.toggleResendCount(button, 'show');
14385                        SMSCodeButton.countResendTime(button);
14386
14387                        if (MultiStepForm && MultiStepForm.PreForm.$btnMobileContinue.length) {
14388                            $mobileContinueButton = MultiStepForm.PreForm.$btnMobileContinue;
14389
14390                            SMSCodeButton.disableButton($mobileContinueButton[0]);
14391                            SMSCodeButton.replaceButtonText($mobileContinueButton[0], $mobileContinueButton[0].getAttribute('data-resend-text'));
14392                            SMSCodeButton.toggleResendCount($mobileContinueButton[0], 'show');
14393                            SMSCodeButton.countResendTime($mobileContinueButton[0]);
14394                        }
14395                    }
14396
14397                    resolve(status);
14398                }).fail(function (jqXHR, textStatus, errorThrown) {
14399                    if (jqXHR.status !== 200) {
14400                        if (!targetElement) {
14401                            MultiStepForm.insertErrorText(input.name, kpi_translation.ServerConnectErrorMessage);
14402                        }
14403
14404                        reject({
14405                            jqXHR: jqXHR,
14406                            textStatus: textStatus,
14407                            errorThrown: errorThrown,
14408                            errorMessage: kpi_translation.ServerConnectErrorMessage,
14409                        });
14410
14411                        return;
14412                    }
14413
14414                    MultiStepForm.asyncErrorHundler(jqXHR.status, textStatus);
14415
14416                    reject({
14417                        jqXHR: jqXHR,
14418                        textStatus: textStatus,
14419                        errorThrown: errorThrown
14420                    });
14421                });
14422            });
14423        };
14424
14425        SMSCodeButton.countResendTime = function (button, argCount) {
14426            var countNum = typeof argCount === 'number' ? argCount : this.getResendTime(button);
14427            var MultiStepForm = win.MultiStepForm;
14428            var $mobileContinueButton = null;
14429
14430            if (MultiStepForm) {
14431                $mobileContinueButton = win.MultiStepForm.PreForm.$btnMobileContinue;
14432            }
14433
14434            SMSCodeButton.insertResetCountNumber(button, countNum);
14435
14436            SMSCodeButton.timeIds[button.id] = {};
14437
14438            SMSCodeButton.timeIds[button.id].timeId = win.setInterval(function () {
14439                countNum--;
14440                SMSCodeButton.timeIds[button.id].timerCount = countNum;
14441
14442                if (countNum === 0) {
14443                    SMSCodeButton.enableButton(button);
14444                    SMSCodeButton.toggleResendCount(button, 'hide');
14445                    SMSCodeButton.removeResetCountNumber(button);
14446
14447                    if (SMSCodeButton.timeIds[button.id] && typeof SMSCodeButton.timeIds[button.id].timeId === 'number') {
14448                        win.clearInterval(SMSCodeButton.timeIds[button.id].timeId);
14449                    }
14450
14451                    delete SMSCodeButton.timeIds[button.id];
14452
14453                    if ($mobileContinueButton.length
14454                        && button.id === $mobileContinueButton.attr('id')) {
14455                        SMSCodeButton.replaceButtonText(button, button.getAttribute('data-send-text'));
14456                    }
14457
14458                    return;
14459                }
14460
14461                SMSCodeButton.insertResetCountNumber(button, countNum);
14462            }, 1000);
14463
14464            if (typeof argCount !== 'number' || !$mobileContinueButton.length) {
14465                return;
14466            }
14467
14468            if (button.id !== $mobileContinueButton.attr('id')
14469                && SMSCodeButton.timeIds[$mobileContinueButton.attr('id')]) {
14470                win.clearInterval(SMSCodeButton.timeIds[$mobileContinueButton.attr('id')].timeId);
14471                SMSCodeButton.countResendTime($mobileContinueButton[0], argCount);
14472            }
14473        };
14474
14475        SMSCodeButton.getMobileNumberInfo = function (button) {
14476            var id;
14477            var mobileCountrySelectId;
14478            var mobileCountrySelectElem;
14479            var mobileNumberInputId;
14480            var mobileNumberInputElem;
14481            var info = {};
14482            var currentOption = null;
14483
14484            if (!button) {
14485                return '';
14486            }
14487
14488            id = button.id;
14489
14490            if (id === 'loginVerificationCode-getCode') {
14491                mobileNumberInputId = 'loginMobileNumber';
14492
14493                if (doc.getElementById('checkCountryNumber')) {
14494                    mobileCountrySelectId = 'checkCountryNumber';
14495                } else {
14496                    mobileCountrySelectId = 'loginCountryNumber';
14497                }
14498            } else if (button.id === 'suz_verificationCode-getCode') {
14499                mobileNumberInputId = 'suz_mobileNumber';
14500
14501                if (doc.getElementById('suz_mobileCountryID')) {
14502                    mobileCountrySelectId = 'suz_mobileCountryID';
14503                } else {
14504                    mobileCountrySelectId = 'checkCountryNumber';
14505                }
14506            } else if (id === 'remindVerificationCode-getCode') {
14507                mobileCountrySelectId = 'remindCountryNumber';
14508                mobileNumberInputId = 'remindMobileNumber';
14509            }
14510
14511            mobileCountrySelectElem = doc.getElementById(mobileCountrySelectId);
14512            mobileNumberInputElem = doc.getElementById(mobileNumberInputId);
14513
14514            if (mobileCountrySelectElem && mobileNumberInputElem) {
14515                info.number = mobileNumberInputElem.value;
14516
14517                if (mobileCountrySelectElem.value) {
14518                    info.countryId = mobileCountrySelectElem.value;
14519                } else {
14520                    currentOption = mobileCountrySelectElem.querySelector("option[selected]");
14521                    info.countryId = currentOption?.value ? currentOption?.value : '';
14522                }
14523            }
14524
14525            return info;
14526        };
14527
14528        SMSCodeButton.getInput = function (button) {
14529            var $group;
14530            var $input;
14531            var group;
14532            var MultiStepForm = win.MultiStepForm;
14533
14534            if (button) {
14535                if (KEYENCE.Form.CommonSubmitValidator.isReloginActionForm()) {
14536                    $group = $(button).closest('.prd-inputGroup');
14537                } else if (MultiStepForm.isShow(MultiStepForm.SignIn.$root)) {
14538                    $group = $('#suz_div_loginVerificationCode');
14539                } else if (MultiStepForm.isShow(MultiStepForm.Register.$root)) {
14540                    $group = $('#suz_div_verificationCode');
14541                } else {
14542                    group = button.closest('.prd-inputGroup')?.nextElementSibling;
14543                    $group = $(group).hasClass('prd-inputGroup') ? $(group) : $(button).closest('.prd-inputGroup');
14544                }
14545
14546                if ($group && $group.length) {
14547                    $input = $group.find('input');
14548                }
14549
14550                if ($input && $input.length) {
14551                    return $input.get(0);
14552                }
14553            }
14554
14555            return null;
14556        };
14557
14558        SMSCodeButton.getResendTime = function (buttonElement) {
14559            var resendTime = '';
14560
14561            if (buttonElement) {
14562                resendTime = buttonElement.getAttribute('data-timeout');
14563
14564                if (typeof resendTime === 'string') {
14565                    resendTime = win.parseInt(resendTime, 10);
14566                } else {
14567                    resendTime = SMSCodeButton.defaultResendTime;
14568                }
14569            }
14570
14571            return resendTime;
14572        };
14573
14574        SMSCodeButton.createVerificationCode = function (mobileCountryId, mobileNumber, wechatCacheId) {
14575            var deferred = new $.Deferred();
14576            var options;
14577            var url;
14578
14579            if (typeof mobileCountryId !== 'string' || typeof mobileNumber !== 'string') {
14580                return deferred.reject();
14581            }
14582
14583            url = win.suz_getCurrentDomain() + this.urls.createVerificationCode;
14584
14585            options = {
14586                url: url,
14587                data: {
14588                    mobileCountryId: mobileCountryId,
14589                    mobileNumber: mobileNumber,
14590                    wechatCacheId: wechatCacheId
14591                },
14592                dataType: 'jsonp',
14593                jsonp: 'callback',
14594                scriptCharset: 'UTF-8',
14595            };
14596
14597            $.ajax(options).done(function (data) {
14598                deferred.resolve(data);
14599            }).fail(function (jqXHR, textStatus, errorThrown) {
14600                deferred.reject(jqXHR, textStatus, errorThrown);
14601            });
14602
14603            return deferred.promise();
14604        };
14605
14606        SMSCodeButton.enableButton = function (button) {
14607            var $DownloadListLicenseSoftwareJObj = $('#DownloadListLicenseSoftware');
14608            var $DownloadListLicenseCadJObj = $('#DownloadListLicenseCad');
14609
14610            if (button) {
14611                if (button.id === 'js-form-btnCheckMobileRegistered' &&
14612                    ($DownloadListLicenseSoftwareJObj.length || $DownloadListLicenseCadJObj.length)
14613                ) {
14614                    if (kpi_cartObj._isDownloadLicenseAgreed($DownloadListLicenseSoftwareJObj, $DownloadListLicenseCadJObj)) {
14615                        button.disabled = false;
14616                        button.setAttribute('aria-disabled', false);
14617                    }
14618                } else {
14619                    button.disabled = false;
14620                    button.setAttribute('aria-disabled', false);
14621                }
14622            }
14623        };
14624
14625        SMSCodeButton.disableButton = function (button) {
14626            if (button) {
14627                button.disabled = true;
14628                button.setAttribute('aria-disabled', true);
14629            }
14630        };
14631
14632        SMSCodeButton.showResendRemainingTime = function () {
14633            var self = this;
14634            var mobileVerificationButtons = null;
14635            var emailVerificationButtons = null
14636
14637            if (!document.querySelectorAll('.' + classNames.trigger).length) {
14638                return;
14639            }
14640
14641            mobileVerificationButtons = document.querySelectorAll(`button[id$='-${this.targetButtons.mobile}'], #${this.targetButtons.preformMobile}`);
14642            emailVerificationButtons = document.querySelectorAll(`button[id$='-${this.targetButtons.email}']`);
14643
14644            SMSCodeButton.getVerificationCodeRemainingTime().done(function (status) {
14645                if (status.errorFlg === '1'
14646                    || (status.smsRemainingTime === 0
14647                    && status.mailRemainingTime === 0)
14648                ) {
14649                    return;
14650                } else {
14651                    if (status.smsRemainingTime !== 0
14652                        && mobileVerificationButtons.length) {
14653                        mobileVerificationButtons.forEach(function (button) {
14654                            self.setResendRemainingTime(button, status.smsRemainingTime);
14655                        });
14656                    }
14657
14658                    if (status.mailRemainingTime !== 0
14659                        && emailVerificationButtons.length) {
14660                        emailVerificationButtons.forEach(function (button) {
14661                            self.setResendRemainingTime(button, status.mailRemainingTime);
14662                        });
14663                    }
14664                }
14665            }).fail(function (jqXHR, textStatus, errorThrown) {
14666                console.error('Get Verification Code Remaining Time Error');
14667            });
14668        };
14669
14670        SMSCodeButton.getVerificationCodeRemainingTime = function () {
14671            var deferred = new $.Deferred();
14672            var options = {};
14673            var url = '';
14674
14675            url = win.suz_getCurrentDomain() + this.urls.getVerificationCodeRemainingTime;
14676
14677            options = {
14678                url: url,
14679            };
14680
14681            $.ajax(options).done(function (data) {
14682                deferred.resolve(data);
14683            }).fail(function (jqXHR, textStatus, errorThrown) {
14684                deferred.reject(jqXHR, textStatus, errorThrown);
14685            });
14686
14687            return deferred.promise();
14688        };
14689
14690        SMSCodeButton.setResendRemainingTime = function (button, remainingTime) {
14691            if ((typeof button !== 'object' || !button)
14692               || (typeof remainingTime !== 'number' || remainingTime <= 0)) {
14693                return;
14694            }
14695
14696            if (button.id) {
14697                this.disableButton(button);
14698                this.replaceButtonText(button, button.getAttribute('data-resend-text'));
14699                this.toggleResendCount(button, 'show');
14700                this.countResendTime(button, remainingTime);
14701            }
14702        };
14703
14704        SMSCodeButton.enableLimitedButton = function (event) {
14705            var mobileNumberInput = event.currentTarget;
14706            var $DownloadListLicenseSoftwareJObj = $('#DownloadListLicenseSoftware');
14707            var $DownloadListLicenseCadJObj = $('#DownloadListLicenseCad');
14708            var button = null;
14709
14710            if (SMSCodeButton.maxCountOver.isLimitOver &&
14711                SMSCodeButton.maxCountOver.limitedMobileNumber !== mobileNumberInput.value
14712            ) {
14713                SMSCodeButton.maxCountOver.targetIds.forEach((id) => {
14714                    button =  doc.getElementById(id);
14715
14716                    SMSCodeButton.maxCountOver.targetIds = SMSCodeButton.maxCountOver.targetIds.filter(
14717                        targetId => targetId !== id
14718                    );
14719
14720                    if (!button) {
14721                        return;
14722                    }
14723
14724                    if (SMSCodeButton.timeIds[button.id] &&
14725                        typeof SMSCodeButton.timeIds[button.id].timeId === 'number'
14726                    ) {
14727                        SMSCodeButton.toggleResendCount(button, 'show');
14728
14729                        return;
14730                    }
14731
14732                    if (button.id === 'js-form-btnCheckMobileRegistered' &&
14733                        ($DownloadListLicenseSoftwareJObj.length || $DownloadListLicenseCadJObj.length)
14734                    ) {
14735                        if (kpi_cartObj._isDownloadLicenseAgreed($DownloadListLicenseSoftwareJObj, $DownloadListLicenseCadJObj)) {
14736                            button.disabled = false;
14737                            button.setAttribute('aria-disabled', false);
14738                        }
14739                    } else {
14740                        button.disabled = false;
14741                        button.setAttribute('aria-disabled', false);
14742                    }
14743                });
14744
14745                SMSCodeButton.maxCountOver.isLimitOver = false;
14746                SMSCodeButton.maxCountOver.limitedMobileNumber = '';
14747
14748                if (mobileNumberInput.id === SMSCodeButton.maxCountOver.mobileNumberInputIds.profile) {
14749                    this.MultiStepForm.clearInputError(mobileNumberInput.name, true);
14750                }
14751            }
14752        };
14753
14754        SMSCodeButton.restoreMaxCountOver = function () {
14755            var multiStepMobileNumberInput = doc.getElementById(SMSCodeButton.maxCountOver.mobileNumberInputIds.multiStep);
14756            var reloginMobileNumberInput = doc.getElementById(SMSCodeButton.maxCountOver.mobileNumberInputIds.relogin);
14757            var profileMobileNumberInput = doc.getElementById(SMSCodeButton.maxCountOver.mobileNumberInputIds.profile);
14758            var input = null;
14759
14760            if (multiStepMobileNumberInput) {
14761                input = multiStepMobileNumberInput;
14762            } else if (reloginMobileNumberInput) {
14763                input = reloginMobileNumberInput;
14764            } else if (profileMobileNumberInput) {
14765                input = profileMobileNumberInput;
14766            }
14767
14768            if (input) {
14769                input.addEventListener('input', SMSCodeButton.enableLimitedButton.bind(this));
14770            }
14771        };
14772
14773        SMSCodeButton.setMaxCountOverDisabled = function (button, mobileNumber) {
14774            if (!button || !mobileNumber) {
14775                return;
14776            }
14777
14778            SMSCodeButton.maxCountOver.isLimitOver = true;
14779            SMSCodeButton.maxCountOver.targetIds.push(button.id);
14780            SMSCodeButton.maxCountOver.limitedMobileNumber = mobileNumber;
14781
14782            SMSCodeButton.toggleResendCount(button, 'hide');
14783            SMSCodeButton.disableButton(button);
14784        };
14785
14786        SMSCodeButton.removeMaxCountOverDisabledInScreen = function (screen) {
14787            var triggerButton = null;
14788
14789            if (!screen) {
14790                return;
14791            }
14792
14793            triggerButton = screen.querySelector(`.${SMSCodeButton.classNames.trigger}`);
14794
14795            if (triggerButton && triggerButton.disabled) {
14796                triggerButton.disabled = false;
14797                triggerButton.setAttribute('aria-disabled', false);
14798            }
14799        };
14800
14801        return SMSCodeButton;
14802    }());
14803
14804    KEYENCE.Form.MobileNumberEdit = (function () {
14805        var idNames = {
14806            beforeMobileCountryID: 'suz_beforeMobileCountryID',
14807            beforeMobileNumberValue: 'suz_beforeMobileNumberValue',
14808            inputVerificationCode: 'suz_verificationCode',
14809            buttonGetVerificationCode: 'suz_verificationCode-getCode'
14810        };
14811
14812        var MobileNumberEdit = {
14813            inputVerificationCode: null,
14814            buttonGetVerificationCode: null
14815        };
14816
14817        MobileNumberEdit.init = function () {
14818            // This step is no longer necessary due to changes in the authentication procedure and has therefore been commented out.
14819            // if (this.isEditProfilePage()) {
14820            //     this.attachInputMobileNumberEvent();
14821            //     this.attachChangeCountryID();
14822            //     this.toggleStatus();
14823            // }
14824        };
14825
14826        MobileNumberEdit.isEditProfilePage = function () {
14827            var beforeMobileCountryInput = document.getElementById(idNames.beforeMobileCountryID);
14828            var beforeMobileNumberValue = document.getElementById(idNames.beforeMobileNumberValue);
14829
14830            if (beforeMobileCountryInput || beforeMobileNumberValue) {
14831                return true;
14832            }
14833
14834            return false;
14835        };
14836
14837        MobileNumberEdit.attachInputMobileNumberEvent = function () {
14838            var input = document.getElementById('suz_mobileNumber');
14839
14840            input.addEventListener('input', function () {
14841                MobileNumberEdit.toggleStatus();
14842            });
14843        };
14844
14845        MobileNumberEdit.attachChangeCountryID = function () {
14846            var select = document.getElementById('suz_mobileCountryID');
14847
14848            select.addEventListener('change', function () {
14849                MobileNumberEdit.toggleStatus();
14850            });
14851        };
14852
14853        MobileNumberEdit.toggleStatus = function (event) {
14854            var verificationCodeInput = document.getElementById('suz_verificationCode');
14855            var verificationCodeButton = document.getElementById('suz_verificationCode-getCode');
14856            var afterValues;
14857            var beforeValues;
14858            var SMSCodeButton = win.KeyenceForm.SMSCodeButton;
14859            var SMSCodeButtonId = 'suz_verificationCode-getCode';
14860
14861            if (!verificationCodeInput || !verificationCodeButton) {
14862                return;
14863            }
14864
14865            afterValues = this.getAfterValues();
14866            beforeValues = this.getBeforeValues();
14867
14868            if (
14869                (afterValues.mobileNumber === beforeValues.mobileNumber) &&
14870                (afterValues.countryId === beforeValues.countryId)
14871            ) {
14872                verificationCodeInput.disabled = true;
14873                verificationCodeButton.disabled = true;
14874                verificationCodeButton.setAttribute('aria-disabled', true);
14875            } else {
14876                verificationCodeInput.disabled = false;
14877                verificationCodeButton.disabled = false;
14878                verificationCodeButton.setAttribute('aria-disabled', false);
14879            }
14880        };
14881
14882        MobileNumberEdit.getBeforeValues = function () {
14883            var values = {
14884                mobileNumber: null,
14885                countryId: null
14886            };
14887            var beforeMobileNumberElem = doc.getElementById('suz_beforeMobileNumber');
14888            var beforeCountryElem = doc.getElementById('suz_beforeMobileCountryID');
14889
14890            if (beforeMobileNumberElem && beforeCountryElem) {
14891                values.mobileNumber = beforeMobileNumberElem.value;
14892                values.countryId = beforeCountryElem.value;
14893            }
14894
14895            return values;
14896        };
14897
14898        MobileNumberEdit.getAfterValues = function () {
14899            var values = {
14900                mobileNumber: null,
14901                countryId: null
14902            };
14903            var mobileNumberElem = doc.getElementById('suz_mobileNumber');
14904            var countryElem = doc.getElementById('suz_mobileCountryID');
14905
14906            if (mobileNumberElem && countryElem) {
14907                values.mobileNumber = mobileNumberElem.value;
14908                values.countryId = countryElem.value;
14909            }
14910
14911            return values;
14912        };
14913
14914        return MobileNumberEdit;
14915    }());
14916
14917    KEYENCE.Form.BlankFieldValidator = (function () {
14918        var MultiStepForm = null;
14919
14920        var PatternValidator = null;
14921        var AvailableValidator = null;
14922        var SMSCodeButton = null;
14923
14924        var names = {
14925            passwordAssistanceActionForm: 'user_passwordAssistanceActionForm',
14926            passwordAssistanceResetForm: 'user_passwordAssistance_resetPasswordActionForm',
14927            withdrawActionForm: 'user_profile_withdrawActionForm',
14928            reloginActionForm: 'user_reloginActionForm',
14929            loginActionForm: 'user_loginActionForm',
14930            unsubscribeConfirmActionForm: 'enews_unsubscribeConfirmActionForm',
14931        };
14932
14933        var classNames = {
14934            trigger: 'js-check-blank',
14935            status: 'is-error-blank'
14936        };
14937
14938        var config = {
14939            isClickedContinueButton: false,
14940        };
14941
14942        var BlankFieldValidator = {
14943            targetForm: null,
14944            formSelector: 'form[name="' + names.passwordAssistanceActionForm + '"], ' +
14945                'form[name="' + names.passwordAssistanceResetForm + '"], ' +
14946                'form[name="' + names.withdrawActionForm + '"], ' +
14947                'form[name="' + names.reloginActionForm + '"], ' +
14948                'form[name="' + names.loginActionForm + '"], ' +
14949                'form[name="' + names.unsubscribeConfirmActionForm + '"]',
14950            fields: null,
14951            classNames: classNames,
14952            config: config,
14953        };
14954
14955        BlankFieldValidator.init = function () {
14956            var fields;
14957
14958            MultiStepForm = window.MultiStepForm;
14959            this.targetForm = doc.querySelector(this.formSelector);
14960            this.multiStepForm = doc.querySelector('#' + MultiStepForm.idNames.trigger);
14961            fields = doc.querySelectorAll('.' + classNames.trigger);
14962            PatternValidator = win.KeyenceForm.PatternMatchValidator;
14963            AvailableValidator = win.KeyenceForm.AvailableValidator;
14964            SMSCodeButton = win.KeyenceForm.SMSCodeButton;
14965
14966            if (
14967                (this.targetForm && fields.length) ||
14968                (this.multiStepForm && fields.length)
14969            ) {
14970                this.attachBlurEvent();
14971            }
14972        };
14973
14974        BlankFieldValidator.isActionPwdAssistance = function () {
14975            var actionValue = $(this.targetForm).attr('action');
14976
14977            if (new RegExp(MultiStepForm.urls.actionPwdAssistance).test(actionValue)) {
14978                return true;
14979            }
14980
14981            return false;
14982        };
14983
14984        BlankFieldValidator.attachBlurEvent = function () {
14985            $(this.formSelector + ', #' + MultiStepForm.idNames.trigger).on('blur', '.' + classNames.trigger, function () {
14986                var MobileNumberValidator = win.KeyenceForm.MobileNumberValidator;
14987                var ControlErrorDisplay = KeyenceForm.ControlErrorDisplay;
14988                var field = this;
14989
14990                if (SMSCodeButton.maxCountOver.isLimitOver &&
14991                    Object.values(SMSCodeButton.maxCountOver.mobileNumberInputIds).includes(field.id)
14992                ) {
14993                    return;
14994                }
14995
14996                if (!ControlErrorDisplay.isTriggerClicked(field)) {
14997                    return;
14998                }
14999
15000                if (((field.id === 'checkRegistered') || (field.id === 'checkMobileNumber'))
15001                    && !config.isClickedContinueButton) {
15002
15003                    if (BlankFieldValidator.isBlank(field)) {
15004                        MultiStepForm.clearInputError(field.name, true);
15005                        field.classList.add(classNames.status);
15006                        field.classList.remove(MobileNumberValidator.classNames.status);
15007                        field.classList.remove(PatternValidator.classNames.status);
15008                        AvailableValidator.removeUnavailableStatus(field.name);
15009                    } else if (!field.classList.contains(PatternValidator.classNames.status)
15010                        && !field.classList.contains(MobileNumberValidator.classNames.status)) {
15011                        MultiStepForm.clearInputError(field.name, true);
15012                        field.classList.remove(classNames.status);
15013                    }
15014
15015                    return;
15016                }
15017
15018                if (BlankFieldValidator.isBlank(field)) {
15019                    MultiStepForm.insertErrorText(field.name, 'data-message-required');
15020                    field.classList.add(classNames.status);
15021                    field.classList.remove(MobileNumberValidator.classNames.status);
15022                    field.classList.remove(PatternValidator.classNames.status);
15023                    AvailableValidator.removeUnavailableStatus(field.name);
15024                } else if (!field.classList.contains(PatternValidator.classNames.status)
15025                    && !field.classList.contains(MobileNumberValidator.classNames.status)) {
15026                    MultiStepForm.clearInputError(field.name, true);
15027                    field.classList.remove(classNames.status);
15028                }
15029            });
15030        };
15031
15032        BlankFieldValidator.isBlank = function (field) {
15033            if (field.value === '' && !field.disabled) {
15034                return true;
15035            }
15036
15037            return false;
15038        };
15039
15040        BlankFieldValidator.validateFieldAll = function (fieldList) {
15041            var hasError = false;
15042
15043            if (!fieldList || !fieldList.length) {
15044                return hasError;
15045            }
15046
15047            Array.prototype.forEach.call(fieldList, function (field, index) {
15048                if ($(field).is(':visible')) {
15049                    if (BlankFieldValidator.isBlank(field)) {
15050                        MultiStepForm.insertErrorText(field.name, 'data-message-required');
15051                        field.classList.add(classNames.status);
15052
15053                        hasError = true;
15054                    } else {
15055                        MultiStepForm.clearInputError(field.name, true);
15056                        field.classList.remove(classNames.status);
15057                    }
15058                }
15059            });
15060
15061            return hasError;
15062        };
15063
15064        BlankFieldValidator.asyncValidateFieldAll = function (fieldList) {
15065            var deferred = new $.Deferred();
15066            var hasError = false;
15067            var lastIndex;
15068
15069            if (!fieldList || !fieldList.length) {
15070                return deferred.resolve(hasError);
15071            }
15072
15073            lastIndex = fieldList.length - 1;
15074
15075            Array.prototype.forEach.call(fieldList, function (field, index) {
15076                if ($(field).is(':visible')) {
15077                    if (BlankFieldValidator.isBlank(field)) {
15078                        MultiStepForm.insertErrorText(field.name, 'data-message-required');
15079                        field.classList.add(classNames.status);
15080
15081                        hasError = true;
15082                    } else {
15083                        MultiStepForm.clearInputError(field.name, true);
15084                        field.classList.remove(classNames.status);
15085                    }
15086                }
15087
15088                if (lastIndex === index) {
15089                    deferred.resolve(hasError);
15090                }
15091            });
15092
15093            return deferred.promise();
15094        };
15095
15096        return BlankFieldValidator;
15097    }());
15098
15099    KEYENCE.Form.PatternMatchValidator = (function () {
15100        var MultiStepForm = null;
15101
15102        var BlankFieldValidator = null;
15103        var AvailableValidator = null;
15104        var SMSCodeButton = null;
15105
15106        var names = {
15107            passwordAssistanceActionForm: 'user_passwordAssistanceActionForm',
15108            passwordAssistanceResetForm: 'user_passwordAssistance_resetPasswordActionForm',
15109            withdrawActionForm: 'user_profile_withdrawActionForm',
15110            reloginActionForm: 'user_reloginActionForm',
15111            loginActionForm: 'user_loginActionForm',
15112        };
15113
15114        var classNames = {
15115            trigger: 'js-check-pattern',
15116            status: 'is-error-pattern',
15117            replaceValueTrigger: 'js-replaceValueWithCorrect',
15118        };
15119
15120        var PatternMatchValidator = {
15121            targetForm: null,
15122            formSelector: 'form[name="' + names.passwordAssistanceActionForm + '"], ' +
15123                'form[name="' + names.passwordAssistanceResetForm + '"], ' +
15124                'form[name="' + names.withdrawActionForm + '"], ' +
15125                'form[name="' + names.reloginActionForm + '"], ' +
15126                'form[name="' + names.loginActionForm + '"]',
15127            classNames: classNames,
15128        };
15129
15130        PatternMatchValidator.init = function () {
15131            var fields;
15132
15133            MultiStepForm = win.MultiStepForm;
15134            this.targetForm = doc.querySelector(this.formSelector);
15135            this.multiStepForm = doc.querySelector('#' + MultiStepForm.idNames.trigger);
15136            fields = doc.querySelectorAll('.' + classNames.trigger);
15137            BlankFieldValidator = win.KeyenceForm.BlankFieldValidator;
15138            AvailableValidator = win.KeyenceForm.AvailableValidator;
15139            SMSCodeButton = win.KeyenceForm.SMSCodeButton;
15140
15141            if (
15142                (this.targetForm && fields.length) ||
15143                (this.multiStepForm && fields.length)
15144            ) {
15145                this.attachBlurEvent();
15146            }
15147        };
15148
15149        PatternMatchValidator.attachBlurEvent = function () {
15150            $(this.formSelector + ', #' + MultiStepForm.idNames.trigger).on('blur', '.' + classNames.trigger, function () {
15151                var field = this;
15152                var fieldWrapper = null;
15153                var ControlErrorDisplay = KeyenceForm.ControlErrorDisplay;
15154
15155                if (SMSCodeButton.maxCountOver.isLimitOver &&
15156                    Object.values(SMSCodeButton.maxCountOver.mobileNumberInputIds).includes(field.id)
15157                ) {
15158                    return;
15159                }
15160
15161                if (!ControlErrorDisplay.isTriggerClicked(field)) {
15162                    if (BlankFieldValidator.isBlank(field)) {
15163                        AvailableValidator.runValidate(field.name, false);
15164
15165                        return;
15166                    } else {
15167                        field.classList.remove(BlankFieldValidator.classNames.status);
15168                    }
15169
15170                    AvailableValidator.runValidate(field.name, true).always(function (field) {
15171                        if (field) {
15172                            fieldWrapper = AvailableValidator.getFieldWrapper(field.name);
15173                        }
15174
15175                        if (fieldWrapper &&
15176                            MultiStepForm.PreForm.isClickContinueRunning &&
15177                            (field.classList.contains('is-error-pattern') ||
15178                            field.classList.contains('is-error-format'))) {
15179                            delete fieldWrapper.dataset.unavailable;
15180                        } else if (fieldWrapper &&
15181                            fieldWrapper.classList.contains('is-error') &&
15182                            fieldWrapper.dataset.unavailable) {
15183                            fieldWrapper.classList.remove('is-error')
15184                            AvailableValidator.changeDisplayNoteText(field.name);
15185                        } else {
15186                            AvailableValidator.changeDisplayNoteText(field.name);
15187                        }
15188
15189                        MultiStepForm.PreForm.isClickContinueRunning = false;
15190                    });
15191                } else {
15192                    if (BlankFieldValidator.isBlank(field)) {
15193                        return;
15194                    } else {
15195                        field.classList.remove(BlankFieldValidator.classNames.status);
15196                    }
15197
15198                    AvailableValidator.runValidate(field.name, true).always(function (field) {
15199                        PatternMatchValidator.updateFieldStatus(field);
15200                        AvailableValidator.changeDisplayNoteText(field.name);
15201                    });
15202                }
15203            });
15204        };
15205
15206        PatternMatchValidator.validateFieldAll = function (fieldList) {
15207            var deferred = new $.Deferred();
15208            var hasError = false;
15209            var lastIndex = 0;
15210
15211            if (!fieldList || !fieldList.length) {
15212                return deferred.resolve(hasError);
15213            }
15214
15215            lastIndex = fieldList.length - 1;
15216
15217            Array.prototype.forEach.call(fieldList, function (field, index) {
15218                if ($(field).is(':hidden') || BlankFieldValidator.isBlank(field)) {
15219                    if (lastIndex === index) {
15220                        deferred.resolve(hasError);
15221                    }
15222
15223                    return false;
15224                }
15225
15226                if (field.dataset.formatPattern !== 'new-password') {
15227                    PatternMatchValidator.updateFieldStatus(field);
15228
15229                    if (field.classList.contains(classNames.status)) {
15230                        hasError = true;
15231                    }
15232
15233                    if (lastIndex === index) {
15234                        deferred.resolve(hasError);
15235                    }
15236
15237                    return false;
15238                } else {
15239                    PatternMatchValidator.checkPasswordErrorMessage($(field)).done(function (status) {
15240                        if (status.message) {
15241                            MultiStepForm.insertErrorText(field.name, status.message);
15242                            field.classList.add(classNames.status);
15243
15244                            hasError = true;
15245                        } else {
15246                            MultiStepForm.clearInputError(field.name, true);
15247                            field.classList.remove(classNames.status);
15248                        }
15249
15250                        if (lastIndex === index) {
15251                            deferred.resolve(hasError);
15252                        }
15253                    }).fail(function (err) {
15254                        deferred.resolve(hasError);
15255                    });
15256                }
15257            });
15258
15259            return deferred.promise();
15260        };
15261
15262        PatternMatchValidator.updateFieldStatus = function (field) {
15263            var formatPattarn = field.dataset.formatPattern;
15264
15265            if (typeof field !== 'object' || !field) {
15266                return;
15267            }
15268
15269            switch (formatPattarn) {
15270                case 'tel':
15271                    PatternMatchValidator.updateTelField(field);
15272                    break;
15273                case 'email':
15274                    PatternMatchValidator.updateMailField(field);
15275                    break;
15276                case 'smscode':
15277                    PatternMatchValidator.updateSmsCodeField(field);
15278                    break;
15279                case 'new-password':
15280                    PatternMatchValidator.updateNewPasswordField(field);
15281                    break;
15282                case 'zipCode':
15283                    PatternMatchValidator.updateZipcodeField(field);
15284                    break;
15285                default:
15286                    break;
15287            }
15288        };
15289
15290        PatternMatchValidator.updateTelField = function (field) {
15291            var countryID = KeyenceForm.MobileNumberValidator.getCountryIdByInput(field);
15292            var isError = false;
15293
15294            if (field.value.length === 0 || !$(field).is(':visible')) {
15295                return;
15296            }
15297
15298            if (countryID === 'CN') {
15299                if (/^[1][0-9]{10}/.test(field.value) && field.value.length <= 32) {
15300                    MultiStepForm.clearInputError(field.name, true);
15301                    field.classList.remove(KeyenceForm.MobileNumberValidator.classNames.status);
15302                } else {
15303                    isError = true;
15304                }
15305            }
15306
15307            if (countryID === 'KR') {
15308                if (/^[0-9]{11}$/.test(field.value)) {
15309                    MultiStepForm.clearInputError(field.name, true);
15310                    field.classList.remove(KeyenceForm.MobileNumberValidator.classNames.status);
15311                } else {
15312                    isError = true;
15313                }
15314            }
15315
15316            if (isError) {
15317                MultiStepForm.insertErrorText(field.name, 'data-message-mobile-number-format');
15318                field.classList.add(KeyenceForm.MobileNumberValidator.classNames.status);
15319            }
15320        };
15321
15322        PatternMatchValidator.updateMailField = function (field) {
15323            if (/^[a-zA-Z0-9\.!#$%&'*+\/=?^_`{|}~\-]+@[a-zA-Z0-9\-]+(\.[A-Za-z0-9\-]+)+$/.test(field.value)) {
15324                MultiStepForm.clearInputError(field.name, true);
15325                field.classList.remove(classNames.status);
15326            } else {
15327                MultiStepForm.insertErrorText(field.name, 'data-message-email-address-format');
15328                field.classList.add(classNames.status);
15329            }
15330        };
15331
15332        PatternMatchValidator.updateSmsCodeField = function (field) {
15333            if (/^[0-9]+$/.test(field.value)) {
15334                MultiStepForm.clearInputError(field.name, true);
15335                field.classList.remove(classNames.status);
15336            } else {
15337                MultiStepForm.insertErrorText(field.name, 'data-message-verification-code-format');
15338                field.classList.add(classNames.status);
15339            }
15340        };
15341
15342        PatternMatchValidator.updateNewPasswordField = function (field) {
15343            PatternMatchValidator.checkPasswordErrorMessage($(field)).done(function (status) {
15344                if (status.message) {
15345                    MultiStepForm.insertErrorText(field.name, status.message);
15346                    field.classList.add(classNames.status);
15347                } else {
15348                    MultiStepForm.clearInputError(field.name, true);
15349                    field.classList.remove(classNames.status);
15350                }
15351            }).fail(function (err) {
15352                console.log(err);
15353            });
15354        };
15355
15356        PatternMatchValidator.updateZipcodeField = function (field) {
15357            var countryIdElement = this.getCountryValue();
15358            var zipCodeValue = '';
15359
15360            if (!countryIdElement) {
15361                return;
15362            }
15363
15364            if (countryIdElement === 'CA' && field.value.length !== 0 && $(field).is(':visible')) {
15365                if (/^[a-zA-Z][0-9][a-zA-Z][^a-zA-Z0-9]?[0-9][a-zA-Z][0-9]$/.test(field.value)) {
15366                    zipCodeValue = field.value.slice(0, 3) + ' ' + field.value.slice(-3);
15367                }
15368
15369                if (zipCodeValue) {
15370                    field.value = zipCodeValue.toUpperCase();
15371                    field.classList.remove(classNames.status);
15372                } else {
15373                    if (KeyenceForm.ControlErrorDisplay.isTriggerClicked(field)) {
15374                        MultiStepForm.insertErrorText(field.name, 'data-message-zipcode-format');
15375                        field.classList.add(classNames.status);
15376                    }
15377                }
15378            } else if (countryIdElement === 'CA' && field.value.length === 0 && field.classList.contains(classNames.status)) {
15379                field.classList.remove(classNames.status);
15380            }
15381        };
15382
15383        PatternMatchValidator.checkPasswordErrorMessage = function (field) {
15384            var deferred = new $.Deferred();
15385            var val = field.val();
15386            var requestURL = win.suz_getCurrentDomain() + '/ajax/validationAjax/customerRegistrationFieldValidator/';
15387
15388            if (field.attr('type')==='checkbox') {
15389                if (!field.prop('checked')) {
15390                    val = "";
15391                }
15392            }
15393
15394            $.ajax({
15395                url: requestURL,
15396                data: {
15397                    fieldName : 'password',
15398                    fieldValue : encodeURIComponent(val),
15399                    token : $("input[name='org.apache.struts.taglib.html.TOKEN']").attr("value")
15400                },
15401                dataType: "jsonp",
15402                jsonp: "callback",
15403                scriptCharset: "UTF-8"
15404            }).then(function (data) {
15405                deferred.resolve(data);
15406            },
15407            function (req, stat, err) {
15408                if (req.status == 401) {
15409                    win.location.href = win.suz_getCurrentDomain() + "/error/tokenError.jsp";
15410
15411                    return false;
15412                }
15413                deferred.reject(err);
15414                return false;
15415            });
15416
15417            return deferred.promise();
15418        };
15419
15420        PatternMatchValidator.getCountryValue = function () {
15421            var country = doc.getElementById('suz_countryID');
15422            var optionElements = null;
15423            var CountryValue = null;
15424
15425            if(!country) {
15426                return;
15427            }
15428
15429            optionElements = country.options;
15430            CountryValue = optionElements[country.selectedIndex].value;
15431
15432            return CountryValue;
15433        };
15434
15435        return PatternMatchValidator;
15436    }());
15437
15438    KEYENCE.Form.MobileNumberValidator = (function () {
15439        var MultiStepForm = null;
15440
15441        var classNames = {
15442            trigger: 'js-checkMobileNumberFormat',
15443            status: 'is-error-format'
15444        };
15445
15446        var names = {
15447            passwordAssistanceActionForm: 'user_passwordAssistanceActionForm',
15448            passwordAssistanceResetForm: 'user_passwordAssistance_resetPasswordActionForm',
15449            withdrawActionForm: 'user_profile_withdrawActionForm',
15450            reloginActionForm: 'user_reloginActionForm',
15451            loginActionForm: 'user_loginActionForm',
15452        };
15453
15454        var MobileNumberValidator = {
15455            targetForm: null,
15456            formSelector: 'form[name="' + names.passwordAssistanceActionForm + '"], ' +
15457                'form[name="' + names.user_passwordAssistance_resetPasswordActionForm + '"], ' +
15458                'form[name="' + names.withdrawActionForm + '"], ' +
15459                'form[name="' + names.reloginActionForm + '"], ' +
15460                'form[name="' + names.loginActionForm + '"]',
15461            classNames: classNames,
15462            multiStepForm: null
15463        };
15464
15465        MobileNumberValidator.init = function () {
15466            var targets = doc.querySelectorAll('.' + classNames.trigger);
15467
15468            MultiStepForm = window.MultiStepForm;
15469            this.targetForm = doc.querySelector(win.KeyenceForm.CommonSubmitValidator.formSelector);
15470            this.multiStepForm = doc.querySelector('#' + MultiStepForm.idNames.trigger);
15471
15472            if ((this.targetForm && targets.length) || (this.multiStepForm && targets.length)) {
15473                // Removed input event. To change to Lost Focus.
15474                // this.attachInputEvent();
15475            }
15476        };
15477
15478        MobileNumberValidator.validateFieldAll = function (fields) {
15479            var deferred = new $.Deferred();
15480            var hasError = false;
15481            var lastIndex;
15482
15483            if (!fields) {
15484                return deferred.resolve(hasError);
15485            }
15486
15487            lastIndex = fields.length - 1;
15488
15489            Array.prototype.forEach.call(fields, function (field, index) {
15490                var value = field.value;
15491                var name = field.name;
15492                var countryID = MobileNumberValidator.getCountryIdByInput(field);
15493
15494                if ((countryID !== 'CN' && countryID !== 'KR') || field.value.length === 0 || !$(field).is(':visible')) {
15495                    if (lastIndex === index) {
15496                        deferred.resolve(hasError);
15497                    }
15498
15499                    return false;
15500                }
15501
15502                MobileNumberValidator.checkFormat(countryID, value).done(function (data) {
15503                    if (data.message) {
15504                        MultiStepForm.insertErrorText(name, data.message);
15505                        field.classList.add(classNames.status);
15506
15507                        hasError = true;
15508                    } else {
15509                        MultiStepForm.clearInputError(name, true);
15510                        field.classList.remove(classNames.status);
15511                    }
15512
15513                    if (lastIndex === index) {
15514                        deferred.resolve(hasError);
15515                    }
15516                });
15517            });
15518
15519            return deferred.promise();
15520        };
15521
15522
15523        MobileNumberValidator.checkFormat = function (mobileCountryId, mobileNumber) {
15524            var options;
15525            var deferred = new $.Deferred();
15526            var url;
15527
15528            url = win.suz_getCurrentDomain() + '/ajax/registrationAjax/mobileNumberValidator/';
15529
15530            options = {
15531                url: url,
15532                data: {
15533                    mobileCountryId: mobileCountryId,
15534                    mobileNumber: mobileNumber
15535                },
15536                dataType: 'jsonp',
15537                jsonp: 'callback',
15538                scriptCharset: 'UTF-8'
15539            };
15540
15541            $.ajax(options).done(function (data) {
15542                deferred.resolve(data);
15543            }).fail(function (jqXHR, textStatus, errorThrown) {
15544                MultiStepForm.asyncErrorHundler(jqXHR.status, textStatus);
15545                deferred.reject(jqXHR, textStatus, errorThrown);
15546            });
15547
15548            return deferred.promise();
15549        };
15550
15551        MobileNumberValidator.getCountryIdByInput = function (input) {
15552            var $select = $(input).prev('.js-selectCountryNumber').find('.js-selectCountryNumber-target');
15553            var countryId = '';
15554
15555            if ($select.length) {
15556                countryId = $select.val();
15557            }
15558
15559            return countryId;
15560        };
15561
15562        MobileNumberValidator.attachInputEvent = function () {
15563            $(this.formSelector + ', #' + MultiStepForm.idNames.trigger).on('input', '.' + classNames.trigger, function () {
15564                var field = this;
15565                var countryID = MobileNumberValidator.getCountryIdByInput(field);
15566
15567                if (field.value.length === 0) {
15568                    return;
15569                }
15570
15571                MobileNumberValidator.checkFormat(countryID, field.value).done(function (data) {
15572                    if (!data.message) {
15573                        MultiStepForm.clearInputError(field.name, true);
15574                    }
15575                });
15576            });
15577        };
15578
15579        return MobileNumberValidator;
15580    }());
15581
15582    KEYENCE.Form.CommonSubmitValidator = (function () {
15583        var MultiStepForm = null;
15584
15585        var canSubmit = false;
15586
15587        var names = {
15588            passwordAssistanceActionForm: 'user_passwordAssistanceActionForm',
15589            passwordAssistanceResetForm: 'user_passwordAssistance_resetPasswordActionForm',
15590            withdrawActionForm: 'user_profile_withdrawActionForm',
15591            reloginActionForm: 'user_reloginActionForm',
15592            loginActionForm: 'user_loginActionForm',
15593            unsubscribeConfirmActionForm: 'enews_unsubscribeConfirmActionForm',
15594        };
15595
15596        var idNames = {
15597            mobileCountryNumber: 'loginCountryNumber',
15598            mobileNumber: 'loginMobileNumber',
15599            verificationCode: 'loginVerificationCode',
15600        }
15601
15602        var CommonSubmitValidator = {
15603            idNames: idNames,
15604            $targetForm: null,
15605            formSelector: 'form[name="' + names.passwordAssistanceActionForm + '"], ' +
15606                'form[name="' + names.passwordAssistanceResetForm + '"], ' +
15607                'form[name="' + names.withdrawActionForm + '"], ' +
15608                'form[name="' + names.reloginActionForm + '"], ' +
15609                'form[name="' + names.loginActionForm + '"], ' +
15610                'form[name="' + names.unsubscribeConfirmActionForm + '"]',
15611            mobileNumberFields: {
15612                countryNumber: null,
15613                countryNumberSelectedOption: null,
15614                number: null,
15615            },
15616            isMobileNumberFields: false,
15617        };
15618
15619        CommonSubmitValidator.init = function () {
15620            MultiStepForm = window.MultiStepForm;
15621            this.$targetForm = $(this.formSelector);
15622
15623            if (this.$targetForm.length) {
15624                MultiStepForm.focusFirstErrorItem(this.$targetForm);
15625                this.attachSubmitEvent();
15626                this.setMobileNumberField();
15627            }
15628        };
15629
15630        CommonSubmitValidator.attachSubmitEvent = function () {
15631            this.$targetForm.on('submit', this.onSubmit);
15632        };
15633
15634        CommonSubmitValidator.setMobileNumberField = function () {
15635            if (!this.isLoginActionForm()) {
15636                return false;
15637            }
15638
15639            this.mobileNumberFields.countryNumber = doc.getElementById(this.idNames.mobileCountryNumber);
15640            this.mobileNumberFields.number = doc.getElementById(this.idNames.mobileNumber);
15641
15642            if (this.mobileNumberFields.countryNumber && this.mobileNumberFields.number) {
15643                this.isMobileNumberFields = true;
15644                this.mobileNumberFields.countryNumberSelectedOption = this.mobileNumberFields.countryNumber.selectedOptions[0];
15645            }
15646        }
15647
15648        CommonSubmitValidator.onSubmit = function (event) {
15649            var FormFilter = KEYENCE.Form.FormFilter;
15650            var commonSendVerificationEmail = KEYENCE.Form.commonSendVerificationEmail;
15651            var BlankFieldValidator = win.KeyenceForm.BlankFieldValidator;
15652            var PatternValidator = win.KeyenceForm.PatternMatchValidator;
15653            var MobileNumberValidator = win.KeyenceForm.MobileNumberValidator;
15654            var ControlErrorDisplay = win.KeyenceForm.ControlErrorDisplay;
15655            var WechatLoginFlow = win.KeyenceForm.WechatLoginFlow;
15656            var mobileNumberFields = doc.querySelectorAll('.' +MobileNumberValidator.classNames.trigger);
15657            var requiredFields = doc.querySelectorAll('.' + Blank
15657FieldValidator.classNames.trigger);
15658            var patternCheckedFields = doc.querySelectorAll('.' + PatternValidator.classNames.trigger);
15659            var SMSCodeField = doc.getElementById('loginVerificationCode');
15660            var deferred1 = new $.Deferred();
15661            var formType = FormFilter.General.getFormType();
15662            var hasBlankError = false;
15663            var ModalPasswordError = win.KeyenceForm.ModalPasswordError;
15664            var controlErrorDispalyTrigger = null;
15665            var wechatLoginActiveTrigger = doc.querySelector(`.${WechatLoginFlow.classNames.isLoginActive}`);
15666            var isWechatLoginL10 = false;
15667
15668            if (
15669                win.KeyenceForm.BlankFieldValidator.isActionPwdAssistance() &&
15670                !doc.querySelector('form[name="' + names.passwordAssistanceActionForm + '"]') &&
15671                !doc.querySelector('form[name="' + names.passwordAssistanceResetForm + '"]')
15672            ) {
15673                return true;
15674            }
15675
15676            if (canSubmit) {
15677                return true;
15678            }
15679
15680            canSubmit = true;
15681
15682            controlErrorDispalyTrigger = event.originalEvent.submitter ? event.originalEvent.submitter : ControlErrorDisplay.browserValidaterTarget;
15683
15684            if (
15685                formType === FormFilter.General.FORM_TYPE.EMAIL ||
15686                formType === FormFilter.General.FORM_TYPE.DEFAULT ||
15687                doc.querySelector('form[name="' + names.passwordAssistanceResetForm + '"]')
15688            ) {
15689                ControlErrorDisplay.setTriggerClickedData(controlErrorDispalyTrigger);
15690
15691                if (requiredFields) {
15692                    hasBlankError = BlankFieldValidator.validateFieldAll(requiredFields);
15693
15694                    if (hasBlankError) {
15695                        canSubmit = false;
15696                    }
15697                }
15698
15699                if (patternCheckedFields) {
15700                    PatternValidator.validateFieldAll(patternCheckedFields).done(function (hasFormatError) {
15701                        if (hasFormatError) {
15702                            MultiStepForm.focusFirstErrorItem(CommonSubmitValidator.$targetForm);
15703
15704                            canSubmit = false;
15705                        }
15706
15707                        deferred1.resolve();
15708                    });
15709                } else {
15710                    deferred1.resolve();
15711                }
15712            } else if (formType === FormFilter.General.FORM_TYPE.MOBILE_NUMBER) {
15713                if (wechatLoginActiveTrigger &&
15714                    WechatLoginFlow.STATE_CODE.current === WechatLoginFlow.STATE_CODE.L10 &&
15715                    CommonSubmitValidator.isLoginActionForm()
15716                ) {
15717                    deferred1.resolve();
15718                    isWechatLoginL10 = true;
15719                }
15720
15721                if (requiredFields && !isWechatLoginL10) {
15722                    hasBlankError = BlankFieldValidator.validateFieldAll(requiredFields);
15723
15724                    if (hasBlankError) {
15725                        canSubmit = false;
15726                    }
15727                }
15728
15729                if (SMSCodeField &&
15730                    !ControlErrorDisplay.isTriggerClicked(SMSCodeField) &&
15731                    !SMSCodeField.classList.contains(BlankFieldValidator.classNames.status) &&
15732                    !isWechatLoginL10
15733                ) {
15734                    PatternValidator.updateFieldStatus(SMSCodeField);
15735
15736                    if (SMSCodeField.classList.contains(PatternValidator.classNames.status)) {
15737                        canSubmit = false;
15738                    }
15739                }
15740
15741                ControlErrorDisplay.setTriggerClickedData(controlErrorDispalyTrigger);
15742
15743                if (mobileNumberFields.length && !isWechatLoginL10) {
15744                    MobileNumberValidator.validateFieldAll(mobileNumberFields).done(function (hasFormatError) {
15745                        if (hasFormatError) {
15746                            MultiStepForm.focusFirstErrorItem(CommonSubmitValidator.$targetForm);
15747
15748                            canSubmit = false;
15749                        }
15750
15751                        if (!wechatLoginActiveTrigger) {
15752                            deferred1.resolve();
15753                        }
15754                    });
15755                } else if (!wechatLoginActiveTrigger &&
15756                    !isWechatLoginL10
15757                ) {
15758                    deferred1.resolve();
15759                }
15760
15761                if (wechatLoginActiveTrigger &&
15762                    CommonSubmitValidator.isMobileNumberFields &&
15763                    !SMSCodeField.classList.contains(BlankFieldValidator.classNames.status) &&
15764                    !SMSCodeField.classList.contains(PatternValidator.classNames.status) &&
15765                    !isWechatLoginL10
15766                ) {
15767                    WechatLoginFlow.checkVerificationCode(
15768                        CommonSubmitValidator.mobileNumberFields.countryNumberSelectedOption.value,
15769                        CommonSubmitValidator.mobileNumberFields.number.value,
15770                        SMSCodeField.value
15771                    ).then((result) => {
15772                        if (result.message) {
15773                            MultiStepForm.insertErrorText(SMSCodeField.name, result.message);
15774                            MultiStepForm.focusFirstErrorItem(CommonSubmitValidator.$targetForm);
15775                            canSubmit = false;
15776                        }
15777
15778                        deferred1.resolve();
15779                    }).catch((error) => {
15780                        deferred1.resolve();
15781                    });
15782                } else if (wechatLoginActiveTrigger &&
15783                    !isWechatLoginL10
15784                ) {
15785                    deferred1.resolve();
15786                }
15787            }
15788
15789            deferred1.promise().done(function () {
15790                if (canSubmit) {
15791                    commonSendVerificationEmail.enableEmailAddress(formType);
15792                    ModalPasswordError.enableErrorCount(formType);
15793
15794                    if (CommonSubmitValidator.isLoginActionForm() && wechatLoginActiveTrigger) {
15795                        WechatLoginFlow?.loginCountryCode.removeAttribute('disabled');
15796                        WechatLoginFlow?.loginMobileNumber.removeAttribute('disabled');
15797                    }
15798
15799                    setTimeout(function () {
15800                        $(CommonSubmitValidator.formSelector).find('input[type="submit"]').trigger('click');
15801                    }, 0);
15802                } else {
15803                    MultiStepForm.focusFirstErrorItem(CommonSubmitValidator.$targetForm);
15804                }
15805            });
15806
15807            return false;
15808        };
15809
15810        CommonSubmitValidator.isLoginActionForm = function () {
15811            if(doc.querySelector('form[name="' + names.loginActionForm + '"]')) {
15812                return true;
15813            }
15814
15815            return false;
15816        };
15817
15818        CommonSubmitValidator.isReloginActionForm = function () {
15819            if(doc.querySelector('form[name="' + names.reloginActionForm + '"]') ||
15820                doc.querySelector('form[name="' + names.withdrawActionForm + '"]')
15821            ) {
15822                return true;
15823            }
15824
15825            return false;
15826        };
15827
15828        return CommonSubmitValidator;
15829    }());
15830
15831    KEYENCE.Form.AvailableValidator = (function () {
15832        var MultiStepForm = null;
15833        var BlankFieldValidator = null;
15834        var PatternMatchValidator = null;
15835        var MultiFactorAuthentication = null;
15836
15837        var AvailableValidator = {
15838            multiStepForm: null,
15839            preform: null,
15840            RegisterForm: null,
15841            targetWrapperClass: {
15842                email: 'js-validateEmailAvailable',
15843                phone: 'js-validatePhoneAvailable',
15844                mobile: 'js-validateMobileAvailable'
15845            },
15846            targetClass: {
15847                emailAddress: 'js-validateEmailAvailable-target',
15848                phoneCountryId: 'js-validatePhoneAvailable-countryId',
15849                phoneNumber: 'js-validatePhoneAvailable-number',
15850                mobileCountryId: 'js-validateMobileAvailable-countryId',
15851                mobileNumber: 'js-validateMobileAvailable-number',
15852                status: 'is-unavailable'
15853            },
15854            targetElements: {
15855                phoneNumber: null,
15856                mobileNumber: null,
15857                registerEmailAddress: null,
15858            },
15859            targetKey: {
15860                email: 'email',
15861                mobile: 'mobile',
15862                phone: 'phone'
15863            },
15864            targetData: {
15865                targetWrapper: null,
15866                emailAddressElement: null,
15867                numberElement: null,
15868                countryIdElement: null,
15869                emailAddressValue: '',
15870                numberValue: '',
15871                countryIdValue: '',
15872                url: '',
15873                type: ''
15874            },
15875            apiUrl: {
15876                email: 'https://emailvalidation.abstractapi.com/v1/?email=',
15877                phone: 'https://phonevalidation.abstractapi.com/v1/?phone='
15878            },
15879            apiKey: {
15880                email: {
15881                    KA: 'api_key=f9e036567bfc45faaa30f137cd49dbe2',
15882                    KC: 'api_key=20a1603bfb44481482fddfa0083c84a8',
15883                    KD: 'api_key=a4dd7af167794df9854b6d1a43d149ca',
15884                    other: 'api_key=d295ade92f5441ef8dfba512e251ff40'
15885                },
15886                phone: {
15887                    KA: 'api_key=0f96bf50834f431aaa97290c4df8d12d',
15888                    KC: 'api_key=ac2859436219450493b185a70c9bdfa4',
15889                    KD: 'api_key=bf72f74f189f4c858e2b10e0237592ec',
15890                    other: 'api_key=73202111e94747509ade48cfa214f8b3'
15891                },
15892                current: {
15893                    email: '',
15894                    phone: ''
15895                }
15896            },
15897            config: {
15898                registerTargets: null,
15899                registerTargetsLength: 0,
15900                isRunningVerification: false,
15901                isUnavailable: false,
15902                preFormProcessingEventObject: null,
15903                registerProcessingEventObject: null,
15904                registerCurrentPanelType: '',
15905                currentArea: null,
15906                currentTarget: null,
15907                isReturnFirstTimePreForm: false,
15908                isPreFormContinueBlocked: false,
15909                isRegisterContinueBlocked: false,
15910                isStoppingPhoneNumberCopy: false,
15911                isPressedEnterOnEditProfileForm: false
15912            },
15913            processingUnblocked: {
15914                email: false,
15915                signInMobile: false
15916            },
15917            validateCancel: {
15918                country: {
15919                    email: [],
15920                    mobile: ['KC'],
15921                    phone: ['KC']
15922                },
15923                regularExpression: {
15924                    /* ALL: [
15925                         ['email', '^[a-zA-Z0-9\\.!#$%&\'*+\/=?^_`{|}~\-]+@([a-zA-Z0-9\-]+\\.){2,}com$']
15926                    ],
15927                    KA: [
15928                        ['mobile', '^\\+1[0-9]{11}$'],
15929                        ['phone', '^\\+1[0-9]{11}$']
15930                    ] */
15931                },
15932                cancelData: {
15933                    email: false,
15934                    mobile: false,
15935                    phone: false,
15936                    regularExpression: {
15937                        email: [],
15938                        mobile: [],
15939                        phone: []
15940                    }
15941                }
15942            }
15943        };
15944
15945        AvailableValidator.init = function () {
15946            MultiStepForm = win.MultiStepForm;
15947            this.multiStepForm = doc.getElementById(MultiStepForm.idNames.trigger);
15948            this.preform = doc.getElementById(MultiStepForm.PreForm.idNames.root);
15949            this.RegisterForm = doc.getElementById(MultiStepForm.Register.idNames.regForm);
15950
15951            BlankFieldValidator = win.KeyenceForm.BlankFieldValidator;
15952            PatternMatchValidator = win.KeyenceForm.PatternMatchValidator;
15953            MultiFactorAuthentication = win.KeyenceForm.MultiFactorAuthentication
15954
15955            if(!this.multiStepForm) {
15956                return;
15957            }
15958
15959            this.setCancelData();
15960            this.setCurrentApiKey();
15961
15962            if (this.preform) {
15963                this.setTriggerElements(this.preform);
15964            }
15965
15966            if (this.RegisterForm) {
15967                this.setTriggerElements(this.RegisterForm);
15968                this.setRegisterElements();
15969                this.setTargetBlockStatus();
15970                this.setMutationObserver();
15971            }
15972
15973            if (MultiStepForm.isEditProfileForm()) {
15974                this.isStoppingPhoneNumberCopy = true;
15975                this.checkAvailableAllTargets();
15976            }
15977        };
15978
15979        AvailableValidator.setCancelData = function () {
15980            var self = this;
15981            var siteName = self.getSiteData();
15982
15983            if (!siteName) {
15984                return;
15985            }
15986
15987            Object.keys(self.validateCancel.country).forEach(function (type) {
15988                if (self.validateCancel.country[type].indexOf('ALL') !== -1
15989                    || self.validateCancel.country[type].indexOf(siteName) !== -1) {
15990                    self.validateCancel.cancelData[type] = true;
15991                } else {
15992                    self.validateCancel.cancelData[type] = false;
15993                }
15994            });
15995
15996            Object.keys(self.validateCancel.regularExpression).forEach(function (country) {
15997                if (country === 'ALL' || country === siteName) {
15998                    self.validateCancel.regularExpression[country].forEach(function (data) {
15999                        self.validateCancel.cancelData.regularExpression[data[0]].push(data[1]);
16000                    });
16001                }
16002            });
16003        };
16004
16005        AvailableValidator.getSiteData = function () {
16006            var siteId = win.kpi_siteSettings.siteId;
16007            var siteLanguage = win.kpi_siteSettings.siteLang;
16008            var siteName = '';
16009            var targetSite = '';
16010
16011            for (targetSite in MultiStepForm.siteData) {
16012                if (MultiStepForm.siteData[targetSite].id === siteId
16013                    && MultiStepForm.siteData[targetSite].lang === siteLanguage) {
16014                    siteName = targetSite;
16015
16016                    break;
16017                }
16018            }
16019
16020            return siteName;
16021        };
16022
16023        AvailableValidator.setCurrentApiKey = function () {
16024            var siteName = this.getSiteData();
16025
16026            if (!siteName) {
16027                return;
16028            }
16029
16030            if (this.apiKey.email[siteName]) {
16031                this.apiKey.current.email = this.apiKey.email[siteName];
16032            } else {
16033                this.apiKey.current.email = this.apiKey.email.other;
16034            }
16035
16036            if (this.apiKey.phone[siteName]) {
16037                this.apiKey.current.phone = this.apiKey.phone[siteName];
16038            } else {
16039                this.apiKey.current.phone = this.apiKey.phone.other;
16040            }
16041        };
16042
16043        AvailableValidator.setTriggerElements = function (targetForm) {
16044            var targetWrapperElements = null;
16045
16046            Object.keys(this.targetWrapperClass).forEach(function (key) {
16047                targetWrapperElements = targetForm.querySelectorAll('.' + AvailableValidator.targetWrapperClass[key]);
16048
16049                if (targetWrapperElements.length) {
16050                    targetWrapperElements.forEach(function (WrapperElement) {
16051                        AvailableValidator.setValidateEvent(WrapperElement, key, targetForm);
16052                    });
16053                }
16054            });
16055        };
16056
16057        AvailableValidator.setRegisterElements = function () {
16058            this.targetElements.mobileNumber = this.RegisterForm.querySelector('.' + this.targetClass.mobileNumber);
16059            this.targetElements.phoneNumber = this.RegisterForm.querySelector('.' + this.targetClass.phoneNumber);
16060            this.targetElements.registerEmailAddress = this.RegisterForm.querySelector('.' + this.targetClass.emailAddress);
16061            this.config.registerTargets = this.RegisterForm.querySelectorAll('.' + this.targetClass.mobileNumber + ', .' + this.targetClass.phoneNumber + ', .' + this.targetClass.emailAddress);
16062            this.config.registerTargetsLength = this.config.registerTargets.length;
16063        };
16064
16065        AvailableValidator.setTargetBlockStatus = function () {
16066            if (this.targetElements.mobileNumber) {
16067                if (this.isCountryId(this.targetElements.mobileNumber, 'mobile')) {
16068                    this.processingUnblocked.mobile = false;
16069                }
16070            }
16071
16072            if (this.targetElements.phoneNumber) {
16073                if (this.isCountryId(this.targetElements.phoneNumber, 'phone')) {
16074                    this.processingUnblocked.phone = false;
16075                }
16076            }
16077
16078            if (this.targetElements.registerEmailAddress) {
16079                if (!this.targetElements.registerEmailAddress.hasAttribute('hidden')) {
16080                    this.processingUnblocked.registerEmail = false;
16081                }
16082            }
16083        };
16084
16085        AvailableValidator.setValidateEvent = function (targetWrapper, type, targetForm) {
16086            var target = null;
16087            var countryNumber = null;
16088
16089            switch (type) {
16090                case this.targetKey.email:
16091                    target = targetWrapper.querySelector('.' + this.targetClass.emailAddress);
16092
16093                    if (!target) {
16094                        break;
16095                    }
16096
16097                    if (target.hasAttribute('hidden')) {
16098                        break;
16099                    }
16100
16101                    if (this.isCancelTarget(type)) {
16102                        this.setProcessingUnblock(type, targetForm);
16103
16104                        break;
16105                    }
16106
16107                    if (targetForm !== this.RegisterForm
16108                        && !target.classList.contains(PatternMatchValidator.classNames.trigger)) {
16109                        target.addEventListener('blur', this.runEmailValidate.bind(this), false);
16110                    }
16111
16112                    target.addEventListener('blur', this.changeRunningStatus, false);
16113                    target.addEventListener('input', this.changeBlockStatus, false);
16114
16115                    if (targetForm === this.RegisterForm) {
16116                        target.addEventListener('input', this.setCurrentTarget, false);
16117                        target.addEventListener('focus', this.setCurrentTarget, false);
16118                    }
16119
16120                    break;
16121
16122                case this.targetKey.mobile:
16123                    target = targetWrapper.querySelector('.' + this.targetClass.mobileNumber);
16124                    countryNumber = targetWrapper.querySelector('.' + this.targetClass.mobileCountryId);
16125
16126                    if (!target || !countryNumber) {
16127                        break;
16128                    }
16129
16130                    if (this.isCancelTarget(type)) {
16131                        this.setProcessingUnblock(type, targetForm);
16132
16133                        break;
16134                    }
16135
16136                    if (target) {
16137                        if (targetForm !== this.RegisterForm
16138                            && !target.classList.contains(PatternMatchValidator.classNames.trigger)) {
16139                            target.addEventListener('blur', this.runMobileValidate.bind(this), false);
16140                        }
16141
16142                        target.addEventListener('blur', this.changeRunningStatus, false);
16143                        target.addEventListener('input', this.changeBlockStatus, false);
16144
16145                        if (targetForm === this.RegisterForm) {
16146                            target.addEventListener('input', this.setCurrentTarget, false);
16147                            target.addEventListener('focus', this.setCurrentTarget, false);
16148                        }
16149                    }
16150
16151                    if (countryNumber) {
16152                        countryNumber.addEventListener('change', this.runMobileValidate.bind(this), false);
16153                    }
16154
16155                    break;
16156
16157                case this.targetKey.phone:
16158                    target = targetWrapper.querySelector('.' + this.targetClass.phoneNumber);
16159                    countryNumber = targetWrapper.querySelector('.' + this.targetClass.phoneCountryId);
16160
16161                    if (!target || !countryNumber) {
16162                        break;
16163                    }
16164
16165                    if (this.isCancelTarget(type)) {
16166                        this.setProcessingUnblock(type, targetForm);
16167
16168                        break;
16169                    }
16170
16171                    if (target) {
16172                        if (targetForm !== this.RegisterForm
16173                            && !target.classList.contains(PatternMatchValidator.classNames.trigger)) {
16174                            target.addEventListener('blur', this.runPhoneValidate.bind(this), false);
16175                        }
16176
16177                        target.addEventListener('blur', this.changeRunningStatus, false);
16178                        target.addEventListener('input', this.changeBlockStatus, false);
16179
16180                        if (targetForm === this.RegisterForm) {
16181                            target.addEventListener('input', this.setCurrentTarget, false);
16182                            target.addEventListener('focus', this.setCurrentTarget, false);
16183                        }
16184                    }
16185
16186                    if (countryNumber) {
16187                        countryNumber.addEventListener('change', this.runPhoneValidate.bind(this), false);
16188                    }
16189
16190                    break;
16191
16192                default:
16193                    break;
16194            }
16195        };
16196
16197        AvailableValidator.isCancelTarget = function (type) {
16198            if (this.validateCancel.cancelData[type]) {
16199                return true;
16200            }
16201
16202            return false;
16203        };
16204
16205        AvailableValidator.setProcessingUnblock = function (type, targetForm) {
16206            if (targetForm === this.preform) {
16207                if (type === 'email') {
16208                    this.processingUnblocked.email = true;
16209                } else if (type === 'mobile') {
16210                    this.processingUnblocked.signInMobile = true;
16211                }
16212            } else if (targetForm === this.RegisterForm) {
16213                if (type === 'email') {
16214                    this.processingUnblocked.registerEmail = true;
16215                } else if (type === 'mobile') {
16216                    AvailableValidator.processingUnblocked.mobile = true;
16217                } else if (type === 'phone') {
16218                    AvailableValidator.processingUnblocked.phone = true;
16219                }
16220            }
16221        };
16222
16223        AvailableValidator.changeRunningStatus = function (event) {
16224            AvailableValidator.config.isRunningVerification = true;
16225        };
16226
16227        AvailableValidator.changeBlockStatus = function (event) {
16228            var targetElement = event.currentTarget;
16229
16230            if (targetElement.closest('.' + MultiStepForm.Register.classNames.formPanel)
16231                && targetElement.classList.contains(AvailableValidator.targetClass.emailAddress)) {
16232                AvailableValidator.processingUnblocked.registerEmail = false;
16233            } else if (targetElement.classList.contains(AvailableValidator.targetClass.emailAddress)) {
16234                AvailableValidator.processingUnblocked.email = false;
16235            } else if (targetElement.closest('#' + MultiStepForm.PreForm.idNames.root)
16236                && targetElement.classList.contains(AvailableValidator.targetClass.mobileNumber)) {
16237                AvailableValidator.processingUnblocked.signInMobile = false;
16238            } else if (targetElement.closest('.' + MultiStepForm.Register.classNames.formPanel)
16239                && targetElement.classList.contains(AvailableValidator.targetClass.mobileNumber)) {
16240                AvailableValidator.processingUnblocked.mobile = false;
16241            } else if (targetElement.closest('.' + MultiStepForm.Register.classNames.formPanel)
16242                && targetElement.classList.contains(AvailableValidator.targetClass.phoneNumber)) {
16243                AvailableValidator.processingUnblocked.phone = false;
16244            }
16245        };
16246
16247        AvailableValidator.setCurrentTarget = function (event) {
16248            AvailableValidator.config.currentTarget = event.currentTarget;
16249        };
16250
16251        AvailableValidator.runEmailValidate = function (target, $deferred, isErrorCheck) {
16252            var requireElementObject = this.getRequireElements(target, this.targetKey.email);
16253
16254            if (this.isCancelTarget(this.targetKey.email)) {
16255                if ($deferred) {
16256                    $deferred.resolve(target);
16257                }
16258
16259                return;
16260            }
16261
16262            if (!requireElementObject) {
16263                if ($deferred) {
16264                    $deferred.resolve(target);
16265                }
16266
16267                return;
16268            }
16269
16270            if (BlankFieldValidator.isBlank(requireElementObject.target)) {
16271                this.clearNoteText(requireElementObject.targetWrapper);
16272
16273                if ($deferred) {
16274                    $deferred.resolve(target);
16275                }
16276
16277                return;
16278            }
16279
16280            this.initTargetData();
16281            this.setTargetData(requireElementObject.target, requireElementObject.targetWrapper, this.apiKey.current.email, this.targetKey.email);
16282
16283            if (this.isMatchCancelRegularExpression(this.targetData.emailAddressElement.value, this.targetKey.email)) {
16284                this.clearNoteText(requireElementObject.targetWrapper);
16285
16286                if (requireElementObject.target.closest('#' + MultiStepForm.PreForm.idNames.root)) {
16287                    this.processingUnblocked.email = true;
16288                } else if (requireElementObject.target.closest('#' + MultiStepForm.Register.idNames.regForm)) {
16289                    this.processingUnblocked.registerEmail = true;
16290                }
16291
16292                if ($deferred) {
16293                    $deferred.resolve(target);
16294                }
16295            }
16296
16297            this.runAvailableValidate(this.targetData).done(function (resultData) {
16298                if(!resultData) {
16299                    if ($deferred) {
16300                        $deferred.resolve(target);
16301                    }
16302
16303                    return;
16304                }
16305
16306                AvailableValidator.updateEmailStatus(resultData, isErrorCheck);
16307
16308                if ($deferred) {
16309                    $deferred.resolve(target);
16310                }
16311            }).fail(function () {
16312                AvailableValidator.clearNoteText(requireElementObject.targetWrapper);
16313
16314                if ($deferred) {
16315                    $deferred.resolve(target);
16316                }
16317            });
16318        };
16319
16320        AvailableValidator.runMobileValidate = function (target, $deferred, isErrorCheck) {
16321            var requireElementObject = this.getRequireElements(target, this.targetKey.mobile);
16322
16323            if (this.isCancelTarget(this.targetKey.mobile)) {
16324                if ($deferred) {
16325                    $deferred.resolve(target);
16326                }
16327
16328                return;
16329            }
16330
16331            if (!requireElementObject) {
16332                if ($deferred) {
16333                    $deferred.resolve(target);
16334                }
16335
16336                return;
16337            }
16338
16339            if (this.isBlankNumber(requireElementObject, this.targetKey.mobile)) {
16340                this.clearNoteText(requireElementObject.targetWrapper);
16341
16342                if ($deferred) {
16343                    $deferred.resolve(target);
16344                }
16345
16346                return;
16347            }
16348
16349            this.initTargetData();
16350            this.setTargetData(requireElementObject.target, requireElementObject.targetWrapper, this.apiKey.current.phone, this.targetKey.mobile);
16351
16352            if (!this.targetData.numberElement || !this.targetData.countryIdElement ) {
16353                if ($deferred) {
16354                    $deferred.resolve(target);
16355                }
16356
16357                return;
16358            }
16359
16360            if (this.isMatchCancelRegularExpression(this.targetData.countryIdValue + this.targetData.numberValue, this.targetKey.mobile)) {
16361                this.clearNoteText(requireElementObject.targetWrapper);
16362
16363                if (requireElementObject.target.closest('#' + MultiStepForm.PreForm.idNames.root)) {
16364                    this.processingUnblocked.signInMobile = true;
16365                } else if (requireElementObject.t
16365arget.closest('#' + MultiStepForm.Register.idNames.regForm)) {
16366                    this.processingUnblocked.mobile = true;
16367                }
16368
16369                if ($deferred) {
16370                    $deferred.resolve(target);
16371                }
16372            }
16373
16374            this.runAvailableValidate(this.targetData).done(function (resultData) {
16375                if(!resultData) {
16376                    if ($deferred) {
16377                        $deferred.resolve(target);
16378                    }
16379
16380                    return;
16381                }
16382
16383                AvailableValidator.updateNumberStatus(resultData, isErrorCheck, target);
16384
16385                if ($deferred) {
16386                    $deferred.resolve(target);
16387                }
16388            }).fail(function () {
16389                AvailableValidator.clearNoteText(requireElementObject.targetWrapper);
16390
16391                if ($deferred) {
16392                    $deferred.resolve(target);
16393                }
16394            });
16395        };
16396
16397        AvailableValidator.runPhoneValidate = function (target, $deferred, isErrorCheck) {
16398            var requireElementObject = this.getRequireElements(target, this.targetKey.phone);
16399
16400            if (this.isCancelTarget(this.targetKey.phone)) {
16401                if ($deferred) {
16402                    $deferred.resolve(target);
16403                }
16404
16405                return;
16406            }
16407
16408            if (!requireElementObject) {
16409                if ($deferred) {
16410                    $deferred.resolve(target);
16411                }
16412
16413                return;
16414            }
16415
16416            if (this.isBlankNumber(requireElementObject, this.targetKey.phone)) {
16417                this.clearNoteText(requireElementObject.targetWrapper);
16418
16419                if ($deferred) {
16420                    $deferred.resolve(target);
16421                }
16422
16423                return;
16424            }
16425
16426            this.initTargetData();
16427            this.setTargetData(requireElementObject.target, requireElementObject.targetWrapper, this.apiKey.current.phone, this.targetKey.phone);
16428
16429            if (!this.targetData.numberElement || !this.targetData.countryIdElement ) {
16430                if ($deferred) {
16431                    $deferred.resolve(target);
16432                }
16433
16434                return;
16435            }
16436
16437            if (this.isMatchCancelRegularExpression(this.targetData.countryIdValue + this.targetData.numberValue, this.targetKey.phone)) {
16438                this.clearNoteText(requireElementObject.targetWrapper);
16439                this.processingUnblocked.phone = true;
16440
16441                if ($deferred) {
16442                    $deferred.resolve(target);
16443                }
16444            }
16445
16446            this.runAvailableValidate(this.targetData).done(function (resultData) {
16447                if(!resultData) {
16448                    if ($deferred) {
16449                        $deferred.resolve(target);
16450                    }
16451
16452                    return;
16453                }
16454
16455                AvailableValidator.updateNumberStatus(resultData, isErrorCheck);
16456
16457                if ($deferred) {
16458                    $deferred.resolve(target);
16459                }
16460            }).fail(function () {
16461                AvailableValidator.clearNoteText(requireElementObject.targetWrapper);
16462
16463                if ($deferred) {
16464                    $deferred.resolve(target);
16465                }
16466            });
16467        };
16468
16469        AvailableValidator.getRequireElements = function (target, type) {
16470            var targetElement = null;
16471            var requireElements = null;
16472            var targetWrapper = null;
16473
16474            if (target.currentTarget) {
16475                targetElement = target.currentTarget;
16476            } else {
16477                targetElement = target;
16478            }
16479
16480            if (!targetElement || !type) {
16481                return requireElements;
16482            }
16483
16484            targetWrapper = targetElement.closest('.' + this.targetWrapperClass[type]);
16485
16486            if (!targetWrapper) {
16487                return requireElements;
16488            }
16489
16490            return requireElements = {
16491                target: targetElement,
16492                targetWrapper: targetWrapper
16493            };
16494        }
16495
16496        AvailableValidator.hasError = function (targetWrapper) {
16497            if (targetWrapper.classList.contains(MultiStepForm.classNames.isError)) {
16498                return true;
16499            }
16500
16501            return false;
16502        }
16503
16504        AvailableValidator.isBlankNumber = function (requireElementObject, type) {
16505            var isBlank = true;
16506            var numberInput = null;
16507
16508            if (requireElementObject.target.tagName === 'INPUT') {
16509                if (requireElementObject.target.value === '') {
16510                    return isBlank;
16511                } else {
16512                    isBlank = false;
16513                }
16514            } else {
16515                if (type === this.targetKey.mobile) {
16516                    numberInput = requireElementObject.targetWrapper.querySelector('.' + this.targetClass.mobileNumber);
16517                } else {
16518                    numberInput = requireElementObject.targetWrapper.querySelector('.' + this.targetClass.phoneNumber);
16519                }
16520
16521                if (numberInput && numberInput.value === '') {
16522                    return isBlank;
16523                } else {
16524                    isBlank = false;
16525                }
16526            }
16527
16528            return isBlank;
16529        };
16530
16531        AvailableValidator.runAvailableValidate = function (targetData) {
16532            var $deferred = new $.Deferred();
16533            var resultData = {};
16534
16535            if (targetData.url === '') {
16536                $deferred.reject();
16537
16538                return $deferred.reject();
16539            }
16540
16541            $.ajax({
16542                url: targetData.url,
16543                type: 'GET',
16544                dataType: 'json',
16545                timeout: 10000
16546            }).done(function (data) {
16547                if (targetData.type !== AvailableValidator.targetKey.email) {
16548                    resultData = {
16549                        apiData: data,
16550                        targetData: targetData,
16551                        targetType: targetData.type
16552                    }
16553                } else {
16554                    resultData = {
16555                        apiData: data,
16556                        targetData: targetData
16557                    }
16558                }
16559
16560                $deferred.resolve(resultData);
16561            }).fail(function () {
16562                $deferred.reject();
16563            });
16564
16565            return $deferred.promise();
16566        };
16567
16568        AvailableValidator.initTargetData = function () {
16569            this.targetData = {
16570                targetWrapper: null,
16571                emailAddressElement: null,
16572                numberElement: null,
16573                countryIdElement: null,
16574                emailAddressValue: '',
16575                numberValue: '',
16576                countryIdValue: '',
16577                url: '',
16578                type: ''
16579            };
16580        };
16581
16582        AvailableValidator.setTargetData = function (target, targetWrapper, apiKey, type) {
16583            var data = this.targetData;
16584            var optionElements = null;
16585            var reg = null;
16586            var inputValue = '';
16587
16588            data.targetWrapper = targetWrapper;
16589            data.type = type;
16590
16591            if (type === this.targetKey.email) {
16592                data.emailAddressElement = target;
16593                data.url = this.apiUrl.email + target.value + '&' + apiKey;
16594
16595                return;
16596            } else if (type === this.targetKey.mobile) {
16597                data.numberElement = targetWrapper.querySelector('.' + this.targetClass.mobileNumber);
16598                data.countryIdElement = targetWrapper.querySelector('.' + this.targetClass.mobileCountryId);
16599            } else if (type === this.targetKey.phone) {
16600                data.numberElement = targetWrapper.querySelector('.' + this.targetClass.phoneNumber);
16601                data.countryIdElement = targetWrapper.querySelector('.' + this.targetClass.phoneCountryId);
16602            }
16603
16604            if (data.numberElement && data.countryIdElement) {
16605                data.numberValue = data.numberElement.value;
16606                optionElements = data.countryIdElement.options;
16607                data.countryIdValue = optionElements[data.countryIdElement.selectedIndex].dataset.code;
16608            }
16609
16610            if (!data.numberValue || !data.countryIdValue) {
16611                return;
16612            }
16613
16614            if (data.numberValue.indexOf(data.countryIdValue) === 0) {
16615                inputValue = data.numberValue;
16616                reg = new RegExp('\\' + data.countryIdValue);
16617
16618                data.numberValue = inputValue.replace(reg, '');
16619            }
16620
16621            data.url = this.apiUrl.phone + encodeURIComponent(data.countryIdValue + data.numberValue) + '&' + apiKey;
16622        };
16623
16624        AvailableValidator.updateEmailStatus = function (resultData, isErrorCheck) {
16625            var apiData = resultData.apiData;
16626            var targetData = resultData.targetData;
16627
16628            if (apiData.deliverability !== 'DELIVERABLE'
16629                || !apiData.is_valid_format.value) {
16630                this.insertNoteText(targetData.targetWrapper, 'data-message-email-address-available', isErrorCheck);
16631
16632                if (isErrorCheck) {
16633                    targetData.targetWrapper.dataset.unavailable = 'true';
16634                } else {
16635                    this.showNoteText(targetData.targetWrapper);
16636                }
16637
16638                return;
16639            }
16640
16641            this.clearNoteText(targetData.targetWrapper);
16642        };
16643
16644        AvailableValidator.updateNumberStatus = function (resultData, isErrorCheck, targetEvent) {
16645            var apiData = resultData.apiData;
16646            var targetData = resultData.targetData;
16647            var optionElements = null;
16648            var countryCode = '';
16649            var mobileNumberId = win.KeyenceForm.SetMobileNumberToPhoneField.idNames.mobileNumber;
16650
16651            switch (resultData.targetType) {
16652                case this.targetKey.mobile:
16653                    if (!apiData.valid) {
16654                        this.insertNoteText(targetData.targetWrapper, 'data-message-mobile-number-available', isErrorCheck);
16655
16656                        if (isErrorCheck) {
16657                            targetData.targetWrapper.dataset.unavailable = 'true';
16658                        } else {
16659                            this.showNoteText(targetData.targetWrapper);
16660                        }
16661
16662                        break;
16663                    }
16664
16665                    // Do not overwrite the authentication code target value when edit cancel button is pressed
16666                    if (!(targetData.numberElement.disabled
16667                        && targetData.numberElement.classList.contains('js-controlVerificationTargetValue-mobileNumber'))) {
16668                        targetData.numberElement.value = this.getLocalNumber(apiData.country.prefix, apiData.format.international, apiData.format.local, targetData.numberValue);
16669                    }
16670
16671                    if (apiData.type !== this.targetKey.mobile && apiData.type !== 'unknown') {
16672                        this.insertNoteText(targetData.targetWrapper, 'data-message-mobile-number-available', isErrorCheck);
16673
16674                        if (isErrorCheck) {
16675                            targetData.targetWrapper.dataset.unavailable = 'true';
16676                        } else {
16677                            this.showNoteText(targetData.targetWrapper);
16678                        }
16679
16680                        break;
16681                    }
16682
16683                    this.clearNoteText(targetData.targetWrapper);
16684
16685                    if ((targetEvent && targetEvent.type === 'change') ||
16686                        (targetData.numberElement.id === mobileNumberId && !isErrorCheck)) {
16687                        win.KeyenceForm.SetMobileNumberToPhoneField.run(targetEvent.target.name);
16688                    } else if (targetData.numberElement.id === mobileNumberId && isErrorCheck) {
16689                        targetData.targetWrapper.dataset.available = 'true';
16690                    }
16691
16692                    break;
16693
16694                case this.targetKey.phone:
16695                    if (!apiData.valid) {
16696                        this.insertNoteText(targetData.targetWrapper, 'data-message-phone-number-available', isErrorCheck);
16697
16698                        if (isErrorCheck) {
16699                            targetData.targetWrapper.dataset.unavailable = 'true';
16700                        } else {
16701                            this.showNoteText(targetData.targetWrapper);
16702                        }
16703
16704                        break;
16705                    }
16706
16707                    targetData.numberElement.value = this.getLocalNumber(apiData.country.prefix, apiData.format.international, apiData.format.local, targetData.numberValue);
16708
16709                    this.clearNoteText(targetData.targetWrapper);
16710
16711                    if (apiData.type === this.targetKey.mobile &&
16712                        !this.isStoppingPhoneNumberCopy &&
16713                        !win.KeyenceForm.SetMobileNumberToPhoneField.config.isNumberCopyRunning) {
16714                        optionElements = targetData.countryIdElement.options;
16715                        countryCode = optionElements[targetData.countryIdElement.selectedIndex].value;
16716
16717                        this.inputMobileValue(targetData.numberElement.value, targetData.countryIdValue, countryCode);
16718                    }
16719
16720                    break;
16721
16722                default:
16723                    return;
16724            }
16725        };
16726
16727        AvailableValidator.getLocalNumber = function (countryCode, internationalValue, localValue, inputValue) {
16728            var reg = new RegExp('\\' + countryCode);
16729            var internationalFormatValue = internationalValue.replace(reg, '');
16730            var localFormatValue = '';
16731            var localFormatRemovedFirstValue = '';
16732            var firstValueLocalFormat = '';
16733            var formattedValue = inputValue.replace(/[^0-9]/g, '');
16734
16735            if (localValue) {
16736                localFormatValue = localValue.replace(/[^0-9]/g, '');
16737            }
16738
16739            if ((internationalFormatValue && localFormatValue)
16740                && internationalFormatValue !== localFormatValue) {
16741                localFormatRemovedFirstValue = localFormatValue.slice(1);
16742                firstValueLocalFormat = localFormatValue.charAt(0);
16743
16744                if (internationalFormatValue === localFormatRemovedFirstValue) {
16745                    formattedValue = firstValueLocalFormat + internationalFormatValue;
16746                }
16747            } else {
16748                return internationalFormatValue;
16749            }
16750
16751            return formattedValue;
16752        };
16753
16754        AvailableValidator.inputMobileValue = function (numberValue, countryIdValue, countryCode) {
16755            var mobileTriggers = this.RegisterForm.querySelectorAll('.' + this.targetWrapperClass.mobile);
16756            var mobileElement = null;
16757            var mobileCountryNumber = null;
16758            var mobileOption = null;
16759            var blurEvent = new Event('blur');
16760            var changeEvent = new Event('change');
16761
16762            if (!mobileTriggers.length) {
16763                return;
16764            }
16765
16766            mobileTriggers.forEach(function (trigger) {
16767                mobileElement = trigger.querySelector('.' + AvailableValidator.targetClass.mobileNumber);
16768                mobileCountryNumber = trigger.querySelector('.' + AvailableValidator.targetClass.mobileCountryId);
16769
16770                if (mobileElement.id === 'suz_mobileNumber') {
16771                    return;
16772                }
16773
16774                if (mobileElement && mobileCountryNumber && countryCode) {
16775                    mobileOption = mobileCountryNumber.querySelector('option[data-code="' + countryIdValue + '"][value="' + countryCode + '"]');
16776
16777                    if (mobileOption) {
16778                        mobileElement.value = numberValue;
16779                        mobileOption.selected = true;
16780
16781                        AvailableValidator.clearNoteText(trigger);
16782                        mobileCountryNumber.closest('.js-selectCountryNumber').dispatchEvent(changeEvent);
16783                        mobileElement.dispatchEvent(blurEvent);
16784                    }
16785                }
16786            });
16787        };
16788
16789        AvailableValidator.insertNoteText = function (targetWrapper, dataName, isErrorCheck) {
16790            var errorTextElement = '';
16791            var errorText = '';
16792
16793            if (!targetWrapper
16794                || (targetWrapper.classList.contains(MultiStepForm.classNames.isError) && !isErrorCheck)) {
16795                return;
16796            }
16797
16798            errorTextElement = targetWrapper.querySelector('.' + MultiStepForm.classNames.errText);
16799
16800            if (!errorTextElement) {
16801                return;
16802            }
16803
16804            if (dataName === 'data-message-email-address-format'
16805                && typeof errorTextElement.dataset.messageEmailAddressFormat === 'string') {
16806                errorText = errorTextElement.dataset.messageEmailAddressFormat;
16807            } else if (dataName === 'data-message-email-address-available'
16808                && typeof errorTextElement.dataset.messageEmailAddressAvailable === 'string') {
16809                errorText = errorTextElement.dataset.messageEmailAddressAvailable;
16810            } else if (dataName === 'data-message-phone-number-available'
16811                && typeof errorTextElement.dataset.messagePhoneNumberAvailable === 'string') {
16812                errorText = errorTextElement.dataset.messagePhoneNumberAvailable;
16813            } else if (dataName === 'data-message-mobile-number-available'
16814                && typeof errorTextElement.dataset.messageMobileNumberAvailable === 'string') {
16815                errorText = errorTextElement.dataset.messageMobileNumberAvailable;
16816            }
16817
16818            if (isErrorCheck) {
16819                errorTextElement.dataset.unavailableText = errorText;
16820            } else {
16821                errorTextElement.textContent = errorText;
16822            }
16823        };
16824
16825        AvailableValidator.clearNoteText = function (targetWrapper) {
16826            var errorTextElement = '';
16827
16828            if (!targetWrapper) {
16829                return;
16830            }
16831
16832            targetWrapper.classList.remove(this.targetClass.status);
16833            delete targetWrapper.dataset.unavailable;
16834            delete targetWrapper.dataset.unavailableText;
16835            errorTextElement = targetWrapper.querySelector('.' + MultiStepForm.classNames.errText);
16836
16837            if (targetWrapper.classList.contains(MultiStepForm.classNames.isError)
16838                || !errorTextElement) {
16839                return;
16840            }
16841
16842            if (typeof errorTextElement.getAttribute('style') === 'string') {
16843                errorTextElement.style.display = 'none';
16844            } else {
16845                errorTextElement.classList.add('is-hide');
16846            }
16847
16848            errorTextElement.textContent = '';
16849        };
16850
16851        AvailableValidator.setMutationObserver = function () {
16852            var registerFormArea = doc.getElementById(MultiStepForm.Register.idNames.suzRegArea);
16853            var observer = null;
16854            var observersuggestConfig = {
16855                attributeFilter: ['id'],
16856                childList: true
16857            };
16858            var $currentPanel = null;
16859            var $panels = null;
16860            var $state = null;
16861            var formType = null;
16862            var FormFilter = KEYENCE.Form.FormFilter;
16863
16864            if (!registerFormArea) {
16865                return;
16866            }
16867
16868            observer = new MutationObserver(function (record) {
16869                if (record[0].target.id === MultiStepForm.Register.idNames.suzRegArea) {
16870                    AvailableValidator.setTriggerElements(AvailableValidator.RegisterForm);
16871                    AvailableValidator.setRegisterElements(AvailableValidator.RegisterForm);
16872
16873                    $panels = MultiStepForm.Register.getPanels();
16874
16875                    if ($panels.length) {
16876                        $currentPanel = $panels.filter('.' + MultiStepForm.classNames.isCurrent);
16877
16878                        if ($currentPanel.length) {
16879                            $state = $currentPanel.find('#' + MultiStepForm.Register.idNames.state);
16880                        }
16881                    }
16882
16883                    if (($state === null || !$state.length)) {
16884                        AvailableValidator.processingUnblocked = {
16885                            email: false,
16886                            signInMobile: false
16887                        }
16888
16889                        formType = KEYENCE.Form.FormFilter.General.getFormType();
16890
16891                        if (AvailableValidator.isCancelTarget(AvailableValidator.targetKey.email)) {
16892                            if (formType === FormFilter.General.FORM_TYPE.E
16892MAIL) {
16893                                AvailableValidator.processingUnblocked.email = true;
16894                            }
16895                        } else if (AvailableValidator.isCancelTarget(AvailableValidator.targetKey.mobile)) {
16896                            if (formType === FormFilter.General.FORM_TYPE.MOBILE_NUMBER) {
16897                                AvailableValidator.processingUnblocked.signInMobile = true;
16898                            }
16899                        }
16900
16901                        AvailableValidator.setTargetBlockStatus();
16902                    }
16903
16904                    if (MultiStepForm.isEditProfileForm()) {
16905                        AvailableValidator.isStoppingPhoneNumberCopy = true;
16906                        AvailableValidator.checkAvailableAllTargets();
16907                    }
16908                }
16909            });
16910
16911            observer.observe(registerFormArea, observersuggestConfig);
16912        };
16913
16914        AvailableValidator.runValidate = function (fieldName, isErrorCheck) {
16915            var $deferred = new $.Deferred();
16916            var field = null;
16917
16918            if (typeof fieldName === 'string' || fieldName) {
16919                field = doc.querySelector('[name="' + fieldName + '"]');
16920            }
16921
16922            if (!field) {
16923                return $deferred.resolve(field);
16924            }
16925
16926            if (field.classList.contains(this.targetClass.emailAddress)) {
16927                this.runEmailValidate(field, $deferred, isErrorCheck);
16928            } else if (field.classList.contains(this.targetClass.mobileNumber)) {
16929                this.runMobileValidate(field, $deferred, isErrorCheck);
16930            } else if (field.classList.contains(this.targetClass.phoneNumber)) {
16931                this.runPhoneValidate(field, $deferred, isErrorCheck);
16932            } else {
16933                $deferred.resolve(field);
16934            }
16935
16936            return $deferred.promise();
16937        };
16938
16939        AvailableValidator.showNoteText = function (targetWrapper) {
16940            var errorTextElement = targetWrapper.querySelector('.' + MultiStepForm.classNames.errText);
16941
16942            if (!errorTextElement || this.hasError(targetWrapper)) {
16943                return;
16944            }
16945
16946            targetWrapper.classList.add(this.targetClass.status);
16947
16948            if (errorTextElement.dataset.unavailableText) {
16949                errorTextElement.textContent = errorTextElement.dataset.unavailableText;
16950                delete targetWrapper.dataset.unavailableText;
16951            }
16952
16953            if (typeof errorTextElement.getAttribute('style') === 'string') {
16954                errorTextElement.style.display = 'block';
16955            } else {
16956                errorTextElement.classList.remove('is-hide');
16957            }
16958        };
16959
16960        AvailableValidator.hideNoteText = function ($targetArea) {
16961            var $targets = null;
16962
16963            $targets = $targetArea.find('.' + this.targetClass.status);
16964
16965            if (!$targets.length) {
16966                return;
16967            }
16968
16969            $targets.each(function () {
16970                AvailableValidator.clearNoteText(this);
16971            })
16972        };
16973
16974        AvailableValidator.removeUnavailableStatus = function (fieldName) {
16975            var fieldWrapper = null;
16976
16977            if (typeof fieldName === 'string' || fieldName) {
16978                fieldWrapper = this.getFieldWrapper(fieldName);
16979            }
16980
16981            if (fieldWrapper) {
16982                delete fieldWrapper.dataset.unavailable;
16983                delete fieldWrapper.dataset.unavailableText;
16984                fieldWrapper.classList.remove(this.targetClass.status);
16985            }
16986
16987            if (this.config.isRunningVerification) {
16988                this.showNextArea('normal');
16989            }
16990
16991            this.config.isRunningVerification = false;
16992        };
16993
16994        AvailableValidator.changeDisplayNoteText = function (fieldName) {
16995            var fieldWrapper = null;
16996
16997            if (typeof fieldName === 'string' || fieldName) {
16998                fieldWrapper = this.getFieldWrapper(fieldName);
16999            }
17000
17001            win.KeyenceForm.SetMobileNumberToPhoneField.config.isNumberCopyRunning = false;
17002
17003            if (!fieldWrapper) {
17004                return;
17005            }
17006
17007            if (fieldWrapper.dataset.unavailable
17008                && !fieldWrapper.classList.contains(MultiStepForm.classNames.isError)
17009            ) {
17010                if (!MultiFactorAuthentication ||
17011                    (!MultiFactorAuthentication.isSendingVerificationCode &&
17012                    !MultiFactorAuthentication.activeNoteTextHideFlag)
17013                ) {
17014                    this.showNoteText(fieldWrapper);
17015                    this.showNextArea('note');
17016                } else {
17017                    this.clearNoteText(fieldWrapper);
17018                    this.showNextArea('normal');
17019                }
17020
17021                delete fieldWrapper.dataset.unavailable;
17022            } else if (fieldWrapper.classList.contains(MultiStepForm.classNames.isError)) {
17023                this.clearNoteText(fieldWrapper);
17024
17025                if (this.config.isRunningVerification) {
17026                    this.showNextArea('error');
17027                }
17028            } else if (!fieldWrapper.dataset.unavailable
17029                || !fieldWrapper.classList.contains(MultiStepForm.classNames.isError)) {
17030                this.clearNoteText(fieldWrapper);
17031
17032                if (this.config.isRunningVerification) {
17033                    this.showNextArea('normal');
17034                }
17035
17036                if (fieldWrapper.dataset.available) {
17037                    win.KeyenceForm.SetMobileNumberToPhoneField.run(fieldName);
17038                }
17039            }
17040
17041            if (fieldWrapper.dataset.available) {
17042                delete fieldWrapper.dataset.available;
17043            }
17044
17045            this.config.isRunningVerification = false;
17046            MultiFactorAuthentication.activeNoteTextHideFlag = false;
17047        };
17048
17049        AvailableValidator.showNextArea = function (type) {
17050            var formType = KEYENCE.Form.FormFilter.General.getFormType();
17051            var FormFilter = KEYENCE.Form.FormFilter;
17052            var isUnavailableValue = false;
17053
17054            if (!this.processingUnblocked.email && !this.processingUnblocked.signInMobile) {
17055                if (this.config.preFormProcessingEventObject) {
17056                    if (formType === FormFilter.General.FORM_TYPE.MOBILE_NUMBER) {
17057                        if (type === 'note' && !this.processingUnblocked.signInMobile) {
17058                            this.processingUnblocked.signInMobile = true;
17059                            this.config.isReturnFirstTimePreForm = false;
17060                            this.focusFirstTargetItem(this.config.currentArea);
17061                        } else {
17062                            MultiStepForm.PreForm.onClickContinue(this.config.preFormProcessingEventObject);
17063                        }
17064                    } else {
17065                        if (type === 'note' && !this.processingUnblocked.email) {
17066                            this.processingUnblocked.email = true;
17067                            this.config.isReturnFirstTimePreForm = false;
17068                            this.focusFirstTargetItem(this.config.currentArea);
17069                        } else {
17070                            MultiStepForm.PreForm.onClickContinue(this.config.preFormProcessingEventObject);
17071                        }
17072                    }
17073
17074                    this.config.preFormProcessingEventObject = null;
17075
17076                    return;
17077                }
17078            }
17079
17080            if (this.config.registerTargetsLength) {
17081                if (!this.config.registerProcessingEventObject) {
17082                    this.config.currentTarget = null;
17083
17084                    return;
17085                }
17086
17087                isUnavailableValue = this.checkUnavailableValue(this.config.currentArea);
17088
17089                if (isUnavailableValue) {
17090                    this.focusFirstTargetItem(this.config.currentArea);
17091
17092                    this.config.registerCurrentPanelType === '';
17093                    this.config.registerProcessingEventObject = null;
17094                } else {
17095                    this.runRegisterVerification();
17096                }
17097            }
17098        };
17099
17100        AvailableValidator.focusFirstTargetItem = function ($currentArea) {
17101            var $targetElements = null;
17102            var $targetElement = null;
17103
17104            if (!$currentArea.length) {
17105                return;
17106            }
17107
17108            $targetElements = $currentArea.find('[id^="suz_div_"].' + MultiStepForm.classNames.isError + ':visible , [id^="suz_div_"].' + this.targetClass.status + ':visible');
17109
17110            if ($targetElements.length) {
17111                $targetElement = $targetElements.eq(0).find(MultiStepForm.selectors.focusableInputElements);
17112
17113                if ($targetElement.length) {
17114                    if ($targetElement.length >= 2) {
17115                        if (
17116                            $targetElement.get(0).tagName.toLowerCase() === 'select' &&
17117                            $targetElement.get(1).tagName.toLowerCase() === 'input'
17118                        ) {
17119                            $targetElement.get(1).focus();
17120                        }
17121                    } else {
17122                        $targetElement.get(0).focus();
17123                    }
17124                }
17125            }
17126        };
17127
17128        AvailableValidator.getFieldWrapper = function (fieldName) {
17129            var field = doc.querySelector('[name="' + fieldName + '"]');
17130
17131            if (!field) {
17132                return null;
17133            }
17134
17135            if (field.classList.contains(this.targetClass.emailAddress)) {
17136                return field.closest('.' + this.targetWrapperClass.email);
17137            } else if (field.classList.contains(this.targetClass.mobileNumber)) {
17138                return field.closest('.' + this.targetWrapperClass.mobile);
17139            } else if (field.classList.contains(this.targetClass.phoneNumber)) {
17140                return field.closest('.' + this.targetWrapperClass.phone);
17141            } else {
17142                return null;
17143            }
17144        };
17145
17146        AvailableValidator.hasTargetClass = function (field) {
17147            if (field.classList.contains(this.targetClass.emailAddress)
17148                || field.classList.contains(this.targetClass.mobileNumber)
17149                || field.classList.contains(this.targetClass.phoneNumber)) {
17150                return true;
17151            }
17152
17153            return false;
17154        };
17155
17156        AvailableValidator.isProgressStatus = function ($targetArea) {
17157            var $errorElements = $targetArea.find('.' + MultiStepForm.classNames.isError);
17158
17159            if ($errorElements.length) {
17160                return true;
17161            }
17162
17163            if ($targetArea.find('.' + this.targetClass.status).length) {
17164                return false;
17165            }
17166
17167            return true;
17168        };
17169
17170        AvailableValidator.updatePreFormBlockStatus = function (formType, formFilter, preFormObject, event) {
17171            if (this.config.isRunningVerification) {
17172                if (formType === formFilter.General.FORM_TYPE.MOBILE_NUMBER) {
17173                    if (!this.processingUnblocked.signInMobile
17174                        && !this.config.isReturnFirstTimePreForm) {
17175                        this.setPreFormContinueDate(preFormObject.$root, event);
17176                        this.config.isPreFormContinueBlocked = true;
17177
17178                        return;
17179                    }
17180                } else {
17181                    if (!this.processingUnblocked.email
17182                        && !this.config.isReturnFirstTimePreForm) {
17183                        this.setPreFormContinueDate(preFormObject.$root, event);
17184                        this.config.isPreFormContinueBlocked = true;
17185
17186                        return;
17187                    }
17188                }
17189            } else {
17190                if (!this.isProgressStatus(preFormObject.$root)) {
17191                    if (formType === formFilter.General.FORM_TYPE.MOBILE_NUMBER) {
17192                        if (!this.processingUnblocked.signInMobile
17193                            && preFormObject.$formCheckMobileNumber.val() !== '') {
17194                            this.processingUnblocked.signInMobile = true;
17195                            this.config.isPreFormContinueBlocked = true;
17196
17197                            return;
17198                        }
17199                    } else {
17200                        if (!this.processingUnblocked.email
17201                            && preFormObject.$formCheckEmail.val() !== '') {
17202                            this.processingUnblocked.email = true;
17203                            this.config.isPreFormContinueBlocked = true;
17204
17205                            return;
17206                        }
17207                    }
17208                }
17209            }
17210
17211            this.config.isReturnFirstTimePreForm = false;
17212            this.config.isPreFormContinueBlocked = false;
17213        };
17214
17215        AvailableValidator.setPreFormContinueDate = function ($root, event) {
17216            this.config.currentArea = $root;
17217            this.config.preFormProcessingEventObject = event;
17218            this.config.isReturnFirstTimePreForm = true;
17219        };
17220
17221        AvailableValidator.updateRegisterBlockStatus = function ($currentPanel, event, currentPanel) {
17222            var isUnavailableValue = false;
17223
17224            if (this.checkRegisterTargetElements($currentPanel)) {
17225                this.config.isRegisterContinueBlocked = false;
17226
17227                return;
17228            }
17229
17230            if (this.isBlankRequiredField($currentPanel)
17231                && !MultiStepForm.isEditProfileForm()) {
17232                this.config.isRegisterContinueBlocked = false;
17233
17234                if (typeof this.processingUnblocked.mobile !== 'undefined') {
17235                    if (this.isVerificationTarget('mobile', this.targetElements.mobileNumber)) {
17236                        this.processingUnblocked.mobile = true;
17237                    }
17238                }
17239
17240                if (typeof this.processingUnblocked.phone !== 'undefined') {
17241                    if (this.isVerificationTarget('phone', this.targetElements.phoneNumber)) {
17242                        this.processingUnblocked.phone = true;
17243                    }
17244                }
17245
17246                if (typeof this.processingUnblocked.registerEmail !== 'undefined') {
17247                    if (this.isVerificationTarget('registerEmail', this.targetElements.registerEmailAddress)) {
17248                        this.processingUnblocked.registerEmail = true;
17249                    }
17250                }
17251
17252                return;
17253            }
17254
17255            if (this.config.currentTarget) {
17256                this.setRegisterContinueDate($currentPanel, event, currentPanel);
17257                this.config.isRegisterContinueBlocked = true;
17258
17259                return;
17260            }
17261
17262            if (MultiStepForm.isEditProfileForm() && this.isErrorField($currentPanel)) {
17263                this.config.isRegisterContinueBlocked = false;
17264
17265                return;
17266            }
17267
17268            isUnavailableValue = this.checkUnavailableValue($currentPanel);
17269
17270            if (isUnavailableValue) {
17271                this.config.isRegisterContinueBlocked = true;
17272                this.focusFirstTargetItem($currentPanel);
17273
17274                return;
17275            }
17276
17277            this.config.isRegisterContinueBlocked = false;
17278        };
17279
17280        AvailableValidator.checkRegisterTargetElements = function ($targetArea) {
17281            var $targetElements = null;
17282
17283            $targetElements = $targetArea.find('.' + this.targetWrapperClass.mobile + ', .' + this.targetWrapperClass.phone + ', .' + this.targetWrapperClass.email);
17284
17285            if (!$targetElements.length) {
17286                return true;
17287            }
17288
17289            return false;
17290        };
17291
17292        AvailableValidator.isVerificationTarget = function (keyName, field) {
17293            if (!this.processingUnblocked[keyName] && !BlankFieldValidator.isBlank(field)) {
17294                return true;
17295            }
17296
17297            return false;
17298        };
17299
17300        AvailableValidator.setRegisterContinueDate = function ($currentPanel, event, currentPanel) {
17301            this.config.currentArea = $currentPanel;
17302            this.config.registerProcessingEventObject = event;
17303            this.config.registerCurrentPanelType = currentPanel;
17304        };
17305
17306        AvailableValidator.changeDuringValificationStatus = function (event) {
17307            var blurEvent = new Event('blur');
17308
17309            this.config.registerProcessingEventObject = event;
17310            this.config.currentTarget.dispatchEvent(blurEvent);
17311        };
17312
17313        AvailableValidator.isBlankRequiredField = function ($currentPanel) {
17314            var $RequiredFields = $currentPanel.find('.' + MultiStepForm.Register.classNames.required + ':visible');
17315            var isBlank = false;
17316
17317            if (!$RequiredFields.length) {
17318                return isBlank;
17319            }
17320
17321            $RequiredFields.each(function () {
17322                if (BlankFieldValidator.isBlank(this)) {
17323                    isBlank = true;
17324
17325                    return false
17326                }
17327            });
17328
17329            return isBlank;
17330        };
17331
17332        AvailableValidator.runRegisterVerification = function () {
17333            if (this.config.currentTarget && this.config.registerProcessingEventObject) {
17334                this.config.currentTarget = null;
17335
17336                if (this.config.registerCurrentPanelType === 'lastPanel') {
17337                    this.config.registerCurrentPanelType === '';
17338                    this.config.registerProcessingEventObject = null;
17339
17340                    $('#submit2').trigger('click');
17341                } else {
17342                    if (this.config.registerProcessingEventObject.handleObj.type === 'mousedown') {
17343                        this.config.registerCurrentPanelType === '';
17344
17345                        MultiStepForm.Register.showNext(this.config.registerProcessingEventObject, true);
17346                    } else {
17347                        this.config.registerCurrentPanelType === '';
17348
17349                        MultiStepForm.Register.showNext(this.config.registerProcessingEventObject);
17350                    }
17351
17352                    this.config.registerProcessingEventObject = null;
17353                }
17354            }
17355        };
17356
17357        AvailableValidator.isErrorField = function ($targetArea) {
17358            if ($targetArea.find('.' + MultiStepForm.classNames.isError).length) {
17359                return true;
17360            }
17361
17362            return false
17363        };
17364
17365        AvailableValidator.checkAvailableAllTargets = function () {
17366            var wrapperElement = null;
17367
17368            if (this.targetElements.mobileNumber) {
17369                this.runValidate(this.targetElements.mobileNumber.name, true).always(function (target) {
17370                    wrapperElement = target.closest('.' + AvailableValidator.targetWrapperClass.mobile);
17371
17372                    if (!wrapperElement) {
17373                        return;
17374                    }
17375
17376                    if (wrapperElement.dataset.unavailable) {
17377                        AvailableValidator.changeDisplayNoteText(target.name);
17378                        wrapperElement.dataset.unavailable = 'true';
17379                    }
17380                });
17381            }
17382
17383            if (this.targetElements.phoneNumber) {
17384                this.runValidate(this.targetElements.phoneNumber.name, true).always(function (target) {
17385                    AvailableValidator.isStoppingPhoneNumberCopy = false;
17386                    wrapperElement = target.closest('.' + AvailableValidator.targetWrapperClass.phone);
17387
17388                    if (!wrapperElement) {
17389                        return;
17390                    }
17391
17392                    if (wrapperElement.dataset.unavailable) {
17393                        AvailableValidator.changeDisplayNoteText(target.name);
17394                        wrapperElement.dataset.unavailable = 'true';
17395                    }
17396                });
17397            } else {
17398                this.isStoppingPhoneNumberCopy = false;
17399            }
17400
17401            if (this.targetElements.registerEmailAddress) {
17402                this.runValidate(this.targetElements.registerEmailAddress.name, true).always(function (target) {
17403                    wrapperElement = target.closest('.' + AvailableValidator.targetWrapperClass.email);
17404
17405                    if (!wrapperElement) {
17406                        return;
17407                    }
17408
17409                    if (wrapperElement.dataset.unavailable) {
17410                        AvailableValidator.changeDisplayNoteText(target.name);
17411                        wrapperElement.dataset.unavailable = 'true';
17412                    }
17413                });
17414            }
17415        };
17416
17417        AvailableValidator.isBlockedProcessingStatus = function ($currentPanel) {
17418            var isBlocked = false;
17419            var unavailableItems = null;
17420
17421            if (this.checkRegisterTargetElements($currentPanel)) {
17422                return isBlocked;
17423            }
17424
17425            unavailableItems = $currentPanel.find('.' + this.targetClass.status);
17426
17427            if (!unavailableItems.length) {
17428                if (typeof this.processingUnblocked.mobile !== 'undefined') {
17429                    this.processingUnblocked.mobile = true;
17430                }
17431
17432                if (typeof this.processingUnblocked.phone !== 'undefined') {
17433                    this.processingUnblocked.phone = true;
17434                }
17435
17436                if (typeof this.processingUnblocked.registerEmail !== 'undefined') {
17437                    this.processingUnblocked.registerEmail = true;
17438                }
17439
17440                return isBlocked;
17441            }
17442
17443            if (typeof this.processingUnblocked.mobile !== 'undefined') {
17444                if (this.isVerificationTarget('mobile', this.targetElements.mobileNumber)) {
17445                    this.processingUnblocked.mobile = true;
17446                    isBlocked = true;
17447                }
17448            }
17449
17450            if (typeof this.processingUnblocked.phone !== 'undefined') {
17451                if (this.isVerificationTarget('phone', this.targetElements.phoneNumber)) {
17452                    this.processingUnblocked.phone = true;
17453                    isBlocked = true;
17454                }
17455            }
17456
17457            if (typeof this.processingUnblocked.registerEmail !== 'undefined') {
17458                if (this.isVerificationTarget('registerEmail', this.targetElements.registerEmailAddress)) {
17459                    this.processingUnblocked.registerEmail = true;
17460                    isBlocked = true;
17461                }
17462            }
17463
17464            return isBlocked;
17465        };
17466
17467        AvailableValidator.isCountryId = function (inputElement, type) {
17468            var wrapperElement = null;
17469            var CountryId = null;
17470
17471            if (type === 'mobile') {
17472                wrapperElement = inputElement.closest('.' + this.targetWrapperClass.mobile);
17473
17474                if (wrapperElement) {
17475                    CountryId = wrapperElement.querySelector('.' + this.targetClass.mobileCountryId);
17476                }
17477
17478                if (CountryId) {
17479                    return true;
17480                }
17481            } else if (type === 'phone') {
17482                wrapperElement = inputElement.closest('.' + this.targetWrapperClass.phone);
17483
17484                if (wrapperElement) {
17485                    CountryId = wrapperElement.querySelector('.' + this.targetClass.phoneCountryId);
17486                }
17487
17488                if (CountryId) {
17489                    return true;
17490                }
17491            }
17492
17493            return false;
17494        };
17495
17496        AvailableValidator.checkUnavailableValue = function ($currentArea, type) {
17497            var unavailableItems = null;
17498            var isUnavailableValue = false;
17499
17500            unavailableItems = $currentArea.find('.' + this.targetClass.status);
17501
17502            if (!unavailableItems.length) {
17503                if (typeof this.processingUnblocked.mobile !== 'undefined') {
17504                    this.processingUnblocked.mobile = true;
17505                }
17506
17507                if (typeof this.processingUnblocked.phone !== 'undefined') {
17508                    this.processingUnblocked.phone = true;
17509                }
17510
17511                if (typeof this.processingUnblocked.registerEmail !== 'undefined') {
17512                    this.processingUnblocked.registerEmail = true;
17513                }
17514
17515                return isUnavailableValue;
17516            }
17517
17518            if (typeof type === 'string') {
17519                if (typeof this.processingUnblocked.mobile !== 'undefined') {
17520                    if (type === 'note'
17521                        && this.isVerificationTarget('mobile', this.targetElements.mobileNumber)) {
17522                        this.processingUnblocked.mobile = true;
17523                        isUnavailableValue = true;
17524                    }
17525                }
17526
17527                if (typeof this.processingUnblocked.phone !== 'undefined') {
17528                    if (type === 'note'
17529                        && this.isVerificationTarget('phone', this.targetElements.phoneNumber)) {
17530                        this.processingUnblocked.phone = true;
17531                        isUnavailableValue = true;
17532                    }
17533                }
17534
17535                if (typeof this.processingUnblocked.registerEmail !== 'undefined') {
17536                    if (type === 'note'
17537                        && this.isVerificationTarget('registerEmail', this.targetElements.registerEmailAddress)) {
17538                        this.processingUnblocked.registerEmail = true;
17539                        isUnavailableValue = true;
17540                    }
17541                }
17542            } else {
17543                if (typeof this.processingUnblocked.mobile !== 'undefined') {
17544                    if (this.isVerificationTarget('mobile', this.targetElements.mobileNumber)) {
17545                        this.processingUnblocked.mobile = true;
17546                        isUnavailableValue = true;
17547                    }
17548                }
17549
17550                if (typeof this.processingUnblocked.phone !== 'undefined') {
17551                    if (this.isVerificationTarget('phone', this.targetElements.phoneNumber)) {
17552                        this.processingUnblocked.phone = true;
17553                        isUnavailableValue = true;
17554                    }
17555                }
17556
17557                if (typeof this.processingUnblocked.registerEmail !== 'undefined') {
17558                    if (this.isVerificationTarget('registerEmail', this.targetElements.registerEmailAddress)) {
17559                        this.processingUnblocked.registerEmail = true;
17560                        isUnavailableValue = true;
17561                    }
17562                }
17563            }
17564
17565            return isUnavailableValue;
17566        };
17567
17568        AvailableValidator.setUnavailableData = function ($target) {
17569            if ($target.hasClass(this.targetClass.status)) {
17570                $target.attr('data-unavailable', 'true');
17571            }
17572        };
17573
17574        AvailableValidator.isMatchCancelRegularExpression = function (value, type) {
17575            var isMatch = false;
17576
17577            if (value === '' || !type) {
17578                return isMatch;
17579            }
17580
17581            this.validateCancel.cancelData.regularExpression[type].forEach(function (matchData) {
17582                if (new RegExp(matchData).test(value)) {
17583                    isMatch = true;
17584                }
17585            });
17586
17587            return isMatch;
17588        };
17589
17590        return AvailableValidator;
17591    }());
17592
17593    KEYENCE.Form.RegisteredValidator = (function () {
17594        var MultiStepForm = null;
17595        var BlankFieldValidator = null;
17596        var AvailableValidator = null;
17597
17598        var RegisteredValidator = {
17599            multiStepForm: null,
17600            signInForm: null,
17601            registerForm: null,
17602            triggerClass: {
17603                emailAddress: 'js-validateEmailRegistered'
17604            },
17605            targetClass: {
17606                emailAddress: 'js-validateEmailRegistered-target',
17607                emailLoginLinkWrapper: 'js-validateEmailRegistered-linkWrapper',
17608                emailLoginLink: 'js-validateEmailRegistered-link',
17609                status: 'is-registered'
17610            },
17611            targetElements: {
17612                emailAddressWrappers: null,
17613                emailLoginLinkWrapper: null,
17614                clickTarget: null
17615            }
17616        };
17617
17618        RegisteredValidator.init = function () {
17619            MultiStepForm = win.MultiStepForm;
17620            this.multiStepForm = doc.getElementById(MultiStepForm.idNames.trigger);
17621            this.preForm = doc.getElementById(MultiStepForm.PreForm.idNames.root);
17622            this.signInForm = doc.getElementById(MultiStepForm.SignIn.idNames.signinForm);
17623            this.registerForm = doc.getElementById(MultiStepForm.Register.idNames.regForm);
17624            BlankFieldValidator = win.KeyenceForm.BlankFieldValidator;
17625            AvailableValidator = win.KeyenceForm.AvailableValidator;
17626
17627            if (this.multiStepForm && this.preForm && this.signInForm && this.registerForm) {
17628                this.setTriggerElements();
17629                this.setEmailLoginEvent();
17630                this.setMutationObserver();
17631                this.onMessageAction();
17632            }
17633        };
17634
17635        RegisteredValidator.setTriggerElements = function () {
17636            this.targetElements.emailAddressWrappers = doc.querySelectorAll('.' + this.triggerClass.emailAddress);
17637        };
17638
17639        RegisteredValidator.setEmailLoginEvent = function () {
17640            var self = this;
17641            var triggers = self.targetElements.emailAddressWrappers;
17642            var emailAddressTarget = null;
17643            var emailLink = null;
17644
17645            if (!triggers.length) {
17646                return;
17647            }
17648
17649            triggers.forEach(function (wrapper) {
17650                emailAddressTarget = wrapper.querySelector('.' + self.targetClass.emailAddress);
17651                emailLink = wrapper.querySelector('.' + self.targetClass.emailLoginLink);
17652
17653                if (emailAddressTarget && emailLink) {
17654                    emailLink.addEventListener('click', self.showEmailLoginForm, false);
17655                }
17656            });
17657        };
17658
17659        RegisteredValidator.setMutationObserver = function () {
17660            var registerFormArea = doc.getElementById(MultiStepForm.Register.idNames.suzRegArea);
17661            var observer = null;
17662            var observersuggestConfig = {
17663                attributeFilter: ['id'],
17664                childList: true
17665            };
17666
17667            if (!registerFormArea) {
17668                return;
17669            }
17670
17671            observer = new MutationObserver(function (record) {
17672                if (record[0].target.id === MultiStepForm.Register.idNames.suzRegArea) {
17673                    RegisteredValidator.setTriggerElements();
17674                    RegisteredValidator.setEmailLoginEvent();
17675                }
17676            });
17677
17678            observer.observe(registerFormArea, observersuggestConfig);
17679        };
17680
17681        RegisteredValidator.onMessageAction = function () {
17682            win.addEventListener('message', this.showEmailLoginForm, false);
17683        };
17684
17685        RegisteredValidator.showEmailLoginForm = function (event) {
17686            var self = RegisteredValidator;
17687            var FormFilter = KEYENCE.Form.FormFilter;
17688            var fieldWrapper = null;
17689            var field = null;
17690            var filterEmailButton = null;
17691
17692            event.preventDefault();
17693
17694            if (event.type === 'click') {
17695                self.targetElements.clickTarget = event.currentTarget;
17696            }
17697
17698            if (event.type === 'click' && win.AnalyticsViews) {
17699                return;
17700            }
17701
17702            if (event.type === 'message'
17703                && event.data !== win.AnalyticsViews.Utility.messageNames.forwardSignInLink) {
17704                return;
17705            }
17706
17707            if (!self.targetElements.clickTarget) {
17708                return;
17709            }
17710
17711            fieldWrapper = self.targetElements.clickTarget.closest('.' + self.triggerClass.emailAddress);
17712
17713            if (fieldWrapper) {
17714                field = fieldWrapper.querySelector('.' + self.targetClass.emailAddress);
17715            }
17716
17717            if (field && !BlankFieldValidator.isBlank(field)) {
17718                filterEmailButton = doc.querySelector('#' + FormFilter.General.idNames.emailTtrigger);
17719
17720                if (!filterEmailButton) {
17721                    return;
17722                }
17723
17724                filterEmailButton.click();
17725
17726                if (win.AnalyticsViews) {
17727                    win.postMessage(win.AnalyticsViews.Utility.messageNames.generalForm, win.AnalyticsViews.Utility.Location.getDomain());
17728                }
17729
17730                setTimeout(function () {
17731                    MultiStepForm.PreForm.$formCheckEmail.val(field.value);
17732                    MultiStepForm.SignIn.$loginUserName.val(field.value);
17733                    MultiStepForm.SignIn.$loginPassword.each(function () {
17734                        this.removeAttribute('disabled');
17735                    });
17736
17737                    MultiStepForm.changeCurrentScreenName(MultiStepForm.screenNames.login);
17738                    MultiStepForm.clearInputError(field.name, false);
17739                    self.changeDisplayLoginLink(field, 'hide');
17740
17741                    MultiStepForm.show(MultiStepForm.SignIn.$root);
17742                    MultiStepForm.hide(MultiStepForm.Register.$root);
17743                }, 0);
17744            }
17745        };
17746
17747        RegisteredValidator.hasRegisteredCheckClass = function (field) {
17748            if (field.classList.contains(this.targetClass.emailAddress)) {
17749                return true;
17750            }
17751
17752            return false;
17753        };
17754
17755        RegisteredValidator.run = function (target) {
17756            var ControlErrorDisplay = win.KeyenceForm.ControlErrorDisplay;
17757
17758            if (target.value === '') {
17759                RegisteredValidator.changeDisplayLoginLink(target, 'hide');
17760
17761                if (!ControlErrorDisplay.isTriggerClicked(target)) {
17762                    MultiStepForm.clearInputError(target.name);
17763                    AvailableValidator.runValidate(target.name, false);
17764                }
17765
17766                window.suz_callRegValidator(target.name, target.value);
17767
17768                return;
17769            }
17770
17771            MultiStepForm.checkRegularMember(target.value).always(function (status) {
17772                if (status && status.isRegularMember) {
17773                    window.suz_callRegValidator(target.name, target.value).done(function () {
17774                        RegisteredValidator.showRegisteredError(target);
17775                    }).fail(function () {
17776                        console.error('Reg validator error');
17777                    });
17778                } else {
17779                    RegisteredValidator.changeDisplayLoginLink(target, 'hide');
17780
17781                    if (!ControlErrorDisplay.isTriggerClicked(target)) {
17782                        MultiStepForm.clearInputError(target.name);
17783                    }
17784
17785                    if (AvailableValidator.hasTargetClass(target)) {
17786                        AvailableValidator.runValidate(target.name, true).always(function (field) {
17787                            window.suz_callRegValidator(field.name, field.value);
17788                        });
17789                    } else if ($(target).hasClass(patternMatchValidator.classNames.replaceValueTrigger)) {
17790                        if (ControlErrorDisplay.isTriggerClicked(field)) {
17791                            patternMatchValidator.updateFieldStatus(target);
17792                        }
17793
17794                        if (!$(target).hasClass(patternMatchValidator.classNames.status)) {
17795                            window.suz_callRegValidator(target.name, target.value);
17796                        }
17797                    } else {
17798                        window.suz_callRegValidator(target.name, target.value);
17799                    }
17800                }
17801            });
17802        };
17803
17804        RegisteredValidator.showRegisteredError = function (field) {
17805            this.changeDisplayLoginLink(field, 'show');
17806            MultiStepForm.insertErrorText(field.name, 'data-message-email-address-registered');
17807        };
17808
17809        RegisteredValidator.changeDisplayLoginLink = function (field, changeDisplay) {
17810            var fieldWrapper = field.closest('.' + this.triggerClass.emailAddress);
17811            var linkWrapper = null;
17812
17813            if (!fieldWrapper || typeof changeDisplay !== 'string' || !changeDisplay) {
17814                return;
17815            }
17816
17817            linkWrapper = fieldWrapper.querySelector('.' + this.targetClass.emailLoginLinkWrapper);
17818
17819            if (!linkWrapper) {
17820                return;
17821            }
17822
17823            if (changeDisplay === 'show') {
17824                linkWrapper.hidden = false;
17825                field.classList.add(this.targetClass.status);
17826            } else if (changeDisplay === 'hide') {
17827                linkWrapper.hidden = true;
17828                field.classList.remove(this.targetClass.status);
17829            }
17830        };
17831
17832        return RegisteredValidator;
17833    }());
17834
17835    KEYENCE.Form.ControlErrorDisplay = (function () {
17836        var MultiStepForm = null;
17837
17838        var targetFormName = {
17839            passwordAssistanceActionForm: 'user_passwordAssistanceActionForm',
17840            passwordAssistanceResetForm: 'user_passwordAssistance_resetPasswordActionForm',
17841            withdrawActionForm: 'user_profile_withdrawActionForm',
17842            reloginActionForm: 'user_reloginActionForm',
17843            loginActionForm: 'user_loginActionForm',
17844        };
17845
17846        var ControlErrorDisplay = {
17847            idNames: {
17848                multiStepForm: 'js-multiStepForm',
17849            },
17850            classNames: {
17851                target: 'js-multiStep-targetWrapper',
17852            },
17853            config: {
17854                isRegisterFlatForm: false,
17855                isMobileRegisterFlatFormSubmitClicked: false,
17856                isEmailRegisterFlatFormSubmitClicked: false,
17857            },
17858            formSelector: 'form[name="' + targetFormName.passwordAssistanceActionForm + '"], ' +
17859                'form[name="' + targetFormName.passwordAssistanceResetForm + '"], ' +
17860                'form[name="' + targetFormName.withdrawActionForm + '"], ' +
17861                'form[name="' + targetFormName.reloginActionForm + '"], ' +
17862                'form[name="' + targetFormName.loginActionForm + '"]',
17863            targetForm: null,
17864            browserValidaterTarget: null,
17865        };
17866
17867        ControlErrorDisplay.init = function () {
17868            var multiStepForm = null;
17869            var targetForms = null;
17870            var errorItems = null;
17871            var visibleErrorItem = null;
17872            var isError = false;
17873
17874            MultiStepForm = win.MultiStepForm;
17875            multiStepForm = doc.getElementById(this.idNames.multiStepForm);
17876
17877            if (multiStepForm) {
17878                this.targetForm = multiStepForm.querySelector('form');
17879
17880                if (!this.targetForm) {
17881                    this.targetForm = multiStepForm.closest('form');
17882                }
17883            } else {
17884                targetForms = doc.querySelectorAll(this.formSelector);
17885
17886                if (targetForms.length) {
17887                    this.targetForm = targetForms[0];
17888                }
17889            }
17890
17891            if (!MultiStepForm || !this.targetForm) {
17892                return;
17893            }
17894
17895            this.config.isRegisterFlatForm = MultiStepForm.Register.isRegFlat();
17896            this.addInvalidEvent();
17897
17898            errorItems = this.targetForm.querySelectorAll('.is-error[id^="suz_div_"]');
17899
17900            if (errorItems.length) {
17901                errorItems.forEach(function (errorItem) {
17902                    var style = null;
17903
17904                    if (isError) {
17905                        return;
17906                    }
17907
17908                    style = getComputedStyle(errorItem);
17909
17910                    if (style &&
17911                        style.display !== 'none' &&
17912                        style.visibility !== 'hidden' &&
17913                        style.opacity !== '0'
17914                    ) {
17915                        visibleErrorItem = errorItem;
17916                        isError = true;
17917                    }
17918                });
17919            }
17920
17921            if (isError) {
17922                this.setTriggerClickedData(visibleErrorItem, MultiStepForm.isShow(MultiStepForm.Register.$root) ? 'register' : '');
17923            }
17924        };
17925
17926        ControlErrorDisplay.addInvalidEvent = function () {
17927            var formValidaterTargets = this.targetForm.querySelectorAll('input[type="email"], input[pattern]');
17928
17929            if (formValidaterTargets.length) {
17930                formValidaterTargets.forEach(function (target) {
17931                    target.addEventListener('invalid', ControlErrorDisplay.cancelBrowserValidation.bind(ControlErrorDisplay));
17932                });
17933            }
17934        };
17935
17936        ControlErrorDisplay.cancelBrowserValidation = function (event) {
17937            var target = event.currentTarget;
17938            var isVisible = false;
17939            var submitEvent = new Event('submit', {cancelable: true});
17940
17941            if (target &&
17942                target.checkVisibility({
17943                    opacityProperty: true,
17944                    contentVisibilityAuto: true,
17945                })) {
17946                this.browserValidaterTarget = target;
17947                isVisible = true;
17948            }
17949
17950            if (!isVisible) {
17951                this.browserValidaterTarget = null;
17952
17953                return;
17954            }
17955
17956            if (!this.isTriggerClicked(target)) {
17957                event.preventDefault();
17958                this.targetForm.dispatchEvent(submitEvent);
17959            }
17960        };
17961
17962        ControlErrorDisplay.setTriggerClickedData = function (trigger, currentScreen) {
17963            var formType = KEYENCE.Form.FormFilter.General.getFormType();
17964            var target = null;
17965
17966            if (typeof trigger !== 'object' || !trigger) {
17967                return;
17968            }
17969
17970            target = trigger.closest('.' + this.classNames.target);
17971
17972            if (currentScreen === 'register' && this.config.isRegisterFlatForm) {
17973                if (formType === 'mobileNumber') {
17974                    this.config.isMobileRegisterFlatFormSubmitClicked = true;
17975                } else {
17976                    this.config.isEmailRegisterFlatFormSubmitClicked = true;
17977                }
17978
17979                return;
17980            } else if (!target) {
17981                return;
17982            }
17983
17984            if (currentScreen === 'register') {
17985                if (formType === 'mobileNumber') {
17986                    target.dataset.mobileTriggerButtonClicked = this.getPanelProgressData(trigger);
17987                } else {
17988                    target.dataset.emailTriggerButtonClicked = this.getPanelProgressData(trigger);
17989                }
17990            } else {
17991                if (formType === 'mobileNumber') {
17992                    target.dataset.mobileTriggerButtonClicked = 'true';
17993                } else {
17994                    target.dataset.emailTriggerButtonClicked = 'true';
17995                }
17996            }
17997        };
17998
17999        ControlErrorDisplay.getPanelProgressData = function (trigger) {
18000            var currentPanel = null;
18001            var currentPanelIndex = '';
18002            var panelIndexDataArray = [];
18003
18004            currentPanel = trigger.closest('[data-panel-index]');
18005
18006            if (!currentPanel) {
18007                return '';
18008            }
18009
18010            currentPanelIndex = currentPanel.dataset.panelIndex;
18011
18012            if (currentPanelIndex) {
18013                panelIndexDataArray = this.getPanelProgressDataArray(Number(currentPanelIndex));
18014
18015                return panelIndexDataArray.join();
18016            }
18017
18018            return '';
18019        };
18020
18021        ControlErrorDisplay.getPanelProgressDataArray = function (currentPanelIndex) {
18022            var panelIndexDataArray = [];
18023            var i = 0;
18024
18025            if (currentPanelIndex) {
18026                for (i = 0; i < currentPanelIndex; i++) {
18027                    panelIndexDataArray.push('panel' + (i + 1));
18028                }
18029            }
18030
18031            return panelIndexDataArray;
18032        };
18033
18034        ControlErrorDisplay.resetPanelProgressData = function (triggerId) {
18035            var formType = KEYENCE.Form.FormFilter.General.getFormType();
18036            var trigger = null;
18037            var currentPanel = null;
18038            var currentPanelIndex = '';
18039            var triggerWrapper = null;
18040            var triggerClickedData = '';
18041            var panelIndexDataArray = [];
18042
18043            if (this.config.isRegisterFlatForm) {
18044                return;
18045            }
18046
18047            trigger = doc.getElementById(triggerId);
18048
18049            if (!trigger) {
18050                return;
18051            }
18052
18053            currentPanel = trigger.closest('[data-panel-index]');
18054
18055            if (!currentPanel) {
18056                return;
18057            }
18058
18059            currentPanelIndex = currentPanel.dataset.panelIndex;
18060            triggerWrapper = trigger.closest('.' + this.classNames.target);
18061
18062            if (triggerWrapper) {
18063                if (formType === 'mobileNumber') {
18064                    triggerClickedData = triggerWrapper.dataset.mobileTriggerButtonClicked;
18065                } else {
18066                    triggerClickedData = triggerWrapper.dataset.emailTriggerButtonClicked;
18067                }
18068            }
18069
18070            if (!triggerClickedData) {
18071                return;
18072            }
18073
18074            if (triggerClickedData.includes('panel' + currentPanelIndex)) {
18075                panelIndexDataArray = this.getPanelProgressDataArray(Number(currentPanelIndex));
18076            } else {
18077                panelIndexDataArray = this.getPanelProgressDataArray(Number(currentPanelIndex) - 1);
18078            }
18079
18080            if (panelIndexDataArray.length) {
18081                if (formType === 'mobileNumber') {
18082                    triggerWrapper.dataset.mobileTriggerButtonClicked = panelIndexDataArray.join();
18083                    triggerWrapper.removeAttribute('data-email-Trigger-Button-clicked');
18084                } else {
18085                    triggerWrapper.dataset.emailTriggerButtonClicked = panelIndexDataArray.join();
18086                    triggerWrapper.removeAttribute('data-mobile-Trigger-Button-clicked');
18087                }
18088            }
18089        };
18090
18091        ControlErrorDisplay.isTriggerClicked = function (trigger) {
18092            var formType = KEYENCE.Form.FormFilter.General.getFormType();
18093            var isClicked = false;
18094
18095            if (typeof trigger !== 'object' || !trigger) {
18096                return isClicked;
18097            }
18098
18099            if (MultiStepForm.isShow(MultiStepForm.Register.$root)) {
18100                if (this.isFlatFormTriggerClicked(formType) || this.matchClickedData(trigger, formType)) {
18101                    isClicked = true;
18102                }
18103            } else {
18104                if (formType === 'mobileNumber' && trigger.closest('[data-mobile-trigger-button-clicked="true"]')) {
18105                    isClicked = true;
18106                } else if (formType !== 'mobileNumber' && trigger.closest('[data-email-trigger-button-clicked="true"]')) {
18107                    isClicked = true;
18108                }
18109            }
18110
18111            return isClicked;
18112        };
18113
18114        ControlErrorDisplay.isFlatFormTriggerClicked = function (formType) {
18115            if (!this.config.isRegisterFlatForm) {
18116                return false;
18117            }
18118
18119            if ((formType === 'mobileNumber' && this.config.isMobileRegisterFlatFormSubmitClicked) ||
18120                (formType !== 'mobileNumber' && this.config.isEmailRegisterFlatFormSubmitClicked)) {
18121                return true;
18122            }
18123
18124            return false;
18125        };
18126
18127        ControlErrorDisplay.matchClickedData = function (trigger, formType) {
18128            var target = null;
18129            var isClicked = false;
18130            var currentPanel = null;
18131            var currentPanelIndex = '';
18132            var clickedDataValue = '';
18133
18134            if (typeof trigger !== 'object' || !trigger) {
18135                return isClicked;
18136            }
18137
18138            target = trigger.closest('.' + this.classNames.target);
18139            currentPanel = trigger.closest('[data-panel-index]');
18140
18141            if (!target || !currentPanel) {
18142                return isClicked;
18143            }
18144
18145            if (formType === 'mobileNumber') {
18146                clickedDataValue = target.dataset.mobileTriggerButtonClicked;
18147            } else {
18148                clickedDataValue = target.dataset.emailTriggerButtonClicked;
18149            }
18150
18151            currentPanelIndex = currentPanel.dataset.panelIndex;
18152
18153            if (!clickedDataValue || !currentPanelIndex) {
18154                return isClicked;
18155            }
18156
18157            if (clickedDataValue.includes('panel' + currentPanelIndex)) {
18158                isClicked = true;
18159            }
18160
18161            return isClicked;
18162        };
18163
18164        ControlErrorDisplay.validateInactivePanel = function (triggerId) {
18165            var trigger = null;
18166            var registerFormWrapper = null;
18167            var currentPanel = null;
18168            var currentPanelIndex = '';
18169            var inactivePanels = null;
18170            var validateTargets = null;
18171
18172            if (typeof triggerId !== 'string' || !triggerId || !this.config.isRegisterFlatForm) {
18173                return;
18174            }
18175
18176            trigger = doc.getElementById(triggerId);
18177
18178            if (!trigger) {
18179                return;
18180            }
18181
18182            registerFormWrapper = trigger.closest('.' + this.classNames.target);
18183            currentPanel = trigger.closest('[data-panel-index]');
18184
18185            if (!registerFormWrapper || !currentPanel) {
18186                return;
18187            }
18188
18189            currentPanelIndex = currentPanel.dataset.panelIndex;
18190
18191            if (!currentPanelIndex) {
18192                return;
18193            }
18194
18195            inactivePanels = registerFormWrapper.querySelectorAll('[data-panel-index]:not([data-panel-index="'+ currentPanelIndex +'"])');
18196
18197            if (inactivePanels.length) {
18198                inactivePanels.forEach(function (panel) {
18199                    validateTargets = panel.querySelectorAll('.suz_rr');
18200
18201                    if (validateTargets.length) {
18202                        validateTargets.forEach(function (target) {
18203                            suz_checkEntryItem($(target));
18204                        });
18205                    }
18206                });
18207            }
18208        };
18209
18210        return ControlErrorDisplay;
18211    }());
18212
18213    win.KeyenceForm = KEYENCE.Form;
18214
18215    KEYENCE.Form.OTPControl = (function () {
18216        var OTPControl = {};
18217
18218        OTPControl.init = function () {
18219            if ('OTPCredential' in window) {
18220                var input = document.querySelector('input[autocomplete="one-time-code"]');
18221                var ac;
18222                var form;
18223
18224                if (!input) return;
18225
18226                ac = new AbortController();
18227                form = input.closest('form');
18228
18229                if (ac && form) {
18230                    form.addEventListener('submit', function() {
18231                        ac.abort();
18232                    });
18233                }
18234
18235                navigator.credentials.get({
18236                    otp: {transport:['sms']}
18237                }).then(function(otp){
18238                    var $otpInput = $(form).find('input[autocomplete="one-time-code"]:visible');
18239
18240                    if ($otpInput.length === 1) {
18241                        $otpInput.val(otp.code);
18242                        $otpInput.get(0).dispatchEvent(new Event('change'));
18243                    }
18244                }).catch(function(err){
18245                    console.log(err);
18246                });
18247            }
18248        };
18249
18250        return OTPControl;
18251    }());
18252
18253    KEYENCE.Form.ToggleDisabled = (function () {
18254        var ToggleDisabled = {};
18255
18256        var classNames = {
18257            root: 'js-toggleDisabled-root',
18258            trigger: 'js-toggleDisabled-trigger',
18259            target: 'js-toggleDisabled-target'
18260        };
18261
18262        ToggleDisabled.init = function () {
18263            var self = this;
18264            var roots = doc.querySelectorAll('.' + classNames.root);
18265
18266            if (!roots.length) {
18267                return;
18268            }
18269
18270            roots.forEach(function (root) {
18271                var trigger = root.querySelector('.' + classNames.trigger);
18272                var target = root.querySelector('.' + classNames.target);
18273
18274                if (!trigger || !target) {
18275                    return;
18276                }
18277
18278                self.default(target);
18279                self.onClick(root, trigger, target);
18280                self.onChange(trigger, target);
18281            });
18282        };
18283
18284        ToggleDisabled.default = function (target) {
18285            if (target) {
18286                target.disabled = true;
18287                target.style.pointerEvents = 'none';
18288            }
18289        };
18290
18291        ToggleDisabled.onClick = function (root, trigger, target) {
18292            root.addEventListener('click', function () {
18293                if (trigger.checked === false) {
18294                    trigger.checked = true;
18295                    target.style.pointerEvents = 'auto';
18296                    target.disabled = false;
18297                    win.setTimeout(function() {
18298                        target.focus();
18299                    }, 0);
18300                }
18301            });
18302
18303            trigger.addEventListener('focus', function () {
18304                if (trigger.checked === false) {
18305                    trigger.checked = true;
18306                    target.disabled = false;
18307                }
18308            });
18309        };
18310
18311        ToggleDisabled.onChange = function (trigger, target) {
18312            var triggerName = trigger.name;
18313            var radioElements = doc.querySelectorAll(`[name="${triggerName}"]`);
18314
18315            if (!triggerName) {
18316                return;
18317            }
18318
18319            radioElements.forEach(function (radioElement) {
18320                radioElement.addEventListener('change', function (event) {
18321                    if (!event.target.classList.contains('.' + classNames.trigger)) {
18322                        target.disabled = true;
18323                        target.style.pointerEvents = 'none';
18324                    }
18325                });
18326            });
18327        };
18328
18329        return ToggleDisabled;
18330    })();
18331
18332    KEYENCE.Form.commonSendVerificationEmail = (function () {
18333        var MultiStepForm = win.MultiStepForm;
18334        var FormFilter = KEYENCE.Form.FormFilter;
18335
18336        var idNames = {
18337            initialScreen : {
18338                relogin: 'js-multiStepForm-relogin',
18339            },
18340            sendEmailScreen: 'js-multiStepForm-sendEmail',
18341            btnCheckSendEmail: 'js-form-btnCheckSendMail',
18342            btnBackToRelogin: 'js-sendEmail-btnBackToRelogin',
18343            emailAddressField: 'loginUserName',
18344        };
18345
18346        var classNames = {
18347            isVerificationEmailActive: 'is-sendVerificationEmail-active',
18348            verificationEmailTarget: 'js-showVerificationEmail-target',
18349            enterEmailAddress: 'js-enterEmailAddress',
18350            isHide: 'is-hide',
18351            isSignin: 'is-signin',
18352        };
18353
18354        var config = {
18355            api: {
18356                sendEmail: {
18357                    url: '/ajax/userAjax/publishLoginUrl/',
18358                },
18359                checkEmailAddress: {
18360                    url: '/ajax/registrationAjax/setEmailAddress/',
18361                },
18362            },
18363            isSendEmailActive: false,
18364        }
18365
18366        var commonSendVerificationEmail = {
18367            idNames: idNames,
18368            classNames: classNames,
18369            config: config,
18370            targetForms: {
18371                withdrawActionForm: doc.querySelector('form[name="user_profile_withdrawActionForm"]'),
18372                reloginActionForm: doc.querySelector('form[name="user_reloginActionForm"]'),
18373            },
18374            currentTargetForm: null,
18375            formRoot: doc.querySelector('.' + classNames.isVerificationEmailActive),
18376            initialScreen: null,
18377            sendEmailScreen: doc.getElementById(idNames.sendEmailScreen),
18378            btnCheckSendEmail: doc.getElementById(idNames.btnCheckSendEmail),
18379            verificationEmailTargets: doc.querySelectorAll('.' + classNames.verificationEmailTarget),
18380            enterEmailAddressTargets: doc.querySelectorAll('.' + classNames.enterEmailAddress),
18381            btnBackToRelogin: doc.getElementById(idNames.btnBackToRelogin),
18382            emailAddressField: doc.getElementById(idNames.emailAddressField)
18383        };
18384
18385        commonSendVerificationEmail.init = function () {
18386            if (!this.isTargetForm() || !this.btnCheckSendEmail) {
18387                return;
18388            }
18389
18390            if (this.formRoot && this.isSignin()) {
18391                this.config.isSendEmailActive = true;
18392
18393                this.showVerificationEmailArea();
18394                this.setInitialScreen();
18395                this.addClickSendEmailButton();
18396                this.addClickBackButton();
18397            }
18398        };
18399
18400        commonSendVerificationEmail.isTargetForm = function () {
18401            var self = this;
18402            var isTarget = false;
18403
18404            Object.keys(self.targetForms).forEach(function (key) {
18405                if (self.targetForms[key]) {
18406                    self.currentTargetForm = self.targetForms[key];
18407                    isTarget = true;
18408                }
18409            });
18410
18411            return isTarget;
18412        };
18413
18414        commonSendVerificationEmail.isSignin = function () {
18415            if (this.formRoot.classList.contains(this.classNames.isSignin)) {
18416                return true;
18417            }
18418
18419            return false;
18420        };
18421
18422        commonSendVerificationEmail.showVerificationEmailArea = function () {
18423            var self = this;
18424
18425            if (self.verificationEmailTargets.length) {
18426                self.verificationEmailTargets.forEach(function (target) {
18427                    target.classList.remove(self.classNames.isHide);
18428                });
18429            }
18430        };
18431
18432        commonSendVerificationEmail.setInitialScreen = function () {
18433            var self = this;
18434
18435            Object.keys(self.idNames.initialScreen).forEach(function (key) {
18436                if (doc.getElementById(self.idNames.initialScreen[key])) {
18437                    self.initialScreen = doc.getElementById(self.idNames.initialScreen[key]);
18438                }
18439            });
18440        };
18441
18442        commonSendVerificationEmail.addClickSendEmailButton = function () {
18443            this.btnCheckSendEmail.addEventListener('click', this.showResultView.bind(this));
18444        };
18445
18446        commonSendVerificationEmail.addClickBackButton = function () {
18447            if (this.btnBackToRelogin) {
18448                this.btnBackToRelogin.addEventListener('click', this.changeDisplayScreen.bind(this));
18449            }
18450        };
18451
18452        commonSendVerificationEmail.showResultView = function (event) {
18453            var triggerId = event.currentTarget.id;
18454            var self = this;
18455
18456            if (!this.config.isSendEmailActive || !triggerId) {
18457                return;
18458            }
18459
18460            if (triggerId === this.idNames.btnCheckSendEmail) {
18461                this.validateEmailAddress(this.config.api.checkEmailAddress.url).done(function () {
18462                    self.sendVerificationEmail(self.config.api.sendEmail.url).always(function () {
18463                        self.showSendEmailScreen(triggerId);
18464                    });
18465                }).fail(function () {
18466                    self.showSendEmailScreen(triggerId);
18467                });
18468            }
18469        };
18470
18471        commonSendVerificationEmail.validateEmailAddress = function (apiUrl) {
18472            var deferred = new $.Deferred();
18473            var options = {};
18474
18475            if (!apiUrl) {
18476                return deferred.reject();
18477            }
18478
18479            options = {
18480                url: win.suz_getCurrentDomain() + apiUrl,
18481                type: 'post',
18482                data: {
18483                    token : $("input[name='org.apache.struts.taglib.html.TOKEN']").attr("value"),
18484                },
18485                dataType: 'html',
18486                scriptCharset: 'UTF-8',
18487                timeout: 10000,
18488            };
18489
18490            $.ajax(options).done(function () {
18491                deferred.resolve();
18492            }).fail(function () {
18493                deferred.reject();
18494            });
18495
18496            return deferred.promise();
18497        };
18498
18499        commonSendVerificationEmail.sendVerificationEmail = function (apiUrl) {
18500            var deferred = new $.Deferred();
18501            var options = {};
18502            var formData = '';
18503
18504            if (this.currentTargetForm) {
18505                formData = $(this.currentTargetForm).serialize();
18506            }
18507
18508            if (!formData || !apiUrl) {
18509                return deferred.resolve();
18510            }
18511
18512            options = {
18513                url: win.suz_getCurrentDomain() + apiUrl,
18514                type: 'post',
18515                data: {
18516                    formData: formData
18517                },
18518                dataType: 'jsonp',
18519                jsonp: 'callback',
18520                scriptCharset: 'UTF-8',
18521                timeout: 10000,
18522            };
18523
18524            $.ajax(options).done(function () {
18525                deferred.resolve();
18526            }).fail(function () {
18527                // Treat failure as success
18528                deferred.resolve();
18529            });
18530
18531            return deferred.promise();
18532        };
18533
18534        commonSendVerificationEmail.showSendEmailScreen = function (triggerId) {
18535            if (triggerId) {
18536                this.enterEmailAddress();
18537                FormFilter.SendEmail.changeFilterClass(triggerId);
18538                this.hideScreen(this.initialScreen);
18539                this.showScreen(this.sendEmailScreen);
18540            }
18541        };
18542
18543        commonSendVerificationEmail.enterEmailAddress = function () {
18544            var self = this;
18545
18546            if (self.emailAddressField && self.enterEmailAddressTargets.length) {
18547                self.enterEmailAddressTargets.forEach(function (target) {
18548                    target.textContent = self.emailAddressField.value;
18549                });
18550            }
18551        };
18552
18553        commonSendVerificationEmail.showScreen = function (screen) {
18554            if (!screen) {
18555                return;
18556            }
18557
18558            screen.classList.remove(this.classNames.isHide);
18559
18560            if (MultiStepForm) {
18561                MultiStepForm.scrollToElement(screen.id);
18562            }
18563        };
18564
18565        commonSendVerificationEmail.hideScreen = function (screen) {
18566            if (!screen) {
18567                return;
18568            }
18569
18570            screen.classList.add(this.classNames.isHide);
18571
18572            if (screen === this.initialScreen) {
18573                KEYENCE.Form.ModalPasswordError.resetErrorCount();
18574            }
18575        };
18576
18577        commonSendVerificationEmail.changeDisplayScreen = function (event) {
18578            if (event.currentTarget.id === this.idNames.btnBackToRelogin) {
18579                this.hideScreen(this.sendEmailScreen);
18580                this.showScreen(this.initialScreen);
18581            }
18582        };
18583
18584        commonSendVerificationEmail.enableEmailAddress = function (formType) {
18585            if (this.config.isSendEmailActive
18586                && this.emailAddressField
18587                && (formType === FormFilter.General.FORM_TYPE.EMAIL
18588                || formType === FormFilter.General.FORM_TYPE.DEFAULT)) {
18589                this.emailAddressField.disabled = false;
18590            }
18591        };
18592
18593        return commonSendVerificationEmail;
18594    }());
18595
18596    KEYENCE.Form.SetMobileNumberToPhoneField = (function () {
18597        var MultiStepForm = null;
18598        var AvailableValidator = null;
18599
18600        var SetMobileNumberToPhoneField = {
18601            registerForm: null,
18602            idNames: {
18603                phoneNumber: 'suz_phoneNumber',
18604                phoneCountryId: 'suz_phoneCountryID',
18605                mobileNumber: 'suz_mobilePhoneNumber',
18606                mobileCountryId: 'suz_mobilePhoneCountryID',
18607                mobileNumberWrapper: 'suz_div_mobilePhoneNumber',
18608            },
18609            config: {
18610                isTargetElementsExist: true,
18611                isScreenValidateRunning: false,
18612                isNumberCopyRunning: false,
18613            },
18614            targetElements: {
18615                phoneNumber: null,
18616                phoneCountryCode: null,
18617                mobileNumber: null,
18618                mobileCountryCode: null,
18619            }
18620        };
18621
18622        SetMobileNumberToPhoneField.init = function () {
18623            MultiStepForm = win.MultiStepForm;
18624            AvailableValidator = win.KeyenceForm.AvailableValidator;
18625            this.multiStepForm = doc.getElementById(MultiStepForm.idNames.trigger);
18626            this.registerForm = doc.getElementById(MultiStepForm.Register.idNames.regForm);
18627
18628            if (this.multiStepForm && this.registerForm) {
18629                this.setTargetElements();
18630                this.checkTargetsExist();
18631                this.setMutationObserver();
18632            }
18633        };
18634
18635        SetMobileNumberToPhoneField.setTargetElements = function () {
18636            this.targetElements = {
18637                phoneNumber: doc.getElementById(this.idNames.phoneNumber),
18638                phoneCountryCode: doc.getElementById(this.idNames.phoneCountryId),
18639                mobileNumber: doc.getElementById(this.idNames.mobileNumber),
18640                mobileCountryCode: doc.getElementById(this.idNames.mobileCountryId),
18641            }
18642        };
18643
18644        SetMobileNumberToPhoneField.checkTargetsExist = function () {
18645            var self = this;
18646
18647            Object.keys(this.targetElements).forEach(function (key) {
18648                if (!self.targetElements[key]) {
18649                    self.config.isTargetElementsExist = false;
18650                }
18651            });
18652        };
18653
18654        SetMobileNumberToPhoneField.setMutationObserver = function () {
18655            var registerFormArea = doc.getElementById(MultiStepForm.Register.idNames.suzRegArea);
18656            var observer = null;
18657            var observerConfig = {
18658                attributeFilter: ['id'],
18659                childList: true
18660            };
18661
18662            if (!registerFormArea) {
18663                return;
18664            }
18665
18666            observer = new MutationObserver(function (record) {
18667                if (record[0].target.id === MultiStepForm.Register.idNames.suzRegArea) {
18668                    SetMobileNumberToPhoneField.config.isTargetElementsExist = true;
18669
18670                    SetMobileNumberToPhoneField.setTargetElements();
18671                    SetMobileNumberToPhoneField.checkTargetsExist();
18672                }
18673            });
18674
18675            observer.observe(registerFormArea, observerConfig);
18676        };
18677
18678        SetMobileNumberToPhoneField.run = function (fieldName) {
18679            var targets = this.targetElements;
18680            var NumberData = {}
18681            var targetCountryCodeOption = null;
18682            var phoneCountryCodeWrapper = null;
18683            var blurEvent = new Event('blur');
18684            var changeEvent = new Event('change');
18685
18686            if ((fieldName !== 'mobilePhoneNumber' && fieldName !== 'mobilePhoneCountryID') ||
18687                this.config.isScreenValidateRunning ||
18688                !this.config.isTargetElementsExist ||
18689                targets.phoneNumber.value !== '' ||
18690                AvailableValidator.isCancelTarget('mobile')) {
18691                return;
18692            }
18693
18694            NumberData = this.getPhoneNumberData(targets.mobileNumber, targets.mobileCountryCode);
18695
18696            if (NumberData.number && NumberData.countryCode && NumberData.countryValue) {
18697                this.config.isNumberCopyRunning = true;
18698
18699                targetCountryCodeOption = targets.phoneCountryCode.querySelector('option[data-code="' + NumberData.countryCode + '"][value="' + 
18699NumberData.countryValue + '"]');
18700
18701                targets.phoneNumber.value = NumberData.number;
18702                targetCountryCodeOption.selected = true;
18703
18704                phoneCountryCodeWrapper = targets.phoneCountryCode.closest('.js-selectCountryNumber');
18705
18706                if (phoneCountryCodeWrapper) {
18707                    phoneCountryCodeWrapper.dispatchEvent(changeEvent);
18708                }
18709
18710                targets.phoneNumber.dispatchEvent(blurEvent);
18711            }
18712        };
18713
18714        SetMobileNumberToPhoneField.getPhoneNumberData = function (numberField, countryCodeField) {
18715            var PhoneNumberData = {
18716                number: '',
18717                currentCountryCodeOption: null,
18718                countryCode: '',
18719                countryValue: ''
18720            }
18721
18722            if (!numberField || !countryCodeField) {
18723                return PhoneNumberData;
18724            }
18725
18726            PhoneNumberData.number = numberField.value;
18727            PhoneNumberData.currentCountryCodeOption = countryCodeField.options[countryCodeField.selectedIndex];
18728
18729            PhoneNumberData.countryCode = PhoneNumberData.currentCountryCodeOption.dataset.code;
18730            PhoneNumberData.countryValue = PhoneNumberData.currentCountryCodeOption.value;
18731
18732            return PhoneNumberData;
18733        };
18734
18735        return SetMobileNumberToPhoneField;
18736    }());
18737
18738    KEYENCE.Form.ModalPasswordError = (function () {
18739        var MultiStepForm = win.MultiStepForm;
18740        var CommonSendVerificationEmail = KEYENCE.Form.commonSendVerificationEmail;
18741
18742        var idNames = {
18743            passwordErrorCountUpField :'passwordErrorCount',
18744            signinScreen: 'js-multiStepForm-signin',
18745            reLoginInitialScreen: 'js-multiStepForm-relogin',
18746            sendMailButton: 'js-form-btnCheckSendMail',
18747            resetPasswordButton: 'suz-pwdAssistanceLink',
18748            backToEmailButton: 'js-signinForm-btnBackToEmail',
18749            cloneSendMailButton: 'js-modalPasswordErrorReachedLimit-sendMailButton',
18750            cloneResetPasswordButton: 'js-modalPasswordErrorReachedLimit-resetPasswordButton',
18751            cloneBackToEmailButton: 'js-modalPasswordErrorReachedLimit-backToEmailButton',
18752            colorbox: 'colorbox',
18753            colorboxContent: 'cboxContent',
18754            colorboxLoadedContent: 'cboxLoadedContent',
18755            colorboxOverlay: 'cboxOverlay',
18756            modalbox: 'kpi_modalbox',
18757            colorboxTitle: 'cboxTitle',
18758            colorboxCloseButton: 'cboxClose',
18759            colorboxWrapper: 'cboxWrapper',
18760            modalLowerMargin: 'js-multiStepForm-modalLowerMargin',
18761        };
18762
18763        var classNames = {
18764            passwordErrorModalTrigger: 'js-modalPasswordErrorReachedLimit',
18765            modalExtension: 'of-multiStepFormErrorCount',
18766            lowerMargin: 'formMultiStep-lowerMargin',
18767            isLargeModal: 'ModalLarge',
18768            isSendVerificationEmailActive: 'is-sendVerificationEmail-active',
18769            isPasswordErrorModalShow: 'is-passwordErrorModal-show',
18770            isHide: 'is-hide'
18771        };
18772
18773        var config = {
18774            isReloginForm: false,
18775            errorLimitNumber: 0,
18776        }
18777
18778        var ModalPasswordError = {
18779            idNames: idNames,
18780            classNames: classNames,
18781            config: config,
18782            passwordErrorCountUpField: doc.getElementById(idNames.passwordErrorCountUpField),
18783            signinScreen: doc.getElementById(idNames.signinScreen),
18784            reLoginInitialScreen: doc.getElementById(idNames.reLoginInitialScreen),
18785            formRoot: doc.querySelector('.' + classNames.isSendVerificationEmailActive),
18786            cloneTarget: null,
18787            cloneScreen: null,
18788            modalElements: null,
18789            $modal: null,
18790            $cloneSendMailButton: null,
18791            $cloneResetPasswordButton: null,
18792            $cloneBackToEmailButton: null,
18793        };
18794
18795        ModalPasswordError.init = function () {
18796            var performanceNavigationEntries = null;
18797            var accessType = '';
18798
18799            if (!this.isTargetForm() || !this.formRoot || MultiStepForm.isModalContent()) {
18800                return;
18801            }
18802
18803            if (this.config.isReloginForm && !this.checkSignIn()) {
18804                return;
18805            }
18806
18807            performanceNavigationEntries = win.performance.getEntriesByType('navigation');
18808
18809            performanceNavigationEntries.forEach(function (entry) {
18810                accessType = entry.type;
18811            });
18812
18813            if (this.isReachedErrorCountLimit() && this.isPasswordErrorShow()) {
18814                if (accessType === 'reload') {
18815                    this.resetErrorCount();
18816
18817                    return;
18818                }
18819
18820                this.createCloneScreen();
18821                this.openModal();
18822            }
18823        };
18824
18825        ModalPasswordError.isTargetForm = function () {
18826            if (this.signinScreen) {
18827                this.cloneTarget = this.signinScreen;
18828                return true;
18829            } else if (this.reLoginInitialScreen) {
18830                this.cloneTarget = this.reLoginInitialScreen;
18831                this.config.isReloginForm = true;
18832                return true;
18833            }
18834
18835            return false;
18836        };
18837
18838        ModalPasswordError.checkSignIn = function () {
18839            if (CommonSendVerificationEmail.isSignin()) {
18840                return true;
18841            }
18842
18843            return false;
18844        };
18845
18846        ModalPasswordError.isReachedErrorCountLimit = function () {
18847            var errorCountValue = '';
18848
18849            if (!this.passwordErrorCountUpField) {
18850                return false;
18851            }
18852
18853            errorCountValue = this.passwordErrorCountUpField.value;
18854
18855            if (errorCountValue &&
18856                Number(errorCountValue) === win.passwordErrorCountMax) {
18857                return true;
18858            }
18859
18860            return false;
18861        };
18862
18863        ModalPasswordError.isPasswordErrorShow = function () {
18864            var passwordErrorModalTriggers = doc.querySelectorAll('.' + this.classNames.passwordErrorModalTrigger);
18865            var isVisibility = false;
18866
18867            if (passwordErrorModalTriggers.length) {
18868                passwordErrorModalTriggers.forEach(function (trigger) {
18869                    if (!trigger.classList.contains(ModalPasswordError.classNames.isHide)) {
18870                        isVisibility = true;
18871                    }
18872                });
18873            }
18874
18875            return isVisibility;
18876        };
18877
18878        ModalPasswordError.createCloneScreen = function () {
18879            this.cloneScreen = this.cloneTarget.cloneNode(true);
18880
18881            if (!this.cloneScreen) {
18882                return;
18883            }
18884
18885            this.cloneScreen.classList.add(this.classNames.isPasswordErrorModalShow);
18886            this.replaceCloneIdName();
18887        };
18888
18889        ModalPasswordError.replaceCloneIdName = function () {
18890            var hasIdElements = this.cloneScreen.querySelectorAll('[id]');
18891            var sendMailButton = this.cloneScreen.querySelector('#' + this.idNames.sendMailButton);
18892            var resetPasswordButton = this.cloneScreen.querySelector('#' + this.idNames.resetPasswordButton);
18893            var backToEmailButton = this.cloneScreen.querySelector('#' + this.idNames.backToEmailButton);
18894
18895            this.cloneScreen.removeAttribute('id');
18896            hasIdElements.forEach(function (element) {
18897                element.removeAttribute('id');
18898            });
18899
18900            if (sendMailButton) {
18901                sendMailButton.id = this.idNames.cloneSendMailButton;
18902            }
18903
18904            if (resetPasswordButton) {
18905                resetPasswordButton.id = this.idNames.cloneResetPasswordButton;
18906            }
18907
18908            if (backToEmailButton) {
18909                backToEmailButton.id = this.idNames.cloneBackToEmailButton;
18910            }
18911        };
18912
18913        ModalPasswordError.openModal = function () {
18914            var self = this;
18915
18916            this.$modal = $.colorbox({
18917                width: 840,
18918                inline: true,
18919                href: $(self.cloneScreen),
18920                onOpen: self.onOpen,
18921                onComplete: self.onComplete,
18922                onClosed: self.onClosed
18923            });
18924        };
18925
18926        ModalPasswordError.onOpen = function () {
18927            var self = ModalPasswordError;
18928
18929            $('#' + self.idNames.colorbox).addClass(self.classNames.modalExtension);
18930            $('#' + self.idNames.overlay).addClass(self.classNames.modalExtension);
18931            $('#' + self.idNames.modalbox).removeClass(self.classNames.isLargeModal);
18932        };
18933
18934        ModalPasswordError.onComplete = function () {
18935            var self = ModalPasswordError;
18936
18937            self.modalElements = self.getModalElementsAll();
18938
18939            if (!self.modalElements) {
18940                return;
18941            }
18942
18943            self.setActionTriggers();
18944            self.addClickActionTrigger();
18945            self.addAttributes();
18946            self.addCloseButton();
18947            self.stopBubbling(self.modalElements.$title);
18948            self.addClickCloseButton();
18949            self.appendLowerMargin();
18950
18951            if (self.signinScreen) {
18952                self.pushTrackingData('js-modalPasswordErrorReachedLimit', 'open', 'signin');
18953            }
18954        };
18955
18956        ModalPasswordError.getModalElementsAll = function () {
18957            var $colorBoxRoot = $('#' + this.idNames.colorbox);
18958
18959            if (!$colorBoxRoot.length) {
18960                return null;
18961            }
18962
18963            return {
18964                $root: $colorBoxRoot,
18965                $content: $colorBoxRoot.find('#' + this.idNames.colorboxContent),
18966                $loadedContent: $colorBoxRoot.find('#' + this.idNames.colorboxLoadedContent),
18967                $title: $colorBoxRoot.find('#' + this.idNames.colorboxTitle),
18968                $overlay: $('#' + this.idNames.colorboxOverlay),
18969                $wrapper: $('#' + this.idNames.colorboxWrapper),
18970            };
18971        };
18972
18973        ModalPasswordError.setActionTriggers = function () {
18974            if (this.modalElements.$root.length) {
18975                this.$cloneSendMailButton = this.modalElements.$root.find('#' + this.idNames.cloneSendMailButton);
18976                this.$cloneResetPasswordButton = this.modalElements.$root.find('#' + this.idNames.cloneResetPasswordButton);
18977                this.$cloneBackToEmailButton = this.modalElements.$root.find('#' + this.idNames.cloneBackToEmailButton);
18978            }
18979        };
18980
18981        ModalPasswordError.addClickActionTrigger = function () {
18982            if (this.$cloneSendMailButton.length) {
18983                this.$cloneSendMailButton.on('click', this.onClickSendMailButton.bind(this));
18984            }
18985
18986            if (this.$cloneResetPasswordButton.length) {
18987                this.$cloneResetPasswordButton.on('click', this.onClickResetPasswordButton.bind(this));
18988            }
18989
18990            if (this.$cloneBackToEmailButton.length) {
18991                this.$cloneBackToEmailButton.on('click', this.onClickBackToEmailButton.bind(this));
18992            }
18993        };
18994
18995        ModalPasswordError.onClickSendMailButton = function () {
18996            var sendMailButton = doc.getElementById(this.idNames.sendMailButton);
18997
18998            if (sendMailButton) {
18999                sendMailButton.click();
19000                $.colorbox.close();
19001            }
19002        };
19003
19004        ModalPasswordError.onClickResetPasswordButton = function (event) {
19005            var resetPasswordButton = doc.getElementById(this.idNames.resetPasswordButton);
19006
19007            event.preventDefault();
19008
19009            if (resetPasswordButton) {
19010                resetPasswordButton.click();
19011            }
19012        };
19013
19014        ModalPasswordError.onClickBackToEmailButton = function () {
19015            var backToEmailButton = doc.getElementById(this.idNames.backToEmailButton);
19016
19017            if (backToEmailButton) {
19018                backToEmailButton.click();
19019                $.colorbox.close();
19020            }
19021        };
19022
19023        ModalPasswordError.addAttributes = function () {
19024            if (!this.modalElements) {
19025                return;
19026            }
19027
19028            this.modalElements.$title.addClass(this.classNames.modalExtension);
19029            this.modalElements.$content.addClass(this.classNames.modalExtension);
19030            this.modalElements.$loadedContent.addClass(this.classNames.modalExtension);
19031        };
19032
19033        ModalPasswordError.addCloseButton = function () {
19034            if (this.modalElements && this.modalElements.$loadedContent.length) {
19035                this.modalElements.$loadedContent.prepend('<button id="' + idNames.colorboxCloseButton + '"><span>' + kpi_translation.Close + '</span></button>');
19036            }
19037        };
19038
19039        ModalPasswordError.stopBubbling = function ($target) {
19040            if ($target.length) {
19041                $target.off('click').on('click', function (event) {
19042                    event.stopPropagation();
19043                });
19044            }
19045        };
19046
19047        ModalPasswordError.addClickCloseButton = function () {
19048            $('#' + this.idNames.colorboxCloseButton).off('click').on('click', function () {
19049                $.colorbox.close();
19050            });
19051        };
19052
19053        ModalPasswordError.appendLowerMargin = function () {
19054            var $lowerMargin = $('#' + this.idNames.modalLowerMargin);
19055
19056            if (!this.modalElements || !this.modalElements.$wrapper.length || $lowerMargin.length) {
19057                return;
19058            }
19059
19060            this.modalElements.$wrapper.append(
19061                '<div id="' + idNames.modalLowerMargin + '"' + ' class="' + classNames.lowerMargin + '"></div>'
19062            );
19063
19064            $lowerMargin = $('#' + this.idNames.modalLowerMargin);
19065
19066            $lowerMargin.on('click', function () {
19067                $.colorbox.close();
19068            });
19069        };
19070
19071        ModalPasswordError.onClosed = function () {
19072            var self = ModalPasswordError;
19073
19074            if (!self.modalElements) {
19075                return;
19076            }
19077
19078            self.removeAttributes();
19079            self.resetErrorCount();
19080
19081            if (self.signinScreen) {
19082                self.pushTrackingData('js-modalPasswordErrorReachedLimit', 'close', 'signin');
19083            }
19084
19085            self.$modal = null;
19086        };
19087
19088        ModalPasswordError.removeAttributes = function () {
19089            if (!this.modalElements) {
19090                return;
19091            }
19092
19093            this.modalElements.$root.removeClass(this.classNames.modalExtension);
19094            this.modalElements.$title.removeClass(this.classNames.modalExtension);
19095            this.modalElements.$content.removeClass(this.classNames.modalExtension);
19096            this.modalElements.$loadedContent.removeClass(this.classNames.modalExtension);
19097            this.modalElements.$overlay.removeClass(this.classNames.modalExtension);
19098        };
19099
19100        ModalPasswordError.resetErrorCount = function () {
19101            if (!MultiStepForm.isModalContent() && this.passwordErrorCountUpField) {
19102                this.passwordErrorCountUpField.value = '0';
19103            }
19104        };
19105
19106        ModalPasswordError.enableErrorCount = function (formType) {
19107            var FormFilter = KEYENCE.Form.FormFilter;
19108
19109            if (!MultiStepForm.isModalContent() && this.passwordErrorCountUpField && formType) {
19110                if ((formType === FormFilter.General.FORM_TYPE.EMAIL ||
19111                    formType === FormFilter.General.FORM_TYPE.DEFAULT)) {
19112                        this.passwordErrorCountUpField.disabled = false;
19113                }
19114            }
19115        };
19116
19117        ModalPasswordError.pushTrackingData = function (idName, actionName, formCategory) {
19118            if (!win.AnalyticsViews) {
19119                return;
19120            }
19121
19122            win.AnalyticsViews.MultiStepForm.prototype.trackModalControl(idName, actionName, formCategory);
19123        };
19124
19125        return ModalPasswordError;
19126    }());
19127
19128    KEYENCE.Form.MultiFactorAuthentication = (function () {
19129        var MultiFactorAuthentication = {};
19130        var MultiStepForm = null;
19131        var AvailableValidator = null;
19132
19133        var classNames = {
19134            isHide: 'is-hide',
19135            root: 'js-controlVerificationTargetValue',
19136            mobileNumber: 'js-controlVerificationTargetValue-mobileNumber',
19137            countryId: 'js-controlVerificationTargetValue-countryId',
19138            sendCode: 'js-controlVerificationTargetValue-sendCode',
19139            sendCodeTrigger: 'js-controlVerificationTargetValue-sendCodeTrigger',
19140            edit: 'js-controlVerificationTargetValue-edit',
19141            editTrigger: 'js-controlVerificationTargetValue-editTrigger',
19142            deleteDialog: 'js-controlVerificationTargetValue-deleteDialog',
19143            deleteDialogTrigger: 'js-controlVerificationTargetValue-deleteDialogTrigger',
19144            editEnded: 'js-controlVerificationTargetValue-editEnded',
19145            editEndedTrigger: 'js-controlVerificationTargetValue-editEndedTrigger',
19146            email: 'js-controlVerificationTargetValue-email',
19147            dialogCloseButton: 'js-dialog__closeButton',
19148            checkSMSCodeValidTrigger: 'js-checkSMSCodeValid-trigger',
19149            checkSMSCodeValidTarget: 'js-checkSMSCodeValid-target',
19150            checkSMSCodeValidLoadingIndicator: 'js-checkSMSCodeValid-loadingIndicator',
19151            formSuccessTextOuter: 'js-form-successTextOuter',
19152            formErrText: 'js-formErrText',
19153            isError: 'is-error',
19154        };
19155
19156        var idNames = {
19157            verificationEmailCodeDiv: 'suz_div_verificationEmailCode',
19158            verificationCodeDiv: 'suz_div_verificationCode',
19159            editProfileSubmitButton: 'submit2'
19160        };
19161
19162        var elements = {
19163            roots: [],
19164            editProfileSubmitButton: doc.getElementById(idNames.editProfileSubmitButton)
19165        };
19166
19167        var selectors = {
19168            dialogCancelButton: '#js-controlVerificationTargetValue-emailCancel, #js-controlVerificationTargetValue-mobileNumberCancel',
19169            dialogDeleteButton: '#js-controlVerificationTargetValue-emailDelete, #js-controlVerificationTargetValue-mobileNumberDelete',
19170            deleteDialogTriggerFallback: '.js-controlVerificationTargetValue-deleteDialog a[href^="#"], .js-controlVerificationTargetValue-deleteDialog [aria-controls]'
19171        };
19172
19173        var rootStates = new WeakMap();
19174        var dialogButtonsWithEvents = new WeakSet();
19175        var attachedRoots = new WeakSet();
19176        // Managed with string keys separately from WeakMap to persist the deleted state even when DOM nodes are recreated
19177        var deletedRootKeys = new Set();
19178        // String key management to persist the editing state across full DOM node replacements
19179        var editingRootKeys = new Set();
19180        // Stores confirmed values at the time editing began, keyed by string (managed separately from WeakMap)
19181        var savedValuesByKey = new Map();
19182        // Key management to restore confirmed values even when the framework restores the DOM after editEndedTrigger (cancel) is clicked
19183        var cancelledRootKeys = new Set();
19184
19185        var urls = {
19186            createVerificationCode: '/ajax/registrationAjax/createVerificationCode/',
19187            createVerificationCodeForEmail: '/ajax/registrationAjax/createVerificationCodeForEmail/',
19188            checkVerificationCode: '/ajax/registrationAjax/checkVerificationCode/',
19189            checkVerificationCodeForEmail: '/ajax/registrationAjax/checkVerificationCodeForEmail/'
19190        };
19191
19192        MultiFactorAuthentication = {
19193            initialClickedEditButtonArray: [],
19194            initialErrorItemRootArray: [],
19195            activeNoteTextHideFlag: false
19196        }
19197
19198        /**
19199         * Returns a stable string key based on the input type of the root element.
19200         * The same key is maintained even when the DOM node is replaced.
19201         */
19202        function getRootKey(root) {
19203            if (root.querySelector('.' + classNames.email)) {
19204                return 'email';
19205            }
19206            if (root.querySelector('.' + classNames.mobileNumber)) {
19207                return 'mobileNumber';
19208            }
19209            // If neither of the above, fall back to the order of appearance in the DOM
19210            var allRoots = doc.querySelectorAll('.' + classNames.root);
19211            return 'index-' + Array.prototype.indexOf.call(allRoots, root);
19212        }
19213
19214        MultiFactorAuthentication.init = function () {
19215            elements.roots = doc.querySelectorAll('.' + classNames.root);
19216
19217            if (!elements.roots.length) {
19218                return;
19219            }
19220
19221            // Turn off the SMSCodeButton event to avoid duplicate firing with click.formSMSCodeButton when root elements exist
19222            $(doc).off('click.formSMSCodeButton');
19223
19224            MultiStepForm = win.MultiStepForm;
19225            AvailableValidator = win.KeyenceForm.AvailableValidator;
19226
19227            this.setupRoots();
19228            this.restoreErrorState();
19229
19230            // Register events if dialog buttons are already in the DOM (applies to all roots)
19231            this.attachDialogButtonEvents();
19232
19233            // Start MutationObserver only once on the first init() call
19234            if (!MultiFactorAuthentication._observer) {
19235                MultiFactorAuthentication._observer = this.observe();
19236            }
19237        };
19238
19239        MultiFactorAuthentication.setupRoots = function () {
19240            var self = this;
19241
19242            elements.roots.forEach(function (root) {
19243                var scope = self.getRootScope(root);
19244                var state = self.getRootState(root);
19245                var rootKey = getRootKey(root);
19246
19247                if (state.isDeleted || deletedRootKeys.has(rootKey)) {
19248                    // If deleted, cancel the framework's DOM value restoration and save the state
19249                    self.clearValues(scope);
19250                    state.isDeleted = true;
19251                } else if (editingRootKeys.has(rootKey)) {
19252                    // If a markup change occurs during editing: write back the confirmed values from before editing started and cancel the editing state
19253                    var preEditValues = savedValuesByKey.get(rootKey);
19254                    if (preEditValues) {
19255                        if (scope.emailInput) scope.emailInput.value = preEditValues.email;
19256                        if (scope.mobileNumberInput) scope.mobileNumberInput.value = preEditValues.mobileNumber;
19257                        if (scope.countryId) scope.countryId.value = preEditValues.countryId;
19258                    }
19259                    editingRootKeys.delete(rootKey);
19260                    savedValuesByKey.delete(rootKey);
19261                    cancelledRootKeys.delete(rootKey);
19262                    // Restore the UI to the display state before editing
19263                    self.setDefaultDisplay(scope);
19264                } else if (cancelledRootKeys.has(rootKey)) {
19265                    // If the framework restores unverified values to the DOM after editEndedTrigger (cancel): write back the confirmed values
19266                    // Since the framework may keep injecting the same unverified value through multiple re-renders,
19267                    // do not remove the key until the user takes the next action (re-edit, verification success, or deletion)
19268                    var cancelledValues = savedValuesByKey.get(rootKey);
19269                    if (cancelledValues) {
19270                        if (scope.emailInput) scope.emailInput.value = cancelledValues.email;
19271                        if (scope.mobileNumberInput) scope.mobileNumberInput.value = cancelledValues.mobileNumber;
19272                        if (scope.countryId) scope.countryId.value = cancelledValues.countryId;
19273                    }
19274                }
19275
19276                self.saveCurrentValues(root, scope);
19277                self.saveConfirmedValues(root, scope);
19278                self.disableInputs(scope);
19279                self.initCheckSMSCodeValidButton(scope);
19280                self.initDeleteDialogTrigger(scope);
19281
19282                if (!attachedRoots.has(root)) {
19283                    attachedRoots.add(root);
19284                    self.attachEvents(root, scope);
19285                }
19286            });
19287
19288            self.onFocusResetActiveNoteTextHideFlag();
19289        };
19290
19291        /**
19292         * Restores the UI state for elements that have validation errors on init.
19293         * - If a root element (.js-controlVerificationTargetValue) has is-error,
19294         *   click its editTrigger to re-enter editing mode.
19295         * - If the phone number verification code div (#suz_div_verificationCode) has is-error,
19296         *   show the div and enable the verification code input.
19297         * - If the email verification code div (#suz_div_verificationEmailCode) has is-error,
19298         *   show the div and enable the verification code input.
19299         */
19300        MultiFactorAuthentication.restoreErrorState = function () {
19301            var self = this;
19302
19303            // Click editTrigger for any root that has an error state
19304            elements.roots.forEach(function (root) {
19305                if (root.classList.contains(classNames.isError)) {
19306                    var editTrigger = root.querySelector('button.' + classNames.editTrigger);
19307                    self.initialErrorItemRootArray.push(root);
19308                    if (editTrigger) {
19309                        self.initialClickedEditButtonArray.push(editTrigger);
19310                        editTrigger.click();
19311                    }
19312                }
19313            });
19314
19315            // For each verification code div with is-error:
19316            // show the div, enable the input, click editTrigger if not already clicked, attach events, and update the submit button state
19317            [idNames.verificationCodeDiv, idNames.verificationEmailCodeDiv].forEach(function (divId) {
19318                var div = doc.getElementById(divId);
19319                if (!div || !div.classList.contains(classNames.isError)) {
19320                    return;
19321                }
19322
19323                div.classList.remove(classNames.isHide);
19324
19325                var input = div.querySelector('input.' + classNames.checkSMSCodeValidTarget);
19326                if (input) {
19327                    input.removeAttribute('disabled');
19328                }
19329
19330                // Find the root whose scope is associated with this div, then attach events
19331                elements.roots.forEach(function (root) {
19332                    var scope = self.getRootScope(root);
19333                    if (scope.verificationCodeDiv !== div) {
19334                        return;
19335                    }
19336                    // Click editTrigger if the root itself does not have is-error (already handled above)
19337                    if (!root.classList.contains(classNames.isError)) {
19338                        var editTrigger = root.querySelector('button.' + classNames.editTrigger);
19339                        if (editTrigger) {
19340                            self.initialClickedEditButtonArray.push(editTrigger);
19341                            editTrigger.click();
19342                        }
19343                    }
19344                    // Attach input/click events to checkSMSCodeValidTarget and checkSMSCodeValidTrigger
19345                    // (attachSMSCodeValidEvents uses handler tracking to prevent duplicate registration)
19346                    self.attachSMSCodeValidEvents(root, scope);
19347                    // Reflect the current input value in the submit button's disabled state
19348                    if (scope.checkSMSCodeValidTrigger && scope.checkSMSCodeValidTarget) {
19349                        scope.checkSMSCodeValidTrigger.disabled = scope.checkSMSCodeValidTarget.value.length === 0;
19350                    }
19351                });
19352            });
19353        };
19354
19355        MultiFactorAuthentication.resolveDialogFromTrigger = function (trigger) {
19356            var dialogId = trigger.getAttribute('aria-controls') || '';
19357            var href = trigger.href || '';
19358
19359            if (!dialogId && href.indexOf('#') === 0) {
19360                dialogId = href.replace('#', '');
19361            }
19362
19363            return dialogId ? doc.getElementById(dialogId) : null;
19364        };
19365
19366        MultiFactorAuthentication.getRootScope = function (root) {
19367            var deleteDialogTrigger = root.querySelector('.' + classNames.deleteDialogTrigger);
19368            var dialog = null;
19369            var verificationCodeDiv = null;
19370
19371            if (!deleteDialogTrigger) {
19372                deleteDialogTrigger = root.querySelector(selectors.deleteDialogTriggerFallback);
19373            }
19374
19375            if (deleteDialogTrigger) {
19376                dialog = MultiFactorAuthentication.resolveDialogFromTrigger(deleteDialogTrigger);
19377            }
19378
19379            if (!dialog) {
19380                dialog = root.querySelector('dialog');
19381            }
19382
19383            if (root.querySelector('.' + classNames.email)) {
19384                verificationCodeDiv = doc.getElementById(idNames.verificationEmailCodeDiv);
19385            } else {
19386                verificationCodeDiv = doc.getElementById(idNames.verificationCodeDiv);
19387            }
19388
19389            return {
19390                root: root,
19391                emailInput: root.querySelector('.' + classNames.email),
19392                mobileNumberInput: root.querySelector('.' + classNames.mobileNumber),
19393                countryId: root.querySelector('.' + classNames.countryId),
19394                sendCode: root.querySelector('.' + classNames.sendCode),
19395                sendCodeTrigger: root.querySelector('.' + classNames.sendCodeTrigger),
19396                edit: root.querySelector('.' + classNames.edit),
19397                editTrigger: root.querySelector('.' + classNames.editTrigger),
19398                deleteDialog: root.querySelector('.' + classNames.deleteDialog),
19399                deleteDialogTrigger: deleteDialogTrigger,
19400                editEnded: root.querySelector('.' + classNames.editEnded),
19401                editEndedTrigger: root.querySelector('.' + classNames.editEndedTrigger),
19402                dialog: dialog,
19403                dialogCloseButton: dialog?.querySelector('.' + classNames.dialogCloseButton),
19404                dialogCancelButton: dialog?.querySelector(selectors.dialogCancelButton),
19405                dialogDeleteButton: dialog?.querySelector(selectors.dialogDeleteButton),
19406                verificationCodeDiv: verificationCodeDiv,
19407                checkSMSCodeValidTrigger: verificationCodeDiv?.querySelector('.' + classNames.checkSMSCodeValidTrigger),
19408                checkSMSCodeValidTarget: verificationCodeDiv?.querySelector('.' + classNames.checkSMSCodeValidTarget),
19409                checkSMSCodeValidLoadingIndicator: verificationCodeDiv?.querySelector('.' + classNames.checkSMSCodeValidLoadingIndicator),
19410            };
19411        };
19412
19413        MultiFactorAuthentication.getRootState = function (root) {
19414            if (!rootStates.has(root)) {
19415                rootStates.set(root, {
19416                    savedValues: {
19417                        email: '',
19418                        mobileNumber: '',
19419                        countryId: ''
19420                    },
19421                    confirmedValues: {
19422                        email: '',
19423                        mobileNumber: ''
19424                    },
19425                    isVerified: false,
19426                    isDeleted: false
19427                });
19428            }
19429
19430            return rootStates.get(root);
19431        };
19432
19433        MultiFactorAuthentication.saveCurrentValues = function (root, scope) {
19434            var state = this.getRootState(root);
19435
19436            state.savedValues.email = scope.emailInput?.value ?? '';
19437            state.savedValues.mobileNumber = scope.mobileNumberInput?.value ?? '';
19438            state.savedValues.countryId = scope.countryId?.value ?? '';
19439        };
19440
19441        MultiFactorAuthentication.saveConfirmedValues = function (root, scope) {
19442            var state = this.getRootState(root);
19443            state.confirmedValues.email = scope.emailInput?.value ?? '';
19444            state.confirmedValues.mobileNumber = scope.mobileNumberInput?.value ?? '';
19445        };
19446
19447        MultiFactorAuthentication.disableInputs = function (scope) {
19448            if (scope.emailInput) {
19449                scope.emailInput.disabled = true;
19450            }
19451            if (scope.mobileNumberInput) {
19452                scope.mobileNumberInput.disabled = true;
19453            }
19454            if (scope.countryId) {
19455                scope.countryId.disabled = true;
19456            }
19457        };
19458
19459        MultiFactorAuthentication.enableInputs = function (scope) {
19460            if (scope.emailInput) {
19461                scope.emailInput.disabled = false;
19462            }
19463            if (scope.mobileNumberInput) {
19464                scope.mobileNumberInput.disabled = false;
19465            }
19466            if (scope.countryId) {
19467                scope.countryId.disabled = false;
19468            }
19469        };
19470
19471        MultiFactorAuthentication.enableAllInputs = function () {
19472            var self = this;
19473            elements.roots.forEach(function (root) {
19474                var scope = self.getRootScope(root);
19475                self.enableInputs(scope);
19476            });
19477        };
19478
19479        MultiFactorAuthentication.attachEvents = function (root, scope) {
19480            var self = this;
19481
19482            if (scope.editTrigger) {
19483                scope.editTrigger.addEventListener('click', function (event) {
19484                    self.onClickEditTrigger(event, root, scope);
19485                });
19486            }
19487
19488            if (scope.editEndedTrigger) {
19489                scope.editEndedTrigger.addEventListener('click', function (event) {
19490                    self.onClickEditEndedTrigger(event, root, scope);
19491                });
19492            }
19493
19494            if (scope.sendCodeTrigger) {
19495                scope.sendCodeTrigger.addEventListener('click', function (event) {
19496                    self.onClickSendCodeTrigger(event, root, scope);
19497                });
19498            }
19499
19500            if (scope.deleteDialogTrigger) {
19501                scope.deleteDialogTrigger.addEventListener('click', function (event) {
19502                    self.onClickDeleteDialogTrigger(event, root, scope);
19503                });
19504            }
19505
19506            self.attachSMSCodeValidEvents(root, scope);
19507
19508            var attachVerifiedBlurEvent = function (input, savedValueKey) {
19509                input.addEventListener('blur', function () {
19510                    var state = self.getRootState(root);
19511                    if (state.isVerified && input.value !== state.savedValues[savedValueKey]) {
19512                        root.querySelectorAll('.' + classNames.formSuccessTextOuter).forEach(function (el) {
19513                            el.classList.add(classNames.isHide);
19514                        });
19515                    }
19516                });
19517            };
19518
19519            if (scope.emailInput) {
19520                scope.emailInput.addEventListener('change', function () {
19521                    self.updateDeleteDialogTriggerState(scope);
19522                });
19523                attachVerifiedBlurEvent(scope.emailInput, 'email');
19524            }
19525
19526            if (scope.mobileNumberInput) {
19527                scope.mobileNumberInput.addEventListener('change', function () {
19528                    self.updateDeleteDialogTriggerState(scope);
19529                });
19530                attachVerifiedBlurEvent(scope.mobileNumberInput, 'mobileNumber');
19531            }
19532        };
19533
19534        /**
19535         * Attaches input and click events to the SMS/email verification code input and submit button.
19536         * Stores handlers on the element to prevent duplicate attachment across multiple calls
19537         * (e.g., from attachEvents during init and from restoreErrorState on error page reload).
19538         */
19539        MultiFactorAuthentication.attachSMSCodeValidEvents = function (root, scope) {
19540            var self = this;
19541
19542            if (scope.checkSMSCodeValidTarget && !scope.checkSMSCodeValidTarget._mfaInputHandler) {
19543                scope.checkSMSCodeValidTarget._mfaInputHandler = function () {
19544                    self.onInputCheckSMSCodeValid(scope);
19545                };
19546                scope.checkSMSCodeValidTarget.addEventListener('input', scope.checkSMSCodeValidTarget._mfaInputHandler);
19547            }
19548
19549            if (scope.checkSMSCodeValidTarget && !scope.checkSMSCodeValidTarget._mfaFocusHandler) {
19550                scope.checkSMSCodeValidTarget._mfaFocusHandler = function () {
19551                    self.onFocusRemoveRootNoteText(scope, root);
19552                };
19553                scope.checkSMSCodeValidTarget.addEventListener('focus', scope.checkSMSCodeValidTarget._mfaFocusHandler);
19554            }
19555
19556            if (scope.checkSMSCodeValidTrigger && !scope.checkSMSCodeValidTrigger._mfaClickHandler) {
19557                scope.checkSMSCodeValidTrigger._mfaClickHandler = function (event) {
19558                    self.onClickCheckSMSCodeValid(event, root, scope);
19559                };
19560                scope.checkSMSCodeValidTrigger.addEventListener('click', scope.checkSMSCodeValidTrigger._mfaClickHandler);
19561            }
19562        };
19563
19564        MultiFactorAuthentication.initCheckSMSCodeValidButton = function (scope) {
19565            if (!scope.checkSMSCodeValidTrigger) {
19566                return;
19567            }
19568            scope.checkSMSCodeValidTrigger.disabled = true;
19569        };
19570
19571        MultiFactorAuthentication.onInputCheckSMSCodeValid = function (scope) {
19572            if (!scope.checkSMSCodeValidTrigger || !scope.checkSMSCodeValidTarget) {
19573                return;
19574            }
19575            scope.checkSMSCodeValidTrigger.disabled = scope.checkSMSCodeValidTarget.value.length === 0;
19576        };
19577
19578        MultiFactorAuthentication.onFocusRemoveRootNoteText = function (scope, root) {
19579            if (!scope.checkSMSCodeValidTrigger ||
19580                !scope.checkSMSCodeValidTarget ||
19581                !root
19582            ) {
19583                return;
19584            }
19585
19586            if (root.classList.contains(AvailableValidator?.targetClass.status)) {
19587                AvailableValidator.clearNoteText(root);
19588            }
19589        };
19590
19591        MultiFactorAuthentication.onClickCheckSMSCodeValid = function (event, root, scope) {
19592            var self = this;
19593            var MultiStepForm = win.MultiStepForm;
19594            var verificationCode = scope.checkSMSCodeValidTarget?.value ?? '';
19595            var inputName = scope.checkSMSCodeValidTarget?.name ?? '';
19596
19597            if (!verificationCode) {
19598                return;
19599            }
19600
19601            if (scope.checkSMSCodeValidTrigger) {
19602                scope.checkSMSCodeValidTrigger.disabled = true;
19603            }
19604            if (scope.checkSMSCodeValidLoadingIndicator) {
19605                scope.checkSMSCodeValidLoadingIndicator.classList.remove(classNames.isHide);
19606            }
19607
19608            var restoreUI = function () {
19609                if (scope.checkSMSCodeValidTrigger) {
19610                    scope.checkSMSCodeValidTrigger.disabled = false;
19611                }
19612                if (scope.checkSMSCodeValidLoadingIndicator) {
19613                    scope.checkSMSCodeValidLoadingIndicator.classList.add(classNames.isHide);
19614                }
19615            };
19616
19617            if (scope.emailInput) {
19618                var emailAddress = scope.emailInput.value;
19619
19620                self.checkVerificationCodeForEmail(emailAddress, verificationCode).done(function (data) {
19621                    if (data?.message) {
19622                        if (MultiStepForm?.insertErrorText) {
19623                            MultiStepForm.insertErrorText(inputName, data.message);
19624                        }
19625                    } else {
19626                        if (MultiStepForm?.clearInputError) {
19627                            MultiStepForm.clearInputError(inputName, true);
19628                        }
19629                        self.onVerificationSuccess(root, scope);
19630                    }
19631                }).fail(function (jqXHR, textStatus) {
19632                    if (jqXHR && jqXHR.status !== 200) {
19633                        if (MultiStepForm?.insertErrorText) {
19634                            MultiStepForm.insertErrorText(inputName, kpi_translation.ServerConnectErrorMessage);
19635                        }
19636                        return;
19637                    }
19638                    if (MultiStepForm?.asyncErrorHundler) {
19639                        MultiStepForm.asyncErrorHundler(jqXHR?.status ?? 0, textStatus);
19640                    }
19641                }).always(function () {
19642                    restoreUI();
19643
19644                    if (root.classList.contains(AvailableValidator?.targetClass.status)) {
19645                        AvailableValidator.clearNoteText(root);
19646                    }
19647
19648                    self.activeNoteTextHideFlag = true;
19649                });
19650            } else if (scope.mobileNumberInput && scope.countryId) {
19651                var mobileNumber = scope.mobileNumberInput.value;
19652                var mobileCountryId = scope.countryId.value;
19653
19654                self.checkVerificationCodeForPhone(mobileCountryId, mobileNumber, verificationCode).done(function (data) {
19655                    if (data?.message) {
19656                        if (MultiStepForm?.insertErrorText) {
19657                            MultiStepForm.insertErrorText(inputName, data.message);
19658                        }
19659                    } else {
19660                        if (MultiStepForm?.clearInputError) {
19661                            MultiStepForm.clearInputError(inputName, true);
19662                        }
19663                        self.onVerificationSuccess(root, scope);
19664                    }
19665                }).fail(function (jqXHR, textStatus) {
19666                    if (jqXHR && jqXHR.status !== 200) {
19667                        if (MultiStepForm?.insertErrorText) {
19668                            MultiStepForm.insertErrorText(inputName, kpi_translation.ServerConnectErrorMessage);
19669                        }
19670                        return;
19671                    }
19672                    if (MultiStepForm?.asyncErrorHundler) {
19673                        MultiStepForm.asyncErrorHundler(jqXHR?.status ?? 0, textStatus);
19674                    }
19675                }).always(function () {
19676                    restoreUI();
19677
19678                    if (root.classList.contains(AvailableValidator?.targetClass.status)) {
19679                        AvailableValidator.clearNoteText(root);
19680                    }
19681
19682                    self.activeNoteTextHideFlag = true;
19683                });
19684            }
19685        };
19686
19687        MultiFactorAuthentication.onVerificationSuccess = function (root, scope) {
19688            var state = this.getRootState(root);
19689            state.isVerified = true;
19690            state.isDeleted = false;
19691            deletedRootKeys.delete(getRootKey(root));
19692            editingRootKeys.delete(getRootKey(root));
19693            cancelledRootKeys.delete(getRootKey(root));
19694            savedValuesByKey.delete(getRootKey(root));
19695            root.querySelectorAll('.' + classNames.formSuccessTextOuter).forEach(function (el) {
19696                el.classList.remove(classNames.isHide);
19697            });
19698            this.saveConfirmedValues(root, scope);
19699            this.disableInputs(scope);
19700            this.setDefaultDisplay(scope);
19701            this.updateDeleteDialogTriggerState();
19702            if (MultiStepForm.isEditProfileForm()) {
19703                this.removeSubmitTriggerDisabled();
19704            }
19705        };
19706
19707        MultiFactorAuthentication.initDeleteDialogTrigger = function (scope) {
19708            this.updateDeleteDialogTriggerState(scope);
19709        };
19710
19711        MultiFactorAuthentication.updateDeleteDialogTriggerState = function () {
19712            var self = this;
19713
19714            // Check the values of all scopes
19715            var allScopeData = [];
19716            elements.roots.forEach(function (root) {
19717                var scope = self.getRootScope(root);
19718                var state = self.getRootState(root);
19719                var emailValue = scope.emailInput?.value ?? '';
19720                var mobileValue = scope.mobileNumberInput?.value ?? '';
19721                var hasValue = emailValue.length > 0 || mobileValue.length > 0;
19722
19723                // Consider a scope confirmed only if the current input value matches confirmedValues (the correct registered or verified value)
19724                var isConfirmed = hasValue &&
19725                    emailValue === state.confirmedValues.email &&
19726                    mobileValue === state.confirmedValues.mobileNumber;
19727
19728                allScopeData.push({
19729                    scope: scope,
19730                    hasValue: hasValue,
19731                    isConfirmed: isConfirmed
19732                });
19733            });
19734
19735            // Number of confirmed scopes
19736            var confirmedScopesCount = allScopeData.filter(function (item) {
19737                return item.isConfirmed;
19738            }).length;
19739
19740            // Whether any scope has a value
19741            var anyHasValue = allScopeData.some(function (item) {
19742                return item.hasValue;
19743            });
19744
19745            // Always disable the delete button when there is only one root
19746            var isSingleRoot = allScopeData.length <= 1;
19747
19748            // Enable only when all scopes are confirmed and at least one has a value (disable otherwise)
19749            allScopeData.forEach(function (item) {
19750                if (!item.scope.deleteDialogTrigger) {
19751                    return;
19752                }
19753                var shouldDisable = isSingleRoot || confirmedScopesCount !== allScopeData.length || !anyHasValue;
19754                item.scope.deleteDialogTrigger.disabled = shouldDisable;
19755                item.scope.deleteDialogTrigger.setAttribute('aria-disabled', shouldDisable ? 'true' : 'false');
19756            });
19757        };
19758
19759        MultiFactorAuthentication.createVerificationCodeForPhone = function (mobileCountryId, mobileNumber) {
19760            var deferred = new $.Deferred();
19761
19762            if (typeof mobileCountryId !== 'string' ||
19763                typeof mobileNumber !== 'string'
19764            ) {
19765                return deferred.reject();
19766            }
19767
19768            $.ajax({
19769                url: win.suz_getCurrentDomain() + urls.createVerificationCode,
19770                data: {
19771                    mobileCountryId: mobileCountryId,
19772                    mobileNumber: mobileNumber
19773                },
19774                dataType: 'jsonp',
19775                jsonp: 'callback',
19776                scriptCharset: 'UTF-8'
19777            }).done(function (data) {
19778                deferred.resolve(data);
19779            }).fail(function (jqXHR, textStatus, errorThrown) {
19780                deferred.reject(jqXHR, textStatus, errorThrown);
19781            });
19782
19783            return deferred.promise();
19784        };
19785
19786        MultiFactorAuthentication.createVerificationCodeForEmail = function (emailAddress) {
19787            var deferred = new $.Deferred();
19788
19789            if (typeof emailAddress !== 'string') {
19790                return deferred.reject();
19791            }
19792
19793            $.ajax({
19794                url: win.suz_getCurrentDomain() + urls.createVerificationCodeForEmail,
19795                data: {
19796                    emailAddress: emailAddress
19797                },
19798                dataType: 'jsonp',
19799                jsonp: 'callback',
19800                scriptCharset: 'UTF-8'
19801            }).done(function (data) {
19802                deferred.resolve(data);
19803            }).fail(function (jqXHR, textStatus, errorThrown) {
19804                deferred.reject(jqXHR, textStatus, errorThrown);
19805            });
19806
19807            return deferred.promise();
19808        };
19809
19810        MultiFactorAuthentication.checkVerificationCodeForPhone = function (mobileCountryId, mobileNumber, verificationCode) {
19811            var deferred = new $.Deferred();
19812
19813            if (typeof mobileCountryId !== 'string' ||
19814                typeof mobileNumber !== 'string' ||
19815                typeof verificationCode !== 'string'
19816            ) {
19817                return deferred.reject();
19818            }
19819
19820            $.ajax({
19821                url: win.suz_getCurrentDomain() + urls.checkVerificationCode,
19822                data: {
19823                    mobileCountryId: mobileCountryId,
19824                    mobileNumber: mobileNumber,
19825                    verificationCode: verificationCode
19826                },
19827                dataType: 'jsonp',
19828                jsonp: 'callback',
19829                scriptCharset: 'UTF-8'
19830            }).done(function (data) {
19831                deferred.resolve(data);
19832            }).fail(function (jqXHR, textStatus, errorThrown) {
19833                deferred.reject(jqXHR, textStatus, errorThrown);
19834            });
19835
19836            return deferred.promise();
19837        };
19838
19839        MultiFactorAuthentication.checkVerificationCodeForEmail = function (emailAddress, verificationCode) {
19840            var deferred = new $.Deferred();
19841
19842            if (typeof emailAddress !== 'string' ||
19843                typeof verificationCode !== 'string'
19844            ) {
19845                return deferred.reject();
19846            }
19847
19848            $.ajax({
19849                url: win.suz_getCurrentDomain() + urls.checkVerificationCodeForEmail,
19850                data: {
19851                    emailAddress: emailAddress,
19852                    verificationCode: verificationCode
19853                },
19854                dataType: 'jsonp',
19855                jsonp: 'callback',
19856                scriptCharset: 'UTF-8'
19857            }).done(function (data) {
19858                deferred.resolve(data);
19859            }).fail(function (jqXHR, textStatus, errorThrown) {
19860                deferred.reject(jqXHR, textStatus, errorThrown);
19861            });
19862
19863            return deferred.promise();
19864        };
19865
19866        MultiFactorAuthentication.onClickSendCodeTrigger = function (event, root, scope) {
19867            var SMSCodeButton = win.KeyenceForm.SMSCodeButton;
19868            var AvailableValidator = win.KeyenceForm.AvailableValidator;
19869            var MultiStepForm = win.MultiStepForm;
19870            var button = event.currentTarget;
19871            var self = this;
19872            var wrapper = null;
19873
19874            // Defer SMSCodeButton UI updates until after the async response so that GTM event tracking runs first
19875            var activateSMSCodeButton = function () {
19876                // Clear any existing timer first to prevent a stale timer from mistakenly clearing the new timer
19877                if (SMSCodeButton.timeIds[button.id] && typeof SMSCodeButton.timeIds[button.id].timeId === 'number') {
19878                    win.clearInterval(SMSCodeButton.timeIds[button.id].timeId);
19879                    delete SMSCodeButton.timeIds[button.id];
19880                }
19881                SMSCodeButton.disableButton(button);
19882                SMSCodeButton.replaceButtonText(button, button.getAttribute('data-resend-text'));
19883                SMSCodeButton.toggleResendCount(button, 'show');
19884                SMSCodeButton.countResendTime(button);
19885            };
19886
19887            if (scope.emailInput) {
19888                var emailAddress = scope.emailInput.value;
19889                self.isSendingVerificationCode = true;
19890
19891                win.suz_callRegValidator(scope.emailInput.name, emailAddress, true).done(function (result) {
19892                    if (!result['message']) {
19893                        self.createVerificationCodeForEmail(emailAddress).done(function (status) {
19894                            if (status.message && MultiStepForm?.insertErrorText) {
19895                                MultiStepForm.insertErrorText(scope.emailInput.name, status.message);
19896                            } else {
19897                                if (MultiStepForm?.clearInputError) {
19898                                    MultiStepForm.clearInputError(scope.emailInput.name, true);
19899
19900                                    wrapper = scope.emailInput.closest(`.${AvailableValidator?.targetClass.status}`);
19901                                    if (wrapper) {
19902                                        AvailableValidator.clearNoteText(wrapper);
19903                                    }
19904                                }
19905                                if (scope.verificationCodeDiv) {
19906                                    scope.verificationCodeDiv.classList.remove(classNames.isHide);
19907                                }
19908                                if (scope.checkSMSCodeValidTarget) {
19909                                    scope.checkSMSCodeValidTarget.focus();
19910                                }
19911                                activateSMSCodeButton();
19912                            }
19913                        }).fail(function (jqXHR, textStatus, errorThrown) {
19914                            if (jqXHR && jqXHR.status !== 200) {
19915                                if (MultiStepForm?.insertErrorText) {
19916                                    MultiStepForm.insertErrorText(scope.emailInput.name, kpi_translation.ServerConnectErrorMessage);
19917                                }
19918                                return;
19919                            }
19920                            if (MultiStepForm?.asyncErrorHundler) {
19921                                MultiStepForm.asyncErrorHundler(jqXHR?.status ?? 0, textStatus);
19922                            }
19923                            self.isSendingVerificationCode = false;
19924                        }).always(function () {
19925                            if (root.classList.contains(AvailableValidator?.targetClass.status)) {
19926                                AvailableValidator.clearNoteText(root);
19927                            }
19928
19929                            self.isSendingVerificationCode = false;
19930                            self.activeNoteTextHideFlag = true;
19931                        });
19932                    } else {
19933                        self.isSendingVerificationCode = false;
19934                    }
19935                }).fail(function () {
19936                    console.error('Reg validator error');
19937                    self.isSendingVerificationCode = false;
19938                });
19939            } else if (scope.mobileNumberInput && scope.countryId) {
19940                var mobileNumber = scope.mobileNumberInput.value;
19941                var mobileCountryId = scope.countryId.value;
19942                self.isSendingVerificationCode = true;
19943
19944                win.suz_callRegValidator(scope.mobileNumberInput.name, mobileNumber, true).done(function (result) {
19945                    if (!result['message']) {
19946                        self.createVerificationCodeForPhone(mobileCountryId, mobileNumber).done(function (status) {
19947                            if (status.message && MultiStepForm?.insertErrorText) {
19948                                if (SMSCodeButton.maxCountOver.errorFlag === status.maxCntOverFlg) {
19949                                    SMSCodeButton.setMaxCountOverDisabled(button, mobileNumber);
19950                                }
19951                                MultiStepForm.insertErrorText(scope.mobileNumberInput.name, status.message);
19952                            } else {
19953                                if (MultiStepForm?.clearInputError) {
19954                                    MultiStepForm.clearInputError(scope.mobileNumberInput.name, true);
19955
19956                                    wrapper = scope.mobileNumberInput.closest(`.${AvailableValidator?.targetClass.status}`);
19957                                    if (wrapper) {
19958                                        AvailableValidator.clearNoteText(wrapper);
19959                                    }
19960                                }
19961                                if (scope.verificationCodeDiv) {
19962                                    scope.verificationCodeDiv.classList.remove(classNames.isHide);
19963                                }
19964                                if (scope.checkSMSCodeValidTarget) {
19965                                    scope.checkSMSCodeValidTarget.focu
19965s();
19966                                }
19967                                activateSMSCodeButton();
19968                            }
19969                        }).fail(function (jqXHR, textStatus, errorThrown) {
19970                            if (jqXHR && jqXHR.status !== 200) {
19971                                if (MultiStepForm?.insertErrorText) {
19972                                    MultiStepForm.insertErrorText(scope.mobileNumberInput.name, kpi_translation.ServerConnectErrorMessage);
19973                                }
19974                                return;
19975                            }
19976                            if (MultiStepForm?.asyncErrorHundler) {
19977                                MultiStepForm.asyncErrorHundler(jqXHR?.status ?? 0, textStatus);
19978                            }
19979                        }).always(function () {
19980                            if (root.classList.contains(AvailableValidator?.targetClass.status)) {
19981                                AvailableValidator.clearNoteText(root);
19982                            }
19983
19984                            self.isSendingVerificationCode = false;
19985                            self.activeNoteTextHideFlag = true;
19986                        });
19987                    } else {
19988                        self.isSendingVerificationCode = false;
19989                    }
19990                }).fail(function () {
19991                    console.error('Reg validator error');
19992                    self.isSendingVerificationCode = false;
19993                });
19994            }
19995        };
19996
19997        MultiFactorAuthentication.onClickEditTrigger = function (event, root, scope) {
19998            var trigger = event.currentTarget;
19999            var autoClickTriggerIndex = 0;
20000            var targetField = scope.emailInput ? scope.emailInput : scope.mobileNumberInput;
20001            var errorFieldWrapper = null;
20002
20003            event.preventDefault();
20004            this.saveCurrentValues(root, scope);
20005
20006            // Persistently store the confirmed values at the time editing starts with a string key (to restore after DOM replacement)
20007            var rootKey = getRootKey(root);
20008            var state = this.getRootState(root);
20009            editingRootKeys.add(rootKey);
20010            cancelledRootKeys.delete(rootKey); // Clear the cancel-pending state when re-editing begins
20011            savedValuesByKey.set(rootKey, {
20012                email: state.savedValues.email,
20013                mobileNumber: state.savedValues.mobileNumber,
20014                countryId: state.savedValues.countryId
20015            });
20016
20017            this.enableInputs(scope);
20018
20019            if (scope.deleteDialog) {
20020                scope.deleteDialog.classList.add(classNames.isHide);
20021            }
20022            if (scope.editEnded) {
20023                scope.editEnded.classList.remove(classNames.isHide);
20024            }
20025            if (scope.edit) {
20026                scope.edit.classList.add(classNames.isHide);
20027            }
20028            if (scope.sendCode) {
20029                scope.sendCode.classList.remove(classNames.isHide);
20030                if (scope.sendCodeTrigger) {
20031                    var SMSCodeButton = win.KeyenceForm.SMSCodeButton;
20032                    var isCountingDown = SMSCodeButton?.timeIds?.[scope.sendCodeTrigger.id];
20033                    if (!isCountingDown) {
20034                        scope.sendCodeTrigger.removeAttribute('disabled');
20035                        scope.sendCodeTrigger.setAttribute('aria-disabled', 'false');
20036                    }
20037                }
20038            }
20039
20040            if (MultiStepForm.isEditProfileForm()) {
20041                this.addSubmitTriggerDisabled();
20042            }
20043
20044            if (this.initialClickedEditButtonArray.length) {
20045                autoClickTriggerIndex = this.initialClickedEditButtonArray.indexOf(trigger);
20046
20047                if (autoClickTriggerIndex !== -1) {
20048                    this.initialClickedEditButtonArray.splice(autoClickTriggerIndex, 1);
20049
20050                    return;
20051                }
20052            }
20053
20054            if (this.initialErrorItemRootArray.length) {
20055                errorFieldWrapper = targetField.closest(`.${classNames.root}`);
20056
20057                if (this.isMatchedInitialErrorField(errorFieldWrapper)) {
20058                    this.removeInitialErrorArray(errorFieldWrapper);
20059                }
20060            }
20061
20062            if (scope.emailInput) {
20063                scope.emailInput.focus();
20064            } else if (scope.mobileNumberInput) {
20065                scope.mobileNumberInput.focus();
20066            }
20067        };
20068
20069        MultiFactorAuthentication.restoreValues = function (root, scope) {
20070            var state = this.getRootState(root);
20071
20072            if (scope.emailInput) {
20073                scope.emailInput.value = state.savedValues.email;
20074            }
20075            if (scope.mobileNumberInput) {
20076                scope.mobileNumberInput.value = state.savedValues.mobileNumber;
20077            }
20078            if (scope.countryId) {
20079                scope.countryId.value = state.savedValues.countryId;
20080            }
20081        };
20082
20083        MultiFactorAuthentication.clearValues = function (scope) {
20084            if (scope.emailInput) {
20085                scope.emailInput.value = '';
20086            }
20087            if (scope.mobileNumberInput) {
20088                scope.mobileNumberInput.value = '';
20089            }
20090        };
20091
20092        MultiFactorAuthentication.setDefaultDisplay = function (scope) {
20093            if (scope.edit) {
20094                scope.edit.classList.remove(classNames.isHide);
20095            }
20096            if (scope.deleteDialog) {
20097                scope.deleteDialog.classList.remove(classNames.isHide);
20098            }
20099            if (scope.editEnded) {
20100                scope.editEnded.classList.add(classNames.isHide);
20101            }
20102            if (scope.sendCode) {
20103                scope.sendCode.classList.add(classNames.isHide);
20104            }
20105            if (scope.verificationCodeDiv) {
20106                scope.verificationCodeDiv.classList.add(classNames.isHide);
20107            }
20108        };
20109
20110        MultiFactorAuthentication.closeDialog = function (scope, event) {
20111            if (scope.dialogCloseButton) {
20112                scope.dialogCloseButton.click();
20113
20114                return;
20115            }
20116
20117            if (scope.dialog && typeof scope.dialog.close === 'function') {
20118                scope.dialog.close();
20119
20120                return;
20121            }
20122
20123            // prd-modalDialog pattern: traverse up from the clicked element to .prd-modalDialog-container and click .prd-modalDialog-closeButton
20124            var clickedElement = event?.currentTarget ?? null;
20125            var modalContainer = clickedElement ? clickedElement.closest('.prd-modalDialog-container') : null;
20126            var prdCloseButton = modalContainer ? modalContainer.querySelector('.prd-modalDialog-closeButton') : null;
20127
20128            if (prdCloseButton) {
20129                prdCloseButton.click();
20130            }
20131        };
20132
20133        MultiFactorAuthentication.onClickEditEndedTrigger = function (event, root, scope) {
20134            var self = this;
20135            var state = this.getRootState(root);
20136            var rootKey = getRootKey(root);
20137            var targetField = scope.emailInput ? scope.emailInput : scope.mobileNumberInput;
20138            event.preventDefault();
20139            editingRootKeys.delete(rootKey);
20140            // Do not delete savedValuesByKey here:
20141            // It is managed via cancelledRootKeys so that setupRoots() can write back
20142            // the confirmed values if the framework re-renders the DOM and restores unverified values
20143            cancelledRootKeys.add(rootKey);
20144
20145            this.restoreValues(root, scope);
20146
20147            win.suz_callRegValidator(targetField.name, targetField.value).done(function (result) {
20148                    if (root.classList.contains(classNames.isError)) {
20149                        MultiStepForm?.clearInputError(targetField?.name, true);
20150                    } else if (root.classList.contains(AvailableValidator?.targetClass.status)) {
20151                        AvailableValidator.clearNoteText(root);
20152                    }
20153                    // Restore the value to prevent it from being overwritten by the Abstract API
20154                    self.restoreValues(root, scope);
20155                    self.disableInputs(scope);
20156                    self.setDefaultDisplay(scope);
20157                    if (state.isVerified) {
20158                        root.querySelectorAll('.' + classNames.formSuccessTextOuter).forEach(function (el) {
20159                            el.classList.remove(classNames.isHide);
20160                        });
20161                    }
20162                    self.updateDeleteDialogTriggerState();
20163                    if (MultiStepForm?.isEditProfileForm()) {
20164                        self.removeSubmitTriggerDisabled();
20165                    }
20166                    self.deleteVerificationErrorCode(scope);
20167            }).fail(function () {
20168                console.error('Reg validator error');
20169            });
20170        };
20171
20172        MultiFactorAuthentication.onClickDeleteDialogTrigger = function (event, root, scope) {
20173            // Do not call event.preventDefault() because the Stimulus modal-dialog-opener controller
20174            // also opens the dialog on the same click event.
20175            // Only prevent Stimulus from processing when aria-disabled is set.
20176            if (scope.deleteDialogTrigger?.getAttribute('aria-disabled') === 'true') {
20177                event.preventDefault();
20178                return;
20179            }
20180
20181            this.saveCurrentValues(root, scope);
20182
20183            if (scope.verificationCodeDiv) {
20184                scope.verificationCodeDiv.classList.add(classNames.isHide);
20185            }
20186
20187            // Keep DialogOpenEvent as it is required on other pages (no-op on this page)
20188            const open = new CustomEvent('DialogOpenEvent', {
20189                detail: {
20190                    href: '#js-verificationTargetValue-dialogEmailValueDelete',
20191                },
20192            });
20193            window.dispatchEvent(open);
20194
20195            // On this page, the Stimulus modal-dialog-opener controller responds to the same click event
20196            // and generates the dialog DOM from a template.
20197            // Since the Stimulus handler runs after this handler,
20198            // defer event registration on the dialog buttons to the next task.
20199            // The global MutationObserver inside observe() also serves as an additional fallback.
20200            var self = this;
20201            setTimeout(function () {
20202                self.attachDialogButtonEvents(root, scope);
20203
20204                // Remove dialogs that remain with aria-hidden="true" after being closed via the Esc key.
20205                // Target cancel buttons for both email and mobileNumber
20206                // so that whichever dialog is opened, the one left from the previous Esc close can be removed.
20207                // Only do this when there are two or more buttons with the same ID (if only one exists, it is the first open, so leave it alone)
20208                var allCancelBtns = doc.querySelectorAll(
20209                    '#js-controlVerificationTargetValue-emailCancel, ' +
20210                    '#js-controlVerificationTargetValue-mobileNumberCancel'
20211                );
20212                if (allCancelBtns.length >= 2) {
20213                    for (var i = 0; i < allCancelBtns.length; i++) {
20214                        var dialog = allCancelBtns[i].closest('.prd-modalDialog');
20215                        if (dialog && dialog.getAttribute('aria-hidden') === 'true') {
20216                            dialog.remove();
20217                            break;
20218                        }
20219                    }
20220                }
20221            }, 0);
20222        };
20223
20224        MultiFactorAuthentication.attachDialogButtonEvents = function (root, scope) {
20225            var self = this;
20226
20227            // If root is not specified, execute for all roots (used when called from init())
20228            if (!root) {
20229                elements.roots.forEach(function (r) {
20230                    var s = self.getRootScope(r);
20231                    self.attachDialogButtonEvents(r, s);
20232                });
20233                return;
20234            }
20235
20236            // Determine the unique button ID based on the root type (email / mobileNumber)
20237            // and retrieve only the correct button directly via doc.getElementById.
20238            var isEmailRoot = !!root.querySelector('.' + classNames.email);
20239            var cancelButtonId = isEmailRoot
20240                ? 'js-controlVerificationTargetValue-emailCancel'
20241                : 'js-controlVerificationTargetValue-mobileNumberCancel';
20242            var deleteButtonId = isEmailRoot
20243                ? 'js-controlVerificationTargetValue-emailDelete'
20244                : 'js-controlVerificationTargetValue-mobileNumberDelete';
20245
20246            // When the dialog is closed with the Esc key, DOM elements with aria-hidden="true" may remain,
20247            // resulting in multiple buttons with the same ID when the dialog is opened again.
20248            // Since getElementById returns the first (old) element, use querySelectorAll
20249            // to get the last (newest = visible) element.
20250            var cancelButtons = doc.querySelectorAll('#' + cancelButtonId);
20251            var dialogCancelButton = cancelButtons.length ? cancelButtons[cancelButtons.length - 1] : null;
20252            var deleteButtons = doc.querySelectorAll('#' + deleteButtonId);
20253            var dialogDeleteButton = deleteButtons.length ? deleteButtons[deleteButtons.length - 1] : null;
20254
20255            // Re-attach events every time using remove → add.
20256            // If the node has been replaced due to DOM reconstruction, the old handler no longer exists,
20257            // so addEventListener runs directly. For the same node, remove first before re-registering.
20258            if (dialogCancelButton) {
20259                if (dialogCancelButton._mfaCancelHandler) {
20260                    dialogCancelButton.removeEventListener('click', dialogCancelButton._mfaCancelHandler);
20261                }
20262                dialogCancelButton._mfaCancelHandler = function (event) {
20263                    self.onClickDialogCancel(event, root, scope);
20264                };
20265                dialogCancelButton.addEventListener('click', dialogCancelButton._mfaCancelHandler);
20266            }
20267
20268            if (dialogDeleteButton) {
20269                if (dialogDeleteButton._mfaDeleteHandler) {
20270                    dialogDeleteButton.removeEventListener('click', dialogDeleteButton._mfaDeleteHandler);
20271                }
20272                dialogDeleteButton._mfaDeleteHandler = function (event) {
20273                    self.onClickDialogDelete(event, root, scope);
20274                };
20275                dialogDeleteButton.addEventListener('click', dialogDeleteButton._mfaDeleteHandler);
20276            }
20277        };
20278
20279        MultiFactorAuthentication.onClickDialogCancel = function (event, root, scope) {
20280            event.preventDefault();
20281            this.restoreValues(root, scope);
20282            this.disableInputs(scope);
20283            this.setDefaultDisplay(scope);
20284            this.closeDialog(scope, event);
20285            this.updateDeleteDialogTriggerState(scope);
20286        };
20287
20288        MultiFactorAuthentication.onClickDialogDelete = function (event, root, scope) {
20289            var state = this.getRootState(root);
20290            event.preventDefault();
20291            this.clearValues(scope);
20292            this.disableInputs(scope);
20293            this.setDefaultDisplay(scope);
20294            this.saveCurrentValues(root, scope);
20295            this.saveConfirmedValues(root, scope);
20296            this.closeDialog(scope, event);
20297            this.updateDeleteDialogTriggerState(scope);
20298            state.isVerified = false;
20299            state.isDeleted = true;
20300            deletedRootKeys.add(getRootKey(root));
20301            root.querySelectorAll('.' + classNames.formSuccessTextOuter).forEach(function (el) {
20302                el.classList.add(classNames.isHide);
20303            });
20304        };
20305
20306        /**
20307         * Monitors dynamic DOM changes using MutationObserver.
20308         * - When a new root element is added: re-run init() to set up the new root
20309         * - When a dialog button is newly added or replaced: re-run attachDialogButtonEvents() to
20310         *   re-attach events to the new button element (duplicates are prevented by the dialogButtonsWithEvents WeakSet)
20311         * @returns {MutationObserver}
20312         */
20313        MultiFactorAuthentication.observe = function () {
20314            var self = this;
20315            var observerTimer = null;
20316
20317            var observer = new MutationObserver(function (mutations) {
20318                var hasNewRoots = false;
20319                var hasNewDialogButtons = false;
20320
20321                mutations.forEach(function (mutation) {
20322                    mutation.addedNodes.forEach(function (node) {
20323                        if (node.nodeType !== 1) {
20324                            return;
20325                        }
20326                        // Detect addition of new root elements
20327                        if (
20328                            (node.classList && node.classList.contains(classNames.root)) ||
20329                            (node.querySelector && node.querySelector('.' + classNames.root))
20330                        ) {
20331                            hasNewRoots = true;
20332                        }
20333                        // Detect addition or replacement of dialog buttons
20334                        if (
20335                            (node.matches && (
20336                                node.matches(selectors.dialogCancelButton) ||
20337                                node.matches(selectors.dialogDeleteButton)
20338                            )) ||
20339                            (node.querySelector && (
20340                                node.querySelector(selectors.dialogCancelButton) ||
20341                                node.querySelector(selectors.dialogDeleteButton)
20342                            ))
20343                        ) {
20344                            hasNewDialogButtons = true;
20345                        }
20346                    });
20347                });
20348
20349                if (!hasNewRoots && !hasNewDialogButtons) {
20350                    return;
20351                }
20352
20353                // Batch processing when fired consecutively within a short interval
20354                clearTimeout(observerTimer);
20355                observerTimer = setTimeout(function () {
20356                    if (hasNewRoots) {
20357                        // Re-initialize including the new root (duplicate registration to existing roots is prevented by the attachedRoots WeakSet)
20358                        self.init();
20359                    }
20360                    if (hasNewDialogButtons) {
20361                        // When dialog buttons have been replaced, re-attach events for all scopes
20362                        // (only new elements receive events due to the dialogButtonsWithEvents WeakSet)
20363                        elements.roots.forEach(function (root) {
20364                            var scope = self.getRootScope(root);
20365                            self.attachDialogButtonEvents(root, scope);
20366                        });
20367                    }
20368                }, 50);
20369            });
20370
20371            observer.observe(doc.body, {
20372                childList: true,
20373                subtree: true
20374            });
20375
20376            return observer;
20377        };
20378
20379        MultiFactorAuthentication.getInitialInputValue = function (target) {
20380            var self = this;
20381            var inputValue = '';
20382
20383            if (typeof target !== 'object' || !target) {
20384                return;
20385            }
20386
20387            elements.roots.forEach(function (root) {
20388                var scope = self.getRootScope(root);
20389                var state = self.getRootState(root);
20390
20391                if (scope.emailInput === target) {
20392                    inputValue = state.savedValues.email;
20393                } else if (scope.mobileNumberInput === target) {
20394                    inputValue = state.savedValues.mobileNumber;
20395                }
20396            });
20397
20398            return inputValue;
20399        };
20400
20401        MultiFactorAuthentication.isMatchedInitialErrorField = function (target) {
20402            var isInitialError = false;
20403
20404            if (typeof target !== 'object' || !target) {
20405                return false;
20406            }
20407
20408            if (this.initialErrorItemRootArray.length) {
20409                this.initialErrorItemRootArray.forEach(function (root) {
20410                    if (target === root) {
20411                        isInitialError = true;
20412                    }
20413                });
20414            }
20415
20416            return isInitialError;
20417        };
20418
20419        MultiFactorAuthentication.removeInitialErrorArray = function (target) {
20420            var errorFieldWrapperIndex = 0;
20421
20422            if (typeof target !== 'object' || !target) {
20423                return;
20424            }
20425
20426            errorFieldWrapperIndex = this.initialErrorItemRootArray.indexOf(target);
20427            if (errorFieldWrapperIndex !== -1) {
20428                this.initialErrorItemRootArray.splice(errorFieldWrapperIndex, 1);
20429            }
20430        };
20431
20432        MultiFactorAuthentication.isDisabledTarget = function (target) {
20433            var self = this;
20434            var isDisabled = false;
20435
20436            if (typeof target !== 'object' || !target) {
20437                return isDisabled;
20438            }
20439
20440            if (!elements.roots.length) {
20441                return isDisabled;
20442            }
20443
20444            elements.roots.forEach(function (root) {
20445                var scope = self.getRootScope(root);
20446                var state = self.getRootState(root);
20447
20448                if ((scope.root === target &&
20449                    scope.emailInput?.disabled) ||
20450                    (scope.root === target &&
20451                    scope.mobileNumberInput?.disabled)
20452                ) {
20453                    isDisabled = true;
20454                }
20455            });
20456
20457            return isDisabled;
20458        };
20459
20460        MultiFactorAuthentication.addSubmitTriggerDisabled = function () {
20461            if (elements.editProfileSubmitButton) {
20462                elements.editProfileSubmitButton.disabled = true;
20463            }
20464        };
20465
20466        MultiFactorAuthentication.removeSubmitTriggerDisabled = function () {
20467            var isEditing = false;
20468
20469            if (elements.editProfileSubmitButton) {
20470                elements.roots.forEach(function (root) {
20471                    var rootKey = getRootKey(root);
20472
20473                    if (editingRootKeys.has(rootKey)) {
20474                        isEditing = true;
20475                    }
20476                });
20477
20478                if (!isEditing) {
20479                    elements.editProfileSubmitButton.disabled = false;
20480                }
20481            }
20482        };
20483
20484        MultiFactorAuthentication.onFocusResetActiveNoteTextHideFlag = function () {
20485            var self = this;
20486            var AvailableValidator = win.KeyenceForm.AvailableValidator;
20487            var availableValidatorTarget = null;
20488
20489            if (!AvailableValidator) {
20490                return;
20491            }
20492
20493            Object.values(AvailableValidator.targetClass).forEach(function (className) {
20494                if (className === 'is-unavailable') {
20495                    return;
20496                }
20497
20498                availableValidatorTarget = doc.querySelector(`.${className}`);
20499
20500                if (availableValidatorTarget) {
20501                    availableValidatorTarget.addEventListener('focus', function () {
20502                        self.activeNoteTextHideFlag = false;
20503                    });
20504                }
20505            });
20506        };
20507
20508        MultiFactorAuthentication.deleteVerificationErrorCode = function (scope) {
20509            if (scope.checkSMSCodeValidTarget &&
20510                !/^[0-9]+$/.test(scope.checkSMSCodeValidTarget.value)
20511            ) {
20512                scope.checkSMSCodeValidTarget.value = '';
20513                MultiStepForm.clearInputError(scope.checkSMSCodeValidTarget.name, true);
20514            }
20515        };
20516
20517        return MultiFactorAuthentication;
20518    })();
20519
20520    KEYENCE.DownloadedPopup = (function () {
20521        var idNames = {
20522            cboxLoadedContent: 'cboxLoadedContent',
20523            cbox: 'colorbox',
20524            overlay: 'cboxOverlay',
20525            recommendTemplate: 'js-myKeyenceModalRecommend-template',
20526            recommendAssetListTemplate: 'js-myKeyenceModalRecommend-assetListTemplate',
20527            recommendAssetList: 'js-myKeyenceModalRecommend-assetList',
20528        };
20529
20530        var classNames = {
20531            trigger: 'js-myKeyence-enqueteModal',
20532            headingTrigger: 'js-myKeyence-enqHeading',
20533            headingBefore: 'js-myKeyence-enqHeadingBefore',
20534            headingAfter: 'js-myKeyence-enqHeadingAfter',
20535            thumbnail: 'js-myKeyenceModalRecommend-thumbnail',
20536            assetLink: 'js-myKeyenceModalRecommend-assetLink',
20537            assetTitle: 'js-myKeyenceModalRecommend-assetTitle',
20538            isHide: 'is-hide',
20539            isOpened: 'is-opened'
20540        };
20541
20542        var names = {
20543            mykeyenceActionForm: 'mykeyenceActionForm'
20544        };
20545
20546        var Popup = {
20547            idNames: idNames,
20548            classNames: classNames,
20549            colorbox: null,
20550            modalType: null,
20551            messageObj: {},
20552            recommendOpenedLimit: typeof kpi_usersettings.RecommendPopupOpenedCountLimit === 'number' ? kpi_usersettings.RecommendPopupOpenedCountLimit : 3
20553        };
20554
20555        var cookie = {
20556            enqueteName: 'kpi_has_downloadPopupOpened',
20557            enqueteValue: 1,
20558            recommendName: 'kpi_has_downloadRecommendPopupOpened',
20559            recommendValue: 1,
20560        };
20561
20562        var isRecommendModalOpenedOnce = false;
20563
20564        Popup.init = function () {
20565            this.addSubmitEvent();
20566
20567            if (this.hasEnqueteError()) {
20568                Popup.modalType = 'enquete';
20569                this.open();
20570            }
20571        };
20572
20573        Popup.canLaunch = function () {
20574            var enqueteOuter = document.querySelector('.' + classNames.trigger);
20575            var dlList = doc.querySelectorAll('.buttonConversion.dlLink, .prd-button.dlLink')
20576            var dlInfo = this.getDownloadInfo();
20577            var dlAssetObjectTypeFlag = false;
20578            var catalogArray = [];
20579
20580            if (dlInfo.dlAssetObjectTypeList.indexOf('3dcad') > -1 ||
20581                dlInfo.dlAssetObjectTypeList.indexOf('2dcad') > -1 ||
20582                dlInfo.dlAssetObjectTypeList.indexOf('Manual') > -1 ||
20583                dlInfo.dlAssetObjectTypeList.indexOf('Software') > -1) {
20584                dlAssetObjectTypeFlag = true;
20585            }
20586
20587            if (
20588                enqueteOuter &&
20589                dlList.length &&
20590                (dlInfo.asseIdList && dlInfo.asseIdList.length === 1) &&
20591                (dlInfo.dlAssetObjectTypeList && dlInfo.dlAssetObjectTypeList.length === 1 && dlInfo.dlAssetObjectTypeList[0] === 'Catalog') &&
20592                typeof kpi_translation.MyKeyenceEnqPopupHeading === 'string'
20593            ) {
20594                Popup.modalType = 'enquete';
20595
20596                return true;
20597            } else if (
20598                dlList.length && dlInfo.asseIdList &&
20599                (dlInfo.dlAssetObjectTypeList && dlAssetObjectTypeFlag === true)
20600            ) {
20601                dlInfo.dlAssetObjectTypeList.forEach((item) => {
20602                    if (item === 'Catalog') {
20603                        catalogArray.push(item);
20604                    }
20605                });
20606
20607                if (catalogArray.length === 1) {
20608                    Popup.modalType = 'enquete';
20609                }
20610
20611                if (catalogArray.length === 0) {
20612                    Popup.modalType = 'recommend';
20613                }
20614
20615                return true;
20616            }
20617
20618            return false;
20619        };
20620
20621        Popup.hasEnqueteError = function () {
20622            var enqueteOuter = document.querySelector('.' + classNames.trigger);
20623            var serchQueries = this.getQueryString();
20624
20625            if (serchQueries['action'] === 'enquete' && enqueteOuter) {
20626                return true;
20627            }
20628
20629            return false;
20630        };
20631
20632        Popup.getDownloadInfo = function () {
20633            var dataLayer = window.dataLayer;
20634            var i;
20635            var len;
20636            var info = {};
20637
20638            if (!Array.isArray(dataLayer)) {
20639                return {};
20640            }
20641
20642            len = dataLayer.length;
20643
20644            for (i = 0; i < len; i++) {
20645                if (dataLayer[i].dlAssetId) {
20646                    info.asseIdList = dataLayer[i].dlAssetId.split(',');
20647                }
20648
20649                if (dataLayer[i].dlAssetObjectType) {
20650                    info.dlAssetObjectTypeList = dataLayer[i].dlAssetObjectType.split(',');
20651                }
20652
20653                if (info.asseIdList && info.dlAssetObjectTypeList) {
20654                    break;
20655                }
20656            }
20657
20658            return info;
20659        };
20660
20661        Popup.open = function () {
20662            var enqueteOuter = document.querySelector('.' + classNames.trigger);
20663            var delay = 0;
20664
20665            if (Popup.modalType === 'recommend') {
20666                Popup.recommendModalOpen();
20667            } else if (Popup.modalType === 'enquete') {
20668                if (!enqueteOuter || (enqueteOuter && enqueteOuter.classList.contains(classNames.isOpened))) {
20669                    return;
20670                }
20671
20672                if (Popup.hasCookie(cookie.enqueteName) && !Popup.hasEnqueteError()) {
20673                    return;
20674                }
20675
20676                delay = Number(kpi_usersettings.DownloadPopupOpenDelay) > 0 ?
20677                    Number(kpi_usersettings.DownloadPopupOpenDelay) : 3000;
20678
20679                if (Popup.hasEnqueteError()) {
20680                    $.colorbox({
20681                        html: enqueteOuter.children,
20682                        speed: kpi_usersettings.ModalOpenSpd,
20683                        initialWidth: "640px",
20684                        width: '640px',
20685                        height: 'auto',
20686                        opacity: 0.6,
20687                        onOpen: Popup.onOpen,
20688                        onCleanup: Popup.onCleanup,
20689                    });
20690                } else {
20691                    window.setTimeout(function () {
20692                        $.colorbox({
20693                            html: enqueteOuter.children,
20694                            speed: kpi_usersettings.ModalOpenSpd,
20695                            initialWidth: "640px",
20696                            width: '640px',
20697                            height: 'auto',
20698                            opacity: 0.6,
20699                            onOpen: Popup.onOpen,
20700                            onCleanup: Popup.onCleanup,
20701                        });
20702                    }, delay);
20703                }
20704            }
20705        };
20706
20707        Popup.recommendModalOpen = function () {
20708            const settingObj = win.myk_modal_deqwas;
20709            const relatedObj = settingObj ? settingObj.related : [];
20710            const recommendModalHtml = Popup.setRecommendModalContent(relatedObj);
20711            const cookieValue = Number(Popup.getCookieValue(cookie.recommendName));
20712            let delay = 0;
20713
20714            if (!recommendModalHtml ||
20715                !Array.isArray(relatedObj) ||
20716                !relatedObj.length ||
20717                isNaN(Popup.recommendOpenedLimit) ||
20718                (cookieValue >= Popup.recommendOpenedLimit && Popup.recommendOpenedLimit !== 0) ||
20719                isRecommendModalOpenedOnce) {
20720                return;
20721            }
20722
20723            delay = Number(kpi_usersettings.DownloadRecommendPopupOpenDelay) > 0 ?
20724            Number(kpi_usersettings.DownloadRecommendPopupOpenDelay) : 1000;
20725
20726            window.setTimeout(function () {
20727                $.colorbox({
20728                    html: recommendModalHtml,
20729                    speed: kpi_usersettings.ModalOpenSpd,
20730                    initialWidth: "640px",
20731                    width: '640px',
20732                    height: 'auto',
20733                    opacity: 0.6,
20734                    onOpen: Popup.recommendModalOnOpen,
20735                    onComplete: Popup.recommendModalOnComplete,
20736                    onCleanup: Popup.recommendModalOnCleanup,
20737                    onClosed: Popup.recommendModalOnClosed,
20738                });
20739            }, delay);
20740        };
20741
20742        Popup.onOpen = function () {
20743            var enqueteOuter = document.querySelector('.' + classNames.trigger);
20744            var headingElement;
20745
20746            $('#colorbox').addClass('of-myKeyenceEnquete');
20747            $('#cboxOverlay').addClass('of-myKeyenceEnquete');
20748
20749            if (enqueteOuter) {
20750                headingElement = enqueteOuter.querySelector('.' + classNames.headingTrigger);
20751
20752                if (headingElement) {
20753                    Popup.switchHeading(headingElement, 'show-after');
20754                }
20755
20756                enqueteOuter.classList.add(classNames.isOpened);
20757                Popup.toggleFirstQuestion('hide');
20758                Popup.setCookie(cookie.enqueteName, cookie.enqueteValue);
20759            }
20760        };
20761
20762        Popup.recommendModalOnOpen = function () {
20763            const cookieValue = Number(Popup.getCookieValue(cookie.recommendName));
20764
20765            $('#colorbox').addClass('of-myKeyenceRecommend');
20766            $('#cboxOverlay').addClass('of-myKeyenceRecommend');
20767
20768            if (cookieValue < Popup.recommendOpenedLimit && Popup.recommendOpenedLimit !== 0) {
20769                Popup.setCookie(cookie.recommendName, cookieValue + 1);
20770            }
20771        };
20772
20773        Popup.recommendModalOnComplete = function () {
20774            const assetLinks = doc.querySelectorAll('.js-myKeyenceModalRecommend-assetLink');
20775            const assetIdArray = [];
20776            let assetLinkUrl;
20777            let params;
20778            let dlAssetId;
20779
20780            if (assetLinks.length) {
20781                assetLinks.forEach((assetLink) => {
20782                    assetLinkUrl = new URL(assetLink.href);
20783                    params = assetLinkUrl.searchParams;
20784                    dlAssetId = params.get('dlAssetId');
20785
20786                    assetIdArray.push(dlAssetId);
20787                });
20788
20789                doc.body.dataset.recommendModalAsset = assetIdArray.join('/');
20790            };
20791
20792            isRecommendModalOpenedOnce = true;
20793            Popup.messageObj.myKDeqwasModalState = 'show';
20794            win.postMessage(Popup.messageObj, win.location.origin);
20795        };
20796
20797        Popup.onCleanup = function () {
20798            var enqueteOuter = document.querySelector('.' + classNames.trigger);
20799            var modalContent = document.getElementById(idNames.cboxLoadedContent);
20800            var headingElement;
20801
20802            $('#colorbox').removeClass('of-myKeyenceEnquete');
20803            $('#cboxOverlay').removeClass('of-myKeyenceEnquete');
20804
20805            if (enqueteOuter && modalContent) {
20806                enqueteOuter.innerHTML = modalContent.innerHTML;
20807                headingElement = enqueteOuter.querySelector('.' + classNames.headingTrigger);
20808
20809                if (headingElement) {
20810                    Popup.switchHeading(headingElement, 'show-before');
20811                }
20812
20813                Popup.toggleFirstQuestion('show');
20814                Popup.addSubmitEvent();
20815            }
20816        };
20817
20818        Popup.recommendModalOnCleanup = function () {
20819            $('#colorbox').removeClass('of-myKeyenceRecommend');
20820            $('#cboxOverlay').removeClass('of-myKeyenceRecommend');
20821
20822            Popup.messageObj.myKDeqwasModalState = 'close';
20823            win.postMessage(Popup.messageObj, win.location.origin);
20824        };
20825
20826        Popup.recommendModalOnClosed = function () {
20827            if (doc.body.dataset.recommendModalAsset) {
20828                delete doc.body.dataset.recommendModalAsset;
20829            }
20830        };
20831
20832        Popup.toggleFirstQuestion = function (status) {
20833            var form;
20834            var noteText;
20835            var enqueteOuter = document.querySelector('.' + classNames.trigger);
20836            var groups;
20837
20838            if (enqueteOuter) {
20839                groups = enqueteOuter.querySelectorAll('.form-group, .prd-inputGroup');
20840
20841                form = enqueteOuter.querySelector('form');
20842
20843                if (form) {
20844                    noteText = form.firstElementChild;
20845                }
20846
20847                if (noteText.tagName.toLowerCase() === 'p') {
20848                    if (status === 'show') {
20849                        noteText.hidden = false;
20850                    } else if (status === 'hide') {
20851                        noteText.hidden = true;
20852                    }
20853                }
20854            }
20855
20856            if (groups.length) {
20857                if (status === 'show') {
20858                    groups[0].hidden = false;
20859                } else if (status === 'hide') {
20860                    groups[0].hidden = true;
20861                }
20862            }
20863        };
20864
20865        Popup.switchHeading = function (headingElement, status) {
20866            var headingBefore;
20867            var headingAfter;
20868
20869            if (!headingElement) {
20870                return;
20871            }
20872
20873            if (headingElement) {
20874                headingBefore = headingElement.querySelector('.' + classNames.headingBefore);
20875                headingAfter = headingElement.querySelector('.' + classNames.headingAfter);
20876                headingAfter.innerHTML = kpi_translation.MyKeyenceEnqPopupHeading;
20877            }
20878
20879            if (status === 'show-before') {
20880                headingBefore.classList.remove(classNames.isHide);
20881                headingBefore.hidden = false;
20882                headingAfter.classList.add(classNames.isHide);
20883                headingAfter.hidden = true;
20884            } else if (status === 'show-after') {
20885                headingBefore.classList.add(classNames.isHide);
20886                headingBefore.hidden = true;
20887                headingAfter.classList.remove(classNames.isHide);
20888                headingAfter.hidden = false;
20889            }
20890        };
20891
20892        Popup.setRecommendModalContent = function (relatedObj) {
20893            const contentTemplate = document.getElementById(idNames.recommendTemplate);
20894            const assetListTemplate = document.getElementById(idNames.recommendAssetListTemplate);
20895            const fragment = document.createDocumentFragment();
20896            const assetLinkParam = win.myk_modal_deqwas_link_parameter;
20897            let content = null;
20898            let assetList = null;
20899
20900            if(!contentTemplate || !assetListTemplate || !Array.isArray(relatedObj)) {
20901                return
20902            }
20903
20904            relatedObj.forEach((data) => {
20905                const nodeClone = assetListTemplate.content.cloneNode(true);
20906                const thumbnail = nodeClone.querySelector('.' + classNames.thumbnail);
20907                const assetLink = nodeClone.querySelector('.' + classNames.assetLink);
20908                const assetTitle = nodeClone.querySelector('.' + classNames.assetTitle);
20909                const assetIDList = data.assetID ? data.assetID.split(',') : [];
20910                const assetLinkUrl = data.assetUrl;
20911
20912                if (assetIDList.length && window.kpi_domainSettings.originalDomain) {
20913                    if (thumbnail) {
20914                        thumbnail.src =
20915                        `${window.kpi_domainSettings.originalDomain}/img/asset/${assetIDList[0]}.jpg`;
20916                    }
20917
20918                    if (assetLink && assetLinkUrl && assetLinkParam) {
20919                        assetLink.href =
20920                        `${assetLinkUrl}&${assetLinkParam}`;
20921                    }
20922                }
20923
20924                if (assetTitle && data.assetTitle) {
20925                    assetTitle.textContent = data.assetTitle;
20926                }
20927
20928                fragment.appendChild(nodeClone);
20929            });
20930
20931            content = contentTemplate.content.cloneNode(true);
20932            assetList = content.getElementById(idNames.recommendAssetList);
20933
20934            if (assetList) {
20935                if (relatedObj.length > 0 && relatedObj.length <= 5) {
20936                    assetList.classList.remove('largeScreen-column-5');
20937                    assetList.classList.add(`largeScreen-column-${relatedObj.length}`);
20938                }
20939
20940                assetList.appendChild(fragment);
20941            }
20942
20943            return content;
20944        };
20945
20946        Popup.addSubmitEvent = function () {
20947            var enqueteOuter = document.querySelector('.' + classNames.trigger);
20948            var form;
20949
20950            if (!enqueteOuter) {
20951                return;
20952            }
20953
20954            form = enqueteOuter.querySelector('form[name="' + names.mykeyenceActionForm + '"]');
20955
20956            if (!form) {
20957                return;
20958            }
20959
20960            form.addEventListener('submit', function () {
20961                var actionVal = form.getAttribute('action');
20962
20963                if (typeof actionVal === 'string' && $('#colorbox').hasClass('of-myKeyenceEnquete')) {
20964                    form.setAttribute('action', actionVal + '?action=enquete');
20965                }
20966            });
20967        };
20968
20969        Popup.getQueryString = function () {
20970            var searchStr;
20971            var queries = {};
20972
20973            if (win.location.search.length === 0) {
20974                return queries;
20975            }
20976
20977            searchStr = win.location.search.slice(1);
20978
20979            searchStr.split('&').forEach(function (queryStr) {
20980                var queryArr = queryStr.split('=');
20981
20982                queries[queryArr[0]] = queryArr[1];
20983            });
20984
20985            return queries;
20986        };
20987
20988        Popup.setCookie = function (name, value) {
20989            var path;
20990
20991            if (window.suz_LanguagePath) {
20992                path = window.suz_LanguagePath + '/';
20993            } else {
20994                path = '/';
20995            }
20996
20997            document.cookie = name + '=' + value + '; path=' + path;
20998        };
20999
21000        Popup.hasCookie = function (cookieName) {
21001            var cookies = document.cookie.split(';');
21002            var flag = false;
21003
21004            Array.prototype.forEach.call(cookies, function (item) {
21005                if (item.indexOf(cookieName + '=') > -1) {
21006                    flag = true;
21007                }
21008            });
21009
21010            return flag;
21011        };
21012
21013        Popup.getCookieValue = function (cookieName) {
21014            const cookies = doc.cookie.split(';');
21015
21016            if (!cookieName) {
21017                return false;
21018            }
21019
21020            if (!cookies.some((item) => item.trim().startsWith(`${cookieName}=`))) {
21021                return false;
21022            }
21023
21024            const targetCookie = cookies.find((item) => item.trim().startsWith(`${cookieName}=`));
21025
21026            return targetCookie.split('=')[1];
21027        };
21028
21029        return Popup;
21030    }());
21031
21032    KEYENCE.oneMorePR = function () {
21033        var idNames = {
21034            root: 'js-myKeyenceOneMorePR',
21035            modalCloseButton: 'cboxClose',
21036            modalOverlay: 'cboxOverlay'
21037        };
21038
21039        var classNames = {
21040            video: 'js-myKeyenceOneMorePR-video',
21041            videoController: 'js-myKeyenceOneMorePR-videoController',
21042            videoControllerLabel: 'js-myKeyenceOneMorePR-videoControllerLabel',
21043            downloadButton: 'js-myKeyenceDownload-button',
21044            enqueteModal: 'js-myKeyence-enqueteModal',
21045            isHide: 'is-hide',
21046            isOpened: 'is-opened',
21047            isPaused: 'is-paused',
21048        };
21049
21050        var cookie = {
21051            enqueteName: 'kpi_has_downloadPopupOpened',
21052            recommendName: 'kpi_has_downloadRecommendPopupOpened'
21053        };
21054
21055        var root = doc.getElementById(idNames.root);
21056        var video = root ? root.querySelector(`.${classNames.video}`) : null;
21057        var videoController = root ? root.querySelector(`.${classNames.videoController}`) : null;
21058        var videoControllerLabel = videoController ? videoController.querySelector(`.${classNames.videoControllerLabel}`) : null;
21059        var downloadButton = doc.querySelector(`.${classNames.downloadButton}`);
21060        var enqueteModal = doc.querySelector(`.${classNames.enqueteModal}`);
21061        var dataLayer = win.dataLayer ? win.dataLayer : [];
21062
21063        var fn = {};
21064        var handlers = {};
21065        var messageObj = {};
21066
21067        if (!root) {
21068            return;
21069        }
21070
21071        fn.init = function () {
21072            if (!smallScreenMql.matches) {
21073                if (!fn.canLaunch()) {
21074                    return;
21075                }
21076
21077                fn.changeRootPosition();
21078                fn.controlRoot();
21079
21080                if (video) {
21081                    fn.setVideo();
21082                }
21083            }
21084        };
21085
21086        fn.canLaunch = function () {
21087            var canLaunch = true;
21088            var dlAssetId = dataLayer[1].dlAssetId ? dataLayer[1].dlAssetId.split('.') : [];
21089
21090            if (dlAssetId.length > 1) {
21091                canLaunch = false;
21092            }
21093
21094            return canLaunch;
21095        };
21096
21097        fn.getModalType = function () {
21098            var modaltype = '';
21099            var dlAssetObjectType = dataLayer[1].dlAssetObjectType;
21100
21101            if (dlAssetObjectType === 'Catalog') {
21102                modaltype = 'enquete'
21103            } else if (
21104                dlAssetObjectType === '3dcad' ||
21105                dlAssetObjectType === '2dcad' ||
21106                dlAssetObjectType === 'Manual' ||
21107                dlAssetObjectType === 'Software') {
21108                    modaltype = 'recommend'
21109                }
21110
21111            return modaltype;
21112        };
21113
21114        fn.changeRootPosition = function () {
21115            var targetOuter = doc.querySelector('.prd-layout-grid.of-general');
21116            var target = targetOuter ? targetOuter.firstElementChild : null;
21117
21118            if (!target) {
21119                return;
21120            }
21121
21122            target.prepend(root);
21123        };
21124
21125        fn.setVideo = function () {
21126            fn.clickVideoController();
21127            fn.endedVideo();
21128        };
21129
21130        fn.controlRoot = function () {
21131            if (fn.getModalType() === 'enquete') {
21132                if ((fn.hasCookie(cookie.enqueteName) && !fn.hasEnqueteError()) || !enqueteModal) {
21133                    fn.clickDownloadButton();
21134                } else {
21135                    fn.observeEnqueteModal();
21136                }
21137            } else if (fn.getModalType() === 'recommend') {
21138                const recommendOpenedLimit = Number(window.DownloadedPopup.recommendOpenedLimit);
21139                const cookieValue = Number(fn.getCookieValue(cookie.recommendName));
21140
21141                if (!isNaN(recommendOpenedLimit) &&
21142                    cookieValue >= recommendOpenedLimit && recommendOpenedLimit !== 0) {
21143                    fn.clickDownloadButton();
21144                } else {
21145                    fn.observeRecommendModal();
21146                }
21147            } else {
21148                fn.clickDownloadButton();
21149            }
21150        };
21151
21152        fn.observeEnqueteModal = function () {
21153            var config = {
21154                childList: true
21155            };
21156
21157            if (!enqueteModal) {
21158                return;
21159            }
21160
21161            var observer = new MutationObserver(() => {
21162                fn.closeModal();
21163                observer.disconnect();
21164            });
21165
21166            observer.observe(enqueteModal, config);
21167
21168            if (enqueteModal.classList.contains(classNames.isOpened)) {
21169                fn.closeModal();
21170                observer.disconnect();
21171            }
21172        };
21173
21174        fn.observeRecommendModal = function () {
21175            var body = doc.body;
21176            var config = {
21177                attributes: true
21178            };
21179
21180            var observer = new MutationObserver(() => {
21181                if (body.dataset.recommendModalAsset) {
21182                    fn.closeModal();
21183                    observer.disconnect();
21184                }
21185            });
21186
21187            observer.observe(body, config);
21188
21189            if (body.dataset.recommendModalAsset) {
21190                fn.closeModal();
21191                observer.disconnect();
21192            }
21193        };
21194
21195        fn.clickDownloadButton = function () {
21196            if (!downloadButton) {
21197                return;
21198            }
21199
21200            downloadButton.addEventListener('click', handlers.onClickDownloadButton);
21201        };
21202
21203        fn.clickVideoController = function () {
21204            if (!videoController) {
21205                return;
21206            }
21207
21208            videoController.addEventListener('click', handlers.onClickVideoController);
21209        };
21210
21211        fn.endedVideo = function () {
21212            video.addEventListener('ended', handlers.onEndedVideo);
21213        };
21214
21215        fn.closeModal = function () {
21216            var closeTrigger = doc.querySelectorAll(`#${idNames.modalCloseButton}, #${idNames.modalOverlay}`);
21217
21218            if (closeTrigger.length) {
21219                closeTrigger.forEach(trigger => {
21220                    trigger.addEventListener('click', handlers.onClickCloseModalTrigger);
21221                })
21222            }
21223        };
21224
21225        fn.showRoot = function () {
21226            root.classList.remove(classNames.isHide);
21227
21228            messageObj.mykOneMorePRBannerState = 'show';
21229            win.postMessage(messageObj, win.location.origin);
21230        };
21231
21232        fn.playVideo = function () {
21233            video.play();
21234
21235            if (videoController) {
21236                videoController.classList.remove(classNames.isPaused);
21237            }
21238
21239            if (videoControllerLabel && videoControllerLabel.dataset.pauseLabel) {
21240                videoControllerLabel.textContent = videoControllerLabel.dataset.pauseLabel;
21241            }
21242        };
21243
21244        fn.pauseVideo = function () {
21245            video.pause();
21246
21247            if (videoController) {
21248                videoController.classList.add(classNames.isPaused);
21249            }
21250
21251            if (videoControllerLabel && videoControllerLabel.dataset.playLabel) {
21252                videoControllerLabel.textContent = videoControllerLabel.dataset.playLabel;
21253            }
21254        };
21255
21256        fn.hasCookie = function (cookieName) {
21257            var hasCookie = false;
21258
21259            if (util.getCookie(cookieName)) {
21260                hasCookie = true;
21261            }
21262
21263            return hasCookie;
21264        };
21265
21266        fn.getCookieValue = function (cookieName) {
21267            const cookies = doc.cookie.split(';');
21268
21269            if (!cookieName) {
21270                return false;
21271            }
21272
21273            if (!cookies.some((item) => item.trim().startsWith(`${cookieName}=`))) {
21274                return false;
21275            }
21276
21277            const targetCookie = cookies.find((item) => item.trim().startsWith(`${cookieName}=`));
21278
21279            return targetCookie.split('=')[1];
21280        };
21281
21282        fn.hasEnqueteError = function () {
21283            var hasEnqueteError = false;
21284            var searchParams = new URLSearchParams(location.search);
21285
21286            if (searchParams.get('action') === 'enquete' && enqueteModal) {
21287                hasEnqueteError = true;
21288            }
21289
21290            return hasEnqueteError;
21291        };
21292
21293        handlers.onClickDownloadButton = function () {
21294            setTimeout(() => {
21295                fn.showRoot();
21296                if (video) {
21297                    fn.playVideo();
21298                }
21299            }, 3000);
21300        };
21301
21302        handlers.onClickCloseModalTrigger = function () {
21303            fn.showRoot();
21304            if (video) {
21305                fn.playVideo();
21306            }
21307        };
21308
21309        handlers.onClickVideoController = function () {
21310            if (!videoController) {
21311                return;
21312            }
21313
21314            if (videoController.classList.contains(classNames.isPaused)) {
21315                fn.playVideo();
21316            } else {
21317                fn.pauseVideo();
21318            }
21319        };
21320
21321        handlers.onEndedVideo = function () {
21322            fn.pauseVideo();
21323        };
21324
21325        fn.init();
21326        smallScreenMql.addListener(fn.init);
21327    };
21328
21329    window.DownloadedPopup = KEYENCE.DownloadedPopup;
21330
21331    KEYENCE.omitText = function () {
21332        const fn = {};
21333        const targets = doc.querySelectorAll('.js-omitText-target');
21334        const maxChars = 50;
21335
21336        if (!targets.length) {
21337            return;
21338        }
21339
21340        fn.run = function () {
21341            targets.forEach((target) => {
21342                const root = target.closest('.js-omitText-root');
21343                let charsLimit = maxChars;
21344
21345                if (!isNaN(target.dataset.maxChars) && target.dataset.maxChars !== '') {
21346                    charsLimit = parseFloat(target.dataset.maxChars);
21347                } else if (root && !isNaN(root.dataset.maxChars) && root.dataset.maxChars !== '') {
21348                    charsLimit = parseFloat(root.dataset.maxChars);
21349                } else {
21350                    charsLimit = maxChars;
21351                };
21352
21353                if (this.isMultiByteLang()) {
21354                    charsLimit = Math.floor(charsLimit / 2);
21355                }
21356
21357                const targetStr = target.innerHTML.replace(/<("[^"]*"|'[^']*'|[^'">])*>/gm, '');
21358
21359                if (targetStr.length > charsLimit) {
21360                    target.textContent = `${targetStr.substring(0, charsLimit)}...`;
21361                }
21362            });
21363        }
21364
21365        fn.isMultiByteLang = function () {
21366            let siteLang = '';
21367
21368            if (win.kpi_siteSettings) {
21369                siteLang = win.kpi_siteSettings.siteLang ? win.kpi_siteSettings.siteLang : '';
21370            }
21371
21372            return /^zh-|^ko-/.test(siteLang);
21373        }
21374
21375        fn.run();
21376    };
21377
21378    KEYENCE.displayRelatedSeoArticleList = function () {
21379        const fn = {};
21380        const idNames = {
21381            target: 'js-displayRelatedSeoArticleList',
21382            pageIdTarget: 'suz_pageId'
21383        };
21384        const classNames = {
21385            articleCard: 'prd-articleCard'
21386        };
21387        const config = {
21388            keywordIdParam: 'keywordID',
21389            pageIdParam: 'pageID',
21390            tagsKeywordId: win.tkt_tags ? win.tkt_tags : '',
21391            originalDomain: win.kpi_originalDomain ? win.kpi_originalDomain : ''
21392        };
21393        const apiPath = {
21394            relatedContentsUrl: config.originalDomain ? `${config.originalDomain}/data/related-contents.jsp` : ''
21395        };
21396        const target = doc.getElementById(idNames.target);
21397        const pageIdTarget = doc.getElementById(idNames.pageIdTarget);
21398        const pageId = pageIdTarget ? pageIdTarget.textContent : '';
21399
21400        fn.init = function () {
21401            if (!config.tagsKeywordId || !apiPath.relatedContentsUrl || !target) {
21402                return;
21403            }
21404
21405            fn.displayApiData();
21406        };
21407
21408        fn.setApiUrl = function () {
21409            const newParam = new URLSearchParams();
21410            newParam.set(config.keywordIdParam, config.tagsKeywordId);
21411            if (pageId) {
21412                newParam.set(config.pageIdParam, pageId);
21413            }
21414            const newApiUrl = `${apiPath.relatedContentsUrl}?${newParam.toString()}`;
21415
21416            return newApiUrl;
21417        };
21418
21419        fn.displayApiData = function () {
21420            const apiUrl = fn.setApiUrl();
21421
21422            async function getApiData() {
21423                try {
21424                    const response = await fetch(apiUrl);
21425
21426                    if (!response.ok) {
21427                        throw new Error('Response was not OK');
21428                    }
21429
21430                    const apiData = await response.text();
21431
21432                    return apiData;
21433                } catch (error) {
21434                    console.error(error);
21435                }
21436            }
21437
21438            getApiData().then(apiData => {
21439                const checkedItem = apiData.indexOf(classNames.articleCard);
21440
21441                if (checkedItem !== -1) {
21442                    target.innerHTML = fn.formatApiData(apiData);
21443                }
21444            });
21445        };
21446
21447        fn.formatApiData = function (apiData) {
21448            const regexTitle = /<span\s+class="[^"]*"\s+data-articles="title"[\s\S]*?<\/span>/gi;
21449            const regexDescription = /<p\s+class="[^"]*"\s+data-articles="description"[\s\S]*?<\/p>/gi;
21450            const matchedTitleItems = fn.getMatchedString(apiData, regexTitle);
21451            const matchedDescriptionItems = fn.getMatchedString(apiData, regexDescription);
21452
21453            let formattedApiData = fn.removeUnnecessaryTag(apiData, matchedTitleItems);
21454            if (matchedDescriptionItems) {
21455                formattedApiData = fn.removeUnnecessaryTag(formattedApiData, matchedDescriptionItems);
21456            }
21457
21458            return formattedApiData;
21459        }
21460
21461        fn.removeUnnecessaryTag = function (targetData, targetItems) {
21462            if (!targetItems.length) {
21463                return targetData;
21464            }
21465
21466            targetItems.forEach(function (item) {
21467                const convertedItem = fn.convertToHtmlElement(item);
21468
21469                convertedItem.textContent = convertedItem.textContent;
21470                targetData = targetData.replace(item, convertedItem.outerHTML);
21471            });
21472
21473            return targetData;
21474        }
21475
21476        fn.getMatchedString = function (data, regex) {
21477            return data.match(regex);
21478        }
21479
21480        fn.convertToHtmlElement = function (stringData) {
21481            return new DOMParser().parseFromString(stringData, "text/html").body.firstElementChild;
21482        };
21483
21484        fn.init();
21485    };
21486
21487    KEYENCE.setBasicTooltip = function () {
21488        const classNames = {
21489            root: 'js-basicTooltip',
21490            trigger: 'js-basicTooltip-trigger',
21491            target: 'js-basicTooltip-target',
21492            isActive: 'is-tooltip-active',
21493        };
21494
21495        class BasicTooltip {
21496            constructor() {
21497                this.tooltips = new Set();
21498                this.viewportPadding = 8;
21499            }
21500
21501            init() {
21502                doc.querySelectorAll(`.${classNames.root}`).forEach((elem) => {
21503                    this.register(elem);
21504                });
21505                this.observeMutations();
21506                this.bindGlobalEvents();
21507            }
21508
21509            observeMutations() {
21510                const observer = new MutationObserver((mutations) => {
21511                    mutations.forEach((m) => {
21512                        m.addedNodes.forEach((node) => {
21513                            if (!(node instanceof HTMLElement)) {
21514                                return;
21515                            }
21516                            if (node.classList?.contains(classNames.root)) {
21517                                this.register(node);
21518                            }
21519                            node.querySelectorAll?.(`.${classNames.root}`).forEach((elem) => {
21520                                this.register(elem);
21521                            });
21522                        });
21523                    });
21524                });
21525                observer.observe(doc.body, { childList: true, subtree: true });
21526            }
21527
21528            register(root) {
21529                const trigger = root.querySelector(`.${classNames.trigger}`);
21530                const target = root.querySelector(`.${classNames.target}`);
21531
21532                if (!trigger || !target) {
21533                    return;
21534                }
21535
21536                if (!target.id) {
21537                    target.id = `tooltip-${Math.random().toString(36).slice(2)}`;
21538                }
21539
21540                trigger.setAttribute('aria-describedby', target.id);
21541                trigger.setAttribute('aria-expanded', 'false');
21542
21543                root.dataset.tooltipDirection = 'top';
21544
21545                const data = { root, trigger, target };
21546                this.tooltips.add(data);
21547                this.bindTriggerEvents(data);
21548            }
21549
21550            bindTriggerEvents(data) {
21551                const { trigger } = data;
21552
21553                trigger.addEventListener('mouseenter', () => {
21554                    this.show(data);
21555                });
21556
21557                trigger.addEventListener('focus', (e) => {
21558                    if (!e.target.matches(':focus-visible')) {
21559                        return;
21560                    }
21561                    this.show(data);
21562                });
21563
21564                trigger.addEventListener('mouseleave', () => {
21565                    this.hide(data);
21566                });
21567
21568                trigger.addEventListener('blur', () => {
21569                    this.hide(data);
21570                });
21571            }
21572
21573            bindGlobalEvents() {
21574                win.addEventListener('scroll', () => {
21575                    this.tooltips.forEach((data) => {
21576                        this.hide(data);
21577                    });
21578                }, { passive: true });
21579
21580                win.addEventListener('resize', () => {
21581                    this.tooltips.forEach((data) => {
21582                        this.hide(data);
21583                    });
21584                }, { passive: true });
21585
21586                doc.addEventListener('keydown', (e) => {
21587                    if (e.key === 'Escape') {
21588                        this.tooltips.forEach((data) => {
21589                            this.hide(data)
21590                        });
21591                    }
21592                });
21593            }
21594
21595            show(data) {
21596                const { trigger, target, root } = data;
21597
21598                target.style.left = '';
21599                target.style.top  = '';
21600                target.classList.add(classNames.isActive);
21601                trigger.setAttribute('aria-expanded', 'true');
21602
21603                const direction = this.chooseDirection(trigger, target);
21604                root.dataset.tooltipDirection = direction;
21605
21606                const rect = trigger.getBoundingClientRect();
21607                const triggerGap = Number(trigger.dataset.tooltipMargin) || 0;
21608                const vw = document.documentElement.clientWidth;
21609                let x = rect.left + rect.width / 2 - target.offsetWidth / 2;
21610                x = Math.max(
21611                    this.viewportPadding,
21612                    Math.min(
21613                        x,
21614                        vw - target.offsetWidth - this.viewportPadding
21615                    )
21616                );
21617
21618                target.style.position = 'fixed';
21619                target.style.left = `${x}px`;
21620
21621                if (direction === 'top') {
21622                    target.style.top = `${rect.top - target.offsetHeight - triggerGap}px`;
21623                } else {
21624                    target.style.top = `${rect.bottom + triggerGap}px`;
21625                }
21626
21627                return;
21628            }
21629
21630            hide(data) {
21631                const { trigger, target } = data;
21632                target.classList.remove(classNames.isActive);
21633                trigger.setAttribute('aria-expanded', 'false');
21634            }
21635
21636            chooseDirection(trigger, target) {
21637                const rect = trigger.getBoundingClientRect();
21638                const vh = window.innerHeight;
21639                const spaceTop = rect.top;
21640                const spaceBottom = vh - rect.bottom;
21641                const tH = target.offsetHeight;
21642
21643                if (spaceTop >= tH + this.viewportPadding) {
21644                    return 'top';
21645                }
21646                if (spaceBottom >= tH + this.viewportPadding) {
21647                    return 'bottom';
21648                }
21649
21650                return 'bottom'; // fallback
21651            }
21652        }
21653
21654        const basicTooltip = new BasicTooltip();
21655        basicTooltip.init();
21656    };
21657
21658    KEYENCE.setSideNavigation = () => {
21659        class SideNavigation {
21660            constructor() {
21661                this.classNames = {
21662                    root: 'js-sideNavigation',
21663                    list: 'js-sideNavigation-list',
21664                    trigger: 'js-sideNavigation-trigger',
21665                    target: 'js-sideNavigation-target',
21666                    isCurrent: 'is-current',
21667                    isOverflowing: 'is-overflowing',
21668                    isScrollBottom: 'is-scroll-bottom',
21669                };
21670
21671                this.root = doc.querySelector(`.${this.classNames.root}`);
21672                this.list = this.root ? this.root.querySelector(`.${this.classNames.list}`) : null;
21673                this.triggers = this.root ? this.root.querySelectorAll(`.${this.classNames.trigger}`) : [];
21674                this.targets = this.root ? this.root.querySelectorAll(`.${this.classNames.target}`) : [];
21675
21676                this.currentTarget = null;
21677                this.clickedTriggerHref = null;
21678
21679                this.isScrollUpdating = false;
21680
21681                this.handleScreenChange = this.handleScreenChange.bind(this);
21682                this.handleScroll = this.handleScroll.bind(this);
21683                this.handleResize = this.handleResize.bind(this);
21684                this.updateCurrentNavigation = this.updateCurrentNavigation.bind(this);
21685                this.handleTargetClick = this.handleTargetClick.bind(this);
21686                this.setScrollOptionClass = this.setScrollOptionClass.bind(this);
21687            }
21688
21689            init() {
21690                if (!this.root || !this.list || !this.triggers.length || !this.targets.length) {
21691                    return;
21692                }
21693
21694                this.triggers.forEach((trigger) => {
21695                    trigger.addEventListener('click', this.handleTargetClick);
21696                });
21697
21698                this.handleScreenChange();
21699                smallScreenMql.addEventListener("change", this.handleScreenChange);
21700            }
21701
21702            handleScreenChange() {
21703                win.removeEventListener('scroll', this.handleScroll);
21704                win.removeEventListener('resize', this.handleResize);
21705                this.list.removeEventListener('scroll', this.setScrollOptionClass);
21706
21707                if (smallScreenMql.matches) {
21708                    this.clearNavigationCurrent();
21709                } else {
21710                    this.updateCurrentNavigation();
21711                    this.setScrollOptionClass();
21712
21713                    win.addEventListener('scroll', this.handleScroll, { passive: true });
21714                    win.addEventListener('resize', this.handleResize);
21715                    this.list.addEventListener('scroll', this.setScrollOptionClass, { passive: true });
21716                }
21717            }
21718
21719            handleScroll() {
21720                if (this.isScrollUpdating) {
21721                    return;
21722                }
21723
21724                this.isScrollUpdating = true;
21725
21726                win.requestAnimationFrame(() => {
21727                    this.updateCurrentNavigation();
21728                    this.isScrollUpdating = false;
21729                });
21730            }
21731
21732            handleResize() {
21733                this.updateCurrentNavigation();
21734                this.setScrollOptionClass();
21735            }
21736
21737            handleTargetClick(event) {
21738                const href = event.currentTarget.getAttribute('href');
21739
21740                if (!href || !href.startsWith('#')) {
21741                    return;
21742                }
21743
21744                if (this.currentTarget?.getAttribute('href') === href) {
21745                    event.preventDefault();
21746                    return;
21747                }
21748
21749                const scrollTarget = doc.querySelector(href);
21750
21751                if (!scrollTarget) {
21752                    return;
21753                }
21754
21755                this.clickedTriggerHref = href;
21756                this.setNavigationCurrentByHref(href);
21757
21758                const checkScrollEnd = () => {
21759                    const rect = scrollTarget.getBoundingClientRect();
21760
21761                    if (Math.abs(rect.top - 63) < 10) {
21762                        this.clickedTriggerHref = null;
21763                    } else {
21764                        win.requestAnimationFrame(checkScrollEnd);
21765                    }
21766                };
21767
21768                win.requestAnimationFrame(checkScrollEnd);
21769            }
21770
21771            updateCurrentNavigation() {
21772                let activeHref = null;
21773
21774                if (this.clickedTriggerHref) {
21775                    activeHref = this.clickedTriggerHref;
21776                } else {
21777                    activeHref = this.getActiveHrefFromScroll();
21778                }
21779
21780                if (!activeHref) {
21781                    this.clearNavigationCurrent();
21782                    return;
21783                }
21784
21785                this.setNavigationCurrentByHref(activeHref);
21786            }
21787
21788            getActiveHrefFromScroll() {
21789                const triggerLine = win.innerHeight * 0.2;
21790                
21791                let activeId = null;
21792
21793                this.targets.forEach((target) => {
21794                    const rect = target.getBoundingClientRect();
21795
21796                    if (rect.top <= triggerLine) {
21797                        activeId = target.id;
21798                    }
21799                });
21800
21801                if (!activeId && this.targets.length) {
21802                    activeId = this.targets[0].id;
21803                }
21804
21805                return activeId ? `#${activeId}` : null;
21806            }
21807
21808            setNavigationCurrentByHref(href) {
21809                const nextTarget = Array.from(this.triggers).find((trigger) => {
21810                    return trigger.getAttribute('href') === href;
21811                });
21812
21813                if (!nextTarget) {
21814                    this.clearNavigationCurrent();
21815                    return;
21816                }
21817
21818                if (this.currentTarget === nextTarget) {
21819                    return;
21820                }
21821
21822                this.clearNavigationCurrent();
21823
21824                nextTarget.classList.add(this.classNames.isCurrent);
21825                nextTarget.setAttribute('aria-current', 'location');
21826
21827                this.currentTarget = nextTarget;
21828
21829                this.scrollCurrentIntoView(nextTarget);
21830            }
21831
21832            clearNavigationCurrent() {
21833                if (!this.currentTarget) {
21834                     return;
21835                }
21836
21837                this.currentTarget.classList.remove(this.classNames.isCurrent);
21838                this.currentTarget.removeAttribute('aria-current');
21839                this.currentTarget = null;
21840            }
21841
21842            scrollCurrentIntoView(target) {
21843                if (!this.list || !target) {
21844                    return;
21845                }
21846
21847                const nextScrollTop =
21848                    target.offsetTop -
21849                    (this.list.clientHeight / 2) +
21850                    (target.offsetHeight / 2);
21851
21852                this.list.scrollTo({
21853                    top: Math.max(0, nextScrollTop),
21854                    behavior: 'smooth'
21855                });
21856            }
21857
21858            setScrollOptionClass() {
21859                if (!this.list) {
21860                    return;
21861                }
21862
21863                const scrollTop = this.list.scrollTop;
21864                const clientHeight = this.list.clientHeight;
21865                const scrollHeight = this.list.scrollHeight;
21866                const maxScrollTop = scrollHeight - clientHeight;
21867                const threshold = 1;
21868
21869                const isScrollable = scrollHeight > clientHeight + threshold;
21870                const isScrollBottom = scrollTop >= maxScrollTop - threshold;
21871
21872                const isOverflowing = isScrollable && !isScrollBottom;
21873
21874                this.list.classList.toggle(this.classNames.isOverflowing, isOverflowing);
21875                this.list.classList.toggle(this.classNames.isScrollBottom, isScrollable && isScrollBottom);
21876            }
21877        }
21878
21879        const sideNavigation = new SideNavigation();
21880        sideNavigation.init();
21881    };
21882
21883    /* deqwas.js
21884    -------------------------------------------------------- */
21885
21886    // -----------------------------------------
21887    // Vertical Recommendation
21888    // -----------------------------------------
21889    $.fn.recommend02 = function (options) {
21890        var o;
21891
21892        if (!this.length) {
21893            return this;
21894        }
21895
21896        o = $.extend({
21897            ajaxPath: '',
21898            type: '',
21899            noSlider: null
21900        }, options);
21901
21902        this.each(function () {
21903            var $this = $(this);
21904            var $recommend;
21905            var $content;
21906            var $contentUl;
21907            var $contentLi;
21908            var contentNum;
21909            var contentHei;
21910            var $slide;
21911            var $next;
21912            var $prev;
21913            var num;
21914            var speed;
21915            var boxHei;
21916            var moveFlg;
21917            var prevReset;
21918            var nextReset;
21919
21920            $.ajax({
21921                url: o.ajaxPath,
21922                type: 'POST',
21923                dataType: 'html',
21924                data: win.tkt_deqwas
21925            }).done(function (data) {
21926                $this.html(data);
21927
21928                if (o.noSlider) {
21929                    o.noSlider();
21930
21931                    return;
21932                }
21933
21934                $this.find('.jcarousel-skin-basic ul').wrapAll('<div class="js-recommend_02 type_' + o.type + '"><div class="js-recommend-item link_box_01">');
21935                $recommend = $('.js-recommend_02.type_' + o.type);
21936                $content = $this.find('.js-recommend-item');
21937                $contentUl = $content.find('ul');
21938                $contentLi = $contentUl.find('li');
21939                contentNum = $contentLi.length;
21940                contentHei = 113;
21941
21942                $recommend.append('<div class="js-recommend-slide"><p class="prev"><button><span>Prev</span></button></p><p class="next"><button><span>Next</span></button></p></div>');
21943                $slide = $this.find('.js-recommend-slide');
21944                $next = $slide.find('.next button');
21945                $prev = $slide.find('.prev button');
21946                num = contentHei * 5;
21947                speed = 200;
21948                boxHei = -((contentHei * contentNum) - num);
21949                moveFlg = true;
21950
21951                $content.css({
21952                    overflow: 'hidden',
21953                    position: 'relative',
21954                    top: '0',
21955                    height: num + 'px'
21956                });
21957                $contentUl.css({
21958                    position: 'relative',
21959                    top: '0'
21960                });
21961
21962                prevReset = function () {
21963                    var boxTop;
21964
21965                    if (!moveFlg) {
21966                        return;
21967                    }
21968
21969                    if (moveFlg) {
21970                        moveFlg = false;
21971                        boxTop = parseInt($contentUl.css('top'), 10);
21972
21973                        if (boxTop >= 0) {
21974                            $contentUl.animate({
21975                                top: boxHei + 'px'
21976                            }, speed, function () {
21977                                moveFlg = true;
21978                            });
21979                        } else {
21980                            $contentUl.animate({
21981                                top: '+=' + num + 'px'
21982                            }, speed, function () {
21983                                moveFlg = true;
21984                            });
21985                        }
21986                    }
21987                };
21988
21989                nextReset = function () {
21990                    var boxTop;
21991
21992                    if (!moveFlg) {
21993                        return;
21994                    }
21995
21996                    if (moveFlg) {
21997                        moveFlg = false;
21998                        boxTop = parseInt($contentUl.css('top'), 10);
21999
22000                        if (boxTop <= boxHei) {
22001                            $contentUl.animate({
22002                                top: '0'
22003                            }, speed, function () {
22004                                moveFlg = true;
22005                            });
22006                        } else {
22007                            $contentUl.animate({
22008                                top: '-=' + num + 'px'
22009                            }, speed, function () {
22010                                moveFlg = true;
22011                            });
22012                        }
22013                    }
22014                };
22015
22016                $next.on('click', function () {
22017                    nextReset();
22018                });
22019
22020                $prev.on('click', function () {
22021                    prevReset();
22022                });
22023            });
22024        });
22025
22026        return this;
22027    };
22028
22029    // -----------------------------------------
22030    // Horizontal Recommendation
22031    // -----------------------------------------
22032    $.fn.recommend01 = function (options) {
22033        var o;
22034        var setPager;
22035
22036        if (!this.length) {
22037            return this;
22038        }
22039
22040        o = $.extend({
22041            ajaxPath: '',
22042            type: '',
22043            bxSliderOption: {},
22044            assetSize: 'M'
22045        }, options);
22046
22047        setPager = function ($pager, $hozRecSlider) {
22048            if ($pager.length) {
22049                $pager.off('mouseover');
22050
22051                $pager.on('click', 'a', function (e) {
22052                    var currentIndex;
22053                    var targetIndex;
22054
22055                    if ($hozRecSlider.length) {
22056                        e.preventDefault();
22057                        currentIndex = $hozRecSlider.getCurrentSlide();
22058                        targetIndex = $(this).attr('data-slide-index');
22059
22060                        targetIndex = parseInt(targetIndex, 10);
22061                        if (currentIndex !== targetIndex) {
22062                            $hozRecSlider.goToSlide(targetIndex);
22063                        }
22064                    }
22065                });
22066            }
22067        };
22068
22069        this.each(function () {
22070            var $this = $(this);
22071            var $hozRecSlider;
22072            var $targetWrapper;
22073            var $target;
22074            var $tab;
22075            var $tabHook;
22076
22077            win.tkt_deqwas.bottom = $.extend({
22078                assetSize: o.assetSize
22079            }, win.tkt_deqwas.bottom);
22080
22081            $.ajax({
22082                url: o.ajaxPath,
22083                type: 'POST',
22084                dataType: 'html',
22085                data: win.tkt_deqwas
22086            }).done(function (data) {
22087                $this.html(data);
22088                $this.find('.Section').wrapAll('<div class="js-recommend_01 type_' + o.type + '"><div class="js-recommend-item">');
22089                $targetWrapper = $('.js-recommend_01.type_' + o.type);
22090                if ($targetWrapper.length) {
22091                    $target = $targetWrapper.find('.js-recommend-item ul');
22092                    $tab = $this.closest('.js-tab');
22093
22094                    if ($tab.length && $this.is(':hidden')) {
22095                        $tab.find('.js-tab-btn > li').eq($this.closest('.content').index()).find('a').on('click', function (e) {
22096                            $tabHook = $(this);
22097
22098                            e.preventDefault();
22099
22100                            if (!$tabHook.hasClass('bxSliderDone')) {
22101                                $hozRecSlider = $target.bxSlider(o.bxSliderOption);
22102                                $tabHook.addClass('bxSliderDone');
22103                                setPager($('.bx-default-pager'), $hozRecSlider);
22104                            }
22105                        });
22106                    } else {
22107                        $hozRecSlider = $target.bxSlider(o.bxSliderOption);
22108                        setPager($('.bx-default-pager'), $hozRecSlider);
22109                    }
22110                }
22111            });
22112        });
22113
22114        return this;
22115    };
22116
22117    // -----------------------------------------
22118    // Toggle
22119    // -----------------------------------------
22120    $.fn.setToggleCnt = function (options) {
22121        var o;
22122
22123        if (!this.length) {
22124            return this;
22125        }
22126
22127        o = $.extend({
22128            currentClass: 'current',
22129            btnClass: 'toggleBtn',
22130            target: '.toggleCnt > li:gt(3)',
22131            btnWrapper: '.toggleBtnWrapper'
22132        }, options);
22133
22134        this.each(function () {
22135            var $area = $(this);
22136            var $target = $area.find(o.target);
22137            var $btnWrapper = $area.find(o.btnWrapper);
22138            var $btn;
22139
22140            $btnWrapper.append('<button type="button" class="' + o.btnClass + '" style="display:block;width:100%;height:100%;"></button>');
22141            $btn = $area.find('.' + o.btnClass);
22142
22143            if (!$btn.hasClass(o.currentClass)) {
22144                $target.hide();
22145            }
22146
22147            $btn.on('click', function (e) {
22148                var $this = $(this);
22149                var $parent = $this.closest($btnWrapper);
22150
22151                e.preventDefault();
22152
22153                if ($parent.hasClass(o.currentClass)) {
22154                    $parent.removeClass(o.currentClass);
22155                    $target.hide();
22156                } else {
22157                    $parent.addClass(o.currentClass);
22158                    $target.show();
22159                }
22160            });
22161        });
22162
22163        return this;
22164    };
22165
22166    // -----------------------------------------
22167    // Execution
22168    // -----------------------------------------
22169    $(function () {
22170        var DEQWAS = {};
22171
22172        if (typeof win.tkt_deqwas === 'undefined') {
22173            return;
22174        }
22175
22176        DEQWAS.elem = {
22177            $boxRecommendVertical: $('.box_recommend_vertical'),
22178            $boxRecommendHorizon: $('.box_recommend_horizon')
22179        };
22180
22181        DEQWAS.type = {
22182            $verticalDefault: DEQWAS.elem.$boxRecommendVertical.filter('.default'),
22183            $verticalMyKeyence: DEQWAS.elem.$boxRecommendVertical.filter('.myKeyence'),
22184            $horizonM_L: DEQWAS.elem.$boxRecommendHorizon.filter('.medium.long'),
22185            $horizonM_S: DEQWAS.elem.$boxRecommendHorizon.filter('.medium.short'),
22186            $horizonL_L: DEQWAS.elem.$boxRecommendHorizon.filter('.large.long'),
22187            $horizonMyKeyence: DEQWAS.elem.$boxRecommendHorizon.filter('.myKeyence')
22188        };
22189
22190        DEQWAS.type.$verticalDefault.recommend02({
22191            ajaxPath: suz_LanguagePath + '/data/recommend-side.jsp',
22192            type: 'default'
22193        });
22194
22195        DEQWAS.type.$verticalMyKeyence.recommend02({
22196            ajaxPath: suz_LanguagePath + '/data/deqwas-myk-asset-recommend.jsp',
22197            type: 'myKeyence',
22198            assetSize: 'M',
22199            noSlider: function () {
22200                DEQWAS.type.$verticalMyKeyence.setToggleCnt({
22201                    target: '.ThumbList > li:gt(3)',
22202                    btnWrapper: '.ShowList'
22203                });
22204            }
22205        });
22206
22207        DEQWAS.type.$horizonM_L.recommend01({
22208            ajaxPath: suz_LanguagePath + '/data/recommend-bottom.jsp',
22209            type: 'medium_long',
22210            bxSliderOption: {
22211                slideWidth: 125,
22212                minSlides: 6,
22213                maxSlides: 6,
22214                slideMargin: 20
22215            }
22216        });
22217
22218        DEQWAS.type.$horizonM_S.recommend01({
22219            ajaxPath: suz_LanguagePath + '/data/recommend-bottom.jsp',
22220            type: 'medium_short',
22221            bxSliderOption: {
22222                slideWidth: 140,
22223                minSlides: 4,
22224                maxSlides: 4,
22225                slideMargin: 20
22226            }
22227        });
22228
22229        DEQWAS.type.$horizonL_L.recommend01({
22230            ajaxPath: suz_LanguagePath + '/data/recommend-bottom.jsp',
22231            type: 'large_long',
22232            bxSliderOption: {
22233                slideWidth: 200,
22234                minSlides: 4,
22235                maxSlides: 4,
22236                slideMargin: 30
22237            },
22238            assetSize: 'L'
22239        });
22240
22241        DEQWAS.type.$horizonMyKeyence.recommend01({
22242            ajaxPath: suz_LanguagePath + '/data/deqwas-myk-asset-recommend-p.jsp',
22243            type: 'myKeyence',
22244            bxSliderOption: {
22245                slideWidth: 200,
22246                minSlides: 5,
22247                maxSlides: 5,
22248                slideMargin: 30,
22249                pager: false,
22250                responsive: true
22251            },
22252            assetSize: 'L'
22253        });
22254
22255        if ($('#js-deqwasAssets').length) {
22256            $.ajax({
22257                url: suz_LanguagePath + '/data/deqwas-assets-recommend2021.jsp',
22258                type: 'POST',
22259                dataType: 'html',
22260                data: win.tkt_deqwas,
22261                success: function (data) {
22262                    $('#js-deqwasAssets').html(data);
22263                }
22264            });
22265        }
22266
22267        // mykeyence Related Downloads
22268        if ($('#js-deqwasAssets-relatedMyKeyence').length) {
22269            $.ajax({
22270                url: suz_LanguagePath + '/data/deqwas-myk-asset-recommend-2022.jsp',
22271                type: 'POST',
22272                dataType: 'html',
22273                data: win.tkt_deqwas,
22274                success: function (data) {
22275                    $('#js-deqwasAssets-relatedMyKeyence').html(data);
22276                }
22277            });
22278        }
22279
22280        // mykeyence Recommended Downloads
22281        if ($('#js-deqwasAssets-recommendMyKeyence').length) {
22282            $.ajax({
22283                url: suz_LanguagePath + '/data/deqwas-myk-asset-recommend-p-2022.jsp',
22284                type: 'POST',
22285                dataType: 'html',
22286                data: win.tkt_deqwas,
22287                success: function (data) {
22288                    $('#js-deqwasAssets-recommendMyKeyence').html(data);
22289                }
22290            });
22291        }
22292    });
22293
22294    $(function () {
22295        var alertText;
22296        var cookieValue;
22297
22298        if (!win.kpi_cookie_alert.flag) {
22299            return;
22300        }
22301
22302        alertText = $(
22303            '<div class="js-setDialogCookie dialogCookie">'
22304            + '<div class="dialogCookie-body">'
22305            + '<div class="dialogCookie-textGroup">'
22306            + '<p class="dialogCookie-text">'
22307            + win.kpi_cookie_alert.text
22308            + '</p>'
22309            + '<div class="dialogCookie-link">'
22310            + '<a href="' + win.kpi_cookie_alert.link + '">'
22311            + '<span class="dialogCookie-linkText">' + win.kpi_cookie_alert.privacyText + '</span>'
22312            + '</a>'
22313            + '</div>'
22314            + '</div>'
22315            + '<div class="dialogCookie-button">'
22316            + '<button type="button" class="js-setDialogCookie-button buttonClose" aria-label="close"></button>'
22317            + '</div>'
22318            + '</div>'
22319            + '</div>'
22320        );
22321        cookieValue = util.getCookie('kpi_cookie_count');
22322
22323        if (!cookieValue) {
22324            cookieValue = 0;
22325        }
22326
22327        if (cookieValue === 0) {
22328            $('.layout-header').before(alertText);
22329
22330            alertText.ready(function () {
22331                var alertTextHeight = alertText.height();
22332
22333                $('#MegaMenu').css('margin-top', alertTextHeight + 'px');
22334            });
22335
22336            $(document).on('click', '.js-setDialogCookie-button', function () {
22337                $('.js-setDialogCookie').hide();
22338                $('#MegaMenu').css('margin-top', '0');
22339                cookieValue++;
22340                // $.cookie('kpi_cookie_count',cookieValue,{expires:365,path:'/',domain:kpi_cookiesettings.cookieDomain});
22341                util.setCookie('kpi_cookie_count', cookieValue);
22342            });
22343        }
22344    });
22345
22346    $(win).on('load', function () {
22347        var cookieValue = util.getCookie('kpi_cookie_count');
22348
22349        if (!cookieValue) {
22350            cookieValue = 0;
22351        }
22352
22353        win.setTimeout(function () {
22354            $('#userlike-tab').on('transitionend', function () {
22355                if (cookieValue === 0) {
22356                    $('.js-setDialogCookie').attr('data-chat', 'true');
22357                }
22358            });
22359        }, 1500);
22360    });
22361
22362    /* end deqwas.js
22363    -------------------------------------------------------- */
22364
22365    /* Modal and Light Box
22366    -------------------------------------------------------- */
22367    /* Ajax Modal */
22368    $(doc).on('click', '.js-modalAjax', function (e) {
22369        var $this = $(this);
22370
22371        e.preventDefault();
22372        kpi_openedModalWindow = $this.attr('href');
22373
22374        $.ajax({
22375            type: 'GET',
22376            url: kpi_openedModalWindow,
22377            dataType: 'html',
22378            success: function (data) {
22379                var modalCntHtml = $($.parseHTML(data));
22380                var modalCnt = modalCntHtml;
22381                var modalTtl = $(data).find('#PageTitle h1').html();
22382
22383                $.colorbox({
22384                    speed: kpi_usersettings.ModalOpenSpd,
22385                    innerWidth: '100%',
22386                    closeButton: false,
22387                    html: modalCnt,
22388                    scrolling: false,
22389                    onOpen: function () {
22390                        $('#kpi_modalbox').removeClass('ModalLarge');
22391                        $('#cboxPrevious').remove();
22392                        $('#cboxNext').remove();
22393                        $('#cboxSlideshow').remove();
22394                        $('#cboxCurrent').remove();
22395                    },
22396                    onComplete: function () {
22397                        var root = $('#colorbox');
22398                        var modalWrap = root.find('#cboxWrapper');
22399                        var modalCont = root.find('#cboxContent');
22400                        var modalLoaded = root.find('#cboxLoadedContent');
22401                        var modalInner = modalLoaded.find('#ModalContent').length ? modalLoaded.find('#ModalContent') : modalLoaded.find('#Container');
22402                        var modalCloseId = 'cboxClose';
22403                        var modalVisClass = 'cboxVisible';
22404                        var escTxt = win.kpi_translation.Close;
22405                        var $modalClose;
22406
22407                        modalInner.addClass(modalVisClass);
22408                        if (!$('#' + modalCloseId).length) {
22409                            modalInner.prepend('<button id="' + modalCloseId + '"><span>' + escTxt + '</span></button>');
22410                        }
22411                        $modalClose = modalInner.find('#' + modalCloseId);
22412
22413                        if ($modalClose.length) {
22414                            $modalClose.show();
22415                            $modalClose[0].focus();
22416                        }
22417
22418                        modalCntHtml.filter('meta, title, link').remove();
22419
22420                        if ($('#cboxTitle').text().length === 0) {
22421                            $('#ModalContent #PageTitle h1').remove();
22422
22423                            if (modalTtl) {
22424                                $('#cboxTitle').append(modalTtl);
22425                            } else {
22426                                $('#cboxTitle').append($this.attr('title'));
22427                            }
22428                        }
22429
22430                        if (modalCntHtml.find('.CloseWindow').length) {
22431                            modalCntHtml.find('#ContentsArea').addClass('Popup');
22432                            modalCntHtml.find('.CloseWindow').remove();
22433                        }
22434
22435                        if ($('#DownloadList').length || ($('#DownloadListLicenseSoftware').length || $('#DownloadListLicenseCad').length)) {
22436                            kpi_cartObj.callbackFromModalWindow($this.prev().attr('id'));
22437                        }
22438
22439                        function stopBubbling(target) {
22440                            target.off('click').on('click', function (e) {
22441                                e.stopPropagation();
22442                            });
22443                        }
22444
22445                        function modalClose(target) {
22446                            target.off('click').on('click', function () {
22447                                $.colorbox.close();
22448                            });
22449                        }
22450
22451                        stopBubbling(modalInner);
22452                        modalClose(modalWrap);
22453                        modalClose(modalCont);
22454                        modalClose($modalClose);
22455
22456                        modalInner.find('.MordalWindowCloseBtn').on('click', function (e) {
22457                            e.preventDefault();
22458                            $.colorbox.close();
22459                        });
22460                    }
22461                });
22462            }
22463        });
22464
22465        return false;
22466    });
22467    /* end Modal and Light Box
22468    -------------------------------------------------------- */
22469
22470    // Run: DOMContentLoaded
22471    doc.addEventListener('DOMContentLoaded', function () {
22472        KEYENCE.runDomReady();
22473    }, false);
22474
22475    // Run: load
22476    win.addEventListener('load', function () {
22477        KEYENCE.runLoad();
22478    }, false);
22479
22480    // Run: Pageshow
22481    win.addEventListener("pageshow", function (event) {
22482        KEYENCE.runPageShow(event);
22483    }, false);
22484
22485    KEYENCE.runDomReady = function () {
22486        KEYENCE.scrollTransitionToAnchor();
22487    };
22488
22489    KEYENCE.runLoad = function () {
22490        // do nothing.
22491    };
22492
22493    KEYENCE.runPageShow = function (event) {
22494        KEYENCE.resetAgreementCheck(event);
22495    };
22496
22497    $(function () {
22498        KEYENCE.init();
22499        KEYENCE.ctrlHeader();
22500        KEYENCE.setMenu();
22501        KEYENCE.setLoginHeaderMenu();
22502        KEYENCE.setHeaderMypageUserName();
22503        KEYENCE.setPhoneMenu();
22504        KEYENCE.setMegaMenu();
22505        KEYENCE.divideMenu();
22506        KEYENCE.setCategoryHeader();
22507        KEYENCE.setChangeLanguage();
22508        KEYENCE.setHomeCarousel();
22509        KEYENCE.setHomeChangeCategory();
22510        KEYENCE.setHomeAdjustHeight();
22511        KEYENCE.setToggleCart();
22512        KEYENCE.setCurrentNav();
22513        KEYENCE.ctrlTelLink();
22514        KEYENCE.ctrlFocusOrder();
22515        if (doc.documentElement.classList.contains('theme-extendedSurvey')) {
22516            KEYENCE.setRichSurvey();
22517        }
22518        KEYENCE.setStepRegistrationForm();
22519        KEYENCE.setMultiStepForm();
22520        KEYENCE.setCurrentPageNavi();
22521        KEYENCE.setMenuConversion();
22522        KEYENCE.ctrlHeaderForDynamicJumbotron();
22523        KEYENCE.ctrlDynamicJumbotronVideo();
22524        KEYENCE.setZaloChatBanner();
22525        KEYENCE.setSuggestHigherSeriesModal();
22526        KEYENCE.setCopyMovieUrl();
22527        KEYENCE.Form.FormFilter.init();
22528        KEYENCE.Form.TogglePassword.init();
22529        KEYENCE.Form.InputInterlock.init();
22530        KEYENCE.Form.SelectCountryNumber.init();
22531        KEYENCE.Form.SMSCodeButton.init();
22532        KEYENCE.Form.MobileNumberEdit.init();
22533        KEYENCE.Form.BlankFieldValidator.init();
22534        KEYENCE.Form.PatternMatchValidator.init();
22535        KEYENCE.Form.MobileNumberValidator.init();
22536        KEYENCE.Form.CommonSubmitValidator.init();
22537        KEYENCE.Form.AvailableValidator.init();
22538        KEYENCE.Form.RegisteredValidator.init();
22539        KEYENCE.Form.ControlErrorDisplay.init();
22540        KEYENCE.Form.OTPControl.init();
22541        KEYENCE.Form.ToggleDisabled.init();
22542        KEYENCE.Form.commonSendVerificationEmail.init();
22543        KEYENCE.Form.SetMobileNumberToPhoneField.init();
22544        KEYENCE.Form.ModalPasswordError.init();
22545        KEYENCE.Form.MultiFactorAuthentication.init();
22546        KEYENCE.DownloadedPopup.init();
22547        KEYENCE.oneMorePR();
22548        KEYENCE.omitText();
22549        KEYENCE.displayRelatedSeoArticleList();
22550        KEYENCE.setBasicTooltip();
22551        KEYENCE.setSideNavigation();
22552        const wechatLoginFlow = KEYENCE.Form.WechatLoginFlow;
22553        wechatLoginFlow.init();
22554    });
22555
22556    KEYENCE.polyfill = {
22557        setChildNodeRemove: function () {
22558            var arr = [Element.prototype, CharacterData.prototype, DocumentType.prototype];
22559
22560            arr.forEach(function (item) {
22561                item.remove = item.remove || function () {
22562                    this.parentNode.removeChild(this);
22563                };
22564            });
22565        },
22566        setNodeListForEach: function () {
22567            if (win.NodeList && !NodeList.prototype.forEach) {
22568                NodeList.prototype.forEach = Array.prototype.forEach;
22569            }
22570        },
22571        setElemClosest: function () {
22572            if (!Element.prototype.matches) {
22573                Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;
22574            }
22575
22576            if (!Element.prototype.closest) {
22577                Element.prototype.closest = function (s) {
22578                    var el = this;
22579
22580                    if (!doc.documentElement.contains(el)) {
22581                        return null;
22582                    }
22583                    do {
22584                        if (el.matches(s)) {
22585                            return el;
22586                        }
22587                        el = el.parentElement || el.parentNode;
22588                    } while (el !== null && el.nodeType === 1);
22589
22590                    return null;
22591                };
22592            }
22593        }
22594    };
22595
22596    $.fn.tabChange = function (options) {
22597        options = $.extend({
22598            selected: 0
22599        }, options);
22600
22601        var b = $(this).children('dl').attr('class');
22602
22603        return this.each(function (e) {
22604            var $this = $(this);
22605            var $tab = $this.find('ul.' + b);
22606            var h;
22607
22608            if ($tab.length === 0) {
22609                $(this).prepend('<div class="TabNavigation"><ul class="' + b + '"></ul></div>');
22610
22611                var g = $(this).children('dl').children('dt').length;
22612
22613                for (h = 0; h < g; h++) {
22614                    var i = $(this).children('dl').children('dt').attr('class');
22615
22616                    $this.find('ul.' + b).append('<li class="' + i + '"><a href="javascript:void(0);">' + $(this).children('dl.' + b).children('dt').eq(h).html() + '</a></li>');
22617                }
22618            }
22619
22620            $(this).children('dl.' + b).children('dd').css('display', 'none');
22621            $(this).attr({
22622                id: 'tabSwitching' + ++e
22623            });
22624
22625            var d = $('#tabSwitching' + e).find('ul.' + b).children('li');
22626            var f = $('#tabSwitching' + e).find('dl.' + b).children('dd');
22627
22628            d.eq(options.selected).addClass('Current');
22629            f.eq(options.selected).addClass('Current').css('display', 'block');
22630
22631            d.on('click', function () {
22632                var b = d.index(this);
22633
22634                d.removeClass('Current');
22635                $(this).addClass('Current');
22636                f.removeClass('Current').css('display', 'none');
22637                f.eq(b).addClass('Current').css('display', 'block');
22638            });
22639        });
22640    };
22641
22642    $.fn.stimulusTabChange = function (options) {
22643        var options = $.extend({}, options);
22644
22645        return this.each(function () {
22646            var tabs = this.querySelectorAll('[role="tab"]');
22647            var tabpanels = this.querySelectorAll('[role="tabpanel"]');
22648
22649            Array.prototype.forEach.call(tabs, function (tab, index) {
22650                var hiddenItems;
22651
22652                if (index === options.targetIndex) {
22653                    tab.setAttribute('aria-selected', true);
22654
22655                    hiddenItems = tab.querySelectorAll('[aria-hidden="false"]');
22656
22657                    Array.prototype.forEach.call(hiddenItems, function (hiddenItem) {
22658                        hiddenItem.setAttribute('aria-hidden', true);
22659                    });
22660                } else {
22661                    tab.setAttribute('aria-selected', false);
22662
22663                    hiddenItems = tab.querySelectorAll('[aria-hidden="true"]');
22664
22665                    Array.prototype.forEach.call(hiddenItems, function (hiddenItem) {
22666                        hiddenItem.setAttribute('aria-hidden', false);
22667                    });
22668                }
22669            });
22670
22671            Array.prototype.forEach.call(tabpanels, function (panel, index) {
22672                if (index === options.targetIndex) {
22673                    panel.setAttribute('aria-hidden', false);
22674                } else {
22675                    panel.setAttribute('aria-hidden', true);
22676                }
22677            });
22678        });
22679    };
22680
22681    $.fn.setRepairSuggestBox = function (options) {
22682        if (!this.length) {
22683            return this;
22684        }
22685
22686        var options = $.extend({
22687            title: kpi_repair_page_suggest.title,
22688            readText: kpi_repair_page_suggest.leadText,
22689            btnText01: kpi_repair_page_suggest.btnText01,
22690            btnText02: kpi_repair_page_suggest.btnText02,
22691            limit: kpi_repair_page_suggest.limit,
22692        }, options);
22693
22694        return this.each(function () {
22695            var title = options.title;
22696            var text = options.readText;
22697            var btnText01 = options.btnText01;
22698            var btnText02 = options.btnText02;
22699            var limit = options.limit;
22700            var visitedCountCookie = $.cookie('visitedCount');
22701            var urlPath = location.pathname;
22702            var items = {};
22703
22704            if (!visitedCountCookie) {
22705                run(this);
22706            }
22707
22708            function run(trigger) {
22709                var consentCookie = $.cookie('CookieConsent');
22710
22711                if (!trigger) {
22712                    return;
22713                }
22714
22715                items.$cookieBotScript = $('#Cookiebot');
22716
22717                if (!items.$cookieBotScript.length || (items.$cookieBotScript.length && consentCookie)) {
22718                    trigger.click();
22719
22720                    setItems();
22721                    updateText();
22722                    setCookie();
22723                } else if (items.$cookieBotScript.length && !consentCookie) {
22724                    setMutationObserver(trigger);
22725                }
22726            };
22727
22728            function setItems() {
22729                items = {
22730                    $title: $('#js-repairSuggest-titleTarget'),
22731                    $text: $('#js-repairSuggest-textTarget'),
22732                    $continueButton: $('#js-repairSuggest-continueTextTarget'),
22733                    $selectButton: $('#js-repairSuggest-selectTextTarget'),
22734                    $cookieTrigger: $('#js-suggestCookie-trigger'),
22735                };
22736            };
22737
22738            function updateText() {
22739                if (!items.$text.length ||
22740                    !items.$continueButton.length ||
22741                    !items.$selectButton.length) {
22742                    return;
22743                }
22744
22745                if (items.$title.length) {
22746                    items.$title.text(title);
22747                }
22748
22749                items.$text.text(text);
22750                items.$continueButton.text(btnText01);
22751                items.$selectButton.text(btnText02);
22752            };
22753
22754            function setCookie() {
22755                if (!items.$cookieTrigger.length) {
22756                    return;
22757                }
22758
22759                items.$cookieTrigger.on('click', function () {
22760                    $.cookie('visitedCount', '1', {
22761                        expires: limit,
22762                        path: urlPath,
22763                        domain: kpi_cookiesettings.cookieDomain,
22764                    });
22765                });
22766            };
22767
22768            function setMutationObserver(trigger) {
22769                var mutation = null;
22770                var config = {
22771                    subtree: true,
22772                    attributeFilter: ['class'],
22773                };
22774                var suggestOpened = false;
22775                var targetId = 'CybotCookiebotDialog';
22776                var targetClass = 'CybotCookiebotDialogActive';
22777
22778                function showSuggest(record) {
22779                    if (record[0].target.id === targetId) {
22780                        if (!$('#' + record[0].target.id).hasClass(targetClass) && !suggestOpened) {
22781                            $(trigger).trigger('click');
22782
22783                            setItems();
22784                            updateText();
22785                            setCookie();
22786
22787                            suggestOpened = true;
22788                            mutation.disconnect();
22789                        }
22790                    }
22791                };
22792
22793                mutation = new MutationObserver(showSuggest);
22794
22795                mutation.observe(doc.body, config);
22796            };
22797        });
22798    };
22799
22800    /* Tab Layout
22801    ---------------------------------------------------------------- */
22802    $(function () {
22803        var kpi_tabSwitchingClass = $('.TabSwitching');
22804        var $suz_downloadHistoryTab  = $("#suz_downloadHistoryTab");
22805        var suz_downloadHistoryTabVal;
22806        var currentTabIndex = 0;
22807
22808        if (kpi_tabSwitchingClass.length) {
22809            kpi_tabSwitchingClass.tabChange();
22810        }
22811
22812        if ($suz_downloadHistoryTab.length) {
22813            suz_downloadHistoryTabVal = $suz_downloadHistoryTab.val();
22814
22815            $('.js-downloadHistoryTabButton').each(function (index) {
22816                if ($(this).find(':contains(' + suz_downloadHistoryTabVal + ')').length) {
22817                    currentTabIndex = index;
22818
22819                    return false;
22820                }
22821
22822                return true;
22823            });
22824
22825            $('#tabSwitching1').stimulusTabChange({
22826                targetIndex: currentTabIndex
22827            });
22828        }
22829    });
22830
22831
22832    /* end Tab Layout
22833    ---------------------------------------------------------------- */
22834
22835    /* Language Selecter
22836     ---------------------------------------------------------------- */
22837    $(function () {
22838        var kpi_changeLanguageDomain = {
22839            defaultPath: location.href.split('/')
22840            ,pagePath:''
22841            ,topFlg:false
22842            ,init: function() {
22843                $('.TabSwitching').tabChange();
22844                // $('table.Stripe tbody').find('tr:odd').addClass('EvenRow');
22845                if(kpi_domainSettings.isDomain) {// After Delete
22846                    var _pagePath = this.pagePath;
22847                    if(this.topFlg==false) {
22848                        $('.js-changeRegionPath a').each(function() {
22849                            var href = $(this).attr('href').split('/');
22850                            var newHref = href[0] + '/' + href[1] + '/' + href[2];
22851
22852                            if( suz_search_Path.is_subLangPath(href[3]) ){
22853                                newHref += '/' + href[3];
22854                            }
22855                            newHref = newHref + _pagePath;
22856                            $(this).attr('href', newHref);
22857                        })
22858                    }
22859                }
22860            }
22861            ,initLanguageList: function() {
22862                if(kpi_domainSettings.isDomain) {// After Delete
22863                    var _pagePath = this.pagePath;
22864                    if(this.topFlg==false) {
22865                        $('#js-changeLanguage a').each(function() {
22866                            var href = $(this).attr('href').split('/');
22867                            var newHref = '';
22868
22869                            if( suz_search_Path.is_subLangPath(href[1]) ){
22870                                newHref += '/' + href[1];
22871                            }
22872                            newHref = newHref + _pagePath;
22873                            $(this).attr('href', newHref);
22874                        })
22875                    }
22876                }
22877            }
22878            ,setup: function() {
22879                if(kpi_domainSettings.isDomain) {// After Delete
22880                    this.pagePath = '';
22881                    for(var i=0;i<this.defaultPath.length;i++) {
22882                        if(i > 2) {
22883                            if( !( i==3 && suz_search_Path.is_subLangPath(this.defaultPath[i]) == true ) ){
22884                                this.pagePath += '/' + this.defaultPath[i];
22885                            }
22886                        }
22887                    }
22888                    var tempPath = this.pagePath.split('/');
22889                    this.topFlg = false;
22890                    if(tempPath[1] == ''){
22891                        this.topFlg = true;
22892                    }
22893                    for(i=0;i<suz_search_Path.topPageDecision.length;i++){
22894                        if(tempPath[1].indexOf(suz_search_Path.topPageDecision[i],0)>=0){
22895                            this.topFlg = true;
22896                            break;
22897                        }
22898                    }
22899                }
22900                this.initLanguageList();
22901            }
22902        };
22903        kpi_changeLanguageDomain.setup();
22904
22905        var kpi_languageSerecter =
22906            win.kpi_originalDomain.indexOf(window.location.host) > -1 ?
22907                kpi_domainSettings.searchDomain + kpi_loadingfiles.RegionSelectHtml + ' #ModalContent' :
22908                '/modal/region_selector.html' + ' #ModalContent';
22909        $('#js-changeRegion-trigger').colorbox({
22910            speed: kpi_usersettings.ModalOpenSpd,
22911            initialWidth: "450px",
22912            height: "600px",
22913            href: kpi_languageSerecter,
22914            title: kpi_translation.SelectRegionMsg,
22915            closeButton: false,
22916            onOpen:function(){
22917                $('#kpi_modalbox').removeClass('ModalLarge');
22918                $('#cboxOverlay').addClass('of-regionSelector');
22919            },
22920            onComplete:function(){
22921                var root = $('#colorbox');
22922                var modalWrap = root.find('#cboxWrapper');
22923                var modalCont = root.find('#cboxContent');
22924                var modalLoaded = root.find('#cboxLoadedContent');
22925                var modalInner = modalLoaded.find('#ModalContent');
22926                var tabPanel = modalInner.find('dl.Tab dd');
22927                var modalCloseId = 'cboxClose';
22928                var escTxt = kpi_translation.Close;
22929                var originalDomainRegExp = new RegExp('^' + win.kpi_originalDomain + '\/');
22930                var $modalClose;
22931                var tab;
22932
22933                if (modalInner.hasClass('of-regionSelector')) {
22934                    $('#cboxTitle').addClass('of-regionSelector');
22935                    root.addClass('of-regionSelector');
22936                }
22937
22938                if (!$('#' + modalCloseId).length) {
22939                    modalInner.prepend('<button id="' + modalCloseId + '"><span>' + escTxt + '</span></button>');
22940                }
22941
22942                $modalClose = modalInner.find('#' + modalCloseId);
22943
22944                if ($modalClose.length) {
22945                    $modalClose.show();
22946                    $modalClose[0].focus();
22947                }
22948
22949                function stopBubbling(target) {
22950                    target.off('click').on('click', function (e) {
22951                        e.stopPropagation();
22952                    });
22953                }
22954
22955                function modalClose(target) {
22956                    target.off('click').on('click', function () {
22957                        $.colorbox.close();
22958                    });
22959                }
22960
22961                stopBubbling(modalInner);
22962                stopBubbling($('#cboxTitle'));
22963                modalClose(modalWrap);
22964                modalClose(modalCont);
22965                modalClose($modalClose);
22966
22967                modalInner.find('.MordalWindowCloseBtn').on('click', function (e) {
22968                    e.preventDefault();
22969                    $.colorbox.close();
22970                });
22971
22972                kpi_changeLanguageDomain.init();
22973
22974                tab = modalInner.find('ul.Tab li');
22975
22976                tabPanel.find('a').each(function () {
22977                    var $this = $(this);
22978                    var href = $this.attr('href');
22979                    var closestTabPanel = $this.closest(tabPanel);
22980
22981                    if (originalDomainRegExp.test(href)) {
22982                        tab.removeClass('Current');
22983                        tab.eq((closestTabPanel.index() + 1) / 2 - 1).addClass('Current');
22984                        tabPanel.removeClass('Current').hide();
22985                        closestTabPanel.addClass('Current').show();
22986                    }
22987                });
22988            },
22989            onClosed:function(){
22990                $('#cboxTitle').removeClass('of-regionSelector');
22991                $('#cboxOverlay').removeClass('of-regionSelector');
22992                $('#colorbox').removeClass('of-regionSelector');
22993            }
22994        });
22995    });
22996    /* end Language Selecter
22997    ---------------------------------------------------------------- */
22998
22999    /* View More
23000    ---------------------------------------------------------------- */
23001    $(function () {
23002        var kpi_threadLoading = $('.ThreadLoading');
23003
23004        if (kpi_threadLoading.length) {
23005            var kpi_threadLoadingSetting = {
23006                tableNum: kpi_threadLoading.length,
23007                threadLoadingTable: $('table.ListViewTable', kpi_threadLoading),
23008                init: function () {
23009                    for (var k = 0; k < this.tableNum; k++) {
23010                        for (var i = 0; i < kpi_usersettings.MoreViewNum; i++) {
23011                            this.threadLoadingTable.eq(k).children('tbody').children('tr').eq(i).removeClass('Hide').addClass('Check');
23012                        }
23013
23014                        var trNum = this.threadLoadingTable.eq(k).children('tbody').children('tr').length;
23015
23016                        if (trNum <= kpi_usersettings.MoreViewNum) {
23017                            this.threadLoadingTable.eq(k).next('p.ViewMore').hide();
23018                        } else {
23019                            this.threadLoadingTable.eq(k).next('p.ViewMore').children('a').on('click', function (e) {
23020                                e.preventDefault();
23021                                var selfWrap = $(this).parent('p');
23022                                var showNum = selfWrap.prev('table').children('tbody').find('.Check').length;
23023                                var nextShow = showNum + kpi_usersettings.MoreViewNum;
23024
23025                                for (var j = showNum; j < nextShow; j++) {
23026                                    selfWrap.prev('table').children('tbody').children('tr').eq(j).fadeIn(kpi_usersettings.ViewMoreFadeInSpd, function () {
23027                                        var trHideNum = selfWrap.prev('table').children('tbody').find('.Hide').length;
23028
23029                                        if (trHideNum <= 0) {
23030                                            selfWrap.fadeOut(kpi_usersettings.ViewMoreFadeOutSpd).hide();
23031                                        }
23032                                    }).removeClass('Hide').addClass('Check');
23033                                }
23034                            });
23035                        }
23036                    }
23037                }
23038            };
23039
23040            kpi_threadLoadingSetting.init();
23041        }
23042    });
23043    /* end View More
23044    ---------------------------------------------------------------- */
23045
23046    /* Downloadlist
23047    ---------------------------------------------------------------- */
23048    $(function () {
23049        var kpi_downloadlistScript = {
23050            downloadListLinks: $('#DownloadListLinks'),
23051            downloadList: $('.js-downloadList'),
23052            downloadListTable: $('#DownloadListLinks table.DefaultViewTable'),
23053            listTableTr: $('.js-downloadList > li'),
23054            recentlyObject: $('#RecentlyDownloadedItems'),
23055            batchDownloadButton: $('input#BatchDownloadButton'),
23056            fileSizeObj: $('#DownloadListTotalFileSize'),
23057            batchLink: $('#DownloadListLinks form').attr('action'),
23058            errorMsg: $('.js-downloadErrorMessage'),
23059            listNum: 0,
23060            downloadObjNum: 0,
23061            checkedObjNum: 0,
23062            totalFileSize: 0,
23063            limitFileSize: 50,
23064            singleFileSizes: [],
23065            downloadItems: [],
23066            assetIds: [],
23067            severErrorMsg: '',
23068            scrollingElement: null,
23069            init: function () {
23070                this._initAjaxSetup();
23071
23072                /* Download List related */
23073                if (this.downloadList.length) {
23074                    this.listNum = this.listTableTr.length;
23075                    this.downloadObjNum = this.listNum;
23076                    this.scrollingElement = this.getScrollingElement();
23077                    this.errorMsg.hide();
23078                    this.hideRecentlyObject();
23079                    this.limitFileSize = Number($('#DownloadListLimitFileSize').text());
23080                    // this.bindClickCheckBox();
23081                    this.bindClickDownloadButton();
23082                    this.updateTotalFileSize();
23083                    this.checkedObjNum = this.listNum;
23084                    kpi_downloadlistScript.sizeErrorHandling();
23085
23086                    if (kpi_downloadlistScript.totalFileSize < kpi_downloadlistScript.limitFileSize) {
23087                        kpi_downloadlistScript.enableBatchDownloadButton();
23088                        kpi_downloadlistScript.bindClickBatchDownloadButton();
23089                    }
23090                }
23091            },
23092            hideRecentlyObject: function () {
23093                $('tbody', this.recentlyObject).children('tr').hide();
23094            },
23095            updateTotalFileSize: function () {
23096                var i;
23097                var asset;
23098                var fileSizeText;
23099
23100                for (i = 0; i < this.listNum; i++) {
23101                    fileSizeText = this.downloadList.find('li').eq(i).find('.js-downloadSingleSize').text();
23102                    this.singleFileSizes[i] = Number(fileSizeText);
23103                    this.totalFileSize += this.singleFileSizes[i];
23104                    asset = this.listTableTr.eq(i).attr('class');
23105                    asset = asset.split(/\s+/);
23106                    this.assetIds[i] = asset[0];
23107                    this.downloadItems[i] = 1;
23108                }
23109
23110                this.fileSizeObj.text(this.totalFileSize.toFixed(2));
23111            },
23112            bindClickCheckBox: function () {
23113                this.downloadListTable.find('input.CustomCheckbox').on('click', function () {
23114                    var num = $(this).closest('tr').index();
23115                    var isChecked = $(this).next('span').hasClass('checked');
23116
23117                    if (isChecked) {
23118                        kpi_downloadlistScript.downloadItems[num] = 1;
23119                    } else {
23120                        kpi_downloadlistScript.downloadItems[num] = 0;
23121                    }
23122
23123                    kpi_downloadlistScript.fileSizeChange();
23124                });
23125            },
23126            bindClickDownloadButton: function () {
23127                this.downloadList.find('a.js-myKeyenceDownload-button').on('click', function (e) {
23128                    var thisNum = $(this).closest('li').index();
23129
23130                    if ($('#RecentlyDownloadedItems table:hidden').length) {
23131                        kpi_downloadlistScript.recentlyObject.show();
23132                    }
23133
23134                    $('tbody tr', kpi_downloadlistScript.recentlyObject).eq(thisNum).show();
23135                    kpi_downloadlistScript.removeList(kpi_downloadlistScript.assetIds[thisNum]);
23136                    kpi_downloadlistScript.itemDelete(this);
23137                });
23138            },
23139            bindClickBatchDownloadButton: function () {
23140                var self = this;
23141
23142                kpi_downloadlistScript.batchDownloadButton.on('click', function (e) {
23143                    var ids = [];
23144                    var arrayNum = 0;
23145                    var i;
23146                    var checkcheck;
23147                    var targetTop;
23148
23149                    if ($('table:hidden', self.recentlyObject).length) {
23150                        self.recentlyObject.show();
23151                    }
23152
23153                    for (i = 0; i < self.listNum; i++) {
23154                        checkcheck = self.downloadItems[i];
23155
23156                        if (checkcheck > 0) {
23157                            ids[arrayNum] = self.assetIds[i];
23158                            arrayNum += 1;
23159                            $('tbody tr', self.recentlyObject).eq(i).show();
23160                            self.downloadList.children('li').eq(i).hide();
23161                            self.downloadItems[i] = 0;
23162                            self.fileSizeChange();
23163                            self.downloadObjNum -= 1;
23164
23165                            if (self.downloadObjNum < 1) {
23166                                self.downloadList.fadeOut(kpi_usersettings.DeleteBtnFadeOutSpd);
23167                                $('.js-batchDownload').fadeOut(kpi_usersettings.DeleteBtnFadeOutSpd);
23168                            }
23169                        }
23170                    }
23171
23172                    if (self.downloadList.length) {
23173                        targetTop = self.downloadListLinks.offset().top;
23174                        $(self.scrollingElement).animate({scrollTop: targetTop}, kpi_usersettings.SmoothScrollSpd, 'swing');
23175                    }
23176
23177                    self.removeList(ids.join());
23178                    e.preventDefault();
23179
23180                    $('form', self.downloadListLinks).each(function () {
23181                        this.submit();
23182                    });
23183                });
23184            },
23185            itemDelete: function (item) {
23186                var $item = $(item);
23187                var closest = $item.closest('li');
23188
23189                closest.fadeOut(kpi_usersettings.DeleteBtnFadeOutSpd, function () {
23190                    var thisTrNum = closest.index();
23191
23192                    kpi_downloadlistScript.downloadItems[thisTrNum] = 0;
23193                    kpi_downloadlistScript.downloadObjNum -= 1;
23194                    kpi_downloadlistScript.fileSizeChange();
23195
23196                    if (kpi_downloadlistScript.downloadObjNum < 1) {
23197                        kpi_downloadlistScript.downloadList.fadeOut(kpi_usersettings.DeleteBtnFadeOutSpd);
23198                        kpi_downloadlistScript.batchDownloadButton.closest('.js-batchDownload').fadeOut(kpi_usersettings.DeleteBtnFadeOutSpd);
23199                    }
23200                });
23201                closest.children('td').fadeOut(kpi_usersettings.DeleteBtnFadeOutSpd);
23202            },
23203            fileSizeChange: function () {
23204                var i;
23205                var checkcheck;
23206
23207                kpi_downloadlistScript.totalFileSize = 0;
23208                kpi_downloadlistScript.checkedObjNum = 0;
23209
23210                for (i = 0; i < kpi_downloadlistScript.listNum; i++) {
23211                    checkcheck = kpi_downloadlistScript.downloadItems[i];
23212
23213                    if (checkcheck > 0) {
23214                        kpi_downloadlistScript.totalFileSize += kpi_downloadlistScript.singleFileSizes[i];
23215                        kpi_downloadlistScript.checkedObjNum += 1;
23216                    }
23217                }
23218
23219                kpi_downloadlistScript.fileSizeObj.text(kpi_downloadlistScript.totalFileSize.toFixed(2));
23220                kpi_downloadlistScript.sizeErrorHandling();
23221            },
23222            sizeErrorHandling: function () {
23223                var self = this;
23224
23225                if (self.checkedObjNum > 1 && self.totalFileSize >= self.limitFileSize) {
23226                    self.errorMsg.show();
23227                    self.disableBatchDownloadButton();
23228                } else if (self.totalFileSize >= self.limitFileSize) {
23229                    self.errorMsg.show();
23230                    self.disableBatchDownloadButton();
23231                } else if (self.totalFileSize <= 0) {
23232                    self.errorMsg.hide();
23233                    self.disableBatchDownloadButton();
23234                } else if (self.batchDownloadButton.closest('.prd-button').attr('aria-disabled') === 'true') {
23235                    self.errorMsg.hide();
23236                    self.enableBatchDownloadButton();
23237                    self.bindClickBatchDownloadButton();
23238                }
23239            },
23240            enableBatchDownloadButton: function () {
23241                var self = this;
23242
23243                self.batchDownloadButton.closest('.prd-button').attr('aria-disabled', false);
23244                self.batchDownloadButton.prop('disabled', false);
23245            },
23246            disableBatchDownloadButton: function () {
23247                var self = this;
23248
23249                self.batchDownloadButton.closest('.prd-button').attr('aria-disabled', true);
23250                self.batchDownloadButton.off().prop('disabled', true);
23251            },
23252            removeList: function (assetId) {
23253                $.ajax({
23254                    url: kpi_downloadListSettings.listApiUrl + kpi_downloadListSettings.listApiMethodRemoveList,
23255                    data: {
23256                        'assetId': assetId
23257                    },
23258                    async: false,
23259                    timeout: kpi_usersettings.AjaxTimeoutSeconds,
23260                    success: function (data) {
23261                        if (data.errorFlg) {
23262                            // no error
23263                        } else {
23264                            kpi_downloadlistScript.displayErrorMsg();
23265                        }
23266                    },
23267                    complete: function (data) {}
23268                });
23269            },
23270            _initAjaxSetup: function () {
23271                $.ajaxSetup({
23272                    type: 'GET',
23273                    dataType: 'json',
23274                    timeout: kpi_usersettings.AjaxTimeoutSeconds
23275                });
23276            },
23277            displayErrorMsg: function () {
23278                kpi_downloadlistScript.errorMsg.children('p').text(kpi_downloadlistScript.severErrorMsg);
23279                kpi_downloadlistScript.errorMsg.show();
23280            },
23281            getScrollingElement: function () {
23282                if ('scrollingElement' in document) {
23283                    return document.scrollingElement;
23284                }
23285                if (navigator.userAgent.indexOf('WebKit') !== -1) {
23286                    return document.body;
23287                }
23288
23289                return document.documentElement;
23290            },
23291            getItemCount: function () {
23292                var count = this.downloadTargets.length;
23293
23294                if (count === 0) {
23295                    count = this.downloadList.children('li').length;
23296                }
23297
23298                return count;
23299            }
23300        };
23301
23302        if ($('#DownloadListLinks').length) {
23303            kpi_downloadlistScript.init();
23304        }
23305    });
23306    /* end Downloadlist
23307    ---------------------------------------------------------------- */
23308
23309    /* Series Toggle
23310    ---------------------------------------------------------------- */
23311    $(function () {
23312        var seriesToggle = {};
23313
23314        seriesToggle.init = function () {
23315            var self = this;
23316
23317            self.classNames = {
23318                hide: 'is-hide',
23319                open: 'is-open',
23320                text: 'Inner',
23321                toggle: 'js-setSeriesToggle',
23322                toggleTrigger: 'js-setSeriesToggle-trigger',
23323                toggleTarget: 'js-setSeriesToggle-target'
23324            };
23325
23326            self.idNames = {
23327                ariaControls: 'js-setSeriesToggle-item'
23328            };
23329
23330            self.elemNames = {
23331                button: 'BUTTON'
23332            };
23333
23334            self.attributeNames = {
23335                ariaExpanded: 'aria-expanded',
23336                ariaControls: 'aria-controls',
23337                dataOpen: 'open-label',
23338                dataClose: 'close-label',
23339                roleButton: 'button'
23340            };
23341
23342            self.elems = {
23343                $toggle: $('.' + self.classNames.toggle),
23344                $toggleTrigger: $('.' + self.classNames.toggleTrigger),
23345                $toggleTarget: $('.' + self.classNames.toggleTarget)
23346            };
23347        };
23348
23349        seriesToggle.fn = {};
23350
23351        seriesToggle.fn.init = function () {
23352            var self = this;
23353
23354            if (!seriesToggle.elems.$toggle.length) {
23355                return;
23356            }
23357
23358            self.setClass();
23359            self.setAttribute();
23360        };
23361
23362        seriesToggle.fn.setClass = function () {
23363            var $target = null;
23364
23365            if (!seriesToggle.elems.$toggleTrigger.length || !seriesToggle.elems.$toggleTarget.length) {
23366                return;
23367            }
23368
23369            seriesToggle.elems.$toggle.each(function () {
23370                var $this = $(this);
23371
23372                $target = $this.find('.' + seriesToggle.classNames.toggleTarget).first();
23373
23374                if (!$this.hasClass(seriesToggle.classNames.open)) {
23375                    $target.addClass(seriesToggle.classNames.hide);
23376                }
23377            });
23378        };
23379
23380        seriesToggle.fn.setAttribute = function () {
23381            var $trigger = null;
23382            var $target = null;
23383
23384            seriesToggle.elems.$toggle.each(function (i) {
23385                var $this = $(this);
23386
23387                $trigger = $this.find('.' + seriesToggle.classNames.toggleTrigger).first();
23388                $target = $this.find('.' + seriesToggle.classNames.toggleTarget).first();
23389
23390                if (!$trigger.length || !$target.length) {
23391                    return;
23392                }
23393
23394                seriesToggle.fn.setAria($this, $trigger, $target, i);
23395                seriesToggle.fn.setRole($trigger);
23396                seriesToggle.fn.changeClass($this, $trigger, $target);
23397            });
23398        };
23399
23400        seriesToggle.fn.changeClass = function ($toggle, $trigger, $target) {
23401            $trigger.on('click', function (e) {
23402				var $self = $(this);
23403
23404                e.preventDefault();
23405
23406                if ($target.length) {
23407                    seriesToggle.fn.setLabel($toggle, $self);
23408
23409                    if ($toggle.hasClass(seriesToggle.classNames.open)) {
23410                        $toggle.removeClass(seriesToggle.classNames.open);
23411                        $target.addClass(seriesToggle.classNames.hide);
23412                    } else {
23413                        $toggle.addClass(seriesToggle.classNames.open);
23414                        $target.removeClass(seriesToggle.classNames.hide);
23415                    }
23416
23417                    seriesToggle.fn.changeAria($toggle, $self);
23418                }
23419            });
23420        };
23421
23422        seriesToggle.fn.setAria = function ($toggle, $trigger, $target, i) {
23423            if ($toggle.hasClass(seriesToggle.classNames.open)) {
23424                $trigger.attr(seriesToggle.attributeNames.ariaExpanded, true);
23425            } else {
23426                $trigger.attr(seriesToggle.attributeNames.ariaExpanded, false);
23427            }
23428
23429            $trigger.attr(seriesToggle.attributeNames.ariaControl
23429s, seriesToggle.idNames.ariaControls + (i + 1));
23430            $target.attr('id', seriesToggle.idNames.ariaControls + (i + 1));
23431        };
23432
23433        seriesToggle.fn.setRole = function ($trigger) {
23434            var elemName = $trigger.prop("tagName");
23435
23436            if (elemName !== seriesToggle.elemNames.button) {
23437                $trigger.attr('role', seriesToggle.attributeNames.roleButton);
23438            }
23439        };
23440
23441        seriesToggle.fn.setLabel = function ($toggle, $trigger) {
23442            var label = null;
23443			var $targetLabel = $trigger.find('.' + seriesToggle.classNames.text);
23444
23445            if ($toggle.hasClass(seriesToggle.classNames.open)) {
23446				label = $trigger.data(seriesToggle.attributeNames.dataOpen);
23447            } else {
23448                label = $trigger.data(seriesToggle.attributeNames.dataClose);
23449            }
23450
23451            $targetLabel.text(label);
23452        };
23453
23454        seriesToggle.fn.changeAria = function ($toggle, $trigger) {
23455            if ($toggle.hasClass(seriesToggle.classNames.open)) {
23456                $trigger.attr(seriesToggle.attributeNames.ariaExpanded, true);
23457            } else {
23458                $trigger.attr(seriesToggle.attributeNames.ariaExpanded, false);
23459            }
23460        };
23461
23462        seriesToggle.init();
23463        seriesToggle.fn.init();
23464    });
23465    /* end Series Toggle
23466    ---------------------------------------------------------------- */
23467
23468    /* Discontinue Models Show or Hide Change
23469    ---------------------------------------------------------------- */
23470    $(function () {
23471        var kpi_includeDiscontinuedProducts = $('#IncludeDiscontinuedProducts');
23472        if(kpi_includeDiscontinuedProducts.length) {
23473            var kpi_discontinuedProductsCheck = {
23474                init: function () {
23475                    var customCheckboxObj = $('input[id="IncludeDiscontinuedProducts"]').parent('label');
23476                    customCheckboxObj.on({
23477                        'check:on':function (ev, data) {
23478                            $.cookie('kpi_discon', 1,{ path: '/', domain: kpi_cookiesettings.cookieDomain });
23479                        },
23480                        'check:off':function (ev, data) {
23481                            $.cookie('kpi_discon', 0,{ path: '/', domain: kpi_cookiesettings.cookieDomain });
23482                        }
23483                    });
23484                    if ($.cookie('kpi_discon') == 1) {
23485                            $('input[id="IncludeDiscontinuedProducts"]').checkbox('checkOn', $('input[id="IncludeDiscontinuedProducts"]').attr('id'));
23486                    }
23487                }
23488            };
23489            kpi_discontinuedProductsCheck.init();
23490        }
23491        var kpi_switchDiscontinuedModels = $('#SwitchDiscontinuedModels');
23492        var kpi_discontinuedDisplaySwitching = $('.DiscontinuedDisplaySwitching');
23493        if(kpi_switchDiscontinuedModels.length) {
23494            var kpi_discontinuedModelsCheck = {
23495                init: function() {
23496                    if($.cookie('kpi_discon') == 1) {
23497                        $('li', kpi_discontinuedDisplaySwitching).eq(0).addClass('Current');
23498                        $('li', kpi_discontinuedDisplaySwitching).eq(1).removeClass('Current');
23499                        $('.DiscontinuedTarget').each(function() { $(this).addClass('Show'); });
23500                        $('.DisconCountMessage').toggleClass('Show').toggleClass('Hide');
23501                    }
23502                }
23503            };
23504            kpi_discontinuedModelsCheck.init();
23505        }
23506        if(kpi_discontinuedDisplaySwitching.length) {
23507            $('a', kpi_discontinuedDisplaySwitching).on('click', function(e) {
23508                e.preventDefault();
23509                if(!$(this).parent('li').hasClass('Current')) {
23510                    var num = $('a', kpi_discontinuedDisplaySwitching).index(this);
23511                    if(num == 0) {
23512                        $.cookie('kpi_discon', 1,{ path: '/', domain: kpi_cookiesettings.cookieDomain });
23513                    } else {
23514                        $.cookie('kpi_discon', 0,{ path: '/', domain: kpi_cookiesettings.cookieDomain });
23515                    }
23516                    $('li', kpi_discontinuedDisplaySwitching).removeClass('Current');
23517                    $(this).parent('li').addClass('Current');
23518                    $('.DiscontinuedTarget').each(function() { $(this).toggleClass('Show'); });
23519                    $('.DisconCountMessage').toggleClass('Show').toggleClass('Hide');
23520                }
23521            });
23522        }
23523    });
23524	/* end Discontinue Models Show or Hide Change
23525    ---------------------------------------------------------------- */
23526
23527    /* ProductsTabNav
23528    ---------------------------------------------------------------- */
23529    $(function () {
23530        var $root = $('.JSSetTab');
23531        var activeClass = 'IsActive';
23532        var dataTrigger = 'data-tab-trigger';
23533        var dataTarget = 'data-tab-target';
23534        var $tabTarget = null;
23535        var $tabPanel = null;
23536        var $tabTrigger = null;
23537        var $this = null;
23538        var targetName = null;
23539        var $trigger = null;
23540        var $triggerRoot = null;
23541
23542        if (!$root[0]) {
23543            return;
23544        }
23545
23546        $root.each(function () {
23547            $this = $(this);
23548            $tabTrigger = $this.find('[' + dataTrigger + ']');
23549            $tabPanel = $this.find('[' + dataTarget + ']');
23550
23551            $tabPanel.hide();
23552            $tabPanel.eq(0).show();
23553            $tabTrigger.eq(0).addClass(activeClass);
23554
23555            $tabTrigger.on('click', function (e) {
23556                e.preventDefault();
23557
23558                $trigger = $(this);
23559                $triggerRoot = $trigger.closest($root);
23560
23561                if ($trigger.hasClass(activeClass)) {
23562                    return;
23563                }
23564
23565                targetName = $trigger.attr(dataTrigger);
23566                $tabTarget = $triggerRoot.find('[' + dataTarget + '="' + targetName + '"]');
23567                $triggerRoot.find('.' + activeClass).removeClass(activeClass);
23568
23569                if (!$trigger.hasClass(activeClass)) {
23570                    $trigger.addClass(activeClass);
23571                    $triggerRoot.find('[' + dataTarget + ']').hide();
23572
23573                    if (!$tabTarget.is(':animated')) {
23574                        $tabTarget.fadeIn(200);
23575                    }
23576                }
23577            });
23578        });
23579    });
23580    /* end ProductsTabNav
23581    ---------------------------------------------------------------- */
23582
23583}(window, window.document, window.jQuery, (function (win, doc) {
23584    'use strict';
23585
23586    var SetUtility = function () {
23587        // do nothing.
23588    };
23589
23590    SetUtility.prototype = {
23591        getJSON: function (loadPath) {
23592            return new Promise(function (resolve, reject) {
23593                var xhr = new XMLHttpRequest();
23594
23595                xhr.open('GET', loadPath);
23596                xhr.onload = function () {
23597                    if (xhr.status === 200) {
23598                        resolve(JSON.parse(xhr.response));
23599                    } else {
23600                        reject(new Error(xhr.statusText));
23601                    }
23602                };
23603                xhr.onerror = function () {
23604                    reject(new Error('Network Error'));
23605                };
23606                xhr.send(null);
23607            });
23608        },
23609        getCookie: function (name) {
23610            var cookies = doc.cookie.split('; ');
23611            var i;
23612            var l;
23613            var arr = [];
23614
23615            for (i = 0, l = cookies.length; i < l; i++) {
23616                if (cookies[i].indexOf(name + '=') === 0) {
23617                    arr.push(cookies[i].substring(name.length + 1));
23618                }
23619            }
23620
23621            return arr[0];
23622        },
23623        setCookie: function (name, value) {
23624            var date = new Date();
23625            // var pathname = win.location.pathname;
23626            var path = '/';
23627
23628            // if (/^\/frfr\//.test(pathname)) {
23629            //     path = '/frfr/';
23630            // } else if (/^\/nlnl\//.test(pathname)) {
23631            //     path = '/nlnl/';
23632            // } else if (/^\/dede\//.test(pathname)) {
23633            //     path = '/dede/';
23634            // } else {
23635            //     path = '/';
23636            // }
23637
23638            date.setDate(date.getDate() + 90);
23639            doc.cookie = name + '=' + value + '; expires=' + date.toUTCString() + '; path=' + path;
23640        },
23641        removeOverlapArr: function (array) {
23642            return array.filter(function (x, i, self) {
23643                return self.indexOf(x) === i;
23644            });
23645        },
23646        removeEmptyArr: function (array) {
23647            return array.filter(function (x) {
23648                return !(x === null || x === undefined || x === '');
23649            });
23650        }
23651    };
23652
23653    return new SetUtility();
23654}(window, window.document))));
23655
23656function newFunction($) {
23657    $(this).colorbox.resize();
23658}
23659
23660/* Enquete Common
23661 ---------------------------------------------------------------- */
23662(function (win, doc, $, util) {
23663    'use strict';
23664
23665    var ENQUETE = {};
23666
23667    var idNames = {
23668        survey: 'SurveyForm',
23669        richSurvey: 'js-setRichSurvey',
23670        form: 'suz_registrationForm',
23671        header: 'js-controlHeader',
23672        enqueteId: 'enqueteId',
23673    };
23674
23675    var classNames = {
23676        isRequired: 'IsRequired',
23677        isHide: 'IsHide',
23678        titleAndText: 'TitleAndText',
23679        customCheckbox: 'CustomCheckbox',
23680        customRadio: 'CustomRadio',
23681        customText: 'CustomText',
23682        customTextArea: 'CustomTextArea',
23683        title: 'Title',
23684        title02: 'EnqTitle02',
23685        errorMessage: 'ErrorMessage',
23686        isError: 'is-error',
23687        inputGroup: 'prd-inputGroup',
23688        enquete2019: 'enquete2019'
23689    };
23690
23691    var options = {
23692        errorText: '<div class="ErrorMessage"><p>{0}</p></div>',
23693        errorText2019: '<div class="prd-form-errorTextOuter"><p class="prd-form-errorText of-primary prd-utility-marginBottom-0 ErrorMessage suz_errorMsg js-formErrText">{0}</p></div>'
23694    };
23695
23696    if ($ === undefined) {
23697        return;
23698    }
23699
23700    ENQUETE = (function (enquate) {
23701        enquate.VERSION = {
23702            NONE: -1,
23703            SURVEY_2014: 0,
23704            SURVEY_2019: 1,
23705            SURVEY_2020: 2
23706        };
23707
23708        enquate.init = function () {
23709            enquate.checkErrorText();
23710            if (win.enqueteMessage) {
23711                options.errorText = options.errorText.replace(/\{0\}/g, win.enqueteMessage.required);
23712            }
23713
23714            enquate.extendIdNames(win.enqueteIdNames);
23715            enquate.extendClassNames(win.enqueteClassNames);
23716            enquate.extendOptions(win.enqueteOptions);
23717            enquate.removeCustomCheckBox(win.shouldRemove);
23718
23719            if (enquate.hasError()) {
23720                enquate.scrollToEnquateTop();
23721            }
23722        };
23723
23724        enquate.checkErrorText = function () {
23725            var version = this.getVersion();
23726            var surveyContainer = doc.getElementById(idNames.survey);
23727
23728            if (!surveyContainer) {
23729                return;
23730            }
23731
23732            if (version === this.VERSION.SURVEY_2019 && surveyContainer.classList.contains(classNames.enquete2019)) {
23733                options.errorText = options.errorText2019;
23734            }
23735
23736            return;
23737        };
23738
23739        enquate.extendIdNames = function (obj) {
23740            if (obj) {
23741                $.extend(idNames, obj);
23742            }
23743        };
23744
23745        enquate.extendClassNames = function (obj) {
23746            if (obj) {
23747                $.extend(classNames, obj);
23748            }
23749        };
23750
23751        enquate.extendOptions = function (obj) {
23752            if (obj) {
23753                $.extend(options, obj);
23754            }
23755        };
23756
23757        enquate.removeCustomCheckBox = function (shouldRemove) {
23758            var $customCheckbox;
23759
23760            shouldRemove = shouldRemove || true;
23761
23762            if (shouldRemove) {
23763                $customCheckbox = $('.' + classNames.customCheckbox);
23764
23765                if ($customCheckbox.length) {
23766                    $customCheckbox.each(function () {
23767                        $(this).checkbox('destroy');
23768                    });
23769                }
23770            }
23771        };
23772
23773        enquate.checkbox = {
23774            disable: function ($checkbox) {
23775                $checkbox.prop('disabled', true);
23776            },
23777            enable: function ($checkbox) {
23778                $checkbox.prop('disabled', false);
23779            }
23780        };
23781
23782        enquate.textbox = {
23783            disable: function ($textbox) {
23784                $textbox.prop('disabled', true);
23785            },
23786            enable: function ($textbox) {
23787                $textbox.prop('disabled', false);
23788            }
23789        };
23790
23791        enquate.textarea = {
23792            disable: function ($textarea) {
23793                $textarea.prop('disabled', true);
23794            },
23795            enable: function ($textarea) {
23796                $textarea.prop('disabled', false);
23797            }
23798        };
23799
23800        enquate.getVersion = function () {
23801            var version = this.VERSION.NONE;
23802
23803            if (doc.getElementById(idNames.enqueteId)) {
23804                if (doc.getElementById(idNames.richSurvey)) {
23805                    version = idNames.SURVEY_2020;
23806                } else if (doc.getElementById(idNames.survey)) {
23807                    version = this.VERSION.SURVEY_2019;
23808                } else {
23809                    version = this.VERSION.SURVEY_2014;
23810                }
23811            }
23812
23813            return version;
23814        };
23815
23816        enquate.hasError = function () {
23817            var version = this.getVersion();
23818            var errorMessage;
23819
23820            if (version === this.VERSION.SURVEY_2019 || version === this.VERSION.SURVEY_2014) {
23821                errorMessage = doc.querySelectorAll('#' + idNames.form 
23821+ ' .' + classNames.errorMessage);
23822
23823                if (errorMessage.length) {
23824                    return true;
23825                }
23826            }
23827
23828            return false;
23829        };
23830
23831        enquate.scrollToEnquateTop = function () {
23832            var target = document.querySelector('a[name="enqueteTop"]');
23833            var position = 0;
23834
23835            if (target) {
23836                position = (target.getBoundingClientRect().top + win.scrollY);
23837
23838                win.scrollTo(0, position);
23839            }
23840        };
23841
23842        return enquate;
23843    }(ENQUETE));
23844
23845    ENQUETE.toggleDisplay = (function () {
23846        var _prevTarget = '';
23847        var _prevName = '';
23848
23849        var ToggleDisplay = function () {
23850            this.data = [];
23851        };
23852
23853        ToggleDisplay.prototype.init = function (data) {
23854            this.data = data || [];
23855            this._rebuildConnectingData();
23856            this._bindEvents();
23857        };
23858
23859        ToggleDisplay.prototype._rebuildConnectingData = function () {
23860            var self = this;
23861            var data = self.data;
23862            var i;
23863            var len = data.length;
23864            var lastIndex = len - 1;
23865            var prevName;
23866            var prevSource;
23867            var prevTarget;
23868            var list = [];
23869
23870            for (i = 0; i < len; i++) {
23871                $(data[i].source).attr('data-target', data[i].target);
23872
23873                if (i === 0) {
23874                    prevName = data[i].name;
23875                    prevSource = data[i].source;
23876                    prevTarget = data[i].target;
23877                } else if (data[i].name === prevName && data[i].target === prevTarget) {
23878                    prevSource += ', ' + data[i].source;
23879
23880                    if (i === lastIndex) {
23881                        list.push({
23882                            name: data[i].name,
23883                            source: prevSource,
23884                            target: data[i].target
23885                        });
23886                    }
23887                } else {
23888                    list.push({
23889                        name: prevName,
23890                        source: prevSource,
23891                        target: prevTarget
23892                    });
23893
23894                    if (i === lastIndex) {
23895                        list.push({
23896                            name: data[i].name,
23897                            source: data[i].source,
23898                            target: data[i].target
23899                        });
23900                    } else {
23901                        prevName = data[i].name;
23902                        prevSource = data[i].source;
23903                        prevTarget = data[i].target;
23904                    }
23905                }
23906            }
23907
23908            this.data = list.reverse();
23909        };
23910
23911        ToggleDisplay.prototype._bindEvents = function () {
23912            this._onChange();
23913        };
23914
23915        ToggleDisplay.prototype._onChange = function () {
23916            var self = this;
23917            var data = self.data;
23918            var i;
23919            var j;
23920            var len = data.length;
23921            var $input;
23922            var $source;
23923            var $target;
23924            var list = [];
23925
23926            for (i = 0; i < len; i++) {
23927                $input = $(data[i].name);
23928                $source = $(data[i].source);
23929                $target = $('.' + data[i].target);
23930
23931                $input.on(
23932                    'change',
23933                    {
23934                        $input: $input,
23935                        $source: $source,
23936                        $target: $target,
23937                        $checked: $(this).filter(':checked'),
23938                        selector: data[i].target
23939                    },
23940                    self._toggle
23941                );
23942
23943                $target.addClass(classNames.isHide);
23944
23945                if ($source.is(':checked')) {
23946                    list.push({
23947                        name: data[i].name,
23948                        source: data[i].source,
23949                        target: data[i].target
23950                    });
23951                }
23952            }
23953
23954            for (j = 0; j < list.length; j++) {
23955                $('.' + list[j].target).removeClass(classNames.isHide);
23956            }
23957        };
23958
23959        ToggleDisplay.prototype._toggle = function (e) {
23960            var self = this;
23961            var $source = e.data.$source;
23962            var $target = e.data.$target;
23963            var selector = e.data.selector;
23964            var promise = Promise.resolve();
23965
23966            var setHidden = function () {
23967                if (!$source.is(':checked')) {
23968                    if (self.name !== _prevName) {
23969                        _prevTarget = '';
23970                    }
23971                    _prevName = self.name;
23972                    $target.addClass(classNames.isHide);
23973
23974                    $target.find('textarea, :text, select, checkbox, radio').
23975                        val('').
23976                        end().
23977                        find(':checked').
23978                        prop('checked', false).
23979                        filter(function () {
23980                            return $(this).attr('data-target') !== _prevTarget;
23981                        }).
23982                        trigger('change');
23983                }
23984            };
23985
23986            var setVisible = function () {
23987                if ($source.is(':checked')) {
23988                    _prevName = self.name;
23989                    _prevTarget = selector;
23990                    $target.removeClass(classNames.isHide);
23991                }
23992            };
23993
23994            promise.then(function () {
23995                setHidden();
23996            }).then(function () {
23997                setVisible();
23998            });
23999        };
24000
24001        return new ToggleDisplay();
24002    }());
24003
24004    ENQUETE.ctrlTxtBox = (function (enquete) {
24005        var CtrlTxtBox = function () {
24006            this.data = [];
24007        };
24008
24009        CtrlTxtBox.prototype.init = function (data) {
24010            this.data = data || [];
24011            this._bindEvents();
24012        };
24013
24014        CtrlTxtBox.prototype._bindEvents = function () {
24015            this._onChange();
24016        };
24017
24018        CtrlTxtBox.prototype._onChange = function () {
24019            var self = this;
24020            var data = self.data;
24021            var i;
24022            var len = data.length;
24023            var $input;
24024            var $source;
24025            var $target;
24026
24027            for (i = 0; i < len; i++) {
24028                $input = $(data[i].name);
24029                $source = $(data[i].source);
24030                $target = $(data[i].target);
24031
24032                $input.on(
24033                    'change',
24034                    {
24035                        $input: $input,
24036                        $source: $source,
24037                        $target: $target
24038                    },
24039                    self._toggle
24040                );
24041
24042                $input.trigger('change');
24043            }
24044        };
24045
24046        CtrlTxtBox.prototype._toggle = function (e) {
24047            var $source = e.data.$source;
24048            var $target = e.data.$target;
24049
24050            if ($source.is(':checked')) {
24051                enquete.textbox.enable($target);
24052            } else {
24053                enquete.textbox.disable($target);
24054            }
24055        };
24056
24057        return new CtrlTxtBox();
24058    }(ENQUETE));
24059
24060    ENQUETE.checkMaxLimit = (function (enquete) {
24061        var CheckMaxLimit = function () {
24062            this.data = [];
24063        };
24064
24065        CheckMaxLimit.prototype.init = function (data) {
24066            this.data = data || [];
24067            this._bindEvents();
24068        };
24069
24070        CheckMaxLimit.prototype._bindEvents = function () {
24071            this._onChange();
24072        };
24073
24074        CheckMaxLimit.prototype._onChange = function () {
24075            var self = this;
24076            var data = self.data;
24077            var i;
24078            var len = data.length;
24079            var $checkbox;
24080
24081            for (i = 0; i < len; i++) {
24082                $checkbox = $(data[i].name);
24083                $checkbox.on(
24084                    'change',
24085                    {
24086                        $checkbox: $checkbox,
24087                        max: data[i].max
24088                    },
24089                    self._toggle
24090                );
24091
24092                $checkbox.trigger('change');
24093            }
24094        };
24095
24096        CheckMaxLimit.prototype._toggle = function (e) {
24097            var $checkbox = e.data.$checkbox;
24098            var $notChecked = $checkbox.not(':checked');
24099            var max = e.data.max;
24100            var count = $checkbox.filter(':checked').length;
24101
24102            if (count === max) {
24103                enquete.checkbox.disable($notChecked);
24104            } else {
24105                enquete.checkbox.enable($checkbox);
24106            }
24107        };
24108
24109        return new CheckMaxLimit();
24110    }(ENQUETE));
24111
24112    ENQUETE.required = (function () {
24113        var Required = function () {
24114            this.data = [];
24115        };
24116
24117        Required.prototype.init = function (data) {
24118            this.data = data || [];
24119            this._rebuildRequiredData(this.data);
24120        };
24121
24122        Required.prototype._rebuildRequiredData = function (data) {
24123            var i;
24124            var len = data.length;
24125            var list = [];
24126
24127            for (i = 0; i < len; i++) {
24128                list.push(data[i].name);
24129            }
24130
24131            this.data = list;
24132        };
24133
24134        Required.prototype.getItemList = function () {
24135            var self = this;
24136            var data = self.data;
24137            var i;
24138            var len;
24139            var $input;
24140            var itemList = [];
24141
24142            len = data.length;
24143
24144            for (i = 0; i < len; i++) {
24145                $input = $(data[i]);
24146
24147                if ($input.length && $input.is(':visible')) {
24148                    itemList.push($input);
24149                }
24150            }
24151
24152            itemList = self._supplementItemList(itemList);
24153
24154            return itemList;
24155        };
24156
24157        Required.prototype._supplementItemList = function (itemList) {
24158            var self = this;
24159            var $extra = $('.' + classNames.isRequired);
24160
24161            if ($extra.length) {
24162                $extra.each(function () {
24163                    var $this = $(this);
24164                    var name = $this.prop('name');
24165                    var tagName = $this.prop('tagName').toLowerCase();
24166
24167                    if (name === '' || tagName !== 'input') {
24168                        return;
24169                    }
24170
24171                    if ($this.is(':visible') && $this.prop('disabled') === false) {
24172                        itemList = self.addToItemList($this, itemList);
24173                    }
24174                });
24175            }
24176
24177            return itemList;
24178        };
24179
24180
24181        Required.prototype.addToItemList = function (value, itemList) {
24182            var i;
24183            var len;
24184            var arrAdd;
24185
24186            if (util.isArray(value)) {
24187                arrAdd = value;
24188            } else {
24189                arrAdd = [value];
24190            }
24191
24192            len = arrAdd.length;
24193
24194            for (i = 0; i < len; i++) {
24195                if (this._getIndexOfTargtItem(arrAdd[i], itemList) < 0) {
24196                    itemList.push(arrAdd[i]);
24197                }
24198            }
24199
24200            return itemList;
24201        };
24202
24203        Required.prototype.removeFromItemList = function (value, itemList) {
24204            var i;
24205            var len;
24206            var arrRemove;
24207            var dataIndex;
24208
24209            if (util.isArray(value)) {
24210                arrRemove = value;
24211            } else {
24212                arrRemove = [value];
24213            }
24214
24215            len = arrRemove.length;
24216
24217            for (i = 0; i < len; i++) {
24218                dataIndex = this._getIndexOfTargtItem(arrRemove[i], itemList);
24219                itemList.splice(dataIndex, 1);
24220            }
24221
24222            return itemList;
24223        };
24224
24225        Required.prototype._getIndexOfTargtItem = function ($input, itemList) {
24226            var i;
24227            var len = itemList.length;
24228            var index = -1;
24229
24230            for (i = 0; i < len; i++) {
24231                if (itemList[i].prop('name') === $input.prop('name')) {
24232                    index = i;
24233                    break;
24234                }
24235            }
24236
24237            return index;
24238        };
24239
24240        return new Required();
24241    }());
24242
24243    ENQUETE.form = (function (enquete) {
24244        var Form = function () {
24245            // nothing else
24246        };
24247
24248        Form.prototype.init = function () {
24249            this._bindEvents();
24250        };
24251
24252        Form.prototype._bindEvents = function () {
24253            this._onBlurFromTextInput();
24254            this._onSubmit();
24255        };
24256
24257        Form.prototype._onSubmit = function () {
24258            var self = this;
24259
24260            $('#' + idNames.form).on('submit', function () {
24261                var list = enquete.required.getItemList();
24262
24263                $('.' + classNames.errorMessage).remove();
24264
24265                if (self._validateForm(list)) {
24266                    self._clearHideValues();
24267
24268                    return true;
24269                }
24270
24271                return false;
24272            });
24273        };
24274
24275        Form.prototype._onBlurFromTextInput = function () {
24276            var selector = '.' + classNames.customText + ', .' + classNames.customTextArea;
24277
24278            $(selector).on('blur', function () {
24279                this.value = this.value.trim();
24280            });
24281        };
24282
24283        Form.prototype._clearHideValues = function () {
24284            var $area = $('.' + classNames.titleAndText);
24285
24286            if ($area.length) {
24287                $area.each(function () {
24288                    var $this = $(this);
24289
24290                    if ($this.is(':hidden')) {
24291                        $this.find('textarea, :text, select, checkbox, radio').
24292                            val('').
24293                            end().
24294                            find(':checked').
24295                            prop('checked', false);
24296                    }
24297                });
24298            }
24299        };
24300
24301        Form.prototype._validateForm = function (requiredList) {
24302            var result = true;
24303            var scrollPos = null;
24304
24305            $.each(requiredList, function (idx, $el) {
24306                var errorPosition;
24307                var errText = options.errorText;
24308                var $errMsg;
24309                var isEntered = false;
24310                var currentPos = null;
24311                var $titleAndText;
24312                var $title;
24313                var version = enquete.getVersion();
24314
24315                if ($el.filter(':checkbox, :radio').length > 0) {
24316                    isEntered = $el.filter(':checked').length > 0;
24317                } else {
24318                    $el.each(function () {
24319                        isEntered = isEntered || ($(this).val() !== null && $(this).val() !== '');
24320                    });
24321                }
24322                if (!isEntered) {
24323                    result = false;
24324                    errorPosition = '.' + classNames.titleAndText;
24325
24326                    $titleAndText = $el.eq(0).closest(errorPosition);
24327
24328                    if (!$titleAndText.length) {
24329                        return;
24330                    }
24331
24332                    $title = $titleAndText.children('.' + classNames.title);
24333                    $title = $title.length ? $title : $titleAndText.children('.' + classNames.title02);
24334
24335                    if (!$title.length) {
24336                        return;
24337                    }
24338
24339                    if (version === enquete.VERSION.SURVEY_2019 && $titleAndText.hasClass(classNames.inputGroup)) {
24340                        $titleAndText.addClass(classNames.isError);
24341                        $errMsg = $titleAndText.append(errText);
24342                        currentPos = $errMsg.closest(errorPosition).offset().top;
24343                    } else {
24344                        $errMsg = $title.after(errText);
24345                        currentPos = $errMsg.closest(errorPosition).offset().top;
24346                    }
24347
24348                    if (scrollPos === null || scrollPos > currentPos) {
24349                        scrollPos = currentPos;
24350                    }
24351                }
24352            });
24353
24354            if (scrollPos !== null) {
24355                $('html, body').animate({scrollTop: scrollPos}, 'fast');
24356            }
24357
24358            return result;
24359        };
24360
24361        return new Form();
24362    }(ENQUETE));
24363
24364    ENQUETE.checkboxGroup = (function (enquete) {
24365        var CheckboxGroup = function () {
24366            this.data = [];
24367        };
24368
24369        CheckboxGroup.prototype.init = function (data) {
24370            this.data = data || [];
24371            this._bindEvents();
24372        };
24373
24374
24375        CheckboxGroup.prototype._bindEvents = function () {
24376            this._onChange();
24377        };
24378
24379        CheckboxGroup.prototype._onChange = function () {
24380            var self = this;
24381            var data = self.data;
24382            var i;
24383            var len = data.length;
24384            var $checkbox;
24385
24386            for (i = 0; i < len; i++) {
24387                $checkbox = $(data[i].name);
24388
24389                if ($checkbox.length <= 0 || $checkbox.get(0).type !== 'checkbox') {
24390                    continue;
24391                }
24392
24393                $checkbox.on(
24394                    'change', {
24395                        $checkbox: $checkbox,
24396                        outsiders: data[i].outsider
24397                    },
24398                    self._toggle
24399                );
24400
24401                $checkbox.trigger('change');
24402            }
24403        };
24404
24405        CheckboxGroup.prototype._toggle = function (e) {
24406            var outsiders = e.data.outsiders;
24407            var $checkbox = e.data.$checkbox;
24408            var $outsiders = $checkbox.filter(outsiders);
24409            var $base = $checkbox.not(outsiders);
24410
24411            if ($base.filter(':checked').length) {
24412                enquete.checkbox.disable($outsiders);
24413            } else if ($outsiders.filter(':checked').length) {
24414                enquete.checkbox.disable($base);
24415            } else {
24416                enquete.checkbox.enable($checkbox);
24417            }
24418        };
24419
24420        return new CheckboxGroup();
24421    }(ENQUETE));
24422
24423    $(function () {
24424        var enqueteData = win.enqueteData || {};
24425
24426        if (doc.documentElement.classList.contains('theme-extendedSurvey') && document.getElementById(idNames.richSurvey)) {
24427            ENQUETE.toggleDisplay.init(enqueteData.displaySwitch);
24428            ENQUETE.ctrlTxtBox.init(enqueteData.otherPlusText);
24429            ENQUETE.checkMaxLimit.init(enqueteData.maxChecked);
24430            ENQUETE.checkboxGroup.init(enqueteData.outsider);
24431        } else if (document.getElementById(idNames.richSurvey) || document.getElementById(idNames.survey)) {
24432            ENQUETE.init();
24433            ENQUETE.required.init(enqueteData.required);
24434            ENQUETE.toggleDisplay.init(enqueteData.displaySwitch);
24435            ENQUETE.ctrlTxtBox.init(enqueteData.otherPlusText);
24436            ENQUETE.checkMaxLimit.init(enqueteData.maxChecked);
24437            ENQUETE.checkboxGroup.init(enqueteData.outsider);
24438            ENQUETE.form.init();
24439        } else {
24440            return;
24441        }
24442    });
24443
24444    win.KeyenceEnquete = ENQUETE;
24445}(this, this.document, this.jQuery, (function () {
24446    'use strict';
24447
24448    return {
24449        isArray: function (value) {
24450            return Object.prototype.toString.call(value) === '[object Array]';
24451        }
24452    };
24453}())));
24454/* end Enquete Common-------------------------------------------------------- */
24455
24456/* cartscript.js
24457-------------------------------------------------------- */
24458
24459function kpi_consoleLog(arg) {
24460    if (kpi_debug) {
24461        if (kpi_ua.Webkit) {
24462            console.log(arg);
24463        }
24464    }
24465}
24466
24467function kpi_setCrossDomainCookie(key, value, expire, isSecure) {
24468    var path = '/';
24469    var domain = kpi_cookiesettings.cookieDomain;
24470
24471    $.cookie('kpi_' + key, value, {
24472        expire: expire,
24473        path: path,
24474        domain: domain,
24475        secure: isSecure
24476    }
24477    );
24478}
24479
24480function kpi_getCrossDomainCookie(key) {
24481    return $.cookie('kpi_' + key);
24482}
24483
24484/**
24485 * cartObject
24486 * @type {Object}
24487 */
24488var kpi_cartObj = {
24489    DEFINE_CART_MODE_NOTHING: 0,
24490    DEFINE_CART_MODE_MINIMUM: 1,
24491    DEFINE_CART_MODE_MAXIMUM: 2,
24492    cartStatus: 0,
24493    initFlg: true,
24494    initMaxDisplayOfCart: false,
24495    initCartMode: 0,
24496    warning: false,
24497    amount: 0,
24498    maxNum: 0,
24499    fileSize: 0,
24500    isSoftware: false,
24501    isCad: false,
24502    severErrorMsg: kpi_translation.ServerConnectErrorMessage,
24503    cartAssetInfo: [],
24504    $body: null,
24505    $addToListJObj: null,
24506    $downloadListJObj: null,
24507    $downloadListOpenerJObj: null,
24508    $downloadListContentJObj: null,
24509    $downloadWindowOpenButtonJObj: null,
24510    $downloadListErrorMessageJObj: null,
24511    $DownloadListAmountCountJObj: null,
24512    $DownloadListAmountLimitJObj: null,
24513    $DownloadListTotalFileSizeJObj: null,
24514    $DownloadListTitleButtonJObj: null,
24515    $DownloadListLicenseSoftwareJObj: null,
24516    $DownloadListLicenseCadJObj: null,
24517    $DownloadListProgressButtonJObj: null,
24518    downloadListCartObjects: [],
24519    downloadListCarousel: null,
24520    viewListObjects: ['table.DefaultViewTable', 'table.ListViewTable', 'table.ThumbnailViewTable'],
24521    hasAddToList: 0,
24522    init: function () {
24523        this._initAjaxSetup();
24524
24525        // cacheing $ object
24526        this.$body = $('body');
24527        this.$addToListJObj = $('.AddToList');
24528        this.$downloadListJObj = ($('#DownloadList').length && $('#js-downloadListPanel-wrapper').length) ?
24529            $('#js-downloadListPanel-wrapper') :
24530            $('#DownloadList');
24531        this._initLegacyHtml();
24532        this._initHtml();
24533        this.$downloadListOpenerJObj = $('#DownloadListOpenerWrapper');
24534        this.$downloadListContentJObj = $('#DownloadListContent');
24535        this.$downloadListErrorMessageJObj = $('#DownloadListErrorMessage');
24536        this.$DownloadListAmountCountJObj = $('#DownloadListAmountCount, .js-downloadListPanel-amountCount');
24537        this.$DownloadListAmountLimitJObj = $('#DownloadListAmountLimit');
24538        this.$DownloadListTotalFileSizeJObj = $('#DownloadListTotalFileSize, .js-downloadListPanel-totalFileSize');
24539        this.$DownloadListTitleButtonJObj = $('#DownloadListTitleButton');
24540        this.$DownloadListLicenseSoftwareJObj = $('#DownloadListLicenseSoftware');
24541        this.$DownloadListLicenseCadJObj = $('#DownloadListLicenseCad');
24542        this.$DownloadListProgressButtonJObj = $('#DownloadListProgressButton');
24543        this.downloadListCartObjects = [];
24544
24545        if (!this.$downloadListJObj.length) {
24546            this.$DownloadListLicenseSoftwareJObj.checkbox({
24547                // view: true
24548                uiClass: 'CustomCheckbox',
24549                labelClass: 'UIElm-check-label',
24550                checkedClass: 'checked',
24551                disabledClass: 'disabled'
24552            });
24553            this.$DownloadListLicenseSoftwareJObj.checkbox('checkOn', this.$DownloadListLicenseSoftwareJObj.attr('id'));
24554            this.$DownloadListLicenseCadJObj.checkbox({
24555                // view: true
24556                uiClass: 'CustomCheckbox',
24557                labelClass: 'UIElm-check-label',
24558                checkedClass: 'checked',
24559                disabledClass: 'disabled'
24560            });
24561            this.$DownloadListLicenseCadJObj.checkbox('checkOn', this.$DownloadListLicenseCadJObj.attr('id'));
24562        }
24563
24564        this._addCssEffect();
24565
24566        this.initMaxDisplayOfCart = this._isInitOfAddToList();
24567        this.initCartMode = this.cookieCtrl().getCartMode();
24568    },
24569    /**
24570     *
24571     * @return {Boolean} Move to AddToList.
24572     * @private
24573     */
24574    _isInitOfAddToList: function () {
24575        var h = this.cookieCtrl().getHasAddToList();
24576        var downloadList = document.getElementById('JSSearchDownloadList') ?
24577            document.getElementById('JSSearchDownloadList') :
24578            document.getElementById('js-loadAssets');
24579
24580        if (downloadList) {
24581            this.cookieCtrl().setHasAddToList('1');
24582
24583            if (h === '0') {
24584                return true;
24585            }
24586        } else {
24587            this.cookieCtrl().setHasAddToList('0');
24588        }
24589
24590        return false;
24591    },
24592    addCart: function (assetId, seriesId, productId, addButtonId) {
24593        $.ajax({
24594            url: kpi_cartsettings.cartApiUrl + kpi_cartsettings.cartApiMethodAddCart,
24595            data: {
24596                assetId: assetId,
24597                seriesId: seriesId,
24598                productId: productId
24599            },
24600            timeout: 10000,
24601            success: function (data) {
24602                if (data.errorFlg === '0') {
24603                    var d = {
24604                        assetId: data.assetId,
24605                        assetName: data.assetName,
24606                        assetSize: data.assetSize,
24607                        assetType: data.assetType,
24608                        thumbnail: data.thumbnail
24609                    };
24610                    var tmpObj = [d];
24611
24612                    $.each(kpi_cartObj.cartAssetInfo, function (i, item) {
24613                        tmpObj.push(item);
24614                    });
24615                    kpi_cartObj.cartAssetInfo = tmpObj;
24616                    kpi_cartObj.amount++;
24617
24618                    kpi_cartObj.fileSize = parseInt(kpi_cartObj.fileSize) + parseInt(data.assetSize);
24619
24620                    kpi_cartObj._updateInfo();
24621                    kpi_cartObj.$downloadListContentJObj.find('.BasicCarousel').find('li').eq(0).css('display', 'none').fadeIn(300);
24622                    $('.AddToList').removeClass('IsWaiting');
24623                } else {
24624                    kpi_cartObj.removeCart(addButtonId);
24625                    $('.AddToList').removeClass('IsWaiting');
24626                }
24627
24628                // debug
24629                var kpi_assetElementLength = 0;
24630
24631                kpi_assetElementLength = data.length;
24632                $.each(data, function (i, key) {
24633                });
24634            },
24635            complete: function (data) {
24636            },
24637            error: function () {
24638            }
24639        });
24640    },
24641    removeCart: function (assetId) {
24642        var that = this;
24643
24644        $.ajax({
24645            url: kpi_cartsettings.cartApiUrl + kpi_cartsettings.cartApiMethodRemoveCart,
24646            data: {'assetId': assetId
24647            },
24648            success: function (data) {
24649                if (data.errorFlg === '0') {
24650                    // delete cartAssetInfo
24651                    $.each(kpi_cartObj.cartAssetInfo, function (i) {
24652                        if (this.assetId == assetId) {
24653                            that.fileSize -= this.assetSize;
24654                            kpi_cartObj.amount--;
24655                            delete kpi_cartObj.cartAssetInfo[i];
24656                            kpi_cartObj.cartAssetInfo.splice([i], 1);
24657                            $('#' + assetId).removeClass('Disabled').attr('disabled', false);
24658
24659                            return false;
24660                        }
24661                    });
24662                } else {
24663                }
24664            },
24665            complete: function (data) {
24666                kpi_cartObj._updateInfo();
24667            },
24668            error: function () {
24669            }
24670        });
24671    },
24672    removeAllCart: function () {
24673        $.ajax({
24674            url: kpi_cartsettings.cartApiUrl + kpi_cartsettings.cartApiMethodRemoveAllCart,
24675            success: function (data) {
24676                if (data.errorFlg === '0') {
24677                    kpi_cartObj.amount = 0;
24678                    kpi_cartObj.cartAssetInfo = [];
24679                } else {
24680                    kpi_cartObj.displayErrorMsg();
24681                }
24682            },
24683            complete: function (data) {
24684                kpi_cartObj._updateInfo();
24685            },
24686            error: function () {
24687                kpi_cartObj.displayErrorMsg();
24688            }
24689        });
24690    },
24691    getAllAssetInfo: function () {
24692        $.ajax({
24693            url: kpi_cartsettings.cartApiUrl + kpi_cartsettings.cartApiMethodAllAssetInfo,
24694            timeout: 30000,
24695            cache: false,
24696            success: function (data) {
24697                var kpi_assetElementLength = 0;
24698
24699                kpi_assetElementLength = data.length;
24700
24701                var count = data['count'];
24702                var maxNum = parseInt(data['maxCount']);
24703                var hasSoft = data['hasSoft'];
24704                var hasCad = data['hasCad'];
24705                var totalSize = data['totalSize'];
24706
24707                kpi_cartObj.maxNum = maxNum;
24708                kpi_cartObj.amount = parseInt(count);
24709                kpi_cartObj.isSoftware = hasSoft;
24710                kpi_cartObj.isCad = hasCad;
24711                kpi_cartObj.fileSize = totalSize;
24712
24713
24714                kpi_cartObj._displayAlertCtrl().off();
24715
24716                if (0 < count) {
24717                    // asset list
24718                    $.each(data['assetInfo'], function (i, key) {
24719                        var d = {
24720                            assetId: key.assetId,
24721                            assetName: key.assetName,
24722                            assetSize: key.assetSize,
24723                            assetType: key.assetType,
24724                            thumbnail: key.thumbnail,
24725                            seriesId: key.seriesId,
24726                            modelId: key.modelId
24727                        };
24728
24729                        kpi_cartObj.cartAssetInfo.unshift(d);
24730                    });
24731                }
24732            },
24733            complete: function (data) {
24734                kpi_cartObj._updateInfo();
24735            },
24736            error: function () {
24737            }
24738        });
24739    },
24740    getServerErrorMsg: function () {
24741        // Error Msg
24742        $.ajax({
24743            url: kpi_cartsettings.cartApiUrl + kpi_cartsettings.cartApiMethodServerErrorMsg,
24744            cache: true,
24745            success: function (data) {
24746                if (data.errorFlg === '0') {
24747                    kpi_cartObj.severErrorMsg = data['errorMsg'];
24748                }
24749            },
24750            error: function () {
24751            }
24752
24753        });
24754    },
24755    displayErrorMsg: function () {
24756        alert(kpi_cartObj.severErrorMsg);
24757    },
24758    _initAjaxSetup: function () {
24759        $.ajaxSetup({
24760            type: 'GET',
24761            dataType: 'json',
24762            timeout: kpi_usersettings.AjaxTimeoutSeconds
24763        });
24764    },
24765    _displayAlertCtrl: function () {
24766        var that = this;
24767
24768        return {
24769            on: function () {
24770                that.$downloadListErrorMessageJObj.html('<div id="DownloadListErrorMessageInner"><p><span class="Asterrisk">*</span>' + kpi_translation.CartLimitErrorMsg + '</p></div>').slideDown(kpi_usersettings.CartOCSpd, kpi_usersettings.CartSlideEasing);
24771                that._changGroupDisabled(true);
24772                that.warning = true;
24773            },
24774            off: function () {
24775                that.$downloadListErrorMessageJObj.slideUp(kpi_usersettings.CartOCSpd, kpi_usersettings.CartSlideEasing);
24776                that._changGroupDisabled(false);
24777                that.warning = false;
24778            }
24779        };
24780    },
24781    callbackFromLicenseModal: function () {
24782        var $softAgree = $('.js-downloadListPanel-softwareAgree input');
24783        var $cadAgree = $('.js-downloadListPanel-cadAgree input');
24784        var fn = {};
24785
24786        if (!$('#js-downloadListPanel-wrapper').length) {
24787            return;
24788        }
24789
24790        fn.closeModal = function () {
24791            $('.js-downloadListPanel-modalCloseButton').trigger('click');
24792            kpi_cartObj._initAjaxSetup();
24793        };
24794
24795        fn.clickAgree = function () {
24796            $(document).on('click', '.js-agreeLicense-button', function () {
24797                if ($('.js-downloadListPanel-softwareModal').length) {
24798                    $softAgree.prop('checked', true);
24799                } else if ($('.js-downloadListPanel-cadModal').length) {
24800                    $cadAgree.prop('checked', true);
24801                }
24802                kpi_cartObj._changeProgressButton();
24803                kpi_cartObj._setLicenseCookie();
24804                fn.closeModal();
24805            });
24806        };
24807
24808        fn.clickDisagree = function () {
24809            $(document).on('click', '.js-disagreeLicense-button', function () {
24810                if ($('.js-downloadListPanel-softwareModal').length) {
24811                    $softAgree.prop('checked', false);
24812                } else if ($('.js-downloadListPanel-cadModal').length) {
24813                    $cadAgree.prop('checked', false);
24814                }
24815                kpi_cartObj._changeProgressButton();
24816                kpi_cartObj._setLicenseCookie();
24817                fn.closeModal();
24818            });
24819        };
24820
24821        fn.clickAgree();
24822        fn.clickDisagree();
24823    },
24824    callbackFromDLProcessLicenseModal: function () {
24825        var $softAgree = $('.js-downloadList-softwareAgree input');
24826        var $cadAgree = $('.js-downloadList-cadAgree input');
24827        var fn = {};
24828
24829        fn.closeModal = function () {
24830            $('.js-downloadListPanel-modalCloseButton').trigger('click');
24831            kpi_cartObj._initAjaxSetup();
24832        };
24833
24834        fn.clickAgree = function () {
24835            $(document).on('click', '.js-agreeLicense-button', function () {
24836                if ($('.js-downloadListPanel-softwareModal').length) {
24837                    $softAgree.prop('checked', true);
24838                } else if ($('.js-downloadListPanel-cadModal').length){
24839                    $cadAgree.prop('checked', true);
24840                }
24841
24842                kpi_cartObj._changeUserRegistProgressButton();
24843                fn.closeModal();
24844            });
24845        };
24846
24847        fn.clickDisagree = function () {
24848            $(document).on('click', '.js-disagreeLicense-button', function () {
24849                if ($('.js-downloadListPanel-softwareModal').length) {
24850                    $softAgree.prop('checked', false);
24851                } else if ($('.js-downloadListPanel-cadModal').length) {
24852                    $cadAgree.prop('checked', false);
24853                }
24854                kpi_cartObj._changeUserRegistProgressButton();
24855                fn.closeModal();
24856            });
24857        };
24858
24859        fn.clickAgree();
24860        fn.clickDisagree();
24861    },
24862    callbackFromModalWindow: function (id) {
24863        if (typeof id !== 'undefined' && id.length) {
24864            var $agree = $('#LicenseAgree');
24865            var $disagree = $('#LicenseDisagree');
24866            var $close = $('#cboxClose');
24867            var $target = null;
24868
24869            switch (id) {
24870            case 'DownloadListLicenseSoftware':
24871                var $target = this.$DownloadListLicenseSoftwareJObj;
24872
24873                break;
24874            case 'DownloadListLicenseCad':
24875                var $target = this.$DownloadListLicenseCadJObj;
24876
24877                break;
24878
24879            default:
24880            }
24881
24882            $agree.on('click', function () {
24883                if (!$target.prop('checked')) {
24884                    if (kpi_cartObj.$downloadListJObj.length) {
24885                        $target.prop('checked', true);
24886                        kpi_cartObj._changeProgressButton();
24887                    } else {
24888                        $target.checkbox('checkOn', $target.attr('id'));
24889                        kpi_cartObj._changeUserRegistProgressButton();
24890                    }
24891                }
24892
24893                $close.trigger('click');
24894                kpi_cartObj._initAjaxSetup();
24895
24896                return false;
24897            });
24898            $disagree.on('click', function () {
24899                if ($target.prop('checked')) {
24900                    if (kpi_cartObj.$downloadListJObj.length) {
24901                        $target.prop('checked', false);
24902                        kpi_cartObj._changeProgressButton();
24903                    } else {
24904                        $target.checkbox('checkOff', $target.attr('id'));
24905                        kpi_cartObj._changeUserRegistProgressButton();
24906                    }
24907                }
24908
24909                $('#cboxClose').trigger('click');
24910                kpi_cartObj._initAjaxSetup();
24911
24912                return false;
24913            });
24914        }
24915    },
24916    _changGroupDisabled: function (isForce) {
24917        $.each(this.viewListObjects, function () {
24918            var $t = $(this.toString());
24919
24920            if ($t.length) {
24921                if (isForce) {
24922                    $t.addClass('DisabledAllButton');
24923                } else {
24924                    $t.removeClass('DisabledAllButton');
24925                }
24926            }
24927        });
24928    },
24929    _isGroupDisabled: function () {
24930        var that = this;
24931        var ret = false;
24932
24933        $.each(that.viewListObjects, function () {
24934            var $t = $(this.toString());
24935
24936            if ($t.length) {
24937                if ($t.hasClass('DisabledAllButton')) {
24938                    ret = true;
24939
24940                    return false;
24941                }
24942            }
24943        });
24944        that = null;
24945
24946        return ret;
24947    },
24948
24949    _deleteAddToListDisabled: function () {
24950        this._changGroupDisabled(false);
24951        $('.AddToList[id^="AS_"]').removeClass('Disabled');
24952        $('.AddToList[id^="AS_"]:not(.is-locked)').attr('disabled', false);
24953    },
24954
24955    _updateInfo: function () {
24956        var cookieSoft, cookieCad;
24957
24958        this.$DownloadListAmountCountJObj.text(this.amount);
24959        this.$DownloadListAmountLimitJObj.text(this.maxNum);
24960        this.$DownloadListTotalFileSizeJObj.text(this._getFilesize());
24961        // alert
24962        if (this.amount >= this.maxNum) {
24963            this._displayAlertCtrl().on();
24964        } else {
24965            this._displayAlertCtrl().off();
24966        }
24967
24968        var isSoftware = false;
24969        var isCad = false;
24970
24971        $.each(this.cartAssetInfo, function () {
24972            var $t = $('#' + this.assetId);
24973
24974            if ($t.length && !$t.hasClass('Disabled')) {
24975                $t.addClass('Disabled').attr('disabled', true);
24976            }
24977
24978            switch (this.assetType) {
24979            case '1':isSoftware = true; break;
24980            case '2':isCad = true; break;
24981            default:
24982            }
24983        });
24984
24985        this.isSoftware = isSoftware;
24986        this.isCad = isCad;
24987
24988        if (!this.isSoftware) {
24989            this.$DownloadListLicenseSoftwareJObj.parents('li').hide();
24990            $('.js-downloadListPanel-softwareAgree').hide();
24991        } else {
24992            this.$DownloadListLicenseSoftwareJObj.parents('li').show();
24993            $('.js-downloadListPanel-softwareAgree').show();
24994        }
24995        if (!this.isCad) {
24996            this.$DownloadListLicenseCadJObj.parents('li').hide();
24997            $('.js-downloadListPanel-cadAgree').hide();
24998        } else {
24999            this.$DownloadListLicenseCadJObj.parents('li').show();
25000            $('.js-downloadListPanel-cadAgree').show();
25001        }
25002        if (this.isSoftware || this.isCad) {
25003            this.$DownloadListProgressButtonJObj.closest('div.OperationCol').children('dl').show();
25004            $('.js-downloadListPanel-license').show();
25005        } else {
25006            this.$DownloadListProgressButtonJObj.closest('div.OperationCol').children('dl').hide();
25007            $('.js-downloadListPanel-license').hide();
25008        }
25009
25010        if (this.initFlg) {
25011            var w = this.cookieCtrl().getAgreement();
25012
25013            cookieSoft = w.charAt(0);
25014            cookieCad = w.charAt(2);
25015
25016            if (cookieSoft === '1') {
25017                this.$DownloadListLicenseSoftwareJObj.attr('checked', true);
25018                $('.js-downloadListPanel-softwareAgree input').attr('checked', true);
25019                $('.js-downloadListPanel-downloadButton').attr('aria-disabled', false);
25020                $('.js-downloadListPanel-downloadButton').attr('tabindex', 0);
25021            }
25022
25023            if (cookieCad === '1') {
25024                this.$DownloadListLicenseCadJObj.attr('checked', true);
25025                $('.js-downloadListPanel-cadAgree input').attr('checked', true);
25026                $('.js-downloadListPanel-downloadButton').attr('aria-disabled', false);
25027                $('.js-downloadListPanel-downloadButton').attr('tabindex', 0);
25028            }
25029
25030            if (!isSoftware) {
25031                cookieSoft = '1';
25032            }
25033
25034            if (!isCad) {
25035                cookieCad = '1';
25036            }
25037
25038            this.cookieCtrl().setAgreement(cookieSoft, cookieCad);
25039        }
25040
25041        // cart status
25042        if (this.amount < 1) {
25043            this.fileSize = 0;
25044            this._changeCartMode(this.DEFINE_CART_MODE_NOTHING);
25045            this._deleteAddToListDisabled();
25046        }
25047
25048        if (0 < this.amount) {
25049            if (this.initFlg) {
25050                if (this.initMaxDisplayOfCart || this.initCartMode == this.DEFINE_CART_MODE_NOTHING) {
25051                    if (this.initCartMode > 0) {
25052                        this._changeCartMode(this.initCartMode);
25053                    } else {
25054                        this._changeCartMode(this.DEFINE_CART_MODE_MAXIMUM);
25055                    }
25056                } else {
25057                    this._changeCartMode(this.initCartMode);
25058                }
25059            } else {
25060                this._changeCartMode(this.DEFINE_CART_MODE_MAXIMUM);
25061            }
25062        }
25063
25064        var kpi_balloon = $('.Balloon');
25065
25066        if (kpi_balloon.is(':visible')) {
25067            kpi_balloon.stop(true, true).fadeOut(kpi_usersettings.DeleteBtnFadeOutSpd);
25068        }
25069
25070        this._changeProgressButton();
25071
25072        if (this.initFlg) {
25073            if (cookieSoft == '0' || cookieCad == '0') {
25074                if (!this.$DownloadListProgressButtonJObj.hasClass('Disabled')) {
25075                    this.$DownloadListProgressButtonJObj.addClass('Disabled');
25076                }
25077                if ($('.js-downloadListPanel-downloadButton').attr('aria-disabled') === 'false') {
25078                    $('.js-downloadListPanel-downloadButton').attr('aria-disabled', true);
25079                    $('.js-downloadListPanel-downloadButton').attr('tabindex', -1);
25080                }
25081            }
25082        }
25083
25084        this.initFlg = false;
25085    },
25086    _changeCartMode: function (mode) {
25087        var that = this;
25088        var legacyId = 'DownloadList';
25089        var legacyFlag = null;
25090        var $largePanel = $('#js-downloadListPanel-largeGroup');
25091        var $smallPanel = $('#js-downloadListPanel-smallGroup');
25092
25093        if (this.$downloadListJObj.attr('id') === legacyId) {
25094            legacyFlag = true;
25095        }
25096
25097        this.$body.removeClass('DownloadListClose').removeClass('DownloadListOpen');
25098
25099        switch (mode) {
25100        case this.DEFINE_CART_MODE_NOTHING: // nothing
25101            this.cartStatus = this.DEFINE_CART_MODE_NOTHING;
25102
25103            if (legacyFlag) {
25104                if (this.$downloadListContentJObj.is(':visible')) {
25105                    this.$downloadListContentJObj.hide();
25106                }
25107
25108                this.$downloadListJObj.slideUp(kpi_usersettings.CartOCSpd, kpi_usersettings.CartSlideEasing, function () {
25109                    that.cookieCtrl().setCartMode(this.DEFINE_CART_MODE_NOTHING);
25110                });
25111            } else {
25112                $smallPanel.attr('aria-hidden', true);
25113                $largePanel.attr('aria-hidden', true);
25114                that.cookieCtrl().setCartMode(this.DEFINE_CART_MODE_NOTHING);
25115            }
25116
25117            break;
25118        case this.DEFINE_CART_MODE_MINIMUM: // Min
25119            this.cartStatus = this.DEFINE_CART_MODE_MINIMUM;
25120
25121            if (legacyFlag) {
25122                // 0→1
25123                if (this.$downloadListJObj.is(':hidden')) {
25124                    this.$downloadListOpenerJObj.hide().find('#DownloadListOpenerAmountCount em').text(this.$DownloadListAmountCountJObj.text());
25125                    this.$downloadListJObj.hide();
25126                    this.$downloadListOpenerJObj.slideDown(kpi_usersettings.CartOCSpd, kpi_usersettings.CartSlideEasing, function () {
25127                        that.cookieCtrl().setCartMode(that.DEFINE_CART_MODE_MINIMUM);
25128                        that.$body.addClass('DownloadListClose');
25129                    });
25130                } else {
25131                    // 2→1
25132                    this.$downloadListOpenerJObj.hide().find('#DownloadListOpenerAmountCount em').text(this.$DownloadListAmountCountJObj.text());
25133                    this.$downloadListJObj.slideUp(kpi_usersettings.CartOCSpd, kpi_usersettings.CartSlideEasing, function () {
25134                        that.cookieCtrl().setCartMode(that.DEFINE_CART_MODE_MINIMUM);
25135                        that.$body.addClass('DownloadListClose');
25136                    });
25137                    this.$downloadListOpenerJObj.slideDown(kpi_usersettings.CartOCSpd, kpi_usersettings.CartSlideEasing, function () {
25138                        that.cookieCtrl().setCartMode(that.DEFINE_CART_MODE_MINIMUM);
25139                        that.$body.addClass('DownloadListClose');
25140                    });
25141                }
25142            } else {
25143                $smallPanel.removeAttr('aria-hidden');
25144                $largePanel.attr('aria-hidden', true);
25145                that.cookieCtrl().setCartMode(that.DEFINE_CART_MODE_MINIMUM);
25146            }
25147
25148            break;
25149        case this.DEFINE_CART_MODE_MAXIMUM: // Max
25150            this.cartStatus = this.DEFINE_CART_MODE_MAXIMUM;
25151
25152            // 0→2
25153            if (legacyFlag) {
25154                if (this.$downloadListJObj.is(':hidden')) {
25155                    this.$downloadListOpenerJObj.hide().find('#DownloadListOpenerAmountCount em').text(this.$DownloadListAmountCountJObj.text());
25156                    this.$downloadListContentJObj.show();
25157                    this.$downloadListJObj.slideDown(kpi_usersettings.CartOCSpd, kpi_usersettings.CartSlideEasing, function () {
25158                        that.$body.addClass('DownloadListOpen');
25159                        that.$DownloadListTitleButtonJObj.find('a').html(kpi_translation.Close);
25160                    });
25161                } else {
25162                    // 1→2
25163                    this.$downloadListContentJObj.slideDown(kpi_usersettings.CartOCSpd, kpi_usersettings.CartSlideEasing, function () {
25164                        that.$body.addClass('DownloadListOpen');
25165                        that.$DownloadListTitleButtonJObj.find('a').html(kpi_translation.Close);
25166                    });
25167                }
25168            } else {
25169                $largePanel.removeAttr('aria-hidden');
25170                $smallPanel.attr('aria-hidden', true);
25171            }
25172
25173            this.cookieCtrl().setCartMode(this.DEFINE_CART_MODE_MAXIMUM);
25174
25175            break;
25176        default:
25177        }
25178
25179        $('.box_utility_02').hide();
25180
25181        this._updateCartCarousel();
25182        this._updateCartList();
25183    },
25184
25185    cookieCtrl: function () {
25186        var that = this;
25187
25188        return {
25189            getAgreement: function () {
25190                var v = kpi_getCrossDomainCookie(kpi_cookiesettings.cookieNameDownloadAgreement);
25191
25192                if (v === null) {
25193                    that.cookieCtrl().setAgreement(1, 1);
25194                }
25195
25196                return kpi_getCrossDomainCookie(kpi_cookiesettings.cookieNameDownloadAgreement);
25197            },
25198            setAgreement: function (isSoftAgree, isCadAgree) {
25199                var value = (isSoftAgree) ? isSoftAgree : '0';
25200
25201                value += ',';
25202                value += (isCadAgree) ? isCadAgree : '0';
25203                kpi_setCrossDomainCookie(kpi_cookiesettings.cookieNameDownloadAgreement, value, 0, false);
25204            },
25205            getCartMode: function () {
25206                var v = kpi_getCrossDomainCookie(kpi_cookiesettings.cookieNameCartMode);
25207
25208                if (v === null) {
25209                    that.cookieCtrl().setCartMode(that.DEFINE_CART_MODE_MINIMUM);
25210                }
25211
25212                return parseInt(kpi_getCrossDomainCookie(kpi_cookiesettings.cookieNameCartMode));
25213            },
25214            setCartMode: function (cartMode) {
25215                kpi_setCrossDomainCookie(kpi_cookiesettings.cookieNameCartMode, cartMode, 0, false);
25216            },
25217            getHasAddToList: function () {
25218                var v = kpi_getCrossDomainCookie(kpi_cookiesettings.cookieNameHasAddToList);
25219
25220                if (v === null) {
25221                    that.cookieCtrl().setHasAddToList('0');
25222                }
25223
25224                return kpi_getCrossDomainCookie(kpi_cookiesettings.cookieNameHasAddToList);
25225            },
25226            setHasAddToList: function (val) {
25227                kpi_setCrossDomainCookie(kpi_cookiesettings.cookieNameHasAddToList, val, 0, false);
25228            }
25229        };
25230    },
25231
25232    _checkSupportsTemp: function () {
25233        return 'content' in document.createElement('template');
25234    },
25235
25236    _createNodeClone: function (template, selectorForIE) {
25237        if (this._checkSupportsTemp() === true) {
25238            return document.importNode(template.content, true);
25239        }
25240
25241        return document.importNode(template.querySelector(selectorForIE), true); // For IE
25242    },
25243
25244    _updateCartList: function () {
25245        var fragment = document.createDocumentFragment();
25246        var cartListTemp = document.getElementById('JSCartAssetsTemplate');
25247        var cartList = document.getElementById('js-downloadListPanel-cartList');
25248        var self = this;
25249
25250        if (!cartListTemp || !cartList) {
25251            return;
25252        }
25253
25254        $(cartList).empty();
25255        kpi_cartObj.cartAssetInfo.forEach(function (items) {
25256            var cartListNodeClone = self._createNodeClone(cartListTemp, 'li');
25257            var assetImage = cartListNodeClone.querySelector('.js-downloadListPanel-assetImage');
25258            var deleteButton = cartListNodeClone.querySelector('.js-downloadListPanel-deleteButton');
25259            var assetName = cartListNodeClone.querySelector('.js-downloadListPanel-assetName');
25260
25261            if (assetImage) {
25262                assetImage.src = window.kpi_domainSettings.originalDomain + window.kpi_cartsettings.thumbnailPath + items.thumbnail;
25263            }
25264
25265            if (deleteButton) {
25266                deleteButton.id = 'delete-' + items.assetId;
25267
25268                $(deleteButton).on('click', function () {
25269                    var id = $(this).attr('id');
25270
25271                    $('#' + id).parents('li').fadeOut(window.kpi_usersettings.CartItemFadeOutSpd, function () {
25272                        kpi_cartObj.removeCart(id.replace('delete-', ''));
25273                    });
25274                });
25275            }
25276
25277            if (assetName) {
25278                assetName.textContent = items.assetName;
25279            }
25280
25281            fragment.appendChild(cartListNodeClone);
25282        });
25283
25284        cartList.append(fragment);
25285        $('.js-downloadListPanel-minimumImage').attr({
25286            src: $('.js-downloadListPanel-assetImage').eq(0).attr('src')
25287        });
25288    },
25289
25290    _updateCartCarousel: function () {
25291        var $carousel = $('#DownloadListContent').find('.BasicCarousel');
25292
25293        if (!$carousel.length) {
25294            return;
25295        }
25296
25297        $(window).on('resize', function () {
25298            $carousel.data('jcarousel').reset();
25299        });
25300
25301        $carousel.jcarousel({
25302            scroll: 10,
25303            size: kpi_cartObj.amount,
25304            animation: kpi_usersettings.FrameCarouselMvSpd,
25305            rtl: false,
25306            itemFallbackDimension: 300,
25307            initCallback: function (carousel) {
25308                if (!this.downloadListCarousel) {
25309                    this.downloadListCarousel = carousel;
25310                }
25311            },
25312            itemLoadCallback: {
25313                onBeforeAnimation: function (carousel, state) {
25314                    if (0 < kpi_cartObj.cartAssetInfo.length && state == 'init') {
25315                        for (var i = carousel.first; i <= kpi_cartObj.amount; i++) {
25316                            if (carousel.has(i)) {
25317                                continue;
25318                            }
25319
25320                            if (i > kpi_cartObj.maxNum) {
25321                                break;
25322                            }
25323                            var itemHtml = '<span class="DeleteButtonWrap">' +
25324                                '<img src="' + kpi_domainSettings.originalDomain + kpi_cartsettings.thumbnailPath + kpi_cartObj.cartAssetInfo[i - 1].thumbnail + '" alt="" data-balloonlabel="' + kpi_cartObj.cartAssetInfo[i - 1].assetName + '">' +
25325                                '<a href="#" class="DeleteButton" id="delete-' + kpi_cartObj.cartAssetInfo[i - 1].assetId + '">' +
25326                                '<img src="' + kpi_domainSettings.originalDomain + '/img/common/btn_delete_s.png" alt="" class="RollOver"></a></span>';
25327
25328                            carousel.add(i, itemHtml);
25329                        }
25330
25331                        // Delete
25332                        $('.DeleteButton', '#DownloadListContent').on('click', function () {
25333                            var id = $(this).attr('id');
25334
25335                            $('#' + id).parents('li').fadeOut(kpi_usersettings.CartItemFadeOutSpd, function () {
25336                                kpi_cartObj.removeCart(id.replace('delete-', ''));
25337                            });
25338
25339                            return false;
25340                        });
25341                    }
25342                },
25343                onAfterAnimation: function (carousel, state) {
25344                    if (state === 'next') {
25345                        $('.jcarousel-next').addClass('jcarousel-next-disabled jcarousel-next-disabled-horizontal').attr('disabled', 'disabled');
25346                    }
25347                }
25348            },
25349            reloadCallback: function (carousel) {
25350            }
25351        });
25352        $carousel.data('jcarousel').reset();
25353    },
25354    _getFilesize: function () {
25355        var d = this.fileSize / 1048576;
25356
25357        return d.toFixed(2);
25358    },
25359    _changeProgressButton: function () {
25360        var _hasSoft;
25361        var _hasCad;
25362        var $legacySoftAgree = this.$DownloadListLicenseSoftwareJObj;
25363        var $legacyCadAgree = this.$DownloadListLicenseCadJObj;
25364
25365        switch (this.cartStatus) {
25366        case this.DEFINE_CART_MODE_MINIMUM:
25367            _hasSoft = $('.js-downloadListPanel-softwareAgree input').prop('checked');
25368            _hasCad =  $('.js-downloadListPanel-cadAgree input').prop('checked');
25369            break;
25370
25371        case this.DEFINE_CART_MODE_MAXIMUM:
25372            _hasSoft = $legacySoftAgree.length ?
25373                $legacySoftAgree.prop('checked') :
25374                $('.js-downloadListPanel-softwareAgree input').prop('checked');
25375            _hasCad = $legacyCadAgree.length ?
25376                $legacyCadAgree.prop('checked') :
25377                $('.js-downloadListPanel-cadAgree input').prop('checked');
25378
25379            if ($legacySoftAgree.parents('li:hidden').length) {
25380                _hasSoft = true;
25381            }
25382
25383            if ($legacyCadAgree.parents('li:hidden').length) {
25384                _hasCad = true;
25385            }
25386            break;
25387        default:
25388        }
25389
25390        if (_hasSoft && _hasCad || !(this.$DownloadListLicenseCadJObj.parents('dl').is(':visible'))) {
25391            if (this.$DownloadListProgressButtonJObj.hasClass('Disabled')) {
25392                this.$DownloadListProgressButtonJObj.removeClass('Disabled');
25393            }
25394        } else {
25395            if (!this.$DownloadListProgressButtonJObj.hasClass('Disabled')) {
25396                this.$DownloadListProgressButtonJObj.addClass('Disabled');
25397            }
25398        }
25399
25400        if (_hasSoft && _hasCad || !($('.js-downloadListPanel-license').is(':visible'))) {
25401            if ($('.js-downloadListPanel-downloadButton').attr('aria-disabled') === 'true') {
25402                $('.js-downloadListPanel-downloadButton').attr('aria-disabled', false);
25403                $('.js-downloadListPanel-downloadButton').attr('tabindex', 0);
25404            }
25405        } else {
25406            $('.js-downloadListPanel-downloadButton').attr('aria-disabled', true);
25407            $('.js-downloadListPanel-downloadButton').attr('tabindex', -1);
25408        }
25409    },
25410    _changeUserRegistProgressButton: function () {
25411        if (this._isDownloadLicenseAgreed(this.$DownloadListLicenseSoftwareJObj, this.$DownloadListLicenseCadJObj)) {
25412            this._changeUserRegistButton().on();
25413        } else {
25414            this._changeUserRegistButton().off();
25415        }
25416    },
25417    _isDownloadLicenseAgreed: function ($SoftwareJObj, $CadJObj) {
25418        var isSoftAgree = true;
25419        var isCadAgree = true;
25420        var c = this.cookieCtrl().getAgreement();
25421
25422        if (c.charAt(0) != '1') {
25423            isSoftAgree = false;
25424        }
25425
25426        if (c.charAt(2) != '1') {
25427            isCadAgree = false;
25428        }
25429
25430        if ($SoftwareJObj && $SoftwareJObj.parent().is(':visible')) {
25431            if ($SoftwareJObj.prop('checked')) {
25432                isSoftAgree = true;
25433            } else {
25434                isSoftAgree = false;
25435            }
25436        } else {
25437            isSoftAgree = true;
25438        }
25439
25440        if ($('.js-downloadList-softwareAgree').is(':visible')) {
25441            if ($('.js-downloadList-softwareAgree input').prop('checked')) {
25442                isSoftAgree = true;
25443            } else {
25444                isSoftAgree = false;
25445            }
25446        } else {
25447            isSoftAgree = true;
25448        }
25449
25450        if ($CadJObj && $CadJObj.parent().is(':visible')) {
25451            if ($CadJObj.prop('checked')) {
25452                isCadAgree = true;
25453            } else {
25454                isCadAgree = false;
25455            }
25456        } else {
25457            isCadAgree = true;
25458        }
25459
25460        if ($('.js-downloadList-cadAgree').is(':visible')) {
25461            if ($('.js-downloadList-cadAgree input').prop('checked')) {
25462                isCadAgree = true;
25463            } else {
25464                isCadAgree = false;
25465            }
25466        } else {
25467            isCadAgree = true;
25468        }
25469
25470        if (isSoftAgree && isCadAgree) {
25471            return true;
25472        } else {
25473            return false;
25474        }
25475    },
25476    _changeUserRegistButton: function () {
25477        var $target = $("[name='login'], [name='directSubmit'], [name='next'], #submit2[name='confirm'], #js-form-btnCheckRegistered, .js-regForm-btnNext, #js-form-autoSignupSwitch, #js-form-autoLoginSwitch, [name='simple
254776'], #js-form-btnCheckMobileRegistered");
25478        var $targetsExcludingRegisterScreenButton = null;
25479        var privacyPolicyAgreementBox = document.querySelector('#as_agreeBoxCheked #agreeAll');
25480
25481        return {
25482            on: function () {
25483                if (!MultiStepForm.isShow(MultiStepForm.Register.$root)) {
25484                    kpi_cartObj._changeUserRegisterButtonActive($target);
25485
25486                    return;
25487                }
25488
25489                if (privacyPolicyAgreementBox) {
25490                    if (privacyPolicyAgreementBox.checked &&
25491                        privacyPolicyAgreementBox.checkVisibility({
25492                            opacityProperty: true,
25493                            contentVisibilityAuto: true,
25494                        })
25495                    ) {
25496                        kpi_cartObj._changeUserRegisterButtonActive($target, true);
25497                        window.changeRegisterProgressButtonActive();
25498                    } else if (privacyPolicyAgreementBox.checked) {
25499                        kpi_cartObj._changeUserRegisterButtonActive($target, true);
25500                    } else {
25501                        $targetsExcludingRegisterScreenButton = $target.filter(function (index, item) {
25502                            if ($(item).hasClass('js-regForm-btnNext') || $(item).hasClass('js-regForm-btnSubmit')) {
25503                                return false;
25504                            }
25505
25506                            return true;
25507                        });
25508
25509                        kpi_cartObj._changeUserRegisterButtonActive($targetsExcludingRegisterScreenButton);
25510                    }
25511                } else {
25512                    kpi_cartObj._changeUserRegisterButtonActive($target);
25513                }
25514            },
25515            off: function () {
25516                $target.closest('.buttonConversion').addClass('is-disabled');
25517                $target.prop('disabled', 'disabled');
25518                $target.attr('data-disabled', true);
25519
25520                $target.each(function () {
25521                    var $wrapper = $(this).parent('.of-inputElement');
25522
25523                    if ($wrapper.length) {
25524                        $wrapper.attr('aria-disabled', true);
25525                    }
25526                });
25527            }
25528        };
25529    },
25530    _changeUserRegisterButtonActive: function ($target, isPrivacyPolicyAgreementBox) {
25531        $target.closest('.buttonConversion').removeClass('is-disabled');
25532        $target.each(function () {
25533            this.removeAttribute('disabled');
25534        });
25535        $target.attr('data-disabled', false);
25536
25537        $target.each(function () {
25538            var $wrapper = $(this).parent('.of-inputElement');
25539
25540            if ($wrapper.length) {
25541                $wrapper.attr('aria-disabled', false);
25542            }
25543
25544            if (($(this).attr('id') === 'js-form-btnCheckMobileRegistered') &&
25545                !window.KeyenceForm.SMSCodeButton.timeIds['js-form-btnCheckMobileRegistered']
25546            ) {
25547                $(this).attr('aria-disabled', false);
25548            }
25549
25550            if (($(this).hasClass('js-regForm-btnNext') || $(this).hasClass('js-regForm-btnSubmit')) &&
25551                !isPrivacyPolicyAgreementBox
25552            ) {
25553                $(this).attr('aria-disabled', false);
25554            }
25555        });
25556    },
25557    _setLicenseCookie: function () {
25558        var isSoftAgree = 0;
25559        var isCadAgree = 0;
25560
25561        // cookie
25562        if (this.$DownloadListLicenseSoftwareJObj.prop('checked')) {
25563            isSoftAgree = 1;
25564        }
25565
25566        if ($('.js-downloadListPanel-softwareAgree input').prop('checked')) {
25567            isSoftAgree = 1;
25568        }
25569
25570        if (this.$DownloadListLicenseCadJObj.prop('checked')) {
25571            isCadAgree = 1;
25572        }
25573
25574        if ($('.js-downloadListPanel-cadAgree input').prop('checked')) {
25575            isCadAgree = 1;
25576        }
25577
25578        this.cookieCtrl().setAgreement(isSoftAgree, isCadAgree);
25579    },
25580    _initHtml: function () {
25581        var fragment = document.createDocumentFragment();
25582        var cartTemp = document.getElementById('JSCartTemplate');
25583        var cartNodeClone = null;
25584        var elems = {};
25585
25586        if (!cartTemp || !($('#DownloadList').length && $('#js-downloadListPanel-wrapper').length)) {
25587            return;
25588        }
25589
25590        cartNodeClone = this._createNodeClone(cartTemp, 'div');
25591        elems.cartTitle = cartNodeClone.querySelectorAll('.js-downloadListPanel-title');
25592        elems.totalLabel = cartNodeClone.querySelectorAll('.js-downloadListPanel-totalLabel');
25593        elems.totalUnit = cartNodeClone.querySelectorAll('.js-downloadListPanel-totalUnit');
25594        elems.license = cartNodeClone.querySelector('.js-downloadListPanel-license');
25595        elems.allRemoveLabel = cartNodeClone.querySelector('.js-downloadListPanel-allRemoveLabel');
25596        elems.cadLabel = cartNodeClone.querySelector('.js-downloadListPanel-cadLabel');
25597        elems.cadModal = cartNodeClone.querySelector('.js-downloadListPanel-cadModal');
25598        elems.cadModalLink = cartNodeClone.querySelector('.js-downloadListPanel-cadModalLink');
25599        elems.softLabel = cartNodeClone.querySelector('.js-downloadListPanel-softwareLabel');
25600        elems.softModal = cartNodeClone.querySelector('.js-downloadListPanel-softwareModal');
25601        elems.softModalLink = cartNodeClone.querySelector('.js-downloadListPanel-softwareModalLink');
25602        elems.downloadLabel = cartNodeClone.querySelector('.js-downloadListPanel-downloadLabel');
25603        elems.downloadButton = cartNodeClone.querySelectorAll('.js-downloadListPanel-downloadButton');
25604        elems.modalCloseButton = cartNodeClone.querySelectorAll('.js-downloadListPanel-modalCloseButton');
25605
25606        if (elems.cartTitle.length) {
25607            elems.cartTitle.forEach(function (items) {
25608                items.textContent = window.kpi_translation.DownloadList + ' ';
25609            });
25610        }
25611
25612        if (elems.totalLabel.length) {
25613            elems.totalLabel.forEach(function (items) {
25614                items.textContent = window.kpi_translation.Total + ' ';
25615            });
25616        }
25617
25618        if (elems.totalUnit.length) {
25619            elems.totalUnit.forEach(function (items) {
25620                items.textContent = window.kpi_translation.MB;
25621            });
25622        }
25623
25624        if (elems.license) {
25625            elems.license.textContent = window.kpi_translation.LicenseAgreement;
25626        }
25627
25628        if (elems.allRemoveLabel) {
25629            elems.allRemoveLabel.textContent = window.kpi_translation.DeleteAllItem;
25630        }
25631
25632        if (elems.cadLabel) {
25633            elems.cadLabel.textContent = window.kpi_translation.CadLicenseAgreementTitle;
25634        }
25635
25636        if (elems.cadModal) {
25637            elems.cadModal.setAttribute('aria-label', window.kpi_translation.CadLicenseAgreementTitle + ' ' + window.kpi_translation.LicenseAgreement);
25638        }
25639
25640        if (elems.softLabel) {
25641            elems.softLabel.textContent = window.kpi_translation.SoftwareLicenseAgreementTitle;
25642        }
25643
25644        if (elems.softModal) {
25645            elems.softModal.setAttribute('aria-label', window.kpi_translation.SoftwareLicenseAgreementTitle + ' ' + window.kpi_translation.LicenseAgreement);
25646        }
25647
25648        if (elems.downloadLabel) {
25649            elems.downloadLabel.textContent = window.kpi_translation.ProgressToDownload;
25650        }
25651
25652        if (elems.downloadButton.length) {
25653            elems.downloadButton.forEach(function (items) {
25654                items.href = window.kpi_domainSettings.originalDomain + window.kpi_cartsettings.downloadUrl;
25655            });
25656        }
25657
25658        if (elems.modalCloseButton.length) {
25659            elems.modalCloseButton.forEach(function (items) {
25660                items.setAttribute('aria-label', window.kpi_translation.Close);
25661            });
25662        }
25663
25664        fragment.appendChild(cartNodeClone);
25665        // this.$downloadListJObj.wrap('<div id="DownloadListWrapper" class="TypeGlobal" />');
25666        this.$downloadListJObj.append(fragment);
25667    },
25668    _initLegacyHtml: function () {
25669        var downloadHtml = [];
25670
25671        if ($('#js-downloadListPanel-wrapper').length) {
25672            return;
25673        }
25674
25675        this.$downloadListJObj.hide().wrap('<div id="DownloadListWrapper" class="TypeGlobal" />');
25676        this.$downloadListJObj.before('<div id="DownloadListOpenerWrapper"><button id="DownloadListOpener" type="button"><span id="DownloadListOpenerAmountCount"><em>-</em>' + kpi_translation.Amount + '</span><span id="DownloadListOpenerSelectedText">' + kpi_translation.Selected + '</span><span id ="DownloadListOpenerText">' + kpi_translation.Open + '</span></button></div>');
25677
25678        downloadHtml.push('<div id="DownloadListTitleWrap">');
25679        downloadHtml.push('<div id="DownloadListTitle">');
25680        downloadHtml.push('<div id="DownloadListTitleInner">');
25681        downloadHtml.push('<p class="Title">' + kpi_translation.DownloadList + '</p>');
25682        downloadHtml.push('<div class="InformationCol">');
25683        downloadHtml.push('<ul class="DownloadItemInformation">');
25684        downloadHtml.push('<li>' + kpi_translation.Amount + '<em><span id="DownloadListAmountCount">12</span> / <span id="DownloadListAmountLimit">20</span> ' + kpi_translation.Selected + '</em></li>');
25685        downloadHtml.push('<li>' + kpi_translation.Total + '<em><span id="DownloadListTotalFileSize">8.88</span> ' + kpi_translation.MB + '</em></li>');
25686        downloadHtml.push('</ul>');
25687        downloadHtml.push('<div id="DownloadListTitleButton" class="Button"><a href="#">
25687' + kpi_translation.Open + '</a></div>');
25688        downloadHtml.push('</div>');
25689        downloadHtml.push('<!-- /div#DownloadListTitleInner --></div>');
25690        downloadHtml.push('<!-- /div#DownloadListTitle --></div>');
25691
25692        downloadHtml.push('<div id="DownloadListErrorMessage" style="display: none;">');
25693        downloadHtml.push('<!-- /div#DownloadListErrorMessage --></div>');
25694
25695        downloadHtml.push('<!-- /div#DownloadListTitleWrap --></div>');
25696
25697        downloadHtml.push('<div id="DownloadListContent" style="display: none;">');
25698        downloadHtml.push('<div id="DownloadListContentInner">');
25699        downloadHtml.push('<div class="ItemCol">');
25700        downloadHtml.push('<ul class="BasicCarousel ImageList Download Horizontal jcarousel-skin-basic">');
25701        downloadHtml.push('</ul>');
25702        downloadHtml.push('<ul class="DeleteAllItem">');
25703        downloadHtml.push('<li class="Link"><a href="#">' + kpi_translation.DeleteAllItem + '</a></li>');
25704        downloadHtml.push('</ul>');
25705        downloadHtml.push('<!-- /div.ItemCol --></div>');
25706        downloadHtml.push('<div class="OperationCol">');
25707        downloadHtml.push('<dl>');
25708        downloadHtml.push('<dt>' + kpi_translation.LicenseAgreement + '</dt>');
25709        downloadHtml.push('<dd>');
25710
25711        downloadHtml.push('<ul>');
25712        downloadHtml.push('<li><label for="DownloadListLicenseCad"><input type="checkbox" value="1" name="CadLicense" id="DownloadListLicenseCad" class="" ><span><a href="' + kpi_domainSettings.searchDomain + kpi_cartsettings.downloadLicenseCad + '" target="_blank" class="Modal" title="Cad License Agreement" id="DownloadListLicenseCadAnchor">' + kpi_translation.CadLicenseAgreementTitle + '</a></span></label></li>');
25713        downloadHtml.push('<li><label for="DownloadListLicenseSoftware"><input type="checkbox" value="1" name="SoftwareLicense" id="DownloadListLicenseSoftware" class="" ><span><a href="' + kpi_domainSettings.searchDomain + kpi_cartsettings.downloadLicenseSoft + '" target="_blank" class="Modal" title="Software License Agreement" id="DownloadListLicenseSoftwareAnchor">' + kpi_translation.SoftwareLicenseAgreementTitle + '</a></span></label></li>');
25714        downloadHtml.push('</ul>');
25715
25716        downloadHtml.push('</dd>');
25717        downloadHtml.push('</dl>');
25718        downloadHtml.push('<div><a href="' + kpi_domainSettings.originalDomain + kpi_cartsettings.downloadUrl + '" class="TextButton Download" id="DownloadListProgressButton"><span class="Inner">' + kpi_translation.ProgressToDownload + '</span></a></div>');
25719        downloadHtml.push('</div>');
25720        downloadHtml.push('<!-- /div#DownloadListContentInner --></div>');
25721        downloadHtml.push('<!-- /div#DownloadListContent --></div>');
25722
25723        this.$downloadListJObj.html(downloadHtml.join(''));
25724    },
25725    _addCssEffect: function () {
25726        var kpi_RollOverSuffix = '_on';
25727
25728        $('body').append('<div class="Balloon"><div class="BalloonInner"><p></p></div><div class="BalloonChip"></div></div>');
25729        var kpi_balloon = $('body').children('.Balloon');
25730
25731        // Close Button Hover
25732        $('.DeleteButton', target).off().on({
25733            mouseenter: function () {
25734                var imgout = $(this).children('img').attr('src');
25735                var imgovr = imgout.replace('.png', kpi_RollOverSuffix + '.png');
25736
25737                $(this).children('img').attr('src', imgovr);
25738            },
25739            mouseleave: function () {
25740                var imgover = $(this).children('img').attr('src');
25741                var imgout = imgover.replace(kpi_RollOverSuffix + '.png', '.png');
25742
25743                $(this).children('img').attr('src', imgout);
25744            }
25745        });
25746
25747        var target = $('#DownloadListContent ul.ImageList');
25748
25749        // Speach Bubble
25750        $('li .DeleteButtonWrap', target).off().on({
25751            'mouseenter': function () {
25752                var balloonlabel = $(this).children().attr('data-balloonlabel');
25753
25754                $('p', kpi_balloon).text(balloonlabel);
25755                var thisoffset = $(this).offset();
25756                var ballontop = thisoffset.top - kpi_balloon.height() - 7;
25757                var ballonleft = thisoffset.left + $(this).width() / 2 - kpi_balloon.width() / 2;
25758
25759                kpi_balloon.css({'top': ballontop, 'left': ballonleft, 'zIndex': '501'});
25760                kpi_balloon.stop(true, true).fadeIn(kpi_usersettings.DeleteBtnFadeInSpd);
25761            },
25762            'mouseleave': function () {
25763                kpi_balloon.stop(true, true).fadeOut(kpi_usersettings.DeleteBtnFadeOutSpd);
25764            }
25765        });
25766    }
25767};
25768
25769// ready
25770$(function () {
25771    var kpi_downloadListJObj = ($('#DownloadList').length && $('#js-downloadListPanel-wrapper').length) ?
25772        $('#js-downloadListPanel-wrapper') :
25773        $('#DownloadList');
25774    var kpi_userRegistSoftware = $('#DownloadListLicenseSoftware');
25775    var kpi_userRegistCad = $('#DownloadListLicenseCad');
25776
25777    var kpi_window = $(window);
25778    var addCartTimer = null;
25779
25780    if (kpi_downloadListJObj.length) {
25781        var kpi_addToListJObj = $('.AddToList');
25782        var kpi_InactiveAddToListJObj = $('.InactiveAddToList');
25783
25784        kpi_cartObj.init();
25785        window.setTimeout(function () {
25786            kpi_cartObj.getAllAssetInfo();
25787        }, 500);
25788
25789        // click on add to list
25790        $(document).on('click', '.AddToList', function (e) {
25791            e.preventDefault();
25792            $t = $(this);
25793
25794            if ($t.hasClass('IsWaiting')) {
25795                return;
25796            }
25797
25798            if (kpi_cartObj.amount < kpi_cartObj.maxNum && !$t.hasClass('Disabled') && !kpi_cartObj._isGroupDisabled()) {
25799                if (!kpi_cartObj.$downloadListContentJObj.find('.BasicCarousel').find('li').eq(0).is(':animated')) {
25800                    if (addCartTimer !== null) {
25801                        clearTimeout(addCartTimer);
25802                    }
25803
25804                    $('.AddToList').not('.Disabled').addClass('IsWaiting');
25805
25806                    addCartTimer = setTimeout(function () {
25807                        kpi_cartObj.addCart($t.attr('id'), $t.attr('data-seriesid'), $t.attr('data-productid'), $t.attr('id'));
25808                    }, 200);
25809                }
25810            }
25811
25812            return false;
25813        });
25814
25815        if (kpi_InactiveAddToListJObj.length) {
25816            kpi_InactiveAddToListJObj.on('click', function () {
25817                return false;
25818            });
25819        }
25820
25821        kpi_cartObj.$DownloadListTitleButtonJObj.find('a').on('click', function () {
25822            if (kpi_cartObj.$downloadListContentJObj.is(':hidden')) {
25823                kpi_cartObj._changeCartMode(kpi_cartObj.DEFINE_CART_MODE_MAXIMUM);
25824            } else {
25825                kpi_cartObj._changeCartMode(kpi_cartObj.DEFINE_CART_MODE_MINIMUM);
25826            }
25827
25828            return false;
25829        });
25830
25831        kpi_cartObj.$downloadListOpenerJObj.find('button').on('click', function () {
25832            if (kpi_cartObj.$downloadListJObj.is(':hidden')) {
25833                kpi_cartObj._changeCartMode(kpi_cartObj.DEFINE_CART_MODE_MAXIMUM);
25834            }
25835
25836            return false;
25837        });
25838
25839        $('.js-downloadListPanel-shrinkButton').on('click', function () {
25840            kpi_cartObj._changeCartMode(kpi_cartObj.DEFINE_CART_MODE_MINIMUM);
25841        });
25842
25843        $('.js-downloadListPanel-spreadButton').on('click', function () {
25844            kpi_cartObj._changeCartMode(kpi_cartObj.DEFINE_CART_MODE_MAXIMUM);
25845        });
25846
25847        // All Delete
25848        kpi_downloadListJObj.find('.DeleteAllItem').find('a, button').on('click', function () {
25849            if (confirm(kpi_translation.DeleteAllItemConfirmMessage)) {
25850                kpi_cartObj.removeAllCart();
25851            }
25852
25853            return false;
25854        });
25855        // ProgressButton
25856        kpi_cartObj.$DownloadListLicenseSoftwareJObj.on('click', function () {
25857            kpi_cartObj._changeProgressButton();
25858            kpi_cartObj._setLicenseCookie();
25859        });
25860        $('.js-downloadListPanel-softwareAgree input').on('change', function () {
25861            kpi_cartObj._changeProgressButton();
25862            kpi_cartObj._setLicenseCookie();
25863        });
25864        kpi_cartObj.$DownloadListLicenseCadJObj.on('click', function () {
25865            kpi_cartObj._changeProgressButton();
25866            kpi_cartObj._setLicenseCookie();
25867        });
25868        $('.js-downloadListPanel-cadAgree input').on('change', function () {
25869            kpi_cartObj._changeProgressButton();
25870            kpi_cartObj._setLicenseCookie();
25871        });
25872
25873        $('#DownloadListProgressButton').on('click', function () {
25874            if ($(this).hasClass('Disabled')) {
25875                return false;
25876            }
25877        });
25878        $('.js-downloadListPanel-softwareLabel, .js-downloadListPanel-cadLabel').on('click', function (e) {
25879            e.preventDefault();
25880        });
25881
25882        var $modalLink = $('#DownloadListLicenseCadAnchor, #DownloadListLicenseSoftwareAnchor');
25883        var $kpi_window = $(window);
25884
25885        kpi_cartObj.callbackFromLicenseModal();
25886
25887        $modalLink.on('click', function (e) {
25888            e.preventDefault();
25889            kpi_openedModalWindow = $(this).attr('href');
25890
25891            $(this).colorbox({
25892                speed: kpi_usersettings.ModalOpenSpd,
25893                initialWidth: '450px',
25894                maxWidth: $kpi_window.width() - 60,
25895                initialHeight: '600px',
25896                maxHeight: $kpi_window.height() - 60,
25897                href: kpi_openedModalWindow + ' #ModalContent',
25898                onOpen: function () { $('#kpi_modalbox').removeClass('ModalLarge'); },
25899                onComplete: function () {
25900                    $('#cboxLoadedContent').find('meta, title, link').remove();
25901                    if ($('#DownloadList').length ||
25902                       ($('#DownloadListLicenseSoftware').length || $('#DownloadListLicenseCad').length)
25903                    ) {
25904                        kpi_cartObj.callbackFromModalWindow($(this).closest('label').find('input').attr('id')); // For Cart
25905                        if ($('#cboxClose').length) {
25906                            $('#cboxClose')[0].focus();
25907                        }
25908                    }
25909                }
25910            });
25911        });
25912
25913        $($('html')[0]).addClass('cartactive');
25914    } else {
25915        // user regist
25916        var isSoftwareUR = kpi_userRegistSoftware.length;
25917        var isCadUR = kpi_userRegistCad.length;
25918
25919        if (isSoftwareUR || isCadUR) {
25920            kpi_cartObj.init();
25921            kpi_cartObj._changeUserRegistProgressButton();
25922            // ProgressButton
25923            if (isSoftwareUR) {
25924                kpi_cartObj.$DownloadListLicenseSoftwareJObj.on('click', function () {
25925                    kpi_cartObj._changeUserRegistProgressButton();
25926                    kpi_cartObj._setLicenseCookie();
25927                    if (kpi_ua.ltIE8 || kpi_ua.ltIE7) {
25928                        return false;
25929                    }
25930                });
25931            }
25932            if (isCadUR) {
25933                kpi_cartObj.$DownloadListLicenseCadJObj.on('click', function () {
25934                    kpi_cartObj._changeUserRegistProgressButton();
25935                    kpi_cartObj._setLicenseCookie();
25936                    if (kpi_ua.ltIE8 || kpi_ua.ltIE7) {
25937                        return false;
25938                    }
25939                });
25940            }
25941        }
25942    }
25943
25944    if ($('.js-downloadList-cadAgree, .js-downloadList-softwareAgree').length) {
25945        kpi_cartObj.callbackFromDLProcessLicenseModal();
25946
25947        $('.js-downloadList-softwareAgree input, .js-downloadList-cadAgree input').on('change', function () {
25948            kpi_cartObj._changeUserRegistProgressButton();
25949        });
25950    }
25951});
25952
25953/* end cartscript.js
25954-------------------------------------------------------- */
25955
25956/* Popup
25957-------------------------------------------------------- */
25958function kpi_popupEvent(self, w, h, name, d, s, m, t, l, sc, r) {
25959    var url = self.getAttribute('href', '2');
25960
25961    if (w == 'Small') {
25962        w = 540;
25963        h = 405;
25964    } else if (w == 'Normal') {
25965        w = 700;
25966        h = 525;
25967    }
25968
25969    window.open(url, name, 'width=' + w + 'px, height=' + h + 'px, directories=' + d + ', status=' + s + ', menubar=' + m + ', toolbar=' + t + ', location=' + l + ', scrollbars=' + sc + ', resizable=' + r + '');
25970}
25971/* end Popup
25972-------------------------------------------------------- */
25973
25974
25975/*! For license information please see master.js.LICENSE.txt */
25976(()=>{var t={15:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>g});r(8037);var n=r(7431),i=r(2561),o=r(6710),s=r(3008),a=r(3134),c=r(6973),u=r(6192),l=r.n(u),f=r(6782),h="Invariant failed";function p(t,e){if(!t)throw new Error(h)}var d=r(327);function v(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(v=function(){return!!t})()}var g=function(t){function e(){return(0,i.A)(this,e),t=this,r=e,n=arguments,r=(0,a.A)(r),(0,s.A)(t,v()?Reflect.construct(r,n||[],(0,a.A)(t).constructor):r.apply(t,n));var t,r,n}return(0,c.A)(e,t),(0,o.A)(e,[{key:"connect",value:(r=(0,n.A)(l().mark((function t(){var e,r,n,i,o,s,a,c,u,f;return l().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return p(this.rendererTarget.width===this.rendererTarget.height),this.rendererTarget.getContext&&((e=this.rendererTarget.getContext("2d")).shadowOffsetX=10,e.shadowOffsetY=20,e.shadowBlur=20,e.shadowColor="rgb(48, 50, 51, 0.2)"),t.next=4,(0,d.A)(this.imageTarget);case 4:r=this.imageTarget.naturalWidth,n=this.imageTarget.naturalHeight,i=this.contentWidth,o=this.contentHeight,r>n?o=i*(n/r):n>r&&(i=o*(r/n)),s=50+(this.contentWidth-i)/2,a=50+(this.contentHeight-o)/2,this.rendererTarget.getContext&&this.rendererTarget.getContext("2d").drawImage(this.imageTarget,s,a,i,o),c=null,t.prev=13,c=this.overlayTarget,t.next=20;break;case 17:return t.prev=17,t.t0=t.catch(13),t.abrupt("return");case 20:u="".concat(i/this.contentWidth*100,"%"),f="".concat(o/this.contentHeight*100,"%"),c.style.width=u,c.style.height=f,this.rendererTarget.getContext||(this.rendererTarget.style.width=u,this.rendererTarget.style.height=f);case 25:case"end":return t.stop()}}),t,this,[[13,17]])}))),function(){return r.apply(this,arguments)})},{key:"contentWidth",get:function(){return(this.rendererTarget.getContext?this.rendererTarget.width:this.rendererTarget.style.width)-100}},{key:"contentHeight",get:function(){return(this.rendererTarget.getContext?this.rendererTarget.height:this.rendererTarget.style.height)-100}}]);var r}(f.xI);g.targets=["renderer","image","overlay"]},24:t=>{"use strict";
25976t.exports=Function.prototype.apply},34:(t,e,r)=>{"use strict";r(1908)},44:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>h});r(8037);var n=r(2561),i=r(6710),o=r(3008),s=r(3134),a=r(6973),c=r(6782),u=r(5096),l=r.n(u);function f(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(f=function(){return!!t})()}var h=function(t){function e(){return(0,n.A)(this,e),t=this,r=e,i=arguments,r=(0,s.A)(r),(0,o.A)(t,f()?Reflect.construct(r,i||[],(0,s.A)(t).constructor):r.apply(t,i));var t,r,i}return(0,a.A)(e,t),(0,i.A)(e,[{key:"connect",value:function(){this.msnry=new(l())(this.element,{itemSelector:".js-masonry-item",columnWidth:".js-masonry-sizer",percentPosition:!0})}},{key:"layout",value:function(){this.msnry.layout()}}])}(c.xI)},51:(t,e,r)=>{"use strict";var n=r(2484),i=r(2675),o=r(2748),s=Object,a=n("".split);t.exports=i((function(){return!s("z").propertyIsEnumerable(0)}))?function(t){return"String"===o(t)?a(t,""):s(t)}:s},62:t=>{"use strict";var e,r,n=Function.prototype.toString,i="object"==typeof Reflect&&null!==Reflect&&Reflect.apply;if("function"==typeof i&&"function"==typeof Object.defineProperty)try{e=Object.defineProperty({},"length",{get:function(){throw r}}),r={},i((function(){throw 42}),null,e)}catch(t){t!==r&&(i=null)}else i=null;var o=/^\s*class\b/,s=function(t){try{var e=n.call(t);return o.test(e)}catch(t){return!1}},a=function(t){try{return!s(t)&&(n.call(t),!0)}catch(t){return!1}},c=Object.prototype.toString,u="function"==typeof Symbol&&!!Symbol.toStringTag,l=!(0 in[,]),f=function(){return!1};if("object"==typeof document){var h=document.all;c.call(h)===c.call(document.all)&&(f=function(t){if((l||!t)&&(void 0===t||"object"==typeof t))try{var e=c.call(t);return("[object HTMLAllCollection]"===e||"[object HTML document.all class]"===e||"[object HTMLCollection]"===e||"[object Object]"===e)&&null==t("")}catch(t){}return!1})}t.exports=i?function(t){if(f(t))return!0;if(!t)return!1;if("function"!=typeof t&&"object"!=typeof t)return!1;try{i(t,null,e)}catch(t){if(t!==r)return!1}return!s(t)&&a(t)}:function(t){if(f(t))return!0;if(!t)return!1;if("function"!=typeof t&&"object"!=typeof t)return!1;if(u)return a(t);if(s(t))return!1;var e=c.call(t);return!("[object Function]"!==e&&"[object GeneratorFunction]"!==e&&!/^\[object HTML/.test(e))&&a(t)}},75:(t,e,r)=>{"use strict";var n=r(9997),i=r(9361),o=r(6757),s=r(1233);t.exports=function(t,e,r){if(!t||"object"!=typeof t&&"function"!=typeof t)throw new o("`obj` must be an object or a function`");if("string"!=typeof e&&"symbol"!=typeof e)throw new o("`property` must be a string or a symbol`");if(arguments.length>3&&"boolean"!=typeof arguments[3]&&null!==arguments[3])throw new o("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&"boolean"!=typeof arguments[4]&&null!==arguments[4])throw new o("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&"boolean"!=typeof arguments[5]&&null!==arguments[5])throw new o("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&"boolean"!=typeof arguments[6])throw new o("`loose`, if provided, must be a boolean");var a=arguments.length>3?arguments[3]:null,c=arguments.length>4?arguments[4]:null,u=arguments.length>5?arguments[5]:null,l=arguments.length>6&&arguments[6],f=!!s&&s(t,e);if(n)n(t,e,{configurable:null===u&&f?f.configurable:!u,enumerable:null===a&&f?f.enumerable:!a,value:r,writable:null===c&&f?f.writable:!c});else{if(!l&&(a||c||u))throw new i("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.");t[e]=r}}},92:(t,e,r)=>{"use strict";var n=r(6891);t.exports=n&&!!Symbol.for&&!!Symbol.keyFor},133:(t,e,r)=>{"use strict";var n=r(3588),i=Function.prototype,o=i.apply,s=i.call;t.exports="object"==typeof Reflect&&Reflect.apply||(n?s.bind(o):function(){return s.apply(o,arguments)})},155:t=>{"use strict";t.exports=EvalError},244:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>d});r(8037);var n=r(7431),i=r(2561),o=r(6710),s=r(3008),a=r(3134),c=r(6973),u=(r(3348),r(5424),r(1759),r(2901),r(6192)),l=r.n(u),f=r(6782),h=r(327);function p(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(p=function(){return!!t})()}var d=function(t){function e(){return(0,i.A)(this,e),t=this,r=e,n=arguments,r=(0,a.A)(r),(0,s.A)(t,p()?Reflect.construct(r,n||[],(0,a.A)(t).constructor):r.apply(t,n));var t,r,n}
25976return(0,c.A)(e,t),(0,o.A)(e,[{key:"connect",value:(r=(0,n.A)(l().mark((function t(){var e;return l().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return(e=this.element.getContext("2d")).shadowOffsetX=this.xValue,e.shadowOffsetY=this.yValue,e.shadowBlur=this.blurValue,e.shadowColor="rgb(48, 50, 51, 0.2)",t.next=7,(0,h.A)(this.imageTarget);case 7:e.drawImage(this.imageTarget,0,0,this.element.width,this.element.height);case 8:case"end":return t.stop()}}),t,this)}))),function(){return r.apply(this,arguments)})}]);var r}(f.xI);d.targets=["image"],d.values={x:Number,y:Number,blur:Number}},259:(t,e,r)=>{"use strict";var n=r(8810),i=r(8052),o=r(5396)(i.setTimeout,!0);n({global:!0,bind:!0,forced:i.setTimeout!==o},{setTimeout:o})},301:(t,e,r)=>{"use strict";var n=r(2484),i=r(3179),o=r(6327).getWeakData,s=r(5755),a=r(659),c=r(9601),u=r(4102),l=r(1072),f=r(2961),h=r(4461),p=r(6369),d=p.set,v=p.getterFor,g=f.find,m=f.findIndex,y=n([].splice),b=0,w=function(t){return t.frozen||(t.frozen=new x)},x=function(){this.entries=[]},S=function(t,e){return g(t.entries,(function(t){return t[0]===e}))};x.prototype={get:function(t){var e=S(this,t);if(e)return e[1]},has:function(t){return!!S(this,t)},set:function(t,e){var r=S(this,t);r?r[1]=e:this.entries.push([t,e])},delete:function(t){var e=m(this.entries,(function(e){return e[0]===t}));return~e&&y(this.entries,e,1),!!~e}},t.exports={getConstructor:function(t,e,r,n){var f=t((function(t,i){s(t,p),d(t,{type:e,id:b++,frozen:null}),c(i)||l(i,t[n],{that:t,AS_ENTRIES:r})})),p=f.prototype,g=v(e),m=function(t,e,r){var n=g(t),i=o(a(e),!0);return!0===i?w(n).set(e,r):i[n.id]=r,t};return i(p,{delete:function(t){var e=g(this);if(!u(t))return!1;var r=o(t);return!0===r?w(e).delete(t):r&&h(r,e.id)&&delete r[e.id]},has:function(t){var e=g(this);if(!u(t))return!1;var r=o(t);return!0===r?w(e).has(t):r&&h(r,e.id)}}),i(p,r?{get:function(t){var e=g(this);if(u(t)){var r=o(t);if(!0===r)return w(e).get(t);if(r)return r[e.id]}},set:function(t,e){return m(this,t,e)}}:{add:function(t){return m(this,t,!0)}}),f}}},321:t=>{"use strict";var e="object"==typeof document&&document.all;t.exports=void 0===e&&void 0!==e?function(t){return"function"==typeof t||t===e}:function(t){return"function"==typeof t}},327:(t,e,r)=>{"use strict";r.d(e,{A:()=>s});var n=r(7431),i=r(6192),o=r.n(i);r(1759),r(6558);function s(t){return a.apply(this,arguments)}function a(){return(a=(0,n.A)(o().mark((function t(e){return o().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!e.complete){t.next=2;break}return t.abrupt("return");case 2:return t.next=4,new Promise((function(t){e.addEventListener("load",(function(){return t()}))}));case 4:case"end":return t.stop()}}),t)})))).apply(this,arguments)}},341:(t,e,r)=>{"use strict";var n=r(5034),i=r(9976),o=r(7032).CONSTRUCTOR;t.exports=o||!i((function(t){n.all(t).then(void 0,(function(){}))}))},381:t=>{"use strict";t.exports=function(t,e){return{value:t,done:e}}},383:(t,e,r)=>{"use strict";var n=r(8810),i=r(6007),o=r(7032).CONSTRUCTOR,s=r(5034),a=r(3163),c=r(321),u=r(5236),l=s&&s.prototype;if(n({target:"Promise",proto:!0,forced:o,real:!0},{catch:function(t){return this.then(void 0,t)}}),!i&&c(s)){var f=a("Promise").prototype.catch;l.catch!==f&&u(l,"catch",f,{unsafe:!0})}},391:(t,e,r)=>{"use strict";r(4515)("iterator")},461:(t,e,r)=>{"use strict";var n=r(3163),i=r(6038),o=r(4175),s=r(2128),a=o("species");t.exports=function(t){var e=n(t);s&&e&&!e[a]&&i(e,a,{configurable:!0,get:function(){return this}})}},464:t=>{"use strict";var e=TypeError;t.exports=function(t,r){if(t<r)throw new e("Not enough arguments");return t}},469:(t,e,r)=>{"use strict";var n=r(9691);t.exports=Function.prototype.bind||n},517:(t,e,r)=>{"use strict";var n=r(3625),i=r(4334),o=r(659),s=r(779),a=r(1274),c=r(4035),u=a((function(){var t=this.iterator,e=o(n(this.next,t));if(!(this.done=!!e.done))return c(t,this.mapper,[e.value,this.counter++],!0)}));t.exports=function(t){return o(this),i(t),new u(s(this),{mapper:t})}},542:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>d});r(8037);var n=r(7431),i=r(2561),o=r(6710),s=r(3008),a=r(3134),c=r(6973),u=(r(5249),r(6160),r(3376),r(1759),r(3544),r(6192)),l=r.n(u),f=r(6782),h=r(9272);function p(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(p=function(){return!!t})()}var d=function(t){function e(){return(0,i.A)(this,e),t=this,r=e,n=arguments,r=(0,a.A)(r),(0,s.A)(t,p()?Reflect.construct(r,n||[],(0,a.A)(t).constructor):r.apply(t,n));var t,r,n}return(0,c.A)(e,t),(0,o.A)(e,[{key:"toggle",value:(r=(0,n.A)(l().mark((function t(e){var r,n,i;return l().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r="true"===e.currentTarget.getAttribute("aria-expanded"),n=!r,this.expandedTarget.setAttribute("aria-hidden",!n),this.collapsedTarget.setAttribute("aria-hidden",n),i=n?this.expandedTarget:this.collapsedTarget,t.next=7,(0,h.W)(i,"visibility","visible");case 7:i.focus();case 8:case"end":return t.stop()}}),t,this)}))),function(t){return r.apply(this,arguments)})},{key:"changeAgreement",value:function(t){var e=t.currentTarget.checked;
25976this.downloadButtonTargets.forEach((function(t){t.tabIndex=e?0:-1,t.setAttribute("aria-disabled",!e)}))}}]);var r}(f.xI);d.targets=["expanded","collapsed","downloadButton"]},552:(t,e,r)=>{"use strict";var n=r(3291);t.exports=/web0s(?!.*chrome)/i.test(n)},562:(t,e,r)=>{"use strict";var n=r(8810),i=r(2961).map;n({target:"Array",proto:!0,forced:!r(2321)("map")},{map:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}})},573:(t,e,r)=>{"use strict";var n=r(3625),i=r(4102),o=r(3401),s=r(9538),a=r(5514),c=r(4175),u=TypeError,l=c("toPrimitive");t.exports=function(t,e){if(!i(t)||o(t))return t;var r,c=s(t,l);if(c){if(void 0===e&&(e="default"),r=n(c,t,e),!i(r)||o(r))return r;throw new u("Can't convert object to primitive value")}return void 0===e&&(e="number"),a(t,e)}},593:t=>{"use strict";t.exports=Error},600:(t,e,r)=>{"use strict";var n=r(9004),i=r(3625),o=r(8649),s=r(4035),a=r(3709),c=r(1441),u=r(8770),l=r(4028),f=r(6221),h=r(4951),p=Array;t.exports=function(t){var e=o(t),r=c(this),d=arguments.length,v=d>1?arguments[1]:void 0,g=void 0!==v;g&&(v=n(v,d>2?arguments[2]:void 0));var m,y,b,w,x,S,A=h(e),O=0;if(!A||this===p&&a(A))for(m=u(e),y=r?new this(m):p(m);m>O;O++)S=g?v(e[O],O):e[O],l(y,O,S);else for(y=r?new this:[],x=(w=f(e,A)).next;!(b=i(x,w)).done;O++)S=g?s(w,v,[b.value,O],!0):b.value,l(y,O,S);return y.length=O,y}},659:(t,e,r)=>{"use strict";var n=r(4102),i=String,o=TypeError;t.exports=function(t){if(n(t))return t;throw new o(i(t)+" is not an object")}},671:(t,e,r)=>{"use strict";var n=r(2128),i=r(6005),o=r(5936);t.exports=n?function(t,e,r){return i.f(t,e,o(1,r))}:function(t,e,r){return t[e]=r,t}},706:(t,e,r)=>{"use strict";var n=r(2128),i=r(2675);t.exports=n&&i((function(){return 42!==Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},714:(t,e,r)=>{"use strict";var n,i=r(7196),o=r(1233);try{n=[].__proto__===Array.prototype}catch(t){if(!t||"object"!=typeof t||!("code"in t)||"ERR_PROTO_ACCESS"!==t.code)throw t}var s=!!n&&o&&o(Object.prototype,"__proto__"),a=Object,c=a.getPrototypeOf;t.exports=s&&"function"==typeof s.get?i([s.get]):"function"==typeof c&&function(t){return c(null==t?t:a(t))}},719:(t,e,r)=>{"use strict";var n=r(3291);t.exports=/MSIE|Trident/.test(n)},779:t=>{"use strict";t.exports=function(t){return{iterator:t,next:t.next,done:!1}}},790:(t,e,r)=>{"use strict";var n=r(4690).PROPER,i=r(2675),o=r(4912);t.exports=function(t){return i((function(){return!!o[t]()||"​…᠎"!=="​…᠎"[t]()||n&&o[t].name!==t}))}},797:()=>{if(window.MutationObserver){var t=document.createElement("div");t.innerHTML="<div><div></div></div>",new MutationObserver((function(t,e){if(e.disconnect(),t[0]&&"childList"==t[0].type&&0==t[0].removedNodes[0].childNodes.length){var r=HTMLElement.prototype,n=Object.getOwnPropertyDescriptor(r,"innerHTML");n&&n.set&&Object.defineProperty(r,"innerHTML",{set:function(t){for(;this.lastChild;)this.removeChild(this.lastChild);n.set.call(this,t)}})}})).observe(t,{childList:!0,subtree:!0}),t.innerHTML=""}},802:t=>{"use strict";t.exports=Object},810:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>n});const n='<section\r\n    class="prd-modelCardSpecs"\r\n    {{#if disabled}}\r\n    aria-disabled="true"\r\n    {{/if}}\r\n    {{#if attrs}}\r\n    {{{attrs}}}\r\n    {{/if}}\r\n>\r\n    <h3>\r\n        {{#if link}}\r\n        <a class="prd-modelCardSpecs-header prd-utility-marginBottom-3" href="{{link}}">\r\n        {{else}}\r\n        <label class="prd-modelCardSpecs-header prd-utility-marginBottom-3">\r\n            <input\r\n                class="prd-modelCardSpecs-control prd-utility-focusRing"\r\n                type="{{inputType}}"\r\n                name="{{inputName}}"\r\n                value="{{inputValue}}"\r\n                {{#if disabled}}\r\n                disabled\r\n                {{/if}}\r\n                {{#if inputAttrs}}\r\n                {{{inputAttrs}}}\r\n                {{/if}}\r\n            >\r\n        {{/if}}\r\n            <span class="prd-modelCardSpecs-imageWrapper prd-largeScreen-marginBottom-3">\r\n                <img\r\n                    class="prd-modelCardSpecs-image prd-image"\r\n                    src="/img/products/model-card-01.jpg"\r\n                    width="300"\r\n                    height="300"\r\n                    alt=""\r\n                    decoding="async"\r\n                    loading="lazy"\r\n                >\r\n                {{#if inputType}}
25976\r\n                <span class="prd-modelCardSpecs-controlAppearance">\r\n                    {{#if (eq inputType "checkbox")}}\r\n                    <svg class="prd-modelCardSpecs-controlAppearanceIcon" viewBox="0 0 20 20">\r\n                        <use xlink:href="#icon-checkbox-unchecked"/>\r\n                    </svg>\r\n                    <svg class="prd-modelCardSpecs-controlAppearanceIcon of-checked" viewBox="0 0 20 20">\r\n                        <use xlink:href="#icon-checkbox-checked"/>\r\n                    </svg>\r\n                    {{else if (eq inputType "radio")}}\r\n                    <svg class="prd-modelCardSpecs-controlAppearanceIcon" viewBox="0 0 20 20">\r\n                        <use xlink:href="#icon-radio-unchecked"/>\r\n                    </svg>\r\n                    <svg class="prd-modelCardSpecs-controlAppearanceIcon of-checked" viewBox="0 0 20 20">\r\n                        <use xlink:href="#icon-radio-checked"/>\r\n                    </svg>\r\n                    {{/if}}\r\n                </span>\r\n                {{/if}}\r\n            </span>\r\n            <span class="prd-modelCardSpecs-title prd-utility-heading-4 prd-largeScreen-marginBottom-3">\r\n                <span class="prd-modelCardSpecs-titleLabel">{{{name}}}</span>\r\n                {{~#if link}}\r\n                {{~> modules/inline-link-chevron}}\r\n                {{/if}}\r\n            </span>\r\n            <span class="prd-smallScreen-hidden">\r\n                {{> modules/divider}}\r\n            </span>\r\n        {{#if link}}\r\n        </a>\r\n        {{else}}\r\n        </label>\r\n        {{/if}}\r\n    </h3>\r\n    <dl class="prd-layout-stack of-space-3 prd-utility-body-extraSmall">\r\n        {{#each specs}}\r\n        <div>\r\n            <dt class="prd-modelCardSpecs-specName prd-utility-marginBottom-1">{{name}}</dt>\r\n            {{#each values}}\r\n            <dd>{{{this}}}</dd>\r\n            {{/each}}\r\n        </div>\r\n        {{/each}}\r\n    </dl>\r\n</section>\r\n'},863:(t,e,r)=>{"use strict";var n,i,o=r(3625),s=r(2484),a=r(7267),c=r(8303),u=r(2537),l=r(6445),f=r(3844),h=r(6369).get,p=r(991),d=r(5722),v=l("native-string-replace",String.prototype.replace),g=RegExp.prototype.exec,m=g,y=s("".charAt),b=s("".indexOf),w=s("".replace),x=s("".slice),S=(i=/b*/g,o(g,n=/a/,"a"),o(g,i,"a"),0!==n.lastIndex||0!==i.lastIndex),A=u.BROKEN_CARET,O=void 0!==/()??/.exec("")[1];(S||O||A||p||d)&&(m=function(t){var e,r,n,i,s,u,l,p=this,d=h(p),E=a(t),k=d.raw;if(k)return k.lastIndex=p.lastIndex,e=o(m,k,E),p.lastIndex=k.lastIndex,e;var T=d.groups,_=A&&p.sticky,C=o(c,p),P=p.source,I=0,j=E;if(_&&(C=w(C,"y",""),-1===b(C,"g")&&(C+="g"),j=x(E,p.lastIndex),p.lastIndex>0&&(!p.multiline||p.multiline&&"\n"!==y(E,p.lastIndex-1))&&(P="(?: "+P+")",j=" "+j,I++),r=new RegExp("^(?:"+P+")",C)),O&&(r=new RegExp("^"+P+"$(?!\\s)",C)),S&&(n=p.lastIndex),i=o(g,_?r:p,j),_?i?(i.input=x(i.input,I),i[0]=x(i[0],I),i.index=
vendor: 4,114 bytes, line 25976
25976p.lastIndex,p.lastIndex+=i[0].length):p.lastIndex=0:S&&i&&(p.lastIndex=p.global?i.index+i[0].length:n),O&&i&&i.length>1&&o(v,i[0],r,(function(){for(s=1;s<arguments.length-2;s++)void 0===arguments[s]&&(i[s]=void 0)})),i&&T)for(i.groups=u=f(null),s=0;s<T.length;s++)u[(l=T[s])[0]]=i[l[1]];return i}),t.exports=m},878:(t,e,r)=>{"use strict";var n=r(1417),i=String,o=TypeError;t.exports=function(t){if(n(t))return t;throw new o("Can't set "+i(t)+" as a prototype")}},930:(t,e,r)=>{"use strict";var n=r(8810),i=r(3163),o=r(4461),s=r(7267),a=r(6445),c=r(92),u=a("string-to-symbol-registry"),l=a("symbol-to-string-registry");n({target:"Symbol",stat:!0,forced:!c},{for:function(t){var e=s(t);if(o(u,e))return u[e];var r=i("Symbol")(e);return u[e]=r,l[r]=e,r}})},981:t=>{"use strict";t.exports=Number.isNaN||function(t){return t!=t}},982:(t,e,r)=>{"use strict";r.d(e,{K:()=>j});r(7575),r(8740),r(6770),r(4958),r(3299),r(7372),r(5249),r(9872),r(562),r(3838),r(7642),r(1678),r(6160),r(9224),r(8021),r(3376),r(9585),r(9343),r(6805),r(6461),r(9111),r(4802),r(7476),r(1759),r(3544),r(995);var n,i=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],o=i.join(","),s="undefined"==typeof Element,a=s?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,c=!s&&Element.prototype.getRootNode?function(t){var e;return null==t||null===(e=t.getRootNode)||void 0===e?void 0:e.call(t)}:function(t){return null==t?void 0:t.ownerDocument},u=function t(e,r){var n;void 0===r&&(r=!0);var i=null==e||null===(n=e.getAttribute)||void 0===n?void 0:n.call(e,"inert");return""===i||"true"===i||r&&e&&t(e.parentNode)},l=function(t,e,r){if(u(t))return[];var n=Array.prototype.slice.apply(t.querySelectorAll(o));return e&&a.call(t,o)&&n.unshift(t),n=n.filter(r)},f=function t(e,r,n){for(var i=[],s=Array.from(e);s.length;){var c=s.shift();if(!u(c,!1))if("SLOT"===c.tagName){var l=c.assignedElements(),f=t(l.length?l:c.children,!0,n);n.flatten?i.push.apply(i,f):i.push({scopeParent:c,candidates:f})}else{a.call(c,o)&&n.filter(c)&&(r||!e.includes(c))&&i.push(c);var h=c.shadowRoot||"function"==typeof n.getShadowRoot&&n.getShadowRoot(c),p=!u(h,!1)&&(!n.shadowRootFilter||n.shadowRootFilter(c));if(h&&p){var d=t(!0===h?c.children:h.children,!0,n);n.flatten?i.push.apply(i,d):i.push({scopeParent:c,candidates:d})}else s.unshift.apply(s,c.children)}}return i},h=function(t){return!isNaN(parseInt(t.getAttribute("tabindex"),10))},p=function(t){if(!t)throw new Error("No node provided");return t.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(t.tagName)||function(t){var e,r=null==t||null===(e=t.getAttribute)||void 0===e?void 0:e.call(t,"contenteditable");return""===r||"true"===r}(t))&&!h(t)?0:t.tabIndex},d=function(t,e){return t.tabIndex===e.tabIndex?t.documentOrder-e.documentOrder:t.tabIndex-e.tabIndex},v=function(t){return"INPUT"===t.tagName},g=function(t){return function(t){return v(t)&&"radio"===t.type}(t)&&!function(t){if(!t.name)return!0;var e,r=t.form||c(t),n=function(t){return r.querySelectorAll('input[type="radio"][name="'+t+'"]')};if("undefined"!=typeof window&&void 0!==window.CSS&&"function"==typeof window.CSS.escape)e=n(window.CSS.escape(t.name));else try{e=n(t.name)}catch(t){return console.error("Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s",t.message),!1}var i=function(t,e){for(var r=0;r<t.length;r++)if(t[r].checked&&t[r].form===e)return t[r]}(e,t.form);return!i||i===t}(t)},m=function(t){var e=t.getBoundingClientRect(),r=e.width,n=e.height;return 0===r&&0===n},y=function(t,e){var r=e.displayCheck,n=e.getShadowRoot;if("hidden"===getComputedStyle(t).visibility)return!0;var i=a.call(t,"details>summary:first-of-type")?t.parentElement:t;if(a.call(i,"details:not([open]) *"))return!0;
25976if(r&&"full"!==r&&"legacy-full"!==r){if("non-zero-area"===r)return m(t)}else{if("function"==typeof n){for(var o=t;t;){var s=t.parentElement,u=c(t);if(s&&!s.shadowRoot&&!0===n(s))return m(t);t=t.assignedSlot?t.assignedSlot:s||u===t.ownerDocument?s:u.host}t=o}if(function(t){var e,r,n,i,o=t&&c(t),s=null===(e=o)||void 0===e?void 0:e.host,a=!1;if(o&&o!==t)for(a=!!(null!==(r=s)&&void 0!==r&&null!==(n=r.ownerDocument)&&void 0!==n&&n.contains(s)||null!=t&&null!==(i=t.ownerDocument)&&void 0!==i&&i.contains(t));!a&&s;){var u,l,f;a=!(null===(l=s=null===(u=o=c(s))||void 0===u?void 0:u.host)||void 0===l||null===(f=l.ownerDocument)||void 0===f||!f.contains(s))}return a}(t))return!t.getClientRects().length;if("legacy-full"!==r)return!0}return!1},b=function(t,e){return!(e.disabled||u(e)||function(t){return v(t)&&"hidden"===t.type}(e)||y(e,t)||function(t){return"DETAILS"===t.tagName&&Array.prototype.slice.apply(t.children).some((function(t){return"SUMMARY"===t.tagName}))}(e)||function(t){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(t.tagName))for(var e=t.parentElement;e;){if("FIELDSET"===e.tagName&&e.disabled){for(var r=0;r<e.children.length;r++){var n=e.children.item(r);if("LEGEND"===n.tagName)return!!a.call(e,"fieldset[disabled] *")||!n.contains(t)}return!0}e=e.parentElement}return!1}(e))},w=function(t,e){return!(g(e)||p(e)<0||!b(t,e))},x=function(t){var e=parseInt(t.getAttribute("tabindex"),10);return!!(isNaN(e)||e>=0)},S=function t(e){var r=[],n=[];return e.forEach((function(e,i){var o=!!e.scopeParent,s=o?e.scopeParent:e,a=function(t,e){var r=p(t);return r<0&&e&&!h(t)?0:r}(s,o),c=o?t(e.candidates):s;0===a?o?r.push.apply(r,c):r.push(s):n.push({documentOrder:i,tabIndex:a,item:e,isScope:o,content:c})})),n.sort(d).reduce((function(t,e){return e.isScope?t.push.apply(t,e.content):t.push(e.content),t}),[]).concat(r)},A=i.concat("iframe").join(","),O=function(t,e){if(e=e||{},!t)throw new Error("No node provided");return!1!==a.call(t,A)&&b(e,t)};function E(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function k(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}var T,_=(T=[],{activateTrap:function(t){if(T.length>0){var e=T[T.length-1];e!==t&&e.pause()}var r=T.indexOf(t);-1===r||T.splice(r,1),T.push(t)},deactivateTrap:function(t){var e=T.indexOf(t);-1!==e&&T.splice(e,1),T.length>0&&T[T.length-1].unpause()}}),C=function(t){return setTimeout(t,0)},P=function(t,e){var r=-1;return t.every((function(t,n){return!e(t)||(r=n,!1)})),r},I=function(t){for(var e=arguments.length,r=new Array(e>1?e-1:0),n=1;n<e;n++)r[n-1]=arguments[n];return"function"==typeof t?t.apply(void 0,r):t},j=function(t,e){var r,i=document,o=function(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?k(Object(r),!0).forEach((function(e){E(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):k(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}({returnFocusOnDeactivate:!0,escapeDeactivates:!0,delayInitialFocus:!0},e),s={containers:[],tabbableGroups:[],nodeFocusedBeforeActivation:null,mostRecentlyFocusedNode:null,active:!1,paused:!1},a=function(t){return s.containers.some((function(e){return e.contains(t)}))},c=function(t){var e=o[t];if(!e)return null;var r=e;if("string"==typeof e&&!(r=i.querySelector(e)))throw new Error("`".concat(t,"` refers to no known node"));if("function"==typeof e&&!(r=e()))throw new Error("`".concat(t,"` did not return a node"));return r},u=function(){var t;if(null!==c("initialFocus"))t=c("initialFocus");else if(a(i.activeElement))t=i.activeElement;else{var e=s.tabbableGroups[0];t=e&&e.firstTabbableNode||c("fallbackFocus")}if(!t)throw new Error("Your focus-trap needs to have at least one focusable element");return t},h=function(){if(s.tabbableGroups=s.containers.map((function(t){var e=function(t,e){var r;return r=(e=e||{}).getShadowRoot?f([t],e.includeContainer,{filter:w.bind(null,e),flatten:!1,getShadowRoot:e.getShadowRoot,shadowRootFilter:x}):l(t,e.includeContainer,w.bind(null,e)),S(r)}(t);if(e.length>0)return{container:t,firstTabbableNode:e[0],lastTabbableNode:e[e.length-1]}})).filter((function(t){return!!t})),s.tabbableGroups.length<=0&&!c("fallbackFocus"))throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times")}
25976,p=function t(e){e!==i.activeElement&&(e&&e.focus?(e.focus({preventScroll:!!o.preventScroll}),s.mostRecentlyFocusedNode=e,function(t){return t.tagName&&"input"===t.tagName.toLowerCase()&&"function"==typeof t.select}(e)&&e.select()):t(u()))},d=function(t){a(t.target)||(I(o.clickOutsideDeactivates,t)?r.deactivate({returnFocus:o.returnFocusOnDeactivate&&!O(t.target)}):I(o.allowOutsideClick,t)||t.preventDefault())},v=function(t){var e=a(t.target);e||t.target instanceof Document?e&&(s.mostRecentlyFocusedNode=t.target):(t.stopImmediatePropagation(),p(s.mostRecentlyFocusedNode||u()))},g=function(t){if(!1!==o.escapeDeactivates&&function(t){return"Escape"===t.key||"Esc"===t.key||27===t.keyCode}(t))return t.preventDefault(),void r.deactivate();(function(t){return"Tab"===t.key||9===t.keyCode})(t)&&function(t){h();var e=null;if(s.tabbableGroups.length>0)if(P(s.tabbableGroups,(function(e){return e.container.contains(t.target)}))<0)e=t.shiftKey?s.tabbableGroups[s.tabbableGroups.length-1].lastTabbableNode:s.tabbableGroups[0].firstTabbableNode;else if(t.shiftKey){var r=P(s.tabbableGroups,(function(e){var r=e.firstTabbableNode;return t.target===r}));if(r>=0){var n=0===r?s.tabbableGroups.length-1:r-1;e=s.tabbableGroups[n].lastTabbableNode}}else{var i=P(s.tabbableGroups,(function(e){var r=e.lastTabbableNode;return t.target===r}));if(i>=0){var o=i===s.tabbableGroups.length-1?0:i+1;e=s.tabbableGroups[o].firstTabbableNode}}else e=c("fallbackFocus");e&&(t.preventDefault(),p(e))}(t)},m=function(t){I(o.clickOutsideDeactivates,t)||a(t.target)||I(o.allowOutsideClick,t)||(t.preventDefault(),t.stopImmediatePropagation())},y=function(){if(s.active)return _.activateTrap(r),n=o.delayInitialFocus?C((function(){p(u())})):p(u()),i.addEventListener("focusin",v,!0),i.addEventListener("mousedown",d,{capture:!0,passive:!1}),i.addEventListener("touchstart",d,{capture:!0,passive:!1}),i.addEventListener("click",m,{capture:!0,passive:!1}),i.addEventListener("keydown",g,{capture:!0,passive:!1}),r},b=function(){if(s.active)return i.removeEventListener("focusin",v,!0),i.removeEventListener("mousedown",d,{capture:!0,passive:!1}),i.removeEventListener("touchstart",d,{capture:!0,passive:!1}),i.removeEventListener("click",m,{capture:!0,passive:!1}),i.removeEventListener("keydown",g,{capture:!0,passive:!1}),r};return(r={activate:function(t){if(s.active)return this;h(),s.active=!0,s.paused=!1,s.nodeFocusedBeforeActivation=i.activeElement;var e=t&&t.onActivate?t.onActivate:o.onActivate;return e&&e(),y(),this},deactivate:function(t){if(!s.active)return this;clearTimeout(n),b(),s.active=!1,s.paused=!1,_.deactivateTrap(r);var e=t&&void 0!==t.onDeactivate?t.onDeactivate:o.onDeactivate;return e&&e(),(t&&void 0!==t.returnFocus?t.returnFocus:o.returnFocusOnDeactivate)&&C((function(){var t;p((t=s.nodeFocusedBeforeActivation,c("setReturnFocus")||t))})),this},pause:function(){return s.paused||!s.active||(s.paused=!0,b()),this},unpause:function(){return s.paused&&s.active?(s.paused=!1,h(),y(),this):this},updateContainerElements:function(t){var e=[].concat(t).filter(Boolean);return s.containers=e.map((function(t){return"string"==typeof t?i.querySelector(t):t})),s.active&&h(),this}}).updateContainerElements(t),r}},991:(t,e,r)=>{"use strict";var n=r(2675),i=r(8052).RegExp;t.exports=n((function(){var t=i(".","s");return!(t.dotAll&&t.test("\n")&&"s"===t.flags)}))},995:(t,e,r)=>{"use strict";r(6371),r(259)},998:t=>{function e(r){return t.exports=e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t.exports.__esModule=!0,t.exports.default=t.exports,e(r)}t.exports=e,t.exports.__esModule=!0,t.exports.default=t.exports},1029:(t,e,r)=>{var n=r(7187),i=Object.prototype,o=i.hasOwnProperty,s=i.toString,a=n?n.toStringTag:void 0;t.exports=function(t){var e=o.call(t,a),r=t[a];try{t[a]=void 0;var n=!0}catch(t){}var i=s.call(t);return n&&(e?t[a]=r:delete t[a]),i}},1031:(t,e,r)=>{"use strict";var n=r(4334),i=TypeError,o=function(t){var e,r;this.promise=new t((function(t,n){if(void 0!==e||void 0!==r)throw new i("Bad Promise constructor");e=t,r=n})),this.resolve=n(e),this.reject=n(r)};t.exports.f=function(t){return new o(t)}},1067:t=>{"use strict";
25976t.exports=Object.getOwnPropertyDescriptor},1072:(t,e,r)=>{"use strict";var n=r(9004),i=r(3625),o=r(659),s=r(8379),a=r(3709),c=r(8770),u=r(7837),l=r(6221),f=r(4951),h=r(1151),p=TypeError,d=function(t,e){this.stopped=t,this.result=e},v=d.prototype;t.exports=function(t,e,r){var g,m,y,b,w,x,S,A=r&&r.that,O=!(!r||!r.AS_ENTRIES),E=!(!r||!r.IS_RECORD),k=!(!r||!r.IS_ITERATOR),T=!(!r||!r.INTERRUPTED),_=n(e,A),C=function(t){return g&&h(g,"normal",t),new d(!0,t)},P=function(t){return O?(o(t),T?_(t[0],t[1],C):_(t[0],t[1])):T?_(t,C):_(t)};if(E)g=t.iterator;else if(k)g=t;else{if(!(m=f(t)))throw new p(s(t)+" is not iterable");if(a(m)){for(y=0,b=c(t);b>y;y++)if((w=P(t[y]))&&u(v,w))return w;return new d(!1)}g=l(t,m)}for(x=E?t.next:g.next;!(S=i(x,g)).done;){try{w=P(S.value)}catch(t){h(g,"throw",t)}if("object"==typeof w&&w&&u(v,w))return w}return new d(!1)}},1077:(t,e,r)=>{var n={"./modules/button.hbs":4559,"./modules/divider.hbs":1784,"./modules/modal-dialog.hbs":3703,"./modules/model-card-specs.hbs":810,"./modules/select-button.hbs":1742,"./modules/specs-select-table.hbs":2589};function i(t){var e=o(t);return r(e)}function o(t){if(!r.o(n,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return n[t]}i.keys=function(){return Object.keys(n)},i.resolve=o,t.exports=i,i.id=1077},1135:(t,e,r)=>{var n=r(3184),i=Object.getOwnPropertyDescriptors||function(t){for(var e=Object.keys(t),r={},n=0;n<e.length;n++)r[e[n]]=Object.getOwnPropertyDescriptor(t,e[n]);return r},o=/%[sdj%]/g;e.format=function(t){if(!b(t)){for(var e=[],r=0;r<arguments.length;r++)e.push(u(arguments[r]));return e.join(" ")}r=1;for(var n=arguments,i=n.length,s=String(t).replace(o,(function(t){if("%%"===t)return"%";if(r>=i)return t;switch(t){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(t){return"[Circular]"}default:return t}})),a=n[r];r<i;a=n[++r])m(a)||!S(a)?s+=" "+a:s+=" "+u(a);return s},e.deprecate=function(t,r){if(void 0!==n&&!0===n.noDeprecation)return t;if(void 0===n)return function(){return e.deprecate(t,r).apply(this,arguments)};var i=!1;return function(){if(!i){if(n.throwDeprecation)throw new Error(r);n.traceDeprecation?console.trace(r):console.error(r),i=!0}return t.apply(this,arguments)}};var s={},a=/^$/;if(n.env.NODE_DEBUG){var c=n.env.NODE_DEBUG;c=c.replace(/[|\\{}()[\]^$+?.]/g,"\\$&").replace(/\*/g,".*").replace(/,/g,"$|^").toUpperCase(),a=new RegExp("^"+c+"$","i")}function u(t,r){var n={seen:[],stylize:f};return arguments.length>=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),g(r)?n.showHidden=r:r&&e._extend(n,r),w(n.showHidden)&&(n.showHidden=!1),w(n.depth)&&(n.depth=2),w(n.colors)&&(n.colors=!1),w(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=l),h(n,t,n.depth)}function l(t,e){var r=u.styles[e];return r?"�["+u.colors[r][0]+"m"+t+"�["+u.colors[r][1]+"m":t}function f(t,e){return t}function h(t,r,n){if(t.customInspect&&r&&E(r.inspect)&&r.inspect!==e.inspect&&(!r.constructor||r.constructor.prototype!==r)){var i=r.inspect(n,t);return b(i)||(i=h(t,i,n)),i}var o=function(t,e){if(w(e))return t.stylize("undefined","undefined");if(b(e)){var r="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(r,"string")}if(y(e))return t.stylize(""+e,"number");if(g(e))return t.stylize(""+e,"boolean");if(m(e))return t.stylize("null","null")}(t,r);if(o)return o;var s=Object.keys(r),a=function(t){var e={};return t.forEach((function(t,r){e[t]=!0})),e}(s);if(t.showHidden&&(s=Object.getOwnPropertyNames(r)),O(r)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return p(r);if(0===s.length){if(E(r)){var c=r.name?": "+r.name:"";return t.stylize("[Function"+c+"]","special")}if(x(r))return t.stylize(RegExp.prototype.toString.call(r),"regexp");if(A(r))return t.stylize(Date.prototype.toString.call(r),"date");if(O(r))return p(r)}var u,l="",f=!1,S=["{","}"];(v(r)&&(f=!0,S=["[","]"]),E(r))&&(l=" [Function"+(r.name?": "+r.name:"")+"]");return x(r)&&(l=" "+RegExp.prototype.toString.call(r)),A(r)&&(l=" "+Date.prototype.toUTCString.call(r)),O(r)&&(l=" "+p(r)),0!==s.length||f&&0!=r.length?n<0?x(r)?t.stylize(RegExp.prototype.toString.call(r),"regexp"):t.stylize("[Object]","special"):(t.seen.push(r),u=f?function(t,e,r,n,i){for(var o=[],s=0,a=e.length;s<a;++s)C(e,String(s))?o.push(d(t,e,r,n,String(s),!0)):o.push("");
vendor: 4,134 bytes, line 25976
25976return i.forEach((function(i){i.match(/^\d+$/)||o.push(d(t,e,r,n,i,!0))})),o}(t,r,n,a,s):s.map((function(e){return d(t,r,n,a,e,f)})),t.seen.pop(),function(t,e,r){var n=t.reduce((function(t,e){return e.indexOf("\n")>=0&&0,t+e.replace(/\u001b\[\d\d?m/g,"").length+1}),0);if(n>60)return r[0]+(""===e?"":e+"\n ")+" "+t.join(",\n  ")+" "+r[1];return r[0]+e+" "+t.join(", ")+" "+r[1]}(u,l,S)):S[0]+l+S[1]}function p(t){return"["+Error.prototype.toString.call(t)+"]"}function d(t,e,r,n,i,o){var s,a,c;if((c=Object.getOwnPropertyDescriptor(e,i)||{value:e[i]}).get?a=c.set?t.stylize("[Getter/Setter]","special"):t.stylize("[Getter]","special"):c.set&&(a=t.stylize("[Setter]","special")),C(n,i)||(s="["+i+"]"),a||(t.seen.indexOf(c.value)<0?(a=m(r)?h(t,c.value,null):h(t,c.value,r-1)).indexOf("\n")>-1&&(a=o?a.split("\n").map((function(t){return"  "+t})).join("\n").slice(2):"\n"+a.split("\n").map((function(t){return"   "+t})).join("\n")):a=t.stylize("[Circular]","special")),w(s)){if(o&&i.match(/^\d+$/))return a;(s=JSON.stringify(""+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.slice(1,-1),s=t.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=t.stylize(s,"string"))}return s+": "+a}function v(t){return Array.isArray(t)}function g(t){return"boolean"==typeof t}function m(t){return null===t}function y(t){return"number"==typeof t}function b(t){return"string"==typeof t}function w(t){return void 0===t}function x(t){return S(t)&&"[object RegExp]"===k(t)}function S(t){return"object"==typeof t&&null!==t}function A(t){return S(t)&&"[object Date]"===k(t)}function O(t){return S(t)&&("[object Error]"===k(t)||t instanceof Error)}function E(t){return"function"==typeof t}function k(t){return Object.prototype.toString.call(t)}function T(t){return t<10?"0"+t.toString(10):t.toString(10)}e.debuglog=function(t){if(t=t.toUpperCase(),!s[t])if(a.test(t)){var r=n.pid;s[t]=function(){var n=e.format.apply(e,arguments);console.error("%s %d: %s",t,r,n)}}else s[t]=function(){};return s[t]},e.inspect=u,u.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},u.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},e.types=r(6622),e.isArray=v,e.isBoolean=g,e.isNull=m,e.isNullOrUndefined=function(t){return null==t},e.isNumber=y,e.isString=b,e.isSymbol=function(t){return"symbol"==typeof t},e.isUndefined=w,e.isRegExp=x,e.types.isRegExp=x,e.isObject=S,e.isDate=A,e.types.isDate=A,e.isError=O,e.types.isNativeError=O,e.isFunction=E,e.isPrimitive=function(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||void 0===t},e.isBuffer=r(9221);var _=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function C(t,e){return Object.prototype.hasOwnProperty.call(t,e)}e.log=function(){var t,r;console.log("%s - %s",(t=new Date,r=[T(t.getHours()),T(t.getMinutes()),T(t.getSeconds())].join(":"),[t.getDate(),_[t.getMonth()],r].join(" ")),e.format.apply(e,arguments))},e.inherits=r(9988),e._extend=function(t,e){if(!e||!S(e))return t;for(var r=Object.keys(e),n=r.length;n--;)t[r[n]]=e[r[n]];return t};var P="undefined"!=typeof Symbol?Symbol("util.promisify.custom"):void 0;function I(t,e){if(!t){var r=new Error("Promise was rejected with a falsy value");r.reason=t,t=r}return e(t)}e.promisify=function(t){if("function"!=typeof t)throw new TypeError('The "original" argument must be of type Function');if(P&&t[P]){var e;if("function"!=typeof(e=t[P]))throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(e,P,{value:e,enumerable:!1,writable:!1,configurable:!0}),e}function e(){for(var e,r,n=new Promise((function(t,n){e=t,r=n})),i=[],o=0;o<arguments.length;o++)i.push(arguments[o]);i.push((function(t,n){t?r(t):e(n)}));try{t.apply(this,i)}catch(t){r(t)}return n}return Object.setPrototypeOf(e,Object.getPrototypeOf(t)),P&&Object.defineProperty(e,P,{value:e,enumerable:!1,writable:!1,
25976configurable:!0}),Object.defineProperties(e,i(t))},e.promisify.custom=P,e.callbackify=function(t){if("function"!=typeof t)throw new TypeError('The "original" argument must be of type Function');function e(){for(var e=[],r=0;r<arguments.length;r++)e.push(arguments[r]);var i=e.pop();if("function"!=typeof i)throw new TypeError("The last argument must be of type Function");var o=this,s=function(){return i.apply(o,arguments)};t.apply(this,e).then((function(t){n.nextTick(s.bind(null,null,t))}),(function(t){n.nextTick(I.bind(null,t,s))}))}return Object.setPrototypeOf(e,Object.getPrototypeOf(t)),Object.defineProperties(e,i(t)),e}},1151:(t,e,r)=>{"use strict";var n=r(3625),i=r(659),o=r(9538);t.exports=function(t,e,r){var s,a;i(t);try{if(!(s=o(t,"return"))){if("throw"===e)throw r;return r}s=n(s,t)}catch(t){a=!0,s=t}if("throw"===e)throw r;if(a)throw s;return i(s),r}},1158:t=>{var e=/\s/;t.exports=function(t){for(var r=t.length;r--&&e.test(t.charAt(r)););return r}},1233:(t,e,r)=>{"use strict";var n=r(1067);if(n)try{n([],"length")}catch(t){n=null}t.exports=n},1261:(t,e,r)=>{"use strict";var n=r(573),i=r(3401);t.exports=function(t){var e=n(t,"string");return i(e)?e:e+""}},1274:(t,e,r)=>{"use strict";var n=r(3625),i=r(3844),o=r(671),s=r(3179),a=r(4175),c=r(6369),u=r(9538),l=r(3597).IteratorPrototype,f=r(381),h=r(1151),p=a("toStringTag"),d="IteratorHelper",v="WrapForValidIterator",g=c.set,m=function(t){var e=c.getterFor(t?v:d);return s(i(l),{next:function(){var r=e(this);if(t)return r.nextHandler();if(r.done)return f(void 0,!0);try{var n=r.nextHandler();return r.returnHandlerResult?n:f(n,r.done)}catch(t){throw r.done=!0,t}},return:function(){var r=e(this),i=r.iterator;if(r.done=!0,t){var o=u(i,"return");return o?n(o,i):f(void 0,!0)}if(r.inner)try{h(r.inner.iterator,"normal")}catch(t){return h(i,"throw",t)}return i&&h(i,"normal"),f(void 0,!0)}})},y=m(!0),b=m(!1);o(b,p,"Iterator Helper"),t.exports=function(t,e,r){var n=function(n,i){i?(i.iterator=n.iterator,i.next=n.next):i=n,i.type=e?v:d,i.returnHandlerResult=!!r,i.nextHandler=t,i.counter=0,i.done=!1,g(this,i)};return n.prototype=e?y:b,n}},1354:t=>{function e(t){return!!t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}t.exports=function(t){return null!=t&&(e(t)||function(t){return"function"==typeof t.readFloatLE&&"function"==typeof t.slice&&e(t.slice(0,0))}(t)||!!t._isBuffer)}},1358:t=>{"use strict";t.exports=Math.pow},1361:t=>{var e=Object.prototype.toString;function r(t){return"function"==typeof t.constructor?t.constructor.name:null}t.exports=function(t){if(void 0===t)return"undefined";if(null===t)return"null";var n=typeof t;if("boolean"===n)return"boolean";if("string"===n)return"string";if("number"===n)return"number";if("symbol"===n)return"symbol";if("function"===n)return"GeneratorFunction"===r(t)?"generatorfunction":"function";if(function(t){return Array.isArray?Array.isArray(t):t instanceof Array}(t))return"array";if(function(t){if(t.constructor&&"function"==typeof t.constructor.isBuffer)return t.constructor.isBuffer(t);return!1}(t))return"buffer";if(function(t){try{if("number"==typeof t.length&&"function"==typeof t.callee)return!0}catch(t){if(-1!==t.message.indexOf("callee"))return!0}return!1}(t))return"arguments";if(function(t){return t instanceof Date||"function"==typeof t.toDateString&&"function"==typeof t.getDate&&"function"==typeof t.setDate}(t))return"date";if(function(t){return t instanceof Error||"string"==typeof t.message&&t.constructor&&"number"==typeof t.constructor.stackTraceLimit}(t))return"error";if(function(t){return t instanceof RegExp||"string"==typeof t.flags&&"boolean"==typeof t.ignoreCase&&"boolean"==typeof t.multiline&&"boolean"==typeof t.global}(t))return"regexp";switch(r(t)){case"Symbol":return"symbol";case"Promise":return"promise";case"WeakMap":return"weakmap";case"WeakSet":return"weakset";case"Map":return"map";case"Set":return"set";case"Int8Array":return"int8array";case"Uint8Array":return"uint8array";case"Uint8ClampedArray":return"uint8clampedarray";case"Int16Array":return"int16array";case"Uint16Array":return"uint16array";
25976case"Int32Array":return"int32array";case"Uint32Array":return"uint32array";case"Float32Array":return"float32array";case"Float64Array":return"float64array"}if(function(t){return"function"==typeof t.throw&&"function"==typeof t.return&&"function"==typeof t.next}(t))return"generator";switch(n=e.call(t)){case"[object Object]":return"object";case"[object Map Iterator]":return"mapiterator";case"[object Set Iterator]":return"setiterator";case"[object String Iterator]":return"stringiterator";case"[object Array Iterator]":return"arrayiterator"}return n.slice(8,-1).toLowerCase().replace(/\s/g,"")}},1417:(t,e,r)=>{"use strict";var n=r(4102);t.exports=function(t){return n(t)||null===t}},1441:(t,e,r)=>{"use strict";var n=r(2484),i=r(2675),o=r(321),s=r(5719),a=r(3163),c=r(2718),u=function(){},l=a("Reflect","construct"),f=/^\s*(?:class|function)\b/,h=n(f.exec),p=!f.test(u),d=function(t){if(!o(t))return!1;try{return l(u,[],t),!0}catch(t){return!1}},v=function(t){if(!o(t))return!1;switch(s(t)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return p||!!h(f,c(t))}catch(t){return!0}};v.sham=!0,t.exports=!l||i((function(){var t;return d(d.call)||!d(Object)||!d((function(){t=!0}))||t}))?v:d},1530:t=>{"use strict";t.exports=Function.prototype.call},1568:(t,e,r)=>{"use strict";var n=r(8810),i=r(2961).findIndex,o=r(2153),s="findIndex",a=!0;s in[]&&Array(1)[s]((function(){a=!1})),n({target:"Array",proto:!0,forced:a},{findIndex:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),o(s)},1650:(t,e,r)=>{"use strict";var n=r(2484),i=r(8649),o=Math.floor,s=n("".charAt),a=n("".replace),c=n("".slice),u=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,l=/\$([$&'`]|\d{1,2})/g;t.exports=function(t,e,r,n,f,h){var p=r+t.length,d=n.length,v=l;return void 0!==f&&(f=i(f),v=u),a(h,v,(function(i,a){var u;switch(s(a,0)){case"$":return"$";case"&":return t;case"`":return c(e,0,r);case"'":return c(e,p);case"<":u=f[c(a,1,-1)];break;default:var l=+a;if(0===l)return i;if(l>d){var h=o(l/10);return 0===h?i:h<=d?void 0===n[h-1]?s(a,1):n[h-1]+s(a,1):i}u=n[l-1]}return void 0===u?"":u}))}},1661:t=>{"use strict";var e=function(){this.head=null,this.tail=null};e.prototype={add:function(t){var e={item:t,next:null},r=this.tail;r?r.next=e:this.head=e,this.tail=e},get:function(){var t=this.head;if(t)return null===(this.head=t.next)&&(this.tail=null),t.item}},t.exports=e},1678:(t,e,r)=>{"use strict";var n=r(8810),i=r(8649),o=r(6526),s=r(7391),a=r(8770),c=r(4643),u=r(3081),l=r(4929),f=r(4028),h=r(8458),p=r(2321)("splice"),d=Math.max,v=Math.min;n({target:"Array",proto:!0,forced:!p},{splice:function(t,e){var r,n,p,g,m,y,b=i(this),w=a(b),x=o(t,w),S=arguments.length;for(0===S?r=n=0:1===S?(r=0,n=w-x):(r=S-2,n=v(d(s(e),0),w-x)),u(w+r-n),p=l(b,n),g=0;g<n;g++)(m=x+g)in b&&f(p,g,b[m]);if(p.length=n,r<n){for(g=x;g<w-n;g++)y=g+r,(m=g+n)in b?b[y]=b[m]:h(b,y);for(g=w;g>w-n+r;g--)h(b,g-1)}else if(r>n)for(g=w-n;g>x;g--)y=g+r-1,(m=g+n-1)in b?b[y]=b[m]:h(b,y);for(g=0;g<r;g++)b[g+x]=arguments[g+2];return c(b,w-n+r),p}})},1701:(t,e,r)=>{"use strict";var n=r(8187),i=r(9997),o=r(7196),s=r(4983);t.exports=function(t){var e=o(arguments),r=t.length-(arguments.length-1);return n(e,1+(r>0?r:0),!0)},i?i(t.exports,"apply",{value:s}):t.exports.apply=s},1704:(t,e,r)=>{"use strict";var n=r(4461),i=r(9467),o=r(3071),s=r(6005);t.exports=function(t,e,r){for(var a=i(e),c=s.f,u=o.f,l=0;l<a.length;l++){var f=a[l];n(t,f)||r&&n(r,f)||c(t,f,u(e,f))}}},1715:(t,e,r)=>{"use strict";var n=r(6057),i=r(4102),o=r(4834),s=r(878);
25976t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,r={};try{(t=n(Object.prototype,"__proto__","set"))(r,[]),e=r instanceof Array}catch(t){}return function(r,n){return o(r),s(n),i(r)?(e?t(r,n):r.__proto__=n,r):r}}():void 0)},1742:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>n});const n='<button\r\n    class="prd-selectButton prd-utility-focusRing"\r\n    type="button"\r\n    {{#if attrs}}\r\n    {{{attrs}}}\r\n    {{/if}}\r\n>{{{content}}}</button>\r\n'},1759:(t,e,r)=>{"use strict";var n=r(7928),i=r(5236),o=r(6871);n||i(Object.prototype,"toString",o,{unsafe:!0})},1771:(t,e,r)=>{var n={"./add.js":5875,"./append.js":4706,"./default.js":5969,"./eq.js":2048,"./range.js":2741,"./toString.js":4286};function i(t){var e=o(t);return r(e)}function o(t){if(!r.o(n,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return n[t]}i.keys=function(){return Object.keys(n)},i.resolve=o,t.exports=i,i.id=1771},1784:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>n});const n='<span class="prd-divider"></span>\r\n'},1897:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>f});r(8037);var n=r(2561),i=r(6710),o=r(3008),s=r(3134),a=r(6973),c=(r(5549),r(5249),r(6160),r(9064),r(3376),r(1759),r(3544),r(6782));function u(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(u=function(){return!!t})()}var l="data-template-id",f=function(t){function e(){return(0,n.A)(this,e),t=this,r=e,i=arguments,r=(0,s.A)(r),(0,o.A)(t,u()?Reflect.construct(r,i||[],(0,s.A)(t).constructor):r.apply(t,i));var t,r,i}return(0,a.A)(e,t),(0,i.A)(e,[{key:"connect",value:function(){var t=this;this.containerTargets.forEach((function(e){var r=e.getAttribute(l);e.outerHTML=t.getTemplateById(r).innerHTML}))}},{key:"getTemplateById",value:function(t){return this.templateTargets.find((function(e){return e.getAttribute(l)===t}))}}])}(c.xI);f.targets=["template","container"]},1904:(t,e,r)=>{"use strict";var n=r(2748),i=r(2484);t.exports=function(t){if("Function"===n(t))return i(t)}},1908:(t,e,r)=>{"use strict";r(9688)("WeakSet",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),r(301))},1929:t=>{"use strict";t.exports=function(t,e){try{1===arguments.length?console.error(t):console.error(t,e)}catch(t){}}},1941:(t,e,r)=>{"use strict";var n=r(8052),i=Object.defineProperty;t.exports=function(t,e){try{i(n,t,{value:e,configurable:!0,writable:!0})}catch(r){n[t]=e}return e}},1948:(t,e,r)=>{"use strict";var n=r(2748);t.exports=Array.isArray||function(t){return"Array"===n(t)}},1955:(t,e,r)=>{"use strict";var n=r(2484),i=r(7391),o=r(7267),s=r(4834),a=n("".charAt),c=n("".charCodeAt),u=n("".slice),l=function(t){return function(e,r){var n,l,f=o(s(e)),h=i(r),p=f.length;return h<0||h>=p?t?"":void 0:(n=c(f,h))<55296||n>56319||h+1===p||(l=c(f,h+1))<56320||l>57343?t?a(f,h):n:t?u(f,h,h+2):l-56320+(n-55296<<10)+65536}};t.exports={codeAt:l(!1),charAt:l(!0)}},2006:(t,e,r)=>{"use strict";var n=r(8810),i=r(3625),o=r(2484),s=r(4834),a=r(321),c=r(9601),u=r(4584),l=r(7267),f=r(9538),h=r(3614),p=r(1650),d=r(4175),v=r(6007),g=d("replace"),m=TypeError,y=o("".indexOf),b=o("".replace),w=o("".slice),x=Math.max;n({target:"String",proto:!0},{replaceAll:function(t,e){var r,n,o,d,S,A,O,E,k,T,_=s(this),C=0,P="";if(!c(t)){if((r=u(t))&&(n=l(s(h(t))),!~y(n,"g")))throw new m("`.replaceAll` does not allow non-global regexes");if(o=f(t,g))return i(o,t,_,e);if(v&&r)return b(l(_),t,e)}for(d=l(_),S=l(t),(A=a(e))||(e=l(e)),O=S.length,E=x(1,O),k=y(d,S);-1!==k;)T=A?l(e(S,k,d)):p(S,d,k,[],void 0,e),P+=w(d,C,k)+T,C=k+O,k=k+E>d.length?-1:y(d,S,k+E);return C<d.length&&(P+=w(d,C)),P}})},2035:(t,e,r)=>{"use strict";var n=r(8810),i=r(3625),o=r(4334),s=r(1031),a=r(3443),c=r(1072);n({target:"Promise",stat:!0,forced:r(341)},{race:function(t){var e=this,r=s.f(e),n=r.reject,u=a((function(){var s=o(e.resolve);c(t,(function(t){i(s,e,t).then(r.resolve,n)}))}));return u.error&&n(u.value),r.promise}})},2048:(t,e,r)=>{var n=r(8887);t.exports=function(t,e,r){return 2===arguments.length&&(e=(r=e).hash.compare),n.value(t===e,this,r)}},2082:(t,e,r)=>{"use strict";var n=r(2484),i=r(4334),o=r(4102),s=r(4461),a=r(4540),c=r(3588),u=Function,l=n([].concat),f=n([].join),h={};t.exports=c?u.bind:function(t){var e=i(this),r=e.prototype,n=a(arguments,1
25976),c=function(){var r=l(n,a(arguments));return this instanceof c?function(t,e,r){if(!s(h,e)){for(var n=[],i=0;i<e;i++)n[i]="a["+i+"]";h[e]=u("C,a","return new C("+f(n,",")+")")}return h[e](t,r)}(e,r.length,r):e.apply(t,r)};return o(r)&&(c.prototype=r),c}},2128:(t,e,r)=>{"use strict";var n=r(2675);t.exports=!n((function(){return 7!==Object.defineProperty({},1,{get:function(){return 7}})[1]}))},2148:(t,e,r)=>{"use strict";var n=r(8810),i=r(3163),o=r(6007),s=r(5034),a=r(7032).CONSTRUCTOR,c=r(6794),u=i("Promise"),l=o&&!a;n({target:"Promise",stat:!0,forced:o||a},{resolve:function(t){return c(l&&this===u?s:this,t)}})},2153:(t,e,r)=>{"use strict";var n=r(4175),i=r(3844),o=r(6005).f,s=n("unscopables"),a=Array.prototype;void 0===a[s]&&o(a,s,{configurable:!0,value:i(null)}),t.exports=function(t){a[s][t]=!0}},2170:(t,e,r)=>{"use strict";var n=r(802);t.exports=n.getPrototypeOf||null},2173:(t,e,r)=>{"use strict";var n=r(8810),i=r(1031);n({target:"Promise",stat:!0,forced:r(7032).CONSTRUCTOR},{reject:function(t){var e=i.f(this);return(0,e.reject)(t),e.promise}})},2304:(t,e,r)=>{"use strict";var n=r(8810),i=r(3555);n({global:!0,forced:parseInt!==i},{parseInt:i})},2321:(t,e,r)=>{"use strict";var n=r(2675),i=r(4175),o=r(2763),s=i("species");t.exports=function(t){return o>=51||!n((function(){var e=[];return(e.constructor={})[s]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},2332:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>u});r(8037);var n=r(2561),i=r(6710),o=r(3008),s=r(3134),a=r(6973);r(7642),r(6160),r(9343),r(1759);function c(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(c=function(){return!!t})()}var u=function(t){function e(){return(0,n.A)(this,e),t=this,r=e,i=arguments,r=(0,s.A)(r),(0,o.A)(t,c()?Reflect.construct(r,i||[],(0,s.A)(t).constructor):r.apply(t,i));var t,r,i}return(0,a.A)(e,t),(0,i.A)(e,[{key:"addIfOn",value:function(t){this.areDescendantOf(t.target)&&this.element.classList.add(this.hoveringClass)}},{key:"removeIfOff",value:function(t){this.areDescendantOf(t.relatedTarget)||this.element.classList.remove(this.hoveringClass)}},{key:"areDescendantOf",value:function(t){for(;t;){if(this.itemTargets.some((function(e){return e===t})))return!0;t=t.parentElement}return!1}}])}(r(6782).xI);u.targets=["item"],u.classes=["hovering"]},2360:(t,e,r)=>{"use strict";var n=r(2675),i=r(321),o=/#|\.prototype\./,s=function(t,e){var r=c[a(t)];return r===l||r!==u&&(i(e)?n(e):!!e)},a=s.normalize=function(t){return String(t).replace(o,".").toLowerCase()},c=s.data={},u=s.NATIVE="N",l=s.POLYFILL="P";t.exports=s},2396:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>p});r(8037);var n=r(2561),i=r(6710),o=r(3008),s=r(3134),a=r(6973),c=(r(4958),r(7372),r(5549),r(5249),r(2614),r(4707),r(562),r(3082),r(3078),r(2558),r(6160),r(8021),r(9064),r(3376),r(9585),r(1759),r(7567),r(7560),r(3544),r(6782)),u=r(6596),l=r(3230),f=r(5413);function h(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(h=function(){return!!t})()}var p=function(t){function e(){var t,r,i,a;(0,n.A)(this,e);for(var c=arguments.length,u=new Array(c),l=0;l<c;l++)u[l]=arguments[l];return r=this,i=e,a=[].concat(u),i=(0,s.A)(i),(t=(0,o.A)(r,h()?Reflect.construct(i,a||[],(0,s.A)(r).constructor):i.apply(r,a))).prevState=null,t.modelCardSpecsContainerInnerTemplate=null,t}return(0,a.A)(e,t),(0,i.A)(e,[{key:"connect",value:function(){(0,l.P)(this,u.c,this.render.bind(this)),this.render(this.store.getState())}},{key:"change",value:function(){var t=this.checkedCheckboxes.map((function(t){return t.value}));this.store.setState({selectedModelIds:t})}},{key:"render",value:function(t){var e,r,n;if(t.selectedLineupId!==(null===(e=this.prevState)||void 0===e?void 0:e.selectedLineupId)){var i=t.lineups.find((function(e){return e.id===t.selectedLineupId})),o=t.models.filter((function(e){return e.lineupId===t.selectedLineupId}));this.titleTarget.textContent=i.name,this.totalTarget.textContent=o.length,this.modelCardSpecsContainerInnerTemplate||(this.modelCardSpecsContainerInnerTemplate=f.N.compile('\n                    {{#each models}}\n                    <div>\n                        {{> modules/model-card-specs inputType="checkbox" inputName="model" inputValue=id name=name specs=specs attrs=\'data-specs-select-lineup-group-target="modelCardSpecs"\' inputAttrs=\'data-action="change->specs-select-lineup-group#change"\'}}\n                    </div>\n                    {{/each}}\n                ')),this.modelCardSpecsContainerTarget.innerHTML=this.modelCardSpecsContainerInnerTemplate({models:o})}if(t.selectedModelIds!==(null===(r=this.prevState)||void 0===r?void 0:r.selectedModelIds)||t.selectableModelCount!==(null===(n=this.prevState)||void 0===n?void 0:n.selectableModelCount)){this.checkedCountTarget.textContent=Math.min(t.selectedModelIds.length,t.selectableModelCount);var s=t.selectedModelIds.slice(0,t.selectableModelCount),a=t.selectableModelCount>s.length;
25976this.modelCardSpecsTargets.forEach((function(t){var e=t.querySelector('input[type="checkbox"]'),r=s.includes(e.value);t.setAttribute("aria-disabled",!r&&!a),e.disabled=!r&&!a,e.checked=r}))}this.prevState=t}},{key:"checkboxes",get:function(){return Array.from(this.element.elements).filter((function(t){return"INPUT"===t.tagName&&"checkbox"===t.type}))}},{key:"checkedCheckboxes",get:function(){return this.checkboxes.filter((function(t){return t.checked}))}},{key:"uncheckedModelCardSpecsTargets",get:function(){return this.modelCardSpecsTargets.filter((function(t){return!t.querySelector('input[type="checkbox"]').checked}))}}])}(c.xI);p.targets=["title","total","checkedCount","modelCardSpecsContainer","modelCardSpecs"]},2407:(t,e,r)=>{"use strict";var n=r(2675);t.exports=!n((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype}))},2484:(t,e,r)=>{"use strict";var n=r(3588),i=Function.prototype,o=i.call,s=n&&i.bind.bind(o,o);t.exports=n?s:function(t){return function(){return o.apply(t,arguments)}}},2492:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});var n=r(6492);function i(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,i,o,s,a=[],c=!0,u=!1;try{if(o=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=o.call(r)).done)&&(a.push(n.value),a.length!==e);c=!0);}catch(t){u=!0,i=t}finally{try{if(!c&&null!=r.return&&(s=r.return(),Object(s)!==s))return}finally{if(u)throw i}}return a}}(t,e)||(0,n.A)(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}},2537:(t,e,r)=>{"use strict";var n=r(2675),i=r(8052).RegExp,o=n((function(){var t=i("a","y");return t.lastIndex=2,null!==t.exec("abcd")})),s=o||n((function(){return!i("a","y").sticky})),a=o||n((function(){var t=i("^r","gy");return t.lastIndex=2,null!==t.exec("str")}));t.exports={BROKEN_CARET:a,MISSED_STICKY:s,UNSUPPORTED_Y:o}},2558:(t,e,r)=>{"use strict";var n=r(2128),i=r(4690).EXISTS,o=r(2484),s=r(6038),a=Function.prototype,c=o(a.toString),u=/function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/,l=o(u.exec);n&&!i&&s(a,"name",{configurable:!0,get:function(){try{return l(u,c(this))[1]}catch(t){return""}}})},2561:(t,e,r)=>{"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}r.d(e,{A:()=>n})},2589:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>n});const n='<table class="prd-specsSelectTable">\r\n    <thead>\r\n        <tr role="row">\r\n            <th class="prd-utility-visuallyHidden" scope="row" colspan="2" role="rowheader">Model</th>\r\n            {{#each models}}\r\n            <th\r\n                scope="col"\r\n                role="columnheader"\r\n                data-controller="modal-dialog-opener"\r\n                data-action="series-header:open-model-dialog-{{@index}}@window->modal-dialog-opener#open"\r\n            >\r\n                <p class="prd-specsSelectTable-modelImageWrapper prd-utility-marginBottom-3">\r\n                    {{#if this}}\r\n                    <img\r\n                        class="prd-specsSelectTable-modelImage"\r\n                        src="{{imageUrl}}"\r\n                        width="300"\r\n                        height="300"\r\n                        alt=""\r\n                        decoding="async"\r\n                        loading="lazy"\r\n                    >\r\n                    {{/if}}\r\n                </p>\r\n                {{> modules/select-button content=(default name "Select a Model") attrs=\'data-action="modal-dialog-opener#open"\'}}\r\n                <script type="text/x-template" data-modal-dialog-opener-target="template">\r\n                    {{#> modules/modal-dialog variant="full" label="Select a Model" attrs=\'data-action="specs-select-model-group:dismiss@window->modal-dialog#close"\'}}\r\n                    {{> modelModalDialogContent index=@index}}\r\n                    {{/modules/modal-dialog}}\r\n                <\/script>\r\n                {{#if @first}}\r\n                <div data-controller="specs-header-intersection"></div>\r\n                {{/if}}\r\n            </th>\r\n            {{/each}}\r\n            {{#each (range (add models.length -3))}}\r\n            <th\r\n                scope="col"\r\n                role="columnheader"\r\n                data-controller="modal-dialog-opener"\r\n                data-action="series-header:open-model-dialog-{{add @root.models.length @index}}@window->modal-dialog-opener#open"\r\n            >
25976\r\n                <p class="prd-specsSelectTable-modelImageWrapper prd-utility-marginBottom-3">\r\n                    <img\r\n                        class="prd-specsSelectTable-modelImage"\r\n                        src="/img/products/specs-select-placeholder.png"\r\n                        width="300"\r\n                        height="300"\r\n                        alt=""\r\n                        decoding="async"\r\n                        loading="lazy"\r\n                    >\r\n                </p>\r\n                {{> modules/select-button content="Select a Model" attrs=\'data-action="modal-dialog-opener#open"\'}}\r\n                <script type="text/x-template" data-modal-dialog-opener-target="template">\r\n                    {{#> modules/modal-dialog variant="full" label="Select a Model" attrs=\'data-action="specs-select-model-group:dismiss@window->modal-dialog#close"\'}}\r\n                    {{> modelModalDialogContent index=(add @root.models.length @index)}}\r\n                    {{/modules/modal-dialog}}\r\n                <\/script>\r\n                {{#unless models}}\r\n                {{#if @first}}\r\n                <div data-controller="specs-header-intersection"></div>\r\n                {{/if}}\r\n                {{/unless}}\r\n            </th>\r\n            {{/each}}\r\n        </tr>\r\n    </thead>\r\n    <tbody class="prd-layout-stack of-space-7">\r\n        {{#each models.[0].rows}}\r\n        {{#each rows}}\r\n        <tr role="row">\r\n            {{#each @root.models}}\r\n            {{#if @../first}}\r\n            {{#if @first}}\r\n            <th\r\n                scope="row"\r\n                {{#unless ../../rows.[1]}}\r\n                colspan="2"\r\n                {{/unless}}\r\n                rowspan="{{../../rows.length}}"\r\n                role="rowheader"\r\n            >\r\n                <p class="prd-utility-heading-4 prd-smallScreen-marginBottom-3 prd-largeScreen-marginBottom-4">\r\n                    {{../../heading}}\r\n                </p>\r\n                {{> modules/divider}}\r\n                <div class="prd-utility-marginBottom-3"></div>\r\n            </th>\r\n            {{/if}}\r\n            {{/if}}\r\n            {{#if @first}}\r\n            {{#if ../heading}}\r\n            <th scope="row" role="rowheader">\r\n                <p class="prd-utility-visuallyHidden">{{../heading}}</p>\r\n                <div class="prd-specsSelectTable-subHeader prd-layout-switcher of-row smallScreen-space-3 largeScreen-space-7">\r\n                    {{#each @root.models}}\r\n                    <p\r\n                        class="prd-utility-heading-5 prd-utility-marginBottom-0"\r\n                        aria-hidden="true"\r\n                    >\r\n                        {{lookup (lookup (lookup (lookup rows @../../../index) "rows") @../../index) "heading"}}\r\n                    </p>\r\n                    {{/each}}\r\n                    {{#each (range (add @root.models.length -3))}}\r\n                    <p class="prd-utility-marginBottom-0" aria-hidden="true"></p>\r\n                    {{/each}}\r\n                </div>\r\n                <div class="prd-utility-marginBottom-1"></div>\r\n            </th>\r\n            {{/if}}\r\n            {{/if}}\r\n            <td class="prd-utility-body-small" role="cell">\r\n                {{{lookup (lookup (lookup (lookup rows @../../index) "rows") @../index) "body"}}}\r\n            </td>\r\n            {{/each}}\r\n            {{#each (range (add @root.models.length -3))}}\r\n            <td role="cell"></td>\r\n            {{/each}}\r\n        </tr>\r\n        {{/each}}\r\n        {{/each}}\r\n    </tbody>\r\n    <tfoot>\r\n        <tr>\r\n            <td class="prd-utility-visuallyHidden" colspan="2"></td>\r\n            {{#each models}}\r\n            <td role="cell">\r\n                {{#if this}}\r\n                {{> modules/button link=url content="More Details"}}\r\n                {{/if}}\r\n            </td>\r\n            {{/each}}\r\n            {{#each (range (add models.length -3))}}\r\n            <td role="cell"></td>\r\n            {{/each}}\r\n        </tr>\r\n    </tfoot>\r\n</table>\r\n{{#*inline "modelModalDialogContent"}}\r\n<form data-controller="specs-select-model-group" data-specs-select-model-group-index-value="{{index}}">\r\n    <section class="prd-layout-container">\r\n        <div class="prd-utility-marginBottom-7"></div>\r\n        <div class="prd-layout-cluster of-spaceX-5 of-justifyContent-between of-alignItems-center">\r\n            <h2 class="prd-utility-heading-2">Select a Models</h2>\r\n            <output class="prd-utility-heading-4"><span data-specs-select-model-group-target="selectedCount">0</span> / 1</output>\r\n        </div>\r\n        <div class="prd-utility-marginBottom-5"></div>\r\n        {{> modules/divider}}\r\n        <div class="prd-smallScreen-marginBottom-7 prd-largeScreen-marginBottom-9"></div>\r\n        <div class="prd-layout-cluster of-alignItems-end smallScreen-spaceX-2 largeScreen-spaceX-3">\r\n            <p class="prd-utility-heading-3 prd-utility-marginBottom-0" data-specs-select-model-group-target="title"></p>\r\n            <small class="prd-utility-color-gray">(<span data-specs-select-model-group-target="total">0</span> products)</small>\r\n        </div>\r\n        <div class="prd-smallScreen-marginBottom-3 prd-largeScreen-marginBottom-7"></div>\r\n        <div\r\n            class="prd-layout-grid smallScreen-column-2 extraSmallScreen-column-1 largeScreen-column-4 of-spaceX-7 of-spaceY-9 smallScreen-spaceY-0"\r\n            data-specs-select-model-group-target="modelCardSpecsContainer"\r\n        ></div>\r\n        <div class="prd-utility-marginBottom-9"></div>\r\n    </section>\r\n</form>\r\n{{/inline}}\r\n'},2610:(t,e,r)=>{"use strict";var n=r(4009);t.exports=function(t){return!!n(t)}},2614:(t,e,r)=>{"use strict";var n=r(8810),i=r(600);n({target:"Array",stat:!0,forced:!r(9976)((function(t){Array.from(t)}))},{from:i})},2675:t=>{"use strict";
25976t.exports=function(t){try{return!!t()}catch(t){return!0}}},2718:(t,e,r)=>{"use strict";var n=r(2484),i=r(321),o=r(2921),s=n(Function.toString);i(o.inspectSource)||(o.inspectSource=function(t){return s(t)}),t.exports=o.inspectSource},2741:(t,e,r)=>{var n=r(5355);t.exports=function(){var t=Array.from(arguments).slice(0,-1);return n.apply(null,t)}},2748:(t,e,r)=>{"use strict";var n=r(2484),i=n({}.toString),o=n("".slice);t.exports=function(t){return o(i(t),8,-1)}},2763:(t,e,r)=>{"use strict";var n,i,o=r(8052),s=r(3291),a=o.process,c=o.Deno,u=a&&a.versions||c&&c.version,l=u&&u.v8;l&&(i=(n=l.split("."))[0]>0&&n[0]<4?1:+(n[0]+n[1])),!i&&s&&(!(n=s.match(/Edge\/(\d+)/))||n[1]>=74)&&(n=s.match(/Chrome\/(\d+)/))&&(i=+n[1]),t.exports=i},2848:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>Xt});r(8037);var n=r(2561),i=r(6710),o=r(3008),s=r(3134),a=r(6973),c=(r(5424),r(6782));const u=t=>t.hasOwnProperty("x")&&t.hasOwnProperty("y"),l=t=>u(t)&&t.hasOwnProperty("z"),f=t=>"number"==typeof t,h=(t,e)=>Math.abs(t-e);function p(t,e){var r={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.indexOf(n)<0&&(r[n]=t[n]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(n=Object.getOwnPropertySymbols(t);i<n.length;i++)e.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(t,n[i])&&(r[n[i]]=t[n[i]])}return r}Object.create;Object.create;const d=(t,e,r)=>Math.min(Math.max(r,t),e),v=.001;function g({duration:t=800,bounce:e=.25,velocity:r=0,mass:n=1}){let i,o,s=1-e;s=d(.05,1,s),t=d(.01,10,t/1e3),s<1?(i=e=>{const n=e*s,i=n*t,o=n-r,a=y(e,s),c=Math.exp(-i);return v-o/a*c},o=e=>{const n=e*s*t,o=n*r+r,a=Math.pow(s,2)*Math.pow(e,2)*t,c=Math.exp(-n),u=y(Math.pow(e,2),s);return(-i(e)+v>0?-1:1)*((o-a)*c)/u}):(i=e=>Math.exp(-e*t)*((e-r)*t+1)-.001,o=e=>Math.exp(-e*t)*(t*t*(r-e)));const a=function(t,e,r){let n=r;for(let r=1;r<m;r++)n-=t(n)/e(n);return n}(i,o,5/t);if(t*=1e3,isNaN(a))return{stiffness:100,damping:10,duration:t};{const e=Math.pow(a,2)*n;return{stiffness:e,damping:2*s*Math.sqrt(n*e),duration:t}}}const m=12;function y(t,e){return t*Math.sqrt(1-e*e)}const b=["duration","bounce"],w=["stiffness","damping","mass"];function x(t,e){return e.some((e=>void 0!==t[e]))}function S(t){var{from:e=0,to:r=1,restSpeed:n=2,restDelta:i}=t,o=p(t,["from","to","restSpeed","restDelta"]);const s={done:!1,value:e};let{stiffness:a,damping:c,mass:u,velocity:l,duration:f,isResolvedFromDuration:h}=function(t){let e=Object.assign({velocity:0,stiffness:100,damping:10,mass:1,isResolvedFromDuration:!1},t);if(!x(t,w)&&x(t,b)){const r=g(t);e=Object.assign(Object.assign(Object.assign({},e),r),{velocity:0,mass:1}),e.isResolvedFromDuration=!0}return e}(o),d=A,v=A;function m(){const t=l?-l/1e3:0,n=r-e,o=c/(2*Math.sqrt(a*u)),s=Math.sqrt(a/u)/1e3;if(void 0===i&&(i=Math.min(Math.abs(r-e)/100,.4)),o<1){const e=y(s,o);d=i=>{const a=Math.exp(-o*s*i);return r-a*((t+o*s*n)/e*Math.sin(e*i)+n*Math.cos(e*i))},v=r=>{const i=Math.exp(-o*s*r);return o*s*i*(Math.sin(e*r)*(t+o*s*n)/e+n*Math.cos(e*r))-i*(Math.cos(e*r)*(t+o*s*n)-e*n*Math.sin(e*r))}}else if(1===o)d=e=>r-Math.exp(-s*e)*(n+(t+s*n)*e);else{const e=s*Math.sqrt(o*o-1);d=i=>{const a=Math.exp(-o*s*i),c=Math.min(e*i,300);return r-a*((t+o*s*n)*Math.sinh(c)+e*n*Math.cosh(c))/e}}}return m(),{next:t=>{const e=d(t);if(h)s.done=t>=f;else{const o=1e3*v(t),a=Math.abs(o)<=n,c=Math.abs(r-e)<=i;s.done=a&&c}return s.value=s.done?r:e,s},flipTarget:()=>{l=-l,[e,r]=[r,e],m()}}}S.needsInterpolation=(t,e)=>"string"==typeof t||"string"==typeof e;const A=t=>0,O=(t,e,r)=>{const n=e-t;return 0===n?1:(r-t)/n},E=(t,e,r)=>-r*t+r*e+t,k=(t,e)=>r=>Math.max(Math.min(r,e),t),T=t=>t%1?Number(t.toFixed(5)):t,_=/(-)?([\d]*\.?[\d])+/g,C=/(#[0-9a-f]{6}|#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2}(-?[\d\.]+%?)\s*[\,\/]?\s*[\d\.]*%?\))/gi,P=/^(#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2}(-?[\d\.]+%?)\s*[\,\/]?\s*[\d\.]*%?\))$/i;function I(t){return"string"==typeof t}const j={test:t=>"number"==typeof t,parse:parseFloat,transform:t=>t},M=Object.assign(Object.assign({},j),{transform:k(0,1)}),L=(Object.assign(Object.assign({},j),{default:1}),(t,e)=>r=>Boolean(I(r)&&P.test(r)&&r.startsWith(t)||e&&Object.prototype.hasOwnProperty.call(r,e))),N=(t,e,r)=>n=>{if(!I(n))return n;const[i,o,s,a]=n.match(_);return{[t]:parseFloat(i),[e]:parseFloat(o),[r]:parseFloat(s),alpha:void 0!==a?parseFloat(a):1}},B=k(0,255),R=Object.assign(Object.assign({},j),{transform:t=>Math.round(B(t))}),D={test:L("rgb","red"),parse:N("red","green","blue"),transform:({red:t,green:e,blue:r,alpha:n=1})=>"rgba("+R.transform(t)+", "+R.transform(e)+", "+R.transform(r)+", "+T(M.transform(n))+")"};const F={test:L("#"),parse:function(t){let e="",r="",n="",i="";return t.length>5?(e=t.substr(1,2),r=t.substr(3,2),n=t.substr(5,2),i=t.substr(7,2)):(e=t.substr(1,1),r=t.substr(2,1),n=t.substr(3,1),i=t.substr(4,1),e+=e,r+=r,n+=n,i+=i),{red:parseInt(e,16),green:parseInt(r,16),blue:parseInt(n,16),alph
25976a:i?parseInt(i,16)/255:1}},transform:D.transform},$=t=>({test:e=>I(e)&&e.endsWith(t)&&1===e.split(" ").length,parse:parseFloat,transform:e=>`${e}${t}`}),H=($("deg"),$("%")),z=($("px"),$("vh"),$("vw"),Object.assign(Object.assign({},H),{parse:t=>H.parse(t)/100,transform:t=>H.transform(100*t)}),{test:L("hsl","hue"),parse:N("hue","saturation","lightness"),transform:({hue:t,saturation:e,lightness:r,alpha:n=1})=>"hsla("+Math.round(t)+", "+H.transform(T(e))+", "+H.transform(T(r))+", "+T(M.transform(n))+")"});function V(t,e,r){return r<0&&(r+=1),r>1&&(r-=1),r<1/6?t+6*(e-t)*r:r<.5?e:r<2/3?t+(e-t)*(2/3-r)*6:t}function U({hue:t,saturation:e,lightness:r,alpha:n}){t/=360,r/=100;let i=0,o=0,s=0;if(e/=100){const n=r<.5?r*(1+e):r+e-r*e,a=2*r-n;i=V(a,n,t+1/3),o=V(a,n,t),s=V(a,n,t-1/3)}else i=o=s=r;return{red:Math.round(255*i),green:Math.round(255*o),blue:Math.round(255*s),alpha:n}}const W=(t,e,r)=>{const n=t*t,i=e*e;return Math.sqrt(Math.max(0,r*(i-n)+n))},K=[F,D,z],G=t=>K.find((e=>e.test(t))),q=t=>`'${t}' is not an animatable color. Use the equivalent color code instead.`,J=(t,e)=>{let r=G(t),n=G(e);q(t),q(e);let i=r.parse(t),o=n.parse(e);r===z&&(i=U(i),r=D),n===z&&(o=U(o),n=D);const s=Object.assign({},i);return t=>{for(const e in s)"alpha"!==e&&(s[e]=W(i[e],o[e],t));return s.alpha=E(i.alpha,o.alpha,t),r.transform(s)}},Y=t=>D.test(t)||F.test(t)||z.test(t),X=t=>D.test(t)?D.parse(t):z.test(t)?z.parse(t):F.parse(t),Q=t=>I(t)?t:t.hasOwnProperty("red")?D.transform(t):z.transform(t),Z="${c}",tt="${n}";function et(t){"number"==typeof t&&(t=`${t}`);const e=[];let r=0;const n=t.match(C);n&&(r=n.length,t=t.replace(C,Z),e.push(...n.map(X)));const i=t.match(_);return i&&(t=t.replace(_,tt),e.push(...i.map(j.parse))),{values:e,numColors:r,tokenised:t}}function rt(t){return et(t).values}function nt(t){const{values:e,numColors:r,tokenised:n}=et(t),i=e.length;return t=>{let e=n;for(let n=0;n<i;n++)e=e.replace(n<r?Z:tt,n<r?Q(t[n]):T(t[n]));return e}}const it=t=>"number"==typeof t?0:t;const ot={test:function(t){var e,r,n,i;return isNaN(t)&&I(t)&&(null!==(r=null===(e=t.match(_))||void 0===e?void 0:e.length)&&void 0!==r?r:0)+(null!==(i=null===(n=t.match(C))||void 0===n?void 0:n.length)&&void 0!==i?i:0)>0},parse:rt,createTransformer:nt,getAnimatableNone:function(t){const e=rt(t);return nt(t)(e.map(it))}},st=(t,e)=>r=>e(t(r)),at=(...t)=>t.reduce(st);function ct(t,e){return f(t)?r=>E(t,e,r):Y(t)?J(t,e):ht(t,e)}const ut=(t,e)=>{const r=[...t],n=r.length,i=t.map(((t,r)=>ct(t,e[r])));return t=>{for(let e=0;e<n;e++)r[e]=i[e](t);return r}},lt=(t,e)=>{const r=Object.assign(Object.assign({},t),e),n={};for(const i in r)void 0!==t[i]&&void 0!==e[i]&&(n[i]=ct(t[i],e[i]));return t=>{for(const e in n)r[e]=n[e](t);return r}};function ft(t){const e=ot.parse(t),r=e.length;let n=0,i=0,o=0;for(let t=0;t<r;t++)n||"number"==typeof e[t]?n++:void 0!==e[t].hue?o++:i++;return{parsed:e,numNumbers:n,numRGB:i,numHSL:o}}const ht=(t,e)=>{const r=ot.createTransformer(e),n=ft(t),i=ft(e);return n.numHSL===i.numHSL&&n.numRGB===i.numRGB&&n.numNumbers>=i.numNumbers?at(ut(n.parsed,i.parsed),r):r=>`${r>0?e:t}`},pt=(t,e)=>r=>E(t,e,r);function dt(t,e,r){const n=[],i=r||("number"==typeof(o=t[0])?pt:"string"==typeof o?Y(o)?J:ht:Array.isArray(o)?ut:"object"==typeof o?lt:void 0);var o;const s=t.length-1;for(let r=0;r<s;r++){let o=i(t[r],t[r+1]);if(e){const t=Array.isArray(e)?e[r]:e;o=at(t,o)}n.push(o)}return n}function vt(t,e,{clamp:r=!0,ease:n,mixer:i}={}){const o=t.length;e.length,!n||!Array.isArray(n)||n.length,t[0]>t[o-1]&&(t=[].concat(t),e=[].concat(e),t.reverse(),e.reverse());const s=dt(e,n,i),a=2===o?function([t,e],[r]){return n=>r(O(t,e,n))}(t,s):function(t,e){const r=t.length,n=r-1;return i=>{let o=0,s=!1;if(i<=t[0]?s=!0:i>=t[n]&&(o=n-1,s=!0),!s){let e=1;for(;e<r&&!(t[e]>i||e===n);e++);o=e-1}const a=O(t[o],t[o+1],i);return e[o](a)}}(t,s);return r?e=>a(d(t[0],t[o-1],e)):a}const gt=t=>e=>1-t(1-e),mt=t=>e=>e<=.5?t(2*e)/2:(2-t(2*(1-e)))/2,yt=t=>e=>e*e*((t+1)*e-t),bt=4/11,wt=8/11,xt=(St=2,t=>Math.pow(t,St));var St;gt(xt);const At=mt(xt),Ot=(mt(gt((t=>1-Math.sin(Math.acos(t))))),yt(1.525)),Et=(gt(Ot),mt(Ot),(t=>{const e=yt(t)}
25976)(1.525),4356/361),kt=35442/1805,Tt=16061/1805,_t=t=>{if(1===t||0===t)return t;const e=t*t;return t<bt?7.5625*e:t<wt?9.075*e-9.9*t+3.4:t<.9?Et*e-kt*t+Tt:10.8*t*t-20.52*t+10.72};gt(_t);function Ct(t,e){return t.map((()=>e||At)).splice(0,t.length-1)}function Pt({from:t=0,to:e=1,ease:r,offset:n,duration:i=300}){const o={done:!1,value:t},s=Array.isArray(e)?e:[t,e],a=function(t,e){return t.map((t=>t*e))}(n&&n.length===s.length?n:function(t){const e=t.length;return t.map(((t,r)=>0!==r?r/(e-1):0))}(s),i);function c(){return vt(a,s,{ease:Array.isArray(r)?r:Ct(s,r)})}let u=c();return{next:t=>(o.value=u(t),o.done=t>=i,o),flipTarget:()=>{s.reverse(),u=c()}}}const It={keyframes:Pt,spring:S,decay:function({velocity:t=0,from:e=0,power:r=.8,timeConstant:n=350,restDelta:i=.5,modifyTarget:o}){const s={done:!1,value:e};let a=r*t;const c=e+a,u=void 0===o?c:o(c);return u!==c&&(a=u-e),{next:t=>{const e=-a*Math.exp(-t/n);return s.done=!(e>i||e<-i),s.value=s.done?u:u+e,s},flipTarget:()=>{}}}};r(5249),r(6108),r(1759),r(6741),r(995);var jt=1/60*1e3,Mt="undefined"!=typeof performance?function(){return performance.now()}:function(){return Date.now()},Lt="undefined"!=typeof window?function(t){return window.requestAnimationFrame(t)}:function(t){return setTimeout((function(){return t(Mt())}),jt)};r(9872),r(3348),r(3838),r(1678),r(7560),r(34),r(2901);var Nt=!0,Bt=!1,Rt=!1,Dt={delta:0,timestamp:0},Ft=["read","update","preRender","render","postRender"],$t=Ft.reduce((function(t,e){return t[e]=function(t){var e=[],r=[],n=0,i=!1,o=!1,s=new WeakSet,a={schedule:function(t){var o=arguments.length>2&&void 0!==arguments[2]&&arguments[2]&&i,a=o?e:r;return arguments.length>1&&void 0!==arguments[1]&&arguments[1]&&s.add(t),-1===a.indexOf(t)&&(a.push(t),o&&i&&(n=e.length)),t},cancel:function(t){var e=r.indexOf(t);-1!==e&&r.splice(e,1),s.delete(t)},process:function(c){if(i)o=!0;else{i=!0;var u=[r,e];if(e=u[0],(r=u[1]).length=0,n=e.length)for(var l=0;l<n;l++){var f=e[l];f(c),s.has(f)&&(a.schedule(f),t())}i=!1,o&&(o=!1,a.process(c))}}};return a}((function(){return Bt=!0})),t}),{}),Ht=Ft.reduce((function(t,e){var r=$t[e];return t[e]=function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return Bt||Wt(),r.schedule(t,e,n)},t}),{}),zt=Ft.reduce((function(t,e){return t[e]=$t[e].cancel,t}),{}),Vt=(Ft.reduce((function(t,e){return t[e]=function(){return $t[e].process(Dt)},t}),{}),function(t){return $t[t].process(Dt)}),Ut=function(t){Bt=!1,Dt.delta=Nt?jt:Math.max(Math.min(t-Dt.timestamp,40),1),Dt.timestamp=t,Rt=!0,Ft.forEach(Vt),Rt=!1,Bt&&(Nt=!1,Lt(Ut))},Wt=function(){Bt=!0,Nt=!0,Rt||Lt(Ut)};const Kt=Ht;function Gt(t,e,r=0){return t-e-r}const qt=t=>{const e=({delta:e})=>t(e);return{start:()=>Kt.update(e,!0),stop:()=>zt.update(e)}};function Jt(t){var e,r,{from:n,autoplay:i=!0,driver:o=qt,elapsed:s=0,repeat:a=0,repeatType:c="loop",repeatDelay:u=0,onPlay:l,onStop:f,onComplete:h,onRepeat:d,onUpdate:v}
25976=t,g=p(t,["from","autoplay","driver","elapsed","repeat","repeatType","repeatDelay","onPlay","onStop","onComplete","onRepeat","onUpdate"]);let m,y,b,{to:w}=g,x=0,A=g.duration,O=!1,E=!0;const k=function(t){if(Array.isArray(t.to))return Pt;if(It[t.type])return It[t.type];const e=new Set(Object.keys(t));return e.has("ease")||e.has("duration")&&!e.has("dampingRatio")?Pt:e.has("dampingRatio")||e.has("stiffness")||e.has("mass")||e.has("damping")||e.has("restSpeed")||e.has("restDelta")?S:Pt}(g);(null===(r=(e=k).needsInterpolation)||void 0===r?void 0:r.call(e,n,w))&&(b=vt([0,100],[n,w],{clamp:!1}),n=0,w=100);const T=k(Object.assign(Object.assign({},g),{from:n,to:w}));function _(){x++,"reverse"===c?(E=x%2==0,s=function(t,e,r=0,n=!0){return n?Gt(e+-t,e,r):e-(t-e)+r}(s,A,u,E)):(s=Gt(s,A,u),"mirror"===c&&T.flipTarget()),O=!1,d&&d()}function C(t){if(E||(t=-t),s+=t,!O){const t=T.next(Math.max(0,s));y=t.value,b&&(y=b(y)),O=E?t.done:s<=0}null==v||v(y),O&&(0===x&&(null!=A||(A=s)),x<a?function(t,e,r,n){return n?t>=e+r:t<=-r}(s,A,u,E)&&_():(m.stop(),h&&h()))}return i&&(null==l||l(),m=o(C),m.start()),{stop:()=>{null==f||f(),m.stop()}}}function Yt(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(Yt=function(){return!!t})()}var Xt=function(t){function e(){return(0,n.A)(this,e),t=this,r=e,i=arguments,r=(0,s.A)(r),(0,o.A)(t,Yt()?Reflect.construct(r,i||[],(0,s.A)(t).constructor):r.apply(t,i));var t,r,i}return(0,a.A)(e,t),(0,i.A)(e,[{key:"run",value:function(t){var e=this,r={x:this.containerTarget.scrollLeft,y:this.containerTarget.scrollTop},n={x:Number(t.currentTarget.getAttribute("data-x-coord")),y:Number(t.currentTarget.getAttribute("data-y-coord"))};Jt({from:r,to:n,duration:1.5*function(t,e){if(f(t)&&f(e))return h(t,e);if(u(t)&&u(e)){const r=h(t.x,e.x),n=h(t.y,e.y),i=l(t)&&l(e)?h(t.z,e.z):0;return Math.sqrt(Math.pow(r,2)+Math.pow(n,2)+Math.pow(i,2))}}(r,n),onUpdate:function(t){var r=t.x,n=t.y;e.containerTarget.scrollLeft=r,e.containerTarget.scrollTop=n}})}}])}(c.xI);Xt.targets=["container"]},2868:(t,e,r)=>{"use strict";var n=r(2484),i=0,o=Math.random(),s=n(1..toString);t.exports=function(t){return"Symbol("+(void 0===t?"":t)+")_"+s(++i+o,36)}},2900:(t,e,r)=>{"use strict";var n=r(3291);
vendor: 3,757 bytes, line 25976
25976t.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(n)},2901:(t,e,r)=>{"use strict";var n=r(8052),i=r(5004),o=r(7140),s=r(3348),a=r(671),c=r(8819),u=r(4175)("iterator"),l=s.values,f=function(t,e){if(t){if(t[u]!==l)try{a(t,u,l)}catch(e){t[u]=l}if(c(t,e,!0),i[e])for(var r in s)if(t[r]!==s[r])try{a(t,r,s[r])}catch(e){t[r]=s[r]}}};for(var h in i)f(n[h]&&n[h].prototype,h);f(o,"DOMTokenList")},2921:(t,e,r)=>{"use strict";var n=r(6007),i=r(8052),o=r(1941),s="__core-js_shared__",a=t.exports=i[s]||o(s,{});(a.versions||(a.versions=[])).push({version:"3.41.0",mode:n?"pure":"global",copyright:"© 2014-2025 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.41.0/LICENSE",source:"https://github.com/zloirock/core-js"})},2961:(t,e,r)=>{"use strict";var n=r(9004),i=r(2484),o=r(51),s=r(8649),a=r(8770),c=r(4929),u=i([].push),l=function(t){var e=1===t,r=2===t,i=3===t,l=4===t,f=6===t,h=7===t,p=5===t||f;return function(d,v,g,m){for(var y,b,w=s(d),x=o(w),S=a(x),A=n(v,g),O=0,E=m||c,k=e?E(d,S):r||h?E(d,0):void 0;S>O;O++)if((p||O in x)&&(b=A(y=x[O],O,w),t))if(e)k[O]=b;else if(b)switch(t){case 3:return!0;case 5:return y;case 6:return O;case 2:u(k,y)}else switch(t){case 4:return!1;case 7:u(k,y)}return f?-1:i||l?l:k}};t.exports={forEach:l(0),map:l(1),filter:l(2),some:l(3),every:l(4),find:l(5),findIndex:l(6),filterReject:l(7)}},3008:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});var n=r(3224);function i(t,e){if(e&&("object"==(0,n.A)(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}},3026:(t,e,r)=>{"use strict";var n=r(7391),i=Math.min;t.exports=function(t){var e=n(t);return e>0?i(e,9007199254740991):0}},3037:(t,e,r)=>{"use strict";var n=r(2128),i=r(706),o=r(6005),s=r(659),a=r(8969),c=r(4700);e.f=n&&!i?Object.defineProperties:function(t,e){s(t);for(var r,n=a(e),i=c(e),u=i.length,l=0;u>l;)o.f(t,r=i[l++],n[r]);return t}},3049:(t,e,r)=>{"use strict";var n=r(4690).PROPER,i=r(5236),o=r(659),s=r(7267),a=r(2675),c=r(3614),u="toString",l=RegExp.prototype,f=l[u],h=a((function(){return"/a/b"!==f.call({source:"a",flags:"b"})})),p=n&&f.name!==u;(h||p)&&i(l,u,(function(){var t=o(this);return"/"+s(t.source)+"/"+s(c(t))}),{unsafe:!0})},3071:(t,e,r)=>{"use strict";var n=r(2128),i=r(3625),o=r(7769),s=r(5936),a=r(8969),c=r(1261),u=r(4461),l=r(4113),f=Object.getOwnPropertyDescriptor;e.f=n?f:function(t,e){if(t=a(t),e=c(e),l)try{return f(t,e)}catch(t){}if(u(t,e))return s(!i(o.f,t,e),t[e])}},3078:(t,e,r)=>{"use strict";var n=r(8810),i=r(2082);n({target:"Function",proto:!0,forced:Function.bind!==i},{bind:i})},3081:t=>{"use strict";var e=TypeError;t.exports=function(t){if(t>9007199254740991)throw e("Maximum allowed index exceeded");return t}},3082:(t,e,r)=>{"use strict";var n=r(8810),i=r(1948),o=r(1441),s=r(4102),a=r(6526),c=r(8770),u=r(8969),l=r(4028),f=r(4175),h=r(2321),p=r(4540),d=h("slice"),v=f("species"),g=Array,m=Math.max;n({target:"Array",proto:!0,forced:!d},{slice:function(t,e){var r,n,f,h=u(this),d=c(h),y=a(t,d),b=a(void 0===e?d:e,d);if(i(h)&&(r=h.constructor,(o(r)&&(r===g||i(r.prototype))||s(r)&&null===(r=r[v]))&&(r=void 0),r===g||void 0===r))return p(h,y,b);for(n=new(void 0===r?g:r)(m(b-y,0)),f=0;y<b;y++,f++)y in h&&l(n,f,h[y]);return n.length=f,n}})},3087:(t,e,r)=>{"use strict";var n=r(2675),i=r(5936);t.exports=!n((function(){var t=new Error("a");return!("stack"in t)||(Object.defineProperty(t,"stack",i(1,7)),7!==t.stack)}))},3112:(t,e,r)=>{"use strict";var n=r(1441),i=r(8379),o=TypeError;t.exports=function(t){if(n(t))return t;throw new o(i(t)+" is not a constructor")}},3134:(t,e,r)=>{"use strict";
vendor: 3,588 bytes, line 25976
25976function n(t){return n=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},n(t)}r.d(e,{A:()=>n})},3163:(t,e,r)=>{"use strict";var n=r(8052),i=r(321);t.exports=function(t,e){return arguments.length<2?(r=n[t],i(r)?r:void 0):n[t]&&n[t][e];var r}},3179:(t,e,r)=>{"use strict";var n=r(5236);t.exports=function(t,e,r){for(var i in e)n(t,i,e[i],r);return t}},3184:t=>{var e,r,n=t.exports={};function i(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function s(t){if(e===setTimeout)return setTimeout(t,0);if((e===i||!e)&&setTimeout)return e=setTimeout,setTimeout(t,0);try{return e(t,0)}catch(r){try{return e.call(null,t,0)}catch(r){return e.call(this,t,0)}}}!function(){try{e="function"==typeof setTimeout?setTimeout:i}catch(t){e=i}try{r="function"==typeof clearTimeout?clearTimeout:o}catch(t){r=o}}();var a,c=[],u=!1,l=-1;function f(){u&&a&&(u=!1,a.length?c=a.concat(c):l=-1,c.length&&h())}function h(){if(!u){var t=s(f);u=!0;for(var e=c.length;e;){for(a=c,c=[];++l<e;)a&&a[l].run();l=-1,e=c.length}a=null,u=!1,function(t){if(r===clearTimeout)return clearTimeout(t);if((r===o||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(t);try{return r(t)}catch(e){try{return r.call(null,t)}catch(e){return r.call(this,t)}}}(t)}}function p(t,e){this.fun=t,this.array=e}function d(){}n.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)e[r-1]=arguments[r];c.push(new p(t,e)),1!==c.length||u||s(h)},p.prototype.run=function(){this.fun.apply(null,this.array)},n.title="browser",n.browser=!0,n.env={},n.argv=[],n.version="",n.versions={},n.on=d,n.addListener=d,n.once=d,n.off=d,n.removeListener=d,n.removeAllListeners=d,n.emit=d,n.prependListener=d,n.prependOnceListener=d,n.listeners=function(t){return[]},n.binding=function(t){throw new Error("process.binding is not supported")},n.cwd=function(){return"/"},n.chdir=function(t){throw new Error("process.chdir is not supported")},n.umask=function(){return 0}},3224:(t,e,r)=>{"use strict";function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}r.d(e,{A:()=>n})},3230:(t,e,r)=>{"use strict";r.d(e,{P:()=>n});r(3078),r(4702);function n(t,e,r){e.subscribe(r);var n=t.disconnect.bind(t);Object.assign(t,{store:e,disconnect:function(){e.unsubscribe(r),n()}})}},3259:(t,e,r)=>{"use strict";var n=r(4584),i=TypeError;t.exports=function(t){if(n(t))throw new i("The method doesn't accept regular expressions");return t}},3291:(t,e,r)=>{"use strict";var n=r(8052).navigator,i=n&&n.userAgent;t.exports=i?String(i):""},3299:(t,e,r)=>{"use strict";var n=r(8810),i=r(2961).every;n({target:"Array",proto:!0,forced:!r(8754)("every")},{every:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}})},3316:(t,e,r)=>{"use strict";var n=r(6891);t.exports=n&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},3348:(t,e,r)=>{"use strict";var n=r(8969),i=r(2153),o=r(6609),s=r(6369),a=r(6005).f,c=r(8676),u=r(381),l=r(6007),f=r(2128),h="Array Iterator",p=s.set,d=s.getterFor(h);t.exports=c(Array,"Array",(function(t,e){p(this,{type:h,target:n(t),index:0,kind:e})}),(function(){var t=d(this),e=t.target,r=t.index++;if(!e||r>=e.length)return t.target=null,u(void 0,!0);switch(t.kind){case"keys":return u(r,!1);case"values":return u(e[r],!1)}return u([r,e[r]],!1)}),"values");var v=o.Arguments=o.Array;
25976if(i("keys"),i("values"),i("entries"),!l&&f&&"values"!==v.name)try{a(v,"name",{value:"values"})}catch(t){}},3376:(t,e,r)=>{"use strict";var n=r(8810),i=r(1072),o=r(4334),s=r(659),a=r(779);n({target:"Iterator",proto:!0,real:!0},{forEach:function(t){s(this),o(t);var e=a(this),r=0;i(e,(function(e){t(e,r++)}),{IS_RECORD:!0})}})},3401:(t,e,r)=>{"use strict";var n=r(3163),i=r(321),o=r(7837),s=r(3316),a=Object;t.exports=s?function(t){return"symbol"==typeof t}:function(t){var e=n("Symbol");return i(e)&&o(e.prototype,a(t))}},3406:(t,e,r)=>{"use strict";var n=r(8810),i=r(5150).trim;n({target:"String",proto:!0,forced:r(790)("trim")},{trim:function(){return i(this)}})},3409:(t,e,r)=>{"use strict";var n=r(3291).match(/firefox\/(\d+)/i);t.exports=!!n&&+n[1]},3443:t=>{"use strict";t.exports=function(t){try{return{error:!1,value:t()}}catch(t){return{error:!0,value:t}}}},3452:t=>{"use strict";t.exports=Math.min},3515:(t,e,r)=>{"use strict";var n=r(981);t.exports=function(t){return n(t)||0===t?t:t<0?-1:1}},3536:(t,e,r)=>{var n=r(6990),i=r(6184);t.exports=function(t){return"symbol"==typeof t||i(t)&&"[object Symbol]"==n(t)}},3539:(t,e,r)=>{"use strict";var n=r(3291).match(/AppleWebKit\/(\d+)\./);t.exports=!!n&&+n[1]},3544:(t,e,r)=>{"use strict";var n=r(8052),i=r(5004),o=r(7140),s=r(9311),a=r(671),c=function(t){if(t&&t.forEach!==s)try{a(t,"forEach",s)}catch(e){t.forEach=s}};for(var u in i)i[u]&&c(n[u]&&n[u].prototype);c(o)},3555:(t,e,r)=>{"use strict";var n=r(8052),i=r(2675),o=r(2484),s=r(7267),a=r(5150).trim,c=r(4912),u=n.parseInt,l=n.Symbol,f=l&&l.iterator,h=/^[+-]?0x/i,p=o(h.exec),d=8!==u(c+"08")||22!==u(c+"0x16")||f&&!i((function(){u(Object(f))}));t.exports=d?function(t,e){var r=a(s(t));return u(r,e>>>0||(p(h,r)?16:10))}:u},3572:(t,e,r)=>{var n=r(7066),i=r(6015),o=r(3536),s=/^[-+]0x[0-9a-f]+$/i,a=/^0b[01]+$/i,c=/^0o[0-7]+$/i,u=parseInt;t.exports=function(t){if("number"==typeof t)return t;if(o(t))return NaN;if(i(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=i(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=n(t);var r=a.test(t);return r||c.test(t)?u(t.slice(2),r?2:8):s.test(t)?NaN:+t}},3588:(t,e,r)=>{"use strict";var n=r(2675);t.exports=!n((function(){var t=function(){}.bind();return"function"!=typeof t||t.hasOwnProperty("prototype")}))},3597:(t,e,r)=>{"use strict";var n,i,o,s=r(2675),a=r(321),c=r(4102),u=r(3844),l=r(5927),f=r(5236),h=r(4175),p=r(6007),d=h("iterator"),v=!1;[].keys&&("next"in(o=[].keys())?(i=l(l(o)))!==Object.prototype&&(n=i):v=!0),!c(n)||s((function(){var t={};return n[d].call(t)!==t}))?n={}:p&&(n=u(n)),a(n[d])||f(n,d,(function(){return this})),t.exports={IteratorPrototype:n,BUGGY_SAFARI_ITERATORS:v}},3598:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>u});r(8037);var n=r(2561),i=r(6710),o=r(3008),s=r(3134),a=r(6973);r(5249),r(6160),r(3376),r(1759),r(3544);function c(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(c=function(){return!!t})()}var u=function(t){function e(){return(0,n.A)(this,e),t=this,r=e,i=arguments,r=(0,s.A)(r),(0,o.A)(t,c()?Reflect.construct(r,i||[],(0,s.A)(t).constructor):r.apply(t,i));var t,r,i}return(0,a.A)(e,t),(0,i.A)(e,[{key:"toggle",value:function(t){var e=t.detail.checked;this.itemTargets.forEach((function(t){t.setAttribute("aria-hidden",!e)})),this.onlyVisibleTargets.forEach((function(t){t.setAttribute("aria-hidden",!e)})),this.onlyHiddenTargets.forEach((function(t){t.setAttribute("aria-hidden",e)}))}}])}(r(6782).xI);u.targets=["item","onlyVisible","onlyHidden"]},3613:(t,e,r)=>{"use strict";var n=r(5600),i="undefined"==typeof globalThis?r.g:globalThis;t.exports=function(){for(var t=[],e=0;e<n.length;e++)"function"==typeof i[n[e]]&&(t[t.length]=n[e]);return t}},3614:(t,e,r)=>{"use strict";var n=r(3625),i=r(4461),o=r(7837),s=r(8303),a=RegExp.prototype;t.exports=function(t){var e=t.flags;return void 0!==e||"flags"in a||i(t,"flags")||!o(a,t)?e:n(s,t)}},3625:(t,e,r)=>{"use strict";var n=r(3588),i=Function.prototype.call;t.exports=n?i.bind(i):function(){return i.apply(i,arguments)}},3663:(t,e,r)=>{"use strict";var n=r(8682),i=r(6725),o=n("RegExp.prototype.exec"),s=r(6757);t.exports=function(t){if(!i(t))throw new s("`regex` must be a RegExp");return function(e){return null!==o(t,e)}}},3703:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>n});
vendor: 4,822 bytes, line 25976
25976const n='<div\r\n    class="prd-modalDialog{{#if variant}} of-{{variant}}{{/if}}"\r\n    role="dialog"\r\n    aria-label="{{label}}"\r\n    aria-modal="true"\r\n    aria-hidden="true"\r\n    data-controller="modal-dialog"\r\n    {{#if attrs}}\r\n    {{{attrs}}}\r\n    {{/if}}\r\n>\r\n    <div class="prd-modalDialog-backdrop" data-action="click->modal-dialog#close"></div>\r\n    <div class="prd-modalDialog-container">\r\n        <div>\r\n            <div class="prd-layout-container">\r\n                <div class="prd-smallScreen-marginBottom-2 prd-largeScreen-marginBottom-3"></div>\r\n                <p class="prd-layout-cluster smallScreen-justifyContent-end largeScreen-justifyContent-center prd-utility-marginBottom-0">\r\n                    <button\r\n                        class="prd-modalDialog-closeButton prd-utility-focusRing"\r\n                        type="button"\r\n                        aria-label="Close"\r\n                        data-action="modal-dialog#close"\r\n                    >\r\n                        <svg class="prd-modalDialog-closeButtonIcon" viewBox="0 0 28 28">\r\n                            <path d="M19.9227 10.0232L17.9428 8.04334L13.983 12.0031L10.0232 8.04334L8.04334 10.0232L12.0031 13.983L8.04334 17.9428L10.0232 19.9227L13.983 15.9629L17.9428 19.9227L19.9227 17.9428L15.9629 13.983L19.9227 10.0232ZM23.8825 4.08354C18.4378 -1.36118 9.52826 -1.36118 4.08354 4.08354C-1.36118 9.52826 -1.36118 18.4378 4.08354 23.8825C9.52826 29.3273 18.4378 29.3273 23.8825 23.8825C29.3273 18.4378 29.3273 9.52826 23.8825 4.08354ZM6.06344 21.9026C1.70766 17.5469 1.70766 10.4192 6.06344 6.06344C10.4192 1.70766 17.5469 1.70766 21.9026 6.06344C26.2584 10.4192 26.2584 17.5469 21.9026 21.9026C17.5469 26.2584 10.4192 26.2584 6.06344 21.9026Z"/>\r\n                        </svg>\r\n                    </button>\r\n                </p>\r\n                <div class="prd-smallScreen-marginBottom-2 prd-largeScreen-marginBottom-3"></div>\r\n            </div>\r\n        </div>\r\n        <div class="prd-modalDialog-contentWrapper">\r\n            <div class="prd-modalDialog-content prd-utility-focusRing prd-utility-maxWidth-extraNarrow" tabindex="0">\r\n                <div class="prd-modalDialog-contentInner">\r\n                    {{> @partial-block }}\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</div>\r\n'},3709:(t,e,r)=>{"use strict";var n=r(4175),i=r(6609),o=n("iterator"),s=Array.prototype;t.exports=function(t){return void 0!==t&&(i.Array===t||s[o]===t)}},3743:(t,e,r)=>{var n,i;!function(o){n=[r(9324)],i=function(t){return function(t,e){"use strict";var r={extend:function(t,e){for(var r in e)t[r]=e[r];return t},modulo:function(t,e){return(t%e+e)%e}},n=Array.prototype.slice;r.makeArray=function(t){return Array.isArray(t)?t:null==t?[]:"object"==typeof t&&"number"==typeof t.length?n.call(t):[t]},r.removeFrom=function(t,e){var r=t.indexOf(e);-1!=r&&t.splice(r,1)},r.getParent=function(t,r){for(;t.parentNode&&t!=document.body;)if(t=t.parentNode,e(t,r))return t},r.getQueryElement=function(t){return"string"==typeof t?document.querySelector(t):t},r.handleEvent=function(t){var e="on"+t.type;this[e]&&this[e](t)},r.filterFindElements=function(t,n){t=r.makeArray(t);var i=[];return t.forEach((function(t){if(t instanceof HTMLElement)if(n){e(t,n)&&i.push(t);for(var r=t.querySelectorAll(n),o=0;o<r.length;o++)i.push(r[o])}else i.push(t)})),i},r.debounceMethod=function(t,e,r){r=r||100;var n=t.prototype[e],i=e+"Timeout";t.prototype[e]=function(){var t=this[i];clearTimeout(t);var e=arguments,o=this;this[i]=setTimeout((function(){n.apply(o,e),delete o[i]}),r)}},r.docReady=function(t){var e=document.readyState;"complete"==e||"interactive"==e?setTimeout(t):document.addEventListener("DOMContentLoaded",t)},r.toDashed=function(t){return t.replace(/(.)([A-Z])/g,(function(t,e,r){return e+"-"+r})).toLowerCase()};var i=t.console;return r.htmlInit=function(e,n){r.docReady((function(){var o=r.toDashed(n),s="data-"+o,a=document.querySelectorAll("["+s+"]"),c=document.querySelectorAll(".js-"+o),u=r.makeArray(a).concat(r.makeArray(c)),l=s+"-options",f=t.jQuery;u.forEach((function(t){var r,o=t.getAttribute(s)||t.getAttribute(l);try{r=o&&JSON.parse(o)}catch(e){return void(i&&i.error("Error parsing "+s+" on "+t.className+": "+e))}var a=new e(t,r);f&&f.data(t,n,a)}))}))},r}(o,t)}.apply(e,n),void 0===i||(t.exports=i)}(window)},3765:(t,e,r)=>{"use strict";var n=r(8810),i=r(8052),o=r(3625),s=r(2484),a=r(6007),c=r(2128),u=r(6891),l=r(2675),f=r(4461),h=r(7837),p=r(659),d=r(8969),v=r(1261),g=r(7267),m=r(5936),y=r(3844),b=r(4700),w=r(4956),x=r(6766),S=r(9073),A=r(3071),O=r(6005),E=r(3037),k=r(7769),T=r(5236),_=r(6038),C=r(6445),P=r(3779),I=r(6617),j=r(2868),M=r(4175),L=r(5672),N=r(4515),B=r(8438),R=r(8819),D=r(6369),F=r(2961).forEac
25976h,$=P("hidden"),H="Symbol",z="prototype",V=D.set,U=D.getterFor(H),W=Object[z],K=i.Symbol,G=K&&K[z],q=i.RangeError,J=i.TypeError,Y=i.QObject,X=A.f,Q=O.f,Z=x.f,tt=k.f,et=s([].push),rt=C("symbols"),nt=C("op-symbols"),it=C("wks"),ot=!Y||!Y[z]||!Y[z].findChild,st=function(t,e,r){var n=X(W,e);n&&delete W[e],Q(t,e,r),n&&t!==W&&Q(W,e,n)},at=c&&l((function(){return 7!==y(Q({},"a",{get:function(){return Q(this,"a",{value:7}).a}})).a}))?st:Q,ct=function(t,e){var r=rt[t]=y(G);return V(r,{type:H,tag:t,description:e}),c||(r.description=e),r},ut=function(t,e,r){t===W&&ut(nt,e,r),p(t);var n=v(e);return p(r),f(rt,n)?(r.enumerable?(f(t,$)&&t[$][n]&&(t[$][n]=!1),r=y(r,{enumerable:m(0,!1)})):(f(t,$)||Q(t,$,m(1,y(null))),t[$][n]=!0),at(t,n,r)):Q(t,n,r)},lt=function(t,e){p(t);var r=d(e),n=b(r).concat(dt(r));return F(n,(function(e){c&&!o(ft,r,e)||ut(t,e,r[e])})),t},ft=function(t){var e=v(t),r=o(tt,this,e);return!(this===W&&f(rt,e)&&!f(nt,e))&&(!(r||!f(this,e)||!f(rt,e)||f(this,$)&&this[$][e])||r)},ht=function(t,e){var r=d(t),n=v(e);if(r!==W||!f(rt,n)||f(nt,n)){var i=X(r,n);return!i||!f(rt,n)||f(r,$)&&r[$][n]||(i.enumerable=!0),i}},pt=function(t){var e=Z(d(t)),r=[];return F(e,(function(t){f(rt,t)||f(I,t)||et(r,t)})),r},dt=function(t){var e=t===W,r=Z(e?nt:d(t)),n=[];return F(r,(function(t){!f(rt,t)||e&&!f(W,t)||et(n,rt[t])})),n};u||(T(G=(K=function(){if(h(G,this))throw new J("Symbol is not a constructor");var t=arguments.length&&void 0!==arguments[0]?g(arguments[0]):void 0,e=j(t),r=function(t){var n=void 0===this?i:this;n===W&&o(r,nt,t),f(n,$)&&f(n[$],e)&&(n[$][e]=!1);var s=m(1,t);try{at(n,e,s)}catch(t){if(!(t instanceof q))throw t;st(n,e,s)}};return c&&ot&&at(W,e,{configurable:!0,set:r}),ct(e,t)})[z],"toString",(function(){return U(this).tag})),T(K,"withoutSetter",(function(t){return ct(j(t),t)})),k.f=ft,O.f=ut,E.f=lt,A.f=ht,w.f=x.f=pt,S.f=dt,L.f=function(t){return ct(M(t),t)},c&&(_(G,"description",{configurable:!0,get:function(){return U(this).description}}),a||T(W,"propertyIsEnumerable",ft,{unsafe:!0}))),n({global:!0,constructor:!0,wrap:!0,forced:!u,sham:!u},{Symbol:K}),F(b(it),(function(t){N(t)})),n({target:H,stat:!0,forced:!u},{useSetter:function(){ot=!0},useSimple:function(){ot=!1}}),n({target:"Object",stat:!0,forced:!u,sham:!c},{create:function(t,e){return void 0===e?y(t):lt(y(t),e)},defineProperty:ut,defineProperties:lt,getOwnPropertyDescriptor:ht}),n({target:"Object",stat:!0,forced:!u},{getOwnPropertyNames:pt}),B(),R(K,H),I[$]=!0},3779:(t,e,r)=>{"use strict";var n=r(6445),i=r(2868),o=n("keys");t.exports=function(t){return o[t]||(o[t]=i(t))}},3790:function(t){var e;e=function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={exports:{},id:n,loaded:!1};return t[n].call(i.exports,i,i.exports,r),i.loaded=!0,i.exports}return r.m=t,r.c=e,r.p="",r(0)}([function(t,e,r){"use strict";var n=r(1).default;e.__esModule=!0;var i=n(r(2)),o=n(r(84)),s=r(85),a=r(90),c=n(r(91)),u=n(r(88)),l=n(r(83)),f=i.default.create;function h(){var t=f();return t.compile=function(e,r){return a.compile(e,r,t)},t.precompile=function(e,r){return a.precompile(e,r,t)},t.AST=o.default,t.Compiler=a.Compiler,t.JavaScriptCompiler=c.default,t.Parser=s.parser,t.parse=s.parse,t.parseWithoutProcessing=s.parseWithoutProcessing,t}var p=h();p.create=h,l.default(p),p.Visitor=u.default,p.default=p,e.default=p,t.exports=e.default},function(t,e){"use strict";e.default=function(t){return t&&t.__esModule?t:{default:t}},e.__esModule=!0},function(t,e,r){"use strict";var n=r(3).default,i=r(1).default;e.__esModule=!0;var o=n(r(4)),s=i(r(77)),a=i(r(6)),c=n(r(5)),u=n(r(78)),l=i(r(83));function f(){var t=new o.HandlebarsEnvironment;return c.extend(t,o),t.SafeString=s.default,t.Exception=a.default,t.Utils=c,t.escapeExpression=c.escapeExpression,t.VM=u,t.template=function(e){return u.template(e,t)},t}var h=f();h.create=f,l.default(h),h.default=h,e.default=h,t.exports=e.default},function(t,e){"use strict";e.default=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e}
vendor: 4,232 bytes, line 25976
25976,e.__esModule=!0},function(t,e,r){"use strict";var n=r(1).default;e.__esModule=!0,e.HandlebarsEnvironment=f;var i=r(5),o=n(r(6)),s=r(10),a=r(70),c=n(r(72)),u=r(73);e.VERSION="4.7.8",e.COMPILER_REVISION=8,e.LAST_COMPATIBLE_COMPILER_REVISION=7,e.REVISION_CHANGES={1:"<= 1.0.rc.2",2:"== 1.0.0-rc.3",3:"== 1.0.0-rc.4",4:"== 1.x.x",5:"== 2.0.0-alpha.x",6:">= 2.0.0-beta.1",7:">= 4.0.0 <4.3.0",8:">= 4.3.0"};var l="[object Object]";function f(t,e,r){this.helpers=t||{},this.partials=e||{},this.decorators=r||{},s.registerDefaultHelpers(this),a.registerDefaultDecorators(this)}f.prototype={constructor:f,logger:c.default,log:c.default.log,registerHelper:function(t,e){if(i.toString.call(t)===l){if(e)throw new o.default("Arg not supported with multiple helpers");i.extend(this.helpers,t)}else this.helpers[t]=e},unregisterHelper:function(t){delete this.helpers[t]},registerPartial:function(t,e){if(i.toString.call(t)===l)i.extend(this.partials,t);else{if(void 0===e)throw new o.default('Attempting to register a partial called "'+t+'" as undefined');this.partials[t]=e}},unregisterPartial:function(t){delete this.partials[t]},registerDecorator:function(t,e){if(i.toString.call(t)===l){if(e)throw new o.default("Arg not supported with multiple decorators");i.extend(this.decorators,t)}else this.decorators[t]=e},unregisterDecorator:function(t){delete this.decorators[t]},resetLoggedPropertyAccesses:function(){u.resetLoggedProperties()}};var h=c.default.log;e.log=h,e.createFrame=i.createFrame,e.logger=c.default},function(t,e){"use strict";e.__esModule=!0,e.extend=s,e.indexOf=function(t,e){for(var r=0,n=t.length;r<n;r++)if(t[r]===e)return r;return-1},e.escapeExpression=function(t){if("string"!=typeof t){if(t&&t.toHTML)return t.toHTML();if(null==t)return"";if(!t)return t+"";t=""+t}return i.test(t)?t.replace(n,o):t},e.isEmpty=function(t){return!t&&0!==t||!(!u(t)||0!==t.length)},e.createFrame=function(t){var e=s({},t);return e._parent=t,e},e.blockParams=function(t,e){return t.path=e,t},e.appendContextPath=function(t,e){return(t?t+".":"")+e};var r={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;","=":"&#x3D;"},n=/[&<>"'`=]/g,i=/[&<>"'`=]/;function o(t){return r[t]}function s(t){for(var e=1;e<arguments.length;e++)for(var r in arguments[e])Object.prototype.hasOwnProperty.call(arguments[e],r)&&(t[r]=arguments[e][r]);return t}var a=Object.prototype.toString;e.toString=a;var c=function(t){return"function"==typeof t};c(/x/)&&(e.isFunction=c=function(t){return"function"==typeof t&&"[object Function]"===a.call(t)}),e.isFunction=c;var u=Array.isArray||function(t){return!(!t||"object"!=typeof t)&&"[object Array]"===a.call(t)};e.isArray=u},function(t,e,r){"use strict";var n=r(7).default;e.__esModule=!0;var i=["description","fileName","lineNumber","endLineNumber","message","name","number","stack"];function o(t,e){var r=e&&e.loc,s=void 0,a=void 0,c=void 0,u=void 0;r&&(s=r.start.line,a=r.end.line,c=r.start.column,u=r.end.column,t+=" - "+s+":"+c);for(var l=Error.prototype.constructor.call(this,t),f=0;f<i.length;f++)this[i[f]]=l[i[f]];Error.captureStackTrace&&Error.captureStackTrace(this,o);try{r&&(this.lineNumber=s,this.endLineNumber=a,n?(Object.defineProperty(this,"column",{value:c,enumerable:!0}),Object.defineProperty(this,"endColumn",{value:u,enumerable:!0})):(this.column=c,this.endColumn=u))}catch(t){}}o.prototype=new Error,e.default=o,t.exports=e.default},function(t,e,r){t.exports={default:r(8),__esModule:!0}},function(t,e,r){var n=r(9);t.exports=function(t,e,r){return n.setDesc(t,e,r)}},function(t,e){var r=Object;t.exports={create:r.create,getProto:r.getPrototypeOf,isEnum:{}.propertyIsEnumerable,getDesc:r.getOwnPropertyDescriptor,setDesc:r.defineProperty,setDescs:r.defineProperties,getKeys:r.keys,getNames:r.getOwnPropertyNames,getSymbols:r.getOwnPropertySymbols,each:[].forEach}},function(t,e,r){"use strict";var n=r(1).default;e.__esModule=!0,e.registerDefaultHelpers=function(t){i.default(t),o.default(t),s.default(t),a.default(t),c.default(t),u.default(t),l.default(t)},e.moveHelperToHooks=function(t,e,r){t.helpers[e]&&(t.hooks[e]=t.helpers[e],r||delete t.helpers[e])};var i=n(r(11)),o=n(r(12)),s=n(r(65)),a=n(r(66)),c=n(r(67)),u=n(r(68)),l=n(r(69))},function(t,e,r){"use strict";
vendor: 12,495 bytes, line 25976
25976e.__esModule=!0;var n=r(5);e.default=function(t){t.registerHelper("blockHelperMissing",(function(e,r){var i=r.inverse,o=r.fn;if(!0===e)return o(this);if(!1===e||null==e)return i(this);if(n.isArray(e))return e.length>0?(r.ids&&(r.ids=[r.name]),t.helpers.each(e,r)):i(this);if(r.data&&r.ids){var s=n.createFrame(r.data);s.contextPath=n.appendContextPath(r.data.contextPath,r.name),r={data:s}}return o(e,r)}))},t.exports=e.default},function(t,e,r){"use strict";var n=r(13).default,i=r(43).default,o=r(55).default,s=r(60).default,a=r(1).default;e.__esModule=!0;var c=r(5),u=a(r(6));e.default=function(t){t.registerHelper("each",(function(t,e){if(!e)throw new u.default("Must pass iterator to #each");var r,a=e.fn,l=e.inverse,f=0,h="",p=void 0,d=void 0;function v(e,r,n){p&&(p.key=e,p.index=r,p.first=0===r,p.last=!!n,d&&(p.contextPath=d+e)),h+=a(t[e],{data:p,blockParams:c.blockParams([t[e],e],[d+e,null])})}if(e.data&&e.ids&&(d=c.appendContextPath(e.data.contextPath,e.ids[0])+"."),c.isFunction(t)&&(t=t.call(this)),e.data&&(p=c.createFrame(e.data)),t&&"object"==typeof t)if(c.isArray(t))for(var g=t.length;f<g;f++)f in t&&v(f,f,f===t.length-1);else if("function"==typeof n&&t[i]){for(var m=[],y=o(t),b=y.next();!b.done;b=y.next())m.push(b.value);for(g=(t=m).length;f<g;f++)v(f,f,f===t.length-1)}else r=void 0,s(t).forEach((function(t){void 0!==r&&v(r,f-1),r=t,f++})),void 0!==r&&v(r,f-1,!0);return 0===f&&(h=l(this)),h}))},t.exports=e.default},function(t,e,r){t.exports={default:r(14),__esModule:!0}},function(t,e,r){r(15),r(42),t.exports=r(21).Symbol},function(t,e,r){"use strict";var n=r(9),i=r(16),o=r(17),s=r(18),a=r(20),c=r(24),u=r(19),l=r(27),f=r(28),h=r(30),p=r(29),d=r(31),v=r(36),g=r(37),m=r(38),y=r(39),b=r(32),w=r(26),x=n.getDesc,S=n.setDesc,A=n.create,O=v.get,E=i.Symbol,k=i.JSON,T=k&&k.stringify,_=!1,C=p("_hidden"),P=n.isEnum,I=l("symbol-registry"),j=l("symbols"),M="function"==typeof E,L=Object.prototype,N=s&&u((function(){return 7!=A(S({},"a",{get:function(){return S(this,"a",{value:7}).a}})).a}))?function(t,e,r){var n=x(L,e);n&&delete L[e],S(t,e,r),n&&t!==L&&S(L,e,n)}:S,B=function(t){var e=j[t]=A(E.prototype);return e._k=t,s&&_&&N(L,t,{configurable:!0,set:function(e){o(this,C)&&o(this[C],t)&&(this[C][t]=!1),N(this,t,w(1,e))}}),e},R=function(t){return"symbol"==typeof t},D=function(t,e,r){return r&&o(j,e)?(r.enumerable?(o(t,C)&&t[C][e]&&(t[C][e]=!1),r=A(r,{enumerable:w(0,!1)})):(o(t,C)||S(t,C,w(1,{})),t[C][e]=!0),N(t,e,r)):S(t,e,r)},F=function(t,e){y(t);for(var r,n=g(e=b(e)),i=0,o=n.length;o>i;)D(t,r=n[i++],e[r]);return t},$=function(t,e){return void 0===e?A(t):F(A(t),e)},H=function(t){var e=P.call(this,t);return!(e||!o(this,t)||!o(j,t)||o(this,C)&&this[C][t])||e},z=function(t,e){var r=x(t=b(t),e);return!r||!o(j,e)||o(t,C)&&t[C][e]||(r.enumerable=!0),r},V=function(t){for(var e,r=O(b(t)),n=[],i=0;r.length>i;)o(j,e=r[i++])||e==C||n.push(e);return n},U=function(t){for(var e,r=O(b(t)),n=[],i=0;r.length>i;)o(j,e=r[i++])&&n.push(j[e]);return n},W=u((function(){var t=E();return"[null]"!=T([t])||"{}"!=T({a:t})||"{}"!=T(Object(t))}));M||(E=function(){if(R(this))throw TypeError("Symbol is not a constructor");return B(h(arguments.length>0?arguments[0]:void 0))},c(E.prototype,"toString",(function(){return this._k})),R=function(t){return t instanceof E},n.create=$,n.isEnum=H,n.getDesc=z,n.setDesc=D,n.setDescs=F,n.getNames=v.get=V,n.getSymbols=U,s&&!r(41)&&c(L,"propertyIsEnumerable",H,!0));var K={for:function(t){return o(I,t+="")?I[t]:I[t]=E(t)},keyFor:function(t){return d(I,t)},useSetter:function(){_=!0},useSimple:function(){_=!1}};n.each.call("hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),(function(t){var e=p(t);K[t]=M?e:B(e)})),_=!0,a(a.G+a.W,{Symbol:E}),a(a.S,"Symbol",K),a(a.S+a.F*!M,"Object",{create:$,defineProperty:D,defineProperties:F,getOwnPropertyDescriptor:z,getOwnPropertyNames:V,getOwnPropertySymbols:U}),k&&a(a.S+a.F*(!M||W),"JSON",{stringify:function(t){if(void 0!==t&&!R(t)){for(var e,r,n=[t],i=1,o=arguments;o.length>i;)n.push(o[i++]);return"function"==typeof(e=n[1])&&(r=e),!r&&m(e)||(e=function(t,e){if(r&&(e=r.call(this,t,e)),!R(e))return e}),n[1]=e,T.apply(k,n)}}}),f(E,"Symbol"),f(Math,"Math",!0),f(i.JSON,"JSON",!0)},function(t,e){var r=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=r)},function(t,e){var r={}.hasOwnProperty;t.exports=function(t,e){return r.call(t,e)}},function(t,e,r){t.exports=!r(19)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,r){var n=r(16),i=r(21),o=r(22),s="prototype",a=function(t,e,r){var c,u,l,f=t&a.F,h=t&a.G,p=t&a.S,d=t&a.P,v=t&a.B,g=t&a.W,m=h?i:i[e]||(i[e]={}),y=h?n:p?n[e]:(n[e]||{})[s];for(c in h&&(r=e),r)(u=!f&&y&&c in y)&&c in m||(l=u?y[c]:r[c],m[c]=h&&"function"!=typeof y[c]?r[c]:v&&u?o(l,n):g&&y[c]==l?function(t){var e=function(e){return this instanceof t?new t(e):t(e)};return e[s]=t[s],e}(l):d&&"function"==typeof l?o(Function.call,l):l,d&&((m[s]||(m[s]={}))[c]=l))};a.F=1,a.G=2,a.S=4,a.P=8,a.B=16,a.W=32,t.exports=a},function(t,e){var r=t.exports={version:"1.2.6"};"number"==typeof __e&&(__e=r)},function(t,e,r){var n=r(23);t.exports=function(t,e,r){if(n(t),void 0===e)return t;switch(r){case 1:return function(r){return t.call(e,r)};case 2:return function(r,n){return t.call(e,r,n)};case 3:return function(r,n,i){return t.call(e,r,n,i)}}return function(){return t.apply(e,arguments)}}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e,r){t.exports=r(25)},function(t,e,r){var n=r(9),i=r(26);t.exports=r(18)?function(t,e,r){return n.setDesc(t,e,i(1,r))}:function(t,e,r){return t[e]=r,t}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,r){var n=r(16),i="__core-js_shared__",o=n[i]||(n[i]={});t.exports=function(t){return o[t]||(o[t]={})}},function(t,e,r){var n=r(9).setDesc,i=r(17),o=r(29)("toStringTag");t.exports=function(t,e,r){t&&!i(t=r?t:t.prototype,o)&&n(t,o,{configurable:!0,value:e})}},function(t,e,r){var n=r(27)("wks"),i=r(30),o=r(16).Symbol;t.exports=function(t){return n[t]||(n[t]=o&&o[t]||(o||i)("Symbol."+t))}},function(t,e){var r=0,n=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++r+n).toString(36))}},function(t,e,r){var n=r(9),i=r(32);t.exports=function(t,e){for(var r,o=i(t),s=n.getKeys(o),a=s.length,c=0;a>c;)if(o[r=s[c++]]===e)return r}},function(t,e,r){var n=r(33),i=r(35);t.exports=function(t){return n(i(t))}},function(t,e,r){var n=r(34);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==n(t)?t.split(""):Object(t)}},function(t,e){var r={}.toString;t.exports=function(t){return r.call(t).slice(8,-1)}},function(t,e){t.exports=function(t){if(null==t)throw TypeError("Can't call method on  "+t);return t}},function(t,e,r){var n=r(32),i=r(9).getNames,o={}.toString,s="object"==typeof window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.get=function(t){return s&&"[object Window]"==o.call(t)?function(t){try{return i(t)}catch(t){return s.slice()}}(t):i(n(t))}},function(t,e,r){var n=r(9);t.exports=function(t){var e=n.getKeys(t),r=n.getSymbols;if(r)for(var i,o=r(t),s=n.isEnum,a=0;o.length>a;)s.call(t,i=o[a++])&&e.push(i);return e}},function(t,e,r){var n=r(34);t.exports=Array.isArray||function(t){return"Array"==n(t)}},function(t,e,r){var n=r(40);t.exports=function(t){if(!n(t))throw TypeError(t+" is not an object!");return t}},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e){t.exports=!0},function(t,e){},function(t,e,r){t.exports={default:r(44),__esModule:!0}},function(t,e,r){r(45),r(51),t.exports=r(29)("iterator")},function(t,e,r){"use strict";var n=r(46)(!0);r(48)(String,"String",(function(t){this._t=String(t),this._i=0}),(function(){var t,e=this._t,r=this._i;return r>=e.length?{value:void 0,done:!0}:(t=n(e,r),this._i+=t.length,{value:t,done:!1})}))},function(t,e,r){var n=r(47),i=r(35);t.exports=function(t){return function(e,r){var o,s,a=String(i(e)),c=n(r),u=a.length;return c<0||c>=u?t?"":void 0:(o=a.charCodeAt(c))<55296||o>56319||c+1===u||(s=a.charCodeAt(c+1))<56320||s>57343?t?a.charAt(c):o:t?a.slice(c,c+2):s-56320+(o-55296<<10)+65536}}},function(t,e){var r=Math.ceil,n=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?n:r)(t)}},function(t,e,r){"use strict";var n=r(41),i=r(20),o=r(24),s=r(25),a=r(17),c=r(49),u=r(50),l=r(28),f=r(9).getProto,h=r(29)("iterator"),p=!([].keys&&"next"in[].keys()),d="@@iterator",v="keys",g="values",m=function(){return this};t.exports=function(t,e,r,y,b,w,x){u(r,e,y);var S,A,O=function(t){if(!p&&t in _)return _[t];switch(t){case v:case g:return function(){return new r(this,t)}}return function(){return new r(this,t)}},E=e+" Iterator",k=b==g,T=!1,_=t.prototype,C=_[h]||_[d]||b&&_[b],P=C||O(b);if(C){var I=f(P.call(new t));l(I,E,!0),!n&&a(_,d)&&s(I,h,m),k&&C.name!==g&&(T=!0,P=function(){return C.call(this)})}if(n&&!x||!p&&!T&&_[h]||s(_,h,P),c[e]=P,c[E]=m,b)if(S={values:k?P:O(g),keys:w?P:O(v),entries:k?O("entries"):P},x)for(A in S)A in _||o(_,A,S[A]);else i(i.P+i.F*(p||T),e,S);return S}},function(t,e){t.exports={}},function(t,e,r){"use strict";var n=r(9),i=r(26),o=r(28),s={};r(25)(s,r(29)("iterator"),(function(){return this})),t.exports=function(t,e,r){t.prototype=n.create(s,{next:i(1,r)}),o(t,e+" Iterator")}},function(t,e,r){r(52);var n=r(49);n.NodeList=n.HTMLCollection=n.Array},function(t,e,r){"use strict";var n=r(53),i=r(54),o=r(49),s=r(32);t.exports=r(48)(Array,"Array",(function(t,e){this._t=s(t),this._i=0,this._k=e}),(function(){var t=this._t,e=this._k,r=this._i++;return!t||r>=t.length?(this._t=void 0,i(1)):i(0,"keys"==e?r:"values"==e?t[r]:[r,t[r]])}),"values"),o.Arguments=o.Array,n("keys"),n("values"),n("entries")},function(t,e){t.exports=function(){}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e,r){t.exports={default:r(56),__esModule:!0}},function(t,e,r){r(51),r(45),t.exports=r(57)},function(t,e,r){var n=r(39),i=r(58);t.exports=r(21).getIterator=function(t){var e=i(t);if("function"!=typeof e)throw TypeError(t+" is not iterable!");return n(e.call(t))}},function(t,e,r){var n=r(59),i=r(29)("iterator"),o=r(49);t.exports=r(21).getIteratorMethod=function(t){if(null!=t)return t[i]||t["@@iterator"]||o[n(t)]}},function(t,e,r){var n=r(34),i=r(29)("toStringTag"),o="Arguments"==n(function(){return arguments}());t.exports=function(t){var e,r,s;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(r=(e=Object(t))[i])?r:o?n(e):"Object"==(s=n(e))&&"function"==typeof e.callee?"Arguments":s}},function(t,e,r){t.exports={default:r(61),__esModule:!0}},function(t,e,r){r(62),t.exports=r(21).Object.keys},function(t,e,r){var n=r(63);r(64)("keys",(function(t){return function(e){return t(n(e))}}))},function(t,e,r){var n=r(35);t.exports=function(t){return Object(n(t))}},function(t,e,r){var n=r(20),i=r(21),o=r(19);t.exports=function(t,e){var r=(i.Object||{})[t]||Object[t],s={};s[t]=e(r),n(n.S+n.F*o((function(){r(1)})),"Object",s)}},function(t,e,r){"use strict";var n=r(1).default;e.__esModule=!0;var i=n(r(6));e.default=function(t){t.registerHelper("helperMissing",(function(){if(1!==arguments.length)throw new i.default('Missing helper: "'+arguments[arguments.length-1].name+'"')}))},t.exports=e.default},function(t,e,r){"use strict";var n=r(1).default;e.__esModule=!0;var i=r(5),o=n(r(6));e.default=function(t){t.registerHelper("if",(function(t,e){if(2!=arguments.length)throw new o.default("#if requires exactly one argument");return i.isFunction(t)&&(t=t.call(this)),!e.hash.includeZero&&!t||i.isEmpty(t)?e.inverse(this):e.fn(this)})),t.registerHelper("unless",(function(e,r){if(2!=arguments.length)throw new o.default("#unless requires exactly one argument");return t.helpers.if.call(this,e,{fn:r.inverse,inverse:r.fn,hash:r.hash})}))},t.exports=e.default},function(t,e){"use strict";e.__esModule=!0,e.default=function(t){t.registerHelper("log",(function(){for(var e=[void 0],r=arguments[arguments.length-1],n=0;n<arguments.length-1;n++)e.push(arguments[n]);var i=1;null!=r.hash.level?i=r.hash.level:r.data&&null!=r.data.level&&(i=r.data.level),e[0]=i,t.log.apply(t,e)}))},t.exports=e.default},function(t,e){"use strict";
vendor: 8,158 bytes, line 25976
25976e.__esModule=!0,e.default=function(t){t.registerHelper("lookup",(function(t,e,r){return t?r.lookupProperty(t,e):t}))},t.exports=e.default},function(t,e,r){"use strict";var n=r(1).default;e.__esModule=!0;var i=r(5),o=n(r(6));e.default=function(t){t.registerHelper("with",(function(t,e){if(2!=arguments.length)throw new o.default("#with requires exactly one argument");i.isFunction(t)&&(t=t.call(this));var r=e.fn;if(i.isEmpty(t))return e.inverse(this);var n=e.data;return e.data&&e.ids&&((n=i.createFrame(e.data)).contextPath=i.appendContextPath(e.data.contextPath,e.ids[0])),r(t,{data:n,blockParams:i.blockParams([t],[n&&n.contextPath])})}))},t.exports=e.default},function(t,e,r){"use strict";var n=r(1).default;e.__esModule=!0,e.registerDefaultDecorators=function(t){i.default(t)};var i=n(r(71))},function(t,e,r){"use strict";e.__esModule=!0;var n=r(5);e.default=function(t){t.registerDecorator("inline",(function(t,e,r,i){var o=t;return e.partials||(e.partials={},o=function(i,o){var s=r.partials;r.partials=n.extend({},s,e.partials);var a=t(i,o);return r.partials=s,a}),e.partials[i.args[0]]=i.fn,o}))},t.exports=e.default},function(t,e,r){"use strict";e.__esModule=!0;var n=r(5),i={methodMap:["debug","info","warn","error"],level:"info",lookupLevel:function(t){if("string"==typeof t){var e=n.indexOf(i.methodMap,t.toLowerCase());t=e>=0?e:parseInt(t,10)}return t},log:function(t){if(t=i.lookupLevel(t),"undefined"!=typeof console&&i.lookupLevel(i.level)<=t){var e=i.methodMap[t];console[e]||(e="log");for(var r=arguments.length,n=Array(r>1?r-1:0),o=1;o<r;o++)n[o-1]=arguments[o];console[e].apply(console,n)}}};e.default=i,t.exports=e.default},function(t,e,r){"use strict";var n=r(74).default,i=r(60).default,o=r(1).default;e.__esModule=!0,e.createProtoAccessControl=function(t){var e=n(null);e.constructor=!1,e.__defineGetter__=!1,e.__defineSetter__=!1,e.__lookupGetter__=!1;var r=n(null);return r.__proto__=!1,{properties:{whitelist:s.createNewLookupObject(r,t.allowedProtoProperties),defaultValue:t.allowProtoPropertiesByDefault},methods:{whitelist:s.createNewLookupObject(e,t.allowedProtoMethods),defaultValue:t.allowProtoMethodsByDefault}}},e.resultIsAllowed=function(t,e,r){return u("function"==typeof t?e.methods:e.properties,r)},e.resetLoggedProperties=function(){i(c).forEach((function(t){delete c[t]}))};var s=r(76),a=o(r(72)),c=n(null);function u(t,e){return void 0!==t.whitelist[e]?!0===t.whitelist[e]:void 0!==t.defaultValue?t.defaultValue:(function(t){!0!==c[t]&&(c[t]=!0,a.default.log("error",'Handlebars: Access has been denied to resolve the property "'+t+'" because it is not an "own property" of its parent.\nYou can add a runtime option to disable the check or this warning:\nSee https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details'))}(e),!1)}},function(t,e,r){t.exports={default:r(75),__esModule:!0}},function(t,e,r){var n=r(9);t.exports=function(t,e){return n.create(t,e)}},function(t,e,r){"use strict";var n=r(74).default;e.__esModule=!0,e.createNewLookupObject=function(){for(var t=arguments.length,e=Array(t),r=0;r<t;r++)e[r]=arguments[r];return i.extend.apply(void 0,[n(null)].concat(e))};var i=r(5)},function(t,e){"use strict";function r(t){this.string=t}e.__esModule=!0,r.prototype.toString=r.prototype.toHTML=function(){return""+this.string},e.default=r,t.exports=e.default},function(t,e,r){"use strict";var n=r(79).default,i=r(60).default,o=r(3).default,s=r(1).default;e.__esModule=!0,e.checkRevision=function(t){var e=t&&t[0]||1,r=u.COMPILER_REVISION;if(!(e>=u.LAST_COMPATIBLE_COMPILER_REVISION&&e<=u.COMPILER_REVISION)){if(e<u.LAST_COMPATIBLE_COMPILER_REVISION){var n=u.REVISION_CHANGES[r],i=u.REVISION_CHANGES[e];throw new c.default("Template was precompiled with an older version of Handlebars than the current runtime. Please update your precompiler to a newer version ("+n+") or downgrade your runtime to an older version ("+i+").")}throw new c.default("Template was precompiled with a newer version of Handlebars than the current runtime. Please update your runtime to a newer version ("+t[1]+").")}},e.template=function(t,e){if(!e)throw new c.default("No environment passed to template");if(!t||!t.main)throw new c.default("Unknown template object: "+typeof t);t.main.decorator=t.main_d,e.VM.checkRevision(t.compiler);var r=t.compiler&&7===t.compiler[0],o={strict:function(t,e,r){if(!t||!(e in t))throw new c.default('"'+e+'" not defined in '+t,{loc:r});return o.lookupProperty(t,e)},lookupProperty:function(t,e){var r=t[e];return null==r||Object.prototype.hasOwnProperty.call(t,e)||h.resultIsAllowed(r,o.protoAccessControl,e)?r:void 0},lookup:function(t,e){for(var r=t.length,n=0;n<r;n++)if(null!=(t[n]&&o.lookupProperty(t[n],e)))return t[n][e]},lambda:function(t,e){return"function"==typeof t?t.call(e):t},escapeExpression:a.escapeExpression,invokePartial:function(r,n,i){i.hash&&(n=a.extend({},n,i.hash),i.ids&&(i.ids[0]=!0)),r=e.VM.resolvePartial.call(this,r,n,i);var o=a.extend({},i,{hooks:this.hooks,protoAccessControl:this.protoAccessControl}),s=e.VM.invokePartial.call(this,r,n,o);if(null==s&&e.compile&&(i.partials[i.name]=e.compile(r,t.compilerOptions,e),s=i.partials[i.name](n,o)),null!=s){if(i.indent){for(var u=s.split("\n"),l=0,f=u.length;l<f&&(u[l]||l+1!==f);l++)u[l]=i.indent+u[l];s=u.join("\n")}return s}throw new c.default("The partial "+i.name+" could not be compiled when running in runtime-only mode")},fn:function(e){var r=t[e];return r.decorator=t[e+"_d"],r},programs:[],program:function(t,e,r,n,i){var o=this.programs[t],s=this.fn(t);return e||i||n||r?o=p(this,t,s,e,r,n,i):o||(o=this.programs[t]=p(this,t,s)),o},data:function(t,e){for(;t&&e--;)t=t._parent;return t},mergeIfNeeded:function(t,e){var r=t||e;return t&&e&&t!==e&&(r=a.extend({},e,t)),r},nullContext:n({}),noop:e.VM.noop,compilerInfo:t.compiler};function s(e){var r=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],n=r.data;s._setup(r),!r.partial&&t.useData&&(n=function(t,e){return e&&"root"in e||((e=e?u.createFrame(e):{}).root=t),e}(e,n));var i=void 0,a=t.useBlockParams?[]:void 0;function c(e){return""+t.main(o,e,o.helpers,o.partials,n,a,i)}return t.useDepths&&(i=r.depths?e!=r.depths[0]?[e].concat(r.depths):r.depths:[e]),(c=v(t.main,c,o,r.depths||[],n,a))(e,r)}return s.isTop=!0,s._setup=function(n){if(n.partial)o.protoAccessControl=n.protoAccessControl,o.helpers=n.helpers,o.partials=n.partials,o.decorators=n.decorators,o.hooks=n.hooks;else{var s=a.extend({},e.helpers,n.helpers);!function(t,e){i(t).forEach((function(r){var n=t[r];t[r]=function(t,e){var r=e.lookupProperty;return f.wrapHelper(t,(function(t){return a.extend({lookupProperty:r},t)}))}(n,e)}))}(s,o),o.helpers=s,t.usePartial&&(o.partials=o.mergeIfNeeded(n.partials,e.partials)),(t.usePartial||t.useDecorators)&&(o.decorators=a.extend({},e.decorators,n.decorators)),o.hooks={},o.protoAccessControl=h.createProtoAccessControl(n);var c=n.allowCallsToHelperMissing||r;l.moveHelperToHooks(o,"helperMissing",c),l.moveHelperToHooks(o,"blockHelperMissing",c)}},s._child=function(e,r,n,i){if(t.useBlockParams&&!n)throw new c.default("must pass block params");if(t.useDepths&&!i)throw new c.default("must pass parent depths");return p(o,e,t[e],r,0,n,i)},s},e.wrapProgram=p,e.resolvePartial=function(t,e,r){return t?t.call||r.name||(r.name=t,t=r.partials[t]):t="@partial-block"===r.name?r.data["partial-block"]:r.partials[r.name],t},e.invokePartial=function(t,e,r){var n=r.data&&r.data["partial-block"];r.partial=!0,r.ids&&(r.data.contextPath=r.ids[0]||r.data.contextPath);var i=void 0;if(r.fn&&r.fn!==d&&function(){r.data=u.createFrame(r.data);var t=r.fn;i=r.data["partial-block"]=function(e){var r=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];return r.data=u.createFrame(r.data),r.data["partial-block"]=n,t(e,r)},t.partials&&(r.partials=a.extend({},r.partials,t.partials))}(),void 0===t&&i&&(t=i),void 0===t)throw new c.default("The partial "+r.name+" could not be found");if(t instanceof Function)return t(e,r)},e.noop=d;var a=o(r(5)),c=s(r(6)),u=r(4),l=r(10),f=r(82),h=r(73);function p(t,e,r,n,i,o,s){function a(e){var i=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],a=s;
25976return!s||e==s[0]||e===t.nullContext&&null===s[0]||(a=[e].concat(s)),r(t,e,t.helpers,t.partials,i.data||n,o&&[i.blockParams].concat(o),a)}return(a=v(r,a,t,s,n,o)).program=e,a.depth=s?s.length:0,a.blockParams=i||0,a}function d(){return""}function v(t,e,r,n,i,o){if(t.decorator){var s={};e=t.decorator(e,s,r,n&&n[0],i,o,n),a.extend(e,s)}return e}},function(t,e,r){t.exports={default:r(80),__esModule:!0}},function(t,e,r){r(81),t.exports=r(21).Object.seal},function(t,e,r){var n=r(40);r(64)("seal",(function(t){return function(e){return t&&n(e)?t(e):e}}))},function(t,e){"use strict";e.__esModule=!0,e.wrapHelper=function(t,e){return"function"!=typeof t?t:function(){return arguments[arguments.length-1]=e(arguments[arguments.length-1]),t.apply(this,arguments)}}},function(t,e){"use strict";e.__esModule=!0,e.default=function(t){"object"!=typeof globalThis&&(Object.prototype.__defineGetter__("__magic__",(function(){return this})),__magic__.globalThis=__magic__,delete Object.prototype.__magic__);var e=globalThis.Handlebars;t.noConflict=function(){return globalThis.Handlebars===t&&(globalThis.Handlebars=e),t}},t.exports=e.default},function(t,e){"use strict";e.__esModule=!0;var r={helpers:{helperExpression:function(t){return"SubExpression"===t.type||("MustacheStatement"===t.type||"BlockStatement"===t.type)&&!!(t.params&&t.params.length||t.hash)},scopedId:function(t){return/^\.|this\b/.test(t.original)},simpleId:function(t){return 1===t.parts.length&&!r.helpers.scopedId(t)&&!t.depth}}};e.default=r,t.exports=e.default},function(t,e,r){"use strict";var n=r(1).default,i=r(3).default;e.__esModule=!0,e.parseWithoutProcessing=l,e.parse=function(t,e){var r=l(t,e);return new s.default(e).accept(r)};var o=n(r(86)),s=n(r(87)),a=i(r(89)),c=r(5);e.parser=o.default;var u={};function l(t,e){return"Program"===t.type?t:(o.default.yy=u,u.locInfo=function(t){return new u.SourceLocation(e&&e.srcName,t)},o.default.parse(t))}c.extend(u,a)},function(t,e){"use strict";e.__esModule=!0;var r=function(){var t={trace:function(){},yy:{},symbols_:{error:2,root:3,program:4,EOF:5,program_repetition0:6,statement:7,mustache:8,block:9,rawBlock:10,partial:11,partialBlock:12,content:13,COMMENT:14,CONTENT:15,openRawBlock:16,rawBlock_repetition0:17,END_RAW_BLOCK:18,OPEN_RAW_BLOCK:19,helperName:20,openRawBlock_repetition0:21,openRawBlock_option0:22,CLOSE_RAW_BLOCK:23,openBlock:24,block_option0:25,closeBlock:26,openInverse:27,block_option1:28,OPEN_BLOCK:29,openBlock_repetition0:30,openBlock_option0:31,openBlock_option1:32,CLOSE:33,OPEN_INVERSE:34,openInverse_repetition0:35,openInverse_option0:36,openInverse_option1:37,openInverseChain:38,OPEN_INVERSE_CHAIN:39,openInverseChain_repetition0:40,openInverseChain_option0:41,openInverseChain_option1:42,inverseAndProgram:43,INVERSE:44,inverseChain:45,inverseChain_option0:46,OPEN_ENDBLOCK:47,OPEN:48,mustache_repetition0:49,mustache_option0:50,OPEN_UNESCAPED:51,mustache_repetition1:52,mustache_option1:53,CLOSE_UNESCAPED:54,OPEN_PARTIAL:55,partialName:56,partial_repetition0:57,partial_option0:58,openPartialBlock:59,OPEN_PARTIAL_BLOCK:60,openPartialBlock_repetition0:61,openPartialBlock_option0:62,param:63,sexpr:64,OPEN_SEXPR:65,sexpr_repetition0:66,sexpr_option0:67,CLOSE_SEXPR:68,hash:69,hash_repetition_plus0:70,hashSegment:71,ID:72,
vendor: 4,445 bytes, line 25976
25976EQUALS:73,blockParams:74,OPEN_BLOCK_PARAMS:75,blockParams_repetition_plus0:76,CLOSE_BLOCK_PARAMS:77,path:78,dataName:79,STRING:80,NUMBER:81,BOOLEAN:82,UNDEFINED:83,NULL:84,DATA:85,pathSegments:86,SEP:87,$accept:0,$end:1},terminals_:{2:"error",5:"EOF",14:"COMMENT",15:"CONTENT",18:"END_RAW_BLOCK",19:"OPEN_RAW_BLOCK",23:"CLOSE_RAW_BLOCK",29:"OPEN_BLOCK",33:"CLOSE",34:"OPEN_INVERSE",39:"OPEN_INVERSE_CHAIN",44:"INVERSE",47:"OPEN_ENDBLOCK",48:"OPEN",51:"OPEN_UNESCAPED",54:"CLOSE_UNESCAPED",55:"OPEN_PARTIAL",60:"OPEN_PARTIAL_BLOCK",65:"OPEN_SEXPR",68:"CLOSE_SEXPR",72:"ID",73:"EQUALS",75:"OPEN_BLOCK_PARAMS",77:"CLOSE_BLOCK_PARAMS",80:"STRING",81:"NUMBER",82:"BOOLEAN",83:"UNDEFINED",84:"NULL",85:"DATA",87:"SEP"},productions_:[0,[3,2],[4,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[13,1],[10,3],[16,5],[9,4],[9,4],[24,6],[27,6],[38,6],[43,2],[45,3],[45,1],[26,3],[8,5],[8,5],[11,5],[12,3],[59,5],[63,1],[63,1],[64,5],[69,1],[71,3],[74,3],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[56,1],[56,1],[79,2],[78,1],[86,3],[86,1],[6,0],[6,2],[17,0],[17,2],[21,0],[21,2],[22,0],[22,1],[25,0],[25,1],[28,0],[28,1],[30,0],[30,2],[31,0],[31,1],[32,0],[32,1],[35,0],[35,2],[36,0],[36,1],[37,0],[37,1],[40,0],[40,2],[41,0],[41,1],[42,0],[42,1],[46,0],[46,1],[49,0],[49,2],[50,0],[50,1],[52,0],[52,2],[53,0],[53,1],[57,0],[57,2],[58,0],[58,1],[61,0],[61,2],[62,0],[62,1],[66,0],[66,2],[67,0],[67,1],[70,1],[70,2],[76,1],[76,2]],performAction:function(t,e,r,n,i,o,s){var a=o.length-1;switch(i){case 1:return o[a-1];case 2:this.$=n.prepareProgram(o[a]);break;case 3:case 4:case 5:case 6:case 7:case 8:case 20:case 27:case 28:case 33:case 34:case 40:case 41:this.$=o[a];break;case 9:this.$={type:"CommentStatement",value:n.stripComment(o[a]),strip:n.stripFlags(o[a],o[a]),loc:n.locInfo(this._$)};break;case 10:this.$={type:"ContentStatement",original:o[a],value:o[a],loc:n.locInfo(this._$)};break;case 11:this.$=n.prepareRawBlock(o[a-2],o[a-1],o[a],this._$);break;case 12:this.$={path:o[a-3],params:o[a-2],hash:o[a-1]};break;case 13:this.$=n.prepareBlock(o[a-3],o[a-2],o[a-1],o[a],!1,this._$);break;case 14:this.$=n.prepareBlock(o[a-3],o[a-2],o[a-1],o[a],!0,this._$);break;case 15:this.$={open:o[a-5],path:o[a-4],params:o[a-3],hash:o[a-2],blockParams:o[a-1],strip:n.stripFlags(o[a-5],o[a])};break;case 16:case 17:this.$={path:o[a-4],params:o[a-3],hash:o[a-2],blockParams:o[a-1],strip:n.stripFlags(o[a-5],o[a])};break;case 18:this.$={strip:n.stripFlags(o[a-1],o[a-1]),program:o[a]};break;case 19:var c=n.prepareBlock(o[a-2],o[a-1],o[a],o[a],!1,this._$),u=n.prepareProgram([c],o[a-1].loc);u.chained=!0,this.$={strip:o[a-2].strip,program:u,chain:!0};break;case 21:this.$={path:o[a-1],strip:n.stripFlags(o[a-2],o[a])};break;case 22:case 23:this.$=n.prepareMustache(o[a-3],o[a-2],o[a-1],o[a-4],n.stripFlags(o[a-4],o[a]),this._$);break;case 24:this.$={type:"PartialStatement",name:o[a-3],params:o[a-2],hash:o[a-1],indent:"",strip:n.stripFlags(o[a-4],o[a]),loc:n.locInfo(this._$)};break;case 25:this.$=n.preparePartialBlock(o[a-2],o[a-1],o[a],this._$);break;case 26:this.$={path:o[a-3],params:o[a-2],hash:o[a-1],strip:n.stripFlags(o[a-4],o[a])};break;case 29:this.$={type:"SubExpression",path:o[a-3],params:o[a-2],hash:o[a-1],loc:n.locInfo(this._$)};break;case 30:this.$={type:"Hash",pairs:o[a],loc:n.locInfo(this._$)};break;case 31:this.$={type:"HashPair",key:n.id(o[a-2]),value:o[a],loc:n.locInfo(this._$)};break;case 32:this.$=n.id(o[a-1]);break;case 35:this.$={type:"StringLiteral",value:o[a],original:o[a],loc:n.locInfo(this._$)};break;case 36:this.$={type:"NumberLiteral",value:Number(o[a]),original:Number(o[a]),loc:n.locInfo(this._$)};break;case 37:this.$={type:"BooleanLiteral",value:"true"===o[a],original:"true"===o[a],loc:n.locInfo(this._$)};break;case 38:this.$={type:"UndefinedLiteral",original:void 0,value:void 0,loc:n.locInfo(this._$)};break;case 39:this.$={type:"NullLiteral",original:null,value:null,loc:n.locInfo(this._$)};break;case 42:this.$=n.preparePath(!0,o[a],this._$);break;case 43:this.$=n.preparePath(!1,o[a],this._$);break;case 44:o[a-2].push({part:n.id(o[a]),original:o[a],separator:o[a-1]}),this.$=o[a-2];break;case 45:this.$=[{part:n.id(o[a]),original:o[a]}];break;case 46:case 48:case 50:case 58:case 64:case 70:case 78:case 82:case 86:case 90:case 94:this.$=[];break;case 47:case 49:case 51:case 59:case 65:case 71:case 79:case 83:case 87:case 91:case 95:case 99:case 101:o[a-1].push(o[a]);break;case 98:case 100:this.$=[o[a]]
vendor: 11,540 bytes, line 25976
25976}},table:[{3:1,4:2,5:[2,46],6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{1:[3]},{5:[1,4]},{5:[2,2],7:5,8:6,9:7,10:8,11:9,12:10,13:11,14:[1,12],15:[1,20],16:17,19:[1,23],24:15,27:16,29:[1,21],34:[1,22],39:[2,2],44:[2,2],47:[2,2],48:[1,13],51:[1,14],55:[1,18],59:19,60:[1,24]},{1:[2,1]},{5:[2,47],14:[2,47],15:[2,47],19:[2,47],29:[2,47],34:[2,47],39:[2,47],44:[2,47],47:[2,47],48:[2,47],51:[2,47],55:[2,47],60:[2,47]},{5:[2,3],14:[2,3],15:[2,3],19:[2,3],29:[2,3],34:[2,3],39:[2,3],44:[2,3],47:[2,3],48:[2,3],51:[2,3],55:[2,3],60:[2,3]},{5:[2,4],14:[2,4],15:[2,4],19:[2,4],29:[2,4],34:[2,4],39:[2,4],44:[2,4],47:[2,4],48:[2,4],51:[2,4],55:[2,4],60:[2,4]},{5:[2,5],14:[2,5],15:[2,5],19:[2,5],29:[2,5],34:[2,5],39:[2,5],44:[2,5],47:[2,5],48:[2,5],51:[2,5],55:[2,5],60:[2,5]},{5:[2,6],14:[2,6],15:[2,6],19:[2,6],29:[2,6],34:[2,6],39:[2,6],44:[2,6],47:[2,6],48:[2,6],51:[2,6],55:[2,6],60:[2,6]},{5:[2,7],14:[2,7],15:[2,7],19:[2,7],29:[2,7],34:[2,7],39:[2,7],44:[2,7],47:[2,7],48:[2,7],51:[2,7],55:[2,7],60:[2,7]},{5:[2,8],14:[2,8],15:[2,8],19:[2,8],29:[2,8],34:[2,8],39:[2,8],44:[2,8],47:[2,8],48:[2,8],51:[2,8],55:[2,8],60:[2,8]},{5:[2,9],14:[2,9],15:[2,9],19:[2,9],29:[2,9],34:[2,9],39:[2,9],44:[2,9],47:[2,9],48:[2,9],51:[2,9],55:[2,9],60:[2,9]},{20:25,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:36,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:37,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{4:38,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{15:[2,48],17:39,18:[2,48]},{20:41,56:40,64:42,65:[1,43],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:44,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{5:[2,10],14:[2,10],15:[2,10],18:[2,10],19:[2,10],29:[2,10],34:[2,10],39:[2,10],44:[2,10],47:[2,10],48:[2,10],51:[2,10],55:[2,10],60:[2,10]},{20:45,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:46,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:47,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:41,56:48,64:42,65:[1,43],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[2,78],49:49,65:[2,78],72:[2,78],80:[2,78],81:[2,78],82:[2,78],83:[2,78],84:[2,78],85:[2,78]},{23:[2,33],33:[2,33],54:[2,33],65:[2,33],68:[2,33],72:[2,33],75:[2,33],80:[2,33],81:[2,33],82:[2,33],83:[2,33],84:[2,33],85:[2,33]},{23:[2,34],33:[2,34],54:[2,34],65:[2,34],68:[2,34],72:[2,34],75:[2,34],80:[2,34],81:[2,34],82:[2,34],83:[2,34],84:[2,34],85:[2,34]},{23:[2,35],33:[2,35],54:[2,35],65:[2,35],68:[2,35],72:[2,35],75:[2,35],80:[2,35],81:[2,35],82:[2,35],83:[2,35],84:[2,35],85:[2,35]},{23:[2,36],33:[2,36],54:[2,36],65:[2,36],68:[2,36],72:[2,36],75:[2,36],80:[2,36],81:[2,36],82:[2,36],83:[2,36],84:[2,36],85:[2,36]},{23:[2,37],33:[2,37],54:[2,37],65:[2,37],68:[2,37],72:[2,37],75:[2,37],80:[2,37],81:[2,37],82:[2,37],83:[2,37],84:[2,37],85:[2,37]},{23:[2,38],33:[2,38],54:[2,38],65:[2,38],68:[2,38],72:[2,38],75:[2,38],80:[2,38],81:[2,38],82:[2,38],83:[2,38],84:[2,38],85:[2,38]},{23:[2,39],33:[2,39],54:[2,39],65:[2,39],68:[2,39],72:[2,39],75:[2,39],80:[2,39],81:[2,39],82:[2,39],83:[2,39],84:[2,39],85:[2,39]},{23:[2,43],33:[2,43],54:[2,43],65:[2,43],68:[2,43],72:[2,43],75:[2,43],80:[2,43],81:[2,43],82:[2,43],83:[2,43],84:[2,43],85:[2,43],87:[1,50]},{72:[1,35],86:51},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{52:52,54:[2,82],65:[2,82],72:[2,82],80:[2,82],81:[2,82],82:[2,82],83:[2,82],84:[2,82],85:[2,82]},{25:53,38:55,39:[1,57],43:56,44:[1,58],45:54,47:[2,54]},{28:59,43:60,44:[1,58],47:[2,56]},{13:62,15:[1,20],18:[1,61]},{33:[2,86],57:63,65:[2,86],72:[2,86],80:[2,86],81:[2,86],82:[2,86],83:[2,86],84:[2,86],85:[2,86]},{33:[2,40],65:[2,40],72:[2,40],80:[2,40],81:[2,40],82:[2,40],83:[2,40],84:[2,40],85:[2,40]},{33:[2,41],65:[2,41],72:[2,41],80:[2,41],81:[2,41],82:[2,41],83:[2,41],84:[2,41],85:[2,41]},{20:64,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:65,47:[1,66]},{30:67,33:[2,58],65:[2,58],72:[2,58],75:[2,58],80:[2,58],81:[2,58],82:[2,58],83:[2,58],84:[2,58],85:[2,58]},{33:[2,64],35:68,65:[2,64],72:[2,64],75:[2,64],80:[2,64],81:[2,64],82:[2,64],83:[2,64],84:[2,64],85:[2,64]},{21:69,23:[2,50],65:[2,50],72:[2,50],80:[2,50],81:[2,50],82:[2,50],83:[2,50],84:[2,50],85:[2,50]},{33:[2,90],61:70,65:[2,90],72:[2,90],80:[2,90],81:[2,90],82:[2,90],83:[2,90],84:[2,90],85:[2,90]},{20:74,33:[2,80],50:71,63:72,64:75,65:[1,43],69:73,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{72:[1,79]},{23:[2,42],33:[2,42],54:[2,42],65:[2,42],68:[2,42],72:[2,42],75:[2,42],80:[2,42],81:[2,42],82:[2,42],83:[2,42],84:[2,42],85:[2,42],87:[1,50]},{20:74,53:80,54:[2,84],63:81,64:75,65:[1,43],69:82,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:83,47:[1,66]},{47:[2,55]},{4:84,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{47:[2,20]},{20:85,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:86,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{26:87,47:[1,66]},{47:[2,57]},{5:[2,11],14:[2,11],15:[2,11],19:[2,11],29:[2,11],34:[2,11],39:[2,11],44:[2,11],47:[2,11],48:[2,11],51:[2,11],55:[2,11],60:[2,11]},{15:[2,49],18:[2,49]},{20:74,33:[2,88],58:88,63:89,64:75,65:[1,43],69:90,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{65:[2,94],66:91,68:[2,94],72:[2,94],80:[2,94],81:[2,94],82:[2,94],83:[2,94],84:[2,94],85:[2,94]},{5:[2,25],14:[2,25],15:[2,25],19:[2,25],29:[2,25],34:[2,25],39:[2,25],44:[2,25],47:[2,25],48:[2,25],51:[2,25],55:[2,25],60:[2,25]},{20:92,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,31:93,33:[2,60],63:94,64:75,65:[1,43],69:95,70:76,71:77,72:[1,78],75:[2,60],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,33:[2,66],36:96,63:97,64:75,65:[1,43],69:98,70:76,71:77,72:[1,78],75:[2,66],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,22:99,23:[2,52],63:100,64:75,65:[1,43],69:101,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,33:[2,92],62:102,63:103,64:75,65:[1,43],69:104,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,105]},{33:[2,79],65:[2,79],72:[2,79],80:[2,79],81:[2,79],82:[2,79],83:[2,79],84:[2,79],85:[2,79]},{33:[2,81]},{23:[2,27],33:[2,27],54:[2,27],65:[2,27],68:[2,27],72:[2,27],75:[2,27],80:[2,27],81:[2,27],82:[2,27],83:[2,27],84:[2,27],85:[2,27]},{23:[2,28],33:[2,28],54:[2,28],65:[2,28],68:[2,28],72:[2,28],75:[2,28],80:[2,28],81:[2,28],82:[2,28],83:[2,28],84:[2,28],85:[2,28]},{23:[2,30],33:[2,30],54:[2,30],68:[2,30],71:106,72:[1,107],75:[2,30]},{23:[2,98],33:[2,98],54:[2,98],68:[2,98],72:[2,98],75:[2,98]},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],73:[1,108],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{23:[2,44],33:[2,44],54:[2,44],65:[2,44],68:[2,44],72:[2,44],75:[2,44],80:[2,44],81:[2,44],82:[2,44],83:[2,44],84:[2,44],85:[2,44],87:[2,44]},{54:[1,109]},{54:[2,83],65:[2,83],72:[2,83],80:[2,83],81:[2,83],82:[2,83],83:[2,83],84:[2,83],85:[2,83]},{54:[2,85]},{5:[2,13],14:[2,13],15:[2,13],19:[2,13],29:[2,13],34:[2,13],39:[2,13],44:[2,13],47:[2,13],48:[2,13],51:[2,13],55:[2,13],60:[2,13]},{38:55,39:[1,57],43:56,44:[1,58],45:111,46:110,47:[2,76]},{33:[2,70],40:112,65:[2,70],72:[2,70],75:[2,70],80:[2,70],81:[2,70],82:[2,70],83:[2,70],84:[2,70],85:[2,70]},{47:[2,18]},{5:[2,14],14:[2,14],15:[2,14],19:[2,14],29:[2,14],34:[2,14],39:[2,14],44:[2,14],47:[2,14],48:[2,14],51:[2,14],55:[2,14],60:[2,14]},{33:[1,113]},{33:[2,87],65:[2,87],72:[2,87],80:[2,87],81:[2,87],82:[2,87],83:[2,87],84:[2,87],85:[2,87]},{33:[2,89]},{20:74,63:115,64:75,65:[1,43],67:114,68:[2,96],69:116,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,117]},{32:118,33:[2,62],74:119,75:[1,120]},{33:[2,59],65:[2,59],72:[2,59],75:[2,59],80:[2,59],81:[2,59],82:[2,59],83:[2,59],84:[2,59],85:[2,59]},{33:[2,61],75:[2,61]},{33:[2,68],37:121,74:122,75:[1,120]},{33:[2,65],65:[2,65],72:[2,65],75:[2,65],80:[2,65],81:[2,65],82:[2,65],83:[2,65],84:[2,65],85:[2,65]},{33:[2,67],75:[2,67]},{23:[1,123]},{23:[2,51],65:[2,51],72:[2,51],80:[2,51],81:[2,51],82:[2,51],83:[2,51],84:[2,51],85:[2,51]},{23:[2,53]},{33:[1,124]},{33:[2,91],65:[2,91],72:[2,91],80:[2,91],81:[2,91],82:[2,91],83:[2,91],84:[2,91],85:[2,91]},{33:[2,93]},{5:[2,22],14:[2,22],15:[2,22],19:[2,22],29:[2,22],34:[2,22],39:[2,22],44:[2,22],47:[2,22],48:[2,22],51:[2,22],55:[2,22],60:[2,22]},{23:[2,99],33:[2,99],54:[2,99],68:[2,99],72:[2,99],75:[2,99]},{73:[1,108]},{20:74,63:125,64:75,65:[1,43],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,23],14:[2,23],15:[2,23],19:[2,23],29:[2,23],34:[2,23],39:[2,23],44:[2,23],47:[2,23],48:[2,23],51:[2,23],55:[2,23],60:[2,23]},{47:[2,19]},{47:[2,77]},{20:74,33:[2,72],41:126,63:127,64:75,65:[1,43],69:128,70:76,71:77,72:[1,78],75:[2,72],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,24],14:[2,24],15:[2,24],19:[2,24],29:[2,24],34:[2,24],39:[2,24],44:[2,24],47:[2,24],48:[2,24],51:[2,24],55:[2,24],60:[2,24]},{68:[1,129]},{65:[2,95],68:[2,95],72:[2,95],80:[2,95],81:[2,95],82:[2,95],83:[2,95],84:[2,95],85:[2,95]},{68:[2,97]},{5:[2,21],14:[2,21],15:[2,21],19:[2,21],29:[2,21],34:[2,21],39:[2,21],44:[2,21],47:[2,21],48:[2,21],51:[2,21],55:[2,21],60:[2,21]},{33:[1,130]},{33:[2,63]},{72:[1,132],76:131},{33:[1,133]},{33:[2,69]},{15:[2,12],18:[2,12]},{14:[2,26],15:[2,26],19:[2,26],29:[2,26],34:[2,26],47:[2,26],48:[2,26],51:[2,26],55:[2,26],60:[2,26]},{23:[2,31],33:[2,31],54:[2,31],68:[2,31],72:[2,31],75:[2,31]},{33:[2,74],42:134,74:135,75:[1,120]},{33:[2,71],65:[2,71],72:[2,71],75:[2,71],80:[2,71],81:[2,71],82:[2,71],83:[2,71],84:[2,71],85:[2,71]},{33:[2,73],75:[2,73]},{23:[2,29],33:[2,29],54:[2,29],65:[2,29],68:[2,29],72:[2,29],75:[2,29],80:[2,29],81:[2,29],82:[2,29],83:[2,29],84:[2,29],85:[2,29]},{14:[2,15],15:[2,15],19:[2,15],29:[2,15],34:[2,15],39:[2,15],44:[2,15],47:[2,15],48:[2,15],51:[2,15],55:[2,15],60:[2,15]},{72:[1,137],77:[1,136]},{72:[2,100],77:[2,100]},{14:[2,16],15:[2,16],19:[2,16],29:[2,16],34:[2,16],44:[2,16],47:[2,16],48:[2,16],51:[2,16],55:[2,16],60:[2,16]},{33:[1,138]},{33:[2,75]},{33:[2,32]},{72:[2,101],77:[2,101]},{14:[2,17],15:[2,17],19:[2,17],29:[2,17],34:[2,17],39:[2,17],44:[2,17],47:[2,17],48:[2,17],51:[2,17],55:[2,17],60:[2,17]}],defaultActions:{4:[2,1],54:[2,55],56:[2,20],60:[2,57],73:[2,81],82:[2,85],86:[2,18],90:[2,89],101:[2,53],104:[2,93],110:[2,19],111:[2,77],116:[2,97],119:[2,63],122:[2,69],135:[2,75],136:[2,32]},parseError:function(t,e){throw new Error(t)},parse:function(t){var e=this,r=[0],
vendor: 2,372 bytes, line 25976
25976n=[null],i=[],o=this.table,s="",a=0,c=0,u=0;this.lexer.setInput(t),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,this.yy.parser=this,void 0===this.lexer.yylloc&&(this.lexer.yylloc={});var l=this.lexer.yylloc;i.push(l);var f=this.lexer.options&&this.lexer.options.ranges;"function"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var h,p,d,v,g,m,y,b,w,x,S={};;){if(d=r[r.length-1],this.defaultActions[d]?v=this.defaultActions[d]:(null==h&&(x=void 0,"number"!=typeof(x=e.lexer.lex()||1)&&(x=e.symbols_[x]||x),h=x),v=o[d]&&o[d][h]),void 0===v||!v.length||!v[0]){var A="";if(!u){for(m in w=[],o[d])this.terminals_[m]&&m>2&&w.push("'"+this.terminals_[m]+"'");A=this.lexer.showPosition?"Parse error on line "+(a+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+w.join(", ")+", got '"+(this.terminals_[h]||h)+"'":"Parse error on line "+(a+1)+": Unexpected "+(1==h?"end of input":"'"+(this.terminals_[h]||h)+"'"),this.parseError(A,{text:this.lexer.match,token:this.terminals_[h]||h,line:this.lexer.yylineno,loc:l,expected:w})}}if(v[0]instanceof Array&&v.length>1)throw new Error("Parse Error: multiple actions possible at state: "+d+", token: "+h);switch(v[0]){case 1:r.push(h),n.push(this.lexer.yytext),i.push(this.lexer.yylloc),r.push(v[1]),h=null,p?(h=p,p=null):(c=this.lexer.yyleng,s=this.lexer.yytext,a=this.lexer.yylineno,l=this.lexer.yylloc,u>0&&u--);break;case 2:if(y=this.productions_[v[1]][1],S.$=n[n.length-y],S._$={first_line:i[i.length-(y||1)].first_line,last_line:i[i.length-1].last_line,first_column:i[i.length-(y||1)].first_column,last_column:i[i.length-1].last_column},f&&(S._$.range=[i[i.length-(y||1)].range[0],i[i.length-1].range[1]]),void 0!==(g=this.performAction.call(S,s,c,a,this.yy,v[1],n,i)))return g;y&&(r=r.slice(0,-1*y*2),n=n.slice(0,-1*y),i=i.slice(0,-1*y)),r.push(this.productions_[v[1]][0]),n.push(S.$),i.push(S._$),b=o[r[r.length-2]][r[r.length-1]],r.push(b);break;case 3:return!0}}return!0}},e=function(){var t={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t){return this._input=t,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this}
vendor: 5,898 bytes, line 25976
25976,input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,r=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e-1),this.offset-=e;var n=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),r.length-1&&(this.yylineno-=r.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:r?(r.length===n.length?this.yylloc.first_column:0)+n[n.length-r.length].length-r[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this},more:function(){return this._more=!0,this},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},next:function(){if(this.done)return this.EOF;var t,e,r,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var o=this._currentRules(),s=0;s<o.length&&(!(r=this._input.match(this.rules[o[s]]))||e&&!(r[0].length>e[0].length)||(e=r,n=s,this.options.flex));s++);return e?((i=e[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],t=this.performAction.call(this,this.yy,this,o[n],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),t||void 0):""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return void 0!==t?t:this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(t){this.begin(t)},options:{},performAction:function(t,e,r,n){function i(t,r){return e.yytext=e.yytext.substring(t,e.yyleng-r+t)}switch(r){case 0:if("\\\\"===e.yytext.slice(-2)?(i(0,1),this.begin("mu")):"\\"===e.yytext.slice(-1)?(i(0,1),this.begin("emu")):this.begin("mu"),e.yytext)return 15;break;case 1:case 5:return 15;case 2:return this.popState(),15;case 3:return this.begin("raw"),15;case 4:return this.popState(),"raw"===this.conditionStack[this.conditionStack.length-1]?15:(i(5,9),"END_RAW_BLOCK");case 6:case 22:return this.popState(),14;case 7:return 65;case 8:return 68;case 9:return 19;case 10:return this.popState(),this.begin("raw"),23;case 11:return 55;case 12:return 60;case 13:return 29;case 14:return 47;case 15:case 16:return this.popState(),44;case 17:return 34;case 18:return 39;case 19:return 51;case 20:case 23:return 48;case 21:this.unput(e.yytext),this.popState(),this.begin("com");break;case 24:return 73;case 25:case 26:case 41:return 72;case 27:return 87;case 28:break;case 29:return this.popState(),54;case 30:return this.popState(),33;case 31:return e.yytext=i(1,2).replace(/\\"/g,'"'),80;case 32:return e.yytext=i(1,2).replace(/\\'/g,"'"),80;case 33:return 85;case 34:case 35:return 82;case 36:return 83;case 37:return 84;case 38:return 81;case 39:return 75;case 40:return 77;case 42:return e.yytext=e.yytext.replace(/\\([\\\]])/g,"$1"),72;case 43:return"INVALID";case 44:return 5}},rules:[/^(?:[^\x00]*?(?=(\{\{)))/,/^(?:[^\x00]+)/,/^(?:[^\x00]{2,}?(?=(\{\{|\\\{\{|\\\\\{\{|$)))/,/^(?:\{\{\{\{(?=[^/]))/,/^(?:\{\{\{\{\/[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.])\}\}\}\})/,/^(?:[^\x00]+?(?=(\{\{\{\{)))/,/^(?:[\s\S]*?--(~)?\}\})/,/^(?:\()/,/^(?:\))/,/^(?:\{\{\{\{)/,/^(?:\}\}\}\})/,/^(?:\{\{(~)?>)/,/^(?:\{\{(~)?#>)/,/^(?:\{\{(~)?#\*?)/,/^(?:\{\{(~)?\/)/,/^(?:\{\{(~)?\^\s*(~)?\}\})/,/^(?:\{\{(~)?\s*else\s*(~)?\}\})/,/^(?:\{\{(~)?\^)/,/^(?:\{\{(~)?\s*else\b)/,/^(?:\{\{(~)?\{)/,/^(?:\{\{(~)?&)/,/^(?:\{\{(~)?!--)/,/^(?:\{\{(~)?![\s\S]*?\}\})/,/^(?:\{\{(~)?\*?)/,/^(?:=)/,/^(?:\.\.)/,/^(?:\.(?=([=~}\s\/.)|])))/,/^(?:[\/.])/,/^(?:\s+)/,/^(?:\}(~)?\}\})/,/^(?:(~)?\}\})/,/^(?:"(\\["]|[^"])*")/,/^(?:'(\\[']|[^'])*')/,/^(?:@)/,/^(?:true(?=([~}\s)])))/,/^(?:false(?=([~}\s)])))/,/^(?:undefined(?=([~}\s)])))/,/^(?:null(?=([~}\s)])))/,/^(?:-?[0-9]+(?:\.[0-9]+)?(?=([~}\s)])))/,/^(?:as\s+\|)/,/^(?:\|)/,/^(?:([^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=([=~}\s\/.)|]))))/,/^(?:\[(\\\]|[^\]])*\])/,/^(?:.)/,/^(?:$)/],conditions:{mu:{rules:[7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],inclusive:!1},emu:{rules:[2],inclusive:!1},com:{rules:[6],inclusive:!1},raw:{rules:[3,4,5],inclusive:!1},INITIAL:{rules:[0,1,44],inclusive:!0}}};return t}();function r(){this.yy={}}return t.lexer=e,r.prototype=t,t.Parser=r,new r}();e.default=r,t.exports=e.default},function(t,e,r){"use strict";var n=r(1).default;
vendor: 10,348 bytes, line 25976
25976e.__esModule=!0;var i=n(r(88));function o(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];this.options=t}function s(t,e,r){void 0===e&&(e=t.length);var n=t[e-1],i=t[e-2];return n?"ContentStatement"===n.type?(i||!r?/\r?\n\s*?$/:/(^|\r?\n)\s*?$/).test(n.original):void 0:r}function a(t,e,r){void 0===e&&(e=-1);var n=t[e+1],i=t[e+2];return n?"ContentStatement"===n.type?(i||!r?/^\s*?\r?\n/:/^\s*?(\r?\n|$)/).test(n.original):void 0:r}function c(t,e,r){var n=t[null==e?0:e+1];if(n&&"ContentStatement"===n.type&&(r||!n.rightStripped)){var i=n.value;n.value=n.value.replace(r?/^\s+/:/^[ \t]*\r?\n?/,""),n.rightStripped=n.value!==i}}function u(t,e,r){var n=t[null==e?t.length-1:e-1];if(n&&"ContentStatement"===n.type&&(r||!n.leftStripped)){var i=n.value;return n.value=n.value.replace(r?/\s+$/:/[ \t]+$/,""),n.leftStripped=n.value!==i,n.leftStripped}}o.prototype=new i.default,o.prototype.Program=function(t){var e=!this.options.ignoreStandalone,r=!this.isRootSeen;this.isRootSeen=!0;for(var n=t.body,i=0,o=n.length;i<o;i++){var l=n[i],f=this.accept(l);if(f){var h=s(n,i,r),p=a(n,i,r),d=f.openStandalone&&h,v=f.closeStandalone&&p,g=f.inlineStandalone&&h&&p;f.close&&c(n,i,!0),f.open&&u(n,i,!0),e&&g&&(c(n,i),u(n,i)&&"PartialStatement"===l.type&&(l.indent=/([ \t]+$)/.exec(n[i-1].original)[1])),e&&d&&(c((l.program||l.inverse).body),u(n,i)),e&&v&&(c(n,i),u((l.inverse||l.program).body))}}return t},o.prototype.BlockStatement=o.prototype.DecoratorBlock=o.prototype.PartialBlockStatement=function(t){this.accept(t.program),this.accept(t.inverse);var e=t.program||t.inverse,r=t.program&&t.inverse,n=r,i=r;if(r&&r.chained)for(n=r.body[0].program;i.chained;)i=i.body[i.body.length-1].program;var o={open:t.openStrip.open,close:t.closeStrip.close,openStandalone:a(e.body),closeStandalone:s((n||e).body)};if(t.openStrip.close&&c(e.body,null,!0),r){var l=t.inverseStrip;l.open&&u(e.body,null,!0),l.close&&c(n.body,null,!0),t.closeStrip.open&&u(i.body,null,!0),!this.options.ignoreStandalone&&s(e.body)&&a(n.body)&&(u(e.body),c(n.body))}else t.closeStrip.open&&u(e.body,null,!0);return o},o.prototype.Decorator=o.prototype.MustacheStatement=function(t){return t.strip},o.prototype.PartialStatement=o.prototype.CommentStatement=function(t){var e=t.strip||{};return{inlineStandalone:!0,open:e.open,close:e.close}},e.default=o,t.exports=e.default},function(t,e,r){"use strict";var n=r(1).default;e.__esModule=!0;var i=n(r(6));function o(){this.parents=[]}function s(t){this.acceptRequired(t,"path"),this.acceptArray(t.params),this.acceptKey(t,"hash")}function a(t){s.call(this,t),this.acceptKey(t,"program"),this.acceptKey(t,"inverse")}function c(t){this.acceptRequired(t,"name"),this.acceptArray(t.params),this.acceptKey(t,"hash")}o.prototype={constructor:o,mutating:!1,acceptKey:function(t,e){var r=this.accept(t[e]);if(this.mutating){if(r&&!o.prototype[r.type])throw new i.default('Unexpected node type "'+r.type+'" found when accepting '+e+" on "+t.type);t[e]=r}},acceptRequired:function(t,e){if(this.acceptKey(t,e),!t[e])throw new i.default(t.type+" requires "+e)},acceptArray:function(t){for(var e=0,r=t.length;e<r;e++)this.acceptKey(t,e),t[e]||(t.splice(e,1),e--,r--)},accept:function(t){if(t){if(!this[t.type])throw new i.default("Unknown type: "+t.type,t);this.current&&this.parents.unshift(this.current),this.current=t;var e=this[t.type](t);return this.current=this.parents.shift(),!this.mutating||e?e:!1!==e?t:void 0}},Program:function(t){this.acceptArray(t.body)},MustacheStatement:s,Decorator:s,BlockStatement:a,DecoratorBlock:a,PartialStatement:c,PartialBlockStatement:function(t){c.call(this,t),this.acceptKey(t,"program")},ContentStatement:function(){},CommentStatement:function(){},SubExpression:s,PathExpression:function(){},StringLiteral:function(){},NumberLiteral:function(){},BooleanLiteral:function(){},UndefinedLiteral:function(){},NullLiteral:function(){},Hash:function(t){this.acceptArray(t.pairs)},HashPair:function(t){this.acceptRequired(t,"value")}},e.default=o,t.exports=e.default},function(t,e,r){"use strict";var n=r(1).default;e.__esModule=!0,e.SourceLocation=function(t,e){this.source=t,this.start={line:e.first_line,column:e.first_column},this.end={line:e.last_line,column:e.last_column}},e.id=function(t){return/^\[.*\]$/.test(t)?t.substring(1,t.length-1):t},e.stripFlags=function(t,e){return{open:"~"===t.charAt(2),close:"~"===e.charAt(e.length-3)}},e.stripComment=function(t){return t.replace(/^\{\{~?!-?-?/,"").replace(/-?-?~?\}\}$/,"")},e.preparePath=function(t,e,r){r=this.locInfo(r);for(var n=t?"@":"",o=[],s=0,a=0,c=e.length;a<c;a++){var u=e[a].part,l=e[a].original!==u;if(n+=(e[a].separator||"")+u,l||".."!==u&&"."!==u&&"this"!==u)o.push(u);else{if(o.length>0)throw new i.default("Invalid path: "+n,{loc:r});".."===u&&s++}}return{type:"PathExpression",data:t,depth:s,parts:o,original:n,loc:r}},e.prepareMustache=function(t,e,r,n,i,o){var s=n.charAt(3)||n.charAt(2),a="{"!==s&&"&"!==s;return{type:/\*/.test(n)?"Decorator":"MustacheStatement",path:t,params:e,hash:r,escaped:a,strip:i,loc:this.locInfo(o)}},e.prepareRawBlock=function(t,e,r,n){o(t,r),n=this.locInfo(n);var i={type:"Program",body:e,strip:{},loc:n};return{type:"BlockStatement",path:t.path,params:t.params,hash:t.hash,program:i,openStrip:{},inverseStrip:{},closeStrip:{},loc:n}},e.prepareBlock=function(t,e,r,n,s,a){n&&n.path&&o(t,n);var c=/\*/.test(t.open);e.blockParams=t.blockParams;var u=void 0,l=void 0;if(r){if(c)throw new i.default("Unexpected inverse block on decorator",r);r.chain&&(r.program.body[0].closeStrip=n.strip),l=r.strip,u=r.program}return s&&(s=u,u=e,e=s),{type:c?"DecoratorBlock":"BlockStatement",path:t.path,params:t.params,hash:t.hash,program:e,inverse:u,openStrip:t.strip,inverseStrip:l,closeStrip:n&&n.strip,loc:this.locInfo(a)}},e.prepareProgram=function(t,e){if(!e&&t.length){var r=t[0].loc,n=t[t.length-1].loc;r&&n&&(e={source:r.source,start:{line:r.start.line,column:r.start.column},end:{line:n.end.line,column:n.end.column}})}return{type:"Program",body:t,strip:{},loc:e}},e.preparePartialBlock=function(t,e,r,n){return o(t,r),{type:"PartialBlockStatement",name:t.path,params:t.params,hash:t.hash,program:e,openStrip:t.strip,closeStrip:r&&r.strip,loc:this.locInfo(n)}};var i=n(r(6));function o(t,e){if(e=e.path?e.path.original:e,t.path.original!==e){var r={loc:t.path.loc};throw new i.default(t.path.original+" doesn't match "+e,r)}}},function(t,e,r){"use strict";var n=r(74).default,i=r(1).default;e.__esModule=!0,e.Compiler=u,e.precompile=function(t,e,r){if(null==t||"string"!=typeof t&&"Program"!==t.type)throw new o.default("You must pass a string or Handlebars AST to Handlebars.precompile. You passed "+t);"data"in(e=e||{})||(e.data=!0),e.compat&&(e.useDepths=!0);var n=r.parse(t,e),i=(new r.Compiler).compile(n,e);return(new r.JavaScriptCompiler).compile(i,e)},e.compile=function(t,e,r){if(void 0===e&&(e={}),null==t||"string"!=typeof t&&"Program"!==t.type)throw new o.default("You must pass a string or Handlebars AST to Handlebars.compile. You passed "+t);"data"in(e=s.extend({},e))||(e.data=!0),e.compat&&(e.useDepths=!0);var n=void 0;function i(){var n=r.parse(t,e),i=(new r.Compiler).compile(n,e),o=(new r.JavaScriptCompiler).compile(i,e,void 0,!0);return r.template(o)}function a(t,e){return n||(n=i()),n.call(this,t,e)}return a._setup=function(t){return n||(n=i()),n._setup(t)},a._child=function(t,e,r,o){return n||(n=i()),n._child(t,e,r,o)},a};var o=i(r(6)),s=r(5),a=i(r(84)),c=[].slice;function u(){}function l(t,e){if(t===e)return!0;if(s.isArray(t)&&s.isArray(e)&&t.length===e.length){for(var r=0;r<t.length;r++)if(!l(t[r],e[r]))return!1;return!0}}function f(t){if(!t.path.parts){var e=t.path;t.path={type:"PathExpression",data:!1,depth:0,parts:[e.original+""],original:e.original+"",loc:e.loc}}}u.prototype={compiler:u,equals:function(t){var e=this.opcodes.length;if(t.opcodes.length!==e)return!1;for(var r=0;r<e;r++){var n=this.opcodes[r],i=t.opcodes[r];if(n.opcode!==i.opcode||!l(n.args,i.args))return!1}for(e=this.children.length,r=0;r<e;r++)if(!this.children[r].equals(t.children[r]))return!1;return!0},guid:0,compile:function(t,e){return this.sourceNode=[],this.opcodes=[],this.children=[],this.options=e,this.stringParams=e.stringParams,this.trackIds=e.trackIds,e.blockParams=e.blockParams||[],e.knownHelpers=s.extend(n(null),{helperMissing:!0,blockHelperMissing:!0,each:!0,if:!0,unless:!0,with:!0,log:!0,lookup:!0},e.knownHelpers),this.accept(t)},compileProgram:function(t){var e=(new this.compiler).compile(t,this.options),r=this.guid++;return this.usePartial=this.usePartial||e.usePartial,this.children[r]=e,this.useDepths=this.useDepths||e.useDepths,r},accept:function(t){if(!this[t.type])throw new o.default("Unknown type: "+t.type,t);this.sourceNode.unshift(t);var e=this[t.type](t);return this.sourceNode.shift(),e},Program:function(t){this.options.blockParams.unshift(t.blockParams);for(var e=t.body,r=e.length,n=0;n<r;n++)this.accept(e[n]);return this.options.blockParams.shift(),this.isSimple=1===r,this.blockParams=t.blockParams?t.blockParams.length:0,this},BlockStatement:function(t){f(t);var e=t.program,r=t.inverse;e=e&&this.compileProgram(e),r=r&&this.compileProgram(r);var n=this.classifySexpr(t);"helper"===n?this.helperSexpr(t,e,r):"simple"===n?(this.simpleSexpr(t),this.opcode("pushProgram",e),this.opcode("pushProgram",r),this.opcode("emptyHash"),this.opcode("blockValue",t.path.original)):(this.ambiguousSexpr(t,e,r),this.opcode("pushProgram",e),this.opcode("pushProgram",r),this.opcode("emptyHash"),this.opcode("ambiguousBlockValue")),this.opcode("append")},DecoratorBlock:function(t){var e=t.program&&this.compileProgram(t.program),r=this.setupFullMustacheParams(t,e,void 0),n=t.path;this.useDecorators=!0,this.opcode("registerDecorator",r.length,n.original)},PartialStatement:function(t){this.usePartial=!0;var e=t.program;e&&(e=this.compileProgram(t.program));var r=t.params;if(r.length>1)throw new o.default("Unsupported number of partial arguments: "+r.length,t);r.length||(this.options.explicitPartialContext?this.opcode("pushLiteral","undefined"):r.push({type:"PathExpression",parts:[],depth:0}));var n=t.name.original,i="SubExpression"===t.name.type;i&&this.accept(t.name),this.setupFullMustacheParams(t,e,void 0,!0);var s=t.indent||"";this.options.preventIndent&&s&&(this.opcode("appendContent",s),s=""),this.opcode("invokePartial",i,n,s),this.opcode("append")}
vendor: 4,631 bytes, line 25976
25976,PartialBlockStatement:function(t){this.PartialStatement(t)},MustacheStatement:function(t){this.SubExpression(t),t.escaped&&!this.options.noEscape?this.opcode("appendEscaped"):this.opcode("append")},Decorator:function(t){this.DecoratorBlock(t)},ContentStatement:function(t){t.value&&this.opcode("appendContent",t.value)},CommentStatement:function(){},SubExpression:function(t){f(t);var e=this.classifySexpr(t);"simple"===e?this.simpleSexpr(t):"helper"===e?this.helperSexpr(t):this.ambiguousSexpr(t)},ambiguousSexpr:function(t,e,r){var n=t.path,i=n.parts[0],o=null!=e||null!=r;this.opcode("getContext",n.depth),this.opcode("pushProgram",e),this.opcode("pushProgram",r),n.strict=!0,this.accept(n),this.opcode("invokeAmbiguous",i,o)},simpleSexpr:function(t){var e=t.path;e.strict=!0,this.accept(e),this.opcode("resolvePossibleLambda")},helperSexpr:function(t,e,r){var n=this.setupFullMustacheParams(t,e,r),i=t.path,s=i.parts[0];if(this.options.knownHelpers[s])this.opcode("invokeKnownHelper",n.length,s);else{if(this.options.knownHelpersOnly)throw new o.default("You specified knownHelpersOnly, but used the unknown helper "+s,t);i.strict=!0,i.falsy=!0,this.accept(i),this.opcode("invokeHelper",n.length,i.original,a.default.helpers.simpleId(i))}},PathExpression:function(t){this.addDepth(t.depth),this.opcode("getContext",t.depth);var e=t.parts[0],r=a.default.helpers.scopedId(t),n=!t.depth&&!r&&this.blockParamIndex(e);n?this.opcode("lookupBlockParam",n,t.parts):e?t.data?(this.options.data=!0,this.opcode("lookupData",t.depth,t.parts,t.strict)):this.opcode("lookupOnContext",t.parts,t.falsy,t.strict,r):this.opcode("pushContext")},StringLiteral:function(t){this.opcode("pushString",t.value)},NumberLiteral:function(t){this.opcode("pushLiteral",t.value)},BooleanLiteral:function(t){this.opcode("pushLiteral",t.value)},UndefinedLiteral:function(){this.opcode("pushLiteral","undefined")},NullLiteral:function(){this.opcode("pushLiteral","null")},Hash:function(t){var e=t.pairs,r=0,n=e.length;for(this.opcode("pushHash");r<n;r++)this.pushParam(e[r].value);for(;r--;)this.opcode("assignToHash",e[r].key);this.opcode("popHash")},opcode:function(t){this.opcodes.push({opcode:t,args:c.call(arguments,1),loc:this.sourceNode[0].loc})},addDepth:function(t){t&&(this.useDepths=!0)},classifySexpr:function(t){var e=a.default.helpers.simpleId(t.path),r=e&&!!this.blockParamIndex(t.path.parts[0]),n=!r&&a.default.helpers.helperExpression(t),i=!r&&(n||e);if(i&&!n){var o=t.path.parts[0],s=this.options;s.knownHelpers[o]?n=!0:s.knownHelpersOnly&&(i=!1)}return n?"helper":i?"ambiguous":"simple"},pushParams:function(t){for(var e=0,r=t.length;e<r;e++)this.pushParam(t[e])},pushParam:function(t){var e=null!=t.value?t.value:t.original||"";if(this.stringParams)e.replace&&(e=e.replace(/^(\.?\.\/)*/g,"").replace(/\//g,".")),t.depth&&this.addDepth(t.depth),this.opcode("getContext",t.depth||0),this.opcode("pushStringParam",e,t.type),"SubExpression"===t.type&&this.accept(t);else{if(this.trackIds){var r=void 0;if(!t.parts||a.default.helpers.scopedId(t)||t.depth||(r=this.blockParamIndex(t.parts[0])),r){var n=t.parts.slice(1).join(".");this.opcode("pushId","BlockParam",r,n)}else(e=t.original||e).replace&&(e=e.replace(/^this(?:\.|$)/,"").replace(/^\.\//,"").replace(/^\.$/,"")),this.opcode("pushId",t.type,e)}this.accept(t)}},setupFullMustacheParams:function(t,e,r,n){var i=t.params;return this.pushParams(i),this.opcode("pushProgram",e),this.opcode("pushProgram",r),t.hash?this.accept(t.hash):this.opcode("emptyHash",n),i},blockParamIndex:function(t){for(var e=0,r=this.options.blockParams.length;e<r;e++){var n=this.options.blockParams[e],i=n&&s.indexOf(n,t);if(n&&i>=0)return[e,i]}}}},function(t,e,r){"use strict";var n=r(60).default,i=r(1).default;e.__esModule=!0;var o=r(4),s=i(r(6)),a=r(5),c=i(r(92));function u(t){this.value=t}function l(){}l.prototype={nameLookup:function(t,e){return this.internalNameLookup(t,e)},depthedLookup:function(t){return[this.aliasable("container.lookup"),"(depths, ",JSON.stringify(t),")"]},compilerInfo:function(){var t=o.COMPILER_REVISION;return[t,o.REVISION_CHANGES[t]]},appendToBuffer:function(t,e,r){return a.isArray(t)||(t=[t]),t=this.source.wrap(t,e),this.environment.isSimple?["return ",t,";"]:r?["buffer += ",t,";"]:(t.appendToBuffer=!0,t)},initializeBuffer:function(){return this.quotedString("")},internalNameLookup:function(t,e){return this.lookupPropertyFunctionIsUsed=!0,["lookupProperty(",t,",",JSON.stringify(e),")"]},lookupPropertyFunctionIsUsed:!1,compile:function(t,e,r,n){this.environment=t,this.options=e,this.stringParams=this.options.stringParams,this.trackIds=this.options.trackIds,this.prec
vendor: 5,661 bytes, line 25976
25976ompile=!n,this.name=this.environment.name,this.isChild=!!r,this.context=r||{decorators:[],programs:[],environments:[]},this.preamble(),this.stackSlot=0,this.stackVars=[],this.aliases={},this.registers={list:[]},this.hashes=[],this.compileStack=[],this.inlineStack=[],this.blockParams=[],this.compileChildren(t,e),this.useDepths=this.useDepths||t.useDepths||t.useDecorators||this.options.compat,this.useBlockParams=this.useBlockParams||t.useBlockParams;var i=t.opcodes,o=void 0,a=void 0,c=void 0,u=void 0;for(c=0,u=i.length;c<u;c++)o=i[c],this.source.currentLocation=o.loc,a=a||o.loc,this[o.opcode].apply(this,o.args);if(this.source.currentLocation=a,this.pushSource(""),this.stackSlot||this.inlineStack.length||this.compileStack.length)throw new s.default("Compile completed with content left on stack");this.decorators.isEmpty()?this.decorators=void 0:(this.useDecorators=!0,this.decorators.prepend(["var decorators = container.decorators, ",this.lookupPropertyFunctionVarDeclaration(),";\n"]),this.decorators.push("return fn;"),n?this.decorators=Function.apply(this,["fn","props","container","depth0","data","blockParams","depths",this.decorators.merge()]):(this.decorators.prepend("function(fn, props, container, depth0, data, blockParams, depths) {\n"),this.decorators.push("}\n"),this.decorators=this.decorators.merge()));var l=this.createFunctionContext(n);if(this.isChild)return l;var f={compiler:this.compilerInfo(),main:l};this.decorators&&(f.main_d=this.decorators,f.useDecorators=!0);var h=this.context,p=h.programs,d=h.decorators;for(c=0,u=p.length;c<u;c++)p[c]&&(f[c]=p[c],d[c]&&(f[c+"_d"]=d[c],f.useDecorators=!0));return this.environment.usePartial&&(f.usePartial=!0),this.options.data&&(f.useData=!0),this.useDepths&&(f.useDepths=!0),this.useBlockParams&&(f.useBlockParams=!0),this.options.compat&&(f.compat=!0),n?f.compilerOptions=this.options:(f.compiler=JSON.stringify(f.compiler),this.source.currentLocation={start:{line:1,column:0}},f=this.objectLiteral(f),e.srcName?(f=f.toStringWithSourceMap({file:e.destName})).map=f.map&&f.map.toString():f=f.toString()),f},preamble:function(){this.lastContext=0,this.source=new c.default(this.options.srcName),this.decorators=new c.default(this.options.srcName)},createFunctionContext:function(t){var e=this,r="",i=this.stackVars.concat(this.registers.list);i.length>0&&(r+=", "+i.join(", "));var o=0;n(this.aliases).forEach((function(t){var n=e.aliases[t];n.children&&n.referenceCount>1&&(r+=", alias"+ ++o+"="+t,n.children[0]="alias"+o)})),this.lookupPropertyFunctionIsUsed&&(r+=", "+this.lookupPropertyFunctionVarDeclaration());var s=["container","depth0","helpers","partials","data"];(this.useBlockParams||this.useDepths)&&s.push("blockParams"),this.useDepths&&s.push("depths");var a=this.mergeSource(r);return t?(s.push(a),Function.apply(this,s)):this.source.wrap(["function(",s.join(","),") {\n  ",a,"}"])},mergeSource:function(t){var e=this.environment.isSimple,r=!this.forceBuffer,n=void 0,i=void 0,o=void 0,s=void 0;return this.source.each((function(t){t.appendToBuffer?(o?t.prepend("  + "):o=t,s=t):(o&&(i?o.prepend("buffer += "):n=!0,s.add(";"),o=s=void 0),i=!0,e||(r=!1))})),r?o?(o.prepend("return "),s.add(";")):i||this.source.push('return "";'):(t+=", buffer = "+(n?"":this.initializeBuffer()),o?(o.prepend("return buffer + "),s.add(";")):this.source.push("return buffer;")),t&&this.source.prepend("var "+t.substring(2)+(n?"":";\n")),this.source.merge()},lookupPropertyFunctionVarDeclaration:function(){return"\n      lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    }\n    ".trim()},blockValue:function(t){var e=this.aliasable("container.hooks.blockHelperMissing"),r=[this.contextName(0)];this.setupHelperArgs(t,0,r);var n=this.popStack();r.splice(1,0,n),this.push(this.source.functionCall(e,"call",r))},ambiguousBlockValue:function(){var t=this.aliasable("container.hooks.blockHelperMissing"),e=[this.contextName(0)];this.setupHelperArgs("",0,e,!0),this.flushInline();var r=this.topStack();e.splice(1,0,r),this.pushSource(["if (!",this.lastHelper,") { ",r," = ",this.source.functionCall(t,"call",e),"}"])},appendContent:function(t){this.pendingContent?t=this.pendingContent+t:this.pendingLocation=this.source.currentLocation,this.pendingContent=t},append:function(){if(this.isInline())this.replaceStack((function(t){return[" != null ? ",t,' : ""']})),this.pushSource(this.appendToBuffer(this.popStack()));else{var t=this.popStack();this.pushSource(["if (",t," != null) { ",this.appendToBuffer(t,void 0,!0)," }"]),this.environment.isSimple&&this.pushSource(["else { ",this.appendToBuffer("''",void 0,!0)," }"])}},appendEscaped:function(){this.pushSource(this.appendToBuffer([this.aliasable("container.escapeExpression"),"(",this.popStack(),")"]))},getContext:function(t){this.lastContext=t},pushContext:function(){this.pushStackLiteral(this.contextName(this.lastContext))},lookupOnContext:function(t,e,r,n){var i=0;n||!this.options.compat||this.lastContext?this.pushContext():this.push(this.depthedLookup(t[i++])),this.resolvePath("context",t,i,e,r)},lookupBlockParam:function(t,e){this.useBlockParams=!0,this.push(["blockParams[",t[0],"][",t[1],"]"]),this.resolvePath("context",e,1)},lookupData:function(t,e,r){t?this.pushStackLiteral("container.data(data, "+t+")"):this.pushStackLiteral("data"),this.resolvePath("data",e,0,!0,r)},resolvePath:function(t,e,r,n,i){var o=this;if(this.options.strict||this.options.assumeObjects)this.push(function(t,e,r,n,i){var o=e.popStack(),s=r.length;for(t&&s--;n<s;
vendor: 4,917 bytes, line 25976
25976n++)o=e.nameLookup(o,r[n],i);return t?[e.aliasable("container.strict"),"(",o,", ",e.quotedString(r[n]),", ",JSON.stringify(e.source.currentLocation)," )"]:o}(this.options.strict&&i,this,e,r,t));else for(var s=e.length;r<s;r++)this.replaceStack((function(i){var s=o.nameLookup(i,e[r],t);return n?[" && ",s]:[" != null ? ",s," : ",i]}))},resolvePossibleLambda:function(){this.push([this.aliasable("container.lambda"),"(",this.popStack(),", ",this.contextName(0),")"])},pushStringParam:function(t,e){this.pushContext(),this.pushString(e),"SubExpression"!==e&&("string"==typeof t?this.pushString(t):this.pushStackLiteral(t))},emptyHash:function(t){this.trackIds&&this.push("{}"),this.stringParams&&(this.push("{}"),this.push("{}")),this.pushStackLiteral(t?"undefined":"{}")},pushHash:function(){this.hash&&this.hashes.push(this.hash),this.hash={values:{},types:[],contexts:[],ids:[]}},popHash:function(){var t=this.hash;this.hash=this.hashes.pop(),this.trackIds&&this.push(this.objectLiteral(t.ids)),this.stringParams&&(this.push(this.objectLiteral(t.contexts)),this.push(this.objectLiteral(t.types))),this.push(this.objectLiteral(t.values))},pushString:function(t){this.pushStackLiteral(this.quotedString(t))},pushLiteral:function(t){this.pushStackLiteral(t)},pushProgram:function(t){null!=t?this.pushStackLiteral(this.programExpression(t)):this.pushStackLiteral(null)},registerDecorator:function(t,e){var r=this.nameLookup("decorators",e,"decorator"),n=this.setupHelperArgs(e,t);this.decorators.push(["fn = ",this.decorators.functionCall(r,"",["fn","props","container",n])," || fn;"])},invokeHelper:function(t,e,r){var n=this.popStack(),i=this.setupHelper(t,e),o=[];r&&o.push(i.name),o.push(n),this.options.strict||o.push(this.aliasable("container.hooks.helperMissing"));var s=["(",this.itemsSeparatedBy(o,"||"),")"],a=this.source.functionCall(s,"call",i.callParams);this.push(a)},itemsSeparatedBy:function(t,e){var r=[];r.push(t[0]);for(var n=1;n<t.length;n++)r.push(e,t[n]);return r},invokeKnownHelper:function(t,e){var r=this.setupHelper(t,e);this.push(this.source.functionCall(r.name,"call",r.callParams))},invokeAmbiguous:function(t,e){this.useRegister("helper");var r=this.popStack();this.emptyHash();var n=this.setupHelper(0,t,e),i=["(","(helper = ",this.lastHelper=this.nameLookup("helpers",t,"helper")," || ",r,")"];this.options.strict||(i[0]="(helper = ",i.push(" != null ? helper : ",this.aliasable("container.hooks.helperMissing"))),this.push(["(",i,n.paramsInit?["),(",n.paramsInit]:[],"),","(typeof helper === ",this.aliasable('"function"')," ? ",this.source.functionCall("helper","call",n.callParams)," : helper))"])},invokePartial:function(t,e,r){var n=[],i=this.setupParams(e,1,n);t&&(e=this.popStack(),delete i.name),r&&(i.indent=JSON.stringify(r)),i.helpers="helpers",i.partials="partials",i.decorators="container.decorators",t?n.unshift(e):n.unshift(this.nameLookup("partials",e,"partial")),this.options.compat&&(i.depths="depths"),i=this.objectLiteral(i),n.push(i),this.push(this.source.functionCall("container.invokePartial","",n))},assignToHash:function(t){var e=this.popStack(),r=void 0,n=void 0,i=void 0;this.trackIds&&(i=this.popStack()),this.stringParams&&(n=this.popStack(),r=this.popStack());var o=this.hash;r&&(o.contexts[t]=r),n&&(o.types[t]=n),i&&(o.ids[t]=i),o.values[t]=e},pushId:function(t,e,r){"BlockParam"===t?this.pushStackLiteral("blockParams["+e[0]+"].path["+e[1]+"]"+(r?" + "+JSON.stringify("."+r):"")):"PathExpression"===t?this.pushString(e):"SubExpression"===t?this.pushStackLiteral("true"):this.pushStackLiteral("null")},compiler:l,compileChildren:function(t,e){for(var r=t.children,n=void 0,i=void 0,o=0,s=r.length;o<s;o++){n=r[o],i=new this.compiler;var a=this.matchExistingProgram(n);if(null==a){this.context.programs.push("");var c=this.context.programs.length;n.index=c,n.name="program"+c,this.context.programs[c]=i.compile(n,e,this.context,!this.precompile),this.context.decorators[c]=i.decorators,this.context.environments[c]=n,this.useDepths=this.useDepths||i.useDepths,this.useBlockParams=this.useBlockParams||i.useBlockParams,n.useDepths=this.useDepths,n.useBlockParams=this.useBlockParams}else n.index=a.index,n.name="program"+a.index,this.useDepths=this.useDepths||a.useDepths,this.useBlockParams=this.useBlockParams||a.useBlockParams}},matchExistingProgram:function(t){for(var e=0,r=this.context.environments.length;e<r;e++){var n=this.context.environments[e];if(n&&n.equals(t))return n}},programExpression:function(t){var e=this.environment.children[t],r=[e.index,"data",e.blockParams];return(this.useBlockParams||this.useDepths)&&r.push("blockParams"),this.useDepths&&r.push("depths"),"container.program("+r.join(", ")+")"},useRegister:function(t){this.registers[t]||(this.registers[t]=!0,this.registers.list.push(t))},push:function(t){return t instanceof u||(t=this.source.wrap(t)),this.inlineStack.push(t),t},pushStackLiteral:function(t){this.push(new u(t))}
vendor: 4,397 bytes, line 25976
25976,pushSource:function(t){this.pendingContent&&(this.source.push(this.appendToBuffer(this.source.quotedString(this.pendingContent),this.pendingLocation)),this.pendingContent=void 0),t&&this.source.push(t)},replaceStack:function(t){var e=["("],r=void 0,n=void 0,i=void 0;if(!this.isInline())throw new s.default("replaceStack on non-inline");var o=this.popStack(!0);if(o instanceof u)e=["(",r=[o.value]],i=!0;else{n=!0;var a=this.incrStack();e=["((",this.push(a)," = ",o,")"],r=this.topStack()}var c=t.call(this,r);i||this.popStack(),n&&this.stackSlot--,this.push(e.concat(c,")"))},incrStack:function(){return this.stackSlot++,this.stackSlot>this.stackVars.length&&this.stackVars.push("stack"+this.stackSlot),this.topStackName()},topStackName:function(){return"stack"+this.stackSlot},flushInline:function(){var t=this.inlineStack;this.inlineStack=[];for(var e=0,r=t.length;e<r;e++){var n=t[e];if(n instanceof u)this.compileStack.push(n);else{var i=this.incrStack();this.pushSource([i," = ",n,";"]),this.compileStack.push(i)}}},isInline:function(){return this.inlineStack.length},popStack:function(t){var e=this.isInline(),r=(e?this.inlineStack:this.compileStack).pop();if(!t&&r instanceof u)return r.value;if(!e){if(!this.stackSlot)throw new s.default("Invalid stack pop");this.stackSlot--}return r},topStack:function(){var t=this.isInline()?this.inlineStack:this.compileStack,e=t[t.length-1];return e instanceof u?e.value:e},contextName:function(t){return this.useDepths&&t?"depths["+t+"]":"depth"+t},quotedString:function(t){return this.source.quotedString(t)},objectLiteral:function(t){return this.source.objectLiteral(t)},aliasable:function(t){var e=this.aliases[t];return e?(e.referenceCount++,e):((e=this.aliases[t]=this.source.wrap(t)).aliasable=!0,e.referenceCount=1,e)},setupHelper:function(t,e,r){var n=[];return{params:n,paramsInit:this.setupHelperArgs(e,t,n,r),name:this.nameLookup("helpers",e,"helper"),callParams:[this.aliasable(this.contextName(0)+" != null ? "+this.contextName(0)+" : (container.nullContext || {})")].concat(n)}},setupParams:function(t,e,r){var n={},i=[],o=[],s=[],a=!r,c=void 0;a&&(r=[]),n.name=this.quotedString(t),n.hash=this.popStack(),this.trackIds&&(n.hashIds=this.popStack()),this.stringParams&&(n.hashTypes=this.popStack(),n.hashContexts=this.popStack());var u=this.popStack(),l=this.popStack();(l||u)&&(n.fn=l||"container.noop",n.inverse=u||"container.noop");for(var f=e;f--;)c=this.popStack(),r[f]=c,this.trackIds&&(s[f]=this.popStack()),this.stringParams&&(o[f]=this.popStack(),i[f]=this.popStack());return a&&(n.args=this.source.generateArray(r)),this.trackIds&&(n.ids=this.source.generateArray(s)),this.stringParams&&(n.types=this.source.generateArray(o),n.contexts=this.source.generateArray(i)),this.options.data&&(n.data="data"),this.useBlockParams&&(n.blockParams="blockParams"),n},setupHelperArgs:function(t,e,r,n){var i=this.setupParams(t,e,r);return i.loc=JSON.stringify(this.source.currentLocation),i=this.objectLiteral(i),n?(this.useRegister("options"),r.push("options"),["options=",i]):r?(r.push(i),""):i}},function(){for(var t="break else new var case finally return void catch for switch while continue function this with default if throw delete in try do instanceof typeof abstract enum int short boolean export interface static byte extends long super char final native synchronized class float package throws const goto private transient debugger implements protected volatile double import public let yield await null true false".split(" "),e=l.RESERVED_WORDS={},r=0,n=t.length;r<n;r++)e[t[r]]=!0}(),l.isValidJavaScriptVariableName=function(t){return!l.RESERVED_WORDS[t]&&/^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(t)},e.default=l,t.exports=e.default},function(t,e,r){"use strict";var n=r(60).default;e.__esModule=!0;var i=r(5),o=void 0;function s(t,e,r){if(i.isArray(t)){for(var n=[],o=0,s=t.length;o<s;o++)n.push(e.wrap(t[o],r));return n}return"boolean"==typeof t||"number"==typeof t?t+"":t}function a(t){this.srcFile=t,this.source=[]}o||((o=function(t,e,r,n){this.src="",n&&this.add(n)}).prototype={add:function(t){i.isArray(t)&&(t=t.join("")),this.src+=t},prepend:function(t){i.isArray(t)&&(t=t.join("")),this.src=t+this.src},toStringWithSourceMap:function(){return{code:this.toString()}},toString:function(){return this.src}}),a.prototype={isEmpty:function(){return!this.source.length},prepend:function(t,e){this.source.unshift(this.wrap(t,e))}
vendor: 1,194 bytes, line 25976
25976,push:function(t,e){this.source.push(this.wrap(t,e))},merge:function(){var t=this.empty();return this.each((function(e){t.add(["  ",e,"\n"])})),t},each:function(t){for(var e=0,r=this.source.length;e<r;e++)t(this.source[e])},empty:function(){var t=this.currentLocation||{start:{}};return new o(t.start.line,t.start.column,this.srcFile)},wrap:function(t){var e=arguments.length<=1||void 0===arguments[1]?this.currentLocation||{start:{}}:arguments[1];return t instanceof o?t:(t=s(t,this,e),new o(e.start.line,e.start.column,this.srcFile,t))},functionCall:function(t,e,r){return r=this.generateList(r),this.wrap([t,e?"."+e+"(":"(",r,")"])},quotedString:function(t){return'"'+(t+"").replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")+'"'},objectLiteral:function(t){var e=this,r=[];n(t).forEach((function(n){var i=s(t[n],e);"undefined"!==i&&r.push([e.quotedString(n),":",i])}));var i=this.generateList(r);return i.prepend("{"),i.add("}"),i},generateList:function(t){for(var e=this.empty(),r=0,n=t.length;r<n;r++)r&&e.add(","),e.add(s(t[r],this));return e},generateArray:function(t){var e=this.generateList(t);
25976return e.prepend("["),e.add("]"),e}},e.default=a,t.exports=e.default}])},t.exports=e()},3798:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>m});r(8037);var n=r(8134),i=r(2561),o=r(6710),s=r(3008),a=r(3134),c=r(6973),u=(r(4958),r(7372),r(5549),r(5249),r(4707),r(3348),r(3078),r(2558),r(6160),r(8021),r(9064),r(3376),r(5424),r(1759),r(7567),r(3544),r(2901),r(6782)),l=r(5814),f=r(5355),h=r.n(f),p=r(6596),d=r(3230),v=r(5413);function g(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(g=function(){return!!t})()}var m=function(t){function e(){var t,r,n,o;(0,i.A)(this,e);for(var c=arguments.length,u=new Array(c),l=0;l<c;l++)u[l]=arguments[l];return r=this,n=e,o=[].concat(u),n=(0,a.A)(n),(t=(0,s.A)(r,g()?Reflect.construct(n,o||[],(0,a.A)(r).constructor):n.apply(r,o))).prevState=null,t.modelCardSpecsContainerInnerTemplate=null,t}return(0,c.A)(e,t),(0,o.A)(e,[{key:"connect",value:function(){(0,l.wA)(this),(0,d.P)(this,p.c,this.render.bind(this)),this.render(this.store.getState())}},{key:"change",value:function(t){var e=t.currentTarget.value,r=this.store.getState(),i=(0,n.A)(r.selectedModelIds);h()(0,r.selectableModelCount).forEach((function(t){i[t]||(i[t]=null)})),i[this.indexValue]=e,this.store.setState({selectedModelIds:i})}},{key:"render",value:function(t){var e,r,n,i=this;if(t.selectedLineupId!==(null===(e=this.prevState)||void 0===e?void 0:e.selectedLineupId)){var o=t.lineups.find((function(e){return e.id===t.selectedLineupId})),s=t.models.filter((function(e){return e.lineupId===t.selectedLineupId}));this.titleTarget.textContent=o.name,this.totalTarget.textContent=s.length,this.modelCardSpecsContainerInnerTemplate||(this.modelCardSpecsContainerInnerTemplate=v.N.compile('\n                    {{#each models}}\n                    <div>\n                        {{> modules/model-card-specs inputType="radio" inputName="model" inputValue=id name=name specs=specs attrs=\'data-'.concat(this.identifier,'-target="modelCardSpecs"\' inputAttrs=\'data-action="change->').concat(this.identifier,"#change\"'}}\n                    </div>\n                    {{/each}}\n                "))),this.modelCardSpecsContainerTarget.innerHTML=this.modelCardSpecsContainerInnerTemplate({models:s})}if(t.selectedModelIds!==(null===(r=this.prevState)||void 0===r?void 0:r.selectedModelIds)){var a=Boolean(t.selectedModelIds[this.indexValue]);this.selectedCountTarget.textContent=a?1:0,this.modelCardSpecsTargets.forEach((function(e){var r=e.querySelector('input[type="radio"]'),n=t.selectedModelIds.includes(r.value),o=r.value===t.selectedModelIds[i.indexValue];e.setAttribute("aria-disabled",n&&!o),r.disabled=n&&!o,r.checked=o}))}t.selectableModelCount!==(null===(n=this.prevState)||void 0===n?void 0:n.selectableModelCount)&&this.indexValue+1>t.selectableModelCount&&this.dispatch("dismiss"),this.prevState=t}}])}(u.xI);m.targets=["title","total","selectedCount","modelCardSpecsContainer","modelCardSpecs"],m.values={index:Number}},3838:(t,e,r)=>{"use strict";var n=r(8810),i=r(8649),o=r(8770),s=r(4643),a=r(3081);n({target:"Array",proto:!0,arity:1,forced:r(2675)((function(){return 4294967297!==[].push.call({length:4294967296},1)}))||!function(){try{Object.defineProperty([],"length",{writable:!1}).push()}catch(t){return t instanceof TypeError}}()},{push:function(t){var e=i(this),r=o(e),n=arguments.length;a(r+n);for(var c=0;c<n;c++)e[r]=arguments[c],r++;return s(e,r),r}})},3844:(t,e,r)=>{"use strict";var n,i=r(659),o=r(3037),s=r(8563),a=r(6617),c=r(7073),u=r(4451),l=r(3779),f="prototype",h="script",p=l("IE_PROTO"),d=function(){},v=function(t){return"<"+h+">"+t+"</"+h+">"},g=function(t){t.write(v("")),t.close();var e=t.parentWindow.Object;return t=null,e},m=function(){try{n=new ActiveXObject("htmlfile")}catch(t){}var t,e,r;m="undefined"!=typeof document?document.domain&&n?g(n):(e=u("iframe"),r="java"+h+":",e.style.display="none",c.appendChild(e),e.src=String(r),(t=e.contentWindow.document).open(),t.write(v("document.F=Object")),t.close(),t.F):g(n);for(var i=s.length;i--;)delete m[f][s[i]];return m()};
25976a[p]=!0,t.exports=Object.create||function(t,e){var r;return null!==t?(d[f]=i(t),r=new d,d[f]=null,r[p]=t):r=m(),void 0===e?r:o.f(r,e)}},3893:(t,e,r)=>{"use strict";var n=r(3163),i=r(4461),o=r(671),s=r(7837),a=r(1715),c=r(1704),u=r(7132),l=r(9859),f=r(8687),h=r(8580),p=r(4535),d=r(2128),v=r(6007);t.exports=function(t,e,r,g){var m="stackTraceLimit",y=g?2:1,b=t.split("."),w=b[b.length-1],x=n.apply(null,b);if(x){var S=x.prototype;if(!v&&i(S,"cause")&&delete S.cause,!r)return x;var A=n("Error"),O=e((function(t,e){var r=f(g?e:t,void 0),n=g?new x(t):new x;return void 0!==r&&o(n,"message",r),p(n,O,n.stack,2),this&&s(S,this)&&l(n,this,O),arguments.length>y&&h(n,arguments[y]),n}));if(O.prototype=S,"Error"!==w?a?a(O,A):c(O,A,{name:!0}):d&&m in x&&(u(O,x,m),u(O,x,"prepareStackTrace")),c(O,x),!v)try{S.name!==w&&o(S,"name",w),S.constructor=O}catch(t){}return O}}},3982:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>u});r(8037);var n=r(2561),i=r(6710),o=r(3008),s=r(3134),a=r(6973);r(5249),r(6160),r(3376),r(1759),r(3544);function c(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(c=function(){return!!t})()}var u=function(t){function e(){return(0,n.A)(this,e),t=this,r=e,i=arguments,r=(0,s.A)(r),(0,o.A)(t,c()?Reflect.construct(r,i||[],(0,s.A)(t).constructor):r.apply(t,i));var t,r,i}return(0,a.A)(e,t),(0,i.A)(e,[{key:"connect",value:function(){var t=this.triggerTargets.checked;this.triggerTargets.length&&this.toggleDisabled(t)}},{key:"changeAgreement",value:function(t){var e=t.currentTarget.checked;this.toggleDisabled(e)}},{key:"toggleDisabled",value:function(t){this.buttonTargets.forEach((function(e){var r=e.querySelector('input[type="submit"]');e.ariaDisabled=!t,r?r.disabled=!t:e.tabIndex=t?0:-1}))}}])}(r(6782).xI);u.targets=["trigger","button"]},3985:(t,e,r)=>{"use strict";var n=r(659),i=r(3112),o=r(9601),s=r(4175)("species");t.exports=function(t,e){var r,a=n(t).constructor;return void 0===a||o(r=n(a)[s])?e:i(r)}},4009:(t,e,r)=>{"use strict";var n=r(5952),i=r(3613),o=r(1701),s=r(8682),a=r(1233),c=r(7582),u=s("Object.prototype.toString"),l=r(8118)(),f="undefined"==typeof globalThis?r.g:globalThis,h=i(),p=s("String.prototype.slice"),d=s("Array.prototype.indexOf",!0)||function(t,e){for(var r=0;r<t.length;r+=1)if(t[r]===e)return r;return-1},v={__proto__:null};n(h,l&&a&&c?function(t){var e=new f[t];if(Symbol.toStringTag in e&&c){var r=c(e),n=a(r,Symbol.toStringTag);if(!n&&r){var i=c(r);n=a(i,Symbol.toStringTag)}v["$"+t]=o(n.get)}}:function(t){var e=new f[t],r=e.slice||e.set;r&&(v["$"+t]=o(r))});t.exports=function(t){if(!t||"object"!=typeof t)return!1;if(!l){var e=p(u(t),8,-1);return d(h,e)>-1?e:"Object"===e&&function(t){var e=!1;return n(v,(function(r,n){if(!e)try{r(t),e=p(n,1)}catch(t){}})),e}(t)}return a?function(t){var e=!1;return n(v,(function(r,n){if(!e)try{"$"+r(t)===n&&(e=p(n,1))}catch(t){}})),e}(t):null}},4028:(t,e,r)=>{"use strict";var n=r(2128),i=r(6005),o=r(5936);t.exports=function(t,e,r){n?i.f(t,e,o(0,r)):t[e]=r}},4034:(t,e,r)=>{"use strict";var n=r(8810),i=r(2484),o=r(4334),s=r(8649),a=r(8770),c=r(8458),u=r(7267),l=r(2675),f=r(4492),h=r(8754),p=r(3409),d=r(719),v=r(2763),g=r(3539),m=[],y=i(m.sort),b=i(m.push),w=l((function(){m.sort(void 0)})),x=l((function(){m.sort(null)})),S=h("sort"),A=!l((function(){if(v)return v<70;if(!(p&&p>3)){if(d)return!0;if(g)return g<603;var t,e,r,n,i="";for(t=65;t<76;
25976t++){switch(e=String.fromCharCode(t),t){case 66:case 69:case 70:case 72:r=3;break;case 68:case 71:r=4;break;default:r=2}for(n=0;n<47;n++)m.push({k:e+n,v:r})}for(m.sort((function(t,e){return e.v-t.v})),n=0;n<m.length;n++)e=m[n].k.charAt(0),i.charAt(i.length-1)!==e&&(i+=e);return"DGBEFHACIJK"!==i}}));n({target:"Array",proto:!0,forced:w||!x||!S||!A},{sort:function(t){void 0!==t&&o(t);var e=s(this);if(A)return void 0===t?y(e):y(e,t);var r,n,i=[],l=a(e);for(n=0;n<l;n++)n in e&&b(i,e[n]);for(f(i,function(t){return function(e,r){return void 0===r?-1:void 0===e?1:void 0!==t?+t(e,r)||0:u(e)>u(r)?1:-1}}(t)),r=a(i),n=0;n<r;)e[n]=i[n++];for(;n<l;)c(e,n++);return e}})},4035:(t,e,r)=>{"use strict";var n=r(659),i=r(1151);t.exports=function(t,e,r,o){try{return o?e(n(r)[0],r[1]):e(r)}catch(e){i(t,"throw",e)}}},4049:t=>{"use strict";var e=Math.ceil,r=Math.floor;t.exports=Math.trunc||function(t){var n=+t;return(n>0?r:e)(n)}},4102:(t,e,r)=>{"use strict";var n=r(321);t.exports=function(t){return"object"==typeof t?null!==t:n(t)}},4113:(t,e,r)=>{"use strict";var n=r(2128),i=r(2675),o=r(4451);t.exports=!n&&!i((function(){return 7!==Object.defineProperty(o("div"),"a",{get:function(){return 7}}).a}))},4130:(t,e,r)=>{"use strict";var n=r(4334),i=r(8649),o=r(51),s=r(8770),a=TypeError,c="Reduce of empty array with no initial value",u=function(t){return function(e,r,u,l){var f=i(e),h=o(f),p=s(f);if(n(r),0===p&&u<2)throw new a(c);var d=t?p-1:0,v=t?-1:1;if(u<2)for(;;){if(d in h){l=h[d],d+=v;break}if(d+=v,t?d<0:p<=d)throw new a(c)}for(;t?d>=0:p>d;d+=v)d in h&&(l=r(l,h[d],d,f));return l}};t.exports={left:u(!1),right:u(!0)}},4157:t=>{var e=Math.ceil,r=Math.max;t.exports=function(t,n,i,o){for(var s=-1,a=r(e((n-t)/(i||1)),0),c=Array(a);a--;)c[o?a:++s]=t,t+=i;return c}},4175:(t,e,r)=>{"use strict";var n=r(8052),i=r(6445),o=r(4461),s=r(2868),a=r(6891),c=r(3316),u=n.Symbol,l=i("wks"),f=c?u.for||u:u&&u.withoutSetter||s;t.exports=function(t){return o(l,t)||(l[t]=a&&o(u,t)?u[t]:f("Symbol."+t)),l[t]}},4222:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>u});r(8037);var n=r(2561),i=r(6710),o=r(3008),s=r(3134),a=r(6973);r(4958);function c(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(c=function(){return!!t})()}var u=function(t){function e(){var t,r,i,a;(0,n.A)(this,e);for(var u=arguments.length,l=new Array(u),f=0;f<u;f++)l[f]=arguments[f];return r=this,i=e,a=[].concat(l),i=(0,s.A)(i),(t=(0,o.A)(r,c()?Reflect.construct(i,a||[],(0,s.A)(r).constructor):i.apply(r,a))).currentX=0,t.startX=0,t.startScrollX=0,t.isDragging=!1,t.afterDragged=!1,t}return(0,a.A)(e,t),(0,i.A)(e,[{key:"startDragging",value:function(t){this.startX=this.currentX,this.startScrollX=this.element.scrollLeft,this.isDragging=!0,t.preventDefault()}},{key:"stopDragging",value:function(){this.isDragging=!1}},{key:"updatePointer",value:function(t){if(this.currentX=t.clientX,this.isDragging){var e=this.currentX-this.startX;this.element.scrollLeft=this.startScrollX-e,this.afterDragged=!0}}},{key:"preventDefault",value:function(t){this.afterDragged&&(this.afterDragged=!1,t.preventDefault())}}])}(r(6782).xI)},4267:(t,e,r)=>{"use strict";var n=r(8810),i=r(863);n({target:"RegExp",proto:!0,forced:/./.exec!==i},{exec:i})},4286:t=>{t.exports=function(t){return String(t)}},4294:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>f});r(8037);var n=r(2561),i=r(6710),o=r(3008),s=r(3134),a=r(6973),c=r(6782),u=r(5814);r(3078),r(4702);function l(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(l=function(){return!!t})()}var f=function(t){function e(){return(0,n.A)(this,e),t=this,r=e,i=arguments,r=(0,s.A)(r),(0,o.A)(t,l()?Reflect.construct(r,i||[],(0,s.A)(t).constructor):r.apply(t,i));var t,r,i}return(0,a.A)(e,t),(0,i.A)(e,[{key:"connect",value:function(){(0,u.wA)(this),function(t){var e="".concat(t.identifier,"Controller");t.element[e]=t;var r=t.disconnect.bind(t);Object.assign(t,{disconnect:function(){delete t.element[e],r()}})}(this)}},{key:"toggle",value:function(){this.checked=!this.checked}},{key:"checked",get:function(){return"true"===this.element.getAttribute("aria-checked")},set:function(t){this.element.setAttribute("aria-checked",Boolean(t)),this.dispatch("change",{checked:this.checked})}}])}(c.xI)},4295:(t,e,r)=>{"use strict";var n,i=r(802),o=r(593),s=r(155),a=r(7180),c=r(9304),u=r(9361),l=r(6757),f=r(4923),h=r(7256),p=r(5414),d=r(7954),v=r(3452),g=r(1358),m=r(5720),y=r(3515),b=Function,w=function(t){try{return b('"use strict"; return ('+t+").constructor;")()}catch(t){}},x=r(1233),S=r(9997),A=function(){throw new l},O=x?function(){try{return A}catch(t){try{return x(arguments,"callee").get}catch(t){return A}}}
25976():A,E=r(8573)(),k=r(7582),T=r(2170),_=r(9090),C=r(24),P=r(1530),I={},j="undefined"!=typeof Uint8Array&&k?k(Uint8Array):n,M={__proto__:null,"%AggregateError%":"undefined"==typeof AggregateError?n:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?n:ArrayBuffer,"%ArrayIteratorPrototype%":E&&k?k([][Symbol.iterator]()):n,"%AsyncFromSyncIteratorPrototype%":n,"%AsyncFunction%":I,"%AsyncGenerator%":I,"%AsyncGeneratorFunction%":I,"%AsyncIteratorPrototype%":I,"%Atomics%":"undefined"==typeof Atomics?n:Atomics,"%BigInt%":"undefined"==typeof BigInt?n:BigInt,"%BigInt64Array%":"undefined"==typeof BigInt64Array?n:BigInt64Array,"%BigUint64Array%":"undefined"==typeof BigUint64Array?n:BigUint64Array,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?n:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":o,"%eval%":eval,"%EvalError%":s,"%Float16Array%":"undefined"==typeof Float16Array?n:Float16Array,"%Float32Array%":"undefined"==typeof Float32Array?n:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?n:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?n:FinalizationRegistry,"%Function%":b,"%GeneratorFunction%":I,"%Int8Array%":"undefined"==typeof Int8Array?n:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?n:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?n:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%
25976IteratorPrototype%":E&&k?k(k([][Symbol.iterator]())):n,"%JSON%":"object"==typeof JSON?JSON:n,"%Map%":"undefined"==typeof Map?n:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&E&&k?k((new Map)[Symbol.iterator]()):n,"%Math%":Math,"%Number%":Number,"%Object%":i,"%Object.getOwnPropertyDescriptor%":x,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?n:Promise,"%Proxy%":"undefined"==typeof Proxy?n:Proxy,"%RangeError%":a,"%ReferenceError%":c,"%Reflect%":"undefined"==typeof Reflect?n:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?n:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&E&&k?k((new Set)[Symbol.iterator]()):n,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?n:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":E&&k?k(""[Symbol.iterator]()):n,"%Symbol%":E?Symbol:n,"%SyntaxError%":u,"%ThrowTypeError%":O,"%TypedArray%":j,"%TypeError%":l,"%Uint8Array%":"undefined"==typeof Uint8Array?n:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?n:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?n:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?n:Uint32Array,"%URIError%":f,"%WeakMap%":"undefined"==typeof WeakMap?n:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?n:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?n:WeakSet,"%Function.prototype.call%":P,"%Function.prototype.apply%":C,"%Object.defineProperty%":S,"%Object.getPrototypeOf%":T,"%Math.abs%":h,"%Math.floor%":p,"%Math.max%":d,"%Math.min%":v,"%Math.pow%":g,"%Math.round%":m,"%Math.sign%":y,"%Reflect.getPrototypeOf%":_};if(k)try{null.error}catch(t){var L=k(k(t));M["%Error.prototype%"]=L}var N=function t(e){var r;if("%AsyncFunction%"===e)r=w("async function () {}");else if("%GeneratorFunction%"===e)r=w("function* () {}");else if("%AsyncGeneratorFunction%"===e)r=w("async function* () {}");else if("%AsyncGenerator%"===e){var n=t("%AsyncGeneratorFunction%");n&&(r=n.prototype)}else if("%AsyncIteratorPrototype%"===e){var i=t("%AsyncGenerator%");i&&k&&(r=k(i.prototype))}return M[e]=r,r},B={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},R=r(469),D=r(9731),F=R.call(P,Array.prototype.concat),$=R.call(C,Array.prototype.splice),H=R.call(P,String.prototype.replace),z=R.call(P,String.prototype.slice),V=R.call(P,RegExp.prototype.exec),U=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,W=/\\(\\)?/g,K=function(t,e){var r,n=t;if(D(B,n)&&(n="%"+(r=B[n])[0]+"%"),D(M,n)){var i=M[n];if(i===I&&(i=N(n)),void 0===i&&!e)throw new l("intrinsic "+t+" exists, but is not available. Please file an issue!");return{alias:r,name:n,value:i}}throw new u("intrinsic "+t+" does not exist!")};t.exports=function(t,e){if("string"!=typeof t||0===t.length)throw new l("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof e)throw new l('"allowMissing" argument must be a boolean');if(null===V(/^%?[^%]*%?$/,t))throw new u("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var r=function(t){var e=z(t,0,1),r=z(t,-1);if("%"===e&&"%"!==r)throw new u("invalid intrinsic syntax, expected closing `%`");if("%"===r&&"%"!==e)throw new u("invalid intrinsic syntax, expected opening `%`");var n=[];return H(t,U,(function(t,e,r,i){n[n.length]=r?H(i,W,"$1"):e||t})),n}(t),n=r.length>0?r[0]:"",i=K("%"+n+"%",e),o=i.name,s=i.value,a=!1,c=i.alias;c&&(n=c[0],$(r,F([0,1],c)));for(var f=1,h=!0;f<r.length;f+=1){var p=r[f],d=z(p,0,1),v=z(p,-1);if(('"'===d||"'"===d||"`"===d||'"'===v||"'"===v||"`"===v)&&d!==v)throw new u("property names with quotes must have matching quotes");if("constructor"!==p&&h||(a=!0),D(M,o="%"+(n+="."+p)+"%"))s=M[o];else if(null!=s){if(!(p in s)){if(!e)throw new l("base intrinsic for "+t+" exists, but the property is not available.");return}if(x&&f+1>=r.length){var g=x(s,p);s=(h=!!g)&&"get"in g&&!("originalValue"in g.get)?g.get:s[p]}else h=D(s,p),s=s[p];h&&!a&&(M[o]=s)}}return s}},4299:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>u});r(8037);var n=r(2561),i=r(6710),o=r(3008),s=r(3134),a=r(6973);function c(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(c=function(){return!!t})()}var u=function(t){function e(){return(0,n.A)(this,e),t=this,r=e,i=arguments,r=(0,s.A)(r),(0,o.A)(t,c()?Reflect.construct(r,i||[],(0,s.A)(t).constructor):r.apply(t,i));var t,r,i}return(0,a.A)(e,t),(0,i.A)(e,[{key:"open",value:function(){document.body.insertAdjacentHTML("beforeend",this.templateTarget.innerHTML)}}])}(r(6782).xI);u.targets=["template"]},4334:(t,e,r)=>{"use strict";var n=r(321),i=r(8379),o=TypeError;t.exports=function(t){if(n(t))return t;throw new o(i(t)+" is not a function")}},4360:(t,e,r)=>
25976{var n=r(6990),i=r(6015);t.exports=function(t){if(!i(t))return!1;var e=n(t);return"[object Function]"==e||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e}},4451:(t,e,r)=>{"use strict";var n=r(8052),i=r(4102),o=n.document,s=i(o)&&i(o.createElement);t.exports=function(t){return s?o.createElement(t):{}}},4461:(t,e,r)=>{"use strict";var n=r(2484),i=r(8649),o=n({}.hasOwnProperty);t.exports=Object.hasOwn||function(t,e){return o(i(t),e)}},4492:(t,e,r)=>{"use strict";var n=r(4540),i=Math.floor,o=function(t,e){var r=t.length;if(r<8)for(var s,a,c=1;c<r;){for(a=c,s=t[c];a&&e(t[a-1],s)>0;)t[a]=t[--a];a!==c++&&(t[a]=s)}else for(var u=i(r/2),l=o(n(t,0,u),e),f=o(n(t,u),e),h=l.length,p=f.length,d=0,v=0;d<h||v<p;)t[d+v]=d<h&&v<p?e(l[d],f[v])<=0?l[d++]:f[v++]:d<h?l[d++]:f[v++];return t};t.exports=o},4506:(t,e,r)=>{var n=r(4157),i=r(6218),o=r(5410);t.exports=function(t){return function(e,r,s){return s&&"number"!=typeof s&&i(e,r,s)&&(r=s=void 0),e=o(e),void 0===r?(r=e,e=0):r=o(r),s=void 0===s?e<r?1:-1:o(s),n(e,r,s,t)}}},4515:(t,e,r)=>{"use strict";var n=r(9747),i=r(4461),o=r(5672),s=r(6005).f;t.exports=function(t){var e=n.Symbol||(n.Symbol={});i(e,t)||s(e,t,{value:o.f(t)})}},4535:(t,e,r)=>{"use strict";var n=r(671),i=r(7389),o=r(3087),s=Error.captureStackTrace;t.exports=function(t,e,r,a){o&&(s?s(t,e):n(t,"stack",i(r,a)))}},4540:(t,e,r)=>{"use strict";var n=r(2484);t.exports=n([].slice)},4559:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>n});const n='<{{#if type}}button{{else}}a{{/if}}\r\n    class="prd-button of-{{default variant "default"}}{{#if size}} of-{{size}} prd-extraSmallScreen-width-auto{{/if}}{{#if isNoIcon}}{{#unless isExtraSmall}} of-icon-none{{/unless}}{{/if}}{{#if isExtraSmall}} prd-utility-body-extraSmall{{else}} prd-utility-body-small{{/if}}{{#unless isNoFocusRing}} prd-utility-focusRing{{/unless}}"\r\n    {{#if link}}\r\n    href="{{link}}"\r\n    {{/if}}\r\n    {{#if type}}\r\n    type="{{type}}"\r\n    {{/if}}\r\n    {{#if attrs}}\r\n    {{{attrs}}}\r\n    {{/if}}\r\n>\r\n    {{#if content}}\r\n    <span class="prd-button-label">{{{content}}}</span>\r\n    {{/if}}\r\n    {{#unless isNoIcon}}\r\n    <svg class="prd-button-icon" viewBox="0 0 30 30">\r\n        <use xlink:href="#icon-{{default icon "arrow"}}"/>\r\n    </svg>\r\n    {{/unless}}\r\n</{{#if type}}button{{else}}a{{/if}}>\r\n'},4584:(t,e,r)=>{"use strict";var n=r(4102),i=r(2748),o=r(4175)("match");t.exports=function(t){var e;return n(t)&&(void 0!==(e=t[o])?!!e:"RegExp"===i(t))}},4643:(t,e,r)=>{"use strict";var n=r(2128),i=r(1948),o=TypeError,s=Object.getOwnPropertyDescriptor,a=n&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(t){return t instanceof TypeError}}();t.exports=a?function(t,e){if(i(t)&&!s(t,"length").writable)throw new o("Cannot set read only .length");return t.length=e}:function(t,e){return t.length=e}},4683:t=>{var e=/^(?:0|[1-9]\d*)$/;t.exports=function(t,r){var n=typeof t;return!!(r=null==r?9007199254740991:r)&&("number"==n||"symbol"!=n&&e.test(t))&&t>-1&&t%1==0&&t<r}},4690:(t,e,r)=>{"use strict";var n=r(2128),i=r(4461),o=Function.prototype,s=n&&Object.getOwnPropertyDescriptor,a=i(o,"name"),c=a&&"something"===function(){}.name,u=a&&(!n||n&&s(o,"name").configurable);t.exports={EXISTS:a,PROPER:c,CONFIGURABLE:u}},4700:(t,e,r)=>{"use strict";var n=r(4792),i=r(8563);t.exports=Object.keys||function(t){return n(t,i)}},4702:(t,e,r)=>{"use strict";var n=r(8810),i=r(5433);n({target:"Object",stat:!0,arity:2,forced:Object.assign!==i},{assign:i})},4706:t=>{t.exports=function(t,e){return"string"==typeof t&&"string"==typeof e?t+e:t}},4707:(t,e,r)=>{"use strict";var n=r(8810),i=r(6749).includes,o=r(2675),s=r(2153);n({target:"Array",proto:!0,forced:o((function(){return!Array(1).includes()}))},{includes:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),s("includes")},4792:(t,e,r)=>{"use strict";var n=r(2484),i=r(4461),o=r(8969),s=r(6749).indexOf,a=r(6617),c=n([].push);t.exports=function(t,e){var r,n=o(t),u=0,l=[];for(r in n)!i(a,r)&&i(n,r)&&c(l,r);for(;e.length>u;
25976)i(n,r=e[u++])&&(~s(l,r)||c(l,r));return l}},4802:(t,e,r)=>{"use strict";var n=r(8810),i=r(2128),o=r(9467),s=r(8969),a=r(3071),c=r(4028);n({target:"Object",stat:!0,sham:!i},{getOwnPropertyDescriptors:function(t){for(var e,r,n=s(t),i=a.f,u=o(n),l={},f=0;u.length>f;)void 0!==(r=i(n,e=u[f++]))&&c(l,e,r);return l}})},4834:(t,e,r)=>{"use strict";var n=r(9601),i=TypeError;t.exports=function(t){if(n(t))throw new i("Can't call method on "+t);return t}},4912:t=>{"use strict";t.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},4923:t=>{"use strict";t.exports=URIError},4929:(t,e,r)=>{"use strict";var n=r(8845);t.exports=function(t,e){return new(n(t))(0===e?0:e)}},4951:(t,e,r)=>{"use strict";var n=r(5719),i=r(9538),o=r(9601),s=r(6609),a=r(4175)("iterator");t.exports=function(t){if(!o(t))return i(t,a)||i(t,"@@iterator")||s[n(t)]}},4956:(t,e,r)=>{"use strict";var n=r(4792),i=r(8563).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return n(t,i)}},4958:(t,e,r)=>{"use strict";var n=r(8810),i=r(2675),o=r(1948),s=r(4102),a=r(8649),c=r(8770),u=r(3081),l=r(4028),f=r(4929),h=r(2321),p=r(4175),d=r(2763),v=p("isConcatSpreadable"),g=d>=51||!i((function(){var t=[];return t[v]=!1,t.concat()[0]!==t})),m=function(t){if(!s(t))return!1;var e=t[v];return void 0!==e?!!e:o(t)};n({target:"Array",proto:!0,arity:1,forced:!g||!h("concat")},{concat:function(t){var e,r,n,i,o,s=a(this),h=f(s,0),p=0;for(e=-1,n=arguments.length;e<n;e++)if(m(o=-1===e?s:arguments[e]))for(i=c(o),u(p+i),r=0;r<i;r++,p++)r in o&&l(h,p,o[r]);else u(p+1),l(h,p++,o);return h.length=p,h}})},4983:(t,e,r)=>{"use strict";var n=r(469),i=r(24),o=r(9630);t.exports=function(){return o(n,i,arguments)}},5001:(t,e,r)=>{"use strict";var n=r(2484),i=r(1948),o=r(321),s=r(2748),a=r(7267),c=n([].push);t.exports=function(t){if(o(t))return t;if(i(t)){for(var e=t.length,r=[],n=0;n<e;n++){var u=t[n];"string"==typeof u?c(r,u):"number"!=typeof u&&"Number"!==s(u)&&"String"!==s(u)||c(r,a(u))}var l=r.length,f=!0;return function(t,e){if(f)return f=!1,e;if(i(this))return e;for(var n=0;n<l;n++)if(r[n]===t)return e}}}},5004:t=>{"use strict";t.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},5030:(t,e,r)=>{"use strict";r(8810)({target:"Array",stat:!0},{isArray:r(1948)})},5034:(t,e,r)=>{"use strict";var n=r(8052);t.exports=n.Promise},5050:(t,e,r)=>{"use strict";var n=r(8810),i=r(2484),o=r(51),s=r(8969),a=r(8754),c=i([].join);n({target:"Array",proto:!0,forced:o!==Object||!a("join",",")},{join:function(t){return c(s(this),void 0===t?",":t)}})},5096:(t,e,r)=>{var n,i,o;window,i=[r(7453),r(8179)],void 0===(o="function"==typeof(n=function(t,e){"use strict";var r=t.create("masonry");r.compatOptions.fitWidth="isFitWidth";var n=r.prototype;return n._resetLayout=function(){this.getSize(),this._getMeasurement("columnWidth","outerWidth"),this._getMeasurement("gutter","outerWidth"),this.measureColumns(),this.colYs=[];for(var t=0;t<this.cols;t++)this.colYs.push(0);this.maxY=0,this.horizontalColIndex=0},n.measureColumns=function(){if(this.getContainerWidth(),!this.columnWidth){var t=this.items[0],r=t&&t.element;this.columnWidth=r&&e(r).outerWidth||this.containerWidth}var n=this.columnWidth+=this.gutter,i=this.containerWidth+this.gutter,o=i/n,s=n-i%n;o=Math[s&&s<1?"round":"floor"](o),this.cols=Math.max(o,1)},n.getContainerWidth=function(){var t=this._getOption("fitWidth")?this.element.parentNode:this.element,r=e(t);this.containerWidth=r&&r.innerWidth},n._getItemLayoutPosition=function(t){t.getSize();var e=t.size.outerWidth%this.columnWidth,r=Math[e&&e<1?"round":"ceil"](t.size.outerWidth/this.columnWidth);r=Math.min(r,this.cols);for(var n=this[this.options.horizontalOrder?"_getHorizontalColPosition":"_getTopColPosition"](r,t),i={x:this.columnWidth*n.col,y:n.y},o=n.y+t.size.outerHeight,s=r+n.col,a=n.col;a<s;a++)this.colYs[a]=o;return i},n._getTopColPosition=function(t){var e=this._getTopColGroup(t),r=Math.min.apply(Math,e);return{col:e.indexOf(r),y:r}},n._getTopColGroup=function(t){if(t<2)return this.colYs;for(var e=[],r=this.cols+1-t,n=0;n<r;n++)e[n]=this._getColGroupY(n,t);return e},n._getColGroupY=function(t,e){if(e<2)return this.colYs[t];var r=this.colYs.slice(t,t+e);return Math.max.apply(Math,r)},n._getHorizontalColPosition=function(t,e){var r=this.horizontalColIndex%this.cols;r=t>1&&r+t>this.cols?0:r;var n=e.size.outerWidth&&e.size.outerHeight;return this.horizontalColIndex=n?r+t:this.horizontalColIndex,{col:r,y:this._getColGroupY(r,t)}},n._manageStamp=function(t){var r=e(t),n=this._getElementOffset(t),i=this._getOption("originLeft")?
25976n.left:n.right,o=i+r.outerWidth,s=Math.floor(i/this.columnWidth);s=Math.max(0,s);var a=Math.floor(o/this.columnWidth);a-=o%this.columnWidth?0:1,a=Math.min(this.cols-1,a);for(var c=(this._getOption("originTop")?n.top:n.bottom)+r.outerHeight,u=s;u<=a;u++)this.colYs[u]=Math.max(c,this.colYs[u])},n._getContainerSize=function(){this.maxY=Math.max.apply(Math,this.colYs);var t={height:this.maxY};return this._getOption("fitWidth")&&(t.width=this._getContainerFitWidth()),t},n._getContainerFitWidth=function(){for(var t=0,e=this.cols;--e&&0===this.colYs[e];)t++;return(this.cols-t)*this.columnWidth-this.gutter},n.needsResizeLayout=function(){var t=this.containerWidth;return this.getContainerWidth(),t!=this.containerWidth},r})?n.apply(e,i):n)||(t.exports=o)},5143:(t,e,r)=>{"use strict";var n=r(8810),i=r(3625),o=r(4334),s=r(1031),a=r(3443),c=r(1072);n({target:"Promise",stat:!0,forced:r(341)},{all:function(t){var e=this,r=s.f(e),n=r.resolve,u=r.reject,l=a((function(){var r=o(e.resolve),s=[],a=0,l=1;c(t,(function(t){var o=a++,c=!1;l++,i(r,e,t).then((function(t){c||(c=!0,s[o]=t,--l||n(s))}),u)})),--l||n(s)}));return l.error&&u(l.value),r.promise}})},5150:(t,e,r)=>{"use strict";var n=r(2484),i=r(4834),o=r(7267),s=r(4912),a=n("".replace),c=RegExp("^["+s+"]+"),u=RegExp("(^|[^"+s+"])["+s+"]+$"),l=function(t){return function(e){var r=o(i(e));return 1&t&&(r=a(r,c,"")),2&t&&(r=a(r,u,"$1")),r}};t.exports={start:l(1),end:l(2),trim:l(3)}},5194:(t,e,r)=>{var n="object"==typeof r.g&&r.g&&r.g.Object===Object&&r.g;t.exports=n},5236:(t,e,r)=>{"use strict";var n=r(321),i=r(6005),o=r(9455),s=r(1941);t.exports=function(t,e,r,a){a||(a={});var c=a.enumerable,u=void 0!==a.name?a.name:e;if(n(r)&&o(r,u,a),a.global)c?t[e]=r:s(e,r);else{try{a.unsafe?t[e]&&(c=!0):delete t[e]}catch(t){}c?t[e]=r:i.f(t,e,{value:r,enumerable:!1,configurable:!a.nonConfigurable,writable:!a.nonWritable})}return t}},5249:(t,e,r)=>{"use strict";var n=r(8810),i=r(9311);n({target:"Array",proto:!0,forced:[].forEach!==i},{forEach:i})},5267:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>d});r(8037);var n=r(2561),i=r(6710),o=r(3008),s=r(3134),a=r(6973),c=(r(3348),r(3078),r(5424),r(1759),r(6335),r(4267),r(5734),r(7963),r(2901),r(6782));function u(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(u=function(){return!!t})()}var l=170,f=0,h="is-hide",p="prd-seriesOverviewIntroduction-moreButton",d=function(t){function e(){return(0,n.A)(this,e),t=this,r=e,i=arguments,r=(0,s.A)(r),(0,o.A)(t,u()?Reflect.construct(r,i||[],(0,s.A)(t).constructor):r.apply(t,i));var t,r,i}return(0,a.A)(e,t),(0,i.A)(e,[{key:"connect",value:function(){if(!this.isExcludedLang){var t=this.descriptionTarget.textContent;if(this.maxCharacterCount=this.maxValue,t.length>this.maxCharCount){this.rebuildText();var e=window.matchMedia("(min-width: 60.625em)");e.addListener(this.onMediaChange.bind(this)),this.onMediaChange(e)}}}},{key:"onMediaChange",value:function(t){t.matches?this.showOmittedText():this.hideOmittedText()}},{key:"splitText",value:function(){var t=this.descriptionTarget.textContent;this.notOmittedText=t.substr(0,this.maxCharCount),this.omittedText=t.substr(this.maxCharCount,t.length),this.omittedText=this.wrapText(this.omittedText)}},{key:"wrapText",value:function(t){var e=document.createElement("span");return e.textContent=t,e}},{key:"createSuffix",value:function(){this.suffix=document.createElement("span"),this.suffix.textContent=this.suffixValue}},{key:"createMoreButton",value:function(){this.moreButton=document.createElement("button"),this.moreButton.setAttribute("type","button"),this.moreButton.classList.add(p),this.moreButton.textContent=this.moreValue,this.moreButton.dataset.action="click->series-description-omit#showOmittedText"}},{key:"rebuildText",value:function(){var t=document.createDocumentFragment();this.splitText(),this.createSuffix(),this.createMoreButton(),t.textContent=this.notOmittedText,t.appendChild(this.suffix),t.appendChild(this.moreButton),t.appendChild(this.omittedText),this.descriptionTarget.innerText="",this.descriptionTarget.appendChild(t)}},{key:"showOmittedText",value:function(){this.showItem(this.omittedText),this.hideItem(this.suffix
25976),this.hideItem(this.moreButton)}},{key:"hideOmittedText",value:function(){this.hideItem(this.omittedText),this.showItem(this.suffix),this.showItem(this.moreButton)}},{key:"showItem",value:function(t){t.classList.remove(h)}},{key:"hideItem",value:function(t){t.classList.add(h)}},{key:"maxCharacterCount",set:function(t){t&&"number"==typeof t||(this.maxCharCount=l),this.isNumber&&(parseFloat(t)>f?this.maxCharCount=parseFloat(t):this.maxCharCount=f),this.isMultiByteLang&&(this.maxCharCount=Math.floor(this.maxCharCount/2))}},{key:"isMultiByteLang",get:function(){var t=window.kpi_languageSettings.siteLang?window.kpi_languageSettings.siteLang[0]:"";return/^zh-|^ko-/.test(t)}},{key:"isExcludedLang",get:function(){var t=window.kpi_languageSettings.siteLang?window.kpi_languageSettings.siteLang[0]:"";return/^th-/.test(t)}},{key:"isNumber",get:function(){return!isNaN(parseFloat(this.maxValue))}}])}(c.xI);d.targets=["description"],d.values={max:Number,min:Number,suffix:String,more:String}},5321:(t,e,r)=>{"use strict";var n=r(8810),i=r(1072),o=r(4334),s=r(659),a=r(779),c=TypeError;n({target:"Iterator",proto:!0,real:!0},{reduce:function(t){s(this),o(t);var e=a(this),r=arguments.length<2,n=r?void 0:arguments[1],u=0;if(i(e,(function(e){r?(r=!1,n=e):n=t(n,e,u),u++}),{IS_RECORD:!0}),r)throw new c("Reduce of empty iterator with no initial value");return n}})},5355:(t,e,r)=>{var n=r(4506)();t.exports=n},5382:(t,e,r)=>{"use strict";var n=r(8118)(),i=r(8682)("Object.prototype.toString"),o=function(t){return!(n&&t&&"object"==typeof t&&Symbol.toStringTag in t)&&"[object Arguments]"===i(t)},s=function(t){return!!o(t)||null!==t&&"object"==typeof t&&"length"in t&&"number"==typeof t.length&&t.length>=0&&"[object Array]"!==i(t)&&"callee"in t&&"[object Function]"===i(t.callee)},a=function(){return o(arguments)}();o.isLegacyArguments=s,t.exports=a?o:s},5396:(t,e,r)=>{"use strict";var n,i=r(8052),o=r(133),s=r(321),a=r(6627),c=r(3291),u=r(4540),l=r(464),f=i.Function,h=/MSIE .\./.test(c)||"BUN"===a&&((n=i.Bun.version.split(".")).length<3||"0"===n[0]&&(n[1]<3||"3"===n[1]&&"0"===n[2]));t.exports=function(t,e){var r=e?2:1;return h?function(n,i){var a=l(arguments.length,1)>r,c=s(n)?n:f(n),h=a?u(arguments,r):[],p=a?function(){o(c,this,h)}:c;return e?t(p,i):t(p)}:t}},5410:(t,e,r)=>{var n=r(3572),i=1/0;t.exports=function(t){return t?(t=n(t))===i||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}},5413:(t,e,r)=>{"use strict";r.d(e,{N:()=>n});r(5249),r(3348),r(6160),r(3376),r(1759),r(4267),r(9028),r(3544),r(2901);var n=r(3790).create(),i=r(1077);i.keys().forEach((function(t){var e=t.replace(/^\.\//,"").replace(/\.hbs$/,""),r=i(t).default;n.registerPartial(e,r)}));var o=r(1771);o.keys().forEach((function(t){var e=t.replace(/^\.\//,"").replace(/\.js$/,""),r=o(t);n.registerHelper(e,r)}))},5414:t=>{"use strict";t.exports=Math.floor},5424:(t,e,r)=>{"use strict";var n=r(8810),i=r(6007),o=r(2128),s=r(8052),a=r(9747),c=r(2484),u=r(2360),l=r(4461),f=r(9859),h=r(7837),p=r(3401),d=r(573),v=r(2675),g=r(4956).f,m=r(3071).f,y=r(6005).f,b=r(7156),w=r(5150).trim,x="Number",S=s[x],A=a[x],O=S.prototype,E=s.TypeError,k=c("".slice),T=c("".charCodeAt),_=function(t){var e,r,n,i,o,s,a,c,u=d(t,"number");if(p(u))throw new E("Cannot convert a Symbol value to a number");if("string"==typeof u&&u.length>2)if(u=w(u),43===(e=T(u,0))||45===e){if(88===(r=T(u,2))||120===r)return NaN}else if(48===e){switch(T(u,1)){case 66:case 98:n=2,i=49;break;case 79:case 111:n=8,i=55;break;default:return+u}for(s=(o=k(u,2)).length,a=0;a<s;a++)if((c=T(o,a))<48||c>i)return NaN;return parseInt(o,n)}return+u},C=u(x,!S(" 0o1")||!S("0b1")||S("+0x1")),P=function(t){var e,r=arguments.length<1?0:S(function(t){var e=d(t,"number");return"bigint"==typeof e?e:_(e)}(t));return h(O,e=this)&&v((function(){b(e)}))?f(Object(r),this,P):r};P.prototype=O,C&&!i&&(O.constructor=P),n({global:!0,constructor:!0,wrap:!0,forced:C},{Number:P});var I=function(t,e){for(var r,n=o?g(e):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,fromString,range".split(","),i=0;n.length>i;i++)l(e,r=n[i])&&!l(t,r)&&y(t,r,m(e,r))};i&&A&&I(a[x],A),(C||i)&&I(a[x],S)},5428:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>u});r(8037);var n=r(2561),i=r(6710),o=r(3008),s=r(3134),a=r(6973);r(3348),r(1759),r(2901);function c(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(c=function(){return!!t})()}var u=function(t){function e(){return(0,n.A)(this,e),t=this,r=e,i=arguments,r=(0,s.A)(r),(0,o.A)(t,c()?Reflect.construct(r,i||[],(0,s.A)(t).constructor):r.apply(t,i));var t,r,i}
25976return(0,a.A)(e,t),(0,i.A)(e,[{key:"connect",value:function(){var t,e,r=this;(t=this.urlValue,e=e||{},new Promise((function(r,n){var i=new XMLHttpRequest,o=[],s=[],a={},c=function(){return{ok:2==(i.status/100|0),statusText:i.statusText,status:i.status,url:i.responseURL,text:function(){return Promise.resolve(i.responseText)},json:function(){return Promise.resolve(i.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([i.response]))},clone:c,headers:{keys:function(){return o},entries:function(){return s},get:function(t){return a[t.toLowerCase()]},has:function(t){return t.toLowerCase()in a}}}};for(var u in i.open(e.method||"get",t,!0),i.onload=function(){i.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm,(function(t,e,r){o.push(e=e.toLowerCase()),s.push([e,r]),a[e]=a[e]?a[e]+","+r:r})),r(c())},i.onerror=n,i.withCredentials="include"==e.credentials,e.headers)i.setRequestHeader(u,e.headers[u]);i.send(e.body||null)}))).then((function(t){return t.text()})).then((function(t){for(var e=(new DOMParser).parseFromString(t,"text/html").querySelector("#standalone-content");e.firstChild;)r.element.appendChild(e.firstChild)}))}}])}(r(6782).xI);u.values={url:String}},5433:(t,e,r)=>{"use strict";var n=r(2128),i=r(2484),o=r(3625),s=r(2675),a=r(4700),c=r(9073),u=r(7769),l=r(8649),f=r(51),h=Object.assign,p=Object.defineProperty,d=i([].concat);t.exports=!h||s((function(){if(n&&1!==h({b:1},h(p({},"a",{enumerable:!0,get:function(){p(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var t={},e={},r=Symbol("assign detection"),i="abcdefghijklmnopqrst";return t[r]=7,i.split("").forEach((function(t){e[t]=t})),7!==h({},t)[r]||a(h({},e)).join("")!==i}))?function(t,e){for(var r=l(t),i=arguments.length,s=1,h=c.f,p=u.f;i>s;)for(var v,g=f(arguments[s++]),m=h?d(a(g),h(g)):a(g),y=m.length,b=0;y>b;)v=m[b++],n&&!o(p,g,v)||(r[v]=g[v]);return r}:h},5455:function(t,e,r){var n,i;"undefined"!=typeof window&&window,void 0===(i="function"==typeof(n=function(){"use strict";function t(){}var e=t.prototype;return e.on=function(t,e){if(t&&e){var r=this._events=this._events||{},n=r[t]=r[t]||[];return-1==n.indexOf(e)&&n.push(e),this}},e.once=function(t,e){if(t&&e){this.on(t,e);var r=this._onceEvents=this._onceEvents||{};return(r[t]=r[t]||{})[e]=!0,this}},e.off=function(t,e){var r=this._events&&this._events[t];if(r&&r.length){var n=r.indexOf(e);return-1!=n&&r.splice(n,1),this}},e.emitEvent=function(t,e){var r=this._events&&this._events[t];if(r&&r.length){r=r.slice(0),e=e||[];for(var n=this._onceEvents&&this._onceEvents[t],i=0;i<r.length;i++){var o=r[i];n&&n[o]&&(this.off(t,o),delete n[o]),o.apply(this,e)}return this}},e.allOff=function(){delete this._events,delete this._onceEvents},t})?n.call(e,r,e,t):n)||(t.exports=i)},5511:(t,e,r)=>{var n,i,o;window,i=[r(5455),r(8179)],void 0===(o="function"==typeof(n=function(t,e){"use strict";function r(t){for(var e in t)return!1;return!0}var n=document.documentElement.style,i="string"==typeof n.transition?"transition":"WebkitTransition",o="string"==typeof n.transform?"transform":"WebkitTransform",s={WebkitTransition:"webkitTransitionEnd",transition:"transitionend"}[i],a={transform:o,transition:i,transitionDuration:i+"Duration",transitionProperty:i+"Property",transitionDelay:i+"Delay"};function c(t,e){t&&(this.element=t,this.layout=e,this.position={x:0,y:0},this._create())}var u=c.prototype=Object.create(t.prototype);function l(t){return t.replace(/([A-Z])/g,(function(t){return"-"+t.toLowerCase()}))}u.constructor=c,u._create=function(){this._transn={ingProperties:{},clean:{},onEnd:{}},this.css({position:"absolute"})},u.handleEvent=function(t){var e="on"+t.type;this[e]&&this[e](t)},u.getSize=function(){this.size=e(this.element)},u.css=function(t){var e=this.element.style;for(var r in t)e[a[r]||r]=t[r]},u.getPosition=function(){var t=getComputedStyle(this.element),e=this.layout._getOption("originLeft"),r=this.layout._getOption("originTop"),n=t[e?"left":"right"],i=t[r?"top":"bottom"],o=parseFloat(n),s=parseFloat(i),a=this.layout.size;-1!=n.indexOf("%")&&(o=o/100*a.width),-1!=i.indexOf("%")&&(s=s/100*a.height),o=isNaN(o)?0:o,s=isNaN(s)?0:s,o-=e?a.paddingLeft:a.paddingRight,s-=r?a.paddingTop:a.paddingBottom,this.position.x=o,this.position.y=s},u.layoutPosition=function(){var t=this.layout.size,e={},r=this.layout._getOption("originLeft"),n=this.layout._getOption("originTop"),i=r?"paddingLeft":"paddingRight",o=r?"left":"right",s=r?"right":"left",a=this.position.x+t[i];e[o]=this.getXValue(a),e[s]="";var c=n?"paddingTop":"paddingBottom",u=n?"top":"bottom",l=n?"bottom":"top",f=this.position.y+t[c];e[u]=this.getYValue(f),e[l]="",this.css(e),this.emitEvent("layout",[this])},u.getXValue=function(t){var e=this.layout._getOption("horizontal");return this.layout.options.percentPosition&&!e?t/this.layout.size.width*100+"%":t+"px"},u.getYValue=function(t){var e=this.layout._getOption("horizontal");return this.layout.options.percentPosition&&e?t/this.layout.size.height*100+"%":t+"px"},u._transitionTo=function(t,e){this.getPosition();var r=this.position.x,n=this.position.y,i=t==this.position.x&&e==this.position.y;if(this.setPosition(t,e),!i||this.isTransitioning){var o=t-r,s=e-n,a={};a.transform=this.getTranslate(o,s),this.transition({to:a,onTransitionEnd:{transform:this.layoutPosition},isCleaning:!0})}else this.layoutPosition()},u.getTranslate=function(t,e){return"translate3d("+(t=this.layout._getOption("originLeft")?t:-t)+"px, "+(e=this.layout._getOption("originTop")?e:-e)+"px, 0)"},u.goTo=function(t,e){this.setPosition(t,e),this.layoutPosition()},u.moveTo=u._transitionTo,u.setPosition=function(t,e){this.position.x=parseFloat(t),this.position.y=parseFloat(e)},u._nonTransition=function(t){for(var e in this.css(t.to),t.isCleaning&&this._removeStyles(t.to),t.onTransitionEnd)t.onTransitionEnd[e].call(this)},u.transition=function(t){if(parseFloat(this.layout.options.transitionDuration)){var e=this._transn;for(var r in t.onTransitionEnd)e.onEnd[r]=t.onTransitionEnd[r];for(r in t.to)e.ingProperties[r]=!0,t.isCleaning&&(e.clean[r]=!0);t.from&&(this.css(t.from),this.element.offsetHeight),this.enableTransition(t.to),this.css(t.to),this.isTransitioning=!0}else this._nonTransition(t)};var f="opacity,"+l(o);u.enableTransition=function(){if(!this.isTransitioning){var t=this.layout.options.transitionDuration;t="number"==typeof t?t+"ms":t,this.css({transitionProperty:f,transitionDuration:t,transitionDelay:this.staggerDelay||0}),this.element.addEventListener(s,this,!1)}},u.onwebkitTransitionEnd=function(t){this.ontransitionend(t)},u.onotransitionend=function(t){this.ontransitionend(t)};var h={"-webkit-transform":"transform"};u.ontransitionend=function(t){if(t.target===this.element){var e=this._transn,n=h[t.propertyName]||t.propertyName;delete e.ingProperties[n],r(e.ingProperties)&&this.disableTransition(),n in e.clean&&(this.element.style[t.propertyName]="",delete e.clean[n]),n in e.onEnd&&(e.onEnd[n].call(this),delete e.onEnd[n]),this.emitEvent("transitionEnd",[this])}},u.disableTransition=function(){this.removeTransitionStyles(),this.element.removeEventListener(s,this,!1),this.isTransitioning=!1},u._removeStyles=function(t){var e={};for(var r in t)e[r]="";this.css(e)};var p={transitionProperty:"",transitionDuration:"",transitionDelay:""};return u.removeTransitionStyles=function(){this.css(p)},u.stagger=function(t){t=isNaN(t)?0:t,this.staggerDelay=t+"ms"},u.removeElem=function(){this.element.parentNode.removeChild(this.element),this.css({display:""}),this.emitEvent("remove",[this])},u.remove=function(){i&&parseFloat(this.layout.options.transitionDuration)?(this.once("transitionEnd",(function(){this.removeElem()})),this.hide()):this.removeElem()},u.reveal=function(){delete this.isHidden,this.css({display:""});var t=this.layout.options,e={};e[this.getHideRevealTransitionEndProperty("visibleStyle")]=this.onRevealTransitionEnd,this.transition({from:t.hiddenStyle,to:t.visibleStyle,isCleaning:!0,onTransitionEnd:e})},u.onRevealTransitionEnd=function(){this.isHidden||this.emitEvent("reveal")},u.getHideRevealTransitionEndProperty=function(t){var e=this.layout.options[t];if(e.opacity)return"opacity";for(var r in e)return r},u.hide=function(){this.isHidden=!0,this.css({display:""});var t=this.layout.options,e={};e[this.getHideRevealTransitionEndProperty("hiddenStyle")]=this.onHideTransitionEnd,this.transition({from:t.visibleStyle,to:t.hiddenStyle,isCleaning:!0,onTransitionEnd:e})},u.onHideTransitionEnd=function(){this.isHidden&&(this.css({display:"none"}),this.emitEvent("hide"))},u.destroy=function(){this.css({position:"",left:"",right:"",top:"",bottom:"",transition:"",transform:""})},c})?n.apply(e,i):n)||(t.exports=o)},5514:(t,e,r)=>{"use strict";var n=r(3625),i=r(321),o=r(4102),s=TypeError;t.exports=function(t,e){var r,a;if("string"===e&&i(r=t.toString)&&!o(a=n(r,t)))return a;
25976if(i(r=t.valueOf)&&!o(a=n(r,t)))return a;if("string"!==e&&i(r=t.toString)&&!o(a=n(r,t)))return a;throw new s("Can't convert object to primitive value")}},5548:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>p});r(8037);var n=r(2561),i=r(6710),o=r(3008),s=r(3134),a=r(6973),c=(r(3348),r(3078),r(1759),r(2901),r(9070)),u=r(5814),l=r(6782);function f(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(f=function(){return!!t})()}var h="is-collapsing",p=function(t){function e(){return(0,n.A)(this,e),t=this,r=e,i=arguments,r=(0,s.A)(r),(0,o.A)(t,f()?Reflect.construct(r,i||[],(0,s.A)(t).constructor):r.apply(t,i));var t,r,i}return(0,a.A)(e,t),(0,i.A)(e,[{key:"connect",value:function(){(0,u.wA)(this);var t=window.matchMedia(this.mediaQueryValue);t.addListener(this.onMediaChange.bind(this)),this.onMediaChange(t)}},{key:"toggle",value:function(){var t=this;this.rootTarget.classList.add(h),this.isShown?(this.rootTarget.style.height="".concat(this.contentHeight,"px"),(0,c.A)((function(){t.rootTarget.style.height="0px",t.dispatch("close")}))):(this.rootTarget.style.height="0px",(0,c.A)((function(){t.rootTarget.style.height="".concat(t.contentHeight,"px"),t.dispatch("open")}))),this.isShown=!this.isShown}},{key:"postprocess",value:function(){this.rootTarget.classList.remove(h),this.rootTarget.style.height=""}},{key:"onMediaChange",value:function(t){this.mediaQueryValue&&(t.matches?(this.buttonTarget.setAttribute("aria-expanded","false"),this.rootTarget.setAttribute("aria-hidden","true")):(this.buttonTarget.setAttribute("aria-expanded","true"),this.rootTarget.setAttribute("aria-hidden","false")))}},{key:"isShown",get:function(){return"true"!==this.rootTarget.getAttribute("aria-hidden")},set:function(t){this.buttonTarget.setAttribute("aria-expanded",t),this.rootTarget.setAttribute("aria-hidden",!t)}},{key:"contentHeight",get:function(){return this.rootTarget.firstElementChild.offsetHeight}},{key:"mediaQueryValue",get:function(){var t;switch(this.abledScreenValue){case"small":t="(max-width: 60.5625em)";break;case"extraSmall":t="(max-width: 47.9375em)";break;case"large":t="(min-width: 60.625em)";break;case"extraLarge":t="(min-width: 77.5625em)";break;default:t=""}return t}}])}(l.xI);p.targets=["button","root"],p.values={abledScreen:String}},5549:(t,e,r)=>{"use strict";var n=r(8810),i=r(2961).find,o=r(2153),s="find",a=!0;s in[]&&Array(1)[s]((function(){a=!1})),n({target:"Array",proto:!0,forced:a},{find:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),o(s)},5600:t=>{"use strict";t.exports=["Float16Array","Float32Array","Float64Array","Int8Array","Int16Array","Int32Array","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array"]},5672:(t,e,r)=>{"use strict";var n=r(4175);e.f=n},5712:(t,e,r)=>{"use strict";var n=r(2675),i=r(4102),o=r(2748),s=r(9432),a=Object.isExtensible,c=n((function(){a(1)}));t.exports=c||s?function(t){return!!i(t)&&((!s||"ArrayBuffer"!==o(t))&&(!a||a(t)))}:a},5719:(t,e,r)=>{"use strict";var n=r(7928),i=r(321),o=r(2748),s=r(4175)("toStringTag"),a=Object,c="Arguments"===o(function(){return arguments}());t.exports=n?o:function(t){var e,r,n;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(r=function(t,e){try{return t[e]}catch(t){}}(e=a(t),s))?r:c?o(e):"Object"===(n=o(e))&&i(e.callee)?"Arguments":n}},5720:t=>{"use strict";t.exports=Math.round},5722:(t,e,r)=>{"use strict";var n=r(2675),i=r(8052).RegExp;t.exports=n((function(){var t=i("(?<a>b)","g");return"b"!==t.exec("b").groups.a||"bc"!=="b".replace(t,"$<a>c")}))},5734:(t,e,r)=>{"use strict";r(4267);var n,i,o=r(8810),s=r(3625),a=r(321),c=r(659),u=r(7267),l=(n=!1,(i=/[ac]/).exec=function(){return n=!0,/./.exec.apply(this,arguments)},!0===i.test("abc")&&n),f=/./.test;o({target:"RegExp",proto:!0,forced:!l},{test:function(t){var e=c(this),r=u(t),n=e.exec;if(!a(n))return s(f,e,r);var i=s(n,e,r);return null!==i&&(c(i),!0)}})},5755:(t,e,r)=>{"use strict";var n=r(7837),i=TypeError;t.exports=function(t,e){if(n(e,t))return t;throw new i("Incorrect invocation")}},5800:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>d});r(8037);var n=r(2561),i=r(6710),o=r(3008),s=r(3134),a=r(6973),c=r(6782),u=r(2492);r(7575),r(6315),r(391),r(8740),r(6770),r(7372),r(2614),r(9872),r(5030),r(3348),r(3082),r(4034),r(9892),r(2558),r(6160),r(8021),r(1759),r(4267),r(5734),r(3049),r(7560),r(2901),r(995);function l(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return f(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?f(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,i=function(){};return{s:i,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return s=t.done,t},e:function(t){a=!0,o=t}
25976,f:function(){try{s||null==r.return||r.return()}finally{if(a)throw o}}}}function f(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function h(t){var e=!1,r=null;function n(t,e,r){var n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];e instanceof HTMLInputElement&&(e.indeterminate=n,e.checked!==r&&(e.checked=r,setTimeout((function(){var r=new CustomEvent("change",{bubbles:!0,cancelable:!1,detail:{relatedTarget:t}});e.dispatchEvent(r)}))))}function i(i){var o=i.target;o instanceof Element&&(o.hasAttribute("data-check-all")?function(e){if(e instanceof CustomEvent&&e.detail){var i=e.detail.relatedTarget;if(i&&i.hasAttribute("data-check-all-item"))return}var o=e.target;if(!(o instanceof HTMLInputElement))return;r=null;var a,c=l(t.querySelectorAll("[data-check-all-item]"));try{for(c.s();!(a=c.n()).done;){n(o,a.value,o.checked)}}catch(t){c.e(t)}finally{c.f()}o.indeterminate=!1,s()}(i):o.hasAttribute("data-check-all-item")&&function(i){if(i instanceof CustomEvent&&i.detail){var o=i.detail.relatedTarget;if(o&&(o.hasAttribute("data-check-all")||o.hasAttribute("data-check-all-item")))return}var a=i.target;if(!(a instanceof HTMLInputElement))return;var c=Array.from(t.querySelectorAll("[data-check-all-item]"));if(e&&r){var f,h=[c.indexOf(r),c.indexOf(a)].sort(),p=(0,u.A)(h,2),d=p[0],v=p[1],g=l(c.slice(d,+v+1||9e9));try{for(g.s();!(f=g.n()).done;){n(a,f.value,a.checked)}}catch(t){g.e(t)}finally{g.f()}}e=!1,r=a;var m=t.querySelector("[data-check-all]");if(m){var y=c.length,b=c.filter((function(t){return t instanceof HTMLInputElement&&t.checked})).length;n(a,m,b===y,y>b&&b>0)}s()}(i))}function o(t){t.target instanceof Element&&((t.target instanceof HTMLLabelElement&&t.target.control||t.target).hasAttribute("data-check-all-item")&&(e=t.shiftKey))}function s(){var e=t.querySelector("[data-check-all-count]");if(e){var r=t.querySelectorAll("[data-check-all-item]:checked").length;e.textContent=r.toString()}}return t.addEventListener("mousedown",o),t.addEventListener("change",i),{unsubscribe:function(){t.removeEventListener("mousedown",o),t.removeEventListener("change",i)}}}function p(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(p=function(){return!!t})()}var d=function(t){function e(){return(0,n.A)(this,e),t=this,r=e,i=arguments,r=(0,s.A)(r),(0,o.A)(t,p()?Reflect.construct(r,i||[],(0,s.A)(t).constructor):r.apply(t,i));var t,r,i}return(0,a.A)(e,t),(0,i.A)(e,[{key:"connect",value:function(){h(this.element)}}])}(c.xI)},5814:(t,e,r)=>{"use strict";r.d(e,{wA:()=>$,v1:()=>z});var n=r(2492),i=r(3008),o=r(3134),s=r(6973),a=r(6710),c=r(2561);r(6192),r(7575),r(4958),r(6315),r(391),r(8740),r(6770),r(3299),r(7372),r(5549),r(5249),r(2614),r(4707),r(9872),r(5030),r(3348),r(562),r(3838),r(3082),r(7642),r(9892),r(3078),r(2558),r(6160),r(9224),r(8021),r(9064),r(3376),r(9585),r(9343),r(5424),r(4702),r(6461),r(7476),r(1759),r(2304),r(6558),r(8220),r(6325),r(8037),r(4267),r(6893),r(3049),r(7567),r(5734),r(7560),r(9028),r(7963),r(3406),r(3544),r(2901),r(995);function u(t){return t.replace(/(?:[_-])([a-z0-9])/g,((t,e)=>e.toUpperCase()))}function l(t){return u(t.replace(/--/g,"-").replace(/__/g,"_"))}function f(t){return t.charAt(0).toUpperCase()+t.slice(1)}function h(t){return t.replace(/([A-Z])/g,((t,e)=>`-${e.toLowerCase()}`))}function p(t){return null!=t}function d(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function v(t,e){const r=m(t);return Array.from(r.reduce(((t,r)=>(function(t,e){const r=t[e];return Array.isArray(r)?r:[]}(r,e).forEach((e=>t.add(e))),t)),new Set))}function g(t,e){return m(t).reduce(((t,r)=>(t.push(...function(t,e){const r=t[e];return r?Object.keys(r).map((t=>[t,r[t]])):[]}(r,e)),t)),[])}function m(t){const e=[];for(;t;)e.push(t),t=Object.getPrototypeOf(t);return e.reverse()}"function"==typeof Object.getOwnPropertySymbols||Object.getOwnPropertyNames,(()=>{function t(t){function e(){return Reflect.construct(t,arguments,new.target)}return e.prototype=Object.create(t.prototype,{constructor:{value:e}}),Reflect.setPrototypeOf(e,t),e}try{return function(){const e=t((function(){this.a.call(this)}));e.prototype.a=function(){},new e}(),t}catch(t){return t=>class extends t{}}})();Object.assign(Object.assign({enter:"Enter",tab:"Tab",esc:"Escape",space:" ",up:"ArrowUp",down:"ArrowDown",left:"ArrowLeft",right:"ArrowRight",home:"Home",end:"End",page_up:"PageUp",page_down:"PageDown"},y("abcdefghijklmnopqrstuvwxyz".split("").map((t=>[t,t])))),y("0123456789".split("").map((t=>[t,t]))));function y(t){return t.reduce(((t,[e,r])=>Object.assign(Object.assign({},t),{[e]:r})),{})}function b(t,e,r){return t.application.getControllerForElementAndIdentifier(e,r)}function w(t,e,r){let n=b(t,e,r);return n||(t.application.router.proposeToConnectScopeForElementAndIdentifier(e,r),n=b(t,e,r),n||void 0)}function x([t,e],r){return function(t){const{token:e,typeDefinition:r}=t,n=`${h(e)}-value`,i=function(t){const{controller:e,token:r,typeDefinition:n}=t,i={controller:e,token:r,typeObject:n},o=function(t){const{controller:e,token:r,typeObject:n}=t,i=p(n.type),o=p(n.default),s=i&&o,a=i&&!o,c=!i&&o,u=S(n.type),l=A(t.typeObject.default);if(a)return u;if(c)return l;if(u!==l){throw new Error(`The specified default value for the Stimulus Value "${e?`${e}.${r}`:r}" must match the defined type "${u}". The provided default value of "${n.default}" is of type "${l}".`)}if(s)return u}(i),s=A(n),a=S(n),c=o||s||a;if(c)return c;const u=e?`${e}.${n}`:r;throw new Error(`Unknown value type "${u}" for "${r}" value`)}(t);return{type:i,key:n,name:u(n),get defaultValue(){return function(t){const e=S(t);if(e)return O[e];const r=d(t,"default"),n=d(t,"type"),i=t;if(r)return i.default;if(n){const{type:t}=i,e=S(t);if(e)return O[e]}return t}(r)},get hasCustomDefaultValue(){return void 0!==A(r)}
25976,reader:E[i],writer:k[i]||k.default}}({controller:r,token:t,typeDefinition:e})}function S(t){switch(t){case Array:return"array";case Boolean:return"boolean";case Number:return"number";case Object:return"object";case String:return"string"}}function A(t){switch(typeof t){case"boolean":return"boolean";case"number":return"number";case"string":return"string"}return Array.isArray(t)?"array":"[object Object]"===Object.prototype.toString.call(t)?"object":void 0}const O={get array(){return[]},boolean:!1,number:0,get object(){return{}},string:""},E={array(t){const e=JSON.parse(t);if(!Array.isArray(e))throw new TypeError(`expected value of type "array" but instead got value "${t}" of type "${A(e)}"`);return e},boolean:t=>!("0"==t||"false"==String(t).toLowerCase()),number:t=>Number(t.replace(/_/g,"")),object(t){const e=JSON.parse(t);if(null===e||"object"!=typeof e||Array.isArray(e))throw new TypeError(`expected value of type "object" but instead got value "${t}" of type "${A(e)}"`);return e},string:t=>t},k={default:function(t){return`${t}`},array:T,object:T};function T(t){return JSON.stringify(t)}class _{constructor(t){this.context=t}static get shouldLoad(){return!0}static afterLoad(t,e){}get application(){return this.context.application}get scope(){return this.context.scope}get element(){return this.scope.element}get identifier(){return this.scope.identifier}get targets(){return this.scope.targets}get outlets(){return this.scope.outlets}get classes(){return this.scope.classes}get data(){return this.scope.data}initialize(){}connect(){}disconnect(){}dispatch(t,{target:e=this.element,detail:r={},prefix:n=this.identifier,bubbles:i=!0,cancelable:o=!0}={}){const s=new CustomEvent(n?`${n}:${t}`:t,{detail:r,bubbles:i,cancelable:o});return e.dispatchEvent(s),s}}function C(t,e,r){return e=(0,o.A)(e),(0,i.A)(t,P()?Reflect.construct(e,r||[],(0,o.A)(t).constructor):e.apply(t,r))}function P(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(P=function(){return!!t})()}_.blessings=[function(t){return v(t,"classes").reduce(((t,e)=>{return Object.assign(t,(r=e,{[`${r}Class`]:{get(){const{classes:t}=this;if(t.has(r))return t.get(r);{const e=t.getAttributeName(r);throw new Error(`Missing attribute "${e}"`)}}},[`${r}Classes`]:{get(){return this.classes.getAll(r)}},[`has${f(r)}Class`]:{get(){return this.classes.has(r)}}}));var r}),{})},function(t){return v(t,"targets").reduce(((t,e)=>{return Object.assign(t,(r=e,{[`${r}Target`]:{get(){const t=this.targets.find(r);if(t)return t;throw new Error(`Missing target element "${r}" for "${this.identifier}" controller`)}},[`${r}Targets`]:{get(){return this.targets.findAll(r)}},[`has${f(r)}Target`]:{get(){return this.targets.has(r)}}}));var r}),{})},function(t){const e=g(t,"values"),r={valueDescriptorMap:{get(){return e.reduce(((t,e)=>{const r=x(e,this.identifier),n=this.data.getAttributeNameForKey(r.key);return Object.assign(t,{[n]:r})}),{})}}};return e.reduce(((t,e)=>Object.assign(t,function(t,e){const r=x(t,e),{key:n,name:i,reader:o,writer:s}=r;return{[i]:{get(){const t=this.data.get(n);return null!==t?o(t):r.defaultValue},set(t){void 0===t?this.data.delete(n):this.data.set(n,s(t))}},[`has${f(i)}`]:{get(){return this.data.has(n)||r.hasCustomDefaultValue}}}}(e))),r)},function(t){return v(t,"outlets").reduce(((t,e)=>Object.assign(t,function(t){const e=l(t);return{[`${e}Outlet`]:{get(){const e=this.outlets.find(t),r=this.outlets.getSelectorForOutletName(t);if(e){const r=w(this,e,t);if(r)return r;throw new Error(`The provided outlet element is missing an outlet controller "${t}" instance for host controller "${this.identifier}"`)}throw new Error(`Missing outlet element "${t}" for host controller "${this.identifier}". Stimulus couldn't find a matching outlet element using selector "${r}".`)}},[`${e}Outlets`]:{get(){const e=this.outlets.findAll(t);return e.length>0?e.map((e=>{const r=w(this,e,t);if(r)return r;console.warn(`The provided outlet element is missing an outlet controller "${t}" instance for host controller "${this.identifier}"`,e)})).filter((t=>t)):[]}},[`${e}OutletElement`]:{get(){const e=this.outlets.find(t),r=this.outlets.getSelectorForOutletName(t);if(e)return e;throw new Error(`Missing outlet element "${t}" for host controller "${this.identifier}". Stimulus couldn't find a matching outlet element using selector "${r}".`)}},[`${e}OutletElements`]:{get(){return this.outlets.findAll(t)}},[`has${f(e)}Outlet`]:{get(){return this.outlets.has(t)}}}}(e))),{})}],_.targets=[],_.outlets=[],_.values={};var I=function(t,e){var r=t[e];return"function"==typeof r?r:function(){}},j=function(t,e,r){var n=t;return!0===r?n="".concat(e.identifier,":").concat(t):"string"==typeof r&&(n="".concat(r,":").concat(t)),n},M=function(t,e,r){var n=e||{bubbles:!0,cancelable:!0,composed:!0},i=n.bubbles,o=n.cancelable,s=n.composed;return e&&Object.assign(r,{originalEvent:e}),new CustomEvent(t,{bubbles:i,cancelable:o,composed:s,detail:r})};var L={debug:!1,logger:console,dispatchEvent:!0,eventPrefix:!0},N=(0,a.A)((function t(e){var r,n,i,o=this,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};(0,c.A)(this,t),this.log=function(t,e){o.debug&&(o.logger.groupCollapsed("%c".concat(o.controller.identifier," %c#").concat(t),"color: #3B82F6","color: unset"),o.logger.log(Object.assign({controllerId:o.controllerId},e)),o.logger.groupEnd())},this.warn=function(t){o.logger.warn("%c".concat(o.controller.identifier," %c").concat(t),"color: #3B82F6; font-weight: bold","color: unset")},this.dispatch=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(o.dispatchEvent){var r=e.event,n=function(t,e){var r={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.indexOf(n)<0&&(r[n]=t[n]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(n=Object.getOwnPropertySymbols(t);i<n.length;i++)e.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(t,n[i])&&(r[n[i]]=t[n[i]])}return r}(e,["event"]),i=o.extendedEvent(t,r||null,n);o.targetElement.dispatchEvent(i),o.log("dispatchEvent",Object.assign({eventName:i.type},n))}},this.call=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=o.controller[t];if("function"==typeof r)return r.call(o.controller,e)},this.extendedEvent=function(t,e,r){var n=e||{bubbles:!0,cancelable:!0,composed:!0},i=n.bubbles,s=n.cancelable,a=n.composed;return e&&Object.assign(r,{originalEvent:e}),new CustomEvent(o.composeEventName(t),{bubbles:i,cancelable:s,composed:a,detail:r})},this.composeEventName=function(t){var e=t;return!0===o.eventPrefix?e="".concat(o.controller.identifier,":").concat(t):"string"==typeof o.eventPrefix&&(e="".concat(o.eventPrefix,":").concat(t)),e},this.debug=null!==(n=null!==(r=null==s?void 0:s.debug)&&void 0!==r?r:e.application.stimulusUseDebug)&&void 0!==n?n:L.debug,this.logger=null!==(i=null==s?void 0:s.logger)&&void 0!==i?i:L.logger,this.controller=e,this.controllerId=e.element.i
25976d||e.element.dataset.id,this.targetElement=(null==s?void 0:s.element)||e.element;var a=Object.assign({},L,s),u=a.dispatchEvent,l=a.eventPrefix;Object.assign(this,{dispatchEvent:u,eventPrefix:l}),this.controllerInitialize=e.initialize.bind(e),this.controllerConnect=e.connect.bind(e),this.controllerDisconnect=e.disconnect.bind(e)})),B=!0,R=!0,D=!0,F=function(t){function e(t){var r,n,i,o,s,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,c.A)(this,e),(r=C(this,e,[t,a])).dispatch=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=r,i=n.controller,o=n.targetElement,s=n.eventPrefix,a=n.bubbles,c=n.cancelable,u=n.log,l=n.warn;Object.assign(e,{controller:i});var f=j(t,r.controller,s),h=new CustomEvent(f,{detail:e,bubbles:a,cancelable:c});return o.dispatchEvent(h),l("`useDispatch()` is deprecated. Please use the built-in `this.dispatch()` function from Stimulus. You can find more information on how to upgrade at: https://stimulus-use.github.io/stimulus-use/#/use-dispatch"),u("dispatch",{eventName:f,detail:e,bubbles:a,cancelable:c}),h},r.targetElement=null!==(n=a.element)&&void 0!==n?n:t.element,r.eventPrefix=null!==(i=a.eventPrefix)&&void 0!==i?i:B,r.bubbles=null!==(o=a.bubbles)&&void 0!==o?o:R,r.cancelable=null!==(s=a.cancelable)&&void 0!==s?s:D,r.enhanceController(),r}return(0,s.A)(e,t),(0,a.A)(e,[{key:"enhanceController",value:function(){Object.assign(this.controller,{dispatch:this.dispatch})}}])}(N),$=function(t){return new F(t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{})};(function(t){function e(){return(0,c.A)(this,e),C(this,e,arguments)}return(0,s.A)(e,t),(0,a.A)(e)}(_)).debounces=[];var H={dispatchEvent:!0,eventPrefix:!0,visibleAttribute:"isVisible"},z=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t,i=Object.assign({},H,e),o=i.dispatchEvent,s=i.eventPrefix,a=i.visibleAttribute,c=(null==e?void 0:e.element)||r.element;r.intersectionElements||(r.intersectionElements=[]),r.intersectionElements.push(c);var u=new IntersectionObserver((function(t){var e=(0,n.A)(t,1)[0];e.isIntersecting?l(e):c.hasAttribute(a)&&f(e)}),e),l=function(t){if(c.setAttribute(a,"true"),I(r,"appear").call(r,t,u),o){var e=j("appear",r,s),n=M(e,null,{controller:r,entry:t,observer:u});c.dispatchEvent(n)}},f=function(t){if(c.removeAttribute(a),I(r,"disappear").call(r,t,u),o){var e=j("disappear",r,s),n=M(e,null,{controller:r,entry:t,observer:u});c.dispatchEvent(n)}},h=r.disconnect.bind(r),p=function(){u.observe(c)},d=function(){u.unobserve(c)},v=function(){return r.intersectionElements.every((function(t){return t.hasAttribute(a)}))},g=v;return Object.assign(r,{isVisible:g,noneVisible:function(){return 0===r.intersectionElements.filter((function(t){return t.hasAttribute(a)})).length},oneVisible:function(){return 1===r.intersectionElements.filter((function(t){return t.hasAttribute(a)})).length},atLeastOneVisible:function(){return r.intersectionElements.some((function(t){return t.hasAttribute(a)}))},allVisible:v,disconnect:function(){d(),h()}}),p(),[p,d]};(function(t){function e(){return(0,c.A)(this,e),C(this,e,arguments)}return(0,s.A)(e,t),(0,a.A)(e)}(_)).throttles=[]},5875:(t,e,r)=>{var n=r(9323);t.exports=function(t,e){return n(t)&&n(e)?Number(t)+Number(e):"string"==typeof t&&"string"==typeof e?t+e:""}},5927:(t,e,r)=>{"use strict";var n=r(4461),i=r(321),o=r(8649),s=r(3779),a=r(2407),c=s("IE_PROTO"),u=Object,l=u.prototype;t.exports=a?u.getPrototypeOf:function(t){var e=o(t);if(n(e,c))return e[c];var r=e.constructor;return i(r)&&e instanceof r?r.prototype:e instanceof u?l:null}},5936:t=>{"use strict";t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},5952:(t,e,r)=>{"use strict";var n=r(62),i=Object.prototype.toString,o=Object.prototype.hasOwnProperty;t.exports=function(t,e,r){if(!n(e))throw new TypeError("iterator must be a function");var s,a;arguments.length>=3&&(s=r),a=t,"[object Array]"===i.call(a)?function(t,e,r){for(var n=0,i=t.length;n<i;n++)o.call(t,n)&&(null==r?e(t[n],n,t):e.call(r,t[n],n,t))}(t,e,s):"string"==typeof t?function(t,e,r){for(var n=0,i=t.length;n<i;n++)null==r?e(t.charAt(n),n,t):e.call(r,t.charAt(n),n,t)}(t,e,s):function(t,e,r){for(var n in t)o.call(t,n)&&(null==r?e(t[n],n,t):e.call(r,t[n],n,t))}(t,e,s)}},5964:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>d});r(8037);var n=r(2561),i=r(6710),o=r(3008),s=r(3134),a=r(6973),c=r(6782);r(8135),r(7754),r(7476);function u(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)t[n]=r[n]}return t}var l=function t(e,r){function n(t,n,i){if("undefined"!=typeof document){"number"==typeof(i=u({},r,i)).expires&&(i.expires=new Date(Date.now()+864e5*i.expires)),i.expires&&(i.expires=i.expires.toUTCString()),t=encodeURIComponent(t).replace(/%(2[346B]|5E|60|7C)/g,decode
25976URIComponent).replace(/[()]/g,escape);var o="";for(var s in i)i[s]&&(o+="; "+s,!0!==i[s]&&(o+="="+i[s].split(";")[0]));return document.cookie=t+"="+e.write(n,t)+o}}return Object.create({set:n,get:function(t){if("undefined"!=typeof document&&(!arguments.length||t)){for(var r=document.cookie?document.cookie.split("; "):[],n={},i=0;i<r.length;i++){var o=r[i].split("="),s=o.slice(1).join("=");try{var a=decodeURIComponent(o[0]);if(n[a]=e.read(s,a),t===a)break}catch(t){}}return t?n[t]:n}},remove:function(t,e){n(t,"",u({},e,{expires:-1}))},withAttributes:function(e){return t(this.converter,u({},this.attributes,e))},withConverter:function(e){return t(u({},this.converter,e),this.attributes)}},{attributes:{value:Object.freeze(r)},converter:{value:Object.freeze(e)}})}({read:function(t){return'"'===t[0]&&(t=t.slice(1,-1)),t.replace(/(%[\dA-F]{2})+/gi,decodeURIComponent)},write:function(t){return encodeURIComponent(t).replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,decodeURIComponent)}},{path:"/"}),f=window.kpi_cookiesettings.cookieDomain,h="kpi_discon";function p(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(p=function(){return!!t})()}var d=function(t){function e(){return(0,n.A)(this,e),t=this,r=e,i=arguments,r=(0,s.A)(r),(0,o.A)(t,p()?Reflect.construct(r,i||[],(0,s.A)(t).constructor):r.apply(t,i));var t,r,i}return(0,a.A)(e,t),(0,i.A)(e,[{key:"connect",value:function(){this.element.switchController.checked=Boolean(JSON.parse(l.get(h)||"0"))}},{key:"change",value:function(t){var e,r,n=t.detail.checked;e=n,r=JSON.stringify(e?1:0),l.set(h,r,{path:"/",domain:f})}}])}(c.xI)},5966:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>f});r(8037);var n=r(2561),i=r(6710),o=r(3008),s=r(3134),a=r(6973),c=r(6782);function u(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(u=function(){return!!t})()}var l=11===document.documentMode,f=function(t){function e(){return(0,n.A)(this,e),t=this,r=e,i=arguments,r=(0,s.A)(r),(0,o.A)(t,u()?Reflect.construct(r,i||[],(0,s.A)(t).constructor):r.apply(t,i));var t,r,i}return(0,a.A)(e,t),(0,i.A)(e,[{key:"connect",value:function(){l&&this.element.classList.add(this.ie11Class)}}])}(c.xI);f.classes=["ie11"]},5969:t=>{t.exports=function(){for(var t=0;t<arguments.length-1;t++)if(null!=arguments[t])return arguments[t];return""}},5993:(t,e,r)=>{"use strict";var n,i=r(8682),o=r(3663)(/^\s*(?:function)?\*/),s=r(8118)(),a=r(7582),c=i("Object.prototype.toString"),u=i("Function.prototype.toString");t.exports=function(t){if("function"!=typeof t)return!1;if(o(u(t)))return!0;if(!s)return"[object GeneratorFunction]"===c(t);if(!a)return!1;if(void 0===n){var e=function(){if(!s)return!1;try{return Function("return function*() {}")()}catch(t){}}();n=!!e&&a(e)}return a(t)===n}},6005:(t,e,r)=>{"use strict";var n=r(2128),i=r(4113),o=r(706),s=r(659),a=r(1261),c=TypeError,u=Object.defineProperty,l=Object.getOwnPropertyDescriptor,f="enumerable",h="configurable",p="writable";e.f=n?o?function(t,e,r){if(s(t),e=a(e),s(r),"function"==typeof t&&"prototype"===e&&"value"in r&&p in r&&!r[p]){var n=l(t,e);n&&n[p]&&(t[e]=r.value,r={configurable:h in r?r[h]:n[h],enumerable:f in r?r[f]:n[f],writable:!1})}return u(t,e,r)}:u:function(t,e,r){if(s(t),e=a(e),s(r),i)try{return u(t,e,r)}catch(t){}if("get"in r||"set"in r)throw new c("Accessors not supported");return"value"in r&&(t[e]=r.value),t}},6007:t=>{"use strict";t.exports=!1},6011:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>f});r(8037);var n=r(2561),i=r(6710),o=r(3008),s=r(3134),a=r(6973),c=r(6782),u=r(5814);function l(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(l=function(){return!!t})()}var f=function(t){function e(){return(0,n.A)(this,e),t=this,r=e,i=arguments,r=(0,s.A)(r),(0,o.A)(t,l()?Reflect.construct(r,i||[],(0,s.A)(t).constructor):r.apply(t,i));var t,r,i}return(0,a.A)(e,t),(0,i.A)(e,[{key:"connect",value:function(){(0,u.v1)(this)}}])}(c.xI)},6015:t=>{t.exports=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}},6038:(t,e,r)=>{"use strict";var n=r(9455),i=r(6005);t.exports=function(t,e,r){return r.get&&n(r.get,e,{getter:!0}),r.set&&n(r.set,e,{setter:!0}),i.f(t,e,r)}},6057:(t,e,r)=>{"use strict";var n=r(2484),i=r(4334);t.exports=function(t,e,r){try{return n(i(Object.getOwnPropertyDescriptor(t,e)[r]))}catch(t){}}},6099:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>g});r(8037);var n=r(7431),i=r(2561),o=r(6710),s=r(3008),a=r(3134),c=r(6973),u=r(6192),l=r.n(u),f=(r(1759),r(6558),r(6782)),h=r(9070),p=r(9272),d=r(982);function v(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(v=function(){return!!t})()}var g=function(t){function e(){return(0,i.A)(this,e),t=this,r=e,n=arguments,r=(0,a.A)(r),(0,s.A)(t,v
25976()?Reflect.construct(r,n||[],(0,a.A)(t).constructor):r.apply(t,n));var t,r,n}return(0,c.A)(e,t),(0,o.A)(e,[{key:"connect",value:(u=(0,n.A)(l().mark((function t(){var e=this;return l().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return this.focusTrap=(0,d.K)(this.element,{onActivate:function(){document.body.style.overflow="hidden"},onDeactivate:function(){e.element.setAttribute("aria-hidden","true"),document.body.style.overflow=""}}),t.next=3,new Promise(h.A);case 3:return this.element.removeAttribute("aria-hidden"),t.next=6,(0,p.W)(this.element,"visibility","visible");case 6:this.focusTrap.activate();case 7:case"end":return t.stop()}}),t,this)}))),function(){return u.apply(this,arguments)})},{key:"close",value:(r=(0,n.A)(l().mark((function t(){return l().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return this.focusTrap.deactivate(),t.next=3,(0,p.W)(this.element,"visibility","hidden");case 3:this.element.remove();case 4:case"end":return t.stop()}}),t,this)}))),function(){return r.apply(this,arguments)})}]);var r,u}(f.xI)},6108:(t,e,r)=>{"use strict";var n=r(8810),i=r(4130).left,o=r(8754),s=r(2763);n({target:"Array",proto:!0,forced:!r(6125)&&s>79&&s<83||!o("reduce")},{reduce:function(t){var e=arguments.length;return i(this,t,e,e>1?arguments[1]:void 0)}})},6125:(t,e,r)=>{"use strict";var n=r(6627);t.exports="NODE"===n},6160:(t,e,r)=>{"use strict";var n=r(8810),i=r(8052),o=r(5755),s=r(659),a=r(321),c=r(5927),u=r(6038),l=r(4028),f=r(2675),h=r(4461),p=r(4175),d=r(3597).IteratorPrototype,v=r(2128),g=r(6007),m="constructor",y="Iterator",b=p("toStringTag"),w=TypeError,x=i[y],S=g||!a(x)||x.prototype!==d||!f((function(){x({})})),A=function(){if(o(this,d),c(this)===d)throw new w("Abstract class Iterator not directly constructable")},O=function(t,e){v?u(d,t,{configurable:!0,get:function(){return e},set:function(e){if(s(this),this===d)throw new w("You can't redefine this property");h(this,t)?this[t]=e:l(this,t,e)}}):d[t]=e};h(d,b)||O(b,y),!S&&h(d,m)&&d[m]!==Object||O(m,A),A.prototype=d,n({global:!0,constructor:!0,forced:S},{Iterator:A})},6184:t=>{t.exports=function(t){return null!=t&&"object"==typeof t}},6192:(t,e,r)=>{var n=r(9541)();t.exports=n;try{regeneratorRuntime=n}catch(t){"object"==typeof globalThis?globalThis.regeneratorRuntime=n:Function("r","regeneratorRuntime = r")(n)}},6218:(t,e,r)=>{var n=r(9830),i=r(9592),o=r(4683),s=r(6015);t.exports=function(t,e,r){if(!s(r))return!1;var a=typeof e;return!!("number"==a?i(r)&&o(e,r.length):"string"==a&&e in r)&&n(r[e],t)}},6221:(t,e,r)=>{"use strict";var n=r(3625),i=r(4334),o=r(659),s=r(8379),a=r(4951),c=TypeError;t.exports=function(t,e){var r=arguments.length<2?a(t):e;if(i(r))return o(n(r,t));throw new c(s(t)+" is not iterable")}},6248:t=>{t.exports=function(t){var e=window.__REDUX_DEVTOOLS_EXTENSION__||window.top.__REDUX_DEVTOOLS_EXTENSION__,r=!1;return e?(t.devtools||(t.devtools=e.connect(),t.devtools.subscribe((function(e){"DISPATCH"===e.type&&e.state&&(r="JUMP_TO_ACTION"===e.payload.type||"JUMP_TO_STATE"===e.payload.type,t.setState(JSON.parse(e.state),!0))})),t.devtools.init(t.getState()),t.subscribe((function(e,n){var i=n&&n.name||"setState";r?r=!1:t.devtools.send(i,e)}))),t):(console.warn("Please install/enable Redux devtools extension"),t.devtools=null,t)}},6315:(t,e,r)=>{"use strict";var n=r(8810),i=r(2128),o=r(8052),s=r(2484),a=r(4461),c=r(321),u=r(7837),l=r(7267),f=r(6038),h=r(1704),p=o.Symbol,d=p&&p.prototype;if(i&&c(p)&&(!("description"in d)||void 0!==p().description)){var v={},g=function(){var t=arguments.length<1||void 0===arguments[0]?void 0:l(arguments[0]),e=u(d,this)?new p(t):void 0===t?p():p(t);return""===t&&(v[e]=!0),e};h(g,p),g.prototype=d,d.constructor=g;var m="Symbol(description detection)"===String(p("description detection")),y=s(d.valueOf),b=s(d.toString),w=/^Symbol\((.*)\)[^)]+$/,x=s("".replace),S=s("".slice);f(d,"description",{configurable:!0,get:function(){var t=y(this);if(a(v,t))return"";var e=b(t),r=m?S(e,7,-1):x(e,w,"$1");return""===r?void 0:r}}),n({global:!0,constructor:!0,forced:!0},{Symbol:g})}},6325:(t,e,r)=>{"use strict";
25976var n=r(2128),i=r(991),o=r(2748),s=r(6038),a=r(6369).get,c=RegExp.prototype,u=TypeError;n&&i&&s(c,"dotAll",{configurable:!0,get:function(){if(this!==c){if("RegExp"===o(this))return!!a(this).dotAll;throw new u("Incompatible receiver, RegExp required")}}})},6327:(t,e,r)=>{"use strict";var n=r(8810),i=r(2484),o=r(6617),s=r(4102),a=r(4461),c=r(6005).f,u=r(4956),l=r(6766),f=r(5712),h=r(2868),p=r(9644),d=!1,v=h("meta"),g=0,m=function(t){c(t,v,{value:{objectID:"O"+g++,weakData:{}}})},y=t.exports={enable:function(){y.enable=function(){},d=!0;var t=u.f,e=i([].splice),r={};r[v]=1,t(r).length&&(u.f=function(r){for(var n=t(r),i=0,o=n.length;i<o;i++)if(n[i]===v){e(n,i,1);break}return n},n({target:"Object",stat:!0,forced:!0},{getOwnPropertyNames:l.f}))},fastKey:function(t,e){if(!s(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!a(t,v)){if(!f(t))return"F";if(!e)return"E";m(t)}return t[v].objectID},getWeakData:function(t,e){if(!a(t,v)){if(!f(t))return!0;if(!e)return!1;m(t)}return t[v].weakData},onFreeze:function(t){return p&&d&&f(t)&&!a(t,v)&&m(t),t}};o[v]=!0},6335:(t,e,r)=>{"use strict";var n=r(8810),i=r(8948);n({global:!0,forced:parseFloat!==i},{parseFloat:i})},6356:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>g});r(8037);var n=r(7431),i=r(2561),o=r(6710),s=r(3008),a=r(3134),c=r(6973),u=r(6192),l=r.n(u),f=(r(4958),r(8708),r(7372),r(5549),r(5249),r(562),r(3838),r(3082),r(3078),r(2558),r(6160),r(8021),r(9064),r(3376),r(9585),r(1759),r(6558),r(3544),r(995),r(6782)),h=r(6596),p=r(3230),d=r(5413);function v(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(v=function(){return!!t})()}var g=function(t){function e(){var t,r,n,o;(0,i.A)(this,e);for(var c=arguments.length,u=new Array(c),l=0;l<c;l++)u[l]=arguments[l];return r=this,n=e,o=[].concat(u),n=(0,a.A)(n),(t=(0,s.A)(r,v()?Reflect.construct(n,o||[],(0,a.A)(r).constructor):n.apply(r,o))).prevState=null,t.tableContainerInnerTemplate=null,t}return(0,c.A)(e,t),(0,o.A)(e,[{key:"connect",value:function(){var t=this;(0,p.P)(this,h.c,this.render.bind(this)),function(){return m.apply(this,arguments)}().then((function(e){var r=e.lineups,n=e.models,i=r[0].id,o=n.filter((function(t){return t.lineupId===i})).map((function(t){return t.id})).slice(0,3);t.store.setState({lineups:r,models:n,selectedLineupId:i,selectedModelIds:o}),t.element.hidden=!1}));var e=window.matchMedia("(min-width: 60.625em)");e.addListener(this.onMediaChange.bind(this)),this.onMediaChange(e)}},{key:"changeLineup",value:function(t){this.store.setState({selectedLineupId:t.currentTarget.value,selectedModelIds:[]})}},{key:"render",value:function(t){var e,r,n,i=t.lineups.find((function(e){return e.id===t.selectedLineupId})),o=t.models.filter((function(e){return e.lineupId===t.selectedLineupId})),s=t.selectedModelIds.map((function(t){return o.find((function(e){return e.id===t}))}));t.lineups!==(null===(e=this.prevState)||void 0===e?void 0:e.lineups)&&(this.selectInnerTemplate||(this.selectInnerTemplate=d.N.compile('\n                    {{#each options}}\n                    <option\n                        value="{{value}}"\n                        {{#if selected}}\n                        selected\n                        {{/if}}\n                    >\n                        {{content}}\n                    </option>\n                    {{/each}}\n                ')),this.selectTarget.innerHTML=this.selectInnerTemplate({options:t.lineups.map((function(e){return{value:e.id,selected:e.id===t.selectedLineupId,content:e.name}}))})),t.selectedLineupId!==(null===(r=this.prevState)||void 0===r?void 0:r.selectedLineupId)&&(this.titleTarget.textContent=null==i?void 0:i.name,this.totalTarget.textContent=o.length,this.catalogLinkTarget.href=null==i?void 0:i.catalogUrl),t.selectedModelIds!==(null===(n=this.prevState)||void 0===n?void 0:n.selectedModelIds)&&(this.tableContainerInnerTemplate||(this.tableContainerInnerTemplate=d.N.compile("\n                    {{> modules/specs-select-table}}\n                ")),this.tableContainerTarget.innerHTML=this.tableContainerInnerTemplate({models:s})),this.footnoteTarget,this.prevState=t}},{key:"onMediaChange",value:function(t){this.store.setState({selectableModelCount:t.matches?3:2})}}])}(f.xI);function m(){return(m=(0,n.A)(l().mark((function t(){var e,r;return l().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,y(1e3);case 2:return e=Array(6).fill().map((function(t,e){return{id:"".concat(e+1),name:"".concat(e+1,": Bipolar output: M12 connector 4-pin"),catalogUrl:"#"}}
25976)),r=[],Array(6).fill().forEach((function(t,e){Array(7).fill().forEach((function(t,n){r.push({id:"".concat(e+1,":").concat(n+1),lineupId:"".concat(e+1),name:"".concat(e+1,":").concat(n+1,": LR-ZH490CB<sup>*1</sup>"),url:"#",imageUrl:"/img/products/model-card-01.jpg",rows:[{heading:"Type",rows:[{body:["U.C.D. Function<br />Distance based laser sensor","Distance based laser sensor","Distance based laser sensor"][n%3]}]},{heading:"Appearance",rows:[{body:"M18 Threaded mount"}]},{heading:"Light source",rows:[{heading:"Type",body:"Red laser (660 nm)"},{heading:"Laser class",body:["Class 2 laser product (IEC60825-1)<br>Class II Laser product (FDA(CDRH) Part1040.10)","Class 1 laser product<br>(IEC60825-1, FDA (CDRH) Part1040.10<sup>*5</sup>)","Class 1 laser product<br>(IEC60825-1, FDA (CDRH) Part1040.10<sup>*5</sup>)"][n%3]}]}],specs:[{name:"Detectable distance",values:['25 to 490 mm 0.98" to 19.29" (465 to 0)']},{name:"Standard detectable deviation",values:['25 to 170 mm <span class="prd-utility-color-inch">0.98" to 6.69"</span>: 9 mm <span class="prd-utility-color-inch">0.35"</span>','170 to 290 mm <span class="prd-utility-color-inch">6.69" to 11.42"</span>: 25 mm <span class="prd-utility-color-inch">0.98"</span>','290 to 390 mm <span class="prd-utility-color-inch">11.42" to 15.35"</span>: 40 mm <span class="prd-utility-color-inch">1.57"</span>','390 to 490 mm <span class="prd-utility-color-inch">15.35" to 19.29"</span>: 50 mm <span class="prd-utility-color-inch">1.97"</span>']},{name:"Cable connection",values:["M12 connector, 4-pin"]},{name:"Output",values:["NPN/PNP selectable"]}]})}))})),t.abrupt("return",{lineups:e,models:r});case 6:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function y(t){return new Promise((function(e){return setTimeout(e,t)}))}g.targets=["select","title","total","catalogLink","tableContainer","footnote"]},6369:(t,e,r)=>{"use strict";var n,i,o,s=r(8434),a=r(8052),c=r(4102),u=r(671),l=r(4461),f=r(2921),h=r(3779),p=r(6617),d="Object already initialized",v=a.TypeError,g=a.WeakMap;if(s||f.state){var m=f.state||(f.state=new g);m.get=m.get,m.has=m.has,m.set=m.set,n=function(t,e){if(m.has(t))throw new v(d);return e.facade=t,m.set(t,e),e},i=function(t){return m.get(t)||{}},o=function(t){return m.has(t)}}else{var y=h("state");p[y]=!0,n=function(t,e){if(l(t,y))throw new v(d);return e.facade=t,u(t,y,e),e},i=function(t){return l(t,y)?t[y]:{}},o=function(t){return l(t,y)}}t.exports={set:n,get:i,has:o,enforce:function(t){return o(t)?i(t):n(t,{})},getterFor:function(t){return function(e){var r;if(!c(e)||(r=i(e)).type!==t)throw new v("Incompatible receiver, "+t+" required");return r}}}},6371:(t,e,r)=>{"use strict";var n=r(8810),i=r(8052),o=r(5396)(i.setInterval,!0);n({global:!0,bind:!0,forced:i.setInterval!==o},{setInterval:o})},6445:(t,e,r)=>{"use strict";var n=r(2921);t.exports=function(t,e){return n[t]||(n[t]=e||{})}},6461:(t,e,r)=>{"use strict";var n=r(8810),i=r(2128),o=r(6005).f;n({target:"Object",stat:!0,forced:Object.defineProperty!==o,sham:!i},{defineProperty:o})},6492:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});var n=r(8085);function i(t,e){if(t){if("string"==typeof t)return(0,n.A)(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?(0,n.A)(t,e):void 0}}},6522:function(t){var e;e=function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={exports:{},id:n,loaded:!1};return t[n].call(i.exports,i,i.exports,r),i.loaded=!0,i.exports}return r.m=t,r.c=e,r.p="",r(0)}([function(t,e){"use strict";t.exports=function(){if("undefined"==typeof document||"undefined"==typeof window)return{ask:function(){return"initial"},element:function(){return null},ignoreKeys:function(){},specificKeys:function(){},registerOnChange:function(){},unRegisterOnChange:function(){}};var t=document.documentElement,e=null,r="initial",n=r,i=Date.now(),o=!1,s=["button","input","select","textarea"],a=[],c=[16,17,18,91,93],u=[],l={keydown:"keyboard",keyup:"keyboard",mousedown:"mouse",mousemove:"mou
25976se",MSPointerDown:"pointer",MSPointerMove:"pointer",pointerdown:"pointer",pointermove:"pointer",touchstart:"touch",touchend:"touch"},f=!1,h={x:null,y:null},p={2:"touch",3:"touch",4:"mouse"},d=!1;try{var v=Object.defineProperty({},"passive",{get:function(){d=!0}});window.addEventListener("test",null,v)}catch(t){}var g=function(){var t=!d||{passive:!0,capture:!0};document.addEventListener("DOMContentLoaded",m,!0),window.PointerEvent?(window.addEventListener("pointerdown",y,!0),window.addEventListener("pointermove",w,!0)):window.MSPointerEvent?(window.addEventListener("MSPointerDown",y,!0),window.addEventListener("MSPointerMove",w,!0)):(window.addEventListener("mousedown",y,!0),window.addEventListener("mousemove",w,!0),"ontouchstart"in window&&(window.addEventListener("touchstart",y,t),window.addEventListener("touchend",y,!0))),window.addEventListener(k(),w,t),window.addEventListener("keydown",y,!0),window.addEventListener("keyup",y,!0),window.addEventListener("focusin",x,!0),window.addEventListener("focusout",S,!0)},m=function(){if(o=!("false"===t.getAttribute("data-whatpersist")||"false"===document.body.getAttribute("data-whatpersist")))try{window.sessionStorage.getItem("what-input")&&(r=window.sessionStorage.getItem("what-input")),window.sessionStorage.getItem("what-intent")&&(n=window.sessionStorage.getItem("what-intent"))}catch(t){}b("input"),b("intent")},y=function(t){var e=t.which,i=l[t.type];"pointer"===i&&(i=O(t));var o=!u.length&&-1===c.indexOf(e),a=u.length&&-1!==u.indexOf(e),f="keyboard"===i&&e&&(o||a)||"mouse"===i||"touch"===i;if(E(i)&&(f=!1),f&&r!==i&&(A("input",r=i),b("input")),f&&n!==i){var h=document.activeElement;h&&h.nodeName&&(-1===s.indexOf(h.nodeName.toLowerCase())||"button"===h.nodeName.toLowerCase()&&!C(h,"form"))&&(A("intent",n=i),b("intent"))}},b=function(e){t.setAttribute("data-what"+e,"input"===e?r:n),T(e)},w=function(t){var e=l[t.type];"pointer"===e&&(e=O(t)),_(t),(!f&&!E(e)||f&&"wheel"===t.type||"mousewheel"===t.type||"DOMMouseScroll"===t.type)&&n!==e&&(A("intent",n=e),b("intent"))},x=function(r){r.target.nodeName?(e=r.target.nodeName.toLowerCase(),t.setAttribute("data-whatelement",e),r.target.classList&&r.target.classList.length&&t.setAttribute("data-whatclasses",r.target.classList.toString().replace(" ",","))):S()},S=function(){e=null,t.removeAttribute("data-whatelement"),t.removeAttribute("data-whatclasses")},A=function(t,e){if(o)try{window.sessionStorage.setItem("what-"+t,e)}catch(t){}},O=function(t){return"number"==typeof t.pointerType?p[t.pointerType]:"pen"===t.pointerType?"touch":t.pointerType},E=function(t){var e=Date.now(),n="mouse"===t&&"touch"===r&&e-i<200;return i=e,n},k=function(){return"onwheel"in document.createElement("div")?"wheel":void 0!==document.onmousewheel?"mousewheel":"DOMMouseScroll"},T=function(t){for(var e=0,i=a.length;e<i;e++)a[e].type===t&&a[e].fn.call(void 0,"input"===t?r:n)},_=function(t){h.x!==t.screenX||h.y!==t.screenY?(f=!1,h.x=t.screenX,h.y=t.screenY):f=!0},C=function(t,e){var r=window.Element.prototype;if(r.matches||(r.matches=r.msMatchesSelector||r.webkitMatchesSelector),r.closest)return t.closest(e);do{if(t.matches(e))return t;t=t.parentElement||t.parentNode}while(null!==t&&1===t.nodeType);return null};return"addEventListener"in window&&Array.prototype.indexOf&&(l[k()]="mouse",g()),{ask:function(t){return"intent"===t?n:r},element:function(){return e},ignoreKeys:function(t){c=t},specificKeys:function(t){u=t},registerOnChange:function(t,e){a.push({fn:t,type:e||"input"})},unRegisterOnChange:function(t){var e=function(t){for(var e=0,r=a.length;e<r;e++)if(a[e].fn===t)return e}(t);(e||0===e)&&a.splice(e,1)},clearStorage:function(){window.sessionStorage.clear()}}}()}])},t.exports=e()},6526:(t,e,r)=>{"use strict";var n=r(7391),i=Math.max,o=Math.min;t.exports=function(t,e){var r=n(t);return r<0?i(r+e,0):o(r,e)}},6534:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>d});r(8037);var n=r(2561),i=r(6710),o=r(3008),s=r(3134),a=r(6973),c=(r(4958),r(7372),r(5549),r(562),r(3078),r(6160),r(8021),r(9064),r(9585),r(1759),r(6893),r(6782)),u=r(5814),l=r(6596),f=r(3230),h=r(5413);function p(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(p=function(){return!!t})()}var d=function(t){function e(){var t,r,i,a;(0,n.A)(this,e);for(var c=arguments.length,u=new Array(c),l=0;l<c;l++)u[l]=arguments[l];return r=this,i=e,a=[].concat(u),i=(0,s.A)(i),(t=(0,o.A)(r,p()?Reflect.construct(i,a||[],(0,s.A)(r).constructor):i.apply(r,a))).prevState=null,t.tableInnerTemplate=null,t}
25976return(0,a.A)(e,t),(0,i.A)(e,[{key:"connect",value:function(){(0,u.wA)(this),(0,f.P)(this,l.c,this.render.bind(this)),this.render(this.store.getState()),this.layoutContainer(),this.sticky()}},{key:"layoutContainer",value:function(){this.element.style.height="".concat(this.stickyHeight,"px")}},{key:"stickyHeight",get:function(){return this.stickyTarget.offsetHeight}},{key:"sticky",value:function(){this.element.classList.toggle(this.fixedClass,this.shouldFix)}},{key:"shouldFix",get:function(){return this.element.getBoundingClientRect().top<0}},{key:"showSpecs",value:function(){this.element.classList.add("is-specs-open")}},{key:"hideSpecs",value:function(){this.element.classList.remove("is-specs-open")}},{key:"openModelDialog",value:function(t){var e=t.currentTarget.getAttribute("data-index");this.dispatch("open-model-dialog-".concat(e))}},{key:"render",value:function(t){var e;if(t.selectedModelIds!==(null===(e=this.prevState)||void 0===e?void 0:e.selectedModelIds)){var r=t.models.filter((function(e){return e.lineupId===t.selectedLineupId})),n=t.selectedModelIds.map((function(t){return r.find((function(e){return e.id===t}))}));this.tableInnerTemplate||(this.tableInnerTemplate=h.N.compile('\n                    <thead>\n                        <tr role="row">\n                            <th class="prd-utility-visuallyHidden" scope="row" colspan="2" role="rowheader">Model</th>\n                            {{#each models}}\n                            <th scope="col" role="columnheader">\n                                {{> modules/select-button content=(default name "Select a Model") attrs=(append (append \'data-index="\' (toString @index)) \'" data-action="'.concat(this.identifier,'#openModelDialog"\')}}\n                            </th>\n                            {{/each}}\n                            {{#each (range (add models.length -3))}}\n                            <th scope="col" role="columnheader">\n                                {{> modules/select-button content="Select a Model" attrs=(append (append \'data-index="\' (toString (add @root.models.length @index))) \'" data-action="').concat(this.identifier,"#openModelDialog\"')}}\n                            </th>\n                            {{/each}}\n                        </tr>\n                    </thead>\n                ")));try{this.specsTableTarget.innerHTML=this.tableInnerTemplate({models:n})}catch(t){}}this.prevState=t}}])}(c.xI);d.targets=["sticky","specsHeader","specsTable"],d.classes=["fixed"]},6558:(t,e,r)=>{"use strict";r(8808),r(5143),r(383),r(2035),r(2173),r(2148)},6559:(t,e,r)=>{"use strict";var n,i,o,s,a,c=r(8052),u=r(6977),l=r(9004),f=r(6781).set,h=r(1661),p=r(2900),d=r(7517),v=r(552),g=r(6125),m=c.MutationObserver||c.WebKitMutationObserver,y=c.document,b=c.process,w=c.Promise,x=u("queueMicrotask");if(!x){var S=new h,A=function(){var t,e;for(g&&(t=b.domain)&&t.exit();e=S.get();)try{e()}catch(t){throw S.head&&n(),t}t&&t.enter()};p||g||v||!m||!y?!d&&w&&w.resolve?((s=w.resolve(void 0)).constructor=w,a=l(s.then,s),n=function(){a(A)}):g?n=function(){b.nextTick(A)}:(f=l(f,c),n=function(){f(A)}):(i=!0,o=y.createTextNode(""),new m(A).observe(o,{characterData:!0}),n=function(){o.data=i=!i}),x=function(t){S.head||n(),S.add(t)}}t.exports=x},6572:(t,e,r)=>{"use strict";var n=r(2128),i=r(2675),o=r(659),s=r(8687),a=Error.prototype.toString,c=i((function(){if(n){var t=Object.create(Object.defineProperty({},"name",{get:function(){return this===t}}));if("true"!==a.call(t))return!0}return"2: 1"!==a.call({message:1,name:2})||"Error"!==a.call({})}));t.exports=c?function(){var t=o(this),e=s(t.name,"Error"),r=s(t.message);return e?r?e+": "+r:e:r}:a},6596:(t,e,r)=>{"use strict";function n(t,e){for(var r in e)t[r]=e[r];return t}r.d(e,{c:()=>i});var i;r(6248);i=function(t){var e=[];function r(t){for(var r=[],n=0;n<e.length;n++)e[n]===t?t=null:r.push(e[n]);e=r}function i(r,i,o){t=i?r:n(n({},t),r);for(var s=e,a=0;a<s.length;a++)s[a](t,o)}return t=t||{},{action:function(e){function r(t){i(t,!1,e)}return function(){for(var n=arguments,i=[t],o=0;o<arguments.length;o++)i.push(n[o]);var s=e.apply(this,i);if(null!=s)return s.then?s.then(r):r(s)}},setState:i,subscribe:function(t){return e.push(t),function(){r(t)}},unsubscribe:r,getState:function(){return t}}}
25976({lineups:[],models:[],selectedLineupId:null,selectedModelIds:[],selectableModelCount:0})},6609:t=>{"use strict";t.exports={}},6617:t=>{"use strict";t.exports={}},6622:(t,e,r)=>{"use strict";var n=r(5382),i=r(5993),o=r(4009),s=r(2610);function a(t){return t.call.bind(t)}var c="undefined"!=typeof BigInt,u="undefined"!=typeof Symbol,l=a(Object.prototype.toString),f=a(Number.prototype.valueOf),h=a(String.prototype.valueOf),p=a(Boolean.prototype.valueOf);if(c)var d=a(BigInt.prototype.valueOf);if(u)var v=a(Symbol.prototype.valueOf);function g(t,e){if("object"!=typeof t)return!1;try{return e(t),!0}catch(t){return!1}}function m(t){return"[object Map]"===l(t)}function y(t){return"[object Set]"===l(t)}function b(t){return"[object WeakMap]"===l(t)}function w(t){return"[object WeakSet]"===l(t)}function x(t){return"[object ArrayBuffer]"===l(t)}function S(t){return"undefined"!=typeof ArrayBuffer&&(x.working?x(t):t instanceof ArrayBuffer)}function A(t){return"[object DataView]"===l(t)}function O(t){return"undefined"!=typeof DataView&&(A.working?A(t):t instanceof DataView)}e.isArgumentsObject=n,e.isGeneratorFunction=i,e.isTypedArray=s,e.isPromise=function(t){return"undefined"!=typeof Promise&&t instanceof Promise||null!==t&&"object"==typeof t&&"function"==typeof t.then&&"function"==typeof t.catch},e.isArrayBufferView=function(t){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):s(t)||O(t)},e.isUint8Array=function(t){return"Uint8Array"===o(t)},e.isUint8ClampedArray=function(t){return"Uint8ClampedArray"===o(t)},e.isUint16Array=function(t){return"Uint16Array"===o(t)},e.isUint32Array=function(t){return"Uint32Array"===o(t)},e.isInt8Array=function(t){return"Int8Array"===o(t)},e.isInt16Array=function(t){return"Int16Array"===o(t)},e.isInt32Array=function(t){return"Int32Array"===o(t)},e.isFloat32Array=function(t){return"Float32Array"===o(t)},e.isFloat64Array=function(t){return"Float64Array"===o(t)},e.isBigInt64Array=function(t){return"BigInt64Array"===o(t)},e.isBigUint64Array=function(t){return"BigUint64Array"===o(t)},m.working="undefined"!=typeof Map&&m(new Map),e.isMap=function(t){return"undefined"!=typeof Map&&(m.working?m(t):t instanceof Map)},y.working="undefined"!=typeof Set&&y(new Set),e.isSet=function(t){return"undefined"!=typeof Set&&(y.working?y(t):t instanceof Set)},b.working="undefined"!=typeof WeakMap&&b(new WeakMap),e.isWeakMap=function(t){return"undefined"!=typeof WeakMap&&(b.working?b(t):t instanceof WeakMap)},w.working="undefined"!=typeof WeakSet&&w(new WeakSet),e.isWeakSet=function(t){return w(t)},x.working="undefined"!=typeof ArrayBuffer&&x(new ArrayBuffer),e.isArrayBuffer=S,A.working="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView&&A(new DataView(new ArrayBuffer(1),0,1)),e.isDataView=O;var E="undefined"!=typeof SharedArrayBuffer?SharedArrayBuffer:void 0;function k(t){return"[object SharedArrayBuffer]"===l(t)}function T(t){return void 0!==E&&(void 0===k.working&&(k.working=k(new E)),k.working?k(t):t instanceof E)}function _(t){return g(t,f)}function C(t){return g(t,h)}function P(t){return g(t,p)}function I(t){return c&&g(t,d)}function j(t){return u&&g(t,v)}e.isSharedArrayBuffer=T,e.isAsyncFunction=function(t){return"[object AsyncFunction]"===l(t)},e.isMapIterator=function(t){return"[object Map Iterator]"===l(t)},e.isSetIterator=function(t){return"[object Set Iterator]"===l(t)},e.isGeneratorObject=function(t){return"[object Generator]"===l(t)},e.isWebAssemblyCompiledModule=function(t){return"[object WebAssembly.Module]"===l(t)},e.isNumberObject=_,e.isStringObject=C,e.isBooleanObject=P,e.isBigIntObject=I,e.isSymbolObject=j,e.isBoxedPrimitive=function(t){return _(t)||C(t)||P(t)||I(t)||j(t)},e.isAnyArrayBuffer=function(t){return"undefined"!=typeof Uint8Array&&(S(t)||T(t))},["isProxy","isExternal","isModuleNamespaceObject"].forEach((function(t){Object.defineProperty(e,t,{enumerable:!1,value:function(){throw new Error(t+" is not supported in userland")}})}))},6627:(t,e,r)=>{"use strict";var n=r(8052),i=r(3291),o=r(2748),s=function(t){return i.slice(0,t.length)===t};t.exports=s("Bun/")?"BUN":s("Cloudflare-Workers")?"CLOUDFLARE":s("Deno/")?"DENO":s("Node.js/")?"NODE":n.Bun&&"string"==typeof Bun.version?"BUN":n.Deno&&"object"==typeof Deno.version?"DENO":"process"===o(n.process)?"NODE":n.window&&n.document?"BROWSER":"REST"},6636:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>v});r(8037);var n=r(7431),i=r(2561),o=r(6710),s=r(3008),a=r(3134),c=r(6973),u=r(6192),l=r.n(u),f=(r(4958),r(995),r(6782)),h=r(9272),p=r(982);function d(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(d=function(){return!!t})()}var v=function(t){function e(){var t,r,n,o;(0,i.A)(this,e);for(var c=arguments.length,u=new Array(c),l=0;l<c;l++)u[l]=arguments[l];return r=this,n=e,o=[].concat(u),n=(0,a.A)(n),(t=(0,s.A)(r,d()?Reflect.construct(n,o||[],(0,a.A)(r).constructor):n.apply(r,o))).isOpen=!1,t}
25976return(0,c.A)(e,t),(0,o.A)(e,[{key:"connect",value:function(){var t=this;this.focusTrap=(0,p.K)(this.rootTarget,{onActivate:function(){t.isOpen=!0},onDeactivate:function(){t.rootTarget.setAttribute("aria-hidden","true"),setTimeout((function(){t.isOpen=!1}),300)},clickOutsideDeactivates:!0})}},{key:"show",value:(r=(0,n.A)(l().mark((function t(){return l().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!this.isOpen){t.next=2;break}return t.abrupt("return");case 2:return this.rootTarget.removeAttribute("aria-hidden"),t.next=5,(0,h.W)(this.rootTarget,"visibility","visible");case 5:this.focusTrap.activate();case 6:case"end":return t.stop()}}),t,this)}))),function(){return r.apply(this,arguments)})}]);var r}(f.xI);v.targets=["root"]},6661:t=>{"use strict";var e="bfred-it:object-fit-images",r=/(object-fit|object-position)\s*:\s*([-.\w\s%]+)/g,n="undefined"==typeof Image?{style:{"object-position":1}}:new Image,i="object-fit"in n.style,o="object-position"in n.style,s="background-size"in n.style,a="string"==typeof n.currentSrc,c=n.getAttribute,u=n.setAttribute,l=!1;function f(t,e,r){var n="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='"+(e||1)+"' height='"+(r||0)+"'%3E%3C/svg%3E";c.call(t,"src")!==n&&u.call(t,"src",n)}function h(t,e){t.naturalWidth?e(t):setTimeout(h,100,t,e)}function p(t){var n=function(t){for(var e,n=getComputedStyle(t).fontFamily,i={};null!==(e=r.exec(n));)i[e[1]]=e[2];return i}(t),o=t[e];if(n["object-fit"]=n["object-fit"]||"fill",!o.img){if("fill"===n["object-fit"])return;if(!o.skipTest&&i&&!n["object-position"])return}if(!o.img){o.img=new Image(t.width,t.height),o.img.srcset=c.call(t,"data-ofi-srcset")||t.srcset,o.img.src=c.call(t,"data-ofi-src")||t.src,u.call(t,"data-ofi-src",t.src),t.srcset&&u.call(t,"data-ofi-srcset",t.srcset),f(t,t.naturalWidth||t.width,t.naturalHeight||t.height),t.srcset&&(t.srcset="");try{!function(t){var r={get:function(r){return t[e].img[r||"src"]},set:function(r,n){return t[e].img[n||"src"]=r,u.call(t,"data-ofi-"+n,r),p(t),r}};Object.defineProperty(t,"src",r),Object.defineProperty(t,"currentSrc",{get:function(){return r.get("currentSrc")}}),Object.defineProperty(t,"srcset",{get:function(){return r.get("srcset")},set:function(t){return r.set(t,"srcset")}})}(t)}catch(t){window.console&&console.warn("https://bit.ly/ofi-old-browser")}}!function(t){if(t.srcset&&!a&&window.picturefill){var e=window.picturefill._;t[e.ns]&&t[e.ns].evaled||e.fillImg(t,{reselect:!0}),t[e.ns].curSrc||(t[e.ns].supported=!1,e.fillImg(t,{reselect:!0})),t.currentSrc=t[e.ns].curSrc||t.src}}(o.img),t.style.backgroundImage='url("'+(o.img.currentSrc||o.img.src).replace(/"/g,'\\"')+'")',t.style.backgroundPosition=n["object-position"]||"center",t.style.backgroundRepeat="no-repeat",t.style.backgroundOrigin="content-box",/scale-down/.test(n["object-fit"])?h(o.img,(function(){o.img.naturalWidth>t.width||o.img.naturalHeight>t.height?t.style.backgroundSize="contain":t.style.backgroundSize="auto"})):t.style.backgroundSize=n["object-fit"].replace("none","auto").replace("fill","100% 100%"),h(o.img,(function(e){f(t,e.naturalWidth,e.naturalHeight)}))}function d(t,r){var n=!l&&!t;if(r=r||{},t=t||"img",o&&!r.skipTest||!s)return!1;"img"===t?t=document.getElementsByTagName("img"):"string"==typeof t?t=document.querySelectorAll(t):"length"in t||(t=[t]);for(var i=0;i<t.length;i++)t[i][e]=t[i][e]||{skipTest:r.skipTest},p(t[i]);n&&(document.body.addEventListener("load",(function(t){"IMG"===t.target.tagName&&d(t.target,{skipTest:r.skipTest})}),!0),l=!0,t="img"),r.watchMQ&&window.addEventListener("resize",d.bind(null,t,{skipTest:r.skipTest}))}d.supportsObjectFit=i,d.supportsObjectPosition=o,function(){function t(t,r){return t[e]&&t[e].img&&("src"===r||"srcset"===r)?t[e].img:t}o||(HTMLImageElement.prototype.getAttribute=function(e){return c.call(t(this,e),e)},HTMLImageElement.prototype.setAttribute=function(e,r){return u.call(t(this,e),e,String(r))})}(),t.exports=d},6710:(t,e,r)=>{"use strict";r.d(e,{A:()=>s});var n=r(3224);function i(t){var e=function(t,e){if("object"!=(0,n.A)(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var i=r.call(t,e||"default");if("object"!=(0,n.A)(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}
25976(t,"string");return"symbol"==(0,n.A)(e)?e:e+""}function o(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,i(n.key),n)}}function s(t,e,r){return e&&o(t.prototype,e),r&&o(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t}},6725:(t,e,r)=>{"use strict";var n,i=r(8682),o=r(8118)(),s=r(9731),a=r(1233);if(o){var c=i("RegExp.prototype.exec"),u={},l=function(){throw u},f={toString:l,valueOf:l};"symbol"==typeof Symbol.toPrimitive&&(f[Symbol.toPrimitive]=l),n=function(t){if(!t||"object"!=typeof t)return!1;var e=a(t,"lastIndex");if(!(e&&s(e,"value")))return!1;try{c(t,f)}catch(t){return t===u}}}else{var h=i("Object.prototype.toString");n=function(t){return!(!t||"object"!=typeof t&&"function"!=typeof t)&&"[object RegExp]"===h(t)}}t.exports=n},6741:(t,e,r)=>{"use strict";var n=r(8810),i=r(2484),o=Date,s=i(o.prototype.getTime);n({target:"Date",stat:!0},{now:function(){return s(new o)}})},6749:(t,e,r)=>{"use strict";var n=r(8969),i=r(6526),o=r(8770),s=function(t){return function(e,r,s){var a=n(e),c=o(a);if(0===c)return!t&&-1;var u,l=i(s,c);if(t&&r!=r){for(;c>l;)if((u=a[l++])!=u)return!0}else for(;c>l;l++)if((t||l in a)&&a[l]===r)return t||l||0;return!t&&-1}};t.exports={includes:s(!0),indexOf:s(!1)}},6757:t=>{"use strict";t.exports=TypeError},6766:(t,e,r)=>{"use strict";var n=r(2748),i=r(8969),o=r(4956).f,s=r(4540),a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function(t){return a&&"Window"===n(t)?function(t){try{return o(t)}catch(t){return s(a)}}(t):o(i(t))}},6770:(t,e,r)=>{"use strict";var n=r(5236),i=r(6572),o=Error.prototype;o.toString!==i&&n(o,"toString",i)},6781:(t,e,r)=>{"use strict";var n,i,o,s,a=r(8052),c=r(133),u=r(9004),l=r(321),f=r(4461),h=r(2675),p=r(7073),d=r(4540),v=r(4451),g=r(464),m=r(2900),y=r(6125),b=a.setImmediate,w=a.clearImmediate,x=a.process,S=a.Dispatch,A=a.Function,O=a.MessageChannel,E=a.String,k=0,T={},_="onreadystatechange";h((function(){n=a.location}));var C=function(t){if(f(T,t)){var e=T[t];delete T[t],e()}},P=function(t){return function(){C(t)}},I=function(t){C(t.data)},j=function(t){a.postMessage(E(t),n.protocol+"//"+n.host)};b&&w||(b=function(t){g(arguments.length,1);var e=l(t)?t:A(t),r=d(arguments,1);return T[++k]=function(){c(e,void 0,r)},i(k),k},w=function(t){delete T[t]},y?i=function(t){x.nextTick(P(t))}:S&&S.now?i=function(t){S.now(P(t))}:O&&!m?(s=(o=new O).port2,o.port1.onmessage=I,i=u(s.postMessage,s)):a.addEventListener&&l(a.postMessage)&&!a.importScripts&&n&&"file:"!==n.protocol&&!h(j)?(i=j,a.addEventListener("message",I,!1)):i=_ in v("script")?function(t){p.appendChild(v("script"))[_]=function(){p.removeChild(this),C(t)}}:function(t){setTimeout(P(t),0)}),t.exports={set:b,clear:w}},6782:(t,e,r)=>{"use strict";r.d(e,{lg:()=>Z,xI:()=>ut});class n{constructor(t,e,r){this.eventTarget=t,this.eventName=e,this.eventOptions=r,this.unorderedBindings=new Set}connect(){this.eventTarget.addEventListener(this.eventName,this,this.eventOptions)}disconnect(){this.eventTarget.removeEventListener(this.eventName,this,this.eventOptions)}bindingConnected(t){this.unorderedBindings.add(t)}bindingDisconnected(t){this.unorderedBindings.delete(t)}handleEvent(t){const e=function(t){if("immediatePropagationStopped"in t)return t;{const{stopImmediatePropagation:e}=t;return Object.assign(t,{immediatePropagationStopped:!1,stopImmediatePropagation(){this.immediatePropagationStopped=!0,e.call(this)}})}}(t);for(const t of this.bindings){if(e.immediatePropagationStopped)break;t.handleEvent(e)}}hasBindings(){return this.unorderedBindings.size>0}get bindings(){return Array.from(this.unorderedBindings).sort(((t,e)=>{const r=t.index,n=e.index;return r<n?-1:r>n?1:0}))}}class i{constructor(t){this.application=t,this.eventListenerMaps=new Map,this.started=!1}start(){this.started||(this.started=!0,this.eventListeners.forEach((t=>t.connect())))}stop(){this.started&&(this.started=!1,this.eventListeners.forEach((t=>t.disconnect())))}get eventListeners(){return Array.from(this.eventListenerMaps.values()).reduce(((t,e)=>
25976t.concat(Array.from(e.values()))),[])}bindingConnected(t){this.fetchEventListenerForBinding(t).bindingConnected(t)}bindingDisconnected(t,e=!1){this.fetchEventListenerForBinding(t).bindingDisconnected(t),e&&this.clearEventListenersForBinding(t)}handleError(t,e,r={}){this.application.handleError(t,`Error ${e}`,r)}clearEventListenersForBinding(t){const e=this.fetchEventListenerForBinding(t);e.hasBindings()||(e.disconnect(),this.removeMappedEventListenerFor(t))}removeMappedEventListenerFor(t){const{eventTarget:e,eventName:r,eventOptions:n}=t,i=this.fetchEventListenerMapForEventTarget(e),o=this.cacheKey(r,n);i.delete(o),0==i.size&&this.eventListenerMaps.delete(e)}fetchEventListenerForBinding(t){const{eventTarget:e,eventName:r,eventOptions:n}=t;return this.fetchEventListener(e,r,n)}fetchEventListener(t,e,r){const n=this.fetchEventListenerMapForEventTarget(t),i=this.cacheKey(e,r);let o=n.get(i);return o||(o=this.createEventListener(t,e,r),n.set(i,o)),o}createEventListener(t,e,r){const i=new n(t,e,r);return this.started&&i.connect(),i}fetchEventListenerMapForEventTarget(t){let e=this.eventListenerMaps.get(t);return e||(e=new Map,this.eventListenerMaps.set(t,e)),e}cacheKey(t,e){const r=[t];return Object.keys(e).sort().forEach((t=>{r.push(`${e[t]?"":"!"}${t}`)})),r.join(":")}}const o={stop:({event:t,value:e})=>(e&&t.stopPropagation(),!0),prevent:({event:t,value:e})=>(e&&t.preventDefault(),!0),self:({event:t,value:e,element:r})=>!e||r===t.target},s=/^(?:(?:([^.]+?)\+)?(.+?)(?:\.(.+?))?(?:@(window|document))?->)?(.+?)(?:#([^:]+?))(?::(.+))?$/;function a(t){return"window"==t?window:"document"==t?document:void 0}function c(t){return t.replace(/(?:[_-])([a-z0-9])/g,((t,e)=>e.toUpperCase()))}function u(t){return c(t.replace(/--/g,"-").replace(/__/g,"_"))}function l(t){return t.charAt(0).toUpperCase()+t.slice(1)}function f(t){return t.replace(/([A-Z])/g,((t,e)=>`-${e.toLowerCase()}`))}function h(t){return null!=t}function p(t,e){return Object.prototype.hasOwnProperty.call(t,e)}const d=["meta","ctrl","alt","shift"];class v{constructor(t,e,r,n){this.element=t,this.index=e,this.eventTarget=r.eventTarget||t,this.eventName=r.eventName||function(t){const e=t.tagName.toLowerCase();if(e in g)return g[e](t)}(t)||m("missing event name"),this.eventOptions=r.eventOptions||{},this.identifier=r.identifier||m("missing identifier"),this.methodName=r.methodName||m("missing method name"),this.keyFilter=r.keyFilter||"",this.schema=n}static forToken(t,e){return new this(t.element,t.index,function(t){const e=t.trim().match(s)||[];let r=e[2],n=e[3];return n&&!["keydown","keyup","keypress"].includes(r)&&(r+=`.${n}`,n=""),{eventTarget:a(e[4]),eventName:r,eventOptions:e[7]?(i=e[7],i.split(":").reduce(((t,e)=>Object.assign(t,{[e.replace(/^!/,"")]:!/^!/.test(e)})),{})):{},identifier:e[5],methodName:e[6],keyFilter:e[1]||n};var i}(t.content),e)}toString(){const t=this.keyFilter?`.${this.keyFilter}`:"",e=this.eventTargetName?`@${this.eventTargetName}`:"";return`${this.eventName}${t}${e}->${this.identifier}#${this.methodName}`}shouldIgnoreKeyboardEvent(t){if(!this.keyFilter)return!1;const e=this.keyFilter.split("+");if(this.keyFilterDissatisfied(t,e))return!0;const r=e.filter((t=>!d.includes(t)))[0];return!!r&&(p(this.keyMappings,r)||m(`contains unknown key filter: ${this.keyFilter}`),this.keyMappings[r].toLowerCase()!==t.key.toLowerCase())}shouldIgnoreMouseEvent(t){if(!this.keyFilter)return!1;const e=[this.keyFilter];return!!this.keyFilterDissatisfied(t,e)}get params(){const t={},e=new RegExp(`^data-${this.identifier}-(.+)-param$`,"i");for(const{name:r,value:n}of Array.from(this.element.attributes)){const i=r.match(e),o=i&&i[1];o&&(t[c(o)]=y(n))}return t}get eventTargetName(){return(t=this.eventTarget)==window?"window":t==document?"document":void 0;var t}get keyMappings(){return this.schema.keyMappings}keyFilterDissatisfied(t,e){const[r,n,i,o]=d.map((t=>e.includes(t)));return t.metaKey!==r||t.ctrlKey!==n||t.altKey!==i||t.shiftKey!==o}}const g={a:()=>"click",button:()=>"click",form:()=>"submit",details:()=>"toggle",input:t=>"submit"==t.getAttribute("type")?"click":"input",select:()=>"change",textarea:()=>"input"};function m(t){throw new Error(t)}function y(t){try{return JSON.parse(t)}catch(e){return t}}class b{constructor(t,e){this.context=t,this.action=e}get index(){return this.action.index}get eventTarget(){return this.action.eventTarget}get eventOptions(){return this.action.eventOptions}
vendor: 5,391 bytes, line 25976
25976get identifier(){return this.context.identifier}handleEvent(t){const e=this.prepareActionEvent(t);this.willBeInvokedByEvent(t)&&this.applyEventModifiers(e)&&this.invokeWithEvent(e)}get eventName(){return this.action.eventName}get method(){const t=this.controller[this.methodName];if("function"==typeof t)return t;throw new Error(`Action "${this.action}" references undefined method "${this.methodName}"`)}applyEventModifiers(t){const{element:e}=this.action,{actionDescriptorFilters:r}=this.context.application,{controller:n}=this.context;let i=!0;for(const[o,s]of Object.entries(this.eventOptions))if(o in r){const a=r[o];i=i&&a({name:o,value:s,event:t,element:e,controller:n})}return i}prepareActionEvent(t){return Object.assign(t,{params:this.action.params})}invokeWithEvent(t){const{target:e,currentTarget:r}=t;try{this.method.call(this.controller,t),this.context.logDebugActivity(this.methodName,{event:t,target:e,currentTarget:r,action:this.methodName})}catch(e){const{identifier:r,controller:n,element:i,index:o}=this,s={identifier:r,controller:n,element:i,index:o,event:t};this.context.handleError(e,`invoking action "${this.action}"`,s)}}willBeInvokedByEvent(t){const e=t.target;return!(t instanceof KeyboardEvent&&this.action.shouldIgnoreKeyboardEvent(t))&&(!(t instanceof MouseEvent&&this.action.shouldIgnoreMouseEvent(t))&&(this.element===e||(e instanceof Element&&this.element.contains(e)?this.scope.containsElement(e):this.scope.containsElement(this.action.element))))}get controller(){return this.context.controller}get methodName(){return this.action.methodName}get element(){return this.scope.element}get scope(){return this.context.scope}}class w{constructor(t,e){this.mutationObserverInit={attributes:!0,childList:!0,subtree:!0},this.element=t,this.started=!1,this.delegate=e,this.elements=new Set,this.mutationObserver=new MutationObserver((t=>this.processMutations(t)))}start(){this.started||(this.started=!0,this.mutationObserver.observe(this.element,this.mutationObserverInit),this.refresh())}pause(t){this.started&&(this.mutationObserver.disconnect(),this.started=!1),t(),this.started||(this.mutationObserver.observe(this.element,this.mutationObserverInit),this.started=!0)}stop(){this.started&&(this.mutationObserver.takeRecords(),this.mutationObserver.disconnect(),this.started=!1)}refresh(){if(this.started){const t=new Set(this.matchElementsInTree());for(const e of Array.from(this.elements))t.has(e)||this.removeElement(e);for(const e of Array.from(t))this.addElement(e)}}processMutations(t){if(this.started)for(const e of t)this.processMutation(e)}processMutation(t){"attributes"==t.type?this.processAttributeChange(t.target,t.attributeName):"childList"==t.type&&(this.processRemovedNodes(t.removedNodes),this.processAddedNodes(t.addedNodes))}processAttributeChange(t,e){this.elements.has(t)?this.delegate.elementAttributeChanged&&this.matchElement(t)?this.delegate.elementAttributeChanged(t,e):this.removeElement(t):this.matchElement(t)&&this.addElement(t)}processRemovedNodes(t){for(const e of Array.from(t)){const t=this.elementFromNode(e);t&&this.processTree(t,this.removeElement)}}processAddedNodes(t){for(const e of Array.from(t)){const t=this.elementFromNode(e);t&&this.elementIsActive(t)&&this.processTree(t,this.addElement)}}matchElement(t){return this.delegate.matchElement(t)}matchElementsInTree(t=this.element){return this.delegate.matchElementsInTree(t)}processTree(t,e){for(const r of this.matchElementsInTree(t))e.call(this,r)}elementFromNode(t){if(t.nodeType==Node.ELEMENT_NODE)return t}elementIsActive(t){return t.isConnected==this.element.isConnected&&this.element.contains(t)}addElement(t){this.elements.has(t)||this.elementIsActive(t)&&(this.elements.add(t),this.delegate.elementMatched&&this.delegate.elementMatched(t))}removeElement(t){this.elements.has(t)&&(this.elements.delete(t),this.delegate.elementUnmatched&&this.delegate.elementUnmatched(t))}}class x{constructor(t,e,r){this.attributeName=e,this.delegate=r,this.elementObserver=new w(t,this)}get element(){return this.elementObserver.element}get selector(){return`[${this.attributeName}]`}start(){this.elementObserver.start()}pause(t){this.elementObserver.pause(t)}stop(){this.elementObserver.stop()}refresh(){this.elementObserver.refresh()}get started(){return this.elementObserver.started}matchElement(t){return t.hasAttribute(this.attributeName)}matchElementsInTree(t){const e=this.matchElement(t)?[t]:[],r=Array.from(t.querySelectorAll(this.selector));return e.concat(r)}elementMatched(t){this.delegate.elementMatchedAttribute&&this.delegate.elementMatchedAttribute(t,this.attributeName)}elementUnmatched(t){this.delegate.elementUnmatchedAttribute&&this.delegate.elementUnmatchedAttribute(t,this.attributeName)}elementAttributeChanged(t,e){this.delegate.elementAttributeValueChanged&&this.attributeName==e&&this.delegate.elementAttributeValueChanged(t,e)}}function S(t,e,r){O(t,e).add(r)}function A(t,e,r){O(t,e).delete(r),function(t,e){const r=t.get(e);null!=r&&0==r.size&&t.delete(e)}(t,e)}function O(t,e){let r=t.get(e);return r||(r=new Set,t.set(e,r)),r}class E{constructor(){this.valuesByKey=new Map}get keys(){return Array.from(this.valuesByKey.keys())}get values(){return Array.from(this.valuesByKey.values()).reduce(((t,e)=>t.concat(Array.from(e))),[])}get size(){return Array.from(this.valuesByKey.values()).reduce(((t,e)=>t+e.size),0)}add(t,e){S(this.valuesByKey,t,e)}
25976delete(t,e){A(this.valuesByKey,t,e)}has(t,e){const r=this.valuesByKey.get(t);return null!=r&&r.has(e)}hasKey(t){return this.valuesByKey.has(t)}hasValue(t){return Array.from(this.valuesByKey.values()).some((e=>e.has(t)))}getValuesForKey(t){const e=this.valuesByKey.get(t);return e?Array.from(e):[]}getKeysForValue(t){return Array.from(this.valuesByKey).filter((([e,r])=>r.has(t))).map((([t,e])=>t))}}class k{constructor(t,e,r,n){this._selector=e,this.details=n,this.elementObserver=new w(t,this),this.delegate=r,this.matchesByElement=new E}get started(){return this.elementObserver.started}get selector(){return this._selector}set selector(t){this._selector=t,this.refresh()}start(){this.elementObserver.start()}pause(t){this.elementObserver.pause(t)}stop(){this.elementObserver.stop()}refresh(){this.elementObserver.refresh()}get element(){return this.elementObserver.element}matchElement(t){const{selector:e}=this;if(e){const r=t.matches(e);return this.delegate.selectorMatchElement?r&&this.delegate.selectorMatchElement(t,this.details):r}return!1}matchElementsInTree(t){const{selector:e}=this;if(e){const r=this.matchElement(t)?[t]:[],n=Array.from(t.querySelectorAll(e)).filter((t=>this.matchElement(t)));return r.concat(n)}return[]}elementMatched(t){const{selector:e}=this;e&&this.selectorMatched(t,e)}elementUnmatched(t){const e=this.matchesByElement.getKeysForValue(t);for(const r of e)this.selectorUnmatched(t,r)}elementAttributeChanged(t,e){const{selector:r}=this;if(r){const e=this.matchElement(t),n=this.matchesByElement.has(r,t);e&&!n?this.selectorMatched(t,r):!e&&n&&this.selectorUnmatched(t,r)}}selectorMatched(t,e){this.delegate.selectorMatched(t,e,this.details),this.matchesByElement.add(e,t)}selectorUnmatched(t,e){this.delegate.selectorUnmatched(t,e,this.details),this.matchesByElement.delete(e,t)}}class T{constructor(t,e){this.element=t,this.delegate=e,this.started=!1,this.stringMap=new Map,this.mutationObserver=new MutationObserver((t=>this.processMutations(t)))}start(){this.started||(this.started=!0,this.mutationObserver.observe(this.element,{attributes:!0,attributeOldValue:!0}),this.refresh())}stop(){this.started&&(this.mutationObserver.takeRecords(),this.mutationObserver.disconnect(),this.started=!1)}refresh(){if(this.started)for(const t of this.knownAttributeNames)this.refreshAttribute(t,null)}processMutations(t){if(this.started)for(const e of t)this.processMutation(e)}processMutation(t){const e=t.attributeName;e&&this.refreshAttribute(e,t.oldValue)}refreshAttribute(t,e){const r=this.delegate.getStringMapKeyForAttribute(t);if(null!=r){this.stringMap.has(t)||this.stringMapKeyAdded(r,t);const n=this.element.getAttribute(t);if(this.stringMap.get(t)!=n&&this.stringMapValueChanged(n,r,e),null==n){const e=this.stringMap.get(t);this.stringMap.delete(t),e&&this.stringMapKeyRemoved(r,t,e)}else this.stringMap.set(t,n)}}stringMapKeyAdded(t,e){this.delegate.stringMapKeyAdded&&this.delegate.stringMapKeyAdded(t,e)}stringMapValueChanged(t,e,r){this.delegate.stringMapValueChanged&&this.delegate.stringMapValueChanged(t,e,r)}stringMapKeyRemoved(t,e,r){this.delegate.stringMapKeyRemoved&&this.delegate.stringMapKeyRemoved(t,e,r)}get knownAttributeNames(){return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)))}get currentAttributeNames(){return Array.from(this.element.attributes).map((t=>t.name))}get recordedAttributeNames(){return Array.from(this.stringMap.keys())}}class _{constructor(t,e,r){this.attributeObserver=new x(t,e,this),this.delegate=r,this.tokensByElement=new E}get started(){return this.attributeObserver.started}start(){this.attributeObserver.start()}pause(t){this.attributeObserver.pause(t)}stop(){this.attributeObserver.stop()}refresh(){this.attributeObserver.refresh()}get element(){return this.attributeObserver.element}get attributeName(){return this.attributeObserver.attributeName}elementMatchedAttribute(t){this.tokensMatched(this.readTokensForElement(t))}elementAttributeValueChanged(t){const[e,r]=this.refreshTokensForElement(t);this.tokensUnmatched(e),this.tokensMatched(r)}elementUnmatchedAttribute(t){this.tokensUnmatched(this.tokensByElement.getValuesForKey(t))}tokensMatched(t){t.forEach((t=>this.tokenMatched(t)))}tokensUnmatched(t){t.forEach((t=>this.tokenUnmatched(t)))}tokenMatched(t){this.delegate.tokenMatched(t),this.tokensByElement.add(t.element,t)}tokenUnmatched(t){this.delegate.tokenUnmatched(t),this.tokensByElement.delete(t.element,t)}refreshTokensForElement(t){const e=this.tokensByElement.getValuesForKey(t),r=this.readTokensForElement(t),n=function(t,e){const r=Math.max(t.length,e.length);return Array.from({length:r},((r,n)=>[t[n],e[n]]))}(e,r).findIndex((([t,e])=>{return n=e,!((r=t)&&n&&r.index==n.index&&r.content==n.content);var r,n}));return-1==n?[[],[]]:[e.slice(n),r.slice(n)]}readTokensForElement(t){const e=this.attributeName;return function(t,e,r){return t.trim().split(/\s+/).filter((t=>t.length)).map(((t,n)=>({element:e,attributeName:r,content:t,index:n})))}(t.getAttribute(e)||"",t,e)}}class C{constructor(t,e,r){this.tokenListObserver=new _(t,e,this),this.delegate=r,this.parseResultsByToken=new WeakMap,this.valuesByTokenByElement=new WeakMap}get started(){return this.tokenListObserver.started}start(){this.tokenListObserver.start()}stop(){this.tokenListObserver.stop()}refresh(){this.tokenListObserver.refresh()}
vendor: 1,657 bytes, line 25976
25976get element(){return this.tokenListObserver.element}get attributeName(){return this.tokenListObserver.attributeName}tokenMatched(t){const{element:e}=t,{value:r}=this.fetchParseResultForToken(t);r&&(this.fetchValuesByTokenForElement(e).set(t,r),this.delegate.elementMatchedValue(e,r))}tokenUnmatched(t){const{element:e}=t,{value:r}=this.fetchParseResultForToken(t);r&&(this.fetchValuesByTokenForElement(e).delete(t),this.delegate.elementUnmatchedValue(e,r))}fetchParseResultForToken(t){let e=this.parseResultsByToken.get(t);return e||(e=this.parseToken(t),this.parseResultsByToken.set(t,e)),e}fetchValuesByTokenForElement(t){let e=this.valuesByTokenByElement.get(t);return e||(e=new Map,this.valuesByTokenByElement.set(t,e)),e}parseToken(t){try{return{value:this.delegate.parseValueForToken(t)}}catch(t){return{error:t}}}}class P{constructor(t,e){this.context=t,this.delegate=e,this.bindingsByAction=new Map}start(){this.valueListObserver||(this.valueListObserver=new C(this.element,this.actionAttribute,this),this.valueListObserver.start())}stop(){this.valueListObserver&&(this.valueListObserver.stop(),delete this.valueListObserver,this.disconnectAllActions())}get element(){return this.context.element}get identifier(){return this.context.identifier}get actionAttribute(){return this.schema.actionAttribute}get schema(){return this.context.schema}get bindings(){return Array.from(this.bindingsByAction.values())}connectAction(t){const e=new b(this.context,t);this.bindingsByAction.set(t,e),this.delegate.bindingConnected(e)}disconnectAction(t){const e=this.bindingsByAction.get(t);e&&(this.bindingsByAction.delete(t),this.delegate.bindingDisconnected(e))}
25976disconnectAllActions(){this.bindings.forEach((t=>this.delegate.bindingDisconnected(t,!0))),this.bindingsByAction.clear()}parseValueForToken(t){const e=v.forToken(t,this.schema);if(e.identifier==this.identifier)return e}elementMatchedValue(t,e){this.connectAction(e)}elementUnmatchedValue(t,e){this.disconnectAction(e)}}class I{constructor(t,e){this.context=t,this.receiver=e,this.stringMapObserver=new T(this.element,this),this.valueDescriptorMap=this.controller.valueDescriptorMap}start(){this.stringMapObserver.start(),this.invokeChangedCallbacksForDefaultValues()}stop(){this.stringMapObserver.stop()}get element(){return this.context.element}get controller(){return this.context.controller}getStringMapKeyForAttribute(t){if(t in this.valueDescriptorMap)return this.valueDescriptorMap[t].name}stringMapKeyAdded(t,e){const r=this.valueDescriptorMap[e];this.hasValue(t)||this.invokeChangedCallback(t,r.writer(this.receiver[t]),r.writer(r.defaultValue))}stringMapValueChanged(t,e,r){const n=this.valueDescriptorNameMap[e];null!==t&&(null===r&&(r=n.writer(n.defaultValue)),this.invokeChangedCallback(e,t,r))}stringMapKeyRemoved(t,e,r){const n=this.valueDescriptorNameMap[t];this.hasValue(t)?this.invokeChangedCallback(t,n.writer(this.receiver[t]),r):this.invokeChangedCallback(t,n.writer(n.defaultValue),r)}invokeChangedCallbacksForDefaultValues(){for(const{key:t,name:e,defaultValue:r,writer:n}of this.valueDescriptors)null==r||this.controller.data.has(t)||this.invokeChangedCallback(e,n(r),void 0)}invokeChangedCallback(t,e,r){const n=`${t}Changed`,i=this.receiver[n];if("function"==typeof i){const n=this.valueDescriptorNameMap[t];try{const t=n.reader(e);let o=r;r&&(o=n.reader(r)),i.call(this.receiver,t,o)}catch(t){throw t instanceof TypeError&&(t.message=`Stimulus Value "${this.context.identifier}.${n.name}" - ${t.message}`),t}}}get valueDescriptors(){const{valueDescriptorMap:t}=this;return Object.keys(t).map((e=>t[e]))}get valueDescriptorNameMap(){const t={};return Object.keys(this.valueDescriptorMap).forEach((e=>{const r=this.valueDescriptorMap[e];t[r.name]=r})),t}hasValue(t){const e=`has${l(this.valueDescriptorNameMap[t].name)}`;return this.receiver[e]}}class j{constructor(t,e){this.context=t,this.delegate=e,this.targetsByName=new E}start(){this.tokenListObserver||(this.tokenListObserver=new _(this.element,this.attributeName,this),this.tokenListObserver.start())}stop(){this.tokenListObserver&&(this.disconnectAllTargets(),this.tokenListObserver.stop(),delete this.tokenListObserver)}tokenMatched({element:t,content:e}){this.scope.containsElement(t)&&this.connectTarget(t,e)}tokenUnmatched({element:t,content:e}){this.disconnectTarget(t,e)}connectTarget(t,e){var r;this.targetsByName.has(e,t)||(this.targetsByName.add(e,t),null===(r=this.tokenListObserver)||void 0===r||r.pause((()=>this.delegate.targetConnected(t,e))))}disconnectTarget(t,e){var r;this.targetsByName.has(e,t)&&(this.targetsByName.delete(e,t),null===(r=this.tokenListObserver)||void 0===r||r.pause((()=>this.delegate.targetDisconnected(t,e))))}disconnectAllTargets(){for(const t of this.targetsByName.keys)for(const e of this.targetsByName.getValuesForKey(t))this.disconnectTarget(e,t)}get attributeName(){return`data-${this.context.identifier}-target`}get element(){return this.context.element}get scope(){return this.context.scope}}function M(t,e){const r=N(t);return Array.from(r.reduce(((t,r)=>(function(t,e){const r=t[e];return Array.isArray(r)?r:[]}(r,e).forEach((e=>t.add(e))),t)),new Set))}function L(t,e){return N(t).reduce(((t,r)=>(t.push(...function(t,e){const r=t[e];return r?Object.keys(r).map((t=>[t,r[t]])):[]}(r,e)),t)),[])}function N(t){const e=[];for(;t;)e.push(t),t=Object.getPrototypeOf(t);return e.reverse()}class B{constructor(t,e){this.started=!1,this.context=t,this.delegate=e,this.outletsByName=new E,this.outletElementsByName=new E,this.selectorObserverMap=new Map,this.attributeObserverMap=new Map}start(){this.started||(this.outletDefinitions.forEach((t=>{this.setupSelectorObserverForOutlet(t),this.setupAttributeObserverForOutlet(t)}
25976)),this.started=!0,this.dependentContexts.forEach((t=>t.refresh())))}refresh(){this.selectorObserverMap.forEach((t=>t.refresh())),this.attributeObserverMap.forEach((t=>t.refresh()))}stop(){this.started&&(this.started=!1,this.disconnectAllOutlets(),this.stopSelectorObservers(),this.stopAttributeObservers())}stopSelectorObservers(){this.selectorObserverMap.size>0&&(this.selectorObserverMap.forEach((t=>t.stop())),this.selectorObserverMap.clear())}stopAttributeObservers(){this.attributeObserverMap.size>0&&(this.attributeObserverMap.forEach((t=>t.stop())),this.attributeObserverMap.clear())}selectorMatched(t,e,{outletName:r}){const n=this.getOutlet(t,r);n&&this.connectOutlet(n,t,r)}selectorUnmatched(t,e,{outletName:r}){const n=this.getOutletFromMap(t,r);n&&this.disconnectOutlet(n,t,r)}selectorMatchElement(t,{outletName:e}){const r=this.selector(e),n=this.hasOutlet(t,e),i=t.matches(`[${this.schema.controllerAttribute}~=${e}]`);return!!r&&(n&&i&&t.matches(r))}elementMatchedAttribute(t,e){const r=this.getOutletNameFromOutletAttributeName(e);r&&this.updateSelectorObserverForOutlet(r)}elementAttributeValueChanged(t,e){const r=this.getOutletNameFromOutletAttributeName(e);r&&this.updateSelectorObserverForOutlet(r)}elementUnmatchedAttribute(t,e){const r=this.getOutletNameFromOutletAttributeName(e);r&&this.updateSelectorObserverForOutlet(r)}connectOutlet(t,e,r){var n;this.outletElementsByName.has(r,e)||(this.outletsByName.add(r,t),this.outletElementsByName.add(r,e),null===(n=this.selectorObserverMap.get(r))||void 0===n||n.pause((()=>this.delegate.outletConnected(t,e,r))))}disconnectOutlet(t,e,r){var n;this.outletElementsByName.has(r,e)&&(this.outletsByName.delete(r,t),this.outletElementsByName.delete(r,e),null===(n=this.selectorObserverMap.get(r))||void 0===n||n.pause((()=>this.delegate.outletDisconnected(t,e,r))))}disconnectAllOutlets(){for(const t of this.outletElementsByName.keys)for(const e of this.outletElementsByName.getValuesForKey(t))for(const r of this.outletsByName.getValuesForKey(t))this.disconnectOutlet(r,e,t)}updateSelectorObserverForOutlet(t){const e=this.selectorObserverMap.get(t);e&&(e.selector=this.selector(t))}setupSelectorObserverForOutlet(t){const e=this.selector(t),r=new k(document.body,e,this,{outletName:t});this.selectorObserverMap.set(t,r),r.start()}setupAttributeObserverForOutlet(t){const e=this.attributeNameForOutletName(t),r=new x(this.scope.element,e,this);this.attributeObserverMap.set(t,r),r.start()}selector(t){return this.scope.outlets.getSelectorForOutletName(t)}attributeNameForOutletName(t){return this.scope.schema.outletAttributeForScope(this.identifier,t)}getOutletNameFromOutletAttributeName(t){return this.outletDefinitions.find((e=>this.attributeNameForOutletName(e)===t))}get outletDependencies(){const t=new E;return this.router.modules.forEach((e=>{M(e.definition.controllerConstructor,"outlets").forEach((r=>t.add(r,e.identifier)))})),t}get outletDefinitions(){return this.outletDependencies.getKeysForValue(this.identifier)}get dependentControllerIdentifiers(){return this.outletDependencies.getValuesForKey(this.identifier)}get dependentContexts(){const t=this.dependentControllerIdentifiers;return this.router.contexts.filter((e=>t.includes(e.identifier)))}hasOutlet(t,e){return!!this.getOutlet(t,e)||!!this.getOutletFromMap(t,e)}getOutlet(t,e){return this.application.getControllerForElementAndIdentifier(t,e)}getOutletFromMap(t,e){return this.outletsByName.getValuesForKey(e).find((e=>e.element===t))}get scope(){return this.context.scope}get schema(){return this.context.schema}get identifier(){return this.context.identifier}get application(){return this.context.application}get router(){return this.application.router}}class R{constructor(t,e){this.logDebugActivity=(t,e={})=>{const{identifier:r,controller:n,element:i}=this;e=Object.assign({identifier:r,controller:n,element:i},e),this.application.logDebugActivity(this.identifier,t,e)},this.module=t,this.scope=e,this.controller=new t.controllerConstructor(this),this.bindingObserver=new P(this,this.dispatcher),this.valueObserver=new I(this,this.controller),this.targetObserver=new j(this,this),this.outletObserver=new B(this,this);try{this.controller.initialize(),this.logDebugActivity("initialize")}catch(t){this.handleError(t,"initializing controller")}}connect(){this.bindingObserver.start(),this.valueObserver.start(),this.targetObserver.start(),this.outletObserver.start();try{this.controller.connect(),this.logDebugActivity("connect")}catch(t){this.handleError(t,"connecting controller")}}refresh(){this.outletObserver.refresh()}disconnect(){try{this.controller.disconnect(),this.logDebugActivity("disconnect")}catch(t){this.handleError(t,"disconnecting controller")}this.outletObserver.stop(),this.targetObserver.stop(),this.valueObserver.stop(),this.bindingObserver.stop()}get application(){return this.module.application}get identifier(){return this.module.identifier}get schema(){return this.application.schema}get dispatcher(){return this.application.dispatcher}
25976get element(){return this.scope.element}get parentElement(){return this.element.parentElement}handleError(t,e,r={}){const{identifier:n,controller:i,element:o}=this;r=Object.assign({identifier:n,controller:i,element:o},r),this.application.handleError(t,`Error ${e}`,r)}targetConnected(t,e){this.invokeControllerMethod(`${e}TargetConnected`,t)}targetDisconnected(t,e){this.invokeControllerMethod(`${e}TargetDisconnected`,t)}outletConnected(t,e,r){this.invokeControllerMethod(`${u(r)}OutletConnected`,t,e)}outletDisconnected(t,e,r){this.invokeControllerMethod(`${u(r)}OutletDisconnected`,t,e)}invokeControllerMethod(t,...e){const r=this.controller;"function"==typeof r[t]&&r[t](...e)}}function D(t){return function(t,e){const r=$(t),n=function(t,e){return F(e).reduce(((r,n)=>{const i=function(t,e,r){const n=Object.getOwnPropertyDescriptor(t,r);if(!n||!("value"in n)){const t=Object.getOwnPropertyDescriptor(e,r).value;return n&&(t.get=n.get||t.get,t.set=n.set||t.set),t}}(t,e,n);return i&&Object.assign(r,{[n]:i}),r}),{})}(t.prototype,e);return Object.defineProperties(r.prototype,n),r}(t,function(t){const e=M(t,"blessings");return e.reduce(((e,r)=>{const n=r(t);for(const t in n){const r=e[t]||{};e[t]=Object.assign(r,n[t])}return e}),{})}(t))}const F="function"==typeof Object.getOwnPropertySymbols?t=>[...Object.getOwnPropertyNames(t),...Object.getOwnPropertySymbols(t)]:Object.getOwnPropertyNames,$=(()=>{function t(t){function e(){return Reflect.construct(t,arguments,new.target)}return e.prototype=Object.create(t.prototype,{constructor:{value:e}}),Reflect.setPrototypeOf(e,t),e}try{return function(){const e=t((function(){this.a.call(this)}));e.prototype.a=function(){},new e}(),t}catch(t){return t=>class extends t{}}})();class H{constructor(t,e){this.application=t,this.definition=function(t){return{identifier:t.identifier,controllerConstructor:D(t.controllerConstructor)}}(e),this.contextsByScope=new WeakMap,this.connectedContexts=new Set}get identifier(){return this.definition.identifier}get controllerConstructor(){return this.definition.controllerConstructor}get contexts(){return Array.from(this.connectedContexts)}connectContextForScope(t){const e=this.fetchContextForScope(t);this.connectedContexts.add(e),e.connect()}disconnectContextForScope(t){const e=this.contextsByScope.get(t);e&&(this.connectedContexts.delete(e),e.disconnect())}fetchContextForScope(t){let e=this.contextsByScope.get(t);return e||(e=new R(this,t),this.contextsByScope.set(t,e)),e}}class z{constructor(t){this.scope=t}has(t){return this.data.has(this.getDataKey(t))}get(t){return this.getAll(t)[0]}getAll(t){const e=this.data.get(this.getDataKey(t))||"";return e.match(/[^\s]+/g)||[]}getAttributeName(t){return this.data.getAttributeNameForKey(this.getDataKey(t))}getDataKey(t){return`${t}-class`}get data(){return this.scope.data}}class V{constructor(t){this.scope=t}get element(){return this.scope.element}get identifier(){return this.scope.identifier}get(t){const e=this.getAttributeNameForKey(t);return this.element.getAttribute(e)}set(t,e){const r=this.getAttributeNameForKey(t);return this.element.setAttribute(r,e),this.get(t)}has(t){const e=this.getAttributeNameForKey(t);return this.element.hasAttribute(e)}delete(t){if(this.has(t)){const e=this.getAttributeNameForKey(t);return this.element.removeAttribute(e),!0}return!1}getAttributeNameForKey(t){return`data-${this.identifier}-${f(t)}`}}class U{constructor(t){this.warnedKeysByObject=new WeakMap,this.logger=t}warn(t,e,r){let n=this.warnedKeysByObject.get(t);n||(n=new Set,this.warnedKeysByObject.set(t,n)),n.has(e)||(n.add(e),this.logger.warn(r,t))}}function W(t,e){return`[${t}~="${e}"]`}class K{constructor(t){this.scope=t}get element(){return this.scope.element}get identifier(){return this.scope.identifier}get schema(){return this.scope.schema}has(t){return null!=this.find(t)}find(...t){return t.reduce(((t,e)=>t||this.findTarget(e)||this.findLegacyTarget(e)),void 0)}findAll(...t){return t.reduce(((t,e)=>[...t,...this.findAllTargets(e),...this.findAllLegacyTargets(e)]),[])}findTarget(t){const e=this.getSelectorForTargetName(t);return this.scope.findElement(e)}findAllTargets(t){const e=this.getSelectorForTargetName(t);return this.scope.findAllElements(e)}getSelectorForTargetName(t){return W(this.schema.targetAttributeForScope(this.identifier),t)}findLegacyTarget(t){const e=this.getLegacySelectorForTargetName(t);return this.deprecate(this.scope.findElement(e),t)}findAllLegacyTargets(t){const e=this.getLegacySelectorForTargetName(t);return this.scope.findAllElements(e).map((e=>this.deprecate(e,t)))}getLegacySelectorForTargetName(t){const e=`${this.identifier}.${t}`;return W(this.schema.targetAttribute,e)}deprecate(t,e){if(t){const{identifier:r}=this,n=this.schema.targetAttribute,i=this.schema.targetAttributeForScope(r);this.guide.warn(t,`target:${e}`,`Please replace ${n}="${r}.${e}" with ${i}="${e}". The ${n} attribute is deprecated and will be removed in a future version of Stimulus.`)}return t}get guide(){return this.scope.guide}}class G{constructor(t,e){this.scope=t,this.controllerElement=e}
25976get element(){return this.scope.element}get identifier(){return this.scope.identifier}get schema(){return this.scope.schema}has(t){return null!=this.find(t)}find(...t){return t.reduce(((t,e)=>t||this.findOutlet(e)),void 0)}findAll(...t){return t.reduce(((t,e)=>[...t,...this.findAllOutlets(e)]),[])}getSelectorForOutletName(t){const e=this.schema.outletAttributeForScope(this.identifier,t);return this.controllerElement.getAttribute(e)}findOutlet(t){const e=this.getSelectorForOutletName(t);if(e)return this.findElement(e,t)}findAllOutlets(t){const e=this.getSelectorForOutletName(t);return e?this.findAllElements(e,t):[]}findElement(t,e){return this.scope.queryElements(t).filter((r=>this.matchesElement(r,t,e)))[0]}findAllElements(t,e){return this.scope.queryElements(t).filter((r=>this.matchesElement(r,t,e)))}matchesElement(t,e,r){const n=t.getAttribute(this.scope.schema.controllerAttribute)||"";return t.matches(e)&&n.split(" ").includes(r)}}class q{constructor(t,e,r,n){this.targets=new K(this),this.classes=new z(this),this.data=new V(this),this.containsElement=t=>t.closest(this.controllerSelector)===this.element,this.schema=t,this.element=e,this.identifier=r,this.guide=new U(n),this.outlets=new G(this.documentScope,e)}findElement(t){return this.element.matches(t)?this.element:this.queryElements(t).find(this.containsElement)}findAllElements(t){return[...this.element.matches(t)?[this.element]:[],...this.queryElements(t).filter(this.containsElement)]}queryElements(t){return Array.from(this.element.querySelectorAll(t))}get controllerSelector(){return W(this.schema.controllerAttribute,this.identifier)}get isDocumentScope(){return this.element===document.documentElement}get documentScope(){return this.isDocumentScope?this:new q(this.schema,document.documentElement,this.identifier,this.guide.logger)}}class J{constructor(t,e,r){this.element=t,this.schema=e,this.delegate=r,this.valueListObserver=new C(this.element,this.controllerAttribute,this),this.scopesByIdentifierByElement=new WeakMap,this.scopeReferenceCounts=new WeakMap}start(){this.valueListObserver.start()}stop(){this.valueListObserver.stop()}get controllerAttribute(){return this.schema.controllerAttribute}parseValueForToken(t){const{element:e,content:r}=t;return this.parseValueForElementAndIdentifier(e,r)}parseValueForElementAndIdentifier(t,e){const r=this.fetchScopesByIdentifierForElement(t);let n=r.get(e);return n||(n=this.delegate.createScopeForElementAndIdentifier(t,e),r.set(e,n)),n}elementMatchedValue(t,e){const r=(this.scopeReferenceCounts.get(e)||0)+1;this.scopeReferenceCounts.set(e,r),1==r&&this.delegate.scopeConnected(e)}elementUnmatchedValue(t,e){const r=this.scopeReferenceCounts.get(e);r&&(this.scopeReferenceCounts.set(e,r-1),1==r&&this.delegate.scopeDisconnected(e))}fetchScopesByIdentifierForElement(t){let e=this.scopesByIdentifierByElement.get(t);return e||(e=new Map,this.scopesByIdentifierByElement.set(t,e)),e}}class Y{constructor(t){this.application=t,this.scopeObserver=new J(this.element,this.schema,this),this.scopesByIdentifier=new E,this.modulesByIdentifier=new Map}get element(){return this.application.element}get schema(){return this.application.schema}get logger(){return this.application.logger}get controllerAttribute(){return this.schema.controllerAttribute}get modules(){return Array.from(this.modulesByIdentifier.values())}get contexts(){return this.modules.reduce(((t,e)=>t.concat(e.contexts)),[])}start(){this.scopeObserver.start()}stop(){this.scopeObserver.stop()}loadDefinition(t){this.unloadIdentifier(t.identifier);const e=new H(this.application,t);this.connectModule(e);const r=t.controllerConstructor.afterLoad;r&&r.call(t.controllerConstructor,t.identifier,this.application)}unloadIdentifier(t){const e=this.modulesByIdentifier.get(t);e&&this.disconnectModule(e)}getContextForElementAndIdentifier(t,e){const r=this.modulesByIdentifier.get(e);if(r)return r.contexts.find((e=>e.element==t))}proposeToConnectScopeForElementAndIdentifier(t,e){const r=this.scopeObserver.parseValueForElementAndIdentifier(t,e);r?this.scopeObserver.elementMatchedValue(r.element,r):console.error(`Couldn't find or create scope for identifier: "${e}" and element:`,t)}handleError(t,e,r){this.application.handleError(t,e,r)}createScopeForElementAndIdentifier(t,e){return new q(this.schema,t,e,this.logger)}scopeConnected(t){this.scopesByIdentifier.add(t.identifier,t);const e=this.modulesByIdentifier.get(t.identifier);e&&e.connectContextForScope(t)}scopeDisconnected(t){this.scopesByIdentifier.delete(t.identifier,t);const e=this.modulesByIdentifier.get(t.identifier);e&&e.disconnectContextForScope(t)}
25976connectModule(t){this.modulesByIdentifier.set(t.identifier,t);this.scopesByIdentifier.getValuesForKey(t.identifier).forEach((e=>t.connectContextForScope(e)))}disconnectModule(t){this.modulesByIdentifier.delete(t.identifier);this.scopesByIdentifier.getValuesForKey(t.identifier).forEach((e=>t.disconnectContextForScope(e)))}}const X={controllerAttribute:"data-controller",actionAttribute:"data-action",targetAttribute:"data-target",targetAttributeForScope:t=>`data-${t}-target`,outletAttributeForScope:(t,e)=>`data-${t}-${e}-outlet`,keyMappings:Object.assign(Object.assign({enter:"Enter",tab:"Tab",esc:"Escape",space:" ",up:"ArrowUp",down:"ArrowDown",left:"ArrowLeft",right:"ArrowRight",home:"Home",end:"End",page_up:"PageUp",page_down:"PageDown"},Q("abcdefghijklmnopqrstuvwxyz".split("").map((t=>[t,t])))),Q("0123456789".split("").map((t=>[t,t]))))};function Q(t){return t.reduce(((t,[e,r])=>Object.assign(Object.assign({},t),{[e]:r})),{})}class Z{constructor(t=document.documentElement,e=X){this.logger=console,this.debug=!1,this.logDebugActivity=(t,e,r={})=>{this.debug&&this.logFormattedMessage(t,e,r)},this.element=t,this.schema=e,this.dispatcher=new i(this),this.router=new Y(this),this.actionDescriptorFilters=Object.assign({},o)}static start(t,e){const r=new this(t,e);return r.start(),r}async start(){await new Promise((t=>{"loading"==document.readyState?document.addEventListener("DOMContentLoaded",(()=>t())):t()})),this.logDebugActivity("application","starting"),this.dispatcher.start(),this.router.start(),this.logDebugActivity("application","start")}stop(){this.logDebugActivity("application","stopping"),this.dispatcher.stop(),this.router.stop(),this.logDebugActivity("application","stop")}register(t,e){this.load({identifier:t,controllerConstructor:e})}registerActionOption(t,e){this.actionDescriptorFilters[t]=e}load(t,...e){(Array.isArray(t)?t:[t,...e]).forEach((t=>{t.controllerConstructor.shouldLoad&&this.router.loadDefinition(t)}))}unload(t,...e){(Array.isArray(t)?t:[t,...e]).forEach((t=>this.router.unloadIdentifier(t)))}get controllers(){return this.router.contexts.map((t=>t.controller))}getControllerForElementAndIdentifier(t,e){const r=this.router.getContextForElementAndIdentifier(t,e);return r?r.controller:null}handleError(t,e,r){var n;this.logger.error("%s\n\n%o\n\n%o",e,t,r),null===(n=window.onerror)||void 0===n||n.call(window,e,"",0,0,t)}logFormattedMessage(t,e,r={}){r=Object.assign({application:this},r),this.logger.groupCollapsed(`${t} #${e}`),this.logger.log("details:",Object.assign({},r)),this.logger.groupEnd()}}function tt(t,e,r){return t.application.getControllerForElementAndIdentifier(e,r)}function et(t,e,r){let n=tt(t,e,r);return n||(t.application.router.proposeToConnectScopeForElementAndIdentifier(e,r),n=tt(t,e,r),n||void 0)}function rt([t,e],r){return function(t){const{token:e,typeDefinition:r}=t,n=`${f(e)}-value`,i=function(t){const{controller:e,token:r,typeDefinition:n}=t,i={controller:e,token:r,typeObject:n},o=function(t){const{controller:e,token:r,typeObject:n}=t,i=h(n.type),o=h(n.default),s=i&&o,a=i&&!o,c=!i&&o,u=nt(n.type),l=it(t.typeObject.default);if(a)return u;if(c)return l;if(u!==l){throw new Error(`The specified default value for the Stimulus Value "${e?`${e}.${r}`:r}" must match the defined type "${u}". The provided default value of "${n.default}" is of type "${l}".`)}if(s)return u}(i),s=it(n),a=nt(n),c=o||s||a;if(c)return c;const u=e?`${e}.${n}`:r;throw new Error(`Unknown value type "${u}" for "${r}" value`)}(t);return{type:i,key:n,name:c(n),get defaultValue(){return function(t){const e=nt(t);if(e)return ot[e];const r=p(t,"default"),n=p(t,"type"),i=t;if(r)return i.default;if(n){const{type:t}=i,e=nt(t);if(e)return ot[e]}return t}(r)},get hasCustomDefaultValue(){return void 0!==it(r)},reader:st[i],writer:at[i]||at.default}}({controller:r,token:t,typeDefinition:e})}function nt(t){switch(t){case Array:return"array";case Boolean:return"boolean";case Number:return"number";case Object:return"object";case String:return"string"}}function it(t){switch(typeof t){case"boolean":return"boolean";case"number":return"number";case"string":return"string"}return Array.isArray(t)?"array":"[object Object]"===Object.prototype.toString.call(t)?"object":void 0}const ot={get array(){return[]},boolean:!1,number:0,get object(){return{}},string:""},st={array(t){const e=JSON.parse(t);if(!Array.isArray(e))throw new TypeError(`expected value of type "array" but instead got value "${t}" of type "${it(e)}"`);return e},boolean:t=>!("0"==t||"false"==String(t).toLowerCase()),number:t=>Number(t.replace(/_/g,"")),object(t){const e=JSON.parse(t);if(null===e||"object"!=typeof e||Array.isArray(e))throw new TypeError(`expected value of type "object" but instead got value "${t}" of type "${it(e)}"`);return e},string:t=>t},at={default:function(t){return`${t}`},array:ct,object:ct};function ct(t){return JSON.stringify(t)}class ut{constructor(t){this.context=t}static get shouldLoad(){return!0}static afterLoad(t,e){}get application(){return this.context.application}get scope(){return this.context.scope}
25976get element(){return this.scope.element}get identifier(){return this.scope.identifier}get targets(){return this.scope.targets}get outlets(){return this.scope.outlets}get classes(){return this.scope.classes}get data(){return this.scope.data}initialize(){}connect(){}disconnect(){}dispatch(t,{target:e=this.element,detail:r={},prefix:n=this.identifier,bubbles:i=!0,cancelable:o=!0}={}){const s=new CustomEvent(n?`${n}:${t}`:t,{detail:r,bubbles:i,cancelable:o});return e.dispatchEvent(s),s}}ut.blessings=[function(t){return M(t,"classes").reduce(((t,e)=>{return Object.assign(t,(r=e,{[`${r}Class`]:{get(){const{classes:t}=this;if(t.has(r))return t.get(r);{const e=t.getAttributeName(r);throw new Error(`Missing attribute "${e}"`)}}},[`${r}Classes`]:{get(){return this.classes.getAll(r)}},[`has${l(r)}Class`]:{get(){return this.classes.has(r)}}}));var r}),{})},function(t){return M(t,"targets").reduce(((t,e)=>{return Object.assign(t,(r=e,{[`${r}Target`]:{get(){const t=this.targets.find(r);if(t)return t;throw new Error(`Missing target element "${r}" for "${this.identifier}" controller`)}},[`${r}Targets`]:{get(){return this.targets.findAll(r)}},[`has${l(r)}Target`]:{get(){return this.targets.has(r)}}}));var r}),{})},function(t){const e=L(t,"values"),r={valueDescriptorMap:{get(){return e.reduce(((t,e)=>{const r=rt(e,this.identifier),n=this.data.getAttributeNameForKey(r.key);return Object.assign(t,{[n]:r})}),{})}}};return e.reduce(((t,e)=>Object.assign(t,function(t,e){const r=rt(t,e),{key:n,name:i,reader:o,writer:s}=r;return{[i]:{get(){const t=this.data.get(n);return null!==t?o(t):r.defaultValue},set(t){void 0===t?this.data.delete(n):this.data.set(n,s(t))}},[`has${l(i)}`]:{get(){return this.data.has(n)||r.hasCustomDefaultValue}}}}(e))),r)},function(t){return M(t,"outlets").reduce(((t,e)=>Object.assign(t,function(t){const e=u(t);return{[`${e}Outlet`]:{get(){const e=this.outlets.find(t),r=this.outlets.getSelectorForOutletName(t);if(e){const r=et(this,e,t);if(r)return r;throw new Error(`The provided outlet element is missing an outlet controller "${t}" instance for host controller "${this.identifier}"`)}throw new Error(`Missing outlet element "${t}" for host controller "${this.identifier}". Stimulus couldn't find a matching outlet element using selector "${r}".`)}},[`${e}Outlets`]:{get(){const e=this.outlets.findAll(t);return e.length>0?e.map((e=>{const r=et(this,e,t);if(r)return r;console.warn(`The provided outlet element is missing an outlet controller "${t}" instance for host controller "${this.identifier}"`,e)})).filter((t=>t)):[]}},[`${e}OutletElement`]:{get(){const e=this.outlets.find(t),r=this.outlets.getSelectorForOutletName(t);if(e)return e;throw new Error(`Missing outlet element "${t}" for host controller "${this.identifier}". Stimulus couldn't find a matching outlet element using selector "${r}".`)}},[`${e}OutletElements`]:{get(){return this.outlets.findAll(t)}},[`has${l(e)}Outlet`]:{get(){return this.outlets.has(t)}}}}(e))),{})}],ut.targets=[],ut.outlets=[],ut.values={}},6794:(t,e,r)=>{"use strict";var n=r(659),i=r(4102),o=r(1031);t.exports=function(t,e){if(n(t),i(e)&&e.constructor===t)return e;var r=o.f(t);return(0,r.resolve)(e),r.promise}},6805:(t,e,r)=>{"use strict";var n=r(8810),i=r(2128),o=r(3037).f;n({target:"Object",stat:!0,forced:Object.defineProperties!==o,sham:!i},{defineProperties:o})},6871:(t,e,r)=>{"use strict";var n=r(7928),i=r(5719);t.exports=n?{}.toString:function(){return"[object "+i(this)+"]"}},6891:(t,e,r)=>{"use strict";var n=r(2763),i=r(2675),o=r(8052).String;t.exports=!!Object.getOwnPropertySymbols&&!i((function(){var t=Symbol("symbol detection");return!o(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&n&&n<41}))},6893:(t,e,r)=>{"use strict";var n=r(2128),i=r(2537).MISSED_STICKY,o=r(2748),s=r(6038),a=r(6369).get,c=RegExp.prototype,u=TypeError;n&&i&&s(c,"sticky",{configurable:!0,get:function(){if(this!==c){if("RegExp"===o(this))return!!a(this).sticky;throw new u("Incompatible receiver, RegExp required")}}})},6973:(t,e,r)=>{"use strict";
25976function n(t,e){return n=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},n(t,e)}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&n(t,e)}r.d(e,{A:()=>i})},6977:(t,e,r)=>{"use strict";var n=r(8052),i=r(2128),o=Object.getOwnPropertyDescriptor;t.exports=function(t){if(!i)return n[t];var e=o(n,t);return e&&e.value}},6985:(t,e,r)=>{"use strict";var n=r(8810),i=r(6891),o=r(2675),s=r(9073),a=r(8649);n({target:"Object",stat:!0,forced:!i||o((function(){s.f(1)}))},{getOwnPropertySymbols:function(t){var e=s.f;return e?e(a(t)):[]}})},6990:(t,e,r)=>{var n=r(7187),i=r(1029),o=r(8704),s=n?n.toStringTag:void 0;t.exports=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":s&&s in Object(t)?i(t):o(t)}},7009:t=>{"use strict";t.exports="undefined"!=typeof Reflect&&Reflect&&Reflect.apply},7032:(t,e,r)=>{"use strict";var n=r(8052),i=r(5034),o=r(321),s=r(2360),a=r(2718),c=r(4175),u=r(6627),l=r(6007),f=r(2763),h=i&&i.prototype,p=c("species"),d=!1,v=o(n.PromiseRejectionEvent),g=s("Promise",(function(){var t=a(i),e=t!==String(i);if(!e&&66===f)return!0;if(l&&(!h.catch||!h.finally))return!0;if(!f||f<51||!/native code/.test(t)){var r=new i((function(t){t(1)})),n=function(t){t((function(){}),(function(){}))};if((r.constructor={})[p]=n,!(d=r.then((function(){}))instanceof n))return!0}return!(e||"BROWSER"!==u&&"DENO"!==u||v)}));t.exports={CONSTRUCTOR:g,REJECTION_EVENT:v,SUBCLASSING:d}},7066:(t,e,r)=>{var n=r(1158),i=/^\s+/;t.exports=function(t){return t?t.slice(0,n(t)+1).replace(i,""):t}},7073:(t,e,r)=>{"use strict";var n=r(3163);t.exports=n("document","documentElement")},7132:(t,e,r)=>{"use strict";var n=r(6005).f;t.exports=function(t,e,r){r in t||n(t,r,{configurable:!0,get:function(){return e[r]},set:function(t){e[r]=t}})}},7140:(t,e,r)=>{"use strict";var n=r(4451)("span").classList,i=n&&n.constructor&&n.constructor.prototype;t.exports=i===Object.prototype?void 0:i},7156:(t,e,r)=>{"use strict";var n=r(2484);t.exports=n(1..valueOf)},7180:t=>{"use strict";t.exports=RangeError},7183:(t,e,r)=>{var n=r(5194),i="object"==typeof self&&self&&self.Object===Object&&self,o=n||i||Function("return this")();t.exports=o},7187:(t,e,r)=>{var n=r(7183).Symbol;t.exports=n},7196:(t,e,r)=>{"use strict";var n=r(469),i=r(6757),o=r(1530),s=r(9630);t.exports=function(t){if(t.length<1||"function"!=typeof t[0])throw new i("a function is required");return s(n,o,t)}},7256:t=>{"use strict";t.exports=Math.abs},7267:(t,e,r)=>{"use strict";var n=r(5719),i=String;t.exports=function(t){if("Symbol"===n(t))throw new TypeError("Cannot convert a Symbol value to a string");return i(t)}},7270:(t,e,r)=>{"use strict";var n=r(3597).IteratorPrototype,i=r(3844),o=r(5936),s=r(8819),a=r(6609),c=function(){return this};t.exports=function(t,e,r,u){var l=e+" Iterator";return t.prototype=i(n,{next:o(+!u,r)}),s(t,l,!1,!0),a[l]=c,t}},7372:(t,e,r)=>{"use strict";var n=r(8810),i=r(2961).filter;n({target:"Array",proto:!0,forced:!r(2321)("filter")},{filter:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}})},7389:(t,e,r)=>{"use strict";var n=r(2484),i=Error,o=n("".replace),s=String(new i("zxcasd").stack),a=/\n\s*at [^:]*:[^\n]*/,c=a.test(s);t.exports=function(t,e){if(c&&"string"==typeof t&&!i.prepareStackTrace)for(;e--;)t=o(t,a,"");return t}},7391:(t,e,r)=>{"use strict";var n=r(4049);t.exports=function(t){var e=+t;return e!=e||0===e?0:n(e)}},7431:(t,e,r)=>{"use strict";function n(t,e,r,n,i,o,s){try{var a=t[o](s),c=a.value}catch(t){return void r(t)}a.done?e(c):Promise.resolve(c).then(n,i)}function i(t){return function(){var e=this,r=arguments;return new Promise((function(i,o){var s=t.apply(e,r);function a(t){n(s,i,o,a,c,"next",t)}function c(t){n(s,i,o,a,c,"throw",t)}a(void 0)}))}}r.d(e,{A:()=>i})},7453:(t,e,r)=>{var n,i;!function(o){"use strict";n=[r(5455),r(8179),r(3743),r(5511)],i=function(t,e,r,n){return function(t,e,r,n,i){var o=t.console,s=t.jQuery,a=function(){},c=0,u={};function l(t,e){var r=n.getQueryElement(t);if(r){this.element=r,s&&(this.$element=s(this.element)),this.options=n.extend({},this.constructor.defaults),this.option(e);var i=++c;this.element.outlayerGUID=i,u[i]=this,this._create(),this._getOption("initLayout")&&this.layout()}else o&&o.error("Bad element for "+this.constructor.namespace+": "+(r||t))}l.namespace="outlayer",l.Item=i,l.defaults={containerStyle:{position:"relative"},initLayout:!0,originLeft:!0,originTop:!0,resize:!0,resizeContainer:!0,transitionDuration:"0.4s",hiddenStyle:{opacity:0,transform:"scale(0.001)"},visibleStyle:{opacity:1,transform:"scale(1)"}};var f=l.prototype;function h(t){function e(){t.apply(this,arguments)}return e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e}n.extend(f,e.prototype),f.option=function(t){n.extend(this.options,t)},f._getOption=function(t){var e=this.constructor.compatOptions[t];return e&&void 0!==this.options[e]?this.options[e]:this.options[t]},l.compatOptions={initLayout:"isInitLayout",horizontal:"isHorizontal",layoutInstant:"isLayoutInstant",originLeft:"isOriginLeft",originTop:"isOriginTop",resize:"isResizeBound",resizeContainer:"isResizingContainer"},f._create=function(){this.reloadItems(),this.stamps=[],this.stamp(this.options.stamp),n.extend(this.element.style,this.options.containerStyle),this._getOption("resize")&&this.bindResize()},f.reloadItems=function(){this.items=this._itemize(this.element.children)},f._itemize=function(t){for(var e=this._filterFindItemElements(t),r=this.constructor.Item,n=[],i=0;i<e.length;i++){var o=new r(e[i],this);n.push(o)}return n},f._filterFindItemElements=function(t){return n.filterFindElements(t,this.options.itemSelector)},f.getItemElements=function(){return this.items.map((function(t){return t.element}))},f.layout=function(){this._resetLayout(),this._manageStamps();var t=this._getOption("layoutInstant"),e=void 0!==t?t:!this._isLayoutInited;this.layoutItems(this.items,e),this._isLayoutInited=!0}
vendor: 4,974 bytes, line 25976
25976,f._init=f.layout,f._resetLayout=function(){this.getSize()},f.getSize=function(){this.size=r(this.element)},f._getMeasurement=function(t,e){var n,i=this.options[t];i?("string"==typeof i?n=this.element.querySelector(i):i instanceof HTMLElement&&(n=i),this[t]=n?r(n)[e]:i):this[t]=0},f.layoutItems=function(t,e){t=this._getItemsForLayout(t),this._layoutItems(t,e),this._postLayout()},f._getItemsForLayout=function(t){return t.filter((function(t){return!t.isIgnored}))},f._layoutItems=function(t,e){if(this._emitCompleteOnItems("layout",t),t&&t.length){var r=[];t.forEach((function(t){var n=this._getItemLayoutPosition(t);n.item=t,n.isInstant=e||t.isLayoutInstant,r.push(n)}),this),this._processLayoutQueue(r)}},f._getItemLayoutPosition=function(){return{x:0,y:0}},f._processLayoutQueue=function(t){this.updateStagger(),t.forEach((function(t,e){this._positionItem(t.item,t.x,t.y,t.isInstant,e)}),this)},f.updateStagger=function(){var t=this.options.stagger;if(null!=t)return this.stagger=d(t),this.stagger;this.stagger=0},f._positionItem=function(t,e,r,n,i){n?t.goTo(e,r):(t.stagger(i*this.stagger),t.moveTo(e,r))},f._postLayout=function(){this.resizeContainer()},f.resizeContainer=function(){if(this._getOption("resizeContainer")){var t=this._getContainerSize();t&&(this._setContainerMeasure(t.width,!0),this._setContainerMeasure(t.height,!1))}},f._getContainerSize=a,f._setContainerMeasure=function(t,e){if(void 0!==t){var r=this.size;r.isBorderBox&&(t+=e?r.paddingLeft+r.paddingRight+r.borderLeftWidth+r.borderRightWidth:r.paddingBottom+r.paddingTop+r.borderTopWidth+r.borderBottomWidth),t=Math.max(t,0),this.element.style[e?"width":"height"]=t+"px"}},f._emitCompleteOnItems=function(t,e){var r=this;function n(){r.dispatchEvent(t+"Complete",null,[e])}var i=e.length;if(e&&i){var o=0;e.forEach((function(e){e.once(t,s)}))}else n();function s(){++o==i&&n()}},f.dispatchEvent=function(t,e,r){var n=e?[e].concat(r):r;if(this.emitEvent(t,n),s)if(this.$element=this.$element||s(this.element),e){var i=s.Event(e);i.type=t,this.$element.trigger(i,r)}else this.$element.trigger(t,r)},f.ignore=function(t){var e=this.getItem(t);e&&(e.isIgnored=!0)},f.unignore=function(t){var e=this.getItem(t);e&&delete e.isIgnored},f.stamp=function(t){(t=this._find(t))&&(this.stamps=this.stamps.concat(t),t.forEach(this.ignore,this))},f.unstamp=function(t){(t=this._find(t))&&t.forEach((function(t){n.removeFrom(this.stamps,t),this.unignore(t)}),this)},f._find=function(t){if(t)return"string"==typeof t&&(t=this.element.querySelectorAll(t)),t=n.makeArray(t)},f._manageStamps=function(){this.stamps&&this.stamps.length&&(this._getBoundingRect(),this.stamps.forEach(this._manageStamp,this))},f._getBoundingRect=function(){var t=this.element.getBoundingClientRect(),e=this.size;this._boundingRect={left:t.left+e.paddingLeft+e.borderLeftWidth,top:t.top+e.paddingTop+e.borderTopWidth,right:t.right-(e.paddingRight+e.borderRightWidth),bottom:t.bottom-(e.paddingBottom+e.borderBottomWidth)}},f._manageStamp=a,f._getElementOffset=function(t){var e=t.getBoundingClientRect(),n=this._boundingRect,i=r(t);return{left:e.left-n.left-i.marginLeft,top:e.top-n.top-i.marginTop,right:n.right-e.right-i.marginRight,bottom:n.bottom-e.bottom-i.marginBottom}},f.handleEvent=n.handleEvent,f.bindResize=function(){t.addEventListener("resize",this),this.isResizeBound=!0},f.unbindResize=function(){t.removeEventListener("resize",this),this.isResizeBound=!1},f.onresize=function(){this.resize()},n.debounceMethod(l,"onresize",100),f.resize=function(){this.isResizeBound&&this.needsResizeLayout()&&this.layout()},f.needsResizeLayout=function(){var t=r(this.element);return this.size&&t&&t.innerWidth!==this.size.innerWidth},f.addItems=function(t){var e=this._itemize(t);return e.length&&(this.items=this.items.concat(e)),e},f.appended=function(t){var e=this.addItems(t);e.length&&(this.layoutItems(e,!0),this.reveal(e))},f.prepended=function(t){var e=this._itemize(t);if(e.length){var r=this.items.slice(0);this.items=e.concat(r),this._resetLayout(),this._manageStamps(),this.layoutItems(e,!0),this.reveal(e),this.layoutItems(r)}},f.reveal=function(t){if(this._emitCompleteOnItems("reveal",t),t&&t.length){var e=this.updateStagger();t.forEach((function(t,r){t.stagger(r*e),t.reveal()}))}},f.hide=function(t){if(this._emitCompleteOnItems("hide",t),t&&t.length){var e=this.updateStagger();t.forEach((function(t,r){t.stagger(r*e),t.hide()}))}},f.revealItemElements=function(t){var e=this.getItems(t);this.reveal(e)},f.hideItemElements=function(t){var e=this.getItems(t);this.hide(e)},f.getItem=function(t){for(var e=0;e<this.items.length;e++){var r=this.items[e];if(r.element==t)return r}},f.getItems=function(t){t=n.makeArray(t);var e=[];return t.forEach((function(t){var r=this.getItem(t);r&&e.push(r)}),this),e},f.remove=function(t){var e=this.getItems(t);this._emitCompleteOnItems("remove",e),e&&e.length&&e.forEach((function(t){t.remove(),n.removeFrom(this.items,t)}),this)},f.destroy=function(){var t=this.element.style;
25976t.height="",t.position="",t.width="",this.items.forEach((function(t){t.destroy()})),this.unbindResize();var e=this.element.outlayerGUID;delete u[e],delete this.element.outlayerGUID,s&&s.removeData(this.element,this.constructor.namespace)},l.data=function(t){var e=(t=n.getQueryElement(t))&&t.outlayerGUID;return e&&u[e]},l.create=function(t,e){var r=h(l);return r.defaults=n.extend({},l.defaults),n.extend(r.defaults,e),r.compatOptions=n.extend({},l.compatOptions),r.namespace=t,r.data=l.data,r.Item=h(i),n.htmlInit(r,t),s&&s.bridget&&s.bridget(t,r),r};var p={ms:1,s:1e3};function d(t){if("number"==typeof t)return t;var e=t.match(/(^\d*\.?\d*)(\w*)/),r=e&&e[1],n=e&&e[2];return r.length?(r=parseFloat(r))*(p[n]||1):0}return l.Item=i,l}(o,t,e,r,n)}.apply(e,n),void 0===i||(t.exports=i)}(window)},7476:(t,e,r)=>{"use strict";var n=r(8810),i=r(8649),o=r(4700);n({target:"Object",stat:!0,forced:r(2675)((function(){o(1)}))},{keys:function(t){return o(i(t))}})},7517:(t,e,r)=>{"use strict";var n=r(3291);t.exports=/ipad|iphone|ipod/i.test(n)&&"undefined"!=typeof Pebble},7560:(t,e,r)=>{"use strict";var n=r(1955).charAt,i=r(7267),o=r(6369),s=r(8676),a=r(381),c="String Iterator",u=o.set,l=o.getterFor(c);s(String,"String",(function(t){u(this,{type:c,string:i(t),index:0})}),(function(){var t,e=l(this),r=e.string,i=e.index;return i>=r.length?a(void 0,!0):(t=n(r,i),e.index+=t.length,a(t,!1))}))},7567:(t,e,r)=>{"use strict";var n=r(8810),i=r(2484),o=r(3259),s=r(4834),a=r(7267),c=r(8656),u=i("".indexOf);n({target:"String",proto:!0,forced:!c("includes")},{includes:function(t){return!!~u(a(s(this)),a(o(t)),arguments.length>1?arguments[1]:void 0)}})},7575:(t,e,r)=>{"use strict";r(3765),r(930),r(9200),r(7754),r(6985)},7582:(t,e,r)=>{"use strict";var n=r(9090),i=r(2170),o=r(714);t.exports=n?function(t){return n(t)}:i?function(t){if(!t||"object"!=typeof t&&"function"!=typeof t)throw new TypeError("getProto: not an object");return i(t)}:o?function(t){return o(t)}:null},7585:(t,e,r)=>{"use strict";var n=r(9017),i={arguments:"an arguments object",array:"an array",boolean:"a boolean",buffer:"a buffer",date:"a date",error:"an error",float32array:"a float32array",float64array:"a float64array",function:"a function",int16array:"an int16array",int32array:"an int32array",int8array:"an int8array",map:"a Map",null:"null",number:"a number",object:"an object",regexp:"a regular expression",set:"a Set",string:"a string",symbol:"a symbol",uint16array:"an uint16array",uint32array:"an uint32array",uint8array:"an uint8array",uint8clampedarray:"an uint8clampedarray",undefined:"undefined",weakmap:"a WeakMap",weakset:"a WeakSet"};function o(t){return i[n(t)]}o.types=i,o.typeOf=n,t.exports=o},7642:(t,e,r)=>{"use strict";var n=r(8810),i=r(2961).some;n({target:"Array",proto:!0,forced:!r(8754)("some")},{some:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}})},7652:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>Y});r(8037);var n,i=r(2561),o=r(6710),s=r(3008),a=r(3134),c=r(6973),u=(r(4958),r(7372),r(5249),r(2614),r(4707),r(3348),r(5050),r(562),r(6108),r(6160),r(8021),r(3376),r(9585),r(5321),r(1759),r(7560),r(3406),r(3544),r(2901),r(6782)),l=[],f="ResizeObserver loop completed with undelivered notifications.";!function(t){t.BORDER_BOX="border-box",t.CONTENT_BOX="content-box",t.DEVICE_PIXEL_CONTENT_BOX="device-pixel-content-box"}(n||(n={}));var h,p=function(t){return Object.freeze(t)},d=function(t,e){this.inlineSize=t,this.blockSize=e,p(this)},v=function(){function t(t,e,r,n){return this.x=t,this.y=e,this.width=r,this.height=n,this.top=this.y,this.left=this.x,this.bottom=this.top+this.height,this.right=this.left+this.width,p(this)}return t.prototype.toJSON=function(){var t=this;return{x:t.x,y:t.y,top:t.top,right:t.right,bottom:t.bottom,left:t.left,width:t.width,height:t.height}},t.fromRect=function(e){return new t(e.x,e.y,e.width,e.height)},t}(),g=function(t){return t instanceof SVGElement&&"getBBox"in t},m=function(t){if(g(t)){var e=t.getBBox(),r=e.width,n=e.height;return!r&&!n}var i=t,o=i.offsetWidth,s=i.offsetHeight;return!(o||s||t.getClientRects().length)},y=function(t){var e;if(t instanceof Element)return!0;var r=null===(e=null==t?void 0:t.ownerDocument)||void 0===e?void 0:e.defaultView;return!!(r&&t instanceof r.Element)},b="undefined"!=typeof window?window:{},w=new WeakMap,x=/auto|scroll/,S=/^tb|vertical/,A=/msie|trident/i.test(b.navigator&&b.navigator.userAgent),O=function(t){return parseFloat(t||"0")},E=function(t,e,r){return void 0===t&&(t=0),void 0===e&&(e=0),void 0===r&&(r=!1),new d((r?e:t)||0,(r?t:e)||0)},k=p({devicePixelContentBoxSize:E(),borderBoxSize:E(),contentBoxSize:E(),contentRect:new v(0,0,0,0)}),T=function(t,e){if(void 0===e&&(e=!1),w.has(t)&&!e)return w.get(t);if(m(t))return w.set(t,k),k;var r=getComputedStyle(t),n=g(t)&&t.ownerSVGElement&&t.getBBox(),i=!A&&"border-box"===r.boxSizing,o=S.test(r.writingMode||""),s=!n&&x.test(r.overflowY||""),a=!n&&x.test(r.overflowX||""),c=n?0:O(r.paddingTop),u=n?0:O(r.paddingRight),l=n?0:O(r.paddingBottom),f=n?0:O(r.paddingLeft),h=n?0:O(r.borderTopWidth),d=n?0:O(r.borderRightWidth),y=n?0:O(r.borderBottomWidth),b=f+u,T=c+l,_=(n?0:O(r.borderLeftWidth))+d,C=h+y,P=a?t.offsetHeight-C-t.clientHeight:0,I=s?t.offsetWidth-_-t.clientWidth:0,j=i?b+_:0,M=i?T+C:0,L=n?n.width:O(r.width)-j-I,N=n?n.height:O(r.height)-M-P,B=L+b+I+_,R=N+T+P+C,D=p({devicePixelContentBoxSize:E(Math.round(L*devicePixelRatio),Math.round(N*devicePixelRatio),o),borderBoxSize:E(B,R,o),contentBoxSize:E(L,N,o),contentRect:new v(f,c,L,N)});return w.set(t,D),D},_=function(t,e,r){var i=T(t,r),o=i.borderBoxSize,s=i.contentBoxSize,a=i.devicePixelContentBoxSize;switch(e){case n.DEVICE_PIXEL_CONTENT_BOX:return a;case n.BORDER_BOX:return o;default:return s}},C=function(t){var e=T(t);this.target=t,this.contentRect=e.contentRect,this.borderBoxSize=p([e.borderBoxSize]),this.contentBoxSize=p([e.contentBoxSize]),this.devicePixelContentBoxSize=p([e.devicePixelContentBoxSize])},P=function(t){if(m(t))return 1/0;for(var e=0,r=t.parentNode;r;)e+=1,r=r.parentNode;return e},I=function(){var t=1/0,e=[];l.forEach((function(r){if(0!==r.activeTargets.length){var n=[];
vendor: 5,297 bytes, line 25976
25976r.activeTargets.forEach((function(e){var r=new C(e.target),i=P(e.target);n.push(r),e.lastReportedSize=_(e.target,e.observedBox),i<t&&(t=i)})),e.push((function(){r.callback.call(r.observer,n,r.observer)})),r.activeTargets.splice(0,r.activeTargets.length)}}));for(var r=0,n=e;r<n.length;r++){(0,n[r])()}return t},j=function(t){l.forEach((function(e){e.activeTargets.splice(0,e.activeTargets.length),e.skippedTargets.splice(0,e.skippedTargets.length),e.observationTargets.forEach((function(r){r.isActive()&&(P(r.target)>t?e.activeTargets.push(r):e.skippedTargets.push(r))}))}))},M=function(){var t,e=0;for(j(e);l.some((function(t){return t.activeTargets.length>0}));)e=I(),j(e);return l.some((function(t){return t.skippedTargets.length>0}))&&("function"==typeof ErrorEvent?t=new ErrorEvent("error",{message:f}):((t=document.createEvent("Event")).initEvent("error",!1,!1),t.message=f),window.dispatchEvent(t)),e>0},L=[],N=function(t){if(!h){var e=0,r=document.createTextNode("");new MutationObserver((function(){return L.splice(0).forEach((function(t){return t()}))})).observe(r,{characterData:!0}),h=function(){r.textContent="".concat(e?e--:e++)}}L.push(t),h()},B=0,R={attributes:!0,characterData:!0,childList:!0,subtree:!0},D=["resize","load","transitionend","animationend","animationstart","animationiteration","keyup","keydown","mouseup","mousedown","mouseover","mouseout","blur","focus"],F=function(t){return void 0===t&&(t=0),Date.now()+t},$=!1,H=new(function(){function t(){var t=this;this.stopped=!0,this.listener=function(){return t.schedule()}}return t.prototype.run=function(t){var e=this;if(void 0===t&&(t=250),!$){$=!0;var r,n=F(t);r=function(){var r=!1;try{r=M()}finally{if($=!1,t=n-F(),!B)return;r?e.run(1e3):t>0?e.run(t):e.start()}},N((function(){requestAnimationFrame(r)}))}},t.prototype.schedule=function(){this.stop(),this.run()},t.prototype.observe=function(){var t=this,e=function(){return t.observer&&t.observer.observe(document.body,R)};document.body?e():b.addEventListener("DOMContentLoaded",e)},t.prototype.start=function(){var t=this;this.stopped&&(this.stopped=!1,this.observer=new MutationObserver(this.listener),this.observe(),D.forEach((function(e){return b.addEventListener(e,t.listener,!0)})))},t.prototype.stop=function(){var t=this;this.stopped||(this.observer&&this.observer.disconnect(),D.forEach((function(e){return b.removeEventListener(e,t.listener,!0)})),this.stopped=!0)},t}()),z=function(t){!B&&t>0&&H.start(),!(B+=t)&&H.stop()},V=function(){function t(t,e){this.target=t,this.observedBox=e||n.CONTENT_BOX,this.lastReportedSize={inlineSize:0,blockSize:0}}return t.prototype.isActive=function(){var t,e=_(this.target,this.observedBox,!0);return t=this.target,g(t)||function(t){switch(t.tagName){case"INPUT":if("image"!==t.type)break;case"VIDEO":case"AUDIO":case"EMBED":case"OBJECT":case"CANVAS":case"IFRAME":case"IMG":return!0}return!1}(t)||"inline"!==getComputedStyle(t).display||(this.lastReportedSize=e),this.lastReportedSize.inlineSize!==e.inlineSize||this.lastReportedSize.blockSize!==e.blockSize},t}(),U=function(t,e){this.activeTargets=[],this.skippedTargets=[],this.observationTargets=[],this.observer=t,this.callback=e},W=new WeakMap,K=function(t,e){for(var r=0;r<t.length;r+=1)if(t[r].target===e)return r;return-1},G=function(){function t(){}return t.connect=function(t,e){var r=new U(t,e);W.set(t,r)},t.observe=function(t,e,r){var n=W.get(t),i=0===n.observationTargets.length;K(n.observationTargets,e)<0&&(i&&l.push(n),n.observationTargets.push(new V(e,r&&r.box)),z(1),H.schedule())},t.unobserve=function(t,e){var r=W.get(t),n=K(r.observationTargets,e),i=1===r.observationTargets.length;n>=0&&(i&&l.splice(l.indexOf(r),1),r.observationTargets.splice(n,1),z(-1))},t.disconnect=function(t){var e=this,r=W.get(t);r.observationTargets.slice().forEach((function(r){return e.unobserve(t,r.target)})),r.activeTargets.splice(0,r.activeTargets.length)},t}(),q=function(){function t(t){if(0===arguments.length)throw new TypeError("Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.");if("function"!=typeof t)throw new TypeError("Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.");G.connect(this,t)}return t.prototype.observe=function(t,e){if(0===arguments.length)throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': 1 argument required, but only 0 present.");if(!y(t))throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element");G.observe(this,t,e)},t.prototype.unobserve=function(t){if(0===arguments.length)throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': 1 argument required, but only 0 present.");if(!y(t))throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': parameter 1 is not of type 'Element");G.unobserve(this,t)},t.prototype.disconnect=function(){G.disconnect(this)},t.toString=function(){return"function ResizeObserver () { [polyfill code] }"},t}();function J(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(J=function(){return!!t})()}var Y=function(t){function e(){return(0,i.A)(this,e),t=this,r=e,n=arguments,r=(0,a.A)(r),(0,s.A)(t,J()?Reflect.construct(r,n||[],(0,a.A)(t).constructor):r.apply(t,n));var t,r,n}
25976return(0,c.A)(e,t),(0,o.A)(e,[{key:"connect",value:function(){var t=this,e=this.element.parentElement;["flex","inline-flex"].includes(getComputedStyle(e).display)&&(this.resizeObserver=new q((function(e){var r=e[0].contentRect.width,n=Array.from(t.element.children).filter((function(e){return e!==t.selectContainerTarget})).map((function(t){return t.offsetWidth})).reduce((function(t,e){return t+e}),0);t.selectContainerTarget.style.width=r-n+"px"})),this.resizeObserver.observe(e))}},{key:"disconnect",value:function(){this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=null)}},{key:"focusButton",value:function(){this.buttonTarget.focus()}},{key:"toggle",value:function(){this.updateButtonLabel(),this.restrictCheckedCount()}},{key:"updateButtonLabel",value:function(){var t=this.checkedCheckboxTargets.map((function(t){return t.closest("label").textContent.trim()})).join(", "),e=this.checkedCheckboxTargets.length?t:this.unselectedLabelValue;this.buttonTarget.textContent=e;var r=this.checkedCheckboxTargets.length?"".concat(this.unselectedLabelValue,", selected languages: ").concat(t):this.unselectedLabelValue;this.buttonTarget.setAttribute("aria-label",r)}},{key:"restrictCheckedCount",value:function(){var t=this.checkedCheckboxTargets.length<7;this.uncheckedCheckboxTargets.forEach((function(e){e.disabled=!t}))}},{key:"checkedCheckboxTargets",get:function(){return this.checkboxTargets.filter((function(t){return t.checked}))}},{key:"uncheckedCheckboxTargets",get:function(){return this.checkboxTargets.filter((function(t){return!t.checked}))}}])}(u.xI);Y.targets=["selectContainer","button","checkbox"],Y.values={unselectedLabel:String}},7741:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>u});r(8037);var n=r(2561),i=r(6710),o=r(3008),s=r(3134),a=r(6973);function c(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(c=function(){return!!t})()}var u=function(t){function e(){return(0,n.A)(this,e),t=this,r=e,i=arguments,r=(0,s.A)(r),(0,o.A)(t,c()?Reflect.construct(r,i||[],(0,s.A)(t).constructor):r.apply(t,i));var t,r,i}return(0,a.A)(e,t),(0,i.A)(e,[{key:"connect",value:function(){this.setOverflowing()}},{key:"setOverflowing",value:function(){this.element.classList.toggle(this.overflowingClass,this.isOverflowing)}},{key:"isOverflowing",get:function(){return this.containerTarget.scrollWidth>this.containerTarget.clientWidth}},{key:"setScrolled",value:function(){this.element.classList.add(this.hasScrolledClass)}}])}(r(6782).xI);u.targets=["container"],u.classes=["overflowing","hasScrolled"]},7754:(t,e,r)=>{"use strict";var n=r(8810),i=r(3163),o=r(133),s=r(3625),a=r(2484),c=r(2675),u=r(321),l=r(3401),f=r(4540),h=r(5001),p=r(6891),d=String,v=i("JSON","stringify"),g=a(/./.exec),m=a("".charAt),y=a("".charCodeAt),b=a("".replace),w=a(1..toString),x=/[\uD800-\uDFFF]/g,S=/^[\uD800-\uDBFF]$/,A=/^[\uDC00-\uDFFF]$/,O=!p||c((function(){var t=i("Symbol")("stringify detection");return"[null]"!==v([t])||"{}"!==v({a:t})||"{}"!==v(Object(t))})),E=c((function(){return'"\\udf06\\ud834"'!==v("\udf06\ud834")||'"\\udead"'!==v("\udead")})),k=function(t,e){var r=f(arguments),n=h(e);if(u(n)||void 0!==t&&!l(t))return r[1]=function(t,e){if(u(n)&&(e=s(n,this,d(t),e)),!l(e))return e},o(v,null,r)},T=function(t,e,r){var n=m(r,e-1),i=m(r,e+1);return g(S,t)&&!g(A,i)||g(A,t)&&!g(S,n)?"\\u"+w(y(t,0),16):t};v&&n({target:"JSON",stat:!0,arity:3,forced:O||E},{stringify:function(t,e,r){var n=f(arguments),i=o(O?k:v,null,n);return E&&"string"==typeof i?b(i,x,T):i}})},7769:(t,e)=>{"use strict";var r={}.propertyIsEnumerable,n=Object.getOwnPropertyDescriptor,i=n&&!r.call({1:2},1);e.f=i?function(t){var e=n(this,t);return!!e&&e.enumerable}:r},7808:(t,e,r)=>{"use strict";r(4267);var n=r(3625),i=r(5236),o=r(863),s=r(2675),a=r(4175),c=r(671),u=a("species"),l=RegExp.prototype;t.exports=function(t,e,r,f){var h=a(t),p=!s((function(){var e={};return e[h]=function(){return 7},7!==""[t](e)})),d=p&&!s((function(){var e=!1,r=/a/;return"split"===t&&((r={}).constructor={},r.constructor[u]=function(){return r},r.flags="",r[h]=/./[h]),r.exec=function(){return e=!0,null},r[h](""),!e}));if(!p||!d||r){var v=/./[h],g=e(h,""[t],(function(t,e,r,i,s){var a=e.exec;return a===o||a===l.exec?p&&!s?{done:!0,value:n(v,e,r,i)}:{done:!0,value:n(t,r,e,i)}:{done:!1}}
25976));i(String.prototype,t,g[0]),i(l,h,g[1])}f&&c(l[h],"sham",!0)}},7837:(t,e,r)=>{"use strict";var n=r(2484);t.exports=n({}.isPrototypeOf)},7899:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>l});r(8037);var n=r(8134),i=r(2561),o=r(6710),s=r(3008),a=r(3134),c=r(6973);r(4958),r(7372),r(5249),r(4707),r(3838),r(6160),r(8021),r(3376),r(1759),r(4267),r(7567),r(9028),r(2006),r(3406),r(3544);function u(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(u=function(){return!!t})()}var l=function(t){function e(){return(0,i.A)(this,e),t=this,r=e,n=arguments,r=(0,a.A)(r),(0,s.A)(t,u()?Reflect.construct(r,n||[],(0,a.A)(t).constructor):r.apply(t,n));var t,r,n}return(0,c.A)(e,t),(0,o.A)(e,[{key:"search",value:function(t){t.preventDefault(),this.unhighlight();var e=t.target.elements.q.value.trim();e&&(this.scrollToFirstMatched(e),this.highlight(e))}},{key:"highlight",value:function(t){var e=this;this.getMatchedTextNodes(t).forEach((function(r){var i,o,s,a=r.textContent.replaceAll(t,"<mark data-".concat(e.identifier,'-target="highlight">').concat(t,"</mark>"));i=r,o=a,(s=document.createElement("div")).innerHTML=o,i.replaceWith.apply(i,(0,n.A)(s.childNodes))}))}},{key:"unhighlight",value:function(){this.highlightTargets.forEach((function(t){t.replaceWith.apply(t,(0,n.A)(t.childNodes))}))}},{key:"scrollToFirstMatched",value:function(t){var e,r=null===(e=this.getMatchedTextNodes(t,!0)[0])||void 0===e?void 0:e.parentNode;r&&function(t){var e=969,r=window.matchMedia("only screen and (max-width: "+e+"px)"),n=window.matchMedia("only screen and (max-height: 770px)"),i=document.querySelector('[data-series-header-target="sticky"]'),o=null;o=r.matches||n.matches?i?'[data-series-header-target="sticky"]':null:i?'[data-series-header-target="sticky"]':"#js-controlHeader";new window.SmoothScroll(null,{header:o,speed:400,easing:"easeInOutQuart",updateURL:!1,speedAsDuration:!0}).animateScroll(t)}(r)}},{key:"getMatchedTextNodes",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return function(t){var e=[],r=document.createTreeWalker(t,NodeFilter.SHOW_TEXT,null,!1),n=null;for(;n=r.nextNode();)e.push(n);return e}(this.containerTarget).filter((function(r){var n=r.textContent.includes(t);return e?n&&function(t){var e=t;for(;e;){var r=getComputedStyle(e);if("none"===r.display||"hidden"===r.visibility)return!1;e=e.parentElement}return!0}(r.parentNode):n}))}}])}(r(6782).xI);l.targets=["container","highlight"]},7928:(t,e,r)=>{"use strict";var n={};n[r(4175)("toStringTag")]="z",t.exports="[object z]"===String(n)},7954:t=>{"use strict";t.exports=Math.max},7963:(t,e,r)=>{"use strict";var n=r(8810),i=r(2484),o=r(4834),s=r(7391),a=r(7267),c=i("".slice),u=Math.max,l=Math.min;n({target:"String",proto:!0,forced:!"".substr||"b"!=="ab".substr(-1)},{substr:function(t,e){var r,n,i=a(o(this)),f=i.length,h=s(t);return h===1/0&&(h=0),h<0&&(h=u(f+h,0)),(r=void 0===e?f:s(e))<=0||r===1/0||h>=(n=l(h+r,f))?"":c(i,h,n)}})},8021:(t,e,r)=>{"use strict";var n=r(8810),i=r(3625),o=r(4334),s=r(659),a=r(779),c=r(1274),u=r(4035),l=r(6007),f=c((function(){for(var t,e,r=this.iterator,n=this.predicate,o=this.next;;){if(t=s(i(o,r)),this.done=!!t.done)return;if(e=t.value,u(r,n,[e,this.counter++],!0))return e}}));n({target:"Iterator",proto:!0,real:!0,forced:l},{filter:function(t){return s(this),o(t),new f(a(this),{predicate:t})}})},8037:(t,e,r)=>{"use strict";var n=r(8810),i=r(3163),o=r(133),s=r(2082),a=r(3112),c=r(659),u=r(4102),l=r(3844),f=r(2675),h=i("Reflect","construct"),p=Object.prototype,d=[].push,v=f((function(){function t(){}return!(h((function(){}),[],t)instanceof t)})),g=!f((function(){h((function(){}))})),m=v||g;n({target:"Reflect",stat:!0,forced:m,sham:m},{construct:function(t,e){a(t),c(e);var r=arguments.length<3?t:a(arguments[2]);if(g&&!v)return h(t,e,r);if(t===r){switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3])}var n=[null];return o(d,n,e),new(o(s,t,n))}var i=r.prototype,f=l(u(i)?i:p),m=o(t,f,e);return u(m)?m:f}})},8043:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>u});r(8037);var n=r(2561),i=r(6710),o=r(3008),s=r(3134),a=r(6973);r(1568),r(5249),r(6160),r(3376),r(1759),r(8220),r(6325),r(4267),r(6893),r(5734),r(3049),r(9028),r(3544);function c(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(c=function(){return!!t})()}var u=function(t){function e(){return(0,n.A)(this,e),t=this,r=e,i=arguments,r=(0,s.A)(r),(0,o.A)(t,c()?Reflect.construct(r,i||[],(0,s.A)(t).constructor):r.apply(t,i));var t,r,i}
25976return(0,a.A)(e,t),(0,i.A)(e,[{key:"connect",value:function(){"true"===this.element.dataset.tabpanelLinkCurrent&&this.observeTabPanel()}},{key:"observeTabPanel",value:function(){var t=this,e=new MutationObserver((function(){t.selectCurrentTab(e)}));e.observe(this.element,{childList:!0,subtree:!0})}},{key:"selectCurrentTab",value:function(t){var e=this,r=location.pathname;this.tabPanelLinkTargets.length&&this.tabPanelLinkTargets.forEach((function(t){var n=t.pathname.replace(/^\/(.+)(\/index\.jsp)$/,"/$1/");if(new RegExp("^"+n+"$").test(r)){var i=t.closest('[data-tabs-target="tabPanel"]');if(t.setAttribute("aria-current","page"),i){var o=i.getAttribute("aria-labelledby"),s=o?document.getElementById(o):null;if(s){var a=s.getAttribute("aria-controls");e.tabTargets.forEach((function(t){var e=t===s;t.tabIndex=e?0:-1,t.setAttribute("aria-selected",e)})),e.tabPanelTargets.forEach((function(t){var e=t.id===a;t.setAttribute("aria-hidden",!e)}))}}}})),t.disconnect()}},{key:"selectTab",value:function(t){this.activateTab(t.currentTarget)}},{key:"switchTabForKeyDown",value:function(t){switch(t.key){case"Home":this.activateTab(this.firstTabTarget),t.preventDefault();break;case"End":this.activateTab(this.lastTabTarget),t.preventDefault()}}},{key:"switchTabForKeyUp",value:function(t){switch(t.key){case"ArrowRight":this.activateTab(this.tabTargets[this.selectedTabIndex+1]||this.firstTabTarget);break;case"ArrowLeft":this.activateTab(this.tabTargets[this.selectedTabIndex-1]||this.lastTabTarget)}}},{key:"activateTab",value:function(t){var e=t.getAttribute("aria-controls");this.tabTargets.forEach((function(e){var r=e===t;e.tabIndex=r?0:-1,e.setAttribute("aria-selected",r)})),this.tabPanelTargets.forEach((function(t){var r=t.id===e;t.setAttribute("aria-hidden",!r)})),t.focus()}},{key:"firstTabTarget",get:function(){return this.tabTargets[0]}},{key:"lastTabTarget",get:function(){return this.tabTargets[this.tabTargets.length-1]}},{key:"selectedTabIndex",get:function(){return this.tabTargets.findIndex((function(t){return"true"===t.getAttribute("aria-selected")}))}}])}(r(6782).xI);u.targets=["tab","tabPanel","tabPanelLink"]},8052:function(t,e,r){"use strict";var n=function(t){return t&&t.Math===Math&&t};t.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof r.g&&r.g)||n("object"==typeof this&&this)||function(){return this}()||Function("return this")()},8085:(t,e,r)=>{"use strict";function n(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}r.d(e,{A:()=>n})},8118:(t,e,r)=>{"use strict";var n=r(9535);t.exports=function(){return n()&&!!Symbol.toStringTag}},8134:(t,e,r)=>{"use strict";r.d(e,{A:()=>o});var n=r(8085);var i=r(6492);function o(t){return function(t){if(Array.isArray(t))return(0,n.A)(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||(0,i.A)(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}},8135:(t,e,r)=>{"use strict";var n=r(8810),i=r(2675),o=r(8649),s=r(573);n({target:"Date",proto:!0,arity:1,forced:i((function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})}))},{toJSON:function(t){var e=o(this),r=s(e,"number");return"number"!=typeof r||isFinite(r)?e.toISOString():null}})},8179:(t,e,r)=>{var n,i;window,void 0===(i="function"==typeof(n=function(){"use strict";function t(t){var e=parseFloat(t);return-1==t.indexOf("%")&&!isNaN(e)&&e}function e(){}var r="undefined"==typeof console?e:function(t){console.error(t)},n=["paddingLeft","paddingRight","paddingTop","paddingBottom","marginLeft","marginRight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth"],i=n.length;function o(){for(var t={width:0,height:0,innerWidth:0,innerHeight:0,outerWidth:0,outerHeight:0},e=0;e<i;e++)t[n[e]]=0;return t}function s(t){var e=getComputedStyle(t);return e||r("Style returned "+e+". Are you running this code in a hidden iframe on Firefox? See https://bit.ly/getsizebug1"),e}var a,c=!1;function u(){if(!c){c=!0;var e=document.createElement("div");e.style.width="200px",e.style.padding="1px 2px 3px 4px",e.style.borderStyle="solid",e.style.borderWidth="1px 2px 3px 4px",e.style.boxSizing="border-box";var r=document.body||document.documentElement;r.appendChild(e);var n=s(e);a=200==Math.round(t(n.width)),l.isBoxSizeOuter=a,r.removeChild(e)}}function l(e){if(u(),"string"==typeof e&&(e=document.querySelector(e)),e&&"object"==typeof e&&e.nodeType){var r=s(e);if("none"==r.display)return o();var c={};c.width=e.offsetWidth,c.height=e.offsetHeight;for(var l=c.isBorderBox="border-box"==r.boxSizing,f=0;f<i;f++){var h=n[f],p=r[h],d=parseFloat(p);c[h]=isNaN(d)?0:d}var v=c.paddingLeft+c.paddingRight,g=c.paddingTop+c.paddingBottom,m=c.marginLeft+c.marginRight,y=c.marginTop+c.marginBottom,b=c.borderLeftWidth+c.borderRightWidth,w=c.borderTopWidth+c.borderBottomWidth,x=l&&a,S=t(r.width);!1!==S&&(c.width=S+(x?0:v+b));var A=t(r.height);return!1!==A&&(c.height=A+(x?0:g+w)),c.innerWidth=c.width-(v+b),c.innerHeight=c.height-(g+w),c.outerWidth=c.width+m,c.outerHeight=c.height+y,c}}return l})?n.call(e,r,e,t):n)||(t.exports=i)},8187:(t,e,r)=>{"use strict";var n=r(4295),i=r(75),o=r(9118)(),s=r(1233),a=r(6757),c=n("%Math.floor%");t.exports=function(t,e){if("function"!=typeof t)throw new a("`fn` is not a function");if("number"!=typeof e||e<0||e>4294967295||c(e)!==e)throw new a("`length` must be a positive 32-bit integer");var r=arguments.length>2&&!!arguments[2],n=!0,u=!0;if("length"in t&&s){var l=s(t,"length");l&&!l.configurable&&(n=!1),l&&!l.writable&&(u=!1)}return(n||u||!r)&&(o?i(t,"length",e,!0,!0):i(t,"length",e)),t}},8220:(t,e,r)=>{"use strict";var n=r(2128),i=r(8052),o=r(2484),s=r(2360),a=r(9859),c=r(671),u=r(3844),l=r(4956).f,f=r(7837),h=r(4584),p=r(7267),d=r(3614),v=r(2537),g=r(7132),m=r(5236),y=r(2675),b=r(4461),w=r(6369).enforce,x=r(461),S=r(4175),A=r(991),O=r(5722),E=S("match"),k=i.RegExp,T=k.prototype,_=i.SyntaxError,C=o(T.exec),P=o("".charAt),I=o("".replace),j=o("".indexOf),M=o("".slice),L=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,N=/a/g,B=/a/g,R=new k(N)!==N,D=v.MISSED_STICKY,F=v.UNSUPPORTED_Y,$=n&&(!R||D||A||O||y((function(){return B[E]=!1,k(N)!==N||k(B)===B||"/a/i"!==String(k(N,"i"))})));if(s("RegExp",$)){for(var H=function(t,e){var r,n,i,o,s,l,v=f(T,this),g=h(t),m=void 0===e,y=[],x=t;if(!v&&g&&m&&t.constructor===H)return t;if((g||f(T,t))&&(t=t.source,m&&(e=d(x))),t=void 0===t?"":p(t),e=void 0===e?"":p(e),x=t,A&&"dotAll"in N&&(n=!!e&&j(e,"s")>-1)&&(e=I(e,/s/g,"")),r=e,D&&"sticky"in N&&(i=!!e&&j(e,"y")>-1)&&F&&(e=I(e,/y/g,"")),O&&(o=function(t){for(var e,r=t.length,n=0,i="",o=[],s=u(null),a=!1,c=!1,l=0,f="";n<=r;n++){if("\\"===(e=P(t,n)))e+=P(t,++n);else if("]"===e)a=!1;else if(!a)switch(!0){case"["===e:a=!0;break;case"("===e:if(i+=e,"?:"===M(t,n+1,n+3))continue;C(L,M(t,n+1))&&(n+=2,c=!0),l++;continue;case">"===e&&c:if(""===f||b(s,f))throw new _("Invalid capture group name");s[f]=!0,o[o.length]=[f,l],c=!1,f="";continue}c?f+=e:i+=e}return[i,o]}(t),t=o[0],y=o[1]),s=a(k(t,e),v?this:T,H),(n||i||y.length)&&(l=w(s),n&&(l.dotAll=!0,l.raw=H(function(t){for(var e,r=t.length,n=0,i="",o=!1;n<=r;n++)"\\"!==(e=P(t,n))?o||"."!==e?("["===e?o=!0:"]"===e&&(o=!1),i+=e):i+="[\\s\\S]":i+=e+P(t,++n);return i}(t),r)),i&&(l.sticky=!0),y.length&&(l.groups=y)),t!==x)try{c(s,"source",""===x?"(?:)":x)}catch(t){}return s},z=l(k),V=0;z.length>V;)g(H,k,z[V++]);T.constructor=H,H.prototype=T,m(i,"RegExp",H,{constructor:!0})}x("RegExp")},8303:(t,e,r)=>{"use strict";var n=r(659);t.exports=function(){var t=n(this),e="";return t.hasIndices&&(e+="d"),t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.dotAll&&(e+="s"),t.unicode&&(e+="u"),t.unicodeSets&&(e+="v"),t.sticky&&(e+="y"),e}},8374:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>u});r(8037);var n=r(2561),i=r(6710),o=r(3008),s=r(3134),a=r(6973);r(5549),r(5249),r(3348),r(7642),r(6160),r(9064),r(3376),r(9343),r(1759),r(3544),r(2901);function c(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(c=function(){return!!t})()}var u=function(t){function e(){return(0,n.A)(this,e),t=this,r=e,i=arguments,r=(0,s.A)(r),(0,o.A)(t,c()?Reflect.construct(r,i||[],(0,s.A)(t).constructor):r.apply(t,i));var t,r,i}
25976return(0,a.A)(e,t),(0,i.A)(e,[{key:"connect",value:function(){this.renderUncheckAllButtonState()}},{key:"toggle",value:function(){this.renderButtonLabel(),this.renderBadges(),this.renderUncheckAllButtonState()}},{key:"uncheck",value:function(t){var e=t.currentTarget.value;this.getCheckboxByValue(e).checked=!1,this.renderButtonLabel(),this.renderBadges(),this.renderUncheckAllButtonState()}},{key:"uncheckAll",value:function(){this.checkboxTargets.forEach((function(t){t.checked=!1})),this.renderButtonLabel(),this.renderBadges(),this.renderUncheckAllButtonState()}},{key:"hasChecked",get:function(){return this.checkboxTargets.some((function(t){return t.checked}))}},{key:"getCheckboxByValue",value:function(t){return this.checkboxTargets.find((function(e){return e.value===t}))}},{key:"renderButtonLabel",value:function(){this.buttonTarget.textContent=this.hasChecked?"":this.unselectedLabelValue}},{key:"renderBadges",value:function(){var t=this;this.badgeTargets.forEach((function(e){var r=e.getAttribute("data-value"),n=t.getCheckboxByValue(r).checked;e.hidden=!n}))}},{key:"renderUncheckAllButtonState",value:function(){this.uncheckAllButtonTarget.disabled=!this.hasChecked}}])}(r(6782).xI);u.targets=["button","badge","uncheckAllButton","checkbox"],u.values={unselectedLabel:String}},8379:t=>{"use strict";var e=String;t.exports=function(t){try{return e(t)}catch(t){return"Object"}}},8434:(t,e,r)=>{"use strict";var n=r(8052),i=r(321),o=n.WeakMap;t.exports=i(o)&&/native code/.test(String(o))},8438:(t,e,r)=>{"use strict";var n=r(3625),i=r(3163),o=r(4175),s=r(5236);t.exports=function(){var t=i("Symbol"),e=t&&t.prototype,r=e&&e.valueOf,a=o("toPrimitive");e&&!e[a]&&s(e,a,(function(t){return n(r,this)}),{arity:1})}},8458:(t,e,r)=>{"use strict";var n=r(8379),i=TypeError;t.exports=function(t,e){if(!delete t[e])throw new i("Cannot delete property "+n(e)+" of "+n(t))}},8563:t=>{"use strict";t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},8573:(t,e,r)=>{"use strict";var n="undefined"!=typeof Symbol&&Symbol,i=r(9535);t.exports=function(){return"function"==typeof n&&("function"==typeof Symbol&&("symbol"==typeof n("foo")&&("symbol"==typeof Symbol("bar")&&i())))}},8580:(t,e,r)=>{"use strict";var n=r(4102),i=r(671);t.exports=function(t,e){n(e)&&"cause"in e&&i(t,"cause",e.cause)}},8649:(t,e,r)=>{"use strict";var n=r(4834),i=Object;t.exports=function(t){return i(n(t))}},8656:(t,e,r)=>{"use strict";var n=r(4175)("match");t.exports=function(t){var e=/./;try{"/./"[t](e)}catch(r){try{return e[n]=!1,"/./"[t](e)}catch(t){}}return!1}},8659:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>u});r(8037);var n=r(2561),i=r(6710),o=r(3008),s=r(3134),a=r(6973);r(3348),r(1759),r(2901);function c(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(c=function(){return!!t})()}var u=function(t){function e(){return(0,n.A)(this,e),t=this,r=e,i=arguments,r=(0,s.A)(r),(0,o.A)(t,c()?Reflect.construct(r,i||[],(0,s.A)(t).constructor):r.apply(t,i));var t,r,i}return(0,a.A)(e,t),(0,i.A)(e,[{key:"connect",value:function(){this.setVideoJs()}},{key:"setVideoJs",value:function(){this.rootTarget.appendChild(this.createVideoJs()),this.setVideoJsScript()}},{key:"createVideoJs",value:function(){var t,e=document.createElement("video-js"),r=this.videoAttrValue;if(e.id=this.idValue?this.idValue:"",e.dataset.account=this.accountValue?this.accountValue:"",e.dataset.player=this.playerValue?this.playerValue:"",e.dataset.embed=this.embedValue?this.embedValue:"",e.dataset.videoId=this.videoIdValue?this.videoIdValue:"",this.videoClassValue&&e.classList.add(this.videoClassValue),void 0!==r)for(t in r){if(r.hasOwnProperty(t)&&r[t]){if("false"===r[t])continue;"true"===r[t]?e.setAttribute(t,Boolean(r[t])):e.setAttribute(t,r[t])}}return e}},{key:"setVideoJsScript",value:function(){var t=document.createElement("script"),e="https://players.brightcove.net/"+this.accountValue+"/"+this.playerValue+"_default/index.min.js";t.src=e,this.rootTarget.appendChild(t)}}])}(r(6782).xI);u.targets=["root"],u.values={id:String,account:String,player:String,embed:String,videoId:String,videoClass:String,videoAttr:Object}},8676:(t,e,r)=>{"use strict";var n=r(8810),i=r(3625),o=r(6007),s=r(4690),a=r(321),c=r(7270),u=r(5927),l=r(1715),f=r(8819),h=r(671),p=r(5236),d=r(4175),v=r(6609),g=r(3597),m=s.PROPER,y=s.CONFIGURABLE,b=g.IteratorPrototype,w=g.BUGGY_SAFARI_ITERATORS,x=d("iterator"),S="keys",A="values",O="entries",E=function(){return this};t.exports=function(t,e,r,s,d,g,k){c(r,e,s);var T,_,C,P=function(t){if(t===d&&N)return N;if(!w&&t&&t in M)return M[t];switch(t){case S:case A:case O:return function(){return new r(this,t)}}return function(){return new r(this)}},I=e+" Iterator",j=!1,M=t.prototype,L=M[x]||M["@@iterator"]||d&&M[d],N=!w&&L||P(d),B="Array"===e&&M.entries||L;
vendor: 4,073 bytes, line 25976
25976if(B&&(T=u(B.call(new t)))!==Object.prototype&&T.next&&(o||u(T)===b||(l?l(T,b):a(T[x])||p(T,x,E)),f(T,I,!0,!0),o&&(v[I]=E)),m&&d===A&&L&&L.name!==A&&(!o&&y?h(M,"name",A):(j=!0,N=function(){return i(L,this)})),d)if(_={values:P(A),keys:g?N:P(S),entries:P(O)},k)for(C in _)(w||j||!(C in M))&&p(M,C,_[C]);else n({target:e,proto:!0,forced:w||j},_);return o&&!k||M[x]===N||p(M,x,N,{name:d}),v[e]=N,_}},8682:(t,e,r)=>{"use strict";var n=r(4295),i=r(7196),o=i([n("%String.prototype.indexOf%")]);t.exports=function(t,e){var r=n(t,!!e);return"function"==typeof r&&o(t,".prototype.")>-1?i([r]):r}},8687:(t,e,r)=>{"use strict";var n=r(7267);t.exports=function(t,e){return void 0===t?arguments.length<2?"":e:n(t)}},8704:t=>{var e=Object.prototype.toString;t.exports=function(t){return e.call(t)}},8708:(t,e,r)=>{"use strict";var n=r(8810),i=r(9249),o=r(2153);n({target:"Array",proto:!0},{fill:i}),o("fill")},8740:(t,e,r)=>{"use strict";var n=r(8810),i=r(8052),o=r(133),s=r(3893),a="WebAssembly",c=i[a],u=7!==new Error("e",{cause:7}).cause,l=function(t,e){var r={};r[t]=s(t,e,u),n({global:!0,constructor:!0,arity:1,forced:u},r)},f=function(t,e){if(c&&c[t]){var r={};r[t]=s(a+"."+t,e,u),n({target:a,stat:!0,constructor:!0,arity:1,forced:u},r)}};l("Error",(function(t){return function(e){return o(t,this,arguments)}})),l("EvalError",(function(t){return function(e){return o(t,this,arguments)}})),l("RangeError",(function(t){return function(e){return o(t,this,arguments)}})),l("ReferenceError",(function(t){return function(e){return o(t,this,arguments)}})),l("SyntaxError",(function(t){return function(e){return o(t,this,arguments)}})),l("TypeError",(function(t){return function(e){return o(t,this,arguments)}})),l("URIError",(function(t){return function(e){return o(t,this,arguments)}})),f("CompileError",(function(t){return function(e){return o(t,this,arguments)}})),f("LinkError",(function(t){return function(e){return o(t,this,arguments)}})),f("RuntimeError",(function(t){return function(e){return o(t,this,arguments)}}))},8754:(t,e,r)=>{"use strict";var n=r(2675);t.exports=function(t,e){var r=[][t];return!!r&&n((function(){r.call(null,e||function(){return 1},1)}))}},8770:(t,e,r)=>{"use strict";var n=r(3026);t.exports=function(t){return n(t.length)}},8785:(t,e,r)=>{"use strict";var n=r(1955).charAt;t.exports=function(t,e,r){return e+(r?n(t,e).length:1)}},8808:(t,e,r)=>{"use strict";var n,i,o,s=r(8810),a=r(6007),c=r(6125),u=r(8052),l=r(3625),f=r(5236),h=r(1715),p=r(8819),d=r(461),v=r(4334),g=r(321),m=r(4102),y=r(5755),b=r(3985),w=r(6781).set,x=r(6559),S=r(1929),A=r(3443),O=r(1661),E=r(6369),k=r(5034),T=r(7032),_=r(1031),C="Promise",P=T.CONSTRUCTOR,I=T.REJECTION_EVENT,j=T.SUBCLASSING,M=E.getterFor(C),L=E.set,N=k&&k.prototype,B=k,R=N,D=u.TypeError,F=u.document,$=u.process,H=_.f,z=H,V=!!(F&&F.createEvent&&u.dispatchEvent),U="unhandledrejection",W=function(t){var e;return!(!m(t)||!g(e=t.then))&&e},K=function(t,e){var r,n,i,o=e.value,s=1===e.state,a=s?t.ok:t.fail,c=t.resolve,u=t.reject,f=t.domain;try{a?(s||(2===e.rejection&&X(e),e.rejection=1),!0===a?r=o:(f&&f.enter(),r=a(o),f&&(f.exit(),i=!0)),r===t.promise?u(new D("Promise-chain cycle")):(n=W(r))?l(n,r,c,u):c(r)):u(o)}catch(t){f&&!i&&f.exit(),u(t)}},G=function(t,e){t.notified||(t.notified=!0,x((function(){for(var r,n=t.reactions;r=n.get();)K(r,t);t.notified=!1,e&&!t.rejection&&J(t)})))},q=function(t,e,r){var n,i;V?((n=F.createEvent("Event")).promise=e,n.reason=r,n.initEvent(t,!1,!0),u.dispatchEvent(n)):n={promise:e,reason:r},!I&&(i=u["on"+t])?i(n):t===U&&S("Unhandled promise rejection",r)},J=function(t){l(w,u,(function(){var e,r=t.facade,n=t.value;if(Y(t)&&(e=A((function(){c?$.emit("unhandledRejection",n,r):q(U,r,n)})),t.rejection=c||Y(t)?2:1,e.error))throw e.value}))},Y=function(t){return 1!==t.rejection&&!t.parent},X=function(t){l(w,u,(function(){var e=t.facade;c?$.emit("rejectionHandled",e):q("rejectionhandled",e,t.value)}))},Q=function(t,e,r){return function(n){t(e,n,r)}},Z=function(t,e,r){t.done||(t.done=!0,r&&(t=r),t.value=e,t.state=2,G(t,!0))},tt=function(t,e,r){if(!t.done){t.done=!0,r&&(t=r);
25976try{if(t.facade===e)throw new D("Promise can't be resolved itself");var n=W(e);n?x((function(){var r={done:!1};try{l(n,e,Q(tt,r,t),Q(Z,r,t))}catch(e){Z(r,e,t)}})):(t.value=e,t.state=1,G(t,!1))}catch(e){Z({done:!1},e,t)}}};if(P&&(R=(B=function(t){y(this,R),v(t),l(n,this);var e=M(this);try{t(Q(tt,e),Q(Z,e))}catch(t){Z(e,t)}}).prototype,(n=function(t){L(this,{type:C,done:!1,notified:!1,parent:!1,reactions:new O,rejection:!1,state:0,value:null})}).prototype=f(R,"then",(function(t,e){var r=M(this),n=H(b(this,B));return r.parent=!0,n.ok=!g(t)||t,n.fail=g(e)&&e,n.domain=c?$.domain:void 0,0===r.state?r.reactions.add(n):x((function(){K(n,r)})),n.promise})),i=function(){var t=new n,e=M(t);this.promise=t,this.resolve=Q(tt,e),this.reject=Q(Z,e)},_.f=H=function(t){return t===B||undefined===t?new i(t):z(t)},!a&&g(k)&&N!==Object.prototype)){o=N.then,j||f(N,"then",(function(t,e){var r=this;return new B((function(t,e){l(o,r,t,e)})).then(t,e)}),{unsafe:!0});try{delete N.constructor}catch(t){}h&&h(N,R)}s({global:!0,constructor:!0,wrap:!0,forced:P},{Promise:B}),p(B,C,!1,!0),d(C)},8810:(t,e,r)=>{"use strict";var n=r(8052),i=r(3071).f,o=r(671),s=r(5236),a=r(1941),c=r(1704),u=r(2360);t.exports=function(t,e){var r,l,f,h,p,d=t.target,v=t.global,g=t.stat;if(r=v?n:g?n[d]||a(d,{}):n[d]&&n[d].prototype)for(l in e){if(h=e[l],f=t.dontCallGetSet?(p=i(r,l))&&p.value:r[l],!u(v?l:d+(g?".":"#")+l,t.forced)&&void 0!==f){if(typeof h==typeof f)continue;c(h,f)}(t.sham||f&&f.sham)&&o(h,"sham",!0),s(r,l,h,t)}}},8819:(t,e,r)=>{"use strict";var n=r(6005).f,i=r(4461),o=r(4175)("toStringTag");t.exports=function(t,e,r){t&&!r&&(t=t.prototype),t&&!i(t,o)&&n(t,o,{configurable:!0,value:e})}},8845:(t,e,r)=>{"use strict";var n=r(1948),i=r(1441),o=r(4102),s=r(4175)("species"),a=Array;t.exports=function(t){var e;return n(t)&&(e=t.constructor,(i(e)&&(e===a||n(e.prototype))||o(e)&&null===(e=e[s]))&&(e=void 0)),void 0===e?a:e}},8887:(t,e,r)=>{"use strict";var n=r(1135),i=r(7585),o=r(1361),s=t.exports;s.extend=f,s.indexOf=function(t,e){for(var r=0,n=t.length;r<n;r++)if(t[r]===e)return r;return-1},s.escapeExpression=function(t){if("string"!=typeof t){if(t&&t.toHTML)return t.toHTML();if(null==t)return"";if(!t)return t+"";t=""+t}if(!u.test(t))return t;return t.replace(c,l)},s.isEmpty=function(t){if(0===t||"boolean"==typeof t)return!1;if(null==t)return!0;s.isObject(t)&&(t=Object.keys(t));if(!t.length)return!0;return!1},s.createFrame=function(t){var e=f({},t);return e._parent=t,e},s.blockParams=function(t,e){return t.path=e,t},s.appendContextPath=function(t,e){return(t?t+".":"")+e};var a={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;","=":"&#x3D;"},c=/[&<>"'`=]/g,u=/[&<>"'`=]/;function l(t){return a[t]}function f(t){for(var e=1;e<arguments.length;e++)for(var r in arguments[e])Object.prototype.hasOwnProperty.call(arguments[e],r)&&(t[r]=arguments[e][r]);return t}var h=Object.prototype.toString;s.toString=h;var p=function(t){return"function"==typeof t};p(/x/)&&(s.isFunction=p=function(t){return"function"==typeof t&&"[object Function]"===h.call(t)}),s.isFunction=p;var d=Array.isArray||function(t){return!(!t||"object"!=typeof t)&&"[object Array]"===h.call(t)};s.isArray=d,s.expectedType=function(t,e,r){var o=i.types[e],s=n.inspect(r);return"expected "+t+" to be "+o+" but received "+i(r)+": "+s},s.isBlock=function(t){return s.isOptions(t)&&"function"==typeof t.fn&&"function"==typeof t.inverse},s.fn=function(t,e,r){return s.isOptions(t)?s.fn("",t,r):s.isOptions(e)?s.fn(t,{},e):s.isBlock(r)?r.fn(e):t},s.inverse=function(t,e,r){return s.isOptions(t)?s.identity("",t,r):s.isOptions(e)?s.inverse(t,{},e):s.isBlock(r)?r.inverse(e):t},s.value=function(t,e,r){return s.isOptions(t)?s.value(null,t,r):s.isOptions(e)?s.value(t,{},e):s.isBlock(r)?t?r.fn(e):r.inverse(e):t},s.isOptions=function(t){return s.isObject(t)&&s.isObject(t.hash)},s.isUndefined=function(t){return null==t||s.isOptions(t)&&null!=t.hash},s.isApp=function(t){return s.isObject(t)&&s.isObject(t.options)&&s.isObject(t.app)},s.options=function(t,e,r){if(s.isOptions(t))return s.options({},e,t);if(s.isOptions(e))return s.options(t,r,e);r=r||{},s.isOptions(r)||(e=Object.assign({},e,r));var n=Object.assign({},e,r.hash);return s.isObject(t)&&(n=Object.assign({},t.options,n)),n[r.name]&&(n=Object.assign({},n[r.name],n)),n},s.context=function(t,e,r){if(s.isOptions(t))return s.context({},e,t);if(s.isOptions(e))return s.context(t,r,e);var n=s.isApp(t)?t.context:{};r=r||{},s.isOptions(r)||(e=Object.assign({},e,r)),s.isOptions(r)&&!0===r.hash.root&&(e=Object.assign({},r.data.root,e));var i=Object.assign({},n,e,r.hash);return s.isApp(t)||(i=Object.assign({},t,i)),s.isApp(t)&&t.view&&t.view.data&&(i=Object.assign({},i,t.view.data)),i},s.isObject=function(t){return"object"===o(t)},s.result=function(t){return"function"==typeof t?t.apply(this,[].slice.call(arguments,1
25976)):t},s.identity=function(t){return t},s.isString=function(t){return"string"==typeof t&&""!==t},s.arrayify=function(t){return null!=t?Array.isArray(t)?t:[t]:[]},s.tryParse=function(t){try{return JSON.parse(t)}catch(t){}return{}}},8948:(t,e,r)=>{"use strict";var n=r(8052),i=r(2675),o=r(2484),s=r(7267),a=r(5150).trim,c=r(4912),u=o("".charAt),l=n.parseFloat,f=n.Symbol,h=f&&f.iterator,p=1/l(c+"-0")!=-1/0||h&&!i((function(){l(Object(h))}));t.exports=p?function(t){var e=a(s(t)),r=l(e);return 0===r&&"-"===u(e,0)?-0:r}:l},8969:(t,e,r)=>{"use strict";var n=r(51),i=r(4834);t.exports=function(t){return n(i(t))}},8994:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>f});r(8037);var n=r(2561),i=r(6710),o=r(3008),s=r(3134),a=r(6973),c=(r(3348),r(1759),r(2901),r(6782)),u=r(5413);function l(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(l=function(){return!!t})()}var f=function(t){function e(){return(0,n.A)(this,e),t=this,r=e,i=arguments,r=(0,s.A)(r),(0,o.A)(t,l()?Reflect.construct(r,i||[],(0,s.A)(t).constructor):r.apply(t,i));var t,r,i}return(0,a.A)(e,t),(0,i.A)(e,[{key:"connect",value:function(){var t=u.N.compile('\n            <script type="text/x-template" data-modal-dialog-opener-target="template">\n                {{#> modules/modal-dialog variant="full" label="Dimensions"}}\n                <div\n                    class="prd-root of-standalone prd-utility-body-medium"\n                    data-controller="standalone-content-loader"\n                    data-standalone-content-loader-url-value="'.concat(this.urlValue,'"\n                >\n                </div>\n                {{/modules/modal-dialog}}\n            <\/script>\n        '));this.element.outerHTML=t()}}])}(c.xI);f.values={url:String}},9004:(t,e,r)=>{"use strict";var n=r(1904),i=r(4334),o=r(3588),s=n(n.bind);t.exports=function(t,e){return i(t),void 0===e?t:o?s(t,e):function(){return t.apply(e,arguments)}}},9017:(t,e,r)=>{var n=r(1354),i=Object.prototype.toString;t.exports=function(t){if(void 0===t)return"undefined";if(null===t)return"null";if(!0===t||!1===t||t instanceof Boolean)return"boolean";if("string"==typeof t||t instanceof String)return"string";if("number"==typeof t||t instanceof Number)return"number";if("function"==typeof t||t instanceof Function)return"function";if(void 0!==Array.isArray&&Array.isArray(t))return"array";if(t instanceof RegExp)return"regexp";if(t instanceof Date)return"date";var e=i.call(t);return"[object RegExp]"===e?"regexp":"[object Date]"===e?"date":"[object Arguments]"===e?"arguments":"[object Error]"===e?"error":n(t)?"buffer":"[object Set]"===e?"set":"[object WeakSet]"===e?"weakset":"[object Map]"===e?"map":"[object WeakMap]"===e?"weakmap":"[object Symbol]"===e?"symbol":"[object Int8Array]"===e?"int8array":"[object Uint8Array]"===e?"uint8array":"[object Uint8ClampedArray]"===e?"uint8clampedarray":"[object Int16Array]"===e?"int16array":"[object Uint16Array]"===e?"uint16array":"[object Int32Array]"===e?"int32array":"[object Uint32Array]"===e?"uint32array":"[object Float32Array]"===e?"float32array":"[object Float64Array]"===e?"float64array":"object"}},9028:(t,e,r)=>{"use strict";var n=r(133),i=r(3625),o=r(2484),s=r(7808),a=r(2675),c=r(659),u=r(321),l=r(9601),f=r(7391),h=r(3026),p=r(7267),d=r(4834),v=r(8785),g=r(9538),m=r(1650),y=r(9198),b=r(4175)("replace"),w=Math.max,x=Math.min,S=o([].concat),A=o([].push),O=o("".indexOf),E=o("".slice),k="$0"==="a".replace(/./,"$0"),T=!!/./[b]&&""===/./[b]("a","$0");s("replace",(function(t,e,r){var o=T?"$":"$0";return[function(t,r){var n=d(this),o=l(t)?void 0:g(t,b);return o?i(o,t,n,r):i(e,p(n),t,r)},function(t,i){var s=c(this),a=p(t);if("string"==typeof i&&-1===O(i,o)&&-1===O(i,"$<")){var l=r(e,s,a,i);if(l.done)return l.value}var d=u(i);d||(i=p(i));var g,b=s.global;b&&(g=s.unicode,s.lastIndex=0);for(var k,T=[];null!==(k=y(s,a))&&(A(T,k),b);){""===p(k[0])&&(s.lastIndex=v(a,h(s.lastIndex),g))}for(var _,C="",P=0,I=0;I<T.length;I++){for(var j,M=p((k=T[I])[0]),L=w(x(f(k.index),a.length),0),N=[],B=1;B<k.length;B++)A(N,void 0===(_=k[B])?_:String(_));var R=k.groups;if(d){var D=S([M],N,L,a);void 0!==R&&A(D,R),j=p(n(i,void 0,D))}else j=m(M,a,L,N,R,i);L>=P&&(C+=E(a,P,L)+j,P=L+M.length)}return C+E(a,P)}]}),!!a((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$<a>")}))||!k||T)},9064:(t,e,r)=>{"use strict";var n=r(8810),i=r(1072),o=r(4334),s=r(659),a=r(779);n({target:"Iterator",proto:!0,real:!0},{find:function(t){s(this),o(t);var e=a(this),r=0;return i(e,(function(e,n){if(t(e,r++))return n(e)}),{IS_RECORD:!0,INTERRUPTED:!0}).result}})},9070:(t,e,r)=>{"use strict";r.d(e,{A:()=>s});var n=[],i=new MessageChannel,o=function(){this.postMessage(void 0)}.bind(i.port2);i.port1.onmessage=function(){var t=n;n=[];for(var e=performance.now(),r=0;r<t.length;r++)t[r](e)},i=null;const s=function(t){1===n.push(t)&&requestAnimationFrame(o)}},9073:(t,e)=>{"use strict";e.f=Object.getOwnPropertySymbols},9090:t=>{"use strict";
25976t.exports="undefined"!=typeof Reflect&&Reflect.getPrototypeOf||null},9111:(t,e,r)=>{"use strict";var n=r(8810),i=r(2675),o=r(8969),s=r(3071).f,a=r(2128);n({target:"Object",stat:!0,forced:!a||i((function(){s(1)})),sham:!a},{getOwnPropertyDescriptor:function(t,e){return s(o(t),e)}})},9118:(t,e,r)=>{"use strict";var n=r(9997),i=function(){return!!n};i.hasArrayLengthDefineBug=function(){if(!n)return null;try{return 1!==n([],"length",{value:1}).length}catch(t){return!0}},t.exports=i},9198:(t,e,r)=>{"use strict";var n=r(3625),i=r(659),o=r(321),s=r(2748),a=r(863),c=TypeError;t.exports=function(t,e){var r=t.exec;if(o(r)){var u=n(r,t,e);return null!==u&&i(u),u}if("RegExp"===s(t))return n(a,t,e);throw new c("RegExp#exec called on incompatible receiver")}},9200:(t,e,r)=>{"use strict";var n=r(8810),i=r(4461),o=r(3401),s=r(8379),a=r(6445),c=r(92),u=a("symbol-to-string-registry");n({target:"Symbol",stat:!0,forced:!c},{keyFor:function(t){if(!o(t))throw new TypeError(s(t)+" is not a symbol");if(i(u,t))return u[t]}})},9221:t=>{t.exports=function(t){return t&&"object"==typeof t&&"function"==typeof t.copy&&"function"==typeof t.fill&&"function"==typeof t.readUInt8}},9224:(t,e,r)=>{"use strict";var n=r(8810),i=r(1072),o=r(4334),s=r(659),a=r(779);n({target:"Iterator",proto:!0,real:!0},{every:function(t){s(this),o(t);var e=a(this),r=0;return!i(e,(function(e,n){if(!t(e,r++))return n()}),{IS_RECORD:!0,INTERRUPTED:!0}).stopped}})},9249:(t,e,r)=>{"use strict";var n=r(8649),i=r(6526),o=r(8770);t.exports=function(t){for(var e=n(this),r=o(e),s=arguments.length,a=i(s>1?arguments[1]:void 0,r),c=s>2?arguments[2]:void 0,u=void 0===c?r:i(c,r);u>a;)e[a++]=t;return e}},9272:(t,e,r)=>{"use strict";r.d(e,{W:()=>s});var n=r(7431),i=r(6192),o=r.n(i);r(8740),r(6770),r(1759),r(6558),r(995);function s(t,e,r){return a.apply(this,arguments)}function a(){return a=(0,n.A)(o().mark((function t(e,r,n){var i,s,a=arguments;return o().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:i=!1,s=setTimeout((function(){i=!0}),a.length>3&&void 0!==a[3]?a[3]:3e3);case 3:if(!i){t.next=6;break}throw new Error("Timed out in waitForStyleToBeSet");case 6:if(!(getComputedStyle(e)[r]===n)){t.next=10;break}return clearTimeout(s),t.abrupt("return");case 10:return t.next=12,new Promise(requestAnimationFrame);case 12:t.next=3;break;case 14:case"end":return t.stop()}}),t)}))),a.apply(this,arguments)}},9304:t=>{"use strict";t.exports=ReferenceError},9311:(t,e,r)=>{"use strict";var n=r(2961).forEach,i=r(8754)("forEach");t.exports=i?[].forEach:function(t){return n(this,t,arguments.length>1?arguments[1]:void 0)}},9323:t=>{"use strict";t.exports=function(t){var e=typeof t;if("string"===e||t instanceof String){if(!t.trim())return!1}else if("number"!==e&&!(t instanceof Number))return!1;return t-t+1>=0}},9324:(t,e,r)=>{var n,i;!function(o,s){"use strict";void 0===(i="function"==typeof(n=s)?n.call(e,r,e,t):n)||(t.exports=i)}(window,(function(){"use strict";var t=function(){var t=window.Element.prototype;if(t.matches)return"matches";if(t.matchesSelector)return"matchesSelector";for(var e=["webkit","moz","ms","o"],r=0;r<e.length;r++){var n=e[r]+"MatchesSelector";if(t[n])return n}}();return function(e,r){return e[t](r)}}))},9343:(t,e,r)=>{"use strict";var n=r(8810),i=r(1072),o=r(4334),s=r(659),a=r(779);n({target:"Iterator",proto:!0,real:!0},{some:function(t){s(this),o(t);var e=a(this),r=0;return i(e,(function(e,n){if(t(e,r++))return n()}),{IS_RECORD:!0,INTERRUPTED:!0}).stopped}})},9361:t=>{"use strict";t.exports=SyntaxError},9403:t=>{t.exports=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}},9432:(t,e,r)=>{"use strict";var n=r(2675);t.exports=n((function(){if("function"==typeof ArrayBuffer){var t=new ArrayBuffer(8);Object.isExtensible(t)&&Object.defineProperty(t,"a",{value:8})}}))},9455:(t,e,r)=>{"use strict";var n=r(2484),i=r(2675),o=r(321),s=r(4461),a=r(2128),c=r(4690).CONFIGURABLE,u=r(2718),l=r(6369),f=l.enforce,h=l.get,p=String,d=Object.defineProperty,v=n("".slice),g=n("".replace),m=n([].join),y=a&&!i((function(){return 8!==d((function(){}),"length",{value:8}).length})),b=String(String).split("String"),w=t.exports=function(t,e,r){"Symbol("===v(p(e),0,7)&&(e="["+g(p(e),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),r&&r.getter&&(e="get "+e),r&&r.setter&&(e="set "+e),(!s(t,"
25976name")||c&&t.name!==e)&&(a?d(t,"name",{value:e,configurable:!0}):t.name=e),y&&r&&s(r,"arity")&&t.length!==r.arity&&d(t,"length",{value:r.arity});try{r&&s(r,"constructor")&&r.constructor?a&&d(t,"prototype",{writable:!1}):t.prototype&&(t.prototype=void 0)}catch(t){}var n=f(t);return s(n,"source")||(n.source=m(b,"string"==typeof e?e:"")),t};Function.prototype.toString=w((function(){return o(this)&&h(this).source||u(this)}),"toString")},9467:(t,e,r)=>{"use strict";var n=r(3163),i=r(2484),o=r(4956),s=r(9073),a=r(659),c=i([].concat);t.exports=n("Reflect","ownKeys")||function(t){var e=o.f(a(t)),r=s.f;return r?c(e,r(t)):e}},9535:t=>{"use strict";t.exports=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var t={},e=Symbol("test"),r=Object(e);if("string"==typeof e)return!1;if("[object Symbol]"!==Object.prototype.toString.call(e))return!1;if("[object Symbol]"!==Object.prototype.toString.call(r))return!1;for(var n in t[e]=42,t)return!1;if("function"==typeof Object.keys&&0!==Object.keys(t).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(t).length)return!1;var i=Object.getOwnPropertySymbols(t);if(1!==i.length||i[0]!==e)return!1;if(!Object.prototype.propertyIsEnumerable.call(t,e))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var o=Object.getOwnPropertyDescriptor(t,e);if(42!==o.value||!0!==o.enumerable)return!1}return!0}},9538:(t,e,r)=>{"use strict";var n=r(4334),i=r(9601);t.exports=function(t,e){var r=t[e];return i(r)?void 0:n(r)}},9541:(t,e,r)=>{var n=r(998).default;function i(){"use strict";t.exports=i=function(){return r},t.exports.__esModule=!0,t.exports.default=t.exports;var e,r={},o=Object.prototype,s=o.hasOwnProperty,a=Object.defineProperty||function(t,e,r){t[e]=r.value},c="function"==typeof Symbol?Symbol:{},u=c.iterator||"@@iterator",l=c.asyncIterator||"@@asyncIterator",f=c.toStringTag||"@@toStringTag";function h(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{h({},"")}catch(e){h=function(t,e,r){return t[e]=r}}function p(t,e,r,n){var i=e&&e.prototype instanceof w?e:w,o=Object.create(i.prototype),s=new M(n||[]);return a(o,"_invoke",{value:C(t,r,s)}),o}function d(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}r.wrap=p;var v="suspendedStart",g="suspendedYield",m="executing",y="completed",b={};function w(){}function x(){}function S(){}var A={};h(A,u,(function(){return this}));var O=Object.getPrototypeOf,E=O&&O(O(L([])));E&&E!==o&&s.call(E,u)&&(A=E);var k=S.prototype=w.prototype=Object.create(A);function T(t){["next","throw","return"].forEach((function(e){h(t,e,(function(t){return this._invoke(e,t)}))}))}function _(t,e){function r(i,o,a,c){var u=d(t[i],t,o);if("throw"!==u.type){var l=u.arg,f=l.value;return f&&"object"==n(f)&&s.call(f,"__await")?e.resolve(f.__await).then((function(t){r("next",t,a,c)}),(function(t){r("throw",t,a,c)})):e.resolve(f).then((function(t){l.value=t,a(l)}),(function(t){return r("throw",t,a,c)}))}c(u.arg)}var i;a(this,"_invoke",{value:function(t,n){function o(){return new e((function(e,i){r(t,n,e,i)}))}return i=i?i.then(o,o):o()}})}function C(t,r,n){var i=v;return function(o,s){if(i===m)throw Error("Generator is already running");if(i===y){if("throw"===o)throw s;return{value:e,done:!0}}for(n.method=o,n.arg=s;;){var a=n.delegate;if(a){var c=P(a,n);if(c){if(c===b)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(i===v)throw i=y,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);i=m;var u=d(t,r,n);if("normal"===u.type){if(i=n.done?y:g,u.arg===b)continue;return{value:u.arg,done:n.done}}"throw"===u.type&&(i=y,n.method="throw",n.arg=u.arg)}}}function P(t,r){var n=r.method,i=t.iterator[n];if(i===e)return r.delegate=null,"throw"===n&&t.iterator.return&&(r.method="return",r.arg=e,P(t,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),b;var o=d(i,t.iterator,r.arg);
vendor: 1,742 bytes, line 25976
25976if("throw"===o.type)return r.method="throw",r.arg=o.arg,r.delegate=null,b;var s=o.arg;return s?s.done?(r[t.resultName]=s.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=e),r.delegate=null,b):s:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,b)}function I(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function j(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function M(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(I,this),this.reset(!0)}function L(t){if(t||""===t){var r=t[u];if(r)return r.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var i=-1,o=function r(){for(;++i<t.length;)if(s.call(t,i))return r.value=t[i],r.done=!1,r;return r.value=e,r.done=!0,r};return o.next=o}}throw new TypeError(n(t)+" is not iterable")}return x.prototype=S,a(k,"constructor",{value:S,configurable:!0}),a(S,"constructor",{value:x,configurable:!0}),x.displayName=h(S,f,"GeneratorFunction"),r.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===x||"GeneratorFunction"===(e.displayName||e.name))},r.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,S):(t.__proto__=S,h(t,f,"GeneratorFunction")),t.prototype=Object.create(k),t},r.awrap=function(t){return{__await:t}},T(_.prototype),h(_.prototype,l,(function(){return this})),r.AsyncIterator=_,r.async=function(t,e,n,i,o){void 0===o&&(o=Promise);var s=new _(p(t,e,n,i),o);return r.isGeneratorFunction(e)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},T(k),h(k,f,"Generator"),h(k,u,(function(){return this})),h(k,"toString",(function(){return"[object Generator]"}
25976)),r.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},r.values=L,M.prototype={constructor:M,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(j),!t)for(var r in this)"t"===r.charAt(0)&&s.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=e)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var r=this;function n(n,i){return a.type="throw",a.arg=t,r.next=n,i&&(r.method="next",r.arg=e),!!i}for(var i=this.tryEntries.length-1;i>=0;--i){var o=this.tryEntries[i],a=o.completion;if("root"===o.tryLoc)return n("end");if(o.tryLoc<=this.prev){var c=s.call(o,"catchLoc"),u=s.call(o,"finallyLoc");if(c&&u){if(this.prev<o.catchLoc)return n(o.catchLoc,!0);if(this.prev<o.finallyLoc)return n(o.finallyLoc)}else if(c){if(this.prev<o.catchLoc)return n(o.catchLoc,!0)}else{if(!u)throw Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return n(o.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&s.call(n,"finallyLoc")&&this.prev<n.finallyLoc){var i=n;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var o=i?i.completion:{};return o.type=t,o.arg=e,i?(this.method="next",this.next=i.finallyLoc,b):this.complete(o)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),b},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),j(r),b}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var i=n.arg;j(r)}return i}}throw Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:L(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),b}},r}t.exports=i,t.exports.__esModule=!0,t.exports.default=t.exports},9585:(t,e,r)=>{"use strict";var n=r(8810),i=r(517);n({target:"Iterator",proto:!0,real:!0,forced:r(6007)},{map:i})},9592:(t,e,r)=>{var n=r(4360),i=r(9403);t.exports=function(t){return null!=t&&i(t.length)&&!n(t)}},9601:t=>{"use strict";t.exports=function(t){return null==t}},9630:(t,e,r)=>{"use strict";var n=r(469),i=r(24),o=r(1530),s=r(7009);t.exports=s||n.call(o,i)},9644:(t,e,r)=>{"use strict";var n=r(2675);t.exports=!n((function(){return Object.isExtensible(Object.preventExtensions({}))}))},9650:()=>{!function(t){"use strict";function e(){return f.createDocumentFragment()}function r(t){return f.createElement(t)}function n(t,e){if(!t)throw new Error("Failed to construct "+e+": 1 argument required, but only 0 present.")}function i(t){if(1===t.length)return o(t[0]);for(var r=e(),n=M.call(t),i=0;i<t.length;i++)r.appendChild(o(n[i]));return r}function o(t){return"object"==typeof t?t:f.createTextNode(t)}for(var s,a,c,u,l,f=t.document,h=Object.prototype.hasOwnProperty,p=Object.defineProperty||function(t,e,r){return h.call(r,"value")?t[e]=r.value:(h.call(r,"get")&&t.__defineGetter__(e,r.get),h.call(r,"set")&&t.__defineSetter__(e,r.set)),t},d=[].indexOf||function(t){for(var e=this.length;e--&&this[e]!==t;);return e},v=function(t){var e=void 0===t.className,r=e?t.getAttribute("class")||"":t.className,n=e||"object"==typeof r,i=(n?e?r:r.baseVal:r).replace(m,"");i.length&&j.push.apply(this,i.split(y)),this._isSVG=n,this._=t},g={get:function(){return new v(this)},set:function(){}},m=/^\s+|\s+$/g,y=/\s+/,b="classList",w=function(t,e){return this.contains(t)?e||this.remove(t):(void 0===e||e)&&(e=!0,this.add(t)),!!e},x=t.DocumentFragment&&DocumentFragment.prototype,S=t.Node,A=(S||Element).prototype,O=t.CharacterData||S,E=O&&O.prototype,k=t.DocumentType,T=k&&k.prototype,_=(t.Element||S||t.HTMLElement).prototype,C=t.HTMLSelectElement||r("select").constructor,P=C.prototype.remove,I=t.SVGElement,j=["matches",_.matchesSelector||_.webkitMatchesSelector||_.khtmlMatchesSelector||_.mozMatchesSelector||_.msMatchesSelector||_.oMatchesSelector||function(t){var e=this.parentNode;return!!e&&-1<d.call(e.querySelectorAll(t),this)},"closest",function(t){for(var e,r=this;(e=r&&r.matches)&&!r.matches(t);)r=r.parentNode;return e?r:null},"prepend",function(){var t=this.firstChild,e=i(arguments);t?this.insertBefore(e,t):this.appendChild(e)},"append",function(){this.appendChild(i(arguments))},"before",function(){var t=this.parentNode;t&&t.insertBefore(i(arguments),this)},"after",function(){var t=this.parentNode,e=this.nextSibling,r=i(arguments);t&&(e?t.insertBefore(r,e):t.appendChild(r))},"toggleAttribute",function(t,e){var r=this.hasAttribute(t);return 1<arguments.length?r&&!e?this.removeAttribute(t):e&&!r&&this.setAttribute(t,""):r?this.removeAttribute(t):this.setAttribute(t,""),this.hasAttribute(t)},"replace",function(){this.replaceWith.apply(this,arguments)},"replaceWith",function(){var t=this.parentNode;t&&t.replaceChild(i(arguments),this)},"remove",function(){var t=this.parentNode;t&&t.removeChild(this)}],M=j.slice,L=j.length;L;L-=2)if((a=j[L-2])in _||(_[a]=j[L-1]),"remove"!==a||P._dom4||((C.prototype[a]=function(){return 0<arguments.length?P.apply(this,arguments):_.remove.call(this)})._dom4=!0),/^(?:before|after|replace|replaceWith|remove)$/.test(a)&&(O&&!(a in E)&&
vendor: 5,307 bytes, line 25976
25976(E[a]=j[L-1]),k&&!(a in T)&&(T[a]=j[L-1])),/^(?:append|prepend)$/.test(a))if(x)a in x||(x[a]=j[L-1]);else try{e().constructor.prototype[a]=j[L-1]}catch(t){}var N;r("a").matches("a")||(_[a]=(N=_[a],function(t){return N.call(this.parentNode?this:e().appendChild(this),t)})),v.prototype={length:0,add:function(){for(var t,e=0;e<arguments.length;e++)t=arguments[e],this.contains(t)||j.push.call(this,a);this._isSVG?this._.setAttribute("class",""+this):this._.className=""+this},contains:function(t){return function(e){return L=t.call(this,a=function(t){if(!t)throw"SyntaxError";if(y.test(t))throw"InvalidCharacterError";return t}(e)),-1<L}}([].indexOf||function(t){for(L=this.length;L--&&this[L]!==t;);return L}),item:function(t){return this[t]||null},remove:function(){for(var t,e=0;e<arguments.length;e++)t=arguments[e],this.contains(t)&&j.splice.call(this,L,1);this._isSVG?this._.setAttribute("class",""+this):this._.className=""+this},toggle:w,toString:function(){return j.join.call(this," ")}},I&&!(b in I.prototype)&&p(I.prototype,b,g),b in f.documentElement?((u=r("div")[b]).add("a","b","a"),"a b"!=u&&("add"in(c=u.constructor.prototype)||(c=t.TemporaryTokenList.prototype),l=function(t){return function(){for(var e=0;e<arguments.length;)t.call(this,arguments[e++])}},c.add=l(c.add),c.remove=l(c.remove),c.toggle=w)):p(_,b,g),"contains"in A||p(A,"contains",{value:function(t){for(;t&&t!==this;)t=t.parentNode;return this===t}}),"head"in f||p(f,"head",{get:function(){return s||(s=f.getElementsByTagName("head")[0])}}),function(){for(var e,r=t.requestAnimationFrame,n=t.cancelAnimationFrame,i=["o","ms","moz","webkit"],o=i.length;!n&&o--;)r=r||t[i[o]+"RequestAnimationFrame"],n=t[i[o]+"CancelAnimationFrame"]||t[i[o]+"CancelRequestAnimationFrame"];n||(r?(e=r,r=function(t){var r=!0;return e((function(){r&&t.apply(this,arguments)})),function(){r=!1}},n=function(t){t()}):(r=function(t){return setTimeout(t,15,15)},n=function(t){clearTimeout(t)})),t.requestAnimationFrame=r,t.cancelAnimationFrame=n}();try{new t.CustomEvent("?")}catch(e){t.CustomEvent=function(t,e){function r(t,e,r,n){this.initEvent(t,e,r),this.detail=n}return function(n,i){var o=f.createEvent(t);if("string"!=typeof n)throw new Error("An event name must be provided");return"Event"==t&&(o.initCustomEvent=r),null==i&&(i=e),o.initCustomEvent(n,i.bubbles,i.cancelable,i.detail),o}}(t.CustomEvent?"CustomEvent":"Event",{bubbles:!1,cancelable:!1,detail:null})}try{new Event("_")}catch(e){e=function(t){function e(t,e){n(arguments.length,"Event");var r=f.createEvent("Event");return e||(e={}),r.initEvent(t,!!e.bubbles,!!e.cancelable),r}return e.prototype=t.prototype,e}(t.Event||function(){}),p(t,"Event",{value:e}),Event!==e&&(Event=e)}try{new KeyboardEvent("_",{})}catch(e){e=function(e){var r,i=0,o={char:"",key:"",location:0,ctrlKey:!1,shiftKey:!1,altKey:!1,metaKey:!1,altGraphKey:!1,repeat:!1,locale:navigator.language,detail:0,bubbles:!1,cancelable:!1,keyCode:0,charCode:0,which:0};try{var s=f.createEvent("KeyboardEvent");s.initKeyboardEvent("keyup",!1,!1,t,"+",3,!0,!1,!0,!1,!1),i="+"==(s.keyIdentifier||s.key)&&3==(s.keyLocation||s.location)&&(s.ctrlKey?s.altKey?1:3:s.shiftKey?2:4)||9}catch(t){}function a(t,e,r){try{e[t]=r[t]}catch(t){}}function c(e,s){n(arguments.length,"KeyboardEvent"),s=function(t,e){for(var r in e)e.hasOwnProperty(r)&&!e.hasOwnProperty.call(t,r)&&(t[r]=e[r]);return t}(s||{},o);var c,u=f.createEvent(r),l=s.ctrlKey,h=s.shiftKey,p=s.altKey,d=s.metaKey,v=s.altGraphKey,g=i>3?function(t){for(var e=[],r=["ctrlKey","Control","shiftKey","Shift","altKey","Alt","metaKey","Meta","altGraphKey","AltGraph"],n=0;n<r.length;n+=2)t[r[n]]&&e.push(r[n+1]);return e.join(" ")}(s):null,m=String(s.key),y=String(s.char),b=s.location,w=s.keyCode||(s.keyCode=m)&&m.charCodeAt(0)||0,x=s.charCode||(s.charCode=y)&&y.charCodeAt(0)||0,S=s.bubbles,A=s.cancelable,O=s.repeat,E=s.locale,k=s.view||t;if(s.which||(s.which=s.keyCode),"initKeyEvent"in u)u.initKeyEvent(e,S,A,k,l,p,h,d,w,x);else if(0<i&&"initKeyboardEvent"in u){switch(c=[e,S,A,k],i){case 1:c.push(m,b,l,h,p,d,v);break;case 2:c.push(l,p,h,d,w,x);break;case 3:c.push(m,b,l,p,h,d,v);break;case 4:c.push(m,b,g,O,E);break;default:c.push(char,m,b,g,O,E)}u.initKeyboardEvent.apply(u,c)}else u.initEvent(e,S,A);for(m in u)o.hasOwnProperty(m)&&u[m]!==s[m]&&a(m,u,s);return u}return r=0<i?"KeyboardEvent":"Event",c.prototype=e.prototype,c}(t.KeyboardEvent||function(){}),p(t,"KeyboardEvent",{value:e}),KeyboardEvent!==e&&(KeyboardEvent=e)}try{new MouseEvent("_",{})}catch(e){e=function(e){function r(e,r){n(arguments.length,"MouseEvent");var i=f.createEvent("MouseEvent");return r||(r={}),i.initMouseEvent(e,!!r.bubbles,!!r.cancelable,r.view||t,r.detail||1,r.screenX||0,r.screenY||0,r.clientX||0,r.clientY||0,!!r.ctrlKey,!!r.altKey,!!r.shiftKey,!!r.metaKey,r.button||0,r.relatedTarget||null),i}return r.prototype=e.prototype,r}(t.MouseEvent||function(){}),p(t,"MouseEvent",{value:e}),MouseEvent!==e&&(MouseEvent=e)}f.querySelectorAll("*").forEach||function(){function t(t){var e=t.querySelectorAll;t.querySelectorAll=function(t){var r=e.call(this,t);return r.forEach=Array.prototype.forEach,r}}t(f),t(Element.prototype)}();try{f.querySelector(":scope *")}catch(t){!function(){var t="data-scope-"+(1e9*Math.random()>>>0),e=Element.prototype,r=e.querySelector,n=e.querySelectorAll;
25976function i(e,r,n){if(e.type!=f.ELEMENT_NODE)return r.call(e,n);e.setAttribute(t,null);var i=r.call(e,String(n).replace(/(^|,\s*)(:scope([ >]|$))/g,(function(e,r,n,i){return r+"["+t+"]"+(i||" ")})));return e.removeAttribute(t),i}e.querySelector=function(t){return i(this,r,t)},e.querySelectorAll=function(t){return i(this,n,t)}}()}}(window),function(t){"use strict";var e=t.WeakMap||function(){var t,e=0,r=!1,n=!1;function i(e,i,o){n=o,r=!1,t=void 0,e.dispatchEvent(i)}function o(t){this.value=t}function a(){e++,this.__ce__=new s("@DOMMap:"+e+Math.random())}return o.prototype.handleEvent=function(e){r=!0,n?e.currentTarget.removeEventListener(e.type,this,!1):t=this.value},a.prototype={constructor:a,delete:function(t){return i(t,this.__ce__,!0),r},get:function(e){i(e,this.__ce__,!1);var r=t;return t=void 0,r},has:function(t){return i(t,this.__ce__,!1),r},set:function(t,e){return i(t,this.__ce__,!0),t.addEventListener(this.__ce__.type,new o(e),!1),this}},a}();function r(){}function n(t,e,r){function i(t){i.once&&(t.currentTarget.removeEventListener(t.type,e,i),i.removed=!0),i.passive&&(t.preventDefault=n.preventDefault),"function"==typeof i.callback?i.callback.call(this,t):i.callback&&i.callback.handleEvent(t),i.passive&&delete t.preventDefault}return i.type=t,i.callback=e,i.capture=!!r.capture,i.passive=!!r.passive,i.once=!!r.once,i.removed=!1,i}r.prototype=(Object.create||Object)(null),n.preventDefault=function(){};var i,o,s=t.CustomEvent,a=t.dispatchEvent,c=t.addEventListener,u=t.removeEventListener,l=0,f=function(){l++},h=[].indexOf||function(t){for(var e=this.length;e--&&this[e]!==t;);return e},p=function(t){return"".concat(t.capture?"1":"0",t.passive?"1":"0",t.once?"1":"0")};try{c("_",f,{once:!0}),a(new s("_")),a(new s("_")),u("_",f,{once:!0})}catch(t){}1!==l&&(o=new e,i=function(t){if(t){var e=t.prototype;e.addEventListener=function(t){return function(e,i,s){if(s&&"boolean"!=typeof s){var a,c,u,l=o.get(this),f=p(s);l||o.set(this,l=new r),e in l||(l[e]={handler:[],wrap:[]}),c=l[e],(a=h.call(c.handler,i))<0?(a=c.handler.push(i)-1,c.wrap[a]=u=new r):u=c.wrap[a],f in u||(u[f]=n(e,i,s),t.call(this,e,u[f],u[f].capture))}else t.call(this,e,i,s)}}(e.addEventListener),e.removeEventListener=function(t){return function(e,r,n){if(n&&"boolean"!=typeof n){var i,s,a,c,u=o.get(this);if(u&&e in u&&(a=u[e],-1<(s=h.call(a.handler,r))&&(i=p(n))in(c=a.wrap[s]))){for(i in t.call(this,e,c[i],c[i].capture),delete c[i],c)return;a.handler.splice(s,1),a.wrap.splice(s,1),0===a.handler.length&&delete u[e]}}else t.call(this,e,r,n)}}(e.removeEventListener)}},t.EventTarget?i(EventTarget):(i(t.Text),i(t.Element||t.HTMLElement),i(t.HTMLDocument),i(t.Window||{prototype:t}),i(t.XMLHttpRequest)))}(self)},9688:(t,e,r)=>{"use strict";var n=r(8810),i=r(8052),o=r(2484),s=r(2360),a=r(5236),c=r(6327),u=r(1072),l=r(5755),f=r(321),h=r(9601),p=r(4102),d=r(2675),v=r(9976),g=r(8819),m=r(9859);t.exports=function(t,e,r){var y=-1!==t.indexOf("Map"),b=-1!==t.indexOf("Weak"),w=y?"set":"add",x=i[t],S=x&&x.prototype,A=x,O={},E=function(t){var e=o(S[t]);a(S,t,"add"===t?function(t){return e(this,0===t?0:t),this}:"delete"===t?function(t){return!(b&&!p(t))&&e(this,0===t?0:t)}:"get"===t?function(t){return b&&!p(t)?void 0:e(this,0===t?0:t)}:"has"===t?function(t){return!(b&&!p(t))&&e(this,0===t?0:t)}:function(t,r){return e(this,0===t?0:t,r),this})};if(s(t,!f(x)||!(b||S.forEach&&!d((function(){(new x).entries().next()})))))A=r.getConstructor(e,t,y,w),c.enable();else if(s(t,!0)){var k=new A,T=k[w](b?{}:-0,1)!==k,_=d((function(){k.has(1)})),C=v((function(t){new x(t)})),P=!b&&d((function(){for(var t=new x,e=5;e--;)t[w](e,e);return!t.has(-0)}));C||((A=e((function(t,e){l(t,S);var r=m(new x,t,A);return h(e)||u(e,r[w],{that:r,AS_ENTRIES:y}),r}))).prototype=S,S.constructor=A),(_||P)&&(E("delete"),E("has"),y&&E("get")),(P||T)&&E(w),b&&S.clear&&delete S.clear}return O[t]=A,n({global:!0,constructor:!0,forced:A!==x},O),g(A,t),b||r.setStrong(A,t,y),A}},9691:t=>{"use strict";var e=Object.prototype.toString,r=Math.max,n=function(t,e){for(var r=[],n=0;n<t.length;n+=1)r[n]=t[n];for(var i=0;i<e.length;i+=1)r[i+t.length]=e[i];return r};t.exports=function(t){var i=this;if("function"!=typeof i||"[object Function]"!==e.apply(i))throw new TypeError("Function.prototype.bind called on incompatible "+i);for(var o,s=function(t,e){for(var r=[],n=e||0,i=0;n<t.length;n+=1,i+=1)r[i]=t[n];return r}
25976(arguments,1),a=r(0,i.length-s.length),c=[],u=0;u<a;u++)c[u]="$"+u;if(o=Function("binder","return function ("+function(t,e){for(var r="",n=0;n<t.length;n+=1)r+=t[n],n+1<t.length&&(r+=e);return r}(c,",")+"){ return binder.apply(this,arguments); }")((function(){if(this instanceof o){var e=i.apply(this,n(s,arguments));return Object(e)===e?e:this}return i.apply(t,n(s,arguments))})),i.prototype){var l=function(){};l.prototype=i.prototype,o.prototype=new l,l.prototype=null}return o}},9704:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>st});r(8037);var n=r(2561),i=r(6710),o=r(3008),s=r(3134),a=r(6973),c=(r(4958),r(5249),r(6160),r(3376),r(1759),r(3544),r(6782));function u(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function l(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?u(Object(r),!0).forEach((function(e){v(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):u(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}function f(t){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},f(t)}function h(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function p(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}function d(t,e,r){return e&&p(t.prototype,e),r&&p(t,r),t}function v(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function g(t){return g=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},g(t)}function m(t,e){return m=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},m(t,e)}function y(t,e){if(e&&("object"==typeof e||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}function b(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=g(t);if(e){var i=g(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return y(this,r)}}function w(){return w="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,r){var n=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=g(t)););return t}(t,e);if(n){var i=Object.getOwnPropertyDescriptor(n,e);return i.get?i.get.call(arguments.length<3?t:r):i.value}},w.apply(this,arguments)}var x={type:"slider",startAt:0,perView:1,focusAt:0,gap:10,autoplay:!1,hoverpause:!0,keyboard:!0,bound:!1,swipeThreshold:80,dragThreshold:120,perSwipe:"",touchRatio:.5,touchAngle:45,animationDuration:400,rewind:!0,rewindDuration:800,animationTimingFunc:"cubic-bezier(.165, .840, .440, 1)",waitForTransition:!0,throttle:10,direction:"ltr",peek:0,cloningRatio:1,breakpoints:{},classes:{swipeable:"glide--swipeable",dragging:"glide--dragging",direction:{ltr:"glide--ltr",rtl:"glide--rtl"},type:{slider:"glide--slider",carousel:"glide--carousel"},slide:{clone:"glide__slide--clone",active:"glide__slide--active"},arrow:{disabled:"glide__arrow--disabled"},nav:{active:"glide__bullet--active"}}};function S(t){console.error("[Glide warn]: ".concat(t))}function A(t){return parseInt(t)}function O(t){return"string"==typeof t}function E(t){var e=f(t);return"function"===e||"object"===e&&!!t}function k(t){return"function"==typeof t}function T(t){return void 0===t}function _(t){return t.constructor===Array}function C(t,e,r){Object.defineProperty(t,e,r)}function P(t,e){var r=Object.assign({},t,e);if(e.hasOwnProperty("classes")){r.classes=Object.assign({},t.classes,e.classes);["direction","type","slide","arrow","nav"].forEach((function(n){e.classes.hasOwnProperty(n)&&(r.classes[n]=l(l({},t.classes[n]),e.classes[n]))}))}return e.hasOwnProperty("breakpoints")&&(r.breakpoints=Object.assign({},t.breakpoints,e.breakpoints)),r}var I=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};h(this,t),this.events=e,this.hop=e.hasOwnProperty}return d(t,[{key:"on",value:function(t,e){if(!_(t)){this.hop.call(this.events,t)||(this.events[t]=[]);var r=this.events[t].push(e)-1;return{remove:function(){delete this.events[t][r]}}}for(var n=0;n<t.length;n++)this.on(t[n],e)}},{key:"emit",value:function(t,e){if(_(t))for(var r=0;r<t.length;
vendor: 18,359 bytes, line 25976
25976r++)this.emit(t[r],e);else this.hop.call(this.events,t)&&this.events[t].forEach((function(t){t(e||{})}))}}]),t}(),j=function(){function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};h(this,t),this._c={},this._t=[],this._e=new I,this.disabled=!1,this.selector=e,this.settings=P(x,r),this.index=this.settings.startAt}return d(t,[{key:"mount",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this._e.emit("mount.before"),E(t)?this._c=function(t,e,r){var n={};for(var i in e)k(e[i])?n[i]=e[i](t,n,r):S("Extension must be a function");for(var o in n)k(n[o].mount)&&n[o].mount();return n}(this,t,this._e):S("You need to provide a object on `mount()`"),this._e.emit("mount.after"),this}},{key:"mutate",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return _(t)?this._t=t:S("You need to provide a array on `mutate()`"),this}},{key:"update",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.settings=P(this.settings,t),t.hasOwnProperty("startAt")&&(this.index=t.startAt),this._e.emit("update"),this}},{key:"go",value:function(t){return this._c.Run.make(t),this}},{key:"move",value:function(t){return this._c.Transition.disable(),this._c.Move.make(t),this}},{key:"destroy",value:function(){return this._e.emit("destroy"),this}},{key:"play",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return t&&(this.settings.autoplay=t),this._e.emit("play"),this}},{key:"pause",value:function(){return this._e.emit("pause"),this}},{key:"disable",value:function(){return this.disabled=!0,this}},{key:"enable",value:function(){return this.disabled=!1,this}},{key:"on",value:function(t,e){return this._e.on(t,e),this}},{key:"isType",value:function(t){return this.settings.type===t}},{key:"settings",get:function(){return this._o},set:function(t){E(t)?this._o=t:S("Options must be an `object` instance.")}},{key:"index",get:function(){return this._i},set:function(t){this._i=A(t)}},{key:"type",get:function(){return this.settings.type}},{key:"disabled",get:function(){return this._d},set:function(t){this._d=!!t}}]),t}();function M(){return(new Date).getTime()}function L(t,e){var r,n,i,o,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=0,c=function(){a=!1===s.leading?0:M(),r=null,o=t.apply(n,i),r||(n=i=null)},u=function(){var u=M();a||!1!==s.leading||(a=u);var l=e-(u-a);return n=this,i=arguments,l<=0||l>e?(r&&(clearTimeout(r),r=null),a=u,o=t.apply(n,i),r||(n=i=null)):r||!1===s.trailing||(r=setTimeout(c,l)),o};return u.cancel=function(){clearTimeout(r),a=0,r=n=i=null},u}var N={ltr:["marginLeft","marginRight"],rtl:["marginRight","marginLeft"]};function B(t){if(t&&t.parentNode){for(var e=t.parentNode.firstChild,r=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&r.push(e);return r}return[]}function R(t){return Array.prototype.slice.call(t)}var D=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};h(this,t),this.listeners=e}return d(t,[{key:"on",value:function(t,e,r){var n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];O(t)&&(t=[t]);for(var i=0;i<t.length;i++)this.listeners[t[i]]=r,e.addEventListener(t[i],this.listeners[t[i]],n)}},{key:"off",value:function(t,e){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];O(t)&&(t=[t]);for(var n=0;n<t.length;n++)e.removeEventListener(t[n],this.listeners[t[n]],r)}},{key:"destroy",value:function(){delete this.listeners}}]),t}();var F=["ltr","rtl"],$={">":"<","<":">","=":"="};function H(t,e){return{modify:function(t){return e.Direction.is("rtl")?-t:t}}}function z(t,e){return{modify:function(t){var r=Math.floor(t/e.Sizes.slideWidth);return t+e.Gaps.value*r}}}function V(t,e){return{modify:function(t){return t+e.Clones.grow/2}}}function U(t,e){return{modify:function(r){if(t.settings.focusAt>=0){var n=e.Peek.value;return E(n)?r-n.before:r-n}return r}}}function W(t,e){return{modify:function(r){var n=e.Gaps.value,i=e.Sizes.width,o=t.settings.focusAt,s=e.Sizes.slideWidth;return"center"===o?r-(i/2-s/2):r-s*o-n*o}}}var K=!1;try{var G=Object.defineProperty({},"passive",{get:function(){K=!0}});window.addEventListener("testPassive",null,G),window.removeEventListener("testPassive",null,G)}catch(t){}var q=K,J=["touchstart","mousedown"],Y=["touchmove","mousemove"],X=["touchend","touchcancel","mouseup","mouseleave"],Q=["mousedown","mousemove","mouseup","mouseleave"];var Z='[data-glide-el^="controls"]',tt="".concat(Z,' [data-glide-dir*="<"]'),et="".concat(Z,' [data-glide-dir*=">"]');function rt(t){return E(t)?(e=t,Object.keys(e).sort().reduce((function(t,r){return t[r]=e[r],t[r],t}),{})):(S("Breakpoints option must be an object"),{});var e}var nt={Html:function(t,e,r){var n={mount:function(){this.root=t.selector,this.track=this.root.querySelector('[data-glide-el="track"]'),this.collectSlides()},collectSlides:function(){this.slides=R(this.wrapper.children).filter((function(e){return!e.classList.contains(t.settings.classes.slide.clone)}))}};return C(n,"root",{get:function(){return n._r},set:function(t){O(t)&&(t=document.querySelector(t)),null!==t?n._r=t:S("Root element must be a existing Html node")}}),C(n,"track",{get:function(){return n._t},set:function(t){n._t=t}}),C(n,"wrapper",{get:function(){return n.track.children[0]}}),r.on("update",(function(){n.collectSlides()})),n},Translate:function(t,e,r){var n={set:function(r){var n=function(t,e,r){var n=[z,V,U,W].concat(t._t,[H]);return{mutate:function(i){for(var o=0;o<n.length;o++){var s=n[o];k(s)&&k(s().modify)?i=s(t,e,r).modify(i):S("Transformer should be a function that returns an object with `modify()` method")}return i}}}(t,e).mutate(r),i="translate3d(".concat(-1*n,"px, 0px, 0px)");e.Html.wrapper.style.mozTransform=i,e.Html.wrapper.style.webkitTransform=i,e.Html.wrapper.style.transform=i},remove:function(){e.Html.wrapper.style.transform=""},getStartIndex:function(){var r=e.Sizes.length,n=t.index,i=t.settings.perView;return e.Run.isOffset(">")||e.Run.isOffset("|>")?r+(n-i):(n+i)%r},getTravelDistance:function(){var r=e.Sizes.slideWidth*t.settings.perView;return e.Run.isOffset(">")||e.Run.isOffset("|>")?-1*r:r}};return r.on("move",(function(i){if(!t.isType("carousel")||!e.Run.isOffset())return n.set(i.movement);e.Transition.after((function(){r.emit("translate.jump"),n.set(e.Sizes.slideWidth*t.index)}));var o=e.Sizes.slideWidth*e.Translate.getStartIndex();return n.set(o-e.Translate.getTravelDistance())})),r.on("destroy",(function(){n.remove()})),n},Transition:function(t,e,r){var n=!1,i={compose:function(e){var r=t.settings;return n?"".concat(e," 0ms ").concat(r.animationTimingFunc):"".concat(e," ").concat(this.duration,"ms ").concat(r.animationTimingFunc)},set:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"transform";e.Html.wrapper.style.transition=this.compose(t)},remove:function(){e.Html.wrapper.style.transition=""},after:function(t){setTimeout((function(){t()}),this.duration)},enable:function(){n=!1,this.set()},disable:function(){n=!0,this.set()}};return C(i,"duration",{get:function(){var r=t.settings;return t.isType("slider")&&e.Run.offset?r.rewindDuration:r.animationDuration}}),r.on("move",(function(){i.set()})),r.on(["build.before","resize","translate.jump"],(function(){i.disable()})),r.on("run",(function(){i.enable()})),r.on("destroy",(function(){i.remove()})),i},Direction:function(t,e,r){var n={mount:function(){this.value=t.settings.direction},resolve:function(t){var e=t.slice(0,1);return this.is("rtl")?t.split(e).join($[e]):t},is:function(t){return this.value===t},addClass:function(){e.Html.root.classList.add(t.settings.classes.direction[this.value])},removeClass:function(){e.Html.root.classList.remove(t.settings.classes.direction[this.value])}};return C(n,"value",{get:function(){return n._v},set:function(t){F.indexOf(t)>-1?n._v=t:S("Direction value must be `ltr` or `rtl`")}}),r.on(["destroy","update"],(function(){n.removeClass()})),r.on("update",(function(){n.mount()})),r.on(["build.before","update"],(function(){n.addClass()})),n},Peek:function(t,e,r){var n={mount:function(){this.value=t.settings.peek}};return C(n,"value",{get:function(){return n._v},set:function(t){E(t)?(t.before=A(t.before),t.after=A(t.after)):t=A(t),n._v=t}}),C(n,"reductor",{get:function(){var e=n.value,r=t.settings.perView;return E(e)?e.before/r+e.after/r:2*e/r}}),r.on(["resize","update"],(function(){n.mount()})),n},Sizes:function(t,e,r){var n={setupSlides:function(){for(var t="".concat(this.slideWidth,"px"),r=e.Html.slides,n=0;n<r.length;n++)r[n].style.width=t},setupWrapper:function(){e.Html.wrapper.style.width="".concat(this.wrapperSize,"px")},remove:function(){for(var t=e.Html.slides,r=0;r<t.length;r++)t[r].style.width="";e.Html.wrapper.style.width=""}};return C(n,"length",{get:function(){return e.Html.slides.length}}),C(n,"width",{get:function(){return e.Html.track.offsetWidth}}),C(n,"wrapperSize",{get:function(){return n.slideWidth*n.length+e.Gaps.grow+e.Clones.grow}}),C(n,"slideWidth",{get:function(){return n.width/t.settings.perView-e.Peek.reductor-e.Gaps.reductor}}),r.on(["build.before","resize","update"],(function(){n.setupSlides(),n.setupWrapper()})),r.on("destroy",(function(){n.remove()})),n},Gaps:function(t,e,r){var n={apply:function(t){for(var r=0,n=t.length;r<n;r++){var i=t[r].style,o=e.Direction.value;i[N[o][0]]=0!==r?"".concat(this.value/2,"px"):"",r!==t.length-1?i[N[o][1]]="".concat(this.value/2,"px"):i[N[o][1]]=""}},remove:function(t){for(var e=0,r=t.length;e<r;e++){var n=t[e].style;n.marginLeft="",n.marginRight=""}}};return C(n,"value",{get:function(){return A(t.settings.gap)}}),C(n,"grow",{get:function(){return n.value*e.Sizes.length}}),C(n,"reductor",{get:function(){var e=t.settings.perView;return n.value*(e-1)/e}}),r.on(["build.after","update"],L((function(){n.apply(e.Html.wrapper.children)}),30)),r.on("destroy",(function(){n.remove(e.Html.wrapper.children)})),n},Move:function(t,e,r){var n={mount:function(){this._o=0},make:function(){var t=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;this.offset=n,r.emit("move",{movement:this.value}),e.Transition.after((function(){r.emit("move.after",{movement:t.value})}))}};return C(n,"offset",{get:function(){return n._o},set:function(t){n._o=T(t)?0:A(t)}}),C(n,"translate",{get:function(){return e.Sizes.slideWidth*t.index}}),C(n,"value",{get:function(){var t=this.offset,r=this.translate;return e.Direction.is("rtl")?r+t:r-t}}),r.on(["build.before","run"],(function(){n.make()})),n},Clones:function(t,e,r){var n={mount:function(){this.items=[],t.isType("carousel")&&(this.items=this.collect())},collect:function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=e.Html.slides,i=t.settings,o=i.perView,s=i.classes,a=i.cloningRatio;if(n.length>0)for(var c=o+ +!!t.settings.peek+Math.round(o/2),u=n.slice(0,c).reverse(),l=n.slice(-1*c),f=0;f<Math.max(a,Math.floor(o/n.length));f++){for(var h=0;h<u.length;h++){var p=u[h].cloneNode(!0);p.classList.add(s.slide.clone),r.push(p)}for(var d=0;d<l.length;d++){var v=l[d].cloneNode(!0);v.classList.add(s.slide.clone),r.unshift(v)}}return r},append:function(){for(var t=this.items,r=e.Html,n=r.wrapper,i=r.slides,o=Math.floor(t.length/2),s=t.slice(0,o).reverse(),a=t.slice(-1*o).reverse(),c="".concat(e.Sizes.slideWidth,"px"),u=0;u<a.length;u++)n.appendChild(a[u]);for(var l=0;l<s.length;l++)n.insertBefore(s[l],i[0]);for(var f=0;f<t.length;f++)t[f].style.width=c},remove:function(){for(var t=this.items,r=0;r<t.length;r++)e.Html.wrapper.removeChild(t[r])}};return C(n,"grow",{get:function(){return(e.Sizes.slideWidth+e.Gaps.value)*n.items.length}}),r.on("update",(function(){n.remove(),n.mount(),n.append()})),r.on("build.before",(function(){t.isType("carousel")&&n.append()})),r.on("destroy",(function(){n.remove()})),n},Resize:function(t,e,r){var n=new D,i={mount:function(){this.bind()},bind:function(){n.on("resize",window,L((function(){r.emit("resize")}),t.settings.throttle))},unbind:function(){n.off("resize",window)}};return r.on("destroy",(function(){i.unbind(),n.destroy()})),i},Build:function(t,e,r){var n={mount:function(){r.emit("build.before"),this.typeClass(),this.activeClass(),r.emit("build.after")},typeClass:function(){e.Html.root.classList.add(t.settings.classes.type[t.settings.type])},activeClass:function(){var r=t.settings.classes,n=e.Html.slides[t.index];n&&(n.classList.add(r.slide.active),B(n).forEach((function(t){t.classList.remove(r.slide.active)})))},removeClasses:function(){var r=t.settings.classes,n=r.type,i=r.slide;e.Html.root.classList.remove(n[t.settings.type]),e.Html.slides.forEach((function(t){t.classList.remove(i.active)}))}};return r.on(["destroy","update"],(function(){n.removeClasses()})),r.on(["resize","update"],(function(){n.mount()})),r.on("move.after",(function(){n.activeClass()})),n},Run:function(t,e,r){var n={mount:function(){this._o=!1},make:function(n){var i=this;t.disabled||(!t.settings.waitForTransition||t.disable(),this.move=n,r.emit("run.before",this.move),this.calculate(),r.emit("run",this.move),e.Transition.after((function(){i.isStart()&&r.emit("run.start",i.move),i.isEnd()&&r.emit("run.end",i.move),i.isOffset()&&(i._o=!1,r.emit("run.offset",i.move)),r.emit("run.after",i.move),t.enable()})))},calculate:function(){var e=this.move,r=this.length,i=e.steps,o=e.direction,s=1;if("="===o)return t.settings.bound&&A(i)>r?void(t.index=r):void(t.index=i);if(">"!==o||">"!==i)if("<"!==o||"<"!==i){if("|"===o&&(s=t.settings.perView||1),">"===o||"|"===o&&">"===i){var a=function(e){var r=t.index;if(t.isType("carousel"))return r+e;return r+(e-r%e)}(s);return a>r&&(this._o=!0),void(t.index=function(e,r){var i=n.length;if(e<=i)return e;if(t.isType("carousel"))return e-(i+1);if(t.settings.rewind)return n.isBound()&&!n.isEnd()?i:0;if(n.isBound())return i;return Math.floor(i/r)*r}(a,s))}if("<"===o||"|"===o&&"<"===i){var c=function(e){var r=t.index;if(t.isType("carousel"))return r-e;var n=Math.ceil(r/e);return(n-1)*e}(s);return c<0&&(this._o=!0),void(t.index=function(e,r){var i=n.length;if(e>=0)return e;if(t.isType("carousel"))return e+(i+1);if(t.settings.rewind)return n.isBound()&&n.isStart()?i:Math.floor(i/r)*r;return 0}(c,s))}S("Invalid direction pattern [".concat(o).concat(i,"] has been used"))}else t.index=0;else t.index=r},isStart:function(){return t.index<=0},isEnd:function(){return t.index>=this.length},isOffset:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0;return t?!!this._o&&("|>"===t?"|"===this.move.direction&&">"===this.move.steps:"|<"===t?"|"===this.move.direction&&"<"===this.move.steps:this.move.direction===t):this._o},isBound:function(){return t.isType("slider")&&"center"!==t.settings.focusAt&&t.settings.bound}};return C(n,"move",{get:function(){return this._m},set:function(t){var e=t.substr(1);this._m={direction:t.substr(0,1),steps:e?A(e)?A(e):e:0}}}),C(n,"length",{get:function(){var r=t.settings,n=e.Html.slides.length;return this.isBound()?n-1-(A(r.perView)-1)+A(r.focusAt):n-1}}),C(n,"offset",{get:function(){return this._o}}),n},Swipe:function(t,e,r){var n=new D,i=0,o=0,s=0,a=!1,c=!!q&&{passive:!0},u={mount:function(){this.bindSwipeStart()},start:function(e){if(!a&&!t.disabled){this.disable();var n=this.touches(e);i=null,o=A(n.pageX),s=A(n.pageY),this.bindSwipeMove(),this.bindSwipeEnd(),r.emit("swipe.start")}},move:function(n){if(!t.disabled){var a=t.settings,c=a.touchAngle,u=a.touchRatio,l=a.classes,f=this.touches(n),h=A(f.pageX)-o,p=A(f.pageY)-s,d=Math.abs(h<<2),v=Math.abs(p<<2),g=Math.sqrt(d+v),m=Math.sqrt(v);if(!(180*(i=Math.asin(m/g))/Math.PI<c))return!1;n.stopPropagation(),e.Move.make(h*parseFloat(u)),e.Html.root.classList.add(l.dragging),r.emit("swipe.move")}},end:function(n){if(!t.disabled){var s=t.settings,a=s.perSwipe,c=s.touchAngle,u=s.classes,l=this.touches(n),f=this.threshold(n),h=l.pageX-o,p=180*i/Math.PI;this.enable(),h>f&&p<c?e.Run.make(e.Direction.resolve("".concat(a,"<"))):h<-f&&p<c?e.Run.make(e.Direction.resolve("".concat(a,">"))):e.Move.make(),e.Html.root.classList.remove(u.dragging),this.unbindSwipeMove(),this.unbindSwipeEnd(),r.emit("swipe.end")}},bindSwipeStart:function(){var r=this,i=t.settings,o=i.swipeThreshold,s=i.dragThreshold;o&&n.on(J[0],e.Html.wrapper,(function(t){r.start(t)}),c),s&&n.on(J[1],e.Html.wrapper,(function(t){r.start(t)}),c)},unbindSwipeStart:function(){n.off(J[0],e.Html.wrapper,c),n.off(J[1],e.Html.wrapper,c)},bindSwipeMove:function(){var r=this;n.on(Y,e.Html.wrapper,L((function(t){r.move(t)}),t.settings.throttle),c)},unbindSwipeMove:function(){n.off(Y,e.Html.wrapper,c)},bindSwipeEnd:function(){var t=this;n.on(X,e.Html.wrapper,(function(e){t.end(e)}))},unbindSwipeEnd:function(){n.off(X,e.Html.wrapper)},touches:function(t){return Q.indexOf(t.type)>-1?t:t.touches[0]||t.changedTouches[0]},threshold:function(e){var r=t.settings;return Q.indexOf(e.type)>-1?r.dragThreshold:r.swipeThreshold},enable:function(){return a=!1,e.Transition.enable(),this},disable:function(){return a=!0,e.Transition.disable(),this}};return r.on("build.after",(function(){e.Html.root.classList.add(t.settings.classes.swipeable)})),r.on("destroy",(function(){u.unbindSwipeStart(),u.unbindSwipeMove(),u.unbindSwipeEnd(),n.destroy()})),u},Images:function(t,e,r){var n=new D,i={mount:function(){this.bind()},bind:function(){n.on("dragstart",e.Html.wrapper,this.dragstart)},unbind:function(){n.off("dragstart",e.Html.wrapper)},dragstart:function(t){t.preventDefault()}};return r.on("destroy",(function(){i.unbind(),n.destroy()})),i},Anchors:function(t,e,r){var n=new D,i=!1,o=!1,s={mount:function(){this._a=e.Html.wrapper.querySelectorAll("a"),this.bind()},bind:function(){n.on("click",e.Html.wrapper,this.click)},unbind:function(){n.off("click",e.Html.wrapper)},click:function(t){o&&(t.stopPropagation(),t.preventDefault())},detach:function(){if(o=!0,!i){for(var t=0;t<this.items.length;t++)this.items[t].draggable=!1;i=!0}return this},attach:function(){if(o=!1,i){for(var t=0;t<this.items.length;t++)this.items[t].draggable=!0;i=!1}return this}};return C(s,"items",{get:function(){return s._a}}),r.on("swipe.move",(function(){s.detach()})),r.on("swipe.end",(function(){e.Transition.after((function(){s.attach()}))})),r.on("destroy",(function(){s.attach(),s.unbind(),n.destroy()})),s},Controls:function(t,e,r){var n=new D,i=!!q&&{passive:!0},o={mount:function(){this._n=e.Html.root.querySelectorAll('[data-glide-el="
25976controls[nav]"]'),this._c=e.Html.root.querySelectorAll(Z),this._arrowControls={previous:e.Html.root.querySelectorAll(tt),next:e.Html.root.querySelectorAll(et)},this.addBindings()},setActive:function(){for(var t=0;t<this._n.length;t++)this.addClass(this._n[t].children)},removeActive:function(){for(var t=0;t<this._n.length;t++)this.removeClass(this._n[t].children)},addClass:function(e){var r=t.settings,n=e[t.index];n&&(n.classList.add(r.classes.nav.active),B(n).forEach((function(t){t.classList.remove(r.classes.nav.active)})))},removeClass:function(e){var r=e[t.index];null==r||r.classList.remove(t.settings.classes.nav.active)},setArrowState:function(){if(!t.settings.rewind){var r=o._arrowControls.next,n=o._arrowControls.previous;this.resetArrowState(r,n),0===t.index&&this.disableArrow(n),t.index===e.Run.length&&this.disableArrow(r)}},resetArrowState:function(){for(var e=t.settings,r=arguments.length,n=new Array(r),i=0;i<r;i++)n[i]=arguments[i];n.forEach((function(t){R(t).forEach((function(t){t.classList.remove(e.classes.arrow.disabled)}))}))},disableArrow:function(){for(var e=t.settings,r=arguments.length,n=new Array(r),i=0;i<r;i++)n[i]=arguments[i];n.forEach((function(t){R(t).forEach((function(t){t.classList.add(e.classes.arrow.disabled)}))}))},addBindings:function(){for(var t=0;t<this._c.length;t++)this.bind(this._c[t].children)},removeBindings:function(){for(var t=0;t<this._c.length;t++)this.unbind(this._c[t].children)},bind:function(t){for(var e=0;e<t.length;e++)n.on("click",t[e],this.click),n.on("touchstart",t[e],this.click,i)},unbind:function(t){for(var e=0;e<t.length;e++)n.off(["click","touchstart"],t[e])},click:function(t){q||"touchstart"!==t.type||t.preventDefault();var r=t.currentTarget.getAttribute("data-glide-dir");e.Run.make(e.Direction.resolve(r))}};return C(o,"items",{get:function(){return o._c}}),r.on(["mount.after","move.after"],(function(){o.setActive()})),r.on(["mount.after","run"],(function(){o.setArrowState()})),r.on("destroy",(function(){o.removeBindings(),o.removeActive(),n.destroy()})),o},Keyboard:function(t,e,r){var n=new D,i={mount:function(){t.settings.keyboard&&this.bind()},bind:function(){n.on("keyup",document,this.press)},unbind:function(){n.off("keyup",document)},press:function(r){var n=t.settings.perSwipe;["ArrowRight","ArrowLeft"].includes(r.code)&&e.Run.make(e.Direction.resolve("".concat(n).concat({ArrowRight:">",ArrowLeft:"<"}[r.code])))}};return r.on(["destroy","update"],(function(){i.unbind()})),r.on("update",(function(){i.mount()})),r.on("destroy",(function(){n.destroy()})),i},Autoplay:function(t,e,r){var n=new D,i={mount:function(){this.enable(),this.start(),t.settings.hoverpause&&this.bind()},enable:function(){this._e=!0},disable:function(){this._e=!1},start:function(){var n=this;this._e&&(this.enable(),t.settings.autoplay&&T(this._i)&&(this._i=setInterval((function(){n.stop(),e.Run.make(">"),n.start(),r.emit("autoplay")}),this.time)))},stop:function(){this._i=clearInterval(this._i)},bind:function(){var t=this;n.on("mouseover",e.Html.root,(function(){t._e&&t.stop()})),n.on("mouseout",e.Html.root,(function(){t._e&&t.start()}))},unbind:function(){n.off(["mouseover","mouseout"],e.Html.root)}};return C(i,"time",{get:function(){var r=e.Html.slides[t.index].getAttribute("data-glide-autoplay");return A(r||t.settings.autoplay)}}),r.on(["destroy","update"],(function(){i.unbind()})),r.on(["run.before","swipe.start","update"],(function(){i.stop()})),r.on(["pause","destroy"],(function(){i.disable(),i.stop()})),r.on(["run.after","swipe.end"],(function(){i.start()})),r.on(["play"],(function(){i.enable(),i.start()})),r.on("update",(function(){i.mount()})),r.on("destroy",(function(){n.destroy()})),i},Breakpoints:function(t,e,r){var n=new D,i=t.settings,o=rt(i.breakpoints),s=Object.assign({},i),a={match:function(t){if(void 0!==window.matchMedia)for(var e in t)if(t.hasOwnProperty(e)&&window.matchMedia("(max-width: ".concat(e,"px)")).matches)return t[e];return s}};return Object.assign(i,a.match(o)),n.on("resize",window,L((function(){t.settings=P(i,a.match(o))}),t.settings.throttle)),r.on("update",(function(){o=rt(o),s=Object.assign({},i)})),r.on("destroy",(function(){n.off("resize",window)})),a}},it=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&m(t,e)}(r,t);var e=b(r);function r(){return h(this,r),e.apply(this,arguments)}return d(r,[{key:"mount",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return w(g(r.prototype),"mount",this).call(this,Object.assign({},nt,t))}}]),r}(j);function ot(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(ot=function(){return!!t})()}var st=function(t){function e(){var t,r,i,a;(0,n.A)(this,e);for(var c=arguments.length,u=new Array(c),l=0;l<c;l++)u[l]=arguments[l];return r=this,i=e,a=[].concat(u),i=(0,s.A)(i),(t=(0,o.A)(r,ot()?Reflect.construct(i,a||[],(0,s.A)(r).constructor):i.apply(r,a))).updateCaption=function(){t.captionTargets.forEac
25976h((function(e,r){e.setAttribute("aria-hidden",r!==t.glide.index)}))},t}return(0,a.A)(e,t),(0,i.A)(e,[{key:"connect",value:function(){this.glide=new it(this.glideTarget,{gap:0,autoplay:3e3}),this.glide.mount(),this.glide.on("run",this.updateCaption)}},{key:"layout",value:function(){this.glide.update()}}])}(c.xI);st.targets=["glide","caption"]},9731:(t,e,r)=>{"use strict";var n=Function.prototype.call,i=Object.prototype.hasOwnProperty,o=r(469);t.exports=o.call(n,i)},9747:(t,e,r)=>{"use strict";var n=r(8052);t.exports=n},9830:t=>{t.exports=function(t,e){return t===e||t!=t&&e!=e}},9859:(t,e,r)=>{"use strict";var n=r(321),i=r(4102),o=r(1715);t.exports=function(t,e,r){var s,a;return o&&n(s=e.constructor)&&s!==r&&i(a=s.prototype)&&a!==r.prototype&&o(t,a),t}},9872:(t,e,r)=>{"use strict";var n=r(8810),i=r(1904),o=r(6749).indexOf,s=r(8754),a=i([].indexOf),c=!!a&&1/a([1],1,-0)<0;n({target:"Array",proto:!0,forced:c||!s("indexOf")},{indexOf:function(t){var e=arguments.length>1?arguments[1]:void 0;return c?a(this,t,e)||0:o(this,t,e)}})},9892:(t,e,r)=>{"use strict";var n=r(2484),i=r(5236),o=Date.prototype,s="Invalid Date",a="toString",c=n(o[a]),u=n(o.getTime);String(new Date(NaN))!==s&&i(o,a,(function(){var t=u(this);return t==t?c(this):s}))},9976:(t,e,r)=>{"use strict";var n=r(4175)("iterator"),i=!1;try{var o=0,s={next:function(){return{done:!!o++}},return:function(){i=!0}};s[n]=function(){return this},Array.from(s,(function(){throw 2}))}catch(t){}t.exports=function(t,e){try{if(!e&&!i)return!1}catch(t){return!1}var r=!1;try{var o={};o[n]=function(){return{next:function(){return{done:r=!0}}}},t(o)}catch(t){}return r}},9988:t=>{"function"==typeof Object.create?t.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:t.exports=function(t,e){if(e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}}},9997:t=>{"use strict";var e=Object.defineProperty||!1;if(e)try{e({},"a",{value:1})}catch(t){e=!1}t.exports=e}},e={};function r(n){var i=e[n];if(void 0!==i)return i.exports;var o=e[n]={exports:{}};return t[n].call(o.exports,o,o.exports,r),o.exports}r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},(()=>{"use strict";r(5249),r(6160),r(3376),r(1759),r(3544),r(2006),r(9650),r(797),r(6522);var t=r(6661),e=r.n(t),n=r(6782),i=r(2492);e()(),function(t){[["agreement-check",r(3982)],["browser-detector",r(5966)],["check-all",r(5800)],["collapse",r(5548)],["download-image-stage",r(15)],["download-list-panel-trigger",r(542)],["download-model-filter",r(8374)],["draggable-scrollable-container",r(4222)],["has-hover",r(2332)],["horizontal-scroll-state",r(7741)],["in-page-search",r(7899)],["languages-select",r(7652)],["masonry",r(44)],["modal-dialog-opener",r(4299)],["modal-dialog",r(6099)],["model-card-dimensions-template",r(8994)],["popover-opener",r(6636)],["scroll-to-coord",r(2848)],["series-description-omit",r(5267)],["series-feature-carousel",r(9704)],["series-header",r(6534)],["shadow-stage",r(244)],["specs-header-intersection",r(6011)],["specs-select-lineup-group",r(2396)],["specs-select-model-group",r(3798)],["specs-select",r(6356)],["standalone-content-loader",r(5428)],["switch-discontinued",r(5964)],["switch-items",r(3598)],["switch",r(4294)],["tabs",r(8043)],["template-duplicator",r(1897)],["videojs-loader",r(8659)]].forEach((function(e){var r=(0,i.A)(e,2),n=r[0],o=r[1].default;t.register(n,o)}))}(n.lg.start()),document.querySelectorAll(".prd-specsTable colgroup").forEach((function(t){return t.remove()}))})()})();

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