{"version":3,"sources":["youtube.js","jquery-start.js","accessibility.js","accordion-tabs.js","accordion.js","accordions-reskin.js","back-to-top.js","brands.js","build-helpers.js","cookies.js","custom-scrollbar.js","date-time-picker.js","desktop-nav.js","download-app-buttons.js","dropdowns.js","ellipsis-new.js","ellipsis.js","filter.js","forms.js","full-bleed-img-carousel.js","gallery.js","gdpr-details.js","gdpr-modal.js","getting-here-hero.js","google-map.js","hero-nav.js","interactive-map.js","lazy-scroll.js","modal-product.js","modal.js","nav.js","open-login.js","pagination.js","product-overlay.js","product-page.js","registration-modal.js","search.js","sidenav.js","sliders.js","social-links.js","social-popups.js","standard-product-list.js","stylists.js","supScripts.js","tags.js","terms-conditions-modal.js","text.js","trains.js","treats.js","twitter-feed.js","typeahead.js","validation.js","videos.js","wear.js","weather.js","widgetCarousel.js","zoom.js","doc-ready.js","resize-events.js","scroll-events.js"],"names":["onYouTubePlayerAPIReady","$","document","ready","each","event","iframeID","this","attr","players","YT","Player","events","onStateChange","videos","jQuery","accessibility","elms","skip","skipNav","click","skipTo","href","split","on","removeAttr","focus","init","accordionTabs","accordionTabWrap","tabTrigger","accordionTrigger","trigger","accordionTabContent","toggleAccordionContent","$accordionTabContent","not","slideUp","slideDown","toggleTabContent","hide","show","eventListeners","e","$trigger","target","closest","triggerText","$triggers","filter","removeClass","addClass","window","width","tabletWide","location","hash","$content","length","parent","children","preventDefault","nav","openClose","closeNavResize","setTimeout","animate","scrollTop","offset","top","height","accordion","accordionWrap","accordionContent","toggleContent","$target","$accordionContent","find","first","$icon","undefined","clearQueue","stop","slideToggle","is","checkIfMobile","hasClass","toggleClass","accordionHandler","accordionTitle","next","rotateArrow","backToTop","elWrap","scrollToTop","brands","closed","tooltipPos","_this","size","text","wrapper","tooltip","wrapperEl","triggerEl","contentEl","showHide","isTouch","hover","fadeToggle","fadeOut","bh","containers","widthEl","heightEl","setHelpers","widthValue","heightValue","emptyLinks","cookies","legal","legalContainer","create","name","value","days","cookieExpires","date","Date","setTime","getTime","toGMTString","cookie","read","nameEQ","ca","i","c","charAt","substring","indexOf","legalClose","close","introLegal","exists","customScrollbar","el","scrollBar","$el","theme","mCustomScrollbar","axis","dateTimePicker","datePicker","timePicker","addDatePicker","datepicker","dateFormat","addTimePicker","timepicker","timeFormat","desktopNav","triggers","navTray","openTimeout","closeTimeout","closeTrayAnimTimeout","settings","openTimeoutDelay","closeTimeoutDelay","resetCloseTimeoutDelay","showSubNav","openNavTray","clearTimeout","closeNavTray","currentTarget","downloadApp","container","buttons","android","ios","showButton","osButton","css","getMobileOperatingSystem","userAgent","navigator","vendor","opera","match","dd","langVill","ddContent","login","offCanvas","siblings","Content","weather","sidenav","ddLeave","mouseleave","windowWidth","desktop","undoClickOut","undoOthers","undoDropdowns","ellipsisNew","ellipsisEl","ellipsisTitleEl","ellipsisTreatEl","ellipsisTitleMaxHeight","applyEllipsis","ellipsisItem","isResize","carouselBreakpoint","prev","setGalleryHeight","setElHeight","dotdotdot","removeEmpty","applyEllipsisTitle","applyEllipsisTreat","keep","container_blockContent","container_textContent","isPromoComponent","isEditorialFeed","container_height","otherels","otherels_height","this_height","targetHeight","wrapper_height","numbers_height","title_height","nav_height","innerWidth","innerHeight","ellipsisCheck","trim","empty","ellipsis","editorial","item","item2col","feed","header","title","image","copy","footer","applyEl","feedApplyEl","setup","single","$img","$header","$title","$footer","$copy","containerHeight","imgHeight","headerHeight","titleHeight","footerHeight","copyHeight","col2","content","getLarge","loadApply","resizeApply","undoEllipsis","loadApplyFeed","resizeApplyFeed","tablet","freeText","more","getHEight","promoTextLong","pageTitle","productCategory","data","clearElms","triggerElms","containerElms","itemElms","blockElms","blocknavElms","allProducts_text","viewAllFilter_text","scrolltoNav","offsetDiff","applyCategoryFilter","filterValue","productPage","productBaseUrl","filterType","catSelected","$item","hiddenCount","itemCategoryList","RegExp","updateBlockDisplay","search","clearSearchInput","publish","clearFilters","dropkick","l","block","eq","items","initSpecialDd","onClearTriggerClick","ddTrigger","onDdTriggerClick","ddList","undoSpecialDd","onDdSubTriggerClick","ddSubTrigger","ddSubList","onDdSubListTriggerClick","selectedEl","filterText","setSpecialDdText","onDocumentClick","ddSubListTrigger","clearTrigger","productSearchValue","onFilterChange","change","val","form","superLabelsContainer","selectWrapper","select","paddingInputs","newsletter","smartSearchForm","typeInputs","freetext","password","email","textarea","bindSuperlabels","forms","add","superLabels","labelTop","labelLeft","rtl","noAnimate","superLabelsCheck","$label","$input","ddSelect","countrySelect","countrySelectDropKick","Dropkick","refresh","addEventListener","keyboardAmends","preventZoom","searchHeader","allInputs","hiddenForm","openEl","closeEl","openForm","fadeIn","closeForm","buttonRadio","inputEl","buttonEl","highlightOnLoad","radioUpdate","isiPhone","isiPad","isiPod","checkboxradio","profileForm","enableFormSubmit","yourBrands","numberOfChecked","checkedItems","numChecked","disableCheckboxes","checkedCheckbox","checkbox","forceUncheck","prop","formSubmitBtn","setAttribute","delegate","originalEvent","isTrusted","undelegate","one","removeAttribute","showPassEls","showPassword","input","type","changeTriggerTo","changeInputTo","fullImgSlide","targetEl","checkIfApplicable","slides","setUp","targetSlide","flickity","wrapAround","imagesLoaded","prevNextButtons","rightToLeft","gallery","modal","content_inner","counter","prevNext_wrapper","trigger_nav","trigger_prev","trigger_next","setupModal","slideId","slide_ammount","clone","imgUrl","content_hideShow","fadeOut_items","opacity","content_populate","prevNext","getPrevNext","html","remove","insertBefore","parseInt","checkImgLoad","fadeIn_items","navigateSlide","gdprDetails","emailIn","mobileIn","addressFirstLine","addressSecondLine","addressCity","stateToggle","generic","checkerItems","checkInputField","locationToggle","locationDependentChecker","locationAllowed","gdprModal","hiddenInputVal","mobileCheckVal","toLowerCase","emailCheckVal","locationNotAllowed","locationStatus","ls","parents","inputItem","inputVal","inputId","addressVal","cityVal","thisId","elem","detailElem","buttonInit","buttonOut","buttonNext","gdprItems","currentNum","genInit","modalOpen","pagModelNum","dependancyCheckLocation","nonSelectHide","$t","modalNext","$optIn","$optOut","$pagNum","$currentPagNum","pagText","clearTextFirst","substr","currentFirstString","toString","$this","$thisCheckCheck","$thisId","modelDetail","changeCheckState","currentId","checkStatus","$detailModalItem","index","currentData","lStatus","paginationClear","append","modalClose","modalReset","$firstItem","isMulti","inputRel","ind","indeNext","indeCurrent","multiPageGDPR","detailDecision","parentData","modalPagination","$checkBox","state","gdprTotal","googleMap","villageMap","loadScript","apiKey","script","createElement","src","body","appendChild","google","lat","parseFloat","lng","zoom","iconImg","myLatLng","maps","LatLng","mapOptions","center","map","Map","getElementById","Marker","position","icon","setUP","heroNav","triggerButton","triggerDropdown","scrollToSection","targetId","targetId_split","_targetId","fixOffset","handeOnLoad","targetSection","InteractiveMap","__init","$mapplic","SELECTOR_MAPPLIC","$window","__isTouch","ontouchstart","__mqMedium","matchMedia","MEDIA_QUERY_MEDIUM","addListener","__onMediumMediaQueryChange","__addMapplic","__addCategories","__categories","$categories","SELECTOR_CATEGORIES","$categoriesSelect","$option","category","appendTo","STYLE_SELECT_HIDDEN","__onCategoryChange","__addControls","$controls","SELECTOR_CONTROLS","source","debug","__getParameterByName","displayMode","mapplic","maxscale","__onMapData","__onMapLocationClose","__onMapLocationOpen","__onMapReady","__onMapTooltipLink","__addOffersEvents","$offersEvents","SELECTOR_OFFERS_EVENTS","__onOffersEventsClick","__showHideOffersAndNewStoresButtons","__locations","$newStores","SELECTOR_NEW_STORES","$foodDrink","SELECTOR_FOOD_DRINK","mapHasNewStores","a","categories","includes","__newCategory","__minNewStores","mapHasOffers","offersAndEvents","__addNewStores","__onNewStoresClick","__addFoodDrink","__onFoodDrinkClick","__addLocation","$location","SELECTOR_LOCATION","__onLocationClick","__addSearch","$search","SELECTOR_SEARCH","STYLE_EMPTY","$searchInput","typeahead","hint","highlight","minLength","display","limit","__searchSource","__foods","templates","suggestion","__searchSuggestion","$searchCancel","SELECTOR_SEARCH_CANCEL","_onSearchActive","__onSearchChange","__onSearchIdle","__onSearchRender","__onSearchSelect","__onSearchCancel","__categoryClear","__map","clearHighlight","__categoryHighlight","exp","ary","test","id","toggleLocationHighlight","__trackEvent","url","replace","regex","results","exec","decodeURIComponent","__offersEventsClear","STYLE_ACTIVE","removePinHighlight","__offersEventsToggle","isOffersEventsActive","__newStoresClear","addPinHighlight","__newStoresToggle","isNewStoresActive","__foodDrinkClear","__foodDrinkToggle","isfoodDrinkActive","__processData","interactiveLocations","locations","interactive","join","nonBrandUnit","details","newCategory","minNewStores","foods","__searchCancel","STYLE_SEARCH_FOCUS","hideLocation","strBrands","strFood","query","callback","foodMatch","objLocationMatches","brandMatch","brandMatches","push","subtitle","aryLocationMatches","sort","b","str","__resize","resizeMap","action","label","ga","__onKeyUp","validKeyCodes","strKeyCode","keyCode","blur","list","matches","changeDisplayMode","onUserLocationSuccess","Mapplic_","geoActive","disableUserLocation","requestUserLocation","arguments","__searchTimer","__onSearchRenderTimeout","TIMEOUT_SEARCH","showLocation","resize","lazyScroll","promosBuild","$lazyLoadingItem","scrollInit","isScrolledIntoView","bgPromoInit","thisToF","$thisModuleImage","thisImage","docViewTop","docViewBottom","elemTop","elemImg","elemBottom","elemImgBottom","elemState","elemStateImg","widgetsImg","widgetsLoad","elementIsInView","elementTop","elementBottom","outerHeight","viewportTop","viewportBottom","modalProduct","product","brand","description","imageSmall","imageLarge","productPrice","brandUrl","brandMapUrl","EVENT_TRANSITION","productClickHandler","keyup","hideModal","modalClickHandler","onClose","price","featuredProductId","showModal","selector","$shareItems","socialLinks","off","onHideComplete","stopPropagation","stopImmediatePropagation","onClick","updateShare","offsetWidth","sessionStorage","setItem","modalId","modalTitle","modalGallerySlide","isContent","contains","isClose","mob","closeSpd","delay","staggerDelay","in","out","mobileClosed","scrollPos","mainHeader","animItems","pinToTopItems","animDelay","hamburger","siteCanvas","siteWrapper","closeNav","lastItem","searchTrigger","searchForm","button","inputSearch","subnavEls","subnavTrigger","subnav","showNav","commonElements","showInDelay","undoSubnav","offCanvasScroll","autoHideScrollbar","scrollInertia","undoOffCanvasScroll","closeNavResizeDown","targetSelectors","incrementDelayBy","direction","d","undoDisableSearch","mobileSubnav","navItem","$openedNavItem","scrollTo","speed","openedNavItem","cb","undoMobile","menu","itemTop","getBoundingClientRect","menuTop","targetTop","Math","round","menuHeight","diff","anchorNav","topbarOffset","extended","undoOnSearch","openLogin","linkToLogin","loginTrigger","loginDropdown","openLoginPanel","stickyNav","undoSticky","pagination","paginationType","pagesElms","removePagination","unwrap","insertPagination","productWrap","visibleCount","wrapAll","setProductClasses","$itemsPage","loadPage","updateLoadMoreDisplay","widgetWrap","getElColSize","getRowsOfItems","rowCount","rowsForPaginationCount","columnsUsedInRow","initialRows","wrapRowsInPages","itemRowNumber","$page","$items","moduleEditorial1Col","last","editorialFeed","moduleOffer","hasNextPage","movePageSelection","current","buttonPos","offsetVal","nextBlock","slick","elm","images_to_load","images_loaded","isImageElm","load","subscribe","overlay","page","overlayEl","triggerOpen","triggerClose","forceClose","toggleOverlay","triggerEls","element","setupTrigger","addTriggerOpenEl","addTriggerCloseEl","hideShow_sliderArrows","zoomedEl","template","numItems","productApiUrl","productLanguageNodeId","productSearchType","productResultCount","productResultLimit","STATE_LOADING","STATE_READY","STYLE_LOADING","handleLoad","processItems","processTemplate","toggleMore","changeState","onMoreClick","pageUrl","pageUrl_split","filter_type","filter_target","item_target","item_copy","loadItems","ajax","languageNodeId","take","dataType","method","done","textStatus","jqXHR","processData","fail","errorThrown","slice","destroy","Handlebars","compile","resgistrationModal","formEl","errorMessageEl","formcontent","thankscontent","customClose","timer","submitIt","submit","valid","formData","FormData","contentType","success","response","error","msg","JSON","stringify","responseJSON","message","getItem","searchInput","searchSubmit","brandsList","brandItem","productsList","productItem","itemsArr","runSearch","normalizeText","returnMatches","inputValue","wordSearch","word","dataAttr","$currentItem","andSelf","inputRegex","detectPage","socialMediaEl","expandCollapse","targetHash","slider","productCarousel","heroSlider","barSlider","multiItem","multiItem4","multiItem5","multiCentredItem","multiStyleCentredItem","inputField","syncSimple","syncComplex","durationList","getAttribute","adjustSyncComplexMargin","nextSlide","isNextSlide","$slideEl","syncSimpleHeight","videoHeight","videosInSliders","$nextSlideEl","$nextSlideVideo","mobileDisplay","desktopDisplay","videojs","getPlayer","muted","playVideo","pauseOther","moveContentDown","$nextComplexSlideEl","handleMobile","setupSync","useTransform","mobileFirst","arrows","dots","asNavFor","responsive","breakpoint","checkScrollPos","prevArrow","nextArrow","autoplay","autoplaySpeed","adaptiveHeight","scroll","throttle","smallProducts","sliderContentProducts","swipeEnabled","slidesToShow","slidesToScroll","swipe","setupSingle","setupProductCarousel","appendArrows","pause","setupMultiItem","transformTrans","centerMode","centerPadding","setupStyleMultiCentredItem","setupMultiCentredItem","currentSlide","futureItem","pauseInputFocus","focusin","focusout","pauseOnHover","mouseenter","desktopOnly","lazyLoad","$lazySlideItem","$currentClasses","$numCC","$thisBgImage","$currentSlide","$slideClasses","futureNum","$futureSlide","futureSlideBG","$firstSlideVideo","slideIndex","changeSlide","timing","func","inThrottle","args","context","apply","links","facebookAppId","siteTitle","PLATFORM_FACEBOOK","PLATFORM_MESSENGER","PLATFORM_PINTEREST","PLATFORM_TWITTER","PLATFORM_WHATSAPP","TEXT_DIVIDER","platform","link","createFacebook","createMessenger","createPinterest","createTwitter","createWhatsApp","getTitle","getUrl","browser","getImage","$elm","encodeURIComponent","openWindow","open","socialPopups","footerSocialLinks","openInPopUp","productList","pages","stylist","targets","supScripts","headings","regexReplace","$headings","newStr","tags","campaignID","dataLayer","eventCategory","eventAction","eventLabel","widgetType","widgetAction","termsConditionsModal","toggle","submitEl","toggleButton","linkOut","wrapperSpan","wrap","word_array","last_word","first_part","pop","barArrow","inspirationTitle","trains","chilternrailways","refreshTimetable","$defaultFrom","$defaultTo","XML","$dataRow","platformTitle","hours","getHours","minutes","getMinutes","$due","$class","$destination","$status","$platform","noTrainsText","treat","barcode","isVisible","fullyInView","pageTop","pageBottom","toggleCode","toggleFixedCode","lines","ellipClass","filterCategoryId","treatCategoryId","$main","$list","twitterFeed","tid","module","config","profile","screenName","domId","enableLinks","showTime","showMore","twitterFetcher","fetch","typeaheadInput","setUpTypeahead","substringMatcher","strs","q","substrRegex","$typeaheadInput","keypress","which","validation","setMethods","is_valid_email_domain","domain","isBracketed","labels","looksLikeIPv4","looksLikeIPv6","allowedIPv6","parts","j","tld","tldIndex","allowedTld","isValidDate2","y","m","daysInMonth","validator","setDefaults","errorElement","errorPlacement","insertAfter","addMethod","regexString","re","optional","atIndex","curr","currCode","charCodeAt","allowed","beforeAt","localPart","allowedLocal","mode","cCode","$thisVal","$matchEl","$matchElVal","$lengthVal","$inputValLength","isSubmitted","dateSplit","stripSpacesFromEmail","$form","forEach","validateForms","formSubmitted","validate","ignore","submitHandler","setRules","populateDob","$container","$day","$month","$year","$dayVal","$monthVal","$yearVal","message_required","rules","required","messages","message_format","regexFormat","registerEmailFormat","message_matchTo","matchInput","minLength_message","minLengthCheck","maxLength_message","maxLengthCheck","selectRequired","message_valid","validBirthDate","customDd","allowEmpty","$fullVideo","$videoCover","$brightCoveClient","moving","coverFadingOut","_event","contentSlider","activeYoutube","thisYoutube","stopVideo","videoId","currentTime","mobileVIdPlay","vcode","$targetVideoCover","isMobile","videoClient","thisBrighcove","play","isIOS","verticallyCenterVideo","$sliderSyncComplex","$videoEls","videoTop","String","pageHeroVideo","heroCover","myPlayer","toggleFull","prepend","requestFullscreen","exitFullscreen","wearTab","slideEl","wearWrapper","checkIfAplicable","slides_number","slides_width","wrapper_width","slides_width_total","groupCells","freeScroll","pageDots","dragThreshold","thumb","main","triggerLarge","triggerSmall","clearOnResize","closeMouseOut","closeClickOut","widgetCarousel","carouselOpts","setAlignment","setGroupCells","itemsCheck","checkSpecials","num_items","notCarouselNum","setupSlider","setOptions","carouselItem","autoPlay","friction","cellAlign","watchCSS","freePlay","followMouse","left","pageX","pageY","zoomedImg","zoomWrapper","smallestImg","zoomImg","conWidth","conHeight","imgWidth","panzoom","contain","minScale","maxScale","disablePan","silent","increment","scale","$panzoom","delta","wheelDelta","zoomOut","deltaY","focal","showTooltip","overlayEl_content","overlay_open","overlay_close","overlay_zoom","innerDisableEls","zoomedEl_show","imageEl","lazyload","zoomedEl_hide","zoomSetup","resetPanZoom","mainContainer","parentCarousel","img_url","windowHeight","isAndroid","getAndroidVersion","ua","documentElement","Modernizr","touchevents","msie","version","mobile","vrMap","sr","debounce","threshold","execAsap","timeout","delayed","obj","fn","bind","smartresize","newWindowWidth","newWindowHeight","widthChange","abs","cutHeight","didScroll","tag","firstScriptTag","getElementsByTagName","parentNode","videoContainer","videoObject"],"mappings":"AAuBA,QAAAA,2BACAC,EAAAC,UAAAC,MAAA,WACAF,EAAA,kBAAAG,KAAA,SAAAC,GACA,GAAAC,GAAAL,EAAAM,MAAAC,KAAA,KACAC,SAAAH,GAAA,GAAAI,IAAAC,OAAAL,GACAM,QACAC,cAAAC,OAAAD,qBA7BA,GCCAE,OAAA,SAAAd,GCDA,GAAAe,IAEAC,MACAC,KAAAjB,EAAA,UAIAkB,QAAA,WACAH,EAAAC,KAAAC,KAAAE,MAAA,WACA,GAAAC,GAAA,IAAAd,KAAAe,KAAAC,MAAA,KAAA,EACAtB,GAAAoB,GAAAb,KAAA,eAAAgB,GAAA,gBAAA,WACAvB,EAAAM,MAAAkB,WAAA,cACAC,WAIAC,KAAA,WACAX,EAAAG,YCjBAS,GAEAX,MACAW,cAAA3B,EAAA,mBACA4B,iBAAA5B,EAAA,uBACA6B,WAAA7B,EAAA,gBACA8B,iBAAA9B,EAAA,0BACA+B,QAAA/B,EAAA,kBACAgC,oBAAAhC,EAAA,2BAGAiC,uBAAA,SAAAC,GAEAP,EAAAX,KAAAgB,oBAAAG,IAAA,WAAAC,QAAA,KAGAF,EAAAG,UAAA,MAGAC,iBAAA,SAAAJ,GACAP,EAAAX,KAAAgB,oBAAAO,OACAL,EAAAM,QAGAC,eAAA,WAwBA,GAtBAd,EAAAX,KAAAe,QAAAR,GAAA,QAAA,SAAAmB,GAEA,GAAAC,GAAA3C,EAAA0C,EAAAE,QAAAC,QAAA,kBACAC,EAAAH,EAAApC,KAAA,gBACAwC,EAAApB,EAAAX,KAAAe,QAAAiB,OAAA,iBAAAF,EAAA,KACAZ,EAAAP,EAAAX,KAAAgB,oBAAAgB,OAAA,cAAAF,EAAA,KAGAnB,GAAAX,KAAAe,QAAAkB,YAAA,UACAF,EAAAG,SAAA,UAEAvB,EAAAX,KAAAgB,oBAAAiB,YAAA,UACAf,EAAAgB,SAAA,UAGAlD,EAAAmD,QAAAC,QAAAC,WACA1B,EAAAM,uBAAAC,GAEAP,EAAAW,iBAAAJ,KAIAiB,OAAAG,SAAAC,KAAA,CACA,GAAAC,GAAAxD,EAAAmD,OAAAG,SAAAC,KACAC,GAAAC,OAAA,GACAD,EAAAE,SAAAC,SAAA,kBAAA5B,QAAA,SAIA/B,EAAAmD,QAAA5B,GAAA,aAAA,SAAAmB,GACAA,EAAAkB,gBAEA,IAAAJ,GAAAxD,EAAAmD,OAAAG,SAAAC,KACA,IAAAC,EAAAC,OAAA,EAAA,CACAD,EAAAE,SAAAC,SAAA,kBAAA5B,QAAA,SACA8B,EAAAC,UAAAC,gBAEA,IAAAnB,GAAAY,CAEAQ,YAAA,WACAhE,EAAA,aAAAiE,SACAC,UAAAtB,EAAAuB,SAAAC,IAAApE,EAAA,gBAAAqE,UACA,MACA,SAKA3C,KAAA,WAEAC,EAAAX,KAAAW,cAAA8B,OAAA,IAEA9B,EAAAX,KAAAgB,oBAAAG,IAAA,WAAAI,OAGAZ,EAAAc,oBCjFA6B,GAEAtD,MACAuD,cAAAvE,EAAA,mBACA8B,iBAAA9B,EAAA,sBACAwE,iBAAAxE,EAAA,uBAGAyE,cAAA,SAAAC,GACA,GAAAC,GAAAD,EAAA7B,QAAAyB,EAAAtD,KAAAuD,eAAAK,KAAAN,EAAAtD,KAAAwD,kBAAAK,QACAlC,EAAA+B,EAAA7B,QAAA,sBACAiC,EAAAnC,EAAAiC,KAAA,aAKA,MAAAjC,EAAApC,KAAA,cAAAwE,SAAApC,EAAApC,KAAA,cAAA,UAAAoC,EAAApC,KAAA,cACAoC,EAAApC,KAAA,YAAA,QACAuE,EAAA5B,SAAA,UAEAP,EAAApC,KAAA,YAAA,SACAuE,EAAA7B,YAAA,SAGA0B,EAAAK,aAAAC,OAAAC,YAAA,IAAA,WACAP,EAAAQ,GAAA,YACAL,EAAA5B,SAAA,UAEA4B,EAAA7B,YAAA,aAKAmC,cAAA,SAAAV,GACAJ,EAAAtD,KAAAuD,cAAAc,SAAA,uBACArF,EAAAmD,QAAAC,QAAA,MACAkB,EAAAG,cAAAC,GACAA,EAAA7B,QAAA,qBAAA+B,KAAA,cAAAU,YAAA,YAGAhB,EAAAG,cAAAC,GACAA,EAAA7B,QAAA,qBAAA+B,KAAA,cAAAU,YAAA,YAIA7C,eAAA,WACA6B,EAAAtD,KAAAc,iBAAAP,GAAA,QAAA,SAAAmB,GACAA,EAAAkB,iBACAU,EAAAc,cAAApF,EAAA0C,EAAAE,YAIAlB,KAAA,WAEA4C,EAAAtD,KAAAuD,cAAAd,OAAA,GACAa,EAAA7B,mBCvDA8C,GAEAC,eAAAxF,EAAA,uBAGAyE,cAAA,SAAAC,GACAA,EAAAe,OAAAH,YAAA,mBAGAI,YAAA,SAAAhB,GACAA,EAAAf,WAAAkB,QAAAS,YAAA,YAGA5D,KAAA,WAEA6D,EAAAC,eAAA/B,OAAA,GACA8B,EAAAC,eAAAjE,GAAA,QAAA,SAAAmB,GACAA,EAAAkB,iBACA2B,EAAAd,cAAAzE,EAAA0C,EAAAE,SACA2C,EAAAG,YAAA1F,EAAA0C,EAAAE,aCnBA+C,GAEAC,OAAA5F,EAAA,qBAEA6F,YAAA,WAEA,MADA7F,GAAA,cAAAiE,SAAAC,UAAA,GAAA,SACA,GAGAzB,eAAA,WACAkD,EAAAC,OAAArE,GAAA,QAAA,WACAoE,EAAAE,iBAIAnE,KAAA,WACAiE,EAAAlD,mBChBAqD,GAEAC,OAAA/F,EAAA,kCAEAgG,WAAA,WACAF,EAAAC,OAAA5F,KAAA,WACA,GAAA8F,GAAAjG,EAAAM,MACA4F,EAAAD,EAAAE,OAAA1C,OACA2C,EAAAH,EAAApD,QAAA,qBACAwD,EAAAD,EAAAxB,KAAA,mBAEAsB,GAAA,EACAG,EAAAnD,SAAA,sBACAgD,EAAA,IACAG,EAAAnD,SAAA,wBAKAoD,UAAAtG,EAAA,sCACAuG,UAAAvG,EAAA,sCACAwG,UAAAxG,EAAA,sCAEAyG,SAAA,WACAC,SACAZ,EAAAS,UAAAI,MACA,WACA3G,EAAAM,MAAAuC,QAAAiD,EAAAQ,WAAA1B,KAAAkB,EAAAU,WAAAI,aACAd,EAAAS,UAAApE,IAAAnC,EAAAM,OAAAuC,QAAAiD,EAAAQ,WAAA1B,KAAAkB,EAAAU,WAAAK,WAEA,WACAf,EAAAU,UAAAK,aAMAnF,KAAA,WACAoE,EAAAC,OAAAtC,SACAqC,EAAAE,aACAF,EAAAW,cCxCAK,GACAC,YACAC,QAAAhH,EAAA,wBACAiH,SAAAjH,EAAA,0BAIAkH,WAAA,SAAAC,EAAAC,GACAN,EAAAC,WAAAC,QAAAb,KAAAgB,GACAL,EAAAC,WAAAE,SAAAd,KAAAiB,IAGAC,WAAA,WACArH,EAAA,cAAAmB,MAAA,SAAAuB,GACAA,EAAAkB,qBCdA0D,GACAC,MAAA,gBACAC,eAAAxH,EAAA,sBAEAyH,OAAA,SAAAC,EAAAC,EAAAC,GACA,GAAAC,EACA,IAAAD,EAAA,CACA,GAAAE,GAAA,GAAAC,KACAD,GAAAE,QAAAF,EAAAG,UAAA,GAAAL,EAAA,GAAA,GAAA,KACAC,EAAA,aAAAC,EAAAI,kBAEAL,GAAA,EAEA5H,UAAAkI,OAAAT,EAAA,IAAAC,EAAAE,EAAA,YAGAO,KAAA,SAAAV,GAGA,IAAA,GAFAW,GAAAX,EAAA,IACAY,EAAArI,SAAAkI,OAAA7G,MAAA,KACAiH,EAAA,EAAAA,EAAAD,EAAA7E,OAAA8E,IAAA,CAEA,IADA,GAAAC,GAAAF,EAAAC,GACA,MAAAC,EAAAC,OAAA,IACAD,EAAAA,EAAAE,UAAA,EAAAF,EAAA/E,OAEA,IAAA,IAAA+E,EAAAG,QAAAN,GACA,MAAAG,GAAAE,UAAAL,EAAA5E,OAAA+E,EAAA/E,QAGA,MAAA,OAGAmF,WAAA,WACA,GAAAC,GAAA7I,EAAA,iBAEA6I,GAAA1H,MAAA,SAAAf,GACAA,EAAAwD,iBACA0D,EAAAG,OAAA,gBAAA,GAAA,IACAH,EAAAE,eAAAX,aAIAiC,WAAA,WACA,GAAAC,GAAA9I,SAAAkI,OAAAQ,QAAA,gBACAI,UACAzB,EAAAE,eAAAhF,OACA8E,EAAAsB,eAIAlH,KAAA,WACA4F,EAAAwB,eClDAE,GAEAC,GAAAjJ,EAAA,kBACA4F,OAAA5F,EAAA,uBAEAkJ,UAAA,SAAAC,EAAAC,GACAD,EAAAE,kBACAC,KAAA,IACAF,MAAAA,KAIA1H,KAAA,WACAsH,EAAAC,GAAAxF,OAAA,GACAuF,EAAAE,UAAAF,EAAAC,GAAAD,EAAApD,OAAArF,KAAA,sBAGAyI,EAAApD,OAAAnC,OAAA,GACAuF,EAAAE,UAAAF,EAAApD,OAAAhB,KAAA,sBAAAoE,EAAApD,OAAArF,KAAA,wBClBAgJ,GAEAvI,MACAwI,WAAAxJ,EAAA,eACAyJ,WAAAzJ,EAAA,gBAGA0J,cAAA,WACAH,EAAAvI,KAAAwI,WAAAG,YACAC,WAAA,aAEAL,EAAAvI,KAAAwI,WAAAG,WAAA,UAAA,GAAA5B,QAGA8B,cAAA,WACAN,EAAAvI,KAAAyI,WAAAK,YACAC,WAAA,QAEAR,EAAAvI,KAAAyI,WAAAK,WAAA,UAAA,GAAA/B,QAGArG,KAAA,WACA6H,EAAAvI,KAAAwI,WAAA/F,OAAA,GACA8F,EAAAG,gBAEAH,EAAAvI,KAAAyI,WAAAhG,OAAA,GACA8F,EAAAM,kBC1BAG,GAEAC,SAAAjK,EAAA,mCACAkK,QAAAlK,EAAA,aACAmK,YAAApF,OACAqF,aAAArF,OACAsF,qBAAAtF,OACAuF,UACAC,iBAAA,GACAC,kBAAA,GACAC,uBAAA,IAGAC,WAAA,SAAAzB,GAIAe,EAAAC,SAAA9J,KAAA,WACA6J,EAAAC,SAAAhH,YAAA,YAGAjD,EAAAiJ,GAAA/F,SAAA,WAGAyH,YAAA,WACAC,aAAAZ,EAAAI,cAEAJ,EAAAE,QAAAhH,SAAA,WAGA2H,aAAA,WAGAb,EAAAE,QAAAhH,SAAA,UAIA8G,EAAAK,qBAAArG,WAAA,WACAgG,EAAAC,SAAA9J,KAAA,WACA6J,EAAAC,SAAAhH,YAAA,UACA+G,EAAAE,QAAAjH,YAAA,UACA+G,EAAAE,QAAAjH,YAAA,aAEA+G,EAAAM,SAAAG,yBAGA/I,KAAA,WAGAsI,EAAAE,QAAAhH,SAAA,UAEA8G,EAAAC,SAAA1I,GAAA,aAAA,SAAAmB,GAIAsH,EAAAE,QAAA7E,SAAA,YACAuF,aAAAZ,EAAAI,cACAQ,aAAAZ,EAAAS,yBAKAzK,EAAA0C,EAAAE,QAAAyC,SAAA,gBAIA2E,EAAAU,WAAAhI,EAAAoI,eAEAd,EAAAG,YAAAnG,WAAA,WACAgG,EAAAW,eACAX,EAAAM,SAAAC,qBAIAP,EAAAC,SAAA1I,GAAA,aAAA,SAAAmB,GAIAkI,aAAAZ,EAAAG,aAEAH,EAAAI,aAAApG,WAAA,WACAgG,EAAAa,gBACAb,EAAAM,SAAAE,uBClFAO,GACAC,UAAAhL,EAAA,yBACAiL,SACAC,QAAAlL,EAAA,qBACAmL,IAAAnL,EAAA,kBAGAoL,WAAA,SAAAC,GACAN,EAAAC,UAAAM,IAAA,UAAA,SACAD,EAAAC,IAAA,UAAA,UAGAC,yBAAA,WACA,GAAAC,GAAAC,UAAAD,WAAAC,UAAAC,QAAAvI,OAAAwI,KAGAH,GAAAI,MAAA,UAAAJ,EAAAI,MAAA,YAAAJ,EAAAI,MAAA,SAEAb,EAAAK,WAAAL,EAAAE,QAAAE,KAEAK,EAAAI,MAAA,aAEAb,EAAAK,WAAAL,EAAAE,QAAAC,UAIAxJ,KAAA,WACAqJ,EAAAC,UAAAvH,OAAA,GACAsH,EAAAQ,6BC5BAM,GACAC,SAAA9L,EAAA,cACA+B,QAAA/B,EAAA,oBACA+L,UAAA/L,EAAA,kBACAgM,MAAAhM,EAAA,UACAiM,UAAAjM,EAAA,uBAEAiE,QAAA,WACA4H,EAAA9J,QAAAZ,MAAA,WACAnB,EAAAM,MAAAgF,YAAA,UACAtF,EAAAM,MAAA4L,SAAAL,EAAAM,SAAAnH,aAAAC,OAAAC,cACAlF,EAAA,2BAAAmC,IAAAnC,EAAAM,OAAA2C,YAAA,UAAAiJ,SAAAL,EAAAE,WAAA3J,UAEApC,EAAA,mCAAAoC,UACAgK,GAAAhG,QAAAnD,YAAA,gBAEAjD,EAAA,iDAAAoC,UACAiK,EAAA/F,UAAArD,YAAA,aAIAqJ,QAAA,WACAT,EAAAC,SAAAlH,KAAAiH,EAAAE,WAAAQ,WAAA,WACAC,aAAAC,UACAzM,EAAAM,MAAA8B,UACApC,EAAAM,MAAA4L,SAAAL,EAAA9J,SAAAkB,YAAA,cAKAyJ,aAAA,WACA,GAAA1B,GAAAhL,EAAA,YACAA,GAAAC,UAAAkB,MAAA,SAAAf,GACAJ,EAAAI,EAAAwC,QAAAC,QAAAmI,GAAAvH,QACAzD,EAAAgL,GAAApG,KAAA,2BAAAnB,OAAA,GACAI,EAAA8I,WAAAC,mBAMAlL,KAAA,WACAmK,EAAA5H,UACA4H,EAAAS,UACAT,EAAAa,iBC5CAG,GACAC,WAAA9M,EAAA,iBACA+M,gBAAA/M,EAAA,mBACAgN,gBAAAhN,EAAA,mBAGAiN,uBAAA,GAEAC,cAAA,SAAAC,EAAAC,EAAAC,GAEA,GAAApH,GAAAkH,CAEA,kBAAAlH,EAAAqH,KAAA,MAAA/M,KAAA,SACAsM,EAAAU,iBAAAtH,GAEA4G,EAAAW,YAAAvH,GAGAjC,WAAA,WACAoJ,EACAnH,EAAAlE,QAAA,UAEAkE,EAAAwH,YAEAZ,EAAAa,eACA,MAGAC,mBAAA,SAAAR,EAAAC,GACApJ,WAAA,WAEAoJ,EACAD,EAAApL,QAAA,UAEAoL,EAAAM,aAEA,MAGAG,mBAAA,SAAAT,EAAAC,GACAP,EAAAW,YAAAL,GAEAC,GACApJ,WAAA,WACAmJ,EAAAM,WAAAI,KAAA,gBACA,MAIAL,YAAA,SAAAvH,GAEA,GAAA+E,GACA8C,EAAA7H,EAAApD,QAAA,2BACAkL,EAAA9H,EAAApD,QAAA,2BACAmL,EAAA/H,EACApD,QAAA,oLACAY,OAIAwK,EAAAhI,EAAApD,QAAA,2BAAAY,MAQA,IANAqK,EAAArK,SAAAuK,IACAhD,EAAA8C,GAEAC,EAAAtK,SAAAuK,IACAhD,EAAA+C,GAEAC,EAAA,CACA,GAAAxB,YAAAnJ,aAAA4C,EAAApD,QAAA,4BAAAY,OAEA,MAEAuH,GAAA/E,EAAApD,QAAA,mBAGAoL,IACAjD,EAAA/E,EAAApD,QAAA,qBAGAiL,EAAArK,SAAAuK,GAAAD,EAAAtK,SAAAuK,GAAAA,GAAAC,IACAjD,EAAA/E,EAAApD,QAAA,QAGAoD,EAAApD,QAAA,gBAAAY,SACAuH,EAAA/E,EAAApD,QAAA,wBAOA,IAAAqL,GAAAlD,EAAA3G,SACA8J,EAAAnD,EAAApG,KAAA,OACAwJ,EAAA,CACAD,GAAAhO,KAAA,WACAiO,GAAApO,EAAAM,MAAA+D,UAEA,IAAAgK,GAAApI,EAAA5B,QACA4B,GAAApD,QAAA,0BAAA+B,KAAA,yBAAAnB,QAAAuK,IAEAK,GAAA,GASA,IAAAC,GAAAJ,GAAAE,EAAAC,EACAP,GAAAlJ,KAAA,qBAAAnB,SACA6K,GAAAR,EAAAlJ,KAAA,qBAAAP,UAEA4B,EAAA5B,OAAAiK,IAGAf,iBAAA,SAAAtH,GACA,GAAAG,GAAAH,EAAApD,QAAA,kCACA0L,EAAAnI,EAAA/B,SACAmK,EAAApI,EAAAxB,KAAA,0BAAAP,SACAoK,EAAArI,EAAAxB,KAAA,kBAAAP,SACAqK,EAAAtI,EAAAxB,KAAA,sBAAAP,QACAlB,QAAAwL,WAAAxL,OAAAyL,YAEAN,aAAAC,EAAAC,EAAAC,EAAAC,EAAA,GAEAJ,aAAA,IAGArI,EAAA5B,OAAAiK,eAGAZ,YAAA,WACAb,EAAAC,WAAA3M,KAAA,WACA,GAAA8F,GAAAjG,EAAAM,MACAuO,EAAA5I,EAAAE,OAAA2I,OAAArL,MAEA,KAAAoL,GACA5I,EAAA8I,WAKArN,KAAA,WACA1B,EAAA,iBAAAyD,QACAO,WAAA,WACA6I,EAAAC,WAAA3M,KAAA,WACAH,EAAAM,MAAAuC,QAAA,mCAAAY,QACAoJ,EAAAK,cAAAlN,EAAAM,UAGA,KAGAuM,EAAAE,gBAAAtJ,QACAoJ,EAAAE,gBAAA5M,KAAA,WAEAH,EAAAM,MAAAgL,IAAA,aAAAuB,EAAAI,wBAEAJ,EAAAc,mBAAA3N,EAAAM,SAIAuM,EAAAG,gBAAAvJ,SACAoJ,EAAAG,gBAAA7M,KAAA,WACA0M,EAAAe,mBAAA5N,EAAAM,OAAA,KAGAN,EAAAmD,QAAA5B,GAAA,SAAA,WACAsL,EAAAG,gBAAA7M,KAAA,WACA0M,EAAAe,mBAAA5N,EAAAM,OAAA,OAIAN,EAAAmD,QAAA5B,GAAA,OAAA,WACAvB,EAAAmD,QAAApB,QAAA,eChLAiN,GAEAC,WACAC,KAAAlP,EAAA,sEACAmP,SAAAnP,EAAA,0BACAoP,KAAApP,EAAA,2BACAqP,OAAArP,EAAA,4BACAsP,MAAAtP,EAAA,oCACAuP,MAAAvP,EAAA,yBACAwP,KAAAxP,EAAA,0BACAyP,OAAAzP,EAAA,4BACA0P,QAAA1P,EAAA,mCACA2P,YAAA3P,EAAA,kBAEA4P,OAGAC,OAAA,WAEAb,EAAAC,UAAAC,KAAA/O,KAAA,WAEA,GAAAH,EAAAM,MAAAsE,KAAAoK,EAAAC,UAAAO,MAAA/L,OAAA,CAGA,GAAAqM,GAAA9P,EAAAM,MAAAsE,KAAAoK,EAAAC,UAAAM,OACAQ,EAAA/P,EAAAM,MAAAsE,KAAAoK,EAAAC,UAAAI,QACAW,EAAAhQ,EAAAM,MAAAsE,KAAAoK,EAAAC,UAAAK,OACAW,EAAAjQ,EAAAM,MAAAsE,KAAAoK,EAAAC,UAAAQ,QACAS,EAAAlQ,EAAAM,MAAAsE,KAAAoK,EAAAC,UAAAO,MAGAW,EAAA,IACAC,EAAA,IACAC,EAAAN,EAAA1L,SACAiM,EAAAN,EAAA3L,SACAkM,EAAAN,EAAA5L,SAEAmM,EAAAL,EAAAE,EAAAC,EAAA,EAEAR,GAAArM,OAAA,IAAA+M,GAAAJ,GAEAH,EAAAxM,OAAA,IAAA+M,GAAAD,GAEAL,EAAA5E,IAAA,SAAAkF,OAKAC,KAAA,WAEAzB,EAAAC,UAAAE,SAAAhP,KAAA,WAEA,GAAA6K,GAAA,IACAsE,EAAAtP,EAAAM,MAAAsE,KAAAoK,EAAAC,UAAAK,OAAAjL,SACAoL,EAAAzP,EAAAM,MAAAsE,KAAAoK,EAAAC,UAAAQ,QACAe,EAAA,MAGAA,GADAf,EAAAhM,OAAA,EACAuH,EAAAsE,EAAA,GAAAG,EAAApL,SAEA2G,EAAAsE,EAAA,GAGAtP,EAAAM,MAAAsE,KAAAoK,EAAAC,UAAAO,MAAAlE,IAAA,SAAAkF,MAIApB,KAAA,WAEAJ,EAAAC,UAAAG,KAAAjP,KAAA,WACA,GAAAuQ,GAAA1Q,EAAA,mBACAgL,EAAA,IACAsE,EAAAtP,EAAAM,MAAAsE,KAAA,UAAAP,SACAmM,EAAAxF,EAAAsE,EAAA,CAEAtP,GAAAM,MAAAsE,KAAA8L,GAAApF,IAAA,SAAAkF,OAKAG,SAAA,WACA3B,EAAAC,UAAAW,MAAAC,SACAb,EAAAC,UAAAW,MAAAa,QAGAG,UAAA,WACA5B,EAAAC,UAAA0B,WACA3B,EAAAC,UAAAS,QAAAjC,aAGAoD,YAAA,WACA7B,EAAAC,UAAA0B,WACA3B,EAAAC,UAAAS,QAAA3N,QAAA,WAGA+O,aAAA,WACA9B,EAAAC,UAAAS,QAAA3N,QAAA,WACAiN,EAAAC,UAAAS,QAAAlO,WAAA,UAGAuP,cAAA,WACA/B,EAAAC,UAAAW,MAAAR,OACAJ,EAAAC,UAAAU,YAAAlC,aAGAuD,gBAAA,WACAhC,EAAAC,UAAAW,MAAAR,OACAJ,EAAAC,UAAAU,YAAA5N,QAAA,WAGAL,KAAA,WACA8K,aAAAyE,QAAAjC,EAAAC,UAAAS,QAAAjM,OAAA,IACAuL,EAAAC,UAAA2B,YACA5M,WAAA,WACAgL,EAAAC,UAAA4B,eACA,KAEA7B,EAAAC,UAAAU,YAAAlM,OAAA,IACAuL,EAAAC,UAAA8B,gBACA/M,WAAA,WACAgL,EAAAC,UAAA+B,mBACA,OAKAE,UACAhC,KAAAlP,EAAA,qBACAqP,OAAArP,EAAA,4BACAwP,KAAAxP,EAAA,gDACAmR,KAAAnR,EAAA,cACA0P,QAAA1P,EAAA,mCAEA4P,MAAA,WAEAZ,EAAAkC,SAAAhC,KAAA/O,KAAA,WAEA,GAAAH,EAAAM,MAAAsE,KAAAoK,EAAAkC,SAAA1B,MAAA/L,OAAA,CAEA,GAAAuH,GAAA,IACAsE,EAAAtP,EAAAM,MAAAsE,KAAAoK,EAAAkC,SAAA7B,QAAAhL,SACA8M,EAAAnR,EAAAM,MAAAsE,KAAAoK,EAAAkC,SAAAC,MAAA9M,SACAmM,EAAAxF,EAAAsE,EAAA6B,CAGAX,IADAxQ,EAAAM,MAAA+E,SAAA,wBACA,GAEA,GAGArF,EAAAM,MAAAsE,KAAAoK,EAAAkC,SAAA1B,MAAAlE,IAAA,SAAAkF,OAKAY,UAAA,WACApC,EAAAkC,SAAAtB,SAGAgB,UAAA,WACA5B,EAAAkC,SAAAE,YACApC,EAAAkC,SAAAxB,QAAAjC,aAGAoD,YAAA,WACA7B,EAAAkC,SAAAE,YACApC,EAAAkC,SAAAxB,QAAA3N,QAAA,WAGA+O,aAAA,WACA9B,EAAAkC,SAAAxB,QAAA3N,QAAA,WACAiN,EAAAkC,SAAAxB,QAAAlO,WAAA,UAGAE,KAAA,WACA8K,aAAAyE,QAAAjC,EAAAkC,SAAAxB,QAAAjM,OAAA,GACAuL,EAAAkC,SAAAN,cAKAS,eACAnC,KAAAlP,EAAA,oBACAqP,OAAArP,EAAA,kCACAwP,KAAAxP,EAAA,aACAyP,OAAA,IAEAG,MAAA,WAEAZ,EAAAqC,cAAAnC,KAAA/O,KAAA,WAEA,GAAAH,EAAAM,MAAAsE,KAAAoK,EAAAqC,cAAA7B,MAAA/L,OAAA,CAEA,GAAAuH,GAAA,IACAsE,EAAAtP,EAAAM,MAAAsE,KAAAoK,EAAAqC,cAAAhC,QAAAhL,SACAmM,EAAAxF,EAAAsE,EAAAN,EAAAqC,cAAA5B,MAEAzP,GAAAM,MAAAsE,KAAAoK,EAAAqC,cAAA7B,MAAAlE,IAAA,SAAAkF,OAKAY,UAAA,WACApC,EAAAqC,cAAAzB,SAGAgB,UAAA,WACA5B,EAAAqC,cAAAD,YACApC,EAAAqC,cAAA7B,KAAA/B,aAGAoD,YAAA,WACA7B,EAAAqC,cAAAD,YACApC,EAAAqC,cAAA7B,KAAAzN,QAAA,WAGA+O,aAAA,WACA9B,EAAAqC,cAAA7B,KAAAzN,QAAA,WACAiN,EAAAqC,cAAA7B,KAAAhO,WAAA,UAGAE,KAAA,WACA8K,aAAAyE,QAAAjC,EAAAqC,cAAA7B,KAAA/L,OAAA,GACAuL,EAAAqC,cAAAT,cAwBAlD,YAAA,WACA,GAAAgC,GAAA1P,EAAA,YAEA0P,GAAAvP,KAAA,WACA,GAAA8F,GAAAjG,EAAAM,MACAuO,EAAA5I,EAAAE,OAAA2I,OAAArL,MAEA,KAAAoL,GACA5I,EAAA8I,WAKArN,KAAA,WACAsN,EAAAkC,SAAAxP,OACAsN,EAAAC,UAAAvN,OACAsN,EAAAqC,cAAA3P,OACAsN,EAAAtB,gBCxQA1K,GACAhC,MACAsQ,UAAAtR,EAAA,qDACAuR,gBAAAvR,EAAA,iBAAAwR,KAAA,yBACAC,UAAAzR,EAAA,uBACA0R,YAAA1R,EAAA,gCACA2R,cAAA3R,EAAA,yBACA4R,SAAA5R,EAAA,wBACA6R,UAAA7R,EAAA,uBACA8R,aAAA9R,EAAA,2BAEA+R,iBAAA,KACAC,mBAAA,KAGAC,YAAA,WACA,GAAAjP,EAAAhC,KAAA8Q,aAAArO,OAAA,EAAA,CACA,GAAAyO,GAAA,EAEA1F,cAAAC,UACAyF,EAAA,IAGAlS,EAAA,aAAAiE,SACAC,UAAAlB,EAAAhC,KAAA8Q,aAAA3N,SAAAC,IAAA8N,GACA,OAIAC,oBAAA,SAAAC,GAIApP,EAAAhC,KAAAuQ,kBACApO,OAAAG,SAAAjC,KAAAgR,EAAAC,eAAAtP,EAAAhC,KAAAuQ,gBAAA,IAAAa,GAEApS,EAAA,eAAAiD,YAAA,OAEA,IAAAsP,EAGA,IAAAvS,EAAAM,MAAAC,KAAA,yBAAA,CAEAgS,EAAAvS,EAAAM,MAAAuC,QAAA,sBAAA2O,KAAA,eAEAY,EAAApS,EAAA8O,KAAA9O,EAAAM,MAAAC,KAAA,0BAEAP,EAAA,kBAAAqF,SAAA,SACArF,EAAA,kBAAA+B,QAAA,QAEA,IAAAyQ,GAAAxS,EAAAM,MAAA6F,MACAnG,GAAA,kBAAAmG,KAAAqM,GACAxS,EAAA,gBAAAyD,QACAT,EAAAhC,KAAAsQ,UAAAnL,KAAAqM,GAGAxS,EAAA,mBAAAqF,SAAA,SACArF,EAAA,mBAAAiD,YAAA,QASA,GAAA,gBAAAmP,EAAA,CAGApS,EAAA,oBAAAkD,SAAA,OAMA,IAAAuP,GAEAC,EAAA,CAEA1P,GAAAhC,KAAA4Q,SAAAzR,KAAA,WACAsS,EAAAzS,EAAAM,KACA,IAAAqS,GAAAF,EAAAlS,KAAA,qBACAoS,GAAA/G,MAAA,GAAAgH,QAAA,UAAAR,EAAA,YACAK,EAAAxP,YAAA,iBAAAT,QAEAiQ,EAAAvP,SAAA,iBAAAX,OACAmQ,OAKAA,GAAA1P,EAAAhC,KAAA4Q,SAAAnO,QAEAzD,EAAA,eAAAkD,SAAA,QAIAF,EAAAhC,KAAA6Q,WACA7O,EAAA6P,qBAEA7P,EAAAhC,KAAA8Q,cACA9O,EAAAiP,cAGAa,EAAAC,mBAEA/S,EAAAgT,QAAA,2BAIAC,aAAA,SAAA7S,GACAA,EAAAwD,iBAGA5D,EAAA,eAAAiD,YAAA,QACAjD,EAAA,oBAAAiD,YAAA,QAGAD,EAAAhC,KAAA4Q,SAAA3O,YAAA,iBAAAT,OAGAQ,EAAAhC,KAAA6Q,WACA7O,EAAA6P,qBAIAnM,SACA1D,EAAAhC,KAAA0Q,YAAA9M,KAAA,aAAApD,WAAA,YACAwB,EAAAhC,KAAA0Q,YAAA9M,KAAA,yBAAArE,KAAA,WAAA,aAEAyC,EAAAhC,KAAA0Q,YAAAwB,SAAA,SAAA,GAGAlT,EAAAgT,QAAA,0BAIAH,mBAAA,WACA,IAAA,GAAAtK,GAAA,EAAA4K,EAAAnQ,EAAAhC,KAAA6Q,UAAApO,OAAA8E,EAAA4K,EAAA5K,IAAA,CACA,GAAA6K,GAAApQ,EAAAhC,KAAA6Q,UAAAwB,GAAA9K,GACA+K,EAAAF,EAAAxO,KAAA,2CAGA0O,GAAA7P,OAAA,GACA2P,EAAA5Q,OACAQ,EAAAhC,KAAA8Q,aAAAlN,KAAA,YAAAwO,EAAA7S,KAAA,MAAA,MAAA0C,YAAA,WAEAmQ,EAAA7Q,OACAS,EAAAhC,KAAA8Q,aAAAlN,KAAA,YAAAwO,EAAA7S,KAAA,MAAA,MAAA2C,SAAA,YAKAqQ,cAAA,WAgCA,QAAAC,GAAA9Q,GAGA+Q,EAAA1R,QAAA,SAEAoB,OAAAG,SAAAjC,KAAAgR,EAAAC,eAIA,QAAAoB,GAAAhR,GAGA1C,EAAAM,MAAAgF,YAAA,QACAqO,EAAArO,YAAA,QAEAtB,WAAA,WACAhB,EAAA4Q,iBACA,KAIA,QAAAC,GAAAnR,GAGA8J,aAAAnJ,aAEArD,EAAAM,MAAAuC,QAAAiR,GAAAxO,YAAA,QACAtF,EAAAM,MAAAuC,QAAAiR,GAAA5H,SAAA,2BAAAjJ,YAAA,QAAA2B,KAAAmP,GAAA3R,UACApC,EAAAM,MAAAuC,QAAAiR,GAAAlP,KAAAmP,GAAA7O,eAKA,QAAA8O,GAAAtR,GAGA,GAAAuR,GAAAjU,EAAAM,MAEAiS,EAAA0B,EAAApR,QAAA,sBAAA2O,KAAA,uBACAY,EAAApS,EAAA8O,KAAAmF,EAAAzC,KAAA,yBACA0C,EAAAD,EAAA9N,MAEAnD,GAAAmR,iBAAAD,GAEA/Q,OAAAG,SAAAjC,KAAAgR,EAAAC,eAAAC,EAAA,IAAAH,EAIA,QAAAgC,GAAA1R,GAGA1C,EAAA0C,EAAAE,QAAAC,QAAA,aAAAY,QACAgQ,EAAApO,SAAA,UACAoO,EAAAxQ,YAAA,QACA0Q,EAAA1Q,YAAA,QACAD,EAAA4Q,iBApFA,GAAAH,GAAAzT,EAAA,kBACA2T,EAAA3T,EAAA,kBACA8T,EAAA9T,EAAA,sBACA+T,EAAA/T,EAAA,qBACAqU,EAAAN,EAAAnP,KAAA,+BACA0P,EAAAtU,EAAA,kBAGA,IAAAqS,EAAAkC,mBAAA,CAEA,GAAAL,GAAAG,EAAArR,OAAA,8BAAAqP,EAAAkC,mBAAA,KAAApO,MACAnD,GAAAmR,iBAAAD,GAKAH,EAAA1K,kBACAC,KAAA,IACAF,MAAA,YAIAkL,EAAA/S,GAAA,QAAAiS,GACAC,EAAAlS,GAAA,QAAAmS,GACAI,EAAAvS,GAAA,QAAAsS,GACAQ,EAAA9S,GAAA,QAAAyS,GACAhU,EAAAC,UAAAsB,GAAA,QAAA6S,IAgEAR,cAAA,WACA5T,EAAA,sBAAAiD,YAAA,QACAjD,EAAA,qBAAAoC,UACA4B,WAAA,WACAhE,EAAA,qBAAAwB,WAAA,UACA,MAGA2S,iBAAA,SAAAD,GAGAA,IAGAlU,EAAA,kBAAAqF,SAAA,SACArF,EAAA,kBAAA+B,QAAA,SAGA/B,EAAA,kBAAAmG,KAAA+N,GAGAlU,EAAA,mBAAAqF,SAAA,SACArF,EAAA,mBAAAiD,YAAA,UAMAvB,KAAA,WAGAsB,EAAAhC,KAAA0Q,aAAA1O,EAAAhC,KAAA2Q,gBAGA3O,EAAAhC,KAAAyQ,UAAAlQ,GAAA,QAAAyB,EAAAiQ,cACAjQ,EAAAhC,KAAA0Q,YAAAnQ,GAAA,SAAAyB,EAAAwR,gBAKAxR,EAAAhC,KAAA0Q,YAAAjO,QAAA,eAAAT,EAAAhC,KAAA0Q,YAAA,GAAA/J,QAAA3E,EAAAhC,KAAAuQ,iBACAvO,EAAAhC,KAAA0Q,YAAA+C,UAKAzU,EAAA,kBAAAyD,QACAT,EAAAuQ,iBAIAiB,eAAA,SAAA9R,GAGA,GAAAuR,GAAAjU,EAAAM,MAEA8R,EAAApS,EAAA8O,KAAAmF,EAAAS,MACA1R,GAAAmP,oBAAAC,IAEApS,EAAA,sBAAAyD,QAAAzD,EAAA,kBAAAyD,UACAT,EAAA+O,iBAAA/O,EAAAhC,KAAAsQ,UAAAnL,OACAnD,EAAAgP,mBAAAhS,EAAA,kBAAAmG,UCnTAwO,GACA3J,UAAAhL,EAAA,QACA4U,qBAAA5U,EAAA,iBACA6U,cAAA7U,EAAA,mBACA8U,OAAA9U,EAAA,UACA+U,eACAC,WAAAhV,EAAA,qBACAiV,gBAAAjV,EAAA,uBAEAkV,YACAC,SAAAnV,EAAA,sBACAoV,SAAApV,EAAA,0BACAqV,MAAArV,EAAA,uBACAsV,SAAAtV,EAAA,aAGAuV,gBAAA,WAEA,GAAAC,GAAAb,EAAAI,cAAAC,WAAAS,IACAd,EAAAI,cAAAE,gBAGAN,GAAAC,qBAAAc,aACAC,SAAA,EACAC,UAAA,EACAC,IAAA7V,EAAA,QAAAqF,SAAA,qBAGAmQ,EAAAE,aACAE,UAAA,GACAD,SAAA,GACAG,WAAA,EACAD,IAAA7V,EAAA,QAAAqF,SAAA,sBAMA0Q,iBAAA,WACA,GAAAC,GAAArB,EAAAI,cAAAE,gBAAArQ,KAAA,aACAqR,EAAAtB,EAAAI,cAAAE,gBAAArQ,KAAA,YAGAqR,GAAAvB,OACAsB,EAAAzT,QAKA2T,SAAA,WACA,GAAAC,GAAAnW,EAAA,sBAGA,KAAA0G,SACAiO,EAAAE,cAAApR,OAAA,CAMA,GAHA,mBAAAkR,EAAAE,cAAAtU,KAAA,OACAoU,EAAAE,cAAAjQ,KAAA+P,EAAAG,QAAA5B,WAEAiD,EAAA1S,OAAA,CACA,GAAA2S,GAAA,GAAAC,UAAA,sBACAF,GAAA1B,OAAA,WACA2B,EAAAE,UACAtW,EAAAM,MAAAuC,QAAA8R,EAAAE,eAAAjQ,KAAA,cAAA3B,YAAA,mBAIAkT,EAAA,GAAAI,iBAAA,iBAAA,WAEAH,EAAAE,UACAtW,EAAAM,MAAAuC,QAAA8R,EAAAE,eAAAjQ,KAAA,cAAA3B,YAAA,mBACA,GAWA,mBAAA0R,EAAAE,cAAAtU,KAAA,OACAoU,EAAAG,OAAA5R,SAAA,iBAAA3C,KAAA,iBAyBAiW,eAAA,aAIAC,YAAA,WACA,GAAA/P,QAAA,CACA,GAAAgQ,GAAA1W,EAAA,WACA2W,EAAAD,CACAC,GAAArL,IAAA,YAAA,UAIAsL,YACAxQ,QAAApG,EAAA,qBACA6W,OAAA7W,EAAA,qBACA8W,QAAA9W,EAAA,sBACAwG,UAAAxG,EAAA,gBAEA+W,SAAA,WACApC,EAAAiC,WAAAC,OAAA1V,MAAA,SAAAf,GACAA,EAAAwD,iBACA5D,EAAAM,MAAAiC,OAAAM,QAAA8R,EAAAiC,WAAAxQ,SAAAxB,KAAA+P,EAAAiC,WAAApQ,WAAAnE,UAAA,IAAA,WACArC,EAAAM,MAAAuC,QAAA8R,EAAAiC,WAAAxQ,SAAAxB,KAAA+P,EAAAiC,WAAAE,SAAAE,WAEAhX,EAAAM,MAAAuC,QAAA,QAAA+B,KAAA,SAAAC,QAAApD,WAIAwV,UAAA,WACAtC,EAAAiC,WAAAE,QAAA3V,MAAA,SAAAf,GACAA,EAAAwD,iBACA5D,EAAAM,MAAAuG,UACA7G,EAAAM,MAAAuC,QAAA8R,EAAAiC,WAAAxQ,SAAAxB,KAAA+P,EAAAiC,WAAAC,QAAArU,OACAxC,EAAAM,MAAAuG,UAAAhE,QAAA8R,EAAAiC,WAAAxQ,SAAAxB,KAAA+P,EAAAiC,WAAApQ,WAAApE,aAIAV,KAAA,WACAiT,EAAAiC,WAAAG,WACApC,EAAAiC,WAAAK,cAIAC,aACA5Q,UAAAtG,EAAA,yBACAmX,QAAAnX,EAAA,iBAAA4E,KAAA,SACAwS,SAAApX,EAAA,iBAAA4E,KAAA,WAEAyS,gBAAA,WACA1C,EAAAuC,YAAAC,QAAAhX,KAAA,WACAH,EAAAM,MAAA6E,GAAA,eAAA,GACAnF,EAAAM,MAAA4L,SAAA,WAAAhJ,SAAA,eAKAoU,YAAA,WACA3C,EAAAuC,YAAAE,SAAAjW,MAAA,WACAnB,EAAAM,MAAA4C,SAAA,YACAlD,EAAAM,MAAA4L,SAAA,SAAA3L,KAAA,WAAA,GACAP,EAAAM,MAAAuC,QAAA,iBAAAqJ,SAAA,iBAAAtH,KAAA,SAAApD,WAAA,WACAxB,EAAAM,MAAAuC,QAAA,iBAAAqJ,SAAA,iBAAAtH,KAAA,WAAA3B,YAAA,aAEAsU,aAAAC,WAAAC,YACA9C,EAAAuC,YAAAC,QAAAO,cAAA,WAGA/C,EAAAgD,YAAAC,sBAIAlW,KAAA,WACAiT,EAAAuC,YAAA5Q,UAAA7C,SACAkR,EAAAuC,YAAAG,kBACA1C,EAAAuC,YAAAI,iBAKAjR,SACAC,UAAAtG,EAAA,oBACAuG,UAAAvG,EAAA,oBACAwG,UAAAxG,EAAA,oBAEAyG,SAAA,WACAkO,EAAAtO,QAAAC,UAAA7C,SACAzD,EAAAC,UAAAkB,MAAA,SAAAf,GACAJ,EAAAI,EAAAwC,QAAAC,QAAA,oBAAAY,QACAkR,EAAAtO,QAAAG,UAAAK,YAGA8N,EAAAtO,QAAAE,UAAApF,MAAA,SAAAf,GACAJ,EAAAM,MAAAuC,QAAA8R,EAAAtO,QAAAC,WAAA1B,KAAA+P,EAAAtO,QAAAG,WAAAI,aACA+N,EAAAtO,QAAAE,UAAApE,IAAAnC,EAAAM,OAAAuC,QAAA8R,EAAAtO,QAAAC,WAAA1B,KAAA+P,EAAAtO,QAAAG,WAAAK,eAMAgR,YACAvR,UAAAtG,EAAA,eAEA8X,gBAAA,WACA,GAAAC,GAAApD,EAAAkD,WAAAvR,UAAA1B,KAAA,YACAoT,EAAAD,EAAAtU,MAGAuU,IAAA,GACArD,EAAAkD,WAAAvR,UAAA1B,KAAA,wCAAAzE,KAAA,WACAH,EAAAM,MAAAC,KAAA,YAAA,GACAP,EAAAM,MAAAuC,QAAA,kBAAAK,SAAA,cAEA8U,EAAA,IAAAhY,EAAA,2BAAAyD,QACAkR,EAAAkD,WAAAvR,UAAA1B,KAAA,wCAAAzE,KAAA,WACAH,EAAAM,MAAAC,KAAA,YAAA,GACAP,EAAAM,MAAAuC,QAAA,kBAAAI,YAAA,eAKAgV,kBAAA,WAEAtD,EAAAkD,WAAAvR,UAAA1B,KAAA,0BAAAzE,KAAA,WAEAH,EAAAM,MAAAiB,GAAA,SAAA,WACAoT,EAAAkD,WAAAC,uBAKApW,KAAA,WACAiT,EAAAkD,WAAAvR,UAAA7C,SACAkR,EAAAkD,WAAAI,oBACAtD,EAAAkD,WAAAC,qBAMAI,iBACAC,SAAAnY,EAAA,kBAEAoY,aAAA,WACAzD,EAAAuD,gBAAAC,SAAAhX,MAAA,WACAnB,EAAAM,MAAAsE,KAAA,uBAAApD,WAAA,WAAA6W,KAAA,WAAA,GAEArU,WAAA,WACAhE,EAAAM,MAAAsE,KAAA,uBAAAyT,KAAA,WAAA,IACA,SAKAV,aACAhD,KAAA5P,OACAuT,cAAAvT,OACArD,KAAA,WAEApB,KAAAgY,cAAAtY,EAAA,sBAAA,GAEAM,KAAAgY,gBAIAhY,KAAAqU,KAAA3U,EAAAM,KAAAgY,eAAAzV,QAAA,QAKAvC,KAAAgY,cAAAC,aAAA,WAAA,YAEAvY,EAAAM,KAAAqU,MAAA6D,SAAA,SAAA,SAAA,SAAA9V,GAEA,+BAAAA,EAAAE,OAAA8E,MAEAhF,EAAA+V,cAAAC,YACA/D,EAAAgD,YAAAC,mBACA5X,EAAAM,KAAAqU,MAAAgE,WAAA,aAIA3Y,EAAAM,KAAAqU,MAAA6D,SAAA,SAAA,QAAA,SAAA9V,GAEA,+BAAAA,EAAAE,OAAA8E,MAEAhF,EAAA+V,cAAAC,YACA/D,EAAAgD,YAAAC,mBACA5X,EAAAM,KAAAqU,MAAAgE,WAAA,YAIA3Y,EAAAM,KAAAqU,MAAA6D,SAAA,SAAA,UAAA,SAAA9V,GAEA,+BAAAA,EAAAE,OAAA8E,MAEAhF,EAAA+V,cAAAC,YACA/D,EAAAgD,YAAAC,mBACA5X,EAAAM,KAAAqU,MAAAgE,WAAA,cAKA3Y,EAAA,kBAAA4Y,IAAA,SAAA,SAAAlW,GAEAiS,EAAAgD,YAAAC,qBAIA5X,EAAA,kBAAAuB,GAAA,SAAA,SAAAmB,GAEAiS,EAAAgD,YAAAC,qBAIA5X,EAAA,eAAA4Y,IAAA,eAAA,SAAAlW,GAIAA,EAAA+V,cAAAC,WACA/D,EAAAgD,YAAAC,uBAKAA,iBAAA,WAEAtX,KAAAgY,eACAhY,KAAAgY,cAAAO,gBAAA,cAKAC,aACA1S,QAAApG,EAAA,0BACA+B,QAAA/B,EAAA,2BAGA+Y,aAAA,WACApE,EAAAmE,YAAA/W,QAAAZ,MAAA,SAAAuB,GACAA,EAAAkB,gBACA,IAAAqC,GAAAjG,EAAAM,MACAkC,EAAAyD,EAAA1F,KAAA,iBACAgC,EAAA0D,EAAA1F,KAAA,iBACA6F,EAAAH,EAAApD,QAAA8R,EAAAmE,YAAA1S,SACA4S,EAAA5S,EAAAxB,KAAA,SACAqU,EAAAD,EAAAzY,KAAA,QAGA2Y,EAAA,aAAAD,EAAA1W,EAAAC,EACA2W,EAAA,aAAAF,EAAA,OAAA,UAEAhT,GAAAE,KAAA+S,GACAF,EAAAzY,KAAA,OAAA4Y,MAIAzX,KAAA,WACAiT,EAAAY,kBACAZ,EAAAuB,WACAvB,EAAAiC,WAAAlV,OACAiT,EAAAuC,YAAAxV,OACAiT,EAAAtO,QAAAI,WACAkO,EAAAkD,WAAAnW,OACAiT,EAAAuD,gBAAAE,eAEAzD,EAAAoB,mBAEApB,EAAAmE,YAAA1S,QAAA3C,QACAkR,EAAAoE,eAMAvM,aAAAC,SACAkI,EAAA6B,mBChYA4C,GACAC,SAAArZ,EAAA,4BAEAsZ,kBAAA,WACAF,EAAAC,SAAAlZ,KAAA,WACA,GAAA8F,GAAAjG,EAAAM,MACAiZ,EAAAtT,EAAArB,KAAA,kBAAAnB,MACA8V,GAAA,GACAH,EAAAI,MAAAvT,MAKAuT,MAAA,SAAAC,GACAA,EAAAC,UACAC,YAAA,EACAC,cAAA,EACAC,iBAAA,EACAC,YAAA3W,OAAA0S,OAIAnU,KAAA,WACA0X,EAAAC,SAAA5V,QACA2V,EAAAE,sBCxBAS,GACAC,MAAA,iBACAzK,MAAAvP,EAAA,oCACA0Q,QAAA1Q,EAAA,kCACAia,cAAAja,EAAA,gCACAka,QAAAla,EAAA,0BACAma,iBAAAna,EAAA,sBACAoa,YAAApa,EAAA,sBACAqa,aAAAra,EAAA,uBACAsa,aAAAta,EAAA,uBAEAua,WAAA,SAAAC,GAGA,GAAAC,GAAAza,EAAA,wBAAAyD,OACA1B,EAAA/B,EAAA,wBAAAwa,EAAA,MACA9J,EAAA3O,EAAA6C,KAAA,oBACA4K,EAAAkB,EAAA/M,WAAA+W,QACAC,EAAAjK,EAAAc,KAAA,sBAEAuI,GAAAa,iBAAAH,EAAAD,EAAAhL,EAAAmL,IAGAC,iBAAA,SAAAH,EAAAD,EAAAhL,EAAAmL,GAGA,GAAA3a,EAAA+Z,EAAAC,OAAA3U,SAAA,MAAA,CACArF,EAAA+Z,EAAAC,OAAApV,KAAA,gCAAA3B,YAAA,eACA,IAAA4X,GAAA7a,EAAA+Z,EAAAC,OAAApV,KAAA,gCAAAjB,SAAA,SAAA8R,IAAA,mCACAoF,GAAA5W,SAAA6W,QAAA,GAAA,IAAA,WAEAf,EAAAgB,iBAAAN,EAAAD,EAAAhL,EAAAmL,SAKAZ,GAAAgB,iBAAAN,EAAAD,EAAAhL,EAAAmL,IAIAI,iBAAA,SAAAN,EAAAD,EAAAhL,EAAAmL,GAIA,GAAAK,GAAAjB,EAAAkB,YAAAR,EAAAD,EACAT,GAAAM,aAAA9Z,KAAA,mBAAAya,EAAA,IACAjB,EAAAO,aAAA/Z,KAAA,mBAAAya,EAAA,IAEAjB,EAAAG,QAAAnL,QAAAmM,KAAAV,EAAA,iBAAAC,GAEAV,EAAAE,cAAArV,KAAA,eAAAuW,SAEApB,EAAAE,cAAArV,KAAA,iBAAAuW,SAEA3L,EAAA4L,aAAArB,EAAAI,kBAGAJ,EAAAxK,MAAAhP,KAAA,MAAAoa,IAIAM,YAAA,SAAAR,EAAAD,GACA,GAAAC,GAAAY,SAAAZ,GACAD,EAAAa,SAAAb,GAEAlN,EAAAkN,EAAA,EACA/U,EAAA+U,EAAA,CAQA,OANA,IAAAlN,IACAA,EAAAmN,GAEAhV,EAAAgV,IACAhV,EAAA,IAEA6H,EAAA7H,IAGA6V,aAAA,WACAvB,EAAAxK,MAAAhO,GAAA,OAAA,WAEA,GAAA0E,GAAAjG,EAAAM,KAMA,IALA2F,EAAA7C,QAAA6C,EAAA5B,SACA4B,EAAAzE,WAAA,SAAA0B,SAAA,mBAEA+C,EAAAzE,WAAA,SAAA0B,SAAA,kBAEAlD,EAAA+Z,EAAAC,OAAA3U,SAAA,MAAA,CAEA,GAAAkW,GAAAvb,EAAA+Z,EAAAC,OAAApV,KAAA,gCAAAjB,SAAA,SAAA8R,IAAA,mCACA8F,GAAAtX,SAAA6W,QAAA,GAAA,SAEAd,GAAAxX,KAAAuX,EAAAC,MAEA,IAAAlN,GAAAiN,EAAAE,cAAArV,KAAA,gBACAiI,GAAAK,cAAAJ,MAIA0O,cAAA,WACAxb,EAAA,sBAAAuB,GAAA,QAAA,WAEA,GAAAiZ,GAAAxa,EAAAM,MAAAC,KAAA,mBAEAwZ,GAAAQ,WAAAC,MAIA9Y,KAAA,WACA1B,EAAA+Z,EAAAC,OAAAvW,SAEAsW,EAAAyB,gBACAzB,EAAAuB,kBC/GAG,GACAC,QAAA1b,EAAA,uBACA2b,SAAA3b,EAAA,wBACA4b,iBAAA5b,EAAA,8BACA6b,kBAAA7b,EAAA,8BACA8b,YAAA9b,EAAA,sBACA+b,YAAA/b,EAAA,iBAEAgc,QAAA,WAGA,IAAA,GAFAC,IAAAR,EAAAC,QAAAD,EAAAE,SAAAF,EAAAG,iBAAAH,EAAAI,kBAAAJ,EAAAK,aAEAvT,EAAA,EAAAA,EAAA0T,EAAAxY,OAAA8E,IAEAkT,EAAAS,gBAAAD,EAAA1T,GAEAkT,GAAAU,iBACAV,EAAAW,4BA4BAD,eAAA,WACAV,EAAAM,YAAAxa,GAAA,QAAA,SAAAmB,GACAA,EAAAkB,oBAIAyY,gBAAA,WACAZ,EAAAM,YAAA7Y,SAAA,WACAuY,EAAAM,YAAA9Y,YAAA,eACAwY,EAAAM,YAAAxb,KAAA,gBAAA,QACA+b,EAAAC,eAAAd,EAAAM,cAGAK,yBAAA,WACA,GAAApc,EAAA,0BAAAyD,OAAA,EAAA,CACA,GAAA+Y,GAAAxc,EAAA,0BAAAO,KAAA,SAAAkc,cACAC,EAAA1c,EAAA,yBAAAO,KAAA,SAAAkc,aACA,WAAAD,GAAA,UAAAE,GACAjB,EAAAkB,uBAOAA,mBAAA,WACAlB,EAAAM,YAAA9Y,YAAA,WACAwY,EAAAM,YAAA7Y,SAAA,eACAuY,EAAAM,YAAAxb,KAAA,gBAAA,SACA+b,EAAAC,eAAAd,EAAAM,cAGAa,eAAA,SAAAC,GACA,QAAAA,EACApB,EAAAM,YAAAe,QAAA,mBAAA7Z,YAAA,YAEAwY,EAAAkB,sBAIAT,gBAAA,SAAAa,GACA,GAAAC,GAAAD,EAAArI,MACAuI,EAAAF,EAAAxc,KAAA,KAEA,IAAA,iBAAA0c,GAAA,SAAAA,EAAA,CACA,GAAAC,GAAAzB,EAAAG,iBAAAlH,MAEAyI,GADA1B,EAAAI,kBAAAnH,MACA+G,EAAAK,YAAApH,MAEA,MAAAwI,GAAA,KAAAC,EACAnd,EAAA,wBAAAkD,SAAA,YAEAlD,EAAA,wBAAAiD,YAAA,gBAGA,KAAA+Z,GACAhd,EAAA,mBAAAid,GAAA/Z,SAAA,YACAlD,EAAA,mBAAAid,GAAArY,KAAA,SAAAyT,KAAA,WAAA,IAEArY,EAAA,mBAAAid,GAAAha,YAAA,WAIA8Z,GAAAxb,GAAA,SAAA,WACA,GAAA6b,GAAApd,EAAAM,MAAAC,KAAA,KACA,IAAA,iBAAA6c,GAAA,SAAAA,EAAA,CACA,GAAAF,GAAAzB,EAAAG,iBAAAlH,MACAyI,EAAA1B,EAAAK,YAAApH,KACA,MAAAwI,GAAA,KAAAC,GAEAnd,EAAA,wBAAAkD,SAAA,YACAlD,EAAA,wBAAA4E,KAAA,SAAAyT,KAAA,WAAA,GACArY,EAAA,cAAAO,KAAA,WAAA,IAEAP,EAAA,wBAAAiD,YAAA,gBAGA,KAAAjD,EAAAM,MAAAoU,OACA1U,EAAA,mBAAAod,GAAAla,SAAA,YACAlD,EAAA,mBAAAod,GAAAxY,KAAA,SAAAyT,KAAA,WAAA,IAEArY,EAAA,mBAAAod,GAAAna,YAAA,eAQAvB,KAAA,WACA1B,EAAA,kBAAAyD,OAAA,GACAgY,EAAAO,YCvIAM,GACAe,KAAArd,EAAA,eACAsd,WAAAtd,EAAA,yBACAud,WAAAvd,EAAA,iBACAwd,UAAAxd,EAAA,mBACAyd,WAAAzd,EAAA,cACA0d,UAAA1d,EAAA,uCACA2d,WAAA3d,EAAA,0BACA4d,QAAA5d,EAAA,sBAEAgc,QAAA,WAIAhc,EAAA,uBAAAsL,IAAA,UAAA,UACAtL,EAAA,wBAAAuC,OACA+Z,EAAAiB,WAAAhc,GAAA,SAAA,WACAvB,EAAAM,MAAA6E,GAAA,eAAA,EACAnF,EAAAM,MAAA+X,KAAA,WAAA,IAEArY,EAAA,kBAAAuC,OACA+Z,EAAAuB,eAGAvB,EAAAwB,cACArC,EAAAW,2BACAE,EAAAyB,0BACAzB,EAAAsB,QAAArc,GAAA,QAAA+a,EAAAuB,WACAvB,EAAAkB,UAAAjc,GAAA,SAAA+a,EAAA0B,eACA1B,EAAAmB,WAAAlc,GAAA,QAAA,SAAAmB,GACAA,EAAAkB,gBAEA,IAAAqa,GAAAje,EAAAM,KACAgc,GAAA4B,UAAAD,KAEAje,EAAA,gBAAAuB,GAAA,QAAA,SAAAmB,GACA,GAAAyb,GAAAne,EAAA,iBACAoe,EAAApe,EAAA,kBACAme,GAAAhZ,GAAA,eAAA,GAAAiZ,EAAAjZ,GAAA,eAAA,IACAnF,EAAA,kBAAAiD,YAAA,QACAjD,EAAA,kBAAAwC,OACAE,EAAAkB,qBAKAka,YAAA,WACA,GAAAO,GAAAre,EAAA,gBAEAqe,GAAAle,KAAA,WACA,GAAAme,GAAAte,EAAAM,KACAie,SAAAD,EAAAnY,OACAqY,eAAAD,QAAAE,OAAA,GACAC,mBAAAH,QAAA9V,OAAA,GAAAkW,WAGAL,EAAAvP,QACAuP,EAAApD,KAAA,WAAAwD,mBAAA,YAAAF,mBAOAR,cAAA,WACA1B,EAAAiB,WAAApY,GAAA,eAAA,IACAmX,EAAAiB,WAAAlF,KAAA,WAAA;AACArY,EAAA,wBAAAO,KAAA,SAAA,IAEAP,EAAA,kBAAAuC,QAGAsb,UAAA,WACA,GAAAe,GAAA5e,EAAAM,MACAue,EAAAD,EAAAzZ,GAAA,WAEA,IAAAyZ,EAAAvZ,SAAA,wBAAA,EAAA,CACA,GAAAyZ,GAAAF,EAAAre,KAAA,KACA+b,GAAAyC,YAAAD,EAAAD,OAEAvC,GAAAe,KAAAna,SAAA,QACAoZ,EAAAe,KAAAhY,SAAA,uBAAA,GACAiX,EAAAkB,UAAArY,GAAA,eAAA,GACAmX,EAAA0C,iBAAA1C,EAAAkB,UAAA,YAMAuB,YAAA,SAAAE,EAAAC,GACA,GAAAC,GAAAnf,EAAA,wCAEAmf,GAAAhf,KAAA,SAAAif,GACA,GAAAR,GAAA5e,EAAAM,MACA+e,EAAAT,EAAAre,KAAA,mBACA,IAAA8e,IAAAJ,EAAA,CACA,GAAA,sBAAAA,EAAA,CACA,GAAAK,GAAAtf,EAAA,IAAAif,GAAA5Z,SAAA,UACAia,MAAA,GACAV,EAAAha,KAAA,sBAAApC,OACAoc,EAAAha,KAAA,qBAAArC,SAEAqc,EAAAha,KAAA,sBAAArC,OACAqc,EAAAha,KAAA,qBAAApC,YAGA0c,MAAA,GACAN,EAAAha,KAAA,sBAAArC,OACAqc,EAAAha,KAAA,qBAAApC,SAEAoc,EAAAha,KAAA,sBAAApC,OACAoc,EAAAha,KAAA,qBAAArC,OAIAqc,GAAApc,UAGA8Z,EAAAe,KAAAna,SAAA,SAGAqc,gBAAA,WACAjD,EAAAe,KAAAhY,SAAA,uBAAA,IAEAiX,EAAAqB,WAAA5O,QACAuN,EAAAqB,WAAA6B,OAAA,GACAxf,EAAA,uBAAAsL,IAAA,UAAA,UACAtL,EAAA,wBAAAuC,SAIAkd,WAAA,WACAnD,EAAAe,KAAAna,SAAA,YACAC,OAAAa,WAAAsY,EAAAoD,WAAA,MAEAA,WAAA,WAMA,GALA1f,EAAA,uBAAAsL,IAAA,UAAA,UACAtL,EAAA,wBAAAuC,OACA+Z,EAAAe,KAAApa,YAAA,QACAqZ,EAAAe,KAAApa,YAAA,YACAqZ,EAAAoB,UAAAnb,OACA+Z,EAAAe,KAAAhY,SAAA,uBAAA,EAAA,CACA,GAAAsa,GAAA3f,EAAA,kDACAsc,GAAAoB,UAAAza,YAAA,UACA0c,EAAAzc,SAAA,UACAyc,EAAAnd,SAIA+Z,eAAA,SAAA0B,EAAA2B,GACA,GAAAC,GAAA5B,EAAA1d,KAAA,iBACAyc,EAAAiB,EAAA1d,KAAA,gBAEA,SAAAqf,GACA5f,EAAA,wBAAAO,KAAA,SAAA,GAEAP,EAAA,8BAAA6f,EAAA,MAAAtf,KAAA,QAAAyc,IAGAkB,UAAA,SAAAU,GACA,GAAAkB,GAAAlB,EAAA9B,QAAA,mBAAAsC,QACAW,EAAAD,EAAA,EACAE,EAAAF,EAAA,CACA7B,IAAAje,EAAA,6BAAA+f,EAAA,KAEAzD,EAAAC,eAAAqC,GAEAtC,EAAAe,KAAAhY,SAAA,uBAAA,GACAiX,EAAA2D,cAAAD,EAAA/B,GAAAW,GACAtC,EAAAqB,WAAA5O,QACAgR,EAAAzD,EAAAoB,UAAAja,SAGAzD,EAAA,wBAAAsL,IAAA,UAAA,UACAtL,EAAA,uBAAAuC,OACA+Z,EAAAqB,WAAA6B,OAAAO,MAGAzD,EAAAmD,aACAnD,EAAAoD,aACApD,EAAA4D,eAAAtB,KAMAsB,eAAA,SAAAtB,GACA,GAAAuB,GAAAvB,EAAA9B,QAAA,mBAAAvc,KAAA,mBACA,uBAAA4f,EACAvB,EAAAvZ,SAAA,SACAoW,EAAAY,kBAGAZ,EAAAkB,qBAIAiC,EAAAvZ,SAAA,UACArF,EAAA,IAAAmgB,GAAA9H,KAAA,WAAA,GACA,iBAAA8H,EACAngB,EAAA,0BAAAO,KAAA,SAAA,GACA,eAAA4f,GACAngB,EAAA,yBAAAO,KAAA,SAAA,GAEA+b,EAAAyB,4BAGA/d,EAAA,IAAAmgB,GAAA9H,KAAA,WAAA,GACA,iBAAA8H,EACAngB,EAAA,0BAAAO,KAAA,QAAA,SACA,eAAA4f,GACAngB,EAAA,yBAAAO,KAAA,QAAA,SAEA+b,EAAAyB,0BACAtC,EAAAW,6BAKA2B,wBAAA,WAEA,GAAA/d,EAAA,0BAAAyD,OAAA,EAAA,CACA,GAAA+Y,GAAAxc,EAAA,0BAAAO,KAAA,SAAAkc,cACAC,EAAA1c,EAAA,yBAAAO,KAAA,SAAAkc,aAGA,WAAAD,GAAA,UAAAE,EACA1c,EAAA,4BAAAkD,SAAA,YAGAlD,EAAA,4BAAAiD,YAAA,cAOAgd,cAAA,SAAAD,EAAA/B,EAAAW,GACA,IAAAoB,GAAApB,EAAAvZ,SAAA,iBAAA,GACAiX,EAAA0C,iBAAA1C,EAAAiB,WAAA,WACAjB,EAAA0C,iBAAA1C,EAAAkB,UAAA,SACAlB,EAAAmD,aACAnD,EAAAC,eAAA0B,EAAA,QAGA3B,EAAA8D,gBAAAJ,EAAA/B,IAIAe,iBAAA,SAAAqB,EAAAC,GACA,UAAAA,EACAD,EAAAhI,KAAA,WAAA,GAEAgI,EAAAhI,KAAA,WAAA,IAIA+H,gBAAA,SAAAJ,EAAA/B,GACA,GAAA3B,EAAAe,KAAAhY,SAAA,uBAAA,EAAA,CACA,GAAAkb,GAAAjE,EAAAoB,UAAAja,MACAuc,KAAAO,EACAjE,EAAAmD,cAEAnD,EAAAoB,UAAAnb,OACA+Z,EAAAoB,UAAAza,YAAA,UACAgb,EAAAjH,SACAiH,EAAA/a,SAAA,aAKAxB,KAAA,WACA4a,EAAAN,YChRA1U,GACAC,MAAA,gBACAC,eAAAxH,EAAA,sBAEAyH,OAAA,SAAAC,EAAAC,EAAAC,GACA,GAAAC,EACA,IAAAD,EAAA,CACA,GAAAE,GAAA,GAAAC,KACAD,GAAAE,QAAAF,EAAAG,UAAA,GAAAL,EAAA,GAAA,GAAA,KACAC,EAAA,aAAAC,EAAAI,kBAEAL,GAAA,EAEA5H,UAAAkI,OAAAT,EAAA,IAAAC,EAAAE,EAAA,YAGAO,KAAA,SAAAV,GAGA,IAAA,GAFAW,GAAAX,EAAA,IACAY,EAAArI,SAAAkI,OAAA7G,MAAA,KACAiH,EAAA,EAAAA,EAAAD,EAAA7E,OAAA8E,IAAA,CAEA,IADA,GAAAC,GAAAF,EAAAC,GACA,MAAAC,EAAAC,OAAA,IACAD,EAAAA,EAAAE,UAAA,EAAAF,EAAA/E,OAEA,IAAA,IAAA+E,EAAAG,QAAAN,GACA,MAAAG,GAAAE,UAAAL,EAAA5E,OAAA+E,EAAA/E,QAGA,MAAA,OAGAmF,WAAA,WACA,GAAAC,GAAA7I,EAAA,iBAEA6I,GAAA1H,MAAA,SAAAf,GACAA,EAAAwD,iBACA0D,EAAAG,OAAA,gBAAA,GAAA,IACAH,EAAAE,eAAAX,aAIAiC,WAAA,WACA,GAAAC,GAAA9I,SAAAkI,OAAAQ,QAAA,gBACAI,UACAzB,EAAAE,eAAAhF,OACA8E,EAAAsB,eAIAlH,KAAA,WACA4F,EAAAwB,eClDA0X,GAEAxf,MACAyf,WAAAzgB,EAAA,wBAGA0gB,WAAA,WACA,GAAAC,GAAAH,EAAAxf,KAAAyf,WAAAlgB,KAAA,YAEAqgB,EAAA3gB,SAAA4gB,cAAA,SACAD,GAAA3H,KAAA,kBACA2H,EAAAE,IAAA,+CAAAH,EACA,kBACA1gB,SAAA8gB,KAAAC,YAAAJ,IAGApH,MAAA,WACA,GAAAyH,GAAA9d,OAAA8d,WAEAC,EAAAC,WAAAX,EAAAxf,KAAAyf,WAAAlgB,KAAA,aACA6gB,EAAAD,WAAAX,EAAAxf,KAAAyf,WAAAlgB,KAAA,aACA8gB,EAAAhG,SAAAmF,EAAAxf,KAAAyf,WAAAlgB,KAAA,cACA+gB,EAAAd,EAAAxf,KAAAyf,WAAAlgB,KAAA,eACAghB,EAAA,GAAAN,GAAAO,KAAAC,OAAAP,EAAAE,GAEAM,GACAC,QAAAT,IAAAA,EAAAE,IAAAA,GACAC,KAAAA,GAGAO,EAAA,GAAAX,GAAAO,KAAAK,IAAA5hB,SAAA6hB,eAAA,sBACAJ,EAEA,IAAAT,GAAAO,KAAAO,QACAC,SAAAT,EACAK,IAAAA,EACAK,KAAAX,KAIA5f,KAAA,WAEA8e,EAAAxf,KAAAyf,WAAAhd,OAAA,IACAN,OAAA+e,MAAA1B,EAAAhH,MAEAgH,EAAAE,gBC7CAyB,GACA/b,QAAApG,EAAA,qBACAoiB,cAAApiB,EAAA,yBACAqiB,gBAAAriB,EAAA,6BAEAsiB,gBAAA,SAAAC,GACA,GAAAC,GAAAD,EAAAjhB,MAAA,IACAkhB,GAAA,GAAA/e,OAAA,IACA8e,EAAA,IAAAC,EAAA,GAEA,IAAAC,GAAAziB,EAAAuiB,GACArQ,EAAAiQ,EAAAO,UAAAD,EAEAA,IAAAA,EAAAte,UACAnE,EAAA,aAAAiE,SACAC,UAAAue,EAAAte,SAAAC,IAAA8N,GACA,IAAA,WACA/O,OAAAG,SAAAC,KAAAgf,KAKAG,UAAA,SAAAH,GACA,GAAArQ,GAAA,EAKA,OAHA1F,cAAAC,UACAyF,EAAA,IAEAA,GAGAzP,eAAA,WACA0f,EAAAC,cAAAjhB,MAAA,SAAAuB,GACAA,EAAAkB,gBACA,IAAAqC,GAAAjG,EAAAM,MACAiiB,EAAAtc,EAAA1F,KAAA,OACA4hB,GAAAG,gBAAAC,KAGAJ,EAAAE,gBAAA5N,OAAA,WACA,GAAAxO,GAAAjG,EAAAM,MACAiiB,EAAAtc,EAAAyO,KACAyN,GAAAG,gBAAAC,MAIAI,YAAA,WACA,GAAAC,GAAAzf,OAAAG,SAAAC,IACA4e,GAAAG,gBAAAM,IAGAlhB,KAAA,WACAygB,EAAA/b,QAAA3C,SACA0e,EAAA1f,iBACA0f,EAAAQ,iBC5CAE,EAAA,SAAA7iB,GA+DA,QAAA8iB,KAGAC,EAAA/iB,EAAAgjB,IACAC,GAAAjjB,EAAAmD,QAEA4f,EAAAtf,OAAA,IAEAyf,GAAAne,SAAA9E,SAAAkjB,aAEAC,GAAAC,WAAAC,IACAF,GAAAG,YAAAC,GAEAC,KAMA,QAAAC,KAGA,GAAAC,IAAAA,GAAAlgB,OAAA,EAAA,CAEA,GAAAmgB,GAAA5jB,EAAA6jB,GACAC,GAAAF,EAAAhf,KAAA,UACAkf,EAAAzL,KAAA,YAAA,EAEA,IAAA0L,EAEA/jB,GAAAG,KAAAwjB,GAAA,SAAApb,EAAAyb,GAEAD,EAAA/jB,EACA,kBAAAgkB,EAAA,KAAAA,EAAA,aAGAD,EAAAE,SAAAH,KAMAZ,KAEAY,EAAA5Q,WACA4Q,EAAA5gB,SAAAghB,KAMAJ,EAAAviB,GAAA,SAAA4iB,IAMA,QAAAC,KAGAC,EAAArkB,EAAAskB,IAIA,QAAAb,KACA,GAAAc,GAAAxB,EAAAvR,KAAA,sBAAA,IAAAuR,EAAAvR,KAAA,2BAAA,IAAAuR,EAAAvR,KAAA,oBAUAgT,EAAA,SAAAC,EAAA,SAGAC,EAAAtB,GAAA,QAAA,EAAA,CAEAL,GAAA4B,SACAH,MAAAA,EACAE,YAAAA,EACAE,SAAA,EACAL,OAAAA,IAIAxB,EAAAxhB,GAAA,oBAAAsjB,GACA9B,EAAAxhB,GAAA,yBAAAujB,GACA/B,EAAAxhB,GAAA,wBAAAwjB,GACAhC,EAAAxhB,GAAA,oBAAAyjB,GACAjC,EAAAxhB,GAAA,uBAAA0jB,GAGA,QAAAC,KAGAC,EAAAnlB,EAAAolB,IACAD,EAAA9M,KAAA,YAAA,GACA8M,EAAA5jB,GAAA,QAAA8jB,GAGA,QAAAC,KACA,GAAAC,IAAAA,GAAA9hB,OAAA,EAAA,CAEA0hB,EAAAnlB,EAAAolB,IACAI,EAAAxlB,EAAAylB,IACAC,EAAA1lB,EAAA2lB,GAEA,IAAAC,GAAAL,GAAAviB,OAAA,SAAA6iB,GACA,MAAAA,GAAAC,WAAAC,SAAAC,MACAviB,QAAAwiB,GAEAC,EAAAX,GAAAviB,OAAA,SAAA6iB,GACA,MAAAA,GAAAM,kBACA1iB,OAAA,CAEAmiB,IAAAM,GACAR,EAAAziB,YAAA,yBACAkiB,EAAAliB,YAAA,UACAuiB,EAAAviB,YAAA,UACAiiB,IACAkB,KACAR,GACAF,EAAAziB,YAAA,yBACAuiB,EAAAviB,YAAA,iCACAC,SAAA,sBACAkjB,KACAF,IACAR,EAAAziB,YAAA,yBACAkiB,EAAAliB,YAAA,oCACAC,SAAA,sBACAgiB,MAKA,QAAAkB,KAGAZ,EAAAxlB,EAAAylB,IACAD,EAAAnN,KAAA,YAAA,GACAmN,EAAAjkB,GAAA,QAAA8kB,GAIA,QAAAC,KAGAZ,EAAA1lB,EAAA2lB,IACAD,EAAArN,KAAA,YAAA,GACAqN,EAAAnkB,GAAA,QAAAglB,GAIA,QAAAC,KACAC,EAAAzmB,EAAA0mB,IACAD,EAAApO,KAAA,YAAA,GACAoO,EAAAllB,GAAA,QAAAolB,GAGA,QAAAC,KAIAC,EAAA7mB,EAAA8mB,IACAD,EAAA3jB,SAAA6jB,IAEAC,EAAAH,EAAAjiB,KAAA,SACAoiB,EAAA3O,KAAA,YAAA,GACA2O,EAAAC,WACAC,MAAA,EACAC,WAAA,EACAC,UAAA,IAGAC,QAAA,QACAC,MAAA,GACA5f,KAAA,MACA6c,OAAAgD,EAAAC,GAAAjC,IACAkC,WACAC,WAAAC,KAKAC,GAAA5nB,EAAA6nB,IACAD,GAAArlB,OAGAykB,EAAAzlB,GAAA,mBAAAumB,GACAd,EAAAzlB,GAAA,mBAAAwmB,GACAf,EAAAzlB,GAAA,iBAAAymB,GACAhB,EAAAzlB,GAAA,mBAAA0mB,GACAjB,EAAAzlB,GAAA,mBAAA2mB,GACAN,GAAArmB,GAAA,QAAA4mB,GAIA,QAAAC,KAGAtE,IAEAA,EAAA5Q,SAAA,SAAA,GACAmV,GAAAC,kBAMA,QAAAC,GAAAvE,GAGA,GAAAwE,GAAA,GAAA5V,QAAA,IAAAoR,EAAA,KAEAyE,EAAAlD,GAAAviB,OAAA,SAAA6iB,GACA,MAAA2C,GAAAE,KAAA7C,EAAAC,aAGA2C,GAAAA,EAAA7G,IAAA,SAAAiE,GAAA,MAAAA,GAAA8C,KACAN,GAAAO,wBAAAH,GAAA,GAEAI,EAAA,MAAA,kBAAA,KAAA7E,GAIA,QAAAS,GAAA/c,GAEA,GAAAohB,GAAA3lB,OAAAG,SAAAjC,IAEAqG,GAAAA,EAAAqhB,QAAA,UAAA,OACA,IAAAC,GAAA,GAAApW,QAAA,OAAAlL,EAAA,qBACAuhB,EAAAD,EAAAE,KAAAJ,EAEA,OAAAG,GAGAA,EAAA,GAGAE,mBAAAF,EAAA,GAAAF,QAAA,MAAA,MAFA,GAHA,KASA,QAAAK,KAGAjE,EAAAliB,YAAAomB,IACAhB,GAAAiB,qBAIA,QAAAC,KAGA,GAAAC,GAAArE,EAAA9f,SAAAgkB,IAEAZ,EAAAlD,GAAAviB,OAAA,SAAA6iB,GACA,MAAAA,GAAAM,kBAGAsC,EAAAA,EAAA7G,IAAA,SAAAiE,GACA,MAAAA,GAAA8C,IAGAa,IAEAJ,IACAf,GAAAO,wBAAAH,KAIAtD,EAAAjiB,SAAAmmB,IACAI,IAEApB,GAAAqB,gBAAAjB,GACAJ,GAAAO,wBAAAH,GAAA,IAIAI,EAAA,MAAA,sBAAA,MAAAW,GAIA,QAAAC,KAGAjE,EAAAviB,YAAAomB,IACAhB,GAAAiB,qBAIA,QAAAK,KAGA,GAAAC,GAAApE,EAAAngB,SAAAgkB,GAGA,IAFAD,IAEAQ,EAEAH,QAEA,CAEAjE,EAAAtiB,SAAAmmB,GAEA,IAAAZ,GAAAlD,GAAAviB,OAAA,SAAA6iB,GACA,MAAAA,GAAAC,WAAAC,SAAAC,MAGAyC,EAAAA,EAAA7G,IAAA,SAAAiE,GAAA,MAAAA,GAAA8C,IAEAN,IAAAqB,gBAAAjB,GAIAI,EAAA,MAAA,mBAAA,MAAAe,GAIA,QAAAC,KAGAnE,EAAAziB,YAAAomB,IACAhB,GAAAC,iBAIA,QAAAwB,KAGA,GAAAC,GAAArE,EAAArgB,SAAAgkB,GAEA,IAAAU,EAEAF,QAEA,CAEAnE,EAAAxiB,SAAAmmB,GAEA,IAAAZ,GAAAlD,GAAAviB,OAAA,SAAA6iB,GACA,MAAA,SAAAA,EAAA5M,OAGAwP,EAAAA,EAAA7G,IAAA,SAAAiE,GAAA,MAAAA,GAAA8C,IAEAN,IAAAO,wBAAAH,GAAA,GAIAI,EAAA,MAAA,mBAAA,MAAAkB,GAKA,QAAAC,GAAAxY,GAIA,GAAAyY,GAAAzY,EAAA0Y,UAAAlnB,OAAA,SAAA6iB,GAAA,MAAAA,GAAAsE,aAEA5E,IAAA0E,EAAArI,IAAA,SAAAiE,GAEA,OACA8C,GAAA9C,EAAA8C,GACA7C,WAAA,IAAAD,EAAAC,WAAAsE,KAAA,KACAtkB,OAAA,IAAA+f,EAAA/f,OAAAskB,KAAA,KACAnR,KAAA4M,EAAA,KACAwE,aAAAxE,EAAA,aACAvW,MAAAuW,EAAAyE,QAAAhb,MACAC,MAAAsW,EAAAyE,QAAA/a,MACA4W,gBAAAphB,SAAA8gB,EAAAyE,QAAAnE,iBAAA,KAAAN,EAAAyE,QAAAnE,iBAAAN,EAAAyE,QAAAnE,gBAAA,UAQAxC,GAAAnS,EAAAsU,WACAE,GAAAxU,EAAA+Y,YACAtE,GAAAzU,EAAAgZ,cAAA,EAAA,EAAAhZ,EAAAgZ,aAGAhZ,EAAAiZ,QACAjD,GAAA,IAAAhW,EAAAiZ,MAAAL,KAAA,MAIA,QAAAM,KAGArG,EAAAphB,YAAA0nB,IACA9D,EAAA3jB,SAAA6jB,IACAC,EAAAC,UAAA,MAAA,IACAW,GAAArlB,OACA8lB,GAAAuC,eACAvC,GAAAC,iBAIA,QAAAf,GAAAkD,EAAAP,GAGA,GAAAW,GAAA7D,EAAAxV,KAAA,qBACAsZ,EAAA9D,EAAAxV,KAAA,kBAEA,OAAA,UAAAuZ,EAAAC,GAMA,GAAAxC,GAAA,GAAA5V,QAAA,qDAAAmY,EAAA,SAAA,MAGAE,EAAAzC,EAAAE,KAAA+B,GAEAS,IAEAlrB,GAAAG,KAAA+pB,EAAA,SAAA3hB,EAAAjF,GAKA,IAHA,GACA6nB,GADAC,KAGAD,EAAA3C,EAAAU,KAAA5lB,EAAAwC,SACAslB,EAAAC,KAAAF,EAAA,GAEA7nB,GAAAwC,QAAAslB,EAAA3nB,OAAA,GAEAynB,EAAA5nB,EAAAqlB,KACApZ,MAAAjM,EAAAiM,MACAD,MAAAhM,EAAAgM,OAGA8b,EAAAA,EAAApoB,OAAA,SAAA6iB,GAAA,MAAAA,GAAApJ,gBAAAnZ,EAAAgM,MAAAmN,gBAEA2O,EAAA3nB,OAAA,IACAynB,EAAA5nB,EAAAqlB,IAAA2C,SAAAT,EAAAO,EAAAhB,KAAA,QAEA,SAAA9mB,EAAA2V,MAAAgS,IAEAC,EAAA5nB,EAAAqlB,KACApZ,MAAAjM,EAAAiM,MACAD,MAAAhM,EAAAgM,MACAgc,SAAAR,KASA,IAAAS,KAEAvrB,GAAAG,KAAA+qB,EAAA,SAAA3iB,EAAAjF,GAEAioB,EAAAF,MACA1C,GAAApgB,EACAgH,MAAA2b,EAAA3iB,GAAAgH,MACAD,MAAA4b,EAAA3iB,GAAA+G,MACAgc,SAAAJ,EAAA3iB,GAAA+iB,aAOAJ,EAAAnmB,OAIAwmB,EAAAC,KAAA,SAAA3F,EAAA4F,GACA,MAAA5F,GAAAvW,MAAAmc,EAAAnc,QAKA0b,EAAAO,IAMA,QAAA5D,GAAAD,GAGA,GAAAgE,GAAA,EA0BA,OAxBAA,IACA,2BAGAhE,EAAAnY,QACAmc,GAAA,aAAAhE,EAAAnY,MAAA,UAAAmY,EAAApY,MAAA,MAEAoc,GACA,0DAGAhE,EAAApY,MACA,SAEAoY,EAAA4D,WACAI,GAAA,kCAAAhE,EAAA4D,SAAA,UAEAI,GACA,6BACA1E,EAAAxV,KAAA,kBAAA,0EASA,QAAAma,KAGAtD,IAEAllB,OAAAyoB,YAIA,QAAA/C,GAAA7E,EAAA6H,EAAAC,EAAAnkB,GAGA,IAEAokB,GAAA,OAAA,QAAA/H,EAAA6H,EAAAC,EAAAnkB,GAEA,MAAAjF,KASA,QAAAyhB,GAAAzhB,GAGA,GAAAgC,GAAA1E,EAAA0C,EAAAoI,eACAnD,EAAAjD,EAAAgQ,KAIAmV,KACAa,IAEA,gBAAA/iB,EACAygB,IAEAG,EAAA5gB,GAIA,QAAAqkB,GAAAtpB,GAGA,GAAAupB,GAAA,MACAC,EAAAxpB,EAAAypB,QAAAxN,WAAA,GAEA,IAAAsN,EAAAtjB,QAAAujB,MAIA,OAFAxpB,EAAAkB,iBAEAlB,EAAAypB,SAGA,IAAA,IACAzB,IACA1D,EAAAoF,QASA,QAAAvH,GAAAniB,EAAA8O,GAGAwY,EAAAxY,GAIA,QAAAuT,GAAAriB,EAAAY,GAGAulB,EAAA,MAAA,gBAAA,KAAAvlB,EAAAqlB,IAIA,QAAA7D,GAAApiB,EAAAY,GAGAulB,EAAA,MAAA,iBAAA,KAAAvlB,EAAAqlB,IAGA,QAAA3D,GAAAtiB,GAGA2lB,GAAAtF,EAAAvR,KAAA,WAEA4S,IACAV,IACA4B,IACAgB,IAEAE,IAEAI,IAEA+E,IAIA,QAAA1G,GAAAviB,EAAAY,EAAAwlB,GAGAD,EAAA,MAAA,gBAAA,KAAAC,GAIA,QAAAtF,GAAA6I,GAIAA,EAAAC,QACAjE,GAAAkE,kBAAA,GAEAlE,GAAAkE,kBAAA,GAIA,QAAAlH,GAAA3iB,GAGAA,EAAAkB,iBAGA2lB,IAIA,QAAAlD,GAAA3jB,GAGAA,EAAAkB,iBAGA+lB,IAIA,QAAApD,GAAA7jB,GAGAA,EAAAkB,iBAEAwkB,IACAsC,IAEAZ,IAIA,QAAAnD,GAAAjkB,GAEAA,EAAAkB,gBAEA,IAAA4oB,GAAA,WACApE,IAGAqE,UAAAC,UACAD,SAAAE,sBAEAF,SAAAG,oBAAAJ,GAIA,QAAA1E,GAAAplB,GAGA2hB,EAAAnhB,SAAAynB,IACA1H,GAAA1hB,GAAA,QAAAyqB,GAIA,QAAA7D,GAAAzlB,GAGAA,EAAAkB,iBACA8mB,IAIA,QAAA3C,GAAArlB,EAAAiF,GAGAA,GACA+iB,IAIA,QAAA1C,GAAAtlB,GAGA,KAAAskB,EAAAC,UAAA,QACAyD,IAEAzH,GAAA1hB,GAAA,QAAAyqB,GAIA,QAAA/D,GAAAvlB,GAGAmkB,EAAA5jB,YAAA8jB,IACAa,GAAAplB,OAEA4lB,IACAgB,IACAK,IACAI,IAEAxB,GAAAuC,eACAvC,GAAAC,gBAGA,KAAA,GADAG,MACAlgB,EAAA,EAAAA,EAAAskB,UAAAppB,OAAA8E,IACAkgB,EAAA4C,KAAAwB,UAAAtkB,GAAAogB,GAEAN,IAAAO,wBAAAH,GAAA,GAGAqE,IACAliB,aAAAkiB,IAEAA,GAAA9oB,WAAA+oB,EAAAC,IAIA,QAAAD,KAGAlE,EAAA,MAAA,gBAAA,KAAA7B,EAAAtS,OAIA,QAAAwT,GAAAxlB,EAAAY,GAGA+kB,GAAAC,iBACAD,GAAA4E,aAAA3pB,EAAAqlB,IAEAE,EAAA,MAAA,gBAAA,KAAAvlB,EAAAqlB,IArzBA,GAAA7E,GACAO,EACAtB,EACAoC,EACAK,EACAE,EAEAe,EAEAI,EACAG,EACAY,GACA3E,GAEAoF,GAGA1E,GACA6D,GACAjC,GAEArC,GACAE,GAEA0J,GACA9G,GACAC,GAKA3C,GAAA,sCAEAO,GAAA,kBACAS,GAAA,gBACAtB,GAAA,WAEAoC,GAAA,+CACAK,GAAA,yCACAE,GAAA,yCACAe,GAAA,gBAEAI,GAAA,cACAe,GAAA,sBAEAwB,GAAA,SACAtC,GAAA,oBACA4D,GAAA,6BACAzG,GAAA,gBAGA8I,GAAA,GA8wBA,OAAA,YAUA,MAHAlK,MAIAphB,KAAAohB,EACAoK,OAAAvB,KAIA7qB,QCn2BAqsB,GAEAC,YAAA,WACA,GAAAC,GAAArtB,EAAA,qBAEAqtB,GAAA5pB,OAAA,GACA4pB,EAAAltB,KAAA,WACA,GAAAye,GAAA5e,EAAAM,KACA6sB,GAAAG,WAAA1O,GAEAuO,EAAAI,mBAAA3O,MAAA,GACAuO,EAAAK,YAAA5O,EAAAha,KAAA,qBAMA0oB,WAAA,SAAArP,GACAje,EAAAmD,QAAA5B,GAAA,SAAA,WACA,GAAAksB,GAAAN,EAAAI,mBAAAtP,GACAyP,EAAAzP,EAAArZ,KAAA,gBACA8oB,GAAAroB,SAAA,cAAA,GACAooB,KAAA,GACAN,EAAAK,YAAAE,MAMAF,YAAA,SAAAE,GACA,GAAAC,GAAAD,EAAAntB,KAAA,sBAEAotB,GAAAlqB,OAAA,IACAiqB,EAAApiB,IAAA,mBAAA,OAAAqiB,EAAA,KACAD,EAAAxqB,SAAA,aAIAqqB,mBAAA,SAAAlQ,GACA,GAAAuQ,GAAA5tB,EAAAmD,QAAAe,YACA2pB,EAAAD,EAAA5tB,EAAAmD,QAAAkB,SACAypB,EAAA9tB,EAAAqd,GAAAlZ,SAAAC,IACA2pB,EAAA/tB,EAAAqd,GAAAzY,KAAA,iBACAopB,EAAAF,EACAG,EAAAH,EAAAC,EAAA1pB,SACA6pB,EAAAF,GAAAH,GAAAC,GAAAF,EACAO,EAAAF,GAAAJ,GAAAI,GAAAL,CAEA,OAAAM,MAAA,IAEAA,KAAA,EACAC,KAAA,EADA,SASAC,WAAA,SAAA/Q,GACArd,EAAAqd,GAAAzY,KAAA,qBAAAzE,KAAA,WACA,GAAA8F,GAAAjG,EAAAM,MACAwgB,EAAA7a,EAAA1F,KAAA,kBACA0F,GAAAqF,IAAA,mBAAA,OAAAwV,EAAA,KACA7a,EAAAzE,WAAA,sBAIA6sB,YAAA,WACAruB,EAAAmD,QAAA5B,GAAA,gBAAA,WACAvB,EAAA,qBAAAyD,QACAzD,EAAA,gBAAAG,KAAA,WACAgtB,EAAAmB,gBAAAhuB,OACA6sB,EAAAiB,WAAA9tB,WAOAguB,gBAAA,SAAAjR,GACA,GAAAkR,GAAAvuB,EAAAqd,GAAAlZ,SAAAC,IACAoqB,EAAAD,EAAAvuB,EAAAqd,GAAAoR,cAEAC,EAAA1uB,EAAAmD,QAAAe,YACAyqB,EAAAD,EAAA1uB,EAAAmD,QAAAkB,QAEA,OAAAmqB,GAAAE,GAAAH,EAAAI,GAGAjtB,KAAA,WACA1B,EAAAmD,QAAAC,QAAA,MACA+pB,EAAAC,cAEAptB,EAAAmD,QAAA5B,GAAA,SAAA,WACAvB,EAAAmD,QAAAC,QAAA,MACA+pB,EAAAC,gBAIAptB,EAAA,qBAAAyD,QACA0pB,EAAAkB,gBCrGAO,GAGA5tB,MACA6H,MAAA9D,OACA2L,QAAA3L,OACAiV,MAAAjV,OACA8pB,SACAC,MAAA/pB,OACAuK,MAAAvK,OACAgqB,YAAAhqB,OACAiqB,WAAAjqB,OACAkqB,WAAAlqB,OACAmqB,aAAAnqB,OACAoqB,SAAApqB,OACAqqB,YAAArqB,SAKAsqB,iBAAA,+DAGA3tB,KAAA,WAMA,GAFAktB,EAAA5tB,KAAAgZ,MAAAha,EAAA,kBAEA4uB,EAAA5tB,KAAAgZ,MAAAvW,OAAA,CAMA,GAAAwG,GAAAjK,EAAA,wBAEA,IAAAiK,EAAAxG,OAAA,CAMA,GAAAsD,GAAA/G,EAAA,kIAEA,IAAA+G,EAAAtD,OAAA,CAMAsD,EAAAxF,GAAA,QAAA0I,EAAA2kB,EAAAU,qBAEAtvB,EAAAC,UAAAsvB,MAAA,SAAA7sB,GACAA,EAAAA,GAAAS,OAAA/C,MAGA,IAAAsC,EAAAypB,SAAAnsB,EAAA,cAAAyD,OAAA,GACAmrB,EAAAY,cAIAZ,EAAA5tB,KAAA6H,MAAA+lB,EAAA5tB,KAAAgZ,MAAApV,KAAA,0BAGAgqB,EAAA5tB,KAAAgZ,MAAAzY,GAAA,QAAAqtB,EAAAa,mBACAb,EAAA5tB,KAAA6H,MAAAtH,GAAA,QAAAqtB,EAAAc,SAGAd,EAAA5tB,KAAA6tB,QAAAC,MAAA9uB,EAAA,iBAAA4uB,EAAA5tB,KAAAgZ,OACA4U,EAAA5tB,KAAA6tB,QAAAvf,MAAAtP,EAAA,iBAAA4uB,EAAA5tB,KAAAgZ,OACA4U,EAAA5tB,KAAA6tB,QAAAE,YAAA/uB,EAAA,uBAAA4uB,EAAA5tB,KAAAgZ,OACA4U,EAAA5tB,KAAA6tB,QAAAG,WAAAhvB,EAAA,iBAAA4uB,EAAA5tB,KAAAgZ,OACA4U,EAAA5tB,KAAA6tB,QAAAI,WAAAjvB,EAAA,sBAAA4uB,EAAA5tB,KAAAgZ,OACA4U,EAAA5tB,KAAA6tB,QAAAc,MAAA3vB,EAAA,iBAAA4uB,EAAA5tB,KAAAgZ,OACA4U,EAAA5tB,KAAA6tB,QAAAM,SAAAnvB,EAAA,qBAAA4uB,EAAA5tB,KAAAgZ,OACA4U,EAAA5tB,KAAA6tB,QAAAO,YAAApvB,EAAA,yBAAA4uB,EAAA5tB,KAAAgZ,MAGA,IAAA4V,GAAA5vB,EAAA,8BAAAO,KAAA,2BAEAqvB,IACA7oB,EAAAnC,KAAA,qBAAAgrB,EAAA,MAAAzuB,YAIA0uB,UAAA,SAAAC,GASAlB,EAAA5tB,KAAAgZ,MAAA1O,IAAA,UAAA,QACAsjB,EAAA5tB,KAAAgZ,MAAA9W,SAAA,MAGA0rB,EAAA5tB,KAAA6tB,QAAAC,MAAA5T,KAAA4U,EAAAte,KAAA,UACAod,EAAA5tB,KAAA6tB,QAAAvf,MAAA4L,KAAA4U,EAAAte,KAAA,UACAod,EAAA5tB,KAAA6tB,QAAAE,YAAA7T,KAAA4U,EAAAte,KAAA,gBAGAod,EAAA5tB,KAAA6tB,QAAAc,MAAAzU,KAAA4U,EAAAlrB,KAAA,kBAAA8V,SAGAkU,EAAA5tB,KAAA6tB,QAAAG,WAAAzuB,KAAA,MAAAuvB,EAAAte,KAAA,cACAod,EAAA5tB,KAAA6tB,QAAAG,WAAAzuB,KAAA,MAAAuvB,EAAAte,KAAA,UACAod,EAAA5tB,KAAA6tB,QAAAI,WAAA1uB,KAAA,gBAAAuvB,EAAAte,KAAA,mBACAod,EAAA5tB,KAAA6tB,QAAAI,WAAA1uB,KAAA,MAAAuvB,EAAAte,KAAA,UAGAod,EAAA5tB,KAAA6tB,QAAAM,SAAA5uB,KAAA,OAAAuvB,EAAAte,KAAA,cACAod,EAAA5tB,KAAA6tB,QAAAO,YAAA7uB,KAAA,OAAAuvB,EAAAte,KAAA,YAGAod,EAAA5tB,KAAAgZ,MAAAzZ,KAAA,iBAAAuvB,EAAAte,KAAA,cACAod,EAAA5tB,KAAAgZ,MAAAzZ,KAAA,aAAAuvB,EAAAte,KAAA,UACAod,EAAA5tB,KAAAgZ,MAAAzZ,KAAA,mBAAAuvB,EAAAte,KAAA,eAEA,IAAAue,GAAAnB,EAAA5tB,KAAAgZ,MAAApV,KAAA,kBAEAorB,GAAAvoB,OAAAsoB,EAAAD,IAGAN,UAAA,WAGAZ,EAAA5tB,KAAAgZ,QAGA4U,EAAA5tB,KAAAgZ,MAAAiW,IAAA,QAAArB,EAAAc,SAGAd,EAAA5tB,KAAAgZ,MAAA/W,YAAA,MACA2rB,EAAA5tB,KAAAgZ,MAAApB,IAAAgW,EAAAS,iBAAAT,EAAAsB,kBAMAZ,oBAAA,SAAA5sB,GAIA,GAAAotB,GAAA9vB,EAAA0C,EAAAE,QAAAC,QAAA7C,EAAA,yBAGA8vB,GAAArsB,QACAmrB,EAAAiB,UAAAC,IAIAL,kBAAA,SAAA/sB,GAIA,GAAAA,EAAAE,QAAAgsB,EAAA5tB,KAAAgZ,MAAA,GAEA,WADA4U,GAAAY,aAKAE,QAAA,SAAAhtB,GAGAA,EAAAytB,kBACAvB,EAAAY,aAIAU,eAAA,SAAAxtB,GAGAA,EAAA0tB,2BAGAxB,EAAA5tB,KAAAgZ,MAAA1O,IAAA,UAAA,QAGAsjB,EAAA5tB,KAAAgZ,MAAAiW,IAAArB,EAAAS,iBAAAT,EAAAsB,gBAKAlwB,EAAA,uBAAAyV,IAAAmZ,EAAA5tB,KAAA6tB,QAAAG,YAAAzuB,KAAA,MAAA,6CAAAiB,WAAA,iBAAAA,WAAA,SAAAA,WAAA,SC1LAwY,GAEAhZ,MACA6H,MAAA9D,OACA2L,QAAA3L,OACAiV,MAAAjV,OACAkF,SAAAjK,EACA,oEAKAqvB,iBACA,kFAGA3tB,KAAA,WAGAsY,EAAAhZ,KAAAiJ,SAAA1I,GAAA,QAAAyY,EAAAhZ,KAAAiJ,SAAA+P,EAAAqW,UAGA7tB,KAAA,SAAAstB,EAAAxgB,GAGA0K,EAAAhZ,KAAAgZ,MAAAha,EAAA8vB,GACA9V,EAAAhZ,KAAA6H,MAAAmR,EAAAhZ,KAAAgZ,MAAApV,KAAA,0BACAoV,EAAAhZ,KAAA0P,QAAAsJ,EAAAhZ,KAAAgZ,MAAApV,KAAA,kBAEA0K,GAAA0K,EAAAhZ,KAAA0P,QAAA9L,KAAA,gBAAAuB,KAAAmJ,GAEA0K,EAAAhZ,KAAAgZ,MAAAzY,GAAA,QAAAyY,EAAA0V,SAGAI,EAAAlkB,MAAA,WAAAoO,EAAAsW,cAGAtW,EAAAhZ,KAAAgZ,MAAA1O,IAAA,UAAA,QACA0O,EAAAhZ,KAAAgZ,MAAA,GAAAuW,YAGAvW,EAAAhZ,KAAAgZ,MAAA9W,SAAA,OAGAX,KAAA,WAIAyX,EAAAhZ,KAAAgZ,MAAAiW,IAAA,QAAAjW,EAAA0V,SAGA1V,EAAAhZ,KAAAgZ,MAAA/W,YAAA,MAEAe,WAAA,WACAgW,EAAAhZ,KAAAgZ,MAAAxY,WAAA,SAEAwY,EAAAhZ,KAAAgZ,MAAAiW,IAAAjW,EAAAqV,iBAAArV,EAAAkW,gBAEAlW,EAAAhZ,KAAA6H,MAAA9D,OACAiV,EAAAhZ,KAAA0P,QAAA3L,OACAiV,EAAAhZ,KAAAgZ,MAAAjV,QACA,KAEA,uBAAAiV,EAAAhZ,KAAAgZ,MAAAzZ,KAAA,OACAiwB,eAAAC,QAAA,qBAAA,IAIAH,YAAA,WAGAtW,EAAAhZ,KAAAgZ,MAAAzZ,KAAA,iBAAA4C,OAAAG,SAAAjC,KACA,IAAA0uB,GAAA/V,EAAAhZ,KAAAgZ,MAAApV,KAAA,kBAEAorB,GAAAvoB,OAAAsoB,IAIAM,QAAA,SAAA3tB,GAEAA,EAAAkB,gBAEA,IAAAc,GAAA1E,EAAA0C,EAAAoI,eACA4lB,EAAAhsB,EAAA8M,KAAA,UACAmf,EAAAjsB,EAAA8M,KAAA,eACAof,EAAAlsB,EAAA8M,KAAA,gBAEA,OAAAof,OACA7W,GAAAQ,WAAAqW,OAIA5W,GAAAxX,KAAAkuB,EAAAC,IAGAjB,QAAA,SAAAhtB,GAEA,GAAA1C,EAAA,2BAAAyD,QAAA,EAAA,CACA,GAAAotB,GAAA7wB,EAAA8wB,SAAA9W,EAAAhZ,KAAA0P,QAAA,GAAAhO,EAAAE,QACAmuB,EACA/wB,EAAA8wB,SAAA9W,EAAAhZ,KAAA6H,MAAA,GAAAnG,EAAAE,SACAoX,EAAAhZ,KAAA6H,MAAA,KAAAnG,EAAAE,QAEAmuB,GAAAF,GAAA7W,EAAAzX,UCvGAyuB,GACAC,SAAA,IACAC,MAAA,IACAC,cACAC,KAAA,GACAC,IAAA,IAIAC,GAAA,EACAC,EAAA,KACA1tB,GACA2tB,WAAAxxB,EAAA,gBACAyxB,UAAAzxB,EAAA,qBACA0xB,cAAA1xB,EAAA,mBACA2xB,UAAA,GACA7tB,WACA8tB,UAAA5xB,EAAA,eACA6xB,WAAA7xB,EAAA,gBACA8xB,YAAA9xB,EAAA,iBACAiM,UAAAjM,EAAA,uBACA+xB,SAAA/xB,EAAA,iBACAgyB,SAAA,KAEAC,eACAC,WAAAlyB,EAAA,gBACAmyB,OAAAnyB,EAAA,kBACAoyB,YAAApyB,EAAA,YAGAqyB,WAEAC,cAAAtyB,EAAA,0EACAuyB,OAAAvyB,EAAA,gBAGAwyB,QAAA,WACA3uB,EAAAC,UAAA0uB,QAAAC,eAAA5uB,EAAAC,UAAA8tB,UACAnc,IAAA5R,EAAAC,UAAA+tB,YACApc,IAAA5R,EAAAC,UAAAiuB,UAEAluB,EAAAC,UAAA8tB,UAAAzwB,MAAA,SAAAuB,GACAA,EAAAkB,kBAEA8C,UAAAA,SAAA8F,YAAAC,WACA5I,EAAAC,UAAA0uB,QAAAC,eAAAntB,YAAA,UACAgsB,GAAA,EACAC,EAAAvxB,EAAA,QAAAkE,YAIAL,EAAAC,UAAA4uB,YAAA7uB,EAAA4tB,UAAAT,EAAAG,aAAAH,MAAA,SAIAntB,EAAAC,UAAAiuB,SAAA5wB,MAAA,SAAAuB,GACAA,EAAAkB,iBACAC,EAAAC,UAAA0uB,QAAAC,eAAAntB,YAAA,UACAzB,EAAA8I,WAAAgmB,aACA9uB,EAAA8I,WAAAC,iBAEAlG,UAAAA,SAAA8F,YAAAC,WACAzM,EAAA,yDAAAwB,WAAA,SACA8vB,GAAA,EACAtxB,EAAA,QAAAkE,UAAAqtB,GACAA,EAAA,KAGAvtB,WAAA,WACAH,EAAAC,UAAA4uB,YAAA7uB,EAAA4tB,UAAAT,EAAAG,aAAAE,IAAA,QACA,SAKAuB,gBAAA,WACA/uB,EAAAC,UAAAmI,UAAA5C,kBACAC,KAAA,IACAF,MAAA,eACAypB,mBAAA,EACAC,cAAA,KAIAC,oBAAA,WACAlvB,EAAAC,UAAAmI,UAAA5C,iBAAA,YAGAtF,eAAA,WACAF,EAAAC,UAAAiuB,SAAA1sB,SAAA,WACAxB,EAAAC,UAAAiuB,SAAAhwB,QAAA,UAIAixB,mBAAA,WACAnvB,EAAAC,UAAA8tB,UAAA3uB,YAAA,WAGAivB,WAAA,YAGAxrB,SAAA8F,aAAAC,SACA5I,EAAAC,UAAAmuB,cAAAG,YAAA7xB,KAAA,WAAA,YAGAsD,EAAAC,UAAAmuB,cAAAE,OAAAhxB,MAAA,SAAAuB,GACAA,EAAAkB,iBACAC,EAAAC,UAAAmuB,cAAAG,YAAA5wB,WAAA,YAAAC,QACAoC,EAAAC,UAAAmuB,cAAAC,WAAAhvB,SAAA,YAGAW,EAAAC,UAAAmuB,cAAAG,YAAA7wB,GAAA,OAAA,YACAmF,SAAA8F,aAAAC,SACA5I,EAAAC,UAAAmuB,cAAAC,WAAAjvB,YAAA,UACAY,EAAAC,UAAAmuB,cAAAG,YAAA7xB,KAAA,WAAA,aAEA,KAAAP,EAAAM,MAAAoU,OACA7Q,EAAAC,UAAAmuB,cAAAC,WAAAjvB,YAAA,aAMAyvB,YAAA,SAAAO,EAAAC,EAAAC,GAEA,GAAAC,GAAA,CACAH,GAAA9yB,KAAA,SAAAif,EAAA0Q,GAEA9rB,WAAA,WACA,MAAAmvB,GACAnzB,EAAA8vB,GAAA5sB,SAAA,UAEA,OAAAiwB,GACAnzB,EAAA8vB,GAAA7sB,YAAA,WAEAmwB,GAAAF,MAIAG,kBAAA,WACAxvB,EAAAC,UAAAmuB,cAAAG,YAAA5wB,WAAA,aAGA8xB,aAAA,WAEAzvB,EAAAC,UAAAuuB,UAAAC,cAAA/wB,GAAA,QAAA,SAAAmB,GAIA,GAFAmB,EAAA8I,WAAAC,gBAEAlG,UAAAA,SAAA8F,YAAAC,QAAA,CACA/J,EAAAkB,gBAEA,IAAA2vB,GAAAvzB,EAAAM,MAAAuC,QAAA,kBAEA,IAAA0wB,EAAAluB,SAAA,UA6BAxB,EAAAC,UAAA+E,MAAAmoB,EAAAC,SAAAsC,EAAA,KAAA,WACAvvB,WAAA,WACAhE,EAAA,qBAAAiE,SAAAG,IAAA,KACA4sB,EAAAE,aAhCA,CAIA,GAAAsC,GAAAxzB,EAAA,yBACAwzB,GAAA/vB,OAGAI,EAAAC,UAAA+E,MAAAmoB,EAAAC,SAAAuC,EAAAD,EAAA,SAAAA,GAEA1vB,EAAA4vB,SAAAF,KAKA1vB,EAAA4vB,SAAAF,GAGAvzB,EAAA,mCAAAoC,UACAgK,GAAAhG,QAAAnD,YAAA,gBAEAjD,EAAA,iDAAAoC,UACAiK,EAAA/F,UAAArD,YAAA,UAEAswB,EAAArwB,SAAA,UACA0B,KAAA,eAAAK,OAAA5C,YACAkxB,EAAA3uB,KAAA,uBAAA1B,SAAA,UASAW,EAAA8I,WAAAC,oBAKA/D,MAAA,SAAA6qB,EAAAC,EAAAJ,EAAAK,IAIAD,EAAAxuB,GAAA,cAAAwuB,EAAAxuB,GAAA,cAEAnB,WAAA,WACA2vB,EAAA/uB,KAAA,+BAAA3B,YAAA,WACA,KAGA0wB,EAAA1wB,YAAA,UACA2B,KAAA,eAAAK,OAAA7C,QAAAsxB,EAAA,QAAA,WAEAE,IAEAD,EAAA/uB,KAAA,uBAAA3B,YAAA,UACA2wB,EAAAL,OAKAM,WAAA,WACAhwB,EAAAC,UAAAuuB,UAAAE,OAAAtvB,YAAA,YAIAwwB,SAAA,SAAAF,GAGAvvB,WAAA,WACA,GAAA8vB,GAAA9zB,EAAA,qBAEA+zB,EAAAR,EAAA,GAAAS,wBAAA5vB,IACA6vB,EAAAH,EAAA,GAAAE,wBAAA5vB,IACA8vB,EAAAC,KAAAC,MAAAL,EAAAE,GAIAI,EAAAP,EAAAzvB,SACAiwB,EAAAD,EAAAlxB,OAAAyL,WACAslB,GAAAA,EAAAI,EAAAA,EAAAJ,EAEAJ,EAAA7vB,SAAAG,KAAA8vB,KAEAlD,EAAAE,QAGAqD,UAAA,WACAv0B,EAAA,eAAAmB,MAAA,SAAAuB,GACAA,EAAAkB,gBACA,IAAAhB,GAAA5C,EAAAM,KAAAiD,MACAixB,EAAA9tB,SAAA8F,aAAAC,QAAA,GAAA,EACAzM,GAAA,aAAAiE,SACAC,UAAAtB,EAAAuB,SAAAC,IAAAowB,GACA,QAIA7nB,YAEAC,cAAA,WACA5M,EAAA,2BAAAiD,YAAA,UAAAiJ,SAAA,kBAAA9J,WAGAuwB,WAAA,WACA3yB,EAAA,8BAAAiD,YAAA,UAAAJ,QAAA,gBAAAI,YAAA,UAAA2B,KAAA,eAAAxC,UACAgK,GAAAhG,QAAAnD,YAAA,gBACAmJ,GAAAqoB,SAAAryB,WAGAsyB,aAAA,WACA7wB,EAAAC,UAAAmuB,cAAAG,YAAA3wB,MAAA,WACAoC,EAAA8I,WAAAC,gBACA/I,EAAA8I,WAAAgmB,iBAKAjxB,KAAA,WAUAmC,EAAAC,UAAA0uB,UACA3uB,EAAAC,UAAAouB,aACAruB,EAAAC,UAAAwvB,eACAzvB,EAAA0wB,YACA1wB,EAAA8I,WAAA+nB,gBAEAhuB,UAAAA,SAAA8F,YAAAC,UACA5I,EAAAC,UAAA8uB,kBAKArb,aAAAC,WAAAC,UACAzX,EAAA,mBAAAkb,KAAA,sCAEAlb,EAAA,mBAAAkb,KAAA,4cC1SAyZ,GAEAC,YAAA50B,EAAA,eACA60B,aAAA70B,EAAA,2BACA80B,cAAA90B,EAAA,2BAEA+0B,eAAA,WACAlxB,EAAAmxB,UAAAC,aACAN,EAAAE,aAAA3xB,SAAA,UAEAc,WAAA,WACA2wB,EAAAG,cAAAtyB,QACA,MAGAC,eAAA,WACAkyB,EAAAC,YAAArzB,GAAA,QAAA,SAAAmB,GACAA,EAAAkB,iBACA+wB,EAAAI,oBAIArzB,KAAA,WACA8K,aAAAC,SACAkoB,EAAAlyB,mBCxBAyyB,GAEAl0B,MACAuF,UAAAvG,EAAA,uBACAm1B,eAAA,KACAC,UAAAp1B,EAAA,gBAIAq1B,iBAAA,SAAAj1B,GAIA,GAAAqS,GAAAzS,EAAA,IAAAk1B,EAAAl0B,KAAAm0B,eAGA1iB,GAAAtS,KAAA,SAAAif,GACApf,EAAAM,MAAAoD,SAAAyB,GAAA,gBACAnF,EAAAM,MAAAg1B,WAIAJ,EAAAK,oBAIAC,YAAA,SAAA/iB,GAGAA,EAAAxP,YAAA,kBAAAA,YAAA,iBAAAA,YAAA,iBAEA,IAAAwyB,GAAA,CAEAhjB,GAAAtS,KAAA,SAAAif,GAEA,GAAAR,GAAA5e,EAAAM,KACAse,GAAA1b,SAAA,WAGA0b,EAAAvZ,SAAA,mBACAowB,IAEAA,EAAA,KAAA,IACAz1B,EAAA,YAAA01B,QAAA,gFACA11B,EAAA,YAAAiD,YAAA,WACAwyB,EAAA,MAKAP,EAAAS,oBAGA31B,EAAA,YAAAyD,SAAAzD,EAAA,0BAAAyD,QACAzD,EAAA,YAAA01B,QAAA,gFAGA11B,EAAA,YAAAiD,YAAA,WACAiyB,EAAAl0B,KAAAo0B,UAAAp1B,EAAA,cAGA,IAAA41B,GAAA51B,EAAA,eAAA6E,QAAA3B,SAAA,UAEAgyB,GAAAW,SAAAD,EAAA,WACA5xB,WAAA,WAAAhE,EAAA,eAAA6E,QAAA3B,SAAA,SAAA,GACAgyB,EAAAY,2BAKAC,WAAA,SAAAtjB,GAGA,QAAAujB,GAAA7sB,GACA,MAAAA,GAAAhE,GAAA,YAAAgE,EAAAhE,GAAA,2BACA,EACAgE,EAAAhE,GAAA,WACA,EAEA,EAMA,QAAA8wB,KAEA,GAAAC,GAAA,EACAC,EAAA,EACAC,EAAA,EAGAC,EAAAhb,SAAA6Z,EAAAl0B,KAAAuF,UAAAhG,KAAA,aAGA,KAAA81B,GACAr2B,EAAA,yCAAAob,aAAA3I,EAAA5N,SAIA4N,EAAAtS,KAAA,SAAAif,GACA,GAAAR,GAAA5e,EAAAM,KAGA,GAAA81B,GAAAJ,EAAApX,IAEAwX,GAAAJ,EAAApX,GAGAsX,GAAAG,IACAzX,EAAA1b,SAAA,iBACA0b,EAAAre,KAAA,WAAA41B,KAGA,EAAAC,GAAAJ,EAAApX,IAAA5e,EAAA,cAAAyD,QAEA2yB,GAAAJ,EAAApX,GAGAsX,GAAAG,IACAzX,EAAA1b,SAAA,iBACA0b,EAAAre,KAAA,WAAA41B,KAIA,GAAAC,GAAAJ,EAAApX,IAAA5e,EAAA,cAAAyD,QAEA2yB,GAAAJ,EAAApX,GAGAsX,GAAAG,IACAzX,EAAA1b,SAAA,iBACA0b,EAAAre,KAAA,WAAA41B,MAKAC,EAAA,EACAF,IACAA,EAAAG,GACAF,IAGAC,GAAAJ,EAAApX,GAGAsX,GAAAG,IACAzX,EAAA1b,SAAA,iBACA0b,EAAAre,KAAA,WAAA41B,OAKAG,IAOA,QAAAA,KACA,GACAJ,GAAA,CAGAzjB,GAAAtS,KAAA,SAAAif,GACA,GAAAR,GAAA5e,EAAAM,KAGA,IAAAse,EAAAvZ,SAAA,iBAAA,CAGA,GAAAkxB,GAAAlb,SAAAuD,EAAAre,KAAA,YAGAqe,GAAA1b,SAAA,WAGAgzB,IAAAK,IACAL,EAAAK,GAGAlb,SAAAuD,EAAAnZ,OAAAlF,KAAA,eAAAg2B,GAGAL,EAAA,IAAA,IAGAl2B,EAAA,cAAAyD,OACAzD,EAAA,YAAA01B,QAAA,yDAEA11B,EAAA,YAAA01B,QAAA,mEAIA11B,EAAA,YAAAiD,YAAA,gBAIA2b,GAAA1b,SAAA,uBAOAlD,EAAA,YAAAyD,OAAA,IACAzD,EAAA,cAAAyD,OACAzD,EAAA,YAAA01B,QAAA,yDAEA11B,EAAA,YAAA01B,QAAA,oEAKA11B,EAAA,cAAAyD,OACAzD,EAAA,sBAAA01B,QAAA,mFAEA11B,EAAA,sBAAA01B,QAAA,6FAIAR,EAAAW,SAAA71B,EAAA,kBAGAA,EAAA,gDACAiD,YAAA,iBACAA,YAAA,WACAA,YAAA,qBACAzB,WAAA,YAxEAy0B,IA4EAj2B,EAAA,sCAAAG,KAAA,WACA,GAAAq2B,GAAAx2B,EAAAM,MACAm2B,EAAAD,EAAA5xB,KAAA,aAEA6xB,GAAAxzB,YAAA,aAAAA,YAAA,gBAEA,IAAAyzB,GAAAD,EAAAE,OAAAhzB,SAAA,UAAAwB,GAAA,iDACAyxB,EAAAH,EAAAE,OAAAhzB,SAAA,UAAAwB,GAAA,mBACA0xB,EAAAJ,EAAAE,OAAAhzB,SAAA,UAAAwB,GAAA,gBAEAsxB,GAAAhzB,OAAA,IAAA,IACAizB,GAAAE,GAAAC,IAAA72B,EAAA,UAAAyD,OACAgzB,EAAAE,OAAAzzB,SAAA,aAEAlD,EAAA,qBAAAyD,QACAgzB,EAAAE,OAAAzzB,SAAA,oBAMAgyB,EAAAl0B,KAAAo0B,UAAAp1B,EAAA,eAGAA,EAAA,eAAAyD,OAAA,GACAyxB,EAAAl0B,KAAAuF,UAAArD,SAAA,SAKAqyB,iBAAA,WAIA,GAAA,IAAAL,EAAAl0B,KAAAuF,UAAA9C,OAAA,CAEA,GAAAgP,GAAAzS,EAAA,uBAAA4E,KAAA,IAAAswB,EAAAl0B,KAAAm0B,eAGA,aAAAD,EAAAl0B,KAAAm0B,gBAAAD,EAAAM,YAAA/iB,GACA,WAAAyiB,EAAAl0B,KAAAm0B,gBAAAD,EAAAa,WAAAtjB,KAIAqjB,sBAAA,WAIA91B,EAAA,iBAAAG,KAAA,WACA0M,EAAAK,cAAAlN,EAAAM,OAAA,IAIA,IAAAw2B,GAAA5B,EAAAl0B,KAAAo0B,UAAApyB,OAAA,YAAAyC,KAAA,eAAAhC,OAAA,CAGAyxB,GAAAl0B,KAAAuF,UAAAuwB,EAAA,OAAA,WAIAC,kBAAA,SAAA32B,GAGAA,EAAAwD,gBAGA,IAAAozB,GAAA9B,EAAAl0B,KAAAo0B,UAAApyB,OAAA,WAEAkyB,GAAAl0B,KAAAo0B,UAAAuB,MAGA,IAAAK,EAAAvxB,KAAA,eAAAhC,OAAA,EAAA,CAGAyxB,EAAAl0B,KAAAuF,UAAArD,SAAA,UAGA,IAAA+zB,GAAA/B,EAAAl0B,KAAAuF,UAAApC,SAAAC,IACA8yB,EAAA,EAEA1qB,cAAAyE,QAAAzE,YAAAC,UACAyqB,EAAA,IAEA1qB,aAAAC,UACAyqB,EAAA,IAIA,IAAAC,GAAAH,EAAAvxB,KAAA,cAGAyvB,GAAAW,SAAAsB,EAAA,WAGAA,EAAAj0B,SAAA,WAAAb,UAAA,OAAA,WAGArC,EAAA,QAAAgF,aAAAC,OAAAhB,SAAAC,UAAA+yB,EAAAC,GAAA,QAGAhC,EAAAl0B,KAAAuF,UAAAtD,YAAA,WAGAk0B,EAAAj0B,SAAA,QAGA8zB,EAAA/zB,YAAA,WAGAiyB,EAAAY,wBAGAqB,EAAAvyB,KAAA,uCAAAnB,OAAA,GACA0zB,EAAAvyB,KAAA,uCAAAwyB,MAAA,iBAAA,eAAA,GAAA,GAGAD,EAAAvyB,KAAA,mCAAAnB,OAAA,GACAuL,EAAAC,UAAAvN,OAEAy1B,EAAAvyB,KAAA,iBAAAnB,OAAA,GACAoJ,EAAAK,cAAAiqB,EAAAvyB,KAAA,wBASAixB,SAAA,SAAAwB,EAAArM,GAIA,GAAA8E,GAAA,yCACAwH,EAAAD,EAAAzyB,KAAA,wBAAAzC,IAAA,kBAAAyC,KAAAkrB,GAAArsB,OACA8zB,EAAA,CAGA,KAAAD,GAAAvyB,SAAAimB,EAEAA,IAKAqM,EAAAzyB,KAAA,wBAAAzC,IAAA,kBAAAyC,KAAAkrB,GAAA3vB,KAAA,WACA,GAAAye,GAAA5e,EAAAM,MACAk3B,EAAA5Y,EAAAzZ,GAAA,qBACAwV,EAAA6c,EAAA5Y,EAAAre,KAAA,mBAAAqe,EAAAre,KAAA,kBAEA,IAAAi3B,EACA5Y,EACAre,KAAA,MAAAoa,GACA8c,KAAA,WAEAF,IACA3Y,EAAApd,WAAA,mBAGA+1B,GAAAD,GAEAvyB,SAAAimB,GACAA,UAIA,CACA,GAAAlb,GAAA9P,EAAA,6BACA8P,GAAAvP,KAAA,MAAAoa,GACA8c,KAAA,WAEA7Y,EAAAtT,IAAA,mBAAA,OAAAqP,EAAA,KAEA4c,IACA3Y,EAAApd,WAAA,mBAEAod,EAAAha,KAAA,gBAAAuW,SAGAoc,GAAAD,GAEAvyB,SAAAimB,GACAA,MAIApM,EAAAY,OAAA1P,OAMA6lB,kBAAA,WACA31B,EAAA,gCAAAG,KAAA,SAAAif,GACAA,EAAA,IAAA,GACApf,EAAAM,MAAA4C,SAAA,kBAEAkc,EAAA,IAAA,GACApf,EAAAM,MAAA4C,SAAA,iBAEAkc,EAAA,IAAA,GACApf,EAAAM,MAAA4C,SAAA,qBAKAxB,KAAA,WAIAwzB,EAAAl0B,KAAAm0B,eAAAD,EAAAl0B,KAAAuF,UAAAhG,KAAA,aAGA20B,EAAAK,mBAEAL,EAAAl0B,KAAAuF,UAAA9C,OAAA,GAAAyxB,EAAAl0B,KAAAo0B,UAAA3xB,OAAA,IACAyxB,EAAAl0B,KAAAuF,UAAAhF,GAAA,QAAA2zB,EAAA6B,mBACA/2B,EAAA03B,UAAA,mBAAAxC,EAAAG,qBClcAsC,GACAC,KAAA53B,EAAA,kBACAqd,KAAArd,EAAA,YACA63B,UAAA73B,EAAA,oBACA83B,YAAA93B,EAAA,yBACA+3B,aAAA/3B,EAAA,0BAEAg4B,WAAA,WACAh4B,EAAA23B,EAAAC,MAAAhzB,KAAA,WAAA3B,YAAA,UACAjD,EAAA23B,EAAAC,MAAAhzB,KAAA,iBAAA3B,YAAA,iBAGAg1B,cAAA,WAGA,GAAAC,GAAAP,EAAAG,YAAAriB,IAAAkiB,EAAAI,aACAG,GAAA/3B,KAAA,SAAAif,EAAA+Y,GACAR,EAAAS,aAAAp4B,EAAAM,SAIAN,EAAAC,UAAAkB,MAAA,SAAAf,GAEAJ,EAAAI,EAAAwC,QAAAC,QAAA80B,EAAAG,aAAAr0B,QAAAzD,EAAAI,EAAAwC,QAAAC,QAAA80B,EAAAE,WAAAp0B,QACAk0B,EAAAK,gBAMAviB,IAAA,SAAAxM,GAGA0uB,EAAAta,KAAAsa,EAAAta,KAAA5H,IAAAxM,GACA0uB,EAAAE,UAAAF,EAAAE,UAAApiB,IAAAxM,EAAArE,KAAA,qBAEAqE,EAAArE,KAAA,yBAAAzE,KAAA,WACAw3B,EAAAU,iBAAAr4B,EAAAM,SAGA2I,EAAArE,KAAA,0BAAAzE,KAAA,WACAw3B,EAAAW,kBAAAt4B,EAAAM,UAKA+3B,iBAAA,SAAApvB,GAGA0uB,EAAAG,YAAAH,EAAAG,YAAAriB,IAAAxM,GACA0uB,EAAAS,aAAAnvB,IAIAqvB,kBAAA,SAAArvB,GAGA0uB,EAAAI,aAAAJ,EAAAI,aAAAtiB,IAAAxM,GACA0uB,EAAAS,aAAAnvB,IAIAmvB,aAAA,SAAAnvB,GAGAA,EAAA1H,GAAA,QAAA,SAAAmB,GAgBA,QAAA61B,KACA3Z,EAAA/b,QAAA,2BAAA+B,KAAA,gBAAAzE,KAAA,WACAH,EAAAM,MAAAsG,eAfAlE,EAAAkB,iBAEA+zB,EAAAK,YACA,IAAApZ,GAAA5e,EAAAM,KACAse,GAAA/b,QAAA80B,EAAAta,MAAAzY,KAAA+yB,EAAAE,WAAAvyB,YAAA,UACAsZ,EAAA/b,QAAA80B,EAAAta,MAAA/X,YAAA,gBAIA+b,GAAAmX,SAAAv1B,YAAA,aASA2b,EAAA/b,QAAA,2BAAAY,SACAmb,EAAAvZ,SAAA,wBACAkzB,IAEAv0B,WAAA,WACAu0B,KACA,SAOA72B,KAAA,WACAi2B,EAAAE,UAAAp0B,OAAA,GACAk0B,EAAAM,kBCrGA5lB,GAIArR,MACA+f,KAAA/gB,EAAA;AACAgL,UAAAhL,EAAA,iBACAsT,MAAAtT,EAAA,0BACAmR,KAAAnR,EAAA,sBACAy4B,SAAAz4B,EAAA,sBAGA04B,SAAA,EAEAC,cAAA34B,EAAA,iBAAAwR,KAAA,mBACAc,eAAAtS,EAAA,iBAAAwR,KAAA,oBACAonB,sBAAA54B,EAAA,iBAAAwR,KAAA,4BACAqnB,kBAAA74B,EAAA,iBAAAwR,KAAA,uBACA+C,mBAAAvU,EAAA,iBAAAwR,KAAA,wBACAsnB,mBAAA94B,EAAA,iBAAAwR,KAAA,wBACAunB,mBAAA/4B,EAAA,iBAAAwR,KAAA,wBAEA8O,MAAAvb,OAEA0zB,SAAA1zB,OAIAi0B,cAAA,UACAC,YAAA,QACAC,cAAA,UAIAx3B,KAAA,WAGA2Q,EAAArR,KAAAgK,UAAAvH,OAAA,IAEA4O,EAAA8mB,aAEA9mB,EAAA+mB,aAAA/mB,EAAArR,KAAAsS,OACAjB,EAAAgnB,kBAEAhnB,EAAAqmB,SAAArmB,EAAArR,KAAAsS,MAAA7P,OACA4O,EAAAinB,aAEAjnB,EAAAknB,YAAAlnB,EAAA4mB,aAGA5mB,EAAArR,KAAAmQ,KAAA5P,GAAA,QAAA8Q,EAAAmnB,eAMAL,WAAA,WACA,GAAAM,GAAAt2B,OAAAG,SAAAjC,KACAq4B,EAAAD,EAAAn4B,MAAA+Q,EAAAC,gBAAA,EAMA,IALAvN,QAAA20B,IACAD,GAAA,IACAC,EAAAD,EAAAn4B,MAAA+Q,EAAAC,gBAAA,IAGAvN,SAAA20B,GAAA,KAAAA,GAAA,MAAAA,GAAA,UAAAA,EAAA,CACA,GAAA12B,GAAA02B,EAAAp4B,MAAA,KACAq4B,EAAA32B,EAAAA,EAAAS,OAAA,GACAm2B,EAAA52B,EAAAA,EAAAS,OAAA,GAEAo2B,EAAA75B,EAAA,8BAAA25B,EAAA,MAAA/0B,KAAA,+BAAAg1B,EAAA,KAEA,IAAAC,EAAAp2B,OAAA,CACA,GAAAq2B,GAAAD,EAAA1zB,MACAnG,GAAA,kBAAAmG,KAAA2zB,MAKAP,YAAA,SAAAjZ,GAGAjO,EAAAiO,MAAAA,EAEAjO,EAAAiO,QAAAjO,EAAA2mB,cACA3mB,EAAArR,KAAAmQ,KAAAjO,SAAAmP,EAAA6mB,eAEA7mB,EAAArR,KAAAmQ,KAAAlO,YAAAoP,EAAA6mB,gBAIAa,UAAA,WAGA/5B,EAAAg6B,KAAA3nB,EAAAsmB,eACAnnB,MACAyoB,eAAA5nB,EAAAumB,sBACAC,kBAAAxmB,EAAAwmB,kBACAtkB,mBAAAlC,EAAAkC,mBACAtT,KAAAoR,EAAAqmB,SACAwB,KAAA7nB,EAAAymB,oBAEAqB,SAAA,OACAC,OAAA,QACAC,KAAA,SAAA7oB,EAAA8oB,EAAAC,GAGAloB,EAAAmoB,YAAAhpB,GACAa,EAAAknB,YAAAlnB,EAAA4mB,eAEAwB,KAAA,SAAAF,EAAAD,EAAAI,OAOAF,YAAA,SAAAhpB,GAIA,GAIA8B,IAJAjB,EAAArR,KAAA+f,KAAA7c,YACAmO,EAAArR,KAAAgK,UAAA7G,SAAAC,IAAAiO,EAAArR,KAAAgK,UAAA3G,SAAA,GAGAgO,EAAAomB,SAAAjnB,GAGAa,GAAArR,KAAAgK,UAAAwU,OAAAlM,GAGAjB,EAAArR,KAAAsS,MAAAtT,EAAA,yBAGA,IAAAy2B,GAAApkB,EAAArR,KAAAsS,MAAAqnB,MAAAtoB,EAAArR,KAAAsS,MAAA7P,OAAA4O,EAAAymB,mBAAAzmB,EAAArR,KAAAsS,MAAA7P,OAGA4O,GAAA+mB,aAAA/mB,EAAArR,KAAAsS,OAGAqkB,EAAAliB,IAAAghB,GAGAzG,EAAAva,IAAAghB,GAGApV,GAAAuZ,UACAvZ,GAAA5L,IAAAghB,GACApV,GAAA3f,OAGA2Q,EAAAqmB,UAAAjC,EAAAhzB,OACA4O,EAAAinB,cAGAF,aAAA,SAAA3C,GAEAA,EAAAt2B,KAAA,SAAAif,GACApf,EAAAM,MAAA2C,YAAA,kBAAAA,YAAA,iBAAAA,YAAA,kBACAmc,EAAA,IAAA,EACApf,EAAAM,MAAA4C,SAAA,kBACAkc,EAAA,IAAA,EACApf,EAAAM,MAAA4C,SAAA,iBACAkc,EAAA,IAAA,GACApf,EAAAM,MAAA4C,SAAA,qBAMAm2B,gBAAA,WAGA,GAAAne,GAAA7I,EAAArR,KAAAy3B,SAAAvd,MACAA,GAAAA,EAAA6N,QAAA,QAAA,MACA7N,EAAAA,EAAA6N,QAAA,QAAA,MAEA1W,EAAAomB,SAAAoC,WAAAC,QAAA5f,IAIAoe,WAAA,WAGAjnB,EAAAqmB,UAAArmB,EAAA0mB,mBACA1mB,EAAArR,KAAAmQ,KAAA5O,OAEA8P,EAAArR,KAAAmQ,KAAA3O,QAMAg3B,YAAA,SAAA92B,GAGAA,EAAAkB,iBAEAyO,IAAAA,EAAA2mB,gBAEA3mB,EAAAknB,YAAAlnB,EAAA2mB,eACA3mB,EAAA0nB,eCxMAgB,GAEAn1B,OAAA5F,EAAA,uBACAg7B,OAAAh7B,EAAA,4BACAi7B,eAAAj7B,EAAA,+BACAk7B,YAAAl7B,EAAA,oCACAm7B,cAAAn7B,EAAA,sCACA8W,QAAA9W,EAAA,8CAEAo7B,YAAA,WACAL,EAAAjkB,QAAA3V,MAAA,SAAAuB,GACAA,EAAAkB,iBACAoW,EAAAzX,UAIAC,KAAA,WACA,GAAA64B,GAAA,IAAAN,EAAAn1B,OAAArF,KAAA,oBACAyD,YAAA,WACAgW,EAAAxX,KAAA,uBACAu4B,EAAAK,eACAC,IAGAC,SAAA,WACAP,EAAAC,OAAAO,OAAA,SAAA74B,GACAA,EAAAkB,gBACA,IAAAqC,GAAAjG,EAAAM,KACA,IAAA2F,EAAAu1B,QAAA,CACA,GAAAC,GAAA,GAAAC,SACAD,GAAAjc,OAAA,+BAAAxf,EAAA,kBAAA0U,OACA+mB,EAAAjc,OAAA,kCAAAxf,EAAA,qBAAA0U,OACA+mB,EAAAjc,OAAA,iBAAAxf,EAAA,mBAAA0U,OACA+mB,EAAAjc,OAAA,uBAAA,GACAxf,EAAAg6B,MACAlR,IAAA,8BACAtX,KAAAiqB,EACAjB,aAAA,EACAmB,aAAA,EACA1iB,KAAA,OACAkhB,SAAA,OACAyB,QAAA,SAAAC,GACAd,EAAAG,YAAA34B,OACAw4B,EAAAI,cAAAnkB,UAEA8kB,MAAA,SAAAD,GACA,GAAAE,GAAAC,KAAAC,UAAAJ,EAAAK,aAAAC,SAAApT,QAAA,MAAA,GACAgS,GAAAE,gBAAAc,IACAhB,EAAAE,eAAA/f,KAAA6gB,GACAhB,EAAAE,eAAAz4B,OACAxC,EAAA,kBAAA4Y,IAAA,yBAAA,SAAAxY,GACAJ,EAAA,4BAAA4E,KAAA,sBAAAyT,KAAA,YAAA,GACA0iB,EAAAE,eAAA/f,KAAA,IACA6f,EAAAE,eAAA14B,iBAYAb,KAAA,WACAq5B,EAAAn1B,OAAAnC,SAAA+sB,eAAA4L,QAAA,uBACArB,EAAAv4B,OACAu4B,EAAAO,cCpEAxoB,GAEA9R,MACAq7B,YAAAr8B,EAAA,iBACAs8B,aAAAt8B,EAAA,wBACAu8B,WAAAv8B,EAAA,WACAw8B,UAAAx8B,EAAA,qBACAy8B,aAAAz8B,EAAA,aACA08B,YAAA18B,EAAA,YACAkP,KAAA,KACAytB,SAAA,MAEA/E,KAAA,KAEAgF,UAAA,SAAAj1B,GAcA,QAAAk1B,GAAA12B,GAEA,MAAAA,GAAAsW,cAAAsM,QAAA,2BAAA,IAAAA,QAAA,KAAA,IAAAA,QAAA,IAAA,KAZA/oB,EAAA,eAAAiD,YAAA,QACAjD,EAAA,oBAAAkD,SAAA,QACA4P,EAAA9R,KAAAkO,KAAAjM,YAAA,eAEA,IAAA65B,IAAA,EACAC,EAAAF,EAAAl1B,EAWA,MAAAo1B,EAGAjqB,EAAA9R,KAAAkO,KAAA/O,KAAA,SAAAif,GAQA,QAAA4d,GAAAC,GAEA,GAAAC,GAAA,SAAAD,EAAA,GAIAA,GAAAJ,EAAAM,EAAAv4B,KAAAs4B,GAAAE,UAAAp6B,OAAAk6B,GAAA1rB,KAAAyrB,IAEAA,EAAArxB,MAAAyxB,KAEAF,EAAAj6B,SAAA,gBACA45B,GAAA,GAhBA,GAAAK,GAAAn9B,EAAAM,MAEA+8B,EAAA,MAAAN,EAAA,KAkBAC,GAAA,SAGAG,EAAA93B,SAAA,iBACA83B,EAAAj6B,SAAA,iBAAAX,OAKAvC,EAAA,2EAAAsL,IAAA,UAAA,WAIAtL,EAAA,oBAAAiD,YAAA,QACA65B,GAAA,GAGAA,KAAA,IACA98B,EAAA,eAAAkD,SAAA,QACAlD,EAAA,oBAAAiD,YAAA,QACA6P,EAAA9R,KAAAkO,KAAAjM,YAAA,iBAAAT,QAIAQ,EAAAhC,KAAA6Q,WACA7O,EAAA6P,qBAEA7P,EAAAhC,KAAA8Q,cACA9O,EAAAiP,cAGAa,EAAAC,mBAEA/S,EAAAgT,QAAA,0BAGAvQ,eAAA,WAEAqQ,EAAA9R,KAAAs7B,aAAA/6B,GAAA,QAAA,SAAAnB,GACAA,EAAAwD,iBAEAZ,EAAAiQ,aAAA7S,GAEA0S,EAAA8pB,UAAA9pB,EAAA9R,KAAAq7B,YAAA3nB,UAIA3B,iBAAA,WACAD,EAAA9R,KAAAq7B,YAAA3nB,IAAA,IACA5B,EAAA9R,KAAAq7B,YAAApV,UAAA,MAAA,IAAAmF,QAOAkR,WAAA,WAGA,GAAAX,KAGA38B,GAAA,kBAAAyD,OAAA,IACAqP,EAAA8kB,KAAA,WACA9kB,EAAA9R,KAAAkO,KAAA4D,EAAA9R,KAAA07B,aAEA18B,EAAA,gBAAAyD,OAAA,IACAqP,EAAA8kB,KAAA,SACA9kB,EAAA9R,KAAAkO,KAAA4D,EAAA9R,KAAAw7B,WAIA,OAAA1pB,EAAA9R,KAAAkO,OAGA4D,EAAA9R,KAAAkO,KAAA/O,KAAA,SAAAif,GACAud,EAAAtR,KAAArrB,EAAAM,MAAAsE,KAAA,gBAAArE,KAAA,iBAIA,WAAAuS,EAAA8kB,MACA9kB,EAAArQ,iBAGAqQ,EAAA9R,KAAA27B,SAAAA,EAIA1V,EAAAvlB,KAAAi7B,KAIAj7B,KAAA,WAGAoR,EAAA9R,KAAAq7B,YAAA54B,OAAA,IACAqP,EAAAwqB,aACAt6B,EAAAhC,KAAAyQ,UAAAlQ,GAAA,QAAAuR,EAAAC,qBC7JA1G,GACA/F,UAAAtG,EAAA,oBACAwG,UAAAxG,EAAA,yBACAu9B,cAAAv9B,EAAA,0BAEAw9B,eAAA,SAAAv3B,GACApC,EAAA8I,WAAAgmB,aACA3yB,EAAA,mCAAAoC,UACAgK,GAAAhG,QAAAnD,YAAA,gBAEAgD,EAAAZ,SAAA,WACAgH,EAAA7F,UAAApE,UACAiK,EAAA/F,UAAArD,YAAA,YAIAoJ,EAAA/F,UAAArD,YAAA,UACAgD,EAAA/C,SAAA,UACAmJ,EAAA7F,UAAApE,UACA6D,EAAArB,KAAAyH,EAAA7F,WAAAnE,cAIAI,eAAA,WACA4J,EAAA/F,UAAAnF,MAAA,SAAAuB,GACA,GAAAgE,UAAAA,SAAA8F,YAAAC,QAAA,CACA,GAAAzM,EAAA0C,EAAAE,QAAAC,QAAA,gCAAAY,OACA,MAEA4I,GAAAmxB,eAAAx9B,EAAAM,OAGAoC,EAAAE,OAAAvB,MAAAqB,EAAAE,OAAAvB,KAAAsH,QAAA,UACA9E,EAAAC,UAAAiuB,SAAA5wB,YAEA,KAAAuF,SAAA8F,aAAAC,SAEA/J,EAAAE,OAAAvB,MAAAqB,EAAAE,OAAAvB,KAAAsH,QAAA,SAAA,CACA,GAAA80B,GAAAz9B,EAAA0C,EAAAE,QAAArC,KAAA,QAAAe,MAAA,KAAA,EACAtB,GAAA,IAAAy9B,GAAAh6B,SACAf,EAAAkB,iBACAue,EAAAG,gBAAAtiB,EAAA0C,EAAAE,QAAArC,KAAA,cAUAmiB,UAAA,WACA,GAAAxQ,GAAA,EAKA,OAHA1F,cAAAC,UACAyF,EAAA,IAEAA,GAGAxQ,KAAA,WACA2K,EAAA5J,mBC7DAi7B,GACA7tB,OAAA7P,EAAA,4CACA29B,gBAAA39B,EAAA,qBACA49B,WAAA59B,EAAA,gBACA69B,UAAA79B,EAAA,eACA89B,UAAA99B,EAAA,8BACA+9B,WAAA/9B,EAAA,gCACAg+B,WAAAh+B,EAAA,gCACAi+B,iBAAAj+B,EAAA,iCACAk+B,sBAAAl+B,EAAA,yBAEAm+B,WAAAn+B,EAAA,kBAAA4E,KACA,2CAIAw5B,WAAAp+B,EAAA,uBACAq+B,YAAAr+B,EAAA,wBAEAs+B,aAAAt+B,EAAA,gBAAA4hB,IAAA,SAAAxC,EAAAlQ,GACA,MAAAA,GAAAqvB,aAAA,eAGAC,wBAAA,SAAAC,EAAAC,GACA,GAAAh4B,SAAA1G,EAAAmD,QAAAC,SAAA,KAAA,CAEA,GAAAs7B,EACA,GAAAC,GAAAjB,EAAAU,WAAAx5B,KACA,sBAAA65B,EAAA,UAGA,IAAAE,GAAAjB,EAAAU,WAAAx5B,KAAA,gBAEA,IAAAg6B,GAAAlB,EAAAU,WAAA3P,cACAoQ,EAAAF,EACA/5B,KAAA,gBACAA,KAAA,aACA6pB,aACA,OAAAoQ,GAEAnB,EAAAW,YAAA/yB,IACA,aACAuzB,EAAAD,EAAA,IAEAlB,EAAAW,YAAA/yB,IAAA,QAAA,QACAqzB,EAAA/5B,KAAA,gBAAA0G,IAAA,mBAAA,UAEAoyB,EAAAW,YAAA/yB,IAAA,QAAA,OACAoyB,EAAAW,YAAA/yB,IAAA,aAAA,aAKAwzB,gBAAA,SAAAL,GACA,GAAAM,GAAArB,EAAAU,WAAAx5B,KACA,sBAAA65B,EAAA,MAEAO,EAAAD,EAAAn6B,KAAA,eASA,IAPAm6B,EAAAn6B,KAAA,aAAAnB,OACAi6B,EAAAc,wBAAAC,GAAA,IAEAf,EAAAW,YAAA/yB,IAAA,QAAA,OACAoyB,EAAAW,YAAA/yB,IAAA,aAAA,WAGA0zB,EAAAv7B,OAAA,CAEA,GAAAw7B,GAAAF,EACAn6B,KAAA,gBACAs6B,EAAAH,EACAn6B,KAAA,gBAEA,SAAAs6B,EAAA5zB,IAAA,YAAA4zB,EAAAt6B,KAAA,sBAAAnB,OAAA,GACA07B,QAAAC,UAAAF,EAAAt6B,KAAA,SAAArE,KAAA,OAAA8+B,OAAA,GACAx+B,GAAAy+B,UAAAJ,EAAAt6B,KAAA,kBACA,QAAAq6B,EAAA3zB,IAAA,YAAA2zB,EAAAr6B,KAAA,qBAAAnB,OAAA,IACA07B,QAAAC,UAAAH,EAAAr6B,KAAA,SAAArE,KAAA,OAAA8+B,OAAA,GACAx+B,GAAAy+B,UAAAL,EAAAr6B,KAAA,sBAGA/D,IAAA0+B,cAIAC,gBAAA,SAAAf,GACA,GAAAgB,GAAA/B,EAAAW,YAAAz5B,KACA,sBAAA65B,EAAA,KAGA/3B,UACAg3B,EAAAW,YAAAp7B,YAAA,aACApC,GAAA0+B,cAEAE,EAAA76B,KAAA,mCAAAnB,OACAi6B,EAAAW,YAAAn7B,SAAA,aAEAw6B,EAAAW,YAAAp7B,YAAA,cAKAy8B,aAAA,WAEAhC,EAAAW,YAAAp7B,YAAA,aAEApC,GAAA0+B,aAMA7B,EAAAU,WACAx5B,KAAA,iBACA3B,YAAA,gBACA+T,OAAA,SAGA2oB,UAAA,WACAjC,EAAAW,YAAA98B,GAAA,OAAA,WACAvB,EAAA,wBAAAkD,SAAA,sBAEAw6B,EAAAU,WAAAhH,OACAwI,cAAA,EACAlM,MAAA,IACAmM,aAAA,EACA9+B,eAAA,EACA++B,QAAA,EAEAC,MAAA,EACAC,SAAA,uBAEAnqB,IAAA1S,OAAA0S,IACAoqB,aAEAC,WAAA,IACA51B,UACAopB,MAAA,OAIAwM,WAAA,IACA51B,UACAopB,MAAA,SAKAgK,EAAAW,YAAA98B,GAAA,OAAA,WACAyC,WAAA,WACA05B,EAAAyC,kBACA,MAEAzC,EAAAW,YAAA98B,GAAA,eAAA,WACAm8B,EAAAyC,mBAEAzC,EAAAW,YAAAjH,OACAwI,cAAA,EACAlM,MAAA,IACAmM,aAAA,EACA9+B,eAAA,EACA++B,QAAA,EACAM,UAAA,kDACAC,UAAA,kDACAC,UAAA,EACAC,cAAA,IACAP,SAAA,sBACAQ,gBAAA,EACA3qB,IAAA1S,OAAA0S,IACAoqB,aAEAC,WAAA,IACA51B,UACAopB,MAAA,OAIAwM,WAAA,IACA51B,UACAopB,MAAA,UAOAyM,eAAA,WAGAngC,EAAAC,UAAAiE,YACAw5B,EAAAW,YAAAl6B,SAAAC,IAAAs5B,EAAAW,YAAAh6B,WAEAxD,GAAA0+B,aACA7B,EAAAW,YAAAjH,MAAA,eAEAp3B,EAAAmD,QAAAs9B,OACAC,EAAA,SAAAtgC,GAEAJ,EAAAC,UAAAiE,YACAw5B,EAAAW,YAAAl6B,SAAAC,IAAAs5B,EAAAW,YAAAh6B,WAEAq5B,EAAAW,YAAAjH,MAAA,cACAv2B,GAAA0+B,eAKA,OAIAoB,cAAA,WACA,GAAAC,GAAA5gC,EAAA,0BACA4gC,GAAAn9B,QACAm9B,EAAAzgC,KAAA,WACA,GAAA8F,GAAAjG,EAAAM,KACA2F,GAAAZ,SAAA,sBACAY,EAAAmxB,MAAA,UAEA,IAAAyJ,IAAA,CACA56B,GAAApD,QAAA,wBAAAY,SACAo9B,GAAA,GAEA56B,EAAAmxB,OACAwI,cAAA,EACAlM,MAAA,IACA3yB,eAAA,EACA+/B,aAAA,EACAC,eAAA,EACAC,MAAAH,EACAhrB,IAAA1S,OAAA0S,IACAuqB,UAAA,kDACAC,UAAA,uDAMAY,YAAA,WACAvD,EAAA7tB,OAAA1P,KAAA,WACAH,EAAAM,MAAA82B,OACAwI,cAAA,EACAlM,MAAA,IACAmM,aAAA,EACA9+B,eAAA,EACA++B,QAAA,EACAS,cAAA,IACA1qB,IAAA1S,OAAA0S,IACAoqB,aAEAC,WAAA,IACA51B,UACAopB,MAAA,OAIAwM,WAAA,IACA51B,UACAopB,MAAA,YAQAwN,qBAAA,WACAxD,EAAAC,gBAAAx9B,KAAA,WACA,GAAA8F,GAAAjG,EAAAM,KACA2F,GAAAmxB,OACAwI,cAAA,EACAlM,MAAA,IACAmM,aAAA,EACA9+B,eAAA,EACA++B,QAAA,EACAjqB,IAAA1S,OAAA0S,IACAuqB,UAAA,kDACAC,UAAA,kDACAc,aAAAl7B,EAAApD,QAAA,oBAKAy9B,SAAA,WACA5C,EAAA7tB,OAAAunB,MAAA,cAGAgK,MAAA,WACA1D,EAAA7tB,OAAAunB,MAAA,eAGAiK,eAAA,WACA,GAAAC,EAEAA,IADA56B,QAKAg3B,EAAAI,UAAA39B,KAAA,WACAH,EAAAM,MAAA82B,OACAwI,aAAA0B,EACA5N,MAAA,IACA3yB,eAAA,EACA+/B,aAAA,EACAC,eAAA,EACAlrB,IAAA1S,OAAA0S,IACAoqB,aAEAC,WAAA,IACA51B,UACAw2B,aAAA,KAIAZ,WAAA,IACA51B,UACAw2B,aAAA,SAMApD,EAAAK,WAAA59B,KAAA,WACAH,EAAAM,MAAA82B,OACAvhB,IAAA1S,OAAA0S,IACA+pB,cAAA,EACAlM,MAAA,IACA3yB,eAAA,EACA+/B,aAAA,EACAC,eAAA,EACAT,UAAA,EACAC,cAAA,IACAN,aAEAC,WAAA,IACA51B,UACAw2B,aAAA,KAIAZ,WAAA,IACA51B,UACAw2B,aAAA,KAIAZ,WAAA,IACA51B,UACAw2B,aAAA,SAMApD,EAAAM,WAAA79B,KAAA,WACA,GAAA8F,GAAAjG,EAAAM,KACA2F,GAAAmxB,OACAvhB,IAAA1S,OAAA0S,IACA+pB,cAAA,EACAlM,MAAA,IACA3yB,eAAA,EACA+/B,aAAA,EACAC,eAAA,EACAT,UAAA,EACAC,cAAA,IACAH,UAAA,kDACAC,UAAA,kDACAc,aAAAl7B,EAAApD,QAAA,0BACAo9B,aAEAC,WAAA,IACA51B,UACAw2B,aAAA,KAIAZ,WAAA,IACA51B,UACAw2B,aAAA,EACAS,YAAA,EACAC,cAAA,SAIAtB,WAAA,IACA51B,UACAw2B,aAAA,EACAS,YAAA,EACAC,cAAA,cAQAC,2BAAA,WACA/D,EAAAQ,sBAAA/9B,KAAA,WACAH,EAAAM,MAAA82B,OACA1D,MAAA,IACA7d,IAAA1S,OAAA0S,IACAirB,aAAA,EACAC,eAAA,OA8BAW,sBAAA,WACAhE,EAAAO,iBAAA99B,KAAA,WACAH,EAAAM,MAAA82B,OACAwI,cAAA,EACAlM,MAAA,IACA3yB,eAAA,EACAwgC,YAAA,EACAC,cAAA,QACA3rB,IAAA1S,OAAA0S,IACAirB,aAAA,EACAb,aAEAC,WAAA,IACA51B,UACAi3B,YAAA,EACAT,aAAA,KAIAZ,WAAA,IACA51B,UACAi3B,YAAA,EACAT,aAAA,KAIAZ,WAAA,IACA51B,UACAi3B,YAAA,EACAT,aAAA,UAQAr+B,eAAA,WACAi7B,EAAAU,WAAA78B,GAAA,eAAA,SACAnB,EACAg3B,EACAuK,EACAlD,GAEA,GAAAM,GAAArB,EAAAU,WAAAx5B,KACA,sBAAA65B,EAAA,KAEAM,GAAAn6B,KAAA,eAKA,OAHA5E,GAAAmD,QAAAC,QAAA,MACAs6B,EAAAkE,aAEAl7B,SACAg3B,EAAAgC,mBACAhC,GAAAoB,gBAAAL,KAGAf,EAAA8B,gBAAAf,OACAf,GAAAoB,gBAAAL,OAIAoD,gBAAA,WACAnE,EAAAS,WAAA2D,QAAA,WACAt1B,aAAAC,SACAixB,EAAA0D,UAGA1D,EAAAS,WAAA4D,SAAA,WACAv1B,aAAAC,SACAixB,EAAA4C,cAKA0B,aAAA,WACAtE,EAAA7tB,OAAAoyB,WAAA,WACAz1B,aAAAC,SACAixB,EAAA0D,UAGA1D,EAAA7tB,OAAAtD,WAAA,WACAC,aAAAC,UAAAixB,EAAAS,WAAAh5B,GAAA,WACAu4B,EAAA4C,cAKA4B,YAAA,WACAxE,EAAA4C,WACA5C,EAAAsE,gBAGAG,SAAA,WACA,GAAAC,GAAApiC,EAAA,iBACAoiC,GAAAjiC,KAAA,WACA,GAAAye,GAAA5e,EAAAM,MACA+hC,EAAAzjB,EAAAre,KAAA,SACA+hC,EAAAD,EAAAz2B,MAAA,OAAA,GACA22B,EAAA3jB,EAAAre,KAAA,uBAEAwE,UAAAw9B,IACA3jB,EAAAvZ,SAAA,kBACAi9B,EAAA,GACA1jB,EACAha,KAAA,gBACA0G,IAAA,mBAAA,OAAAi3B,EAAA,KAGAD,EAAA,GACA1jB,EAAAtT,IAAA,mBAAA,OAAAi3B,EAAA,SAOAX,WAAA,WACA,GAAAY,GAAAxiC,EAAA,iCACAyiC,EAAAD,EAAAjiC,KAAA,SACA+hC,EAAAG,EAAA72B,MAAA,OAAA,GACA82B,EAAArnB,SAAAinB,GAAA,EACAK,EAAA3iC,EAAA,6BAAA0iC,GACAE,EAAAD,EAAApiC,KAAA,uBACAqiC,KACAD,EAAAt9B,SAAA,qBAAA,EACAs9B,EACA/9B,KAAA,gBACA0G,IAAA,mBAAA,OAAAs3B,EAAA,KAEAD,EAAAr3B,IAAA,mBAAA,OAAAs3B,EAAA,OAKAlhC,KAAA,WAsBA,GArBA1B,EAAA,yBAAAyD,QACAi6B,EAAAiC,YAGA3/B,EAAA,2BAAAyD,QACAi6B,EAAAiD,gBAGAjD,EAAAuD,cACAvD,EAAA2D,iBACA3D,EAAAgE,wBACAhE,EAAA+D,6BACA/D,EAAAmE,kBACAnE,EAAA4C,WACA5C,EAAAsE,eACAtE,EAAAj7B,iBAEA+J,aAAAC,SACAixB,EAAAwE,cAGAxE,EAAAU,WAAA36B,OAAA,CACAo/B,iBAAAnF,EAAAU,WACAx5B,KAAA,0BACAA,KAAA,gBAGA84B,EAAAU,WACAx5B,KAAA,0BACAA,KAAA,gBACAA,KAAA,aAAAnB,QAEAi6B,EAAAc,wBAAA,MAAA,EAGA,IAAAS,GAAAvB,EAAAU,WACAx5B,KAAA,0BACAA,KAAA,gBAEAs6B,EAAAxB,EAAAU,WACAx5B,KAAA,0BACAA,KAAA,gBAEA,SAAAs6B,EAAA5zB,IAAA,YAAA4zB,EAAAt6B,KAAA,sBAAAnB,OAAA,GACA07B,QAAAC,UAAAF,EAAAt6B,KAAA,SAAArE,KAAA,OAAA8+B,OAAA,GACAx+B,GAAAy+B,UAAAJ,EAAAt6B,KAAA,kBACA,QAAAq6B,EAAA3zB,IAAA,YAAA2zB,EAAAr6B,KAAA,qBAAAnB,OAAA,IACA07B,QAAAC,UAAAH,EAAAr6B,KAAA,SAAArE,KAAA,OAAA8+B,OAAA,GACAx+B,GAAAy+B,UAAAL,EAAAr6B,KAAA,kBAIA84B,EAAAC,gBAAAl6B,QAEAi6B,EAAAwD,uBAGAlhC,EAAAmD,QAAAC,QAAA,MACAs6B,EAAAyE,UAGA,IAAAW,GAAA,EACAC,EAAA,SAAAC,GACAh/B,WAAA,WACA,IAAAg/B,GACAtF,EAAAU,WAAAhH,MAAA,aAEA0L,GAAApF,EAAAY,aAAA76B,SAAAq/B,EAAA,GACAC,EAAArF,EAAAY,aAAAwE,OACAE,GAEAD,GAAA,KAgBArC,EAAA,SAAAuC,EAAA3b,GACA,GAAA4b,EACA,OAAA,YACA,GAAAC,GAAAtW,UACAuW,EAAA9iC,IACA4iC,KACAD,EAAAI,MAAAD,EAAAD,GACAD,GAAA,EACAl/B,WAAA,WACAk/B,GAAA,GACA5b,MCzpBA0I,GAGAhvB,MACA+f,KAAA/gB,EAAA,QACAsjC,MAAAtjC,EAAA,4BAEAujC,cAAAx+B,OACAy+B,UAAAz+B,OAIA0+B,kBAAA,WACAC,mBAAA,YACAC,mBAAA,YACAC,iBAAA,UACAC,kBAAA,WAEAC,aAAA,MAIApiC,KAAA,WACAsuB,EAAAuT,cAAAvT,EAAAhvB,KAAA+f,KAAAvP,KAAA,mBACAwe,EAAAwT,UAAAxT,EAAAhvB,KAAA+f,KAAAvP,KAAA,cAQAwe,EAAAvoB,SAGAuoB,EAAAhvB,KAAAsiC,MAAA/hC,GAAA,QAAAyuB,EAAAK,UAIA5a,IAAA,SAAAxM,GAGA,GAAAq6B,GAAAr6B,EAAArE,KAAA,0BACA0+B,GAAA/hC,GAAA,QAAAyuB,EAAAK,SAEAL,EAAAvoB,OAAA67B,GACAtT,EAAAhvB,KAAAsiC,MAAAtT,EAAAhvB,KAAAsiC,MAAA7tB,IAAA6tB,IAIA77B,OAAA,SAAA67B,EAAAxT,GAGA,GAAAiU,EAEAT,GAAAA,GAAAtT,EAAAhvB,KAAAsiC,MAEAA,EAAAnjC,KAAA,SAAAif,EAAA4kB,GAQA,OANAD,EAAAC,EAAAzF,aAAA,wBAAA9hB,eAQA,IAAAuT,GAAAyT,kBACAzT,EAAAiU,eAAAD,EAAAlU,EACA,MAEA,KAAAE,GAAA0T,mBACA1T,EAAAkU,gBAAAF,EAAAlU,EACA,MAEA,KAAAE,GAAA2T,mBACA3T,EAAAmU,gBAAAH,EAAAlU,EACA,MAEA,KAAAE,GAAA4T,iBACA5T,EAAAoU,cAAAJ,EAAAlU,EACA,MAEA,KAAAE,GAAA6T,kBACA7T,EAAAqU,eAAAL,EAAAlU,OASAmU,eAAA,SAAAD,EAAAlU,GAGA,GAAAuH,GAAAvH,GAAAkU,EAEA10B,EAAA0gB,EAAAsU,SAAAjN,GACAvO,EAAAkH,EAAAuU,OAAAlN,GACAhQ,EAAArnB,EAAAwkC,QAAA,QAAA,QAAA,OAEAR,GAAAzrB,aAAA,OACA,+CACAyX,EAAAuT,cACA,YAAAlc,EACA,YAAA/X,EACA,SAAAwZ,GAEAkb,EAAAzrB,aAAA,SAAA,WAIA2rB,gBAAA,SAAAF,EAAAlU,GAGA,GAAAuH,GAAAvH,GAAAkU,EAEA10B,EAAA0gB,EAAAsU,SAAAjN,GACAvO,EAAAkH,EAAAuU,OAAAlN,EAEA2M,GAAAzrB,aAAA,OACA,+BACAyX,EAAAuT,cACA,YAAAj0B,EACA,SAAAwZ,IAKAqb,gBAAA,SAAAH,EAAAlU,GAGA,GAAAuH,GAAAvH,GAAAkU,EAEA10B,EAAA0gB,EAAAsU,SAAAjN,GACA9nB,EAAAygB,EAAAyU,SAAApN,GACAvO,EAAAkH,EAAAuU,OAAAlN,EAIA2M,GAAAzrB,aAAA,OACA,wDACAjJ,EACA,UAAAC,EACA,QAAAuZ,GAEAkb,EAAAzrB,aAAA,SAAA,WAGA6rB,cAAA,SAAAJ,EAAAlU,GAKA,GAAAuH,GAAAvH,GAAAkU,EAEA10B,EAAA0gB,EAAAsU,SAAAjN,GACAvO,EAAAkH,EAAAuU,OAAAlN,EAEA2M,GAAAzrB,aAAA,OACA,yCACAjJ,EACA,QAAAwZ,GAEAkb,EAAAzrB,aAAA,SAAA,WAIA8rB,eAAA,SAAAL,EAAAlU,GAGA,GAAAuH,GAAAvH,GAAAkU,EAEA10B,EAAA0gB,EAAAsU,SAAAjN,GACAvO,EAAAkH,EAAAuU,OAAAlN,EAEA2M,GAAAzrB,aAAA,OACA,wBACAjJ,EACA,MAAAwZ,GAEAkb,EAAAzrB,aAAA,cAAA,yBAIAksB,SAAA,SAAApN,GAGA,GAAAqN,GAAA1kC,EAAAq3B,GACA9nB,EAAAm1B,EAAA7hC,QAAA,uBAAAtC,KAAA,mBAOA,OALAgP,KAEAA,EAAAm1B,EAAA7hC,QAAA,qBAAAtC,KAAA,mBAGAokC,mBAAAp1B,IAIA+0B,SAAA,SAAAjN,GAEA,GAAAqN,GAAA1kC,EAAAq3B,GACA/nB,EAAAo1B,EAAA7hC,QAAA,iBAAA2O,KAAA,QAIA,OAAAlC,GACAq1B,mBAAA3U,EAAAwT,UAAAxT,EAAA8T,aAAAx0B,GAEAq1B,mBAAA3U,EAAAwT,YAIAe,OAAA,SAAAlN,GAEA,GAAAqN,GAAA1kC,EAAAq3B,GACAvO,EAAA4b,EAAA7hC,QAAA,qBAAAtC,KAAA,iBAIA,OAAAokC,oBAAA7b,IAGA8b,WAAA,SAAA9b,EAAAphB,EAAAtE,EAAAiB,GAGAjB,EAAAA,GAAA,IACAiB,EAAAA,GAAA,IAEAlB,OAAA0hC,KAAA/b,EAAAphB,EAAA,SAAAtE,EAAA,WAAAiB,IAMAgsB,QAAA,SAAA3tB,GAGA,GAAA1C,EAAAwkC,QAAA/3B,QAAA,CAEA/J,EAAAkB,gBAEA,IAAAklB,GAAApmB,EAAAoI,cAAAyzB,aAAA,QACA72B,EAAAhF,EAAAoI,cAAAyzB,aAAA,aAEAvO,GAAA4U,WAAA9b,EAAAphB,MCvPAo9B,GAEA9jC,MACA+jC,kBAAA/kC,EAAA,8BAGAglC,YAAA,SAAAtiC,GACA,GAAAgC,GAAA1E,EAAA0C,EAAAE,QACAvB,EAAAqD,EAAAnE,KAAA,QACA+O,EAAA5K,EAAAnE,KAAA,QAEA4C,QAAA0hC,KAAAxjC,EAAAiO,EAAA,yBAGA7M,eAAA,WACAqiC,EAAA9jC,KAAA+jC,kBAAAxjC,GAAA,QAAA,SAAAmB,GACAA,EAAAkB,iBACAkhC,EAAAE,YAAAtiC,MAIAhB,KAAA,WACAojC,EAAAriC,mBCtBAwiC,GACAC,OACAllC,EAAA,mBAGA0B,KAAA,WACA,IAAA,GAAA6G,GAAA08B,EAAAC,MAAAzhC,OAAA,EAAA8E,GAAA,EAAAA,IACA08B,EAAAC,MAAA38B,GAAA9E,QACAyxB,EAAAS,qBCRA31B,GAAAC,UAAAsB,GAAA,QAAA,mBAAA,WAEA,GAAA0E,GAAAjG,EAAAM,MAEA6kC,EAAAl/B,EAAA1F,KAAA,uBAEA,KAAA0F,EAAAZ,SAAA,WAAA,CAIArF,EAAA,oBAAAiD,YAAA,WACAjD,EAAA,mBAAAiD,YAAA,WAEAgD,EAAA/C,SAAA,UACA,IAAAkiC,GAAAplC,EAAA,yBAAAmlC,EAAA,KACAC,GAAAliC,SAAA,WAEAc,WAAA,WACAohC,EAAAxgC,KAAA,8BAAA8U,SAAA,SAEA,IAAA5M,GAAAs4B,EAAAxgC,KAAA,gBACAkI,GAAArJ,QACAqJ,EAAA3M,KAAA,WACA,GAAA8F,GAAAjG,EAAAM,KACA2F,GAAAlE,QAAA,WAAAP,WAAA,SACAwC,WAAA,WACA6I,EAAAK,cAAAjH,IACA,OAGA,MC9BA,IAAAo/B,IAEAC,SAAAtlC,EAAA,2CAEAulC,aAAA,WACA,GAAAC,GAAAH,EAAAC,QAEAE,GAAArlC,KAAA,WACA,GAAAurB,GAAA1rB,EAAAM,MAAA4a,OACA8N,EAAA,0BAEA,IAAAA,EAAAN,KAAAgD,GAAA,CACA,GAAA+Z,GAAA/Z,EAAA3C,QAAAC,EAAA,oBACAhpB,GAAAM,MAAA4a,KAAAuqB,OAKA/jC,KAAA,WACA2jC,EAAAE,iBCnBAG,GACAhkC,KAAA,WACA,GAAA1B,EAAA,QAAA4E,KAAA,yBAAAnB,OAAA,CACA,GAAAkiC,GAAA3lC,EAAA,QAAA4E,KAAA,yBAAArE,KAAA,mBACAqlC,WAAAva,MACAjrB,MAAA,eACAylC,cAAA,eACAC,YAAA,UACAC,WAAAJ,IAIA3lC,EAAA,kBAAAmB,MAAA,WACAykC,UAAAva,MACAjrB,MAAA,UACA4lC,WAAA,kBACAC,aAAA,aAGAjmC,EAAA,2BAAAmB,MAAA,WACAykC,UAAAva,MACAjrB,MAAA,UACA4lC,WAAA,iBACAC,aAAA,eCvBAC,GACAtgC,OAAA5F,EAAA,2BACA8W,QAAA9W,EAAA,6BACAmmC,OAAAnmC,EAAA,0BACAomC,SAAApmC,EAAA,8BAEAo7B,YAAA,WACA8K,EAAApvB,QAAA3V,MAAA,SAAAuB,GACAA,EAAAkB,iBACAoW,EAAAzX,UAIA8jC,aAAA,WACAH,EAAAC,OAAAhlC,MAAA,WACA+kC,EAAAE,SAAA/tB,KAAA,YACA6tB,EAAAE,SAAA/tB,KAAA,YAAA,GAEA6tB,EAAAE,SAAA/tB,KAAA,YAAA,MAKA7V,KAAA,WACA,GAAA64B,GAAA,IAAA6K,EAAAtgC,OAAArF,KAAA,oBACAyD,YAAA,WACAgW,EAAAxX,KAAA,2BACA0jC,EAAA9K,cACA8K,EAAAG,gBACAhL,IAGA35B,KAAA,WACAwkC,EAAAtgC,OAAAnC,OAAA,GACAyiC,EAAA1jC,SClCA2D,GAEAmgC,SACAjpB,KAAArd,EAAA,aACAumC,YAAAvmC,EAAA,oBAEAwmC,KAAA,WACArgC,EAAAmgC,QAAAjpB,KAAAld,KAAA,SAAAif,EAAA+Y,GACA,GAAAsO,GAAAC,EAAAC,EAAA3C,EAAAhkC,EAAAm4B,EAEAsO,GAAAzC,EAAA9oB,OAAA5Z,MAAA,OACAolC,EAAAD,EAAAG,MACAD,EAAAF,EAAArc,KAAA,KAEA4Z,EAAA9oB,MAAAyrB,EAAA,UAAAD,EAAA,wBAAAtc,KAAA,SAKAyc,UACAxpB,KAAArd,EAAA,qBAEAwmC,KAAA,WACArgC,EAAA0gC,SAAAxpB,KAAAld,KAAA,SAAAif,EAAA+Y,GACA,GAAAsO,GAAAC,EAAAC,EAAA3C,EAAAhkC,EAAAm4B,EAEAsO,GAAAzC,EAAA79B,OAAA7E,MAAA,OACAolC,EAAAD,EAAAG,MACAD,EAAAF,EAAArc,KAAA,KAEA4Z,EAAA9oB,MAAAyrB,EAAA,+CAAAD,EAAA,WAAAtc,KAAA,SAKA1oB,KAAA,WACAyE,EAAAmgC,QAAAE,OACArgC,EAAA0gC,SAAAL,MAGA,IAAAM,GAAA9mC,EAAA,6CACA8mC,GAAA5rB,QACA4rB,EAAA5rB,KAAA4rB,EAAA5rB,OAAA6N,QAAA,IAAA,YC1CAge,GAEAC,iBAAA,WAYA,QAAAC,KACAC,EAAAlnC,EAAA,oCAAA0U,MACAyyB,EAAAnnC,EAAA,kCAAA0U,KAEA,IAAA0yB,GAAA,4JAAAF,EAAA,MAAAC,EAAA,uGAEAnnC,GAAAg6B,MACA/gB,KAAA,MACA6P,IAAAse,EACAjN,SAAA,QACAE,KAAA,SAAA7oB,GAEA,GAAA61B,GAAArnC,EAAAwR,GAAA5M,KAAA,MAEA0iC,EAAAtnC,EAAA,mBAAAmG,OAEA2B,EAAA,GAAAC,MACAw/B,EAAAz/B,EAAA0/B,WACAC,EAAA3/B,EAAA4/B,YAGA,IAAAL,EAAA5jC,OAAA,EAEAzD,EAAAwR,GAAA5M,KAAA,MAAAzE,KAAA,WACA,GAAAwnC,GAAA3nC,EAAAM,MAAAsE,KAAA,YAAAuB,OACAyhC,EAAA5nC,EAAAM,MAAAC,KAAA,SACAsnC,EAAA7nC,EAAAM,MAAAsE,KAAA,YAAAuB,OACA2hC,EAAA9nC,EAAAM,MAAAsE,KAAA,YAAAuB,OACA4hC,EAAA/nC,EAAAM,MAAAsE,KAAA,YAAAuB,MAEAnG,GAAA,kBAAA4nC,EAAA,QAAA1sB,KAAA,mBAAAysB,EAAA,yBAAAE,EAAA,yBAAAC,EAAA,gDAAAR,EAAA,WAAAS,EAAA,UAAA9jB,SAAA,2CAEA,CAEA,GAAA+jB,GAAAhoC,EAAA,mBAAAkb,MAEAlb,GAAA,0DAAAikB,SAAA,qCAEAjkB,EAAA,yCAAAkb,KAAA8sB,GAGAhoC,EAAA,gCAAAmG,KAAA,iBAAAohC,EAAA,IAAAE,GAEAznC,EAAA,mCAAAuC,OACAvC,EAAA,gCAAAwC,SAtDA,GAAA0kC,GACAC,CAEAnnC,GAAA,oEAAAyU,OAAA,WACAzU,EAAA,yCAAAmb,SACAnb,EAAA,mCAAAwC,OACAxC,EAAA,gCAAAuC,OACA0kC,MAmDAA,KAIAvlC,KAAA,WACA1B,EAAA,qBAAAyD,OAAA,GACAsjC,EAAAC,qBCpEAiB,GACA3hC,UAAAtG,EAAA,6BACA6W,OAAA7W,EAAA,kBACA8W,QAAA9W,EAAA,gBACAkoC,QAAAloC,EAAA,4BAEAmoC,UAAA,SAAAhQ,EAAAiQ,GACA,GAAAC,GAAAroC,EAAAmD,QAAAe,YACAokC,EAAAD,EAAAroC,EAAAmD,QAAAkB,SACAkqB,EAAAvuB,EAAAm4B,GAAAh0B,SAAAC,IACAoqB,EAAAD,EAAAvuB,EAAAm4B,GAAA9zB,QAEA,OAAA+jC,MAAA,EACAC,EAAA9Z,GAAA+Z,EAAA9Z,EAEAD,GAAA+Z,GAAA9Z,GAAA6Z,GAIAE,WAAA,WACAvoC,EAAA,QAAAuB,GAAA,QAAA,+BAAA,SAAAmB,GACAA,EAAAkB,iBACA5D,EAAA0C,EAAAE,QAAAC,QAAAolC,EAAA3hC,WAAAhB,YAAA,aAIAkjC,gBAAA,WACA,IAAAP,EAAAC,QAAAzkC,SAIAwkC,EAAAE,UAAAF,EAAAC,SAAA,GACAloC,EAAA,QAAAiD,YAAA,0BAEAjD,EAAA,QAAAkD,SAAA,4BAIAxB,KAAA,WACAumC,EAAA3hC,UAAA7C,QACAwkC,EAAAM,aAGAN,EAAAC,QAAAzkC,QACAzD,EAAAmD,QAAAs9B,OAAAwH,EAAAO,iBACAtb,OAAA+a,EAAAO,iBACAzmC,QAAA,UAGA/B,EAAA,0CAAAgP,UACAy5B,MAAA,EACAC,WAAA,QACAzI,YAAA,IAGAjgC,EAAA,0BAAAuB,GAAA,QAAA,WACAvB,EAAAM,MAAAoD,SAAAkB,KAAA,0CAAA1B,SAAA,UACAlD,EAAAM,MAAAoD,SAAAkB,KAAA,0CAAA1B,SAAA,WACAlD,EAAAM,MAAAiC,SAGAvC,EAAA,0BAAAuB,GAAA,QAAA,SAAAmB,GACA,GAAAyG,GAAAnJ,EAAAM,MACAqoC,EAAAx/B,EAAAqI,KAAA,aAEAm3B,GACA3oC,EAAA,qBAAAG,KAAA,SAAAif,EAAAlQ,GACA,GAAAuD,GAAAzS,EAAAkP,GACA05B,EAAAn2B,EAAAjB,KAAA,aACAm3B,IAAAC,EACAn2B,EAAA/O,SAAAlB,OAEAiQ,EAAA/O,SAAAnB,SAIAvC,EAAA,qBAAA0D,SAAAlB,MAGA,IAAAqmC,GAAA1/B,EAAAtG,QAAA,iBAAA+B,KAAA,kBACAkkC,EAAA3/B,EAAAtG,QAAA,iBAAA+B,KAAA,iBAEAkkC,GAAAlkC,KAAA,UAAA3B,YAAA,YAEA0lC,GACAE,EAAAjkC,KAAA,0BAAArC,OACAsmC,EAAAjkC,KAAA,2BAAAsW,KAAA/R,EAAA+R,QAAA1Y,OACAsmC,EAAAlkC,KAAA,iBAAApC,OACA2G,EAAAjG,SAAA,cAEA2lC,EAAAjkC,KAAA,2BAAArC,OACAsmC,EAAAjkC,KAAA,0BAAApC,OACAsmC,EAAAlkC,KAAA,iBAAArC,QAGAsmC,EAAA5lC,YAAA,QACA6lC,EAAA7lC,YAAA,YChGA8lC,GACAC,IAAAhpC,EAAA,cAAAO,KAAA,mBACA0oC,OAAAjpC,EAAA,mBAEA0B,KAAA,WAEA,GAAAqnC,EAAAE,OAAAxlC,OAAA,EAAA,CACA,GAAAylC,IACAC,SAAAC,WAAAL,EAAAC,KACAK,MAAA,YACAC,aAAA,EACAC,UAAA,EACAC,UAAA,EAEAC,gBAAAC,MAAAR,MCdAjiB,GAEAjmB,MACA2oC,eAAA3pC,EAAA,eAGA4pC,eAAA,SAAAjN,GAEA,GAAAkN,GAAA,SAAAC,GAEA,MAAA,UAAAC,EAAAnW,GAEA,GAAAtH,GAAA0d,CAGA1d,MAGA0d,EAAA,GAAAp3B,QAAAm3B,EAAA,KAIA/pC,EAAAG,KAAA2pC,EAAA,SAAAvhC,EAAAmjB,GACAse,EAAAthB,KAAAgD,IACAY,EAAAjB,KAAAK,KAIAkI,EAAAtH,KAKA2d,EAAAhjB,EAAAjmB,KAAA2oC,cAKAM,GAAAhjB,WACAC,MAAA,EACAC,WAAA,EACAC,UAAA,MAGA1f,KAAA,WACA6c,OAAAslB,EAAAlN,KAIA38B,EAAAC,UAAAiqC,SAAA,SAAAxnC,GACA,KAAAA,EAAAynC,OACAF,EAAAhjB,UAAA,YAKAvlB,KAAA,SAAAi7B,GAEA1V,EAAAjmB,KAAA2oC,gBACA1iB,EAAA2iB,eAAAjN,KC3DAyN,GAEAC,WAAA,WA4LA,QAAAC,GAAAC,EAAAC,GACA,GAAA,GAAAD,EAAA9mC,OAEA,OAAA,CAEA,IAAA8mC,EAAA9mC,OAAA,IAEA,OAAA,CAEA,IAAA8mC,EAAA3+B,MAAA,gBAEA,OAAA,CAEA,IAAA2+B,EAAA3+B,MAAA,oBAEA,OAAA,CAEA,IAAA6+B,GAAAF,EAAAjpC,MAAA,KACAopC,GAAA,EACAC,GAAA,CACA,IAAA,GAAAF,EAAAhnC,OACAinC,GAAA,MACA,IAAA,GAAAD,EAAAhnC,OAAA,CACAknC,GAAA,CACA,IAAAC,GAAA,yBACAC,EAAAJ,EAAA,GAAAnpC,MAAA,IACA,IAAAupC,EAAApnC,QAAA,IAAAonC,EAAA,KACAF,GAAA,EAEA,KAAA,GAAApiC,KAAAsiC,GAAA,CACAA,EAAAtiC,GAAA9E,OAAA,IACAknC,GAAA,EAEA,KAAA,GAAAG,GAAA,EAAAA,EAAAD,EAAAtiC,GAAA9E,OAAAqnC,IACAF,EAAAjiC,QAAAkiC,EAAAtiC,GAAAE,OAAAqiC,IAAA,IACAH,GAAA,IAKA,IAAA,GAAApiC,KAAAkiC,GAAA,CACA,GAAAA,EAAAliC,GAAA9E,OAAA,GACA,OAAA,CAEA,IAAAinC,EAAA,CACAD,EAAAliC,GAAA9E,OAAA,IACAinC,GAAA,EAEA,KAAA,GAAAI,GAAA,EAAAA,EAAAL,EAAAliC,GAAA9E,OAAAqnC,IACA,cAAAniC,QAAA8hC,EAAAliC,GAAAE,OAAAqiC,IAAA,IACAJ,GAAA,EAGAA,KAAAD,EAAAliC,GAAA,GAAAkiC,EAAAliC,GAAA,OACAmiC,GAAA,IAMA,IAAAC,GAAAJ,EAAA5hC,QAAA,MAAA,IAAA6hC,EACA,OAAA,CAIA,KAAAE,IAAAC,EAIA,IAHA,GAAAI,GAAAN,EAAAA,EAAAhnC,OAAA,GACAunC,EAAAD,EAAAtnC,OACAwnC,EAAA,uDACAD,GAEA,GADAA,IACAC,EAAAtiC,QAAAoiC,EAAAtiC,OAAAuiC,IAAA,EACA,OAAA,CAKA,QAAA,EA8DA,QAAAE,GAAAC,EAAAC,EAAAhY,GAEA,GAAAiY,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAMA,QAHAF,EAAA,IAAA,GAAAA,EAAA,MAAA,GAAAA,EAAA,MAAA,KACAE,EAAA,GAAA,IAEAjY,GAAAiY,IAAAD,GA7UAprC,EAAAsrC,UAAAC,aACA/mB,OAAA,EACAoX,QAAA,QACA4P,aAAA,OACAC,eAAA,SAAA3P,EAAA3D,GACAn4B,EAAAm4B,GAAAhzB,GAAA,aACA22B,EAAA4P,YAAA1rC,EAAAm4B,GAAAz0B,UACA1D,EAAAm4B,GAAAhzB,GAAA,UACA22B,EAAA4P,YAAA1rC,EAAAm4B,GAAAz0B,SAAAA,UACA1D,EAAAm4B,GAAAjsB,SAAA,oBAAAzI,OACAq4B,EAAA4P,YAAA1rC,EAAAm4B,GAAAz0B,UACA1D,EAAAm4B,GAAA53B,KAAA,6BACAu7B,EAAA3gB,SACAnb,EAAAm4B,GAAAhzB,GAAA,yBACA22B,EAAA4P,YAAA1rC,EAAAm4B,GAAAjsB,SAAA,YAEA4vB,EAAA4P,YAAA1rC,EAAAm4B,OAMAn4B,EAAAsrC,UAAAK,UACA,cACA,SAAAhkC,EAAAwwB,GACA,GAAAyT,GAAA5rC,EAAAm4B,GAAA53B,KAAA,yBAEAsrC,EAAA,GAAAj5B,QAAAg5B,EACA,OAAAtrC,MAAAwrC,SAAA3T,IAAA0T,EAAAnjB,KAAA/gB,GAAA,IAKA3H,EAAAsrC,UAAAK,UACA,sBACA,SAAAhkC,EAAAwwB,GAIA,GAHA9iB,MAAA1N,EAAAohB,QAAA,aAAA,IAGA1T,MAAAzJ,MAAA,YACA,OAAA,CAEA,IAAA,GAAAyJ,MAAA5R,QAAA4R,MAAA5R,OAAA,IACA,OAAA,CAGA,IAAAsoC,GAAA12B,MAAA5R,OAAA,CACA,IAAA,KAAA4R,MAAA5M,OAAAsjC,GAAA,CAEAA,GAIA,KAHA,GAAAC,GAAA32B,MAAA5M,OAAAsjC,GACAz+B,EAAA+H,MAAA5M,OAAAsjC,EAAA,GACAxB,EAAA,GACA,KAAAyB,GAAAD,GAAA,CACA,GAAAE,GAAAD,EAAAE,WAAA,EACA,IAAA,MAAA5+B,EAAA,CACA,GAAA2+B,GAAA,KAAAA,EAAA,EACA,OAAA,CAEA1B,GAAAyB,EAAAzB,EACAwB,GAAA,EACAC,EAAA32B,MAAA5M,OAAAsjC,GACAz+B,EAAA+H,MAAA5M,OAAAsjC,EAAA,OACA,CACA,KAAAE,GAAA,KAAAA,GAAA,IACAA,GAAA,IAAAA,GAAA,IACAA,GAAA,GAAAA,GAAA,GACA,IAAAA,GAAA,IAAAA,GAOA,OAAA,CANA1B,GAAAyB,EAAAzB,EACAwB,IACAC,EAAA1+B,EACAA,EAAA+H,MAAA5M,OAAAsjC,EAAA,IAOA,GAAAA,EAAA,EAEA,OAAA,CAEA,IAAA,KAAAz+B,EAEA,OAAA,CAEA,KAAAg9B,EAAAC,GAAA,GACA,OAAA,CAEAwB,SACA,CAGA,IADA,GAAAI,GAAA,sFACAA,EAAAxjC,QAAA0M,MAAA5M,OAAAsjC,KAAA,GAAAA,GACAA,GAEA,IAAAA,EAAA,EAEA,OAAA,CAEA,IAAA,KAAA12B,MAAA5M,OAAAsjC,GAEA,OAAA,CAEA,IAAAxB,GAAAl1B,MAAA3M,UAAAqjC,EAAA,EACA,KAAAzB,EAAAC,GAAA,GACA,OAAA,EAKA,GAAA6B,GAAA/2B,MAAA/T,MAAA,KAAA,EACA,IAAA,SAAA8qC,GAAA,UAAAA,EACA,OAAA,CAGA,IAAAC,GAAAh3B,MAAA3M,UAAA,EAAAqjC,EACA,IAAAM,EAAA5oC,OAAA,GACA,OAAA,CAEA,IAAA6oC,GAAA,oFAQAC,EAAA,CACA,KAAAhkC,EAAA,EAAAA,EAAA8jC,EAAA5oC,OAAA8E,IAAA,CACA,GAAAC,GAAA6jC,EAAA5jC,OAAAF,EAEA,IAAA,GAAAgkC,EAEA,GAAA,KAAA/jC,EACA+jC,EAAA,MACA,CAAA,GAAA,KAAA/jC,EACA,OAAA,CACA,IAAA8jC,EAAA3jC,QAAAH,GAAA,EACA,OAAA,CAEA+jC,GAAA,MAEA,IAAA,GAAAA,GAEA,GAAA,KAAA/jC,EACA+jC,EAAA,MACA,IAAAD,EAAA3jC,QAAAH,GAAA,EACA,OAAA,MAEA,IAAA,GAAA+jC,EAEA,GAAA,KAAA/jC,EACA+jC,EAAA,MACA,IAAA,MAAA/jC,EACA+jC,EAAA,MACA,CACA,GAAAC,GAAAhkC,EAAA0jC,WAAA,EACA,IAAAM,EAAA,GAAAA,EAAA,IACAA,EAAA,IAAAA,EAAA,IACA,IAAAA,GAAA,IAAAA,GAAAA,EAAA,IACA,OAAA,MAGA,IAAA,GAAAD,EAAA,CACA,GAAAC,GAAAhkC,EAAA0jC,WAAA,EACA,IAAA,IAAAM,GAAA,IAAAA,GAAAA,EAAA,IACA,OAAA,CAEAD,GAAA,MACA,IAAA,GAAAA,EAAA,CACA,GAAA,KAAA/jC,EACA,OAAA,CAEA+jC,GAAA,GAGA,MAAA,IAAAA,GAAA,GAAAA,IA0FAvsC,EAAAsrC,UAAAK,UACA,aACA,SAAAhkC,EAAAwwB,GACA,GAAAvZ,GAAA5e,EAAAm4B,GACAsU,EAAA7tB,EAAAlK,MACAg4B,EAAA9tB,EAAAre,KAAA,2BACAosC,EAAA/tB,EAAA/b,QAAA,QAAA+B,KAAA,UAAA8nC,EAAA,MAAAh4B,KAEA,OAAA+3B,KAAAE,IASA3sC,EAAAsrC,UAAAK,UACA,iBACA,SAAAhkC,EAAAwwB,GACA,MAAA,gBAAAxwB,GAAA,KAAAA,GACA3H,EAAAm4B,GAAAt1B,QAAA,mBAAA+B,KAAA,gBAAA1B,SAAA,iBACA,IAEAlD,EAAAm4B,GAAAt1B,QAAA,mBAAA+B,KAAA,gBAAA3B,YAAA,iBACA,KAMAjD,EAAAsrC,UAAAK,UACA,iBACA,SAAAhkC,EAAAwwB,GACA,GAAAyU,GAAA5sC,EAAAm4B,GAAA53B,KAAA,6BACAssC,EAAAllC,EAAAlE,MACA,SAAAopC,EAAAxxB,SAAAuxB,MASA5sC,EAAAsrC,UAAAK,UACA,iBACA,SAAAhkC,EAAAwwB,GACA,GAAAyU,GAAA5sC,EAAAm4B,GAAA53B,KAAA,6BACAssC,EAAAllC,EAAAlE,MACA,SAAAopC,EAAAxxB,SAAAuxB,KAmBA,IAAAE,IAAA,CAEA9sC,GAAA,qBAAA6C,QAAA,QAAA+B,KAAA,yBAAArD,GAAA,QAAA,WACA,GAAAuG,GAAA9H,EAAA,eAAA0U,MACAq4B,EAAAjlC,EAAAxG,MAAA,IAEA,MAAAyrC,EAAA,IAAA,KAAAA,EAAA,IAAA,KAAAA,EAAA,IAEA,KAAAA,EAAA,IAAA,KAAAA,EAAA,IAAA,KAAAA,EAAA,KAEAD,GAAA,EACA9sC,EAAA,qBAAA4E,KAAA,gBAAAzE,KAAA,WACAH,EAAAM,MAAA4C,SAAA,kBAEAlD,EAAA,qBAAA4E,KAAA,UAAAzE,KAAA,WACAH,EAAAM,MAAA4C,SAAA,cAMAlD,EAAAsrC,UAAAK,UACA,iBACA,SAAAhkC,EAAAwwB,GACA,GAAArwB,GAAAH,EACAolC,EAAAjlC,EAAAxG,MAAA,IAEA,OAAA,KAAAwG,IAGAglC,KAAA,EAEA5B,EAAA6B,EAAA,GAAAA,EAAA,GAAAA,EAAA,OAAA,GAEA,KAAAA,EAAA,IAAA,KAAAA,EAAA,IAAA,KAAAA,EAAA,IAEA/sC,EAAA,qBAAA4E,KAAA,gBAAAzE,KAAA,WACAH,EAAAM,MAAA4C,SAAA,kBAEAlD,EAAA,qBAAA4E,KAAA,UAAAzE,KAAA,WACAH,EAAAM,MAAA4C,SAAA,YAGA,IAEAlD,EAAA,qBAAA4E,KAAA,gBAAAzE,KAAA,WACAH,EAAAM,MAAA2C,YAAA,kBAEAjD,EAAA,qBAAA4E,KAAA,UAAAzE,KAAA,WACAH,EAAAM,MAAA2C,YAAA,YAEA,GAKAioC,EAAA6B,EAAA,GAAAA,EAAA,GAAAA,EAAA,OAAA,GAEA,KAAAA,EAAA,IAAA,KAAAA,EAAA,IAAA,KAAAA,EAAA,IAIA,KAAAA,EAAA,IAAA,KAAAA,EAAA,IAAA,KAAAA,EAAA,IAEA,KAAAA,EAAA,IAAA,KAAAA,EAAA,IAAA,KAAAA,EAAA,IAEA,KAAAA,EAAA,IAAA,KAAAA,EAAA,IAAA,KAAAA,EAAA,IAEA,KAAAA,EAAA,IAAA,KAAAA,EAAA,IAAA,KAAAA,EAAA,IAEA,KAAAA,EAAA,IAAA,KAAAA,EAAA,IAAA,KAAAA,EAAA,IAEA,KAAAA,EAAA,IAAA,KAAAA,EAAA,IAAA,KAAAA,EAAA,IAGA/sC,EAAA,qBAAA4E,KAAA,gBAAAzE,KAAA,WACAH,EAAAM,MAAA4C,SAAA,kBAEAlD,EAAA,qBAAA4E,KAAA,UAAAzE,KAAA,WACAH,EAAAM,MAAA4C,SAAA,YAEA,IAEA4pC,GAAA,EACA9sC,EAAA,qBAAA4E,KAAA,gBAAAzE,KAAA,WACAH,EAAAM,MAAA2C,YAAA,kBAEAjD,EAAA,qBAAA4E,KAAA,UAAAzE,KAAA,WACAH,EAAAM,MAAA2C,YAAA,YAEA,MAQAjD,EAAAsrC,UAAAK,UACA,aACA,SAAAhkC,EAAAwwB,GACA,GAAA0U,GAAAllC,EAAAlE,MACA,IAAA,IAAAopC,EACA,OAAA,KAMAG,qBAAA,SAAAC,GAEAA,EAAAroC,KAAA,uBAAAsoC,QAAA,SAAAh+B,OAMAi+B,cAAA,WACA,GAAAC,IAAA,CACAptC,GAAA,QAAAG,KAAA,WACA,GAAA8sC,GAAAjtC,EAAAM,KACA2sC,GAAAI,UACAC,OAAA,GACAC,cAAA,SAAA54B,GAEAs4B,EAAAroC,KAAA,uBAAAzE,KAAA,SAAA+O,GACAlP,EAAAM,MAAAoU,IAAA1U,EAAAM,MAAAoU,MAAA5F,UAEAm+B,EAAAroC,KAAA,wBAAAyT,KAAA,YAAA,GACA+0B,KAAA,IACAA,GAAA,EAEA,4BAAAH,EAAA1sC,KAAA,OACAoU,EAAA4mB,gBASAiS,SAAA,WAgGA,QAAAC,KACA,GAAAC,GAAA1tC,EAAA,qBACA2tC,EAAAD,EAAA9oC,KAAA,WACAgpC,EAAAF,EAAA9oC,KAAA,aACAipC,EAAAH,EAAA9oC,KAAA,YAEAkpC,EAAAH,EAAAj5B,MAAAiK,WACAovB,EAAAH,EAAAl5B,MAAAiK,WACAqvB,EAAAH,EAAAn5B,MAAAiK,YAEAmvB,GAAAC,GAAAC,IAGAhuC,EAAA,eAAA0U,IAAAs5B,EAAA,IAAAD,EAAA,IAAAD,GA3GA9tC,EAAA,SAAAG,KAAA,WACA,GAAA8tC,GAAAjuC,EAAAM,MAAAC,KAAA,wBACA0tC,IACAjuC,EAAAM,MAAA4tC,MAAA,OACAC,UAAA,EACAC,UAAAD,SAAAF,OAMAjuC,EAAA,2BAAAG,KAAA;AACA,GAAAkuC,GAAAruC,EAAAM,MAAAC,KAAA,yBACAP,GAAAM,MAAA4tC,MAAA,OACAI,aAAA,EACAF,UACAE,YAAAD,OAMAruC,EAAA,mCAAAG,KAAA,WACA,GAAAkuC,GAAAruC,EAAAM,MAAAC,KAAA,yBACAP,GAAAM,MAAA4tC,MAAA,OACAK,qBAAA,EACAH,UACAG,oBAAAF,OAMAruC,EAAA,uBAAAuB,GAAA,YAAA,SAAAmB,GACA,GAAAypB,GAAAzpB,EAAA+V,cAAAjH,KAAA06B,WAAA,EACA,IAAA,KAAA/f,EAAA,OAAA,IAIAnsB,EAAA,6BAAAG,KAAA,WACA,GACAquC,IADAxuC,EAAAM,MAAAC,KAAA,2BACAP,EAAAM,MAAAC,KAAA,0BACAP,GAAAM,MAAA4tC,MAAA,OACAO,YAAA,EACAL,UACAK,WAAAD,OAMAxuC,EAAA,+BAAAG,KAAA,WACA,GAAAuuC,GAAA1uC,EAAAM,MAAAC,KAAA,oCACAP,GAAAM,MAAA4tC,MAAA,OACAS,gBAAA,EACAP,UACAO,eAAAD,OAMA1uC,EAAA,+BAAAG,KAAA,WACA,GAAAyuC,GAAA5uC,EAAAM,MAAAC,KAAA,oCACAP,GAAAM,MAAA4tC,MAAA,OACAW,gBAAA,EACAT,UACAS,eAAAD,OAMA5uC,EAAA,iCAAAG,KAAA,WACA,GAAA8tC,GAAAjuC,EAAAM,MAAAC,KAAA,wBACAP,GAAAM,MAAA4tC,MAAA,OACAY,gBAAA,EACAV,UACAU,eAAAb,OAMAjuC,EAAA,eAAAG,KAAA,WACA,GAAA4uC,GAAA/uC,EAAAM,MAAAC,KAAA,sBACAP,GAAAM,MAAA4tC,MAAA,OACAc,gBAAA,EACAZ,UACAY,eAAAD,OAqBA/uC,EAAA,qBAAAyD,QACAgqC,IAGAztC,EAAA,4BAAAG,KAAA,WACAH,EAAAM,MAAAiB,GAAA,SAAA,WACA,GAAA6E,GAAApG,EAAAM,MAAAuC,QAAA,kBACA4qC,KAEAztC,EAAA,eAAAyB,QACAuC,WAAA,WACAhE,EAAA,eAAAosB,MACA,IAAA6iB,GAAA7oC,EAAAxB,KAAA,eACAqqC,GAAAxrC,OACAwrC,EAAAxtC,QAEA2E,EAAAxB,KAAA,WAEA,QAKA5E,EAAA,gCAAAG,KAAA,WACAH,EAAAM,MAAA4tC,MAAA,OACAgB,YAAA,OAKAxtC,KAAA,WACA1B,EAAA,QAAAyD,SACA2mC,EAAAC,aACAD,EAAA+C,gBACA/C,EAAAoD,cCpnBA3sC,IACAsuC,WAAAnvC,EAAA,eACAovC,YAAApvC,EAAA,gBACAqvC,kBAAArvC,EAAA,oCACAsvC,QAAA,EACAC,gBAAA,EAEA3uC,cAAA,SAAAR,GACA,GAAA6F,GAAAjG,EAAAI,EAAAwC,OAAAijB,EACA,IAAA5f,EAAApD,QAAA,yBAAAY,OAAA,CACA,GAAA+rC,GAAApvC,EAAAoR,KACAi+B,EAAAzvC,EAAA,uBACA,KAAAwvC,EACAC,EAAAvsC,SAAA,wBACA,IAAAssC,GAAA,IAAAA,GACAC,EAAAxsC,YAAA,0BAQAs8B,WAAA,WACA,GAAAmQ,GAAA1vC,EAAA,wBACA0vC,GAAAjsC,OAAA,GACAisC,EAAAvvC,KAAA,WACA,GAAAwvC,GAAA3vC,EAAAM,MACAuC,QAAA,eACA+B,KAAA,UACArE,KAAA,KACAC,SAAAmvC,GAAAC,aAIA,IAAAC,GAAA7vC,EAAA,gBACA4E,KAAA,SACArE,KAAA,KAIAsvC,KACA1Q,QAAA0Q,GAAAzO,QACAjC,QAAA0Q,GAAAC,YAAA,KAIAC,cAAA,SAAAC,EAAA5sC,EAAAiB,GACArE,EAAA,iBAAAkb,KACA,kBACA9X,EACA,aACAiB,EACA,wCACA2rC,EACA,yGAIA1Q,UAAA,SAAA2Q,EAAAC,GACA,IAAArvC,GAAAyuC,OAAA,CACAzuC,GAAA0+B,YACA,IAAA4Q,GAAAF,EAAA1vC,KAAA,oBASA,IAPAP,EAAA,iBACAiD,YAAA,gBACA+T,OAAA,QACAi5B,EAAA/sC,SAAA,gBAAA2D,QAAA,OAAA,WACAhG,GAAA0uC,gBAAA,IAGA,eAAAY,EAAA,CACA,GAAAC,GAAAH,EACAptC,QAAA,eACA+B,KAAA,qBACAirC,EAAAO,EAAAxrC,KAAA,SAAArE,KAAA,KACA,IAAAwE,QAAA8qC,EACA,MAIA,IADA1Q,QAAA0Q,GAAAQ,OACAtrC,QAAA8qC,EACA,MAGA,IAAAI,EAAAptC,QAAA,yBAAAY,OAAA,CACA,GAAAgsC,GAAAzvC,EAAA,uBACAiwC,GACAptC,QAAA,eACA+B,KAAA,SACArD,GAAA,cAAA,WACAkuC,EAAAxsC,YAAA,0BAGAgtC,EACAptC,QAAA,eACA+B,KAAA,SACArD,GAAA,OAAA,WACAkuC,EAAAvsC,SAAA,+BAGA,CAAA,GAAA,YAAAitC,EAWA,MAVAF,GACAptC,QAAA,eACA+B,KAAA,kBACA1B,SAAA,SACA,IAAA2sC,GAAAI,EAAA1vC,KAAA,qBAEA+vC,UAAA,GACA9vC,QAAAqvC,GAAAvQ,YAMA,YADAz+B,GAAAyuC,QAAA,KAMAiB,sBAAA,WACAxgC,QAAA/P,EAAA,gBACAwwC,mBAAAxwC,EAAA,wBACAywC,UAAAzwC,EAAA,yBACA+P,QAAAtM,QAAA+sC,mBAAA/sC,QAAAgtC,UAAAhtC,SAEAitC,SAAAF,mBAAArsC,SAAAC,IAAA,EAAA2L,QAAA1L,SAAA,EAAA,EACAosC,UAAAlwC,KAAA,QAAA,QAAAowC,OAAAD,UAAA,mBAIAjuC,eAAA,WACA5B,GAAAuuC,YAAA7tC,GAAA,YAAA,WACAV,GAAAyuC,QAAA,IAEAzuC,GAAAuuC,YAAA7tC,GAAA,UAAA,SAAAmB,GACA1C,EAAAmD,QAAAC,OAEAs6B,GAAAW,YAAAjH,MAAA,cAEAv2B,GAAA0uC,iBAIA1uC,GAAA0uC,gBAAA,EACA1uC,GAAAy+B,UAAAt/B,EAAA0C,EAAAE,QAAAC,QAAA,iBAEA6D,SAAA1G,EAAA0C,EAAAE,QAAAC,QAAA,uBAAAY,SAEAi6B,EAAAW,YAAAjH,MAAA,cACAv2B,GAAA0vC,6BAKAK,cAAA,WACA,IAAAlqC,QAAA,CACA,GAAAmqC,GAAA7wC,EAAA,mCAAA4E,KAAA,eACA/D,IAAAy+B,UAAAuR,GAAA,KAIAnvC,KAAA,WACAb,GAAAsuC,WAAA1rC,OAAA,GACA5C,GAAA4B,iBAEAiE,SACA7F,GAAA0vC,wBAGAvwC,EAAA,mCAAAyD,QACA5C,GAAA+vC,iBAKAztC,QAAAtC,OAAAA,GAEAb,EAAA,kBAAAyD,QACA07B,QAAA,eAAAj/B,MAAA,WACA,GAAA4wC,GAAAxwC,KACAywC,GAAA,CACA/wC,GAAA,kBAAAgxC,QAAA,6CAEAhxC,EAAA,0BAAAuB,GAAA,QAAA,WACAwvC,EAAAD,EAAAG,oBAAAH,EAAAI,iBACAH,GAAAA,KC1LA,IAAAI,KAEA5qC,UAAAvG,EAAA,aACAqZ,SAAArZ,EAAA,kBACAoxC,QAAApxC,EAAA,uBAEAqxC,YAAArxC,EAAA,kBAEAsxC,iBAAA,WACAH,GAAAE,YAAAlxC,KAAA,WACA,GAAA8F,GAAAjG,EAAAM,MACAiZ,EAAAtT,EAAArB,KAAAusC,GAAAC,SACAG,EAAAh4B,EAAA9V,OAAA,EACA+tC,EAAA,IAEAC,EAAAxrC,EAAApD,QAAA,mBAAAO,QACAsuC,EAAAH,EAAAC,CAEAE,GAAAD,EACAxrC,EAAAZ,SAAA,qBACA8rC,GAAAzT,OAAAz3B,IAGAA,EAAAZ,SAAA,qBACAY,EAAAyT,SAAA,WAEAzT,EAAA/C,SAAA,eAAAD,YAAA,WACAgD,EAAAZ,SAAA,UACAY,EAAA/C,SAAA,eAMAW,IAAA,WACAstC,GAAA5qC,UAAApF,MAAA,WACA,GAAA8E,GAAAjG,EAAAM,KAEA,KAAA2F,EAAAZ,SAAA,WAAA,CAGA,GAAA8/B,GAAAl/B,EAAA1F,KAAA,oBAEA4wC,IAAA5qC,UAAAtD,YAAA,WACAkuC,GAAA93B,SAAApW,YAAA,WAEAjD,EAAAM,MAAA4C,SAAA,WACAlD,EAAA,sBAAAmlC,EAAA,MAAAjiC,SAAA,WAEAlD,EAAA,sBAAAmlC,EAAA,MAAA9/B,SAAA,qBACArB,WAAA,WACAhE,EAAA,sBAAAmlC,EAAA,MAAAzrB,SAAA,WACA,QAMAgkB,OAAA,SAAArkB,GACA,GAAApT,GAAAoT,CAEApT,GAAAyT,UACAi4B,YAAA,EACAC,YAAA,EACAj4B,YAAA,EACAE,iBAAA,EACAg4B,UAAA,EACAC,cAAA,GACAh4B,YAAA3W,OAAA0S,MAEA5P,EAAAhD,YAAA,WACAgD,EAAAZ,SAAA,UACAY,EAAA/C,SAAA,WAEA+C,EAAAZ,SAAA,gBACAY,EAAAhD,YAAA,gBAIAvB,KAAA,WACAyvC,GAAA5qC,UAAA9C,SACA0tC,GAAAG,mBACAH,GAAAttC,SClFAuI,IACAhG,QAAApG,EAAA,gBACA+xC,MAAA/xC,EAAA,kBACAgyC,KAAAhyC,EAAA,iBACAy0B,SAAAz0B,EAAA,qBAEAiyC,aAAA,WACA7lC,GAAA2lC,MAAA5wC,MAAA,WACAqL,aAAAC,UACAL,GAAAhG,QAAAd,YAAA,gBACA8G,GAAA4lC,KAAAhtC,aAAAC,OAAAC,kBAKAgtC,aAAA,WACA9lC,GAAA4lC,KAAA7wC,MAAA,YACAuF,UAAAA,SAAA8F,YAAAC,WACAL,GAAAhG,QAAAd,YAAA,gBACA8G,GAAAqoB,SAAAzvB,aAAAC,OAAAC,cACAlF,EAAA,iDAAAoC,UACAiK,EAAA/F,UAAArD,YAAA,cAKAkvC,cAAA,WACA/lC,GAAAhG,QAAAnD,YAAA,gBACAmJ,GAAA4lC,KAAAxwC,WAAA,SACA4K,GAAAqoB,SAAAjzB,WAAA,UAGA4wC,cAAA,WACAhmC,GAAA4lC,KAAAzlC,WAAA,YACA7F,SAAA8F,aAAAC,UACAL,GAAAhG,QAAAnD,YAAA,gBACAmJ,GAAA4lC,KAAA5vC,cAKAiwC,cAAA,WACAryC,EAAAC,UAAAkB,MAAA,SAAAf,IACAsG,SAAA8F,aAAAC,UACAzM,EAAAI,EAAAwC,QAAAC,QAAAuJ,GAAAhG,SAAA3C,SACA2I,GAAAhG,QAAAnD,YAAA,gBACAmJ,GAAA4lC,KAAA5vC,eAMAV,KAAA,WACA0K,GAAA6lC,eACA7lC,GAAA8lC,eACA9lC,GAAAgmC,gBACAhmC,GAAAimC,kBCxDAC,IAEAhsC,UAAAtG,EAAA,+CACAuyC,aAAA,KACAC,aAAA,OACAC,cAAA,KAEAC,WAAA1yC,EAAA,6BAEA2yC,cAAA,WACA,GAAAr/B,GAAAg/B,GAAAI,UAEAp/B,GAAAnT,KAAA,WACA,GAAA8F,GAAAjG,EAAAM,MACAsyC,EAAA3sC,EAAArB,KAAA,kBAAAnB,OACAovC,EAAA5sC,EAAA1F,KAAA,0BAEAqyC,IAAAC,IACAA,EAAA,GACA5sC,EAAA/C,SAAA,2BACA+C,EAAApD,QAAA,8BAAAK,SAAA,0BAEA+C,EAAA/C,SAAA,0BACA+C,EAAApD,QAAA,8BAAAK,SAAA,2BAKAovC,GAAAQ,eAGAC,WAAA,SAAAC,GACAA,EAAAnwC,QAAA,8BAAAK,SAAA,gBAEA8vC,EAAA3tC,SAAA,+BACAitC,GAAAE,aAAA,SAEAhmC,aAAAnJ,aACAivC,GAAAG,cAAA,GAGA,IAAAQ,IAAA,EACAC,EAAA,GACA,UAAAF,EAAAzyC,KAAA,4BACA0yC,EAAA,IACAC,EAAA,IAGAZ,GAAAC,cACA54B,YAAA,EACAg4B,WAAAW,GAAAG,cACA54B,iBAAA,EACAg4B,UAAA,EACAsB,UAAAb,GAAAE,aACA54B,cAAA,EACAw5B,UAAA,EACAH,SAAAA,EACAC,SAAA,IACApB,cAAA,GACAuB,aACAv5B,YAAA3W,OAAA0S,MAKAi9B,YAAA,WACAR,GAAAhsC,UAAAnG,KAAA,WACA,GAAA8F,GAAAjG,EAAAM,KACAgyC,IAAAS,WAAA9sC,GACAA,EAAAyT,SAAA44B,GAAAC,aAEA,IAAAzlC,GAAA7G,EAAArB,KAAA,gBACAkI,GAAArJ,QACAqJ,EAAA3M,KAAA,WACA0M,EAAAK,cAAAlN,EAAAM,YAMAoB,KAAA,WACA4wC,GAAAK,kBC/EAtxB,IAEArW,UAAAhL,EAAA,mBACAqG,QAAArG,EAAA,iBACAw4B,SAAAx4B,EAAA,eACA8W,QAAA9W,EAAA,eAGAszC,aAEAjtC,QAAA,WACArG,EAAA,mBAAAuB,GAAA,YAAA,SAAAmB,GACA1C,EAAAM,MAAAsE,KAAA,iBAAAT,QACAovC,KAAA7wC,EAAA8wC,MAAA,GACApvC,IAAA1B,EAAA+wC,MAAA,QAMAC,UAAA,SAAAC,EAAAzmB,GAGAymB,EAAAA,EAAA/uC,KAAA,sBACA,IAUAgvC,GAVAC,EAAAF,EAAA/uC,KAAA,aAGAkvC,EAAAH,EAAAvwC,QACA2wC,EAAAJ,EAAAtvC,SAEA2vC,EAAAH,EAAAzwC,QACAgN,EAAAyjC,EAAAxvC,QAKAuvC,GADAE,GAAAC,EACAA,EAAA3jC,EAEA0jC,EAAAE,CAIAJ,GAAA,IACAD,EAAA/uC,KAAA,eAAA1B,SAAA,QAEA2wC,EAAAI,SACAC,QAAA,SACAC,SAAAP,EACAQ,SAAAR,EACAS,YAAA,IACAJ,QAAA,OAAAL,GAAAU,QAAA,MAGAX,EAAA/uC,KAAA,eAAA3B,YAAA,QAEA4wC,EAAAI,SACAC,QAAA,SACAC,SAAAP,EACAQ,SAAA,EACAG,UAAA,GACAC,OAAA,IACAP,QAAA,OAAAL,GAAAU,QAAA,KAGApnB,GACA2mB,EAAAvoC,IAAA,UAAA,SAAA/I,OAAAyU,QAGA,IAAAy9B,GAAAZ,EAAAI,SACAQ,GAAAlzC,GAAA,mBAAA,SAAAmB,GACAA,EAAAkB,gBACA,IAAA8wC,GAAAhyC,EAAAgyC,OAAAhyC,EAAA+V,cAAAk8B,WACAC,EAAAF,EAAAA,EAAA,EAAAhyC,EAAA+V,cAAAo8B,OAAA,CACAJ,GAAAR,QAAA,OAAAW,GACAL,UAAA,GACAO,MAAApyC,QAOAqyC,YAAA,WAEA/0C,EAAA,mBAAA2G,MAEA,WACA,GAAAV,GAAAjG,EAAAM,KACA,KAAA2F,EAAAZ,SAAA,gBAAA,CACAY,EAAA/C,SAAA,wBAEAme,GAAAiyB,YAAAjtC,SAGA,IAAAwxB,GAAA5xB,EAAArB,KAAA,oBACAowC,EAAA/uC,EAAArB,KAAA,qBACAqwC,cAAAhvC,EAAArB,KAAA,yBACAswC,cAAAjvC,EAAArB,KAAA,0BACAuwC,aAAAlvC,EAAArB,KAAA,cACA,IAAAwwC,EAEAA,GADAnvC,EAAApD,QAAA,2BAAAY,OACAo0B,EAAApiB,IAAAu/B,GAAAv/B,IAAAw/B,cAAAx/B,IAAAy/B,eAAAz/B,IAAA0/B,cAAA1/B,IAAA,gCAAAA,IAAA,kCAAAA,IAAAxP,GAEA4xB,EAAApiB,IAAAu/B,GAAAv/B,IAAAw/B,cAAAx/B,IAAAy/B,eAAAz/B,IAAA0/B,aAEA,IAAA7F,IAAA,CAOArpC,GAAA1E,GAAA,YAAA,WACA+tC,GAAA,IAIArpC,EAAA1E,GAAA,UAAA,SAAAmB,GAIA,GAFAA,EAAAkB,kBAEA0rC,EAAA,CAOA,IAAAtvC,EAAA0C,EAAAE,QAAAuC,GAAAiwC,KAAAp1C,EAAA0C,EAAAE,QAAAuC,GAAA,wBAAAnF,EAAA0C,EAAAE,QAAAuC,GAAA,iBAAA,CACAosB,EAAAvxB,EAAA,aAAAkE,YAEAmd,GAAAg0B,cAAApvC,EAGA,IAAAqvC,GAAArvC,EAAArB,KAAA,YACAyc,IAAAk0B,SAAAD,GAOArvC,EAAArB,KAAA,gBAAAnB,QACAwC,EAAArB,KAAA,aAAA0G,IAAA,UAAA,SACA5E,SACA1C,WAAA,WACAqd,GAAAiyB,YAAAI,UAAAztC,EAAArB,KAAA,iBACA,MAGA0wC,EAAA7d,KAAA,WACAxxB,EAAArB,KAAA,eAAA1B,SAAA,eACA+C,EAAArB,KAAA,aAAA0G,IAAA,UAAA,SAAA/I,OAAAyU,SACAtQ,SACA1C,WAAA,WACAqd,GAAAiyB,YAAAI,UAAAztC,EAAArB,KAAA,iBACA,OAKA0qC,GAAA,KAIArpC,EAAArB,KAAAwwC,GAAAzuC,MAEA,WACA3G,EAAAM,MAAAuC,QAAA,mBAAAK,SAAA,gCAGA,WACAlD,EAAAM,MAAAuC,QAAA,mBAAAI,YAAA,mCAMA,WACAjD,EAAAM,MAAA+E,SAAA,iBACArF,EAAAM,MAAA2C,YAAA,0BAKAjD,EAAA,mBAAA4E,KAAA,eAAAzD,MAAA,SAAAuB,GACAA,EAAAkB,iBACAyd,GAAAm0B,mBAKA//B,IAAA,SAAAxM,GAGAoY,GAAArW,UAAAqW,GAAArW,UAAAyK,IAAAxM,GACAoY,GAAAhb,QAAAgb,GAAAhb,QAAAoP,IAAAxM,EAAArE,KAAA,kBACAyc,GAAAmX,SAAAnX,GAAAmX,SAAA/iB,IAAAxM,EAAArE,KAAA,gBACAyc,GAAAvK,QAAAuK,GAAAvK,QAAArB,IAAAxM,EAAArE,KAAA,iBAIA6wC,UAAA,WAIA,GAAAp8B,GAAArZ,EAAA,mBAEA63B,EAAAxe,EAAAzU,KAAA,oBACAowC,EAAA37B,EAAAzU,KAAA,qBACAqwC,cAAA57B,EAAAzU,KAAA,yBACAswC,cAAA77B,EAAAzU,KAAA,0BACAuwC,aAAA97B,EAAAzU,KAAA,cACA,IAAAwwC,GAAAvd,EAAApiB,IAAAu/B,GAAAv/B,IAAAw/B,cAAAx/B,IAAAy/B,eAAAz/B,IAAA0/B,cAGA7F,GAAA,CACAj2B,GAAA9X,GAAA,YAAA,SAAAmB,GACA4sC,GAAA,IAEAj2B,EAAA9X,GAAA,YAAA,SAAAmB,GACA4sC,GAAA,IAGAj2B,EAAA9X,GAAA,UAAA,SAAAmB,GAEA,GADAA,EAAAkB,kBACA0rC,EAAA,CAEA,GAAArpC,GAAAjG,EAAAM,MACAg1C,EAAArvC,EAAArB,KAAA,YAEA5E,GAAA0C,EAAAE,QAAAuC,GAAAiwC,IAAAp1C,EAAA0C,EAAAE,QAAAuC,GAAA,uBAAAnF,EAAA0C,EAAAE,QAAAuC,GAAA,mBACAosB,EAAAvxB,EAAA,QAAAkE,YAEAmd,GAAAg0B,cAAApvC,GAGAA,EAAArB,KAAA,gBAAAnB,OACAiD,SACA2a,GAAAq0B,aAAAzvC,EAAArB,KAAA,kBAIAyc,GAAAk0B,SAAAD,GAOAA,EAAA7d,KAAA,WACAxxB,EAAArB,KAAA,eAAA1B,SAAA,eACAwD,SACA1C,WAAA,WACAqd,GAAAiyB,YAAAI,UAAAztC,EAAArB,KAAA,iBACA,SAKA0qC,GAAA,KAKAj2B,EAAAzU,KAAA,eAAAzD,MAAA,SAAAuB,GACAA,EAAAkB,iBACAyd,GAAAm0B,mBAKA5a,QAAA,WAGA56B,EAAA,eAAAiwB,IAAA,2DACAjwB,EAAA,mBAAAiwB,IAAA,4DAKAolB,cAAA,SAAAM,GACAA,EAAA/wC,KAAA,eAAA1B,SAAA,YAEA,IAAA0yC,GAAAD,EAAA9yC,QAAA,iBACA6D,SAAAkvC,EAAAnyC,QAEAmyC,EAAA1yC,SAAA,oBAEAlD,EAAA,cAAA6C,QAAA,wBAAAY,QACAzD,EAAA,wBAAA4E,KAAA,gBAAA1B,SAAA,qBAKAsyC,cAAA,WACA,GAAAI,GAAA51C,EAAA,cAAA6C,QAAA,iBACA6D,SAAAkvC,EAAAnyC,QACAmyC,EAAA3yC,YAAA,oBAGAjD,EAAA,cAAA6C,QAAA,wBAAAY,QACAzD,EAAA,wBAAA4E,KAAA,gBAAA3B,YAAA,oBAEAjD,EAAA,uBAAA6C,QAAA,eAAAI,YAAA,eACAjD,EAAA,cAAAiD,YAAA,aACAjD,EAAA,uBAAAwB,WAAA,UAQA+zC,SAAA,SAAAl8B,GACA,GAAAw8B,GAAAx8B,EAAA9Y,KAAA,gBACA8Y,GAAA9Y,KAAA,MAAAs1C,IAIAH,aAAA,SAAAr8B,GAEA,GAAApT,GAAAoT,EACAi8B,EAAArvC,EAAArB,KAAA,YACA0wC,GAAArB,QAAA,aACAqB,EAAArB,QAAA,YACAqB,EAAArB,QAAA,mBACAqB,EAAArB,QAAA,WACAjwC,WAAA,WAEAqd,GAAAiyB,YAAAI,UAAAztC,EAAApD,QAAA,iBACA,MAIAnB,KAAA,WAGA1B,EAAA,mBAAAyD,SACAiD,QAiBA2a,GAAAo0B,aAfAp0B,GAAA0zB,cAEA/0C,EAAAC,UAAAsB,GAAA,QAAA,SAAAmB,GACAA,EAAAA,GAAAS,OAAA/C,MACAJ,EAAA,cAAAyD,QACAf,EAAA0tB,2BAEA,IAAA1tB,EAAAypB,SACA9K,GAAAm0B,mBAUAn0B,GAAAm0B,kBCtWAx1C,GAAA,WAEAmD,OAAAqJ,YAAArJ,OAAAwL,WACAxL,OAAA2yC,aAAA3yC,OAAAyL,YAEAzL,OAAAoU,SAAA9L,UAAAD,UAAAiR,cAAA9T,QAAA,UACAxF,OAAAqU,OAAA/L,UAAAD,UAAAiR,cAAA9T,QAAA,QACAxF,OAAAsU,OAAAhM,UAAAD,UAAAiR,cAAA9T,QAAA,QACAxF,OAAA4yC,UAAA,WAAA,MAAA,WAAArtB,KAAAjd,UAAAD,YACArI,OAAA6yC,kBAAA,SAAAC,GACAA,GAAAA,GAAAxqC,UAAAD,WAAAiR,aACA,IAAA7Q,GAAAqqC,EAAArqC,MAAA,sBACA,SAAAA,GAAAA,EAAA,IAGAzI,OAAAmtC,OAAA,GACAntC,OAAAoU,SAAA,GAAApU,OAAAqU,OAAA,GAAArU,OAAAsU,OAAA,KACAtU,OAAAmtC,OAAA,EACAtwC,EAAA,QAAAkD,SAAA,QAGAC,OAAA8N,OAAA,IACA9N,OAAAE,WAAA,IACAF,OAAAsJ,QAAA,KAEAtJ,OAAAuD,SAAA,GACA,gBAAAzG,UAAAi2C,iBAAAC,UAAAC,eACAjzC,OAAAuD,SAAA,IAGAA,SAAAyvC,UAAAC,cACAp2C,EAAA,QAAAkD,SAAA,SAIAlD,EAAAwkC,QAAA6R,MAAAr2C,EAAAwkC,QAAA8R,SAAA,IACAt2C,EAAA,QAAAkD,SAAA,WAGAlD,EAAAwkC,QAAA/3B,QACAzM,EAAA,QAAAkD,SAAA,WACAlD,EAAAwkC,QAAA+R,QACAv2C,EAAA,QAAAkD,SAAA,UAEAC,OAAA4yC,aACA/1C,EAAA,QAAAkD,SAAA,WAEA,GAAAmY,SAAA26B,oBAAA,KACAh2C,EAAA,QAAAkD,SAAA,YAGAC,OAAA0S,KAAA,EACA7V,EAAA,oBAAAyD,SACAN,OAAA0S,KAAA,GASA9U,EAAAW,OAGAmC,EAAAnC,QAGAgF,SAAA8F,aAAAC,SACAzC,EAAAtI,OAIAmK,EAAAnK,OAGAojC,EAAApjC,OAGAsuB,EAAAtuB,OAGAg8B,EAAAh8B,OAGAiT,EAAAjT,OAGAsN,EAAAtN,OAGAmL,EAAAnL,OAGAsB,EAAAtB,OAGAwzB,EAAAxzB,OACAyrB,EAAAzrB,OAGAoR,EAAApR,OAGAyB,OAAAqzC,MAAA,GAAA3zB,GAGA1c,EAAAzE,OAGAiE,EAAAjE,OAGA4C,EAAA5C,OAGAqJ,EAAArJ,OAGAC,EAAAD,OAGA6D,EAAA7D,OAGAqlC,EAAArlC,OAGA2Q,EAAA3Q,OAGAi2B,EAAAj2B,OAGA6H,EAAA7H,OAGA8e,EAAA9e,OAGAsH,EAAAtH,OAGA2jC,EAAA3jC,OAGAizB,EAAAjzB,OAGA4F,EAAA5F,OAGAumC,EAAAvmC,OAGA0oC,EAAA1oC,OAGAgkC,EAAAhkC,OAGA2f,GAAA3f,OAGAqnC,EAAArnC,OAGA0K,GAAA1K,OAGAb,GAAAa,OAGAsY,EAAAtY,OAGAktB,EAAAltB,OAGA4wC,GAAA5wC,OAMAyvC,GAAAzvC,OAGA0X,EAAA1X,OAGAujC,EAAAvjC,OAGA2K,EAAA3K,OAGAygB,EAAAzgB,OAGAqY,EAAArY,OAGA4a,EAAA5a,OAGA+Z,EAAA/Z,OAGAoE,EAAApE,OAGAq5B,EAAAr5B,OAEAwkC,EAAAxkC,SCtNA,SAAA1B,EAAAy2C,GACA,GAAAC,GAAA,SAAAzT,EAAA0T,EAAAC,GACA,GAAAC,EACA,OAAA,YAGA,QAAAC,KACAF,GACA3T,EAAAI,MAAA0T,EAAA5T,GAEA0T,EAAA,KANA,GAAAE,GAAAz2C,KACA6iC,EAAAtW,SAOAgqB,GACAjsC,aAAAisC,GACAD,GACA3T,EAAAI,MAAA0T,EAAA5T,GAEA0T,EAAA7yC,WAAA8yC,EAAAH,GAAA,MAGA71C,QAAAk2C,GAAAP,GAAA,SAAAO,GACA,MAAAA,GAAA12C,KAAA22C,KAAA,SAAAP,EAAAM,IAAA12C,KAAAyB,QAAA00C,KAEA31C,OAAA,eAGAd,EAAAmD,QAAA+zC,YAAA,WAEA/zC,OAAAg0C,eAAAh0C,OAAAwL,WACAxL,OAAAi0C,gBAAAj0C,OAAAyL,WAKA,IAAAyoC,GAAAljB,KAAAmjB,IAAAH,eAAA3qC,YAIAA,cAAAC,SAAA0qC,eAAA1qC,UAAA/F,UAEAg3B,EAAA0D,QAEAv9B,EAAAC,UAAAkvB,qBACAnvB,EAAAC,UAAA8uB,kBACA/uB,EAAAC,UAAAuvB,qBAGA7mB,YAAAC,SAAA0qC,gBAAA1qC,UAAA/F,UAEA7C,EAAAC,UAAA+vB,aACAhwB,EAAAC,UAAAC,iBACAF,EAAAC,UAAAivB,sBAGA2K,EAAAwE,cAGAvtB,EAAA6B,mBAGA9P,UAAAA,SAAA8F,YAAAC,UAAAzM,EAAA,uBAAAyD,OAAA,GAEAI,EAAAC,UAAAyzC,UAAAH,kBAGApoC,EAAAC,UAAAS,QAAAjM,OAAA,GAAAuL,EAAAkC,SAAAxB,QAAAjM,OAAA,GAAAuL,EAAAqC,cAAA7B,KAAA/L,OAAA,KAEA+I,YAAAyE,QAAAkmC,gBAAAlmC,SACAjC,EAAAC,UAAA2B,YACA5B,EAAAkC,SAAAN,YACA5B,EAAAqC,cAAAT,aAEAumC,gBAAAlmC,SACAjC,EAAAC,UAAA4B,cACA7B,EAAAkC,SAAAL,cACA7B,EAAAqC,cAAAR,eAEArE,aAAAyE,QAAAkmC,eAAAlmC,SACAjC,EAAAC,UAAA6B,eACA9B,EAAAkC,SAAAJ,eACA9B,EAAAqC,cAAAP,iBAIA9B,EAAAC,UAAAU,YAAAlM,OAAA,GACAuL,EAAAC,UAAA+B,kBAGAhR,EAAA,aAAAyD,OAAA,GACAuL,EAAAtB,cAGA1N,EAAA,iBAAAG,KAAA,WACA0M,EAAAK,cAAAlN,EAAAM,OAAA,KAEAuM,EAAAE,gBAAAtJ,QACAoJ,EAAAE,gBAAA5M,KAAA,WACA0M,EAAAc,mBAAA3N,EAAAM,OAAA,KAIAkM,YAAAnJ,YAAA8zC,gBAAA9zC,YAEAL,EAAA4Q,gBAgBAlN,UAGA2wC,EAAA,KAAAr3C,EAAA,cAAAyD,QAEA4d,GAAAq0B,aAAA11C,EAAA,eAGAa,GAAA0vC,0BAGA/jC,YAAAC,SAAA0qC,gBAAA1qC,SAAAD,aAAAC,SAAA0qC,eAAA1qC,UACAzI,WAAA,WACAoI,GAAA+lC,iBACA,KAKAnyC,EAAA,qBAAAyD,QACAN,OAAAyoB,YAGAulB,GAAAE,YAAA5tC,QACA0tC,GAAAG,mBAGA5qC,SAAA1G,EAAA,2BAAAyD,SACAi6B,EAAAW,YAAAjH,MAAA,cACAsG,EAAAiD,iBAGAx9B,OAAAqJ,YAAArJ,OAAAwL,WACAxL,OAAA2yC,aAAA3yC,OAAAyL,cC3JA5O,EAAAmD,QAAAs9B,OAAA,SAAArgC,GACAo3C,WAAA,IAGAx3C,EAAA,0BAAAyD,SAAAzD,EAAA,oCAAAyD,QACAzD,EAAAmD,QAAAs9B,OAAA,SAAArgC,GACAJ,EAAAC,UAAAiE,YAAA,Q3DNAlE,EAAA,eAAAyD,OAAA,EAAA,CAEA,GAAAzD,EAAA,iCAAAyD,OAAA,EAAA,CACA,GAAAg0C,KAAAx3C,SAAA4gB,cAAA,SACA42B,KAAA32B,IAAA,oCACA,IAAA42B,gBAAAz3C,SAAA03C,qBAAA,UAAA,EACAD,gBAAAE,WAAAx8B,aAAAq8B,IAAAC,gBAGA,GAAAl3C,WAEAR,GAAA,gBAAAG,KAAA,WACA,GAAA8F,GAAAjG,EAAAM,MACAuvC,EAAA5pC,EAAA1F,KAAA,sBACA4vC,EAAAlqC,EAAA1F,KAAA,qBACAs3C,EAAA5xC,EAAApD,QAAA,eAAA+B,KAAA,eAEA,IAAA,YAAAurC,EAAA,CACA,GAAA2H,GAAA93C,EAAA,eAAA6vC,EAAA,uFAAAA,EAAA,oFACAgI,GAAAr4B,OAAAs4B","file":"app.js","sourcesContent":["if ($('.full-video').length > 0) {\r\n\r\n\tif ($('[data-video-client=\"youtube\"]').length > 0) {\r\n\t\tvar tag = document.createElement('script');\r\n\t\ttag.src = \"https://www.youtube.com/iframe_api\";\r\n\t\tvar firstScriptTag = document.getElementsByTagName('script')[0];\r\n\t\tfirstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\r\n\t}\r\n\r\n\tvar players = {};\r\n\r\n\t$('.video-cover').each(function() {\r\n\t\tvar _this = $(this);\r\n\t\tvar videoId = _this.attr('data-video-trigger');\r\n\t\tvar videoClient = _this.attr('data-video-client');\r\n\t\tvar videoContainer = _this.closest('.full-video').find('.video-embed');\r\n\r\n\t\tif (videoClient === 'youtube') {\r\n\t\t\tvar videoObject = $('');\r\n\t\t\tvideoContainer.append(videoObject);\r\n\t\t}\r\n\t});\r\n\r\n\tfunction onYouTubePlayerAPIReady() {\r\n\t\t$(document).ready(function() {\r\n\t\t\t$('.youtube-video').each(function(event) {\r\n\t\t\t\tvar iframeID = $(this).attr('id');\r\n\t\t\t\tplayers[iframeID] = new YT.Player(iframeID, {\r\n\t\t\t\t\tevents: {\r\n\t\t\t\t\t\t'onStateChange': videos.onStateChange\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t});\r\n\t};\r\n}","// define jQuery\r\njQuery(function($){\r\n","var accessibility = {\r\n\r\n\telms: {\r\n\t\tskip: $('.skip')\r\n\t},\r\n\r\n\t// Skip navigation functionality for tab navigation\r\n\tskipNav: function() {\r\n\t\taccessibility.elms.skip.click(function(){\r\n\t\t\tvar skipTo='#'+this.href.split('#')[1];\r\n\t\t\t$(skipTo).attr('tabindex', -1).on('blur focusout', function () {\r\n\t\t\t\t$(this).removeAttr('tabindex');\r\n\t\t\t}).focus();\r\n\t\t});\r\n\t},\r\n\r\n\tinit: function() {\r\n\t\taccessibility.skipNav();\r\n\t}\r\n};","var accordionTabs = {\r\n\r\n\telms: {\r\n\t\taccordionTabs: $('.accordion-tabs'),\r\n\t\taccordionTabWrap: $('.accordion-tab-wrap'),\r\n\t\ttabTrigger: $('.tab-trigger'),\r\n\t\taccordionTrigger: $('.accordion-tab-trigger'),\r\n\t\ttrigger: $('[data-trigger]'),\r\n\t\taccordionTabContent: $('.accordion-tab-content')\r\n\t},\r\n\r\n\ttoggleAccordionContent: function( $accordionTabContent ) {\r\n\t\t// Slide up all the accordionTabContents within only the accordionTabWraps that are not active\r\n\t\taccordionTabs.elms.accordionTabContent.not('.active').slideUp(400);\r\n\r\n\t\t// Slide down the triggered content\r\n\t\t$accordionTabContent.slideDown(400);\r\n\t},\r\n\r\n\ttoggleTabContent: function( $accordionTabContent ) {\r\n\t\taccordionTabs.elms.accordionTabContent.hide();\r\n\t\t$accordionTabContent.show();\r\n\t},\r\n\r\n\teventListeners: function() {\r\n\t\t// Desktop\r\n\t\taccordionTabs.elms.trigger.on('click', function( e ) {\r\n\t\t\t// Find the correct accordionTabContent dependent on the trigger clicked\r\n\t\t\tvar $trigger = $(e.target).closest('[data-trigger]');\r\n\t\t\tvar triggerText = $trigger.attr('data-trigger');\r\n\t\t\tvar $triggers = accordionTabs.elms.trigger.filter('[data-trigger=' + triggerText + ']');\r\n\t\t\tvar $accordionTabContent = accordionTabs.elms.accordionTabContent.filter('[data-tab=\"' + triggerText + '\"]');\r\n\r\n\t\t\t// Change the active classes\r\n\t\t\taccordionTabs.elms.trigger.removeClass('active');\r\n\t\t\t$triggers.addClass('active');\r\n\r\n\t\t\taccordionTabs.elms.accordionTabContent.removeClass('active');\r\n\t\t\t$accordionTabContent.addClass('active');\r\n\r\n\t\t\t// If tablet/mobile, call the appropriate and pass in the above element\r\n\t\t\tif ( $(window).width() < tabletWide ) {\r\n\t\t\t\taccordionTabs.toggleAccordionContent( $accordionTabContent );\r\n\t\t\t} else {\r\n\t\t\t\taccordionTabs.toggleTabContent( $accordionTabContent );\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(window.location.hash) {\r\n\t\t\tvar $content = $(window.location.hash);\r\n\t\t\tif($content.length > 0) {\r\n\t\t\t\t$content.parent().children('[data-trigger]').trigger('click');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t$( window ).on( 'hashchange', function( e ) {\r\n\t\t\te.preventDefault();\r\n\r\n\t\t\tvar $content = $(window.location.hash);\r\n\t\t\tif($content.length > 0) {\r\n\t\t\t\t$content.parent().children('[data-trigger]').trigger('click');\r\n\t\t\t\tnav.openClose.closeNavResize();\r\n\r\n\t\t\t\tvar target = $content;\r\n\r\n\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t$('html,body').animate({\r\n\t\t\t\t\t\tscrollTop: target.offset().top - $(\".header-logo\").height()\r\n\t\t\t\t\t}, 1000);\r\n\t\t\t\t}, 1000);\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\tinit: function() {\r\n\t\t// If element exsists\r\n\t\tif ( accordionTabs.elms.accordionTabs.length > 0 ) {\r\n\t\t\t// Hide all tabs/accordions apart from active ones\r\n\t\t\taccordionTabs.elms.accordionTabContent.not('.active').hide();\r\n\r\n\t\t\t// Listen to the click events\r\n\t\t\taccordionTabs.eventListeners();\r\n\t\t}\r\n\t}\r\n};\r\n","var accordion = {\r\n\r\n\telms: {\r\n\t\taccordionWrap: $('.accordion-wrap'),\r\n\t\taccordionTrigger: $('.accordion-trigger'),\r\n\t\taccordionContent: $('.accordion-content')\r\n\t},\r\n\r\n\ttoggleContent: function( $target ) {\r\n\t\tvar $accordionContent = $target.closest( accordion.elms.accordionWrap ).find( accordion.elms.accordionContent ).first();\r\n\t\tvar $trigger = $target.closest('.accordion-trigger');\r\n\t\tvar $icon = $trigger.find('.view-more');\r\n\r\n\t\tconsole.log( $accordionContent.length );\r\n\r\n\t\t// .open is like .active, but it's added before the animation\r\n\t\tif ( $trigger.attr('data-open') === '' || $trigger.attr('data-open') === undefined || $trigger.attr('data-open') === \"false\") {\r\n\t\t\t$trigger.attr('data-open', \"true\")\r\n\t\t\t$icon.addClass('open');\r\n\t\t} else {\r\n\t\t\t$trigger.attr('data-open', \"false\")\r\n\t\t\t$icon.removeClass('open');\r\n\t\t}\r\n\r\n\t\t$accordionContent.clearQueue().stop().slideToggle( 400, function() {\r\n\t\t\tif ( $accordionContent.is(':visible') ) {\r\n\t\t\t\t$icon.addClass('active');\r\n\t\t\t} else {\r\n\t\t\t\t$icon.removeClass('active');\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\tcheckIfMobile: function( $target ) {\r\n\t\tif ( accordion.elms.accordionWrap.hasClass('accordion-on-mobile') ) {\r\n\t\t\tif ( $(window).width() < 800 ) {\r\n\t\t\t\taccordion.toggleContent( $target );\r\n\t\t\t\t$target.closest('.accordion-simple').find('.view-more').toggleClass('active');\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\taccordion.toggleContent( $target );\r\n\t\t\t$target.closest('.accordion-simple').find('.view-more').toggleClass('active');\r\n\t\t}\r\n\t},\r\n\r\n\teventListeners: function() {\r\n\t\taccordion.elms.accordionTrigger.on('click', function( e ) {\r\n\t\t\te.preventDefault();\r\n\t\t\taccordion.checkIfMobile( $(e.target) );\r\n\t\t});\r\n\t},\r\n\r\n\tinit: function() {\r\n\t\t// If element exsists\r\n\t\tif ( accordion.elms.accordionWrap.length > 0 ) {\r\n\t\t\taccordion.eventListeners();\r\n\t\t}\r\n\t}\r\n};\r\n","var accordionHandler = {\r\n\r\n accordionTitle: $('h5.accordion-reskin'),\r\n \r\n\r\n toggleContent: function ($target) {\r\n $target.next().toggleClass('accordion-open');\r\n },\r\n\r\n rotateArrow: function ($target) {\r\n $target.children().first().toggleClass('upwards');\r\n },\r\n\r\n init: function () {\r\n // If element exsists\r\n if (accordionHandler.accordionTitle.length > 0) {\r\n accordionHandler.accordionTitle.on('click', function (e) {\r\n e.preventDefault();\r\n accordionHandler.toggleContent($(e.target));\r\n accordionHandler.rotateArrow($(e.target));\r\n });\r\n }\r\n }\r\n};\r\n","var backToTop = {\r\n\r\n\telWrap: $('.back-to-top-wrap'),\r\n\r\n\tscrollToTop: function() {\r\n\t\t$('html, body').animate({ scrollTop: 0 }, 'slow');\r\n\t\treturn false;\r\n\t},\r\n\r\n\teventListeners: function() {\r\n\t\tbackToTop.elWrap.on('click', function() {\r\n\t\t\tbackToTop.scrollToTop();\r\n\t\t});\r\n\t},\r\n\r\n\tinit: function() {\r\n\t\tbackToTop.eventListeners();\r\n\t}\r\n};\r\n","var brands = {\r\n\r\n\tclosed: $('.brands-list-link-with-tooltip'),\r\n\r\n\ttooltipPos: function() {\r\n\t\tbrands.closed.each(function() {\r\n\t\t\tvar _this = $(this);\r\n\t\t\tvar size = _this.text().length;\r\n\t\t\tvar wrapper = _this.closest('.brands-list-item');\r\n\t\t\tvar tooltip = wrapper.find('.tooltip-content');\r\n\t\t\tconsole.log(_this.text(), size, size < 5, size > 16);\r\n\t\t\tif (size < 5) {\r\n\t\t\t\ttooltip.addClass('tooltip-text-short');\r\n\t\t\t} else if (size > 16) {\r\n\t\t\t\ttooltip.addClass('tooltip-text-long');\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\twrapperEl: $('.brands-list-link .tooltip-wrapper'),\r\n\ttriggerEl: $('.brands-list-link .tooltip-trigger'),\r\n\tcontentEl: $('.brands-list-link .tooltip-content'),\r\n\r\n\tshowHide: function() {\r\n\t\tif (!isTouch) {\r\n\t\t\tbrands.triggerEl.hover(\r\n\t\t\t\tfunction(){\r\n\t\t\t\t\t$(this).closest(brands.wrapperEl).find(brands.contentEl).fadeToggle();\r\n\t\t\t\t\tbrands.triggerEl.not($(this)).closest(brands.wrapperEl).find(brands.contentEl).fadeOut();\r\n\t\t\t\t},\r\n\t\t\t\tfunction(){\r\n\t\t\t\t\tbrands.contentEl.fadeOut();\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t}\r\n\t},\r\n\r\n\tinit: function() {\r\n\t\tif (brands.closed.length) {\r\n\t\t\tbrands.tooltipPos();\r\n\t\t\tbrands.showHide();\r\n\t\t}\r\n\t}\r\n};\r\n","var bh = {\r\n\tcontainers: {\r\n\t\twidthEl: $('.window-width-helper'),\r\n\t\theightEl: $('.window-height-helper'),\r\n\t},\r\n\r\n\r\n\tsetHelpers: function(widthValue, heightValue) {\r\n\t\tbh.containers.widthEl.text(widthValue);\r\n\t\tbh.containers.heightEl.text(heightValue);\r\n\t},\r\n\r\n\temptyLinks: function() {\r\n\t\t$('[href=\"#\"]').click(function(e) {\r\n\t\t\te.preventDefault();\r\n\t\t});\r\n\t}\r\n\r\n};","var cookies = {\r\n\tlegal: 'cookies-legal',\r\n\tlegalContainer: $('.cookies-container'),\r\n\r\n\tcreate: function(name,value,days) {\r\n\t\tvar cookieExpires;\r\n\t\tif (days) {\r\n\t\t\tvar date = new Date();\r\n\t\t\tdate.setTime(date.getTime()+(days*24*60*60*1000));\r\n\t\t\tcookieExpires = '; expires='+date.toGMTString();\r\n\t\t} else {\r\n\t\t\tcookieExpires = '';\r\n\t\t}\r\n\t\tdocument.cookie = name+'='+value+cookieExpires+'; path=/';\r\n\t},\r\n\r\n\tread: function(name) {\r\n\t\tvar nameEQ = name + '=';\r\n\t\tvar ca = document.cookie.split(';');\r\n\t\tfor (var i=0;i < ca.length;i++) {\r\n\t\t\tvar c = ca[i];\r\n\t\t\twhile (c.charAt(0) === ' ') {\r\n\t\t\t\tc = c.substring(1,c.length);\r\n\t\t\t}\r\n\t\t\tif (c.indexOf(nameEQ) === 0) {\r\n\t\t\t\treturn c.substring(nameEQ.length,c.length);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t},\r\n\r\n\tlegalClose: function() {\r\n\t\tvar close = $('.cookies-close');\r\n\r\n\t\tclose.click(function(event) {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tcookies.create('cookies-legal', '', 90);\r\n\t\t\tcookies.legalContainer.fadeOut();\r\n\t\t});\r\n\t},\r\n\r\n\tintroLegal: function() {\r\n\t\tvar exists = document.cookie.indexOf('cookies-legal');\r\n\t\tif (exists === -1) {\r\n\t\t\tcookies.legalContainer.show();\r\n\t\t\tcookies.legalClose();\r\n\t\t}\r\n\t},\r\n\r\n\tinit: function() {\r\n\t\tcookies.introLegal();\r\n\t}\r\n};","var customScrollbar = {\r\n\r\n\tel: $('.custom-scroll'),\r\n\telWrap: $('.custom-scroll-wrap'),\r\n\r\n\tscrollBar: function( $el, theme ) {\r\n\t\t$el.mCustomScrollbar({\r\n\t\t\taxis:'y',\r\n\t\t\ttheme: theme\r\n\t\t});\r\n\t},\r\n\r\n\tinit: function() {\r\n\t\tif (customScrollbar.el.length > 0) {\r\n\t\t\tcustomScrollbar.scrollBar( customScrollbar.el, customScrollbar.elWrap.attr('data-scroll-theme') );\r\n\t\t}\r\n\t\t// For dropkick select, we can only give a class to the wrapper and then have to target the correct el\r\n\t\tif (customScrollbar.elWrap.length > 0) {\r\n\t\t\tcustomScrollbar.scrollBar( customScrollbar.elWrap.find('.dk-select-options'), customScrollbar.elWrap.attr('data-scroll-theme') );\r\n\r\n\t\t}\r\n\t}\r\n};","var dateTimePicker = {\r\n\r\n\telms: {\r\n\t\tdatePicker: $('.datepicker'),\r\n\t\ttimePicker: $('.timepicker')\r\n\t},\r\n\r\n\taddDatePicker: function() {\r\n\t\tdateTimePicker.elms.datePicker.datepicker({\r\n\t\t\tdateFormat: 'dd-mm-yy'\r\n\t\t});\r\n\t\tdateTimePicker.elms.datePicker.datepicker('setDate', new Date());\r\n\t},\r\n\r\n\taddTimePicker: function() {\r\n\t\tdateTimePicker.elms.timePicker.timepicker({\r\n\t\t\t'timeFormat': 'H:i'\r\n\t\t});\r\n\t\tdateTimePicker.elms.timePicker.timepicker('setTime', new Date());\r\n\t},\r\n\r\n\tinit: function() {\r\n\t\tif ( dateTimePicker.elms.datePicker.length > 0 ) {\r\n\t\t\tdateTimePicker.addDatePicker();\r\n\t\t}\r\n\t\tif ( dateTimePicker.elms.timePicker.length > 0 ) {\r\n\t\t\tdateTimePicker.addTimePicker();\r\n\t\t}\r\n\t}\r\n};\r\n","var desktopNav = {\r\n\r\n\ttriggers: $('.nav-main > ul > li.nav-navItem'),\r\n\tnavTray: $('.nav-main'),\r\n\topenTimeout: undefined,\r\n\tcloseTimeout: undefined,\r\n\tcloseTrayAnimTimeout: undefined,\r\n\tsettings: {\r\n\t\topenTimeoutDelay: 50,\r\n\t\tcloseTimeoutDelay: 50,\r\n\t\tresetCloseTimeoutDelay: 50\r\n\t},\r\n\r\n\tshowSubNav: function(el) {\r\n\t\t// console.log('showSubNav');\r\n\r\n\t\t// hide all other subnavs\r\n\t\tdesktopNav.triggers.each(function(){\r\n\t\t\tdesktopNav.triggers.removeClass('active');\r\n\t\t});\r\n\r\n\t\t$(el).addClass('active');\r\n\t},\r\n\r\n\topenNavTray: function() {\r\n\t\tclearTimeout(desktopNav.closeTimeout);\r\n\r\n\t\tdesktopNav.navTray.addClass('opened');\r\n\t},\r\n\r\n\tcloseNavTray: function() {\r\n\t\t// console.log('closeNavTray');\r\n\r\n\t\tdesktopNav.navTray.addClass('closed');\r\n\r\n\t\r\n\r\n\t\tdesktopNav.closeTrayAnimTimeout = setTimeout(function(){\r\n\t\t\tdesktopNav.triggers.each(function(){\r\n\t\t\t\tdesktopNav.triggers.removeClass('active');\r\n\t\t\t\tdesktopNav.navTray.removeClass('closed');\r\n\t\t\t\tdesktopNav.navTray.removeClass('opened');\r\n\t\t\t});\r\n\t\t}, desktopNav.settings.resetCloseTimeoutDelay);\r\n\t},\r\n\r\n\tinit: function() {\r\n\t\t// console.log('desktopNav.init()')\r\n\r\n\t\tdesktopNav.navTray.addClass('opened');\r\n\r\n\t\tdesktopNav.triggers.on('mouseenter', function(e){\r\n\r\n\r\n\t\t\t// // hovered anywhere over the current item (eg. the subnav tray)\r\n\t\t\tif (desktopNav.navTray.hasClass('opened')){\r\n\t\t\t\tclearTimeout(desktopNav.closeTimeout);\r\n\t\t\t\tclearTimeout(desktopNav.resetCloseTimeoutDelay);\r\n\t\t\t\t\r\n\t\t\t}\r\n\r\n\t\t\t// hovered elsewhere rather than a main nav link (eg. the subnav tray)\r\n\t\t\tif (!$(e.target).hasClass('nav-parent')){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tdesktopNav.showSubNav(e.currentTarget);\r\n\r\n\t\t\tdesktopNav.openTimeout = setTimeout(function(){\r\n\t\t\t\tdesktopNav.openNavTray();\r\n\t\t\t}, desktopNav.settings.openTimeoutDelay)\r\n\r\n\t\t})\r\n\r\n\t\tdesktopNav.triggers.on('mouseleave', function(e){\r\n\t\t\t// console.log('mouseleave');\r\n\r\n\t\t\t//clear a possible timeout\r\n\t\t\tclearTimeout(desktopNav.openTimeout);\r\n\r\n\t\t\tdesktopNav.closeTimeout = setTimeout(function(){\r\n\t\t\t\t desktopNav.closeNavTray();\r\n\t\t\t}, desktopNav.settings.closeTimeoutDelay)\r\n\t\t});\r\n\t}\r\n};","var downloadApp = {\r\n\tcontainer: $('.app-download-buttons'),\r\n\tbuttons: {\r\n\t\tandroid: $('.download-android'),\r\n\t\tios: $('.download-ios')\r\n\t},\r\n\r\n\tshowButton: function(osButton) {\r\n\t\tdownloadApp.container.css('display', 'block');\r\n\t\tosButton.css('display', 'block');\r\n\t},\r\n\r\n\tgetMobileOperatingSystem: function() {\r\n\t\tvar userAgent = navigator.userAgent || navigator.vendor || window.opera;\r\n\t\tconsole.log(userAgent);\r\n\r\n\t\tif( userAgent.match( /iPad/i ) || userAgent.match( /iPhone/i ) || userAgent.match( /iPod/i ) )\r\n\t\t{\r\n\t\t\tdownloadApp.showButton(downloadApp.buttons.ios);\r\n\t\t}\r\n\t\telse if( userAgent.match( /Android/i ) )\r\n\t\t{\r\n\t\t\tdownloadApp.showButton(downloadApp.buttons.android);\r\n\t\t}\r\n\t},\r\n\r\n\tinit: function() {\r\n\t\tif (downloadApp.container.length > 0) {\r\n\t\t\tdownloadApp.getMobileOperatingSystem();\r\n\t\t}\r\n\t}\r\n};","var dd = {\r\n\tlangVill: $('.lang-vill'),\r\n\ttrigger: $('.dropdown-button'),\r\n\tddContent: $('.dropdown-menu'),\r\n\tlogin: $('#login'),\r\n\toffCanvas: $('.off-canvas-wrapper'),\r\n\r\n\tanimate: function() {\r\n\t\tdd.trigger.click(function(){\r\n\t\t\t$(this).toggleClass('active');\r\n\t\t\t$(this).siblings(dd.Content).clearQueue().stop().slideToggle();\r\n\t\t\t$('.dropdown-button.active').not($(this)).removeClass('active').siblings(dd.ddContent).slideUp();\r\n\r\n\t\t\t$('.weather-open .weather-extended').slideUp();\r\n\t\t\tweather.wrapper.removeClass('weather-open');\r\n\r\n\t\t\t$('.sidenav-navItem.active .sidenav-item-content').slideUp();\r\n\t\t\tsidenav.wrapperEl.removeClass('active');\r\n\t\t});\r\n\t},\r\n\r\n\tddLeave: function() {\r\n\t\tdd.langVill.find(dd.ddContent).mouseleave(function(){\r\n\t\t\tif (windowWidth >= desktop) {\r\n\t\t\t\t$(this).slideUp();\r\n\t\t\t\t$(this).siblings(dd.trigger).removeClass('active');\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\tundoClickOut: function() {\r\n\t\tvar container = $('.dropdown');\r\n\t\t$(document).click(function(event) {\r\n\t\t\tif(!$(event.target).closest(container).length) {\r\n\t\t if($(container).find('.dropdown-button.active').length > 0) {\r\n\t\t nav.undoOthers.undoDropdowns();\r\n\t\t }\r\n\t\t }\r\n\t\t});\r\n\t},\r\n\r\n\tinit: function() {\r\n\t\tdd.animate();\r\n\t\tdd.ddLeave();\r\n\t\tdd.undoClickOut();\r\n\t}\r\n};","var ellipsisNew = {\r\n\tellipsisEl: $('.ellipsis-new'),\r\n\tellipsisTitleEl: $('.ellipsis-title'),\r\n\tellipsisTreatEl: $('.ellipsis-treat'),\r\n\r\n\t// 2 lines. depends on h3 font-size. rendered bigger on IE\r\n\tellipsisTitleMaxHeight: 58, \t\r\n\t\r\n\tapplyEllipsis: function(ellipsisItem, isResize, carouselBreakpoint) {\r\n\r\n\t\tvar _this = ellipsisItem;\r\n\r\n\t\tif(_this.prev('h3').attr('class')=='gallery-title'){\r\n\t\t\tellipsisNew.setGalleryHeight(_this);\r\n\t\t}else{\r\n\t\t \tellipsisNew.setElHeight(_this);\r\n\t\t}\r\n\r\n\t\tsetTimeout(function(){\r\n\t\t\tif (isResize) {\r\n\t\t\t\t_this.trigger('update');\r\n\t\t\t} else {\r\n\t\t\t\t_this.dotdotdot();\r\n\t\t\t}\r\n\t\t\tellipsisNew.removeEmpty();\r\n\t\t}, 500);\r\n\t},\r\n\r\n\tapplyEllipsisTitle: function(ellipsisItem, isResize) {\r\n\t\tsetTimeout(function(){\r\n\r\n\t\t\tif (isResize) {\r\n\t\t\t\tellipsisItem.trigger('update');\r\n\t\t\t} else {\r\n\t\t\t\tellipsisItem.dotdotdot();\r\n\t\t\t}\r\n\t\t}, 500);\r\n\t},\r\n\r\n\tapplyEllipsisTreat: function (ellipsisItem, isResize) {\t\t\r\n\t\tellipsisNew.setElHeight(ellipsisItem);\r\n\t\t\r\n\t\tif (!isResize) {\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\tellipsisItem.dotdotdot({ keep: '.read-more' });\r\n\t\t\t}, 500);\r\n\t\t}\r\n\t},\r\n\r\n\tsetElHeight: function(_this) {\r\n\r\n\t\tvar container;\r\n\t\tvar container_blockContent = _this.closest('.module-content-wrapper');\r\n\t\tvar container_textContent = _this.closest('.module-text-simple-new');\r\n\t\tvar isPromoComponent = _this\r\n\t\t\t\t\t\t\t\t.closest('.component-wrapper-new.component-promotion, .component-wrapper-new.component-latest-trends, .component-wrapper-new.component-editorial, .component-wrapper-new.content-list-item')\r\n\t\t\t\t\t\t\t\t.length;\r\n\r\n\t\tvar debug = isPromoComponent;\r\n\r\n\t\tvar isEditorialFeed = _this.closest('.editorial-feed-article').length;\r\n\r\n\t\tif (container_blockContent.length && !isPromoComponent) {\r\n\t\t\tcontainer = container_blockContent;\r\n\t\t}\r\n\t\tif (container_textContent.length && !isPromoComponent) {\r\n\t\t\tcontainer = container_textContent;\r\n\t\t}\r\n\t\tif (isPromoComponent) {\r\n\t\t\tif (windowWidth < tabletWide && !_this.closest('.component-latest-trends').length) {\r\n\t\t\t\t// console.log('not apply!!');\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tcontainer = _this.closest('.module-content');\r\n\t\t}\r\n\r\n\t\tif (isEditorialFeed) {\r\n\t\t\tcontainer = _this.closest('.media-col-right');\r\n\t\t}\r\n\r\n\t\tif (!(container_blockContent.length && !isPromoComponent) && !(container_textContent.length && !isPromoComponent) && !isPromoComponent && !isEditorialFeed) {\r\n\t\t\tcontainer = _this.closest('div');\r\n\t\t}\r\n\r\n\t\tif (_this.closest('.col-content').length){\r\n\t\t\tcontainer = _this.closest('.col-content-wrapper');\r\n\t\t}\r\n\r\n\t\t// if(debug){\r\n\t\t// \tconsole.log('container: ', container);\r\n\t\t// }\r\n\r\n\t\tvar container_height = container.height();\r\n\t\tvar otherels = container.find('> *');\r\n\t\tvar otherels_height = 0;\r\n\t\totherels.each(function() {\r\n\t\t\totherels_height += $(this).height();\r\n\t\t});\r\n\t\tvar this_height = _this.height();\r\n\t\tif (_this.closest('.component-wrapper-new').find('.module-find-out-more').length && isPromoComponent) {\r\n\r\n\t\t\tthis_height = this_height - 12;\r\n\t\t}\r\n\r\n\t\t// if(debug){\r\n\t\t// \tconsole.log('container_height: ', container_height);\r\n\t\t// \tconsole.log('otherels_height: ', otherels_height);\r\n\t\t// \tconsole.log('this_height: ', this_height);\r\n\t\t// }\r\n\r\n\t\tvar targetHeight = container_height - (otherels_height - this_height);\r\n\t\tif (container_blockContent.find('.module-separator').length){\r\n\t\t\ttargetHeight -= container_blockContent.find('.module-separator').height();\r\n\t\t}\r\n\t\t_this.height(targetHeight);\r\n\t},\r\n\r\n\tsetGalleryHeight: function (_this){\r\n\t\tvar wrapper = _this.closest('.modal-gallery-content-wrapper');\r\n\t\tvar wrapper_height = wrapper.height();\r\n\t\tvar numbers_height = wrapper.find('.gallery-slide-counter').height();\r\n\t\tvar title_height = wrapper.find('.gallery-title').height();\r\n\t\tvar nav_height = wrapper.find('.gallery-slide-nav').height();\r\n\t\tif ( window.innerWidth < window.innerHeight ) {\r\n\t\t\tconsole.log(wrapper_height, numbers_height, title_height, nav_height);\r\n \t \t\ttargetHeight = wrapper_height - numbers_height - title_height - nav_height - 60;\r\n\t\t}else{\r\n\t\t\ttargetHeight = 150;\r\n\t\t}\r\n\r\n\t\t_this.height(targetHeight);\r\n\t},\r\n\r\n\tremoveEmpty: function () {\r\n\t\tellipsisNew.ellipsisEl.each(function() {\r\n\t\t\tvar _this = $(this);\r\n\t\t\tvar ellipsisCheck = _this.text().trim().length;\r\n\r\n\t\t\tif (ellipsisCheck === 3) {\r\n\t\t\t\t_this.empty();\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\tinit: function () {\r\n\t\tif (!$('.page-gallery').length) {\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tellipsisNew.ellipsisEl.each(function(){\r\n\t\t\t\t\tif (!$(this).closest('.module-widget-carousel-wrapper').length) {\r\n\t\t\t\t\t\tellipsisNew.applyEllipsis($(this));\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}, 100);\r\n\t\t}\r\n\t\t\r\n\t\tif (ellipsisNew.ellipsisTitleEl.length){\r\n\t\t\tellipsisNew.ellipsisTitleEl.each(function(){\r\n\t\t\t\t\r\n\t\t\t\t$(this).css('max-height', ellipsisNew.ellipsisTitleMaxHeight);\r\n\r\n\t\t\t\tellipsisNew.applyEllipsisTitle($(this));\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (ellipsisNew.ellipsisTreatEl.length) {\r\n\t\t\tellipsisNew.ellipsisTreatEl.each(function () {\r\n\t\t\t\tellipsisNew.applyEllipsisTreat($(this), false);\r\n\t\t\t});\r\n\r\n\t\t\t$(window).on('resize', function () {\r\n\t\t\t\tellipsisNew.ellipsisTreatEl.each(function () {\r\n\t\t\t\t\tellipsisNew.applyEllipsisTreat($(this), true);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\t$(window).on('load', function () {\r\n\t\t\t\t$(window).trigger('resize');\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n};\r\n","var ellipsis = {\r\n\r\n\teditorial: {\r\n\t\titem: $('.module-editorial:not(.module-editorial-2col):not(.editorial-feed)'),\r\n\t\titem2col: $('.module-editorial-2col'),\r\n\t\tfeed: $('.editorial-feed-article'),\r\n\t\theader: $('.module-editorial-header'),\r\n\t\ttitle: $('.module-editorial-content header'),\r\n\t\timage: $('.module-editorial-img'),\r\n\t\tcopy: $('.module-editorial-copy'),\r\n\t\tfooter: $('.module-editorial-footer'),\r\n\t\tapplyEl: $('.module-editorial-copy.ellipsis'),\r\n\t\tfeedApplyEl: $('.ellipsis-feed'),\r\n\r\n\t\tsetup: {\r\n\r\n\r\n\t\t\tsingle: function() {\r\n\r\n\t\t\t\tellipsis.editorial.item.each(function(){\r\n\r\n\t\t\t\t\tif ($(this).find(ellipsis.editorial.copy).length) {\r\n\r\n\t\t\t\t\t\t// Elements\r\n\t\t\t\t\t\tvar $img = $(this).find(ellipsis.editorial.image);\r\n\t\t\t\t\t\tvar $header = $(this).find(ellipsis.editorial.header);\r\n\t\t\t\t\t\tvar $title = $(this).find(ellipsis.editorial.title);\r\n\t\t\t\t\t\tvar $footer = $(this).find(ellipsis.editorial.footer);\r\n\t\t\t\t\t\tvar $copy = $(this).find(ellipsis.editorial.copy);\r\n\r\n\t\t\t\t\t\t// Element heights\r\n\t\t\t\t\t\tvar containerHeight = 370;\r\n\t\t\t\t\t\tvar imgHeight = 212;\r\n\t\t\t\t\t\tvar headerHeight = $header.height();\r\n\t\t\t\t\t\tvar titleHeight = $title.height();\r\n\t\t\t\t\t\tvar footerHeight = $footer.height();\r\n\r\n\t\t\t\t\t\tvar copyHeight = containerHeight - headerHeight - titleHeight - 15;\r\n\r\n\t\t\t\t\t\tif ( $img.length > 0 ) { copyHeight -= imgHeight; }\r\n\r\n\t\t\t\t\t\tif ( $footer.length > 0 ) { copyHeight -= footerHeight; }\r\n\r\n\t\t\t\t\t\t$copy.css('height', copyHeight);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t},\r\n\r\n\t\t\tcol2: function() {\r\n\r\n\t\t\t\tellipsis.editorial.item2col.each(function(){\r\n\r\n\t\t\t\t\tvar container = 370;\r\n\t\t\t\t\tvar title = $(this).find(ellipsis.editorial.title).height();\r\n\t\t\t\t\tvar footer = $(this).find(ellipsis.editorial.footer);\r\n\t\t\t\t\tvar copyHeight = 'auto';\r\n\r\n\t\t\t\t\tif (footer.length > 0) {\r\n\t\t\t\t\t\tcopyHeight = container - title - 15 - (footer.height());\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tcopyHeight = container - title - 15;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t$(this).find(ellipsis.editorial.copy).css('height', copyHeight);\r\n\t\t\t\t});\r\n\t\t\t},\r\n\r\n\t\t\tfeed: function() {\r\n\r\n\t\t\t\tellipsis.editorial.feed.each(function(){\r\n\t\t\t\t\tvar content = $('.whats-on-intro');\r\n\t\t\t\t\tvar container = 100;\r\n\t\t\t\t\tvar title = $(this).find('header').height();\r\n\t\t\t\t\tvar copyHeight = container - title - 4;\r\n\r\n\t\t\t\t\t$(this).find(content).css('height', copyHeight);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tgetLarge: function() {\r\n\t\t\tellipsis.editorial.setup.single();\r\n\t\t\tellipsis.editorial.setup.col2();\r\n\t\t},\r\n\r\n\t\tloadApply: function() {\r\n\t\t\tellipsis.editorial.getLarge();\r\n\t\t\tellipsis.editorial.applyEl.dotdotdot();\r\n\t\t},\r\n\r\n\t\tresizeApply: function() {\r\n\t\t\tellipsis.editorial.getLarge();\r\n\t\t\tellipsis.editorial.applyEl.trigger('update');\r\n\t\t},\r\n\r\n\t\tundoEllipsis: function() {\r\n\t\t\tellipsis.editorial.applyEl.trigger('destroy');\r\n\t\t\tellipsis.editorial.applyEl.removeAttr('style');\r\n\t\t},\r\n\r\n\t\tloadApplyFeed: function() {\r\n\t\t\tellipsis.editorial.setup.feed();\r\n\t\t\tellipsis.editorial.feedApplyEl.dotdotdot();\r\n\t\t},\r\n\r\n\t\tresizeApplyFeed: function() {\r\n\t\t\tellipsis.editorial.setup.feed();\r\n\t\t\tellipsis.editorial.feedApplyEl.trigger('update');\r\n\t\t},\r\n\r\n\t\tinit: function() {\r\n\t\t\tif (windowWidth >= tablet && ellipsis.editorial.applyEl.length > 0) {\r\n\t\t\t\tellipsis.editorial.loadApply();\r\n\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\tellipsis.editorial.resizeApply();\r\n\t\t\t\t},50);\r\n\t\t\t}\r\n\t\t\tif (ellipsis.editorial.feedApplyEl.length > 0) {\r\n\t\t\t\tellipsis.editorial.loadApplyFeed();\r\n\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\tellipsis.editorial.resizeApplyFeed();\r\n\t\t\t\t},50);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tfreeText: {\r\n\t\titem: $('.module-free-text'),\r\n\t\theader: $('.module-free-text-header'),\r\n\t\tcopy: $('.module-free-text-copy:not(.variable-height)'),\r\n\t\tmore: $('.find-more'),\r\n\t\tapplyEl: $('.module-free-text-copy.ellipsis'),\r\n\r\n\t\tsetup: function() {\r\n\r\n\t\t\tellipsis.freeText.item.each(function(){\r\n\r\n\t\t\t\tif ($(this).find(ellipsis.freeText.copy).length) {\r\n\r\n\t\t\t\t\tvar container = 370;\r\n\t\t\t\t\tvar title = $(this).find(ellipsis.freeText.header).height();\r\n\t\t\t\t\tvar more = $(this).find(ellipsis.freeText.more).height();\r\n\t\t\t\t\tvar copyHeight = container - title - more;\r\n\r\n\t\t\t\t\tif ($(this).hasClass('free-text-background')) {\r\n\t\t\t\t\t\tcopyHeight -= 80;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tcopyHeight -= 28;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t$(this).find(ellipsis.freeText.copy).css('height', copyHeight);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tgetHEight: function() {\r\n\t\t\tellipsis.freeText.setup();\r\n\t\t},\r\n\r\n\t\tloadApply: function() {\r\n\t\t\tellipsis.freeText.getHEight();\r\n\t\t\tellipsis.freeText.applyEl.dotdotdot();\r\n\t\t},\r\n\r\n\t\tresizeApply: function() {\r\n\t\t\tellipsis.freeText.getHEight();\r\n\t\t\tellipsis.freeText.applyEl.trigger('update');\r\n\t\t},\r\n\r\n\t\tundoEllipsis: function() {\r\n\t\t\tellipsis.freeText.applyEl.trigger('destroy');\r\n\t\t\tellipsis.freeText.applyEl.removeAttr('style');\r\n\t\t},\r\n\r\n\t\tinit: function() {\r\n\t\t\tif (windowWidth >= tablet && ellipsis.freeText.applyEl.length > 0) {\r\n\t\t\t\tellipsis.freeText.loadApply();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tpromoTextLong: {\r\n\t\titem: $('.promo-text-long'),\r\n\t\theader: $('.promo-text-long .module-title'),\r\n\t\tcopy: $('.ellipsis'),\r\n\t\tfooter: 150,\r\n\r\n\t\tsetup: function() {\r\n\r\n\t\t\tellipsis.promoTextLong.item.each(function(){\r\n\r\n\t\t\t\tif ($(this).find(ellipsis.promoTextLong.copy).length) {\r\n\r\n\t\t\t\t\tvar container = 370;\r\n\t\t\t\t\tvar title = $(this).find(ellipsis.promoTextLong.header).height();\r\n\t\t\t\t\tvar copyHeight = container - title - ellipsis.promoTextLong.footer;\r\n\r\n\t\t\t\t\t$(this).find(ellipsis.promoTextLong.copy).css('height', copyHeight);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tgetHEight: function() {\r\n\t\t\tellipsis.promoTextLong.setup();\r\n\t\t},\r\n\r\n\t\tloadApply: function() {\r\n\t\t\tellipsis.promoTextLong.getHEight();\r\n\t\t\tellipsis.promoTextLong.copy.dotdotdot();\r\n\t\t},\r\n\r\n\t\tresizeApply: function() {\r\n\t\t\tellipsis.promoTextLong.getHEight();\r\n\t\t\tellipsis.promoTextLong.copy.trigger('update');\r\n\t\t},\r\n\r\n\t\tundoEllipsis: function() {\r\n\t\t\tellipsis.promoTextLong.copy.trigger('destroy');\r\n\t\t\tellipsis.promoTextLong.copy.removeAttr('style');\r\n\t\t},\r\n\r\n\t\tinit: function() {\r\n\t\t\tif (windowWidth >= tablet && ellipsis.promoTextLong.copy.length > 0) {\r\n\t\t\t\tellipsis.promoTextLong.loadApply();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\t// treat: {\r\n\t// \tcopy: $('.treat-inner'),\r\n\r\n\t// \tapplyEl: function() {\r\n\t// \t\tif (ellipsis.treat.copy.length) {\r\n\t// \t\t\tellipsis.treat.copy.find('p').each(function(){\r\n\t// \t\t\t\t$(this).dotdotdot();\r\n\t// \t\t\t});\r\n\t// \t\t}\r\n\t// \t},\r\n\r\n\t// \tresizeApply: function() {\r\n\t// \t\tif (ellipsis.treat.copy.length) {\r\n\t// \t\t\tellipsis.treat.copy.find('p').each(function(){\r\n\t// \t\t\t\t$(this).trigger('update');\r\n\t// \t\t\t});\r\n\t// \t\t}\r\n\t// \t}\r\n\t// },\r\n\r\n\tremoveEmpty: function() {\r\n\t\tvar applyEl = $('.ellipsis');\r\n\r\n\t\tapplyEl.each(function() {\r\n\t\t\tvar _this = $(this);\r\n\t\t\tvar ellipsisCheck = _this.text().trim().length;\r\n\r\n\t\t\tif (ellipsisCheck === 3) {\r\n\t\t\t\t_this.empty();\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\tinit: function() {\r\n\t\tellipsis.freeText.init();\r\n\t\tellipsis.editorial.init();\r\n\t\tellipsis.promoTextLong.init();\r\n\t\tellipsis.removeEmpty();\r\n\t\t// ellipsis.treat.applyEl();\r\n\t}\r\n};","var filter = {\r\n\telms: {\r\n\t pageTitle: $('.hero-search-new-content > header > .module-title'),\r\n\t productCategory : $( '.product-page' ).data( 'product-category-name' ),\r\n\t\tclearElms: $('[data-filter-clear]'),\r\n\t\ttriggerElms: $('[data-filter-trigger] select'),\r\n\t\tcontainerElms: $('[data-filter-content]'),\r\n\t\titemElms: $('[data-category-list]'),\r\n\t\tblockElms: $('[data-filter-block]'),\r\n\t\tblocknavElms: $('[data-filter-blocknav]')\r\n\t},\r\n\tallProducts_text: null,\r\n\tviewAllFilter_text: null,\r\n\r\n\t// Only for brands page??\r\n\tscrolltoNav: function() {\r\n\t\tif (filter.elms.blocknavElms.length > 0) {\r\n\t\t\tvar offsetDiff = 20;\r\n\r\n\t\t\tif (windowWidth >= desktop) {\r\n\t\t\t\toffsetDiff = 95;\r\n\t\t\t}\r\n\r\n\t\t\t$('html,body').animate({\r\n\t\t\t\tscrollTop: filter.elms.blocknavElms.offset().top - offsetDiff\r\n\t\t\t}, 1000);\r\n\t\t}\r\n\t},\r\n\r\n\tapplyCategoryFilter: function( filterValue ) {\r\n\t\t//console.log( \"filter: applyCategoryFilter\", filterValue );\r\n\r\n\t // this should be run only on products/non-eu pages, not brand filter\r\n\t\tif (filter.elms.productCategory)\r\n\t\t window.location.href = productPage.productBaseUrl + filter.elms.productCategory + '/' + filterValue;\r\n\r\n\t\t$('.no-matches').removeClass('show');\r\n\r\n\t\tvar filterType;\r\n\t\t// var filterValue; // no need to redeclare\r\n\r\n\t\tif ($(this).attr('data-filter-triggerLi')) {\r\n\r\n\t\t filterType = $(this).closest('.searchDd-category').data('filter-type');\r\n\t\t //console.log(filterType);\r\n\t\t\tfilterValue = $.trim($(this).attr('data-filter-triggerLi'));\r\n\r\n\t\t\tif ( $('.searchDd-main').hasClass('open') )\r\n\t\t\t\t$('.searchDd-main').trigger('click');\r\n\r\n\t\t\tvar catSelected = $(this).text();\r\n\t\t\t$('.searchDd-main').text(catSelected);\r\n\t\t\tif ($('#allProducts').length) {\r\n\t\t\t\tfilter.elms.pageTitle.text(catSelected);\r\n\t\t\t}\r\n\r\n\t\t\tif ($('.searchDd-clear').hasClass('hide')) {\r\n\t\t\t\t$('.searchDd-clear').removeClass('hide');\r\n\t\t\t}\r\n\t\t} else {\r\n\r\n\t\t\t// this throws an error in jQuery, also seems to be redundant (onFilterChange() already trims the value and sends it to this function):\r\n\t\t\t// filterValue = $.trim($(this).val());\r\n\r\n\t\t}\r\n\r\n\t\tif (filterValue !== 'clearSelect') {\r\n\r\n\t\t\t// Hide the title that says all items are displaying, because we are about to filter\r\n\t\t\t$('.title-all-items').addClass('hide');\r\n\r\n\t\t\t// filter items and hide and show on match\r\n\t\t\t// filter.elms.itemElms.filter(':not([data-category-list*=\",' + filterValue + ',\"])').addClass('filter-hidden').hide();\r\n\t\t\t// filter.elms.itemElms.filter('[data-category-list*=\",' + filterValue + ',\"]').removeClass('filter-hidden').show();\r\n\r\n\t\t\tvar $item;\r\n\t\t\tvar itemCategoryList;\r\n\t\t\tvar hiddenCount = 0;\r\n\r\n\t\t\tfilter.elms.itemElms.each(function(){\r\n\t\t\t\t$item = $( this );\r\n\t\t\t\tvar itemCategoryList = $item.attr( 'data-category-list' );\r\n\t\t\t\tif ( itemCategoryList.match( new RegExp( '(?:^|,)' + filterValue + '(?:,|$)' ) ) ) {\r\n\t\t\t\t\t$item.removeClass( 'filter-hidden' ).show();\r\n\t\t\t\t} else {\r\n\t\t\t\t $item.addClass('filter-hidden').hide();\r\n\t\t\t\t hiddenCount++;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\r\n\t\t\tif (hiddenCount == filter.elms.itemElms.length) {\r\n\t\t\t //console.log('There are no visible brands');\r\n\t\t\t $('.no-matches').addClass('show');\r\n\t\t\t}\r\n\r\n\t\t\t// If blocks (on brands page) toggle the blocks\r\n\t\t\tif (filter.elms.blockElms) {\r\n\t\t\t\tfilter.updateBlockDisplay();\r\n\t\t\t}\r\n\t\t\tif (filter.elms.blocknavElms) {\r\n\t\t\t\tfilter.scrolltoNav();\r\n\t\t\t}\r\n\r\n\t\t\tsearch.clearSearchInput();\r\n\r\n\t\t\t$.publish('/filters/updated', [{}]);\r\n\t\t}\r\n\t},\r\n\r\n\tclearFilters: function(event) {\r\n\t\tevent.preventDefault();\r\n\r\n\t\t// Remove no matches message\r\n\t\t$('.no-matches').removeClass('show');\r\n\t\t$('.title-all-items').removeClass('hide');\r\n\r\n\t\t// remove hide from all elements\r\n\t\tfilter.elms.itemElms.removeClass('filter-hidden').show();\r\n\r\n\t\t// if blocks toggleBlocks\r\n\t\tif (filter.elms.blockElms) {\r\n\t\t\tfilter.updateBlockDisplay();\r\n\t\t}\r\n\r\n\t\t// reset triggers to default state\r\n\t\tif (isTouch) {\r\n\t\t\tfilter.elms.triggerElms.find(':selected').removeAttr('selected');\r\n\t\t\tfilter.elms.triggerElms.find('[value=\"clearSelect\"]').attr('selected', 'selected');\r\n\t\t} else {\r\n\t\t\tfilter.elms.triggerElms.dropkick('select', 0);\r\n\t\t}\r\n\r\n\t\t$.publish('/filters/updated', [{}]);\r\n\r\n\t},\r\n\r\n\tupdateBlockDisplay: function() {\r\n\t\tfor (var i = 0, l = filter.elms.blockElms.length; i < l; i++) {\r\n\t\t\tvar block = filter.elms.blockElms.eq(i);\r\n\t\t\tvar items = block.find('[data-category-list]:not(.filter-hidden)');\r\n\r\n\t\t\t// .empty to toggle anchornav\r\n\t\t\tif (items.length > 0) {\r\n\t\t\t\tblock.show();\r\n\t\t\t\tfilter.elms.blocknavElms.find('a[href=\"#' + block.attr('id') + '\"]').removeClass('empty');\r\n\t\t\t} else {\r\n\t\t\t\tblock.hide();\r\n\t\t\t\tfilter.elms.blocknavElms.find('a[href=\"#' + block.attr('id') + '\"]').addClass('empty');\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tinitSpecialDd: function() {\r\n\t\t//console.log( 'filter: initSpecialDd' );\r\n\r\n\t\tvar ddTrigger = $('.searchDd-main');\r\n\t\tvar ddList = $('.searchDd-list');\r\n\t\tvar ddSubTrigger = $('.searchDd-category');\r\n\t\tvar ddSubList = $('.searchDd-sublist');\r\n\t\tvar ddSubListTrigger = ddSubList.find( '[data-product-search-value]' );\r\n\t\tvar clearTrigger = $('.searchDd-clear');\r\n\r\n\t\t// Set Special Dropdown Text\r\n\t\tif ( productPage.productSearchValue ) {\r\n\r\n\t\t\tvar filterText = ddSubListTrigger.filter( '[data-product-search-value=' + productPage.productSearchValue + ']' ).text();\r\n\t\t\tfilter.setSpecialDdText(filterText);\r\n\t\t}\r\n\r\n\r\n\t\t// Set Scrollbar\r\n\t\tddSubList.mCustomScrollbar( {\r\n\t\t\taxis:'y',\r\n\t\t\ttheme: 'light-2'\r\n\t\t} );\r\n\r\n\t\t// Add Event Listeners\r\n\t\tclearTrigger.on( 'click', onClearTriggerClick );\r\n\t\tddTrigger.on( 'click', onDdTriggerClick );\r\n\t\tddSubTrigger.on('click', onDdSubTriggerClick );\r\n\t\tddSubListTrigger.on( 'click', onDdSubListTriggerClick );\r\n\t\t$( document ).on( 'click', onDocumentClick );\r\n\r\n\t\t// Event Listeners\r\n\t\tfunction onClearTriggerClick( e ) {\r\n\t\t\t//console.log( 'filter: onClearTriggerClick' );\r\n\r\n\t\t\tddTrigger.trigger( 'click' );\r\n\r\n\t\t\twindow.location.href = productPage.productBaseUrl;\r\n\r\n\t\t}\r\n\r\n\t\tfunction onDdTriggerClick( e ) {\r\n\t\t\t//console.log( 'filter: onDdTriggerClick' );\r\n\r\n\t\t\t$(this).toggleClass('open');\r\n\t\t\tddList.toggleClass('open');\r\n\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tfilter.undoSpecialDd();\r\n\t\t\t}, 100);\r\n\r\n\t\t}\r\n\r\n\t\tfunction onDdSubTriggerClick( e ) {\r\n\t\t\t//console.log( 'filter: onDdSubTriggerClick' );\r\n\r\n\t\t\tif (windowWidth <= tabletWide) {\r\n\r\n\t\t\t\t$(this).closest(ddSubTrigger).toggleClass('open');\r\n\t\t\t\t$(this).closest(ddSubTrigger).siblings('.searchDd-category.open').removeClass('open').find(ddSubList).slideUp();\r\n\t\t\t\t$(this).closest(ddSubTrigger).find(ddSubList).slideToggle();\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tfunction onDdSubListTriggerClick( e ) {\r\n\t\t\t//console.log( 'filter: onDdSubListTriggerClick' );\r\n\r\n\t\t\tvar selectedEl = $( this );\r\n\r\n\t\t\tvar filterType = selectedEl.closest( '.searchDd-category' ).data( 'product-search-type' );\r\n\t\t\tvar filterValue = $.trim( selectedEl.data( 'product-search-value' ) );\r\n\t\t\tvar filterText = selectedEl.text();\r\n\r\n\t\t\tfilter.setSpecialDdText( filterText );\r\n\r\n\t\t\twindow.location.href = productPage.productBaseUrl + filterType + '/' + filterValue;\r\n\r\n\t\t}\r\n\r\n\t\tfunction onDocumentClick( e ) {\r\n\t\t\t//console.log( 'filter: onDocumentClick' );\r\n\r\n\t\t\tif(!$(e.target).closest('#searchDd').length) {\r\n\t\t\t\tif (ddTrigger.hasClass('open')) {\r\n\t\t\t ddTrigger.removeClass('open');\r\n\t\t\t\t\tddList.removeClass('open');\r\n\t\t\t\t\tfilter.undoSpecialDd();\r\n\t\t\t\t}\r\n\t\t }\r\n\t\t}\r\n\t},\r\n\r\n\tundoSpecialDd: function() {\r\n\t\t$('.searchDd-category').removeClass('open');\r\n\t\t$('.searchDd-sublist').slideUp();\r\n\t\tsetTimeout(function(){\r\n\t\t\t$('.searchDd-sublist').removeAttr('style');\r\n\t\t},500);\r\n\t},\r\n\r\n\tsetSpecialDdText: function( filterText ) {\r\n\t\t//console.log( 'filter: setSpecialDdText', filterText );\r\n\r\n\t\tif ( filterText ) {\r\n\r\n\t\t\t// Close the Dropdown if Open\r\n\t\t\tif ( $('.searchDd-main').hasClass('open') )\r\n\t\t\t\t$('.searchDd-main').trigger( 'click' );\r\n\r\n\t\t\t// Set the Dropdown Text\r\n\t\t\t$( '.searchDd-main' ).text( filterText );\r\n\r\n\t\t\t// Show the Option to Reset the Dropdown\r\n\t\t\tif ( $( '.searchDd-clear' ).hasClass( 'hide' ) )\r\n\t\t\t\t$( '.searchDd-clear' ).removeClass( 'hide' );\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tinit: function() {\r\n\t\t//console.log( 'filter: init' );\r\n\r\n\t\tif (filter.elms.triggerElms && filter.elms.containerElms) {\r\n\r\n\t\t\t// if elements are present init events\r\n\t\t\tfilter.elms.clearElms.on('click', filter.clearFilters);\r\n\t\t\tfilter.elms.triggerElms.on('change', filter.onFilterChange );\r\n\r\n \r\n\t\t\t// if there's a predefined value on the filter (user is back to page with an active filter), apply filter (by dispatching change event)\r\n\t\t // this should only be run on the eu brands page\t\t\t\r\n\t\t\tif (filter.elms.triggerElms.length && filter.elms.triggerElms[0].value != 'clearSelect' && !filter.elms.productCategory) {\r\n\t\t\t\tfilter.elms.triggerElms.change();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Init Special Dropdown if Applicable\r\n\t\tif ( $( '.searchDd-main' ).length )\r\n\t\t filter.initSpecialDd();\r\n\t},\r\n\r\n\t// ----- EVENT LISTENERS ----- //\r\n\tonFilterChange: function( e ) {\r\n\t\t//console.log( 'filter: onFilterChange' );\r\n\r\n\t\tvar selectedEl = $( this );\r\n\r\n\t\tvar filterValue = $.trim( selectedEl.val() );\r\n\t\tfilter.applyCategoryFilter( filterValue );\r\n\r\n\t\tif ($('.page-products-new').length || $('.page-products').length) {\r\n\t\t\tfilter.allProducts_text = filter.elms.pageTitle.text();\r\n\t\t\tfilter.viewAllFilter_text = $('.searchDd-main').text();\r\n\t\t}\r\n\r\n\t}\r\n};","var form = {\r\n\tcontainer: $('form'),\r\n\tsuperLabelsContainer: $('.super-labels'),\r\n\tselectWrapper: $('.select-wrapper'),\r\n\tselect: $('select'),\r\n\tpaddingInputs: {\r\n\t\tnewsletter: $('.form-single-item'),\r\n\t\tsmartSearchForm: $('.smart-search-form'),\r\n\t},\r\n\ttypeInputs: {\r\n\t\tfreetext: $('input[type=\"text\"]'),\r\n\t\tpassword: $('input[type=\"password\"]'),\r\n\t\temail: $('input[type=\"email\"]'),\r\n\t\ttextarea: $('textarea'),\r\n\t},\r\n\r\n\tbindSuperlabels: function() {\r\n\r\n\t\tvar forms = form.paddingInputs.newsletter.add(\r\n\t\t\tform.paddingInputs.smartSearchForm\r\n\t\t);\r\n\r\n\t\tform.superLabelsContainer.superLabels({\r\n\t\t\tlabelTop: 7,\r\n\t\t\tlabelLeft: 5,\r\n\t\t\trtl: $('body').hasClass('layout-reversed')\r\n\t\t});\r\n\r\n\t\tforms.superLabels({\r\n\t\t\tlabelLeft: 11,\r\n\t\t\tlabelTop: 11,\r\n\t\t\tnoAnimate: true,\r\n\t\t\trtl: $('body').hasClass('layout-reversed')\r\n\t\t});\r\n\r\n\t},\r\n\r\n\r\n\tsuperLabelsCheck: function() {\r\n\t\tvar $label = form.paddingInputs.smartSearchForm.find('.sl_label');\r\n\t\tvar $input = form.paddingInputs.smartSearchForm.find('.sl_field');\r\n\r\n\t\t// If there is a value in the field, hide the label\r\n\t\tif ( $input.val() ) {\r\n\t\t\t$label.hide();\r\n\t\t}\r\n\t},\r\n\r\n\r\n\tddSelect: function() {\r\n\t\tvar countrySelect = $('#CountryOfResidence');\r\n\t\t//console.log('actual CountryOfResidence select element value :', countrySelect[0].value);\r\n\r\n\t\tif (!isTouch) {\r\n\t\t\tif (form.selectWrapper.length) {\r\n\r\n\t\t\t\t// temp fix so it doesn't break #map-categories dropdown\r\n\t\t\t\tif ( form.selectWrapper.attr('id') !== 'map-categories' ){\r\n\t\t\t\t\tform.selectWrapper.find(form.select).dropkick();\r\n\t\t\t\t}\r\n\t\t\t\tif (countrySelect.length) {\r\n\t\t\t\t\tvar countrySelectDropKick = new Dropkick('#CountryOfResidence');\r\n\t\t\t\t\tcountrySelect.change(function(){\r\n\t\t\t\t\t\tcountrySelectDropKick.refresh();\r\n\t\t\t\t\t\t$(this).closest(form.selectWrapper).find('.dk-select').removeClass('select-hidden');\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t// AUTOFILL HACK (detect animation set to webkit-autofill selector)\r\n\t\t\t\t\tcountrySelect[0].addEventListener(\"animationstart\", function() {\r\n\t\t\t\t\t\t// console.log('autofill hack');\r\n\t\t\t\t\t countrySelectDropKick.refresh();\r\n\t\t\t\t\t $(this).closest(form.selectWrapper).find('.dk-select').removeClass('select-hidden');\r\n\t\t\t\t\t}, false);\r\n\r\n\t\t\t\t\t// countrySelect.allchange(function () {\r\n\t\t\t\t\t// \tconsole.log('autofill hack');\r\n\t\t\t\t\t// //select.value = this[0].value;\r\n\t\t\t\t\t// select.refresh();\r\n\t\t\t\t\t// $(this).closest(form.selectWrapper).find('.dk-select').removeClass('select-hidden');\r\n\t\t\t\t\t// });\r\n\t\t\t\t}\r\n\t\t\t\t// form.select.addClass('select-hidden');\r\n\r\n\t\t\t\tif ( form.selectWrapper.attr('id') !== 'map-categories' ){\r\n\t\t\t\t\tform.select.addClass('select-hidden').attr('tabindex', -1);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// form.selectWrapper.each(function(){\r\n\t\t\t\t// \tvar errorMsg = $(this).next('span');\r\n\r\n\t\t\t\t// \t$(errorMsg).bind('DOMNodeInserted', function() {\r\n\t\t\t\t// \t\tconsole.log('select error inserted');\r\n\t\t\t\t// \t\t$(this).prev(form.selectWrapper).find('.dk-selected').addClass('select-error');\r\n\t\t\t\t// \t});\r\n\r\n\t\t\t\t// \t$(errorMsg).bind('DOMNodeRemoved', function() {\r\n\t\t\t\t// \t\tconsole.log('select error removed');\r\n\t\t\t\t// \t\t$(this).prev(form.selectWrapper).find('.dk-selected').removeClass('select-error');\r\n\t\t\t\t// \t});\r\n\t\t\t\t// });\r\n\r\n\t\t\t\t// $('.dk-option').click(function() {\r\n\t\t\t\t// \t$(this).closest('.dk-selected').removeClass('select-error');\r\n\t\t\t\t// \t$(this).closest(form.selectWrapper).next('span').removeClass('field-validation-error').addClass('field-validation-valid').empty();\r\n\t\t\t\t// });\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tkeyboardAmends: function() {\r\n\r\n\t},\r\n\r\n\tpreventZoom: function() {\r\n\t\tif (isTouch) {\r\n\t\t\tvar searchHeader = $('#search');\r\n\t\t\tvar allInputs = searchHeader;\r\n\t\t\tallInputs.css('font-size', '16px');\r\n\t\t}\r\n\t},\r\n\r\n\thiddenForm: {\r\n\t\twrapper: $('.with-hidden-form'),\r\n\t\topenEl: $('.hidden-form-open'),\r\n\t\tcloseEl: $('.hidden-form-close'),\r\n\t\tcontentEl: $('.hidden-form'),\r\n\r\n\t\topenForm: function() {\r\n\t\t\tform.hiddenForm.openEl.click(function(event){\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t\t$(this).hide().closest(form.hiddenForm.wrapper).find(form.hiddenForm.contentEl).slideDown(500, function(){\r\n\t\t\t\t\t\t$(this).closest(form.hiddenForm.wrapper).find(form.hiddenForm.closeEl).fadeIn();\r\n\t\t\t\t\t});\r\n\t\t\t\t$(this).closest('form').find('input').first().focus();\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tcloseForm: function() {\r\n\t\t\tform.hiddenForm.closeEl.click(function(event){\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t\t$(this).fadeOut();\r\n\t\t\t\t$(this).closest(form.hiddenForm.wrapper).find(form.hiddenForm.openEl).show();\r\n\t\t\t\t$(this).fadeOut().closest(form.hiddenForm.wrapper).find(form.hiddenForm.contentEl).slideUp();\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tinit: function() {\r\n\t\t\tform.hiddenForm.openForm();\r\n\t\t\tform.hiddenForm.closeForm();\r\n\t\t}\r\n\t},\r\n\r\n\tbuttonRadio: {\r\n\t\twrapperEl: $('.button-radio-wrapper'),\r\n\t\tinputEl: $('.button-radio').find('input'),\r\n\t\tbuttonEl: $('.button-radio').find('.button'),\r\n\r\n\t\thighlightOnLoad: function() {\r\n\t\t\tform.buttonRadio.inputEl.each(function() {\r\n\t\t\t\tif ($(this).is(':checked') === true) {\r\n\t\t\t\t\t$(this).siblings('.button').addClass('inverted');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tradioUpdate: function() {\r\n\t\t\tform.buttonRadio.buttonEl.click(function() {\r\n\t\t\t\t$(this).addClass('inverted');\r\n\t\t\t\t$(this).siblings('input').attr('checked', true);\r\n\t\t\t\t$(this).closest('.button-radio').siblings('.button-radio').find('input').removeAttr('checked');\r\n\t\t\t\t$(this).closest('.button-radio').siblings('.button-radio').find('.button').removeClass('inverted');\r\n\r\n\t\t\t\tif(isiPhone > -1 || isiPad > -1 || isiPod > -1) {\r\n\t\t\t\t\tform.buttonRadio.inputEl.checkboxradio('refresh');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tform.profileForm.enableFormSubmit();\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tinit: function() {\r\n\t\t\tif (form.buttonRadio.wrapperEl.length) {\r\n\t\t\t\tform.buttonRadio.highlightOnLoad();\r\n\t\t\t\tform.buttonRadio.radioUpdate();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\ttooltip: {\r\n\t\twrapperEl: $('.tooltip-wrapper'),\r\n\t\ttriggerEl: $('.tooltip-trigger'),\r\n\t\tcontentEl: $('.tooltip-content'),\r\n\r\n\t\tshowHide: function() {\r\n\t\t\tif (form.tooltip.wrapperEl.length) {\r\n\t\t\t\t$(document).click(function(event) {\r\n\t\t\t\t\tif (!$(event.target).closest('.tooltip-wrapper').length) {\r\n\t\t\t\t\t\tform.tooltip.contentEl.fadeOut();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tform.tooltip.triggerEl.click(function(event) {\r\n\t\t\t\t\t$(this).closest(form.tooltip.wrapperEl).find(form.tooltip.contentEl).fadeToggle();\r\n\t\t\t\t\tform.tooltip.triggerEl.not($(this)).closest(form.tooltip.wrapperEl).find(form.tooltip.contentEl).fadeOut();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tyourBrands: {\r\n\t\twrapperEl: $('#yourBrands'),\r\n\r\n\t\tnumberOfChecked: function() {\r\n\t\t\tvar checkedItems = form.yourBrands.wrapperEl.find(':checked');\r\n\t\t\tvar numChecked = checkedItems.length;\r\n\t\t\tconsole.log(numChecked);\r\n\r\n\t\t\tif (numChecked >= 20) {\r\n\t\t\t\tform.yourBrands.wrapperEl.find('input[type=\"checkbox\"]:not(:checked)').each(function(){\r\n\t\t\t\t\t$(this).attr('disabled', true);\r\n\t\t\t\t\t$(this).closest('.checkbox-wrap').addClass('disabled');\r\n\t\t\t\t});\r\n\t\t\t} else if (numChecked < 20 && $('.checkbox-wrap.disabled').length) {\r\n\t\t\t\tform.yourBrands.wrapperEl.find('input[type=\"checkbox\"]:not(:checked)').each(function(){\r\n\t\t\t\t\t$(this).attr('disabled', false);\r\n\t\t\t\t\t$(this).closest('.checkbox-wrap').removeClass('disabled');\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tdisableCheckboxes: function() {\r\n\t\t\t// Treat each checkbox separately\r\n\t\t\tform.yourBrands.wrapperEl.find('input[type=\"checkbox\"]').each(function(){\r\n\t\t\t\t// Watch checkbox changes\r\n\t\t\t\t$(this).on('change', function() {\r\n\t\t\t\t\tform.yourBrands.numberOfChecked();\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tinit: function() {\r\n\t\t\tif (form.yourBrands.wrapperEl.length) {\r\n\t\t\t\tform.yourBrands.disableCheckboxes();\r\n\t\t\t\tform.yourBrands.numberOfChecked();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t// Force to uncheck on click when it comes checked by default from umbraco\r\n\tcheckedCheckbox: {\r\n\t\tcheckbox: $('.checkbox-wrap'),\r\n\r\n\t\tforceUncheck: function() {\r\n\t\t\tform.checkedCheckbox.checkbox.click(function(){\r\n\t\t\t\t$(this).find('[checked=\"checked\"]').removeAttr('checked').prop('checked', true);\r\n\r\n\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t$(this).find('[checked=\"checked\"]').prop('checked', false);\r\n\t\t\t\t},500);\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\tprofileForm: {\r\n\t\tform: undefined,\r\n\t\tformSubmitBtn: undefined,\r\n\t\tinit: function() {\r\n\t\t\t// get form profile btn\r\n\t\t\tthis.formSubmitBtn = $('#profileFormSubmit')[0];\r\n\r\n\t\t\tif (this.formSubmitBtn){\r\n\r\n\t\t\t\t// only enable submit when inputs have changed\r\n\r\n\t\t\t\tthis.form = $(this.formSubmitBtn).closest('form');\r\n\r\n\t\t\t\tconsole.log('window.getAndroidVersion: ', window.getAndroidVersion());\r\n\t\t\t\tconsole.log('window.getAndroidVersion parsed: ', parseInt(getAndroidVersion(), 10));\r\n\r\n\t\t\t\tthis.formSubmitBtn.setAttribute(\"disabled\", \"disabled\");\r\n\r\n\t\t\t\t$(this.form).delegate(':input', 'change', function(e){\r\n\t\t\t\t\tconsole.log('delegate change event on form input: ', e);\r\n\t\t\t\t\tif (e.target.name === \"__RequestVerificationToken\") { return; }\r\n\r\n\t\t\t\t\tif (e.originalEvent.isTrusted){\r\n\t\t\t\t\t\tform.profileForm.enableFormSubmit();\r\n\t\t\t\t\t\t$(this.form).undelegate('change');\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t$(this.form).delegate(':input', 'keyup', function(e){\r\n\t\t\t\t\tconsole.log('delegate keyup event on form input: ', e);\r\n\t\t\t\t\tif (e.target.name === \"__RequestVerificationToken\") { return; }\r\n\r\n\t\t\t\t\tif (e.originalEvent.isTrusted){\r\n\t\t\t\t\t\tform.profileForm.enableFormSubmit();\r\n\t\t\t\t\t\t$(this.form).undelegate('keyup');\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t$(this.form).delegate(':input', 'keydown', function(e){\r\n\t\t\t\t\tconsole.log('delegate keydown event on form input: ', e);\r\n\t\t\t\t\tif (e.target.name === \"__RequestVerificationToken\") { return; }\r\n\r\n\t\t\t\t\tif (e.originalEvent.isTrusted){\r\n\t\t\t\t\t\tform.profileForm.enableFormSubmit();\r\n\t\t\t\t\t\t$(this.form).undelegate('keydown');\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t// doesn't work in samsung internet browser?\r\n\t\t\t $('.select-hidden').one('change', function(e){\r\n\t\t\t \tconsole.log(\"$('.select-hidden') one change, e: \", e);\r\n\t\t\t \tform.profileForm.enableFormSubmit();\r\n\t\t\t });\r\n\r\n\t\t\t // TEST\r\n\t\t\t $('.select-hidden').on('change', function(e){\r\n\t\t\t \tconsole.log(\"$('.select-hidden') on change, e: \", e);\r\n\t\t\t \tform.profileForm.enableFormSubmit();\r\n\t\t\t });\r\n\r\n\t\t\t // TEST\r\n\t\t\t $('form :input').one('change keyup', function(e){\r\n\t\t\t \tconsole.log('$(\"form :input\") on change keyup, e: ', e);\r\n\r\n\t\t\t \t// why does it fire a change (and keyup) event on CurrentPassword and ConfirmNewEmail on page load?\r\n\t\t\t \tif (e.originalEvent.isTrusted){\r\n\t\t\t \t\tform.profileForm.enableFormSubmit();\r\n\t\t\t \t}\r\n\t\t\t });\r\n\t\t\t}\r\n\t\t},\r\n\t\tenableFormSubmit: function(){\r\n\t\t\tconsole.log('enableFormSubmit');\r\n\t\t\tif (this.formSubmitBtn){\r\n\t\t\t\tthis.formSubmitBtn.removeAttribute(\"disabled\");\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tshowPassEls: {\r\n\t\twrapper: $('.password-show-wrapper'),\r\n\t\ttrigger: $('.password-show-trigger')\r\n\t},\r\n\r\n\tshowPassword: function() {\r\n\t\tform.showPassEls.trigger.click(function(e){\r\n\t\t\te.preventDefault();\r\n\t\t\tvar _this = $(this);\r\n\t\t\tvar show = _this.attr('data-showcopy');\r\n\t\t\tvar hide = _this.attr('data-hidecopy');\r\n\t\t\tvar wrapper = _this.closest(form.showPassEls.wrapper);\r\n\t\t\tvar input = wrapper.find('input');\r\n\t\t\tvar type = input.attr('type');\r\n\t\t\tconsole.log('input type is', type);\r\n\r\n\t\t\tvar changeTriggerTo = type === 'password' ? hide : show;\r\n\t\t\tvar changeInputTo = type === 'password' ? 'text' : 'password';\r\n\r\n\t\t\t_this.text(changeTriggerTo);\r\n\t\t\tinput.attr('type', changeInputTo);\r\n\t\t});\r\n\t},\r\n\r\n\tinit: function() {\r\n\t\tform.bindSuperlabels();\r\n\t\tform.ddSelect();\r\n\t\tform.hiddenForm.init();\r\n\t\tform.buttonRadio.init();\r\n\t\tform.tooltip.showHide();\r\n\t\tform.yourBrands.init();\r\n\t\tform.checkedCheckbox.forceUncheck();\r\n\r\n\t\tform.superLabelsCheck();\r\n\r\n\t\tif (form.showPassEls.wrapper.length) {\r\n\t\t\tform.showPassword();\r\n\t\t}\r\n\r\n\t\t// enabling/disabling submit functionality\r\n\t\t// form.profileForm.init();\r\n\r\n\t\tif (windowWidth >= desktop) {\r\n\t\t\tform.keyboardAmends();\r\n\t\t}\r\n\t}\r\n};\r\n\r\n// $.fn.allchange = function (callback) {\r\n// \tvar me = this;\r\n// \tvar last = '';\r\n// \tvar infunc = function () {\r\n// \t\tvar text = $(me).val();\r\n// \t\tif (text !== last) {\r\n// \t\t\tlast = text;\r\n// \t\t\tcallback();\r\n// \t\t\t// callback.apply(me);\r\n// \t\t}\r\n// \t\tsetTimeout(infunc, 100);\r\n// \t};\r\n// \tsetTimeout(infunc, 100);\r\n// };","var fullImgSlide = {\r\n\ttargetEl: $('.full-bleed-img-carousel'),\r\n\r\n\tcheckIfApplicable: function() {\r\n\t\tfullImgSlide.targetEl.each(function() {\r\n\t\t\tvar _this = $(this);\r\n\t\t\tvar slides = _this.find('.carousel-cell').length;\r\n\t\t\tif (slides > 1) {\r\n\t\t\t\tfullImgSlide.setUp(_this);\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\tsetUp: function(targetSlide) {\r\n\t\ttargetSlide.flickity({\r\n\t\t\twrapAround: true,\r\n\t\t\timagesLoaded: true,\r\n\t\t\tprevNextButtons: false,\r\n\t\t\trightToLeft: window.rtl\r\n\t\t});\r\n\t},\r\n\r\n\tinit: function() {\r\n\t\tif (fullImgSlide.targetEl.length) {\r\n\t\t\tfullImgSlide.checkIfApplicable();\r\n\t\t}\r\n\t}\r\n};","var gallery = {\r\n\tmodal: '#gallery-modal',\r\n\timage: $('.modal-gallery-image-wrapper img'),\r\n\tcontent: $('.modal-gallery-content-wrapper'),\r\n\tcontent_inner: $('.modal-gallery-content-inner'),\r\n\tcounter: $('.gallery-slide-counter'),\r\n\tprevNext_wrapper: $('.gallery-slide-nav'),\r\n\ttrigger_nav: $('[data-gallery-nav]'),\r\n\ttrigger_prev: $('[data-gallery-prev]'),\r\n\ttrigger_next: $('[data-gallery-next]'),\r\n\r\n\tsetupModal: function(slideId) {\r\n\r\n\t\t//console.log('gallery: setupModal');\r\n\t\tvar slide_ammount = $('[data-gallery-index]').length;\r\n\t\tvar trigger = $('[data-gallery-index=\"' + slideId + '\"]');\r\n\t\tvar content = trigger.find('.gallery-content');\r\n\t\tvar copy = content.children().clone();\r\n\t\tvar imgUrl = content.data('gallery-image-large');\r\n\r\n\t\tgallery.content_hideShow(slide_ammount, slideId, copy, imgUrl);\r\n\t},\r\n\r\n\tcontent_hideShow: function(slide_ammount, slideId, copy, imgUrl) {\r\n\t//\tconsole.log('gallery: content_hideShow');\r\n\r\n\t\tif ( $(gallery.modal).hasClass('in') ) {\r\n\t\t\t$(gallery.modal).find('.modal-gallery-content-inner').removeClass( \"ellipsis-new\" );\r\n\t\t\tvar fadeOut_items = $(gallery.modal).find('.modal-gallery-content-inner').children('h3, p').add('.modal-gallery-image-wrapper img');\r\n\t\t\tfadeOut_items.animate({'opacity': 0}, 300, function(){\r\n\t\t\t\tconsole.log('gallery: fadeOut');\r\n\t\t\t\tgallery.content_populate(slide_ammount, slideId, copy, imgUrl);\r\n\t\t\t});\r\n\r\n\t\t} else {\r\n\r\n\t\t\tgallery.content_populate(slide_ammount, slideId, copy, imgUrl);\r\n\t\t}\r\n\t},\r\n\r\n\tcontent_populate: function(slide_ammount, slideId, copy, imgUrl) {\r\n\r\n\t\tconsole.log( 'gallery: content_populate populate slide ' + slideId + '/' + slide_ammount );\r\n\t\t// Setup prev/next arrows\r\n\t\tvar prevNext = gallery.getPrevNext(slide_ammount, slideId);\r\n\t\tgallery.trigger_prev.attr( 'data-gallery-nav', prevNext[0] );\r\n\t\tgallery.trigger_next.attr( 'data-gallery-nav', prevNext[1] );\r\n\t\t// Set counter text\r\n\t\tgallery.counter.empty().html(slideId + '/' + slide_ammount);\r\n\t\t// Clean possible previous content\r\n\t\tgallery.content_inner.find('>*:not(div)').remove();\r\n\t\t//remove all instances of the ellipsis class and add them again\r\n\t\tgallery.content_inner.find('.ellipsis-new').remove();\r\n\t\t// Insert content\r\n\t\tcopy.insertBefore(gallery.prevNext_wrapper);\r\n\r\n\t\t// Insert image\r\n\t\tgallery.image.attr('src', imgUrl);\r\n\r\n\t},\r\n\t// Set slide numbers to prev/next navigation\r\n\tgetPrevNext: function(slide_ammount, slideId) {\r\n\t\tvar slide_ammount = parseInt(slide_ammount);\r\n\t\tvar slideId = parseInt(slideId);\r\n\r\n\t\tvar prev = slideId - 1;\r\n\t\tvar next = slideId + 1;\r\n\r\n\t\tif (prev == 0)\r\n\t\t\tprev = slide_ammount;\r\n\r\n\t\tif (next > slide_ammount)\r\n\t\t\tnext = 1;\r\n\r\n\t\treturn [prev, next];\r\n\t},\r\n\r\n\tcheckImgLoad: function() {\r\n\t\tgallery.image.on('load', function(){\r\n\t\t\tconsole.log('gallery: image loaded');\r\n\t\t\tvar _this = $(this);\r\n\t\t\tif (_this.width() > _this.height()){\r\n\t\t\t\t_this.removeAttr('class').addClass('image-landscape');\r\n\t\t\t} else {\r\n\t\t\t\t_this.removeAttr('class').addClass('image-portrait');\r\n\t\t\t}\r\n\t\t\tif ( $(gallery.modal).hasClass('in') ) {\r\n\t\t\t\tconsole.log('gallery: fadeIn');\r\n\t\t\t\tvar fadeIn_items = $(gallery.modal).find('.modal-gallery-content-inner').children('h3, p').add('.modal-gallery-image-wrapper img');\r\n\t\t\t\tfadeIn_items.animate({'opacity': 1}, 300);\r\n\t\t\t} else {\r\n\t\t\t\tmodal.show( gallery.modal );\r\n\t\t\t}\r\n\t\t\tvar ellipsisEl = gallery.content_inner.find('.ellipsis-new');\r\n\t\t\tellipsisNew.applyEllipsis(ellipsisEl);\r\n\t\t});\r\n\t},\r\n\r\n\tnavigateSlide: function() {\r\n\t\t$('[data-gallery-nav]').on('click', function(){\r\n\t\t\tconsole.log('gallery: nav clicked');\r\n\t\t\tvar slideId = $(this).attr('data-gallery-nav');\r\n\t\t\tconsole.log('navigate to: ' + slideId);\r\n\t\t\tgallery.setupModal( slideId );\r\n\t\t});\r\n\t},\r\n\r\n\tinit: function() {\r\n\t\tif ($(gallery.modal).length) {\r\n\t\t\tconsole.log('gallery init')\r\n\t\t\tgallery.navigateSlide();\r\n\t\t\tgallery.checkImgLoad();\r\n\r\n\t\t}\r\n\t}\r\n};\r\n","var gdprDetails = {\r\n\t\temailIn: $('.update-form #Email'),\r\n\t\tmobileIn: $('.update-form #Mobile'),\r\n\t\taddressFirstLine: $('.update-form #AddressLine1'),\r\n\t\taddressSecondLine: $('.update-form #AddressLine2'),\r\n\t\taddressCity: $('.update-form #City'),\r\n\t\tstateToggle: $('.state-toggle'),\r\n\r\n\tgeneric: function() {\r\n\t\tvar checkerItems = [gdprDetails.emailIn, gdprDetails.mobileIn, gdprDetails.addressFirstLine, gdprDetails.addressSecondLine, gdprDetails.addressCity];\r\n\r\n\t\tfor (var i = 0; i < checkerItems.length; i++) {\r\n\r\n\t\t\tgdprDetails.checkInputField(checkerItems[i]);\r\n\t\t}\r\n\t\tgdprDetails.locationToggle();\r\n\t\tgdprDetails.locationDependentChecker();\r\n\r\n\r\n\t\t//$('.save-changes').on('click', gdprDetails.saveChangesGDPR);\r\n\t},\r\n\r\n\r\n\t// saveChangesGDPR: function(){\r\n\t// \tvar checkerItems = [gdprDetails.emailIn, gdprDetails.mobileIn, gdprDetails.addressFirstLine, gdprDetails.addressCity];\r\n //\r\n\t// \tfor (var i = 0; i < checkerItems.length; i++) {\r\n //\r\n\t// \t\tgdprDetails.checkInputField(checkerItems[i]);\r\n\t// \t}\r\n\t// \tgdprDetails.checkLocationStatus();\r\n\t// },\r\n\r\n\t// checkLocationStatus: function(){\r\n\t// \tif($('.gdpr-pref-item.Mobile').hasClass('is-empty') && $('.gdpr-pref-item.Email').hasClass('is-empty')){\r\n //\r\n\t// \t\t$('.gdpr-pref-item.location').addClass('is-empty');\r\n\t// \t\tgdprDetails.locationStatus('no');\r\n\t// \t} else {\r\n //\r\n\t// \t\tgdprDetails.locationStatus('yes');\r\n\t// \t}\r\n\t// },\r\n\r\n\tlocationToggle: function(){\r\n\t\tgdprDetails.stateToggle.on('click', function(e){\r\n\t\t\te.preventDefault();\r\n\t\t});\r\n\t},\r\n\r\n\tlocationAllowed: function(){\r\n\t\tgdprDetails.stateToggle.addClass('allowed');\r\n\t\tgdprDetails.stateToggle.removeClass('not-allowed');\r\n\t\tgdprDetails.stateToggle.attr('data-inputVal', 'true');\r\n\t\tgdprModal.hiddenInputVal(gdprDetails.stateToggle);\r\n\t},\r\n\r\n\tlocationDependentChecker: function(){\r\n\t\tif($('#MobileDependancyCheck').length > 0){\r\n\t\t\tvar mobileCheckVal = $('#MobileDependancyCheck').attr('value').toLowerCase(),\r\n\t\t\t\t\temailCheckVal = $('#EmailDependancyCheck').attr('value').toLowerCase();\r\n\t\t\tif (mobileCheckVal === 'false' && emailCheckVal === 'false'){\r\n\t\t\t\tgdprDetails.locationNotAllowed();\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tlocationNotAllowed: function(){\r\n\t\tgdprDetails.stateToggle.removeClass('allowed');\r\n\t\tgdprDetails.stateToggle.addClass('not-allowed');\r\n\t\tgdprDetails.stateToggle.attr('data-inputVal', 'false');\r\n\t\tgdprModal.hiddenInputVal(gdprDetails.stateToggle);\r\n\t},\r\n\r\n\tlocationStatus: function(ls){\r\n\t\tif(ls === 'yes') {\r\n\t\t\tgdprDetails.stateToggle.parents('.gdpr-pref-item').removeClass('is-empty');\r\n\t\t} else {\r\n\t\t\tgdprDetails.locationNotAllowed();\r\n\t\t}\r\n\t},\r\n\r\n\tcheckInputField: function(inputItem){\r\n\t\tvar inputVal = inputItem.val(),\r\n\t\t\t\tinputId = inputItem.attr('id');\r\n\r\n\t\tif (inputId === 'AddressLine1' || inputId === 'City'){\r\n\t\t\tvar addressVal = gdprDetails.addressFirstLine.val(),\r\n\t\t\t\t\taddressVal2 = gdprDetails.addressSecondLine.val(),\r\n\t\t\t\t\tcityVal = gdprDetails.addressCity.val();\r\n\r\n\t\t\tif(addressVal === '' || cityVal === ''){\r\n\t\t\t\t$('.gdpr-pref-item.post').addClass('is-empty');\r\n\t\t\t} else {\r\n\t\t\t\t$('.gdpr-pref-item.post').removeClass('is-empty');\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif(inputVal === ''){\r\n\t\t\t\t$('.gdpr-pref-item.' + inputId).addClass('is-empty');\r\n\t\t\t\t$('.gdpr-pref-item.' + inputId).find('input').prop('checked', false);\r\n\t\t\t} else {\r\n\t\t\t\t$('.gdpr-pref-item.' + inputId).removeClass('is-empty');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tinputItem.on('change', function(){\r\n\t\t\tvar thisId = $(this).attr('id');\r\n\t\t\tif(thisId === 'AddressLine1' || thisId === 'City'){\r\n\t\t\t\tvar addressVal = gdprDetails.addressFirstLine.val(),\r\n\t\t\t\t\t\tcityVal = gdprDetails.addressCity.val();\r\n\t\t\t\tif(addressVal === '' || cityVal === ''){\r\n\t\t\t\t\t// console.log('One is empty:', addressVal, cityVal);\r\n\t\t\t\t\t$('.gdpr-pref-item.post').addClass('is-empty');\r\n\t\t\t\t\t$('.gdpr-pref-item.post').find('input').prop('checked', false);\r\n\t\t\t\t\t$('#PostOptIn').attr('checked', false);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$('.gdpr-pref-item.post').removeClass('is-empty');\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif($(this).val() === ''){\r\n\t\t\t\t\t$('.gdpr-pref-item.' + thisId).addClass('is-empty');\r\n\t\t\t\t\t$('.gdpr-pref-item.' + thisId).find('input').prop('checked', false);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$('.gdpr-pref-item.' + thisId).removeClass('is-empty');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//gdprDetails.checkLocationStatus();\r\n\t\t});\r\n\t\t//gdprDetails.checkLocationStatus();\r\n\t},\r\n\r\n\tinit: function() {\r\n\t\tif($('.gdpr-new-pref').length > 0){\r\n\t\t\tgdprDetails.generic();\r\n\t\t}\r\n\r\n\t}\r\n};\r\n","var gdprModal = {\r\n\t\telem: $('.gdpr-modal'),\r\n\t\tdetailElem: $('.update-details-modal'),\r\n\t\tbuttonInit: $('#optInContact'),\r\n\t\tbuttonOut: $('#optOutContacts'),\r\n\t\tbuttonNext: $('.next-item'),\r\n\t\tgdprItems: $('.gdpr-modal-content .gdpr-type-item'),\r\n\t\tcurrentNum: $('.page-num .current-num'),\r\n\t\tgenInit: $('.gdpr-details-init'),\r\n\r\n\tgeneric: function() {\r\n\r\n\t\t// var gdprTotal = gdprModal.gdprItems.length;\r\n\t\t// $('.page-num').append(gdprTotal);\r\n\t\t$('.first.pag-num-item').css('display', 'inline');\r\n\t\t$('.second.pag-num-item').hide();\r\n\t\tgdprModal.buttonInit.on('change', function(){\r\n\t\t\tif($(this).is(':checked') === false){\r\n\t\t\t\t$(this).prop('checked', false);\r\n\t\t\t} else {\r\n\t\t\t\t$('.none-selected').hide();\r\n\t\t\t\tgdprModal.modalOpen();\r\n\t\t\t}\r\n\t\t});\r\n\t\tgdprModal.pagModelNum();\r\n\t\tgdprDetails.locationDependentChecker();\r\n\t\tgdprModal.dependancyCheckLocation();\r\n\t\tgdprModal.genInit.on('click', gdprModal.modalOpen);\r\n\t\tgdprModal.buttonOut.on('change', gdprModal.nonSelectHide);\r\n\t\tgdprModal.buttonNext.on('click', function(e){\r\n\t\t\te.preventDefault();\r\n\t\t\tconsole.log('NEXT');\r\n\t\t\tvar $t = $(this);\r\n\t\t\tgdprModal.modalNext($t);\r\n\t\t});\r\n\t\t$('.gdpr-submit').on('click', function (e) {\r\n\t\t\tvar $optIn = $('#optInContact'),\r\n\t\t\t\t\t$optOut = $('#optOutContacts');\r\n\t\t\tif ($optIn.is(':checked') === false && $optOut.is(':checked') === false) {\r\n\t\t\t $('.none-selected').removeClass('hide');\r\n\t\t\t $('.none-selected').show();\r\n\t\t\t e.preventDefault();\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\tpagModelNum: function() {\r\n\t\tvar $pagNum = $('.pag-num-item');\r\n\r\n\t\t$pagNum.each(function(){\r\n\t\t\tvar $currentPagNum = $(this);\r\n\t\t\t\t\tpagText = $currentPagNum.text(),\r\n\t\t\t\t\tclearTextFirst = pagText.substr(1),\r\n\t\t\t\t\tcurrentFirstString = pagText.charAt(0).toString();\r\n\r\n\r\n\t\t\t\t\t$currentPagNum.empty();\r\n\t\t\t\t\t$currentPagNum.html('' + currentFirstString + '' + clearTextFirst);\r\n\t\t});\r\n\r\n\r\n\r\n\t},\r\n\r\n\tnonSelectHide: function(){\r\n\t\tif (gdprModal.buttonInit.is(':checked') === true){\r\n\t\t\tgdprModal.buttonInit.prop('checked', false);\r\n\t\t\t$('.hidden-inputs input').attr('value', false);\r\n\t\t}\r\n\t\t$('.none-selected').hide();\r\n\t},\r\n\r\n\tmodalOpen: function(){\r\n\t\tvar $this = $(this),\r\n\t\t\t\t$thisCheckCheck = $this.is(':checked');\r\n\r\n\t\tif($this.hasClass('gdpr-details-init') === true){\r\n\t\t\tvar $thisId = $this.attr('id');\r\n\t\t\t\t\tgdprModal.modelDetail($thisId, $thisCheckCheck);\r\n\t\t} else {\r\n\t\t\tgdprModal.elem.addClass('show');\r\n\t\t\tif (gdprModal.elem.hasClass('terms-page-modal') === true){\r\n\t\t\t\tif(gdprModal.buttonOut.is(':checked') === true){\r\n\t\t\t\t\tgdprModal.changeCheckState(gdprModal.buttonOut, 'uncheck');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tmodelDetail: function(currentId, checkStatus){\r\n\t\tvar $detailModalItem = $('.update-details-modal .gdpr-type-item');\r\n\r\n\t\t$detailModalItem.each(function(index){\r\n\t\t\tvar $this = $(this),\r\n\t\t\t\t\tcurrentData = $this.attr('data-typeContent');\r\n\t\t\tif(currentData === currentId){\r\n\t\t\t\tif(currentId === 'locationOptInLink'){\r\n\t\t\t\t\tvar lStatus = $('#' + currentId).hasClass('allowed');\r\n\t\t\t\t\tif(lStatus === true){\r\n\t\t\t\t\t\t$this.find('.disable-container').show();\r\n\t\t\t\t\t\t$this.find('.enable-container').hide();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t$this.find('.disable-container').hide();\r\n\t\t\t\t\t\t$this.find('.enable-container').show();\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif(checkStatus === true){\r\n\t\t\t\t\t\t$this.find('.disable-container').hide();\r\n\t\t\t\t\t\t$this.find('.enable-container').show();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t$this.find('.disable-container').show();\r\n\t\t\t\t\t\t$this.find('.enable-container').hide();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$this.show();\r\n\t\t\t}\r\n\t\t});\r\n\t\tgdprModal.elem.addClass('show');\r\n\t},\r\n\r\n\tpaginationClear: function(){\r\n\t\tif(gdprModal.elem.hasClass('terms-page-modal') === true){\r\n\r\n\t\t\tgdprModal.currentNum.empty();\r\n\t\t\tgdprModal.currentNum.append(1);\r\n\t\t\t$('.pag-num-item.first').css('display', 'inline');\r\n\t\t\t$('.pag-num-item.second').hide();\r\n\t\t}\r\n\t},\r\n\r\n\tmodalClose: function(){\r\n\t\tgdprModal.elem.addClass('fade-out');\r\n\t\twindow.setTimeout(gdprModal.modalReset, 300);\r\n\t},\r\n\tmodalReset: function(){\r\n\t\t$('.pag-num-item.first').css('display', 'inline');\r\n\t\t$('.pag-num-item.second').hide();\r\n\t\tgdprModal.elem.removeClass('show');\r\n\t\tgdprModal.elem.removeClass('fade-out');\r\n\t\tgdprModal.gdprItems.hide();\r\n\t\tif (gdprModal.elem.hasClass('terms-page-modal') === true){\r\n\t\t\tvar $firstItem = $('.gdpr-modal-content .gdpr-type-item:first-child');\r\n\t\t\tgdprModal.gdprItems.removeClass('active');\r\n\t\t\t$firstItem.addClass('active');\r\n\t\t\t$firstItem.show();\r\n\t\t}\r\n\t},\r\n\r\n\thiddenInputVal: function($t, isMulti){\r\n\t\tvar inputRel = $t.attr('data-inputRel'),\r\n\t\t\t\tinputVal = $t.attr('data-inputVal');\r\n\r\n\t\t\tif(isMulti === 'yes'){\r\n\t\t\t\t$('.hidden-inputs input').attr('value', false);\r\n\t\t\t}\r\n\t\t\t$('.hidden-inputs input[name=\"' + inputRel + '\"]').attr('value', inputVal);\r\n\t},\r\n\r\n\tmodalNext: function($this){\r\n\t\tvar ind = $this.parents('.gdpr-type-item').index(),\r\n\t\t\t\tindeNext = ind + 2,\r\n\t\t\t\tindeCurrent = ind + 1;\r\n\t\t\t\t$t = $('.gdpr-type-item:nth-child(' + indeNext + ')');\r\n\r\n\t\t\t\tgdprModal.hiddenInputVal($this);\r\n\r\n\t\t\t\tif (gdprModal.elem.hasClass('terms-page-modal') === true){\r\n\t\t\t\t\tgdprModal.multiPageGDPR(indeCurrent, $t, $this);\r\n\t\t\t\t\tgdprModal.currentNum.empty();\r\n\t\t\t\t\tif (indeNext > gdprModal.gdprItems.length){\r\n\t\t\t\t\t\t//gdprModal.currentNum.append(gdprModal.gdprItems.length);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t$('.pag-num-item.second').css('display', 'inline');\r\n\t\t\t\t\t\t$('.pag-num-item.first').hide();\r\n\t\t\t\t\t\tgdprModal.currentNum.append(indeNext);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tgdprModal.modalClose();\r\n\t\t\t\t\tgdprModal.modalReset();\r\n\t\t\t\t\tgdprModal.detailDecision($this);\r\n\t\t\t\t}\r\n\t},\r\n\r\n\r\n\r\n\tdetailDecision: function($this){\r\n\t\tvar parentData = $this.parents('.gdpr-type-item').attr('data-typeContent');\r\n\t\t\tif(parentData === 'locationOptInLink'){\r\n\t\t\t\tif($this.hasClass('allow')){\r\n\t\t\t\t\tgdprDetails.locationAllowed();\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// gdprDetails.init();\r\n\t\t\t\t\tgdprDetails.locationNotAllowed();\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\r\n\t\t\t\tif($this.hasClass('allow')){\r\n\t\t\t\t\t$('#'+ parentData).prop('checked', true);\r\n\t\t\t\t\tif(parentData === 'PushSmsOptIn'){\r\n\t\t\t\t\t\t$('#MobileDependancyCheck').attr('value', true);\r\n\t\t\t\t\t} else if (parentData === 'EmailOptIn'){\r\n\t\t\t\t\t\t$('#EmailDependancyCheck').attr('value', true);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tgdprModal.dependancyCheckLocation();\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$('#'+ parentData).prop('checked', false);\r\n\t\t\t\t\tif(parentData === 'PushSmsOptIn'){\r\n\t\t\t\t\t\t$('#MobileDependancyCheck').attr('value', 'False');\r\n\t\t\t\t\t} else if (parentData === 'EmailOptIn'){\r\n\t\t\t\t\t\t$('#EmailDependancyCheck').attr('value', 'False');\r\n\t\t\t\t\t}\r\n\t\t\t\t\tgdprModal.dependancyCheckLocation();\r\n\t\t\t\t\tgdprDetails.locationDependentChecker();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t},\r\n\r\n\tdependancyCheckLocation: function(){\r\n\r\n\t\tif($('#MobileDependancyCheck').length > 0){\r\n\t\t\tvar mobileCheckVal = $('#MobileDependancyCheck').attr('value').toLowerCase(),\r\n\t\t\t\t\temailCheckVal = $('#EmailDependancyCheck').attr('value').toLowerCase();\r\n\r\n\r\n\t\t\tif (mobileCheckVal === 'false' && emailCheckVal === 'false'){\r\n\t\t\t\t$('.gdpr-pref-item.location').addClass('is-empty');\r\n\r\n\t\t\t} else {\r\n\t\t\t\t$('.gdpr-pref-item.location').removeClass('is-empty');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t},\r\n\r\n\tmultiPageGDPR: function(indeCurrent, $t, $this){\r\n\t\tif (indeCurrent === 1 && $this.hasClass('dont-allow') === true){\r\n\t\t\tgdprModal.changeCheckState(gdprModal.buttonInit, 'uncheck');\r\n\t\t\tgdprModal.changeCheckState(gdprModal.buttonOut, 'check');\r\n\t\t\tgdprModal.modalClose();\r\n\t\t\tgdprModal.hiddenInputVal($t, 'yes')\r\n\r\n\t\t} else {\r\n\t\t\tgdprModal.modalPagination(indeCurrent, $t);\r\n\t\t}\r\n\t},\r\n\r\n\tchangeCheckState: function($checkBox, state){\r\n\t\tif(state === 'check'){\r\n\t\t\t$checkBox.prop('checked', true);\r\n\t\t} else {\r\n\t\t\t$checkBox.prop('checked', false);\r\n\t\t}\r\n\t},\r\n\r\n\tmodalPagination: function(indeCurrent, $t){\r\n\t\tif(gdprModal.elem.hasClass('terms-page-modal') === true){\r\n\t\t\tvar gdprTotal = gdprModal.gdprItems.length;\r\n\t\t\tif(indeCurrent === gdprTotal){\r\n\t\t\t\tgdprModal.modalClose();\r\n\t\t\t} else {\r\n\t\t\t\tgdprModal.gdprItems.hide();\r\n\t\t\t\tgdprModal.gdprItems.removeClass('active');\r\n\t\t\t\t$t.fadeIn();\r\n\t\t\t\t$t.addClass('active');\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tinit: function() {\r\n\t\tgdprModal.generic();\r\n\t}\r\n};\r\n","var cookies = {\r\n\tlegal: 'cookies-legal',\r\n\tlegalContainer: $('.cookies-container'),\r\n\r\n\tcreate: function(name,value,days) {\r\n\t\tvar cookieExpires;\r\n\t\tif (days) {\r\n\t\t\tvar date = new Date();\r\n\t\t\tdate.setTime(date.getTime()+(days*24*60*60*1000));\r\n\t\t\tcookieExpires = '; expires='+date.toGMTString();\r\n\t\t} else {\r\n\t\t\tcookieExpires = '';\r\n\t\t}\r\n\t\tdocument.cookie = name+'='+value+cookieExpires+'; path=/';\r\n\t},\r\n\r\n\tread: function(name) {\r\n\t\tvar nameEQ = name + '=';\r\n\t\tvar ca = document.cookie.split(';');\r\n\t\tfor (var i=0;i < ca.length;i++) {\r\n\t\t\tvar c = ca[i];\r\n\t\t\twhile (c.charAt(0) === ' ') {\r\n\t\t\t\tc = c.substring(1,c.length);\r\n\t\t\t}\r\n\t\t\tif (c.indexOf(nameEQ) === 0) {\r\n\t\t\t\treturn c.substring(nameEQ.length,c.length);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t},\r\n\r\n\tlegalClose: function() {\r\n\t\tvar close = $('.cookies-close');\r\n\r\n\t\tclose.click(function(event) {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tcookies.create('cookies-legal', '', 90);\r\n\t\t\tcookies.legalContainer.fadeOut();\r\n\t\t});\r\n\t},\r\n\r\n\tintroLegal: function() {\r\n\t\tvar exists = document.cookie.indexOf('cookies-legal');\r\n\t\tif (exists === -1) {\r\n\t\t\tcookies.legalContainer.show();\r\n\t\t\tcookies.legalClose();\r\n\t\t}\r\n\t},\r\n\r\n\tinit: function() {\r\n\t\tcookies.introLegal();\r\n\t}\r\n};","var googleMap = {\r\n\r\n\telms: {\r\n\t\tvillageMap: $('#village-google-map')\r\n\t},\r\n\r\n\tloadScript: function() {\r\n\t\tvar apiKey = googleMap.elms.villageMap.attr('data-api');\r\n\r\n\t\tvar script = document.createElement('script');\r\n\t\tscript.type = \"text/javascript\";\r\n\t\tscript.src = 'https://maps.googleapis.com/maps/api/js?key=' + apiKey +\r\n\t\t '&callback=setUP';\r\n\t\t document.body.appendChild(script);\r\n\t},\r\n\r\n\tsetUp: function() {\r\n\t\tvar google = window.google || {};\r\n\r\n\t\tvar lat = parseFloat(googleMap.elms.villageMap.attr('data-lat'));\r\n\t\tvar lng = parseFloat(googleMap.elms.villageMap.attr('data-lng'));\r\n\t\tvar zoom = parseInt(googleMap.elms.villageMap.attr('data-zoom'));\r\n\t\tvar iconImg = googleMap.elms.villageMap.attr('data-marker');\r\n\t\tvar myLatLng = new google.maps.LatLng( lat, lng );\r\n\r\n\t\tvar mapOptions = {\r\n\t\t\tcenter: { lat: lat, lng: lng},\r\n\t\t\tzoom: zoom\r\n\t\t};\r\n\r\n\t\tvar map = new google.maps.Map(document.getElementById('village-google-map'),\r\n\t\tmapOptions);\r\n\r\n\t\tvar marker = new google.maps.Marker({\r\n\t\t\tposition: myLatLng,\r\n\t\t\tmap: map,\r\n\t\t\ticon: iconImg\r\n\t\t});\r\n\t},\r\n\r\n\tinit: function() {\r\n\r\n\t\tif ( googleMap.elms.villageMap.length > 0 ) {\r\n\t\t\twindow.setUP = googleMap.setUp;\r\n\r\n\t\t\tgoogleMap.loadScript();\r\n\t\t}\r\n\t}\r\n};\r\n","var heroNav = {\r\n\twrapper: $('.hero-nav-wrapper'),\r\n\ttriggerButton: $('.hero-nav-list-item a'),\r\n\ttriggerDropdown: $('.hero-nav-dropdown select'),\r\n\r\n\tscrollToSection: function(targetId) {\r\n\t\tvar targetId_split = targetId.split('#');\r\n\t\tif (targetId_split[0].length > 0) {\r\n\t\t\ttargetId = '#' + targetId_split[1];\r\n\t\t}\r\n\t\tvar _targetId = $(targetId);\r\n\t\tvar offsetDiff = heroNav.fixOffset(_targetId);\r\n\r\n\t\tif (_targetId && _targetId.offset()) {\r\n\t\t $('html,body').animate({\r\n\t\t scrollTop: _targetId.offset().top - offsetDiff\r\n\t\t }, 300, function () {\r\n\t\t window.location.hash = targetId;\r\n\t\t });\r\n\t\t}\r\n\t},\r\n\r\n\tfixOffset: function(targetId) {\r\n\t\tvar offsetDiff = 20;\r\n\r\n\t\tif (windowWidth >= desktop) {\r\n\t\t\toffsetDiff = 80;\r\n\t\t}\r\n\t\treturn offsetDiff;\r\n\t},\r\n\r\n\teventListeners: function () {\r\n\t\theroNav.triggerButton.click(function(e){\r\n\t\t\te.preventDefault();\r\n\t\t\tvar _this = $(this);\r\n\t\t\tvar targetId = _this.attr('href');\r\n\t\t\theroNav.scrollToSection(targetId);\r\n\t\t});\r\n\r\n\t\theroNav.triggerDropdown.change(function(){\r\n\t\t\tvar _this = $(this);\r\n\t\t\tvar targetId = _this.val();\r\n\t\t\theroNav.scrollToSection(targetId);\r\n\t\t});\r\n\t},\r\n\r\n\thandeOnLoad: function() {\r\n\t\tvar targetSection = window.location.hash;\r\n\t\theroNav.scrollToSection(targetSection);\r\n\t},\r\n\r\n\tinit: function() {\r\n\t\tif (heroNav.wrapper.length) {\r\n\t\t\theroNav.eventListeners();\r\n\t\t\theroNav.handeOnLoad();\r\n\t\t}\r\n\t}\r\n};","/**\r\n * Interactive Map Module for Value Retail Digital\r\n *\r\n * @version 1.0.0\r\n * @authors\r\n * \t\tJaime DeFederico \r\n * \t\tRich Nelson \r\n*/\r\n\r\n\r\nvar InteractiveMap = (function( $ ) {\r\n\r\n\r\n\t/* * * * * PRIVATE * * * * */\r\n\t// Declare properties and methods that should be\r\n\t// private to the object.\r\n\r\n\t/* ----- VARS ----- */\r\n\tvar $categoriesSelect;\r\n\tvar $controls;\r\n\tvar $mapplic;\r\n\tvar $offersEvents;\r\n\tvar $newStores;\r\n\tvar $foodDrink;\r\n/////////////////////////////////////////////\r\n\tvar $location;\r\n\r\n\tvar $search;\r\n\tvar $searchInput;\r\n\tvar $searchCancel;\r\n\tvar $window;\r\n\r\n\tvar __map;\r\n\r\n\tvar __brands;\r\n\tvar __categories;\r\n\tvar __foods;\r\n\tvar __locations;\r\n\r\n\tvar __isTouch;\r\n\tvar __mqMedium;\r\n\r\n\tvar __searchTimer;\r\n var __newCategory;\r\n var __minNewStores;\r\n\r\n\t/* ----- CONSTANTS ----- */\r\n\t// var LOCATION_TYPE_FOOD = 'food';\r\n\r\n\tvar MEDIA_QUERY_MEDIUM = \"screen and ( min-width: 50.0625em )\";\r\n\r\n\tvar SELECTOR_CATEGORIES = \"#map-categories\";\r\n\tvar SELECTOR_CONTROLS = \"#map-controls\";\r\n\tvar SELECTOR_MAPPLIC = \"#mapplic\";\r\n\t// var SELECTOR_OFFERS = \"#map-offers button\";\r\n\tvar SELECTOR_OFFERS_EVENTS = \"#map-offers-events, #map-offers-events-small\";\r\n\tvar SELECTOR_NEW_STORES = \"#map-new-stores, #map-new-stores-small\";\r\n\tvar SELECTOR_FOOD_DRINK = \"#map-food-drink, #map-food-drink-small\";\r\n\tvar SELECTOR_LOCATION = \"#map-location\";\r\n\r\n\tvar SELECTOR_SEARCH = \"#map-search\";\r\n\tvar SELECTOR_SEARCH_CANCEL = \"#map-search__cancel\";\r\n\r\n\tvar STYLE_ACTIVE = \"active\";\r\n\tvar STYLE_EMPTY = \"map-search--empty\";\r\n\tvar STYLE_SEARCH_FOCUS = \"map-controls--search-focus\";\r\n\tvar STYLE_SELECT_HIDDEN = \"select-hidden\";\r\n\tvar STYLE_SELECT_WRAPPER = \"select-wrapper\";\r\n\r\n\tvar TIMEOUT_SEARCH = 1000;\r\n\r\n\r\n\t/* ----- FUNCTIONS ----- */\r\n\tfunction __init() {\r\n\t\t// console.log( \"InteractiveMap: __init\" );\r\n\r\n\t\t$mapplic = $( SELECTOR_MAPPLIC );\r\n\t\t$window = $( window );\r\n\r\n\t\tif ( $mapplic.length > 0 ) {\r\n\r\n\t\t\t__isTouch = ( document.ontouchstart !== undefined );\r\n\r\n\t\t\t__mqMedium = matchMedia( MEDIA_QUERY_MEDIUM );\r\n\t\t\t__mqMedium.addListener( __onMediumMediaQueryChange );\r\n\r\n\t\t\t__addMapplic();\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction __addCategories() {\r\n\t\t// console.log( \"InteractiveMap: __addCategories\" );\r\n\r\n\t\tif ( __categories && __categories.length > 0 ) {\r\n\r\n\t\t\tvar $categories = $( SELECTOR_CATEGORIES );\r\n\t\t\t$categoriesSelect = $categories.find( \"select\" );\r\n\t\t\t$categoriesSelect.prop( \"disabled\", false );\r\n\r\n\t\t\tvar $option;\r\n\r\n\t\t\t$.each( __categories, function( i, category ) {\r\n\r\n\t\t\t\t$option = $(\r\n\t\t\t\t\t''\r\n\t\t\t\t);\r\n\r\n\t\t\t\t$option.appendTo( $categoriesSelect );\r\n\r\n\t\t\t} );\r\n\r\n\t\t\t//$categories.addClass( STYLE_SELECT_WRAPPER );\r\n\r\n\t\t\tif ( !__isTouch ) {\r\n\r\n\t\t\t\t$categoriesSelect.dropkick();\r\n\t\t\t\t$categoriesSelect.addClass( STYLE_SELECT_HIDDEN );\r\n\r\n\t\t\t}\r\n\r\n\r\n\t\t\t// Add Event Listeners\r\n\t\t\t$categoriesSelect.on( \"change\", __onCategoryChange );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction __addControls() {\r\n\t\t// console.log( \"InteractiveMap: __addControls\" );\r\n\r\n\t\t$controls = $( SELECTOR_CONTROLS );\r\n\r\n\t}\r\n\r\n\tfunction __addMapplic() {\r\n\t\tvar source= $mapplic.data( \"api-controller-url\" ) + \"?\" + $mapplic.data( \"language-parameter-name\" ) + \"=\" + $mapplic.data( \"language-node-id\" );\r\n\t\t//enable if testing locally\r\n\r\n\t\t// LOAD MAP FROM QA3 WHEN RUNNING FROM LOCAL\r\n\t\t// if ( window.location.href.indexOf('localhost')!=-1 ) {\r\n\t\t// \tsource= \"https://vrdigital-core-qa3.azurewebsites.net/Umbraco/Api/VillageMapApi/GetVillageMap?languageNodeId=1057\";\r\n\t\t// }\r\n\r\n\t\t// console\t.log( \"InteractiveMap: __addMapplic\" );\r\n\t\t// Debug/Developer\r\n\t\tvar debug = __getParameterByName( \"debug\" ) === \"true\";\r\n\r\n\t\t// Get DisplayMode\r\n\t\tvar displayMode = ( __mqMedium.matches ) ? 1 : 0;\r\n\t\t// Instantiate Mapplic on Container\r\n\t\t$mapplic.mapplic( {\r\n\t\t\tdebug: debug,\r\n\t\t\tdisplayMode: displayMode,\r\n\t\t\tmaxscale: 3,\r\n\t\t\tsource: source\r\n\t\t} );\r\n\r\n\t\t// Add Listeners\r\n\t\t$mapplic.on( \"load.mapplic.data\", __onMapData );\r\n\t\t$mapplic.on( \"close.mapplic.location\", __onMapLocationClose );\r\n\t\t$mapplic.on( \"open.mapplic.location\", __onMapLocationOpen );\r\n\t\t$mapplic.on( \"ready.mapplic.map\", __onMapReady );\r\n\t\t$mapplic.on( \"link.mapplic.tooltip\", __onMapTooltipLink );\r\n\t}\r\n\r\n\tfunction __addOffersEvents() {\r\n\t\t// console.log( \"InteractiveMap: __addOffersEvents\" );\r\n\r\n\t\t$offersEvents = $( SELECTOR_OFFERS_EVENTS );\r\n\t\t$offersEvents.prop( \"disabled\", false );\r\n\t\t$offersEvents.on( \"click\", __onOffersEventsClick );\r\n\t}\r\n\r\n function __showHideOffersAndNewStoresButtons() {\r\n if (__locations && __locations.length > 0) {\r\n\r\n $offersEvents = $(SELECTOR_OFFERS_EVENTS);\r\n $newStores = $(SELECTOR_NEW_STORES);\r\n $foodDrink = $(SELECTOR_FOOD_DRINK);\r\n\r\n var mapHasNewStores = __locations.filter(function (a) {\r\n return a.categories.includes(__newCategory);\r\n }).length >= __minNewStores;\r\n\r\n var mapHasOffers = __locations.filter(function (a) {\r\n return a.offersAndEvents;\r\n }).length > 0;\r\n\r\n if (mapHasNewStores && mapHasOffers) {\r\n $foodDrink.removeClass('map-food-drink-single');\r\n $offersEvents.removeClass('hidden');\r\n $newStores.removeClass('hidden');\r\n __addOffersEvents();\r\n __addNewStores();\r\n } else if (mapHasNewStores) {\r\n $foodDrink.removeClass('map-food-drink-single');\r\n $newStores.removeClass('map-control-new-stores hidden')\r\n .addClass('map-control-single');\r\n __addNewStores();\r\n } else if (mapHasOffers) {\r\n $foodDrink.removeClass('map-food-drink-single');\r\n $offersEvents.removeClass('map-control-offers-events hidden')\r\n .addClass('map-control-single');\r\n __addOffersEvents();\r\n }\r\n }\r\n\t}\r\n\t\r\n\tfunction __addNewStores() {\r\n\t\t// console.log( \"InteractiveMap: __addNewStores\" );\r\n\r\n\t\t$newStores = $( SELECTOR_NEW_STORES );\r\n\t\t$newStores.prop( \"disabled\", false );\r\n\t\t$newStores.on( \"click\", __onNewStoresClick );\r\n\r\n\t}\r\n\r\n\tfunction __addFoodDrink() {\r\n\t\t// console.log( \"InteractiveMap: __addFoodDrink\" );\r\n\r\n\t\t$foodDrink = $( SELECTOR_FOOD_DRINK );\r\n\t\t$foodDrink.prop( \"disabled\", false );\r\n\t\t$foodDrink.on( \"click\", __onFoodDrinkClick );\r\n\r\n\t}\r\n\r\n\tfunction __addLocation(){\r\n\t\t$location = $( SELECTOR_LOCATION );\r\n\t\t$location.prop( \"disabled\", false );\r\n\t\t$location.on( \"click\", __onLocationClick );\r\n\t}\r\n\r\n\tfunction __addSearch() {\r\n\t\t// console.log( \"InteractiveMap: __addSearch\" );\r\n\r\n\t\t// Search\r\n\t\t$search = $( SELECTOR_SEARCH );\r\n\t\t$search.addClass( STYLE_EMPTY );\r\n\r\n\t\t$searchInput = $search.find( \"input\" );\r\n\t\t$searchInput.prop( \"disabled\", false );\r\n\t\t$searchInput.typeahead({\r\n\t\t\thint: false,\r\n\t\t\thighlight: false,\r\n\t\t\tminLength: 1\r\n\t\t},\r\n\t\t{\r\n\t\t\tdisplay: \"title\",\r\n\t\t\tlimit: 12,\r\n\t\t\tname: \"map\",\r\n\t\t\tsource: __searchSource( __foods, __locations ),\r\n\t\t\ttemplates: {\r\n\t\t\t\tsuggestion: __searchSuggestion\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// Search Cancel\r\n\t\t$searchCancel = $( SELECTOR_SEARCH_CANCEL );\r\n\t\t$searchCancel.hide();\r\n\r\n\t\t// Add Event Listeners\r\n\t\t$searchInput.on( \"typeahead:active\", _onSearchActive );\r\n\t\t$searchInput.on( \"typeahead:change\", __onSearchChange );\r\n\t\t$searchInput.on( \"typeahead:idle\", __onSearchIdle );\r\n\t\t$searchInput.on( \"typeahead:render\", __onSearchRender );\r\n\t\t$searchInput.on( \"typeahead:select\", __onSearchSelect );\r\n\t\t$searchCancel.on( \"click\", __onSearchCancel );\r\n\r\n\t}\r\n\r\n\tfunction __categoryClear() {\r\n\t\t// console.log( \"InteractiveMap: __categoryClear\" );\r\n\r\n\t\tif ( $categoriesSelect ) {\r\n\r\n\t\t\t$categoriesSelect.dropkick( \"reset\", true );\r\n\t\t\t__map.clearHighlight();\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction __categoryHighlight( category ) {\r\n\t\t// console.log( \"InteractiveMap: __categoryHighlight\" );\r\n\r\n\t\tvar exp = new RegExp( \",\" + category, \"i\" );\r\n\r\n\t\tvar ary = __locations.filter( function( a ) {\r\n\t\t\treturn exp.test( a.categories );\r\n\t\t} );\r\n\r\n\t\tary = ary.map( function( a ) { return a.id; } );\r\n\t\t__map.toggleLocationHighlight( ary, true );\r\n\r\n\t\t__trackEvent( \"map\", \"category-select\", null, category );\r\n\r\n\t}\r\n\r\n\tfunction __getParameterByName( name ) {\r\n\r\n\t\tvar url = window.location.href;\r\n\r\n\t\tname = name.replace( /[\\[\\]]/g, \"\\\\$&\" );\r\n\t\tvar regex = new RegExp( \"[?&]\" + name + \"(=([^&#]*)|&|#|$)\" );\r\n\t\tvar results = regex.exec( url );\r\n\r\n\t\tif ( !results )\r\n\t\t\treturn null;\r\n\r\n\t\tif ( !results[ 2 ] )\r\n\t\t\treturn \"\";\r\n\r\n\t\treturn decodeURIComponent( results[ 2 ].replace( /\\+/g, \" \" ) );\r\n\r\n\t}\r\n\r\n\tfunction __offersEventsClear() {\r\n\t\t// console.log( \"InteractiveMap: __offersEventsClear\" );\r\n\r\n\t\t$offersEvents.removeClass( STYLE_ACTIVE );\r\n\t\t__map.removePinHighlight();\r\n\r\n\t}\r\n\r\n\tfunction __offersEventsToggle() {\r\n\t\t// console.log( \"InteractiveMap: __offersEventsToggle\" );\r\n\r\n\t\tvar isOffersEventsActive = $offersEvents.hasClass( STYLE_ACTIVE );\r\n\r\n\t\tvar ary = __locations.filter( function( a ) {\r\n\t\t\treturn a.offersAndEvents;\r\n\t\t} );\r\n\r\n\t\tvar ary = ary.map( function( a ) { \r\n\t\t\treturn a.id;\r\n\t\t} );\r\n\r\n\t\tif ( isOffersEventsActive ) {\r\n\r\n\t\t\t__offersEventsClear();\r\n\t\t\t__map.toggleLocationHighlight( ary );\r\n\r\n\t\t} else {\r\n\r\n\t\t\t$offersEvents.addClass( STYLE_ACTIVE );\r\n\t\t\t__newStoresClear();\r\n\r\n\t\t\t__map.addPinHighlight( ary );\r\n\t\t\t__map.toggleLocationHighlight( ary, true );\r\n\r\n\t\t}\r\n\r\n\t\t__trackEvent( \"map\", \"offersEvents-toggle\", null, !isOffersEventsActive );\r\n\r\n\t}\r\n\r\n\tfunction __newStoresClear() {\r\n\t\t// console.log( \"InteractiveMap: __newStoresClear\" );\r\n\r\n\t\t$newStores.removeClass( STYLE_ACTIVE );\r\n\t\t__map.removePinHighlight();\r\n\r\n\t}\r\n\r\n\tfunction __newStoresToggle() {\r\n\t\t// console.log( \"InteractiveMap: __newStoresToggle\" );\r\n\r\n\t\tvar isNewStoresActive = $newStores.hasClass( STYLE_ACTIVE );\r\n\t\t__offersEventsClear();\r\n\r\n\t\tif ( isNewStoresActive ) {\r\n\r\n\t\t\t__newStoresClear();\r\n\r\n\t\t} else {\r\n\r\n\t\t\t$newStores.addClass( STYLE_ACTIVE );\r\n\r\n\t\t\tvar ary = __locations.filter( function( a ) {\r\n return a.categories.includes(__newCategory);\r\n\t\t\t} );\r\n\r\n\t\t\tvar ary = ary.map( function( a ) { return a.id; } );\r\n\r\n\t\t\t__map.addPinHighlight( ary );\r\n\r\n\t\t}\r\n\r\n\t\t__trackEvent( \"map\", \"newStores-toggle\", null, !isNewStoresActive );\r\n\r\n\t}\r\n\r\n\tfunction __foodDrinkClear() {\r\n\t\t// console.log( \"InteractiveMap: __foodDrinkClear\" );\r\n\r\n\t\t$foodDrink.removeClass( STYLE_ACTIVE );\r\n\t\t__map.clearHighlight();\r\n\r\n\t}\r\n\r\n\tfunction __foodDrinkToggle() {\r\n\t\t// console.log( \"InteractiveMap: __foodDrinkToggle\" );\r\n\r\n\t\tvar isfoodDrinkActive = $foodDrink.hasClass( STYLE_ACTIVE );\r\n\r\n\t\tif ( isfoodDrinkActive ) {\r\n\r\n\t\t\t__foodDrinkClear();\r\n\r\n\t\t} else {\r\n\r\n\t\t\t$foodDrink.addClass( STYLE_ACTIVE );\r\n\r\n\t\t\tvar ary = __locations.filter( function( a ) {\r\n\t\t\t\treturn a.type === 'food';\r\n\t\t\t} );\r\n\r\n\t\t\tvar ary = ary.map( function( a ) { return a.id; } );\r\n\r\n\t\t\t__map.toggleLocationHighlight( ary, true );\r\n\r\n\t\t}\r\n\r\n\t\t__trackEvent( \"map\", \"foodDrink-toggle\", null, !isfoodDrinkActive );\r\n\r\n\t}\r\n\r\n\r\n\tfunction __processData( data ) {\r\n\t\t// console.log( \"InteractiveMap: __processData\" );\r\n\r\n\t\t// Locations\r\n\t\tvar interactiveLocations = data.locations.filter( function( a ) { return a.interactive; } );\r\n\r\n\t\t__locations = interactiveLocations.map( function( a ) {\r\n\r\n\t\t\treturn {\r\n\t\t\t\tid: a.id,\r\n\t\t\t\tcategories: \",\" + a.categories.join( \",\" ),\r\n\t\t\t\tbrands: \",\" + a.brands.join( \",\" ),\r\n\t\t\t\ttype: ( a.type ),\r\n\t\t\t\tnonBrandUnit: ( a.nonBrandUnit ),\r\n\t\t\t\ttitle: a.details.title,\r\n\t\t\t\timage: a.details.image,\r\n\t\t\t\toffersAndEvents: ( a.details.offersAndEvents !== undefined ) && ( a.details.offersAndEvents !== \"\" ) && ( a.details.offersAndEvents.length )\r\n\t\t\t};\r\n\t\t} );\r\n\r\n\t\t// Brands\r\n\t\t//__brands = data.brands;\r\n\r\n\t\t// Categories\r\n __categories = data.categories;\r\n __newCategory = data.newCategory;\r\n __minNewStores = data.minNewStores <= 0 ? 1 : data.minNewStores;\r\n\r\n\t\t// Foods\r\n\t\tif ( data.foods )\r\n\t\t\t__foods = \",\" + data.foods.join( \",\" );\r\n\r\n\t}\r\n\r\n\tfunction __searchCancel() {\r\n\t\t// console.log( \"InteractiveMap: __searchCancel\" );\r\n\r\n\t\t$controls.removeClass( STYLE_SEARCH_FOCUS );\r\n\t\t$search.addClass( STYLE_EMPTY );\r\n\t\t$searchInput.typeahead( \"val\", \"\" );\r\n\t\t$searchCancel.hide();\r\n\t\t__map.hideLocation();\r\n\t\t__map.clearHighlight();\r\n\r\n\t}\r\n\r\n\tfunction __searchSource( foods, locations ) {\r\n\t\t// console.log( \"InteractiveMap: __searchSource\" );\r\n\r\n\t\tvar strBrands = $searchInput.data( 'suggestion-brands' );\r\n\t\tvar strFood = $searchInput.data( 'suggestion-food' );\r\n\r\n\t\treturn function( query, callback ) {\r\n\t\t\t// console.log( \"Search Callback\", query );\r\n\r\n\t\t\t// Get Location Matches\r\n\t\t\t// NOTE: This is done using an object to\r\n\t\t\t// prevent adding duplicates.\r\n\t\t\tvar exp = new RegExp( \"(?:,)((a |the |el |le |la |l'|il |der |die |das )?\" + query + \"[^,]*)\", \"gi\" );\r\n\r\n\t\t\t// Check for Food Match\r\n\t\t\tvar foodMatch = exp.test( foods );\r\n\r\n\t\t\tvar objLocationMatches = {};\r\n\r\n\t\t\t$.each( locations, function( i, location ) {\r\n\r\n\t\t\t\tvar brandMatches = [];\r\n\t\t\t\tvar brandMatch;\r\n\r\n\t\t\t\twhile ( brandMatch = exp.exec( location.brands ) )\r\n\t\t\t\t\tbrandMatches.push( brandMatch[ 1 ] );\r\n\r\n\t\t\t\tif ( location.brands && brandMatches.length > 0 ) {\r\n\r\n\t\t\t\t\tobjLocationMatches[ location.id ] = {\r\n\t\t\t\t\t\timage: location.image,\r\n\t\t\t\t\t\ttitle: location.title\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tbrandMatches = brandMatches.filter( function( a ) { return a.toLowerCase() !== location.title.toLowerCase(); } );\r\n\r\n\t\t\t\t\tif ( brandMatches.length > 0 )\r\n\t\t\t\t\t\tobjLocationMatches[ location.id ].subtitle = strBrands + brandMatches.join( \", \" );\r\n\r\n\t\t\t\t} else if ( location.type === \"food\" && foodMatch ) {\r\n\r\n\t\t\t\t\tobjLocationMatches[ location.id ] = {\r\n\t\t\t\t\t\timage: location.image,\r\n\t\t\t\t\t\ttitle: location.title,\r\n\t\t\t\t\t\tsubtitle: strFood\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t} );\r\n\r\n\r\n\t\t\t// Convert Location Object to Array\r\n\t\t\tvar aryLocationMatches = [];\r\n\r\n\t\t\t$.each( objLocationMatches, function( i, location ) {\r\n\r\n\t\t\t\taryLocationMatches.push( {\r\n\t\t\t\t\tid: i,\r\n\t\t\t\t\timage: objLocationMatches[ i ].image,\r\n \t\t\t\t\ttitle: objLocationMatches[ i ].title,\r\n \t\t\t\t\tsubtitle: objLocationMatches[ i ].subtitle\r\n\t\t\t\t} );\r\n\r\n\t\t\t} );\r\n\r\n\r\n\t\t\t// Garbarge Collection\r\n\t\t\tobjLocationMatches = undefined;\r\n\r\n\r\n\t\t\t// Sort Array\r\n\t\t\taryLocationMatches.sort( function( a, b ) {\r\n\t\t\t\treturn a.title > b.title;\r\n\t\t\t} );\r\n\r\n\r\n\t\t\t// Callback\r\n\t\t\tcallback( aryLocationMatches );\r\n\r\n\t\t};\r\n\r\n\t}\r\n\r\n\tfunction __searchSuggestion( suggestion ) {\r\n\t\t// console.log( \"InteractiveMap: __searchSuggestion\" );\r\n\r\n\t\tvar str = '';\r\n\r\n\t\tstr +=\r\n\t\t\t'
' +\r\n\t\t\t\t'
';\r\n\r\n\t\tif ( suggestion.image )\r\n\t\t\tstr += \t'\"'';\r\n\r\n\t\tstr +=\r\n\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\tsuggestion.title +\r\n\t\t\t\t\t'
';\r\n\r\n\t\tif ( suggestion.subtitle )\r\n\t\t\tstr +=\t'
' + suggestion.subtitle + '
';\r\n\r\n\t\tstr +=\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t$searchInput.data( 'suggestion-cta' ) + '' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t'
';\r\n\r\n\t\treturn str;\r\n\r\n\t}\r\n\r\n\tfunction __resize() {\r\n\t\t// console.log( \"InteractiveMap: __resize\" );\r\n\r\n\t\tif ( __map )\r\n\t\t\t// __map.resize();\r\n\t\t\twindow.resizeMap();\r\n\r\n\t}\r\n\r\n\tfunction __trackEvent( category, action, label, value ) {\r\n\t\t// console.log( \"InteractiveMap: __trackEvent\", category, action, label, value );\r\n\r\n\t\ttry {\r\n\r\n\t\t\tga( \"send\", \"event\", category, action, label, value );\r\n\r\n\t\t} catch ( e ) {}\r\n\r\n\t}\r\n\r\n\r\n\r\n\r\n\r\n\t/* ----- LISTENERS ----- */\r\n\tfunction __onCategoryChange( e ) {\r\n\t\t// console.log( \"InteractiveMap: __onCategoryChange\" );\r\n\r\n\t\tvar $target = $( e.currentTarget );\r\n\t\tvar value = $target.val();\r\n\r\n\t\t// __offersEventsClear();\r\n\t\t// __newStoresClear();\r\n\t\t__foodDrinkClear();\r\n\t\t__searchCancel();\r\n\r\n\t\tif ( value === \"clearSelect\" )\r\n\t\t\t__categoryClear();\r\n\t\telse\r\n\t\t\t__categoryHighlight( value );\r\n\r\n\t}\r\n\r\n\tfunction __onKeyUp( e ) {\r\n\t\t// console.log( \"InteractiveMap: __onKeyUp\" );\r\n\r\n\t\tvar validKeyCodes = \"27 \";\r\n\t\t\tvar strKeyCode = e.keyCode.toString() + \" \";\r\n\r\n\t\t\tif ( validKeyCodes.indexOf( strKeyCode ) > -1 ) {\r\n\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tswitch( e.keyCode ) {\r\n\r\n\t\t\t\t\t// ESC\r\n\t\t\t\t\tcase 27:\r\n\t\t\t\t\t\t__searchCancel();\r\n\t\t\t\t\t\t$searchInput.blur();\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t}\r\n\r\n\tfunction __onMapData( e, data ) {\r\n\t\t// console.log( \"InteractiveMap: __onMapData\" );\r\n\r\n\t\t__processData( data );\r\n\r\n\t}\r\n\r\n\tfunction __onMapLocationOpen( e, location ) {\r\n\t\t// console.log( \"InteractiveMap: __onMapLocationOpen\" );\r\n\r\n\t\t__trackEvent( \"map\", \"location-open\", null, location.id );\r\n\r\n\t}\r\n\r\n\tfunction __onMapLocationClose( e, location ) {\r\n\t\t// console.log( \"InteractiveMap: __onMapLocationClose\" );\r\n\r\n\t\t__trackEvent( \"map\", \"location-close\", null, location.id );\r\n\t}\r\n\r\n\tfunction __onMapReady( e ) {\r\n\t\t// console.log( \"InteractiveMap: __onMapReady\" );\r\n\r\n\t\t__map = $mapplic.data( \"mapplic\" );\r\n\r\n\t\t__addControls();\r\n __addCategories();\r\n __showHideOffersAndNewStoresButtons();\r\n\t\t__addFoodDrink();\r\n\r\n\t\t__addLocation();\r\n\r\n\t\t__addSearch();\r\n\r\n\t\t__resize();\r\n\r\n\t}\r\n\r\n\tfunction __onMapTooltipLink( e, location, url ) {\r\n\t\t// console.log( \"InteractiveMap: __onMapTooltipLink\" );\r\n\r\n\t\t__trackEvent( \"map\", \"external-link\", null, url );\r\n\r\n\t}\r\n\r\n\tfunction __onMediumMediaQueryChange( list ) {\r\n\t\t// console.log( \"InteractiveMap: __onMediumMediaQueryChange\" );\r\n\t\tconsole.info( list );\r\n\r\n\t\tif ( list.matches )\r\n\t\t\t__map.changeDisplayMode( 1 );\r\n\t\telse\r\n\t\t\t__map.changeDisplayMode( 0 );\r\n\r\n\t}\r\n\r\n\tfunction __onOffersEventsClick( e ) {\r\n\t\t// console.log( \"InteractiveMap: __onOffersEventsClick\" );\r\n\r\n\t\te.preventDefault();\r\n\r\n\r\n\t\t__offersEventsToggle();\r\n\r\n\t}\r\n\r\n\tfunction __onNewStoresClick( e ) {\r\n\t\t// console.log( \"InteractiveMap: __onNewStoresClick\" );\r\n\r\n\t\te.preventDefault();\r\n\r\n\r\n\t\t__newStoresToggle();\r\n\r\n\t}\r\n\r\n\tfunction __onFoodDrinkClick( e ) {\r\n\t\t// console.log( \"InteractiveMap: __onFoodDrinkClick\" );\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\t__categoryClear();\r\n\t\t__searchCancel();\r\n\r\n\t\t__foodDrinkToggle();\r\n\r\n\t}\r\n\r\n\tfunction __onLocationClick( e ) {\r\n\t\t// console.log('ON LOCATION CLICK');\r\n\t\te.preventDefault();\r\n\r\n\t\tvar onUserLocationSuccess = function(){\r\n\t\t\t__categoryClear();\r\n\t\t}\r\n\r\n\t\tif (!!Mapplic_.geoActive){\r\n\t\t\tMapplic_.disableUserLocation();\r\n\t\t}else{\r\n\t\t\tMapplic_.requestUserLocation(onUserLocationSuccess);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction _onSearchActive( e ) {\r\n\t\t// console.log( \"InteractiveMap: _onSearchActive\" );\r\n\r\n\t\t$controls.addClass( STYLE_SEARCH_FOCUS );\r\n\t\t$window.on( \"keyup\", __onKeyUp );\r\n\r\n\t}\r\n\r\n\tfunction __onSearchCancel( e ) {\r\n\t\t// console.log( \"InteractiveMap: __onSearchCancel\" );\r\n\r\n\t\te.preventDefault();\r\n\t\t__searchCancel();\r\n\r\n\t}\r\n\r\n\tfunction __onSearchChange( e, value ) {\r\n\t\t// console.log( \"InteractiveMap: __onSearchChange\" );\r\n\r\n\t\tif ( !value )\r\n\t\t\t__searchCancel();\r\n\r\n\t}\r\n\r\n\tfunction __onSearchIdle( e ) {\r\n\t\t// console.log( \"InteractiveMap: __onSearchIdle\" );\r\n\r\n\t\tif ( $searchInput.typeahead( \"val\" ) === \"\" )\r\n\t\t\t__searchCancel();\r\n\r\n\t\t$window.on( \"keyup\", __onKeyUp );\r\n\r\n\t}\r\n\r\n\tfunction __onSearchRender( e ) {\r\n\t\t// console.log( \"InteractiveMap: __onSearchRender\" );\r\n\r\n\t\t$search.removeClass( STYLE_EMPTY );\r\n\t\t$searchCancel.show();\r\n\r\n\t\t__categoryClear();\r\n\t\t__offersEventsClear();\r\n\t\t__newStoresClear();\r\n\t\t__foodDrinkClear();\r\n\r\n\t\t__map.hideLocation();\r\n\t\t__map.clearHighlight();\r\n\r\n\t\tvar ary = [];\r\n\t\tfor ( var i = 1; i < arguments.length; i++ )\r\n\t\t\tary.push( arguments[ i ].id );\r\n\r\n\t\t__map.toggleLocationHighlight( ary, true );\r\n\r\n\t\t// Tracking\r\n\t\tif ( __searchTimer )\r\n\t\t\tclearTimeout( __searchTimer );\r\n\r\n\t\t__searchTimer = setTimeout( __onSearchRenderTimeout, TIMEOUT_SEARCH );\r\n\r\n\t}\r\n\r\n\tfunction __onSearchRenderTimeout() {\r\n\t\t// console.log( \"InteractiveMap: __onSearchRender\" );\r\n\r\n\t\t__trackEvent( \"map\", \"search-render\", null, $searchInput.val() );\r\n\r\n\t}\r\n\r\n\tfunction __onSearchSelect( e, location ) {\r\n\t\t// console.log( \"InteractiveMap: __onSearchSelect\" );\r\n\r\n\t\t__map.clearHighlight();\r\n\t\t__map.showLocation( location.id );\r\n\r\n\t\t__trackEvent( \"map\", \"search-select\", null, location.id );\r\n\r\n\t}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\t/* * * * * PUBLIC * * * * */\r\n\t// Return a constructor which returns private properties\r\n\t// and methods that should be available publically.\r\n\treturn function() {\r\n\t\t// console.log( \"new InteractiveMap\" );\r\n\r\n\r\n\t\t/* * * * * CALL * * * * */\r\n\t\t// Call methods that should execute when this object\r\n\t\t// is instantiated.\r\n\t\t__init();\r\n\r\n\r\n\t\treturn {\r\n\t\t\tinit: __init,\r\n\t\t\tresize: __resize\r\n\t\t}\r\n\t}\r\n\r\n}( jQuery ));\r\n\r\n","var lazyScroll = {\r\n\r\n\tpromosBuild: function(){\r\n\t\tvar $lazyLoadingItem = $('.lazy-loading-item');\r\n\r\n\t\tif($lazyLoadingItem.length > 0){\r\n\t\t\t$lazyLoadingItem.each(function(){\r\n\t\t\t\tvar $this = $(this);\r\n\t\t\t\tlazyScroll.scrollInit($this);\r\n\r\n\t\t\t\tif(lazyScroll.isScrolledIntoView($this) === true){\r\n\t\t\t\t\tlazyScroll.bgPromoInit($this.find('.module-image'));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\tscrollInit: function($t){\r\n\t\t$(window).on('scroll', function(){\r\n\t\t\tvar thisToF = lazyScroll.isScrolledIntoView($t),\r\n\t\t\t$thisModuleImage = $t.find('.module-image');\r\n\t\t\tif($thisModuleImage.hasClass('bg-done') === false){\r\n\t\t\t\tif(thisToF === true){\r\n\t\t\t\t\tlazyScroll.bgPromoInit($thisModuleImage);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\tbgPromoInit: function($thisModuleImage){\r\n\t\tvar thisImage = $thisModuleImage.attr('data-largeLazyPromo');\r\n\r\n\t\tif (thisImage.length > 0){\r\n\t\t\t$thisModuleImage.css('background-image', 'url(' + thisImage + ')');\r\n\t\t\t$thisModuleImage.addClass('bg-done');\r\n\t\t}\r\n\t},\r\n\r\n\tisScrolledIntoView: function(elem){\r\n\t\tvar docViewTop = $(window).scrollTop(),\r\n \t\tdocViewBottom = docViewTop + $(window).height(),\r\n\t\t\telemTop = $(elem).offset().top,\r\n\t\t\telemImg = $(elem).find('.module-image'),\r\n \t\telemBottom = elemTop,\r\n\t\t\telemImgBottom = elemTop + elemImg.height(),\r\n\t\t\telemState = (elemBottom <= docViewBottom) && (elemTop >= docViewTop),\r\n\t\t\telemStateImg = (elemImgBottom <= docViewBottom) && (elemImgBottom >= docViewTop);\r\n\r\n\t\tif(elemState === true){\r\n\t\t\treturn true;\r\n\t\t} else if (elemState === false){\r\n\t\t\tif(elemStateImg === true){\r\n\t\t\t\treturn true;\r\n\t\t\t} else {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\twidgetsImg: function(elem) {\r\n\t\t$(elem).find('[data-bg-img-src]').each(function(){\r\n\t\t\tvar _this = $(this);\r\n\t\t\tvar src = _this.attr('data-bg-img-src');\r\n\t\t\t_this.css('background-image', 'url(' + src + ')');\r\n\t\t\t_this.removeAttr('data-bg-img-src');\r\n\t\t});\r\n\t},\r\n\r\n\twidgetsLoad: function() {\r\n\t\t$(window).on('resize scroll', function() {\r\n\t\t\tif ($('[data-bg-img-src]').length) {\r\n\t\t\t\t$('.widget-slot').each(function(){\r\n\t\t\t\t\tif (lazyScroll.elementIsInView(this)) {\r\n\t\t\t\t\t\tlazyScroll.widgetsImg(this);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\telementIsInView: function(elem) {\r\n\t var elementTop = $(elem).offset().top;\r\n\t var elementBottom = elementTop + $(elem).outerHeight();\r\n\r\n\t var viewportTop = $(window).scrollTop();\r\n\t var viewportBottom = viewportTop + $(window).height();\r\n\r\n\t return elementBottom > viewportTop && elementTop < viewportBottom;\r\n\t},\r\n\r\n\tinit: function() {\r\n\t\tif($(window).width() > 1023){\r\n\t\t\tlazyScroll.promosBuild();\r\n\t\t}\r\n\t\t$(window).on('resize', function(){\r\n\t\t\tif($(window).width() > 1023){\r\n\t\t\t\tlazyScroll.promosBuild();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif ($('[data-bg-img-src]').length) {\r\n\t\t\tlazyScroll.widgetsLoad();\r\n\t\t}\r\n\t}\r\n};\r\n","var modalProduct = {\r\n\r\n\t// ----- VARS ----- //\r\n\telms: {\r\n\t\tclose: undefined,\r\n\t\tcontent: undefined,\r\n\t\tmodal: undefined,\r\n\t\tproduct: {\r\n\t\t\tbrand: undefined,\r\n\t\t\ttitle: undefined,\r\n\t\t\tdescription: undefined,\r\n\t\t\timageSmall: undefined,\r\n\t\t\timageLarge: undefined,\r\n\t\t\tproductPrice: undefined,\r\n\t\t\tbrandUrl: undefined,\r\n\t\t\tbrandMapUrl: undefined\r\n\t\t}\r\n\t},\r\n\r\n\t// ----- CONSTANTS ----- //\r\n\tEVENT_TRANSITION: 'animationend webkitAnimationEnd oanimationend MSAnimationEnd',\r\n\r\n\t// ----- FUNCTIONS ----- //\r\n\tinit: function() {\r\n\t\t//console.log( 'modalProduct: init' );\r\n\r\n\t // find modal\r\n\t\tmodalProduct.elms.modal = $( '#product-modal' );\r\n\r\n\t\tif (!modalProduct.elms.modal.length) {\r\n\t\t //console.warn('No modal found in page');\r\n\t\t return;\r\n\t\t}\r\n\r\n\t\t// find triggers\r\n\t\tvar triggers = $( '[data-toggle=\"modal\"]' );\r\n\r\n\t\tif (!triggers.length) {\r\n\t\t //console.warn('No modal triggers found in page');\r\n\t\t return;\r\n\t\t}\r\n\r\n\t\t// find trigger containers\r\n\t\tvar containers = $('.products-list, .product-carousel, .products, .product-page, .component-latest-trends, .component-wear, .small-product-carousel');\r\n\r\n\t\tif (!containers.length) {\r\n\t\t //console.warn('No modal trigger container found in page');\r\n\t\t return;\r\n\t\t}\r\n\r\n\t\t// this way jQuery will target elements lazily loaded\r\n\t containers.on( 'click', triggers, modalProduct.productClickHandler );\r\n\r\n\t\t$(document).keyup(function(e){\r\n\t\t\te = e || window.event;\r\n\r\n\t\t\t// don't hide if zoom-open is open (or closing)\r\n\t\t\tif (e.keyCode == 27 && $('.zoom-open').length < 1) {\r\n\t\t\t\tmodalProduct.hideModal();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tmodalProduct.elms.close = modalProduct.elms.modal.find( '[data-dismiss=\"modal\"]' );\r\n\r\n\t\t// event handlers\r\n\t\tmodalProduct.elms.modal.on( 'click', modalProduct.modalClickHandler );\r\n\t\tmodalProduct.elms.close.on( 'click', modalProduct.onClose );\r\n\r\n\t\t// assign elements\r\n\t\tmodalProduct.elms.product.brand = $('#product-brand', modalProduct.elms.modal);\r\n\t\tmodalProduct.elms.product.title = $('#product-title', modalProduct.elms.modal);\r\n\t\tmodalProduct.elms.product.description = $('#product-description', modalProduct.elms.modal);\r\n\t\tmodalProduct.elms.product.imageSmall = $('#product-image', modalProduct.elms.modal);\r\n\t\tmodalProduct.elms.product.imageLarge = $('#product-zoom-image', modalProduct.elms.modal);\r\n\t\tmodalProduct.elms.product.price = $('#product-price', modalProduct.elms.modal);\r\n\t\tmodalProduct.elms.product.brandUrl = $('#product-brand-url', modalProduct.elms.modal);\r\n\t\tmodalProduct.elms.product.brandMapUrl = $('#product-brand-map-url', modalProduct.elms.modal);\r\n\r\n\t\t// check if should open modal\r\n\t\tvar featuredProductId = $('[data-featured-product-id]').attr('data-featured-product-id');\r\n\r\n\t\tif (featuredProductId) {\r\n\t\t\tcontainers.find(\"[data-product-id='\" + featuredProductId + \"']\").click();\r\n\t\t}\r\n\t},\r\n\r\n\tshowModal: function( selector ) {\r\n\t\t//console.log( 'modalProduct: show, selector:', selector );\r\n\r\n\t\t// scrollhack to avoid page jumping with modalProduct. will work with new navigation. desktop only (breaks zoom in mobile)\r\n\t\t// var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;\r\n\t\t// $('body').css('top', -(scrollTop) + 'px').addClass('modal-open');\r\n\t\t// $('body').addClass('modal-open');\r\n //console.log('Whats my selector? ' + selector)\r\n\r\n\t\tmodalProduct.elms.modal.css( 'display', 'flex' );\r\n\t\tmodalProduct.elms.modal.addClass( 'in' );\r\n\r\n\t // Populate Modal Content\r\n\t\tmodalProduct.elms.product.brand.html( selector.data('brand') );\r\n\t\tmodalProduct.elms.product.title.html( selector.data('title') );\r\n\t\tmodalProduct.elms.product.description.html( selector.data('description') );\r\n\r\n\t // Price\r\n\t\tmodalProduct.elms.product.price.html( selector.find('.product-price').clone() );\r\n\r\n // Images\r\n\t\tmodalProduct.elms.product.imageSmall.attr('src', selector.data('image-src') );\r\n\t\tmodalProduct.elms.product.imageSmall.attr('alt', selector.data('title') );\r\n\t\tmodalProduct.elms.product.imageLarge.attr('data-img-zoom', selector.data('zoom-image-src') );\r\n\t\tmodalProduct.elms.product.imageLarge.attr('alt', selector.data('title') );\r\n\r\n\t\t// Links\r\n\t\tmodalProduct.elms.product.brandUrl.attr('href', selector.data('brand-url') );\r\n\t\tmodalProduct.elms.product.brandMapUrl.attr('href', selector.data('map-url') );\r\n\r\n // Sharing\r\n\t\tmodalProduct.elms.modal.attr('data-share-url', selector.data('share-url') );\r\n\t\tmodalProduct.elms.modal.attr('data-title', selector.data('title') );\r\n\t\tmodalProduct.elms.modal.attr('data-share-image', selector.data('share-image') );\r\n\r\n\t\tvar $shareItems = modalProduct.elms.modal.find( '.share-item > a' );\r\n\r\n\t\tsocialLinks.create( $shareItems, selector );\r\n\t},\r\n\r\n\thideModal: function() {\r\n\t\t//console.log( 'modalProduct: hide' );\r\n\r\n\t\tif ( modalProduct.elms.modal ) {\r\n\r\n\t\t\t// Remove Listeners\r\n\t\t\tmodalProduct.elms.modal.off( 'click', modalProduct.onClose );\r\n\r\n\t\t\t// Hide Modal\r\n\t\t\tmodalProduct.elms.modal.removeClass( 'in' );\t\t\t\r\n\t\t\tmodalProduct.elms.modal.one( modalProduct.EVENT_TRANSITION, modalProduct.onHideComplete );\r\n\t\t}\r\n\t},\r\n\r\n\t// ----- EVENT LISTENERS ----- //\r\n\r\n\tproductClickHandler: function( e ) {\r\n\t //console.log('modalProduct: productClickHandler, e.target:', e.target);\r\n\r\n\t\t// look for the element with the trigger\r\n\t var selector = $(e.target).closest($('[data-toggle=\"modal\"]'));\r\n\r\n\t\t// if there's one, open modal\r\n\t\tif (selector.length){\r\n\t\t\tmodalProduct.showModal( selector );\r\n\t\t}\r\n\t},\r\n\r\n\tmodalClickHandler: function( e ) {\r\n\t\t//console.log( 'modalClickHandler' );\r\n\r\n\t\t// if clicked on the black overlay, close modal\r\n\t\tif ( e.target == modalProduct.elms.modal[0] ){\r\n\t\t\tmodalProduct.hideModal();\r\n\t\t\treturn;\r\n\t\t}\r\n\t},\r\n\r\n\tonClose: function( e ) {\r\n\t\t//console.log( 'modalProduct: onClose' );\r\n\r\n\t\te.stopPropagation();\r\n\t\tmodalProduct.hideModal();\r\n\r\n\t},\r\n\r\n\tonHideComplete: function( e ) {\r\n\t\t//console.log( 'modalProduct: onHideComplete' );\r\n\r\n\t\te.stopImmediatePropagation();\r\n\r\n\t\t// Hide Modal\r\n\t\tmodalProduct.elms.modal.css( 'display', 'none' );\r\n\r\n\t\t// Unassign Variables and Remove Listeners\r\n\t\tmodalProduct.elms.modal.off( modalProduct.EVENT_TRANSITION, modalProduct.onHideComplete );\r\n\r\n\t\t// $('body').removeClass('modal-open');\r\n\r\n\t\t// Reset zoom img container and product modal img\r\n\t\t$('#product-zoom-image').add(modalProduct.elms.product.imageSmall).attr('src', '/assets/img/src/transparent-video-img.png').removeAttr('data-img-zoom').removeAttr('style').removeAttr('src');\r\n\r\n\t\t// scrollhack to avoid page jumping with modalProduct. will work with new navigation. desktop only (breaks zoom in mobile)\r\n\t\t// var scrollTop = -parseInt($('body').css('top'), 10);\r\n\t\t// $('body').removeClass('modal-open').css('top', 0);\r\n\t\t// window.pageYOffset = document.documentElement.scrollTop = document.body.scrollTop = scrollTop;\r\n\t}\r\n};","var modal = {\r\n // ----- VARS ----- //\r\n elms: {\r\n close: undefined,\r\n content: undefined,\r\n modal: undefined,\r\n triggers: $(\r\n '[data-toggle=\"modal\"]:not(.product):not(.latest-trends-product)'\r\n )\r\n },\r\n\r\n // ----- CONSTANTS ----- //\r\n EVENT_TRANSITION:\r\n \"webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend\",\r\n\r\n // ----- FUNCTIONS ----- //\r\n init: function() {\r\n //console.log( 'modal: init' );\r\n\r\n modal.elms.triggers.on(\"click\", modal.elms.triggers, modal.onClick);\r\n },\r\n\r\n show: function(selector, title) {\r\n //console.log( 'modal: show', selector );\r\n\r\n modal.elms.modal = $(selector);\r\n modal.elms.close = modal.elms.modal.find('[data-dismiss=\"modal\"]');\r\n modal.elms.content = modal.elms.modal.find(\".modal-content\");\r\n\r\n if (title) modal.elms.content.find(\".modal-title\").text(title);\r\n\r\n modal.elms.modal.on(\"click\", modal.onClose);\r\n\r\n // Update Share Content if Applicable\r\n if (selector.match(/share/i)) modal.updateShare();\r\n\r\n // Add to Display\r\n modal.elms.modal.css(\"display\", \"flex\");\r\n modal.elms.modal[0].offsetWidth;\r\n\r\n // Transition In\r\n modal.elms.modal.addClass(\"in\");\r\n },\r\n\r\n hide: function() {\r\n //console.log( 'modal: hide' );\r\n\r\n // Remove Listeners\r\n modal.elms.modal.off(\"click\", modal.onClose);\r\n\r\n // Hide Modal\r\n modal.elms.modal.removeClass(\"in\");\r\n\r\n setTimeout(function() {\r\n modal.elms.modal.removeAttr(\"style\");\r\n // Unassign Variables and Remove Listeners\r\n modal.elms.modal.off(modal.EVENT_TRANSITION, modal.onHideComplete);\r\n\r\n modal.elms.close = undefined;\r\n modal.elms.content = undefined;\r\n modal.elms.modal = undefined;\r\n }, 500);\r\n\r\n if (modal.elms.modal.attr(\"id\") === \"registration-modal\") {\r\n sessionStorage.setItem(\"registration-seen\", true);\r\n }\r\n },\r\n\r\n updateShare: function() {\r\n //console.log( 'modal: updateShare' );\r\n\r\n modal.elms.modal.attr(\"data-share-url\", window.location.href);\r\n var $shareItems = modal.elms.modal.find(\".share-item > a\");\r\n\r\n socialLinks.create($shareItems);\r\n },\r\n\r\n // ----- EVENT LISTENERS ----- //\r\n onClick: function(e) {\r\n //console.log( 'modal: onClick' );\r\n e.preventDefault();\r\n\r\n var $target = $(e.currentTarget);\r\n var modalId = $target.data(\"target\");\r\n var modalTitle = $target.data(\"modal-title\");\r\n var modalGallerySlide = $target.data(\"gallery-index\");\r\n\r\n if (modalGallerySlide) {\r\n gallery.setupModal(modalGallerySlide);\r\n return;\r\n }\r\n\r\n modal.show(modalId, modalTitle);\r\n },\r\n\r\n onClose: function(e) {\r\n //console.log( 'modal: onClose' );\r\n if ($('#terms-conditions-modal').length <= 0) {\r\n var isContent = $.contains(modal.elms.content[0], e.target);\r\n var isClose =\r\n $.contains(modal.elms.close[0], e.target) ||\r\n modal.elms.close[0] === e.target;\r\n\r\n if (isClose || !isContent) modal.hide();\r\n }\r\n }\r\n};\r\n","var mob = {\r\n\tcloseSpd: 200,\r\n\tdelay: 200,\r\n\tstaggerDelay:{\r\n\t\tin: 40,\r\n\t\tout: 0\r\n\t}\r\n}\r\n\r\nvar mobileClosed = true;\r\nvar scrollPos = null;\r\nvar nav = {\r\n\tmainHeader: $('.main-header'),\r\n\tanimItems: $('.off-canvas-block'),\r\n\tpinToTopItems: $('.nav-pin-to-top'),\r\n\tanimDelay: 50,\r\n\topenClose: {\r\n\t\thamburger: $('#navTrigger'),\r\n\t\tsiteCanvas: $('.site-canvas'),\r\n\t\tsiteWrapper: $('.site-wrapper'),\r\n\t\toffCanvas: $('.off-canvas-wrapper'),\r\n\t\tcloseNav: $('.close-canvas'),\r\n\t\tlastItem:null,\r\n\r\n\t\tsearchTrigger: {\r\n\t\t\tsearchForm: $('.search-form'),\r\n\t\t\tbutton: $('.search-button'),\r\n\t\t\tinputSearch: $('#search')\r\n\t\t},\r\n\r\n\t\tsubnavEls: {\r\n\t\t\t//subnavTrigger: $('.nav-subnav-trigger'),\r\n\t\t\tsubnavTrigger: $('.nav-subnav-trigger, .language-subnav-trigger, .village-subnav-trigger'),\r\n\t\t\tsubnav: $('.nav-subnav')\r\n\t\t},\r\n\r\n\t\tshowNav: function() {\r\n\t\t\tnav.openClose.showNav.commonElements = nav.openClose.hamburger\r\n\t\t\t\t.add(nav.openClose.siteCanvas)\r\n\t\t\t\t.add(nav.openClose.closeNav);\r\n\r\n\t\t\tnav.openClose.hamburger.click(function(e) {\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif (isTouch || (!isTouch && windowWidth < desktop)) {\r\n\t\t\t\t\tnav.openClose.showNav.commonElements.toggleClass('active');\r\n\t\t\t\t\tmobileClosed = false;\r\n\t\t\t\t\tscrollPos = $('body').scrollTop();\r\n\t\t\t\t\t// $('body, html, .site-wrapper, .site-canvas, #mainContent').css({'overflow': 'hidden', 'height': '100%'});\r\n\t\t\t\t\t//looks nicer with opacity on background as 0.2 \r\n\t\t\t\t\t// $('.sidenav').css('background','none');\r\n\t\t\t\t\tnav.openClose.showInDelay(nav.animItems, /*nav.animDelay*/mob.staggerDelay.in,'in');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tnav.openClose.closeNav.click(function(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tnav.openClose.showNav.commonElements.toggleClass('active');\r\n\t\t\t\tnav.undoOthers.undoSubnav();\r\n\t\t\t\tnav.undoOthers.undoDropdowns();\r\n\r\n\t\t\t\tif (isTouch || (!isTouch && windowWidth < desktop)) {\r\n\t\t\t\t\t$('body, html, .site-wrapper, .site-canvas, #mainContent').removeAttr('style');\r\n\t\t\t\t\tmobileClosed = true;\r\n\t\t\t\t\t$('body').scrollTop( scrollPos );\r\n\t\t\t\t\tscrollPos = null;\r\n\r\n\t\t\t\t\t//remove class to reset animation\r\n\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\tnav.openClose.showInDelay(nav.animItems, mob.staggerDelay.out,'out');\r\n\t\t\t\t\t}, 100)\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\toffCanvasScroll: function() {\r\n\t\t\tnav.openClose.offCanvas.mCustomScrollbar({\r\n\t\t\t\taxis:'y',\r\n\t\t\t\ttheme: 'minimal-dark',\r\n\t\t\t\tautoHideScrollbar: true,\r\n\t\t\t\tscrollInertia: 0\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tundoOffCanvasScroll: function() {\r\n\t\t\tnav.openClose.offCanvas.mCustomScrollbar('destroy');\r\n\t\t},\r\n\r\n\t\tcloseNavResize: function() {\r\n\t\t\tif (nav.openClose.closeNav.hasClass('active')) {\r\n\t\t\t\tnav.openClose.closeNav.trigger('click');\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tcloseNavResizeDown: function() {\r\n\t\t\tnav.openClose.hamburger.removeClass('active');\r\n\t\t},\r\n\r\n\t\tsearchForm: function() {\r\n\t\t//\t//console.log(' TEST ');\r\n\r\n\t\t\tif (!isTouch && windowWidth >= desktop) {\r\n\t\t\t\tnav.openClose.searchTrigger.inputSearch.attr('disabled', 'disabled');\r\n\t\t\t}\r\n\r\n\t\t\tnav.openClose.searchTrigger.button.click(function(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tnav.openClose.searchTrigger.inputSearch.removeAttr('disabled').focus();\r\n\t\t\t\tnav.openClose.searchTrigger.searchForm.addClass('active');\r\n\t\t\t});\r\n\r\n\t\t\tnav.openClose.searchTrigger.inputSearch.on('blur', function(){\r\n\t\t\t\tif (!isTouch && windowWidth >= desktop) {\r\n\t\t\t\t\tnav.openClose.searchTrigger.searchForm.removeClass('active');\r\n\t\t\t\t\tnav.openClose.searchTrigger.inputSearch.attr('disabled', 'disabled');\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif ($(this).val() === '') {\r\n\t\t\t\t\t\tnav.openClose.searchTrigger.searchForm.removeClass('active');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tshowInDelay: function (targetSelectors, incrementDelayBy, direction){\r\n\t\t\t// $('#mCSB_1_container').offset({top: 0});\r\n\t\t\tvar d=0;\r\n\t\t\ttargetSelectors.each(function(index,selector){\r\n\r\n\t\t\t setTimeout(function(){\r\n\t\t if(direction == 'in'){\r\n\t\t\t\t\t$(selector).addClass('movein'); \r\n\t\t\t\t}\r\n\t\t\t \tif(direction == 'out'){\r\n\t\t\t \t\t$(selector).removeClass('movein');\r\n\t\t\t \t}\r\n\t\t\t },d=d+incrementDelayBy);\r\n\t\t\t}); \r\n\t\t},\r\n\r\n\t\tundoDisableSearch: function() {\r\n\t\t\tnav.openClose.searchTrigger.inputSearch.removeAttr('disabled');\r\n\t\t},\r\n\r\n\t\tmobileSubnav: function() {\r\n\r\n\t\t\tnav.openClose.subnavEls.subnavTrigger.on('click', function(e){\r\n\t\t\t\t\r\n\t\t\t\tnav.undoOthers.undoDropdowns();\r\n\r\n\t\t\t\tif (isTouch || (!isTouch && windowWidth < desktop)) {\r\n\t\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\t\tvar navItem = $(this).closest('.nav-pin-to-top'); // navItem or dropdown item\r\n\r\n\t\t\t\t\tif (!navItem.hasClass('active')){\r\n\t\t\t\t\t\t//console.log(' OPEN SUBNAV ');\r\n\r\n\t\t\t\t\t\t//var $openedNavItem = navItem.siblings('.nav-pin-to-top.active');\r\n\t\t\t\t\t\tvar $openedNavItem = $('.nav-pin-to-top.active');\r\n\t\t\t\t\t\tif ($openedNavItem.length){\r\n\r\n\t\t\t\t\t\t\t// close the one that's open\r\n\t\t\t\t\t\t\tnav.openClose.close(mob.closeSpd, $openedNavItem, navItem, function(navItem){\r\n\t\t\t\t\t\t\t\t//console.log(' close nav item callback, calling scrollTo ');\r\n\t\t\t\t\t\t\t\tnav.scrollTo(navItem);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t//console.log(' no open item, calling scrollTo ');\r\n\t\t\t\t\t\t\tnav.scrollTo(navItem);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t$('.weather-open .weather-extended').slideUp();\r\n\t\t\t\t\t\tweather.wrapper.removeClass('weather-open');\r\n\r\n\t\t\t\t\t\t$('.sidenav-navItem.active .sidenav-item-content').slideUp();\r\n\t\t\t\t\t\tsidenav.wrapperEl.removeClass('active');\r\n\r\n\t\t\t\t\t\tnavItem.addClass('active')\r\n\t\t\t\t\t\t\t.find('.nav-subnav').stop().slideDown()\r\n\t\t\t\t\t\tnavItem.find('.nav-subnav-trigger').addClass('active');\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\t//console.log(' CLOSE SUBNAV ', navItem);\r\n\t\t\t\t\t\tnav.openClose.close(mob.closeSpd, navItem, null, function(){\r\n\t\t\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\t\t\t$('#mCSB_1_container').animate({top: 0});\r\n\t\t\t\t\t\t\t}, mob.delay)\t\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\tnav.undoOthers.undoDropdowns();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t},\r\n\t\t\r\n\t\tclose: function(speed, openedNavItem, navItem, cb){\r\n\t\t\t//console.log('CLOSE');\r\n\t\t\t//console.log('navItem:', navItem);\r\n\t\t\t\r\n\t\t\tif ( openedNavItem.is('#language') || openedNavItem.is('#village') ){\r\n\t\t\t\t// quick fix: somewhere else in the code the active class is added so it needs a timeout (!!!)\r\n\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\topenedNavItem.find('.offcanvas.webfont-cheveron').removeClass('active');\r\n\t\t\t\t},100);\r\n\t\t\t}\r\n\r\n\t\t\topenedNavItem.removeClass('active')\r\n\t\t\t.find('.nav-subnav').stop().slideUp(speed,'swing', function(){\r\n\t\t\t\t//console.log( '??? ',openedNavItem.hasClass('active') );\r\n\t\t\t\tif(!!cb){\r\n\t\t\t\t\t// openedNavItem.find('.nav-subnav-trigger, .language-subnav-trigger, .village-subnav-trigger').removeClass('active');\r\n\t\t\t\t\topenedNavItem.find('.nav-subnav-trigger').removeClass('active');\r\n\t\t\t\t\tcb(navItem);\r\n\t\t\t\t}\r\n\t\t\t});\t\r\n\t\t},\r\n\r\n\t\tundoMobile: function() {\r\n\t\t\tnav.openClose.subnavEls.subnav.removeClass('active');\r\n\t\t}\r\n\t},\r\n\r\n\tscrollTo: function(navItem){\r\n\t\t//console.log('scrollTo() navItem: ', navItem[0].innerText);\r\n\r\n\t\tsetTimeout(function(){\r\n\t\t\tvar menu = $('#mCSB_1_container');\r\n\t\t\t// var top = navItem.offset().top;\r\n\t\t\tvar itemTop = navItem[0].getBoundingClientRect().top;\r\n\t\t\tvar menuTop = menu[0].getBoundingClientRect().top;\r\n\t\t\tvar targetTop = Math.round(itemTop - menuTop);\r\n\t\t\t//console.log('targetTop: ', targetTop);\r\n\r\n\t\t\t// don't scroll past the whole thing's height (avoid empty space below menu)\r\n\t\t\tvar menuHeight = menu.height();\r\n\t\t\tvar diff = menuHeight - window.innerHeight;\r\n\t\t\ttargetTop = (targetTop > diff) ? diff : targetTop;\r\n\r\n\t\t\tmenu.animate({top: -targetTop});\r\n\r\n\t\t}, mob.delay);\r\n\t},\r\n\r\n\tanchorNav: function() {\r\n\t\t$('.anchor-nav').click(function(e) {\r\n\t\t\te.preventDefault();\r\n\t\t\tvar target = $(this.hash);\r\n\t\t\tvar topbarOffset = isTouch && windowWidth >= desktop ? 80 : 50;\r\n\t\t\t$('html,body').animate({\r\n\t\t\t\tscrollTop: target.offset().top - topbarOffset\r\n\t\t\t}, 1000);\r\n\t\t});\r\n\t},\r\n\r\n\tundoOthers: {\r\n\r\n\t\tundoDropdowns: function() {\r\n\t\t\t$('.dropdown-button.active').removeClass('active').siblings('.dropdown-menu').slideUp();\r\n\t\t},\r\n\r\n\t\tundoSubnav: function() {\r\n\t\t\t$('.nav-subnav-trigger.active').removeClass('active').closest('.nav-navItem').removeClass('active').find('.nav-subnav').slideUp();\r\n\t\t\tweather.wrapper.removeClass('weather-open');\r\n\t\t\tweather.extended.slideUp();\r\n\t\t},\r\n\r\n\t\tundoOnSearch: function() {\r\n\t\t\tnav.openClose.searchTrigger.inputSearch.focus(function() {\r\n\t\t\t\tnav.undoOthers.undoDropdowns();\r\n\t\t\t\tnav.undoOthers.undoSubnav();\r\n\t\t\t});\r\n\t\t},\r\n\t},\r\n\r\n\tinit: function() {\r\n\t\t//console.log('nav.init()');\r\n\r\n\t\t// cache offset-top values for 'pin to top' when open\r\n\t\t// nav.pinToTopItems.each(function(){\r\n\t\t// \tvar offsetTop = Math.round($(this)[0].getBoundingClientRect().top);\r\n\t\t// \t////console.log('caching offset-top:', offsetTop);\r\n\t\t// \t$(this).attr('data-offset-top', offsetTop);\r\n\t\t// });\r\n\r\n\t\tnav.openClose.showNav();\r\n\t\tnav.openClose.searchForm();\r\n\t\tnav.openClose.mobileSubnav();\r\n\t\tnav.anchorNav();\r\n\t\tnav.undoOthers.undoOnSearch();\r\n\r\n\t\tif (isTouch || (!isTouch && windowWidth < desktop)) {\r\n\t\t\tnav.openClose.offCanvasScroll();\r\n\t\t}\r\n\r\n\t //set up the arrow anim\r\n\t // if osx then use a webfont\r\n\t\tif (isiPhone > -1 || isiPad > -1 || isiPod > -1) {\r\n\t\t $(\"span.arrow-anim\").html('')\r\n\t\t} else {\r\n\t\t $(\"span.arrow-anim\").html('
')\r\n\t\t}\r\n\r\n\t}\r\n};","var openLogin = {\r\n\r\n\tlinkToLogin: $('.link-login'),\r\n\tloginTrigger: $('#login .dropdown-button'),\r\n\tloginDropdown: $('#login .dropdown-select'),\r\n\r\n\topenLoginPanel: function() {\r\n\t\tnav.stickyNav.undoSticky();\r\n\t\topenLogin.loginTrigger.addClass('active');\r\n\r\n\t\tsetTimeout( function() {\r\n\t\t\topenLogin.loginDropdown.show();\r\n\t\t}, 500);\r\n\t},\r\n\r\n\teventListeners: function() {\r\n\t\topenLogin.linkToLogin.on('click', function( e ) {\r\n\t\t\te.preventDefault();\r\n\t\t\topenLogin.openLoginPanel();\r\n\t\t});\r\n\t},\r\n\r\n\tinit: function() {\r\n\t\tif (windowWidth >= desktop) {\r\n\t\t\topenLogin.eventListeners();\r\n\t\t}\r\n\t}\r\n};","var pagination = {\r\n\r\n\telms: {\r\n\t\ttriggerEl: $('[data-page-trigger]'),\r\n\t\tpaginationType: null,\r\n\t\tpagesElms: $('[data-page]')\r\n\t},\r\n\r\n\r\n\tremovePagination: function(event) {\r\n\t\t//console.log( \"pagination: removePagination\" );\r\n\r\n\t\t// We will use the paginationType to construct the item element\r\n\t\tvar $item = $('.' + pagination.elms.paginationType + '');\r\n\r\n\t\t// If items are already wrapped in pages, unwrap them\r\n\t\t$item.each(function( index ) {\r\n\t\t\tif ($(this).parent().is('[data-page]')) {\r\n\t\t\t\t$(this).unwrap();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tpagination.insertPagination();\r\n\t},\r\n\r\n\r\n\tproductWrap: function($item) {\r\n\t\t//console.log( \"pagination: productWrap\" );\r\n\r\n\t\t$item.removeClass('product-fourth').removeClass('product-third').removeClass('product-second');\r\n\r\n\t\tvar visibleCount = 0;\r\n\t\t// Iterate through the items and add a 'product-page' wrapper for every 12 items\r\n\t\t$item.each(function( index ) {\r\n\r\n\t\t\tvar $this = $(this);\r\n\t\t\t$this.addClass('in-page');\r\n\r\n\t\t\t// if item visible update count and check if time to wrap with page\r\n\t\t\tif (!$this.hasClass('filter-hidden')){\r\n\t\t\t\tvisibleCount++;\r\n\r\n\t\t\t\tif (visibleCount % 12 === 0) {\r\n\t\t\t\t\t$('.in-page').wrapAll('
');\r\n\t\t\t\t\t$('.in-page').removeClass('in-page');\r\n\t\t\t\t\tvisibleCount = 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tpagination.setProductClasses();\r\n\r\n\t\t// if there are any visible items left over wrap in page\r\n\t\tif ($('.in-page').length !== $('.in-page.filter-hidden').length) {\r\n\t\t\t$('.in-page').wrapAll('
');\r\n\t\t}\r\n\r\n\t\t$('.in-page').removeClass('in-page');\r\n\t\tpagination.elms.pagesElms = $('[data-page]');\r\n\r\n\t\t// Add the classes 'current' and 'show' to the first items page\r\n\t\tvar $itemsPage = $('.items-page').first().addClass('current');\r\n\r\n\t\tpagination.loadPage($itemsPage, function() {\r\n\t\t\tsetTimeout(function(){$('.items-page').first().addClass( 'show' );}, 1);\r\n\t\t\tpagination.updateLoadMoreDisplay();\r\n\t\t});\r\n\t},\r\n\r\n\r\n\twidgetWrap: function($item) {\r\n\r\n\t\t// A helper function to get column sizes from the element class names\r\n\t\tfunction getElColSize($el) {\r\n\t\t\tif ( $el.is('.grid-3') || $el.is('.widget:not(.grid-item)') ){\r\n\t\t\t\treturn 3;\r\n\t\t\t} else if ($el.is('.grid-2') ) {\r\n\t\t\t\treturn 2;\r\n\t\t\t} else {\r\n\t\t\t\treturn 1;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Adds a class to the items to flag which row it is in\r\n\t\t// Also separates the initial rows from the rows within the pagination (initially hidden rows)\r\n\t\tfunction getRowsOfItems() {\r\n\r\n\t\t\tvar rowCount = 0;\r\n\t\t\tvar rowsForPaginationCount = 1;\r\n\t\t\tvar columnsUsedInRow = 0;\r\n\r\n\t\t\t// Rows to show initially before show more button\r\n\t\t\tvar initialRows = parseInt(pagination.elms.triggerEl.attr('data-rows'));\r\n\r\n\t\t\t// If there are 0 initial rows wanting to be shown, we'll make an empty div which will be wrapped by a fake page to keep the rest of the code still working normally\r\n\t\t\tif ( initialRows === 0 ) {\r\n\t\t\t\t$('
').insertBefore($item.first());\r\n\t\t\t}\r\n\r\n\t\t\t// Iterate over items and decifer which go into a row based on the grid item class\r\n\t\t\t$item.each(function( index ) {\r\n\t\t\t\tvar $this = $(this);\r\n\r\n\t\t\t\t// If space left in current row\r\n\t\t\t\tif ( (3 - columnsUsedInRow) >= getElColSize($this) ) {\r\n\r\n\t\t\t\t\tcolumnsUsedInRow += getElColSize($this);\r\n\r\n\t\t\t\t\t// Add data-row attr only if it's not within the initial rows\r\n\t\t\t\t\tif ( rowCount >= initialRows ) {\r\n\t\t\t\t\t\t$this.addClass('in-pagination');\r\n\t\t\t\t\t\t$this.attr('data-row', rowsForPaginationCount);\r\n\t\t\t\t\t}\r\n\t\t\t\t// If space left in current row (now for half-width widget layout - grid-half)\r\n\t\t\t\t} else if ( (4 - columnsUsedInRow) >= getElColSize($this) && $('.grid-half').length) {\r\n\r\n\t\t\t\t\tcolumnsUsedInRow += getElColSize($this);\r\n\r\n\t\t\t\t\t// Add data-row attr only if it's not within the initial rows\r\n\t\t\t\t\tif ( rowCount >= initialRows ) {\r\n\t\t\t\t\t\t$this.addClass('in-pagination');\r\n\t\t\t\t\t\t$this.attr('data-row', rowsForPaginationCount);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t// Else move to next row\r\n\t\t\t\t} else if ( (12 - columnsUsedInRow) >= getElColSize($this) && $('.grid-half').length) {\r\n\r\n\t\t\t\t\tcolumnsUsedInRow += getElColSize($this);\r\n\r\n\t\t\t\t\t// Add data-row attr only if it's not within the initial rows\r\n\t\t\t\t\tif ( rowCount >= initialRows ) {\r\n\t\t\t\t\t\t$this.addClass('in-pagination');\r\n\t\t\t\t\t\t$this.attr('data-row', rowsForPaginationCount);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t// Else move to next row\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcolumnsUsedInRow = 0;\r\n\t\t\t\t\trowCount++;\r\n\t\t\t\t\tif ( rowCount > initialRows ) {\r\n\t\t\t\t\t\trowsForPaginationCount++;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcolumnsUsedInRow += getElColSize($this);\r\n\r\n\t\t\t\t\t// Add data-row attr only if it's not within the initial rows\r\n\t\t\t\t\tif ( rowCount >= initialRows ) {\r\n\t\t\t\t\t\t$this.addClass('in-pagination');\r\n\t\t\t\t\t\t$this.attr('data-row', rowsForPaginationCount);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\twrapRowsInPages();\r\n\t\t}\r\n\r\n\r\n\t\tgetRowsOfItems();\r\n\r\n\t\t// Wraps the rows in pages of 4 rows per page. Also wraps the initial rows in an initially visible page\r\n\t\tfunction wrapRowsInPages() {\r\n\t\t\tvar rowsPerPage = 4;\r\n\t\t\tvar rowCount = 1;\r\n\r\n\t\t\t// Iterate over items in the pagination to wrap the rows\r\n\t\t\t$item.each(function( index ) {\r\n\t\t\t\tvar $this = $(this);\r\n\r\n\t\t\t\t// If has class to say in-pagination...\r\n\t\t\t\tif ( $this.hasClass('in-pagination') ) {\r\n\r\n\t\t\t\t\t// The items have already been assigned a row number to say which row they are in\r\n\t\t\t\t\tvar itemRowNumber = parseInt($this.attr('data-row'));\r\n\r\n\t\t\t\t\t// Add the item to be in the page with a class\r\n\t\t\t\t\t$this.addClass('in-page');\r\n\r\n\t\t\t\t\t// When the item rowNumber changes, increase counter\r\n\t\t\t\t\tif ( rowCount !== itemRowNumber ) {\r\n\t\t\t\t\t\trowCount = itemRowNumber;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ( parseInt($this.next().attr('data-row')) !== itemRowNumber ) {\r\n\r\n\t\t\t\t\t\t// If we get to the next page...\r\n\t\t\t\t\t\tif ( rowCount % 4 === 0 ) {\r\n\r\n\t\t\t\t\t\t\t// Wrap all the items we have previously given an in-page class, in a page wrapper\r\n\t\t\t\t\t\t\tif ($('.page-news').length) {\r\n\t\t\t\t\t\t\t\t$('.in-page').wrapAll('
');\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t$('.in-page').wrapAll('
');\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t// Remove the in-page class and reset rowCount to 0, so that we can move on to the next lot\r\n\t\t\t\t\t\t\t$('.in-page').removeClass('in-page');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$this.addClass('not-in-pagination');\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\r\n\r\n\t\t\t// If there are any in page widgets left over, wrap them up\r\n\t\t\tif( $('.in-page').length > 0 ) {\r\n\t\t\t\tif ($('.page-news').length) {\r\n\t\t\t\t\t$('.in-page').wrapAll('
');\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$('.in-page').wrapAll('
');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Wrap the initial rows in a div as well\r\n\t\t\tif ($('.page-news').length) {\r\n\t\t\t\t$('.not-in-pagination').wrapAll('
');\r\n\t\t\t} else {\r\n\t\t\t\t$('.not-in-pagination').wrapAll('
');\r\n\t\t\t}\r\n\r\n\t\t\t// load the initial rows\r\n\t\t\tpagination.loadPage($('.initial-page'));\r\n\r\n\t\t\t// Clean up classes and data attr\r\n\t\t\t$('.in-pagination, .in-page, .not-in-pagination')\r\n\t\t\t\t.removeClass('in-pagination')\r\n\t\t\t\t.removeClass('in-page')\r\n\t\t\t\t.removeClass('not-in-pagination')\r\n\t\t\t\t.removeAttr('data-row');\r\n\t\t}\r\n\r\n\t\t// Applying classes to the grid items in order to not get gaps in the grid on tablet\r\n\t\t$('.items-page.paging-block.grid-wrap').each( function() {\r\n\t\t\tvar $page = $(this);\r\n\t\t\tvar $items = $page.find('.grid-item');\r\n\r\n\t\t\t$items.removeClass('grid-hide').removeClass('grid-odd-last');\r\n\r\n\t\t\tvar moduleEditorial1Col = $items.last().children(':first').is('.module-editorial:not(.module-editorial-2col)');\r\n\t\t\tvar editorialFeed = $items.last().children(':first').is('.editorial-feed');\r\n\t\t\tvar moduleOffer = $items.last().children(':first').is('.module-offer');\r\n\r\n\t\t\tif ( $items.length % 2 === 1 ) {\r\n\t\t\t\tif ( moduleEditorial1Col || editorialFeed || (moduleOffer && !$('.treat').length) ) {\r\n\t\t\t\t\t$items.last().addClass('grid-hide');\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (!$('.page-your-treats').length){\r\n\t\t\t\t\t\t$items.last().addClass('grid-odd-last');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tpagination.elms.pagesElms = $('[data-page]');\r\n\r\n\t\t// Check if there is more than one page, and then show the load more button\r\n\t\tif ( $('.items-page').length > 1 ) {\r\n\t\t\tpagination.elms.triggerEl.addClass('show');\r\n\t\t}\r\n\t},\r\n\r\n\r\n\tinsertPagination: function() {\r\n\t\t//console.log( \"pagination: insertPagination\" );\r\n\r\n\t\t// Check if show more button is there\r\n\t\tif ( pagination.elms.triggerEl.length === 0 ) { return; }\r\n\r\n\t\tvar $item = $('.pagination-content').find('.' + pagination.elms.paginationType + '');\r\n\r\n\t\t// Call the correct function dependent on which paginationType we want, and pass in the item el\r\n\t\tif ( pagination.elms.paginationType === 'product') { pagination.productWrap($item); }\r\n\t\tif ( pagination.elms.paginationType === 'widget') { pagination.widgetWrap($item); }\r\n\t},\r\n\r\n\r\n\tupdateLoadMoreDisplay: function() {\r\n\t\t//console.log( \"pagination: updateLoadMoreDisplay\" );\r\n\r\n\t\t//apply ellipsis again\r\n\t\t$('.ellipsis-new').each(function(){\r\n\t\t\tellipsisNew.applyEllipsis($(this), true);\r\n\t\t});\r\n\r\n\t\t// If current page has another page after it...\r\n\t\tvar hasNextPage = pagination.elms.pagesElms.filter('.current').next('[data-page]').length > 0;\r\n\r\n\t\t// show or hide the load more button\r\n\t\tpagination.elms.triggerEl[hasNextPage? 'show':'hide']();\r\n\t},\r\n\r\n\r\n\tmovePageSelection: function(event) {\r\n\t\t//console.log( \"pagination: movePageSelection\" );\r\n\r\n\t\tevent.preventDefault();\r\n\r\n\t\t// Get current page\r\n\t\tvar current = pagination.elms.pagesElms.filter('.current');\r\n\t\t// Get last page\r\n\t\tvar isLast = pagination.elms.pagesElms.last();\r\n\r\n\t\t// If next page exists\r\n\t\tif ( current.next('[data-page]').length > 0) {\r\n\r\n\t\t\t// Set loading state to load more button and offset calculation\r\n\t\t\tpagination.elms.triggerEl.addClass('loading');\r\n\r\n\t\t\t// Get button position\r\n\t\t\tvar buttonPos = pagination.elms.triggerEl.offset().top;\r\n\t\t\tvar offsetVal = 10;\r\n\r\n\t\t\tif (windowWidth >= tablet && windowWidth < desktop) {\r\n\t\t\t\toffsetVal = 20;\r\n\t\t\t}\r\n\t\t\tif (windowWidth >= desktop) {\r\n\t\t\t\toffsetVal = 120;\r\n\t\t\t}\r\n\r\n\t\t\t// Get next page\r\n\t\t\tvar nextBlock = current.next('[data-page]');\r\n\r\n\t\t\t// Check image load\r\n\t\t\tpagination.loadPage(nextBlock, function() {\r\n\r\n\t\t\t\t// Show next page\r\n\t nextBlock.addClass('current').slideDown('slow', function() {\r\n\r\n\t \t// Scroll to top of new page\r\n\t \t\t$('body').clearQueue().stop().animate({ scrollTop: buttonPos - offsetVal }, 'slow');\r\n\r\n\t \t\t// Remove loading state to load more button\r\n\t \t\tpagination.elms.triggerEl.removeClass('loading');\r\n\r\n\t \t\t// Add class to fade in content\r\n\t \tnextBlock.addClass('show');\r\n\r\n\t\t\t\t\t// Remove current class from previous page\r\n\t \tcurrent.removeClass('current');\r\n\r\n\t \t//update loadmore button display\r\n\t \tpagination.updateLoadMoreDisplay();\r\n\r\n\t \t// Trigger re-init hack to initialize slider that was off screen\r\n\t\t\t\t\tif ( nextBlock.find('.slider-manual.slider-full.products').length > 0 ) {\r\n\t\t\t\t\t \tnextBlock.find('.slider-manual.slider-full.products').slick('slickSetOption', 'initialSlide', 0, true);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// Re-initialise the editorial widgets, so the text is not overflowing\r\n\t\t\t\t\tif ( nextBlock.find('.module-editorial-copy.ellipsis').length > 0 ) {\r\n\t\t\t\t\t\tellipsis.editorial.init();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ( nextBlock.find('.ellipsis-new').length > 0 ) {\r\n\t\t\t\t\t\tellipsisNew.applyEllipsis(nextBlock.find('.ellipsis-new'));\r\n\t\t\t\t\t}\r\n\r\n\t });\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\r\n\tloadPage: function (elm, callback) {\r\n\t\t//console.log( \"pagination: loadPage\" );\r\n\r\n\t\t// Get number of images in next page\r\n\t\tvar selector = 'img[data-image-load],[data-bg-img-src]';\r\n\t\tvar images_to_load = elm.find('[data-category-list]').not('.filter-hidden').find(selector).length;\r\n\t\tvar images_loaded = 0;\r\n\r\n\t\t// if nothing to load then run callback\r\n\t\tif ( (images_to_load === 0) && (callback !== undefined) ) {\r\n\r\n\t\t\tcallback();\r\n\r\n\t\t} else {\r\n\r\n\t\t\t// Load images\r\n\t\t\telm.find('[data-category-list]').not('.filter-hidden').find(selector).each(function() {\r\n\t\t\t\tvar $this = $(this);\r\n\t\t\t\tvar isImageElm = $this.is('[data-image-load]');\r\n\t\t\t\tvar imgUrl = isImageElm ? $this.attr('data-image-load') : $this.attr('data-bg-img-src');\r\n\r\n\t\t\t\tif(isImageElm) {\r\n\t\t\t\t\t$this\r\n\t\t\t\t\t\t.attr('src', imgUrl)\r\n\t\t\t\t\t\t.load(function() {\r\n\r\n\t\t\t\t\t\t\timages_loaded++;\r\n\t\t\t\t\t\t\t$this.removeAttr('data-image-load');\r\n\r\n\t\t\t\t\t\t\t// If all are loaded...\r\n\t\t\t\t if (images_loaded >= images_to_load) {\r\n\r\n\t\t\t\t \tif (callback !== undefined) {\r\n\t\t\t\t\t\t\t\t\tcallback();\r\n\t\t\t\t \t}\r\n\t\t\t\t }\r\n\t\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar $img = $('');\r\n\t\t\t\t\t$img.attr('src', imgUrl)\r\n\t\t\t\t\t\t.load(function() {\r\n\r\n\t\t\t\t\t\t\t$this.css('background-image', 'url(' + imgUrl + ')');\r\n\r\n\t\t\t\t\t\t\timages_loaded++;\r\n\t\t\t\t\t\t\t$this.removeAttr('data-bg-img-src');\r\n\r\n\t\t\t\t\t\t\t$this.find('.lazy-holder').remove();\r\n\r\n\t\t\t\t\t\t\t// If all are loaded...\r\n\t\t\t\t if (images_loaded >= images_to_load) {\r\n\r\n\t\t\t\t \tif (callback !== undefined) {\r\n\t\t\t\t\t\t\t\t\tcallback();\r\n\t\t\t\t \t}\r\n\t\t\t\t }\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t$this.append($img);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\tsetProductClasses: function() {\r\n\t\t$('.product:not(.filter-hidden)').each(function(index){\r\n\t\t\tif(index % 4 === 0) {\r\n\t\t\t\t$(this).addClass('product-fourth');\r\n\t\t\t}\r\n\t\t\tif(index % 3 === 0) {\r\n\t\t\t\t$(this).addClass('product-third');\r\n\t\t\t}\r\n\t\t\tif(index % 2 === 0) {\r\n\t\t\t\t$(this).addClass('product-second');\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\tinit: function() {\r\n\t\t//console.log( \"pagination: init\" );\r\n\r\n\t\t// First decide which pagination we are doing (products or widgets) and assign it to the global element\r\n\t\tpagination.elms.paginationType = pagination.elms.triggerEl.attr('data-more');\r\n\r\n\t\t// init to remove and then add pagination\r\n\t\tpagination.insertPagination();\r\n\r\n\t\tif ( pagination.elms.triggerEl.length > 0 && pagination.elms.pagesElms.length > 0 ) {\r\n\t\t\tpagination.elms.triggerEl.on('click', pagination.movePageSelection);\r\n\t\t\t$.subscribe('/filters/updated', pagination.removePagination);\r\n\t\t}\r\n\t}\r\n};","var overlay = {\r\n\tpage: $('.page-products'),\r\n\telem: $('.product'),\r\n\toverlayEl: $('.product-overlay'),\r\n\ttriggerOpen: $('.product-overlay-open'),\r\n\ttriggerClose: $('.product-overlay-close'),\r\n\r\n\tforceClose: function() {\r\n\t\t$(overlay.page).find('.active').removeClass('active');\r\n\t\t$(overlay.page).find('.overlay-open').removeClass('overlay-open');\r\n\t},\r\n\r\n\ttoggleOverlay: function() {\r\n\r\n\t\t// Setup Trigger Elements\r\n\t\tvar triggerEls = overlay.triggerOpen.add( overlay.triggerClose );\r\n\t\ttriggerEls.each( function( index, element ) {\r\n\t\t\toverlay.setupTrigger( $( this ) );\r\n\t\t} );\r\n\r\n\t\t// Add Event Listener tp Document\r\n\t\t$(document).click( function(event) {\r\n\r\n\t\t\tif(!$(event.target).closest(overlay.triggerOpen).length && !$(event.target).closest(overlay.overlayEl).length) {\r\n\t\t overlay.forceClose();\r\n\t\t }\r\n\t\t} );\r\n\r\n\t},\r\n\r\n\tadd: function( el ) {\r\n\t\tconsole.log( \"overlay: add\" );\r\n\r\n\t\toverlay.elem = overlay.elem.add( el );\r\n\t\toverlay.overlayEl = overlay.overlayEl.add( el.find( '.product-overlay' ) );\r\n\r\n\t\tel.find( '.product-overlay-open' ).each( function() {\r\n\t\t\toverlay.addTriggerOpenEl( $( this ) );\r\n\t\t} );\r\n\r\n\t\tel.find( '.product-overlay-close' ).each( function() {\r\n\t\t\toverlay.addTriggerCloseEl( $( this ) );\r\n\t\t} );\r\n\r\n\t},\r\n\r\n\taddTriggerOpenEl: function( el ) {\r\n\t\t//console.log( \"overlay: addTriggerOpenEl\", el );\r\n\r\n\t\toverlay.triggerOpen = overlay.triggerOpen.add( el );\r\n\t\toverlay.setupTrigger( el );\r\n\r\n\t},\r\n\r\n\taddTriggerCloseEl: function( el ) {\r\n\t\t//console.log( \"overlay: addTriggerCloseEl\", el );\r\n\r\n\t\toverlay.triggerClose = overlay.triggerClose.add( el );\r\n\t\toverlay.setupTrigger( el );\r\n\r\n\t},\r\n\r\n\tsetupTrigger: function( el ) {\r\n\t\t//console.log( \"overlay: setupTrigger\", el );\r\n\r\n\t\tel.on( 'click', function(e) {\r\n\t\t\tconsole.log( \"overlay: onTriggerClick\" );\r\n\r\n\t\t\te.preventDefault();\r\n\r\n\t\t\toverlay.forceClose();\r\n\t\t\tvar $this = $(this);\r\n\t\t\t$this.closest(overlay.elem).find(overlay.overlayEl).toggleClass('active');\r\n\t\t\t$this.closest(overlay.elem).toggleClass('overlay-open');\r\n\r\n\r\n\t\t\t// Close any zoom overlayz if open\r\n\t\t\tzoom.zoomedEl.removeClass('zoom-open'); // zoom.js\r\n\r\n\r\n\t\t\t// Home - Hero's product carousel - Hide arrows\r\n\t\t\tfunction hideShow_sliderArrows() {\r\n\t\t\t\t$this.closest('.slide-content-products').find('.slick-arrow').each(function(){\r\n\t\t\t\t\t$(this).fadeToggle();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\tif ($this.closest('.slide-content-products').length) {\r\n\t\t\t\tif ($this.hasClass('product-overlay-open')) {\r\n\t\t\t\t\thideShow_sliderArrows();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\thideShow_sliderArrows();\r\n\t\t\t\t\t}, 200);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} );\r\n\r\n\t},\r\n\r\n\tinit: function() {\r\n\t\tif (overlay.overlayEl.length > 0) {\r\n\t\t\toverlay.toggleOverlay();\r\n\t\t}\r\n\t}\r\n};","var productPage = {\r\n\r\n\r\n\t// ----- VARS ----- //\r\n\telms: {\r\n\t\tbody: $( 'html, body' ),\r\n\t\tcontainer: $( '.product-page' ),\r\n\t\titems: $( '.product-page .product' ),\r\n\t\tmore: $( '.pagination-button' ),\r\n\t\ttemplate: $( '#product-template' )\r\n\t},\r\n\r\n\tnumItems: 0,\r\n\r\n\tproductApiUrl: $( '.product-page' ).data( 'product-api-url' ),\r\n\tproductBaseUrl: $('.product-page').data('product-base-url'),\r\n\tproductLanguageNodeId: $('.product-page').data('product-language-node-id'),\r\n\tproductSearchType: $( '.product-page' ).data( 'product-search-type' ),\r\n\tproductSearchValue: $( '.product-page' ).data( 'product-search-value' ),\r\n\tproductResultCount: $( '.product-page' ).data( 'product-result-count' ),\r\n\tproductResultLimit: $( '.product-page' ).data( 'product-result-limit' ),\r\n\r\n\tstate: undefined,\r\n\r\n\ttemplate: undefined,\r\n\r\n\r\n\t// ----- CONSTANTS ----- //\r\n\tSTATE_LOADING: 'loading',\r\n\tSTATE_READY: 'ready',\r\n\tSTYLE_LOADING: 'loading',\r\n\r\n\r\n\t// ----- FUNCTIONS ----- //\r\n\tinit: function () {\r\n\t\t//console.log( 'productPage: init' );\r\n\r\n\t\tif ( productPage.elms.container.length > 0 ) {\r\n\r\n\t\t\tproductPage.handleLoad();\r\n\r\n\t\t\tproductPage.processItems( productPage.elms.items );\r\n\t\t\tproductPage.processTemplate();\r\n\r\n\t\t\tproductPage.numItems = productPage.elms.items.length;\r\n\t\t\tproductPage.toggleMore();\r\n\r\n\t\t\tproductPage.changeState( productPage.STATE_READY );\r\n\r\n\t\t\t// Add Listeners\r\n\t\t\tproductPage.elms.more.on( 'click', productPage.onMoreClick );\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\thandleLoad: function() {\r\n\t\tvar pageUrl = window.location.href;\r\n\t\tvar pageUrl_split = pageUrl.split(productPage.productBaseUrl)[1];\r\n\t\tif (pageUrl_split == undefined) {\r\n\t\t\tpageUrl += '/';\r\n\t\t\tpageUrl_split = pageUrl.split(productPage.productBaseUrl)[1];\r\n\t\t}\r\n\r\n if (pageUrl_split !== undefined && pageUrl_split !== '' && pageUrl_split !== '/' && pageUrl_split !== '.html') {\r\n\t\t\tvar filter = pageUrl_split.split('/');\r\n\t\t\tvar filter_type = filter[filter.length - 2];\r\n\t\t\tvar filter_target = filter[filter.length - 1];\r\n\r\n\t\t\tvar item_target = $('[data-product-search-type=\"' + filter_type + '\"]').find('[data-product-search-value=\"' + filter_target + '\"]');\r\n\r\n\t\t\tif (item_target.length) {\r\n\t\t\t\tvar item_copy = item_target.text();\r\n\t\t\t\t$('.searchDd-main').text(item_copy);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tchangeState: function( state ) {\r\n\t\t//console.log( \"productPage: changeState\", state );\r\n\r\n\t\tproductPage.state = state;\r\n\r\n\t\tif ( productPage.state === productPage.STATE_LOADING )\r\n\t\t\tproductPage.elms.more.addClass( productPage.STYLE_LOADING );\r\n\t\telse\r\n\t\t\tproductPage.elms.more.removeClass( productPage.STYLE_LOADING );\r\n\r\n\t},\r\n\r\n\tloadItems: function() {\r\n\t\t//console.log( \"productPage: loadItems\" );\r\n\r\n\t\t$.ajax( productPage.productApiUrl, {\r\n\t\t data: {\r\n languageNodeId: productPage.productLanguageNodeId,\r\n\t\t\t\tproductSearchType: productPage.productSearchType,\r\n\t\t\t\tproductSearchValue: productPage.productSearchValue,\r\n\t\t\t\tskip: productPage.numItems,\r\n\t\t\t\ttake: productPage.productResultCount\r\n\t\t\t},\r\n\t\t\tdataType: 'JSON',\r\n\t\t\tmethod: 'GET'\r\n\t\t} ).done( function( data, textStatus, jqXHR ) {\r\n\t\t\t//console.log( \"productPage: loadItems: done:\", textStatus );\r\n\r\n\t\t\tproductPage.processData( data );\r\n\t\t\tproductPage.changeState( productPage.STATE_READY );\r\n\r\n\t\t} ).fail( function( jqXHR, textStatus, errorThrown ) {\r\n\t\t\t//console.warn( \"productPage: loadItems: fail:\", textStatus );\r\n\r\n\t\t} );\r\n\r\n\t},\r\n\r\n\tprocessData: function( data ) {\r\n\t\t//console.log( 'productPage: processData', data );\r\n\r\n\t\t// Get Scroll Position Before Appending New Items\r\n\t\tvar currentTop = productPage.elms.body.scrollTop();\r\n\t\tvar newTop = productPage.elms.container.offset().top + productPage.elms.container.height() - 10;\r\n\r\n\t\t// Generate Item HTML via Handle Bars\r\n\t\tvar items = productPage.template(data);\r\n\r\n\t\t// Append New Items to Container\r\n\t\tproductPage.elms.container.append( items );\r\n\r\n\t\t// Update Variables to Include All Items\r\n\t\tproductPage.elms.items = $( '.product-page .product' );\r\n\r\n\t\t// Get the New Items\r\n\t\tvar $items = productPage.elms.items.slice( productPage.elms.items.length - productPage.productResultCount, productPage.elms.items.length );\r\n\r\n\t\t// Process Items\r\n\t\tproductPage.processItems( productPage.elms.items );\r\n\r\n\t\t// Add Overlay\r\n\t\toverlay.add( $items );\r\n\r\n\t\t// Add Social Links\r\n\t\tsocialLinks.add( $items );\r\n\r\n\t\t// Add Zoom\r\n\t\tzoom.destroy();\r\n\t\tzoom.add( $items );\r\n\t\tzoom.init();\r\n\r\n\t\t// Hide Load More Button if Limit Reached\r\n\t\tproductPage.numItems += $items.length;\r\n\t\tproductPage.toggleMore();\r\n\t},\r\n\r\n\tprocessItems: function( $items ) {\r\n\t\t//console.log( \"productPage: processItems\" );\r\n\t\t$items.each( function( index ) {\r\n\t\t\t$(this).removeClass('product-fourth').removeClass('product-third').removeClass('product-second');\r\n\t\t\tif(index % 4 === 0) {\r\n\t\t\t\t$(this).addClass('product-fourth');\r\n\t\t\t}else if(index % 3 === 0) {\r\n\t\t\t\t$(this).addClass('product-third');\r\n\t\t\t}else if(index % 2 === 0) {\r\n\t\t\t\t$(this).addClass('product-second');\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t},\r\n\r\n\tprocessTemplate: function() {\r\n\t\t//console.log( \"productPage: processTemplate\" );\r\n\r\n\t\tvar html = productPage.elms.template.html();\r\n\t\thtml = html.replace( /\\(\\(/g, '{{' );\r\n\t\thtml = html.replace( /\\)\\)/g, '}}' );\r\n\r\n\t\tproductPage.template = Handlebars.compile( html );\r\n\r\n\t},\r\n\r\n\ttoggleMore: function() {\r\n\t\t//console.log( \"productPage: toggleMore\" );\r\n\r\n\t\tif ( productPage.numItems >= productPage.productResultLimit )\r\n\t\t\tproductPage.elms.more.hide();\r\n\t\telse\r\n\t\t\tproductPage.elms.more.show();\r\n\r\n\t},\r\n\r\n\r\n\t// ----- EVENT LISTENERS ----- //\r\n\tonMoreClick: function( e ) {\r\n\t\t//console.log( \"productPage: onMoreClick\" );\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif ( productPage !== productPage.STATE_LOADING ) {\r\n\r\n\t\t\tproductPage.changeState( productPage.STATE_LOADING );\r\n\t\t\tproductPage.loadItems();\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n};","var resgistrationModal = {\r\n\r\n\telWrap: $('#registration-modal'),\r\n\tformEl: $('#registration-modal-form'),\r\n\terrorMessageEl: $('#registration-error-message'),\r\n\tformcontent: $('.modal-registration-form-content'),\r\n thankscontent: $('.modal-registration-thanks-content'),\r\n\tcloseEl: $('.modal-registration-thanks-content .button'),\r\n\r\n\tcustomClose: function() {\r\n\t\tresgistrationModal.closeEl.click(function(e){\r\n\t\t\te.preventDefault();\r\n\t\t\tmodal.hide();\r\n\t\t});\r\n\t},\r\n\r\n\tshow: function() {\r\n\t\tvar timer = resgistrationModal.elWrap.attr('data-triggerdelay') * 1000;\r\n\t\tsetTimeout(function(){\r\n\t\t\tmodal.show('#registration-modal');\r\n\t\t\tresgistrationModal.customClose();\r\n\t\t}, timer);\r\n\t},\r\n\r\n\tsubmitIt: function() {\r\n\t\tresgistrationModal.formEl.submit(function(e){\r\n\t\t\te.preventDefault();\r\n\t\t\tvar _this = $(this);\r\n\t\t\tif (_this.valid()) {\r\n\t\t\t\tvar formData = new FormData();\r\n\t\t\t\tformData.append('privilege_registration_email', $('#RegisterEmail').val());\r\n\t\t\t\tformData.append('privilege_registration_password', $('#RegisterPassword').val());\r\n\t\t\t\tformData.append('LanguageNodeID', $('#LanguageNodeID').val());\r\n\t\t\t\tformData.append('RegistrationOverlay', true);\r\n\t\t\t\t$.ajax({\r\n\t\t\t\t\turl: '/Layout/RegistrationOverlay',\r\n data: formData,\r\n\t\t\t\t\tprocessData: false,\r\n\t\t\t\t\tcontentType: false,\r\n\t\t\t\t\ttype: 'POST',\r\n\t\t\t\t\tdataType: 'json',\r\n\t\t\t\t\tsuccess: function(response){\r\n\t\t\t\t\t\tresgistrationModal.formcontent.hide();\r\n\t\t\t\t\t\tresgistrationModal.thankscontent.fadeIn();\r\n\t\t\t\t\t},\r\n\t\t\t\t\terror: function(response) {\r\n\t\t\t\t\t\tvar msg = JSON.stringify(response.responseJSON.message).replace(/\\\"/g, \"\");\r\n\t\t\t\t\t\tif (resgistrationModal.errorMessageEl && msg){\r\n\t\t\t\t\t\t\tresgistrationModal.errorMessageEl.html(msg);\r\n\t\t\t\t\t\t\tresgistrationModal.errorMessageEl.show();\r\n\t\t\t\t\t\t\t$('#RegisterEmail').one(\"change keyup textInput\", function( event ) {\r\n\t\t\t\t\t\t\t\t$('#registration-modal-form').find('input[type=submit]').prop(\"disabled\", false);\r\n\t\t\t\t\t\t\t\tresgistrationModal.errorMessageEl.html('');\r\n\t\t\t\t\t\t\t\tresgistrationModal.errorMessageEl.hide();\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tconsole.warn(\"Registration failure, can't display error message\");\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t},\r\n\r\n\tinit: function() {\r\n\t\tif (resgistrationModal.elWrap.length && !sessionStorage.getItem('registration-seen')) {\r\n\t\t\tresgistrationModal.show();\r\n\t\t\tresgistrationModal.submitIt();\r\n\t\t}\r\n\t}\r\n};","var search = {\r\n\r\n\telms: {\r\n\t\tsearchInput: $('.smart-search'),\r\n\t\tsearchSubmit: $('.smart-search-submit'),\r\n\t\tbrandsList: $('.brands'),\r\n\t\tbrandItem: $('.brands-list-item'),\r\n\t\tproductsList: $('.products'),\r\n\t\tproductItem: $('.product'),\r\n\t\titem: null,\r\n\t\titemsArr: null\r\n\t},\r\n\tpage: null,\r\n\r\n\trunSearch: function( value ) {\r\n\t\tconsole.log( 'search: runSearch:' + value );\r\n\r\n\t\t// Remove some classes to start a fresh search\r\n\t\t$('.no-matches').removeClass('show');\r\n\t\t$('.title-all-items').addClass('hide');\r\n\t\tsearch.elms.item.removeClass('search-match');\r\n\r\n\t\tvar returnMatches = false;\r\n\t\tvar inputValue = normalizeText(value);\r\n\t\tconsole.log('Input normalized: ' + inputValue + ' vs: ' + value);\r\n\r\n\t // Gets input value and removes non latin characters and spaces\r\n\t\t// Helper to normalize text for searching, replacing special characters and making lowercase\r\n\t\tfunction normalizeText(text) {\r\n\r\n\t\t return text.toLowerCase().replace(/[^a-z\\u00E0-\\u02A8\\d ]+/g, '').replace(/ /g, '').replace(/&/, ' ');\r\n\t\t}\r\n\r\n\t\t// If search box has a value\r\n\t\tif (inputValue !== '') {\r\n\r\n\t\t\t// Iterate over items\r\n\t\t\tsearch.elms.item.each( function( index ) {\r\n\r\n\t\t\t\t// Cache $this to use later\r\n\t\t\t\tvar $currentItem = $(this);\r\n\t\t\t\t// Set a regex for the input match\r\n\t\t\t\tvar inputRegex = '^.*' + inputValue + '.*$';\r\n\r\n\t\t\t\t// Function to search by the word passed in\r\n\t\t\t\tfunction wordSearch( word ) {\r\n\t\t\t\t\t// Get the data attr to search for\r\n\t\t\t\t\tvar dataAttr = '[data-' + word + ']';\r\n\r\n\t\t\t\t\t// Find the element with data-brand attribute and get the value\r\n\t\t\t\t\t// Then, normalize the text with the helper function\r\n\t\t\t\t\tword = normalizeText( $currentItem.find(dataAttr).andSelf().filter(dataAttr).data(word) );\r\n\t\t\t\t\t\r\n\t\t\t\t\tif ( word.match(inputRegex) ) {\r\n\t\t\t\t\t\t// Add attribute to flag it's a match\r\n\t\t\t\t\t\t$currentItem.addClass('search-match');\r\n\t\t\t\t\t\treturnMatches = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\twordSearch( 'brand' );\r\n\r\n\t\t\t\t// Hide elements that don't have the class search-match\r\n\t\t\t\tif ( !$currentItem.hasClass('search-match') ) {\r\n\t\t\t\t\t$currentItem.addClass('filter-hidden').hide();\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Hide Promo box\r\n\t\t\t\t//console.log('hide promo box');\r\n\t\t\t\t$('article.component-wrapper-new.component-img-content.component-promotion').css('display','none');\r\n\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\t$('.title-all-items').removeClass('hide');\r\n\t\t\treturnMatches = true;\r\n\t\t}\r\n\r\n\t\tif ( returnMatches === false ) {\r\n\t\t\t$('.no-matches').addClass('show');\r\n\t\t\t$('.title-all-items').removeClass('hide');\r\n\t\t\tsearch.elms.item.removeClass('filter-hidden').show();\r\n\t\t}\r\n\r\n\t\t// If blocks (on brands page) toggle the blocks\r\n\t\tif (filter.elms.blockElms) {\r\n\t\t\tfilter.updateBlockDisplay();\r\n\t\t}\r\n\t\tif (filter.elms.blocknavElms) {\r\n\t\t\tfilter.scrolltoNav();\r\n\t\t}\r\n\r\n\t\tsearch.clearSearchInput();\r\n\r\n\t\t$.publish('/filters/updated', [ {} ]);\r\n\t},\r\n\r\n\teventListeners: function() {\r\n\r\n\t\tsearch.elms.searchSubmit.on('click', function(event) {\r\n\t\t\tevent.preventDefault();\r\n\t\t\t// First, clear any filters\r\n\t\t\tfilter.clearFilters(event);\r\n\t\t\t// Run the search, passing in the item element\r\n\t\t\tsearch.runSearch( search.elms.searchInput.val() );\r\n\t\t});\r\n\t},\r\n\r\n\tclearSearchInput: function() {\r\n\t\tsearch.elms.searchInput.val('');\r\n\t\tsearch.elms.searchInput.typeahead('val', '').blur();\r\n\t\t// Hide Promo box\r\n\t\t//console.log('clearSearchInput display promo box');\r\n\t\t//$('article.component-wrapper-new.component-img-content.component-promotion').css('display','block');\r\n\r\n\t},\r\n\r\n\tdetectPage: function() {\r\n\r\n\t\t// Set up variables to define, dependant on page\r\n\t\tvar itemsArr = [];\r\n\r\n\t\t// The item element is dependent on which page we are on\r\n\t\tif ( $('.page-products').length > 0 ) {\r\n\t\t\tsearch.page = 'products';\r\n\t\t\tsearch.elms.item = search.elms.productItem;\r\n\t\t}\r\n\t\tif ( $('.page-brands').length > 0 ) {\r\n\t\t\tsearch.page = 'brands';\r\n\t\t\tsearch.elms.item = search.elms.brandItem;\r\n\t\t}\r\n\r\n\t\t// Only perform the rest if item is defined\r\n\t\tif ( search.elms.item !== null ) {\r\n\r\n\t\t\t// Once we have the item we can create an array of item names\r\n\t\t\tsearch.elms.item.each( function( index ) {\r\n\t\t\t\titemsArr.push($(this).find('[data-brand]').attr('data-brand'));\r\n\t\t\t});\r\n\r\n\t\t\t// Pass the page and the item element to the event listeners\r\n\t\t\tif ( search.page === 'brands' )\r\n\t\t\t\tsearch.eventListeners();\r\n\r\n\t\t\t// Pass the compiled array to the elms object to make it globally accessible\r\n\t\t\tsearch.elms.itemsArr = itemsArr;\r\n\r\n\t\t\tconsole.log('itemsArr::' + itemsArr);\r\n\t\t\t// Initialize typeahead.js and pass in array\r\n\t\t\ttypeahead.init(itemsArr);\r\n\t\t}\r\n\t},\r\n\r\n\tinit: function() {\r\n\r\n\t\t// If search box is present\r\n\t\tif (search.elms.searchInput.length > 0) {\r\n\t\t\tsearch.detectPage();\r\n\t\t\tfilter.elms.clearElms.on('click', search.clearSearchInput);\r\n\t\t}\r\n\t}\r\n\r\n};","var sidenav = {\r\n\twrapperEl: $('.sidenav-navItem'),\r\n\tcontentEl: $('.sidenav-item-content'),\r\n\tsocialMediaEl:$('.social-image-fallback'),\r\n\r\n\texpandCollapse: function(_this) {\r\n\t\tnav.undoOthers.undoSubnav();\r\n\t\t$('.weather-open .weather-extended').slideUp();\r\n\t\tweather.wrapper.removeClass('weather-open');\r\n\r\n\t\tif (_this.hasClass('active')) {\r\n\t\t\tsidenav.contentEl.slideUp();\r\n\t\t\tsidenav.wrapperEl.removeClass('active');\r\n\r\n\t\t }\r\n\t\telse {\r\n\t\t\tsidenav.wrapperEl.removeClass('active');\r\n\t\t\t_this.addClass('active');\r\n\t\t\tsidenav.contentEl.slideUp();\r\n\t\t\t_this.find(sidenav.contentEl).slideDown();\r\n\t\t}\r\n\t},\r\n\r\n\teventListeners: function() {\r\n\t\tsidenav.wrapperEl.click(function(e) {\r\n\t\t\tif (isTouch || (!isTouch && windowWidth < desktop)) {\r\n\t\t\t\tif ($(e.target).closest('.sidenav-opening-hours-table').length) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tsidenav.expandCollapse($(this));\r\n\r\n\t\t\t\t// if there's a hash on the link, close the main nav\r\n\t\t\t\tif (e.target.href && e.target.href.indexOf(\"#\") != -1){\r\n\t\t\t\t\tnav.openClose.closeNav.click();\r\n\t\t\t\t}\r\n\t\t\t} else if (!isTouch && windowWidth >= desktop) {\r\n\t\t\t\t// if there's a hash on the link, close the main nav\r\n\t\t\t\tif (e.target.href && e.target.href.indexOf(\"#\") != -1){\r\n\t\t\t\t\tvar targetHash = $(e.target).attr('href').split('#')[1];\r\n\t\t\t\t\tif ($('#' + targetHash).length) {\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\theroNav.scrollToSection($(e.target).attr('href'));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\t\r\n\t},\r\n\r\n\tfixOffset: function() {\r\n\t\tvar offsetDiff = 20;\r\n\r\n\t\tif (windowWidth >= desktop) {\r\n\t\t\toffsetDiff = 80;\r\n\t\t}\r\n\t\treturn offsetDiff;\r\n\t},\r\n\r\n\tinit: function() {\r\n\t\tsidenav.eventListeners();\r\n\t}\r\n};","var slider = {\r\n single: $(\".slider-single:not(.widget-carousel-new)\"),\r\n productCarousel: $(\".product-carousel\"),\r\n heroSlider: $(\".slider-hero\"),\r\n barSlider: $(\".slider-cta\"),\r\n multiItem: $(\".slider-manual.slider-full\"),\r\n multiItem4: $(\".slider-manual.slider-fullx4\"),\r\n multiItem5: $(\".slider-manual.slider-fullx5\"),\r\n multiCentredItem: $(\".slider-manual.slider-centred\"),\r\n multiStyleCentredItem: $(\".style-slider-centred\"),\r\n\r\n inputField: $(\".slider-single\").find(\r\n 'input[type=\"text\"], input[type=\"email\"]'\r\n ),\r\n\r\n // New sliders\r\n syncSimple: $(\".slider-sync-simple\"),\r\n syncComplex: $(\".slider-sync-complex\"),\r\n\r\n durationList: $(\".timedSlider\").map(function(index, item) {\r\n return item.getAttribute(\"data-time\");\r\n }),\r\n\r\n adjustSyncComplexMargin: function(nextSlide, isNextSlide) {\r\n if (isTouch && $(window).width() <= 1023) {\r\n //get video height (code changes according to nextslide or current)\r\n if (isNextSlide) {\r\n var $slideEl = slider.syncSimple.find(\r\n '[data-slick-index=\"' + nextSlide + '\"]'\r\n );\r\n } else {\r\n var $slideEl = slider.syncSimple.find(\".slick-active\");\r\n }\r\n var syncSimpleHeight = slider.syncSimple.outerHeight();\r\n var videoHeight = $slideEl\r\n .find(\".mobile-hero\")\r\n .find(\".video-js\")\r\n .outerHeight();\r\n if (videoHeight != null) {\r\n //set margin top and width of sync complex\r\n slider.syncComplex.css(\r\n \"margin-top\",\r\n videoHeight - syncSimpleHeight - 30\r\n );\r\n slider.syncComplex.css(\"width\", \"100%\");\r\n $slideEl.find(\".mobile-hero\").css(\"background-image\", \"none\");\r\n } else {\r\n slider.syncComplex.css(\"width\", \"96%\");\r\n slider.syncComplex.css(\"margin-top\", \"-15rem\");\r\n }\r\n }\r\n },\r\n\r\n videosInSliders: function(nextSlide) {\r\n var $nextSlideEl = slider.syncSimple.find(\r\n '[data-slick-index=\"' + nextSlide + '\"]'\r\n );\r\n var $nextSlideVideo = $nextSlideEl.find(\".video-cover\");\r\n\r\n if ($nextSlideEl.find(\".video-js\").length) {\r\n slider.adjustSyncComplexMargin(nextSlide, true);\r\n } else {\r\n slider.syncComplex.css(\"width\", \"96%\");\r\n slider.syncComplex.css(\"margin-top\", \"-15rem\");\r\n }\r\n\r\n if ($nextSlideVideo.length) {\r\n\r\n var mobileDisplay = $nextSlideEl\r\n .find(\".mobile-hero\");\r\n var desktopDisplay = $nextSlideEl\r\n .find(\".desktop-hero\");\r\n\r\n if (desktopDisplay.css(\"display\") != \"none\" && desktopDisplay.find(\".auto-play-desktop\").length > 0) {\r\n videojs.getPlayer(desktopDisplay.find(\"video\").attr(\"id\")).muted(true);\r\n videos.playVideo(desktopDisplay.find(\".video-cover\"));\r\n } else if (mobileDisplay.css(\"display\") != \"none\" && mobileDisplay.find(\".auto-play-mobile\").length > 0) {\r\n videojs.getPlayer(mobileDisplay.find(\"video\").attr(\"id\")).muted(true);\r\n videos.playVideo(mobileDisplay.find(\".video-cover\"));\r\n }\r\n } else {\r\n videos.pauseOther();\r\n }\r\n },\r\n\r\n moveContentDown: function(nextSlide) {\r\n var $nextComplexSlideEl = slider.syncComplex.find(\r\n '[data-slick-index=\"' + nextSlide + '\"]'\r\n );\r\n\r\n if (isTouch) {\r\n slider.syncComplex.removeClass(\"move-down\");\r\n videos.pauseOther();\r\n } else {\r\n if ($nextComplexSlideEl.find(\".slide-content-header.move-down\").length) {\r\n slider.syncComplex.addClass(\"move-down\");\r\n } else {\r\n slider.syncComplex.removeClass(\"move-down\");\r\n }\r\n }\r\n },\r\n\r\n handleMobile: function() {\r\n // get content to it's original position\r\n slider.syncComplex.removeClass(\"move-down\");\r\n // Pause video\r\n videos.pauseOther();\r\n // Show back cover once slide animation has finished. why timeout?\r\n // setTimeout(function(){\r\n // \tslider.syncSimple.find('.hidden-cover').removeClass('hidden-cover').fadeIn('fast');\r\n // }, 800);\r\n // console.log('handleMobile FADE IN ');\r\n slider.syncSimple\r\n .find(\".hidden-cover\")\r\n .removeClass(\"hidden-cover\")\r\n .fadeIn(\"fast\");\r\n },\r\n\r\n setupSync: function() {\r\n slider.syncComplex.on(\"init\", function() {\r\n $(\".slider-hero-content\").addClass(\"hero-home-loaded\");\r\n });\r\n slider.syncSimple.slick({\r\n useTransform: true,\r\n speed: 800,\r\n mobileFirst: true,\r\n accessibility: true,\r\n arrows: false,\r\n // autoplaySpeed: 6000,\r\n dots: false,\r\n asNavFor: \".slider-sync-complex\",\r\n // adaptiveHeight: false,\r\n rtl: window.rtl,\r\n responsive: [\r\n {\r\n breakpoint: 660,\r\n settings: {\r\n speed: 500\r\n }\r\n },\r\n {\r\n breakpoint: 360,\r\n settings: {\r\n speed: 400\r\n }\r\n }\r\n ]\r\n });\r\n slider.syncComplex.on(\"init\", function() {\r\n setTimeout(function() {\r\n slider.checkScrollPos();\r\n }, 50);\r\n });\r\n slider.syncComplex.on(\"beforeChange\", function() {\r\n slider.checkScrollPos();\r\n });\r\n slider.syncComplex.slick({\r\n useTransform: true,\r\n speed: 800,\r\n mobileFirst: true,\r\n accessibility: true,\r\n arrows: true,\r\n prevArrow: '',\r\n nextArrow: '',\r\n autoplay: false,\r\n autoplaySpeed: 8000,\r\n asNavFor: \".slider-sync-simple\",\r\n adaptiveHeight: true,\r\n rtl: window.rtl,\r\n responsive: [\r\n {\r\n breakpoint: 660,\r\n settings: {\r\n speed: 500\r\n }\r\n },\r\n {\r\n breakpoint: 360,\r\n settings: {\r\n speed: 400\r\n }\r\n }\r\n ]\r\n });\r\n },\r\n\r\n checkScrollPos: function() {\r\n // console.log('checkScrollPos')\r\n if (\r\n $(document).scrollTop() >\r\n slider.syncComplex.offset().top + slider.syncComplex.height()\r\n ) {\r\n videos.pauseOther();\r\n slider.syncComplex.slick(\"slickPause\");\r\n }\r\n $(window).scroll(\r\n throttle(function(event) {\r\n if (\r\n $(document).scrollTop() >\r\n slider.syncComplex.offset().top + slider.syncComplex.height()\r\n ) {\r\n slider.syncComplex.slick(\"slickPause\");\r\n videos.pauseOther();\r\n } else {\r\n // the slider should not play after being paused\r\n // it's bad UX and a major cause of headache for devs, pms, client and end-users (e.g. video pausing bug)\r\n }\r\n }, 500)\r\n );\r\n },\r\n\r\n smallProducts: function() {\r\n var sliderContentProducts = $(\".small-product-carousel\");\r\n if (sliderContentProducts.length) {\r\n sliderContentProducts.each(function() {\r\n var _this = $(this);\r\n if (_this.hasClass(\"slick-initialized\")) {\r\n _this.slick(\"unslick\");\r\n }\r\n var swipeEnabled = true;\r\n if (_this.closest(\".slider-sync-complex\").length) {\r\n swipeEnabled = false;\r\n }\r\n _this.slick({\r\n useTransform: true,\r\n speed: 500,\r\n accessibility: true,\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n swipe: swipeEnabled,\r\n rtl: window.rtl,\r\n prevArrow: '',\r\n nextArrow: ''\r\n });\r\n });\r\n }\r\n },\r\n\r\n setupSingle: function() {\r\n slider.single.each(function() {\r\n $(this).slick({\r\n useTransform: true,\r\n speed: 800,\r\n mobileFirst: true,\r\n accessibility: true,\r\n arrows: false,\r\n autoplaySpeed: 6000,\r\n rtl: window.rtl,\r\n responsive: [\r\n {\r\n breakpoint: 660,\r\n settings: {\r\n speed: 200\r\n }\r\n },\r\n {\r\n breakpoint: 360,\r\n settings: {\r\n speed: 200\r\n }\r\n }\r\n ]\r\n });\r\n });\r\n },\r\n\r\n setupProductCarousel: function() {\r\n slider.productCarousel.each(function() {\r\n var _this = $(this);\r\n _this.slick({\r\n useTransform: true,\r\n speed: 400,\r\n mobileFirst: true,\r\n accessibility: true,\r\n arrows: true,\r\n rtl: window.rtl,\r\n prevArrow: '',\r\n nextArrow: '',\r\n appendArrows: _this.closest(\".module-new\")\r\n });\r\n });\r\n },\r\n\r\n autoplay: function() {\r\n slider.single.slick(\"slickPlay\");\r\n },\r\n\r\n pause: function() {\r\n slider.single.slick(\"slickPause\");\r\n },\r\n\r\n setupMultiItem: function() {\r\n var transformTrans;\r\n if (isTouch) {\r\n transformTrans = false;\r\n } else {\r\n transformTrans = true;\r\n }\r\n slider.multiItem.each(function() {\r\n $(this).slick({\r\n useTransform: transformTrans,\r\n speed: 500,\r\n accessibility: true,\r\n slidesToShow: 3,\r\n slidesToScroll: 1,\r\n rtl: window.rtl,\r\n responsive: [\r\n {\r\n breakpoint: 660,\r\n settings: {\r\n slidesToShow: 2\r\n }\r\n },\r\n {\r\n breakpoint: 360,\r\n settings: {\r\n slidesToShow: 1\r\n }\r\n }\r\n ]\r\n });\r\n });\r\n slider.multiItem4.each(function() {\r\n $(this).slick({\r\n rtl: window.rtl,\r\n useTransform: true,\r\n speed: 500,\r\n accessibility: true,\r\n slidesToShow: 4,\r\n slidesToScroll: 1,\r\n autoplay: true,\r\n autoplaySpeed: 2000,\r\n responsive: [\r\n {\r\n breakpoint: 800,\r\n settings: {\r\n slidesToShow: 3\r\n }\r\n },\r\n {\r\n breakpoint: 600,\r\n settings: {\r\n slidesToShow: 2\r\n }\r\n },\r\n {\r\n breakpoint: 400,\r\n settings: {\r\n slidesToShow: 1\r\n }\r\n }\r\n ]\r\n });\r\n });\r\n slider.multiItem5.each(function() {\r\n var _this = $(this);\r\n _this.slick({\r\n rtl: window.rtl,\r\n useTransform: true,\r\n speed: 500,\r\n accessibility: true,\r\n slidesToShow: 5,\r\n slidesToScroll: 1,\r\n autoplay: true,\r\n autoplaySpeed: 2000,\r\n prevArrow: '',\r\n nextArrow: '',\r\n appendArrows: _this.closest(\".slider-brands-wrapper\"),\r\n responsive: [\r\n {\r\n breakpoint: 968,\r\n settings: {\r\n slidesToShow: 4\r\n }\r\n },\r\n {\r\n breakpoint: 800,\r\n settings: {\r\n slidesToShow: 3,\r\n centerMode: true,\r\n centerPadding: \"10%\"\r\n }\r\n },\r\n {\r\n breakpoint: 640,\r\n settings: {\r\n slidesToShow: 1,\r\n centerMode: true,\r\n centerPadding: \"24%\"\r\n }\r\n }\r\n ]\r\n });\r\n });\r\n },\r\n\r\n setupStyleMultiCentredItem: function() {\r\n slider.multiStyleCentredItem.each(function() {\r\n $(this).slick({\r\n speed: 500,\r\n rtl: window.rtl,\r\n slidesToShow: 3,\r\n slidesToScroll: 1\r\n //,\r\n //responsive: [\r\n // {\r\n // breakpoint: 950,\r\n // settings: {\r\n // centerMode: true,\r\n // slidesToShow: 3,\r\n // slidesToScroll: 1,\r\n // }\r\n // }, {\r\n // breakpoint: 700,\r\n // settings: {\r\n // centerMode: true,\r\n // slidesToShow: 3,\r\n // slidesToScroll: 1,\r\n // }\r\n // }, {\r\n // breakpoint: 500,\r\n // settings: {\r\n // centerMode: true,\r\n // slidesToShow: 3,\r\n // slidesToScroll: 1,\r\n // }\r\n // }\r\n //]\r\n });\r\n });\r\n },\r\n\r\n setupMultiCentredItem: function() {\r\n slider.multiCentredItem.each(function() {\r\n $(this).slick({\r\n useTransform: true,\r\n speed: 500,\r\n accessibility: true,\r\n centerMode: true,\r\n centerPadding: \"100px\",\r\n rtl: window.rtl,\r\n slidesToShow: 3,\r\n responsive: [\r\n {\r\n breakpoint: 950,\r\n settings: {\r\n centerMode: false,\r\n slidesToShow: 3\r\n }\r\n },\r\n {\r\n breakpoint: 700,\r\n settings: {\r\n centerMode: false,\r\n slidesToShow: 2\r\n }\r\n },\r\n {\r\n breakpoint: 500,\r\n settings: {\r\n centerMode: false,\r\n slidesToShow: 1\r\n }\r\n }\r\n ]\r\n });\r\n });\r\n },\r\n\r\n eventListeners: function() {\r\n slider.syncSimple.on(\"beforeChange\", function(\r\n event,\r\n slick,\r\n currentSlide,\r\n nextSlide\r\n ) {\r\n var $nextSlideEl = slider.syncSimple.find(\r\n '[data-slick-index=\"' + nextSlide + '\"]'\r\n );\r\n var $nextSlideVideo = $nextSlideEl.find(\".video-cover\");\r\n // Don't play video if touch device\r\n if ($(window).width() > 1023) {\r\n slider.futureItem();\r\n }\r\n if (isTouch) {\r\n slider.handleMobile();\r\n slider.videosInSliders(nextSlide);\r\n return;\r\n }\r\n slider.moveContentDown(nextSlide);\r\n slider.videosInSliders(nextSlide);\r\n });\r\n },\r\n\r\n pauseInputFocus: function() {\r\n slider.inputField.focusin(function() {\r\n if (windowWidth >= desktop) {\r\n slider.pause();\r\n }\r\n });\r\n slider.inputField.focusout(function() {\r\n if (windowWidth >= desktop) {\r\n slider.autoplay();\r\n }\r\n });\r\n },\r\n\r\n pauseOnHover: function() {\r\n slider.single.mouseenter(function() {\r\n if (windowWidth >= desktop) {\r\n slider.pause();\r\n }\r\n });\r\n slider.single.mouseleave(function() {\r\n if (windowWidth >= desktop && !slider.inputField.is(\":focus\")) {\r\n slider.autoplay();\r\n }\r\n });\r\n },\r\n\r\n desktopOnly: function() {\r\n slider.autoplay();\r\n slider.pauseOnHover();\r\n },\r\n\r\n lazyLoad: function() {\r\n var $lazySlideItem = $(\".bg-image-item\");\r\n $lazySlideItem.each(function() {\r\n var $this = $(this),\r\n $currentClasses = $this.attr(\"class\"),\r\n $numCC = $currentClasses.match(/\\d+/)[0],\r\n $thisBgImage = $this.attr(\"data-largeSlideImage\");\r\n\r\n if ($thisBgImage !== undefined) {\r\n if ($this.hasClass(\"contains-video\")) {\r\n if ($numCC < 3) {\r\n $this\r\n .find(\".video-cover\")\r\n .css(\"background-image\", \"url(\" + $thisBgImage + \")\");\r\n }\r\n } else {\r\n if ($numCC < 3) {\r\n $this.css(\"background-image\", \"url(\" + $thisBgImage + \")\");\r\n }\r\n }\r\n }\r\n });\r\n },\r\n\r\n futureItem: function() {\r\n var $currentSlide = $(\".slick-current .bg-image-item\"),\r\n $slideClasses = $currentSlide.attr(\"class\"),\r\n $numCC = $slideClasses.match(/\\d+/)[0],\r\n futureNum = parseInt($numCC) + 2,\r\n $futureSlide = $(\".bg-image-item.slide-hero-\" + futureNum),\r\n futureSlideBG = $futureSlide.attr(\"data-largeSlideImage\");\r\n if (futureSlideBG) {\r\n if ($futureSlide.hasClass(\"contains-video\") === true) {\r\n $futureSlide\r\n .find(\".video-cover\")\r\n .css(\"background-image\", \"url(\" + futureSlideBG + \")\");\r\n } else {\r\n $futureSlide.css(\"background-image\", \"url(\" + futureSlideBG + \")\");\r\n }\r\n }\r\n },\r\n\r\n init: function() {\r\n if ($(\".slider-hero-extended\").length) {\r\n slider.setupSync();\r\n }\r\n\r\n if ($(\".small-product-carousel\").length) {\r\n slider.smallProducts();\r\n }\r\n\r\n slider.setupSingle();\r\n slider.setupMultiItem();\r\n slider.setupMultiCentredItem();\r\n slider.setupStyleMultiCentredItem();\r\n slider.pauseInputFocus();\r\n slider.autoplay();\r\n slider.pauseOnHover();\r\n slider.eventListeners();\r\n\r\n if (windowWidth >= desktop) {\r\n slider.desktopOnly();\r\n }\r\n\r\n if (slider.syncSimple.length) {\r\n $firstSlideVideo = slider.syncSimple\r\n .find('[data-slick-index=\"0\"]')\r\n .find(\".video-cover\");\r\n\r\n if (\r\n slider.syncSimple\r\n .find('[data-slick-index=\"0\"]')\r\n .find(\".mobile-hero\")\r\n .find(\".video-js\").length\r\n ) {\r\n slider.adjustSyncComplexMargin(null, false);\r\n }\r\n\r\n var mobileDisplay = slider.syncSimple\r\n .find('[data-slick-index=\"0\"]')\r\n .find(\".mobile-hero\");\r\n\r\n var desktopDisplay = slider.syncSimple\r\n .find('[data-slick-index=\"0\"]')\r\n .find(\".desktop-hero\");\r\n \r\n if (desktopDisplay.css(\"display\") != \"none\" && desktopDisplay.find(\".auto-play-desktop\").length > 0) {\r\n videojs.getPlayer(desktopDisplay.find(\"video\").attr(\"id\")).muted(true);\r\n videos.playVideo(desktopDisplay.find(\".video-cover\"));\r\n } else if (mobileDisplay.css(\"display\") != \"none\" && mobileDisplay.find(\".auto-play-mobile\").length > 0) {\r\n videojs.getPlayer(mobileDisplay.find(\"video\").attr(\"id\")).muted(true);\r\n videos.playVideo(mobileDisplay.find(\".video-cover\"));\r\n }\r\n }\r\n\r\n if (slider.productCarousel.length) {\r\n console.log(\"setupProductCarousel\");\r\n slider.setupProductCarousel();\r\n }\r\n console.log($(window).width());\r\n if ($(window).width() > 1023) {\r\n slider.lazyLoad();\r\n }\r\n\r\n var slideIndex = 0;\r\n var changeSlide = function(timing) {\r\n setTimeout(function() {\r\n if (timing !== 0) {\r\n slider.syncSimple.slick(\"slickNext\");\r\n }\r\n if (slideIndex >= slider.durationList.length) slideIndex = 0;\r\n changeSlide(slider.durationList[slideIndex++]);\r\n }, timing);\r\n };\r\n changeSlide(0);\r\n }\r\n};\r\n\r\nvar debounce = function(func, delay) {\r\n var inDebounce = undefined;\r\n return function() {\r\n var context = this,\r\n args = arguments;\r\n clearTimeout(inDebounce);\r\n return (inDebounce = setTimeout(function() {\r\n return func.apply(context, args);\r\n }, delay));\r\n };\r\n};\r\n\r\nvar throttle = function(func, limit) {\r\n var inThrottle;\r\n return function() {\r\n var args = arguments;\r\n var context = this;\r\n if (!inThrottle) {\r\n func.apply(context, args);\r\n inThrottle = true;\r\n setTimeout(function() {\r\n inThrottle = false;\r\n }, limit);\r\n }\r\n };\r\n};\r\n","var socialLinks = {\r\n\r\n\t// ----- VARS ----- //\r\n\telms: {\r\n\t\tbody: $( 'body' ),\r\n\t\tlinks: $( 'a[data-social-platform]' )\r\n\t},\r\n\tfacebookAppId: undefined,\r\n\tsiteTitle: undefined,\r\n\r\n\r\n\t// ----- CONSTANTS ----- //\r\n\tPLATFORM_FACEBOOK: 'facebook',\r\n\tPLATFORM_MESSENGER: 'messenger',\r\n\tPLATFORM_PINTEREST: 'pinterest',\r\n\tPLATFORM_TWITTER: 'twitter',\r\n\tPLATFORM_WHATSAPP: 'whatsapp',\r\n\r\n\tTEXT_DIVIDER: ' - ',\r\n\r\n\r\n\t// ----- FUNCTIONS ----- //\r\n\tinit: function() {\r\n\t\tsocialLinks.facebookAppId = socialLinks.elms.body.data( 'facebook-app-id' );\r\n\t\tsocialLinks.siteTitle = socialLinks.elms.body.data( 'site-title' );\r\n\r\n\t\t//console.log( 'socialLinks: init' );\r\n\r\n\t\t//console.log( 'facebookAppId:', socialLinks.facebookAppId);\r\n\t\t//console.log( 'siteTitle:', socialLinks.siteTitle );\r\n\r\n\t\t// Create Social Links\r\n\t\tsocialLinks.create();\r\n\r\n\t\t// Add Event Listeners\r\n\t\tsocialLinks.elms.links.on( 'click', socialLinks.onClick );\r\n\r\n\t},\r\n\r\n\tadd: function( el ) {\r\n\t\t////console.log( 'socialLinks: add' );\r\n\r\n\t\tvar links = el.find( 'a[data-social-platform]' );\r\n\t\tlinks.on( 'click', socialLinks.onClick );\r\n\r\n\t\tsocialLinks.create( links );\r\n\t\tsocialLinks.elms.links = socialLinks.elms.links.add( links );\r\n\r\n\t},\r\n\r\n\tcreate: function( links, selector ) {\r\n\t\t//console.log( 'socialLinks: create' );\r\n\r\n\t\tvar platform;\r\n\r\n\t\tlinks = links || socialLinks.elms.links;\r\n\r\n\t\tlinks.each( function( index, link ) {\r\n\r\n\t\t\tplatform = link.getAttribute( 'data-social-platform' ).toLowerCase();\r\n\r\n\t\t\t// link = the tag\r\n\t\t\t// selector = the element which contain the data attributes.\r\n\t\t\t// need to pass it for links within the product modal, which is located now OUTSIDE the selector\r\n\r\n\t\t\tswitch ( platform ) {\r\n\r\n\t\t\t\tcase socialLinks.PLATFORM_FACEBOOK:\r\n\t\t\t\t\tsocialLinks.createFacebook( link, selector );\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase socialLinks.PLATFORM_MESSENGER:\r\n\t\t\t\t\tsocialLinks.createMessenger( link, selector );\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase socialLinks.PLATFORM_PINTEREST:\r\n\t\t\t\t\tsocialLinks.createPinterest( link, selector );\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase socialLinks.PLATFORM_TWITTER:\r\n\t\t\t\t\tsocialLinks.createTwitter( link, selector );\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase socialLinks.PLATFORM_WHATSAPP:\r\n\t\t\t\t\tsocialLinks.createWhatsApp( link, selector );\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t}\r\n\r\n\t\t} );\r\n\r\n\t},\r\n\r\n\tcreateFacebook: function( link, selector ) {\r\n\t\t////console.log( 'socialLinks: createFacebook' );\r\n\r\n\t\tvar elm = selector || link;\r\n\r\n\t\tvar title = socialLinks.getTitle( elm );\r\n\t\tvar url = socialLinks.getUrl( elm );\r\n\t\tvar display = ( $.browser.desktop ) ? 'popup' : 'touch';\r\n\r\n\t\tlink.setAttribute( 'href',\r\n\t\t\t'https://www.facebook.com/dialog/feed' +\r\n\t\t\t'?app_id=' + socialLinks.facebookAppId +\r\n\t\t\t'&display=' + display +\r\n\t\t\t'&caption=' + title +\r\n\t\t\t'&link=' + url\r\n\t\t);\r\n\t\tlink.setAttribute( 'target', '_blank' );\r\n\r\n\t},\r\n\r\n\tcreateMessenger: function( link, selector ) {\r\n\t\t////console.log( 'socialLinks: createMessenger' );\r\n\r\n\t\tvar elm = selector || link;\r\n\r\n\t\tvar title = socialLinks.getTitle( elm );\r\n\t\tvar url = socialLinks.getUrl( elm );\r\n\r\n\t\tlink.setAttribute( 'href',\r\n\t\t\t'fb-messenger://share' +\r\n\t\t\t'?app_id=' + socialLinks.facebookAppId +\r\n\t\t\t'&caption=' + title +\r\n\t\t\t'&link=' + url\r\n\t\t);\r\n\r\n\t},\r\n\r\n\tcreatePinterest: function( link, selector ) {\r\n\t\t//console.log( 'socialLinks: createPinterest' );\r\n\r\n\t\tvar elm = selector || link;\r\n\r\n\t\tvar title = socialLinks.getTitle( elm );\r\n\t\tvar image = socialLinks.getImage( elm );\r\n\t\tvar url = socialLinks.getUrl( elm );\r\n\r\n\t\t//console.log('image url for sharing: ', image);\r\n\r\n\t\tlink.setAttribute( 'href',\r\n\t\t\t'https://pinterest.com/pin/create/button/' +\r\n\t\t\t'?description=' + title +\r\n\t\t\t'&media=' + image +\r\n\t\t\t'&url=' + url\r\n\t\t);\r\n\t\tlink.setAttribute( 'target', '_blank' );\r\n\t},\r\n\r\n\tcreateTwitter: function( link, selector ) {\r\n\t\t//console.log( 'socialLinks: createTwitter' );\r\n\t\t// //console.log( '>>> socialLinks: selector', selector );\r\n\t\t// //console.log( '>>> socialLinks: link', link );\r\n\r\n\t\tvar elm = selector || link;\r\n\r\n\t\tvar title = socialLinks.getTitle( elm );\r\n\t\tvar url = socialLinks.getUrl( elm );\r\n\r\n\t\tlink.setAttribute( 'href',\r\n\t\t\t'https://twitter.com/intent/tweet' +\r\n\t\t\t'?text=' + title +\r\n\t\t\t'&url=' + url\r\n\t\t);\r\n\t\tlink.setAttribute( 'target', '_blank' );\r\n\r\n\t},\r\n\r\n\tcreateWhatsApp: function( link, selector ) {\r\n\t\t////console.log( 'socialLinks: createWhatsApp' );\r\n\r\n\t\tvar elm = selector || link;\r\n\r\n\t\tvar title = socialLinks.getTitle( elm );\r\n\t\tvar url = socialLinks.getUrl( elm );\r\n\r\n\t\tlink.setAttribute( 'href',\r\n\t\t\t'whatsapp://send' +\r\n\t\t\t'?text=' + title +\r\n\t\t\t'%20' + url\r\n\t\t);\r\n\t\tlink.setAttribute( 'data-action', 'share/whatsapp/share' );\r\n\r\n\t},\r\n\r\n\tgetImage: function( elm ) {\r\n\t\t//console.log('getImage, elm: ', elm);\r\n\r\n\t\tvar $elm = $( elm );\r\n\t\tvar image = $elm.closest( '*[data-share-image]' ).attr( 'data-share-image' );\r\n\r\n\t\tif (!image){\r\n\t\t\t//console.log('using data-image-src');\r\n\t\t\timage = $elm.closest( '*[data-image-src]' ).attr( 'data-image-src' );\r\n\t\t}\r\n\r\n\t\treturn encodeURIComponent( image );\r\n\r\n\t},\r\n\r\n\tgetTitle: function( elm ) {\r\n\r\n\t\tvar $elm = $( elm );\r\n\t\tvar title = $elm.closest( '*[data-title]' ).data( 'title' );\r\n\r\n\t\t// //console.log('/// getTitle:', title );\r\n\r\n\t\tif ( title )\r\n\t\t\treturn encodeURIComponent( socialLinks.siteTitle + socialLinks.TEXT_DIVIDER + title );\r\n\r\n\t\treturn encodeURIComponent( socialLinks.siteTitle );\r\n\r\n\t},\r\n\r\n\tgetUrl: function( elm ) {\r\n\r\n\t\tvar $elm = $( elm );\r\n\t\tvar url = $elm.closest( '*[data-share-url]' ).attr( 'data-share-url' );\r\n\r\n\t\t// //console.log('/// getUrl:', url );\r\n\r\n\t\treturn encodeURIComponent( url );\r\n\t},\r\n\r\n\topenWindow: function( url, name, width, height ) {\r\n\t\t////console.log( 'socialLinks: openWindow', url, name, width, height );\r\n\r\n\t\twidth = width || 500;\r\n\t\theight = height || 500;\r\n\r\n\t\twindow.open( url, name, 'width=' + width + ',height=' + height );\r\n\r\n\t},\r\n\r\n\r\n\t// ----- EVENT LISTENERS ----- //\r\n\tonClick: function( e ) {\r\n\t\t////console.log( 'socialLinks: onClick' );\r\n\r\n\t\tif ( $.browser.desktop ) {\r\n\r\n\t\t\te.preventDefault();\r\n\r\n\t\t\tvar url = e.currentTarget.getAttribute( 'href' );\r\n\t\t\tvar name = e.currentTarget.getAttribute( 'aria-label' );\r\n\r\n\t\t\tsocialLinks.openWindow( url, name );\r\n\r\n\t\t}\r\n\r\n\t}\r\n};","var socialPopups = {\r\n\r\n\telms: {\r\n\t\tfooterSocialLinks: $('.footer-social-links ul a')\r\n\t},\r\n\r\n\topenInPopUp: function( e ) {\r\n\t\tvar $target = $(e.target);\r\n\t\tvar href = $target.attr('href');\r\n\t\tvar title = $target.attr('title');\r\n\r\n\t\twindow.open(href, title, \"width=500,height=500\");\r\n\t},\r\n\r\n\teventListeners: function() {\r\n\t\tsocialPopups.elms.footerSocialLinks.on('click', function( e ) {\r\n\t\t\te.preventDefault();\r\n\t\t\tsocialPopups.openInPopUp( e );\r\n\t\t});\r\n\t},\r\n\r\n\tinit: function() {\r\n\t\tsocialPopups.eventListeners();\r\n\t}\r\n};","var productList = {\r\n\tpages: [\r\n\t\t$('.page-lookbook')\r\n\t],\r\n\r\n\tinit: function() {\r\n\t\tfor (var i = productList.pages.length - 1; i >= 0; i--) {\r\n\t\t\tif (productList.pages[i].length) {\r\n\t\t\t\tpagination.setProductClasses();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};"," $(document).on('click', '.stylist-trigger', function () {\r\n\r\n var _this = $(this);\r\n\r\n var stylist = _this.attr('data-stylist-trigger'); \r\n\r\n if (_this.hasClass('current')) {\r\n return;\r\n } else {\r\n \r\n $('.stylist-trigger').removeClass('current');\r\n $('.stylist-target').removeClass('current'); \r\n\r\n _this.addClass('current');\r\n var targets = $('[data-stylist-target=\"' + stylist + '\"]');\r\n targets.addClass('current');\r\n\r\n setTimeout(function () {\r\n targets.find('.widget-carousel-news-feed').flickity('resize');\r\n\r\n var ellipsisEl = targets.find('.ellipsis-new');\r\n if (ellipsisEl.length) {\r\n ellipsisEl.each(function () {\r\n var _this = $(this);\r\n _this.trigger('destroy').removeAttr('style');\r\n setTimeout(function () {\r\n ellipsisNew.applyEllipsis(_this);\r\n }, 50);\r\n });\r\n }\r\n }, 50);\r\n }\r\n\r\n});","var supScripts = {\r\n\r\n\theadings: $('.module-title, .module-free-text-header'),\r\n\r\n\tregexReplace: function() {\r\n\t\tvar $headings = supScripts.headings;\r\n\r\n\t\t$headings.each( function() {\r\n\t\t\tvar str = $(this).html();\r\n\t\t\tvar regex = /([^©®]*)([©®]+)([^©®]*)/g;\r\n\r\n\t\t\tif ( regex.test(str) ) {\r\n\t\t\t\tvar newStr = str.replace( regex, '$1$2$3');\r\n\t\t\t\t$(this).html(newStr);\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\tinit: function() {\r\n\t\tsupScripts.regexReplace();\r\n\t}\r\n};\r\n","var tags = {\r\n\tinit: function() {\r\n\t\tif ($('html').find('div[data-regTracking]').length) {\r\n\t\t\tvar campaignID = $('html').find('div[data-regTracking]').attr('data-regTracking');\r\n\t\t\tdataLayer.push({\r\n\t\t\t 'event': 'Registration',\r\n\t\t\t 'eventCategory': 'Registration',\r\n\t\t\t 'eventAction': 'Success',\r\n\t\t\t 'eventLabel' : campaignID\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t$('#homepagePanel').click(function() {\r\n\t\t\tdataLayer.push({\r\n\t\t\t 'event': 'Widgets',\r\n\t\t\t 'widgetType': 'Homepage Widget',\r\n\t\t\t 'widgetAction': 'Submit'\r\n\t\t\t});\r\n\t\t});\r\n\t\t$('.widget .form-si-submit').click(function() {\r\n\t\t\tdataLayer.push({\r\n\t\t\t 'event': 'Widgets',\r\n\t\t\t 'widgetType': 'Sign-up Widget',\r\n\t\t\t 'widgetAction': 'Submit'\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n};","var termsConditionsModal = {\r\n elWrap: $(\"#terms-conditions-modal\"),\r\n closeEl: $(\"#closeRegisterSocialModal\"),\r\n toggle: $(\"#termsConditionsSocial\"),\r\n submitEl: $(\"#submitRegisterSocialModal\"),\r\n\r\n customClose: function() {\r\n termsConditionsModal.closeEl.click(function(e) {\r\n e.preventDefault();\r\n modal.hide();\r\n });\r\n },\r\n\r\n toggleButton: function() {\r\n termsConditionsModal.toggle.click(function() {\r\n if (termsConditionsModal.submitEl.prop(\"disabled\")) {\r\n termsConditionsModal.submitEl.prop(\"disabled\", false);\r\n } else {\r\n termsConditionsModal.submitEl.prop(\"disabled\", true);\r\n }\r\n });\r\n },\r\n\r\n show: function() {\r\n var timer = termsConditionsModal.elWrap.attr(\"data-triggerdelay\") * 1000;\r\n setTimeout(function() {\r\n modal.show(\"#terms-conditions-modal\");\r\n termsConditionsModal.customClose();\r\n termsConditionsModal.toggleButton();\r\n }, timer);\r\n },\r\n\r\n init: function() {\r\n if (termsConditionsModal.elWrap.length > 0) {\r\n termsConditionsModal.show();\r\n }\r\n }\r\n};\r\n","var text = {\r\n\r\n\tlinkOut: {\r\n\t\telem: $('.link-out'),\r\n\t\twrapperSpan: $('.link-out > span'),\r\n\r\n\t\twrap: function() {\r\n\t\t\ttext.linkOut.elem.each(function(index, element) {\r\n\t\t\t var link = $(element), word_array, last_word, first_part;\r\n\r\n\t\t\t word_array = link.html().split(/\\s+/); // split on spaces\r\n\t\t\t last_word = word_array.pop(); // pop the last word\r\n\t\t\t first_part = word_array.join(' '); // rejoin the first words together\r\n\r\n\t\t\t link.html([first_part, ' ', last_word, ' '].join(''));\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\tbarArrow: {\r\n\t\telem: $('.alert-bar-single'),\r\n\r\n\t\twrap: function() {\r\n\t\t\ttext.barArrow.elem.each(function(index, element) {\r\n\t\t\t var link = $(element), word_array, last_word, first_part;\r\n\r\n\t\t\t word_array = link.text().split(/\\s+/); // split on spaces\r\n\t\t\t last_word = word_array.pop(); // pop the last word\r\n\t\t\t first_part = word_array.join(' '); // rejoin the first words together\r\n\r\n\t\t\t link.html([first_part, ' ', last_word, ''].join(''));\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\tinit: function() {\r\n\t\ttext.linkOut.wrap();\r\n\t\ttext.barArrow.wrap();\r\n\r\n\t\t//break inspiration title in the home page in two lines\r\n\t \tvar inspirationTitle = $('.home-page-get-inspired .section-title-big');\r\n\t \tif (inspirationTitle.html()){\r\n\t \t\tinspirationTitle.html( inspirationTitle.html().replace(' ','
') );\r\n\t \t}\r\n\r\n\t}\r\n};","var trains = {\r\n\r\n\tchilternrailways : function() {\r\n\r\n\t\tvar $defaultFrom,\r\n\t\t\t$defaultTo;\r\n\r\n\t\t$('#chilternrailways #chiltern-from, #chilternrailways #chiltern-to').change(function(){\r\n\t\t\t$('#chilternrailways .results .tbody .tr').remove();\r\n\t\t\t$('#chilternrailways .loading-dots').show();\r\n\t\t\t$('#chilternrailways .timestamp').hide();\r\n\t\t\trefreshTimetable();\r\n\t\t});\r\n\r\n\t\tfunction refreshTimetable() {\r\n\t\t\t$defaultFrom = $('#chilternrailways #chiltern-from').val();\r\n\t\t\t$defaultTo = $('#chilternrailways #chiltern-to').val();\r\n\r\n\t\t\tvar XML = \"https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22http%3A%2F%2Fojp.nationalrail.co.uk%2Fservice%2Fldbboard%2Fdep%2F\"+$defaultFrom+\"%2F\"+$defaultTo+\"%2FTo%22%20and%0A%20%20%20%20%20%20xpath%3D'%2F%2Fdiv%5B%40class%3D%22tbl-cont%22%5D%2Ftable%2Ftbody'\";\r\n\r\n\t\t\t$.ajax({\r\n\t\t\t\ttype: \"GET\",\r\n\t\t\t\turl: XML,\r\n\t\t\t\tdataType: \"xml\"\r\n\t\t\t}).done(function (data) {\r\n\r\n\t\t\t\tvar $dataRow = $(data).find('tr');\r\n\t\t\t\t// Grabbing the text from the templete for translation purposes\r\n\t\t\t\tvar platformTitle = $('.platform-title').text();\r\n\t\t\t\t// Get date\r\n\t\t\t\tvar date = new Date();\r\n\t\t\t\tvar hours = date.getHours();\r\n\t\t\t\tvar minutes = date.getMinutes();\r\n\r\n\t\t\t\t// If has data\r\n\t\t\t\tif ( $dataRow.length > 0 ) {\r\n\t\t\t\t\t// Iterate over data rows and compile a table to append\r\n\t\t\t\t\t$(data).find('tr').each(function() {\r\n\t\t\t\t\t\tvar $due = $(this).find('td:eq(0)').text();\r\n\t\t\t\t\t\tvar $class = $(this).attr('class');\r\n\t\t\t\t\t\tvar $destination = $(this).find('td:eq(1)').text();\r\n\t\t\t\t\t\tvar $status = $(this).find('td:eq(2)').text();\r\n\t\t\t\t\t\tvar $platform = $(this).find('td:eq(3)').text();\r\n\r\n\t\t\t\t\t\t$('
').html('
' + $due + '
' + $destination + '
' + $status + '
' + platformTitle + ' ' + $platform + '
').appendTo('#chilternrailways .results .tbody');\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Get the text from the hidden el on page\r\n\t\t\t\t\tvar noTrainsText = $('.no-trains-text').html();\r\n\t\t\t\t\t// Append a tr to the tbody\r\n\t\t\t\t\t$('
').appendTo('#chilternrailways .results .tbody');\r\n\t\t\t\t\t// Add text to the tr\r\n\t\t\t\t\t$('#chilternrailways .results .no-trains').html(noTrainsText);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$('#chilternrailways .timestamp').text('Last Updated: ' + hours + ':' + minutes);\r\n\r\n\t\t\t\t$('#chilternrailways .loading-dots').hide();\r\n\t\t\t\t$('#chilternrailways .timestamp').show();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\trefreshTimetable();\r\n\t},\r\n\r\n\r\n\tinit: function() {\r\n\t\tif ( $('#chilternrailways').length > 0 ) {\r\n\t\t\ttrains.chilternrailways();\r\n\t\t}\r\n\t}\r\n};\r\n","var treat = {\r\n\twrapperEl: $('.treat, .module-treat-new'),\r\n\topenEl: $('.treat-trigger'),\r\n\tcloseEl: $('.treat-close'),\r\n\tbarcode: $('.module-barcode .barcode'),\r\n\r\n\tisVisible: function (element, fullyInView) {\r\n var pageTop = $(window).scrollTop();\r\n var pageBottom = pageTop + $(window).height();\r\n var elementTop = $(element).offset().top;\r\n var elementBottom = elementTop + $(element).height();\r\n\r\n if (fullyInView === true) {\r\n return ((pageTop < elementTop) && (pageBottom > elementBottom));\r\n } else {\r\n return ((elementTop <= pageBottom) && (elementBottom >= pageTop));\r\n }\r\n },\r\n\r\n\ttoggleCode: function() {\r\n\t\t$('body').on('click', '.treat-trigger, .treat-close', function (e) {\r\n\t\t\te.preventDefault();\r\n\t\t\t$(e.target).closest(treat.wrapperEl).toggleClass('active');\r\n\t\t});\r\n\t},\r\n\r\n\ttoggleFixedCode: function () {\r\n\t\tif (treat.barcode.length === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tif (treat.isVisible(treat.barcode, true)) {\r\n\t\t\t$('body').removeClass('module-barcode-visible');\r\n\t\t} else {\r\n\t\t\t$('body').addClass('module-barcode-visible');\r\n\t\t}\r\n\t},\r\n\r\n\tinit: function() {\r\n\t\tif (treat.wrapperEl.length) {\r\n\t\t\ttreat.toggleCode();\r\n\t\t}\r\n\r\n\t\tif (treat.barcode.length) {\r\n\t\t\t$(window).scroll(treat.toggleFixedCode)\r\n\t\t\t\t.resize(treat.toggleFixedCode)\r\n\t\t\t\t.trigger('resize');\r\n\t\t}\r\n\t\t\r\n\t\t$('.module-title-description.small-screen').ellipsis({\r\n\t\t\tlines: 3,\r\n\t\t\tellipClass: 'ellip',\r\n\t\t\tresponsive: true\r\n\t\t});\r\n\r\n\t\t$('.module-title-readmore').on('click', function () {\r\n\t\t\t$(this).parent().find('.module-title-description.small-screen').addClass('hidden');\r\n\t\t\t$(this).parent().find('.module-title-description.large-screen').addClass('visible');\r\n\t\t\t$(this).hide();\r\n\t\t});\r\n\r\n\t\t$('.searchDd-category > a').on('click', function (e) {\r\n\t\t\tvar $el = $(this);\r\n\t\t\tvar filterCategoryId = $el.data('categoryId');\r\n\t\t\t\r\n\t\t\tif (filterCategoryId) {\r\n\t\t\t\t$('.module-treat-new').each(function (index, item) {\r\n\t\t\t\t\tvar $item = $(item);\r\n\t\t\t\t\tvar treatCategoryId = $item.data('categoryId');\r\n\t\t\t\t\tif (filterCategoryId == treatCategoryId) {\r\n\t\t\t\t\t\t$item.parent().show();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t$item.parent().hide();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\t$('.module-treat-new').parent().show();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tvar $main = $el.closest('.treat-filter').find('.searchDd-main');\r\n\t\t\tvar $list = $el.closest('.treat-filter').find('.searchDd-list');\r\n\r\n\t\t\t$list.find('li > a').removeClass('selected');\r\n\r\n\t\t\tif (filterCategoryId) {\r\n\t\t\t\t$main.find('.searchDd-main-default').hide();\r\n\t\t\t\t$main.find('.searchDd-main-selected').html($el.html()).show();\r\n\t\t\t\t$list.find('.clear-filter').show();\r\n\t\t\t\t$el.addClass('selected');\r\n\t\t\t} else {\r\n\t\t\t\t$main.find('.searchDd-main-selected').hide();\r\n\t\t\t\t$main.find('.searchDd-main-default').show();\r\n\t\t\t\t$list.find('.clear-filter').hide();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t$main.removeClass('open');\r\n\t\t\t$list.removeClass('open');\r\n\t\t});\r\n\t}\r\n};","var twitterFeed = {\r\n\ttid: $('#tw-widget').attr('data-twitter-id'),\r\n\tmodule: $('.twitter-module'),\r\n\r\n\tinit: function() {\r\n\t\t//console.log('running twitter feed..');\r\n\t\tif (twitterFeed.module.length > 0) {\r\n\t\t\tvar config = {\r\n\t\t\t\t'profile': {\"screenName\": twitterFeed.tid},\r\n\t\t\t\t'domId': 'tw-widget',\r\n\t\t\t\t'enableLinks': true,\r\n\t\t\t\t'showTime': false,\r\n\t\t\t\t'showMore': true\r\n\t\t\t};\r\n\t\t\ttwitterFetcher.fetch(config);\r\n\t\t}\r\n\t}\r\n};","var typeahead = {\r\n\r\n\telms: {\r\n\t\ttypeaheadInput: $('.typeahead')\r\n\t},\r\n\r\n\tsetUpTypeahead: function(itemsArr) {\r\n\r\n\t\tvar substringMatcher = function(strs) {\r\n\r\n\t\t\treturn function findMatches(q, cb) {\r\n\r\n\t\t\t\tvar matches, substrRegex;\r\n\r\n\t\t\t\t// an array that will be populated with substring matches\r\n\t\t\t\tmatches = [];\r\n\r\n\t\t\t\t// regex used to determine if a string contains the substring `q`\r\n\t\t\t\tsubstrRegex = new RegExp(q, 'i');\r\n\r\n\t\t\t\t// iterate through the pool of strings and for any string that\r\n\t\t\t\t// contains the substring `q`, add it to the `matches` array\r\n\t\t\t\t$.each(strs, function(i, str) {\r\n\t\t\t\t\tif (substrRegex.test(str)) {\r\n\t\t\t\t\t\tmatches.push(str);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tcb(matches);\r\n\t\t\t};\r\n\t\t};\r\n\r\n\r\n\t\tvar $typeaheadInput = typeahead.elms.typeaheadInput;\r\n\r\n\t\t// console.log(itemsArr);\r\n\r\n\t\t// Set up Twitter Typeahead plugin\r\n\t\t$typeaheadInput.typeahead({\r\n\t\t\thint: true,\r\n\t\t\thighlight: true,\r\n\t\t\tminLength: \"1\"\r\n\t\t},\r\n\t\t{\r\n\t\t\tname: 'itemsArr',\r\n\t\t\tsource: substringMatcher(itemsArr)\r\n\t\t});\r\n\r\n\t\t// Close typeahead on enter\r\n\t\t$(document).keypress(function(e) {\r\n\t\t\tif (e.which === 13) {\r\n\t\t\t\t$typeaheadInput.typeahead('close');\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\tinit: function(itemsArr) {\r\n\t\t// If typeahead input is present\r\n\t\tif (typeahead.elms.typeaheadInput) {\r\n\t\t\ttypeahead.setUpTypeahead(itemsArr);\r\n\t\t}\r\n\t}\r\n};","var validation = {\r\n\r\n\tsetMethods: function() {\r\n\t\t// Define error message options (format and position relative to error input)\r\n\t\t$.validator.setDefaults({\r\n\t\t\tdebug: true,\r\n\t\t\tsuccess: 'valid',\r\n\t\t\terrorElement: 'span',\r\n\t\t\terrorPlacement: function(error, element) {\r\n\t\t\t\tif ( $(element).is(':checkbox') ) { // Move message on checkboxes\r\n\t\t\t\t\terror.insertAfter( $(element).parent() );\r\n\t\t\t\t} else if ($(element).is(':radio')) { // Move message on radio buttons\r\n\t\t\t\t\terror.insertAfter( $(element).parent().parent() );\r\n\t\t\t\t} else if ($(element).siblings('.tooltip-wrapper').length) { // Move message when tooltip on the side\r\n\t\t\t\t\terror.insertAfter( $(element).parent() );\r\n\t\t\t\t} else if ($(element).attr('data-validation-nomessage')) { // Remove validation message\r\n\t\t\t\t\terror.remove();\r\n\t\t\t\t} else if ($(element).is('.home-panel-form-text')) { // home page registration panel\r\n\t\t\t\t\terror.insertAfter( $(element).siblings('.button') );\r\n\t\t\t\t} else { // This is the default behavior of the script\r\n\t\t\t\t\terror.insertAfter( $(element) );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// Validation method for regex expressions\r\n\t\t$.validator.addMethod(\r\n\t\t\t'regexFormat',\r\n\t\t\tfunction(value, element) {\r\n\t\t\t\tvar regexString = $(element).attr('data-validation-regex');\r\n\t\t\t\tvar check = false;\r\n\t\t\t\tvar re = new RegExp(regexString);\r\n\t\t\t\treturn this.optional(element) || (re.test(value) > 0);\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t\t// Validation method for regex expressions\r\n\t\t$.validator.addMethod(\r\n\t\t\t'registerEmailFormat',\r\n\t\t\tfunction(value, element) {\r\n\t\t\t\temail = value.replace(/^\\s*|\\s*$/g, '');\r\n\r\n\t\t\t\t// Some quick checks\r\n\t\t\t\tif (email.match(/[\\t\\r\\n]/)) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\tif (email.length == 0 || email.length > 320) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar atIndex = email.length - 1;\r\n\t\t\t\tif (email.charAt(atIndex) == ']') {\r\n\t\t\t\t\t// Bracketed domain\r\n\t\t\t\t\tatIndex --;\r\n\t\t\t\t\tvar curr = email.charAt(atIndex);\r\n\t\t\t\t\tvar prev = email.charAt(atIndex - 1);\r\n\t\t\t\t\tvar domain = '';\r\n\t\t\t\t\twhile (curr != '[' && atIndex) {\r\n\t\t\t\t\t\tvar currCode = curr.charCodeAt(0);\r\n\t\t\t\t\t\tif (prev == '\\\\') {\r\n\t\t\t\t\t\t\tif (currCode >= 128 || currCode < 1) {\r\n\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tdomain = curr + domain;\r\n\t\t\t\t\t\t\tatIndex -= 2;\r\n\t\t\t\t\t\t\tcurr = email.charAt(atIndex);\r\n\t\t\t\t\t\t\tprev = email.charAt(atIndex - 1);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tif ((currCode <= 127 && currCode >= 94) ||\r\n\t\t\t\t\t\t\t\t(currCode <= 90 && currCode >= 14) ||\r\n\t\t\t\t\t\t\t\t(currCode <= 9 && currCode >= 1) ||\r\n\t\t\t\t\t\t\t\tcurrCode == 11 || currCode == 12) {\r\n\t\t\t\t\t\t\t\tdomain = curr + domain;\r\n\t\t\t\t\t\t\t\tatIndex --;\r\n\t\t\t\t\t\t\t\tcurr = prev;\r\n\t\t\t\t\t\t\t\tprev = email.charAt(atIndex - 1);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t// Invalid unquoted character\r\n\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (atIndex < 1) {\r\n\t\t\t\t\t\t// We need at least one character to the left of the @ symbol\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (prev != '@') {\r\n\t\t\t\t\t\t// Improper escaping\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (! is_valid_email_domain(domain, true)) {\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tatIndex --;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Labels with dots; \":\" is a special thing for IPv6\r\n\t\t\t\t\tvar allowed = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!#$%&'*+-/=?^_`{|}~.:\";\r\n\t\t\t\t\twhile (allowed.indexOf(email.charAt(atIndex)) >= 0 && atIndex) {\r\n\t\t\t\t\t\tatIndex --;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (atIndex < 1) {\r\n\t\t\t\t\t\t// Must have at least 1 character to the left of the @ symbol\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (email.charAt(atIndex) != '@') {\r\n\t\t\t\t\t\t// Invalid\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvar domain = email.substring(atIndex + 1);\r\n\t\t\t\t\tif (! is_valid_email_domain(domain, false)) {\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Check info@ and sales@\r\n\t\t\t\tvar beforeAt = email.split('@')[0];\r\n\t\t\t\tif (beforeAt === 'info' || beforeAt === 'sales') {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar localPart = email.substring(0, atIndex);\r\n\t\t\t\tif (localPart.length > 64) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\tvar allowedLocal = \"!#$%&'*+-/0123456789=?ABCDEFGHIJKLMNOPQRSTUVWXYZ^_`abcdefghijklmnopqrstuvwxyz{|}~\";\r\n\r\n\t\t\t\t// Parsing mode:\r\n\t\t\t\t// 0 = start of a label\r\n\t\t\t\t// 1 = in label, normal text (unquoted)\r\n\t\t\t\t// 2 = in label, quoted text\r\n\t\t\t\t// 3 = in label, quoted and escaped (last was a backslash)\r\n\t\t\t\t// 4 = after quoted label (only allows a period as next char)\r\n\t\t\t\tvar mode = 0;\r\n\t\t\t\tfor (i = 0; i < localPart.length; i ++) {\r\n\t\t\t\t\tvar c = localPart.charAt(i);\r\n\r\n\t\t\t\t\tif (mode == 0) {\r\n\t\t\t\t\t\t// Start of a label\r\n\t\t\t\t\t\tif (c == '\"') {\r\n\t\t\t\t\t\t\tmode = 2;\r\n\t\t\t\t\t\t} else if (c == '.') {\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t} else if (allowedLocal.indexOf(c) < 0) {\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tmode = 1;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if (mode == 1) {\r\n\t\t\t\t\t\t// In unquoted label\r\n\t\t\t\t\t\tif (c == '.') {\r\n\t\t\t\t\t\t\tmode = 0;\r\n\t\t\t\t\t\t} else if (allowedLocal.indexOf(c) < 0) {\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if (mode == 2) {\r\n\t\t\t\t\t\t// In quoted label\r\n\t\t\t\t\t\tif (c == '\"') {\r\n\t\t\t\t\t\t\tmode = 4;\r\n\t\t\t\t\t\t} else if (c == '\\\\') {\r\n\t\t\t\t\t\t\tmode = 3;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tvar cCode = c.charCodeAt(0);\r\n\t\t\t\t\t\t\tif ((cCode > 8 && cCode < 11) ||\r\n\t\t\t\t\t\t\t\t(cCode > 90 && cCode < 94) ||\r\n\t\t\t\t\t\t\t\tcCode == 13 || cCode == 34 || cCode > 127) {\r\n\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if (mode == 3) {\r\n\t\t\t\t\t\tvar cCode = c.charCodeAt(0);\r\n\t\t\t\t\t\tif (cCode == 10 || cCode == 11 || cCode > 127) {\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tmode = 2;\r\n\t\t\t\t\t} else if (mode == 4) {\r\n\t\t\t\t\t\tif (c != '.') {\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tmode = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (mode != 1 && mode != 4) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t\t// This function assumes you already checked for invalid characters\r\n\t\t// Any escaping has been removed\r\n\t\tfunction is_valid_email_domain(domain, isBracketed) {\r\n\t\t\tif (domain.length == 0) {\r\n\t\t\t\t// Gotta have a domain\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tif (domain.length > 253) {\r\n\t\t\t\t// Too long for DNS to work\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tif (domain.match(/^\\.|\\.\\.|\\.$/)) {\r\n\t\t\t\t// No empty labels allowed\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tif (domain.match(/^-|--|\\.-|-\\.|-$/)) {\r\n\t\t\t\t// No leading or trailing hyphens allowed in labels. No double hyphens\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tvar labels = domain.split('.');\r\n\t\t\tvar looksLikeIPv4 = false;\r\n\t\t\tvar looksLikeIPv6 = false;\r\n\t\t\tif (labels.length == 4) {\r\n\t\t\t\tlooksLikeIPv4 = true;\r\n\t\t\t} else if (labels.length == 1) {\r\n\t\t\t\tlooksLikeIPv6 = true;\r\n\t\t\t\tvar allowedIPv6 = '0123456789abcdefABCDEF';\r\n\t\t\t\tvar parts = labels[0].split(':');\r\n\t\t\t\tif (parts.length != 5 || parts[2] != '') {\r\n\t\t\t\t\tlooksLikeIPv6 = false;\r\n\t\t\t\t}\r\n\t\t\t\tfor (var i in parts) {\r\n\t\t\t\t\tif (parts[i].length > 4) {\r\n\t\t\t\t\t\tlooksLikeIPv6 = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tfor (var j = 0; j < parts[i].length; j ++) {\r\n\t\t\t\t\t\tif (allowedIPv6.indexOf(parts[i].charAt(j)) < 0) {\r\n\t\t\t\t\t\t\tlooksLikeIPv6 = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tfor (var i in labels) {\r\n\t\t\t\tif (labels[i].length > 63) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\tif (looksLikeIPv4) {\r\n\t\t\t\t\tif (labels[i].length > 3) {\r\n\t\t\t\t\t\tlooksLikeIPv4 = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tfor (var j = 0; j < labels[i].length; j ++) {\r\n\t\t\t\t\t\tif ('01234567890'.indexOf(labels[i].charAt(j)) < 0) {\r\n\t\t\t\t\t\t\tlooksLikeIPv4 = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (looksLikeIPv4 && (labels[i] < 0 || labels[i] > 255)) {\r\n\t\t\t\t\t\tlooksLikeIPv4 = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// If we have a \":\", it is only allowed for IPv6 or bracketed domains\r\n\t\t\tif (! looksLikeIPv6 && domain.indexOf(':') >= 0 && ! isBracketed) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\t// IPv6 and IPs don't have alpha-only TLDs\r\n\t\t\tif (! looksLikeIPv4 && ! looksLikeIPv6) {\r\n\t\t\t\tvar tld = labels[labels.length - 1];\r\n\t\t\t\tvar tldIndex = tld.length;\r\n\t\t\t\tvar allowedTld = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\r\n\t\t\t\twhile (tldIndex) {\r\n\t\t\t\t\ttldIndex --;\r\n\t\t\t\t\tif (allowedTld.indexOf(tld.charAt(tldIndex)) < 0) {\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t// Validation method for inputs that need matching other inputs\r\n\t\t$.validator.addMethod(\r\n\t\t\t'matchInput',\r\n\t\t\tfunction(value, element){\r\n\t\t\t\tvar $this = $(element);\r\n\t\t\t\tvar $thisVal = $this.val();\r\n\t\t\t\tvar $matchEl = $this.attr('data-validation-matchTo');\r\n\t\t\t var $matchElVal = $this.closest('form').find('[name=\"' + $matchEl + '\"]').val();\r\n\r\n\t\t\t if ($thisVal !== $matchElVal) {\r\n\t\t\t return false;\r\n\t\t\t } else {\r\n\t\t\t return true;\r\n\t\t\t }\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t\t// Validation method for custom dropdowns\r\n\t\t$.validator.addMethod(\r\n\t\t\t'selectRequired',\r\n\t\t\tfunction(value, element){\r\n\t\t\t\tif (value === 'clearSelect' || value === '') {\r\n\t\t\t\t\t$(element).closest('.select-wrapper').find('.dk-selected').addClass('select-error');\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$(element).closest('.select-wrapper').find('.dk-selected').removeClass('select-error');\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t\t// Validation method for min length\r\n\t\t$.validator.addMethod(\r\n\t\t\t'minLengthCheck',\r\n\t\t\tfunction(value, element) {\r\n\t\t\t\tvar $lengthVal = $(element).attr('data-validation-minLength');\r\n\t\t\t\tvar $inputValLength = value.length;\r\n\t\t\t\tif ($inputValLength < parseInt($lengthVal)) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t\t// Validation method for max length\r\n\t\t$.validator.addMethod(\r\n\t\t\t'maxLengthCheck',\r\n\t\t\tfunction(value, element) {\r\n\t\t\t\tvar $lengthVal = $(element).attr('data-validation-maxLength');\r\n\t\t\t\tvar $inputValLength = value.length;\r\n\t\t\t\tif ($inputValLength > parseInt($lengthVal)) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t\tfunction isValidDate2(y, m, d) {\r\n\t\t\t// No leap year by default\r\n\t\t\tvar daysInMonth = [31,28,31,30,31,30,31,31,30,31,30,31];\r\n\r\n\t\t\t// Check for leap (if evenly divisible by 4)\r\n\t\t\tif (((y % 4 === 0) && (y % 100 !== 0)) || (y % 400 === 0)) {\r\n\t\t\t\tdaysInMonth[1] = 29;\r\n\t\t\t}\r\n\t\t\treturn d <= daysInMonth[--m];\r\n\t\t}\r\n\r\n\t\tvar isSubmitted = false;\r\n\r\n\t\t$('.birthday-selects').closest('form').find('button[type=\"submit\"]').on('click', function() {\r\n\t\t\tvar date = $('.dob-hidden').val();\r\n\t\t\tvar dateSplit = date.split('/');\r\n\t\t\tif (\r\n\t\t\t\t!(dateSplit[0] === '' && dateSplit[1] === '' && dateSplit[2] === '')\r\n\t\t\t\t&&\r\n\t\t\t\t(dateSplit[0] === '' || dateSplit[1] === '' || dateSplit[2] === '')\r\n\t\t\t) {\r\n\t\t\t\tisSubmitted = true;\r\n\t\t\t\t$('.birthday-selects').find('.dk-selected').each(function() {\r\n\t\t\t\t\t$(this).addClass('select-error');\r\n\t\t\t\t});\r\n\t\t\t\t$('.birthday-selects').find('select').each(function() {\r\n\t\t\t\t\t$(this).addClass('error');\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// Validation method for date of birth\r\n\t\t$.validator.addMethod(\r\n\t\t\t'validBirthDate',\r\n\t\t\tfunction(value, element){\r\n\t\t\t\tvar date = value;\r\n var dateSplit = date.split('/');\r\n\r\n if (date === '')\r\n return true;\r\n\r\n\t\t\t\tif (isSubmitted === false) {\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\t(isValidDate2(dateSplit[0], dateSplit[1], dateSplit[2]) === false)\r\n\t\t\t\t\t\t&&\r\n\t\t\t\t\t\t(dateSplit[0] !== '' && dateSplit[1] !== '' && dateSplit[2] !== '')\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\t$('.birthday-selects').find('.dk-selected').each(function() {\r\n\t\t\t\t\t\t\t$(this).addClass('select-error');\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t$('.birthday-selects').find('select').each(function() {\r\n\t\t\t\t\t\t\t$(this).addClass('error');\r\n });\r\n \r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t$('.birthday-selects').find('.dk-selected').each(function() {\r\n\t\t\t\t\t\t\t$(this).removeClass('select-error');\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t$('.birthday-selects').find('select').each(function() {\r\n\t\t\t\t\t\t\t$(this).removeClass('error');\r\n });\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t(isValidDate2(dateSplit[0], dateSplit[1], dateSplit[2]) === false)\r\n\t\t\t\t\t\t\t&&\r\n\t\t\t\t\t\t\t!(dateSplit[0] === '' || dateSplit[1] === '' || dateSplit[2] === '')\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t\t||\r\n\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t(dateSplit[0] !== '' && dateSplit[1] === '' && dateSplit[2] === '')\r\n\t\t\t\t\t\t\t||\r\n\t\t\t\t\t\t\t(dateSplit[0] === '' && dateSplit[1] !== '' && dateSplit[2] === '')\r\n\t\t\t\t\t\t\t||\r\n\t\t\t\t\t\t\t(dateSplit[0] === '' && dateSplit[1] === '' && dateSplit[2] !== '')\r\n\t\t\t\t\t\t\t||\r\n\t\t\t\t\t\t\t(dateSplit[0] !== '' && dateSplit[1] !== '' && dateSplit[2] === '')\r\n\t\t\t\t\t\t\t||\r\n\t\t\t\t\t\t\t(dateSplit[0] !== '' && dateSplit[1] === '' && dateSplit[2] !== '')\r\n\t\t\t\t\t\t\t||\r\n\t\t\t\t\t\t\t(dateSplit[0] === '' && dateSplit[1] !== '' && dateSplit[2] !== '')\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\t$('.birthday-selects').find('.dk-selected').each(function() {\r\n\t\t\t\t\t\t\t$(this).addClass('select-error');\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t$('.birthday-selects').find('select').each(function() {\r\n\t\t\t\t\t\t\t$(this).addClass('error');\r\n });\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tisSubmitted = false;\r\n\t\t\t\t\t\t$('.birthday-selects').find('.dk-selected').each(function() {\r\n\t\t\t\t\t\t\t$(this).removeClass('select-error');\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t$('.birthday-selects').find('select').each(function() {\r\n\t\t\t\t\t\t\t$(this).removeClass('error');\r\n });\r\n return true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t);\r\n\r\n\r\n\t\t// Allow empty fields\r\n\t\t$.validator.addMethod(\r\n\t\t\t'allowEmpty',\r\n\t\t\tfunction(value, element) {\r\n\t\t\t\tvar $inputValLength = value.length;\r\n\t\t\t\tif ($inputValLength === 0) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t);\r\n\t},\r\n\r\n\tstripSpacesFromEmail: function($form) {\r\n\t\tconsole.log('strip spaces')\r\n\t\t$form.find('input[type=\"email\"]').forEach(function(item){\r\n\t\t\tconsole.log(item)\r\n\t\t})\r\n\t},\r\n\r\n\t// Trigger validation for each form\r\n\tvalidateForms: function() {\r\n\t\tvar formSubmitted = false;\r\n\t\t$('form').each(function(){\r\n\t\t\tvar $form = $(this);\r\n $form.validate({\r\n ignore: \"\",\r\n\t\t\t\tsubmitHandler: function(form) {\r\n\t\t\t\t\t//strip spaces from email inputs\r\n\t\t\t\t\t$form.find('input[type=\"email\"]').each(function(item){\r\n\t\t\t\t\t\t$(this).val( $(this).val().trim() )\r\n\t\t\t\t\t})\r\n\t\t\t\t\t$form.find('input[type=\"submit\"]').prop('disabled', true);\r\n\t\t\t\t\tif (formSubmitted === false) {\r\n\t\t\t\t\t\tformSubmitted = true;\r\n\r\n\t\t\t\t\t\tif ($form.attr('id') !== 'registration-modal-form') {\r\n\t\t\t\t\t\t\tform.submit();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t},\r\n\r\n\t// Set validation rules for different types input sets\r\n\tsetRules: function() {\r\n\t\t// Check required\r\n\t\t$('input').each(function() {\r\n\t\t\tvar message_required = $(this).attr('data-validation-empty');\r\n\t\t\tif (message_required) {\r\n\t\t\t $(this).rules('add', {\r\n\t\t\t\t\trequired: true,\r\n\t\t\t messages: { required: message_required }\r\n\t\t\t });\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// Regex input formats\r\n\t\t$('[data-validation-regex]').each(function() {\r\n\t\t\tvar message_format = $(this).attr('data-validation-format');\r\n\t\t $(this).rules('add', {\r\n\t\t\t\tregexFormat: true,\r\n\t\t messages: {\r\n\t\t \tregexFormat: message_format\r\n\t\t }\r\n\t\t });\r\n\t\t});\r\n\r\n\t\t// Email input formats (this does not target all email inputs)\r\n\t\t$('[data-validation-registerEmail]').each(function() {\r\n\t\t\tvar message_format = $(this).attr('data-validation-format');\r\n\t\t $(this).rules('add', {\r\n\t\t\t\tregisterEmailFormat: true,\r\n\t\t messages: {\r\n\t\t registerEmailFormat: message_format\r\n\t\t }\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t// Prevent input of spaces in email fields (works on android!)\r\n\t\t$('input[type=\"email\"]').on('textInput', function(e) {\r\n\t\t\tvar keyCode = e.originalEvent.data.charCodeAt(0);\r\n\t\t\tif (keyCode === 32) return false\r\n\t\t})\r\n\r\n\t\t// Re-enter inputs matching (email and password)\r\n\t\t$('[data-validation-matchTo]').each(function() {\r\n\t\t\tvar matchTo = $(this).attr('data-validation-matchTo');\r\n\t\t\tvar message_matchTo = $(this).attr('data-validation-format');\r\n\t\t $(this).rules('add', {\r\n\t\t\t\tmatchInput: true,\r\n\t\t\t\tmessages: {\r\n\t\t\t\t\tmatchInput: message_matchTo\r\n\t\t }\r\n\t\t });\r\n\t\t});\r\n\r\n\t\t// Minimum length inputs\r\n\t\t$('[data-validation-minLength]').each(function() {\r\n\t\t\tvar minLength_message = $(this).attr('data-validation-minLenght-message');\r\n\t\t $(this).rules('add', {\r\n\t\t\t\tminLengthCheck: true,\r\n\t\t\t\tmessages: {\r\n\t\t\t\t\tminLengthCheck: minLength_message\r\n\t\t }\r\n\t\t });\r\n\t\t});\r\n\r\n\t\t// Maximum length inputs\r\n\t\t$('[data-validation-maxLength]').each(function() {\r\n\t\t\tvar maxLength_message = $(this).attr('data-validation-maxLenght-message');\r\n\t\t $(this).rules('add', {\r\n\t\t\t\tmaxLengthCheck: true,\r\n\t\t\t\tmessages: {\r\n\t\t\t\t\tmaxLengthCheck: maxLength_message\r\n\t\t }\r\n\t\t });\r\n\t\t});\r\n\r\n\t\t// Dropdowns\r\n\t\t$('select[data-validation-empty]').each(function() {\r\n\t\t\tvar message_required = $(this).attr('data-validation-empty');\r\n\t\t $(this).rules('add', {\r\n\t\t\t\tselectRequired: true,\r\n\t\t\t\tmessages: {\r\n\t\t\t\t\tselectRequired: message_required\r\n\t\t }\r\n\t\t });\r\n\t\t});\r\n\r\n\t\t// Validate Date Of Birth\r\n\t $('.dob-hidden').each(function() {\r\n\t\t\tvar message_valid = $(this).attr('data-validation-dob');\r\n\t\t $(this).rules('add', {\r\n\t\t\t\tvalidBirthDate: true,\r\n\t\t\t\tmessages: {\r\n\t\t\t\t\tvalidBirthDate: message_valid\r\n\t\t }\r\n\t\t });\r\n\t\t});\r\n\r\n\t\tfunction populateDob() {\r\n\t\t\tvar $container = $('.birthday-selects');\r\n\t\t\tvar $day = $container.find('#DobDay');\r\n\t\t\tvar $month = $container.find('#DobMonth');\r\n\t\t\tvar $year = $container.find('#DobYear');\r\n\t\t\t// get values\r\n\t\t\tvar $dayVal = $day.val().toString();\r\n\t\t\tvar $monthVal = $month.val().toString();\r\n\t\t\tvar $yearVal = $year.val().toString();\r\n\r\n if (!$dayVal && !$monthVal && !$yearVal)\r\n return;\r\n\r\n\t\t\t$('.dob-hidden').val($yearVal + '/' + $monthVal + '/' + $dayVal);\r\n\t\t}\r\n\r\n\t\tif ($('.birthday-selects').length) {\r\n\t\t\tpopulateDob();\r\n\t\t}\r\n\r\n\t\t$('.birthday-selects select').each(function() {\r\n\t\t\t$(this).on('change', function() {\r\n\t\t\t\tvar wrapper = $(this).closest('.select-wrapper');\r\n\t\t\t\tpopulateDob();\r\n\r\n\t\t\t\t$('.dob-hidden').focus();\r\n\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t$('.dob-hidden').blur();\r\n\t\t\t\t\tvar customDd = wrapper.find('.dk-selected');\r\n\t\t\t\t\tif (customDd.length) {\r\n\t\t\t\t\t\tcustomDd.focus();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\twrapper.find('select');\r\n\t\t\t\t\t}\r\n\t\t\t\t},50);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t// Allow empty fields\r\n\t\t$('[data-validation-allowEmpty]').each(function(){\r\n\t\t\t$(this).rules('add', {\r\n\t\t\t\tallowEmpty: true\r\n\t\t\t});\r\n\t\t});\r\n\t},\r\n\r\n\tinit: function() {\r\n\t\tif ( $('form').length ) {\r\n\t\t\tvalidation.setMethods();\r\n\t\t\tvalidation.validateForms();\r\n\t\t\tvalidation.setRules();\r\n\t\t}\r\n\t}\r\n};","var videos = {\r\n $fullVideo: $(\".full-video\"),\r\n $videoCover: $(\".video-cover\"),\r\n $brightCoveClient: $('[data-video-client=\"brightcove\"]'),\r\n moving: false,\r\n coverFadingOut: false,\r\n\r\n onStateChange: function(event) {\r\n var _this = $(event.target.a);\r\n if (_this.closest(\".slider-hero-extended\").length) {\r\n var _event = event.data;\r\n var contentSlider = $(\".slider-hero-content\");\r\n if (_event === 1) {\r\n contentSlider.addClass(\"slider-video-playing\");\r\n } else if (_event === 0 || _event === 2) {\r\n contentSlider.removeClass(\"slider-video-playing\");\r\n }\r\n }\r\n },\r\n\r\n /*\r\n\t\tPause any video (primary or secundary) that is currently playing\r\n\t*/\r\n pauseOther: function() {\r\n var activeYoutube = $(\".youtube-video.active\");\r\n if (activeYoutube.length > 0) {\r\n activeYoutube.each(function() {\r\n var thisYoutube = $(this)\r\n .closest(\".full-video\")\r\n .find(\"iframe\")\r\n .attr(\"id\");\r\n players[thisYoutube].stopVideo();\r\n });\r\n }\r\n\r\n var videoId = $(\".vjs-playing\")\r\n .find(\"video\")\r\n .attr(\"id\");\r\n\r\n // $('.header-logo').append('
!!!pauseOther():', z,',videoId:',videoId);\r\n\r\n if (videoId) {\r\n videojs(videoId).pause();\r\n videojs(videoId).currentTime(0);\r\n }\r\n },\r\n\r\n mobileVIdPlay: function(vcode, width, height) {\r\n $(\".mobile-video\").html(\r\n ''\r\n );\r\n },\r\n\r\n playVideo: function($targetVideoCover, isMobile) {\r\n if (!videos.moving) {\r\n videos.pauseOther();\r\n var videoClient = $targetVideoCover.attr(\"data-video-client\");\r\n\r\n $(\".hidden-cover\")\r\n .removeClass(\"hidden-cover\")\r\n .fadeIn(\"fast\");\r\n $targetVideoCover.addClass(\"hidden-cover\").fadeOut(\"fast\", function() {\r\n videos.coverFadingOut = false;\r\n });\r\n\r\n if (videoClient === \"brightcove\") {\r\n var thisBrighcove = $targetVideoCover\r\n .closest(\".full-video\")\r\n .find(\".video-brightcove\");\r\n var videoId = thisBrighcove.find(\"video\").attr(\"id\");\r\n if (videoId == undefined) {\r\n return;\r\n }\r\n\r\n videojs(videoId).play();\r\n if (videoId == undefined) {\r\n return;\r\n }\r\n\r\n if ($targetVideoCover.closest(\".slider-hero-extended\").length) {\r\n var contentSlider = $(\".slider-hero-content\");\r\n $targetVideoCover\r\n .closest(\".full-video\")\r\n .find(\"video\")\r\n .on(\"ended pause\", function() {\r\n contentSlider.removeClass(\"slider-video-playing\");\r\n });\r\n\r\n $targetVideoCover\r\n .closest(\".full-video\")\r\n .find(\"video\")\r\n .on(\"play\", function() {\r\n contentSlider.addClass(\"slider-video-playing\");\r\n });\r\n }\r\n } else if (videoClient === \"youtube\") {\r\n $targetVideoCover\r\n .closest(\".full-video\")\r\n .find(\".youtube-video\")\r\n .addClass(\"active\");\r\n var videoId = $targetVideoCover.attr(\"data-video-trigger\");\r\n\r\n if (isIOS === false) {\r\n players[videoId].playVideo();\r\n }\r\n } else {\r\n return;\r\n }\r\n videos.moving = false;\r\n return;\r\n }\r\n },\r\n\r\n //center the primary video vertically in the remaining area (excluding the carousel controls)\r\n verticallyCenterVideo: function() {\r\n $header = $(\".main-header\");\r\n $sliderSyncComplex = $(\".slider-sync-complex\");\r\n $videoEls = $(\".main-video .vjs-tech\");\r\n if ($header.length && $sliderSyncComplex.length && $videoEls.length) {\r\n // need to investigate further while not centering perfectly. at the moment use this magic number\r\n videoTop = $sliderSyncComplex.offset().top / 2 - $header.height() / 2 + 9;\r\n $videoEls.attr(\"style\", \"top: \" + String(videoTop) + \"px !important\");\r\n }\r\n },\r\n\r\n eventListeners: function() {\r\n videos.$videoCover.on(\"mousedown\", function() {\r\n videos.moving = false;\r\n });\r\n videos.$videoCover.on(\"mouseup\", function(e) {\r\n var windowWidth = $(window).width();\r\n\r\n slider.syncComplex.slick(\"slickPause\");\r\n\r\n if (videos.coverFadingOut) {\r\n return;\r\n }\r\n\r\n videos.coverFadingOut = true;\r\n videos.playVideo($(e.target).closest(\".video-cover\"));\r\n\r\n if (isTouch && $(e.target).closest(\".slider-sync-simple\").length) {\r\n // slider.syncComplex.addClass('move-down');\r\n slider.syncComplex.slick(\"slickPause\");\r\n videos.verticallyCenterVideo();\r\n }\r\n });\r\n },\r\n\r\n pageHeroVideo: function() {\r\n if (!isTouch) {\r\n var heroCover = $(\".module-hero-new.contains-video\").find(\".video-cover\");\r\n videos.playVideo(heroCover, false);\r\n }\r\n },\r\n\r\n init: function() {\r\n if (videos.$fullVideo.length > 0) {\r\n videos.eventListeners();\r\n }\r\n if (isTouch) {\r\n videos.verticallyCenterVideo();\r\n }\r\n\r\n if ($(\".module-hero-new.contains-video\").length) {\r\n videos.pageHeroVideo();\r\n }\r\n }\r\n};\r\n\r\nwindow.videos = videos;\r\n\r\nif ($(\".myPlayerNotes\").length) {\r\n videojs(\"#myPlayerID\").ready(function() {\r\n var myPlayer = this;\r\n var toggleFull = true;\r\n $(\".myPlayerNotes\").prepend(\"
\");\r\n\r\n $(\".playerFullScreenNotes\").on(\"click\", function() {\r\n toggleFull ? myPlayer.requestFullscreen() : myPlayer.exitFullscreen();\r\n toggleFull = !toggleFull;\r\n });\r\n });\r\n}\r\n","var wearTab = {\r\n\r\n\ttriggerEl: $('.wear-tab'),\r\n\ttargetEl: $('.wear-carousel'),\r\n\tslideEl: $('.wear-carousel-item'),\r\n\r\n\twearWrapper: $('.wear-carousel'),\r\n\r\n\tcheckIfAplicable: function() {\r\n\t\twearTab.wearWrapper.each(function(){\r\n\t\t\tvar _this = $(this);\r\n\t\t\tvar slides = _this.find(wearTab.slideEl);\r\n\t\t\tvar slides_number = slides.length - 1;\r\n\t\t\tvar slides_width = 240;\r\n\r\n\t\t\tvar wrapper_width = _this.closest('.component-wear').width();\r\n\t\t\tvar slides_width_total = slides_number * slides_width;\r\n\r\n\t\t\tif (slides_width_total > wrapper_width) {\r\n\t\t\t\tif (!_this.hasClass('flickity-enabled')) {\r\n\t\t\t\t\twearTab.slider(_this);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (_this.hasClass('flickity-enabled')) {\r\n\t\t\t\t\t_this.flickity('destroy');\r\n\t\t\t\t}\r\n\t\t\t\t_this.addClass('no-carousel').removeClass('loading');\r\n\t\t\t\tif (_this.hasClass('first')) {\r\n\t\t\t\t\t_this.addClass('current');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\tnav: function() {\r\n\t\twearTab.triggerEl.click(function(){\r\n\t\t\tvar _this = $(this);\r\n\r\n\t\t\tif (_this.hasClass('current')) {\r\n\t\t\t\treturn;\r\n\t\t\t} else {\r\n\t\t\t\tvar stylist = _this.attr('data-wear-trigger');\r\n\r\n\t\t\t\twearTab.triggerEl.removeClass('current');\r\n\t\t\t\twearTab.targetEl.removeClass('current');\r\n\r\n\t\t\t\t$(this).addClass('current');\r\n\t\t\t\t$('[data-wear-target=\"' + stylist + '\"]').addClass('current');\r\n\r\n\t\t\t\tif ($('[data-wear-target=\"' + stylist + '\"]').hasClass('flickity-enabled')) {\r\n\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t$('[data-wear-target=\"' + stylist + '\"]').flickity('resize');\r\n\t\t\t\t\t},50);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\tslider: function(targetEl) {\r\n\t\tvar _this = targetEl;\r\n\r\n\t\t_this.flickity({\r\n\t\t\tgroupCells: true,\r\n\t\t\tfreeScroll: true,\r\n\t\t\twrapAround: true,\r\n\t\t\tprevNextButtons: false,\r\n\t\t\tpageDots: false,\r\n\t\t\tdragThreshold: 10,\r\n\t\t\trightToLeft: window.rtl\r\n\t\t});\r\n\t\t_this.removeClass('loading');\r\n\t\tif (_this.hasClass('first')) {\r\n\t\t\t_this.addClass('current');\r\n\t\t}\r\n\t\tif (_this.hasClass('no-carousel')) {\r\n\t\t\t_this.removeClass('no-carousel');\r\n\t\t}\r\n\t},\r\n\r\n\tinit: function() {\r\n\t\tif (wearTab.triggerEl.length) {\r\n\t\t\twearTab.checkIfAplicable();\r\n\t\t\twearTab.nav();\r\n\t\t}\r\n\t}\r\n};","var weather = {\r\n\twrapper: $('.nav-weather'),\r\n\tthumb: $('.weather-thumb'),\r\n\tmain: $('.weather-main'),\r\n\textended: $('.weather-extended'),\r\n\r\n\ttriggerLarge: function() {\r\n\t\tweather.thumb.click(function(){\r\n\t\t\tif (windowWidth >= desktop) {\r\n\t\t\t\tweather.wrapper.toggleClass('weather-open');\r\n\t\t\t\tweather.main.clearQueue().stop().slideToggle();\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\ttriggerSmall: function() {\r\n\t\tweather.main.click(function(){\r\n\t\t\tif (isTouch || (!isTouch && windowWidth < desktop)) {\r\n\t\t\t\tweather.wrapper.toggleClass('weather-open');\r\n\t\t\t\tweather.extended.clearQueue().stop().slideToggle();\r\n\t\t\t\t$('.sidenav-navItem.active .sidenav-item-content').slideUp();\r\n\t\t\t\tsidenav.wrapperEl.removeClass('active');\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\tclearOnResize: function() {\r\n\t\tweather.wrapper.removeClass('weather-open');\r\n\t\tweather.main.removeAttr('style');\r\n\t\tweather.extended.removeAttr('style');\r\n\t},\r\n\r\n\tcloseMouseOut: function() {\r\n\t\tweather.main.mouseleave(function(){\r\n\t\t\tif (!isTouch && windowWidth >= desktop) {\r\n\t\t\t\tweather.wrapper.removeClass('weather-open');\r\n\t\t\t\tweather.main.slideUp();\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\tcloseClickOut: function() {\r\n\t\t$(document).click(function(event) {\r\n\t\t\tif (!isTouch && windowWidth >= desktop) {\r\n\t\t\t\tif(!$(event.target).closest(weather.wrapper).length) {\r\n\t\t\t\t\tweather.wrapper.removeClass('weather-open');\r\n \t\t\t\tweather.main.slideUp();\r\n\t\t\t }\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\tinit: function() {\r\n\t\tweather.triggerLarge();\r\n\t\tweather.triggerSmall();\r\n\t\tweather.closeMouseOut();\r\n\t\tweather.closeClickOut();\r\n\t}\r\n};","var widgetCarousel = {\r\n\r\n\twrapperEl: $('.widget-carousel-new:not(.product-carousel)'),\r\n\tcarouselOpts: null,\r\n\tsetAlignment: 'left',\r\n\tsetGroupCells: null,\r\n\r\n\titemsCheck: $('[data-carousel-min-items]'),\r\n\r\n\tcheckSpecials: function() {\r\n\t\tvar items = widgetCarousel.itemsCheck;\r\n\r\n\t\titems.each(function(){\r\n\t\t\tvar _this = $(this);\r\n\t\t\tvar num_items = _this.find('.carousel-cell').length;\r\n\t\t\tvar notCarouselNum = _this.attr('data-carousel-min-items');\r\n\r\n\t\t\tif (num_items <= notCarouselNum) {\r\n\t\t\t\tif (notCarouselNum > 3) {\r\n\t\t\t\t\t_this.addClass('carousel-disable-xlarge');\r\n\t\t\t\t\t_this.closest('.component-latest-carousel').addClass('arrows-hidden-xlarge');\r\n\t\t\t\t} else {\r\n\t\t\t\t\t_this.addClass('carousel-disable-large');\r\n\t\t\t\t\t_this.closest('.component-latest-carousel').addClass('arrows-hidden-large');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\twidgetCarousel.setupSlider();\r\n\t},\r\n\r\n\tsetOptions: function(carouselItem) {\r\n\t\tcarouselItem.closest('.component-latest-carousel').addClass('carousel-set');\r\n\r\n\t\tif (carouselItem.hasClass('widget-carousel-news-feed')) {\r\n\t\t\twidgetCarousel.setAlignment = 'center';\r\n\r\n\t\t\tif (windowWidth >= tabletWide) {\r\n\t\t\t\twidgetCarousel.setGroupCells = 2;\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar autoPlay = false;\r\n\t\tvar friction = 0.28;\r\n\t\tif (carouselItem.attr('data-carousel-autoplay') === \"true\") {\r\n\t\t\tautoPlay = 6000;\r\n\t\t\tfriction = 0.4;\r\n\t\t}\r\n\t\t// console.log(carouselItem, autoPlay);\r\n\t\twidgetCarousel.carouselOpts = {\r\n\t\t\twrapAround: true,\r\n\t\t\tgroupCells: widgetCarousel.setGroupCells,\r\n\t\t\tprevNextButtons: true,\r\n\t\t\tpageDots: false,\r\n\t\t\tcellAlign: widgetCarousel.setAlignment,\r\n\t\t\timagesLoaded: true,\r\n\t\t\twatchCSS: true,\r\n\t\t\tautoPlay: autoPlay,\r\n\t\t\tfriction: 0.35,\r\n\t\t\tdragThreshold: 10,\r\n\t\t\tfreePlay: -15,\r\n\t\t\trightToLeft: window.rtl\r\n\r\n\t\t}\r\n\t},\r\n\r\n\tsetupSlider: function() {\r\n\t\twidgetCarousel.wrapperEl.each(function(){\r\n\t\t\tvar _this = $(this);\r\n\t\t\twidgetCarousel.setOptions(_this);\r\n\t\t\t_this.flickity(widgetCarousel.carouselOpts);\r\n\r\n\t\t\tvar ellipsisEl = _this.find('.ellipsis-new');\r\n\t\t\tif (ellipsisEl.length) {\r\n\t\t\t\tellipsisEl.each(function(){\r\n\t\t\t\t\tellipsisNew.applyEllipsis($(this));\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\tinit: function() {\r\n\t\twidgetCarousel.checkSpecials();\r\n\t}\r\n};","var slickProperties;\r\n\r\nvar zoom = {\r\n\r\n\tcontainer: $('.zoom-container'),\r\n\ttooltip: $('.zoom-tooltip'),\r\n\tzoomedEl: $('.zoom-large'),\r\n\tcloseEl: $('.zoom-close'),\r\n\r\n\t// Make things follow the mouse\r\n\tfollowMouse: {\r\n\r\n\t\ttooltip: function() {\r\n\t\t\t$('.zoom-container').on('mousemove', function(e){\r\n\t\t\t $(this).find('.zoom-tooltip').offset({\r\n\t\t\t \tleft: e.pageX + 12,\r\n\t\t\t \ttop: e.pageY - 22\r\n\t\t\t });\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\t// Zoom and pan functionality\r\n\t\tzoomedImg: function(zoomWrapper, resize) {\r\n\r\n\t\t\t// Define elements\r\n\t\t\tzoomWrapper = zoomWrapper.find('.zoom-img-container');\r\n\t\t\tvar zoomImg = zoomWrapper.find('.zoom-img');\r\n\r\n\t\t\t// get container's dimensions\r\n\t\t\tvar conWidth = zoomWrapper.width();\r\n\t\t\tvar conHeight = zoomWrapper.height();\r\n\t\t\t// get image's dimensions\r\n\t\t\tvar imgWidth = zoomImg.width();\r\n\t\t\tvar imgHeight = zoomImg.height();\r\n\r\n\t\t\t// Get the smallest size possible to fit container\r\n\t\t\tvar smallestImg;\r\n\t\t\tif (conWidth >= conHeight) {\r\n\t\t\t\tsmallestImg = conHeight / imgHeight;\r\n\t\t\t} else {\r\n\t\t\t\tsmallestImg = conWidth / imgWidth;\r\n\t\t\t}\r\n\r\n\t\t\tvar disableZoomPan = false;\r\n\t\t\tif (smallestImg > 0.7) {\r\n\t\t\t\tzoomWrapper.find('.zoom-pinch').addClass('hide');\r\n\t\t\t\t// Apply panzoom plugin\r\n\t\t\t\tzoomImg.panzoom({\r\n\t\t\t\t\tcontain: 'invert',\r\n\t\t\t\t\tminScale: smallestImg,\r\n\t\t \t\t\tmaxScale: smallestImg,\r\n\t\t \t\t\tdisablePan: true,\r\n\t\t\t\t}).panzoom('zoom', smallestImg, {silent: true});\r\n\t\t\t} else {\r\n\r\n\t\t\t\tzoomWrapper.find('.zoom-pinch').removeClass('hide');\r\n\t\t\t\t// Apply panzoom plugin\r\n\t\t\t\tzoomImg.panzoom({\r\n\t\t\t\t\tcontain: 'invert',\r\n\t\t\t\t\tminScale: smallestImg,\r\n\t\t \t\t\tmaxScale: 1,\r\n\t\t \t\t\tincrement: 0.3,\r\n\t\t \t\t\tscale: true\r\n\t\t\t\t}).panzoom('zoom', smallestImg, {silent: true});\r\n\t\t\t}\r\n\r\n\t\t\tif (!resize) {\r\n\t\t\t\tzoomImg.css('display', 'block').hide().fadeIn();\r\n\t\t\t}\r\n\r\n\t\t\tvar $panzoom = zoomImg.panzoom();\r\n\t\t\t$panzoom.on('mousewheel.focal', function( e ) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tvar delta = e.delta || e.originalEvent.wheelDelta;\r\n\t\t\t\tvar zoomOut = delta ? delta < 0 : e.originalEvent.deltaY > 0;\r\n\t\t\t\t$panzoom.panzoom('zoom', zoomOut, {\r\n\t\t\t\t\tincrement: 0.1,\r\n\t\t\t\t\tfocal: e\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\t// Show/hide tooltip\r\n\tshowTooltip: function() {\r\n\t\t// Apply tooltip and zoom for non-touch devices\r\n\t\t$('.zoom-container').hover(\r\n\t\t\t// Show tooltip on mouse enter\r\n\t\t\tfunction() {\r\n\t\t\t\tvar _this = $(this);\r\n\t\t\t\tif (!_this.hasClass('overlay-open')) {\r\n\t\t\t\t\t_this.addClass('zoom-container-hover');\r\n\t\t\t\t\t// Apply tooltip functionality\r\n\t\t\t\t\tzoom.followMouse.tooltip();\r\n\r\n\t\t\t\t\t// Get product elements that shouldn't be clickable for zoom functionality\r\n\t\t\t\t\tvar overlayEl = _this.find('.product-overlay'),\r\n\t\t\t\t\t\toverlayEl_content = _this.find('.product-overlay *')\r\n\t\t\t\t\t\toverlay_open = _this.find('.product-overlay-open'),\r\n\t\t\t\t\t\toverlay_close = _this.find('.product-overlay-close'),\r\n\t\t\t\t\t\toverlay_zoom = _this.find('.zoom-large');\r\n\t\t\t\t\tvar innerDisableEls;\r\n\t\t\t\t\tif (_this.closest('.small-product-carousel').length) {\r\n\t\t\t\t\t\tinnerDisableEls = overlayEl.add(overlayEl_content).add(overlay_open).add(overlay_close).add(overlay_zoom).add('.small-product-carousel-copy').add('.small-product-carousel-copy *').add(_this);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tinnerDisableEls = overlayEl.add(overlayEl_content).add(overlay_open).add(overlay_close).add(overlay_zoom);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvar moving = false;\r\n\t\t\t\t\t/*\r\n\t\t\t\t\t_this.on('mousemove', function(){\r\n\t\t\t\t\t\t//console.log( \"zoom: mousemove\" );\r\n\t\t\t\t\t\tmoving = true;\r\n\t\t\t\t\t});\r\n\t\t\t\t\t*/\r\n\t\t\t\t\t_this.on('mousedown', function(){\r\n\t\t\t\t\t\tmoving = false;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t// Listent to click event on zoomable products\r\n\t\t\t\t\t_this.on('mouseup', function(e){\r\n\t\t\t\t\t\t//console.log( \"zoom: mouseup\" );\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t//console.info( \"zoom: mouseup: moving:\", moving );\r\n\t\t\t\t\t\tif (!moving) {\r\n\t\t\t\t\t\t\t// Prevent zoom when clicking on certain elements\r\n\t\t\t\t\t\t\t//console.info( !$(e.target).is(innerDisableEls) );\r\n\t\t\t\t\t\t\t//console.info( !$(e.target).is('.product-overlay *') );\r\n\t\t\t\t\t\t\t//console.info( !$(e.target).is('.zoom-large *') );\r\n\r\n\r\n\t\t\t\t\t\t\tif (!$(e.target).is(innerDisableEls) && !$(e.target).is('.product-overlay *') && !$(e.target).is('.zoom-large *')) {\r\n\t\t\t\t\t\t\t\tscrollPos = $('html,body').scrollTop();\r\n\t\t\t\t\t\t\t\t// Show zoom container\r\n\t\t\t\t\t\t\t\tzoom.zoomedEl_show(_this);\r\n\r\n\t\t\t\t\t\t\t\t// Lazy load selected product's big image\r\n\t\t\t\t\t\t\t\tvar imageEl = _this.find('.zoom-img');\r\n\t\t\t\t\t\t\t\tzoom.lazyload(imageEl);\r\n\t\t\t\t\t\t\t\t// image loading latency test\r\n\t\t\t\t\t\t\t\t// setTimeout(function(){\r\n\t\t\t\t\t\t\t\t// \tzoom.lazyload(imageEl);\r\n\t\t\t\t\t\t\t\t// },2000);\r\n\r\n\t\t\t\t\t\t\t\t// Once image is loaded, show it and apply pan functionality to zoomed image\r\n\t\t\t\t\t\t\t\tif (_this.find('.zoom-loaded').length) {\r\n\t\t\t\t\t\t\t\t\t_this.find('.zoom-img').css('display', 'block');\r\n\t\t\t\t\t\t\t\t\tif (isTouch) {\r\n\t\t\t\t\t\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\t\t\t\t\t\tzoom.followMouse.zoomedImg(_this.find('.zoom-large'));\r\n\t\t\t\t\t\t\t\t\t\t},250);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\timageEl.load(function(){\r\n\t\t\t\t\t\t\t\t\t\t_this.find('.zoom-large').addClass('zoom-loaded');\r\n\t\t\t\t\t\t\t\t\t\t_this.find('.zoom-img').css('display', 'block').hide().fadeIn();\r\n\t\t\t\t\t\t\t\t\t\tif (isTouch) {\r\n\t\t\t\t\t\t\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\t\t\t\t\t\t\tzoom.followMouse.zoomedImg(_this.find('.zoom-large'));\r\n\t\t\t\t\t\t\t\t\t\t\t},250);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tmoving = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t// Hide xoom toltip when hover over other clickable elements\r\n\t\t\t\t\t_this.find(innerDisableEls).hover(\r\n\t\t\t\t\t\t// hide tooltip\r\n\t\t\t\t\t\tfunction() {\r\n\t\t\t\t\t\t\t$(this).closest('.zoom-container').addClass('zoom-container-hoverDisable');\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t// Show tooltip\r\n\t\t\t\t\t\tfunction() {\r\n\t\t\t\t\t\t\t$(this).closest('.zoom-container').removeClass('zoom-container-hoverDisable');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t// hide tooltip on mouse out\r\n\t\t\tfunction() {\r\n\t\t\t\tif (!$(this).hasClass('overlay-open')) {\r\n\t\t\t\t\t$(this).removeClass('zoom-container-hover');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t\t$('.zoom-container').find('.zoom-close').click(function(e){\r\n\t\t\te.preventDefault();\r\n\t\t\tzoom.zoomedEl_hide();\r\n\t\t});\r\n\t},\r\n\r\n\t// Add an element(s) to the zoom variable(s)\r\n\tadd: function( el ) {\r\n\t\t//console.log( \"zoom: add\" );\r\n\r\n\t\tzoom.container = zoom.container.add( el );\r\n\t\tzoom.tooltip = zoom.tooltip.add( el.find( '.zoom-tooltip' ) );\r\n\t\tzoom.zoomedEl = zoom.zoomedEl.add( el.find( '.zoom-large' ) );\r\n\t\tzoom.closeEl = zoom.closeEl.add( el.find( '.zoom-close' ) );\r\n\r\n\t},\r\n\r\n\tzoomSetup: function() {\r\n\t\t//console.log( \"zoom: zoomSetup\" );\r\n\r\n\t\t// Define elements\r\n\t\tvar targetEl = $('.zoom-container');\r\n\t\t// Get product elements that shouldn't be clickable for zoom functionality\r\n\t\tvar overlayEl = targetEl.find('.product-overlay'),\r\n\t\t\toverlayEl_content = targetEl.find('.product-overlay *')\r\n\t\t\toverlay_open = targetEl.find('.product-overlay-open'),\r\n\t\t\toverlay_close = targetEl.find('.product-overlay-close'),\r\n\t\t\toverlay_zoom = targetEl.find('.zoom-large');\r\n\t\tvar innerDisableEls = overlayEl.add(overlayEl_content).add(overlay_open).add(overlay_close).add(overlay_zoom);\r\n\r\n\r\n\t\tvar moving = false;\r\n\t\ttargetEl.on('mousemove', function(e){\r\n\t\t\tmoving = true;\r\n\t\t});\r\n\t\ttargetEl.on('mousedown', function(e){\r\n\t\t moving = false;\t\t \r\n\t\t});\r\n\r\n\t\ttargetEl.on('mouseup', function(e){\r\n\t\t\te.preventDefault();\r\n\t\t\tif (!moving) {\r\n\t\t\t\t// Define elements\r\n\t\t\t\tvar _this = $(this);\r\n\t\t\t\tvar imageEl = _this.find('.zoom-img');\r\n\t\t\t\t// Prevent zoom when clicking on certain elements\r\n\t\t\t\tif (!$(e.target).is(innerDisableEls) && !$(e.target).is('.product-overlay *') && !$(e.target).is('.zoom-large *')) {\r\n\t\t\t\t\tscrollPos = $('body').scrollTop();\r\n\t\t\t\t\t// Show zoom container\r\n\t\t\t\t\tzoom.zoomedEl_show(_this);\r\n\r\n\t\t\t\t\t// Check if image has been loaded or not and act consequently\r\n\t\t\t\t\tif (_this.find('.zoom-loaded').length) {\r\n\t\t\t\t\t\tif (isTouch) {\r\n\t\t\t\t\t\t\tzoom.resetPanZoom(_this.find('.zoom-loaded'));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// Lazy load selected product's big image\r\n\t\t\t\t\t\tzoom.lazyload(imageEl);\r\n\t\t\t\t\t\t// image loading latency test\r\n\t\t\t\t\t\t// setTimeout(function(){\r\n\t\t\t\t\t\t// \tzoom.lazyload(imageEl);\r\n\t\t\t\t\t\t// },2000);\r\n\r\n\t\t\t\t\t\t// Once image is loaded, show it and apply pan functionality to zoomed image\r\n\t\t\t\t\t\timageEl.load(function(){\r\n\t\t\t\t\t\t\t_this.find('.zoom-large').addClass('zoom-loaded');\r\n\t\t\t\t\t\t\tif (isTouch) {\r\n\t\t\t\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\t\t\t\tzoom.followMouse.zoomedImg(_this.find('.zoom-large'));\r\n\t\t\t\t\t\t\t\t},250);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tmoving = false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// Hide zoom container when click on close\r\n\t\ttargetEl.find('.zoom-close').click(function(e){\r\n\t\t\te.preventDefault();\r\n\t\t\tzoom.zoomedEl_hide();\r\n\t\t});\r\n\t},\r\n\r\n\t// Simply unbinds events prepping for new items to be added.\r\n\tdestroy: function() {\r\n\t\t//console.log( \"zoom: destroy\" );\r\n\r\n\t\t$( '.zoom-close' ).off( 'click mousedown mouseenter mouseleave mousemove mouseup' );\r\n\t\t$( '.zoom-container' ).off( 'click mousedown mouseenter mouseleave mousemove mouseup' );\r\n\r\n\t},\r\n\r\n\t// Open/close zoom overlay\r\n\tzoomedEl_show: function(mainContainer) {\r\n\t\tmainContainer.find('.zoom-large').addClass('zoom-open');\r\n\t\t// Prevent scroll when modal shown\r\n\t\tvar parentCarousel = mainContainer.closest('.slick-track');\r\n\t\tif (!isTouch && parentCarousel.length) {\r\n\t\t\t// slickProperties = parentCarousel.attr('style');\r\n\t\t\tparentCarousel.addClass('slider-zoom-open');\r\n\t\t}\r\n\t\tif ($('.zoom-open').closest('.slider-hero-content').length) {\r\n\t\t\t$('.slider-hero-content').find('.slick-track').addClass('slider-zoom-open');\r\n\t\t}\r\n\t},\r\n\r\n\t// Close zoom conainer event\r\n\tzoomedEl_hide: function() {\r\n\t\tvar parentCarousel = $('.zoom-open').closest('.slick-track');\r\n\t\tif (!isTouch && parentCarousel.length) {\r\n\t\t\tparentCarousel.removeClass('slider-zoom-open');\r\n\t\t\t// parentCarousel.attr('style', slickProperties);\r\n\t\t}\r\n\t\tif ($('.zoom-open').closest('.slider-hero-content').length) {\r\n\t\t\t$('.slider-hero-content').find('.slick-track').removeClass('slider-zoom-open');\r\n\t\t}\r\n\t\t$('#product-zoom-image').closest('.zoom-large').removeClass('zoom-loaded');\r\n\t\t$('.zoom-open').removeClass('zoom-open');\r\n\t\t$('#product-zoom-image').removeAttr('style');\r\n\t\t/*setTimeout(function(){\r\n\t\t\t$('body').scrollTop( scrollPos );\r\n\t\t\tscrollPos = null;\r\n\t\t},100);*/\r\n\t},\r\n\r\n\t// Load zoomable image\r\n\tlazyload: function(targetEl) {\r\n\t\tvar img_url = targetEl.attr('data-img-zoom');\r\n\t\ttargetEl.attr('src', img_url);\r\n\t},\r\n\r\n\t// Reset any existing panzoom on window resize\r\n\tresetPanZoom: function(targetEl) {\r\n\t\t//console.log('resetPanZoom::')\r\n\t\tvar _this = targetEl;\r\n\t\tvar imageEl = _this.find('.zoom-img');\r\n\t\timageEl.panzoom('resetZoom');\r\n\t\timageEl.panzoom('resetPan');\r\n\t\timageEl.panzoom('resetDimensions');\r\n\t\timageEl.panzoom('destroy');\r\n\t\tsetTimeout(function(){\r\n\t\t\t//console.log('zoom.followMouse.zoomedImg::')\r\n\t\t\tzoom.followMouse.zoomedImg(_this.closest('.zoom-large'));\r\n\t\t},500);\r\n\t},\r\n\r\n\t// Initialise zoom functionality\r\n\tinit: function() {\r\n\t\t//console.log( \"zoom: init\" );\r\n\r\n\t\tif ($('.zoom-container').length) {\r\n\t\t\tif (!isTouch) {\r\n\t\t\t\t// Zoom and pan functionality for non-touch devices\r\n\t\t\t\tzoom.showTooltip();\r\n\t\t\t\t//console.log( \"not touch\" );\r\n\t\t\t\t$(document).on('keyup', function(e){\r\n\t\t\t e = e || window.event;\r\n\t\t\t if ($('.zoom-open').length){\r\n\t\t\t \te.stopImmediatePropagation(); // prevent other elements (eg some modal undereath) from firing 'keyup'\r\n\t\t\t }\r\n\t\t\t if (e.keyCode == 27) {\r\n\t\t\t\t \tzoom.zoomedEl_hide();\r\n\t\t\t }\r\n\t\t\t\t});\r\n\r\n\t\t\t} else {\r\n\t\t\t\t// Zoom and pan functionality for touch devices\r\n\t\t\t\t//console.log('calling zoom.zoomSetup isTouch')\r\n\t\t\t\tzoom.zoomSetup();\r\n\t\t\t}\r\n\t\t\t// Close zoom conainer event\r\n\t\t\tzoom.zoomedEl_hide();\r\n\t\t}\r\n\t}\r\n};","// ***********************\r\n// $$ Document ready\r\n// ***********************\r\n$(function() {\r\n\r\n\twindow.windowWidth = window.innerWidth;\r\n\twindow.windowHeight = window.innerHeight;\r\n\r\n\twindow.isiPhone = navigator.userAgent.toLowerCase().indexOf('iphone');\r\n\twindow.isiPad = navigator.userAgent.toLowerCase().indexOf('ipad');\r\n\twindow.isiPod = navigator.userAgent.toLowerCase().indexOf('ipod');\r\n\twindow.isAndroid = function(){ return /Android/i.test(navigator.userAgent); }\r\n\twindow.getAndroidVersion = function(ua) {\r\n\t\tua = (ua || navigator.userAgent).toLowerCase();\r\n\t\tvar match = ua.match(/android\\s([0-9\\.]*)/);\r\n\t\treturn match ? match[1] : false;\r\n\t};\r\n\r\n\twindow.isIOS = false;\r\n\tif ( window.isiPhone > 0 || window.isiPad > 0 || window.isiPod > 0 ) {\r\n\t\twindow.isIOS = true;\r\n\t\t$('html').addClass('iOS');\r\n\t}\r\n\r\n\twindow.tablet = 640;\r\n\twindow.tabletWide = 800;\r\n\twindow.desktop = 1024;\r\n\r\n\twindow.isTouch = false;\r\n\tif (('ontouchstart' in document.documentElement) || Modernizr.touchevents)\r\n\t\twindow.isTouch = true;\r\n\t// isTouch = true;\r\n\r\n\tif (isTouch || Modernizr.touchevents) {\r\n\t\t$('html').addClass('touch');\r\n\t}\r\n\r\n\t// Detect IE11 and Add Modernizer-like Class to HTML Element\r\n\tif ( $.browser.msie && $.browser.version <= 11 )\r\n\t\t$( 'html' ).addClass( 'lt-ie12' );\r\n\r\n\t/// Detect Desktop/Mobile and Add Modernizer-like Class to HTML Element\r\n\tif ( $.browser.desktop )\r\n\t\t$( 'html' ).addClass( 'desktop' );\r\n\telse if ( $.browser.mobile )\r\n\t\t$( 'html' ).addClass( 'mobile' );\r\n\r\n\tif (window.isAndroid())\r\n\t\t$( 'html' ).addClass( 'android' )\r\n\r\n\tif (parseInt(getAndroidVersion(), 10) == 6)\r\n\t\t$( 'html' ).addClass( 'android6' )\r\n\r\n\r\n\twindow.rtl = false;\r\n\tif ($('.layout-reversed').length)\r\n\t\twindow.rtl = true;\r\n\r\n\t// Add functions here\r\n\r\n\t// responsive-helpers.js\r\n\t// bh.setHelpers(windowWidth, windowHeight);\r\n\t// bh.emptyLinks();\r\n\r\n\t// accessibility.js\r\n\taccessibility.init();\r\n\r\n\t// nav.js\r\n\tnav.init();\r\n\r\n\t// desktop-nav.js\r\n\tif (!isTouch && windowWidth >= desktop) {\r\n\t\tdesktopNav.init();\r\n\t}\r\n\r\n\t// dropdowns.js\r\n\tdd.init();\r\n\r\n\t// social-popups.js\r\n\tsocialPopups.init();\r\n\r\n\t// social-links.js\r\n\tsocialLinks.init();\r\n\r\n\t// slider.js\r\n\tslider.init();\r\n\r\n\t// forms.js\r\n\tform.init();\r\n\r\n\t// ellipsis.js\r\n\tellipsis.init();\r\n\r\n\t// ellipsis-new.js\r\n\tellipsisNew.init();\r\n\r\n\t// filter.js\r\n\tfilter.init();\r\n\r\n\t// pagination.js\r\n\tpagination.init();\r\n\tlazyScroll.init();\r\n\r\n\t// search.js\r\n\tsearch.init();\r\n\r\n\t// interactive-map.js\r\n\twindow.vrMap = new InteractiveMap();\r\n\r\n\t// text.js\r\n\ttext.init();\r\n\r\n\t// backToTop.js\r\n\tbackToTop.init();\r\n\r\n\t// accordion.js\r\n\taccordion.init();\r\n\r\n\t// download-app-buttons.js\r\n\tdownloadApp.init();\r\n\r\n\t// accordionTabs.js\r\n accordionTabs.init();\r\n\r\n // accordions-reskin.js\r\n accordionHandler.init();\r\n\r\n\t// trains.js\r\n\ttrains.init();\r\n\r\n\t// product-page.js\r\n\tproductPage.init();\r\n\r\n\t// product-overlay.js\r\n\toverlay.init();\r\n\r\n\t// dateTimePicker.js\r\n\tdateTimePicker.init();\r\n\r\n\t// googleMap.js\r\n\tgoogleMap.init();\r\n\r\n\t// customScrollbar.js\r\n\tcustomScrollbar.init();\r\n\r\n\t// supScripts.js\r\n\tsupScripts.init();\r\n\r\n\t// open-login.js\r\n\topenLogin.init();\r\n\r\n\t// cookies.js\r\n\tcookies.init();\r\n\r\n\t// treats.js\r\n\ttreat.init();\r\n\r\n\t// validation.js\r\n\tvalidation.init();\r\n\r\n\t// tags.js\r\n \ttags.init();\r\n\r\n \t// zoom.js\r\n \tzoom.init();\r\n\r\n \t// twitter-feed.js\r\n \ttwitterFeed.init();\r\n\r\n \t// weather.js\r\n \tweather.init();\r\n\r\n \t// videos.js\r\n \tvideos.init();\r\n\r\n \t// modal.js\r\n \tmodal.init();\r\n\r\n \t// modal-product.js\r\n \tmodalProduct.init();\r\n\r\n\t// widgetCarousel.js\r\n \twidgetCarousel.init();\r\n\r\n\t// stylists.js\r\n \t//stylists.init();\r\n\t \r\n \t// wear.js\r\n\twearTab.init();\r\n\r\n\t// full-bleed-img-carousel.js\r\n \tfullImgSlide.init();\r\n\r\n \t// standard-product-list.js\r\n \tproductList.init();\r\n\r\n \t// sidenav.js\r\n \tsidenav.init();\r\n\r\n \t// hero-nav.js\r\n \theroNav.init();\r\n\r\n\t// gallery.js\r\n \tgallery.init();\r\n\r\n\t// Modal GDPR\r\n\tgdprModal.init();\r\n\r\n\t//Update Details gdpr\r\n\tgdprDetails.init();\r\n\r\n\t// Brands page functionality - brands.js\r\n\tbrands.init();\r\n\r\n\t// Registration overlay - registration-modal.js\r\n\tresgistrationModal.init();\r\n\r\n\ttermsConditionsModal.init();\r\n});\r\n","// ***********************\r\n// $$ Smart resize\r\n// ***********************\r\n(function ($, sr) {\r\n\tvar debounce = function (func, threshold, execAsap) {\r\n\t\tvar timeout;\r\n\t\treturn function debounced() {\r\n\t\t\tvar obj = this,\r\n\t\t\t\targs = arguments;\r\n\t\t\tfunction delayed() {\r\n\t\t\t\tif (!execAsap) {\r\n\t\t\t\t\tfunc.apply(obj, args);\r\n\t\t\t\t}\r\n\t\t\t\ttimeout = null;\r\n\t\t\t}\r\n\t\t\tif (timeout) {\r\n\t\t\t\tclearTimeout(timeout);\r\n\t\t\t} else if (execAsap) {\r\n\t\t\t\tfunc.apply(obj, args);\r\n\t\t\t}\r\n\t\t\ttimeout = setTimeout(delayed, threshold || 500);\r\n\t\t};\r\n\t};\r\n\tjQuery.fn[sr] = function (fn) {\r\n\t\treturn fn ? this.bind('resize', debounce(fn)) : this.trigger(sr);\r\n\t};\r\n})(jQuery, 'smartresize'); // End smartresize\r\n\r\n\r\n$(window).smartresize(function () {\r\n\r\n\twindow.newWindowWidth = window.innerWidth;\r\n\twindow.newWindowHeight = window.innerHeight;\r\n\r\n\t//\tresponsive-helpers.js\r\n\t// bh.setHelpers(newWindowWidth, newWindowHeight);\r\n\r\n\tvar widthChange = Math.abs(newWindowWidth - windowWidth);\r\n\r\n\t//\tAdd functions here\r\n\r\n\tif (windowWidth >= desktop && newWindowWidth < desktop && !isTouch) {\r\n\t\t//\tsliders.js\r\n\t\tslider.pause();\r\n\t\t//\tnav.js\r\n\t\tnav.openClose.closeNavResizeDown();\r\n\t\tnav.openClose.offCanvasScroll();\r\n\t\tnav.openClose.undoDisableSearch();\r\n\t}\r\n\r\n\tif (windowWidth < desktop && newWindowWidth >= desktop && !isTouch) {\r\n\t\t//\tnav.js\r\n\t\tnav.openClose.undoMobile();\r\n\t\tnav.openClose.closeNavResize();\r\n\t\tnav.openClose.undoOffCanvasScroll();\r\n\r\n\t\t//\tsliders.js\r\n\t\tslider.desktopOnly();\r\n\r\n\t\t//\tforms.js\r\n\t\tform.keyboardAmends();\r\n\t}\r\n\r\n\tif ((isTouch || (!isTouch && windowWidth < desktop)) && $('.site-canvas.active').length > 0) {\r\n\t\t// nav.js\r\n\t\tnav.openClose.cutHeight(newWindowHeight);\r\n\t}\r\n\t//\tellipsis.js\r\n\tif (ellipsis.editorial.applyEl.length > 0 || ellipsis.freeText.applyEl.length > 0 || ellipsis.promoTextLong.copy.length > 0) {\r\n\r\n\t\tif (windowWidth < tablet && newWindowWidth >= tablet) {\r\n\t\t\tellipsis.editorial.loadApply();\r\n\t\t\tellipsis.freeText.loadApply();\r\n\t\t\tellipsis.promoTextLong.loadApply();\r\n\t\t}\r\n\t\tif (newWindowWidth >= tablet) {\r\n\t\t\tellipsis.editorial.resizeApply();\r\n\t\t\tellipsis.freeText.resizeApply();\r\n\t\t\tellipsis.promoTextLong.resizeApply();\r\n\t\t}\r\n\t\tif (windowWidth >= tablet && newWindowWidth < tablet) {\r\n\t\t\tellipsis.editorial.undoEllipsis();\r\n\t\t\tellipsis.freeText.undoEllipsis();\r\n\t\t\tellipsis.promoTextLong.undoEllipsis();\r\n\t\t}\r\n\t}\r\n\r\n\tif (ellipsis.editorial.feedApplyEl.length > 0) {\r\n\t\tellipsis.editorial.resizeApplyFeed();\r\n\t}\r\n\r\n\tif ($('.ellipsis').length > 0) {\r\n\t\tellipsis.removeEmpty();\r\n\t}\r\n\r\n\t$('.ellipsis-new').each(function(){\r\n\t\tellipsisNew.applyEllipsis($(this), true);\r\n\t});\r\n\tif (ellipsisNew.ellipsisTitleEl.length){\r\n\t\tellipsisNew.ellipsisTitleEl.each(function(){\r\n\t\t\tellipsisNew.applyEllipsisTitle($(this), true);\r\n\t\t});\r\n\t}\r\n\r\n\tif (windowWidth < tabletWide && newWindowWidth >= tabletWide) {\r\n\t\t// filter.js\r\n\t\tfilter.undoSpecialDd();\r\n\t}\r\n\r\n\t// unslick and re slick sliders\r\n\t// slider.homeHeroProducts();\r\n\r\n\t// if (ellipsis.treat.copy.length) {\r\n\t// \tellipsis.treat.resizeApply();\r\n\t// }\r\n\r\n\t// interactive-map.js\r\n\t// if (map.container.length > 0) {\r\n\t// \tmap.dragableReset();\r\n\t// }\r\n\r\n\t// Touch device only\r\n\tif (isTouch) {\r\n\r\n\t\t// Reset product zoom widget if open\r\n\t\tif (widthChange > 200 && $('.zoom-open').length) {\r\n\t\t\t// Reset any existing panzoom on window resize\r\n\t\t\tzoom.resetPanZoom($('.zoom-open')); // zoom.js\r\n\t\t}\r\n\r\n\t\tvideos.verticallyCenterVideo();\r\n\t}\r\n\r\n\tif ( (windowWidth < desktop && newWindowWidth >= desktop) || (windowWidth >= desktop && newWindowWidth < desktop) ) {\r\n\t\tsetTimeout(function(){\r\n\t\t\tweather.clearOnResize(); // weather.js\r\n\t\t},500);\r\n\t}\r\n\r\n\t// Interactive Map\r\n\t// window.vrMap.resize();\r\n\tif ($('.page-village-map').length)\r\n\t\twindow.resizeMap();\r\n\r\n\t// wear.js\r\n\tif (wearTab.wearWrapper.length) {\r\n\t\twearTab.checkIfAplicable();\r\n\t}\r\n\r\n\tif (isTouch && $('.small-product-carousel').length) {\r\n\t\t slider.syncComplex.slick('slickPause');\r\n\t\tslider.smallProducts();\r\n\t}\r\n\r\n\twindow.windowWidth = window.innerWidth;\r\n\twindow.windowHeight = window.innerHeight;\r\n});","$(window).scroll(function(event){\r\n\tdidScroll = true;\r\n});\r\n\r\nif ($('.slide-content-header ').length && !$('.slide-content-header.hide-arrow').length) {\r\n $(window).scroll(function(event){\r\n if ($(document).scrollTop() > 100) {\r\n // $('.slide-content-header').addClass('hide-arrow');\r\n }\r\n });\r\n}\r\n"]}