{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./cartridges/app_bee_base/cartridge/client/default/js/internal/appConfig.plain.js","webpack:///./cartridges/app_bee_base/cartridge/client/default/js/util/debounce.js","webpack:///./cartridges/app_storefront_base/cartridge/client/default/js/checkout/formErrors.js","webpack:///./cartridges/app_storefront_base/cartridge/client/default/js/components/clientSideValidation.js","webpack:///./cartridges/app_storefront_base/cartridge/client/default/js/components/collapsibleItem.js","webpack:///./cartridges/app_storefront_base/cartridge/client/default/js/components/countrySelector.js","webpack:///./cartridges/app_storefront_base/cartridge/client/default/js/components/footer.js","webpack:///./cartridges/app_storefront_base/cartridge/client/default/js/components/keyboardAccessibility.js","webpack:///./cartridges/app_storefront_base/cartridge/client/default/js/components/search.js","webpack:///./cartridges/app_storefront_base/cartridge/client/default/js/components/spinner.js","webpack:///./cartridges/app_storefront_base/cartridge/client/default/js/main.js","webpack:///./cartridges/app_storefront_base/cartridge/client/default/js/thirdParty/bootstrap.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/checkout/checkoutDom.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/checkout/formErrors.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/components/ajax.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/components/backToTop.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/components/clientSideNav.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/components/clientSideValidation.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/components/consentTracking.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/components/cookie.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/components/flyoutUnderHeader.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/components/forms.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/components/header/countrySelector.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/components/header.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/components/header/templates/countrySelectorChoice.mustache","webpack:///./cartridges/app_tfg/cartridge/client/default/js/components/header/templates/countrysSelectorItem.mustache","webpack:///./cartridges/app_tfg/cartridge/client/default/js/components/header/templates/partials/countryAttributes.mustache","webpack:///./cartridges/app_tfg/cartridge/client/default/js/components/header/templates/partials/countryContent.mustache","webpack:///./cartridges/app_tfg/cartridge/client/default/js/components/intlTelInput.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/components/menu.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/components/miniCart.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/components/search.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/components/sizeConversions.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/components/spinner.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/components/stickyHeaderScroll.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/components/throttle.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/search/productTile.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/thirdParty/bootstrap/toggleFormElementsStates.js","webpack:///./cartridges/app_storefront_base/cartridge/client/default/js/util.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/util.js","webpack:///./cartridges/app_bee_base/cartridge/client/default/js/util/domutils.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/util/domutils.js","webpack:///./cartridges/app_bee_base/cartridge/client/default/js/util/fetchutils.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/util/fetchutils.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/util/scrollTo.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/util/urlutils.js","webpack:///./cartridges/app_tfg/cartridge/scripts/helpers/sizeHelpers.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/util/loadProjectChunks.val.js","webpack:///./cartridges/app_bee_base/cartridge/client/default/js/internal/appConfig.js","webpack:///./cartridges/app_bee_base/cartridge/client/default/js/util/loadChunks.val.js","webpack:///./cartridges/app_bee_base/cartridge/client/default/js/initApp.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/initApp.js","webpack:///./cartridges/int_cloudinary_tfg/cartridge/client/default/js/components/cloudinaryWidgets.js","webpack:///./cartridges/int_cloudinary_tfg/cartridge/client/default/js/main.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/mainStyle.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/index.js","webpack:///./cartridges/app_whistles/cartridge/client/default/js/index.js","webpack:///./cartridges/app_whistles/cartridge/client/default/scss/style.scss?17b2","webpack:///./cartridges/int_cloudinary_sfra/cartridge/client/default/js/components/cloudinaryMiniCart.js","webpack:///./cartridges/int_cloudinary_sfra/cartridge/client/default/js/components/search.js","webpack:///./cartridges/int_cloudinary_sfra/cartridge/client/default/js/main.js","webpack:///./cartridges/int_cybersource_sfra/cartridge/client/default/js/components/CSminiCart.js","webpack:///./cartridges/int_cybersource_sfra/cartridge/client/default/js/main.js","webpack:///./cartridges/int_gtm/cartridge/client/default/js/components/clientSideValidation.js","webpack:///./cartridges/int_gtm/cartridge/client/default/js/googleAnalytics/googleAnalytics.js","webpack:///./cartridges/int_gtm/cartridge/client/default/js/googleAnalytics/clientSideEvents.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/components/bodyScroll.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/components/recaptcha.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/search/intelligentReach.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/components/validateInput.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/components/addToBagRecommendation.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/main.js","webpack:///./cartridges/int_gtm/cartridge/client/default/js/main.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/components/addressForm.js","webpack:///./cartridges/int_loqate_tfg/cartridge/client/default/js/components/addressForm.js","webpack:///./cartridges/plugin_wishlists_tfg/cartridge/client/default/js/header/wishlist.js","webpack:///./cartridges/plugin_wishlists_tfg/cartridge/client/default/js/main.js","webpack:///./cartridges/plugin_wishlists_tfg/cartridge/client/default/js/product/wishlist.js","webpack:///./node_modules/@glidejs/glide/dist/glide.esm.js","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/body-scroll-lock/lib/bodyScrollLock.min.js","webpack:///./node_modules/bootstrap/js/src/alert.js","webpack:///./node_modules/bootstrap/js/src/carousel.js","webpack:///./node_modules/bootstrap/js/src/collapse.js","webpack:///./node_modules/bootstrap/js/src/modal.js","webpack:///./node_modules/bootstrap/js/src/scrollspy.js","webpack:///./node_modules/bootstrap/js/src/tab.js","webpack:///./node_modules/bootstrap/js/src/util.js","webpack:///./node_modules/choices.js/public/assets/scripts/choices.min.js","webpack:///./node_modules/css-element-queries/index.js","webpack:///./node_modules/css-element-queries/src/ElementQueries.js","webpack:///./node_modules/css-element-queries/src/ResizeSensor.js","webpack:///./node_modules/formdata-polyfill/formdata.min.js","webpack:///./node_modules/hogan.js/lib/compiler.js","webpack:///./node_modules/hogan.js/lib/hogan.js","webpack:///./node_modules/hogan.js/lib/template.js","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/isarray/index.js","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///./node_modules/jspolyfill-array.prototype.find/find.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/lodash/_root.js","webpack:///./node_modules/lodash/debounce.js","webpack:///./node_modules/lodash/isObject.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///./node_modules/lodash/isSymbol.js","webpack:///./node_modules/lodash/now.js","webpack:///./node_modules/lodash/toNumber.js","webpack:///./node_modules/lzutf8-light/build/production/lzutf8-light.js","webpack:///./node_modules/node-libs-browser/node_modules/buffer/index.js","webpack:///./node_modules/node-libs-browser/node_modules/timers-browserify/main.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/setimmediate/setImmediate.js","webpack:///./node_modules/smoothscroll-polyfill/dist/smoothscroll.js","webpack:///./node_modules/url-search-params-polyfill/index.js","webpack:///(webpack)/buildin/global.js","webpack:///(webpack)/buildin/module.js"],"names":["window","beesfra","app","appConfig","fn","time","timeout","args","clearTimeout","setTimeout","apply","$","fieldErrors","loadFormErrors","clearPreviousErrors","valid","event","invalid","e","validationMessage","submit","validateForm","buttonClick","clearForm","functions","sizes","selector","module","keyboardAccessibility","action","localeCode","localeCurrencyCode","queryString","url","type","dataType","data","code","CurrencyCode","success","response","error","$countryOptions","scrollTop","key","supportedKeyCodes","returnedScope","preFunction","keyFunctions","debounce","endpoint","minChars","isMobileSearch","getSuggestionsWrapper","clearModals","mobileSearchIcon","iconSearch","iconSearchClose","$scope","top","outerHeight","$suggestions","handleMoreContentBelowIcon","$suggestionsWrapper","positionSuggestions","toggleSuggestionsIcon","applyModals","context","encodeURIComponent","method","debounceSuggestions","tearDownSuggestions","$veil","$target","width","height","$element","Fn","addSpinner","removeSpinner","processInclude","require","SELECTORS","HEADER","CONTENT","STEP_FORM","PROGRESS_STEP","SHIPPING_FORM","BILLING_FORM","SUMMARY_FORM","STEP_CONTENT","SHIPPING_TYPE","TYPE","CURRENT_TYPE","SAVED_ADDRESS","SHIPMENT_SELECTOR","SAVED_ADDRESS_CONTAINER","SAVED_ADDRESS_INPUT","SHIPPING_ADDRESS","FIELDS","NEW_FIELDS","SAVE_TOGGLE","LINE1","STATE","CITY","POSTAL_CODE","SHIPPING_METHODS","CONTAINER","METHOD","METHOD_INPUT","GIFT","INPUT","MESSAGE_INPUT","MESSAGE_TEXT_AREA","SYMBOLS_LEFT","GIFT_PACKAGING_CHECKBOX","BILLING_ADDRESS","CARD","SAME_AS_SHIPPING","PAYMENT_METHODS","GIFT_CARD_FORM","CREDIT_CARD_FORM","CREDIT_CARD","DATE","MONTH","YEAR","NEW_CVV","SAVED_CVV","CVV_TOOLTIP","NEW_LABEL","SAVED_LABEL","SAVED_FORM","SAVED_DROPDOWN_CONTAINER","SAVED_DROPDOWN","NUMBER_GROUP","DATE_GROUP","NEW_OPTION","APPLE_PAY","OPTION","SUBMIT","ERRORS","SUMMARY","EVENTS","ADDRESS_SELECTED","BILLING","USE_SHIPPING_AS_BILLING_TOGGLED","ADYENCONTENT","UPDATEVIEW","TRIGGER_SHIPPING_VALIDATION","showComponent","component","document","querySelector","classList","remove","scrollTo","hideComponent","add","appendEmptyStage","content","length","container","createElement","innerHTML","appendChild","handleCreditCardExpiryErrors","modifiedErrors","Object","assign","dateField","monthField","yearField","expiryErrors","keys","filter","name","map","join","processFieldErrors","redirectTo","redirectUrl","stepForm","spinner","start","location","clientSideValidationUpdate","shippingForm","clientSideValidation","reinitClientSideValidation","isRedirectResponse","errorUrl","paypalUrl","paypalProcessorResult","paypalBaseUrl","continueUrl","updateView","paypalToken","errorContent","updateComponent","forEach","addressSelectorContent","shippingMethodsContent","giftContent","billingAddressContent","summaryContent","giftCardFormContent","skipStepContent","stepContent","adyenAction","dispatchEvent","CustomEvent","detail","orderToken","stage","currentStage","attachCustomValidationEvents","addEventListener","COLLAPSE","TABS","baseLoadFormErrors","base","parentSelector","call","errorFields","find","visible","collapse","closest","on","focus","CALLBACKS","handleAjaxResponse","responseContent","cb","func","urlFilter","indexOf","installAjaxHandlers","originals","open","XMLHttpRequest","prototype","fetch","Response","blob","json","text","originalName","original","then","readyState","DONE","responseURL","responseText","onComplete","push","CONSTANTS","TRIGGER_OFFSET","SCROLL_INTERVAL","BACK_TO_TOP","BACK_SHOW","BACK_HIDE","addBackToTopHandler","bttSelector","backToTopSelector","backToTopLinks","querySelectorAll","backToTopLink","holder","dataset","containerSelector","undefined","scrollHandler","triggerOffset","y","pageYOffset","animate","CONTENT_CACHE","STATE_CACHE","NAV_EVENTS","NAV_BACK","NAV_CONTENT","getUpdateUrl","triggerUrl","useFullUrl","paramsBlacklist","target","href","loc","protocol","hostname","pathname","triggerUrlParts","split","removeParamsFromUrl","addHistoryStep","historyMethod","targetSelector","scrollTarget","compressedContent","compress","updateUrl","stateObj","history","title","pushHistoryStep","replaceHistoryStep","initHistoryHandling","onpopstate","state","decompress","populateFormValuesInCurrentStep","refreshAttributes","handleUpdate","trigger","config","contentKey","ignoreScroll","append","renderer","callback","urlInputSelector","loadContent","navAjax","CONTENT_TYPES","JSON","TEXT","overrideUrl","$dialCode","allowedCountries","attr","defaultCountryCode","$onlyCountries","intlTelInput","allowDropdown","initialCountry","formatOnDisplay","separateDialCode","page","onlyCountries","dropdownContainer","insertAdjacentHTML","paymentForm","horizontalFilterOn","isPagination","contains","urlInput","value","trim","HEADER_EVENTS","UPDATE_HEADER","initNav","initTriggers","configs","triggerSelector","interactionEvents","evt","onEvent","hasAction","delegateTarget","preventDefault","tagName","toLowerCase","selectedOption","options","selectedIndex","hasUrl","startsWith","clientSideNav","navParentSelector","baseSubmit","baseClearForm","baseInvalid","checkValidity","stopPropagation","stopImmediatePropagation","each","validity","scrollToFirstError","parent","errorEl","form","resetValidity","el","required","addClass","invalidate","formGroup","message","validatedMessage","els","feedbackContainer","toggle","textContent","ADDRESS_FORM_EVENTS","loginValidation","cookiesAccepted","localStorage","getItem","cookieWarningMessageContainer","__rmcp","setItem","FLYOUT_OPEN","FLYOUT_CLOSE","recalculateContainer","pageHeaderHeight","headerFunctions","getHeaderHeight","style","initFlyout","toggleClass","onHeightChange","bind","isIOS","inputs","input","offset","flyout","FORMS","PREFILLED","FORM_SUBMIT","FORM_RADIOS","FORM_FIELDS","FORM_EVENTS","SUBMIT_STATE_CHANGE","DISABLE_INCOMPLETE_FORMS_SUBMIT","disableIncompleteFormsSubmit","handleFormValidity","buttons","fields","requiredFieldsPopulated","Array","from","every","field","disabled","radioButtons","radioGroups","reduce","groups","radioButton","radiosChecked","values","group","some","radio","checked","formIncomplete","button","toggleSubmitState","COLLAPSE_EVENTS","FORMS_STATE_CHANGED","POPULATE","fixWebkitPrefilledFieldLabels","affectedForms","prefilledFields","preventScroll","blur","initForms","DROPDOWN_LIST_MAX_HEIGHT_OFFSET","GLOBALS","GATEWAY","COUNTRY_CHOICES","LANGUAGE_CHOICES","CURRENCY_CHOICES","clearExistingDropdown","containerType","initialised","destroy","CLASSES","DROPDOWN_LIST","FORM","FORM_ERROR","DROPDOWN_CONTAINER","LOCATION_DROPDOWN","LANGUAGE_DROPDOWN","CURRENCY_DROPDOWN","LANGUAGE_INPUT","CURRENCY_INPUT","PAGE_LOCALE_LOADER","PAGE_LOCALE_LOADER_MOBILE","renderCountryOption","templateFunc","template","classNames","render","countryCode","countryContent","attributes","countryAttributes","handleDropdownBehavior","choices","singleOptionBehaviors","singleOptionBehavior","containerOuter","element","HIDE","DISABLE","disable","enable","initCountryChange","countryDropdown","languageChoices","currencyChoices","countries","getJSONData","selectedCountryCode","selectedCountry","country","id","languageInput","currencyInput","locales","currencies","languages","locale","index","label","languageName","selected","setChoices","passedElement","currency","symbol","initDropdownHeightCalculation","getDropdown","dropdown","parentElement","nextElementSibling","setDropdownMaxHeight","maxHeight","children","maxHeightValue","child","viewportHeight","innerHeight","getBoundingClientRect","initDropdowns","languageDropdown","currencyDropdown","choicesOptions","shouldSort","searchEnabled","itemSelectText","position","sortFn","a","b","countryOptions","callbackOnCreateTemplates","item","countryItem","choice","countryChoice","Choices","initForm","formError","removeItem","initGateway","gatewayContainer","header","HEADER_SELECTORS","modal","afterPageLocaleContentLoad","flyoutContainer","selectionForm","selectBehavior","loadPageLocale","pageLocale","innerWidth","selectorObj","loadPageLocaleMobile","pageLocaleMobile","link","countrySelectorLink","BOTTOM_BANNER","BANNER_CLOSE_BUTTON","MENU_CATS","CACHE","RESIZE_SENSOR","RESIZE_HANDLERS","handleResizeEvents","handler","initBannerClose","headerBottomBanner","cookieName","closeCookie","cookie","headerRectangle","headerOffset","headerHeight","offsetHeight","headerDisplacement","Math","ceil","initResizeHandler","ResizeSensor","initHandleNewsletterValidation","$form","emailField","requrestUrl","dataObj","FormData","ajax","contentType","processData","html","pdComponentsJs","ready","removeClass","searchfocus","removeEmoji","regex","val","replace","initScroll","startX","scrollLeft","touch","originalEvent","touches","pageX","left","x","walk","initComponents","initCountrySelector","factory","define","pluginName","defaults","autoHideDialCode","autoPlaceholder","customPlaceholder","excludeCountries","geoIpLookup","hiddenInput","nationalMode","placeholderNumberType","preferredCountries","utilsScript","UP","DOWN","ENTER","ESC","PLUS","A","Z","SPACE","TAB","regionlessNanpNumbers","windowLoaded","Plugin","telInput","extend","ns","isGoodBrowser","Boolean","setSelectionRange","hadInitialPlaceholder","_init","isMobile","test","navigator","userAgent","autoCountryDeferred","Deferred","utilsScriptDeferred","selectedCountryData","_processCountryData","_generateMarkup","_setInitialState","_initListeners","_initRequests","_processAllCountries","_processCountryCodes","_processPreferredCountries","_addCountryCode","iso2","dialCode","priority","countryCodes","lowerCaseOnlyCountries","allCountries","lowerCaseExcludeCountries","i","c","areaCodes","j","countryData","_getCountryData","parentClass","wrap","class","flagsContainer","insertBefore","selectedFlag","appendTo","selectedFlagInner","selectedDialCode","countryList","_appendListItems","countryListItems","className","tmp","_getDialCode","_isRegionlessNanp","_updateFlagFromNumber","_setFlag","defaultCountry","_updateValFromNumber","_initKeyListeners","_initFocusListeners","_initDropdownListeners","_initHiddenInputListener","that","getNumber","hasClass","prop","_showDropdown","isDropdownHidden","which","_closeDropdown","loadUtils","resolve","_loadAutoCountry","autoCountry","handleAutoCountry","startedLoadingAutoCountry","_triggerCountryChange","_cap","number","max","substr","is","one","len","_removeEmptyDialCode","startsPlus","charAt","numeric","_getNumeric","off","s","_setDropdownPosition","activeListItem","_highlightListItem","_scrollTo","_bindDropdownListeners","dropdownHeight","pos","inputTop","windowTop","dropdownFitsBelow","dropdownFitsAbove","extraTop","css","_selectListItem","isOpening","query","queryTimer","_handleUpDownKey","_handleEnterKey","String","fromCharCode","_searchForCountry","current","first","next","prev","currentCountry","_startsWith","listItem","not","toUpperCase","intlTelInputUtils","format","numberFormat","NATIONAL","INTERNATIONAL","formatNumber","_beforeSetNumber","alreadySelected","inArray","isNanpAreaCode","nanpSelected","areaCode","ignoreOnlyCountriesOption","allowFail","Error","prevCountry","_updatePlaceholder","shouldSetPlaceholder","numberType","placeholder","getExampleNumber","flagChanged","_updateDialCode","detach","middle","containerHeight","containerTop","containerBottom","elementHeight","elementTop","elementBottom","newScrollTop","middleOffset","heightDifference","newDialCode","hasSelectedListItem","inputVal","newNumber","prevDialCode","numericChars","isNumeric","_getFullNumber","prefix","numericVal","normalizedVal","setCountry","handleUtils","before","getExtension","getNumberType","getSelectedCountryData","getValidationError","isValidNumber","setNumber","setPlaceholderNumberType","arguments","deferreds","instance","instanceDeferreds","when","returns","slice","getCountryData","path","loadedUtilsScript","complete","cache","version","MENU","MENU_LEFT","MENU_RIGHT","MENU_VISIBLE","MENU_TOGGLED","BACKGROUND_VISIBLE","MENU_TOGGLER_ACTIVE","BODY_MENU_TOGGLED_LEFT","BODY_MENU_TOGGLED_RIGHT","MENU_SLIDE","TOUCH_FOCUS","CATEGORY_COLLAPSE","ATTRIBUTES","TOGGLE","DISABLED_TOGGLE","MENU_BODY","MENU_LINK","BACK_LINK","BACK_LINK_CONTAINER","SECOND_LEVEL_CATEGORIES","THIRD_LEVEL_CATEGORIES","MENU_TOGGLES","BACKGROUND","TOP_LEVEL_LINK","TOP_LEVEL_NAV_MENU_LINKS","SECOND_LEVEL_NAV_MENU_LINKS","EXPANDED_NAV_MENU_LINKS","COLLAPSE_NAV_MENU_LINKS","slideMenu","menu","hasSubMenus","hideMenuOnTypeChange","menuToggles","isLG","activeCollapseLinks","matches","click","toggleCollapsesBehavior","collapseSelector","collapseTriggers","menuSelector","menuCategories","categoryList","setAttribute","removeAttribute","initSlideBehavior","getMenuToggledBodyClass","restoreMobileMenuInitialState","toggleMenuElements","background","menuBody","body","FLYOUT_EVENTS","initMobileMenu","initTouchNavigation","links","getAttribute","currentLink","TOGGLE_CLASS","MIN_BODY_HEIGHT","HOVER_TIMEOUT","COUNT_UPDATE_DISPLAY_TIME","LINK_HIGHLIGHTED","PARENT","LINK","CONTAINER_INNER","BODY","FOOTER","CART_BTN","CLOSE_BUTTON","OPEN_BUTTON","TOTAL_QUANTITY","TOTAL_VALUE","NEWPDP","headerEle","setMiniCartBodyHeights","footer","totalHeight","outerHeightWithMargin","footerHeight","bodyMaxHeight","isClickOnCloseTrigger","closeBtn","showFlyout","displayFlyout","showFlyoutImmediately","actionUrl","innerContainer","borderRightWidth","fetchOptionsGet","bodyHeight","stop","closeFlyout","initMiniCartToggle","miniCartDisplayTimeout","qtyContainer","touchEnabled","inMiniCart","miniCartShown","hasItems","parseInt","qt","miniCartHoverTimeout","updateMiniCartTotal","closeAfterChangeTimeout","cart","basket","countValue","numItems","totalValue","totals","grandTotal","totalAvailable","totalContainer","pageAction","isFromCart","total","updateMiniCart","minicart","initFlyoutUnderHeader","SEARCH_FIELD","CLOSE_SEARCH","TRENDING_PANE","TRENDING_PANE_ACTIVE","WRAPPER","CLEAR_SEARCH","SEARCHESUGGESTIONS_PANE","SUGGESTIONS_CLOSE","LOAD_RECENT_SEARCH","LOAD_POP_SEARCH","handleSuggestionsDisplay","panes","pane","isVisible","isTallerThanWindow","scrollHeight","disableBodyScroll","enableBodyScroll","loadRecentSearches","recentSearch","toggleTrendingSuggestions","trendingPane","clearSearchField","clearSearchToggles","clearSearch","searchField","trendingSuggestions","debounceTrending","closeSuggestions","handleSuggestionsVisibility","wrapper","ajaxComplete","xhr","loadPopularSearches","loadPopSearch","CONVERSION_DETAILS_SOURCE","LABEL_CONVERSIONS","VALUE_CONVERSIONS","conversionDetailsSource","isShoe","getElementsByName","conversionDetails","labelConversions","valueConversions","conversionEl","isRemoveSizePrefix","targetText","convertLabel","innerText","baseValue","convertValue","sibling","handleSizeConversion","default","sizeConversionZeroPad","baseSpinner","fnStop","PDP","PRDDETAIL","PRDSETDETAIL","BREADCRUMB","PRODUCTDETAIL","PRD_DETAIL","getElementsByClassName","headerBanner","stickyHeaderScrollHandle","previousScrollPosition","isScrollingDown","goingDown","scrollPosition","handleScroll","scrollThrottle","throttle","stickyHeaderScrollHandlePDP","banner","PDPgallary","scrollDownFadeEffect","scrolldown","ScrollUpTransparentEffect","scrollup","handleHeader","globalebanner","headerBannerHeight","globalBannerHeight","isGLobaleBanner","lengh","geBanPos","checkPositionOfbanner","headerInit","globaleBannerClass","globalbanner","totalBannerHeight","dockImageCarouselToTop","productImages","productSetitem","checkForGEBanner","mutations","observer","mutation","addedNodes","node","nodeType","Node","ELEMENT_NODE","MutationObserver","observe","childList","subtree","imagecarouselsticky","wait","result","previous","later","leading","Date","now","throttled","nowTime","remaining","trailing","cancel","SWATCH","TILE_IMAGE_CONTAINER","TILE_IMAGE_CONTAINER_OVERLAY_SHOWN","SWATCH_CURRENT","OUT_OF_STOCK","TILE","TILE_IMAGE","PRIMARY_IMAGE","ALTERNATE_IMAGE","ALTERNATE_TILE_IMAGE","PDP_LINK","ALTERNATE_PDP_LINK","ADD_TO_BAG_LINK","ADD_TO_BAG_OVERLAY","ADD_TO_BAG_OVERLAY_CLOSE","PRICE_CONTAINER","PROMO_CONTAINER","SUGGESTIONS_LINK","SWATCH_CHANGE","ADD_TO_BAG_OVERLAY_TOGGLE","getSwatchSiblings","swatch","otherSwatches","getSiblings","isNode","isSwatch","isOtherSwatch","updateTileElements","tile","clickedSwatch","image","addToBag","priceContainer","promoContainer","src","hash","addToBagUrl","priceHtml","promoCalloutsHtml","updateTileElementsforAlternateImage","alternateImage","primaryImageCarouselItem","AlternateImageCarouselItem","alternateImageUrl","srcset","alternateImageSrcset","handleSwatchSelection","otherSwatch","dispatchColorChangeEvent","selectedSwatch","dispatchAddToBagOverlayEvent","shown","displayAddToBagOverlay","addToBagLink","imageContainer","existingOverlay","convertSizes","done","closeAddToBagOverlay","overlay","imageVeiled","handleAddToBagActions","lastClickedButton","pid","quantity","minQuantity","handleStickers","selectable","colorSwatches","currentTarget","showAltImgonPLP","quickAddToBag","addSearchSuggestionPhraseParam","searchPhrase","linkToPdp","searchInputs","appendToUrl","q","preOrderVarient","preOrderData","parse","srcElement","preOrderMessageContainer","preOrderMessage","preorderAvailabilityMessage","enableSlideonPLPAltImg","xClick","xMove","sensitivityInPx","floor","carousel","toggleFormElementsState","rootEls","enabled","root","findFormFields","activeHiddenInput","activeToggle","elVisible","forceEnabled","toggleTabPanelFormElementsState","toggleCollapseFormElementsState","targets","targetsArr","handleExistingElements","reverse","initElements","initTabs","initCollapse","toggleFormElementStates","include","domParser","DOMParser","defaultValue","strData","isArray","ignore","parseHTMLString","str","parseFromString","createElementFromString","parsed","res","setElementHTML","clear","newEl","eventName","parentNode","getFinalStyle","domNode","properties","originalDisplay","display","computedStyles","getComputedStyle","getScrollTop","documentElement","outerWidthWithMargin","offsetWidth","marginLeft","marginRight","marginTop","marginBottom","siblings","firstChild","nextSibling","addClassIfNeeded","addNeeded","removeClassIfNeeded","removeNeeded","addOrRemoveClassIfNeeded","safeEl","childrenArr","parentEl","acc","concat","useElement","selection","getFormValuesObject","option","valueOption","populateRemoteIncludes","remoteIncludes","operations","remoteInclude","results","Promise","all","outerHTML","getClientRects","components","addUniqueEventListener","removeEventListener","isMD","matchMedia","isXL","match","paddingTop","paddingBottom","borderTopWidth","borderBottomWidth","isBackForwardNavigation","LEGACY_BACKFW_TYPE","PerformanceNavigation","TYPE_BACK_FORWARD","perf","performance","legacyNavType","navigation","navEntry","getEntriesByType","navEntryBackFw","legacyNavBackFw","getElementOffset","offsetTop","offsetLeft","offsetParent","DUMMY_HOST_PROTOCOL","prepareURL","theURL","URL","prepareURLString","urlString","toString","substring","attachDataToURL","searchParams","URLSearchParams","search","set","removeParamsFromURL","paramsToRemove","param","delete","objToFormDataContainer","object","FormDataContainer","formData","getFormData","getURLSearchParams","fetchGeneral","credentials","fetchHeadersGeneral","fetchOptionsGeneral","additionalHeaders","headers","fetchOptionsPost","CONTENT_TYPES_MAPS","isType","typeParts","part","getResponseType","contentTypeHeader","get","getResponseContent","getUrl","host","startSpinner","urlSource","spinnerContainer","supportedTags","loadUrl","additionalData","showSpinner","formValues","urlObject","urlParams","formUrlParams","formUrlParamName","smooth","Element","scroll","behavior","Number","isNaN","safeDecodeURIComponent","decodedValue","decodeURIComponent","params","newUrl","parseQueryString","queryStringUrl","pair","pairParts","paramName","paramValue","decodeSafeValue","baseUrl","qs","modifiedQs","qsPair","baseSize","defaultSizes","countrySizes","zeroPrefix","countryPrefix","convertedSize","numericSize","parseFloat","sizeIndex","currentCountrySize","exports","projectScripts","file","process","console","ENABLE_REDUX","additionalScripts","basePath","__webpack_public_path__","loadChunks","loadChunksVal","loadProjectChunks","loadProjectChunksVal","renderCloudinaryGalleryWidget","imgUrls","galleryOptions","$cldEl","cloudinaryObj","galleryEnabled","cloudinary","images","galleryWidget","cldGallery","imageURLs","renderCloudinarySetGalleryWidgets","cldObj","cldSetImages","isEnabled","renderCloudinaryVideoPlayer","videoPlayerID","cld","player","cldURLs","video","videoURL","videoPlayerEnabled","Cloudinary","new","cloud_name","cloudName","videoPlayer","widgetOptions","source","play","transformation","transformations","makeCloudinaryImagesResponsive","$cldResponsiveImgTags","responsive","img","cloudinaryWidget","filterCookieValue","contentEventInitData","ele","indx","contentSlotId","clickEventData","contentBlockId","dataLayer","decodedCookie","cookieArray","cookieItem","cookiePair","filteredValue","count","isPaypalEnabled","isGooglePayEnabled","paypalhelper","onGooglePayLoaded","googleAnalytics","DATA_LAYER_NAME","polyfillBeaconAPI","sendBeacon","ActiveXObject","setRequestHeader","responseType","send","replaceDataLayerProperty","gtm","google_tag_manager","CONTAINER_ID","propKey","handleAjaxEvents","events","ANALYTICS_EVENTS_KEY","ex","contentEl","pushRemoteIncludeEvents","getDataLayer","getCurrency","currencyEvt","getProductList","listContainers","wishlist","listName","getProductObject","trackingEl","productClick","productObj","standardClick","ctrlClick","auxilliaryClick","payload","ecommerce","currencyCode","actionField","list","products","eventCallback","eventTimeout","disableBodyScrollModalWrapper","disableBodyScrollFlyoutWrapper","noScrollLock","allowTouchMove","currentEl","clientHeight","clearAllBodyScrollLocks","RECAPTCHA_ELEMENT","btn","sitekey","grecaptcha","execute","token","ALP_SIZE_LINK","ALP_SIZE_LINK_SPAN","ALP_ADD_TO_CART","removeSelectedClass","alpProductLoad","sizelink","basketButton","sizelinkObj","buttonObj","productId","qty","addToCartAjexUrl","addToCartUrl","isValidURL","emailRegex","urlPattern","newText","tooShort","patternMismatch","oldText","charLen","MODAL","CAROUSEL_ANCHOR","CAROUSEL_ANCHOR_LOW_ASP","NAVIGATORS","ARROWS","CustomLength","glide","Components","Events","addToBagCarouselEvents","handleSlider","Sizes","settings","perView","Html","mount","addToBagCarouselInit","slidesCount","Glide","gap","rewind","bound","peek","after","breakpoints","addToBagCarouselLowASPInit","lowASPRecommendations","lastAddedProductID","isATBRecommendationsModalShown","showATBOverlayModal","isModalShown","empty","hide","productTile","initAddressForms","backToTop","bodyScroll","initRecaptcha","intelligentReach","stickyHeaderScroll","validateInput","addToBagRecommendations","smoothscroll","polyfill","analyticsBase","analyticsEvents","REFRESH","UPDATE","ROW","COUNTRY","fieldRow","csrfError","handleUppercasedFields","IDS","LOOKUP","CUSTOM_LOOKUP","ADDRESS_FIELDS","LINE2","LINE3","ERROR","SUBMIT_BUTTON","showAddressFields","showAddressFieldsOnReinit","hasValues","hasErrors","createControl","lookupField","control","pca","Address","suppressAutocomplete","listen","address","Label","initAddressSearch","customLookupFields","mode","fieldMode","SEARCH","PRESERVE","load","customLookupField","customFields","DEFAULT","initLookup","pcaInterval","setInterval","clearInterval","CHECKOUT_EVENTS","HEADER_COUNTER","wishlistEmpty","wishlistFilled","productCounter","unMarkWishlist","markWishlistFilled","WISHLIST_EVENTS","WISHLIST_ADD","WISHLIST_REMOVE","newCount","productCount","INDICATOR_ACTIVE","WISHLIST_BUTTON","INDICATORS","ADDED","REMOVED","addRemoveFromWishlist","styleClass","toggleAttribute","urlAdd","urlRemove","toggableStyleClass","optionId","optionVal","indicator","isAdd","once","reinitWishlistOnVariantChange","addToWishlist","Alert","NAME","VERSION","DATA_KEY","EVENT_KEY","DATA_API_KEY","JQUERY_NO_CONFLICT","Selector","DISMISS","Event","CLOSE","CLOSED","CLICK_DATA_API","ClassName","ALERT","FADE","SHOW","constructor","_element","close","rootElement","_getRootElement","customEvent","_triggerCloseEvent","isDefaultPrevented","_removeElement","dispose","removeData","Util","getSelectorFromElement","closeEvent","_destroyElement","transitionDuration","getTransitionDurationFromElement","TRANSITION_END","emulateTransitionEnd","_jQueryInterface","_handleDismiss","alertInstance","Constructor","noConflict","Carousel","ARROW_LEFT_KEYCODE","ARROW_RIGHT_KEYCODE","TOUCHEVENT_COMPAT_WAIT","Default","interval","keyboard","slide","pause","DefaultType","Direction","NEXT","PREV","LEFT","RIGHT","SLIDE","SLID","KEYDOWN","MOUSEENTER","MOUSELEAVE","TOUCHEND","LOAD_DATA_API","CAROUSEL","ACTIVE","ITEM","ACTIVE_ITEM","NEXT_PREV","DATA_SLIDE","DATA_RIDE","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","_config","_getConfig","_indicatorsElement","_addEventListeners","_slide","nextWhenVisible","hidden","triggerTransitionEnd","cycle","visibilityState","to","activeIndex","_getItemIndex","direction","typeCheckConfig","_keydown","_getItemByDirection","activeElement","isNextDirection","isPrevDirection","lastItemIndex","isGoingToWrap","delta","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","slideEvent","_setActiveIndicatorElement","indicators","nextIndicator","activeElementIndex","nextElement","nextElementIndex","isCycling","directionalClassName","orderClassName","slidEvent","reflow","TypeError","_dataApiClickHandler","slideIndex","carousels","$carousel","Collapse","SHOWN","HIDDEN","COLLAPSING","COLLAPSED","Dimension","WIDTH","HEIGHT","ACTIVES","DATA_TOGGLE","_isTransitioning","_triggerArray","makeArray","toggleList","elem","filterElement","foundElem","_selector","_parent","_getParent","_addAriaAndCollapsedClass","show","actives","activesData","startEvent","dimension","_getDimension","setTransitioning","capitalizedDimension","scrollSize","triggerArrayLength","$elem","isTransitioning","hasWidth","isElement","jquery","_getTargetFromElement","triggerArray","isOpen","$this","$trigger","selectors","Modal","ESCAPE_KEYCODE","backdrop","FOCUSIN","RESIZE","CLICK_DISMISS","KEYDOWN_DISMISS","MOUSEUP_DISMISS","MOUSEDOWN_DISMISS","SCROLLBAR_MEASURER","BACKDROP","OPEN","DIALOG","DATA_DISMISS","FIXED_CONTENT","STICKY_CONTENT","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","showEvent","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","hideEvent","transition","_hideModal","_enforceFocus","shownEvent","transitionComplete","has","_resetAdjustments","_resetScrollbar","_removeBackdrop","backdropTransitionDuration","callbackRemove","isModalOverflowing","paddingLeft","paddingRight","rect","right","_getScrollbarWidth","fixedContent","stickyContent","actualPadding","calculatedPadding","actualMargin","calculatedMargin","padding","elements","margin","scrollDiv","scrollbarWidth","clientWidth","removeChild","ScrollSpy","ACTIVATE","SCROLL","DROPDOWN_ITEM","DROPDOWN_MENU","DATA_SPY","NAV_LIST_GROUP","NAV_LINKS","NAV_ITEMS","LIST_ITEMS","DROPDOWN","DROPDOWN_ITEMS","DROPDOWN_TOGGLE","OffsetMethod","OFFSET","POSITION","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetBCR","sort","getUID","_getOffsetHeight","maxScroll","_activate","_clear","offsetLength","isActiveTarget","queries","$link","parents","nodes","scrollSpys","scrollSpysLength","$spy","Tab","DISABLED","ACTIVE_UL","DROPDOWN_ACTIVE_CHILD","listElement","itemSelector","nodeName","hiddenEvent","activeElements","active","_transitionComplete","dropdownChild","dropdownElement","dropdownToggleList","MAX_UID","MILLISECONDS_MULTIPLIER","toType","obj","getSpecialTransitionEndEvent","bindType","delegateType","handle","handleObj","transitionEndEmulator","duration","called","setTransitionEndSupport","special","random","getElementById","err","floatTransitionDuration","supportsTransitionEnd","componentName","configTypes","property","hasOwnProperty","expectedTypes","valueType","RegExp"],"mappings":";QAAA;QACA;QACA;QACA;;;QAGA;QACA;QACA;QACA,QAAQ,oBAAoB;QAC5B;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;;QAEA;;;QAGA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;;;;QAIA;QACA;QACA,yCAAyC,s4BAAs4B;QAC/6B;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;QAEA;QACA;QACA;QACA;;;QAGA;;QAEA;QACA,iCAAiC;;QAEjC;QACA;QACA;QACA,KAAK;QACL;QACA;QACA;QACA,MAAM;QACN;;QAEA;QACA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,wBAAwB,kCAAkC;QAC1D,MAAM;QACN;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;QAEA;QACA,0CAA0C,oBAAoB,WAAW;;QAEzE;QACA;QACA;QACA;QACA,gBAAgB,uBAAuB;QACvC;;;QAGA;QACA;;;;;;;;;;;;;;ACrMA;AAAA;;;WAGcA,MAAM,CAACC,OAAP,IAAkB,E;IAA1BC,G,QAAAA,G;;AACN,IAAI,CAACA,GAAL,EAAU;AACRA,KAAG,GAAG,EAA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A;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,gFAAgF;AAChF;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,yBAAyB;AAC/B;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,yEAAyE,2BAA2B;AACpG,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,EAAE;AACd,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,EAAE;AACd,YAAY;AACZ;AACA;AACA;;AAEA;AACA;;AAEA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA,YAAY,EAAE;AACd,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,EAAE;AACd,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,EAAE;AACd,YAAY;AACZ;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA,aAAa;AACb;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA,GAAG,IAAI;AACP;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY;AACZ;;AAEA;AACA,gCAAgC,sBAAsB;AACtD;AACA;AACA;AACA;;AAEA;AACA,sCAAsC;;AAEtC;AACA,kDAAkD;AAClD;;AAEA;AACA,6CAA6C;AAC7C;;AAEA;AACA,8CAA8C;AAC9C;;AAEA;AACA,8CAA8C;AAC9C;;AAEA;AACA,4CAA4C;AAC5C;AACA;;AAEA;AACA,0CAA0C;AAC1C;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,SAAS;AACtB;;;AAGA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;;AAEA;AACA,OAAO;;;AAGP;AACA;AACA,OAAO;;;AAGP,uDAAuD;;AAEvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,aAAa;AAC5B,eAAe,QAAQ;AACvB;;AAEA,GAAG;AACH;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;;AAEA;AACA,OAAO;;;AAGP;AACA;AACA,OAAO;;;AAGP;AACA,0BAA0B;AAC1B,OAAO;AACP;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,cAAc;AACd;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB,MAAM;AACtB,gBAAgB;AAChB;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,gBAAgB;AAChB;;AAEA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,EAAE,WAAW,EAAE;AACzB;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,gBAAgB;AAChB;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,gBAAgB;AAChB;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B,gBAAgB;AAChB;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,aAAa;AAC7B,gBAAgB,SAAS;AACzB,gBAAgB;AAChB;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB,gBAAgB;AAChB;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,qCAAqC;;AAErC,uBAAuB;AACvB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;;;AAGA;AACA;AACA;AACA,OAAO;AACP;;;AAGA;AACA;AACA;AACA,OAAO;;;AAGP;AACA;AACA,OAAO;;;AAGP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;;;AAGP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,eAAe,OAAO;AACtB,gBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;;;AAGP;AACA;AACA,OAAO;;;AAGP;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;;;AAGA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,iDAAiD;AACjD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B,gBAAgB;AAChB;AACA;AACA,0CAA0C,SAAS;AACnD;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,eAAe,eAAe;AAC9B,iBAAiB;AACjB;AACA;AACA,0CAA0C,SAAS;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,YAAY,QAAQ;AACpB,YAAY;AACZ;AACA;AACA;AACA;AACA;;AAEA,UAAU,GAAG;AACb;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,QAAQ;AACpB,YAAY;AACZ;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,SAAS;AACrB,YAAY;AACZ;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,eAAe,cAAc;AAC7B,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB,OAAO;AACvB,gBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA,qBAAqB,mBAAmB;AACxC;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA,qBAAqB,mBAAmB;AACxC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,iEAAiE;AACxF,yBAAyB,mBAAmB;AAC5C;AACA;AACA;AACA;;AAEA,0BAA0B,qBAAqB;AAC/C;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB,mBAAmB;AACxC;AACA;;AAEA,uBAAuB,sBAAsB;AAC7C;AACA;;AAEA,uBAAuB,oBAAoB;AAC3C;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;;AAEA,qBAAqB,kBAAkB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc,aAAa;AAC3B,cAAc,wBAAwB;AACtC,cAAc,SAAS;AACvB,cAAc,eAAe;AAC7B,cAAc;AACd;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,mBAAmB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,aAAa;AAC7B,gBAAgB,wBAAwB;AACxC,gBAAgB,eAAe;AAC/B,gBAAgB;AAChB;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,mBAAmB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB;AACjB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,eAAe,OAAO;AACtB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB,gBAAgB;AAChB;AACA;AACA,qBAAqB,yBAAyB;AAC9C;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,+DAA+D;;AAE/D,kEAAkE;;AAElE;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;;AAEL;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;;;AAGP;AACA,KAAK;;AAEL;AACA,gBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,gBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA,eAAe,QAAQ;AACvB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB,SAAS;AACzB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qCAAqC;AACrC;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,eAAe,OAAO;AACtB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,eAAe,OAAO;AACtB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB,OAAO;AACvB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;;AAEA;AACA,uBAAuB,uBAAuB;AAC9C;AACA;;AAEA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;;AAEA;AACA,uBAAuB,uBAAuB;AAC9C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,qBAAqB,oBAAoB;AACzC;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,qBAAqB,oBAAoB;AACzC;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB,YAAY;AAC5B,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB,YAAY;AAC5B,gBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,eAAe,WAAW;AAC1B;AACA;AACA;;AAEA,0EAA0E,aAAa;AACvF;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA,eAAe,WAAW;AAC1B;AACA;AACA;;AAEA,6EAA6E,eAAe;AAC5F;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,qBAAqB,oBAAoB;AACzC;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,qBAAqB,oBAAoB;AACzC;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,eAAe,eAAe;AAC9B,gBAAgB;AAChB;AACA;AACA,qBAAqB,qBAAqB;AAC1C;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,eAAe,eAAe;AAC9B,gBAAgB;AAChB;AACA;AACA,qBAAqB,qBAAqB;AAC1C;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB,OAAO;AACvB,gBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,eAAe,eAAe;AAC9B,gBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,WAAW;AACX;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa;AACb;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ;;AAEA,iCAAiC;AACjC;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,+BAA+B;AAC/B,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,8FAA8F;AAC9F;AACA,GAAG;;AAEH;AACA,CAAC;;AAE2B;;;;;;;;;;;;;;ACnyHhB;;AAEZ;AACA;AACA;;AAEA;AACA;AA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A;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,YAAY;AAC/B,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,YAAY;AAC/B,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B,mBAAmB,OAAO;AAC1B,mBAAmB,OAAO;AAC1B,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA,kEAAkE,iCAAiC;AACnG,mFAAmF,qBAAqB;AACxG;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oDAAoD,OAAO;AAC3D;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;;AAEA,wIAAwI;AACxI;;AAEA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,iDAAiD,OAAO;AACxD;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA,gGAAgG,iBAAiB,YAAY,EAAE,0DAA0D,aAAa;;AAEtM;AACA,4EAA4E,KAAK,qBAAqB,EAAE,EAAE;AAC1G;AACA;AACA;;AAEA,4DAA4D,OAAO;AACnE;AACA;AACA;AACA;;AAEA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,YAAY;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;;;;;;;;AClhBD,gHAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAA0C;AAClD,QAAQ,oCAAO,OAAO;AAAA;AAAA;AAAA;AAAA,oGAAC;AACvB,KAAK,MAAM,EAIN;AACL,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,0BAA0B;AACzC,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,OAAO;AACzB;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA,cAAc,YAAY;AAC1B,gBAAgB,OAAO,EAAE;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,kCAAkC;AACjD,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yCAAyC,OAAO;AAChD;AACA;AACA;;AAEA;AACA;AACA,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,YAAY;AAC/B,mBAAmB,SAAS;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,8CAA8C,oBAAoB,WAAW,UAAU,UAAU,WAAW;AAC5G,kCAAkC,aAAa,oBAAoB,iBAAiB;AACpF,iDAAiD,SAAS,QAAQ,gBAAgB;;AAElF;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6BAA6B;AAC7B;;AAEA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA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wCAAwC,uBAAuB,gCAAgC,2BAA2B,+BAA+B,2FAA2F,wBAAwB,6BAA6B,oDAAoD,EAAE,8CAA8C;AACvf,2FAA2F,EAAE,MAAM,cAAc,sBAAsB,wDAAwD,eAAe;AAC9M,CAAC;;;;;;;;;;;;;;AChBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB,kBAAkB;;AAElB;AACA;AACA,qBAAqB,iCAAiC;AACtD;AACA;AACA;;AAEA;AACA;AACA,6BAA6B,mBAAmB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,qCAAqC,mBAAmB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,qBAAqB,SAAS;AAC9B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,uBAAuB;AACvB,qFAAqF;AACrF;AACA;AACA;AACA,2BAA2B;AAC3B,2BAA2B;AAC3B;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,iDAAiD;AACjD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,mCAAmC,OAAO;AAC1C;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,wBAAwB;;AAExB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oCAAoC,OAAO;AAC3C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oCAAoC,OAAO;AAC3C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yDAAyD,iBAAiB;AAC1E;AACA,aAAa,0BAA0B;AACvC;;AAEA;AACA;AACA;AACA,yCAAyC,iGAAiG;AAC1I;AACA,uBAAuB,2BAA2B;AAClD;;AAEA;AACA,aAAa,wBAAwB,uCAAuC,qCAAqC;AACjH;;AAEA;AACA;AACA;AACA,mBAAmB,mBAAmB,cAAc;AACpD;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,uBAAuB,aAAa,0BAA0B;AAC9D;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB,QAAQ;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,6BAA6B;AAC7B,sFAAsF;AACtF;AACA;;AAEA;AACA;AACA;AACA,qGAAqG;AACrG,qDAAqD;AACrD;AACA,wBAAwB,EAAE,SAAS;AACnC,KAAK;;AAEL;AACA,0GAA0G;AAC1G;AACA,yBAAyB;AACzB,KAAK;;AAEL;AACA;AACA,iBAAiB,YAAY,oBAAoB;AACjD;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA,4DAA4D;AAC5D;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA,6FAA6F;AAC7F,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL,MAAM;;AAEN;AACA;;AAEA;AACA,2FAA2F;AAC3F;;AAEA;AACA,2BAA2B;AAC3B;;AAEA;AACA;AACA,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC,EAAE,KAA8B,aAAa,SAAK;;;;;;;;;;;;;ACtanD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,YAAY,mBAAO,CAAC,2DAAY;AAChC,iBAAiB,mBAAO,CAAC,2DAAY;AACrC;AACA;;;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6CAA6C,WAAW,EAAE;;AAE1D;AACA;;AAEA;AACA;;AAEA;AACA,8CAA8C;AAC9C,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,qBAAqB,iBAAiB;AACtC;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA,kCAAkC,QAAQ;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,oBAAoB,eAAe,EAAE;;AAErC,oBAAoB,kBAAkB,eAAe,UAAU,EAAE;;AAEjE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,2BAA2B;AAC3B,2BAA2B;AAC3B,8BAA8B;AAC9B,+BAA+B;AAC/B;AACA;;AAEA;AACA;AACA;;AAEA,CAAC,EAAE,KAA8B,aAAa,SAAK;;;;;;;;;;;;;ACpVnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,QAAQ,WAAW;;AAEnB;AACA;AACA;AACA,QAAQ,WAAW;;AAEnB;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,QAAQ,WAAW;;AAEnB;AACA;AACA,QAAQ,UAAU;;AAElB;AACA;;;;;;;;;;;;;ACnFA,iBAAiB;;AAEjB;AACA;AACA;;;;;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,MAAM,KAA0B;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,YAAY;;AAEpB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,MAAM;AACN;AACA;;AAEA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF,oBAAoB;;AAEpB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA,UAAU,YAAY;AACtB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,SAAS;AAClB;AACA;;AAEA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,YAAY;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU,YAAY;AACtB;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,SAAS;AAClB;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA,gBAAgB,IAAI;;AAEpB;AACA;;AAEA;;AAEA;AACA;AACA,wCAAwC,IAAI;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS;;AAET;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,yBAAyB;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ,6BAA6B;AAChD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;;AAEA;AACA;AACA,WAAW,gBAAgB;AAC3B,aAAa,uBAAuB;AACpC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,eAAe;AAC1B,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,eAAe;AAC1B,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,UAAU;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,cAAc;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,gCAAgC,MAAM;AACtC;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA,eAAe;;AAEf,SAAS;;AAET;AACA,QAAQ,iCAAiC;AACzC,QAAQ,oBAAoB;AAC5B,QAAQ,sCAAsC;AAC9C,QAAQ;AACR,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA,gBAAgB,aAAa,EAAE;AAC/B;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,4DAA4D;;AAE5D;AACA;AACA;AACA,yCAAyC;;AAEzC;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;AACA;AACA;AACA,6DAA6D;;AAE7D;AACA;AACA;AACA,0CAA0C;;AAE1C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,gEAAgE;;AAEhE;AACA;AACA;AACA,6CAA6C;;AAE7C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA,iEAAiE,UAAU;AAC3E,sCAAsC,2BAA2B;AACjE;AACA,gCAAgC,MAAM;AACtC;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,UAAU,YAAY;AACtB;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,UAAU,YAAY;AACtB;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,UAAU,UAAU;AACpB;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,UAAU,cAAc;AACxB;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA,YAAY,uEAAuE;AACnF;AACA;AACA,YAAY,4BAA4B;AACxC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ,SAAS;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,2DAA2D;;AAE3D;AACA;AACA,oFAAoF;;AAEpF;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,QAAQ,SAAS;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,SAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH,QAAQ,SAAS;AACjB;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,iDAAiD;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iDAAiD;AACjD,UAAU,wCAAwC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B;AACA,WAAW,QAAQ;AACnB,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;;AAEA,CAAC;;;;AAID;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA,QAAQ,GAAG;AACX;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;;;;AAIA;;AAEA;;AAEA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;;AAEA,cAAc,SAAS;AACvB;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;;AAEA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,OAAO;AACjB;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,OAAO;AACjB,0BAA0B,wBAAwB;;AAElD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA,0CAA0C;AAC1C,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;;;AAIA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB;;AAEnB;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU,cAAc;AACxB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;;AAER;AACA;AACA;AACA,OAAO;AACP,MAAM;;AAEN;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,wCAAwC,sCAAsC;AAC9E,oCAAoC,uCAAuC;AAC3E,oCAAoC,sCAAsC;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR,OAAO;AACP;AACA,MAAM;AACN,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW;;AAEX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;;AAER;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,oCAAoC;AACpC,qCAAqC;AACrC,oCAAoC;AACpC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA,EAAE;AACF;;;;;AAKA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;AACF;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU,SAAS;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,uBAAuB,aAAa;AACpC,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,SAAS;AAC7B;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAI;AACJ,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;AAGD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ,EAAE;AACF;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA;;;AAGA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAQ,gBAAgB;AACxB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,GAAG;AACH;AACA,CAAC;AACD;;AAEA;;AAEA;;;;AAIA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,EAAE;AACF;;AAEA,EAAE;AACF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA,QAAQ,OAAO;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,sBAAsB;;AAEtB;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,OAAO;AACf;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;;AAEA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD;;;;AAIA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE,gBAAgB;AAClB;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;;AAEA,WAAW;;AAEX;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;;AAEA;AACA;AACA,oDAAoD;AACpD;;AAEA;AACA;;AAEA,cAAc,sBAAsB;AACpC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,yBAAyB;AACzB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,+DAA+D;AAC/D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU,cAAc;;AAExB;AACA;AACA;AACA;AACA;AACA,iBAAiB,mBAAmB;AACpC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,uCAAuC;AACjE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,uDAAuD;AAC9E;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,sCAAsC;AACtC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,qCAAqC,cAAc;AACnD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;AAGD;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8BAA8B;;AAE9B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU,OAAO;AACjB;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,gBAAgB,gBAAgB;AAChC;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,QAAQ,+BAA+B;AACvC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,uCAAuC,OAAO;AAC9C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,wCAAwC,OAAO;AAC/C;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA,SAAS,qCAAqC;AAC9C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;;AAEA,SAAS,8BAA8B;AACvC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA,6BAA6B;AAC7B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,YAAY,OAAO;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,WAAW;AACpB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;;;AAIA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,+CAA+C,cAAc,WAAW;AACxE,mBAAmB,UAAU;AAC7B;AACA,sBAAsB,cAAc,sBAAsB,gBAAgB;AAC1E,gBAAgB,WAAW,YAAY;AACvC,cAAc;AACd;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,EAAE;AACF,CAAC;;;AAGD;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,+DAA+D;AAC3E;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,QAAQ,OAAO;;AAEf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,kBAAkB,gBAAgB;AAClC;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;;AAEA,UAAU,OAAO;AACjB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;;AAEA,WAAW,SAAS;AACpB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;AAGD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;;;;;AAKA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA,QAAQ,OAAO;AACf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ,gBAAgB;AACxB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,iDAAiD,0BAA0B;AAC3E;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU,gBAAgB;AAC1B;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,2BAA2B;AAC3B;AACA,qBAAqB;AACrB;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B;AACA;;AAEA,6CAA6C;AAC7C;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA,QAAQ,gBAAgB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA,SAAS,gBAAgB;AACzB;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,CAAC;;AAED;AACA,iEAAiE;AACjE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,EAAE;AACF;AACA;AACA;;AAEA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,oBAAoB,cAAc;AAClC,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA,iDAAiD;;AAEjD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA,+BAA+B,SAAS;AACxC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,+BAA+B,SAAS;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,UAAU,kBAAkB;AAC5B,WAAW,kBAAkB;AAC7B,cAAc;AACd,CAAC;AACD;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;;AAEA,QAAQ,mBAAmB;AAC3B;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;;;;AAKD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA,iCAAiC;AACjC;AACA;;AAEA,IAAI;AACJ;;AAEA,IAAI;AACJ;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,KAAK;AACL;AACA;;AAEA;AACA,WAAW,SAAS;AACpB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;;;AAGA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,sCAAsC;AACtC;AACA;AACA;;AAEA;;AAEA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,2CAA2C;AAC3C;;AAEA;AACA;AACA;AACA;AACA,UAAU,KAAK;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,CAAC;;AAED;;AAEA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,qCAAqC;;AAEpD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH,EAAE;;AAEF;AACA;AACA;AACA;;AAEA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb,KAAK;AACL;;AAEA,WAAW;AACX,GAAG;AACH;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;;AAEhB;AACA;AACA;AACA;AACA;AACA,gBAAgB;;AAEhB,gDAAgD;AAChD;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,mBAAmB;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA,IAAI;;AAEJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;AACT;;AAEA;;AAEA;AACA;;AAEA;AACA,iBAAiB;AACjB,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,2BAA2B;;AAE3B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kCAAkC;;AAElC;AACA,sBAAsB;AACtB,2BAA2B;;AAE3B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;AAGD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,IAAI;AACJ;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;;AAEA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA,EAAE;AACF;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;;AAER;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA,mDAAmD;AACnD;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,uBAAuB;AAClC,WAAW,yBAAyB;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA,CAAC;;;;;AAKD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,IAAI;AACJ,GAAG;AACH;;AAEA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;AACA;AACA;AACA,EAAE;AACF;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA,qDAAqD;AACrD;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB;;AAEnB;AACA;;AAEA;AACA;;AAEA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA,cAAc,sDAAsD;AACpE;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,IAAI;AACJ;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA,cAAc,mCAAmC;AACjD,eAAe,6DAA6D;AAC5E;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA,EAAE;AACF,CAAC;;;AAGD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,KAAK,IAA0C;AAC/C,CAAC,iCAAkB,EAAE,mCAAE;AACvB;AACA,EAAE;AAAA,oGAAE;AACJ;;;;;AAKA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA,CAAC;;;;;;;;;;;;;;AC3nUY;;AAEb;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AClBA,WAAW,mBAAO,CAAC,+CAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;;;ACLA,aAAa,mBAAO,CAAC,mDAAW;AAChC,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,qBAAqB,mBAAO,CAAC,mEAAmB;;AAEhD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;AC3BA;AACA;;AAEA;;;;;;;;;;;;;;ACHA,aAAa,mBAAO,CAAC,mDAAW;;AAEhC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;AC7CA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;ACrBA,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;;ACRA,eAAe,mBAAO,CAAC,qDAAY;AACnC,UAAU,mBAAO,CAAC,2CAAO;AACzB,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,OAAO,YAAY;AAC9B,WAAW,QAAQ;AACnB;AACA,WAAW,OAAO;AAClB;AACA,WAAW,QAAQ;AACnB;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,8CAA8C,kBAAkB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;AC7LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;AC5BA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;AC5BA,WAAW,mBAAO,CAAC,+CAAS;;AAE5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;ACtBA,eAAe,mBAAO,CAAC,qDAAY;AACnC,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;ACjEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,4CAAY;AAC7D;AACA;AACA,eAAe,KAA0B;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,0BAA0B;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,+BAA+B;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,+BAA+B;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oCAAoC;AACrC;AACA;AACA;AACA;AACA,gDAAgD,0CAA0C;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA;AACA;AACA,CAAC,wDAAwD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC,oCAAoC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,qBAAqB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,sBAAsB;AACrE;AACA;AACA;AACA;AACA;AACA,+CAA+C,sBAAsB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,2BAA2B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,uEAAuE;AAC5E,CAAC,oCAAoC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,SAAS;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,SAAS;AACxC;AACA;AACA;AACA;AACA,KAAK,0EAA0E;AAC/E,CAAC,oCAAoC;AACrC;AACA;AACA;AACA;AACA;AACA,gDAAgD,wBAAwB;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,4FAA4F;AACjG,CAAC,oCAAoC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,+BAA+B;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,kCAAkC,gBAAgB,EAAE,EAAE;AACpG;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,8CAA8C,oDAAoD;AAClG;AACA;AACA;AACA,yDAAyD,gBAAgB;AACzE,8CAA8C,uCAAuC;AACrF;AACA;AACA,8CAA8C,gCAAgC,gBAAgB,EAAE,KAAK;AACrG;AACA;AACA;AACA,KAAK,oEAAoE;AACzE,qDAAqD,yCAAyC;AAC9F,CAAC,oCAAoC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,0EAA0E;AAC/E,CAAC,oCAAoC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,YAAY;AACnC;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,CAAC,oCAAoC;AACrC;AACA;AACA;AACA;AACA,kDAAkD,6BAA6B;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,cAAc;AACtE;AACA;AACA;AACA,kDAAkD,cAAc;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC,oCAAoC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,sBAAsB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,uEAAuE;AACzH;AACA;AACA;AACA,kDAAkD,4CAA4C;AAC9F;AACA;AACA,kDAAkD,mBAAmB;AACrE;AACA;AACA,kDAAkD,+BAA+B;AACjF;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC,oCAAoC;AACrC;AACA;AACA;AACA;AACA,gDAAgD,2BAA2B;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,kCAAkC;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,mBAAmB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC,oCAAoC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,wCAAwC;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,wCAAwC;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,gCAAgC;AAC3D;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC,oCAAoC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,yBAAyB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC,oCAAoC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,4BAA4B;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,sBAAsB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,uCAAuC;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,kDAAkD;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC,oCAAoC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,mBAAmB;AAC/D;AACA;AACA;AACA;AACA;AACA,wEAAwE,yBAAyB;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,YAAY;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,mDAAmD;AAC5D,KAAK,iEAAiE;AACtE,CAAC,oCAAoC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iBAAiB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,qEAAqE;AAC9E,KAAK,iEAAiE;AACtE,CAAC,oCAAoC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,4DAA4D;AACrE,KAAK,iEAAiE;AACtE,CAAC,oCAAoC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,wBAAwB;AACvD;AACA;AACA;AACA,SAAS,wEAAwE;AACjF,KAAK,iEAAiE;AACtE,CAAC,oCAAoC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,0FAA0F;AACnG,KAAK,iEAAiE;AACtE,CAAC,oCAAoC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,wBAAwB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,iBAAiB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE,sBAAsB;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,6CAA6C;AACtD,KAAK,iEAAiE;AACtE,CAAC,oCAAoC;AACrC;AACA;AACA;AACA,iCAAiC,cAAc;AAC/C;AACA;AACA;AACA,qDAAqD,4DAA4D;AACjH;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,cAAc;AAC/C;AACA;AACA,qDAAqD,uDAAuD;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oCAAoC;;;;;;;;;;;;;;;ACjxCrC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEY;;AAEZ,aAAa,mBAAO,CAAC,oDAAW;AAChC,cAAc,mBAAO,CAAC,gDAAS;AAC/B,cAAc,mBAAO,CAAC,gDAAS;;AAE/B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,mDAAmD;AACxE;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,uCAAuC,SAAS;AAChD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;;AAEA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD,EAAE;AAClD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,eAAe;AACvC;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,wBAAwB,QAAQ;AAChC;AACA,qBAAqB,eAAe;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD,OAAO;AAC9D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD,OAAO;AAC9D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA,GAAG;AACH;AACA,eAAe,SAAS;AACxB;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,mBAAmB,SAAS;AAC5B;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,YAAY;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;;AC5vDA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,mBAAO,CAAC,iEAAc;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;AC9DA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;AACA,4BAA4B,UAAU;;;;;;;;;;;;;ACvLtC;AACA;;AAEA;AACA;AACA;;AAEA,uBAAuB;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,iBAAiB;AACtC;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0CAA0C,sBAAsB,EAAE;AAClE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA;;AAEA,KAAK;AACL;AACA;;AAEA,KAAK;AACL;AACA;;AAEA,KAAK;AACL;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,CAAC;;;;;;;;;;;;;;ACzLD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,cAAc;AAC7B,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,KAAK;AACpB,eAAe,OAAO;AACtB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,KAAK;AACpB,eAAe,OAAO;AACtB,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,eAAe,KAAK;AACpB,eAAe,OAAO;AACtB,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,eAAe,KAAK;AACpB,iBAAiB,KAAK;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,YAAY;AAC3B,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA,MAAM,IAA4D;AAClE;AACA,sBAAsB;AACtB,GAAG,MAAM,EAGN;;AAEH,CAAC;;;;;;;;;;;;;AChbD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,0FAA0F,KAAK;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA,eAAe,8BAA8B;AAC7C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,0CAA0C,kBAAkB;AAC5D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;;AAGA;;AAEA;;AAEA;AACA;AACA,eAAe,SAAS;AACxB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,iBAAiB;AACpC;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA,uBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA,2BAA2B,kBAAkB;AAC7C;AACA;;AAEA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA,CAAC;;;;;;;;;;;;;;ACzTD;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;;AAE5C;;;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA","file":"js/main.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"main\": 0\n \t};\n\n\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"\" + ({\"js/addressBook\":\"js/addressBook\",\"js/appointments\":\"js/appointments\",\"js/cart\":\"js/cart\",\"js/checkoutRegistration\":\"js/checkoutRegistration\",\"js/checkout~js/hubbox.val\":\"js/checkout~js/hubbox.val\",\"js/checkout\":\"js/checkout\",\"js/hubbox.val\":\"js/hubbox.val\",\"js/contactUs\":\"js/contactUs\",\"js/globaleAnalytics\":\"js/globaleAnalytics\",\"js/login\":\"js/login\",\"js/newsletter\":\"js/newsletter\",\"js/orderHistory\":\"js/orderHistory\",\"js/paymentInstruments\":\"js/paymentInstruments\",\"js/paypalCreditFinancingOptions.val\":\"js/paypalCreditFinancingOptions.val\",\"js/paypalMFRA.val\":\"js/paypalMFRA.val\",\"js/paypalUtils.val\":\"js/paypalUtils.val\",\"js/productDetail~js/productTile~js/search\":\"js/productDetail~js/productTile~js/search\",\"js/productDetail\":\"js/productDetail\",\"js/productTile\":\"js/productTile\",\"js/search\":\"js/search\",\"js/profile\":\"js/profile\",\"js/storeLocator\":\"js/storeLocator\",\"js/wishlist\":\"js/wishlist\"}[chunkId]||chunkId) + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","/**\n * Read the application configuration directly.\n */\nlet { app } = window.beesfra || {};\nif (!app) {\n app = {};\n}\nconst appConfig = app;\nexport default appConfig;\n","export default function (fn, time) {\n let timeout;\n return function (...args) {\n clearTimeout(timeout);\n timeout = setTimeout(() => fn.apply(this, args), time);\n };\n}\n","'use strict';\n\n/**\n * Display error messages and highlight form fields with errors.\n * @param {string} parentSelector - the form which contains the fields\n * @param {Object} fieldErrors - the fields with errors\n */\nfunction loadFormErrors(parentSelector, fieldErrors) { // eslint-disable-line\n // Display error messages and highlight form fields with errors.\n $.each(fieldErrors, function (attr) {\n $('*[name=' + attr + ']', parentSelector)\n .addClass('is-invalid')\n .siblings('.invalid-feedback')\n .html(fieldErrors[attr]);\n });\n}\n\n/**\n * Clear the form errors.\n * @param {string} parentSelector - the parent form selector.\n */\nfunction clearPreviousErrors(parentSelector) {\n $(parentSelector).find('.form-control.is-invalid').removeClass('is-invalid');\n $('.error-message').hide();\n}\n\nmodule.exports = {\n loadFormErrors: loadFormErrors,\n clearPreviousErrors: clearPreviousErrors\n};\n","'use strict';\n\n/**\n * Validate whole form. Requires `this` to be set to form object\n * @param {jQuery.event} event - Event to be canceled if form is invalid.\n * @returns {boolean} - Flag to indicate if form is valid\n */\nfunction validateForm(event) {\n var valid = true;\n if (this.checkValidity && !this.checkValidity()) {\n // safari\n valid = false;\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n }\n $(this).find('input, select, textarea').each(function () {\n if (!this.validity.valid) {\n $(this).trigger('invalid', this.validity);\n }\n });\n }\n return valid;\n}\n\n/**\n * Remove all validation. Should be called every time before revalidating form\n * @param {element} form - Form to be cleared\n * @returns {void}\n */\nfunction clearForm(form) {\n $(form).find('.form-control.is-invalid').removeClass('is-invalid');\n}\n\nmodule.exports = {\n invalid: function () {\n $('form input, form select, form textarea').on('invalid', function (e) {\n e.preventDefault();\n this.setCustomValidity('');\n if (!this.validity.valid) {\n var validationMessage = this.validationMessage;\n $(this).addClass('is-invalid');\n if (this.validity.patternMismatch && $(this).data('pattern-mismatch')) {\n validationMessage = $(this).data('pattern-mismatch');\n }\n if ((this.validity.rangeOverflow || this.validity.rangeUnderflow)\n && $(this).data('range-error')) {\n validationMessage = $(this).data('range-error');\n }\n if ((this.validity.tooLong || this.validity.tooShort)\n && $(this).data('range-error')) {\n validationMessage = $(this).data('range-error');\n }\n if (this.validity.valueMissing && $(this).data('missing-error')) {\n validationMessage = $(this).data('missing-error');\n }\n $(this).parents('.form-group').find('.invalid-feedback')\n .text(validationMessage);\n }\n });\n },\n\n submit: function () {\n $('form').on('submit', function (e) {\n return validateForm.call(this, e);\n });\n },\n\n buttonClick: function () {\n $('form button[type=\"submit\"], form input[type=\"submit\"]').on('click', function () {\n // clear all errors when trying to submit the form\n clearForm($(this).parents('form'));\n });\n },\n\n functions: {\n validateForm: function (form, event) {\n validateForm.call($(form), event || null);\n },\n clearForm: clearForm\n }\n};\n","'use strict';\nmodule.exports = function () {\n var sizes = ['xs', 'sm', 'md', 'lg', 'xl'];\n\n sizes.forEach(function (size) {\n var selector = '.collapsible-' + size + ' .title, .collapsible-' + size + '>.card-header';\n $('body').on('click', selector, function (e) {\n e.preventDefault();\n $(this).parents('.collapsible-' + size).toggleClass('active');\n });\n });\n};\n","'use strict';\n\nvar keyboardAccessibility = require('./keyboardAccessibility');\n\nmodule.exports = function () {\n $('.country-selector a').click(function (e) {\n e.preventDefault();\n var action = $('.page').data('action');\n var localeCode = $(this).data('locale');\n var localeCurrencyCode = $(this).data('currencycode');\n var queryString = $('.page').data('querystring');\n var url = $('.country-selector').data('url');\n\n $.ajax({\n url: url,\n type: 'get',\n dataType: 'json',\n data: {\n code: localeCode,\n queryString: queryString,\n CurrencyCode: localeCurrencyCode,\n action: action\n },\n success: function (response) {\n $.spinner().stop();\n if (response && response.redirectUrl) {\n window.location.href = response.redirectUrl;\n }\n },\n error: function () {\n $.spinner().stop();\n }\n });\n });\n\n keyboardAccessibility('.navbar-header .country-selector',\n {\n 40: function ($countryOptions) { // down\n if ($(this).is(':focus')) {\n $countryOptions.first().focus();\n } else {\n $(':focus').next().focus();\n }\n },\n 38: function ($countryOptions) { // up\n if ($countryOptions.first().is(':focus') || $(this).is(':focus')) {\n $(this).focus();\n $(this).removeClass('show');\n } else {\n $(':focus').prev().focus();\n }\n },\n 27: function () { // escape\n $(this).focus();\n $(this).removeClass('show').children('.dropdown-menu').removeClass('show');\n },\n 9: function () { // tab\n $(this).removeClass('show').children('.dropdown-menu').removeClass('show');\n }\n },\n function () {\n if (!($(this).hasClass('show'))) {\n $(this).addClass('show');\n }\n return $(this).find('.dropdown-country-selector').children('a');\n }\n );\n\n $('.navbar-header .country-selector').on('focusin', function () {\n $(this).addClass('show').children('.dropdown-menu').addClass('show');\n });\n};\n","'use strict';\n\nmodule.exports = function () {\n $('.back-to-top').click(function () {\n $('html, body').animate({\n scrollTop: 0\n }, 500);\n });\n};\n","'use strict';\n\nmodule.exports = function (selector, keyFunctions, preFunction) {\n $(selector).on('keydown', function (e) {\n var key = e.which;\n var supportedKeyCodes = [37, 38, 39, 40, 27];\n if (supportedKeyCodes.indexOf(key) >= 0) {\n e.preventDefault();\n }\n var returnedScope = preFunction.call(this);\n if (keyFunctions[key]) {\n keyFunctions[key].call(this, returnedScope);\n }\n });\n};\n","'use strict';\n\nvar debounce = require('lodash/debounce');\nvar endpoint = $('.suggestions-wrapper').data('url');\nvar minChars = 3;\n\n\n/**\n * Retrieves Suggestions element relative to scope\n *\n * @param {Object} scope - Search input field DOM element\n * @return {JQuery} - .suggestions-wrapper element\n */\nfunction getSuggestionsWrapper(scope) {\n return $(scope).siblings('.suggestions-wrapper');\n}\n\n/**\n * Determines whether DOM element is inside the .search-mobile class\n *\n * @param {Object} scope - DOM element, usually the input.search-field element\n * @return {boolean} - Whether DOM element is inside div.search-mobile\n */\nfunction isMobileSearch(scope) {\n return !!$(scope).closest('.search-mobile').length;\n}\n\n/**\n * Remove modal classes needed for mobile suggestions\n *\n */\nfunction clearModals() {\n $('body').removeClass('modal-open');\n $('.suggestions').removeClass('modal');\n}\n\n/**\n * Apply modal classes needed for mobile suggestions\n *\n * @param {Object} scope - Search input field DOM element\n */\nfunction applyModals(scope) {\n if (isMobileSearch(scope)) {\n $('body').addClass('modal-open');\n getSuggestionsWrapper(scope).find('.suggestions').addClass('modal');\n }\n}\n\n/**\n * Tear down Suggestions panel\n */\nfunction tearDownSuggestions() {\n $('input.search-field').val('');\n clearModals();\n $('.search-mobile .suggestions').unbind('scroll');\n $('.suggestions-wrapper').empty();\n}\n\n/**\n * Toggle search field icon from search to close and vice-versa\n *\n * @param {string} action - Action to toggle to\n */\nfunction toggleSuggestionsIcon(action) {\n var mobileSearchIcon = '.search-mobile span.';\n var iconSearch = 'fa-search';\n var iconSearchClose = 'fa-close';\n\n if (action === 'close') {\n $(mobileSearchIcon + iconSearch).removeClass(iconSearch).addClass(iconSearchClose);\n } else {\n $(mobileSearchIcon + iconSearchClose).removeClass(iconSearchClose).addClass(iconSearch);\n }\n}\n\n/**\n * Determines whether the \"More Content Below\" icon should be displayed\n *\n * @param {Object} scope - DOM element, usually the input.search-field element\n */\nfunction handleMoreContentBelowIcon(scope) {\n if (($(scope).scrollTop() + $(scope).innerHeight()) >= $(scope)[0].scrollHeight) {\n $('.more-below').fadeOut();\n } else {\n $('.more-below').fadeIn();\n }\n}\n\n/**\n * Positions Suggestions panel on page\n *\n * @param {Object} scope - DOM element, usually the input.search-field element\n */\nfunction positionSuggestions(scope) {\n var outerHeight;\n var $scope;\n var $suggestions;\n var top;\n\n if (isMobileSearch(scope)) {\n $scope = $(scope);\n top = $scope.offset().top;\n outerHeight = $scope.outerHeight();\n $suggestions = getSuggestionsWrapper(scope).find('.suggestions');\n $suggestions.css('top', top + outerHeight);\n\n handleMoreContentBelowIcon(scope);\n\n // Unfortunately, we have to bind this dynamically, as the live scroll event was not\n // properly detecting dynamic suggestions element's scroll event\n $suggestions.scroll(function () {\n handleMoreContentBelowIcon(this);\n });\n }\n}\n\n/**\n * Process Ajax response for SearchServices-GetSuggestions\n *\n * @param {Object|string} response - Empty object literal if null response or string with rendered\n * suggestions template contents\n */\nfunction processResponse(response) {\n var $suggestionsWrapper = getSuggestionsWrapper(this).empty();\n\n $.spinner().stop();\n\n if (!(typeof (response) === 'object')) {\n $suggestionsWrapper.append(response).show();\n positionSuggestions(this);\n\n if (isMobileSearch(this)) {\n toggleSuggestionsIcon('close');\n applyModals(this);\n }\n } else {\n $suggestionsWrapper.hide();\n }\n}\n\n/**\n * Retrieve suggestions\n *\n * @param {Object} scope - Search field DOM element\n */\nfunction getSuggestions(scope) {\n if ($(scope).val().length >= minChars) {\n $.spinner().start();\n $.ajax({\n context: scope,\n url: endpoint + encodeURIComponent($(scope).val()),\n method: 'GET',\n success: processResponse,\n error: function () { $.spinner().stop(); }\n });\n } else {\n toggleSuggestionsIcon('search');\n clearModals();\n getSuggestionsWrapper(scope).empty();\n }\n}\n\nmodule.exports = function () {\n $('input.search-field').each(function () {\n /**\n * Use debounce to avoid making an Ajax call on every single key press by waiting a few\n * hundred milliseconds before making the request. Without debounce, the user sees the\n * browser blink with every key press.\n */\n var debounceSuggestions = debounce(getSuggestions, 300);\n\n $(this).on('keyup click', function (e) {\n debounceSuggestions(this, e);\n });\n });\n\n $('body').on('click', function (e) {\n if (!$('.suggestions').has(e.target).length && !$(e.target).hasClass('search-field')) {\n $('.suggestions').hide();\n }\n });\n\n $('body').on('click touchend', '.search-mobile span.fa-close', function () {\n $('.suggestions').hide();\n toggleSuggestionsIcon('search');\n tearDownSuggestions();\n });\n};\n","'use strict';\n\n/**\n * Show a spinner inside a given element\n * @param {element} $target - Element to block by the veil and spinner.\n * Pass body to block the whole page.\n */\nfunction addSpinner($target) {\n var $veil = $('
');\n $veil.append('
');\n if ($target.get(0).tagName === 'IMG') {\n $target.after($veil);\n $veil.css({ width: $target.width(), height: $target.height() });\n if ($target.parent().css('position') === 'static') {\n $target.parent().css('position', 'relative');\n }\n } else {\n $target.append($veil);\n if ($target.css('position') === 'static') {\n $target.parent().css('position', 'relative');\n $target.parent().addClass('veiled');\n }\n if ($target.get(0).tagName === 'BODY') {\n $veil.find('.spinner').css('position', 'fixed');\n }\n }\n $veil.click(function (e) {\n e.stopPropagation();\n });\n}\n\n/**\n * Remove existing spinner\n * @param {element} $veil - jQuery pointer to the veil element\n */\nfunction removeSpinner($veil) {\n if ($veil.parent().hasClass('veiled')) {\n $veil.parent().css('position', '');\n $veil.parent().removeClass('veiled');\n }\n $veil.off('click');\n $veil.remove();\n}\n\n// element level spinner:\n$.fn.spinner = function () {\n var $element = $(this);\n var Fn = function () {\n this.start = function () {\n if ($element.length) {\n addSpinner($element);\n }\n };\n this.stop = function () {\n if ($element.length) {\n var $veil = $('.veil');\n removeSpinner($veil);\n }\n };\n };\n return new Fn();\n};\n\n// page-level spinner:\n$.spinner = function () {\n var Fn = function () {\n this.start = function () {\n addSpinner($('body'));\n };\n this.stop = function () {\n removeSpinner($('.veil'));\n };\n };\n return new Fn();\n};\n","// window.jQuery = window.$ = require('jquery');\nvar processInclude = require('./util');\n\n$(document).ready(function () {\n processInclude(require('./components/menu'));\n processInclude(require('./components/cookie'));\n processInclude(require('./components/consentTracking'));\n processInclude(require('./components/footer'));\n processInclude(require('./components/miniCart'));\n processInclude(require('./components/collapsibleItem'));\n processInclude(require('./components/search'));\n processInclude(require('./components/clientSideValidation'));\n processInclude(require('./components/countrySelector'));\n});\n\nrequire('./thirdParty/bootstrap');\nrequire('./components/spinner');\n","require('bootstrap/js/src/util.js');\nrequire('bootstrap/js/src/alert.js');\n// require('bootstrap/js/src/button.js');\nrequire('bootstrap/js/src/carousel.js');\nrequire('bootstrap/js/src/collapse.js');\n// require('bootstrap/js/src/dropdown.js');\nrequire('bootstrap/js/src/modal.js');\nrequire('bootstrap/js/src/scrollspy.js');\nrequire('bootstrap/js/src/tab.js');\n// require('bootstrap/js/src/tooltip.js');\n// require('bootstrap/js/src/popover.js');\n","import $ from 'jquery';\nimport processInclude from '../util';\nimport scrollTo from '../util/scrollTo';\nimport { updateComponent } from '../util/domutils';\nimport clientSideValidation from '../components/clientSideValidation';\nimport { loadFormErrors } from './formErrors';\n\nexport const SELECTORS = {\n HEADER: '.checkout-header',\n CONTENT: '.checkout',\n STEP_FORM: '.checkout-step__form',\n PROGRESS_STEP: '.checkout__progress-step-number',\n SHIPPING_FORM: '.checkout-shipping__form',\n BILLING_FORM: '.checkout-billing__form',\n SUMMARY_FORM: '.checkout-summary__form',\n STEP_CONTENT: '.page',\n SHIPPING_TYPE: {\n TYPE: '.checkout-shipping__type',\n CURRENT_TYPE: '.checkout-shipping__type.active',\n },\n SAVED_ADDRESS: {\n SHIPMENT_SELECTOR: '.saved-addresses',\n SAVED_ADDRESS_CONTAINER: '.saved-addresses__pane',\n SAVED_ADDRESS_INPUT: '.saved-addresses__address-input',\n },\n SHIPPING_ADDRESS: {\n FIELDS: '.checkout-shipping__address',\n NEW_FIELDS: '.saved-addresses__new-fields',\n SAVE_TOGGLE: '.checkout-shipping__shipment__save-address',\n get LINE1() { return `${this.FIELDS} #addressOne`; },\n get STATE() { return `${this.FIELDS} #stateCode`; },\n get CITY() { return `${this.FIELDS} #city`; },\n get POSTAL_CODE() { return `${this.FIELDS} #postalCode`; },\n },\n SHIPPING_METHODS: {\n CONTAINER: '.checkout-shipping__method-list',\n METHOD: '.checkout-shipping__method',\n METHOD_INPUT: '.checkout-shipping__method-input',\n },\n GIFT: {\n CONTAINER: '.checkout-shipping__gift',\n INPUT: '.checkout-shipping__gift-input',\n MESSAGE_INPUT: '.checkout-shipping__gift-message',\n MESSAGE_TEXT_AREA: '#giftMessage',\n SYMBOLS_LEFT: '.checkout-shipping__symbols-left-count',\n GIFT_PACKAGING_CHECKBOX: '.checkout-shipping__gift-content',\n },\n BILLING_ADDRESS: {\n CARD: '.checkout-billing__address-card',\n SAME_AS_SHIPPING: '.checkout-billing__copy-shipping-input',\n },\n PAYMENT_METHODS: {\n GIFT_CARD_FORM: '.checkout-billing__gift-card-form',\n CREDIT_CARD_FORM: '.checkout-billing__credit-card-form',\n INPUT: '.checkout-billing__payment-input',\n CONTENT: '.checkout-billing__payment-content',\n CREDIT_CARD: {\n DATE: '#expirationDate',\n MONTH: '#expirationMonth',\n YEAR: '#expirationYear',\n NEW_CVV: '.checkout-billing__cvv--new',\n SAVED_CVV: '.checkout-billing__cvv--saved',\n CVV_TOOLTIP: '.checkout-billing__cvv__tooltip-wrapper',\n NEW_LABEL: '.checkout-billing__payment-selector--CREDIT_CARD',\n SAVED_LABEL: '.checkout-billing__payment-selector--SAVED_CREDIT_CARD',\n SAVED_FORM: '.checkout-billing__payment-form--SAVED_CREDIT_CARD',\n SAVED_DROPDOWN_CONTAINER: '.saved-cards__container',\n SAVED_DROPDOWN: '#savedCards',\n NUMBER_GROUP: '.checkout-billing__credit-card-number',\n DATE_GROUP: '.checkout-billing__credit-card-expiry',\n NEW_OPTION: '.checkout-billing__payment--CREDIT_CARD',\n },\n APPLE_PAY: {\n OPTION: '.checkout-billing__payment--DW_APPLE_PAY',\n },\n },\n SUBMIT: '.checkout-billing__submit-btn',\n ERRORS: {\n CONTAINER: '.checkout-step__errors',\n CONTENT: '.error-summary',\n },\n SUMMARY: '.summary',\n};\n\nexport const EVENTS = {\n SAVED_ADDRESS: {\n ADDRESS_SELECTED: 'savedAddress:selected',\n },\n BILLING: {\n USE_SHIPPING_AS_BILLING_TOGGLED: 'useShippingAsBilling:toggle',\n },\n ADYENCONTENT: 'adyen3dsModalContent',\n UPDATEVIEW: 'checkout:updatedview',\n TRIGGER_SHIPPING_VALIDATION: 'checkout:shippingValidate',\n};\n\nconst showComponent = (selector) => {\n const component = document.querySelector(selector);\n\n if (component) {\n component.classList.remove('d-none');\n scrollTo(component);\n }\n};\n\nconst hideComponent = (selector) => {\n const component = document.querySelector(selector);\n\n if (component) {\n component.classList.add('d-none');\n }\n};\n\nconst appendEmptyStage = (selector, content) => {\n const component = document.querySelector(selector);\n\n if (component) {\n if (content && content.length) {\n const container = document.createElement('div');\n container.innerHTML = content;\n component.appendChild(container);\n }\n }\n};\n\nconst handleCreditCardExpiryErrors = (fieldErrors) => {\n const modifiedErrors = Object.assign(fieldErrors);\n\n const dateField = document.querySelector(SELECTORS.PAYMENT_METHODS.CREDIT_CARD.DATE);\n const monthField = document.querySelector(SELECTORS.PAYMENT_METHODS.CREDIT_CARD.MONTH);\n const yearField = document.querySelector(SELECTORS.PAYMENT_METHODS.CREDIT_CARD.YEAR);\n\n if (dateField && monthField && yearField) {\n const expiryErrors = Object.keys(modifiedErrors)\n .filter(name => name === monthField.name || name === yearField.name)\n .map(name => modifiedErrors[name]);\n\n if (expiryErrors.length) {\n modifiedErrors[dateField.name] = expiryErrors.join(' ');\n }\n }\n\n return modifiedErrors;\n};\n\nconst processFieldErrors = fieldErrors => handleCreditCardExpiryErrors(fieldErrors);\n\nconst redirectTo = (redirectUrl) => {\n const stepForm = document.querySelector(SELECTORS.STEP_FORM);\n\n if (stepForm) {\n $(stepForm).spinner().start();\n }\n\n // Executing the redirect in the main thread can cause IE to hang when leaving\n // the site, e.g. to get to a payer auth page\n setTimeout(() => {\n window.location = redirectUrl;\n });\n};\n\nexport const clientSideValidationUpdate = async () => {\n const shippingForm = document.querySelector(SELECTORS.SHIPPING_FORM);\n clientSideValidation.functions.clearForm(shippingForm, true);\n};\n\nexport const reinitClientSideValidation = () => {\n processInclude(clientSideValidation);\n};\n\nexport const isRedirectResponse = (content) => {\n if (content) {\n const errorUrl = content.error && content.redirectUrl;\n const paypalUrl = content.paypalProcessorResult && content.paypalProcessorResult.success && content.paypalBaseUrl;\n\n return content.continueUrl || paypalUrl || errorUrl;\n }\n\n return false;\n};\n\n/**\n * Handles backend responses that contain rendered content for checkout components\n *\n * @param {Object} content Content returned by an AJAX request\n */\nexport const updateView = async (content) => {\n if (content.continueUrl) {\n redirectTo(content.continueUrl);\n return;\n }\n\n if (content.paypalProcessorResult && content.paypalProcessorResult.success && content.paypalBaseUrl) {\n redirectTo(content.paypalBaseUrl + content.paypalProcessorResult.paypalToken);\n return;\n }\n\n if (content.error) {\n if (content.redirectUrl) {\n redirectTo(content.redirectUrl);\n return;\n }\n\n if (content.errorContent) {\n await updateComponent(SELECTORS.ERRORS.CONTENT, content.errorContent);\n showComponent(SELECTORS.ERRORS.CONTAINER);\n }\n\n if (content.fieldErrors) {\n if (content.fieldErrors.length) {\n content.fieldErrors.forEach((error) => {\n if (Object.keys(error).length) {\n loadFormErrors(document, processFieldErrors(error));\n }\n });\n }\n }\n } else {\n await updateComponent(SELECTORS.ERRORS.CONTENT, '');\n hideComponent(SELECTORS.ERRORS.CONTAINER);\n }\n\n if (content.addressSelectorContent) {\n await updateComponent(SELECTORS.SAVED_ADDRESS.SHIPMENT_SELECTOR, content.addressSelectorContent);\n }\n\n if (content.shippingMethodsContent) {\n await updateComponent(SELECTORS.SHIPPING_METHODS.CONTAINER, content.shippingMethodsContent);\n reinitClientSideValidation(); // Required for HubBox\n }\n\n if (content.giftContent) {\n await updateComponent(SELECTORS.GIFT.CONTAINER, content.giftContent);\n }\n\n if (content.billingAddressContent) {\n await updateComponent(SELECTORS.BILLING_ADDRESS.CARD, content.billingAddressContent);\n reinitClientSideValidation();\n }\n\n if (content.summaryContent) {\n await updateComponent(SELECTORS.SUMMARY, content.summaryContent);\n }\n\n if (content.giftCardFormContent) {\n await updateComponent(SELECTORS.PAYMENT_METHODS.GIFT_CARD_FORM, content.giftCardFormContent);\n }\n\n if (content.skipStepContent) {\n appendEmptyStage(SELECTORS.CONTENT, content.skipStepContent);\n } else if (content.stepContent) {\n await updateComponent(SELECTORS.CONTENT, content.stepContent);\n showComponent(SELECTORS.CONTENT);\n reinitClientSideValidation();\n }\n\n if (content.adyenAction) {\n document.dispatchEvent(new CustomEvent(EVENTS.ADYENCONTENT, {\n detail: {\n adyenAction: content.adyenAction,\n orderToken: content.orderToken,\n },\n }));\n }\n\n document.dispatchEvent(new CustomEvent(EVENTS.UPDATEVIEW, {\n detail: {\n stage: content.currentStage,\n action: content.action,\n },\n }));\n};\n\nexport const attachCustomValidationEvents = () => {\n document.addEventListener(EVENTS.TRIGGER_SHIPPING_VALIDATION, () => {\n clientSideValidation.functions.validateForm(SELECTORS.SHIPPING_FORM);\n });\n};\n","import base from '~base';\n\nimport $ from 'jquery';\nimport scrollTo from '../util/scrollTo';\nimport { find, visible } from '../util/domutils';\n\nconst SELECTORS = {\n COLLAPSE: '.collapse',\n TABS: '[data-toggle=\"tab\"]',\n};\n\nconst baseLoadFormErrors = base.loadFormErrors;\n\nexport const loadFormErrors = (parentSelector, fieldErrors) => {\n baseLoadFormErrors.call(null, parentSelector, fieldErrors);\n\n const errorFields = find('.is-invalid:not([type=\"hidden\"])', parentSelector);\n\n if (errorFields && errorFields.length > 0) {\n if (!visible(errorFields[0])) {\n const collapse = errorFields[0].closest(SELECTORS.COLLAPSE);\n\n if (collapse) {\n $(collapse).on('shown.bs.collapse', () => {\n scrollTo(errorFields[0]);\n errorFields[0].focus();\n });\n\n $(collapse).collapse('show');\n }\n } else {\n scrollTo(errorFields[0]);\n errorFields[0].focus();\n }\n }\n};\n\nexport const { clearPreviousErrors } = base;\n","const CALLBACKS = [];\n\nconst handleAjaxResponse = (url, responseContent) => {\n CALLBACKS.forEach((cb) => {\n if (typeof cb === 'function') {\n cb(responseContent);\n }\n\n if (\n typeof cb === 'object'\n && typeof cb.func === 'function'\n && (!cb.urlFilter || url.indexOf(cb.urlFilter) >= 0)\n ) {\n cb.func(responseContent);\n }\n });\n};\n\n/**\n * Extend the AJAX mechanisms that get used to allow for handling logic after they;ve been completed\n * (i.e. jQuery's ajaxComplete event, but using vanilla JS is sooo much better for reasons)\n */\nexport const installAjaxHandlers = () => {\n const originals = {\n open: XMLHttpRequest.prototype.open,\n fetch: window.Response && window.Response.prototype && {\n blob: window.Response.prototype.blob,\n json: window.Response.prototype.json,\n text: window.Response.prototype.text,\n },\n };\n\n // Attach to all calls to the fetch response's handlers\n if (originals.fetch) {\n Object.keys(originals.fetch).forEach((originalName) => {\n const original = originals.fetch[originalName];\n\n if (original) {\n window.Response.prototype[originalName] = function (...args) {\n return original.apply(this, args).then((responseContent) => {\n handleAjaxResponse(this.url, responseContent);\n return responseContent;\n });\n };\n }\n });\n }\n\n // Attach to all calls using XMLHttpRequest (which would include jQuery calls in the base)\n if (originals.open) {\n XMLHttpRequest.prototype.open = function (...args) {\n this.addEventListener('readystatechange', function () {\n if (this.readyState === XMLHttpRequest.DONE) {\n handleAjaxResponse(this.responseURL, this.responseText);\n }\n }, false);\n\n originals.open.apply(this, args);\n };\n }\n};\n\nexport const functions = {\n // Attaches a callback which will be executed when an AJAX request completes.\n // Either a function or an object can be provided:\n // - Functions get called after each AJAX request completes\n // and receive response content as a parameter (be it text or a JSON object)\n // - Objects can contain a urlFilter and a func field; if the former is a string,\n // that is contained in an AJAX request's url, then the latter is treated as\n // a function and is used as a callback\n onComplete(cb) {\n if (CALLBACKS.indexOf(cb) < 0) {\n CALLBACKS.push(cb);\n }\n },\n};\n","import $ from 'jquery';\nimport debounce from '../util/debounce';\n\nconst CONSTANTS = {\n TRIGGER_OFFSET: 800,\n SCROLL_INTERVAL: 150,\n};\n\nconst SELECTORS = {\n BACK_TO_TOP: '.back-to-top',\n};\n\nconst EVENTS = {\n BACK_SHOW: 'backtotop:show',\n BACK_HIDE: 'backtotop:hide',\n};\n\nexport const addBackToTopHandler = (bttSelector) => {\n const backToTopSelector = bttSelector || SELECTORS.BACK_TO_TOP;\n const backToTopLinks = document.querySelectorAll(backToTopSelector);\n\n if (backToTopLinks) {\n backToTopLinks.forEach((backToTopLink) => {\n const holder = (backToTopLink.dataset.containerSelector === undefined)\n ? window\n : document.querySelector(backToTopLink.dataset.containerSelector);\n\n const scrollHandler = debounce(() => {\n const triggerOffset = backToTopLink.dataset.triggerOffset || CONSTANTS.TRIGGER_OFFSET;\n const y = holder.pageYOffset || holder.scrollTop;\n\n if (y >= triggerOffset) {\n backToTopLink.classList.add('active');\n } else {\n backToTopLink.classList.remove('active');\n }\n }, CONSTANTS.SCROLL_INTERVAL);\n\n holder.addEventListener('scroll', scrollHandler);\n\n backToTopLink.addEventListener('click', () => {\n const container = (backToTopLink.dataset.containerSelector === undefined)\n ? $('html, body')\n : $(backToTopLink.dataset.containerSelector);\n container.animate({\n scrollTop: 0,\n }, 500);\n });\n document.addEventListener(EVENTS.BACK_SHOW, () => {\n backToTopLink.classList.remove('d-none');\n });\n document.addEventListener(EVENTS.BACK_HIDE, () => {\n backToTopLink.classList.add('d-none');\n });\n });\n }\n};\n\n/**\n * show and use back to top.\n */\nexport default () => {\n addBackToTopHandler();\n};\n","/* eslint-disable jquery/no-attr */\nimport $ from 'jquery';\nimport './intlTelInput';\nimport { compress, decompress } from 'lzutf8-light';\nimport scrollTo from '../util/scrollTo';\nimport { onEvent, refreshAttributes } from '../util/domutils'; // eslint-disable-line import/named\nimport { loadContent, CONTENT_TYPES } from '../util/fetchutils';\nimport { removeParamsFromUrl } from '../util/urlutils';\n\nimport { EVENTS as HEADER_EVENTS } from './header';\n\nconst CONTENT_CACHE = {};\n\nlet STATE_CACHE = null;\n\nexport const NAV_EVENTS = {\n NAV_BACK: 'nav:back',\n NAV_CONTENT: 'nav:content',\n};\n\nconst getUpdateUrl = (triggerUrl, useFullUrl = false, paramsBlacklist = []) => {\n let target = triggerUrl || window.location.href;\n\n if (!useFullUrl) {\n const loc = window.location;\n const base = `${loc.protocol}//${loc.hostname}${loc.pathname}`;\n const triggerUrlParts = target.split('?');\n\n if (triggerUrlParts.length > 1) {\n target = `${base}?${triggerUrlParts[1]}`;\n }\n }\n\n return removeParamsFromUrl(target, ['navAjax', ...paramsBlacklist]);\n};\n\n/**\n * Pushes a history state on the stack\n *\n * @param {string} targetSelector Selector for the element updated during the current step\n * @param {string} content The content corresponding to the current step\n * @param {boolean} [scrollTarget] If provided, the window will be scrolled to that element on restore\n * @param {boolean} [useFullUrl] If truthy, the passed in URL will replace the location, instead of just the QS\n * @param {string} [url=window.location.href] The update URL used during the current step\n */\nconst addHistoryStep = (historyMethod, targetSelector, content, scrollTarget, paramsBlacklist, useFullUrl, url) => {\n if (targetSelector && content) {\n const compressedContent = compress(content);\n const updateUrl = getUpdateUrl(url, useFullUrl, paramsBlacklist);\n const stateObj = {\n targetSelector, content: updateUrl, scrollTarget,\n };\n\n CONTENT_CACHE[updateUrl] = compressedContent;\n window.history[historyMethod](stateObj, document.title, updateUrl);\n STATE_CACHE = stateObj;\n }\n};\n\nconst pushHistoryStep = (...args) => {\n addHistoryStep('pushState', ...args);\n};\n\nconst replaceHistoryStep = (...args) => {\n addHistoryStep('replaceState', ...args);\n};\n\n/**\n * Attaches a popstate event listener, which handles back navigation\n */\nconst initHistoryHandling = () => {\n window.onpopstate = (e) => {\n if (e.state && e.state.targetSelector && e.state.content) {\n const target = document.querySelector(e.state.targetSelector);\n\n if (target) {\n const content = CONTENT_CACHE[e.state.content];\n\n if (content) {\n target.innerHTML = decompress(content);\n delete CONTENT_CACHE[e.state.content];\n }\n }\n\n if (e.state.scrollTarget) {\n scrollTo(e.state.scrollTarget);\n }\n\n document.dispatchEvent(new CustomEvent(NAV_EVENTS.NAV_BACK));\n }\n };\n};\n\nconst populateFormValuesInCurrentStep = (paramsBlacklist) => {\n const stateObj = window.history.state || STATE_CACHE;\n const { targetSelector, scrollTarget } = stateObj;\n\n if (targetSelector) {\n const target = document.querySelector(targetSelector);\n\n if (target) {\n refreshAttributes(targetSelector);\n replaceHistoryStep(targetSelector, target.innerHTML, scrollTarget, paramsBlacklist);\n }\n }\n};\n\n/**\n * Executes a nav update over AJAX\n *\n * @param {Element} trigger The element that triggered the update\n * @param {string} targetSelector Selector for the update target\n * @param {string} [contentKey] If provided, and the response is JSON, this field will be returned from it\n * @param {boolean} [scrollTarget] If provided, the window will be scrolled to that element after the update\n * @param {boolean} [append=false] If true, the fetched content will be appended to the target\n * @param {RenderCallback} [renderer] If provided will be called instead of the standard renderer\n * @param {UpdateCallback} [callback] If provided will be called after the target is updated\n */\nconst handleUpdate = async (trigger, config) => {\n const {\n targetSelector,\n contentKey,\n scrollTarget,\n ignoreScroll,\n paramsBlacklist,\n append = false,\n renderer,\n callback,\n urlInputSelector,\n } = config;\n\n const { url, type, content } = await loadContent(trigger, null, { navAjax: true });\n\n let responseContent;\n if (type === CONTENT_TYPES.JSON && content) {\n if (contentKey) {\n responseContent = content[contentKey];\n } else {\n responseContent = content;\n }\n } else if (type === CONTENT_TYPES.TEXT) {\n responseContent = content;\n }\n\n if (responseContent) {\n let overrideUrl = null;\n let useFullUrl = false;\n const target = document.querySelector(targetSelector);\n\n // This ensures that any values the customer entered will get restored on back navigation\n populateFormValuesInCurrentStep(paramsBlacklist);\n\n if (target) {\n if (typeof renderer === 'function') {\n await renderer(content, append);\n const $dialCode = $('#dialCode');\n if ($dialCode) {\n const allowedCountries = $dialCode.attr('allowedLocales');\n const defaultCountryCode = $dialCode.attr('defaultCountryCode');\n const $onlyCountries = allowedCountries ? allowedCountries.split(',') : '';\n $('#dialCode').intlTelInput({\n allowDropdown: true,\n initialCountry: defaultCountryCode,\n formatOnDisplay: true,\n separateDialCode: true,\n page: 'checkout-page',\n onlyCountries: $onlyCountries,\n dropdownContainer: $('.country-dial-code'),\n });\n }\n } else if (append) {\n target.insertAdjacentHTML('beforeend', responseContent);\n } else {\n target.innerHTML = responseContent;\n }\n\n const paymentForm = document.querySelector(ignoreScroll);\n const horizontalFilterOn = document.querySelector('.horizontal-filter-container');\n const isPagination = trigger && trigger.classList.contains('paging__page');\n\n if ((scrollTarget && paymentForm == null && !horizontalFilterOn) || isPagination) {\n scrollTo(scrollTarget);\n }\n\n if (callback) {\n callback(trigger, target, responseContent);\n }\n\n if (urlInputSelector) {\n const urlInput = document.querySelector(urlInputSelector);\n\n if (urlInput) {\n useFullUrl = true;\n overrideUrl = urlInput.value.trim();\n }\n }\n\n pushHistoryStep(targetSelector, target.innerHTML, scrollTarget, paramsBlacklist, useFullUrl, overrideUrl || url);\n\n setTimeout(() => {\n document.dispatchEvent(new CustomEvent(NAV_EVENTS.NAV_CONTENT));\n document.dispatchEvent(new CustomEvent(HEADER_EVENTS.UPDATE_HEADER));\n }, 10);\n }\n }\n};\n\n/**\n * Initializes the navigation logic by persisting the content of the element\n * retrieved with the provided parent selector in an initial history state,\n * which is used as an indicator for the start of the history chain,\n * right before the content for the first client-side navigation is rendered\n *\n * @param {string} targetSelector Selector for the root element\n */\nconst initNav = (targetSelector) => {\n const target = document.querySelector(targetSelector);\n\n if (target) {\n const content = target.innerHTML;\n\n replaceHistoryStep(targetSelector, content);\n }\n};\n\n/**\n * Attaches listeners to the configured AJAX update triggers\n *\n * @param {Object[]} config Config objects for the navigation logic\n */\nconst initTriggers = (configs) => {\n configs.forEach((config) => {\n const { triggerSelector, targetSelector } = config;\n\n if (targetSelector) {\n (config.interactionEvents || ['submit', 'click']).forEach((evt) => {\n onEvent(document, evt, triggerSelector, (e) => {\n const hasAction = (e.delegateTarget.href || e.delegateTarget.dataset.action);\n if ((evt === 'click' && hasAction) || (evt === 'submit' && e.delegateTarget.action)) {\n e.preventDefault();\n\n handleUpdate(e.delegateTarget, config);\n }\n });\n });\n\n onEvent(document, 'change', triggerSelector, (e) => {\n if (e.delegateTarget.tagName.toLowerCase() === 'select') {\n const selectedOption = e.delegateTarget.options[e.delegateTarget.selectedIndex];\n\n if (selectedOption && selectedOption.value) {\n const { value } = selectedOption;\n const hasUrl = value.startsWith('http') || value.startsWith('/');\n\n if (hasUrl) {\n selectedOption.dataset.action = value;\n\n handleUpdate(selectedOption, config);\n }\n }\n }\n });\n }\n });\n};\n\n/**\n * Callback for a nav update operation\n *\n * @callback UpdateCallback\n * @param {Element} trigger The element that triggered the update\n * @param {Element} target The updated target\n */\n/**\n * Callback for the replaces that standard render process\n *\n * @callback RenderCallback\n * @param {Response} response The AJAX response to render\n */\n/**\n * Module that handles updating page components over AJAX\n * and updating the URL and history to match those changes\n *\n * @param {string} navParentSelector Selector to use to populate the initial state of the page\n * @param {Object[]} config Config objects for the navigation logic\n * @param {string} config[].triggerSelector Selector for the navigation trigger element(s)\n * @param {string} config[].targetSelector Selector for the element to update\n * @param {boolean} [config[].scrollTarget] If provided, the window will be scrolled to that element after the update\n * @param {boolean} [config[].append=false] If true, the fetched content will be appended to the target\n * @param {string[]} [config[].interactionEvents] Can replace the default ['click', 'submit'] as navigation triggers\n * @param {RenderCallback} [config[].renderer] If provided will be called instead of the standard renderer\n * @param {UpdateCallback} [config[].callback] If provided will be called after the target is updated\n */\nexport const clientSideNav = (navParentSelector, config) => {\n initNav(navParentSelector);\n initTriggers(config);\n initHistoryHandling();\n};\n","import base from '~base';\nimport { onEvent as on, addClassIfNeeded as addClass } from '../util/domutils'; // eslint-disable-line import/named\nimport { ADDRESS_FORM_EVENTS } from './addressForm';\nimport scrollTo from '../util/scrollTo';\n\nconst baseSubmit = base.submit;\nconst baseClearForm = base.functions.clearForm;\nconst baseInvalid = base.invalid;\n\n/**\n * Validate whole form. Requires `this` to be set to form object\n * @param {jQuery.event} event - Event to be canceled if form is invalid.\n * @returns {boolean} - Flag to indicate if form is valid\n */\nfunction validateForm(event) {\n let valid = true;\n if (this.checkValidity && !this.checkValidity()) {\n // safari\n valid = false;\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n }\n // eslint-disable-next-line jquery/no-each, jquery/no-find, no-undef\n $(this).find('input, select').each(function () {\n if (!this.validity.valid) {\n // eslint-disable-next-line jquery/no-trigger, no-undef\n $(this).trigger('invalid', this.validity);\n }\n });\n }\n return valid;\n}\n\nfunction scrollToFirstError(parent) {\n setTimeout(() => {\n const errorEl = parent.querySelector('.form-control.is-invalid:not([disabled])');\n\n if (errorEl) {\n scrollTo(errorEl);\n errorEl.focus();\n }\n }, 1);\n}\n\n/**\n * Remove all validation. Should be called every time before revalidating form\n * @param {element} form - Form to be cleared\n * @returns {void}\n */\nbase.functions.clearForm = (form, resetValidity) => {\n baseClearForm.call(this, form);\n\n if (!resetValidity) {\n form.querySelectorAll('.form-control').forEach((el) => {\n if (el.required) {\n addClass(el, 'is-valid');\n }\n });\n }\n};\n\nbase.functions.invalidate = (formGroup, message) => {\n const validatedMessage = message || '';\n const els = formGroup.querySelectorAll('input, select, textarea, .form-control');\n const feedbackContainer = formGroup.querySelector('.invalid-feedback');\n\n els.forEach((el) => {\n if (el.required) {\n el.classList.toggle('is-invalid', validatedMessage);\n el.classList.toggle('is-valid', !validatedMessage);\n }\n });\n\n if (feedbackContainer) {\n feedbackContainer.textContent = validatedMessage;\n }\n\n scrollToFirstError(formGroup);\n};\n\nbase.submit = () => {\n document.querySelectorAll('form').forEach((form) => {\n form.addEventListener('submit', () => {\n // Dispatch event to show hidden address fields on submit if there are any errors\n document.dispatchEvent(new CustomEvent(ADDRESS_FORM_EVENTS.SUBMIT));\n\n scrollToFirstError(form);\n });\n });\n\n baseSubmit();\n};\n\ndocument.addEventListener('product:afterAttributeSelect', () => {\n baseSubmit();\n baseInvalid();\n});\n\nbase.buttonClick = () => {\n // Changes the handler of the base event to the overridden clearForm function,\n // so that the valid class is added to the fields and they can be styled appropriately\n on(document, 'click', 'form button[type=\"submit\"], form input[type=\"submit\"]', (e) => {\n // clear all errors when trying to submit the form\n base.functions.clearForm(e.delegateTarget.closest('form'));\n });\n};\n\nbase.functions.loginValidation = (formGroup, message) => {\n const validatedMessage = message || '';\n const els = formGroup.querySelectorAll('input, select, textarea, .form-control');\n\n els.forEach((el) => {\n if (el.required) {\n el.classList.toggle('is-invalid', validatedMessage);\n el.classList.toggle('is-valid', !validatedMessage);\n }\n });\n};\n\nbase.functions.validateForm = (form) => {\n validateForm.call(document.querySelector(form), null);\n};\n\nexport default base;\n","export default () => {};\n","export default function () {\n if (document.querySelector('.valid-cookie-warning')) {\n const cookiesAccepted = window.localStorage.getItem('cookiesAccepted');\n const cookieWarningMessageContainer = document.querySelector('.cookie-warning-messaging');\n\n if (!cookiesAccepted) {\n cookieWarningMessageContainer.classList.add('d-block');\n cookieWarningMessageContainer.classList.remove('d-none');\n } else {\n cookieWarningMessageContainer.classList.add('d-none');\n cookieWarningMessageContainer.classList.remove('d-block');\n window.__rmcp = [1, 2, 3, 4, 5]; // eslint-disable-line no-underscore-dangle\n }\n\n document.querySelector('.valid-cookie-warning .btn').addEventListener('click', () => {\n window.localStorage.setItem('cookiesAccepted', 'cookiesAccepted');\n window.__rmcp = [1, 2, 3, 4, 5]; // eslint-disable-line no-underscore-dangle\n });\n }\n}\n","import $ from 'jquery';\nimport { isIOS } from '../util/domutils';\nimport { functions as headerFunctions, EVENTS as HEADER_EVENTS } from './header';\n\nexport const EVENTS = {\n FLYOUT_OPEN: 'flyout:opened',\n FLYOUT_CLOSE: 'flyout:closed',\n BACK_SHOW: 'backtotop:show',\n BACK_HIDE: 'backtotop:hide',\n};\n\nconst SELECTORS = {\n CONTENT: '[class*=\"__container \"]',\n};\n\n/**\n * Updates the total height of the minicart container so it can be aligned with the header\n *\n * @param {Element} container The minicart container\n * @param {Number} [pageHeaderHeight=] The height of the header to align against\n */\nconst recalculateContainer = (container, callback, pageHeaderHeight = headerFunctions.getHeaderHeight()) => {\n container.style.top = `${pageHeaderHeight}px`;\n container.style.height = `calc(100% - ${pageHeaderHeight}px)`;\n\n if (typeof callback === 'function') {\n callback(container, pageHeaderHeight);\n }\n};\n\n/**\n * Ensures that the flyout elements' height gets recalculated when the header resizes\n *\n * @param {Element} container The flyout container\n */\nexport const initFlyout = (container, callback, toggleClass = 'show') => {\n ['scroll', 'resize'].forEach((evt) => {\n window.addEventListener(evt, () => {\n if (container.classList.contains(toggleClass)) {\n recalculateContainer(container, callback);\n }\n });\n });\n\n /**\n * Dispatch UPDATE_HEADER in order to update the sticky header\n * listen for UPDATE_HEADER in order to calculate the flyout's dimensions after header is updated\n */\n document.dispatchEvent(new CustomEvent(HEADER_EVENTS.UPDATE_HEADER));\n\n document.addEventListener(HEADER_EVENTS.UPDATE_HEADER, () => {\n recalculateContainer(container, callback);\n });\n\n headerFunctions.onHeightChange(recalculateContainer.bind(null, container, callback));\n\n if (isIOS()) {\n const inputs = container.querySelectorAll('input');\n const content = container.querySelector(SELECTORS.CONTENT);\n\n inputs.forEach((input) => {\n input.addEventListener('focus', () => {\n setTimeout(() => {\n $(content).scrollTop($(input).offset().top - 20);\n }, 500);\n });\n });\n }\n\n $(container).on('shown.bs.collapse', () => {\n document.dispatchEvent(new CustomEvent(EVENTS.FLYOUT_OPEN, {\n detail: {\n flyout: container,\n content: container.querySelector(SELECTORS.CONTENT),\n },\n }));\n }).on('hidden.bs.collapse', () => {\n document.dispatchEvent(new CustomEvent(EVENTS.FLYOUT_CLOSE, {\n detail: {\n flyout: container,\n content: container.querySelector(SELECTORS.CONTENT),\n },\n }));\n });\n\n $(container).on('shown.bs.collapse', () => {\n recalculateContainer(container, callback);\n });\n\n document.addEventListener(EVENTS.FLYOUT_OPEN, (e) => {\n if (container.classList.contains('show') && e.detail.flyout !== container) {\n $(container).collapse('hide');\n }\n document.dispatchEvent(new CustomEvent(EVENTS.BACK_HIDE));\n });\n document.addEventListener(EVENTS.FLYOUT_CLOSE, () => {\n document.dispatchEvent(new CustomEvent(EVENTS.BACK_SHOW));\n });\n\n recalculateContainer(container, callback);\n};\n","import debounce from '../util/debounce';\nimport { onEvent } from '../util/domutils'; // eslint-disable-line import/named\nimport { COLLAPSE_EVENTS } from '../thirdParty/bootstrap/toggleFormElementsStates';\nimport { NAV_EVENTS } from './clientSideNav';\nimport { ADDRESS_FORM_EVENTS } from './addressForm';\n\nconst SELECTORS = {\n FORMS: 'form',\n PREFILLED: ':-webkit-autofill',\n FORM_SUBMIT: '.btn[type=\"submit\"]',\n FORM_RADIOS: 'form input[type=\"radio\"]',\n FORM_FIELDS: 'form input:not([type=\"radio\"]):not([type=\"checkbox\"]), form select, form textarea',\n};\n\nexport const FORM_EVENTS = {\n SUBMIT_STATE_CHANGE: 'form:submit-state-chage',\n};\n\nconst DISABLE_INCOMPLETE_FORMS_SUBMIT = window.beesfra\n && window.beesfra.config\n && window.beesfra.config.disableIncompleteFormsSubmit;\n\nconst handleFormValidity = (form) => {\n const buttons = form.querySelectorAll(SELECTORS.FORM_SUBMIT);\n\n const fields = form.querySelectorAll(SELECTORS.FORM_FIELDS);\n const requiredFieldsPopulated = Array.from(fields).every(field => field.disabled || !field.required || field.value);\n\n const radioButtons = form.querySelectorAll(SELECTORS.FORM_RADIOS);\n const radioGroups = Array.from(radioButtons).reduce((groups, radioButton) => {\n groups[radioButton.name] = groups[radioButton.name] || [];\n groups[radioButton.name].push(radioButton);\n\n return groups;\n }, {});\n const radiosChecked = Object.values(radioGroups).every(group => group.some(radio => radio.disabled || radio.checked));\n const formIncomplete = !requiredFieldsPopulated || !radiosChecked;\n\n if (DISABLE_INCOMPLETE_FORMS_SUBMIT) {\n buttons.forEach((button) => {\n button.classList.toggle('disabled', formIncomplete);\n });\n }\n\n document.dispatchEvent(new CustomEvent(FORM_EVENTS.SUBMIT_STATE_CHANGE, {\n detail: {\n form,\n formIncomplete,\n },\n }));\n};\n\n/**\n * Visually disableds the submit button of each form which doesn not have\n * all its required fields populated and vice-versa.\n * They don't get actually disabled so they can still be used in case issues\n * occur with the logic, the normal validation should prevent any data issues\n */\nconst toggleSubmitState = () => {\n ['change', 'keyup'].forEach((event) => {\n onEvent(document, event, SELECTORS.FORM_FIELDS, debounce((e) => {\n handleFormValidity(e.delegateTarget.form || e.delegateTarget);\n }, 300));\n });\n\n [\n NAV_EVENTS.NAV_BACK,\n NAV_EVENTS.NAV_CONTENT,\n COLLAPSE_EVENTS.FORMS_STATE_CHANGED,\n ADDRESS_FORM_EVENTS.POPULATE,\n ].forEach((evt) => {\n document.addEventListener(evt, () => {\n document.querySelectorAll(SELECTORS.FORMS).forEach(handleFormValidity);\n });\n });\n\n document.querySelectorAll(SELECTORS.FORMS).forEach(handleFormValidity);\n};\n\n/**\n * On WebKit browsers fields that get their values prefilled from e.g. saved passwords\n * don't get their placeholders removed on load. This causes a design issue with the floating labels.\n * The code below iterates and does a focus-blur on each of those fields to force them to behave per design.\n * Only runs on Chrome-like browsers using the vendor-prefixed selector as this seems to be OK on other browsers.\n */\nconst fixWebkitPrefilledFieldLabels = () => {\n try {\n const affectedForms = [];\n const prefilledFields = Array.from(document.querySelectorAll(SELECTORS.PREFILLED));\n\n prefilledFields.forEach((field) => {\n field.focus({\n preventScroll: true,\n });\n field.blur();\n\n if (affectedForms.indexOf(field.form) < 0) {\n affectedForms.push(field.form);\n }\n });\n\n if (DISABLE_INCOMPLETE_FORMS_SUBMIT) {\n affectedForms.forEach(handleFormValidity);\n }\n } catch (e) {\n // Not on a WebKit-based browser\n }\n};\n\nexport const initForms = () => {\n toggleSubmitState();\n fixWebkitPrefilledFieldLabels();\n};\n","import $ from 'jquery';\nimport Choices from 'choices.js';\nimport { initFlyout } from '../flyoutUnderHeader';\nimport { loadContent } from '../../util/fetchutils';\nimport { getJSONData } from '../../util/domutils'; // eslint-disable-line import/named\nimport { SELECTORS as HEADER_SELECTORS } from '../header';\nimport countryItem from './templates/countrysSelectorItem.mustache';\nimport countryChoice from './templates/countrySelectorChoice.mustache';\nimport countryContent from './templates/partials/countryContent.mustache';\nimport countryAttributes from './templates/partials/countryAttributes.mustache';\n\nconst CONSTANTS = {\n DROPDOWN_LIST_MAX_HEIGHT_OFFSET: 20,\n};\n\nconst GLOBALS = {\n GATEWAY: {\n COUNTRY_CHOICES: null,\n LANGUAGE_CHOICES: null,\n CURRENCY_CHOICES: null,\n },\n CONTAINER: {\n COUNTRY_CHOICES: null,\n LANGUAGE_CHOICES: null,\n CURRENCY_CHOICES: null,\n },\n};\n\nconst clearExistingDropdown = async () => {\n ['GATEWAY', 'CONTAINER'].forEach((containerType) => {\n if (GLOBALS[containerType].COUNTRY_CHOICES && GLOBALS[containerType].COUNTRY_CHOICES.initialised) {\n GLOBALS[containerType].COUNTRY_CHOICES.destroy();\n }\n if (GLOBALS[containerType].LANGUAGE_CHOICES && GLOBALS[containerType].LANGUAGE_CHOICES.initialised) {\n GLOBALS[containerType].LANGUAGE_CHOICES.destroy();\n }\n if (GLOBALS[containerType].CURRENCY_CHOICES && GLOBALS[containerType].CURRENCY_CHOICES.initialised) {\n GLOBALS[containerType].CURRENCY_CHOICES.destroy();\n }\n });\n};\n\nconst CLASSES = {\n DROPDOWN_LIST: 'choices__list--dropdown',\n};\n\nconst EVENTS = {\n UPDATE_HEADER: 'header:update',\n};\n\nconst SELECTORS = {\n GATEWAY: '#countryGateway',\n CONTAINER: '.country-selector__pane',\n FORM: '.country-selector__form',\n FORM_ERROR: '.error-summary',\n DROPDOWN_CONTAINER: '.country-selector__form__field',\n LOCATION_DROPDOWN: '.country-selector__form__input--location',\n LANGUAGE_DROPDOWN: '.country-selector__form__input--language',\n CURRENCY_DROPDOWN: '.country-selector__form__input--currency',\n LANGUAGE_INPUT: '[type=\"hidden\"][name=\"language\"]',\n CURRENCY_INPUT: '[type=\"hidden\"][name=\"currency\"]',\n PAGE_LOCALE_LOADER: '.js-page-locale-loader',\n PAGE_LOCALE_LOADER_MOBILE: '.js-page-locale-loader-mobile',\n};\n\n/**\n * Renders the Mustache template for the card item or option\n * @param {Function} templateFunc The item template function provided by the Choice library\n * @param {Function} template The Hogan renderer to use to render the content\n * @param {Object} classNames The Choice class names hash, provided by the library\n * @param {Object} data The item state hash, provided by the library\n * @return {string} The result of calling the templating function with the rendered Hogan template\n */\nconst renderCountryOption = (templateFunc, template, classNames, data) => {\n const content = template.render(\n { classNames, data, countryCode: data.value.toLowerCase() },\n { content: countryContent, attributes: countryAttributes },\n );\n\n return templateFunc(content);\n};\n\nconst handleDropdownBehavior = (choices, options, singleOptionBehaviors, singleOptionBehavior) => {\n const container = choices.containerOuter.element.closest(SELECTORS.DROPDOWN_CONTAINER);\n\n if (options.length <= 1) {\n switch (singleOptionBehavior) {\n case singleOptionBehaviors.HIDE:\n container.classList.add('d-none');\n break;\n case singleOptionBehaviors.DISABLE:\n choices.disable();\n break;\n default:\n }\n } else {\n choices.enable();\n container.classList.remove('d-none');\n }\n};\n\nconst initCountryChange = (\n countryDropdown,\n languageChoices,\n currencyChoices,\n singleOptionBehaviors,\n singleOptionBehavior,\n) => {\n const { form } = countryDropdown;\n const countries = getJSONData(countryDropdown, 'countries', []);\n\n countryDropdown.addEventListener('change', (e) => {\n const selectedCountryCode = e.detail.value;\n const selectedCountry = countries.find(country => country.id === selectedCountryCode);\n\n if (selectedCountry) {\n const languageInput = form.querySelector(SELECTORS.LANGUAGE_INPUT);\n const currencyInput = form.querySelector(SELECTORS.CURRENCY_INPUT);\n\n if (selectedCountry.locales.length) {\n languageInput.value = selectedCountry.locales[0].id;\n }\n if (selectedCountry.currencies.length) {\n currencyInput.value = selectedCountry.currencies[0].code;\n }\n\n if (languageChoices) {\n const languages = selectedCountry.locales.map((locale, index) => ({\n value: locale.id,\n label: locale.languageName,\n selected: index === 0,\n }));\n\n languageChoices.setChoices(languages, 'value', 'label', true);\n\n handleDropdownBehavior(languageChoices, languages, singleOptionBehaviors, singleOptionBehavior);\n\n languageChoices.passedElement.element.addEventListener('change', (evt) => {\n languageInput.value = evt.detail.value;\n });\n }\n\n if (currencyChoices) {\n const currencies = selectedCountry.currencies.map((currency, index) => ({\n value: currency.code,\n label: `${currency.code} ${currency.symbol}`,\n selected: index === 0,\n }));\n\n currencyChoices.setChoices(currencies, 'value', 'label', true);\n\n handleDropdownBehavior(currencyChoices, currencies, singleOptionBehaviors, singleOptionBehavior);\n\n currencyChoices.passedElement.element.addEventListener('change', (evt) => {\n currencyInput.value = evt.detail.value;\n });\n }\n }\n });\n};\n\nconst initDropdownHeightCalculation = (countryDropdown) => {\n const getDropdown = (el) => {\n const dropdown = el.parentElement.nextElementSibling;\n\n if (dropdown && dropdown.classList.contains(CLASSES.DROPDOWN_LIST)) {\n return dropdown;\n }\n\n return null;\n };\n\n const setDropdownMaxHeight = (dropdown, maxHeight) => {\n const children = Array.from(dropdown.children);\n const maxHeightValue = maxHeight ? `${maxHeight}px` : null;\n\n dropdown.style.maxHeight = maxHeightValue;\n children.forEach((child) => { child.style.maxHeight = maxHeightValue; });\n };\n\n countryDropdown.addEventListener('showDropdown', (e) => {\n const dropdown = getDropdown(e.target);\n\n if (dropdown) {\n const viewportHeight = window.innerHeight;\n const { height, top } = dropdown.getBoundingClientRect();\n\n if (height + top >= viewportHeight - CONSTANTS.DROPDOWN_LIST_MAX_HEIGHT_OFFSET) {\n const maxHeight = viewportHeight - top - CONSTANTS.DROPDOWN_LIST_MAX_HEIGHT_OFFSET;\n\n setDropdownMaxHeight(dropdown, maxHeight);\n } else {\n setDropdownMaxHeight(dropdown);\n }\n }\n });\n\n countryDropdown.addEventListener('hideDropdown', (e) => {\n const dropdown = getDropdown(e.target);\n\n if (dropdown) {\n setDropdownMaxHeight(dropdown);\n }\n });\n};\n\nconst initDropdowns = (\n countryDropdown,\n languageDropdown,\n currencyDropdown,\n singleOptionBehaviors,\n singleOptionBehavior,\n containerType,\n) => {\n const choicesOptions = {\n shouldSort: true,\n searchEnabled: false,\n itemSelectText: '',\n position: 'bottom',\n sortFn(a, b) {\n return a.label.trim() > b.label.trim() ? 1 : -1;\n },\n };\n\n const countryOptions = {\n callbackOnCreateTemplates: template => ({\n item: renderCountryOption.bind(null, template, countryItem),\n choice: renderCountryOption.bind(null, template, countryChoice),\n }),\n };\n\n // eslint-disable-next-line no-unused-vars, max-len\n GLOBALS[containerType].COUNTRY_CHOICES = new Choices(countryDropdown, Object.assign({}, choicesOptions, countryOptions));\n GLOBALS[containerType].LANGUAGE_CHOICES = languageDropdown && new Choices(languageDropdown, choicesOptions);\n GLOBALS[containerType].CURRENCY_CHOICES = currencyDropdown && new Choices(currencyDropdown, choicesOptions);\n\n // eslint-disable-next-line max-len\n initCountryChange(countryDropdown, GLOBALS[containerType].LANGUAGE_CHOICES, GLOBALS[containerType].CURRENCY_CHOICES, singleOptionBehaviors, singleOptionBehavior);\n initDropdownHeightCalculation(countryDropdown); // Prevent scrolling issues on iOS\n};\n\nconst initForm = (form) => {\n form.addEventListener('submit', async (e) => {\n e.preventDefault();\n\n const formError = form.querySelector(SELECTORS.FORM_ERROR);\n\n if (formError) {\n formError.remove();\n }\n\n const { content } = await loadContent(form);\n\n if (content.errorContent) {\n form.innerHTML = content.errorContent + form.innerHTML;\n }\n\n if (content.redirectUrl) {\n // Ensure the cookie policy gets displayed after the redirect\n window.localStorage.removeItem('previousSid');\n\n window.location.href = content.redirectUrl;\n }\n });\n};\n\nconst initGateway = (gatewayContainer) => {\n const header = document.querySelector(HEADER_SELECTORS.HEADER);\n $(gatewayContainer).modal('show');\n\n $(gatewayContainer).on('shown.bs.modal', () => {\n header.classList.remove('header-z-index');\n\n /**\n * position: [sticky | fixed] forces the country gateway's z-index not to function properly\n * causing it to act like an element with the lowest z-index\n * */\n header.classList.add('position-static');\n });\n\n $(gatewayContainer).on('hidden.bs.modal', () => {\n header.classList.add('header-z-index');\n header.classList.remove('position-static');\n document.dispatchEvent(new CustomEvent(EVENTS.UPDATE_HEADER));\n });\n};\n\n// After Page Locale Content Load\n\nconst afterPageLocaleContentLoad = async (containerType = null) => {\n const gatewayContainer = document.querySelector(SELECTORS.GATEWAY);\n const flyoutContainer = document.querySelector(SELECTORS.CONTAINER);\n\n if (gatewayContainer && containerType === 'GATEWAY') {\n initGateway(gatewayContainer);\n }\n\n if (flyoutContainer) {\n initFlyout(flyoutContainer);\n document.dispatchEvent(new CustomEvent('flyout:opened', {\n detail: {\n flyout: flyoutContainer,\n content: flyoutContainer.querySelector('[class*=\"__container \"]'),\n },\n }));\n }\n\n [gatewayContainer, flyoutContainer].forEach((container) => {\n if (container) {\n const selectionForm = container.querySelector(SELECTORS.FORM);\n const countryDropdown = container.querySelector(SELECTORS.LOCATION_DROPDOWN);\n const languageDropdown = container.querySelector(SELECTORS.LANGUAGE_DROPDOWN);\n const currencyDropdown = container.querySelector(SELECTORS.CURRENCY_DROPDOWN);\n\n if (selectionForm) {\n initForm(selectionForm);\n }\n\n if (countryDropdown) {\n clearExistingDropdown();\n initDropdowns(\n countryDropdown,\n languageDropdown,\n currencyDropdown,\n getJSONData(selectionForm, 'selectBehaviors', {}),\n selectionForm.dataset.selectBehavior,\n containerType,\n );\n }\n }\n });\n};\n\n// PAGE_LOCALE_LOADER\n\nconst loadPageLocale = async () => {\n const pageLocale = document.querySelector(SELECTORS.PAGE_LOCALE_LOADER);\n if (window.innerWidth > 767) {\n if (pageLocale) {\n const { content } = await loadContent(pageLocale, null, null, false);\n pageLocale.innerHTML = content;\n afterPageLocaleContentLoad('GATEWAY');\n }\n const selectorObj = document.querySelector('.country-selector-link');\n selectorObj.addEventListener('click', async () => {\n const { content } = await loadContent(selectorObj, null, null, false);\n pageLocale.innerHTML = content;\n afterPageLocaleContentLoad('CONTAINER');\n });\n }\n};\n\n// PAGE_LOCALE_LOADER_MOBILE\n\nconst loadPageLocaleMobile = async () => {\n const pageLocaleMobile = document.querySelector(SELECTORS.PAGE_LOCALE_LOADER_MOBILE);\n if (window.innerWidth < 769) {\n if (pageLocaleMobile) {\n const { content } = await loadContent(pageLocaleMobile, null, null, false);\n pageLocaleMobile.innerHTML = content;\n }\n const selectorObj = pageLocaleMobile.querySelector('.country-selector-link');\n selectorObj.addEventListener('click', async () => {\n const { content } = await loadContent(selectorObj, null, null, false);\n pageLocaleMobile.innerHTML = content;\n afterPageLocaleContentLoad('CONTAINER');\n });\n }\n};\n\nexport default async () => {\n const link = document.querySelector('.globale-selector');\n const countrySelectorLink = document.querySelector('.js-page-locale-loader');\n if (!link && countrySelectorLink) {\n loadPageLocale();\n loadPageLocaleMobile();\n }\n};\n","/* eslint-disable jquery/no-html */\n/* eslint-disable jquery/no-find */\n/* eslint-disable jquery/no-text */\n/* eslint-disable jquery/no-ajax */\nimport $ from 'jquery';\nimport { ResizeSensor } from 'css-element-queries';\nimport { onEvent } from '../util/domutils'; // eslint-disable-line import/named\nimport initCountrySelector from './header/countrySelector';\n\nexport const SELECTORS = {\n HEADER: '.header-sticky',\n BOTTOM_BANNER: '.header-banner-bottom',\n BANNER_CLOSE_BUTTON: '.close-button',\n MENU_CATS: '.cat-Imagery',\n};\n\nconst CACHE = {\n RESIZE_SENSOR: null,\n RESIZE_HANDLERS: [],\n};\n\nexport const EVENTS = {\n UPDATE_HEADER: 'header:update',\n};\n\nconst handleResizeEvents = (height) => {\n CACHE.RESIZE_HANDLERS.forEach((handler) => {\n handler(height);\n });\n};\n\nexport const initBannerClose = () => {\n const headerBottomBanner = document.querySelector(SELECTORS.BOTTOM_BANNER);\n\n if (headerBottomBanner) {\n onEvent(headerBottomBanner, 'click', SELECTORS.BANNER_CLOSE_BUTTON, () => {\n const cookieName = headerBottomBanner.dataset.closeCookie;\n\n document.cookie = `${cookieName}=true; path=/`;\n headerBottomBanner.remove();\n });\n }\n};\n\nexport const functions = {\n getHeaderHeight(header = document.querySelector(SELECTORS.HEADER)) {\n if (header) {\n const headerRectangle = header.getBoundingClientRect();\n const headerOffset = headerRectangle.top;\n const headerHeight = header.offsetHeight;\n const headerDisplacement = Math.ceil(headerHeight + headerOffset);\n\n return headerDisplacement;\n }\n\n return 0;\n },\n onHeightChange(cb) {\n CACHE.RESIZE_HANDLERS.push(cb);\n },\n};\n\nexport const initResizeHandler = () => {\n const header = document.querySelector(SELECTORS.HEADER);\n\n if (header) {\n CACHE.RESIZE_SENSOR = new ResizeSensor(header, () => {\n handleResizeEvents(functions.getHeaderHeight(header));\n });\n }\n};\n\nexport const initHandleNewsletterValidation = () => {\n $(document).on('submit', '.email-newsletter__form:not(\".validated\")', function (e) {\n e.preventDefault();\n const $form = $(this);\n const emailField = document.querySelector('.email-newsletter__email-input');\n // eslint-disable-next-line jquery/no-attr\n const requrestUrl = $(this).attr('data-emailvalidate');\n const dataObj = new FormData();\n dataObj.append('email', emailField.value);\n if (emailField) {\n $.ajax({\n url: requrestUrl,\n contentType: false,\n processData: false,\n type: 'post',\n data: dataObj,\n success(data) {\n if (!data.success) {\n $form.find('.invalid-feedback').html(data.error);\n emailField.classList.add('is-invalid');\n } else {\n // eslint-disable-next-line jquery/no-class\n $form.addClass('validated');\n // eslint-disable-next-line jquery/no-trigger\n $form.trigger('submit');\n }\n },\n });\n return false;\n }\n return true;\n });\n};\n\nexport const pdComponentsJs = () => {\n $(document).ready(() => {\n $('.show-more').on('click', function () {\n // eslint-disable-next-line jquery/no-class\n $('.mission-copy-sign').removeClass('limit-height');\n // eslint-disable-next-line jquery/no-class, jquery/no-parent\n $(this).parent('.readmore-wrapper').removeClass('d-flex').addClass('d-none');\n });\n });\n};\n\nexport const searchfocus = () => {\n $(document).ready(() => {\n $('.header-search').on('click', () => {\n // eslint-disable-next-line jquery/no-class\n $('.clearfix-self .search-field').focus();\n });\n });\n};\n\nexport const removeEmoji = () => {\n $(document).on('change keyup', '.removeEmoji', function () {\n // eslint-disable-next-line max-len\n const regex = /(?:[\\u2700-\\u27bf]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\u0023-\\u0039]\\ufe0f?\\u20e3|\\u3299|\\u3297|\\u303d|\\u3030|\\u24c2|\\ud83c[\\udd70-\\udd71]|\\ud83c[\\udd7e-\\udd7f]|\\ud83c\\udd8e|\\ud83c[\\udd91-\\udd9a]|\\ud83c[\\udde6-\\uddff]|\\ud83c[\\ude01-\\ude02]|\\ud83c\\ude1a|\\ud83c\\ude2f|\\ud83c[\\ude32-\\ude3a]|\\ud83c[\\ude50-\\ude51]|\\u203c|\\u2049|[\\u25aa-\\u25ab]|\\u25b6|\\u25c0|[\\u25fb-\\u25fe]|\\u00a9|\\u00ae|\\u2122|\\u2139|\\ud83c\\udc04|[\\u2600-\\u26FF]|\\u2b05|\\u2b06|\\u2b07|\\u2b1b|\\u2b1c|\\u2b50|\\u2b55|\\u231a|\\u231b|\\u2328|\\u23cf|[\\u23e9-\\u23f3]|[\\u23f8-\\u23fa]|\\ud83c\\udccf|\\u2934|\\u2935|[\\u2190-\\u21ff])/g;\n $(this).val($(this).val().replace(regex, '')); // eslint-disable-line jquery/no-val\n });\n};\n\nexport const initScroll = () => {\n let startX; // To store the starting touch position\n let scrollLeft; // To store the current scroll position\n\n $('.cat-Imagery').on('touchstart', function (e) {\n const touch = e.originalEvent.touches[0]; // Get the touch event\n startX = touch.pageX - $(this).offset().left; // Calculate start position relative to container\n scrollLeft = $(this).scrollLeft(); // Get current scroll position\n });\n\n $('.cat-Imagery').on('touchmove', function (e) {\n const touch = e.originalEvent.touches[0]; // Get the touch event\n const x = touch.pageX - $(this).offset().left; // Calculate current position\n const walk = (x - startX) * 1.5; // Calculate how far to scroll\n $(this).scrollLeft(scrollLeft - walk); // Scroll the container\n });\n};\n\nexport const initComponents = () => {\n initCountrySelector();\n};\n","var H = require(\"hogan.js\");\nmodule.exports = function() { var T = new H.Template({code: function (c,p,i) { var t=this;t.b(i=i||\"\");t.b(\"
\");t.b(t.rp(\"\");return t.fl(); },partials: {\"attributes}} data-choice data-select-text=\\\"\\\" data-choice-selectable > {{> content}}
\", H);return T; }();","var H = require(\"hogan.js\");\nmodule.exports = function() { var T = new H.Template({code: function (c,p,i) { var t=this;t.b(i=i||\"\");t.b(\"
\");t.b(t.rp(\"\");return t.fl(); },partials: {\"attributes}} data-item > {{> content}}
\", H);return T; }();","var H = require(\"hogan.js\");\nmodule.exports = function() { var T = new H.Template({code: function (c,p,i) { var t=this;t.b(i=i||\"\");t.b(\"class=\\\" country-selector__form__field__option \");t.b(t.v(t.d(\"classNames.item\",c,p,0)));t.b(\" \");t.b(t.v(t.d(\"classNames.itemChoice\",c,p,0)));t.b(\" \");if(t.s(t.d(\"data.highlighted\",c,p,1),c,p,0,113,146,\"{{ }}\")){t.rs(c,p,function(c,p,t){t.b(\" \");t.b(t.v(t.d(\"classNames.highlightedState\",c,p,0)));t.b(\" \");});c.pop();}t.b(\" \");if(!t.s(t.d(\"data.highlighted\",c,p,1),c,p,1,0,0,\"\")){t.b(\" \");t.b(t.v(t.d(\"classNames.itemSelectable\",c,p,0)));t.b(\" \");};t.b(\" \");if(t.s(t.d(\"data.disabled\",c,p,1),c,p,0,260,318,\"{{ }}\")){t.rs(c,p,function(c,p,t){t.b(\" \");t.b(t.v(t.d(\"classNames.itemDisabled\",c,p,0)));t.b(\" \");t.b(t.v(t.d(\"classNames.disabledState\",c,p,0)));t.b(\" \");});c.pop();}t.b(\" \\\" data-id=\\\"\");t.b(t.v(t.d(\"data.id\",c,p,0)));t.b(\"\\\" data-value=\\\"\");t.b(t.v(t.d(\"data.value\",c,p,0)));t.b(\"\\\"\");return t.fl(); },partials: {}, subs: { }}, \"class=\\\" country-selector__form__field__option {{classNames.item}} {{classNames.itemChoice}} {{#data.highlighted}} {{classNames.highlightedState}} {{/data.highlighted}} {{^data.highlighted}} {{classNames.itemSelectable}} {{/data.highlighted}} {{#data.disabled}} {{classNames.itemDisabled}} {{classNames.disabledState}} {{/data.disabled}} \\\" data-id=\\\"{{data.id}}\\\" data-value=\\\"{{data.value}}\\\"\", H);return T; }();","var H = require(\"hogan.js\");\nmodule.exports = function() { var T = new H.Template({code: function (c,p,i) { var t=this;t.b(i=i||\"\");t.b(\" \");t.b(t.v(t.d(\"data.label\",c,p,0)));t.b(\"\");return t.fl(); },partials: {}, subs: { }}, \" {{data.label}}\", H);return T; }();","/*\n * International Telephone Input v12.1.3\n * https://github.com/jackocnr/intl-tel-input.git\n * Licensed under the MIT license\n */\n// wrap in UMD - see https://github.com/umdjs/umd/blob/master/jqueryPluginCommonjs.js\n(function (factory) {\n if (typeof define === 'function' && define.amd) {\n define(['jquery'], ($) => {\n factory($, window, document);\n });\n } else if (typeof module === 'object' && module.exports) {\n module.exports = factory(require('jquery'), window, document);\n } else {\n factory(jQuery, window, document);\n }\n}(($, window, document, undefined) => {\n // these vars persist through all instances of the plugin\n const pluginName = 'intlTelInput';\n\n\n let id = 1;\n // give each instance it's own id for namespaced event handling\n\n const defaults = {\n // whether or not to allow the dropdown\n allowDropdown: true,\n // if there is just a dial code in the input: remove it on blur, and re-add it on focus\n autoHideDialCode: true,\n // add a placeholder in the input with an example number for the selected country\n autoPlaceholder: 'polite',\n // modify the auto placeholder\n customPlaceholder: null,\n // append menu to a specific element\n dropdownContainer: '',\n // don't display these countries\n excludeCountries: [],\n // format the input value during initialisation and on setNumber\n formatOnDisplay: true,\n // geoIp lookup function\n geoIpLookup: null,\n // inject a hidden input with this name, and on submit, populate it with the result of getNumber\n hiddenInput: '',\n // initial country\n initialCountry: '',\n // don't insert international dial codes\n nationalMode: true,\n // display only these countries\n onlyCountries: [],\n // number type to use for placeholders\n placeholderNumberType: 'MOBILE',\n // the countries at the top of the list. defaults to united states and united kingdom\n preferredCountries: [],\n // display the country dial code next to the selected flag so it's not part of the typed number\n separateDialCode: false,\n // specify the path to the libphonenumber script to enable validation/formatting\n utilsScript: '',\n page: '',\n };\n\n\n const keys = {\n UP: 38,\n DOWN: 40,\n ENTER: 13,\n ESC: 27,\n PLUS: 43,\n A: 65,\n Z: 90,\n SPACE: 32,\n TAB: 9,\n };\n // https://en.wikipedia.org/wiki/List_of_North_American_Numbering_Plan_area_codes#Non-geographic_area_codes\n\n const regionlessNanpNumbers = ['800', '822', '833', '844', '855', '866', '877', '880', '881', '882', '883', '884', '885', '886', '887', '888', '889'];\n // keep track of if the window.load event has fired as impossible to check after the fact\n $(window).on('load', () => {\n // UPDATE: use a public static field so we can fudge it in the tests\n $.fn[pluginName].windowLoaded = true;\n });\n function Plugin(element, options) {\n this.telInput = $(element);\n this.options = $.extend({}, defaults, options);\n // event namespace\n this.ns = `.${pluginName}${id++}`;\n // Chrome, FF, Safari, IE9+\n this.isGoodBrowser = Boolean(element.setSelectionRange);\n this.hadInitialPlaceholder = Boolean($(element).attr('placeholder'));\n }\n Plugin.prototype = {\n _init() {\n // if in nationalMode, disable options relating to dial codes\n if (this.options.nationalMode) {\n this.options.autoHideDialCode = false;\n }\n // if separateDialCode then doesn't make sense to A) insert dial code into input (autoHideDialCode), and B) display national numbers (because we're displaying the country dial code next to them)\n if (this.options.separateDialCode) {\n this.options.autoHideDialCode = this.options.nationalMode = false;\n }\n // we cannot just test screen size as some smartphones/website meta tags will report desktop resolutions\n // Note: for some reason jasmine breaks if you put this in the main Plugin function with the rest of these declarations\n // Note: to target Android Mobiles (and not Tablets), we must find \"Android\" and \"Mobile\"\n this.isMobile = /Android.+Mobile|webOS|iPhone|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n if (this.isMobile) {\n // trigger the mobile dropdown css\n $('body').addClass(`iti-mobile ${this.options.page}`);\n // on mobile, we want a full screen dropdown, so we must append it to the body\n if (!this.options.dropdownContainer) {\n this.options.dropdownContainer = 'body';\n }\n }\n // we return these deferred objects from the _init() call so they can be watched, and then we resolve them when each specific request returns\n // Note: again, jasmine breaks when I put these in the Plugin function\n this.autoCountryDeferred = new $.Deferred();\n this.utilsScriptDeferred = new $.Deferred();\n // in various situations there could be no country selected initially, but we need to be able to assume this variable exists\n this.selectedCountryData = {};\n // process all the data: onlyCountries, excludeCountries, preferredCountries etc\n this._processCountryData();\n // generate the markup\n this._generateMarkup();\n // set the initial state of the input value and the selected flag\n this._setInitialState();\n document.querySelector('#dialCode').value = document.querySelector('.selected-dial-code').innerHTML;\n\n // start all of the event listeners: autoHideDialCode, input keydown, selectedFlag click\n this._initListeners();\n // utils script, and auto country\n this._initRequests();\n // return the deferreds\n return [this.autoCountryDeferred, this.utilsScriptDeferred];\n },\n /** ******************\n * PRIVATE METHODS\n ******************* */\n // prepare all of the country data, including onlyCountries, excludeCountries and preferredCountries options\n _processCountryData() {\n // process onlyCountries or excludeCountries array if present\n this._processAllCountries();\n // process the countryCodes map\n this._processCountryCodes();\n // process the preferredCountries\n this._processPreferredCountries();\n },\n // add a country code to this.countryCodes\n _addCountryCode(iso2, dialCode, priority) {\n if (!(dialCode in this.countryCodes)) {\n this.countryCodes[dialCode] = [];\n }\n const index = priority || 0;\n this.countryCodes[dialCode][index] = iso2;\n },\n // process onlyCountries or excludeCountries array if present\n _processAllCountries() {\n if (this.options.onlyCountries.length) {\n const lowerCaseOnlyCountries = this.options.onlyCountries.map(country => country.toLowerCase());\n this.countries = allCountries.filter(country => lowerCaseOnlyCountries.indexOf(country.iso2) > -1);\n } else if (this.options.excludeCountries.length) {\n const lowerCaseExcludeCountries = this.options.excludeCountries.map(country => country.toLowerCase());\n this.countries = allCountries.filter(country => lowerCaseExcludeCountries.indexOf(country.iso2) === -1);\n } else {\n this.countries = allCountries;\n }\n },\n // process the countryCodes map\n _processCountryCodes() {\n this.countryCodes = {};\n for (let i = 0; i < this.countries.length; i++) {\n const c = this.countries[i];\n this._addCountryCode(c.iso2, c.dialCode, c.priority);\n // area codes\n if (c.areaCodes) {\n for (let j = 0; j < c.areaCodes.length; j++) {\n // full dial code is country code + dial code\n this._addCountryCode(c.iso2, c.dialCode + c.areaCodes[j]);\n }\n }\n }\n },\n // process preferred countries - iterate through the preferences, fetching the country data for each one\n _processPreferredCountries() {\n this.preferredCountries = [];\n for (let i = 0; i < this.options.preferredCountries.length; i++) {\n const countryCode = this.options.preferredCountries[i].toLowerCase(); const\n countryData = this._getCountryData(countryCode, false, true);\n if (countryData) {\n this.preferredCountries.push(countryData);\n }\n }\n },\n // generate all of the markup for the plugin: the selected flag overlay, and the dropdown\n _generateMarkup() {\n // prevent autocomplete as there's no safe, cross-browser event we can react to, so it can easily put the plugin in an inconsistent state e.g. the wrong flag selected for the autocompleted number, which on submit could mean the wrong number is saved (esp in nationalMode)\n this.telInput.attr('autocomplete', 'off');\n // containers (mostly for positioning)\n let parentClass = 'intl-tel-input';\n if (this.options.allowDropdown) {\n parentClass += ' allow-dropdown';\n }\n if (this.options.separateDialCode) {\n parentClass += ' separate-dial-code';\n }\n this.telInput.wrap($('
', {\n class: parentClass,\n }));\n this.flagsContainer = $('
', {\n class: 'flag-container',\n }).insertBefore(this.telInput);\n // currently selected flag (displayed to left of input)\n const selectedFlag = $('
', {\n class: 'selected-flag',\n });\n selectedFlag.appendTo(this.flagsContainer);\n this.selectedFlagInner = $('
', {\n class: 'iti-flag',\n }).appendTo(selectedFlag);\n if (this.options.separateDialCode) {\n this.selectedDialCode = $('
', {\n class: 'selected-dial-code',\n }).appendTo(selectedFlag);\n }\n\n if (this.options.allowDropdown) {\n // make element focusable and tab naviagable\n selectedFlag.attr('tabindex', '0');\n // CSS triangle\n $('
', {\n class: 'iti-arrow',\n }).appendTo(selectedFlag);\n // country dropdown: preferred countries, then divider, then all countries\n this.countryList = $('
    ', {\n class: 'country-list hide',\n });\n if (this.preferredCountries.length) {\n this._appendListItems(this.preferredCountries, 'preferred');\n $('
  • ', {\n class: 'divider',\n }).appendTo(this.countryList);\n }\n this._appendListItems(this.countries, '');\n // this is useful in lots of places\n this.countryListItems = this.countryList.children('.country');\n // create dropdownContainer markup\n if (this.options.dropdownContainer) {\n this.dropdown = $('
    ', {\n class: 'intl-tel-input iti-container',\n }).append(this.countryList);\n } else {\n this.countryList.appendTo(this.flagsContainer);\n }\n } else {\n // a little hack so we don't break anything\n this.countryListItems = $();\n }\n if (this.options.hiddenInput) {\n this.hiddenInput = $('', {\n type: 'hidden',\n name: this.options.hiddenInput,\n }).insertBefore(this.telInput);\n }\n },\n // add a country
  • to the countryList
      container\n _appendListItems(countries, className) {\n // we create so many DOM elements, it is faster to build a temp string\n // and then add everything to the DOM in one go at the end\n let tmp = '
      Countries
      ';\n // for each country\n for (let i = 0; i < countries.length; i++) {\n const c = countries[i];\n // open the list item\n tmp += `
    • `;\n // add the flag\n tmp += `
      `;\n // and the country name and dial code\n tmp += `${c.name}`;\n // close the list item\n tmp += '
    • ';\n }\n this.countryList.append(tmp);\n },\n // set the initial state of the input value and the selected flag by:\n // 1. extracting a dial code from the given number\n // 2. using explicit initialCountry\n // 3. picking the first preferred country\n // 4. picking the first country\n _setInitialState() {\n const val = this.telInput.val();\n // if we already have a dial code, and it's not a regionlessNanp, we can go ahead and set the flag, else fall back to the default country\n // UPDATE: actually we do want to set the flag for a regionlessNanp in one situation: if we're in nationalMode and there's no initialCountry - otherwise we lose the +1 and we're left with an invalid number\n if (this._getDialCode(val) && (!this._isRegionlessNanp(val) || this.options.nationalMode && !this.options.initialCountry)) {\n this._updateFlagFromNumber(val);\n } else if (this.options.initialCountry !== 'auto') {\n // see if we should select a flag\n if (this.options.initialCountry) {\n this._setFlag(this.options.initialCountry.toLowerCase());\n } else {\n // no dial code and no initialCountry, so default to first in list\n this.defaultCountry = this.preferredCountries.length ? this.preferredCountries[0].iso2 : this.countries[0].iso2;\n if (!val) {\n this._setFlag(this.defaultCountry);\n }\n }\n // if empty and no nationalMode and no autoHideDialCode then insert the default dial code\n if (!val && !this.options.nationalMode && !this.options.autoHideDialCode && !this.options.separateDialCode) {\n this.telInput.val(`+${this.selectedCountryData.dialCode}`);\n }\n }\n // NOTE: if initialCountry is set to auto, that will be handled separately\n // format\n if (val) {\n // this wont be run after _updateDialCode as that's only called if no val\n this._updateValFromNumber(val);\n }\n },\n // initialise the main event listeners: input keyup, and click selected flag\n _initListeners() {\n this._initKeyListeners();\n if (this.options.autoHideDialCode) {\n this._initFocusListeners();\n }\n if (this.options.allowDropdown) {\n this._initDropdownListeners();\n }\n if (this.hiddenInput) {\n this._initHiddenInputListener();\n }\n },\n // update hidden input on form submit\n _initHiddenInputListener() {\n const that = this;\n const form = this.telInput.closest('form');\n if (form.length) {\n form.submit(() => {\n that.hiddenInput.val(that.getNumber());\n });\n }\n },\n // initialise the dropdown listeners\n _initDropdownListeners() {\n const that = this;\n // hack for input nested inside label: clicking the selected-flag to open the dropdown would then automatically trigger a 2nd click on the input which would close it again\n const label = this.telInput.closest('label');\n if (label.length) {\n label.on(`click${this.ns}`, (e) => {\n // if the dropdown is closed, then focus the input, else ignore the click\n if (that.countryList.hasClass('hide')) {\n that.telInput.focus();\n } else {\n e.preventDefault();\n }\n });\n }\n // toggle country dropdown on click\n const selectedFlag = this.selectedFlagInner.parent();\n selectedFlag.on(`click${this.ns}`, (e) => {\n // only intercept this event if we're opening the dropdown\n // else let it bubble up to the top (\"click-off-to-close\" listener)\n // we cannot just stopPropagation as it may be needed to close another instance\n if (that.countryList.hasClass('hide') && !that.telInput.prop('disabled') && !that.telInput.prop('readonly')) {\n that._showDropdown();\n }\n });\n // open dropdown list if currently focused\n this.flagsContainer.on(`keydown${that.ns}`, (e) => {\n const isDropdownHidden = that.countryList.hasClass('hide');\n if (isDropdownHidden && (e.which == keys.UP || e.which == keys.DOWN || e.which == keys.SPACE || e.which == keys.ENTER)) {\n // prevent form from being submitted if \"ENTER\" was pressed\n e.preventDefault();\n // prevent event from being handled again by document\n e.stopPropagation();\n that._showDropdown();\n }\n // allow navigation from dropdown to input on TAB\n if (e.which == keys.TAB) {\n that._closeDropdown();\n }\n });\n },\n // init many requests: utils script / geo ip lookup\n _initRequests() {\n const that = this;\n // if the user has specified the path to the utils script, fetch it on window.load, else resolve\n if (this.options.utilsScript) {\n // if the plugin is being initialised after the window.load event has already been fired\n if ($.fn[pluginName].windowLoaded) {\n $.fn[pluginName].loadUtils(this.options.utilsScript, this.utilsScriptDeferred);\n } else {\n // wait until the load event so we don't block any other requests e.g. the flags image\n $(window).on('load', () => {\n $.fn[pluginName].loadUtils(that.options.utilsScript, that.utilsScriptDeferred);\n });\n }\n } else {\n this.utilsScriptDeferred.resolve();\n }\n if (this.options.initialCountry === 'auto') {\n this._loadAutoCountry();\n } else {\n this.autoCountryDeferred.resolve();\n }\n },\n // perform the geo ip lookup\n _loadAutoCountry() {\n const that = this;\n // 3 options:\n // 1) already loaded (we're done)\n // 2) not already started loading (start)\n // 3) already started loading (do nothing - just wait for loading callback to fire)\n if ($.fn[pluginName].autoCountry) {\n this.handleAutoCountry();\n } else if (!$.fn[pluginName].startedLoadingAutoCountry) {\n // don't do this twice!\n $.fn[pluginName].startedLoadingAutoCountry = true;\n if (typeof this.options.geoIpLookup === 'function') {\n this.options.geoIpLookup((countryCode) => {\n $.fn[pluginName].autoCountry = countryCode.toLowerCase();\n // tell all instances the auto country is ready\n // TODO: this should just be the current instances\n // UPDATE: use setTimeout in case their geoIpLookup function calls this callback straight away (e.g. if they have already done the geo ip lookup somewhere else). Using setTimeout means that the current thread of execution will finish before executing this, which allows the plugin to finish initialising.\n setTimeout(() => {\n $('.intl-tel-input input').intlTelInput('handleAutoCountry');\n });\n });\n }\n }\n },\n // initialize any key listeners\n _initKeyListeners() {\n const that = this;\n // update flag on keyup\n // (keep this listener separate otherwise the setTimeout breaks all the tests)\n this.telInput.on(`keyup${this.ns}`, () => {\n if (that._updateFlagFromNumber(that.telInput.val())) {\n that._triggerCountryChange();\n }\n });\n // update flag on cut/paste events (now supported in all major browsers)\n this.telInput.on(`cut${this.ns} paste${this.ns}`, () => {\n // hack because \"paste\" event is fired before input is updated\n setTimeout(() => {\n if (that._updateFlagFromNumber(that.telInput.val())) {\n that._triggerCountryChange();\n }\n });\n });\n },\n // adhere to the input's maxlength attr\n _cap(number) {\n const max = this.telInput.attr('maxlength');\n return max && number.length > max ? number.substr(0, max) : number;\n },\n // listen for mousedown, focus and blur\n _initFocusListeners() {\n const that = this;\n // mousedown decides where the cursor goes, so if we're focusing we must preventDefault as we'll be inserting the dial code, and we want the cursor to be at the end no matter where they click\n this.telInput.on(`mousedown${this.ns}`, (e) => {\n if (!that.telInput.is(':focus') && !that.telInput.val()) {\n e.preventDefault();\n // but this also cancels the focus, so we must trigger that manually\n that.telInput.focus();\n }\n });\n // on focus: if empty, insert the dial code for the currently selected flag\n this.telInput.on(`focus${this.ns}`, (e) => {\n if (!that.telInput.val() && !that.telInput.prop('readonly') && that.selectedCountryData.dialCode) {\n // insert the dial code\n that.telInput.val(`+${that.selectedCountryData.dialCode}`);\n // after auto-inserting a dial code, if the first key they hit is '+' then assume they are entering a new number, so remove the dial code. use keypress instead of keydown because keydown gets triggered for the shift key (required to hit the + key), and instead of keyup because that shows the new '+' before removing the old one\n that.telInput.one(`keypress.plus${that.ns}`, (e) => {\n if (e.which == keys.PLUS) {\n that.telInput.val('');\n }\n });\n // after tabbing in, make sure the cursor is at the end we must use setTimeout to get outside of the focus handler as it seems the selection happens after that\n setTimeout(() => {\n const input = that.telInput[0];\n if (that.isGoodBrowser) {\n const len = that.telInput.val().length;\n input.setSelectionRange(len, len);\n }\n });\n }\n });\n // on blur or form submit: if just a dial code then remove it\n const form = this.telInput.prop('form');\n if (form) {\n $(form).on(`submit${this.ns}`, () => {\n that._removeEmptyDialCode();\n });\n }\n this.telInput.on(`blur${this.ns}`, () => {\n that._removeEmptyDialCode();\n });\n },\n _removeEmptyDialCode() {\n const value = this.telInput.val(); const\n startsPlus = value.charAt(0) == '+';\n if (startsPlus) {\n const numeric = this._getNumeric(value);\n // if just a plus, or if just a dial code\n if (!numeric || this.selectedCountryData.dialCode == numeric) {\n this.telInput.val('');\n }\n }\n // remove the keypress listener we added on focus\n this.telInput.off(`keypress.plus${this.ns}`);\n },\n // extract the numeric digits from the given string\n _getNumeric(s) {\n return s.replace(/\\D/g, '');\n },\n // show the dropdown\n _showDropdown() {\n this._setDropdownPosition();\n // update highlighting and scroll to active list item\n const activeListItem = this.countryList.children('.active');\n if (activeListItem.length) {\n this._highlightListItem(activeListItem);\n this._scrollTo(activeListItem);\n }\n // bind all the dropdown-related listeners: mouseover, click, click-off, keydown\n this._bindDropdownListeners();\n // update the arrow\n this.selectedFlagInner.children('.iti-arrow').addClass('up');\n this.telInput.trigger('open:countrydropdown');\n },\n // decide where to position dropdown (depends on position within viewport, and scroll)\n _setDropdownPosition() {\n const that = this;\n if (this.options.dropdownContainer) {\n this.dropdown.appendTo(this.options.dropdownContainer);\n }\n // show the menu and grab the dropdown height\n this.dropdownHeight = this.countryList.removeClass('hide').outerHeight();\n if (!this.isMobile) {\n const pos = this.telInput.offset(); const inputTop = pos.top; const windowTop = $(window).scrollTop();\n // dropdownFitsBelow = (dropdownBottom < windowBottom)\n\n const dropdownFitsBelow = inputTop + this.telInput.outerHeight() + this.dropdownHeight < windowTop + $(window).height(); const\n dropdownFitsAbove = inputTop - this.dropdownHeight > windowTop;\n // by default, the dropdown will be below the input. If we want to position it above the input, we add the dropup class.\n this.countryList.toggleClass('dropup', !dropdownFitsBelow && dropdownFitsAbove);\n // if dropdownContainer is enabled, calculate postion\n if (this.options.dropdownContainer) {\n // by default the dropdown will be directly over the input because it's not in the flow. If we want to position it below, we need to add some extra top value.\n const extraTop = !dropdownFitsBelow && dropdownFitsAbove ? 0 : this.telInput.innerHeight();\n // calculate placement\n this.dropdown.css({\n top: inputTop + extraTop,\n left: pos.left,\n });\n // close menu on window scroll\n $(window).on(`scroll${this.ns}`, () => {\n that._closeDropdown();\n });\n }\n }\n },\n // we only bind dropdown listeners when the dropdown is open\n _bindDropdownListeners() {\n const that = this;\n // when mouse over a list item, just highlight that one\n // we add the class \"highlight\", so if they hit \"enter\" we know which one to select\n this.countryList.on(`mouseover${this.ns}`, '.country', function (e) {\n that._highlightListItem($(this));\n });\n // listen for country selection\n this.countryList.on(`click${this.ns}`, '.country', function (e) {\n that._selectListItem($(this));\n });\n // click off to close\n // (except when this initial opening click is bubbling up)\n // we cannot just stopPropagation as it may be needed to close another instance\n let isOpening = true;\n $('html').on(`click${this.ns}`, (e) => {\n if (!isOpening) {\n that._closeDropdown();\n }\n isOpening = false;\n });\n // listen for up/down scrolling, enter to select, or letters to jump to country name.\n // use keydown as keypress doesn't fire for non-char keys and we want to catch if they\n // just hit down and hold it to scroll down (no keyup event).\n // listen on the document because that's where key events are triggered if no input has focus\n let query = '';\n\n\n let queryTimer = null;\n $(document).on(`keydown${this.ns}`, (e) => {\n // prevent down key from scrolling the whole page,\n // and enter key from submitting a form etc\n e.preventDefault();\n if (e.which == keys.UP || e.which == keys.DOWN) {\n // up and down to navigate\n that._handleUpDownKey(e.which);\n } else if (e.which == keys.ENTER) {\n // enter to select\n that._handleEnterKey();\n } else if (e.which == keys.ESC) {\n // esc to close\n that._closeDropdown();\n } else if (e.which >= keys.A && e.which <= keys.Z || e.which == keys.SPACE) {\n // upper case letters (note: keyup/keydown only return upper case letters)\n // jump to countries that start with the query string\n if (queryTimer) {\n clearTimeout(queryTimer);\n }\n query += String.fromCharCode(e.which);\n that._searchForCountry(query);\n // if the timer hits 1 second, reset the query\n queryTimer = setTimeout(() => {\n query = '';\n }, 1e3);\n }\n });\n },\n // highlight the next/prev item in the list (and ensure it is visible)\n _handleUpDownKey(key) {\n const current = this.countryList.children('.highlight').first();\n let next = key == keys.UP ? current.prev() : current.next();\n if (next.length) {\n // skip the divider\n if (next.hasClass('divider')) {\n next = key == keys.UP ? next.prev() : next.next();\n }\n this._highlightListItem(next);\n this._scrollTo(next);\n }\n },\n // select the currently highlighted item\n _handleEnterKey() {\n const currentCountry = this.countryList.children('.highlight').first();\n if (currentCountry.length) {\n this._selectListItem(currentCountry);\n }\n },\n // find the first list item whose name starts with the query string\n _searchForCountry(query) {\n for (let i = 0; i < this.countries.length; i++) {\n if (this._startsWith(this.countries[i].name, query)) {\n const listItem = this.countryList.children(`[data-country-code=${this.countries[i].iso2}]`).not('.preferred');\n // update highlighting and scroll\n this._highlightListItem(listItem);\n this._scrollTo(listItem, true);\n break;\n }\n }\n },\n // check if (uppercase) string a starts with string b\n _startsWith(a, b) {\n return a.substr(0, b.length).toUpperCase() == b;\n },\n // update the input's value to the given val (format first if possible)\n // NOTE: this is called from _setInitialState, handleUtils and setNumber\n _updateValFromNumber(number) {\n if (this.options.formatOnDisplay && window.intlTelInputUtils && this.selectedCountryData) {\n const format = !this.options.separateDialCode && (this.options.nationalMode || number.charAt(0) != '+') ? intlTelInputUtils.numberFormat.NATIONAL : intlTelInputUtils.numberFormat.INTERNATIONAL;\n number = intlTelInputUtils.formatNumber(number, this.selectedCountryData.iso2, format);\n }\n number = this._beforeSetNumber(number);\n this.telInput.val(number);\n },\n // check if need to select a new flag based on the given number\n // Note: called from _setInitialState, keyup handler, setNumber\n _updateFlagFromNumber(number) {\n // if we're in nationalMode and we already have US/Canada selected, make sure the number starts with a +1 so _getDialCode will be able to extract the area code\n // update: if we dont yet have selectedCountryData, but we're here (trying to update the flag from the number), that means we're initialising the plugin with a number that already has a dial code, so fine to ignore this bit\n if (number && this.options.nationalMode && this.selectedCountryData.dialCode == '1' && number.charAt(0) != '+') {\n if (number.charAt(0) != '1') {\n number = `1${number}`;\n }\n number = `+${number}`;\n }\n // try and extract valid dial code from input\n const dialCode = this._getDialCode(number); let countryCode = null; const\n numeric = this._getNumeric(number);\n if (dialCode) {\n // check if one of the matching countries is already selected\n const countryCodes = this.countryCodes[this._getNumeric(dialCode)]; const alreadySelected = $.inArray(this.selectedCountryData.iso2, countryCodes) > -1;\n // check if the given number contains a NANP area code i.e. the only dialCode that could be extracted was +1 (instead of say +1204) and the actual number's length is >=4\n\n const isNanpAreaCode = dialCode == '+1' && numeric.length >= 4; const\n nanpSelected = this.selectedCountryData.dialCode == '1';\n // only update the flag if:\n // A) NOT (we currently have a NANP flag selected, and the number is a regionlessNanp)\n // AND\n // B) either a matching country is not already selected OR the number contains a NANP area code (ensure the flag is set to the first matching country)\n if (!(nanpSelected && this._isRegionlessNanp(numeric)) && (!alreadySelected || isNanpAreaCode)) {\n // if using onlyCountries option, countryCodes[0] may be empty, so we must find the first non-empty index\n for (let j = 0; j < countryCodes.length; j++) {\n if (countryCodes[j]) {\n countryCode = countryCodes[j];\n break;\n }\n }\n }\n } else if (number.charAt(0) == '+' && numeric.length) {\n // invalid dial code, so empty\n // Note: use getNumeric here because the number has not been formatted yet, so could contain bad chars\n countryCode = '';\n } else if (!number || number == '+') {\n // empty, or just a plus, so default\n countryCode = this.defaultCountry;\n }\n if (countryCode !== null) {\n return this._setFlag(countryCode);\n }\n return false;\n },\n // check if the given number is a regionless NANP number (expects the number to contain an international dial code)\n _isRegionlessNanp(number) {\n const numeric = this._getNumeric(number);\n if (numeric.charAt(0) == '1') {\n const areaCode = numeric.substr(1, 3);\n return $.inArray(areaCode, regionlessNanpNumbers) > -1;\n }\n return false;\n },\n // remove highlighting from other list items and highlight the given item\n _highlightListItem(listItem) {\n this.countryListItems.removeClass('highlight');\n listItem.addClass('highlight');\n },\n // find the country data for the given country code\n // the ignoreOnlyCountriesOption is only used during init() while parsing the onlyCountries array\n _getCountryData(countryCode, ignoreOnlyCountriesOption, allowFail) {\n const countryList = ignoreOnlyCountriesOption ? allCountries : this.countries;\n for (let i = 0; i < countryList.length; i++) {\n if (countryList[i].iso2 == countryCode) {\n return countryList[i];\n }\n }\n if (allowFail) {\n return null;\n }\n throw new Error(`No country data for '${countryCode}'`);\n },\n // select the given flag, update the placeholder and the active list item\n // Note: called from _setInitialState, _updateFlagFromNumber, _selectListItem, setCountry\n _setFlag(countryCode) {\n const prevCountry = this.selectedCountryData.iso2 ? this.selectedCountryData : {};\n // do this first as it will throw an error and stop if countryCode is invalid\n this.selectedCountryData = countryCode ? this._getCountryData(countryCode, false, false) : {};\n // update the defaultCountry - we only need the iso2 from now on, so just store that\n if (this.selectedCountryData.iso2) {\n this.defaultCountry = this.selectedCountryData.iso2;\n }\n this.selectedFlagInner.attr('class', `iti-flag ${countryCode}`);\n // update the selected country's title attribute\n const title = countryCode ? `${this.selectedCountryData.name}: +${this.selectedCountryData.dialCode}` : 'Unknown';\n this.selectedFlagInner.parent().attr('title', title);\n if (this.options.separateDialCode) {\n const dialCode = this.selectedCountryData.dialCode ? `+${this.selectedCountryData.dialCode}` : '';\n\n\n const parent = this.telInput.parent();\n if (prevCountry.dialCode) {\n parent.removeClass(`iti-sdc-${prevCountry.dialCode.length + 1}`);\n }\n if (dialCode) {\n parent.addClass(`iti-sdc-${dialCode.length}`);\n }\n this.selectedDialCode.text(dialCode);\n }\n // and the input's placeholder\n this._updatePlaceholder();\n // update the active list item\n this.countryListItems.removeClass('active');\n if (countryCode) {\n this.countryListItems.find(`.iti-flag.${countryCode}`).first().closest('.country').addClass('active');\n }\n // return if the flag has changed or not\n return prevCountry.iso2 !== countryCode;\n },\n // update the input placeholder to an example number from the currently selected country\n _updatePlaceholder() {\n const shouldSetPlaceholder = this.options.autoPlaceholder === 'aggressive' || !this.hadInitialPlaceholder && (this.options.autoPlaceholder === true || this.options.autoPlaceholder === 'polite');\n if (window.intlTelInputUtils && shouldSetPlaceholder) {\n const numberType = intlTelInputUtils.numberType[this.options.placeholderNumberType]; let\n placeholder = this.selectedCountryData.iso2 ? intlTelInputUtils.getExampleNumber(this.selectedCountryData.iso2, this.options.nationalMode, numberType) : '';\n placeholder = this._beforeSetNumber(placeholder);\n if (typeof this.options.customPlaceholder === 'function') {\n placeholder = this.options.customPlaceholder(placeholder, this.selectedCountryData);\n }\n this.telInput.attr('placeholder', placeholder);\n }\n },\n // called when the user selects a list item from the dropdown\n _selectListItem(listItem) {\n // update selected flag and active list item\n const flagChanged = this._setFlag(listItem.attr('data-country-code'));\n this._closeDropdown();\n this._updateDialCode(listItem.attr('data-dial-code'), true);\n // focus the input\n this.telInput.focus();\n // put cursor at end - this fix is required for FF and IE11 (with nationalMode=false i.e. auto inserting dial code), who try to put the cursor at the beginning the first time\n if (this.isGoodBrowser) {\n const len = this.telInput.val().length;\n this.telInput[0].setSelectionRange(len, len);\n }\n if (flagChanged) {\n this._triggerCountryChange();\n }\n },\n // close the dropdown and unbind any listeners\n _closeDropdown() {\n this.countryList.addClass('hide');\n // update the arrow\n this.selectedFlagInner.children('.iti-arrow').removeClass('up');\n // unbind key events\n $(document).off(this.ns);\n // unbind click-off-to-close\n $('html').off(this.ns);\n // unbind hover and click listeners\n this.countryList.off(this.ns);\n // remove menu from container\n if (this.options.dropdownContainer) {\n if (!this.isMobile) {\n $(window).off(`scroll${this.ns}`);\n }\n this.dropdown.detach();\n }\n this.telInput.trigger('close:countrydropdown');\n },\n // check if an element is visible within it's container, else scroll until it is\n _scrollTo(element, middle) {\n const container = this.countryList; const containerHeight = container.height(); const containerTop = container.offset().top; const containerBottom = containerTop + containerHeight; const elementHeight = element.outerHeight(); const elementTop = element.offset().top; const elementBottom = elementTop + elementHeight; let newScrollTop = elementTop - containerTop + container.scrollTop(); const\n middleOffset = containerHeight / 2 - elementHeight / 2;\n if (elementTop < containerTop) {\n // scroll up\n if (middle) {\n newScrollTop -= middleOffset;\n }\n container.scrollTop(newScrollTop);\n } else if (elementBottom > containerBottom) {\n // scroll down\n if (middle) {\n newScrollTop += middleOffset;\n }\n const heightDifference = containerHeight - elementHeight;\n container.scrollTop(newScrollTop - heightDifference);\n }\n },\n // replace any existing dial code with the new one\n // Note: called from _selectListItem and setCountry\n _updateDialCode(newDialCode, hasSelectedListItem) {\n const inputVal = this.telInput.val(); let\n newNumber;\n // save having to pass this every time\n newDialCode = `+${newDialCode}`;\n if (inputVal.charAt(0) == '+') {\n // there's a plus so we're dealing with a replacement (doesn't matter if nationalMode or not)\n const prevDialCode = this._getDialCode(inputVal);\n if (prevDialCode) {\n // current number contains a valid dial code, so replace it\n newNumber = inputVal.replace(prevDialCode, newDialCode);\n } else {\n // current number contains an invalid dial code, so ditch it\n // (no way to determine where the invalid dial code ends and the rest of the number begins)\n newNumber = newDialCode;\n }\n } else if (this.options.nationalMode || this.options.separateDialCode) {\n // don't do anything\n return;\n } else {\n // nationalMode is disabled\n if (inputVal) {\n // there is an existing value with no dial code: prefix the new dial code\n newNumber = newDialCode + inputVal;\n } else if (hasSelectedListItem || !this.options.autoHideDialCode) {\n // no existing value and either they've just selected a list item, or autoHideDialCode is disabled: insert new dial code\n newNumber = newDialCode;\n } else {\n return;\n }\n }\n this.telInput.val(newNumber);\n },\n // try and extract a valid international dial code from a full telephone number\n // Note: returns the raw string inc plus character and any whitespace/dots etc\n _getDialCode(number) {\n let dialCode = '';\n // only interested in international numbers (starting with a plus)\n if (number.charAt(0) == '+') {\n let numericChars = '';\n // iterate over chars\n for (let i = 0; i < number.length; i++) {\n const c = number.charAt(i);\n // if char is number\n if ($.isNumeric(c)) {\n numericChars += c;\n // if current numericChars make a valid dial code\n if (this.countryCodes[numericChars]) {\n // store the actual raw string (useful for matching later)\n dialCode = number.substr(0, i + 1);\n }\n // longest dial code is 4 chars\n if (numericChars.length == 4) {\n break;\n }\n }\n }\n }\n return dialCode;\n },\n // get the input val, adding the dial code if separateDialCode is enabled\n _getFullNumber() {\n const val = $.trim(this.telInput.val()); const dialCode = this.selectedCountryData.dialCode; let prefix; const numericVal = this._getNumeric(val);\n // normalized means ensure starts with a 1, so we can match against the full dial code\n\n const normalizedVal = numericVal.charAt(0) == '1' ? numericVal : `1${numericVal}`;\n if (this.options.separateDialCode) {\n prefix = `+${dialCode}`;\n } else if (val.charAt(0) != '+' && val.charAt(0) != '1' && dialCode && dialCode.charAt(0) == '1' && dialCode.length == 4 && dialCode != normalizedVal.substr(0, 4)) {\n // if the user has entered a national NANP number, then ensure it includes the full dial code / area code\n prefix = dialCode.substr(1);\n } else {\n prefix = '';\n }\n return prefix + val;\n },\n // remove the dial code if separateDialCode is enabled\n _beforeSetNumber(number) {\n if (this.options.separateDialCode) {\n let dialCode = this._getDialCode(number);\n if (dialCode) {\n // US dialCode is \"+1\", which is what we want\n // CA dialCode is \"+1 123\", which is wrong - should be \"+1\" (as it has multiple area codes)\n // AS dialCode is \"+1 684\", which is what we want\n // Solution: if the country has area codes, then revert to just the dial code\n if (this.selectedCountryData.areaCodes !== null) {\n dialCode = `+${this.selectedCountryData.dialCode}`;\n }\n // a lot of numbers will have a space separating the dial code and the main number, and some NANP numbers will have a hyphen e.g. +1 684-733-1234 - in both cases we want to get rid of it\n // NOTE: don't just trim all non-numerics as may want to preserve an open parenthesis etc\n const start = number[dialCode.length] === ' ' || number[dialCode.length] === '-' ? dialCode.length + 1 : dialCode.length;\n number = number.substr(start);\n }\n }\n return this._cap(number);\n },\n // trigger the 'countrychange' event\n _triggerCountryChange() {\n this.telInput.trigger('countrychange', this.selectedCountryData);\n },\n /** ************************\n * SECRET PUBLIC METHODS\n ************************* */\n // this is called when the geoip call returns\n handleAutoCountry() {\n if (this.options.initialCountry === 'auto') {\n // we must set this even if there is an initial val in the input: in case the initial val is invalid and they delete it - they should see their auto country\n this.defaultCountry = $.fn[pluginName].autoCountry;\n // if there's no initial value in the input, then update the flag\n if (!this.telInput.val()) {\n this.setCountry(this.defaultCountry);\n }\n this.autoCountryDeferred.resolve();\n }\n },\n // this is called when the utils request completes\n handleUtils() {\n // if the request was successful\n if (window.intlTelInputUtils) {\n // if there's an initial value in the input, then format it\n if (this.telInput.val()) {\n this._updateValFromNumber(this.telInput.val());\n }\n this._updatePlaceholder();\n }\n this.utilsScriptDeferred.resolve();\n },\n /** ******************\n * PUBLIC METHODS\n ******************* */\n // remove plugin\n destroy() {\n if (this.allowDropdown) {\n // make sure the dropdown is closed (and unbind listeners)\n this._closeDropdown();\n // click event to open dropdown\n this.selectedFlagInner.parent().off(this.ns);\n // label click hack\n this.telInput.closest('label').off(this.ns);\n }\n // unbind submit event handler on form\n if (this.options.autoHideDialCode) {\n const form = this.telInput.prop('form');\n if (form) {\n $(form).off(this.ns);\n }\n }\n // unbind all events: key events, and focus/blur events if autoHideDialCode=true\n this.telInput.off(this.ns);\n // remove markup (but leave the original input)\n const container = this.telInput.parent();\n container.before(this.telInput).remove();\n },\n // get the extension from the current number\n getExtension() {\n if (window.intlTelInputUtils) {\n return intlTelInputUtils.getExtension(this._getFullNumber(), this.selectedCountryData.iso2);\n }\n return '';\n },\n // format the number to the given format\n getNumber(format) {\n if (window.intlTelInputUtils) {\n return intlTelInputUtils.formatNumber(this._getFullNumber(), this.selectedCountryData.iso2, format);\n }\n return '';\n },\n // get the type of the entered number e.g. landline/mobile\n getNumberType() {\n if (window.intlTelInputUtils) {\n return intlTelInputUtils.getNumberType(this._getFullNumber(), this.selectedCountryData.iso2);\n }\n return -99;\n },\n // get the country data for the currently selected flag\n getSelectedCountryData() {\n return this.selectedCountryData;\n },\n // get the validation error\n getValidationError() {\n if (window.intlTelInputUtils) {\n return intlTelInputUtils.getValidationError(this._getFullNumber(), this.selectedCountryData.iso2);\n }\n return -99;\n },\n // validate the input val - assumes the global function isValidNumber (from utilsScript)\n isValidNumber() {\n const val = $.trim(this._getFullNumber()); const\n countryCode = this.options.nationalMode ? this.selectedCountryData.iso2 : '';\n return window.intlTelInputUtils ? intlTelInputUtils.isValidNumber(val, countryCode) : null;\n },\n // update the selected flag, and update the input val accordingly\n setCountry(countryCode) {\n countryCode = countryCode.toLowerCase();\n // check if already selected\n if (!this.selectedFlagInner.hasClass(countryCode)) {\n this._setFlag(countryCode);\n this._updateDialCode(this.selectedCountryData.dialCode, false);\n this._triggerCountryChange();\n }\n },\n // set the input value and update the flag\n setNumber(number) {\n // we must update the flag first, which updates this.selectedCountryData, which is used for formatting the number before displaying it\n const flagChanged = this._updateFlagFromNumber(number);\n this._updateValFromNumber(number);\n if (flagChanged) {\n this._triggerCountryChange();\n }\n },\n // set the placeholder number typ\n setPlaceholderNumberType(type) {\n this.options.placeholderNumberType = type;\n this._updatePlaceholder();\n },\n };\n // using https://github.com/jquery-boilerplate/jquery-boilerplate/wiki/Extending-jQuery-Boilerplate\n // (adapted to allow public functions)\n $.fn[pluginName] = function (options) {\n const args = arguments;\n // Is the first parameter an object (options), or was omitted,\n // instantiate a new instance of the plugin.\n if (options === undefined || typeof options === 'object') {\n // collect all of the deferred objects for all instances created with this selector\n const deferreds = [];\n this.each(function () {\n if (!$.data(this, `plugin_${pluginName}`)) {\n const instance = new Plugin(this, options);\n const instanceDeferreds = instance._init();\n // we now have 2 deffereds: 1 for auto country, 1 for utils script\n deferreds.push(instanceDeferreds[0]);\n deferreds.push(instanceDeferreds[1]);\n $.data(this, `plugin_${pluginName}`, instance);\n }\n });\n // return the promise from the \"master\" deferred object that tracks all the others\n return $.when.apply(null, deferreds);\n } if (typeof options === 'string' && options[0] !== '_') {\n // If the first parameter is a string and it doesn't start\n // with an underscore or \"contains\" the `init`-function,\n // treat this as a call to a public method.\n // Cache the method call to make it possible to return a value\n let returns;\n this.each(function () {\n const instance = $.data(this, `plugin_${pluginName}`);\n // Tests that there's already a plugin-instance\n // and checks that the requested public method exists\n if (instance instanceof Plugin && typeof instance[options] === 'function') {\n // Call the method of our plugin instance,\n // and pass it the supplied arguments.\n returns = instance[options](...Array.prototype.slice.call(args, 1));\n }\n // Allow instances to be destroyed via the 'destroy' method\n if (options === 'destroy') {\n $.data(this, `plugin_${pluginName}`, null);\n }\n });\n // If the earlier cached method gives a value back return the value,\n // otherwise return this to preserve chainability.\n return returns !== undefined ? returns : this;\n }\n };\n /** ******************\n * STATIC METHODS\n ******************* */\n // get the country data object\n $.fn[pluginName].getCountryData = function () {\n return allCountries;\n };\n // load the utils script\n $.fn[pluginName].loadUtils = function (path, utilsScriptDeferred) {\n if (!$.fn[pluginName].loadedUtilsScript) {\n // don't do this twice! (dont just check if window.intlTelInputUtils exists as if init plugin multiple times in quick succession, it may not have finished loading yet)\n $.fn[pluginName].loadedUtilsScript = true;\n // dont use $.getScript as it prevents caching\n $.ajax({\n type: 'GET',\n url: path,\n complete() {\n // tell all instances that the utils request is complete\n $('.intl-tel-input input').intlTelInput('handleUtils');\n },\n dataType: 'script',\n cache: true,\n });\n } else if (utilsScriptDeferred) {\n utilsScriptDeferred.resolve();\n }\n };\n // default options\n $.fn[pluginName].defaults = defaults;\n // version\n $.fn[pluginName].version = '12.1.3';\n // Array of country objects for the flag dropdown.\n // Here is the criteria for the plugin to support a given country/territory\n // - It has an iso2 code: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2\n // - It has it's own country calling code (it is not a sub-region of another country): https://en.wikipedia.org/wiki/List_of_country_calling_codes\n // - It has a flag in the region-flags project: https://github.com/behdad/region-flags/tree/gh-pages/png\n // - It is supported by libphonenumber (it must be listed on this page): https://github.com/googlei18n/libphonenumber/blob/master/resources/ShortNumberMetadata.xml\n // Each country array has the following information:\n // [\n // Country name,\n // iso2 code,\n // International dial code,\n // Order (if >1 country with same dial code),\n // Area codes\n // ]\n var allCountries = [['Afghanistan', 'af', '93'], ['Albania', 'al', '355'], ['Algeria', 'dz', '213'], ['American Samoa', 'as', '1684'], ['Andorra', 'ad', '376'], ['Angola', 'ao', '244'], ['Anguilla', 'ai', '1264'], ['Antigua and Barbuda', 'ag', '1268'], ['Argentina', 'ar', '54'], ['Armenia', 'am', '374'], ['Aruba', 'aw', '297'], ['Australia', 'au', '61', 0], ['Austria', 'at', '43'], ['Azerbaijan', 'az', '994'], ['Bahamas', 'bs', '1242'], ['Bahrain', 'bh', '973'], ['Bangladesh', 'bd', '880'], ['Barbados', 'bb', '1246'], ['Belarus', 'by', '375'], ['Belgium', 'be', '32'], ['Belize', 'bz', '501'], ['Benin', 'bj', '229'], ['Bermuda', 'bm', '1441'], ['Bhutan', 'bt', '975'], ['Bolivia', 'bo', '591'], ['Bosnia and Herzegovina', 'ba', '387'], ['Botswana', 'bw', '267'], ['Brazil', 'br', '55'], ['British Indian Ocean Territory', 'io', '246'], ['British Virgin Islands', 'vg', '1284'], ['Brunei', 'bn', '673'], ['Bulgaria', 'bg', '359'], ['Burkina Faso', 'bf', '226'], ['Burundi', 'bi', '257'], ['Cambodia', 'kh', '855'], ['Cameroon', 'cm', '237'], ['Canada', 'ca', '1', 1, ['204', '226', '236', '249', '250', '289', '306', '343', '365', '387', '403', '416', '418', '431', '437', '438', '450', '506', '514', '519', '548', '579', '581', '587', '604', '613', '639', '647', '672', '705', '709', '742', '778', '780', '782', '807', '819', '825', '867', '873', '902', '905']], ['Cape Verde', 'cv', '238'], ['Caribbean Netherlands', 'bq', '599', 1], ['Cayman Islands', 'ky', '1345'], ['Central African Republic', 'cf', '236'], ['Chad', 'td', '235'], ['Chile', 'cl', '56'], ['China', 'cn', '86'], ['Christmas Island', 'cx', '61', 2], ['Cocos (Keeling) Islands', 'cc', '61', 1], ['Colombia', 'co', '57'], ['Comoros', 'km', '269'], ['Congo (DRC)', 'cd', '243'], ['Congo (Republic)', 'cg', '242'], ['Cook Islands', 'ck', '682'], ['Costa Rica', 'cr', '506'], ['Côte d’Ivoire', 'ci', '225'], ['Croatia', 'hr', '385'], ['Cuba', 'cu', '53'], ['Curaçao', 'cw', '599', 0], ['Cyprus', 'cy', '357'], ['Czech Republic', 'cz', '420'], ['Denmark', 'dk', '45'], ['Djibouti', 'dj', '253'], ['Dominica', 'dm', '1767'], ['Dominican Republic', 'do', '1', 2, ['809', '829', '849']], ['Ecuador', 'ec', '593'], ['Egypt', 'eg', '20'], ['El Salvador', 'sv', '503'], ['Equatorial Guinea', 'gq', '240'], ['Eritrea', 'er', '291'], ['Estonia', 'ee', '372'], ['Ethiopia', 'et', '251'], ['Falkland Islands', 'fk', '500'], ['Faroe Islands', 'fo', '298'], ['Fiji', 'fj', '679'], ['Finland', 'fi', '358', 0], ['France', 'fr', '33'], ['French Guiana', 'gf', '594'], ['French Polynesia', 'pf', '689'], ['Gabon', 'ga', '241'], ['Gambia', 'gm', '220'], ['Georgia', 'ge', '995'], ['Germany', 'de', '49'], ['Ghana', 'gh', '233'], ['Gibraltar', 'gi', '350'], ['Greece', 'gr', '30'], ['Greenland', 'gl', '299'], ['Grenada', 'gd', '1473'], ['Guadeloupe', 'gp', '590', 0], ['Guam', 'gu', '1671'], ['Guatemala', 'gt', '502'], ['Guernsey', 'gg', '44', 1], ['Guinea', 'gn', '224'], ['Guinea-Bissau', 'gw', '245'], ['Guyana', 'gy', '592'], ['Haiti', 'ht', '509'], ['Honduras', 'hn', '504'], ['Hong Kong', 'hk', '852'], ['Hungary', 'hu', '36'], ['Iceland', 'is', '354'], ['India', 'in', '91'], ['Indonesia', 'id', '62'], ['Iran', 'ir', '98'], ['Iraq', 'iq', '964'], ['Ireland', 'ie', '353'], ['Isle of Man', 'im', '44', 2], ['Israel', 'il', '972'], ['Italy', 'it', '39', 0], ['Jamaica', 'jm', '1876'], ['Japan', 'jp', '81'], ['Jersey', 'je', '44', 3], ['Jordan', 'jo', '962'], ['Kazakhstan', 'kz', '7', 1], ['Kenya', 'ke', '254'], ['Kiribati', 'ki', '686'], ['Kosovo', 'xk', '383'], ['Kuwait', 'kw', '965'], ['Kyrgyzstan', 'kg', '996'], ['Laos', 'la', '856'], ['Latvia', 'lv', '371'], ['Lebanon', 'lb', '961'], ['Lesotho', 'ls', '266'], ['Liberia', 'lr', '231'], ['Libya', 'ly', '218'], ['Liechtenstein', 'li', '423'], ['Lithuania', 'lt', '370'], ['Luxembourg', 'lu', '352'], ['Macau', 'mo', '853'], ['Macedonia', 'mk', '389'], ['Madagascar', 'mg', '261'], ['Malawi', 'mw', '265'], ['Malaysia', 'my', '60'], ['Maldives', 'mv', '960'], ['Mali', 'ml', '223'], ['Malta', 'mt', '356'], ['Marshall Islands', 'mh', '692'], ['Martinique', 'mq', '596'], ['Mauritania', 'mr', '222'], ['Mauritius', 'mu', '230'], ['Mayotte', 'yt', '262', 1], ['Mexico', 'mx', '52'], ['Micronesia', 'fm', '691'], ['Moldova', 'md', '373'], ['Monaco', 'mc', '377'], ['Mongolia', 'mn', '976'], ['Montenegro', 'me', '382'], ['Montserrat', 'ms', '1664'], ['Morocco', 'ma', '212', 0], ['Mozambique', 'mz', '258'], ['Myanmar (Burma)', 'mm', '95'], ['Namibia', 'na', '264'], ['Nauru', 'nr', '674'], ['Nepal', 'np', '977'], ['Netherlands', 'nl', '31'], ['New Caledonia', 'nc', '687'], ['New Zealand', 'nz', '64'], ['Nicaragua', 'ni', '505'], ['Niger', 'ne', '227'], ['Nigeria', 'ng', '234'], ['Niue', 'nu', '683'], ['Norfolk Island', 'nf', '672'], ['North Korea', 'kp', '850'], ['Northern Mariana Islands', 'mp', '1670'], ['Norway', 'no', '47', 0], ['Oman', 'om', '968'], ['Pakistan', 'pk', '92'], ['Palau', 'pw', '680'], ['Palestine', 'ps', '970'], ['Panama', 'pa', '507'], ['Papua New Guinea', 'pg', '675'], ['Paraguay', 'py', '595'], ['Peru', 'pe', '51'], ['Philippines', 'ph', '63'], ['Poland', 'pl', '48'], ['Portugal', 'pt', '351'], ['Puerto Rico', 'pr', '1', 3, ['787', '939']], ['Qatar', 'qa', '974'], ['Réunion', 're', '262', 0], ['Romania', 'ro', '40'], ['Russia', 'ru', '7', 0], ['Rwanda', 'rw', '250'], ['Saint Barthélemy', 'bl', '590', 1], ['Saint Helena', 'sh', '290'], ['Saint Kitts and Nevis', 'kn', '1869'], ['Saint Lucia', 'lc', '1758'], ['Saint Martin', 'mf', '590', 2], ['Saint Pierre and Miquelon', 'pm', '508'], ['Saint Vincent and the Grenadines', 'vc', '1784'], ['Samoa', 'ws', '685'], ['San Marino', 'sm', '378'], ['São Tomé and Príncipe', 'st', '239'], ['Saudi Arabia', 'sa', '966'], ['Senegal', 'sn', '221'], ['Serbia', 'rs', '381'], ['Seychelles', 'sc', '248'], ['Sierra Leone', 'sl', '232'], ['Singapore', 'sg', '65'], ['Sint Maarten', 'sx', '1721'], ['Slovakia', 'sk', '421'], ['Slovenia', 'si', '386'], ['Solomon Islands', 'sb', '677'], ['Somalia', 'so', '252'], ['South Africa', 'za', '27'], ['South Korea', 'kr', '82'], ['South Sudan', 'ss', '211'], ['Spain', 'es', '34'], ['Sri Lanka', 'lk', '94'], ['Sudan', 'sd', '249'], ['Suriname', 'sr', '597'], ['Svalbard and Jan Mayen', 'sj', '47', 1], ['Swaziland', 'sz', '268'], ['Sweden', 'se', '46'], ['Switzerland', 'ch', '41'], ['Syria', 'sy', '963'], ['Taiwan', 'tw', '886'], ['Tajikistan', 'tj', '992'], ['Tanzania', 'tz', '255'], ['Thailand', 'th', '66'], ['Timor-Leste', 'tl', '670'], ['Togo', 'tg', '228'], ['Tokelau', 'tk', '690'], ['Tonga', 'to', '676'], ['Trinidad and Tobago', 'tt', '1868'], ['Tunisia', 'tn', '216'], ['Turkey', 'tr', '90'], ['Turkmenistan', 'tm', '993'], ['Turks and Caicos Islands', 'tc', '1649'], ['Tuvalu', 'tv', '688'], ['U.S. Virgin Islands', 'vi', '1340'], ['Uganda', 'ug', '256'], ['Ukraine', 'ua', '380'], ['United Arab Emirates', 'ae', '971'], ['United Kingdom', 'gb', '44', 0], ['United States', 'us', '1', 0], ['Uruguay', 'uy', '598'], ['Uzbekistan', 'uz', '998'], ['Vanuatu', 'vu', '678'], ['Vatican City', 'va', '39', 1], ['Venezuela', 've', '58'], ['Vietnam', 'vn', '84'], ['Wallis and Futuna', 'wf', '681'], ['Western Sahara', 'eh', '212', 1], ['Yemen', 'ye', '967'], ['Zambia', 'zm', '260'], ['Zimbabwe', 'zw', '263'], ['Åland Islands', 'ax', '358', 1]];\n // loop over all of the countries above\n for (let i = 0; i < allCountries.length; i++) {\n const c = allCountries[i];\n allCountries[i] = {\n name: c[0],\n iso2: c[1],\n dialCode: c[2],\n priority: c[3] || 0,\n areaCodes: c[4] || null,\n };\n }\n}));\n","import $ from 'jquery';\nimport { onEvent, isLG } from '../util/domutils'; // eslint-disable-line import/named\nimport { EVENTS as FLYOUT_EVENTS } from './flyoutUnderHeader';\n\nconst CLASSES = {\n MENU: 'nav-menu',\n MENU_LEFT: 'nav-menu--left',\n MENU_RIGHT: 'nav-menu--right',\n MENU_VISIBLE: 'nav-menu--visible',\n MENU_TOGGLED: 'nav-menu--toggled',\n BACKGROUND_VISIBLE: 'show',\n MENU_TOGGLER_ACTIVE: 'expanded',\n BODY_MENU_TOGGLED_LEFT: 'nav-menu-toggled--left',\n BODY_MENU_TOGGLED_RIGHT: 'nav-menu-toggled--right',\n MENU_SLIDE: 'nav-menu--slide',\n TOUCH_FOCUS: 'touch-focus',\n CATEGORY_COLLAPSE: 'collapse',\n};\n\nconst ATTRIBUTES = {\n TOGGLE: 'data-toggle',\n DISABLED_TOGGLE: 'data-mobile-toggle',\n};\n\nconst SELECTORS = {\n MENU: `.${CLASSES.MENU}`,\n MENU_BODY: '.nav-menu__body',\n MENU_LINK: '.nav-menu__item-link',\n BACK_LINK: '.nav-menu__back-link',\n BACK_LINK_CONTAINER: '.nav-menu__back',\n SECOND_LEVEL_CATEGORIES: '.nav-menu__body .nav-menu__items--level-2',\n THIRD_LEVEL_CATEGORIES: '.nav-menu__body .nav-menu__items--level-3',\n MENU_TOGGLES: `[data-toggle='.${CLASSES.MENU}']`,\n BACKGROUND: '.modal-background',\n TOP_LEVEL_LINK: '.nav-menu__body .nav-menu__items--level-1 > .nav-menu__item > .nav-menu__item-link',\n TOGGLE: `[${ATTRIBUTES.TOGGLE}]`,\n DISABLED_TOGGLE: `[${ATTRIBUTES.DISABLED_TOGGLE}]`,\n get TOP_LEVEL_NAV_MENU_LINKS() { return `${this.MENU_LINK}--level-1`; },\n get SECOND_LEVEL_NAV_MENU_LINKS() { return `${this.MENU_LINK}--level-2`; },\n get EXPANDED_NAV_MENU_LINKS() { return `${this.MENU_LINK}[aria-expanded=\"true\"]`; },\n get COLLAPSE_NAV_MENU_LINKS() {\n return `${this.TOP_LEVEL_NAV_MENU_LINKS}, ${this.SECOND_LEVEL_NAV_MENU_LINKS}`;\n },\n};\n\nconst slideMenu = menu => menu.classList.contains(CLASSES.MENU_SLIDE);\n\nconst hasSubMenus = el => el.parentElement.querySelectorAll(SELECTORS.SECOND_LEVEL_CATEGORIES).length > 0;\n\nconst hideMenuOnTypeChange = (menu, menuToggles) => {\n window.addEventListener('resize', () => {\n if (isLG()) {\n const activeCollapseLinks = menu.querySelectorAll(SELECTORS.EXPANDED_NAV_MENU_LINKS);\n\n // Prevents expanded subcategory levels from leaving the desktop-style menu invisible\n activeCollapseLinks.forEach((link) => {\n let action;\n if (link.matches(SELECTORS.TOP_LEVEL_NAV_MENU_LINKS)) {\n action = 'hide';\n } else if (link.matches(SELECTORS.SECOND_LEVEL_NAV_MENU_LINKS)) {\n action = 'show';\n }\n\n if (action) {\n $(link.dataset.target).collapse(action);\n }\n });\n\n // Closest the mobile-style menu\n if (menu.classList.contains(CLASSES.MENU_VISIBLE)) {\n menuToggles[0].click();\n }\n }\n });\n};\n\nconst toggleCollapsesBehavior = (menu) => {\n ['load', 'resize'].forEach((event) => {\n window.addEventListener(event, () => {\n const collapseSelector = slideMenu(menu) ? SELECTORS.COLLAPSE_NAV_MENU_LINKS : SELECTORS.TOP_LEVEL_NAV_MENU_LINKS;\n const collapseTriggers = document.querySelectorAll(collapseSelector);\n const menuSelector = document.querySelector(SELECTORS.MENU);\n const menuCategories = document.querySelectorAll(SELECTORS.THIRD_LEVEL_CATEGORIES);\n\n menuCategories.forEach((categoryList) => {\n if (isLG() || !slideMenu(menu)) {\n categoryList.classList.remove(CLASSES.CATEGORY_COLLAPSE);\n } else {\n categoryList.classList.add(CLASSES.CATEGORY_COLLAPSE);\n }\n });\n\n if (isLG()) {\n menuSelector.classList.remove(CLASSES.MENU_TOGGLED);\n }\n\n collapseTriggers.forEach((trigger) => {\n if (isLG() || !hasSubMenus(trigger)) {\n trigger.setAttribute(ATTRIBUTES.DISABLED_TOGGLE, 'collapse');\n trigger.removeAttribute(ATTRIBUTES.TOGGLE);\n } else {\n trigger.setAttribute(ATTRIBUTES.TOGGLE, 'collapse');\n trigger.removeAttribute(ATTRIBUTES.DISABLED_TOGGLE);\n }\n });\n });\n });\n};\n\nconst initSlideBehavior = (menu) => {\n if (slideMenu(menu)) {\n document.querySelectorAll(SELECTORS.TOP_LEVEL_LINK).forEach((link) => {\n link.addEventListener('click', () => {\n if (!isLG() && hasSubMenus(link)) {\n menu.classList.add(CLASSES.MENU_TOGGLED);\n }\n });\n });\n document.querySelectorAll(SELECTORS.BACK_LINK).forEach((link) => {\n link.addEventListener('click', () => {\n menu.classList.remove(CLASSES.MENU_TOGGLED);\n });\n });\n }\n};\n\nconst getMenuToggledBodyClass = (menu) => {\n switch (true) {\n case menu.classList.contains(CLASSES.MENU_LEFT):\n return CLASSES.BODY_MENU_TOGGLED_LEFT;\n case menu.classList.contains(CLASSES.MENU_RIGHT):\n return CLASSES.BODY_MENU_TOGGLED_RIGHT;\n default:\n return null;\n }\n};\n\nconst restoreMobileMenuInitialState = (menu) => {\n setTimeout(() => {\n if (slideMenu(menu)) {\n menu.classList.remove(CLASSES.MENU_TOGGLED);\n\n $(SELECTORS.BACK_LINK_CONTAINER).collapse('hide');\n $(SELECTORS.SECOND_LEVEL_CATEGORIES).collapse('hide');\n $(SELECTORS.THIRD_LEVEL_CATEGORIES).collapse('show');\n } else {\n $(SELECTORS.COLLAPSE_NAV_MENU_LINKS).collapse('hide');\n }\n }, 500); // Ensures the reset is executed after the menu has closed, so it's not visible to the customer\n};\n\nconst toggleMenuElements = (menu, background, menuToggles, state) => {\n const menuBody = document.querySelector(SELECTORS.MENU_BODY);\n\n if (typeof state !== 'undefined') {\n menu.classList.toggle(CLASSES.MENU_VISIBLE, state);\n background.classList.toggle(CLASSES.BACKGROUND_VISIBLE, state);\n menuToggles.forEach((el) => {\n el.classList.toggle(CLASSES.MENU_TOGGLER_ACTIVE, state);\n });\n\n if (isLG()) {\n document.body.classList.remove(getMenuToggledBodyClass(menu));\n } else {\n document.body.classList.toggle(getMenuToggledBodyClass(menu), state);\n }\n } else {\n menu.classList.toggle(CLASSES.MENU_VISIBLE);\n background.classList.toggle(CLASSES.BACKGROUND_VISIBLE);\n menuToggles.forEach((el) => {\n el.classList.toggle(CLASSES.MENU_TOGGLER_ACTIVE);\n });\n\n if (isLG()) {\n document.body.classList.remove(getMenuToggledBodyClass(menu));\n } else {\n document.body.classList.toggle(getMenuToggledBodyClass(menu));\n }\n }\n\n if (menu.classList.contains(CLASSES.MENU_VISIBLE)) {\n document.dispatchEvent(new CustomEvent(FLYOUT_EVENTS.FLYOUT_OPEN, {\n detail: {\n content: menuBody,\n },\n }));\n } else {\n document.dispatchEvent(new CustomEvent(FLYOUT_EVENTS.FLYOUT_CLOSE, {\n detail: {\n content: menuBody,\n },\n }));\n\n restoreMobileMenuInitialState(menu);\n }\n};\n\nconst initMobileMenu = (menu, menuToggles, background) => {\n initSlideBehavior(menu);\n\n onEvent(document, 'click', SELECTORS.MENU_TOGGLES, () => {\n toggleMenuElements(menu, background, menuToggles);\n });\n\n document.addEventListener(FLYOUT_EVENTS.FLYOUT_OPEN, (e) => {\n const menuBody = document.querySelector(SELECTORS.MENU_BODY);\n\n if (menu.classList.contains(CLASSES.MENU_VISIBLE) && e.detail.content !== menuBody) {\n toggleMenuElements(menu, background, menuToggles, false);\n }\n });\n};\n\nconst initTouchNavigation = () => {\n const links = Array.from(document.querySelectorAll(SELECTORS.TOP_LEVEL_LINK));\n\n links.forEach((link) => {\n if (!hasSubMenus(link)) {\n return;\n }\n\n link.addEventListener('touchstart', (e) => {\n if (!link.getAttribute(ATTRIBUTES.TOGGLE) && !link.classList.contains(CLASSES.TOUCH_FOCUS)) {\n e.preventDefault();\n\n links.forEach((currentLink) => {\n currentLink.classList.toggle(CLASSES.TOUCH_FOCUS, currentLink === link);\n });\n }\n });\n\n link.addEventListener('click', (e) => {\n setTimeout(() => { // Move to the next tick to give time to the touchstart handler to add the class\n if (link.classList.contains(CLASSES.TOUCH_FOCUS)) {\n e.preventDefault();\n\n link.classList.remove(CLASSES.TOUCH_FOCUS);\n }\n });\n });\n });\n};\n\nexport default () => {\n const menu = document.querySelector(SELECTORS.MENU);\n const background = document.querySelector(SELECTORS.BACKGROUND);\n const menuToggles = document.querySelectorAll(SELECTORS.MENU_TOGGLES);\n\n if (menu && background && menuToggles) {\n initMobileMenu(menu, menuToggles, background);\n hideMenuOnTypeChange(menu, menuToggles);\n toggleCollapsesBehavior(menu);\n initTouchNavigation();\n }\n};\n","import $ from 'jquery';\nimport { loadContent, fetchOptionsGet } from '../util/fetchutils'; // eslint-disable-line import/named\nimport { outerHeightWithMargin, onEvent, isLG } from '../util/domutils'; // eslint-disable-line import/named\nimport { initFlyout, EVENTS as FLYOUT_EVENTS } from './flyoutUnderHeader';\nimport { EVENTS as HEADER_EVENTS } from './header';\n\nconst CONSTANTS = {\n TOGGLE_CLASS: 'show',\n MIN_BODY_HEIGHT: 75,\n HOVER_TIMEOUT: 400,\n COUNT_UPDATE_DISPLAY_TIME: 3000,\n};\n\nconst CLASSES = {\n LINK_HIGHLIGHTED: 'minicart-link--active',\n};\n\nconst SELECTORS = {\n PARENT: '.minicart',\n LINK: '.minicart-link',\n CONTAINER: '.minicart__pane',\n CONTAINER_INNER: '.minicart__container',\n CONTENT: '.minicart__content',\n HEADER: '.minicart__header',\n BODY: '.minicart__body',\n FOOTER: '.minicart__footer',\n CART_BTN: '.checkout-btn',\n CLOSE_BUTTON: '.minicart__close-btn',\n OPEN_BUTTON: '.header-element.minicart',\n TOTAL_QUANTITY: '.minicart .minicart-quantity',\n TOTAL_VALUE: '.minicart .minicart-grand-total',\n};\n\nconst NEWPDP = document.querySelector('.new-pdp');\nconst headerEle = document.querySelector('.compact-header');\n\n/**\n * After setting the total height of the minicart in regards to the page header,\n * calculates and sets the height of the minicart body's section\n * so that its footer gets stuck to the bottom of the content container\n *\n * @param {Element} container The minicart container\n * @param {Number} [pageHeaderHeight=] The height of the header to align against\n * @return {Number} The calculated max height for the body\n */\nconst setMiniCartBodyHeights = (container) => {\n const content = container.querySelector(SELECTORS.CONTENT);\n const header = container.querySelector(SELECTORS.HEADER);\n const body = container.querySelector(SELECTORS.BODY);\n const footer = container.querySelector(SELECTORS.FOOTER);\n\n if (header && body && footer) {\n const totalHeight = outerHeightWithMargin(content);\n const headerHeight = outerHeightWithMargin(header);\n const footerHeight = outerHeightWithMargin(footer);\n const bodyMaxHeight = totalHeight - headerHeight - footerHeight;\n\n body.style.maxHeight = `${bodyMaxHeight}px`;\n\n return bodyMaxHeight;\n }\n\n return null;\n};\n\n/**\n * Checks if the target of the passed in event is one of the elements\n * which should cause the minicart to be closed when clicked on\n *\n * @param {Event} e The event to check\n * @return {Boolean} True if the event represents a minicart close click\n */\nconst isClickOnCloseTrigger = (e) => {\n const closeBtn = document.querySelector(SELECTORS.CLOSE_BUTTON);\n\n return (!e.target.closest(SELECTORS.CONTAINER) && !e.target.closest(SELECTORS.PARENT))\n || e.target.closest(SELECTORS.CLOSE_BUTTON)\n || e.target === closeBtn;\n};\n\nconst showFlyout = (container) => {\n // Trigger global events to close any other open flyouts and position the minicart correctly\n document.dispatchEvent(new CustomEvent(HEADER_EVENTS.UPDATE_HEADER));\n\n document.dispatchEvent(new CustomEvent(FLYOUT_EVENTS.FLYOUT_OPEN, {\n detail: {\n flyout: container,\n },\n }));\n\n // Display the flyout\n container.classList.add(CONSTANTS.TOGGLE_CLASS);\n};\n\nconst displayFlyout = async (container, showFlyoutImmediately = true) => {\n const toggle = document.querySelector(SELECTORS.PARENT);\n const { actionUrl } = toggle.dataset;\n const innerContainer = container.querySelector(SELECTORS.CONTAINER_INNER);\n const body = document.querySelector('body');\n body.style.borderRightWidth = '17px';\n if (showFlyoutImmediately) {\n // Clear the stale minicart content before showing the flyout, so only the spinner is visible\n innerContainer.innerHTML = '';\n\n // Start the loading indicator in the flyout\n $(innerContainer).spinner().start();\n\n showFlyout(container);\n }\n\n // Load the minicart content\n const response = await fetch(actionUrl, fetchOptionsGet());\n const data = await response.text();\n\n // Populate the fresh minicart content in the flyout\n innerContainer.innerHTML = data;\n if (NEWPDP && headerEle && !isLG()) {\n headerEle.classList.add('active-flyout');\n }\n // Calculate the heights of the minicart elements so the footer is fixed at the bottom\n const bodyHeight = setMiniCartBodyHeights(container);\n\n if (!showFlyoutImmediately && bodyHeight && bodyHeight >= CONSTANTS.MIN_BODY_HEIGHT) {\n showFlyout(container);\n }\n\n // Remove the loading indicator\n $(innerContainer).spinner().stop();\n};\n\nconst closeFlyout = (container) => {\n const body = document.querySelector('body');\n body.style.borderRightWidth = '';\n container.classList.remove(CONSTANTS.TOGGLE_CLASS);\n if (NEWPDP && headerEle && !isLG()) {\n headerEle.classList.remove('active-flyout');\n }\n document.dispatchEvent(new CustomEvent(FLYOUT_EVENTS.FLYOUT_CLOSE, {\n detail: {\n flyout: container,\n },\n }));\n};\n\n/**\n * Initializes the logic which controls the displaying and closing of the minicart\n *\n * @param {Element} container The minicart container\n */\nconst initMiniCartToggle = (container) => {\n let miniCartDisplayTimeout;\n\n document.addEventListener('click', (e) => {\n if (container.classList.contains(CONSTANTS.TOGGLE_CLASS)) {\n // hide the minicart on click event outside the container or cross-icon click\n if (isClickOnCloseTrigger(e)) {\n closeFlyout(container);\n }\n }\n });\n\n onEvent(document, 'touchstart', SELECTORS.PARENT, (e) => {\n e.target.dataset.touch = true;\n });\n\n onEvent(document, 'mouseover', SELECTORS.PARENT, (e) => {\n const qtyContainer = document.querySelector(SELECTORS.TOTAL_QUANTITY);\n\n const touchEnabled = e.target.dataset.touch === 'true';\n const inMiniCart = e.target.closest(SELECTORS.CONTAINER);\n const miniCartShown = container.classList.contains(CONSTANTS.TOGGLE_CLASS);\n const hasItems = parseInt(qtyContainer.dataset.qt, 10) > 0;\n\n if (!touchEnabled && !inMiniCart && !miniCartShown && hasItems) {\n miniCartDisplayTimeout = setTimeout(() => {\n // show the minicart\n displayFlyout(container);\n }, window.miniCartHoverTimeout || CONSTANTS.HOVER_TIMEOUT);\n }\n\n // Prevent touches from stopping later hovers from working, e.g. on touch-screen laptops\n e.target.dataset.touch = false;\n });\n\n onEvent(document, 'mouseout', SELECTORS.PARENT, () => {\n clearTimeout(miniCartDisplayTimeout);\n });\n};\n\n/**\n * Handles changes to the total number of items in the cart\n */\nconst updateMiniCartTotal = (container) => {\n let closeAfterChangeTimeout;\n\n $(SELECTORS.PARENT).on('count:update', async (event, data) => {\n // update minicart link quantity and total in the header menu\n const cart = data.cart || data.basket || data;\n const countValue = cart.numItems;\n const totalValue = cart.totals.grandTotal;\n const totalAvailable = totalValue && totalValue !== '-' && totalValue !== 'N/A';\n\n const link = document.querySelector(SELECTORS.LINK);\n const qtyContainer = document.querySelector(SELECTORS.TOTAL_QUANTITY);\n const totalContainer = document.querySelector(SELECTORS.TOTAL_VALUE);\n const pageAction = document.querySelector('.page').dataset.action;\n const isFromCart = pageAction === 'Cart-Show';\n qtyContainer.innerHTML = countValue;\n qtyContainer.dataset.qt = countValue;\n\n totalContainer.innerHTML = totalAvailable ? totalValue : '';\n totalContainer.dataset.total = totalValue;\n\n if (countValue > 0 && !isFromCart && $('.ATBOverlayEnable').length < 1) {\n await displayFlyout(container, false);\n\n closeAfterChangeTimeout = setTimeout(() => {\n closeFlyout(container);\n }, CONSTANTS.COUNT_UPDATE_DISPLAY_TIME);\n }\n\n link.classList.toggle(CLASSES.LINK_HIGHLIGHTED, countValue > 0);\n });\n\n onEvent(document, 'mouseover', SELECTORS.CONTAINER_INNER, () => {\n clearTimeout(closeAfterChangeTimeout);\n });\n};\n\nconst updateMiniCart = async () => {\n const minicart = document.querySelector(SELECTORS.PARENT);\n\n if (minicart) {\n const { content } = await loadContent(minicart, null, null, false);\n\n minicart.innerHTML = content;\n\n const container = document.querySelector(SELECTORS.CONTAINER);\n\n if (container) {\n updateMiniCartTotal(container);\n\n if (container.dataset.initFlyoutUnderHeader) {\n initFlyout(container, setMiniCartBodyHeights, CONSTANTS.TOGGLE_CLASS);\n }\n\n initMiniCartToggle(container);\n }\n }\n};\n\nexport default async () => {\n updateMiniCart();\n};\n","import base from '~base';\n\nimport $ from 'jquery';\nimport debounce from '../util/debounce';\nimport { onEvent, visible } from '../util/domutils'; // eslint-disable-line import/named\nimport { functions as headerFunctions } from './header';\nimport { enableBodyScroll, disableBodyScroll } from 'body-scroll-lock';\nimport { loadContent } from '../util/fetchutils'; // eslint-disable-line import/named\n\nconst CLASSES = {\n SEARCH_FIELD: 'search-field',\n CLOSE_SEARCH: 'close-search',\n TRENDING_PANE: 'trending-suggestions',\n get TRENDING_PANE_ACTIVE() { return `${this.TRENDING_PANE}--active`; },\n};\n\nconst SELECTORS = {\n WRAPPER: '.suggestions-wrapper',\n SEARCH_FIELD: `.${CLASSES.SEARCH_FIELD}`,\n CLEAR_SEARCH: '.clear-search',\n TRENDING_PANE: `.${CLASSES.TRENDING_PANE}`,\n SEARCHESUGGESTIONS_PANE: '.suggestions',\n SUGGESTIONS_CLOSE: '.suggestions .close-search',\n LOAD_RECENT_SEARCH: '.trending-suggestions .js-load-recent-search',\n LOAD_POP_SEARCH: '.js-load-pop-search',\n};\n\nconst handleSuggestionsDisplay = () => {\n const headerHeight = headerFunctions.getHeaderHeight();\n const panes = document.querySelectorAll(SELECTORS.SEARCHESUGGESTIONS_PANE);\n\n panes.forEach((pane) => {\n const isVisible = visible(pane);\n const maxHeight = window.innerHeight - headerHeight;\n const isTallerThanWindow = pane.scrollHeight >= maxHeight;\n\n if (isVisible) {\n pane.style.maxHeight = `${maxHeight}px`;\n }\n\n if (isVisible && isTallerThanWindow) {\n disableBodyScroll(pane);\n } else {\n enableBodyScroll(pane);\n }\n });\n};\n\nconst loadRecentSearches = async () => {\n const recentSearch = document.querySelector(SELECTORS.LOAD_RECENT_SEARCH);\n if (recentSearch && recentSearch.children.length <= 0) {\n const { content } = await loadContent(recentSearch, null, null, false);\n\n recentSearch.innerHTML = content;\n }\n};\n\nconst toggleTrendingSuggestions = (field, trendingPane) => {\n loadRecentSearches();\n if (!field.value || field.value.length < 3) {\n trendingPane.classList.add(CLASSES.TRENDING_PANE_ACTIVE);\n } else {\n trendingPane.classList.remove(CLASSES.TRENDING_PANE_ACTIVE);\n }\n\n handleSuggestionsDisplay();\n};\n\nconst clearSearchField = () => {\n const clearSearchToggles = document.querySelectorAll(SELECTORS.CLEAR_SEARCH);\n\n clearSearchToggles.forEach((clearSearch) => {\n clearSearch.addEventListener('click', () => {\n const searchField = clearSearch.parentElement.parentElement.querySelector(SELECTORS.SEARCH_FIELD);\n\n if (searchField) {\n searchField.value = '';\n searchField.focus();\n searchField.click();\n }\n });\n });\n};\n\nconst trendingSuggestions = () => {\n const trendingPane = document.querySelector(SELECTORS.TRENDING_PANE);\n\n if (trendingPane) {\n const searchField = trendingPane.parentElement.querySelector(SELECTORS.SEARCH_FIELD);\n\n if (searchField) {\n const debounceTrending = debounce(toggleTrendingSuggestions, 300);\n\n ['keyup', 'click'].forEach((evt) => {\n searchField.addEventListener(evt, () => {\n debounceTrending(searchField, trendingPane);\n });\n });\n\n document.body.addEventListener('click', (e) => {\n if (\n e.target !== trendingPane\n && !trendingPane.contains(e.target)\n && !e.target.classList.contains(CLASSES.SEARCH_FIELD)\n ) {\n trendingPane.classList.remove(CLASSES.TRENDING_PANE_ACTIVE);\n }\n\n setTimeout(handleSuggestionsDisplay);\n });\n }\n }\n};\n\nconst closeSuggestions = () => {\n onEvent(document, 'click', SELECTORS.SUGGESTIONS_CLOSE, () => {\n const searchField = document.querySelector(SELECTORS.SEARCH_FIELD);\n\n if (searchField) {\n searchField.blur();\n searchField.parentElement.click();\n }\n });\n};\n\nconst handleSuggestionsVisibility = () => {\n const wrapper = document.querySelector(SELECTORS.WRAPPER);\n const url = wrapper && wrapper.dataset.url;\n\n $(document).ajaxComplete((e, xhr, options) => {\n if (url && options.url && options.url.indexOf(url) >= 0) {\n handleSuggestionsDisplay();\n }\n });\n\n window.addEventListener('resize', debounce(handleSuggestionsDisplay));\n};\n\nconst loadPopularSearches = async () => {\n const loadPopSearch = document.querySelector(SELECTORS.LOAD_POP_SEARCH);\n\n if (loadPopSearch) {\n const { content } = await loadContent(loadPopSearch, null, null, false);\n\n loadPopSearch.innerHTML = content;\n }\n};\n\nexport default () => {\n base();\n loadPopularSearches();\n clearSearchField();\n trendingSuggestions();\n closeSuggestions();\n handleSuggestionsVisibility();\n};\n","import { getJSONData } from '../util/domutils'; // eslint-disable-line import/named\nimport { handleSizeConversion } from '../../../../scripts/helpers/sizeHelpers';\n\nconst SELECTORS = {\n CONVERSION_DETAILS_SOURCE: '[data-size-conversions]',\n LABEL_CONVERSIONS: '[data-convert-label]',\n VALUE_CONVERSIONS: '[data-convert-value]',\n};\n\nexport default () => {\n const conversionDetailsSource = document.querySelector(SELECTORS.CONVERSION_DETAILS_SOURCE);\n const isShoe = document.getElementsByName('isShoeProduct').length > 0\n ? document.getElementsByName('isShoeProduct')[0] : null;\n\n if (conversionDetailsSource) {\n let conversionDetails = getJSONData(conversionDetailsSource, 'sizeConversions', null);\n if (isShoe && isShoe.value === 'true') { // this logic added for shoe size conversion.\n conversionDetails = getJSONData(conversionDetailsSource, 'shoeSizeConversions', null);\n }\n\n if (conversionDetails) {\n const labelConversions = document.querySelectorAll(SELECTORS.LABEL_CONVERSIONS);\n const valueConversions = document.querySelectorAll(SELECTORS.VALUE_CONVERSIONS);\n\n labelConversions.forEach((conversionEl) => {\n const isRemoveSizePrefix = conversionEl && conversionEl.classList.contains('remove-size-prefix');\n // eslint-disable-next-line max-len\n let targetText = isRemoveSizePrefix ? `${conversionEl.dataset.convertLabel}` : `${conversionDetails.prefix} ${conversionEl.dataset.convertLabel}`;\n\n if (conversionEl.dataset.convertLabel.indexOf('{0}') >= 0) {\n targetText = conversionEl.dataset.convertLabel.replace('{0}', conversionDetails.prefix);\n }\n\n conversionEl.innerText = targetText;\n });\n\n valueConversions.forEach((conversionEl) => {\n const baseValue = conversionEl.dataset.convertValue;\n // add some logic for shoe size conversion for PLP.\n const sibling = conversionEl.nextElementSibling;\n if (sibling && sibling.getAttribute('name') === 'isShoeProduct' && sibling.value === 'true') {\n conversionDetails = getJSONData(conversionDetailsSource, 'shoeSizeConversions', null);\n }\n conversionEl.innerText = handleSizeConversion(\n baseValue,\n conversionDetails.sizes.default,\n conversionDetails.sizes.current,\n window.beesfra && window.beesfra.config && window.beesfra.config.sizeConversionZeroPad,\n );\n });\n }\n }\n};\n","import '~base';\n\nimport $ from 'jquery';\n\nconst baseSpinner = $.fn.spinner;\n\nif (baseSpinner) {\n $.fn.spinner = function (...args) {\n const $element = $(this);\n\n const fn = baseSpinner.call(this, ...args);\n const fnStop = fn && fn.stop;\n\n if (fnStop) {\n /**\n * The base spinner plugin attaches a 'veiled' class on the parent element\n * when starting but checks the element itself for the class when stopping\n */\n fn.stop = function () {\n const $veil = $('.veil');\n\n /* eslint-disable jquery/no-class, jquery/no-parent, jquery/no-css */\n if ($element.length && $veil.parent().parent().hasClass('veiled')) {\n $veil.parent().parent().css('position', '');\n $veil.parent().parent().removeClass('veiled');\n }\n /* eslint-enable */\n\n fnStop.call(this);\n };\n }\n\n return fn;\n };\n}\n","import $ from 'jquery';\nimport { isLG } from '../util/domutils';\nimport throttle from './throttle';\n\nconst SELECTORS = {\n HEADER: '.header-sticky',\n PDP: '.rd_PDP',\n PRDDETAIL: 'product-detail',\n PRDSETDETAIL: 'product-set-detail',\n NEWPDP: '.new-pdp',\n BREADCRUMB: '.product-detail__top-row-container',\n PRODUCTDETAIL: '.product-detail__details-section',\n};\n\nconst CONSTANTS = {\n SCROLL_INTERVAL: 150,\n};\nlet PRD_DETAIL = document.getElementsByClassName(SELECTORS.PRDDETAIL);\nif (document.getElementsByClassName(SELECTORS.PRDSETDETAIL).length > 0) {\n PRD_DETAIL = document.getElementsByClassName(SELECTORS.PRDSETDETAIL);\n}\nconst PDP = document.querySelector(SELECTORS.PDP);\nconst NEWPDP = document.querySelector(SELECTORS.NEWPDP);\nconst header = document.querySelector(SELECTORS.HEADER);\nconst headerBanner = document.querySelector('.header-banner');\n\nexport const stickyHeaderScrollHandle = () => {\n let previousScrollPosition = 0;\n const isScrollingDown = () => {\n let goingDown = false;\n const scrollPosition = window.pageYOffset;\n if (scrollPosition >= header.offsetHeight && scrollPosition > previousScrollPosition) {\n goingDown = true;\n }\n previousScrollPosition = scrollPosition;\n return goingDown;\n };\n const handleScroll = () => {\n if (isScrollingDown()) {\n header.classList.add('scroll-down');\n header.classList.remove('scroll-up');\n } else {\n header.classList.add('scroll-up');\n header.classList.remove('scroll-down');\n }\n };\n const scrollThrottle = throttle(handleScroll, CONSTANTS.SCROLL_INTERVAL);\n if (header) {\n window.addEventListener('scroll', scrollThrottle);\n }\n};\n\nexport const stickyHeaderScrollHandlePDP = () => {\n const banner = document.querySelector('.header-banner');\n const PDPgallary = document.querySelector('#cld-gallery');\n let previousScrollPosition = 0;\n const isScrollingDown = () => {\n let goingDown = false;\n const scrollPosition = window.pageYOffset;\n if (scrollPosition >= banner.offsetHeight) {\n header.classList.add('scroll-up-top-bar');\n }\n const scrollDownFadeEffect = scrollPosition >= PDPgallary.offsetHeight - PRD_DETAIL[0].dataset.scrolldown;\n if (scrollPosition > previousScrollPosition && scrollDownFadeEffect) {\n goingDown = true;\n }\n const ScrollUpTransparentEffect = PDPgallary.offsetHeight - scrollPosition >= PRD_DETAIL[0].dataset.scrollup;\n if (PDPgallary.offsetHeight > scrollPosition && ScrollUpTransparentEffect && $('.rd_PDP').length === 0) {\n PDP.classList.add('rd_PDP');\n }\n previousScrollPosition = scrollPosition;\n return goingDown;\n };\n\n const handleHeader = () => {\n const scrollPosition = window.pageYOffset;\n const headerEle = document.querySelector('.compact-header');\n const globalebanner = document.querySelector('.fsbloaded') || document.querySelector('#FreeShippingBanner');\n let headerBannerHeight = headerBanner && headerBanner.getBoundingClientRect().height;\n const globalBannerHeight = globalebanner && globalebanner.getBoundingClientRect().height;\n const isGLobaleBanner = $('#FreeShippingBanner').length > 0 || $('.fsbloaded').lengh > 0;\n if (isLG()) {\n headerEle.style.top = 0;\n } else if (isGLobaleBanner || $('.new-promo-banner').length > 0) {\n if (isGLobaleBanner) {\n // eslint-disable-next-line no-const-assign\n const geBanPos = headerBanner.querySelector('.fsbloaded') || headerBanner.querySelector('#FreeShippingBanner');\n if (!(headerBanner && geBanPos)) {\n headerBannerHeight += globalBannerHeight;\n }\n }\n if (scrollPosition > headerBannerHeight) {\n // eslint-disable-next-line jquery/no-css\n $('.compact-header').css('top', 0);\n } else {\n headerEle.style.top = `${headerBannerHeight - $(window).scrollTop()}px`;\n }\n }\n };\n\n const handleScroll = () => {\n if (NEWPDP && !isLG()) {\n handleHeader();\n }\n if (isScrollingDown()) {\n header.classList.add('scroll-down');\n header.classList.remove('scroll-up');\n // eslint-disable-next-line jquery/no-class\n $('body').removeClass('rd_PDP');\n } else {\n if (window.pageYOffset >= PDPgallary.offsetHeight) {\n PDP.classList.remove('rd_PDP');\n }\n header.classList.add('scroll-up');\n header.classList.remove('scroll-down');\n }\n };\n\n if (header) {\n window.addEventListener('scroll', handleScroll);\n if (NEWPDP) {\n window.addEventListener('resize', handleHeader);\n }\n if (('.header-banner-bottom').length > 0) {\n $('.header-banner-bottom').remove();\n }\n }\n const checkPositionOfbanner = headerBanner && (window.pageYOffset <= headerBanner.getBoundingClientRect().height);\n if (('.new-promo-banner').length > 0 && !isLG() && checkPositionOfbanner) {\n // eslint-disable-next-line jquery/no-css\n $('.compact-header').css('top', headerBanner.getBoundingClientRect().height);\n }\n};\n\nfunction headerInit() {\n const globalebanner = document.querySelector('#FreeShippingBanner');\n const globaleBannerClass = document.querySelector('.fsbloaded');\n const headerBannerHeight = headerBanner && headerBanner.getBoundingClientRect().height;\n const isGLobaleBanner = $('#FreeShippingBanner').length > 0 || $('.fsbloaded').lengh > 0;\n let globalbanner;\n const geBanPos = headerBanner.querySelector('.fsbloaded') || headerBanner.querySelector('#FreeShippingBanner');\n if (globalebanner) {\n globalbanner = globalebanner && globalebanner.getBoundingClientRect().height;\n if (headerBanner && geBanPos) {\n globalbanner = 0;\n }\n }\n if (globaleBannerClass) {\n globalbanner = globaleBannerClass && globaleBannerClass.getBoundingClientRect().height;\n if (headerBanner && geBanPos) {\n globalbanner = 0;\n }\n }\n const totalBannerHeight = headerBannerHeight + globalbanner;\n if (isGLobaleBanner > 0) {\n // eslint-disable-next-line jquery/no-css\n if (('.new-promo-banner').length > 0) {\n // eslint-disable-next-line jquery/no-css\n $('.compact-header').css('top', totalBannerHeight);\n } else {\n // eslint-disable-next-line jquery/no-css\n $('.compact-header').css('top', globalbanner);\n }\n } else {\n // eslint-disable-next-line jquery/no-css\n $('.compact-header').css('top', headerBannerHeight);\n }\n}\n\nfunction dockImageCarouselToTop() {\n const headerHeight = header ? header.offsetHeight : 0;\n const productImages = document.querySelector('.product-detail__product-images');\n const productSetitem = document.querySelector('.set-items .product-detail__product-images');\n if (productSetitem && productSetitem.lengh === 0) {\n if (productImages && isLG()) {\n productImages.style.top = `${headerHeight + 15}px`;\n productImages.style.position = 'sticky';\n productImages.style.height = 'fit-content';\n } else {\n productImages.style.position = 'static';\n }\n }\n}\n\n// eslint-disable-next-line no-unused-vars\nfunction checkForGEBanner(mutations, observer) {\n // eslint-disable-next-line arrow-parens\n mutations.forEach(mutation => {\n mutation.addedNodes.forEach((node) => {\n if (node.nodeType === Node.ELEMENT_NODE) {\n // Check if the node has the desired ID or class\n if ((node.id === 'FreeShippingBanner' || node.classList.contains('fsbloaded')) && !isLG()) {\n headerInit();\n }\n }\n });\n });\n}\n\n// Create a MutationObserver instance\nif (NEWPDP) {\n const observer = new MutationObserver(checkForGEBanner);\n // Start observing the document's body for child list changes\n observer.observe(document.body, {\n childList: true,\n subtree: true,\n });\n}\n\nexport default () => {\n if (PRD_DETAIL.length && PDP) {\n stickyHeaderScrollHandlePDP();\n } else {\n stickyHeaderScrollHandle();\n }\n\n if (PRD_DETAIL.length > 0 && PRD_DETAIL[0].dataset.imagecarouselsticky === 'true' && NEWPDP) {\n dockImageCarouselToTop();\n window.addEventListener('resize', dockImageCarouselToTop);\n }\n};\n","/* eslint-disable no-multi-assign */\n/* eslint-disable no-param-reassign */\n/* eslint-disable vars-on-top */\nexport default function (func, wait, options) {\n let timeout;\n let context;\n let args;\n let result;\n let previous = 0;\n if (!options) options = {};\n\n const later = function () {\n previous = options.leading === false ? 0 : Date.now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n const throttled = function () {\n const nowTime = Date.now();\n if (!previous && options.leading === false) previous = nowTime;\n const remaining = wait - (nowTime - previous);\n context = this;\n // eslint-disable-next-line prefer-rest-params\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = nowTime;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n\n throttled.cancel = function () {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n}\n","/* eslint-disable jquery/no-class */\n/* eslint-disable max-len */\nimport $ from 'jquery';\nimport convertSizes from '../components/sizeConversions';\nimport { getSiblings, onEvent } from '../util/domutils'; // eslint-disable-line import/named\nimport { appendToUrl } from '../util/urlutils'; // eslint-disable-line import/named\nimport { loadContent, CONTENT_TYPES } from '../util/fetchutils'; // eslint-disable-line import/named\n\nconst CLASSES = {\n SWATCH: 'product-tile__swatch',\n TILE_IMAGE_CONTAINER: 'product-tile__image',\n TILE_IMAGE_CONTAINER_OVERLAY_SHOWN: 'product-tile__image--add-overlay',\n SWATCH_CURRENT: 'product-tile__swatch--current',\n OUT_OF_STOCK: 'outofstock',\n};\n\nconst SELECTORS = {\n TILE: '.product-tile',\n SWATCH: `.${CLASSES.SWATCH}`,\n TILE_IMAGE_CONTAINER: `.${CLASSES.TILE_IMAGE_CONTAINER}`,\n TILE_IMAGE: `.${CLASSES.TILE_IMAGE_CONTAINER} .tile-image`,\n PRIMARY_IMAGE: `.${CLASSES.TILE_IMAGE_CONTAINER} .primary-image`,\n ALTERNATE_IMAGE: `.${CLASSES.TILE_IMAGE_CONTAINER} .alternate-image`,\n ALTERNATE_TILE_IMAGE: `.${CLASSES.TILE_IMAGE_CONTAINER} img.alternate-image`,\n PDP_LINK: '.pdp-link .primary-image.link',\n ALTERNATE_PDP_LINK: '.pdp-link .alternate-image.link',\n ADD_TO_BAG_LINK: '.product-tile__action-add',\n ADD_TO_BAG_OVERLAY: '.product-tile__add-overlay',\n ADD_TO_BAG_OVERLAY_CLOSE: '.product-tile__add-overlay-close',\n PRICE_CONTAINER: '.product-tile__price .link',\n PROMO_CONTAINER: '.product-tile__promotions .link',\n SUGGESTIONS_LINK: '.suggestions-categories .product .link',\n};\n\nexport const EVENTS = {\n SWATCH_CHANGE: 'tile:swatch-changed',\n ADD_TO_BAG_OVERLAY_TOGGLE: 'tile:overlay-toggle',\n};\n\n/**\n * Retrieves all sibling color swatches of the parameter\n *\n * @param {Element} swatch The swatch whose siblings to retrieve\n * @return {Element[]} The sibling swatches\n */\nconst getSwatchSiblings = (swatch) => {\n const otherSwatches = getSiblings(swatch, (el) => {\n const isNode = !!el.classList;\n const isSwatch = isNode && el.classList.contains(CLASSES.SWATCH);\n const isOtherSwatch = isSwatch && el !== swatch;\n\n return isOtherSwatch;\n });\n\n return otherSwatches;\n};\n\n/**\n * Handles the necessary changes to a product tile whose color swatch has been clicked\n *\n * @param {Element} tile The tile to update\n * @param {Element} clickedSwatch The color swatch whose click needs to be handled\n */\nconst updateTileElements = (tile, clickedSwatch) => {\n const image = tile.querySelector(SELECTORS.TILE_IMAGE);\n const links = tile.querySelectorAll(SELECTORS.PDP_LINK);\n const addToBag = tile.querySelector(SELECTORS.ADD_TO_BAG_LINK);\n const priceContainer = tile.querySelector(SELECTORS.PRICE_CONTAINER);\n const promoContainer = tile.querySelector(SELECTORS.PROMO_CONTAINER);\n\n image.src = clickedSwatch.dataset.image;\n image.dataset.src = clickedSwatch.dataset.image;\n\n links.forEach((link) => {\n const hash = link.href.split('#')[1];\n\n link.href = clickedSwatch.href;\n\n if (hash) {\n link.href += `#${hash}`;\n }\n });\n\n if (addToBag) {\n addToBag.dataset.action = clickedSwatch.dataset.addToBagUrl;\n }\n\n if (priceContainer) {\n priceContainer.innerHTML = clickedSwatch.dataset.priceHtml;\n }\n\n if (promoContainer) {\n promoContainer.innerHTML = clickedSwatch.dataset.promoCalloutsHtml;\n }\n};\n\nconst updateTileElementsforAlternateImage = (tile, clickedSwatch) => {\n const alternateImage = tile.querySelector(SELECTORS.ALTERNATE_TILE_IMAGE);\n const links = tile.querySelectorAll(SELECTORS.ALTERNATE_PDP_LINK);\n const primaryImageCarouselItem = tile.querySelector(SELECTORS.PRIMARY_IMAGE);\n const AlternateImageCarouselItem = tile.querySelector(SELECTORS.ALTERNATE_IMAGE);\n\n if (alternateImage) {\n alternateImage.src = clickedSwatch.dataset.alternateImageUrl;\n alternateImage.dataset.src = clickedSwatch.dataset.alternateImageUrl;\n alternateImage.srcset = clickedSwatch.dataset.alternateImageSrcset;\n primaryImageCarouselItem.classList.add('active');\n AlternateImageCarouselItem.classList.remove('active');\n }\n\n if (links) {\n links.forEach((link) => {\n const hash = link.href.split('#')[1];\n\n link.href = clickedSwatch.href;\n\n if (hash) {\n link.href += `#${hash}`;\n }\n });\n }\n};\n\n/**\n * Ensures that the provided swatch gets marked as selected,\n * and all other swatches get marked as unselected\n *\n * @param {Element} clickedSwatch The swatch to select\n */\nconst handleSwatchSelection = (clickedSwatch) => {\n const otherSwatches = getSwatchSiblings(clickedSwatch);\n\n otherSwatches.forEach((otherSwatch) => {\n otherSwatch.classList.remove(CLASSES.SWATCH_CURRENT);\n });\n\n clickedSwatch.classList.add(CLASSES.SWATCH_CURRENT);\n};\n\nconst dispatchColorChangeEvent = (tile, selectedSwatch) => {\n const evt = new CustomEvent(EVENTS.SWATCH_CHANGE, {\n detail: {\n tile,\n selectedSwatch,\n },\n });\n\n document.dispatchEvent(evt);\n};\n\nconst dispatchAddToBagOverlayEvent = (tile, shown) => {\n const evt = new CustomEvent(EVENTS.ADD_TO_BAG_OVERLAY_TOGGLE, {\n detail: {\n tile,\n shown,\n },\n });\n\n document.dispatchEvent(evt);\n};\n\nconst displayAddToBagOverlay = async (addToBagLink) => {\n const { type: contentType, content } = await loadContent(addToBagLink);\n\n if (contentType === CONTENT_TYPES.TEXT) {\n const imageContainer = addToBagLink.closest(SELECTORS.TILE_IMAGE_CONTAINER);\n const existingOverlay = imageContainer.querySelector(SELECTORS.ADD_TO_BAG_OVERLAY);\n\n if (!existingOverlay) {\n imageContainer.innerHTML += content;\n imageContainer.classList.add(CLASSES.TILE_IMAGE_CONTAINER_OVERLAY_SHOWN);\n\n convertSizes();\n\n dispatchAddToBagOverlayEvent(imageContainer.closest(SELECTORS.TILE), true);\n }\n } else if (contentType === CONTENT_TYPES.JSON) {\n if (!content.error) {\n // eslint-disable-next-line jquery/no-trigger\n $('.minicart').trigger('count:update', content);\n if ($('.cart-page').length > 0 || $('#ATBRecommendationsModal').length > 0) {\n // eslint-disable-next-line jquery/no-trigger\n $.when($(addToBagLink).trigger('updateAddToCartFormData', content)).done(() => {\n // eslint-disable-next-line jquery/no-trigger\n $('body').trigger('product:afterAddToCart', content);\n });\n }\n }\n }\n};\n\nconst closeAddToBagOverlay = async (overlay) => {\n if (overlay) {\n const tile = overlay.closest(SELECTORS.TILE);\n const imageVeiled = overlay.closest(SELECTORS.TILE_IMAGE_CONTAINER);\n\n overlay.remove();\n\n imageVeiled.classList.remove('veiled');\n imageVeiled.style.position = null;\n imageVeiled.classList.remove(CLASSES.TILE_IMAGE_CONTAINER_OVERLAY_SHOWN);\n\n dispatchAddToBagOverlayEvent(tile, false);\n }\n};\n\nconst handleAddToBagActions = () => {\n let lastClickedButton = null;\n\n $(document).on('updateAddToCartFormData', (e, data) => {\n const button = e.target;\n\n data.pid = button.dataset.pid;\n data.quantity = button.dataset.minQuantity || data.quantity;\n\n lastClickedButton = button;\n }).on('product:afterAddToCart', () => {\n if (lastClickedButton) {\n const overlay = lastClickedButton.closest(SELECTORS.ADD_TO_BAG_OVERLAY);\n\n closeAddToBagOverlay(overlay);\n\n lastClickedButton = null;\n }\n });\n\n document.addEventListener(EVENTS.SWATCH_CHANGE, (e) => {\n const overlay = e.detail.tile.querySelector(SELECTORS.ADD_TO_BAG_OVERLAY);\n closeAddToBagOverlay(overlay);\n });\n};\n\nconst handleStickers = (tile, swatch) => {\n const { selectable } = swatch.dataset;\n tile.classList.remove(CLASSES.OUT_OF_STOCK);\n if (selectable !== 'true') {\n tile.classList.add(CLASSES.OUT_OF_STOCK);\n }\n};\n\nexport const colorSwatches = () => {\n $(document).on('click', SELECTORS.SWATCH, (e) => {\n e.preventDefault();\n\n const swatch = e.currentTarget;\n const tile = swatch.closest(SELECTORS.TILE);\n const showAltImgonPLP = tile.getAttribute('data-showaltimg');\n\n updateTileElements(tile, swatch);\n if (showAltImgonPLP !== null) {\n updateTileElementsforAlternateImage(tile, swatch);\n }\n handleSwatchSelection(swatch);\n handleStickers(tile, swatch);\n dispatchColorChangeEvent(tile, swatch);\n });\n};\n\nexport const quickAddToBag = () => {\n onEvent(document, 'click', SELECTORS.ADD_TO_BAG_LINK, async (e) => {\n e.preventDefault();\n\n if (!e.delegateTarget.classList.contains('disabled')) {\n displayAddToBagOverlay(e.delegateTarget);\n }\n });\n\n onEvent(document, 'click', SELECTORS.ADD_TO_BAG_OVERLAY_CLOSE, async (e) => {\n e.preventDefault();\n\n const overlay = e.delegateTarget.closest(SELECTORS.ADD_TO_BAG_OVERLAY);\n\n closeAddToBagOverlay(overlay);\n });\n\n handleAddToBagActions();\n};\n\nexport const addSearchSuggestionPhraseParam = () => {\n onEvent(document, 'click', SELECTORS.SUGGESTIONS_LINK, (e) => {\n let searchPhrase;\n const linkToPdp = e.delegateTarget;\n const searchInputs = document.querySelectorAll('.search-field');\n\n searchInputs.forEach((searchField) => {\n if (searchField.value !== '') {\n searchPhrase = searchField.value;\n }\n });\n\n if (searchPhrase) {\n e.preventDefault();\n window.location.href = appendToUrl(linkToPdp.href, { q: searchPhrase });\n }\n });\n};\n\nexport const preOrderVarient = () => {\n onEvent(document, 'click', '.product-tile__add-overlay-size', (e) => {\n const preOrderData = JSON.parse(e.srcElement.getAttribute('data-preOrderData'));\n const preOrderMessageContainer = e.srcElement.closest('.product-tile__add-overlay-sizes-container').querySelector('.product-tile__add-overlay-pre-order');\n const preOrderMessage = e.srcElement.closest('.product-tile__add-overlay-sizes-container').querySelector('.product-tile__add-overlay-pre-order-availability-message');\n if (preOrderData) {\n preOrderMessage.innerText = preOrderData.preorderAvailabilityMessage;\n if (preOrderMessageContainer.classList.contains('d-none')) {\n preOrderMessageContainer.classList.remove('d-none');\n }\n } else if (!preOrderMessageContainer.classList.contains('d-none')) {\n preOrderMessageContainer.classList.add('d-none');\n }\n });\n};\n\nexport const enableSlideonPLPAltImg = () => {\n if ($('.carousel').length > 0) {\n $('.carousel').on('touchstart', function (event) {\n const xClick = event.originalEvent.touches[0].pageX;\n $(this).one('touchmove', function (e) {\n const xMove = e.originalEvent.touches[0].pageX;\n const sensitivityInPx = 5;\n\n if (Math.floor(xClick - xMove) > sensitivityInPx) {\n $(this).carousel('next');\n } else if (Math.floor(xClick - xMove) < -sensitivityInPx) {\n $(this).carousel('prev');\n }\n });\n $(this).on('touchend', function () {\n $(this).off('touchmove');\n });\n });\n }\n};\n\ndocument.addEventListener('tile:overlay-toggle', () => {\n enableSlideonPLPAltImg();\n});\n\n$(document).on('click', '.bestprice .price-label, .bestprice-close-btn', (e) => {\n e.preventDefault();\n if ($('#bestprice').hasClass('d-none')) {\n $('.price-label').addClass('active');\n $('#bestprice').removeClass('d-none');\n // eslint-disable-next-line jquery/no-css\n $('.price-label').css('textDecoration', 'none');\n } else {\n $('#bestprice').addClass('d-none');\n $('.price-label').removeClass('active');\n // eslint-disable-next-line jquery/no-css\n $('.price-label').css('textDecoration', 'underline');\n }\n if ($('.bestprice-close-btn').hasClass('d-none')) {\n $('.bestprice-close-btn').removeClass('d-none');\n } else {\n $('.bestprice-close-btn').addClass('d-none');\n }\n});\n","import $ from 'jquery';\nimport { find, findFormFields, visible } from '../../util/domutils';\n\nexport const COLLAPSE_EVENTS = {\n FORMS_STATE_CHANGED: 'collapse:forms:change',\n};\n\nconst SELECTORS = {\n COLLAPSE: '.collapse',\n TABS: '[data-toggle=\"tab\"]',\n};\n\n/**\n * Sets the enabled/disabled state of all form elements found inside the element(s)\n * represented by the selector\n *\n * @param {Element[]} rootEls The elements to toggle the fields in\n * @param {boolean} enabled Whether to enable or disable the form fields\n */\nfunction toggleFormElementsState(rootEls, enabled) {\n rootEls.forEach((root) => {\n findFormFields(root).forEach((el) => {\n const parent = el.closest('div');\n const hiddenInput = el.type === 'hidden';\n const label = document.querySelector(`[for=\"${el.id}\"]`);\n const activeHiddenInput = hiddenInput && visible(parent);\n const activeToggle = label && visible(label);\n\n const elVisible = visible(el) || el.dataset.choice || activeHiddenInput || activeToggle;\n\n el.disabled = !el.dataset.forceEnabled && (!elVisible || !enabled);\n });\n\n if (enabled) {\n // Handle nested collapse and tab elements\n find(SELECTORS.TABS, root).forEach(el => toggleTabPanelFormElementsState.call(el));\n find(SELECTORS.COLLAPSE, root).forEach(el => toggleCollapseFormElementsState.call(el));\n }\n });\n}\n\n/**\n * Sets the enabled/disabled state of all form elements found inside the\n * tabpanel of the Bootstrap tab element passed in as a calling context\n *\n * @this {Element} el The element in whose tabpanel to toggle the fields in\n */\nfunction toggleTabPanelFormElementsState() {\n const targets = document.querySelectorAll(this.hash);\n const targetsArr = Array.prototype.slice.call(targets);\n\n toggleFormElementsState(targetsArr, this.classList.contains('active'));\n}\n\n/**\n * Sets the enabled/disabled state of all form elements found inside the\n * Bootstrap collapse element passed in as a calling context\n *\n * @this {Element} The element to toggle the fields in\n */\nfunction toggleCollapseFormElementsState() {\n toggleFormElementsState([this], this.classList.contains('show'));\n}\n\n/**\n * Finds all elements that correspond to the passed in selector\n * and calls the provided callback for each of them\n *\n * @param {string} selector The selector to use\n * @param {Function} callback The callback to execute\n */\nfunction handleExistingElements(selector, callback) {\n // Reversing the selected elements is the cheapest way to ensure that nested\n // tabs and collapses are handled depth-first\n Array.from(document.querySelectorAll(selector)).reverse().forEach(el => callback.call(el));\n\n document.dispatchEvent(new CustomEvent(COLLAPSE_EVENTS.FORMS_STATE_CHANGED));\n}\n\n/**\n * Initializes listeners that handle the state of form elements inside\n * Bootstrap collapse elements or tab panels\n *\n * @param {string} type The type of Bootstrap element to handle\n */\nfunction initElements(type) {\n let selector;\n let callback;\n\n switch (type) {\n case 'tab':\n selector = SELECTORS.TABS;\n callback = toggleTabPanelFormElementsState;\n break;\n\n case 'collapse':\n selector = SELECTORS.COLLAPSE;\n callback = toggleCollapseFormElementsState;\n break;\n\n default:\n }\n\n if (selector && callback) {\n // Handle elements currently on the page\n handleExistingElements(selector, callback);\n\n // Listen for the type's toggle events from user interaction\n $(document).on(`shown.bs.${type} hidden.bs.${type}`, selector, function () {\n callback.call(this);\n\n document.dispatchEvent(new CustomEvent(COLLAPSE_EVENTS.FORMS_STATE_CHANGED));\n });\n\n // Handle elements that get added as a result of AJAX calls\n const observer = new MutationObserver(handleExistingElements.bind(null, selector, callback));\n observer.observe(document, {\n childList: true,\n subtree: true,\n });\n }\n}\n\n/**\n * Initializes listeners that handle the state of form elements inside Bootstrap tab panel elements\n */\nfunction initTabs() {\n initElements('tab', SELECTORS.TABS, toggleTabPanelFormElementsState);\n}\n\n/**\n * Initializes listeners that handle the state of form elements inside Bootstrap collapse elements\n */\nfunction initCollapse() {\n initElements('collapse', SELECTORS.COLLAPSE, toggleCollapseFormElementsState);\n}\n\n/**\n * Ensure that any form elements inside collapse or tabpanel containers\n * get disabled when their parents get hidden and vice-versa\n */\nexport const toggleFormElementStates = () => {\n initTabs();\n initCollapse();\n};\n","'use strict';\n\nmodule.exports = function (include) {\n if (typeof include === 'function') {\n include();\n } else if (typeof include === 'object') {\n Object.keys(include).forEach(function (key) {\n if (typeof include[key] === 'function') {\n include[key]();\n }\n });\n }\n};\n","/**\n * This module represents a compatibility layer between the project and base code.\n *\n * The project code must be written using ES6 modules to meet the coding guidelines,\n * however, since its version 6, Babel has removed the compatibility for\n * require-ing ES6 modules, even if they only have a default export:\n * https://github.com/babel/babel/issues/2212\n *\n * This results in all calls to require that resolve to ES6 modules\n * (due to the dependency chain injection) returning an object with a 'default' field,\n * which contains the actual public export of the module.\n *\n * Normally this would be resolved with a Babel plugin:\n * https://www.npmjs.com/package/babel-plugin-add-module-exports\n *\n * However, the plugin requires that the used Babel preset be confiugured to use CommonJS modules.\n * Changing that setting would break the Webpack chunks, so what is done instead is that\n * the base cartridge's modules are transpiled to ES6 before the project code is introduced.\n * This leaves the only remaining hurdle to full compatibility being the processInclude function,\n * since the __webpack_exports__ function returns a Module instance in some cases, which has\n * a default field, containing the module's default export. Attempts to treat it as an\n * iterable object resolve in that 'default' field, which is not usable for this method.\n */\n\nimport base from '~base';\n\n/**\n * Intercepts processInclude calls to the base module,\n * and if the passed-in module is an ES6 module with a default export,\n * processes that default export instead of the exported module itself\n *\n * @param {Object} include The module to process\n */\nexport default function (include) {\n if (typeof include === 'object' && include.default) {\n base(include.default);\n } else {\n base(include);\n }\n}\n","const domParser = new DOMParser();\n\n/**\n * Get JSON data from a data-attribute\n *\n * @param el the DOM element that contains the data attribute\n * @param name the name of the data-attriute (without data- prefix)\n * @param defaultValue the default value\n *\n * @returns the parsed data\n */\nexport const getJSONData = (el, name, defaultValue) => {\n let result = defaultValue;\n const strData = el.dataset[name];\n if (strData) {\n try {\n const data = JSON.parse(strData);\n if (Array.isArray(data)) {\n result = data;\n } else {\n result = {\n ...defaultValue,\n ...data,\n };\n }\n } catch (ignore) {\n // ignore\n }\n }\n return result;\n};\n\n/**\n * Parses a string containing HTML and returns an array of the created elements.\n *\n * @param str the markup text\n *\n * @return the created elements as array\n */\nexport const parseHTMLString = str => Array.from(domParser.parseFromString(str, 'text/html').body.children);\n\n/**\n * Creates an element from the given string.\n *\n * @param str the markup text\n *\n * @returns the created element\n */\nexport const createElementFromString = (str) => {\n const parsed = parseHTMLString(str);\n let res;\n if (parsed.length) {\n res = parsed[0]; // eslint-disable-line prefer-destructuring\n }\n return res;\n};\n\n/**\n * Appends elements parsed from a string to an element.\n *\n * @param el the element to append\n * @param str the markup text\n * @param clear clear child elements before (default false)\n */\nexport const setElementHTML = (el, str, clear = false) => {\n if (clear) {\n el.innerHTML = '';\n }\n parseHTMLString(str).forEach((newEl) => {\n el.appendChild(newEl);\n });\n};\n\n/**\n * Event delegation.\n *\n * @param element the DOM element\n * @param eventName the event\n * @param selector selector for sub elements\n * @param fn the event handler function\n */\nexport const onEvent = (element, eventName, selector, fn) => {\n element.addEventListener(eventName, (e) => {\n let node = e.target || e.srcElement;\n for (; node && node !== element; node = node.parentNode) {\n if (node.matches(selector)) {\n e.delegateTarget = node;\n fn(e);\n }\n }\n });\n};\n\n/**\n * Gets the style property as rendered via any means (style sheets, inline, etc) but does *not* compute values\n * @param domNode - the node to get properties for\n * @param properties - Can be a single property to fetch or an array of properties to fetch\n */\nexport const getFinalStyle = (domNode, properties) => {\n if (!(properties instanceof Array)) {\n properties = [properties]; // eslint-disable-line no-param-reassign\n }\n\n const parent = domNode.parentNode;\n let originalDisplay;\n if (parent) {\n originalDisplay = parent.style.display;\n parent.style.display = 'none';\n }\n const computedStyles = getComputedStyle(domNode);\n\n const result = {};\n properties.forEach((prop) => {\n result[prop] = computedStyles[prop];\n });\n\n if (parent) {\n parent.style.display = originalDisplay;\n }\n\n return result;\n};\n\n/**\n * Get scroll top of document.\n */\nexport const getScrollTop = () => (document.documentElement ? document.documentElement.scrollTop : 0)\n || document.body.scrollTop;\n\n/**\n * Get the outer width with margin of an element.\n *\n * @param el the DOM element\n */\nexport const outerWidthWithMargin = (el) => {\n let width = el.offsetWidth;\n const style = getComputedStyle(el);\n\n width += parseInt(style.marginLeft, 10) + parseInt(style.marginRight, 10);\n return width;\n};\n\n/**\n * Get the outer height with margin of an element.\n *\n * @param el the DOM element\n */\nexport const outerHeightWithMargin = (el) => {\n let height = el.offsetHeight;\n const style = getComputedStyle(el);\n\n height += parseInt(style.marginTop, 10) + parseInt(style.marginBottom, 10);\n return height;\n};\n\n/**\n * Get sibling elements of the given element.\n *\n * @param el the DOM element\n * @param filter a filter function\n */\nexport const getSiblings = (el, filter) => {\n const siblings = [];\n el = el.parentNode.firstChild; // eslint-disable-line no-param-reassign\n do { // eslint-disable-line no-cond-assign\n if (!filter || filter(el)) siblings.push(el);\n } while (el = el.nextSibling); // eslint-disable-line no-param-reassign\n return siblings;\n};\n\n/**\n * Adds a class if not set.\n * @param element the element\n * @param className the class to add\n */\nexport const addClassIfNeeded = (element, className) => {\n const addNeeded = element && !element.classList.contains(className);\n if (addNeeded) {\n element.classList.add(className);\n }\n return addNeeded;\n};\n\n/**\n * Removes a class if set.\n * @param element the element\n * @param className the class to remove\n */\nexport const removeClassIfNeeded = (element, className) => {\n const removeNeeded = element && element.classList.contains(className);\n if (removeNeeded) {\n element.classList.remove(className);\n }\n return removeNeeded;\n};\n\n/**\n * Adds or removes a class if needed.\n * @param element the element\n * @param className the class to add or remove\n * @param add add or remove the class?\n */\nexport const addOrRemoveClassIfNeeded = (element, className, add) => (\n add ? addClassIfNeeded : removeClassIfNeeded)(element, className);\n","import { loadContent, CONTENT_TYPES } from './fetchutils';\n\n/**\n * Utility function to execute a selector lookup on the document,\n * an element or an array of elements\n *\n * @param {string} selector The selector to find\n * @param {Element|Element[]} [el=document] The element(s) relative to which to execute the lookup.\n * -If no parameter is provided, the page document is used.\n * If an array is provided, the query is executed on each of them,\n * and the results are flattened.\n * @return {Node[]} The nodes found by the query\n */\nexport const find = (selector, el) => {\n let safeEl = el;\n let childrenArr = [];\n\n if (!safeEl) {\n safeEl = document;\n } else if (typeof safeEl === 'string') {\n safeEl = Array.prototype.slice.call(document.querySelectorAll(safeEl));\n }\n\n if (Array.isArray(safeEl)) {\n childrenArr = safeEl\n .map(parentEl => parentEl.querySelectorAll(selector))\n .reduce((acc, children) => acc.concat(Array.prototype.slice.call(children)), []);\n } else {\n childrenArr = Array.prototype.slice.call(safeEl.querySelectorAll(selector));\n }\n\n return childrenArr;\n};\n\n/**\n * Convenience function to find all form fields in an element.\n *\n * @see find\n * @param {Element|Element[]} [el] The element(s) relative to which to execute the lookup.\n * @return {Node[]} The form field nodes found by the query\n */\nexport const findFormFields = el => find('input, select, textarea, output', el);\n\n/**\n * Determines whether a form element should ne included in its values hash\n *\n * @param {Element} element The element to check\n * @return {boolean} True if it should be included\n */\nconst useElement = (element) => {\n const { disabled, checked } = element;\n const selection = element.type === 'radio' || element.type === 'checkbox';\n\n return !disabled && (!selection || checked);\n};\n\n/**\n * Retrieves input data from a form and returns it as a JSON object.\n * @param {HTMLFormControlsCollection} elements the form elements\n * @return {Object} form data as an object literal\n */\nexport const getFormValuesObject = parent => findFormFields(parent).reduce((data, element) => {\n if (useElement(element)) {\n data[element.name] = element.value;\n }\n return data;\n}, {});\n\n\n/**\n * Populates the input attribute values of the form fields in the provided parent\n * so that they match their respective property values\n *\n * @param {HTMLFormControlsCollection} parent The parent of the elements to refresh\n */\nexport const refreshAttributes = (parent) => {\n findFormFields(parent).forEach((field) => {\n if (field.tagName.toLowerCase() === 'select') {\n const { value } = field;\n const selectedOption = Array.from(field.options).find(option => option.getAttribute('selected'));\n const valueOption = Array.from(field.options).find(option => option.value === value);\n\n if (selectedOption) {\n selectedOption.removeAttribute('selected');\n }\n\n if (valueOption) {\n valueOption.setAttribute('selected', 'selected');\n }\n } else {\n field.setAttribute('value', field.value);\n }\n\n if (field.checked) {\n field.setAttribute('checked', 'checked');\n } else {\n field.removeAttribute('checked');\n }\n\n if (field.disabled) {\n field.setAttribute('disabled', 'disabled');\n } else {\n field.removeAttribute('disabled');\n }\n });\n};\n\n/**\n * Loads in any remote includes that were returned in content in JSON responses as 'wainclude'\n */\nexport const populateRemoteIncludes = async () => {\n const remoteIncludes = Array.from(document.querySelectorAll('wainclude'));\n\n const operations = remoteIncludes.map(remoteInclude => loadContent(remoteInclude));\n const results = await Promise.all(operations);\n\n results.forEach((result, i) => {\n const { content, type } = result;\n\n if (type === CONTENT_TYPES.TEXT) {\n remoteIncludes[i].outerHTML = content;\n }\n });\n};\n\nexport const visible = el => el && !!(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n\n/**\n * Replaces the passed in component with the updated content\n *\n * @param {string} selector Selector for the element to replace\n * @param {string} content The HTML content to update the element with\n */\nexport const updateComponent = async (selector, content) => {\n const components = Array.from(document.querySelectorAll(selector));\n\n const operations = components.map((component) => {\n if (component && visible(component)) {\n if (content && content.length) {\n component.outerHTML = content;\n\n return populateRemoteIncludes();\n }\n\n component.remove();\n }\n\n return Promise.resolve();\n });\n\n await Promise.all(operations);\n};\n\n/**\n * Creates an event listener using the provided values, removing and potential duplicates beforehan\n *\n * @param {EventTarget} el The target to add a listener to\n * @param {string} evt The event to listen for\n * @param {Function} handler The event handler to attach\n */\nexport const addUniqueEventListener = (el, evt, handler) => {\n el.removeEventListener(evt, handler);\n el.addEventListener(evt, handler);\n};\n\n/**\n * Checks whether the current window width puts the user in the MD style breakpoint\n *\n * @return {boolean} True if MD\n */\nexport const isMD = () => window.matchMedia('(min-width: 769px)').matches;\n\n/**\n * Checks whether the current window width puts the user in the LG style breakpoint\n *\n * @return {boolean} True if LG\n */\nexport const isLG = () => window.matchMedia('(min-width: 992px)').matches;\n\n/**\n * Checks whether the current window width puts the user in the XL style breakpoint\n *\n * @return {boolean} True if XL\n */\nexport const isXL = () => window.matchMedia('(min-width: 1200px)').matches;\n\nexport const isIOS = () => navigator.userAgent.match(/(iPhone|iPod|iPad)/i);\n\nexport const innerHeight = (el) => {\n const style = window.getComputedStyle(el);\n\n const height = parseInt(style.height, 10) || 0;\n const paddingTop = parseInt(style.paddingTop, 10) || 0;\n const paddingBottom = parseInt(style.paddingBottom, 10) || 0;\n const borderTopWidth = parseInt(style.borderTopWidth, 10) || 0;\n const borderBottomWidth = parseInt(style.borderBottomWidth, 10) || 0;\n\n return height - paddingTop - paddingBottom - borderTopWidth - borderBottomWidth;\n};\n\n/**\n * Determines if the current page was navigated to via back or forward navigation\n *\n * @return {boolean} True if back/forward was used\n */\nexport const isBackForwardNavigation = () => {\n const LEGACY_BACKFW_TYPE = window.PerformanceNavigation && window.PerformanceNavigation.TYPE_BACK_FORWARD;\n\n const perf = window.performance;\n const legacyNavType = perf && perf.navigation && perf.navigation.type;\n const navEntry = perf && perf.getEntriesByType && perf.getEntriesByType('navigation')[0];\n\n const navEntryBackFw = navEntry && navEntry.type === 'back_forward';\n const legacyNavBackFw = legacyNavType && legacyNavType === LEGACY_BACKFW_TYPE;\n\n return !!(navEntryBackFw || legacyNavBackFw);\n};\n\n/**\n * @typedef {Object} ElementOffsets\n * @property {number} top The top offset\n * @property {number} left The left offset\n */\n/**\n * Calculates the offsets of the provided element from the document edges\n *\n * @param {Element} el The element to calculate for\n * @return {ElementOffsets}\n */\nexport const getElementOffset = (el) => {\n let top = 0;\n let left = 0;\n let element = el;\n\n do {\n top += element.offsetTop || 0;\n left += element.offsetLeft || 0;\n element = element.offsetParent;\n } while (element);\n\n return {\n top,\n left,\n };\n};\n\nexport * from '~base';\n","// URL manipulation\n// ================\n\nconst DUMMY_HOST_PROTOCOL = 'http://dummy';\n\nconst prepareURL = (url) => {\n let theURL;\n try {\n theURL = new URL(url);\n } catch (e) {\n if (url.indexOf('/') === 0) {\n theURL = new URL(url, DUMMY_HOST_PROTOCOL);\n } else {\n throw e;\n }\n }\n return theURL;\n};\n\nconst prepareURLString = (url) => {\n let urlString = url.toString();\n if (urlString.indexOf(`${DUMMY_HOST_PROTOCOL}/`) === 0) {\n urlString = urlString.substring(DUMMY_HOST_PROTOCOL.length);\n }\n return urlString;\n};\n\n/**\n * Attach object data to an existing URL.\n *\n * @param url the URL\n * @param data the data to attach\n */\nconst attachDataToURL = (url, data) => {\n const theURL = prepareURL(url);\n const searchParams = new URLSearchParams(theURL.search);\n Object.keys(data).forEach((key) => {\n let value = data[key];\n if (value === null || value === undefined) {\n value = '';\n }\n searchParams.set(key, value);\n });\n theURL.search = searchParams.toString();\n return prepareURLString(theURL);\n};\n\n/**\n * Remove parameters from the given URL.\n *\n * @param url the URL\n * @param paramsToRemove the params to remove\n */\nconst removeParamsFromURL = (url, paramsToRemove) => {\n const theURL = prepareURL(url);\n const searchParams = new URLSearchParams(theURL.search);\n paramsToRemove.forEach((param) => {\n searchParams.delete(param);\n });\n theURL.search = searchParams.toString();\n return prepareURLString(theURL);\n};\n\n\n// Preparation of form data\n// ========================\n\n/**\n * Create a new container for form data (can be FormData or URLSearchParams) and add an object to it.\n * @param object the object containing ghe data to add\n * @param FormDataContainer the form data container type\n */\nconst objToFormDataContainer = (object, FormDataContainer) => Object.keys(object).reduce((formData, key) => {\n formData.append(key, object[key]);\n return formData;\n}, new FormDataContainer());\n\n/**\n * Create a FormData object using an object.\n * @param object the object containing ghe data to add\n */\nconst getFormData = object => objToFormDataContainer(object, FormData);\n\n/**\n * Create a URLSearchParams object using an object.\n * @param object the object containing ghe data to add\n */\nconst getURLSearchParams = object => objToFormDataContainer(object, URLSearchParams);\n\n\n// Request preparation\n// ===================\n\n/**\n * General options for all types of fetch requests.\n */\nconst fetchGeneral = {\n credentials: 'same-origin',\n};\n\n/**\n * General headers for all types of fetch requests.\n */\nconst fetchHeadersGeneral = {\n 'X-Requested-With': 'XMLHttpRequest',\n};\n\n/**\n * Generate options for fetch requests.\n * This contains general options and headers.\n * @param options (optional) options for the request merged with the general options\n * @param additionalHeaders (optional) additional headers for the request merged with the general headers\n */\nconst fetchOptionsGeneral = (options = {}, additionalHeaders = {}) => ({\n ...fetchGeneral,\n headers: {\n ...fetchHeadersGeneral,\n ...additionalHeaders,\n },\n ...options,\n});\n\n/**\n * Generate options for GET requests.\n * This contains general options and headers.\n * @param options (optional) options for the request merged with the general options\n * @param additionalHeaders (optional) additional headers for the request merged with the general headers\n */\nconst fetchOptionsGet = (options = {}, additionalHeaders = {}) => fetchOptionsGeneral({\n method: 'GET',\n ...options,\n}, additionalHeaders);\n\n/**\n * Generate options for general POST requests.\n * This contains general options and headers.\n * @param body the body for the POST request\n * @param options (optional) options for the request merged with the general options\n * @param additionalHeaders (optional) additional headers for the request merged with the general headers\n */\nconst fetchOptionsPost = (body, options = {}, additionalHeaders = {}) => fetchOptionsGeneral({\n method: 'POST',\n body,\n ...options,\n}, additionalHeaders);\n\n// Exports\n// =======\n\nexport {\n attachDataToURL,\n removeParamsFromURL,\n getFormData,\n getURLSearchParams,\n fetchOptionsGeneral,\n fetchOptionsGet,\n fetchOptionsPost,\n};\n","import $ from 'jquery';\nimport { getFormValuesObject } from './domutils'; // eslint-disable-line import/named\nimport {\n fetchOptionsGet, fetchOptionsPost, getFormData, getURLSearchParams,\n} from '~base'; // eslint-disable-line import/named\n\nexport const CONTENT_TYPES = {\n TEXT: 'TEXT',\n JSON: 'JSON',\n};\n\nexport const CONTENT_TYPES_MAPS = {\n [CONTENT_TYPES.TEXT]: ['text/html', 'text/plain'],\n [CONTENT_TYPES.JSON]: ['text/json', 'application/json'],\n};\n\nconst isType = (typeParts, contentType) => typeParts.some(part => contentType.indexOf(part) >= 0);\n\nconst getResponseType = (response) => {\n let type = null;\n\n if (response) {\n const contentTypeHeader = response.headers.get('content-type') || '';\n const contentType = contentTypeHeader.toLowerCase();\n\n if (isType(CONTENT_TYPES_MAPS[CONTENT_TYPES.JSON], contentType)) {\n type = CONTENT_TYPES.JSON;\n } else if (isType(CONTENT_TYPES_MAPS[CONTENT_TYPES.TEXT], contentType)) {\n type = CONTENT_TYPES.TEXT;\n }\n }\n\n return type;\n};\n\nconst getResponseContent = async (response, type) => {\n let content;\n\n switch (type) {\n case CONTENT_TYPES.JSON:\n content = await response.json();\n break;\n\n case CONTENT_TYPES.TEXT:\n content = await response.text();\n break;\n\n default:\n content = null;\n }\n\n return content;\n};\n\nconst getUrl = (item) => {\n let url = item.href || item.action || item.dataset.action || item.getAttribute('url');\n\n if (url && url.indexOf('http') !== 0) {\n url = `${window.location.protocol}//${window.location.host}${url}`;\n }\n\n return url;\n};\n\nconst startSpinner = (urlSource) => {\n let spinnerContainer;\n const supportedTags = ['form', 'div', 'span', 'ul'];\n\n if (urlSource) {\n spinnerContainer = urlSource.closest('[data-spinner-target]');\n\n if (!spinnerContainer && supportedTags.indexOf(urlSource.tagName.toLowerCase()) >= 0) {\n spinnerContainer = urlSource;\n }\n }\n\n if (!spinnerContainer) {\n spinnerContainer = document.body;\n }\n\n $(spinnerContainer).spinner().start();\n\n return spinnerContainer;\n};\n\nexport const loadContent = async (trigger, loadUrl = null, additionalData = null, showSpinner = true) => {\n const urlSource = getUrl(trigger) ? trigger : trigger.form;\n\n let url = loadUrl || getUrl(urlSource);\n const method = (urlSource && (urlSource.method || urlSource.dataset.method)) || 'get';\n\n let options;\n let formValues = getFormValuesObject(urlSource);\n\n if (urlSource && urlSource.name && urlSource.tagName && urlSource.tagName.toLowerCase() === 'input') {\n let { value } = urlSource;\n\n if (urlSource.type === 'radio' || urlSource.type === 'checkbox') {\n value = urlSource.checked;\n }\n\n formValues = Object.assign({}, { [urlSource.name]: value }, formValues);\n }\n\n if (typeof additionalData === 'object') {\n formValues = Object.assign({}, additionalData, formValues);\n }\n\n if (method === 'post') {\n const formData = getFormData(formValues);\n\n options = fetchOptionsPost(formData);\n } else {\n const urlObject = new URL(url);\n const urlParams = new URLSearchParams(urlObject.search);\n const formUrlParams = getURLSearchParams(formValues);\n\n // eslint-disable-next-line no-restricted-syntax\n for (const formUrlParamName of formUrlParams.keys()) {\n urlParams.set(formUrlParamName, formUrlParams.get(formUrlParamName));\n }\n\n urlObject.search = urlParams.toString();\n url = urlObject.toString();\n\n options = fetchOptionsGet();\n }\n\n let spinner = null;\n if (showSpinner) {\n spinner = startSpinner(urlSource);\n }\n\n const response = await fetch(url, options);\n const type = getResponseType(response);\n const content = await getResponseContent(response, type);\n if (showSpinner) {\n $(spinner).spinner().stop();\n }\n\n return { url, type, content };\n};\n\nexport * from '~base';\n","import { getElementOffset, isLG } from './domutils';\n\n/**\n * Allows for consistently scrolling the viewport to a specified element\n *\n * @param {string|Element|number} targetSelector Selector for the element or Y offset to scroll to\n */\nexport default (targetSelector, smooth = true) => {\n let scrollTarget = targetSelector;\n\n if (typeof targetSelector === 'string') {\n scrollTarget = document.querySelector(targetSelector);\n }\n\n if (scrollTarget && scrollTarget instanceof Element) {\n let top = getElementOffset(scrollTarget).top - 100;\n if (isLG()) {\n top = getElementOffset(scrollTarget).top - 175;\n }\n\n window.scroll({\n top,\n behavior: smooth ? 'smooth' : 'auto',\n });\n }\n\n if (typeof scrollTarget === 'number' && !Number.isNaN(scrollTarget)) {\n window.scroll({\n top: scrollTarget,\n behavior: smooth ? 'smooth' : 'auto',\n });\n }\n};\n","const safeDecodeURIComponent = (value) => {\n let decodedValue = value;\n\n try {\n decodedValue = decodeURIComponent(value);\n } catch (e) {\n // Contains a non-decodable symbol, which means it's already decoded\n }\n\n return decodedValue;\n};\n\nexport const appendToUrl = (url, params) => {\n let newUrl = url;\n newUrl += (newUrl.indexOf('?') !== -1 ? '&' : '?') + Object.keys(params).map(\n key => `${key}=${encodeURIComponent(params[key])}`,\n ).join('&');\n\n return newUrl;\n};\n\nexport const parseQueryString = (queryStringUrl) => {\n const queryString = queryStringUrl.split(/[#?]/)[1] || queryStringUrl;\n const params = queryString.split('&').reduce((acc, pair) => {\n const pairParts = pair.split('=');\n const [paramName, paramValue] = pairParts;\n\n if (paramName && paramValue) {\n const decodeSafeValue = paramValue.replace(/\\+/g, '%20');\n\n return Object.assign(acc, {\n [paramName]: safeDecodeURIComponent(decodeSafeValue),\n });\n }\n\n return acc;\n }, {});\n\n return params;\n};\n\nexport const removeParamsFromUrl = (url, params) => {\n const [baseUrl, qs] = url.split('?');\n const modifiedQs = (qs || '')\n .split('&')\n .filter(qsPair => params.indexOf(qsPair.split('=')[0]) < 0)\n .join('&');\n\n return baseUrl + (modifiedQs ? `?${modifiedQs}` : '');\n};\n","'use strict';\n\nfunction handleSizeConversion(baseSize, defaultSizes, countrySizes, zeroPrefix, countryPrefix) {\n let convertedSize = baseSize;\n let numericSize;\n if (baseSize.indexOf('.') > -1) {\n numericSize = parseFloat(baseSize, 10);\n } else {\n numericSize = parseInt(baseSize, 10);\n }\n const sizeIndex = defaultSizes.indexOf(numericSize);\n\n if (sizeIndex >= 0) {\n const currentCountrySize = countrySizes[sizeIndex];\n\n if (typeof currentCountrySize !== 'undefined') {\n convertedSize = currentCountrySize;\n\n if (zeroPrefix && convertedSize.toString().length === 1 && convertedSize.toString().length !== '0') {\n convertedSize = '0' + convertedSize;\n }\n }\n }\n\n if (countryPrefix) {\n convertedSize = countryPrefix + ' ' + convertedSize;\n }\n\n return convertedSize;\n}\n\nmodule.exports = {\n handleSizeConversion: handleSizeConversion,\n};\n","/* eslint-disable */ export default (projectScripts) => {\n if (projectScripts) {\n projectScripts.forEach((file) => {\n switch (file) {\n case 'appointments':\n import(/* webpackChunkName: \"js/appointments\" */'../chunks/appointments');\n break;\n case 'contactUs':\n import(/* webpackChunkName: \"js/contactUs\" */'../chunks/contactUs');\n break;\n case 'globaleAnalytics':\n import(/* webpackChunkName: \"js/globaleAnalytics\" */'../chunks/globaleAnalytics');\n break;\n case 'hubbox.val':\n import(/* webpackChunkName: \"js/hubbox.val\" */'../../../../../../int_hubbox_sfra_tfg/cartridge/client/default/js/chunks/hubbox.val');\n break;\n case 'paypalCreditFinancingOptions.val':\n import(/* webpackChunkName: \"js/paypalCreditFinancingOptions.val\" */'../../../../../../int_paypal_sfra_tfg/cartridge/client/default/js/chunks/paypalCreditFinancingOptions.val');\n break;\n case 'paypalMFRA.val':\n import(/* webpackChunkName: \"js/paypalMFRA.val\" */'../../../../../../int_paypal_sfra_tfg/cartridge/client/default/js/chunks/paypalMFRA.val');\n break;\n case 'paypalUtils.val':\n import(/* webpackChunkName: \"js/paypalUtils.val\" */'../../../../../../int_paypal_sfra_tfg/cartridge/client/default/js/chunks/paypalUtils.val');\n break;\n case 'newsletter':\n import(/* webpackChunkName: \"js/newsletter\" */'../../../../../../plugin_newsletter_tfg/cartridge/client/default/js/chunks/newsletter');\n break;\n case 'wishlist':\n import(/* webpackChunkName: \"js/wishlist\" */'../../../../../../plugin_wishlists_tfg/cartridge/client/default/js/chunks/wishlist');\n break;\n default:\n if (process.env.NODE_ENV !== 'production') {\n console.error(`Unknown chunk \"${file}\".`); // eslint-disable-line no-console\n }\n }\n });\n }\n}; // eslint-disable-line eol-last","/**\n * Get the storefront config provided via script tag.\n *\n * Depending on the configuration it uses Redux or read it directly\n */\nlet app;\nif (ENABLE_REDUX) {\n app = require('./appConfig.redux').default; // eslint-disable-line global-require\n} else {\n app = require('./appConfig.plain').default; // eslint-disable-line global-require\n}\n\nconst appConfig = app;\nexport default appConfig;\n","export default (additionalScripts) => {\n if (additionalScripts) {\n additionalScripts.forEach((file) => {\n switch (file) {\n case 'addressBook':\n import(/* webpackChunkName: \"js/addressBook\" */'storefront/sfra/addressBook');\n break;\n case 'cart':\n import(/* webpackChunkName: \"js/cart\" */'storefront/sfra/cart');\n break;\n case 'checkout':\n import(/* webpackChunkName: \"js/checkout\" */'storefront/sfra/checkout');\n break;\n case 'checkoutRegistration':\n import(/* webpackChunkName: \"js/checkoutRegistration\" */'storefront/sfra/checkoutRegistration');\n break;\n case 'login':\n import(/* webpackChunkName: \"js/login\" */'storefront/sfra/login');\n break;\n case 'orderHistory':\n import(/* webpackChunkName: \"js/orderHistory\" */'storefront/sfra/orderHistory');\n break;\n case 'paymentInstruments':\n import(/* webpackChunkName: \"js/paymentInstruments\" */'storefront/sfra/paymentInstruments');\n break;\n case 'productDetail':\n import(/* webpackChunkName: \"js/productDetail\" */'storefront/sfra/productDetail');\n break;\n case 'productTile':\n import(/* webpackChunkName: \"js/productTile\" */'storefront/sfra/productTile');\n break;\n case 'profile':\n import(/* webpackChunkName: \"js/profile\" */'storefront/sfra/profile');\n break;\n case 'search':\n import(/* webpackChunkName: \"js/search\" */'storefront/sfra/search');\n break;\n case 'storeLocator':\n import(/* webpackChunkName: \"js/storeLocator\" */'storefront/sfra/storeLocator');\n break;\n default:\n if (process.env.NODE_ENV !== 'production') {\n console.error(`Unknown chunk \"${file}\".`); // eslint-disable-line no-console\n }\n }\n });\n }\n}; // eslint-disable-line eol-last","/**\n * Initializes the application.\n *\n * Sets the publicPath for Webpack and provides the loadChunks function to load the needed client side scripts.\n */\nimport loadChunksVal from './util/loadChunks.val';\nimport appConfig from './internal/appConfig';\n\nconst { basePath } = appConfig;\n\n// set public path if needed. If webpack-dev-server is running this has a value assigned.\nif (!__webpack_public_path__ && basePath) { // eslint-disable-line camelcase\n __webpack_public_path__ = basePath; // eslint-disable-line camelcase\n}\n\n/**\n * Loads the needed scripts provided via the additionalScripts config.\n */\nexport function loadChunks() { // eslint-disable-line import/prefer-default-export\n const { additionalScripts } = appConfig;\n if (additionalScripts) {\n loadChunksVal(additionalScripts);\n }\n}\n","import loadProjectChunksVal from './util/loadProjectChunks.val';\nimport appConfig from './internal/appConfig';\n\n/**\n * Loads the needed scripts provided via the projectScripts config.\n */\nexport function loadProjectChunks() { // eslint-disable-line import/prefer-default-export\n const { projectScripts } = appConfig;\n if (projectScripts) {\n loadProjectChunksVal(projectScripts);\n }\n}\n\nexport * from '~base';\n","/* eslint-disable no-undef */\n/* eslint-disable prefer-template */\n/* eslint-disable prefer-arrow-callback */\n/* eslint-disable jquery/no-data */\n/* eslint-disable jquery/no-each */\n/**\n * This is the main entry point for the brand.\n */\n\nimport $ from 'jquery';\n\nwindow.renderCloudinaryGalleryWidget = function () {\n let imgUrls;\n let galleryOptions;\n const $cldEl = $('.cloudinary-data-container');\n const cloudinaryObj = $cldEl.data('cloudinary');\n\n if (cloudinaryObj) {\n if (cloudinaryObj.galleryEnabled && typeof cloudinary !== 'undefined') {\n galleryOptions = cloudinaryObj.images.galleryWidget.options;\n window.cldGallery = cloudinary.galleryWidget(galleryOptions); // eslint-disable-line no-undef\n cldGallery.render(); // eslint-disable-line no-undef\n } else if (cloudinaryObj.images && cloudinaryObj.images.imageURLs) {\n imgUrls = cloudinaryObj.images.imageURLs || '';\n }\n }\n\n // removing custom code below as feature was introduced to the Gallery base code in the last v1.1.34\n\n // $(document).on('click', '#cld-gallery', function (event) {\n // setTimeout(() => {\n // let tryAgain = false; // Retry checking is the zoom-in rendered\n // // Avoiding the mutationObserver due to the DOM complexity\n // // eslint-disable-next-line no-restricted-syntax\n // for (const el of document.getElementsByClassName(event.target.className)) {\n // if (el.style && el.style.cursor === 'zoom-in') {\n // el.dispatchEvent(new PointerEvent('pointerdown'));\n // el.dispatchEvent(new PointerEvent('pointerup'));\n // return;\n // }\n // if (el.style && el.style.cursor === 'zoom-out') {\n // tryAgain = true;\n // }\n // } // for\n // if (tryAgain) {\n // event.target.click();\n // }\n // }, 50); // setTimeout\n // });\n\n return imgUrls;\n};\n\nwindow.renderCloudinarySetGalleryWidgets = function () {\n let cldObj;\n let cldSetImages;\n\n $('.cloudinary-set-data-container').each(function () {\n cldObj = $(this).data('cloudinary');\n cldSetImages = $(this).data('cloudinary-set-images');\n\n if (cldObj && cldObj.isEnabled && cldSetImages && cldSetImages.galleryWidget\n && cldObj.galleryEnabled && typeof cloudinary !== 'undefined') {\n window.cldGallery = cloudinary.galleryWidget(cldSetImages.galleryWidget.options); // eslint-disable-line no-undef\n cldGallery.render(); // eslint-disable-line no-undef\n }\n });\n};\n\nwindow.renderCloudinaryVideoPlayer = function () {\n let videoPlayerID;\n let cldObj;\n let cld;\n let player;\n const cldURLs = [];\n\n $('.cloudinary-data-container').each(function () {\n cldObj = $(this).data('cloudinary');\n videoPlayerID = $(this).data('cloudinary-video-player-id');\n\n if (cldObj && cldObj.video && cldObj.video.videoURL\n && cldObj.video.videoURL !== '' && cldObj.video.videoURL !== 'null') {\n if (cldObj.videoPlayerEnabled && typeof cloudinary !== 'undefined') {\n cld = cloudinary.Cloudinary.new({ cloud_name: cldObj.cloudName }); // eslint-disable-line no-undef\n player = cld.videoPlayer('cld-video-player' + (videoPlayerID ? '-' + videoPlayerID : ''),\n cldObj.video.widgetOptions);\n player.source(cldObj.video.videoURL, {}).play();\n player.transformation(cldObj.video.widgetOptions.transformations);\n } else {\n cldURLs.push(cldObj.video.videoURL);\n }\n }\n });\n return cldURLs;\n};\n\nwindow.makeCloudinaryImagesResponsive = function () {\n const $cldResponsiveImgTags = $('.cld-responsive');\n if (typeof cloudinary !== 'undefined') {\n if ($cldResponsiveImgTags && $cldResponsiveImgTags.length > 0) {\n window.cldObj = window.cldObj || cloudinary.Cloudinary.new(); // eslint-disable-line no-undef\n window.cldObj.responsive(); // eslint-disable-line no-undef\n }\n }\n};\n\nexport default () => {\n $(document).ready(function () {\n window.renderCloudinaryGalleryWidget();\n window.renderCloudinaryVideoPlayer();\n window.renderCloudinarySetGalleryWidgets();\n window.makeCloudinaryImagesResponsive();\n });\n $(document).on('product:afterAttributeSelect', function () {\n window.makeCloudinaryImagesResponsive();\n });\n $(document).on('click', '.product-tile__swatch', function () {\n // eslint-disable-next-line jquery/no-closest\n const tile = $(this).closest('.product-tile');\n // eslint-disable-next-line jquery/no-find\n const img = $(tile).find('.tile-image');\n // eslint-disable-next-line jquery/no-attr\n $(img).attr('src', $(this).data('image'));\n $(img).attr('srcset', $(this).data('srcset'));\n $(img).attr('sizes', $(this).data('sizes'));\n window.makeCloudinaryImagesResponsive();\n });\n};\n","import $ from 'jquery';\nimport processInclude from './util';\nimport cloudinaryWidget from './components/cloudinaryWidgets';\n\nimport '~base';\n\n// eslint-disable-next-line no-undef\n$(document).ready(() => {\n processInclude(cloudinaryWidget);\n});\n","/**\n * Load the main stylesheet.\n *\n * Stylesheet will be built and extracted to CSS using Webpack.\n */\nimport style from '../scss/style.scss';\n// import style from '../less/style.less';\n\nexport default style;\n","/**\n * This is the main entry point for the application.\n */\n\n// eslint-disable-next-line import/named\nimport { loadChunks, loadProjectChunks } from './initApp'; // Initialize the application\nimport './sfra/main'; // call the main module\n/*\n * Load the main stylesheet.\n *\n * Stylesheet will be built and extracted to CSS using Webpack.\n */\nimport './mainStyle';\n\nloadChunks(); // load additional needed chunks\nloadProjectChunks(); // load additional needed chunks\nfilterCookieValue();\n\nfunction contentEventInitData() {\n const element = document.querySelectorAll('.content-block-event');\n element.forEach((ele) => {\n if (ele.getAttribute('data-listener') !== 'true') {\n ele.setAttribute('data-listener', 'true');\n ele.addEventListener('click', () => {\n const indx = Array.from(document.getElementsByClassName('content-block-event')).indexOf(ele);\n const contentSlotId = `home-content-${indx + 1}`;\n const clickEventData = {\n event: 'contentBlockClick',\n contentBlockId: contentSlotId,\n };\n window.dataLayer.push(clickEventData);\n });\n }\n });\n}\n\nfunction filterCookieValue() {\n const decodedCookie = decodeURIComponent(document.cookie);\n const cookieArray = decodedCookie.split(';');\n for (let i = 0; i < cookieArray.length; i++) {\n let cookieItem = cookieArray[i];\n while (cookieItem.charAt(0) === ' ') {\n cookieItem = cookieItem.substring(1);\n }\n const cookiePair = cookieItem.split('=');\n\n // filter the cookie value to remove script tags\n if (cookiePair[1].indexOf('script') > -1) {\n const filteredValue = cookiePair[1].replace(/)<[^<]*)*<\\/script\\s*>/gi, '');\n // eslint-disable-next-line prefer-template\n document.cookie = cookiePair[0] + '=' + filteredValue + '; path=/';\n }\n }\n}\n\ndocument.addEventListener('DOMContentLoaded', contentEventInitData);\ndocument.addEventListener('product:carousel-init', contentEventInitData);\n","/**\n * This is the main entry point for the brand.\n */\n\nimport '~base'; // call the main module\n","// extracted by extract-css-chunks-webpack-plugin\nmodule.exports = {\"breakpoint-sm-max\":\"767px\",\"breakpoint-md-min\":\"768px\",\"breakpoint-md-max\":\"991px\",\"breakpoint-lg-min\":\"992px\",\"breakpoint-lg-max\":\"1199px\",\"breakpoint-xl-min\":\"1200px\"};","'use strict';\n\nmodule.exports = function () {\n // Custom Start: Make cart product images responsive //\n $('.minicart').bind('DOMSubtreeModified', function (e) {\n if (e.target.innerHTML.length > 0) {\n if (typeof window.makeCloudinaryImagesResponsive !== 'undefined') {\n window.makeCloudinaryImagesResponsive();\n }\n }\n });\n // Custom End: Make cart product images responsive //\n};\n","'use strict';\n\nimport base from '~base';\n\nmodule.exports = function () {\n base();\n // Custom Start: Make suggested product images responsive //\n $('.suggestions-wrapper').bind('DOMSubtreeModified', function (e) {\n if (e.target.innerHTML.length > 0) {\n if (typeof window.makeCloudinaryImagesResponsive !== 'undefined') {\n window.makeCloudinaryImagesResponsive();\n }\n }\n });\n // Custom End: Make suggested product images responsive //\n};\n","'use strict';\n\n// eslint-disable-next-line\n// window.jQuery = window.$ = require('jquery');\nvar processInclude = require('base/util');\n\nimport '~base';\n\n$(document).ready(function () {\n processInclude(require('./components/search'));\n processInclude(require('./components/cloudinaryMiniCart'));\n});\n","'use strict';\n\n// var cart = require('base/cart/cart');\n/* eslint-disable no-undef */\n\nmodule.exports = function () {\n // cart();\n $('.minicart').on('count:update', function (event, count) {\n if (count && $.isNumeric(count.quantityTotal)) {\n $('.minicart .minicart-quantity').text(count.quantityTotal);\n }\n });\n\n $('.minicart').off('mouseenter focusin touchstart').on('mouseenter focusin touchstart', function (event) {\n if ($('.search:visible').length === 0) {\n return;\n }\n var url = $('.minicart').data('action-url');\n var count = parseInt($('.minicart .minicart-quantity').text(), 10);\n if (count !== 0 && $('.minicart .popover.show').length === 0) {\n $('.minicart .popover').addClass('show');\n $('.minicart .popover').spinner().start();\n $.get(url, function (data) {\n $('.minicart .popover').empty();\n $('.minicart .popover').append(data);\n\n var isPaypalEnabled = !!($('#paypal_enabled').length > 0 && document.getElementById('paypal_enabled').value === 'true');\n var isGooglePayEnabled = !!($('#isGooglePayEnabled').length > 0 && $('#isGooglePayEnabled').val() === 'true');\n\n if (isPaypalEnabled) {\n paypalhelper.paypalMini();\n }\n if (isGooglePayEnabled) {\n onGooglePayLoaded();\n }\n\n $.spinner().stop();\n });\n }\n event.stopImmediatePropagation();\n });\n $('body').on('touchstart click', function (e) {\n if ($('.minicart').has(e.target).length <= 0) {\n $('.minicart .popover').empty();\n $('.minicart .popover').removeClass('show');\n }\n });\n\n $('.minicart').on('mouseleave focusout', function (event) {\n if ((event.type === 'focusout' && $('.minicart').has(event.target).length > 0)\n || (event.type === 'mouseleave' && $(event.target).is('.minicart .quantity'))\n || $('body').hasClass('modal-open')) {\n event.stopPropagation();\n return;\n }\n if (!($(document).find('.paypal-checkout-sandbox').length > 0)) {\n $('.minicart .popover').empty();\n $('.minicart .popover').removeClass('show');\n }\n\n event.stopImmediatePropagation();\n });\n $('body').on('change', '.minicart .quantity', function () {\n if ($(this).parents('.bonus-product-line-item').length && $('.cart-page').length) {\n // eslint-disable-next-line\n location.reload();\n }\n });\n};\n","'use strict';\n\n// eslint-disable-next-line\n// window.jQuery = window.$ = require('jquery');\nvar processInclude = require('base/util');\n\n$(document).ready(function () {\n processInclude(require('base/main'));\n processInclude(require('./components/CSminiCart'));\n});\n","import base from '~base';\n\nconst baseInvalid = base.invalid;\n\nbase.invalid = () => {\n baseInvalid.call(this);\n\n document.querySelectorAll('form input, form select').forEach((field) => {\n field.addEventListener('invalid', function (e) {\n e.preventDefault();\n if (!this.validity.valid) {\n const dataLayer = window[window.googleAnalytics.DATA_LAYER_NAME];\n if (dataLayer) {\n const event = {\n message: this.closest('.form-group').querySelector('.invalid-feedback').innerText,\n };\n dataLayer.push(event);\n }\n }\n });\n });\n};\n\nexport default base;\n","import { functions as ajax } from '../components/ajax';\n\n/**\n * When the GTM events are pushed with the value 'beacon' in the field 'transport',\n * the dataLayer library will attempt to use the Beacon API,\n * so events can be tracked despite of the user navigating away form the page;\n *\n * However, it is not supported by all browsers that are still in use:\n * https://caniuse.com/#feat=beacon\n *\n * This function polyfills the sendBeacon method of the window's navigator\n * with a synchrnouse XMLHttpRequest, to guarantee correct tracking\n *\n * Source: Polyfill Service (https://github.com/Financial-Times/polyfill-service)\n */\nexport const polyfillBeaconAPI = () => {\n window.navigator.sendBeacon = window.navigator.sendBeacon || function (url, data) {\n const xhr = ('XMLHttpRequest' in window) ? new XMLHttpRequest() : new window.ActiveXObject('Microsoft.XMLHTTP');\n\n xhr.open('POST', url, false);\n xhr.setRequestHeader('Accept', '*/*');\n\n if (typeof data === 'string') {\n xhr.setRequestHeader('Content-Type', 'text/plain;charset=UTF-8');\n xhr.responseType = 'text/plain';\n } else if (Object.prototype.toString.call(data) === '[object Blob]') {\n if (data.type) {\n xhr.setRequestHeader('Content-Type', data.type);\n }\n }\n\n xhr.send(data);\n\n return true;\n };\n};\n\n/**\n * Removes old data from the DataLayer when it needs to be replaced\n */\n\nconst replaceDataLayerProperty = (event) => {\n const gtm = window.google_tag_manager[window.googleAnalytics.CONTAINER_ID];\n\n if (gtm) {\n Object.keys(event.replace).forEach((propKey) => {\n gtm.dataLayer.set(propKey, undefined);\n event[propKey] = event.replace[propKey];\n });\n }\n\n delete event.replace;\n\n return event;\n};\n\n/**\n * Checks the results of all AJAX requests for JSON,\n * containing analytics events, and pushes them to the data layer, if any\n */\nconst handleAjaxEvents = (dataLayer, responseText) => {\n let events = [];\n\n try {\n // Handle JSON repsponses\n const response = JSON.parse(responseText);\n\n events = response[window.googleAnalytics.ANALYTICS_EVENTS_KEY];\n } catch (ex) {\n if (typeof responseText === 'object') {\n events = responseText[window.googleAnalytics.ANALYTICS_EVENTS_KEY];\n } else if (typeof responseText === 'string') {\n // Handle HTML responses using the GTM events decorator template\n const contentEl = document.createElement('div');\n\n contentEl.innerHTML = responseText;\n contentEl.querySelectorAll('[name=\"analytics-events\"]').forEach((input) => {\n events = events.concat(JSON.parse(input.value));\n });\n }\n }\n\n if (events && events.length) {\n for (let i = 0; i < events.length; i++) {\n if (events[i].replace) {\n events[i] = replaceDataLayerProperty(events[i]);\n }\n\n dataLayer.push(events[i]);\n }\n }\n\n return responseText;\n};\n\n/**\n * Extend the AJAX mechanisms that get used to allow for tracking any events in their responses\n */\nexport const installAjaxHandlers = () => {\n const dataLayer = window[window.googleAnalytics.DATA_LAYER_NAME];\n\n // Don't attach the listener if GTM or GA are not enabled\n if (!dataLayer) {\n return;\n }\n\n ajax.onComplete(handleAjaxEvents.bind(null, dataLayer));\n};\n\n/**\n * Checks the page for partial remote include templates,\n * containing analytics events, and pushes them to the data layer, if any\n */\nexport const pushRemoteIncludeEvents = () => {\n let events = [];\n const dataLayer = window[window.googleAnalytics.DATA_LAYER_NAME];\n\n // Don't query the DOM if GTM or GA are not enabled\n if (!dataLayer) {\n return;\n }\n document.querySelectorAll('[name=\"analytics-events\"]').forEach((input) => {\n events = events.concat(JSON.parse(input.value));\n });\n\n if (events && events.length) {\n for (let i = 0; i < events.length; i++) {\n dataLayer.push(events[i]);\n }\n }\n};\n","import { onEvent, getJSONData } from '../util/domutils';\n\nconst getDataLayer = () => {\n let dataLayer = [];\n\n if (window.googleAnalytics && window[window.googleAnalytics.DATA_LAYER_NAME]) {\n dataLayer = window[window.googleAnalytics.DATA_LAYER_NAME];\n }\n\n return dataLayer;\n};\n\nconst getCurrency = (dataLayer) => {\n const currencyEvt = dataLayer.find(evt => evt.currency);\n\n if (currencyEvt) {\n return currencyEvt.currency;\n }\n\n return null;\n};\n\nconst getProductList = (trigger) => {\n const listContainers = {\n 'recommendation - CTL': '#looksGreatWith',\n 'recommendation - YMAL': '#recommendations',\n PDP: '[data-action=\"Product-Show\"]',\n 'PLP - category': '[data-action=\"Search-Show\"][data-querystring*=\"cgid=\"]',\n 'PLP - search results': '[data-action=\"Search-Show\"][data-querystring*=\"q=\"]',\n 'PLP - other': '[data-action=\"Search-Show\"]',\n 'Recently viewed': '.product-detail__recently-viewed',\n 'cart - wishlist': '.cart-wishlist-section',\n wishlist: '[data-action=\"Wishlist-Show\"]',\n };\n\n return Object.keys(listContainers).find(listName => trigger.closest(listContainers[listName])) || 'other';\n};\n\nconst getProductObject = (trigger) => {\n const trackingEl = trigger.closest('[data-tracking]');\n\n if (trackingEl) {\n return getJSONData(trackingEl, 'tracking', null);\n }\n\n return null;\n};\n\n// eslint-disable-next-line import/prefer-default-export\nexport const productClick = () => {\n ['click', 'auxclick'].forEach((evt) => {\n onEvent(document, evt, '.product-tile .link', (e) => {\n const dataLayer = getDataLayer();\n const productObj = getProductObject(e.delegateTarget);\n // Only a standard left click needs to be aborted and handled with a callback;\n // Scroll/Middle button clicks open a new tab, so they will be tracked by the current tab; same for Ctrl + Click\n // Right clicks must open a context menu, so no way to track those\n const standardClick = evt === 'click' && e.button === 0 && !e.ctrlClick;\n const auxilliaryClick = evt === 'auxclick' && e.button >= 2;\n\n if (auxilliaryClick) {\n // Auxilliary buttons usually don't interact with links, so no need to track them\n return;\n }\n\n if (productObj) {\n try {\n const payload = {\n event: 'eec.productClick',\n ecommerce: {\n currencyCode: getCurrency(dataLayer),\n click: {\n actionField: {\n list: getProductList(e.delegateTarget),\n },\n products: [productObj],\n },\n },\n };\n\n if (standardClick) {\n payload.eventCallback = () => { window.location.href = e.delegateTarget.href; };\n payload.eventTimeout = 300;\n }\n\n dataLayer.push(payload);\n } catch {\n return;\n }\n\n if (standardClick) {\n e.preventDefault();\n\n setTimeout(() => {\n window.location.href = e.delegateTarget.href;\n }, 1000);\n }\n }\n });\n });\n};\n","import $ from 'jquery';\nimport { clearAllBodyScrollLocks, disableBodyScroll } from 'body-scroll-lock';\nimport { EVENTS as FLYOUT_EVENTS } from './flyoutUnderHeader';\n\nconst disableBodyScrollModalWrapper = (e) => {\n disableBodyScroll(e.target);\n};\n\nconst disableBodyScrollFlyoutWrapper = (e) => {\n let target = null;\n\n if (e.detail) {\n if (e.detail.noScrollLock) {\n return;\n }\n\n if (e.detail.content) {\n target = e.detail.content; // Generic flyouts\n } else if (e.detail.flyout) {\n target = e.detail.flyout; // Menu flyout\n }\n }\n\n if (target) {\n disableBodyScroll(target, {\n allowTouchMove: (el) => {\n if (target.contains(el)) {\n let currentEl = el;\n\n while (currentEl && currentEl !== target) {\n if (currentEl.scrollHeight > currentEl.clientHeight) {\n return true;\n }\n\n currentEl = currentEl.parentNode;\n }\n }\n\n return false;\n },\n });\n }\n};\n\nexport default () => {\n $(document)\n .on('show.bs.modal', disableBodyScrollModalWrapper)\n .on('hidden.bs.modal', clearAllBodyScrollLocks);\n\n document.addEventListener(FLYOUT_EVENTS.FLYOUT_OPEN, disableBodyScrollFlyoutWrapper);\n document.addEventListener(FLYOUT_EVENTS.FLYOUT_CLOSE, clearAllBodyScrollLocks);\n};\n","/* global grecaptcha */\n\nconst SELECTORS = {\n RECAPTCHA_ELEMENT: '.g-recaptcha-key',\n};\n\n\nexport default() => {\n const placeholder = document.querySelector(SELECTORS.RECAPTCHA_ELEMENT);\n\n if (placeholder) {\n const form = placeholder.closest('form');\n if (form) {\n const btn = form.querySelector('[data-action=submit_captcha]');\n btn.disabled = true;\n const { sitekey } = placeholder.dataset;\n grecaptcha.ready(() => {\n grecaptcha.execute(sitekey, { action: 'submit_captcha' }).then((token) => {\n btn.disabled = false;\n form.querySelector('.g-recaptcha-response').value = token;\n });\n });\n }\n }\n};\n","/* eslint-disable jquery/no-ajax */\n/* eslint-disable jquery/no-trigger */\n/* eslint-disable jquery/no-html */\n/* eslint-disable jquery/no-class */\n/* eslint-disable no-console */\n/* eslint-disable no-alert */\nimport $ from 'jquery';\n\nconst SELECTORS = {\n ALP_SIZE_LINK: '.intelligent-reach-section .size-link',\n ALP_SIZE_LINK_SPAN: '.intelligent-reach-section .size_inner_space_new',\n ALP_ADD_TO_CART: '.intelligent-reach-section .basket_btn',\n};\n\n// ALP Events\nconst removeSelectedClass = () => {\n const searchInputs = document.querySelectorAll('.intelligent-reach-section .size-link');\n\n searchInputs.forEach((searchField) => {\n searchField.classList.remove('sizeSelected');\n searchField.classList.remove('product-detail__attribute__value--current');\n });\n};\n\nexport const alpProductLoad = () => {\n $(document).on('click', SELECTORS.ALP_SIZE_LINK, (e) => {\n const sizelink = e.target;\n const basketButton = document.querySelector(SELECTORS.ALP_ADD_TO_CART);\n const sizelinkObj = sizelink.classList.contains('size_inner_space_new') ? sizelink.parentElement : sizelink;\n\n if (!sizelinkObj.classList.contains('out_of_stock')) {\n removeSelectedClass();\n sizelinkObj.classList.add('sizeSelected');\n sizelinkObj.classList.add('product-detail__attribute__value--current');\n basketButton.dataset.pid = sizelinkObj.dataset.id;\n if ($('.intelligent-reach-section .size_new').hasClass('product-detail__attribute--error')) {\n $('.intelligent-reach-section .size_new').removeClass('product-detail__attribute--error');\n $('.product-detail__attribute__error').html('');\n }\n // basketButton.disabled = false;\n } else {\n // basketButton.disabled = true;\n }\n });\n\n $(document).on('click', SELECTORS.ALP_ADD_TO_CART, (e) => {\n let execute = true;\n const buttonObj = e.target;\n const searchInputs = document.querySelectorAll('.intelligent-reach-section .size-link.sizeSelected');\n if (searchInputs.length === 0) {\n $('.intelligent-reach-section .size_new').addClass('product-detail__attribute--error');\n $('.product-detail__attribute__error').html('Please select your size');\n execute = false;\n }\n if (execute) {\n const productId = buttonObj.dataset.pid;\n const qty = buttonObj.dataset.minQuantity;\n const addToCartAjexUrl = buttonObj.dataset.addToCartUrl;\n\n const dataObj = {\n pid: productId,\n quantity: qty,\n };\n\n if (addToCartAjexUrl) {\n $.ajax({\n url: addToCartAjexUrl,\n method: 'POST',\n data: dataObj,\n success: function success(data) {\n $('.minicart').trigger('count:update', data);\n $('body').trigger('product:afterAddToCart', data);\n $.spinner().stop();\n },\n error: function error() {\n $.spinner().stop();\n },\n });\n }\n }\n });\n};\n\nexport default () => {\n if ($('.intelligent-reach-section').length > 0) {\n alpProductLoad();\n }\n};\n","import $ from 'jquery';\n\nexport default() => {\n $(document).on('change keyup', '.inputValidate', function () {\n // eslint-disable-next-line no-useless-escape\n const regex = /[^\\w\\s`!@#$£%^&*()+\\-=\\[\\]{};':\"\\\\|,.<>\\/?~]/g;\n $(this).val($(this).val().replace(regex, '')); // eslint-disable-line jquery/no-val\n });\n\n function isValidURL(url) {\n try {\n // eslint-disable-next-line no-new\n new URL(url); // URL constructor will throw an error if invalid\n return true;\n } catch {\n return false;\n }\n }\n\n $(document).on('change', '.validateName', function () {\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n // eslint-disable-next-line jquery/no-val\n if (emailRegex.test($(this).val()) || isValidURL($(this).val())) {\n // eslint-disable-next-line jquery/no-val\n $(this).val('');\n }\n const urlPattern = /(www|=|:|\\.|https|https:\\/\\/|\\/|#|\\?)/g;\n $(this).val($(this).val().replace(urlPattern, '')); // eslint-disable-line jquery/no-val\n });\n};\n\n$(document).on('invalid', '#phoneNumber, #phone', function () {\n let newText = this.validationMessage;\n if (this.validity.tooShort && !this.validity.patternMismatch) {\n // eslint-disable-next-line jquery/no-data\n const oldText = $('#phoneNumber, #phone').data('range-error');\n // eslint-disable-next-line jquery/no-val\n const charLen = $(this).val().length;\n newText = oldText.replace('X', charLen);\n // eslint-disable-next-line jquery/no-attr\n $('#phoneNumber, #phone').attr('data-range-error', newText);\n }\n // eslint-disable-next-line jquery/no-text\n $('#phoneNumber, #phone').siblings('.invalid-feedback').text(newText);\n});\n","/* eslint-disable jquery/no-val */\n/* eslint-disable jquery/no-parent */\n/* eslint-disable jquery/no-find */\n/* eslint-disable jquery/no-closest */\n/* eslint-disable jquery/no-class */\n/* eslint-disable jquery/no-data */\nimport $ from 'jquery';\nimport Glide from '@glidejs/glide';\n\nconst SELECTORS = {\n MODAL: '#ATBRecommendationsModal',\n CONTAINER: '.ATBRecommendations-content',\n CAROUSEL_ANCHOR: '.addToBagOverlay-product-recommendations',\n CAROUSEL_ANCHOR_LOW_ASP: '.addToBagOverlay-product-recommendations-lowASP',\n NAVIGATORS: {\n ARROWS: '.glide__arrows',\n },\n};\n\nconst CustomLength = function (glide, Components, Events) {\n const addToBagCarouselEvents = {\n handleSlider() {\n if (Components.Sizes.length <= glide.settings.perView) {\n glide.disable();\n Components.Html.root.querySelector(SELECTORS.NAVIGATORS.ARROWS).classList.add('d-none');\n } else {\n glide.enable();\n Components.Html.root.querySelector(SELECTORS.NAVIGATORS.ARROWS).classList.remove('d-none');\n }\n },\n mount() {\n this.handleSlider();\n },\n };\n Events.on('resize', () => {\n addToBagCarouselEvents.handleSlider();\n });\n return addToBagCarouselEvents;\n};\n\nconst addToBagCarouselInit = function () {\n let slidesCount = 5;\n if ($('.ATBOverlayEnable').length > 0 && parseInt($('.ATBOverlayEnable').data('slides-perview'), 10) > 0) {\n slidesCount = parseInt($('.ATBOverlayEnable').data('slides-perview'), 10);\n }\n if ($(SELECTORS.CAROUSEL_ANCHOR).length > 0) {\n new Glide(SELECTORS.CAROUSEL_ANCHOR, {\n type: 'slider',\n perView: slidesCount,\n gap: 10,\n rewind: false,\n bound: true,\n peek: { before: 0, after: 0 },\n breakpoints: {\n 1400: {\n perView: slidesCount,\n peek: { before: 0, after: 0 },\n },\n 1200: {\n perView: 4,\n peek: { before: 0, after: 0 },\n },\n 992: {\n perView: 3,\n peek: { before: 0, after: 0 },\n },\n 768: {\n perView: 3,\n peek: { before: 0, after: 0 },\n },\n 576: {\n perView: 1,\n peek: { before: 0, after: 150 },\n },\n 375: {\n perView: 1,\n peek: { before: 0, after: 150 },\n },\n },\n }).mount({ CustomLength });\n }\n};\n\nconst addToBagCarouselLowASPInit = function () {\n const slidesCount = 1;\n if ($(SELECTORS.CAROUSEL_ANCHOR_LOW_ASP).length > 0) {\n const lowASPRecommendations = document.querySelectorAll(SELECTORS.CAROUSEL_ANCHOR_LOW_ASP);\n for (let i = 0; i < lowASPRecommendations.length; i++) {\n new Glide(lowASPRecommendations[i], {\n type: 'slider',\n perView: slidesCount,\n gap: 16,\n rewind: false,\n bound: true,\n peek: { before: 0, after: 0 },\n breakpoints: {\n 1400: {\n perView: slidesCount,\n peek: { before: 0, after: 0 },\n },\n 1200: {\n perView: 1,\n peek: { before: 0, after: 0 },\n },\n 992: {\n perView: 1,\n peek: { before: 0, after: 0 },\n },\n 768: {\n perView: 1,\n peek: { before: 0, after: 0 },\n },\n 576: {\n perView: 1,\n peek: { before: 0, after: 0 },\n },\n 375: {\n perView: 1,\n peek: { before: 0, after: 0 },\n },\n },\n }).mount({ CustomLength });\n }\n }\n};\n\nexport default() => {\n let lastClickedButton = null;\n let lastAddedProductID = null;\n let isATBRecommendationsModalShown = null;\n\n if ($(SELECTORS.MODAL).length > 0) {\n const showATBOverlayModal = (pid, isModalShown) => {\n // eslint-disable-next-line jquery/no-data\n const url = $(SELECTORS.MODAL).data('action');\n if (!url || !pid) {\n return;\n }\n $.spinner().start();\n // eslint-disable-next-line jquery/no-ajax\n $.ajax({\n url,\n type: 'get',\n data: {\n pid,\n },\n success: (data) => {\n $(SELECTORS.CONTAINER).empty();\n // eslint-disable-next-line jquery/no-html\n $(SELECTORS.CONTAINER).html(data);\n document.querySelector(SELECTORS.MODAL).classList.remove('modalWithoutCarousel');\n if (isModalShown) {\n // eslint-disable-next-line jquery/no-hide\n $('.ATBRecommendationsContainer').hide();\n document.querySelector(SELECTORS.MODAL).classList.add('modalWithoutCarousel');\n }\n\n if ($(SELECTORS.CAROUSEL_ANCHOR).length > 0) {\n addToBagCarouselInit();\n }\n if ($(SELECTORS.CAROUSEL_ANCHOR_LOW_ASP).length > 0) {\n addToBagCarouselLowASPInit();\n }\n $.spinner().stop();\n },\n error() {\n $(SELECTORS.MODAL).modal('hide');\n $.spinner().stop();\n },\n });\n\n $(SELECTORS.MODAL).modal('show');\n };\n\n $(document).on('updateAddToCartFormData', (e, data) => {\n if (!data.error) {\n lastClickedButton = e.target;\n }\n }).on('product:afterAddToCart', async (e, data) => {\n if (data && !data.error && lastClickedButton && lastClickedButton.dataset.pid) {\n lastAddedProductID = lastClickedButton.dataset.pid;\n isATBRecommendationsModalShown = $('#ATBRecommendationsModal').hasClass('in')\n || $('#ATBRecommendationsModal').hasClass('show');\n showATBOverlayModal(lastAddedProductID, isATBRecommendationsModalShown);\n lastClickedButton = null;\n lastAddedProductID = null;\n isATBRecommendationsModalShown = null;\n }\n });\n }\n\n document.addEventListener('addToBag:carousel-init', addToBagCarouselInit);\n document.addEventListener('addToBagLowASP:carousel-init', addToBagCarouselLowASPInit);\n\n $(document).on('click', '.product-tile__add-overlay-size', function () {\n if ($('.wishlist.container .wishlist__products').length > 0\n && $(this).closest('.ATBRecommendationsContainer')\n && $(this).parent().find('.add-to-cart')\n && !$(this).parent().find('.add-to-cart').data('url')\n && $(this).parent().find('.add-to-cart-url')\n && $(this).parent().find('.add-to-cart-url').val()) {\n $(this).parent().find('.add-to-cart').data('url', $(this).parent().find('.add-to-cart-url').val());\n }\n });\n};\n","import 'jspolyfill-array.prototype.find';\nimport smoothscroll from 'smoothscroll-polyfill';\n\nimport $ from 'jquery';\nimport processInclude from './util';\n\nimport { installAjaxHandlers } from './components/ajax';\nimport * as header from './components/header';\nimport * as productTile from './search/productTile';\nimport * as initAddressForms from './components/addressForm';\nimport bodyScroll from './components/bodyScroll';\nimport backToTop from './components/backToTop';\nimport { initForms } from './components/forms';\nimport initRecaptcha from './components/recaptcha';\nimport * as intelligentReach from './search/intelligentReach';\nimport stickyHeaderScroll from './components/stickyHeaderScroll';\nimport validateInput from './components/validateInput';\nimport addToBagRecommendations from './components/addToBagRecommendation';\n\nimport '~base';\n\ninstallAjaxHandlers();\n\n$(document).ready(() => {\n processInclude(header);\n processInclude(productTile);\n processInclude(initAddressForms);\n processInclude(backToTop);\n processInclude(bodyScroll);\n processInclude(initForms);\n processInclude(initRecaptcha);\n processInclude(intelligentReach);\n processInclude(stickyHeaderScroll);\n processInclude(validateInput);\n processInclude(addToBagRecommendations);\n\n smoothscroll.polyfill();\n});\n","/**\n * @description Initializes the necessary interactions for Google Analytics tracking\n */\n\nimport $ from 'jquery';\nimport processInclude from './util';\nimport * as analyticsBase from './googleAnalytics/googleAnalytics';\nimport * as analyticsEvents from './googleAnalytics/clientSideEvents';\n\nimport '~base';\n\n$(document).ready(() => {\n processInclude(analyticsBase);\n processInclude(analyticsEvents);\n});\n","import { onEvent, updateComponent } from '../util/domutils'; // eslint-disable-line import/named\nimport { loadContent, CONTENT_TYPES } from '../util/fetchutils';\n\nexport const ADDRESS_FORM_EVENTS = {\n REFRESH: 'country-form:refresh',\n POPULATE: 'address-fields:populate',\n SUBMIT: 'country-form:submit',\n UPDATE: 'address-fields:update',\n};\n\nconst SELECTORS = {\n FIELDS: '.address-fields',\n ROW: '.address-fields__row',\n COUNTRY: '[name$=\"_country\"]',\n};\n\nexport const initAddressForms = () => {\n onEvent(document, 'change', SELECTORS.COUNTRY, async (e) => {\n const field = e.delegateTarget;\n const fieldRow = field.closest(SELECTORS.ROW);\n\n if (fieldRow && fieldRow.dataset.action) {\n const { content, type } = await loadContent(field.form, fieldRow.dataset.action);\n\n if (type === CONTENT_TYPES.JSON && content.csrfError) {\n window.location.href = content.redirectUrl;\n } else if (type === CONTENT_TYPES.TEXT) {\n await updateComponent(SELECTORS.FIELDS, content);\n }\n\n document.dispatchEvent(new CustomEvent(ADDRESS_FORM_EVENTS.REFRESH));\n }\n });\n};\n\nexport const handleUppercasedFields = () => {\n onEvent(document, 'keyup', '[data-uppercase=\"true\"]', (e) => {\n e.delegateTarget.value = e.delegateTarget.value.toUpperCase();\n });\n};\n","import { ADDRESS_FORM_EVENTS } from '~base';\nimport { NAV_EVENTS } from './clientSideNav';\nimport { EVENTS as CHECKOUT_EVENTS } from '../checkout/checkoutDom';\nimport { COLLAPSE_EVENTS } from '../thirdParty/bootstrap/toggleFormElementsStates';\nimport { onEvent, visible } from '../util/domutils';\n\nconst IDS = {\n LOOKUP: 'addressLookup',\n CUSTOM_LOOKUP: 'customAddressLookup',\n COUNTRY: 'country',\n ADDRESS_FIELDS: {\n LINE1: 'addressOne',\n LINE2: 'addressTwo',\n LINE3: 'addressThree',\n POSTAL_CODE: 'postalCode',\n CITY: 'city',\n STATE: 'stateCode',\n },\n};\n\nconst CLASSES = {\n ERROR: 'is-invalid',\n};\n\nconst SELECTORS = {\n LOOKUP: `#${IDS.LOOKUP}`,\n CUSTOM_LOOKUP: `.${IDS.CUSTOM_LOOKUP}`,\n COUNTRY: `#${IDS.COUNTRY}`,\n ADDRESS_FIELDS: `#${Object.keys(IDS.ADDRESS_FIELDS).map(key => IDS.ADDRESS_FIELDS[key]).join(', #')}`,\n TOGGLE: '.address-lookup__footer',\n SUBMIT_BUTTON: 'button[type=\"submit\"]',\n};\n\nconst showAddressFields = () => {\n document.querySelectorAll(SELECTORS.ADDRESS_FIELDS).forEach((el) => {\n el.disabled = false;\n el.parentElement.parentElement.classList.remove('d-none');\n });\n};\n\nconst showAddressFieldsOnReinit = () => {\n setTimeout(() => {\n const fields = Array.from(document.querySelectorAll(SELECTORS.ADDRESS_FIELDS));\n const hasValues = fields.some(field => !!field.value);\n const hasErrors = fields.some(field => field.classList.contains(CLASSES.ERROR));\n\n if (hasValues || hasErrors) {\n showAddressFields();\n }\n }, 1);\n};\n\nconst createControl = (lookupField, fields) => {\n const control = new window.pca.Address(fields, {\n key: lookupField.dataset.key,\n suppressAutocomplete: false,\n });\n control.listen('populate', (address) => {\n lookupField.value = address.Label.replace(/\\n/g, ' ');\n\n if (fields.length > 1) {\n showAddressFields();\n }\n\n document.dispatchEvent(new CustomEvent(ADDRESS_FORM_EVENTS.POPULATE));\n document.dispatchEvent(new CustomEvent(ADDRESS_FORM_EVENTS.UPDATE));\n document.dispatchEvent(new CustomEvent(ADDRESS_FORM_EVENTS.REFRESH));\n });\n\n return control;\n};\n\nconst initAddressSearch = () => {\n const lookupField = document.querySelector(SELECTORS.LOOKUP);\n const customLookupFields = document.querySelectorAll(SELECTORS.CUSTOM_LOOKUP);\n\n if (lookupField) {\n const fields = [\n { element: IDS.LOOKUP, field: '', mode: window.pca.fieldMode.SEARCH },\n { element: IDS.COUNTRY, field: 'Country', mode: window.pca.fieldMode.PRESERVE },\n { element: IDS.ADDRESS_FIELDS.LINE1, field: 'Line1', mode: window.pca.fieldMode.POPULATE },\n { element: IDS.ADDRESS_FIELDS.LINE2, field: 'Line2', mode: window.pca.fieldMode.POPULATE },\n { element: IDS.ADDRESS_FIELDS.LINE3, field: 'Line3', mode: window.pca.fieldMode.POPULATE },\n { element: IDS.ADDRESS_FIELDS.POSTAL_CODE, field: 'PostalCode', mode: window.pca.fieldMode.POPULATE },\n { element: IDS.ADDRESS_FIELDS.CITY, field: 'City', mode: window.pca.fieldMode.POPULATE },\n { element: IDS.ADDRESS_FIELDS.STATE, field: 'ProvinceName', mode: window.pca.fieldMode.POPULATE },\n ];\n\n const control = createControl(lookupField, fields);\n\n control.listen('load', () => {\n control.setCountry(document.querySelector(SELECTORS.COUNTRY).value);\n });\n\n\n control.load(); // Forces the 'load' event to be fired, it seems to be skipped on occasion\n }\n\n customLookupFields.forEach((customLookupField) => {\n const customFields = [\n { element: customLookupField, field: 'search', mode: window.pca.fieldMode.DEFAULT },\n ];\n\n createControl(customLookupField, customFields);\n });\n};\n\nexport const initLookup = () => {\n // Set an interval to make sure window.pca is defined\n const pcaInterval = setInterval(() => {\n if (window.pca) {\n clearInterval(pcaInterval);\n initAddressSearch();\n\n onEvent(document, 'click', SELECTORS.TOGGLE, () => {\n showAddressFields();\n });\n\n [\n COLLAPSE_EVENTS.FORMS_STATE_CHANGED,\n ].forEach((evt) => {\n document.addEventListener(evt, () => {\n document.querySelectorAll(SELECTORS.ADDRESS_FIELDS).forEach((el) => {\n const toggle = document.querySelector(SELECTORS.TOGGLE);\n\n if (visible(toggle)) {\n el.disabled = false;\n }\n });\n });\n });\n\n [\n ADDRESS_FORM_EVENTS.REFRESH,\n CHECKOUT_EVENTS.SAVED_ADDRESS.ADDRESS_SELECTED,\n CHECKOUT_EVENTS.BILLING.USE_SHIPPING_AS_BILLING_TOGGLED,\n NAV_EVENTS.NAV_CONTENT,\n NAV_EVENTS.NAV_BACK,\n ].forEach((evt) => {\n document.addEventListener(evt, (e) => {\n initAddressSearch();\n\n if (e.detail && e.detail.error) {\n showAddressFields();\n }\n });\n });\n\n document.addEventListener(ADDRESS_FORM_EVENTS.SUBMIT, showAddressFieldsOnReinit);\n\n showAddressFieldsOnReinit();\n }\n }, 100);\n};\n\nexport * from '~base';\n","import $ from 'jquery';\nimport { EVENTS as WISHLIST_EVENTS } from '../product/wishlist';\n\nconst SELECTORS = {\n HEADER_COUNTER: '.wishlist-quantity',\n};\n\nexport default () => {\n const wishlistEmpty = document.querySelector('.header-element__icon > .wishlist-empty');\n const wishlistFilled = document.querySelector('.header-element__icon > .wishlist-filled');\n const productCounter = document.querySelector(SELECTORS.HEADER_COUNTER);\n\n function unMarkWishlist() {\n if (wishlistFilled && parseInt(productCounter.innerHTML, 10) === 0) {\n if (wishlistFilled && !wishlistFilled.classList.contains('d-none')) {\n wishlistFilled.classList.add('d-none');\n }\n if (wishlistEmpty.classList.contains('d-none')) {\n wishlistEmpty.classList.remove('d-none');\n }\n }\n }\n\n function markWishlistFilled() {\n if (wishlistFilled) {\n if (wishlistFilled && wishlistFilled.classList.contains('d-none')) {\n wishlistFilled.classList.remove('d-none');\n }\n if (!wishlistEmpty.classList.contains('d-none')) {\n wishlistEmpty.classList.add('d-none');\n }\n }\n }\n\n $(document).on(WISHLIST_EVENTS.WISHLIST_ADD, () => {\n markWishlistFilled();\n if (productCounter) {\n productCounter.innerHTML = parseInt(productCounter.innerHTML, 10) + 1;\n }\n });\n\n $(document).on(WISHLIST_EVENTS.WISHLIST_REMOVE, () => {\n if (productCounter) {\n const newCount = parseInt(productCounter.innerHTML, 10) - 1;\n productCounter.innerHTML = newCount > 0 ? newCount : 0;\n }\n unMarkWishlist();\n });\n\n $(window).on('load', () => {\n if (productCounter && parseInt(productCounter.innerHTML, 10) > 0) {\n markWishlistFilled();\n } else {\n unMarkWishlist();\n }\n });\n};\n","import $ from 'jquery';\nimport processInclude from './util';\nimport * as productCount from './header/wishlist';\n\nimport '~base';\n\n$(document).ready(() => {\n processInclude(productCount);\n});\n","import $ from 'jquery';\nimport { onEvent } from '../util/domutils'; // eslint-disable-line import/named\n\nconst CLASSES = {\n INDICATOR_ACTIVE: 'wishlist__indicator--active',\n};\nexport const EVENTS = {\n WISHLIST_ADD: 'product:addedToWishlist',\n WISHLIST_REMOVE: 'product:removedFromWishlist',\n};\nconst SELECTORS = {\n WISHLIST_BUTTON: '.add-to-wish-list',\n INDICATORS: {\n ADDED: '.wishlist__indicator--added',\n REMOVED: '.wishlist__indicator--removed',\n },\n};\n\nconst addRemoveFromWishlist = async (delegateTarget, styleClass, toggleAttribute) => {\n const { urlAdd, urlRemove } = delegateTarget.dataset;\n const toggableStyleClass = styleClass || 'active';\n const pid = $(delegateTarget).closest('.product-detail').find('.product-id').html(); // eslint-disable-line\n let optionId = $(delegateTarget).closest('.product-detail').find('.product-option').attr('data-option-id'); // eslint-disable-line\n let optionVal = $(delegateTarget).closest('.product-detail').find('.options-select option:selected').attr('data-value-id'); // eslint-disable-line\n let url = urlAdd || delegateTarget.dataset.href;\n let indicator = document.querySelector(SELECTORS.INDICATORS.ADDED);\n let isAdd = true;\n optionId = optionId || null;\n optionVal = optionVal || null;\n if (!url || !pid) {\n return;\n }\n // init remove operation\n if (delegateTarget.classList.contains(toggableStyleClass)) {\n url = urlRemove;\n indicator = document.querySelector(SELECTORS.INDICATORS.REMOVED);\n isAdd = false;\n $.ajax({ // eslint-disable-line jquery/no-ajax\n url,\n type: 'get',\n dataType: 'json',\n data: {\n pid,\n optionId,\n optionVal,\n },\n });\n } else {\n url = urlAdd || delegateTarget.dataset.href;\n indicator = document.querySelector(SELECTORS.INDICATORS.ADDED);\n isAdd = true;\n $.ajax({ // eslint-disable-line jquery/no-ajax\n url,\n type: 'post',\n dataType: 'json',\n data: {\n pid,\n optionId,\n optionVal,\n },\n });\n }\n indicator.classList.add(CLASSES.INDICATOR_ACTIVE);\n delegateTarget.classList.toggle(toggableStyleClass);\n if (toggleAttribute) {\n delegateTarget.toggleAttribute(toggleAttribute, isAdd);\n }\n\n if (isAdd) {\n document.dispatchEvent(new CustomEvent(EVENTS.WISHLIST_ADD));\n } else {\n document.dispatchEvent(new CustomEvent(EVENTS.WISHLIST_REMOVE));\n }\n\n document.addEventListener('click', () => {\n indicator.classList.remove(CLASSES.INDICATOR_ACTIVE);\n }, { once: true });\n setTimeout(function () { // eslint-disable-line prefer-arrow-callback\n indicator.classList.remove(CLASSES.INDICATOR_ACTIVE);\n delegateTarget.blur();\n }, 5000);\n};\n\nexport const reinitWishlistOnVariantChange = () => {\n document.addEventListener('product:afterAttributeSelect', function () { // eslint-disable-line prefer-arrow-callback\n onEvent(document, 'click', SELECTORS.WISHLIST_BUTTON, async (e) => {\n addRemoveFromWishlist(e.delegateTarget, 'active');\n });\n });\n};\n\nexport const addToWishlist = () => true;\n\nexport default () => {\n onEvent(document, 'click', SELECTORS.WISHLIST_BUTTON, async (e) => {\n addRemoveFromWishlist(e.delegateTarget, 'active');\n });\n\n onEvent(document, 'click', '.product-tile__wishlist--link', async (e) => {\n addRemoveFromWishlist(e.delegateTarget, 'active');\n });\n};\n","/*!\n * Glide.js v3.6.0\n * (c) 2013-2022 Jędrzej Chałubek (https://github.com/jedrzejchalubek/)\n * Released under the MIT License.\n */\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = _getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}\n\nfunction _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = _superPropBase(target, property);\n\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get.apply(this, arguments);\n}\n\nvar defaults = {\n /**\n * Type of the movement.\n *\n * Available types:\n * `slider` - Rewinds slider to the start/end when it reaches the first or last slide.\n * `carousel` - Changes slides without starting over when it reaches the first or last slide.\n *\n * @type {String}\n */\n type: 'slider',\n\n /**\n * Start at specific slide number defined with zero-based index.\n *\n * @type {Number}\n */\n startAt: 0,\n\n /**\n * A number of slides visible on the single viewport.\n *\n * @type {Number}\n */\n perView: 1,\n\n /**\n * Focus currently active slide at a specified position in the track.\n *\n * Available inputs:\n * `center` - Current slide will be always focused at the center of a track.\n * `0,1,2,3...` - Current slide will be focused on the specified zero-based index.\n *\n * @type {String|Number}\n */\n focusAt: 0,\n\n /**\n * A size of the gap added between slides.\n *\n * @type {Number}\n */\n gap: 10,\n\n /**\n * Change slides after a specified interval. Use `false` for turning off autoplay.\n *\n * @type {Number|Boolean}\n */\n autoplay: false,\n\n /**\n * Stop autoplay on mouseover event.\n *\n * @type {Boolean}\n */\n hoverpause: true,\n\n /**\n * Allow for changing slides with left and right keyboard arrows.\n *\n * @type {Boolean}\n */\n keyboard: true,\n\n /**\n * Stop running `perView` number of slides from the end. Use this\n * option if you don't want to have an empty space after\n * a slider. Works only with `slider` type and a\n * non-centered `focusAt` setting.\n *\n * @type {Boolean}\n */\n bound: false,\n\n /**\n * Minimal swipe distance needed to change the slide. Use `false` for turning off a swiping.\n *\n * @type {Number|Boolean}\n */\n swipeThreshold: 80,\n\n /**\n * Minimal mouse drag distance needed to change the slide. Use `false` for turning off a dragging.\n *\n * @type {Number|Boolean}\n */\n dragThreshold: 120,\n\n /**\n * A number of slides moved on single swipe.\n *\n * Available types:\n * `` - Moves slider by one slide per swipe\n * `|` - Moves slider between views per swipe (number of slides defined in `perView` options)\n *\n * @type {String}\n */\n perSwipe: '',\n\n /**\n * Moving distance ratio of the slides on a swiping and dragging.\n *\n * @type {Number}\n */\n touchRatio: 0.5,\n\n /**\n * Angle required to activate slides moving on swiping or dragging.\n *\n * @type {Number}\n */\n touchAngle: 45,\n\n /**\n * Duration of the animation in milliseconds.\n *\n * @type {Number}\n */\n animationDuration: 400,\n\n /**\n * Allows looping the `slider` type. Slider will rewind to the first/last slide when it's at the start/end.\n *\n * @type {Boolean}\n */\n rewind: true,\n\n /**\n * Duration of the rewinding animation of the `slider` type in milliseconds.\n *\n * @type {Number}\n */\n rewindDuration: 800,\n\n /**\n * Easing function for the animation.\n *\n * @type {String}\n */\n animationTimingFunc: 'cubic-bezier(.165, .840, .440, 1)',\n\n /**\n * Wait for the animation to finish until the next user input can be processed\n *\n * @type {boolean}\n */\n waitForTransition: true,\n\n /**\n * Throttle costly events at most once per every wait milliseconds.\n *\n * @type {Number}\n */\n throttle: 10,\n\n /**\n * Moving direction mode.\n *\n * Available inputs:\n * - 'ltr' - left to right movement,\n * - 'rtl' - right to left movement.\n *\n * @type {String}\n */\n direction: 'ltr',\n\n /**\n * The distance value of the next and previous viewports which\n * have to peek in the current view. Accepts number and\n * pixels as a string. Left and right peeking can be\n * set up separately with a directions object.\n *\n * For example:\n * `100` - Peek 100px on the both sides.\n * { before: 100, after: 50 }` - Peek 100px on the left side and 50px on the right side.\n *\n * @type {Number|String|Object}\n */\n peek: 0,\n\n /**\n * Defines how many clones of current viewport will be generated.\n *\n * @type {Number}\n */\n cloningRatio: 1,\n\n /**\n * Collection of options applied at specified media breakpoints.\n * For example: display two slides per view under 800px.\n * `{\n * '800px': {\n * perView: 2\n * }\n * }`\n */\n breakpoints: {},\n\n /**\n * Collection of internally used HTML classes.\n *\n * @todo Refactor `slider` and `carousel` properties to single `type: { slider: '', carousel: '' }` object\n * @type {Object}\n */\n classes: {\n swipeable: 'glide--swipeable',\n dragging: 'glide--dragging',\n direction: {\n ltr: 'glide--ltr',\n rtl: 'glide--rtl'\n },\n type: {\n slider: 'glide--slider',\n carousel: 'glide--carousel'\n },\n slide: {\n clone: 'glide__slide--clone',\n active: 'glide__slide--active'\n },\n arrow: {\n disabled: 'glide__arrow--disabled'\n },\n nav: {\n active: 'glide__bullet--active'\n }\n }\n};\n\n/**\n * Outputs warning message to the bowser console.\n *\n * @param {String} msg\n * @return {Void}\n */\nfunction warn(msg) {\n console.error(\"[Glide warn]: \".concat(msg));\n}\n\n/**\n * Converts value entered as number\n * or string to integer value.\n *\n * @param {String} value\n * @returns {Number}\n */\nfunction toInt(value) {\n return parseInt(value);\n}\n/**\n * Converts value entered as number\n * or string to flat value.\n *\n * @param {String} value\n * @returns {Number}\n */\n\nfunction toFloat(value) {\n return parseFloat(value);\n}\n/**\n * Indicates whether the specified value is a string.\n *\n * @param {*} value\n * @return {Boolean}\n */\n\nfunction isString(value) {\n return typeof value === 'string';\n}\n/**\n * Indicates whether the specified value is an object.\n *\n * @param {*} value\n * @return {Boolean}\n *\n * @see https://github.com/jashkenas/underscore\n */\n\nfunction isObject(value) {\n var type = _typeof(value);\n\n return type === 'function' || type === 'object' && !!value; // eslint-disable-line no-mixed-operators\n}\n/**\n * Indicates whether the specified value is a function.\n *\n * @param {*} value\n * @return {Boolean}\n */\n\nfunction isFunction(value) {\n return typeof value === 'function';\n}\n/**\n * Indicates whether the specified value is undefined.\n *\n * @param {*} value\n * @return {Boolean}\n */\n\nfunction isUndefined(value) {\n return typeof value === 'undefined';\n}\n/**\n * Indicates whether the specified value is an array.\n *\n * @param {*} value\n * @return {Boolean}\n */\n\nfunction isArray(value) {\n return value.constructor === Array;\n}\n\n/**\n * Creates and initializes specified collection of extensions.\n * Each extension receives access to instance of glide and rest of components.\n *\n * @param {Object} glide\n * @param {Object} extensions\n *\n * @returns {Object}\n */\n\nfunction mount(glide, extensions, events) {\n var components = {};\n\n for (var name in extensions) {\n if (isFunction(extensions[name])) {\n components[name] = extensions[name](glide, components, events);\n } else {\n warn('Extension must be a function');\n }\n }\n\n for (var _name in components) {\n if (isFunction(components[_name].mount)) {\n components[_name].mount();\n }\n }\n\n return components;\n}\n\n/**\n * Defines getter and setter property on the specified object.\n *\n * @param {Object} obj Object where property has to be defined.\n * @param {String} prop Name of the defined property.\n * @param {Object} definition Get and set definitions for the property.\n * @return {Void}\n */\nfunction define(obj, prop, definition) {\n Object.defineProperty(obj, prop, definition);\n}\n/**\n * Sorts aphabetically object keys.\n *\n * @param {Object} obj\n * @return {Object}\n */\n\nfunction sortKeys(obj) {\n return Object.keys(obj).sort().reduce(function (r, k) {\n r[k] = obj[k];\n return r[k], r;\n }, {});\n}\n/**\n * Merges passed settings object with default options.\n *\n * @param {Object} defaults\n * @param {Object} settings\n * @return {Object}\n */\n\nfunction mergeOptions(defaults, settings) {\n var options = Object.assign({}, defaults, settings); // `Object.assign` do not deeply merge objects, so we\n // have to do it manually for every nested object\n // in options. Although it does not look smart,\n // it's smaller and faster than some fancy\n // merging deep-merge algorithm script.\n\n if (settings.hasOwnProperty('classes')) {\n options.classes = Object.assign({}, defaults.classes, settings.classes);\n\n if (settings.classes.hasOwnProperty('direction')) {\n options.classes.direction = Object.assign({}, defaults.classes.direction, settings.classes.direction);\n }\n\n if (settings.classes.hasOwnProperty('type')) {\n options.classes.type = Object.assign({}, defaults.classes.type, settings.classes.type);\n }\n\n if (settings.classes.hasOwnProperty('slide')) {\n options.classes.slide = Object.assign({}, defaults.classes.slide, settings.classes.slide);\n }\n\n if (settings.classes.hasOwnProperty('arrow')) {\n options.classes.arrow = Object.assign({}, defaults.classes.arrow, settings.classes.arrow);\n }\n\n if (settings.classes.hasOwnProperty('nav')) {\n options.classes.nav = Object.assign({}, defaults.classes.nav, settings.classes.nav);\n }\n }\n\n if (settings.hasOwnProperty('breakpoints')) {\n options.breakpoints = Object.assign({}, defaults.breakpoints, settings.breakpoints);\n }\n\n return options;\n}\n\nvar EventsBus = /*#__PURE__*/function () {\n /**\n * Construct a EventBus instance.\n *\n * @param {Object} events\n */\n function EventsBus() {\n var events = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, EventsBus);\n\n this.events = events;\n this.hop = events.hasOwnProperty;\n }\n /**\n * Adds listener to the specifed event.\n *\n * @param {String|Array} event\n * @param {Function} handler\n */\n\n\n _createClass(EventsBus, [{\n key: \"on\",\n value: function on(event, handler) {\n if (isArray(event)) {\n for (var i = 0; i < event.length; i++) {\n this.on(event[i], handler);\n }\n\n return;\n } // Create the event's object if not yet created\n\n\n if (!this.hop.call(this.events, event)) {\n this.events[event] = [];\n } // Add the handler to queue\n\n\n var index = this.events[event].push(handler) - 1; // Provide handle back for removal of event\n\n return {\n remove: function remove() {\n delete this.events[event][index];\n }\n };\n }\n /**\n * Runs registered handlers for specified event.\n *\n * @param {String|Array} event\n * @param {Object=} context\n */\n\n }, {\n key: \"emit\",\n value: function emit(event, context) {\n if (isArray(event)) {\n for (var i = 0; i < event.length; i++) {\n this.emit(event[i], context);\n }\n\n return;\n } // If the event doesn't exist, or there's no handlers in queue, just leave\n\n\n if (!this.hop.call(this.events, event)) {\n return;\n } // Cycle through events queue, fire!\n\n\n this.events[event].forEach(function (item) {\n item(context || {});\n });\n }\n }]);\n\n return EventsBus;\n}();\n\nvar Glide$1 = /*#__PURE__*/function () {\n /**\r\n * Construct glide.\r\n *\r\n * @param {String} selector\r\n * @param {Object} options\r\n */\n function Glide(selector) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Glide);\n\n this._c = {};\n this._t = [];\n this._e = new EventsBus();\n this.disabled = false;\n this.selector = selector;\n this.settings = mergeOptions(defaults, options);\n this.index = this.settings.startAt;\n }\n /**\r\n * Initializes glide.\r\n *\r\n * @param {Object} extensions Collection of extensions to initialize.\r\n * @return {Glide}\r\n */\n\n\n _createClass(Glide, [{\n key: \"mount\",\n value: function mount$1() {\n var extensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this._e.emit('mount.before');\n\n if (isObject(extensions)) {\n this._c = mount(this, extensions, this._e);\n } else {\n warn('You need to provide a object on `mount()`');\n }\n\n this._e.emit('mount.after');\n\n return this;\n }\n /**\r\n * Collects an instance `translate` transformers.\r\n *\r\n * @param {Array} transformers Collection of transformers.\r\n * @return {Void}\r\n */\n\n }, {\n key: \"mutate\",\n value: function mutate() {\n var transformers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (isArray(transformers)) {\n this._t = transformers;\n } else {\n warn('You need to provide a array on `mutate()`');\n }\n\n return this;\n }\n /**\r\n * Updates glide with specified settings.\r\n *\r\n * @param {Object} settings\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"update\",\n value: function update() {\n var settings = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.settings = mergeOptions(this.settings, settings);\n\n if (settings.hasOwnProperty('startAt')) {\n this.index = settings.startAt;\n }\n\n this._e.emit('update');\n\n return this;\n }\n /**\r\n * Change slide with specified pattern. A pattern must be in the special format:\r\n * `>` - Move one forward\r\n * `<` - Move one backward\r\n * `={i}` - Go to {i} zero-based slide (eq. '=1', will go to second slide)\r\n * `>>` - Rewinds to end (last slide)\r\n * `<<` - Rewinds to start (first slide)\r\n * `|>` - Move one viewport forward\r\n * `|<` - Move one viewport backward\r\n *\r\n * @param {String} pattern\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"go\",\n value: function go(pattern) {\n this._c.Run.make(pattern);\n\n return this;\n }\n /**\r\n * Move track by specified distance.\r\n *\r\n * @param {String} distance\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"move\",\n value: function move(distance) {\n this._c.Transition.disable();\n\n this._c.Move.make(distance);\n\n return this;\n }\n /**\r\n * Destroy instance and revert all changes done by this._c.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this._e.emit('destroy');\n\n return this;\n }\n /**\r\n * Start instance autoplaying.\r\n *\r\n * @param {Boolean|Number} interval Run autoplaying with passed interval regardless of `autoplay` settings\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"play\",\n value: function play() {\n var interval = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (interval) {\n this.settings.autoplay = interval;\n }\n\n this._e.emit('play');\n\n return this;\n }\n /**\r\n * Stop instance autoplaying.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"pause\",\n value: function pause() {\n this._e.emit('pause');\n\n return this;\n }\n /**\r\n * Sets glide into a idle status.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"disable\",\n value: function disable() {\n this.disabled = true;\n return this;\n }\n /**\r\n * Sets glide into a active status.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"enable\",\n value: function enable() {\n this.disabled = false;\n return this;\n }\n /**\r\n * Adds cuutom event listener with handler.\r\n *\r\n * @param {String|Array} event\r\n * @param {Function} handler\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"on\",\n value: function on(event, handler) {\n this._e.on(event, handler);\n\n return this;\n }\n /**\r\n * Checks if glide is a precised type.\r\n *\r\n * @param {String} name\r\n * @return {Boolean}\r\n */\n\n }, {\n key: \"isType\",\n value: function isType(name) {\n return this.settings.type === name;\n }\n /**\r\n * Gets value of the core options.\r\n *\r\n * @return {Object}\r\n */\n\n }, {\n key: \"settings\",\n get: function get() {\n return this._o;\n }\n /**\r\n * Sets value of the core options.\r\n *\r\n * @param {Object} o\r\n * @return {Void}\r\n */\n ,\n set: function set(o) {\n if (isObject(o)) {\n this._o = o;\n } else {\n warn('Options must be an `object` instance.');\n }\n }\n /**\r\n * Gets current index of the slider.\r\n *\r\n * @return {Object}\r\n */\n\n }, {\n key: \"index\",\n get: function get() {\n return this._i;\n }\n /**\r\n * Sets current index a slider.\r\n *\r\n * @return {Object}\r\n */\n ,\n set: function set(i) {\n this._i = toInt(i);\n }\n /**\r\n * Gets type name of the slider.\r\n *\r\n * @return {String}\r\n */\n\n }, {\n key: \"type\",\n get: function get() {\n return this.settings.type;\n }\n /**\r\n * Gets value of the idle status.\r\n *\r\n * @return {Boolean}\r\n */\n\n }, {\n key: \"disabled\",\n get: function get() {\n return this._d;\n }\n /**\r\n * Sets value of the idle status.\r\n *\r\n * @return {Boolean}\r\n */\n ,\n set: function set(status) {\n this._d = !!status;\n }\n }]);\n\n return Glide;\n}();\n\nfunction Run (Glide, Components, Events) {\n var Run = {\n /**\n * Initializes autorunning of the glide.\n *\n * @return {Void}\n */\n mount: function mount() {\n this._o = false;\n },\n\n /**\n * Makes glides running based on the passed moving schema.\n *\n * @param {String} move\n */\n make: function make(move) {\n var _this = this;\n\n if (!Glide.disabled) {\n !Glide.settings.waitForTransition || Glide.disable();\n this.move = move;\n Events.emit('run.before', this.move);\n this.calculate();\n Events.emit('run', this.move);\n Components.Transition.after(function () {\n if (_this.isStart()) {\n Events.emit('run.start', _this.move);\n }\n\n if (_this.isEnd()) {\n Events.emit('run.end', _this.move);\n }\n\n if (_this.isOffset()) {\n _this._o = false;\n Events.emit('run.offset', _this.move);\n }\n\n Events.emit('run.after', _this.move);\n Glide.enable();\n });\n }\n },\n\n /**\n * Calculates current index based on defined move.\n *\n * @return {Number|Undefined}\n */\n calculate: function calculate() {\n var move = this.move,\n length = this.length;\n var steps = move.steps,\n direction = move.direction; // By default assume that size of view is equal to one slide\n\n var viewSize = 1; // While direction is `=` we want jump to\n // a specified index described in steps.\n\n if (direction === '=') {\n // Check if bound is true, \n // as we want to avoid whitespaces.\n if (Glide.settings.bound && toInt(steps) > length) {\n Glide.index = length;\n return;\n }\n\n Glide.index = steps;\n return;\n } // When pattern is equal to `>>` we want\n // fast forward to the last slide.\n\n\n if (direction === '>' && steps === '>') {\n Glide.index = length;\n return;\n } // When pattern is equal to `<<` we want\n // fast forward to the first slide.\n\n\n if (direction === '<' && steps === '<') {\n Glide.index = 0;\n return;\n } // pagination movement\n\n\n if (direction === '|') {\n viewSize = Glide.settings.perView || 1;\n } // we are moving forward\n\n\n if (direction === '>' || direction === '|' && steps === '>') {\n var index = calculateForwardIndex(viewSize);\n\n if (index > length) {\n this._o = true;\n }\n\n Glide.index = normalizeForwardIndex(index, viewSize);\n return;\n } // we are moving backward\n\n\n if (direction === '<' || direction === '|' && steps === '<') {\n var _index = calculateBackwardIndex(viewSize);\n\n if (_index < 0) {\n this._o = true;\n }\n\n Glide.index = normalizeBackwardIndex(_index, viewSize);\n return;\n }\n\n warn(\"Invalid direction pattern [\".concat(direction).concat(steps, \"] has been used\"));\n },\n\n /**\n * Checks if we are on the first slide.\n *\n * @return {Boolean}\n */\n isStart: function isStart() {\n return Glide.index <= 0;\n },\n\n /**\n * Checks if we are on the last slide.\n *\n * @return {Boolean}\n */\n isEnd: function isEnd() {\n return Glide.index >= this.length;\n },\n\n /**\n * Checks if we are making a offset run.\n *\n * @param {String} direction\n * @return {Boolean}\n */\n isOffset: function isOffset() {\n var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n if (!direction) {\n return this._o;\n }\n\n if (!this._o) {\n return false;\n } // did we view to the right?\n\n\n if (direction === '|>') {\n return this.move.direction === '|' && this.move.steps === '>';\n } // did we view to the left?\n\n\n if (direction === '|<') {\n return this.move.direction === '|' && this.move.steps === '<';\n }\n\n return this.move.direction === direction;\n },\n\n /**\n * Checks if bound mode is active\n *\n * @return {Boolean}\n */\n isBound: function isBound() {\n return Glide.isType('slider') && Glide.settings.focusAt !== 'center' && Glide.settings.bound;\n }\n };\n /**\n * Returns index value to move forward/to the right\n *\n * @param viewSize\n * @returns {Number}\n */\n\n function calculateForwardIndex(viewSize) {\n var index = Glide.index;\n\n if (Glide.isType('carousel')) {\n return index + viewSize;\n }\n\n return index + (viewSize - index % viewSize);\n }\n /**\n * Normalizes the given forward index based on glide settings, preventing it to exceed certain boundaries\n *\n * @param index\n * @param length\n * @param viewSize\n * @returns {Number}\n */\n\n\n function normalizeForwardIndex(index, viewSize) {\n var length = Run.length;\n\n if (index <= length) {\n return index;\n }\n\n if (Glide.isType('carousel')) {\n return index - (length + 1);\n }\n\n if (Glide.settings.rewind) {\n // bound does funny things with the length, therefor we have to be certain\n // that we are on the last possible index value given by bound\n if (Run.isBound() && !Run.isEnd()) {\n return length;\n }\n\n return 0;\n }\n\n if (Run.isBound()) {\n return length;\n }\n\n return Math.floor(length / viewSize) * viewSize;\n }\n /**\n * Calculates index value to move backward/to the left\n *\n * @param viewSize\n * @returns {Number}\n */\n\n\n function calculateBackwardIndex(viewSize) {\n var index = Glide.index;\n\n if (Glide.isType('carousel')) {\n return index - viewSize;\n } // ensure our back navigation results in the same index as a forward navigation\n // to experience a homogeneous paging\n\n\n var view = Math.ceil(index / viewSize);\n return (view - 1) * viewSize;\n }\n /**\n * Normalizes the given backward index based on glide settings, preventing it to exceed certain boundaries\n *\n * @param index\n * @param length\n * @param viewSize\n * @returns {*}\n */\n\n\n function normalizeBackwardIndex(index, viewSize) {\n var length = Run.length;\n\n if (index >= 0) {\n return index;\n }\n\n if (Glide.isType('carousel')) {\n return index + (length + 1);\n }\n\n if (Glide.settings.rewind) {\n // bound does funny things with the length, therefor we have to be certain\n // that we are on first possible index value before we to rewind to the length given by bound\n if (Run.isBound() && Run.isStart()) {\n return length;\n }\n\n return Math.floor(length / viewSize) * viewSize;\n }\n\n return 0;\n }\n\n define(Run, 'move', {\n /**\n * Gets value of the move schema.\n *\n * @returns {Object}\n */\n get: function get() {\n return this._m;\n },\n\n /**\n * Sets value of the move schema.\n *\n * @returns {Object}\n */\n set: function set(value) {\n var step = value.substr(1);\n this._m = {\n direction: value.substr(0, 1),\n steps: step ? toInt(step) ? toInt(step) : step : 0\n };\n }\n });\n define(Run, 'length', {\n /**\n * Gets value of the running distance based\n * on zero-indexing number of slides.\n *\n * @return {Number}\n */\n get: function get() {\n var settings = Glide.settings;\n var length = Components.Html.slides.length; // If the `bound` option is active, a maximum running distance should be\n // reduced by `perView` and `focusAt` settings. Running distance\n // should end before creating an empty space after instance.\n\n if (this.isBound()) {\n return length - 1 - (toInt(settings.perView) - 1) + toInt(settings.focusAt);\n }\n\n return length - 1;\n }\n });\n define(Run, 'offset', {\n /**\n * Gets status of the offsetting flag.\n *\n * @return {Boolean}\n */\n get: function get() {\n return this._o;\n }\n });\n return Run;\n}\n\n/**\n * Returns a current time.\n *\n * @return {Number}\n */\nfunction now() {\n return new Date().getTime();\n}\n\n/**\n * Returns a function, that, when invoked, will only be triggered\n * at most once during a given window of time.\n *\n * @param {Function} func\n * @param {Number} wait\n * @param {Object=} options\n * @return {Function}\n *\n * @see https://github.com/jashkenas/underscore\n */\n\nfunction throttle(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function later() {\n previous = options.leading === false ? 0 : now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function throttled() {\n var at = now();\n if (!previous && options.leading === false) previous = at;\n var remaining = wait - (at - previous);\n context = this;\n args = arguments;\n\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n\n previous = at;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n\n return result;\n };\n\n throttled.cancel = function () {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n}\n\nvar MARGIN_TYPE = {\n ltr: ['marginLeft', 'marginRight'],\n rtl: ['marginRight', 'marginLeft']\n};\nfunction Gaps (Glide, Components, Events) {\n var Gaps = {\n /**\n * Applies gaps between slides. First and last\n * slides do not receive it's edge margins.\n *\n * @param {HTMLCollection} slides\n * @return {Void}\n */\n apply: function apply(slides) {\n for (var i = 0, len = slides.length; i < len; i++) {\n var style = slides[i].style;\n var direction = Components.Direction.value;\n\n if (i !== 0) {\n style[MARGIN_TYPE[direction][0]] = \"\".concat(this.value / 2, \"px\");\n } else {\n style[MARGIN_TYPE[direction][0]] = '';\n }\n\n if (i !== slides.length - 1) {\n style[MARGIN_TYPE[direction][1]] = \"\".concat(this.value / 2, \"px\");\n } else {\n style[MARGIN_TYPE[direction][1]] = '';\n }\n }\n },\n\n /**\n * Removes gaps from the slides.\n *\n * @param {HTMLCollection} slides\n * @returns {Void}\n */\n remove: function remove(slides) {\n for (var i = 0, len = slides.length; i < len; i++) {\n var style = slides[i].style;\n style.marginLeft = '';\n style.marginRight = '';\n }\n }\n };\n define(Gaps, 'value', {\n /**\n * Gets value of the gap.\n *\n * @returns {Number}\n */\n get: function get() {\n return toInt(Glide.settings.gap);\n }\n });\n define(Gaps, 'grow', {\n /**\n * Gets additional dimensions value caused by gaps.\n * Used to increase width of the slides wrapper.\n *\n * @returns {Number}\n */\n get: function get() {\n return Gaps.value * Components.Sizes.length;\n }\n });\n define(Gaps, 'reductor', {\n /**\n * Gets reduction value caused by gaps.\n * Used to subtract width of the slides.\n *\n * @returns {Number}\n */\n get: function get() {\n var perView = Glide.settings.perView;\n return Gaps.value * (perView - 1) / perView;\n }\n });\n /**\n * Apply calculated gaps:\n * - after building, so slides (including clones) will receive proper margins\n * - on updating via API, to recalculate gaps with new options\n */\n\n Events.on(['build.after', 'update'], throttle(function () {\n Gaps.apply(Components.Html.wrapper.children);\n }, 30));\n /**\n * Remove gaps:\n * - on destroying to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Gaps.remove(Components.Html.wrapper.children);\n });\n return Gaps;\n}\n\n/**\n * Finds siblings nodes of the passed node.\n *\n * @param {Element} node\n * @return {Array}\n */\nfunction siblings(node) {\n if (node && node.parentNode) {\n var n = node.parentNode.firstChild;\n var matched = [];\n\n for (; n; n = n.nextSibling) {\n if (n.nodeType === 1 && n !== node) {\n matched.push(n);\n }\n }\n\n return matched;\n }\n\n return [];\n}\n/**\n * Checks if passed node exist and is a valid element.\n *\n * @param {Element} node\n * @return {Boolean}\n */\n\nfunction exist(node) {\n if (node && node instanceof window.HTMLElement) {\n return true;\n }\n\n return false;\n}\n/**\n * Coerces a NodeList to an Array.\n *\n * @param {NodeList} nodeList\n * @return {Array}\n */\n\nfunction toArray(nodeList) {\n return Array.prototype.slice.call(nodeList);\n}\n\nvar TRACK_SELECTOR = '[data-glide-el=\"track\"]';\nfunction Html (Glide, Components, Events) {\n var Html = {\n /**\n * Setup slider HTML nodes.\n *\n * @param {Glide} glide\n */\n mount: function mount() {\n this.root = Glide.selector;\n this.track = this.root.querySelector(TRACK_SELECTOR);\n this.collectSlides();\n },\n\n /**\n * Collect slides\n */\n collectSlides: function collectSlides() {\n this.slides = toArray(this.wrapper.children).filter(function (slide) {\n return !slide.classList.contains(Glide.settings.classes.slide.clone);\n });\n }\n };\n define(Html, 'root', {\n /**\n * Gets node of the glide main element.\n *\n * @return {Object}\n */\n get: function get() {\n return Html._r;\n },\n\n /**\n * Sets node of the glide main element.\n *\n * @return {Object}\n */\n set: function set(r) {\n if (isString(r)) {\n r = document.querySelector(r);\n }\n\n if (exist(r)) {\n Html._r = r;\n } else {\n warn('Root element must be a existing Html node');\n }\n }\n });\n define(Html, 'track', {\n /**\n * Gets node of the glide track with slides.\n *\n * @return {Object}\n */\n get: function get() {\n return Html._t;\n },\n\n /**\n * Sets node of the glide track with slides.\n *\n * @return {Object}\n */\n set: function set(t) {\n if (exist(t)) {\n Html._t = t;\n } else {\n warn(\"Could not find track element. Please use \".concat(TRACK_SELECTOR, \" attribute.\"));\n }\n }\n });\n define(Html, 'wrapper', {\n /**\n * Gets node of the slides wrapper.\n *\n * @return {Object}\n */\n get: function get() {\n return Html.track.children[0];\n }\n });\n /**\n * Add/remove/reorder dynamic slides\n */\n\n Events.on('update', function () {\n Html.collectSlides();\n });\n return Html;\n}\n\nfunction Peek (Glide, Components, Events) {\n var Peek = {\n /**\n * Setups how much to peek based on settings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.value = Glide.settings.peek;\n }\n };\n define(Peek, 'value', {\n /**\n * Gets value of the peek.\n *\n * @returns {Number|Object}\n */\n get: function get() {\n return Peek._v;\n },\n\n /**\n * Sets value of the peek.\n *\n * @param {Number|Object} value\n * @return {Void}\n */\n set: function set(value) {\n if (isObject(value)) {\n value.before = toInt(value.before);\n value.after = toInt(value.after);\n } else {\n value = toInt(value);\n }\n\n Peek._v = value;\n }\n });\n define(Peek, 'reductor', {\n /**\n * Gets reduction value caused by peek.\n *\n * @returns {Number}\n */\n get: function get() {\n var value = Peek.value;\n var perView = Glide.settings.perView;\n\n if (isObject(value)) {\n return value.before / perView + value.after / perView;\n }\n\n return value * 2 / perView;\n }\n });\n /**\n * Recalculate peeking sizes on:\n * - when resizing window to update to proper percents\n */\n\n Events.on(['resize', 'update'], function () {\n Peek.mount();\n });\n return Peek;\n}\n\nfunction Move (Glide, Components, Events) {\n var Move = {\n /**\n * Constructs move component.\n *\n * @returns {Void}\n */\n mount: function mount() {\n this._o = 0;\n },\n\n /**\n * Calculates a movement value based on passed offset and currently active index.\n *\n * @param {Number} offset\n * @return {Void}\n */\n make: function make() {\n var _this = this;\n\n var offset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n this.offset = offset;\n Events.emit('move', {\n movement: this.value\n });\n Components.Transition.after(function () {\n Events.emit('move.after', {\n movement: _this.value\n });\n });\n }\n };\n define(Move, 'offset', {\n /**\n * Gets an offset value used to modify current translate.\n *\n * @return {Object}\n */\n get: function get() {\n return Move._o;\n },\n\n /**\n * Sets an offset value used to modify current translate.\n *\n * @return {Object}\n */\n set: function set(value) {\n Move._o = !isUndefined(value) ? toInt(value) : 0;\n }\n });\n define(Move, 'translate', {\n /**\n * Gets a raw movement value.\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Sizes.slideWidth * Glide.index;\n }\n });\n define(Move, 'value', {\n /**\n * Gets an actual movement value corrected by offset.\n *\n * @return {Number}\n */\n get: function get() {\n var offset = this.offset;\n var translate = this.translate;\n\n if (Components.Direction.is('rtl')) {\n return translate + offset;\n }\n\n return translate - offset;\n }\n });\n /**\n * Make movement to proper slide on:\n * - before build, so glide will start at `startAt` index\n * - on each standard run to move to newly calculated index\n */\n\n Events.on(['build.before', 'run'], function () {\n Move.make();\n });\n return Move;\n}\n\nfunction Sizes (Glide, Components, Events) {\n var Sizes = {\n /**\n * Setups dimensions of slides.\n *\n * @return {Void}\n */\n setupSlides: function setupSlides() {\n var width = \"\".concat(this.slideWidth, \"px\");\n var slides = Components.Html.slides;\n\n for (var i = 0; i < slides.length; i++) {\n slides[i].style.width = width;\n }\n },\n\n /**\n * Setups dimensions of slides wrapper.\n *\n * @return {Void}\n */\n setupWrapper: function setupWrapper() {\n Components.Html.wrapper.style.width = \"\".concat(this.wrapperSize, \"px\");\n },\n\n /**\n * Removes applied styles from HTML elements.\n *\n * @returns {Void}\n */\n remove: function remove() {\n var slides = Components.Html.slides;\n\n for (var i = 0; i < slides.length; i++) {\n slides[i].style.width = '';\n }\n\n Components.Html.wrapper.style.width = '';\n }\n };\n define(Sizes, 'length', {\n /**\n * Gets count number of the slides.\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Html.slides.length;\n }\n });\n define(Sizes, 'width', {\n /**\n * Gets width value of the slider (visible area).\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Html.track.offsetWidth;\n }\n });\n define(Sizes, 'wrapperSize', {\n /**\n * Gets size of the slides wrapper.\n *\n * @return {Number}\n */\n get: function get() {\n return Sizes.slideWidth * Sizes.length + Components.Gaps.grow + Components.Clones.grow;\n }\n });\n define(Sizes, 'slideWidth', {\n /**\n * Gets width value of a single slide.\n *\n * @return {Number}\n */\n get: function get() {\n return Sizes.width / Glide.settings.perView - Components.Peek.reductor - Components.Gaps.reductor;\n }\n });\n /**\n * Apply calculated glide's dimensions:\n * - before building, so other dimensions (e.g. translate) will be calculated propertly\n * - when resizing window to recalculate sildes dimensions\n * - on updating via API, to calculate dimensions based on new options\n */\n\n Events.on(['build.before', 'resize', 'update'], function () {\n Sizes.setupSlides();\n Sizes.setupWrapper();\n });\n /**\n * Remove calculated glide's dimensions:\n * - on destoting to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Sizes.remove();\n });\n return Sizes;\n}\n\nfunction Build (Glide, Components, Events) {\n var Build = {\n /**\n * Init glide building. Adds classes, sets\n * dimensions and setups initial state.\n *\n * @return {Void}\n */\n mount: function mount() {\n Events.emit('build.before');\n this.typeClass();\n this.activeClass();\n Events.emit('build.after');\n },\n\n /**\n * Adds `type` class to the glide element.\n *\n * @return {Void}\n */\n typeClass: function typeClass() {\n Components.Html.root.classList.add(Glide.settings.classes.type[Glide.settings.type]);\n },\n\n /**\n * Sets active class to current slide.\n *\n * @return {Void}\n */\n activeClass: function activeClass() {\n var classes = Glide.settings.classes;\n var slide = Components.Html.slides[Glide.index];\n\n if (slide) {\n slide.classList.add(classes.slide.active);\n siblings(slide).forEach(function (sibling) {\n sibling.classList.remove(classes.slide.active);\n });\n }\n },\n\n /**\n * Removes HTML classes applied at building.\n *\n * @return {Void}\n */\n removeClasses: function removeClasses() {\n var _Glide$settings$class = Glide.settings.classes,\n type = _Glide$settings$class.type,\n slide = _Glide$settings$class.slide;\n Components.Html.root.classList.remove(type[Glide.settings.type]);\n Components.Html.slides.forEach(function (sibling) {\n sibling.classList.remove(slide.active);\n });\n }\n };\n /**\n * Clear building classes:\n * - on destroying to bring HTML to its initial state\n * - on updating to remove classes before remounting component\n */\n\n Events.on(['destroy', 'update'], function () {\n Build.removeClasses();\n });\n /**\n * Remount component:\n * - on resizing of the window to calculate new dimensions\n * - on updating settings via API\n */\n\n Events.on(['resize', 'update'], function () {\n Build.mount();\n });\n /**\n * Swap active class of current slide:\n * - after each move to the new index\n */\n\n Events.on('move.after', function () {\n Build.activeClass();\n });\n return Build;\n}\n\nfunction Clones (Glide, Components, Events) {\n var Clones = {\n /**\n * Create pattern map and collect slides to be cloned.\n */\n mount: function mount() {\n this.items = [];\n\n if (Glide.isType('carousel')) {\n this.items = this.collect();\n }\n },\n\n /**\n * Collect clones with pattern.\n *\n * @return {[]}\n */\n collect: function collect() {\n var items = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var slides = Components.Html.slides;\n var _Glide$settings = Glide.settings,\n perView = _Glide$settings.perView,\n classes = _Glide$settings.classes,\n cloningRatio = _Glide$settings.cloningRatio;\n\n if (slides.length !== 0) {\n var peekIncrementer = +!!Glide.settings.peek;\n var cloneCount = perView + peekIncrementer + Math.round(perView / 2);\n var append = slides.slice(0, cloneCount).reverse();\n var prepend = slides.slice(cloneCount * -1);\n\n for (var r = 0; r < Math.max(cloningRatio, Math.floor(perView / slides.length)); r++) {\n for (var i = 0; i < append.length; i++) {\n var clone = append[i].cloneNode(true);\n clone.classList.add(classes.slide.clone);\n items.push(clone);\n }\n\n for (var _i = 0; _i < prepend.length; _i++) {\n var _clone = prepend[_i].cloneNode(true);\n\n _clone.classList.add(classes.slide.clone);\n\n items.unshift(_clone);\n }\n }\n }\n\n return items;\n },\n\n /**\n * Append cloned slides with generated pattern.\n *\n * @return {Void}\n */\n append: function append() {\n var items = this.items;\n var _Components$Html = Components.Html,\n wrapper = _Components$Html.wrapper,\n slides = _Components$Html.slides;\n var half = Math.floor(items.length / 2);\n var prepend = items.slice(0, half).reverse();\n var append = items.slice(half * -1).reverse();\n var width = \"\".concat(Components.Sizes.slideWidth, \"px\");\n\n for (var i = 0; i < append.length; i++) {\n wrapper.appendChild(append[i]);\n }\n\n for (var _i2 = 0; _i2 < prepend.length; _i2++) {\n wrapper.insertBefore(prepend[_i2], slides[0]);\n }\n\n for (var _i3 = 0; _i3 < items.length; _i3++) {\n items[_i3].style.width = width;\n }\n },\n\n /**\n * Remove all cloned slides.\n *\n * @return {Void}\n */\n remove: function remove() {\n var items = this.items;\n\n for (var i = 0; i < items.length; i++) {\n Components.Html.wrapper.removeChild(items[i]);\n }\n }\n };\n define(Clones, 'grow', {\n /**\n * Gets additional dimensions value caused by clones.\n *\n * @return {Number}\n */\n get: function get() {\n return (Components.Sizes.slideWidth + Components.Gaps.value) * Clones.items.length;\n }\n });\n /**\n * Append additional slide's clones:\n * - while glide's type is `carousel`\n */\n\n Events.on('update', function () {\n Clones.remove();\n Clones.mount();\n Clones.append();\n });\n /**\n * Append additional slide's clones:\n * - while glide's type is `carousel`\n */\n\n Events.on('build.before', function () {\n if (Glide.isType('carousel')) {\n Clones.append();\n }\n });\n /**\n * Remove clones HTMLElements:\n * - on destroying, to bring HTML to its initial state\n */\n\n Events.on('destroy', function () {\n Clones.remove();\n });\n return Clones;\n}\n\nvar EventsBinder = /*#__PURE__*/function () {\n /**\n * Construct a EventsBinder instance.\n */\n function EventsBinder() {\n var listeners = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, EventsBinder);\n\n this.listeners = listeners;\n }\n /**\n * Adds events listeners to arrows HTML elements.\n *\n * @param {String|Array} events\n * @param {Element|Window|Document} el\n * @param {Function} closure\n * @param {Boolean|Object} capture\n * @return {Void}\n */\n\n\n _createClass(EventsBinder, [{\n key: \"on\",\n value: function on(events, el, closure) {\n var capture = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n if (isString(events)) {\n events = [events];\n }\n\n for (var i = 0; i < events.length; i++) {\n this.listeners[events[i]] = closure;\n el.addEventListener(events[i], this.listeners[events[i]], capture);\n }\n }\n /**\n * Removes event listeners from arrows HTML elements.\n *\n * @param {String|Array} events\n * @param {Element|Window|Document} el\n * @param {Boolean|Object} capture\n * @return {Void}\n */\n\n }, {\n key: \"off\",\n value: function off(events, el) {\n var capture = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (isString(events)) {\n events = [events];\n }\n\n for (var i = 0; i < events.length; i++) {\n el.removeEventListener(events[i], this.listeners[events[i]], capture);\n }\n }\n /**\n * Destroy collected listeners.\n *\n * @returns {Void}\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n delete this.listeners;\n }\n }]);\n\n return EventsBinder;\n}();\n\nfunction Resize (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Resize = {\n /**\n * Initializes window bindings.\n */\n mount: function mount() {\n this.bind();\n },\n\n /**\n * Binds `rezsize` listener to the window.\n * It's a costly event, so we are debouncing it.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('resize', window, throttle(function () {\n Events.emit('resize');\n }, Glide.settings.throttle));\n },\n\n /**\n * Unbinds listeners from the window.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('resize', window);\n }\n };\n /**\n * Remove bindings from window:\n * - on destroying, to remove added EventListener\n */\n\n Events.on('destroy', function () {\n Resize.unbind();\n Binder.destroy();\n });\n return Resize;\n}\n\nvar VALID_DIRECTIONS = ['ltr', 'rtl'];\nvar FLIPED_MOVEMENTS = {\n '>': '<',\n '<': '>',\n '=': '='\n};\nfunction Direction (Glide, Components, Events) {\n var Direction = {\n /**\n * Setups gap value based on settings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.value = Glide.settings.direction;\n },\n\n /**\n * Resolves pattern based on direction value\n *\n * @param {String} pattern\n * @returns {String}\n */\n resolve: function resolve(pattern) {\n var token = pattern.slice(0, 1);\n\n if (this.is('rtl')) {\n return pattern.split(token).join(FLIPED_MOVEMENTS[token]);\n }\n\n return pattern;\n },\n\n /**\n * Checks value of direction mode.\n *\n * @param {String} direction\n * @returns {Boolean}\n */\n is: function is(direction) {\n return this.value === direction;\n },\n\n /**\n * Applies direction class to the root HTML element.\n *\n * @return {Void}\n */\n addClass: function addClass() {\n Components.Html.root.classList.add(Glide.settings.classes.direction[this.value]);\n },\n\n /**\n * Removes direction class from the root HTML element.\n *\n * @return {Void}\n */\n removeClass: function removeClass() {\n Components.Html.root.classList.remove(Glide.settings.classes.direction[this.value]);\n }\n };\n define(Direction, 'value', {\n /**\n * Gets value of the direction.\n *\n * @returns {Number}\n */\n get: function get() {\n return Direction._v;\n },\n\n /**\n * Sets value of the direction.\n *\n * @param {String} value\n * @return {Void}\n */\n set: function set(value) {\n if (VALID_DIRECTIONS.indexOf(value) > -1) {\n Direction._v = value;\n } else {\n warn('Direction value must be `ltr` or `rtl`');\n }\n }\n });\n /**\n * Clear direction class:\n * - on destroy to bring HTML to its initial state\n * - on update to remove class before reappling bellow\n */\n\n Events.on(['destroy', 'update'], function () {\n Direction.removeClass();\n });\n /**\n * Remount component:\n * - on update to reflect changes in direction value\n */\n\n Events.on('update', function () {\n Direction.mount();\n });\n /**\n * Apply direction class:\n * - before building to apply class for the first time\n * - on updating to reapply direction class that may changed\n */\n\n Events.on(['build.before', 'update'], function () {\n Direction.addClass();\n });\n return Direction;\n}\n\n/**\n * Reflects value of glide movement.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction Rtl (Glide, Components) {\n return {\n /**\n * Negates the passed translate if glide is in RTL option.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n if (Components.Direction.is('rtl')) {\n return -translate;\n }\n\n return translate;\n }\n };\n}\n\n/**\n * Updates glide movement with a `gap` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction Gap (Glide, Components) {\n return {\n /**\n * Modifies passed translate value with number in the `gap` settings.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n var multiplier = Math.floor(translate / Components.Sizes.slideWidth);\n return translate + Components.Gaps.value * multiplier;\n }\n };\n}\n\n/**\n * Updates glide movement with width of additional clones width.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction Grow (Glide, Components) {\n return {\n /**\n * Adds to the passed translate width of the half of clones.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n return translate + Components.Clones.grow / 2;\n }\n };\n}\n\n/**\n * Updates glide movement with a `peek` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n\nfunction Peeking (Glide, Components) {\n return {\n /**\n * Modifies passed translate value with a `peek` setting.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n if (Glide.settings.focusAt >= 0) {\n var peek = Components.Peek.value;\n\n if (isObject(peek)) {\n return translate - peek.before;\n }\n\n return translate - peek;\n }\n\n return translate;\n }\n };\n}\n\n/**\n * Updates glide movement with a `focusAt` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction Focusing (Glide, Components) {\n return {\n /**\n * Modifies passed translate value with index in the `focusAt` setting.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n var gap = Components.Gaps.value;\n var width = Components.Sizes.width;\n var focusAt = Glide.settings.focusAt;\n var slideWidth = Components.Sizes.slideWidth;\n\n if (focusAt === 'center') {\n return translate - (width / 2 - slideWidth / 2);\n }\n\n return translate - slideWidth * focusAt - gap * focusAt;\n }\n };\n}\n\n/**\n * Applies diffrent transformers on translate value.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n\nfunction mutator (Glide, Components, Events) {\n /**\n * Merge instance transformers with collection of default transformers.\n * It's important that the Rtl component be last on the list,\n * so it reflects all previous transformations.\n *\n * @type {Array}\n */\n var TRANSFORMERS = [Gap, Grow, Peeking, Focusing].concat(Glide._t, [Rtl]);\n return {\n /**\n * Piplines translate value with registered transformers.\n *\n * @param {Number} translate\n * @return {Number}\n */\n mutate: function mutate(translate) {\n for (var i = 0; i < TRANSFORMERS.length; i++) {\n var transformer = TRANSFORMERS[i];\n\n if (isFunction(transformer) && isFunction(transformer().modify)) {\n translate = transformer(Glide, Components, Events).modify(translate);\n } else {\n warn('Transformer should be a function that returns an object with `modify()` method');\n }\n }\n\n return translate;\n }\n };\n}\n\nfunction Translate (Glide, Components, Events) {\n var Translate = {\n /**\n * Sets value of translate on HTML element.\n *\n * @param {Number} value\n * @return {Void}\n */\n set: function set(value) {\n var transform = mutator(Glide, Components).mutate(value);\n var translate3d = \"translate3d(\".concat(-1 * transform, \"px, 0px, 0px)\");\n Components.Html.wrapper.style.mozTransform = translate3d; // needed for supported Firefox 10-15\n\n Components.Html.wrapper.style.webkitTransform = translate3d; // needed for supported Chrome 10-35, Safari 5.1-8, and Opera 15-22\n\n Components.Html.wrapper.style.transform = translate3d;\n },\n\n /**\n * Removes value of translate from HTML element.\n *\n * @return {Void}\n */\n remove: function remove() {\n Components.Html.wrapper.style.transform = '';\n },\n\n /**\n * @return {number}\n */\n getStartIndex: function getStartIndex() {\n var length = Components.Sizes.length;\n var index = Glide.index;\n var perView = Glide.settings.perView;\n\n if (Components.Run.isOffset('>') || Components.Run.isOffset('|>')) {\n return length + (index - perView);\n } // \"modulo length\" converts an index that equals length to zero\n\n\n return (index + perView) % length;\n },\n\n /**\n * @return {number}\n */\n getTravelDistance: function getTravelDistance() {\n var travelDistance = Components.Sizes.slideWidth * Glide.settings.perView;\n\n if (Components.Run.isOffset('>') || Components.Run.isOffset('|>')) {\n // reverse travel distance so that we don't have to change subtract operations\n return travelDistance * -1;\n }\n\n return travelDistance;\n }\n };\n /**\n * Set new translate value:\n * - on move to reflect index change\n * - on updating via API to reflect possible changes in options\n */\n\n Events.on('move', function (context) {\n if (!Glide.isType('carousel') || !Components.Run.isOffset()) {\n return Translate.set(context.movement);\n }\n\n Components.Transition.after(function () {\n Events.emit('translate.jump');\n Translate.set(Components.Sizes.slideWidth * Glide.index);\n });\n var startWidth = Components.Sizes.slideWidth * Components.Translate.getStartIndex();\n return Translate.set(startWidth - Components.Translate.getTravelDistance());\n });\n /**\n * Remove translate:\n * - on destroying to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Translate.remove();\n });\n return Translate;\n}\n\nfunction Transition (Glide, Components, Events) {\n /**\n * Holds inactivity status of transition.\n * When true transition is not applied.\n *\n * @type {Boolean}\n */\n var disabled = false;\n var Transition = {\n /**\n * Composes string of the CSS transition.\n *\n * @param {String} property\n * @return {String}\n */\n compose: function compose(property) {\n var settings = Glide.settings;\n\n if (!disabled) {\n return \"\".concat(property, \" \").concat(this.duration, \"ms \").concat(settings.animationTimingFunc);\n }\n\n return \"\".concat(property, \" 0ms \").concat(settings.animationTimingFunc);\n },\n\n /**\n * Sets value of transition on HTML element.\n *\n * @param {String=} property\n * @return {Void}\n */\n set: function set() {\n var property = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'transform';\n Components.Html.wrapper.style.transition = this.compose(property);\n },\n\n /**\n * Removes value of transition from HTML element.\n *\n * @return {Void}\n */\n remove: function remove() {\n Components.Html.wrapper.style.transition = '';\n },\n\n /**\n * Runs callback after animation.\n *\n * @param {Function} callback\n * @return {Void}\n */\n after: function after(callback) {\n setTimeout(function () {\n callback();\n }, this.duration);\n },\n\n /**\n * Enable transition.\n *\n * @return {Void}\n */\n enable: function enable() {\n disabled = false;\n this.set();\n },\n\n /**\n * Disable transition.\n *\n * @return {Void}\n */\n disable: function disable() {\n disabled = true;\n this.set();\n }\n };\n define(Transition, 'duration', {\n /**\n * Gets duration of the transition based\n * on currently running animation type.\n *\n * @return {Number}\n */\n get: function get() {\n var settings = Glide.settings;\n\n if (Glide.isType('slider') && Components.Run.offset) {\n return settings.rewindDuration;\n }\n\n return settings.animationDuration;\n }\n });\n /**\n * Set transition `style` value:\n * - on each moving, because it may be cleared by offset move\n */\n\n Events.on('move', function () {\n Transition.set();\n });\n /**\n * Disable transition:\n * - before initial build to avoid transitioning from `0` to `startAt` index\n * - while resizing window and recalculating dimensions\n * - on jumping from offset transition at start and end edges in `carousel` type\n */\n\n Events.on(['build.before', 'resize', 'translate.jump'], function () {\n Transition.disable();\n });\n /**\n * Enable transition:\n * - on each running, because it may be disabled by offset move\n */\n\n Events.on('run', function () {\n Transition.enable();\n });\n /**\n * Remove transition:\n * - on destroying to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Transition.remove();\n });\n return Transition;\n}\n\n/**\n * Test via a getter in the options object to see\n * if the passive property is accessed.\n *\n * @see https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md#feature-detection\n */\nvar supportsPassive = false;\n\ntry {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassive = true;\n }\n });\n window.addEventListener('testPassive', null, opts);\n window.removeEventListener('testPassive', null, opts);\n} catch (e) {}\n\nvar supportsPassive$1 = supportsPassive;\n\nvar START_EVENTS = ['touchstart', 'mousedown'];\nvar MOVE_EVENTS = ['touchmove', 'mousemove'];\nvar END_EVENTS = ['touchend', 'touchcancel', 'mouseup', 'mouseleave'];\nvar MOUSE_EVENTS = ['mousedown', 'mousemove', 'mouseup', 'mouseleave'];\nfunction Swipe (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var swipeSin = 0;\n var swipeStartX = 0;\n var swipeStartY = 0;\n var disabled = false;\n var capture = supportsPassive$1 ? {\n passive: true\n } : false;\n var Swipe = {\n /**\n * Initializes swipe bindings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.bindSwipeStart();\n },\n\n /**\n * Handler for `swipestart` event. Calculates entry points of the user's tap.\n *\n * @param {Object} event\n * @return {Void}\n */\n start: function start(event) {\n if (!disabled && !Glide.disabled) {\n this.disable();\n var swipe = this.touches(event);\n swipeSin = null;\n swipeStartX = toInt(swipe.pageX);\n swipeStartY = toInt(swipe.pageY);\n this.bindSwipeMove();\n this.bindSwipeEnd();\n Events.emit('swipe.start');\n }\n },\n\n /**\n * Handler for `swipemove` event. Calculates user's tap angle and distance.\n *\n * @param {Object} event\n */\n move: function move(event) {\n if (!Glide.disabled) {\n var _Glide$settings = Glide.settings,\n touchAngle = _Glide$settings.touchAngle,\n touchRatio = _Glide$settings.touchRatio,\n classes = _Glide$settings.classes;\n var swipe = this.touches(event);\n var subExSx = toInt(swipe.pageX) - swipeStartX;\n var subEySy = toInt(swipe.pageY) - swipeStartY;\n var powEX = Math.abs(subExSx << 2);\n var powEY = Math.abs(subEySy << 2);\n var swipeHypotenuse = Math.sqrt(powEX + powEY);\n var swipeCathetus = Math.sqrt(powEY);\n swipeSin = Math.asin(swipeCathetus / swipeHypotenuse);\n\n if (swipeSin * 180 / Math.PI < touchAngle) {\n event.stopPropagation();\n Components.Move.make(subExSx * toFloat(touchRatio));\n Components.Html.root.classList.add(classes.dragging);\n Events.emit('swipe.move');\n } else {\n return false;\n }\n }\n },\n\n /**\n * Handler for `swipeend` event. Finitializes user's tap and decides about glide move.\n *\n * @param {Object} event\n * @return {Void}\n */\n end: function end(event) {\n if (!Glide.disabled) {\n var _Glide$settings2 = Glide.settings,\n perSwipe = _Glide$settings2.perSwipe,\n touchAngle = _Glide$settings2.touchAngle,\n classes = _Glide$settings2.classes;\n var swipe = this.touches(event);\n var threshold = this.threshold(event);\n var swipeDistance = swipe.pageX - swipeStartX;\n var swipeDeg = swipeSin * 180 / Math.PI;\n this.enable();\n\n if (swipeDistance > threshold && swipeDeg < touchAngle) {\n Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe, \"<\")));\n } else if (swipeDistance < -threshold && swipeDeg < touchAngle) {\n Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe, \">\")));\n } else {\n // While swipe don't reach distance apply previous transform.\n Components.Move.make();\n }\n\n Components.Html.root.classList.remove(classes.dragging);\n this.unbindSwipeMove();\n this.unbindSwipeEnd();\n Events.emit('swipe.end');\n }\n },\n\n /**\n * Binds swipe's starting event.\n *\n * @return {Void}\n */\n bindSwipeStart: function bindSwipeStart() {\n var _this = this;\n\n var _Glide$settings3 = Glide.settings,\n swipeThreshold = _Glide$settings3.swipeThreshold,\n dragThreshold = _Glide$settings3.dragThreshold;\n\n if (swipeThreshold) {\n Binder.on(START_EVENTS[0], Components.Html.wrapper, function (event) {\n _this.start(event);\n }, capture);\n }\n\n if (dragThreshold) {\n Binder.on(START_EVENTS[1], Components.Html.wrapper, function (event) {\n _this.start(event);\n }, capture);\n }\n },\n\n /**\n * Unbinds swipe's starting event.\n *\n * @return {Void}\n */\n unbindSwipeStart: function unbindSwipeStart() {\n Binder.off(START_EVENTS[0], Components.Html.wrapper, capture);\n Binder.off(START_EVENTS[1], Components.Html.wrapper, capture);\n },\n\n /**\n * Binds swipe's moving event.\n *\n * @return {Void}\n */\n bindSwipeMove: function bindSwipeMove() {\n var _this2 = this;\n\n Binder.on(MOVE_EVENTS, Components.Html.wrapper, throttle(function (event) {\n _this2.move(event);\n }, Glide.settings.throttle), capture);\n },\n\n /**\n * Unbinds swipe's moving event.\n *\n * @return {Void}\n */\n unbindSwipeMove: function unbindSwipeMove() {\n Binder.off(MOVE_EVENTS, Components.Html.wrapper, capture);\n },\n\n /**\n * Binds swipe's ending event.\n *\n * @return {Void}\n */\n bindSwipeEnd: function bindSwipeEnd() {\n var _this3 = this;\n\n Binder.on(END_EVENTS, Components.Html.wrapper, function (event) {\n _this3.end(event);\n });\n },\n\n /**\n * Unbinds swipe's ending event.\n *\n * @return {Void}\n */\n unbindSwipeEnd: function unbindSwipeEnd() {\n Binder.off(END_EVENTS, Components.Html.wrapper);\n },\n\n /**\n * Normalizes event touches points accorting to different types.\n *\n * @param {Object} event\n */\n touches: function touches(event) {\n if (MOUSE_EVENTS.indexOf(event.type) > -1) {\n return event;\n }\n\n return event.touches[0] || event.changedTouches[0];\n },\n\n /**\n * Gets value of minimum swipe distance settings based on event type.\n *\n * @return {Number}\n */\n threshold: function threshold(event) {\n var settings = Glide.settings;\n\n if (MOUSE_EVENTS.indexOf(event.type) > -1) {\n return settings.dragThreshold;\n }\n\n return settings.swipeThreshold;\n },\n\n /**\n * Enables swipe event.\n *\n * @return {self}\n */\n enable: function enable() {\n disabled = false;\n Components.Transition.enable();\n return this;\n },\n\n /**\n * Disables swipe event.\n *\n * @return {self}\n */\n disable: function disable() {\n disabled = true;\n Components.Transition.disable();\n return this;\n }\n };\n /**\n * Add component class:\n * - after initial building\n */\n\n Events.on('build.after', function () {\n Components.Html.root.classList.add(Glide.settings.classes.swipeable);\n });\n /**\n * Remove swiping bindings:\n * - on destroying, to remove added EventListeners\n */\n\n Events.on('destroy', function () {\n Swipe.unbindSwipeStart();\n Swipe.unbindSwipeMove();\n Swipe.unbindSwipeEnd();\n Binder.destroy();\n });\n return Swipe;\n}\n\nfunction Images (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Images = {\n /**\n * Binds listener to glide wrapper.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.bind();\n },\n\n /**\n * Binds `dragstart` event on wrapper to prevent dragging images.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('dragstart', Components.Html.wrapper, this.dragstart);\n },\n\n /**\n * Unbinds `dragstart` event on wrapper.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('dragstart', Components.Html.wrapper);\n },\n\n /**\n * Event handler. Prevents dragging.\n *\n * @return {Void}\n */\n dragstart: function dragstart(event) {\n event.preventDefault();\n }\n };\n /**\n * Remove bindings from images:\n * - on destroying, to remove added EventListeners\n */\n\n Events.on('destroy', function () {\n Images.unbind();\n Binder.destroy();\n });\n return Images;\n}\n\nfunction Anchors (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n /**\n * Holds detaching status of anchors.\n * Prevents detaching of already detached anchors.\n *\n * @private\n * @type {Boolean}\n */\n\n var detached = false;\n /**\n * Holds preventing status of anchors.\n * If `true` redirection after click will be disabled.\n *\n * @private\n * @type {Boolean}\n */\n\n var prevented = false;\n var Anchors = {\n /**\n * Setups a initial state of anchors component.\n *\n * @returns {Void}\n */\n mount: function mount() {\n /**\n * Holds collection of anchors elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n this._a = Components.Html.wrapper.querySelectorAll('a');\n this.bind();\n },\n\n /**\n * Binds events to anchors inside a track.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('click', Components.Html.wrapper, this.click);\n },\n\n /**\n * Unbinds events attached to anchors inside a track.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('click', Components.Html.wrapper);\n },\n\n /**\n * Handler for click event. Prevents clicks when glide is in `prevent` status.\n *\n * @param {Object} event\n * @return {Void}\n */\n click: function click(event) {\n if (prevented) {\n event.stopPropagation();\n event.preventDefault();\n }\n },\n\n /**\n * Detaches anchors click event inside glide.\n *\n * @return {self}\n */\n detach: function detach() {\n prevented = true;\n\n if (!detached) {\n for (var i = 0; i < this.items.length; i++) {\n this.items[i].draggable = false;\n }\n\n detached = true;\n }\n\n return this;\n },\n\n /**\n * Attaches anchors click events inside glide.\n *\n * @return {self}\n */\n attach: function attach() {\n prevented = false;\n\n if (detached) {\n for (var i = 0; i < this.items.length; i++) {\n this.items[i].draggable = true;\n }\n\n detached = false;\n }\n\n return this;\n }\n };\n define(Anchors, 'items', {\n /**\n * Gets collection of the arrows HTML elements.\n *\n * @return {HTMLElement[]}\n */\n get: function get() {\n return Anchors._a;\n }\n });\n /**\n * Detach anchors inside slides:\n * - on swiping, so they won't redirect to its `href` attributes\n */\n\n Events.on('swipe.move', function () {\n Anchors.detach();\n });\n /**\n * Attach anchors inside slides:\n * - after swiping and transitions ends, so they can redirect after click again\n */\n\n Events.on('swipe.end', function () {\n Components.Transition.after(function () {\n Anchors.attach();\n });\n });\n /**\n * Unbind anchors inside slides:\n * - on destroying, to bring anchors to its initial state\n */\n\n Events.on('destroy', function () {\n Anchors.attach();\n Anchors.unbind();\n Binder.destroy();\n });\n return Anchors;\n}\n\nvar NAV_SELECTOR = '[data-glide-el=\"controls[nav]\"]';\nvar CONTROLS_SELECTOR = '[data-glide-el^=\"controls\"]';\nvar PREVIOUS_CONTROLS_SELECTOR = \"\".concat(CONTROLS_SELECTOR, \" [data-glide-dir*=\\\"<\\\"]\");\nvar NEXT_CONTROLS_SELECTOR = \"\".concat(CONTROLS_SELECTOR, \" [data-glide-dir*=\\\">\\\"]\");\nfunction Controls (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var capture = supportsPassive$1 ? {\n passive: true\n } : false;\n var Controls = {\n /**\n * Inits arrows. Binds events listeners\n * to the arrows HTML elements.\n *\n * @return {Void}\n */\n mount: function mount() {\n /**\n * Collection of navigation HTML elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n this._n = Components.Html.root.querySelectorAll(NAV_SELECTOR);\n /**\n * Collection of controls HTML elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n\n this._c = Components.Html.root.querySelectorAll(CONTROLS_SELECTOR);\n /**\n * Collection of arrow control HTML elements.\n *\n * @private\n * @type {Object}\n */\n\n this._arrowControls = {\n previous: Components.Html.root.querySelectorAll(PREVIOUS_CONTROLS_SELECTOR),\n next: Components.Html.root.querySelectorAll(NEXT_CONTROLS_SELECTOR)\n };\n this.addBindings();\n },\n\n /**\n * Sets active class to current slide.\n *\n * @return {Void}\n */\n setActive: function setActive() {\n for (var i = 0; i < this._n.length; i++) {\n this.addClass(this._n[i].children);\n }\n },\n\n /**\n * Removes active class to current slide.\n *\n * @return {Void}\n */\n removeActive: function removeActive() {\n for (var i = 0; i < this._n.length; i++) {\n this.removeClass(this._n[i].children);\n }\n },\n\n /**\n * Toggles active class on items inside navigation.\n *\n * @param {HTMLElement} controls\n * @return {Void}\n */\n addClass: function addClass(controls) {\n var settings = Glide.settings;\n var item = controls[Glide.index];\n\n if (!item) {\n return;\n }\n\n if (item) {\n item.classList.add(settings.classes.nav.active);\n siblings(item).forEach(function (sibling) {\n sibling.classList.remove(settings.classes.nav.active);\n });\n }\n },\n\n /**\n * Removes active class from active control.\n *\n * @param {HTMLElement} controls\n * @return {Void}\n */\n removeClass: function removeClass(controls) {\n var item = controls[Glide.index];\n\n if (item) {\n item.classList.remove(Glide.settings.classes.nav.active);\n }\n },\n\n /**\n * Calculates, removes or adds `Glide.settings.classes.disabledArrow` class on the control arrows\n */\n setArrowState: function setArrowState() {\n if (Glide.settings.rewind) {\n return;\n }\n\n var next = Controls._arrowControls.next;\n var previous = Controls._arrowControls.previous;\n this.resetArrowState(next, previous);\n\n if (Glide.index === 0) {\n this.disableArrow(previous);\n }\n\n if (Glide.index === Components.Run.length) {\n this.disableArrow(next);\n }\n },\n\n /**\n * Removes `Glide.settings.classes.disabledArrow` from given NodeList elements\n *\n * @param {NodeList[]} lists\n */\n resetArrowState: function resetArrowState() {\n var settings = Glide.settings;\n\n for (var _len = arguments.length, lists = new Array(_len), _key = 0; _key < _len; _key++) {\n lists[_key] = arguments[_key];\n }\n\n lists.forEach(function (list) {\n toArray(list).forEach(function (element) {\n element.classList.remove(settings.classes.arrow.disabled);\n });\n });\n },\n\n /**\n * Adds `Glide.settings.classes.disabledArrow` to given NodeList elements\n *\n * @param {NodeList[]} lists\n */\n disableArrow: function disableArrow() {\n var settings = Glide.settings;\n\n for (var _len2 = arguments.length, lists = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n lists[_key2] = arguments[_key2];\n }\n\n lists.forEach(function (list) {\n toArray(list).forEach(function (element) {\n element.classList.add(settings.classes.arrow.disabled);\n });\n });\n },\n\n /**\n * Adds handles to the each group of controls.\n *\n * @return {Void}\n */\n addBindings: function addBindings() {\n for (var i = 0; i < this._c.length; i++) {\n this.bind(this._c[i].children);\n }\n },\n\n /**\n * Removes handles from the each group of controls.\n *\n * @return {Void}\n */\n removeBindings: function removeBindings() {\n for (var i = 0; i < this._c.length; i++) {\n this.unbind(this._c[i].children);\n }\n },\n\n /**\n * Binds events to arrows HTML elements.\n *\n * @param {HTMLCollection} elements\n * @return {Void}\n */\n bind: function bind(elements) {\n for (var i = 0; i < elements.length; i++) {\n Binder.on('click', elements[i], this.click);\n Binder.on('touchstart', elements[i], this.click, capture);\n }\n },\n\n /**\n * Unbinds events binded to the arrows HTML elements.\n *\n * @param {HTMLCollection} elements\n * @return {Void}\n */\n unbind: function unbind(elements) {\n for (var i = 0; i < elements.length; i++) {\n Binder.off(['click', 'touchstart'], elements[i]);\n }\n },\n\n /**\n * Handles `click` event on the arrows HTML elements.\n * Moves slider in direction given via the\n * `data-glide-dir` attribute.\n *\n * @param {Object} event\n * @return {void}\n */\n click: function click(event) {\n if (!supportsPassive$1 && event.type === 'touchstart') {\n event.preventDefault();\n }\n\n var direction = event.currentTarget.getAttribute('data-glide-dir');\n Components.Run.make(Components.Direction.resolve(direction));\n }\n };\n define(Controls, 'items', {\n /**\n * Gets collection of the controls HTML elements.\n *\n * @return {HTMLElement[]}\n */\n get: function get() {\n return Controls._c;\n }\n });\n /**\n * Swap active class of current navigation item:\n * - after mounting to set it to initial index\n * - after each move to the new index\n */\n\n Events.on(['mount.after', 'move.after'], function () {\n Controls.setActive();\n });\n /**\n * Add or remove disabled class of arrow elements\n */\n\n Events.on(['mount.after', 'run'], function () {\n Controls.setArrowState();\n });\n /**\n * Remove bindings and HTML Classes:\n * - on destroying, to bring markup to its initial state\n */\n\n Events.on('destroy', function () {\n Controls.removeBindings();\n Controls.removeActive();\n Binder.destroy();\n });\n return Controls;\n}\n\nfunction Keyboard (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Keyboard = {\n /**\n * Binds keyboard events on component mount.\n *\n * @return {Void}\n */\n mount: function mount() {\n if (Glide.settings.keyboard) {\n this.bind();\n }\n },\n\n /**\n * Adds keyboard press events.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('keyup', document, this.press);\n },\n\n /**\n * Removes keyboard press events.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('keyup', document);\n },\n\n /**\n * Handles keyboard's arrows press and moving glide foward and backward.\n *\n * @param {Object} event\n * @return {Void}\n */\n press: function press(event) {\n var perSwipe = Glide.settings.perSwipe;\n\n if (event.code === 'ArrowRight') {\n Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe, \">\")));\n }\n\n if (event.code === 'ArrowLeft') {\n Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe, \"<\")));\n }\n }\n };\n /**\n * Remove bindings from keyboard:\n * - on destroying to remove added events\n * - on updating to remove events before remounting\n */\n\n Events.on(['destroy', 'update'], function () {\n Keyboard.unbind();\n });\n /**\n * Remount component\n * - on updating to reflect potential changes in settings\n */\n\n Events.on('update', function () {\n Keyboard.mount();\n });\n /**\n * Destroy binder:\n * - on destroying to remove listeners\n */\n\n Events.on('destroy', function () {\n Binder.destroy();\n });\n return Keyboard;\n}\n\nfunction Autoplay (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Autoplay = {\n /**\n * Initializes autoplaying and events.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.enable();\n this.start();\n\n if (Glide.settings.hoverpause) {\n this.bind();\n }\n },\n\n /**\n * Enables autoplaying\n *\n * @returns {Void}\n */\n enable: function enable() {\n this._e = true;\n },\n\n /**\n * Disables autoplaying.\n *\n * @returns {Void}\n */\n disable: function disable() {\n this._e = false;\n },\n\n /**\n * Starts autoplaying in configured interval.\n *\n * @param {Boolean|Number} force Run autoplaying with passed interval regardless of `autoplay` settings\n * @return {Void}\n */\n start: function start() {\n var _this = this;\n\n if (!this._e) {\n return;\n }\n\n this.enable();\n\n if (Glide.settings.autoplay) {\n if (isUndefined(this._i)) {\n this._i = setInterval(function () {\n _this.stop();\n\n Components.Run.make('>');\n\n _this.start();\n\n Events.emit('autoplay');\n }, this.time);\n }\n }\n },\n\n /**\n * Stops autorunning of the glide.\n *\n * @return {Void}\n */\n stop: function stop() {\n this._i = clearInterval(this._i);\n },\n\n /**\n * Stops autoplaying while mouse is over glide's area.\n *\n * @return {Void}\n */\n bind: function bind() {\n var _this2 = this;\n\n Binder.on('mouseover', Components.Html.root, function () {\n if (_this2._e) {\n _this2.stop();\n }\n });\n Binder.on('mouseout', Components.Html.root, function () {\n if (_this2._e) {\n _this2.start();\n }\n });\n },\n\n /**\n * Unbind mouseover events.\n *\n * @returns {Void}\n */\n unbind: function unbind() {\n Binder.off(['mouseover', 'mouseout'], Components.Html.root);\n }\n };\n define(Autoplay, 'time', {\n /**\n * Gets time period value for the autoplay interval. Prioritizes\n * times in `data-glide-autoplay` attrubutes over options.\n *\n * @return {Number}\n */\n get: function get() {\n var autoplay = Components.Html.slides[Glide.index].getAttribute('data-glide-autoplay');\n\n if (autoplay) {\n return toInt(autoplay);\n }\n\n return toInt(Glide.settings.autoplay);\n }\n });\n /**\n * Stop autoplaying and unbind events:\n * - on destroying, to clear defined interval\n * - on updating via API to reset interval that may changed\n */\n\n Events.on(['destroy', 'update'], function () {\n Autoplay.unbind();\n });\n /**\n * Stop autoplaying:\n * - before each run, to restart autoplaying\n * - on pausing via API\n * - on destroying, to clear defined interval\n * - while starting a swipe\n * - on updating via API to reset interval that may changed\n */\n\n Events.on(['run.before', 'swipe.start', 'update'], function () {\n Autoplay.stop();\n });\n Events.on(['pause', 'destroy'], function () {\n Autoplay.disable();\n Autoplay.stop();\n });\n /**\n * Start autoplaying:\n * - after each run, to restart autoplaying\n * - on playing via API\n * - while ending a swipe\n */\n\n Events.on(['run.after', 'swipe.end'], function () {\n Autoplay.start();\n });\n /**\n * Start autoplaying:\n * - after each run, to restart autoplaying\n * - on playing via API\n * - while ending a swipe\n */\n\n Events.on(['play'], function () {\n Autoplay.enable();\n Autoplay.start();\n });\n /**\n * Remount autoplaying:\n * - on updating via API to reset interval that may changed\n */\n\n Events.on('update', function () {\n Autoplay.mount();\n });\n /**\n * Destroy a binder:\n * - on destroying glide instance to clearup listeners\n */\n\n Events.on('destroy', function () {\n Binder.destroy();\n });\n return Autoplay;\n}\n\n/**\n * Sorts keys of breakpoint object so they will be ordered from lower to bigger.\n *\n * @param {Object} points\n * @returns {Object}\n */\n\nfunction sortBreakpoints(points) {\n if (isObject(points)) {\n return sortKeys(points);\n } else {\n warn(\"Breakpoints option must be an object\");\n }\n\n return {};\n}\n\nfunction Breakpoints (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n /**\n * Holds reference to settings.\n *\n * @type {Object}\n */\n\n var settings = Glide.settings;\n /**\n * Holds reference to breakpoints object in settings. Sorts breakpoints\n * from smaller to larger. It is required in order to proper\n * matching currently active breakpoint settings.\n *\n * @type {Object}\n */\n\n var points = sortBreakpoints(settings.breakpoints);\n /**\n * Cache initial settings before overwritting.\n *\n * @type {Object}\n */\n\n var defaults = Object.assign({}, settings);\n var Breakpoints = {\n /**\n * Matches settings for currectly matching media breakpoint.\n *\n * @param {Object} points\n * @returns {Object}\n */\n match: function match(points) {\n if (typeof window.matchMedia !== 'undefined') {\n for (var point in points) {\n if (points.hasOwnProperty(point)) {\n if (window.matchMedia(\"(max-width: \".concat(point, \"px)\")).matches) {\n return points[point];\n }\n }\n }\n }\n\n return defaults;\n }\n };\n /**\n * Overwrite instance settings with currently matching breakpoint settings.\n * This happens right after component initialization.\n */\n\n Object.assign(settings, Breakpoints.match(points));\n /**\n * Update glide with settings of matched brekpoint:\n * - window resize to update slider\n */\n\n Binder.on('resize', window, throttle(function () {\n Glide.settings = mergeOptions(settings, Breakpoints.match(points));\n }, Glide.settings.throttle));\n /**\n * Resort and update default settings:\n * - on reinit via API, so breakpoint matching will be performed with options\n */\n\n Events.on('update', function () {\n points = sortBreakpoints(points);\n defaults = Object.assign({}, settings);\n });\n /**\n * Unbind resize listener:\n * - on destroying, to bring markup to its initial state\n */\n\n Events.on('destroy', function () {\n Binder.off('resize', window);\n });\n return Breakpoints;\n}\n\nvar COMPONENTS = {\n // Required\n Html: Html,\n Translate: Translate,\n Transition: Transition,\n Direction: Direction,\n Peek: Peek,\n Sizes: Sizes,\n Gaps: Gaps,\n Move: Move,\n Clones: Clones,\n Resize: Resize,\n Build: Build,\n Run: Run,\n // Optional\n Swipe: Swipe,\n Images: Images,\n Anchors: Anchors,\n Controls: Controls,\n Keyboard: Keyboard,\n Autoplay: Autoplay,\n Breakpoints: Breakpoints\n};\n\nvar Glide = /*#__PURE__*/function (_Core) {\n _inherits(Glide, _Core);\n\n var _super = _createSuper(Glide);\n\n function Glide() {\n _classCallCheck(this, Glide);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Glide, [{\n key: \"mount\",\n value: function mount() {\n var extensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return _get(_getPrototypeOf(Glide.prototype), \"mount\", this).call(this, Object.assign({}, COMPONENTS, extensions));\n }\n }]);\n\n return Glide;\n}(Glide$1);\n\nexport { Glide as default };\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n for (var i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","!function(e,t){if(\"function\"==typeof define&&define.amd)define([\"exports\"],t);else if(\"undefined\"!=typeof exports)t(exports);else{var o={};t(o),e.bodyScrollLock=o}}(this,function(exports){\"use strict\";function r(e){if(Array.isArray(e)){for(var t=0,o=Array(e.length);t {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'alert'\n const VERSION = '4.1.3'\n const DATA_KEY = 'bs.alert'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n\n const Selector = {\n DISMISS : '[data-dismiss=\"alert\"]'\n }\n\n const Event = {\n CLOSE : `close${EVENT_KEY}`,\n CLOSED : `closed${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n ALERT : 'alert',\n FADE : 'fade',\n SHOW : 'show'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Alert {\n constructor(element) {\n this._element = element\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n close(element) {\n let rootElement = this._element\n if (element) {\n rootElement = this._getRootElement(element)\n }\n\n const customEvent = this._triggerCloseEvent(rootElement)\n\n if (customEvent.isDefaultPrevented()) {\n return\n }\n\n this._removeElement(rootElement)\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Private\n\n _getRootElement(element) {\n const selector = Util.getSelectorFromElement(element)\n let parent = false\n\n if (selector) {\n parent = document.querySelector(selector)\n }\n\n if (!parent) {\n parent = $(element).closest(`.${ClassName.ALERT}`)[0]\n }\n\n return parent\n }\n\n _triggerCloseEvent(element) {\n const closeEvent = $.Event(Event.CLOSE)\n\n $(element).trigger(closeEvent)\n return closeEvent\n }\n\n _removeElement(element) {\n $(element).removeClass(ClassName.SHOW)\n\n if (!$(element).hasClass(ClassName.FADE)) {\n this._destroyElement(element)\n return\n }\n\n const transitionDuration = Util.getTransitionDurationFromElement(element)\n\n $(element)\n .one(Util.TRANSITION_END, (event) => this._destroyElement(element, event))\n .emulateTransitionEnd(transitionDuration)\n }\n\n _destroyElement(element) {\n $(element)\n .detach()\n .trigger(Event.CLOSED)\n .remove()\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $element = $(this)\n let data = $element.data(DATA_KEY)\n\n if (!data) {\n data = new Alert(this)\n $element.data(DATA_KEY, data)\n }\n\n if (config === 'close') {\n data[config](this)\n }\n })\n }\n\n static _handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault()\n }\n\n alertInstance.close(this)\n }\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document).on(\n Event.CLICK_DATA_API,\n Selector.DISMISS,\n Alert._handleDismiss(new Alert())\n )\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Alert._jQueryInterface\n $.fn[NAME].Constructor = Alert\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Alert._jQueryInterface\n }\n\n return Alert\n})($)\n\nexport default Alert\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.3): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Carousel = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'carousel'\n const VERSION = '4.1.3'\n const DATA_KEY = 'bs.carousel'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const ARROW_LEFT_KEYCODE = 37 // KeyboardEvent.which value for left arrow key\n const ARROW_RIGHT_KEYCODE = 39 // KeyboardEvent.which value for right arrow key\n const TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\n\n const Default = {\n interval : 5000,\n keyboard : true,\n slide : false,\n pause : 'hover',\n wrap : true\n }\n\n const DefaultType = {\n interval : '(number|boolean)',\n keyboard : 'boolean',\n slide : '(boolean|string)',\n pause : '(string|boolean)',\n wrap : 'boolean'\n }\n\n const Direction = {\n NEXT : 'next',\n PREV : 'prev',\n LEFT : 'left',\n RIGHT : 'right'\n }\n\n const Event = {\n SLIDE : `slide${EVENT_KEY}`,\n SLID : `slid${EVENT_KEY}`,\n KEYDOWN : `keydown${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`,\n TOUCHEND : `touchend${EVENT_KEY}`,\n LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n CAROUSEL : 'carousel',\n ACTIVE : 'active',\n SLIDE : 'slide',\n RIGHT : 'carousel-item-right',\n LEFT : 'carousel-item-left',\n NEXT : 'carousel-item-next',\n PREV : 'carousel-item-prev',\n ITEM : 'carousel-item'\n }\n\n const Selector = {\n ACTIVE : '.active',\n ACTIVE_ITEM : '.active.carousel-item',\n ITEM : '.carousel-item',\n NEXT_PREV : '.carousel-item-next, .carousel-item-prev',\n INDICATORS : '.carousel-indicators',\n DATA_SLIDE : '[data-slide], [data-slide-to]',\n DATA_RIDE : '[data-ride=\"carousel\"]'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Carousel {\n constructor(element, config) {\n this._items = null\n this._interval = null\n this._activeElement = null\n\n this._isPaused = false\n this._isSliding = false\n\n this.touchTimeout = null\n\n this._config = this._getConfig(config)\n this._element = $(element)[0]\n this._indicatorsElement = this._element.querySelector(Selector.INDICATORS)\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n next() {\n if (!this._isSliding) {\n this._slide(Direction.NEXT)\n }\n }\n\n nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden &&\n ($(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden')) {\n this.next()\n }\n }\n\n prev() {\n if (!this._isSliding) {\n this._slide(Direction.PREV)\n }\n }\n\n pause(event) {\n if (!event) {\n this._isPaused = true\n }\n\n if (this._element.querySelector(Selector.NEXT_PREV)) {\n Util.triggerTransitionEnd(this._element)\n this.cycle(true)\n }\n\n clearInterval(this._interval)\n this._interval = null\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false\n }\n\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n\n if (this._config.interval && !this._isPaused) {\n this._interval = setInterval(\n (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n this._config.interval\n )\n }\n }\n\n to(index) {\n this._activeElement = this._element.querySelector(Selector.ACTIVE_ITEM)\n\n const activeIndex = this._getItemIndex(this._activeElement)\n\n if (index > this._items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n $(this._element).one(Event.SLID, () => this.to(index))\n return\n }\n\n if (activeIndex === index) {\n this.pause()\n this.cycle()\n return\n }\n\n const direction = index > activeIndex\n ? Direction.NEXT\n : Direction.PREV\n\n this._slide(direction, this._items[index])\n }\n\n dispose() {\n $(this._element).off(EVENT_KEY)\n $.removeData(this._element, DATA_KEY)\n\n this._items = null\n this._config = null\n this._element = null\n this._interval = null\n this._isPaused = null\n this._isSliding = null\n this._activeElement = null\n this._indicatorsElement = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n $(this._element)\n .on(Event.KEYDOWN, (event) => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n $(this._element)\n .on(Event.MOUSEENTER, (event) => this.pause(event))\n .on(Event.MOUSELEAVE, (event) => this.cycle(event))\n if ('ontouchstart' in document.documentElement) {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n $(this._element).on(Event.TOUCHEND, () => {\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n this.touchTimeout = setTimeout((event) => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n })\n }\n }\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n switch (event.which) {\n case ARROW_LEFT_KEYCODE:\n event.preventDefault()\n this.prev()\n break\n case ARROW_RIGHT_KEYCODE:\n event.preventDefault()\n this.next()\n break\n default:\n }\n }\n\n _getItemIndex(element) {\n this._items = element && element.parentNode\n ? [].slice.call(element.parentNode.querySelectorAll(Selector.ITEM))\n : []\n return this._items.indexOf(element)\n }\n\n _getItemByDirection(direction, activeElement) {\n const isNextDirection = direction === Direction.NEXT\n const isPrevDirection = direction === Direction.PREV\n const activeIndex = this._getItemIndex(activeElement)\n const lastItemIndex = this._items.length - 1\n const isGoingToWrap = isPrevDirection && activeIndex === 0 ||\n isNextDirection && activeIndex === lastItemIndex\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement\n }\n\n const delta = direction === Direction.PREV ? -1 : 1\n const itemIndex = (activeIndex + delta) % this._items.length\n\n return itemIndex === -1\n ? this._items[this._items.length - 1] : this._items[itemIndex]\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex(this._element.querySelector(Selector.ACTIVE_ITEM))\n const slideEvent = $.Event(Event.SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n })\n\n $(this._element).trigger(slideEvent)\n\n return slideEvent\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n const indicators = [].slice.call(this._indicatorsElement.querySelectorAll(Selector.ACTIVE))\n $(indicators)\n .removeClass(ClassName.ACTIVE)\n\n const nextIndicator = this._indicatorsElement.children[\n this._getItemIndex(element)\n ]\n\n if (nextIndicator) {\n $(nextIndicator).addClass(ClassName.ACTIVE)\n }\n }\n }\n\n _slide(direction, element) {\n const activeElement = this._element.querySelector(Selector.ACTIVE_ITEM)\n const activeElementIndex = this._getItemIndex(activeElement)\n const nextElement = element || activeElement &&\n this._getItemByDirection(direction, activeElement)\n const nextElementIndex = this._getItemIndex(nextElement)\n const isCycling = Boolean(this._interval)\n\n let directionalClassName\n let orderClassName\n let eventDirectionName\n\n if (direction === Direction.NEXT) {\n directionalClassName = ClassName.LEFT\n orderClassName = ClassName.NEXT\n eventDirectionName = Direction.LEFT\n } else {\n directionalClassName = ClassName.RIGHT\n orderClassName = ClassName.PREV\n eventDirectionName = Direction.RIGHT\n }\n\n if (nextElement && $(nextElement).hasClass(ClassName.ACTIVE)) {\n this._isSliding = false\n return\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n if (slideEvent.isDefaultPrevented()) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return\n }\n\n this._isSliding = true\n\n if (isCycling) {\n this.pause()\n }\n\n this._setActiveIndicatorElement(nextElement)\n\n const slidEvent = $.Event(Event.SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n\n if ($(this._element).hasClass(ClassName.SLIDE)) {\n $(nextElement).addClass(orderClassName)\n\n Util.reflow(nextElement)\n\n $(activeElement).addClass(directionalClassName)\n $(nextElement).addClass(directionalClassName)\n\n const transitionDuration = Util.getTransitionDurationFromElement(activeElement)\n\n $(activeElement)\n .one(Util.TRANSITION_END, () => {\n $(nextElement)\n .removeClass(`${directionalClassName} ${orderClassName}`)\n .addClass(ClassName.ACTIVE)\n\n $(activeElement).removeClass(`${ClassName.ACTIVE} ${orderClassName} ${directionalClassName}`)\n\n this._isSliding = false\n\n setTimeout(() => $(this._element).trigger(slidEvent), 0)\n })\n .emulateTransitionEnd(transitionDuration)\n } else {\n $(activeElement).removeClass(ClassName.ACTIVE)\n $(nextElement).addClass(ClassName.ACTIVE)\n\n this._isSliding = false\n $(this._element).trigger(slidEvent)\n }\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n let _config = {\n ...Default,\n ...$(this).data()\n }\n\n if (typeof config === 'object') {\n _config = {\n ..._config,\n ...config\n }\n }\n\n const action = typeof config === 'string' ? config : _config.slide\n\n if (!data) {\n data = new Carousel(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'number') {\n data.to(config)\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(`No method named \"${action}\"`)\n }\n data[action]()\n } else if (_config.interval) {\n data.pause()\n data.cycle()\n }\n })\n }\n\n static _dataApiClickHandler(event) {\n const selector = Util.getSelectorFromElement(this)\n\n if (!selector) {\n return\n }\n\n const target = $(selector)[0]\n\n if (!target || !$(target).hasClass(ClassName.CAROUSEL)) {\n return\n }\n\n const config = {\n ...$(target).data(),\n ...$(this).data()\n }\n const slideIndex = this.getAttribute('data-slide-to')\n\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel._jQueryInterface.call($(target), config)\n\n if (slideIndex) {\n $(target).data(DATA_KEY).to(slideIndex)\n }\n\n event.preventDefault()\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document)\n .on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler)\n\n $(window).on(Event.LOAD_DATA_API, () => {\n const carousels = [].slice.call(document.querySelectorAll(Selector.DATA_RIDE))\n for (let i = 0, len = carousels.length; i < len; i++) {\n const $carousel = $(carousels[i])\n Carousel._jQueryInterface.call($carousel, $carousel.data())\n }\n })\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Carousel._jQueryInterface\n $.fn[NAME].Constructor = Carousel\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Carousel._jQueryInterface\n }\n\n return Carousel\n})($)\n\nexport default Carousel\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.3): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Collapse = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'collapse'\n const VERSION = '4.1.3'\n const DATA_KEY = 'bs.collapse'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n\n const Default = {\n toggle : true,\n parent : ''\n }\n\n const DefaultType = {\n toggle : 'boolean',\n parent : '(string|element)'\n }\n\n const Event = {\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n SHOW : 'show',\n COLLAPSE : 'collapse',\n COLLAPSING : 'collapsing',\n COLLAPSED : 'collapsed'\n }\n\n const Dimension = {\n WIDTH : 'width',\n HEIGHT : 'height'\n }\n\n const Selector = {\n ACTIVES : '.show, .collapsing',\n DATA_TOGGLE : '[data-toggle=\"collapse\"]'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Collapse {\n constructor(element, config) {\n this._isTransitioning = false\n this._element = element\n this._config = this._getConfig(config)\n this._triggerArray = $.makeArray(document.querySelectorAll(\n `[data-toggle=\"collapse\"][href=\"#${element.id}\"],` +\n `[data-toggle=\"collapse\"][data-target=\"#${element.id}\"]`\n ))\n const toggleList = [].slice.call(document.querySelectorAll(Selector.DATA_TOGGLE))\n for (let i = 0, len = toggleList.length; i < len; i++) {\n const elem = toggleList[i]\n const selector = Util.getSelectorFromElement(elem)\n const filterElement = [].slice.call(document.querySelectorAll(selector))\n .filter((foundElem) => foundElem === element)\n\n if (selector !== null && filterElement.length > 0) {\n this._selector = selector\n this._triggerArray.push(elem)\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray)\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle() {\n if ($(this._element).hasClass(ClassName.SHOW)) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning ||\n $(this._element).hasClass(ClassName.SHOW)) {\n return\n }\n\n let actives\n let activesData\n\n if (this._parent) {\n actives = [].slice.call(this._parent.querySelectorAll(Selector.ACTIVES))\n .filter((elem) => elem.getAttribute('data-parent') === this._config.parent)\n\n if (actives.length === 0) {\n actives = null\n }\n }\n\n if (actives) {\n activesData = $(actives).not(this._selector).data(DATA_KEY)\n if (activesData && activesData._isTransitioning) {\n return\n }\n }\n\n const startEvent = $.Event(Event.SHOW)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n if (actives) {\n Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide')\n if (!activesData) {\n $(actives).data(DATA_KEY, null)\n }\n }\n\n const dimension = this._getDimension()\n\n $(this._element)\n .removeClass(ClassName.COLLAPSE)\n .addClass(ClassName.COLLAPSING)\n\n this._element.style[dimension] = 0\n\n if (this._triggerArray.length) {\n $(this._triggerArray)\n .removeClass(ClassName.COLLAPSED)\n .attr('aria-expanded', true)\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n $(this._element)\n .removeClass(ClassName.COLLAPSING)\n .addClass(ClassName.COLLAPSE)\n .addClass(ClassName.SHOW)\n\n this._element.style[dimension] = ''\n\n this.setTransitioning(false)\n\n $(this._element).trigger(Event.SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning ||\n !$(this._element).hasClass(ClassName.SHOW)) {\n return\n }\n\n const startEvent = $.Event(Event.HIDE)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n Util.reflow(this._element)\n\n $(this._element)\n .addClass(ClassName.COLLAPSING)\n .removeClass(ClassName.COLLAPSE)\n .removeClass(ClassName.SHOW)\n\n const triggerArrayLength = this._triggerArray.length\n if (triggerArrayLength > 0) {\n for (let i = 0; i < triggerArrayLength; i++) {\n const trigger = this._triggerArray[i]\n const selector = Util.getSelectorFromElement(trigger)\n if (selector !== null) {\n const $elem = $([].slice.call(document.querySelectorAll(selector)))\n if (!$elem.hasClass(ClassName.SHOW)) {\n $(trigger).addClass(ClassName.COLLAPSED)\n .attr('aria-expanded', false)\n }\n }\n }\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this.setTransitioning(false)\n $(this._element)\n .removeClass(ClassName.COLLAPSING)\n .addClass(ClassName.COLLAPSE)\n .trigger(Event.HIDDEN)\n }\n\n this._element.style[dimension] = ''\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n }\n\n setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._parent = null\n this._element = null\n this._triggerArray = null\n this._isTransitioning = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n config.toggle = Boolean(config.toggle) // Coerce string values\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n const hasWidth = $(this._element).hasClass(Dimension.WIDTH)\n return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT\n }\n\n _getParent() {\n let parent = null\n if (Util.isElement(this._config.parent)) {\n parent = this._config.parent\n\n // It's a jQuery object\n if (typeof this._config.parent.jquery !== 'undefined') {\n parent = this._config.parent[0]\n }\n } else {\n parent = document.querySelector(this._config.parent)\n }\n\n const selector =\n `[data-toggle=\"collapse\"][data-parent=\"${this._config.parent}\"]`\n\n const children = [].slice.call(parent.querySelectorAll(selector))\n $(children).each((i, element) => {\n this._addAriaAndCollapsedClass(\n Collapse._getTargetFromElement(element),\n [element]\n )\n })\n\n return parent\n }\n\n _addAriaAndCollapsedClass(element, triggerArray) {\n if (element) {\n const isOpen = $(element).hasClass(ClassName.SHOW)\n\n if (triggerArray.length) {\n $(triggerArray)\n .toggleClass(ClassName.COLLAPSED, !isOpen)\n .attr('aria-expanded', isOpen)\n }\n }\n }\n\n // Static\n\n static _getTargetFromElement(element) {\n const selector = Util.getSelectorFromElement(element)\n return selector ? document.querySelector(selector) : null\n }\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $this = $(this)\n let data = $this.data(DATA_KEY)\n const _config = {\n ...Default,\n ...$this.data(),\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (!data && _config.toggle && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n if (!data) {\n data = new Collapse(this, _config)\n $this.data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n // preventDefault only for elements (which change the URL) not inside the collapsible element\n if (event.currentTarget.tagName === 'A') {\n event.preventDefault()\n }\n\n const $trigger = $(this)\n const selector = Util.getSelectorFromElement(this)\n const selectors = [].slice.call(document.querySelectorAll(selector))\n $(selectors).each(function () {\n const $target = $(this)\n const data = $target.data(DATA_KEY)\n const config = data ? 'toggle' : $trigger.data()\n Collapse._jQueryInterface.call($target, config)\n })\n })\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Collapse._jQueryInterface\n $.fn[NAME].Constructor = Collapse\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Collapse._jQueryInterface\n }\n\n return Collapse\n})($)\n\nexport default Collapse\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.3): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Modal = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'modal'\n const VERSION = '4.1.3'\n const DATA_KEY = 'bs.modal'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\n\n const Default = {\n backdrop : true,\n keyboard : true,\n focus : true,\n show : true\n }\n\n const DefaultType = {\n backdrop : '(boolean|string)',\n keyboard : 'boolean',\n focus : 'boolean',\n show : 'boolean'\n }\n\n const Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n RESIZE : `resize${EVENT_KEY}`,\n CLICK_DISMISS : `click.dismiss${EVENT_KEY}`,\n KEYDOWN_DISMISS : `keydown.dismiss${EVENT_KEY}`,\n MOUSEUP_DISMISS : `mouseup.dismiss${EVENT_KEY}`,\n MOUSEDOWN_DISMISS : `mousedown.dismiss${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n SCROLLBAR_MEASURER : 'modal-scrollbar-measure',\n BACKDROP : 'modal-backdrop',\n OPEN : 'modal-open',\n FADE : 'fade',\n SHOW : 'show'\n }\n\n const Selector = {\n DIALOG : '.modal-dialog',\n DATA_TOGGLE : '[data-toggle=\"modal\"]',\n DATA_DISMISS : '[data-dismiss=\"modal\"]',\n FIXED_CONTENT : '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n STICKY_CONTENT : '.sticky-top'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Modal {\n constructor(element, config) {\n this._config = this._getConfig(config)\n this._element = element\n this._dialog = element.querySelector(Selector.DIALOG)\n this._backdrop = null\n this._isShown = false\n this._isBodyOverflowing = false\n this._ignoreBackdropClick = false\n this._scrollbarWidth = 0\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isTransitioning || this._isShown) {\n return\n }\n\n if ($(this._element).hasClass(ClassName.FADE)) {\n this._isTransitioning = true\n }\n\n const showEvent = $.Event(Event.SHOW, {\n relatedTarget\n })\n\n $(this._element).trigger(showEvent)\n\n if (this._isShown || showEvent.isDefaultPrevented()) {\n return\n }\n\n this._isShown = true\n\n this._checkScrollbar()\n this._setScrollbar()\n\n this._adjustDialog()\n\n $(document.body).addClass(ClassName.OPEN)\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n $(this._element).on(\n Event.CLICK_DISMISS,\n Selector.DATA_DISMISS,\n (event) => this.hide(event)\n )\n\n $(this._dialog).on(Event.MOUSEDOWN_DISMISS, () => {\n $(this._element).one(Event.MOUSEUP_DISMISS, (event) => {\n if ($(event.target).is(this._element)) {\n this._ignoreBackdropClick = true\n }\n })\n })\n\n this._showBackdrop(() => this._showElement(relatedTarget))\n }\n\n hide(event) {\n if (event) {\n event.preventDefault()\n }\n\n if (this._isTransitioning || !this._isShown) {\n return\n }\n\n const hideEvent = $.Event(Event.HIDE)\n\n $(this._element).trigger(hideEvent)\n\n if (!this._isShown || hideEvent.isDefaultPrevented()) {\n return\n }\n\n this._isShown = false\n const transition = $(this._element).hasClass(ClassName.FADE)\n\n if (transition) {\n this._isTransitioning = true\n }\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n $(document).off(Event.FOCUSIN)\n\n $(this._element).removeClass(ClassName.SHOW)\n\n $(this._element).off(Event.CLICK_DISMISS)\n $(this._dialog).off(Event.MOUSEDOWN_DISMISS)\n\n\n if (transition) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, (event) => this._hideModal(event))\n .emulateTransitionEnd(transitionDuration)\n } else {\n this._hideModal()\n }\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n\n $(window, document, this._element, this._backdrop).off(EVENT_KEY)\n\n this._config = null\n this._element = null\n this._dialog = null\n this._backdrop = null\n this._isShown = null\n this._isBodyOverflowing = null\n this._ignoreBackdropClick = null\n this._scrollbarWidth = null\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _showElement(relatedTarget) {\n const transition = $(this._element).hasClass(ClassName.FADE)\n\n if (!this._element.parentNode ||\n this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.scrollTop = 0\n\n if (transition) {\n Util.reflow(this._element)\n }\n\n $(this._element).addClass(ClassName.SHOW)\n\n if (this._config.focus) {\n this._enforceFocus()\n }\n\n const shownEvent = $.Event(Event.SHOWN, {\n relatedTarget\n })\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._element.focus()\n }\n this._isTransitioning = false\n $(this._element).trigger(shownEvent)\n }\n\n if (transition) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._dialog)\n .one(Util.TRANSITION_END, transitionComplete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n transitionComplete()\n }\n }\n\n _enforceFocus() {\n $(document)\n .off(Event.FOCUSIN) // Guard against infinite focus loop\n .on(Event.FOCUSIN, (event) => {\n if (document !== event.target &&\n this._element !== event.target &&\n $(this._element).has(event.target).length === 0) {\n this._element.focus()\n }\n })\n }\n\n _setEscapeEvent() {\n if (this._isShown && this._config.keyboard) {\n $(this._element).on(Event.KEYDOWN_DISMISS, (event) => {\n if (event.which === ESCAPE_KEYCODE) {\n event.preventDefault()\n this.hide()\n }\n })\n } else if (!this._isShown) {\n $(this._element).off(Event.KEYDOWN_DISMISS)\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n $(window).on(Event.RESIZE, (event) => this.handleUpdate(event))\n } else {\n $(window).off(Event.RESIZE)\n }\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._isTransitioning = false\n this._showBackdrop(() => {\n $(document.body).removeClass(ClassName.OPEN)\n this._resetAdjustments()\n this._resetScrollbar()\n $(this._element).trigger(Event.HIDDEN)\n })\n }\n\n _removeBackdrop() {\n if (this._backdrop) {\n $(this._backdrop).remove()\n this._backdrop = null\n }\n }\n\n _showBackdrop(callback) {\n const animate = $(this._element).hasClass(ClassName.FADE)\n ? ClassName.FADE : ''\n\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div')\n this._backdrop.className = ClassName.BACKDROP\n\n if (animate) {\n this._backdrop.classList.add(animate)\n }\n\n $(this._backdrop).appendTo(document.body)\n\n $(this._element).on(Event.CLICK_DISMISS, (event) => {\n if (this._ignoreBackdropClick) {\n this._ignoreBackdropClick = false\n return\n }\n if (event.target !== event.currentTarget) {\n return\n }\n if (this._config.backdrop === 'static') {\n this._element.focus()\n } else {\n this.hide()\n }\n })\n\n if (animate) {\n Util.reflow(this._backdrop)\n }\n\n $(this._backdrop).addClass(ClassName.SHOW)\n\n if (!callback) {\n return\n }\n\n if (!animate) {\n callback()\n return\n }\n\n const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n $(this._backdrop)\n .one(Util.TRANSITION_END, callback)\n .emulateTransitionEnd(backdropTransitionDuration)\n } else if (!this._isShown && this._backdrop) {\n $(this._backdrop).removeClass(ClassName.SHOW)\n\n const callbackRemove = () => {\n this._removeBackdrop()\n if (callback) {\n callback()\n }\n }\n\n if ($(this._element).hasClass(ClassName.FADE)) {\n const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n $(this._backdrop)\n .one(Util.TRANSITION_END, callbackRemove)\n .emulateTransitionEnd(backdropTransitionDuration)\n } else {\n callbackRemove()\n }\n } else if (callback) {\n callback()\n }\n }\n\n // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // todo (fat): these should probably be refactored out of modal.js\n // ----------------------------------------------------------------------\n\n _adjustDialog() {\n const isModalOverflowing =\n this._element.scrollHeight > document.documentElement.clientHeight\n\n if (!this._isBodyOverflowing && isModalOverflowing) {\n this._element.style.paddingLeft = `${this._scrollbarWidth}px`\n }\n\n if (this._isBodyOverflowing && !isModalOverflowing) {\n this._element.style.paddingRight = `${this._scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n _checkScrollbar() {\n const rect = document.body.getBoundingClientRect()\n this._isBodyOverflowing = rect.left + rect.right < window.innerWidth\n this._scrollbarWidth = this._getScrollbarWidth()\n }\n\n _setScrollbar() {\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n const fixedContent = [].slice.call(document.querySelectorAll(Selector.FIXED_CONTENT))\n const stickyContent = [].slice.call(document.querySelectorAll(Selector.STICKY_CONTENT))\n\n // Adjust fixed content padding\n $(fixedContent).each((index, element) => {\n const actualPadding = element.style.paddingRight\n const calculatedPadding = $(element).css('padding-right')\n $(element)\n .data('padding-right', actualPadding)\n .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n })\n\n // Adjust sticky content margin\n $(stickyContent).each((index, element) => {\n const actualMargin = element.style.marginRight\n const calculatedMargin = $(element).css('margin-right')\n $(element)\n .data('margin-right', actualMargin)\n .css('margin-right', `${parseFloat(calculatedMargin) - this._scrollbarWidth}px`)\n })\n\n // Adjust body padding\n const actualPadding = document.body.style.paddingRight\n const calculatedPadding = $(document.body).css('padding-right')\n $(document.body)\n .data('padding-right', actualPadding)\n .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n }\n }\n\n _resetScrollbar() {\n // Restore fixed content padding\n const fixedContent = [].slice.call(document.querySelectorAll(Selector.FIXED_CONTENT))\n $(fixedContent).each((index, element) => {\n const padding = $(element).data('padding-right')\n $(element).removeData('padding-right')\n element.style.paddingRight = padding ? padding : ''\n })\n\n // Restore sticky content\n const elements = [].slice.call(document.querySelectorAll(`${Selector.STICKY_CONTENT}`))\n $(elements).each((index, element) => {\n const margin = $(element).data('margin-right')\n if (typeof margin !== 'undefined') {\n $(element).css('margin-right', margin).removeData('margin-right')\n }\n })\n\n // Restore body padding\n const padding = $(document.body).data('padding-right')\n $(document.body).removeData('padding-right')\n document.body.style.paddingRight = padding ? padding : ''\n }\n\n _getScrollbarWidth() { // thx d.walsh\n const scrollDiv = document.createElement('div')\n scrollDiv.className = ClassName.SCROLLBAR_MEASURER\n document.body.appendChild(scrollDiv)\n const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth\n document.body.removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n // Static\n\n static _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = {\n ...Default,\n ...$(this).data(),\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (!data) {\n data = new Modal(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config](relatedTarget)\n } else if (_config.show) {\n data.show(relatedTarget)\n }\n })\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n let target\n const selector = Util.getSelectorFromElement(this)\n\n if (selector) {\n target = document.querySelector(selector)\n }\n\n const config = $(target).data(DATA_KEY)\n ? 'toggle' : {\n ...$(target).data(),\n ...$(this).data()\n }\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault()\n }\n\n const $target = $(target).one(Event.SHOW, (showEvent) => {\n if (showEvent.isDefaultPrevented()) {\n // Only register focus restorer if modal will actually get shown\n return\n }\n\n $target.one(Event.HIDDEN, () => {\n if ($(this).is(':visible')) {\n this.focus()\n }\n })\n })\n\n Modal._jQueryInterface.call($(target), config, this)\n })\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Modal._jQueryInterface\n $.fn[NAME].Constructor = Modal\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Modal._jQueryInterface\n }\n\n return Modal\n})($)\n\nexport default Modal\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.3): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst ScrollSpy = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'scrollspy'\n const VERSION = '4.1.3'\n const DATA_KEY = 'bs.scrollspy'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n\n const Default = {\n offset : 10,\n method : 'auto',\n target : ''\n }\n\n const DefaultType = {\n offset : 'number',\n method : 'string',\n target : '(string|element)'\n }\n\n const Event = {\n ACTIVATE : `activate${EVENT_KEY}`,\n SCROLL : `scroll${EVENT_KEY}`,\n LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n DROPDOWN_ITEM : 'dropdown-item',\n DROPDOWN_MENU : 'dropdown-menu',\n ACTIVE : 'active'\n }\n\n const Selector = {\n DATA_SPY : '[data-spy=\"scroll\"]',\n ACTIVE : '.active',\n NAV_LIST_GROUP : '.nav, .list-group',\n NAV_LINKS : '.nav-link',\n NAV_ITEMS : '.nav-item',\n LIST_ITEMS : '.list-group-item',\n DROPDOWN : '.dropdown',\n DROPDOWN_ITEMS : '.dropdown-item',\n DROPDOWN_TOGGLE : '.dropdown-toggle'\n }\n\n const OffsetMethod = {\n OFFSET : 'offset',\n POSITION : 'position'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class ScrollSpy {\n constructor(element, config) {\n this._element = element\n this._scrollElement = element.tagName === 'BODY' ? window : element\n this._config = this._getConfig(config)\n this._selector = `${this._config.target} ${Selector.NAV_LINKS},` +\n `${this._config.target} ${Selector.LIST_ITEMS},` +\n `${this._config.target} ${Selector.DROPDOWN_ITEMS}`\n this._offsets = []\n this._targets = []\n this._activeTarget = null\n this._scrollHeight = 0\n\n $(this._scrollElement).on(Event.SCROLL, (event) => this._process(event))\n\n this.refresh()\n this._process()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n refresh() {\n const autoMethod = this._scrollElement === this._scrollElement.window\n ? OffsetMethod.OFFSET : OffsetMethod.POSITION\n\n const offsetMethod = this._config.method === 'auto'\n ? autoMethod : this._config.method\n\n const offsetBase = offsetMethod === OffsetMethod.POSITION\n ? this._getScrollTop() : 0\n\n this._offsets = []\n this._targets = []\n\n this._scrollHeight = this._getScrollHeight()\n\n const targets = [].slice.call(document.querySelectorAll(this._selector))\n\n targets\n .map((element) => {\n let target\n const targetSelector = Util.getSelectorFromElement(element)\n\n if (targetSelector) {\n target = document.querySelector(targetSelector)\n }\n\n if (target) {\n const targetBCR = target.getBoundingClientRect()\n if (targetBCR.width || targetBCR.height) {\n // TODO (fat): remove sketch reliance on jQuery position/offset\n return [\n $(target)[offsetMethod]().top + offsetBase,\n targetSelector\n ]\n }\n }\n return null\n })\n .filter((item) => item)\n .sort((a, b) => a[0] - b[0])\n .forEach((item) => {\n this._offsets.push(item[0])\n this._targets.push(item[1])\n })\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n $(this._scrollElement).off(EVENT_KEY)\n\n this._element = null\n this._scrollElement = null\n this._config = null\n this._selector = null\n this._offsets = null\n this._targets = null\n this._activeTarget = null\n this._scrollHeight = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (typeof config.target !== 'string') {\n let id = $(config.target).attr('id')\n if (!id) {\n id = Util.getUID(NAME)\n $(config.target).attr('id', id)\n }\n config.target = `#${id}`\n }\n\n Util.typeCheckConfig(NAME, config, DefaultType)\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window\n ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop\n }\n\n _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight\n )\n }\n\n _getOffsetHeight() {\n return this._scrollElement === window\n ? window.innerHeight : this._scrollElement.getBoundingClientRect().height\n }\n\n _process() {\n const scrollTop = this._getScrollTop() + this._config.offset\n const scrollHeight = this._getScrollHeight()\n const maxScroll = this._config.offset +\n scrollHeight -\n this._getOffsetHeight()\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n const target = this._targets[this._targets.length - 1]\n\n if (this._activeTarget !== target) {\n this._activate(target)\n }\n return\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null\n this._clear()\n return\n }\n\n const offsetLength = this._offsets.length\n for (let i = offsetLength; i--;) {\n const isActiveTarget = this._activeTarget !== this._targets[i] &&\n scrollTop >= this._offsets[i] &&\n (typeof this._offsets[i + 1] === 'undefined' ||\n scrollTop < this._offsets[i + 1])\n\n if (isActiveTarget) {\n this._activate(this._targets[i])\n }\n }\n }\n\n _activate(target) {\n this._activeTarget = target\n\n this._clear()\n\n let queries = this._selector.split(',')\n // eslint-disable-next-line arrow-body-style\n queries = queries.map((selector) => {\n return `${selector}[data-target=\"${target}\"],` +\n `${selector}[href=\"${target}\"]`\n })\n\n const $link = $([].slice.call(document.querySelectorAll(queries.join(','))))\n\n if ($link.hasClass(ClassName.DROPDOWN_ITEM)) {\n $link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE)\n $link.addClass(ClassName.ACTIVE)\n } else {\n // Set triggered link as active\n $link.addClass(ClassName.ACTIVE)\n // Set triggered links parents as active\n // With both
        and
\\n ')},containerInner:function(e){return O('\\n
\\n ')},itemList:function(e,t){var i,n=ye()(e.list,((i={})[e.listSingle]=t,i[e.listItems]=!t,i));return O('\\n
\\n ')},placeholder:function(e,t){return O('\\n
\\n '+t+\"\\n
\\n \")},item:function(e,t,i){var n,s,r=t.active?'aria-selected=\"true\"':\"\",o=t.disabled?'aria-disabled=\"true\"':\"\",a=ye()(e.item,((n={})[e.highlightedState]=t.highlighted,n[e.itemSelectable]=!t.highlighted,n[e.placeholder]=t.placeholder,n));return i?(a=ye()(e.item,((s={})[e.highlightedState]=t.highlighted,s[e.itemSelectable]=!t.disabled,s[e.placeholder]=t.placeholder,s)),O('\\n \\n \"+t.label+'\\x3c!--\\n --\\x3e\\n Remove item\\n \\n
\\n \")):O('\\n \\n \"+t.label+\"\\n
\\n \")},choiceList:function(e,t){var i=t?\"\":'aria-multiselectable=\"true\"';return O('\\n \\n
\\n \")},choiceGroup:function(e,t){var i,n=t.disabled?'aria-disabled=\"true\"':\"\",s=ye()(e.group,((i={})[e.itemDisabled]=t.disabled,i));return O('\\n \\n
'+t.value+\"
\\n
\\n \")},choice:function(e,t,i){var n,s=t.groupId>0?'role=\"treeitem\"':'role=\"option\"',r=ye()(e.item,e.itemChoice,((n={})[e.itemDisabled]=t.disabled,n[e.itemSelectable]=!t.disabled,n[e.placeholder]=t.placeholder,n));return O('\\n \\n \"+t.label+\"\\n
\\n \")},input:function(e,t){var i=ye()(e.input,e.inputCloned);return O('\\n \\n ')},dropdown:function(e){var t=ye()(e.list,e.listDropdown);return O('\\n \\n \\n ')},notice:function(e,t,i){var n;void 0===i&&(i=\"\");var s=ye()(e.item,e.itemChoice,((n={})[e.noResults]=\"no-results\"===i,n[e.noChoices]=\"no-choices\"===i,n));return O('\\n
\\n '+t+\"\\n
\\n \")},option:function(e){return O('\\n \\n \")}},Se=function(e){return void 0===e&&(e=!0),{type:J,active:e}},Ie=function(e,t){return{type:ie,id:e,highlighted:t}},we=function(e,t,i,n){return{type:Q,value:e,id:t,active:i,disabled:n}},Ce=function(){function e(t,i){var n=this;if(void 0===t&&(t=\"[data-choice]\"),void 0===i&&(i={}),S(\"String\",t)){var s=Array.from(document.querySelectorAll(t));if(s.length>1)return this._generateInstances(s,i)}this.config=o.a.all([R,e.userDefaults,i],{arrayMerge:function(e,t){return[].concat(t)}});var r=L(this.config,R);r.length&&console.warn(\"Unknown config option(s) passed\",r.join(\", \")),[\"auto\",\"always\"].includes(this.config.renderSelectedChoices)||(this.config.renderSelectedChoices=\"auto\");var a=S(\"String\",t)?document.querySelector(t):t;if(a){if(this._isTextElement=\"text\"===a.type,this._isSelectOneElement=\"select-one\"===a.type,this._isSelectMultipleElement=\"select-multiple\"===a.type,this._isSelectElement=this._isSelectOneElement||this._isSelectMultipleElement,this._isTextElement?this.passedElement=new ve({element:a,classNames:this.config.classNames,delimiter:this.config.delimiter}):this._isSelectElement&&(this.passedElement=new _e({element:a,classNames:this.config.classNames,template:function(e){return n.config.templates.option(e)}})),!this.passedElement)return console.error(\"Passed element was of an invalid type\");this.initialised=!1,this._store=new F(this.render),this._initialState={},this._currentState={},this._prevState={},this._currentValue=\"\",this._canSearch=this.config.searchEnabled,this._isScrollingOnIe=!1,this._highlightPosition=0,this._wasTap=!0,this._placeholderValue=this._generatePlaceholderValue(),this._baseId=y(this.passedElement.element,\"choices-\"),this._direction=this.passedElement.element.getAttribute(\"dir\")||\"ltr\",this._idNames={itemChoice:\"item-choice\"},this._presetChoices=this.config.choices,this._presetItems=this.config.items,this.passedElement.value&&(this._presetItems=this._presetItems.concat(this.passedElement.value.split(this.config.delimiter))),this._render=this._render.bind(this),this._onFocus=this._onFocus.bind(this),this._onBlur=this._onBlur.bind(this),this._onKeyUp=this._onKeyUp.bind(this),this._onKeyDown=this._onKeyDown.bind(this),this._onClick=this._onClick.bind(this),this._onTouchMove=this._onTouchMove.bind(this),this._onTouchEnd=this._onTouchEnd.bind(this),this._onMouseDown=this._onMouseDown.bind(this),this._onMouseOver=this._onMouseOver.bind(this),this._onFormReset=this._onFormReset.bind(this),this._onAKey=this._onAKey.bind(this),this._onEnterKey=this._onEnterKey.bind(this),this._onEscapeKey=this._onEscapeKey.bind(this),this._onDirectionKey=this._onDirectionKey.bind(this),this._onDeleteKey=this._onDeleteKey.bind(this),this.config.silent||(!0===this.config.shouldSortItems&&this._isSelectOneElement&&console.warn(\"shouldSortElements: Type of passed element is 'select-one', falling back to false.\"),\"active\"===this.passedElement.element.getAttribute(\"data-choice\")&&console.warn(\"Trying to initialise Choices on element already initialised\")),this.init()}else this.config.silent||console.error(\"Could not find passed element or passed element was of an invalid type\")}var t=e.prototype;return t.init=function(){if(!this.initialised){this._createTemplates(),this._createElements(),this._createStructure(),this._initialState=T(this._store.state),this._store.subscribe(this._render),this._render(),this._addEventListeners(),(!this.config.addItems||this.passedElement.element.hasAttribute(\"disabled\"))&&this.disable(),this.initialised=!0;var e=this.config.callbackOnInit;e&&S(\"Function\",e)&&e.call(this)}},t.destroy=function(){this.initialised&&(this._removeEventListeners(),this.passedElement.reveal(),this.containerOuter.unwrap(this.passedElement.element),this._isSelectElement&&(this.passedElement.options=this._presetChoices),this.clearStore(),this.config.templates=null,this.initialised=!1)},t.enable=function(){return this.passedElement.isDisabled&&this.passedElement.enable(),this.containerOuter.isDisabled&&(this._addEventListeners(),this.input.enable(),this.containerOuter.enable()),this},t.disable=function(){return this.passedElement.isDisabled||this.passedElement.disable(),this.containerOuter.isDisabled||(this._removeEventListeners(),this.input.disable(),this.containerOuter.disable()),this},t.highlightItem=function(e,t){if(void 0===t&&(t=!0),!e)return this;var i=e.id,n=e.groupId,s=void 0===n?-1:n,r=e.value,o=void 0===r?\"\":r,a=e.label,l=void 0===a?\"\":a,c=s>=0?this._store.getGroupById(s):null;return this._store.dispatch(Ie(i,!0)),t&&this.passedElement.triggerEvent(z,{id:i,value:o,label:l,groupValue:c&&c.value?c.value:null}),this},t.unhighlightItem=function(e){if(!e)return this;var t=e.id,i=e.groupId,n=void 0===i?-1:i,s=e.value,r=void 0===s?\"\":s,o=e.label,a=void 0===o?\"\":o,l=n>=0?this._store.getGroupById(n):null;return this._store.dispatch(Ie(t,!1)),this.passedElement.triggerEvent(z,{id:t,value:r,label:a,groupValue:l&&l.value?l.value:null}),this},t.highlightAll=function(){var e=this;return this._store.items.forEach((function(t){return e.highlightItem(t)})),this},t.unhighlightAll=function(){var e=this;return this._store.items.forEach((function(t){return e.unhighlightItem(t)})),this},t.removeActiveItemsByValue=function(e){var t=this;return this._store.activeItems.filter((function(t){return t.value===e})).forEach((function(e){return t._removeItem(e)})),this},t.removeActiveItems=function(e){var t=this;return this._store.activeItems.filter((function(t){return t.id!==e})).forEach((function(e){return t._removeItem(e)})),this},t.removeHighlightedItems=function(e){var t=this;return void 0===e&&(e=!1),this._store.highlightedActiveItems.forEach((function(i){t._removeItem(i),e&&t._triggerChange(i.value)})),this},t.showDropdown=function(e){var t=this;return this.dropdown.isActive?this:(requestAnimationFrame((function(){t.dropdown.show(),t.containerOuter.open(t.dropdown.distanceFromTopWindow()),!e&&t._canSearch&&t.input.focus(),t.passedElement.triggerEvent(B,{})})),this)},t.hideDropdown=function(e){var t=this;return this.dropdown.isActive?(requestAnimationFrame((function(){t.dropdown.hide(),t.containerOuter.close(),!e&&t._canSearch&&(t.input.removeActiveDescendant(),t.input.blur()),t.passedElement.triggerEvent(V,{})})),this):this},t.getValue=function(e){void 0===e&&(e=!1);var t=this._store.activeItems.reduce((function(t,i){var n=e?i.value:i;return t.push(n),t}),[]);return this._isSelectOneElement?t[0]:t},t.setValue=function(e){var t=this;return this.initialised?([].concat(e).forEach((function(e){return t._setChoiceOrItem(e)})),this):this},t.setChoiceByValue=function(e){var t=this;return!this.initialised||this._isTextElement?this:((S(\"Array\",e)?e:[e]).forEach((function(e){return t._findAndSelectChoiceByValue(e)})),this)},t.setChoices=function(e,t,i,n){var s=this;if(void 0===e&&(e=[]),void 0===t&&(t=\"\"),void 0===i&&(i=\"\"),void 0===n&&(n=!1),!this._isSelectElement||!t)return this;n&&this.clearChoices(),this.containerOuter.removeLoadingState();return this._setLoading(!0),e.forEach((function(e){e.choices?s._addGroup({group:e,id:e.id||null,valueKey:t,labelKey:i}):s._addChoice({value:e[t],label:e[i],isSelected:e.selected,isDisabled:e.disabled,customProperties:e.customProperties,placeholder:e.placeholder})})),this._setLoading(!1),this},t.clearChoices=function(){this._store.dispatch({type:Z})},t.clearStore=function(){return this._store.dispatch({type:\"CLEAR_ALL\"}),this},t.clearInput=function(){var e=!this._isSelectOneElement;return this.input.clear(e),!this._isTextElement&&this._canSearch&&(this._isSearching=!1,this._store.dispatch(Se(!0))),this},t.ajax=function(e){var t=this;return this.initialised&&this._isSelectElement&&e?(requestAnimationFrame((function(){return t._handleLoadingState(!0)})),e(this._ajaxCallback()),this):this},t._render=function(){if(!this._store.isLoading()){this._currentState=this._store.state;var e=this._currentState.choices!==this._prevState.choices||this._currentState.groups!==this._prevState.groups||this._currentState.items!==this._prevState.items,t=this._isSelectElement,i=this._currentState.items!==this._prevState.items;e&&(t&&this._renderChoices(),i&&this._renderItems(),this._prevState=this._currentState)}},t._renderChoices=function(){var e=this,t=this._store,i=t.activeGroups,n=t.activeChoices,s=document.createDocumentFragment();if(this.choiceList.clear(),this.config.resetScrollPosition&&requestAnimationFrame((function(){return e.choiceList.scrollToTop()})),i.length>=1&&!this._isSearching){var r=n.filter((function(e){return!0===e.placeholder&&-1===e.groupId}));r.length>=1&&(s=this._createChoicesFragment(r,s)),s=this._createGroupsFragment(i,n,s)}else n.length>=1&&(s=this._createChoicesFragment(n,s));if(s.childNodes&&s.childNodes.length>0){var o=this._store.activeItems,a=this._canAddItem(o,this.input.value);a.response?(this.choiceList.append(s),this._highlightChoice()):this.choiceList.append(this._getTemplate(\"notice\",a.notice))}else{var l,c;this._isSearching?(c=S(\"Function\",this.config.noResultsText)?this.config.noResultsText():this.config.noResultsText,l=this._getTemplate(\"notice\",c,\"no-results\")):(c=S(\"Function\",this.config.noChoicesText)?this.config.noChoicesText():this.config.noChoicesText,l=this._getTemplate(\"notice\",c,\"no-choices\")),this.choiceList.append(l)}},t._renderItems=function(){var e=this._store.activeItems||[];this.itemList.clear();var t=this._createItemsFragment(e);t.childNodes&&this.itemList.append(t)},t._createGroupsFragment=function(e,t,i){var n=this,s=i||document.createDocumentFragment();return this.config.shouldSort&&e.sort(this.config.sortFn),e.forEach((function(e){var i=function(e){return t.filter((function(t){return n._isSelectOneElement?t.groupId===e.id:t.groupId===e.id&&(\"always\"===n.config.renderSelectedChoices||!t.selected)}))}(e);if(i.length>=1){var r=n._getTemplate(\"choiceGroup\",e);s.appendChild(r),n._createChoicesFragment(i,s,!0)}})),s},t._createChoicesFragment=function(e,t,i){var n=this;void 0===i&&(i=!1);var s=t||document.createDocumentFragment(),r=this.config,o=r.renderSelectedChoices,a=r.searchResultLimit,l=r.renderChoiceLimit,c=this._isSearching?A:this.config.sortFn,h=function(e){if(\"auto\"!==o||(n._isSelectOneElement||!e.selected)){var t=n._getTemplate(\"choice\",e,n.config.itemSelectText);s.appendChild(t)}},u=e;\"auto\"!==o||this._isSelectOneElement||(u=e.filter((function(e){return!e.selected})));var d=u.reduce((function(e,t){return t.placeholder?e.placeholderChoices.push(t):e.normalChoices.push(t),e}),{placeholderChoices:[],normalChoices:[]}),p=d.placeholderChoices,f=d.normalChoices;(this.config.shouldSort||this._isSearching)&&f.sort(c);var m=u.length,v=[].concat(p,f);this._isSearching?m=a:l>0&&!i&&(m=l);for(var g=0;g=n){var o=s?this._searchChoices(e):0;this.passedElement.triggerEvent(q,{value:e,resultCount:o})}else r&&(this._isSearching=!1,this._store.dispatch(Se(!0)))}},t._canAddItem=function(e,t){var i=!0,n=S(\"Function\",this.config.addItemText)?this.config.addItemText(t):this.config.addItemText;if(!this._isSelectOneElement){var s=function(e,t,i){return void 0===i&&(i=\"value\"),e.some((function(e){return S(\"String\",t)?e[i]===t.trim():e[i]===t}))}(e,t);this.config.maxItemCount>0&&this.config.maxItemCount<=e.length&&(i=!1,n=S(\"Function\",this.config.maxItemText)?this.config.maxItemText(this.config.maxItemCount):this.config.maxItemText),!this.config.duplicateItemsAllowed&&s&&i&&(i=!1,n=S(\"Function\",this.config.uniqueItemText)?this.config.uniqueItemText(t):this.config.uniqueItemText),this._isTextElement&&this.config.addItems&&i&&S(\"Function\",this.config.addItemFilterFn)&&!this.config.addItemFilterFn(t)&&(i=!1,n=S(\"Function\",this.config.customAddItemText)?this.config.customAddItemText(t):this.config.customAddItemText)}return{response:i,notice:n}},t._ajaxCallback=function(){var e=this;return function(t,i,n){if(t&&i){var s=S(\"Object\",t)?[t]:t;s&&S(\"Array\",s)&&s.length?(e._handleLoadingState(!1),e._setLoading(!0),s.forEach((function(t){t.choices?e._addGroup({group:t,id:t.id||null,valueKey:i,labelKey:n}):e._addChoice({value:x(t,i),label:x(t,n),isSelected:t.selected,isDisabled:t.disabled,customProperties:t.customProperties,placeholder:t.placeholder})})),e._setLoading(!1),e._isSelectOneElement&&e._selectPlaceholderChoice()):e._handleLoadingState(!1)}}},t._searchChoices=function(e){var t=S(\"String\",e)?e.trim():e,i=S(\"String\",this._currentValue)?this._currentValue.trim():this._currentValue;if(t.length<1&&t===i+\" \")return 0;var n=this._store.searchableChoices,r=t,o=[].concat(this.config.searchFields),a=Object.assign(this.config.fuseOptions,{keys:o}),l=new s.a(n,a).search(r);return this._currentValue=t,this._highlightPosition=0,this._isSearching=!0,this._store.dispatch(function(e){return{type:$,results:e}}(l)),l.length},t._addEventListeners=function(){window.delegateEvent.add(\"keyup\",this._onKeyUp),window.delegateEvent.add(\"keydown\",this._onKeyDown),window.delegateEvent.add(\"click\",this._onClick),window.delegateEvent.add(\"touchmove\",this._onTouchMove),window.delegateEvent.add(\"touchend\",this._onTouchEnd),window.delegateEvent.add(\"mousedown\",this._onMouseDown),window.delegateEvent.add(\"mouseover\",this._onMouseOver),this._isSelectOneElement&&(this.containerOuter.element.addEventListener(\"focus\",this._onFocus),this.containerOuter.element.addEventListener(\"blur\",this._onBlur)),this.input.element.addEventListener(\"focus\",this._onFocus),this.input.element.addEventListener(\"blur\",this._onBlur),this.input.element.form&&this.input.element.form.addEventListener(\"reset\",this._onFormReset),this.input.addEventListeners()},t._removeEventListeners=function(){window.delegateEvent.remove(\"keyup\",this._onKeyUp),window.delegateEvent.remove(\"keydown\",this._onKeyDown),window.delegateEvent.remove(\"click\",this._onClick),window.delegateEvent.remove(\"touchmove\",this._onTouchMove),window.delegateEvent.remove(\"touchend\",this._onTouchEnd),window.delegateEvent.remove(\"mousedown\",this._onMouseDown),window.delegateEvent.remove(\"mouseover\",this._onMouseOver),this._isSelectOneElement&&(this.containerOuter.element.removeEventListener(\"focus\",this._onFocus),this.containerOuter.element.removeEventListener(\"blur\",this._onBlur)),this.input.element.removeEventListener(\"focus\",this._onFocus),this.input.element.removeEventListener(\"blur\",this._onBlur),this.input.element.form&&this.input.element.form.removeEventListener(\"reset\",this._onFormReset),this.input.removeEventListeners()},t._onKeyDown=function(e){var t,i=e.target,n=e.keyCode,s=e.ctrlKey,r=e.metaKey;if(i===this.input.element||this.containerOuter.element.contains(i)){var o=this._store.activeItems,a=this.input.isFocussed,l=this.dropdown.isActive,c=this.itemList.hasChildren,h=String.fromCharCode(n),u=ne,d=se,p=re,f=oe,m=ae,v=le,g=ce,_=he,b=ue,y=s||r;!this._isTextElement&&/[a-zA-Z0-9-_ ]/.test(h)&&this.showDropdown();var E=((t={})[f]=this._onAKey,t[p]=this._onEnterKey,t[m]=this._onEscapeKey,t[v]=this._onDirectionKey,t[_]=this._onDirectionKey,t[g]=this._onDirectionKey,t[b]=this._onDirectionKey,t[d]=this._onDeleteKey,t[u]=this._onDeleteKey,t);E[n]&&E[n]({event:e,target:i,keyCode:n,metaKey:r,activeItems:o,hasFocusedInput:a,hasActiveDropdown:l,hasItems:c,hasCtrlDownKeyPressed:y})}},t._onKeyUp=function(e){var t=e.target,i=e.keyCode;if(t===this.input.element){var n=this.input.value,s=this._store.activeItems,r=this._canAddItem(s,n),o=ne,a=se;if(this._isTextElement){if(r.notice&&n){var l=this._getTemplate(\"notice\",r.notice);this.dropdown.element.innerHTML=l.outerHTML,this.showDropdown(!0)}else this.hideDropdown(!0)}else{var c=(i===o||i===a)&&!t.value,h=!this._isTextElement&&this._isSearching,u=this._canSearch&&r.response;c&&h?(this._isSearching=!1,this._store.dispatch(Se(!0))):u&&this._handleSearch(this.input.value)}this._canSearch=this.config.searchEnabled}},t._onAKey=function(e){var t=e.hasItems;e.hasCtrlDownKeyPressed&&t&&(this._canSearch=!1,this.config.removeItems&&!this.input.value&&this.input.element===document.activeElement&&this.highlightAll())},t._onEnterKey=function(e){var t=e.event,i=e.target,n=e.activeItems,s=e.hasActiveDropdown,r=re,o=i.hasAttribute(\"data-button\");if(this._isTextElement&&i.value){var a=this.input.value;this._canAddItem(n,a).response&&(this.hideDropdown(!0),this._addItem({value:a}),this._triggerChange(a),this.clearInput())}if(o&&(this._handleButtonAction(n,i),t.preventDefault()),s){var l=this.dropdown.getChild(\".\"+this.config.classNames.highlightedState);l&&(n[0]&&(n[0].keyCode=r),this._handleChoiceAction(n,l)),t.preventDefault()}else this._isSelectOneElement&&(this.showDropdown(),t.preventDefault())},t._onEscapeKey=function(e){e.hasActiveDropdown&&(this.hideDropdown(!0),this.containerOuter.focus())},t._onDirectionKey=function(e){var t=e.event,i=e.hasActiveDropdown,n=e.keyCode,s=e.metaKey,r=ce,o=he,a=ue;if(i||this._isSelectOneElement){this.showDropdown(),this._canSearch=!1;var l,c=n===r||n===a?1:-1;if(s||n===a||n===o)l=c>0?Array.from(this.dropdown.element.querySelectorAll(\"[data-choice-selectable]\")).pop():this.dropdown.element.querySelector(\"[data-choice-selectable]\");else{var h=this.dropdown.element.querySelector(\".\"+this.config.classNames.highlightedState);l=h?function(e,t,i){if(void 0===i&&(i=1),e&&t){var n=e.parentNode.parentNode,s=Array.from(n.querySelectorAll(t)),r=s.indexOf(e);return s[r+(i>0?1:-1)]}}(h,\"[data-choice-selectable]\",c):this.dropdown.element.querySelector(\"[data-choice-selectable]\")}l&&(function(e,t,i){if(void 0===i&&(i=1),e)return i>0?t.scrollTop+t.offsetHeight>=e.offsetTop+e.offsetHeight:e.offsetTop>=t.scrollTop}(l,this.choiceList.element,c)||this.choiceList.scrollToChoice(l,c),this._highlightChoice(l)),t.preventDefault()}},t._onDeleteKey=function(e){var t=e.event,i=e.target,n=e.hasFocusedInput,s=e.activeItems;!n||i.value||this._isSelectOneElement||(this._handleBackspace(s),t.preventDefault())},t._onTouchMove=function(){this._wasTap&&(this._wasTap=!1)},t._onTouchEnd=function(e){var t=(e||e.touches[0]).target;this._wasTap&&this.containerOuter.element.contains(t)&&((t===this.containerOuter.element||t===this.containerInner.element)&&(this._isTextElement?this.input.focus():this._isSelectMultipleElement&&this.showDropdown()),e.stopPropagation());this._wasTap=!0},t._onMouseDown=function(e){var t=e.target,i=e.shiftKey;if(this.choiceList.element.contains(t)&&navigator.userAgent.match(/Trident/)&&navigator.userAgent.match(/rv[ :]11/)&&(this._isScrollingOnIe=!0),this.containerOuter.element.contains(t)&&t!==this.input.element){var n=this._store.activeItems,s=i,r=w(t,\"data-button\"),o=w(t,\"data-item\"),a=w(t,\"data-choice\");r?this._handleButtonAction(n,r):o?this._handleItemAction(n,o,s):a&&this._handleChoiceAction(n,a),e.preventDefault()}},t._onMouseOver=function(e){var t=e.target;(t===this.dropdown||this.dropdown.element.contains(t))&&t.hasAttribute(\"data-choice\")&&this._highlightChoice(t)},t._onClick=function(e){var t=e.target;this.containerOuter.element.contains(t)?this.dropdown.isActive||this.containerOuter.isDisabled?this._isSelectOneElement&&t!==this.input.element&&!this.dropdown.element.contains(t)&&this.hideDropdown():this._isTextElement?document.activeElement!==this.input.element&&this.input.focus():(this.showDropdown(),this.containerOuter.focus()):(this._store.highlightedActiveItems.length>0&&this.unhighlightAll(),this.containerOuter.removeFocusState(),this.hideDropdown(!0))},t._onFocus=function(e){var t=this,i=e.target;this.containerOuter.element.contains(i)&&{text:function(){i===t.input.element&&t.containerOuter.addFocusState()},\"select-one\":function(){t.containerOuter.addFocusState(),i===t.input.element&&t.showDropdown(!0)},\"select-multiple\":function(){i===t.input.element&&(t.showDropdown(!0),t.containerOuter.addFocusState())}}[this.passedElement.element.type]()},t._onBlur=function(e){var t=this,i=e.target;if(this.containerOuter.element.contains(i)&&!this._isScrollingOnIe){var n=this._store.activeItems.some((function(e){return e.highlighted}));({text:function(){i===t.input.element&&(t.containerOuter.removeFocusState(),n&&t.unhighlightAll(),t.hideDropdown(!0))},\"select-one\":function(){t.containerOuter.removeFocusState(),(i===t.input.element||i===t.containerOuter.element&&!t._canSearch)&&t.hideDropdown(!0)},\"select-multiple\":function(){i===t.input.element&&(t.containerOuter.removeFocusState(),t.hideDropdown(!0),n&&t.unhighlightAll())}})[this.passedElement.element.type]()}else this._isScrollingOnIe=!1,this.input.element.focus()},t._onFormReset=function(){this._store.dispatch({type:\"RESET_TO\",state:this._initialState})},t._highlightChoice=function(e){var t=this;void 0===e&&(e=null);var i=Array.from(this.dropdown.element.querySelectorAll(\"[data-choice-selectable]\"));if(i.length){var n=e;Array.from(this.dropdown.element.querySelectorAll(\".\"+this.config.classNames.highlightedState)).forEach((function(e){e.classList.remove(t.config.classNames.highlightedState),e.setAttribute(\"aria-selected\",\"false\")})),n?this._highlightPosition=i.indexOf(n):(n=i.length>this._highlightPosition?i[this._highlightPosition]:i[i.length-1])||(n=i[0]),n.classList.add(this.config.classNames.highlightedState),n.setAttribute(\"aria-selected\",\"true\"),this.passedElement.triggerEvent(X,{el:n}),this.dropdown.isActive&&(this.input.setActiveDescendant(n.id),this.containerOuter.setActiveDescendant(n.id))}},t._addItem=function(e){var t=e.value,i=e.label,n=void 0===i?null:i,s=e.choiceId,r=void 0===s?-1:s,o=e.groupId,a=void 0===o?-1:o,l=e.customProperties,c=void 0===l?null:l,h=e.placeholder,u=void 0!==h&&h,d=e.keyCode,p=void 0===d?null:d,f=S(\"String\",t)?t.trim():t,m=p,v=c,g=this._store.items,_=n||f,b=parseInt(r,10)||-1,y=a>=0?this._store.getGroupById(a):null,E=g?g.length+1:1;return this.config.prependValue&&(f=this.config.prependValue+f.toString()),this.config.appendValue&&(f+=this.config.appendValue.toString()),this._store.dispatch(function(e){var t=e.value,i=e.label,n=e.id,s=e.choiceId,r=e.groupId,o=e.customProperties,a=e.placeholder,l=e.keyCode;return{type:ee,value:t,label:i,id:n,choiceId:s,groupId:r,customProperties:o,placeholder:a,keyCode:l}}({value:f,label:_,id:E,choiceId:b,groupId:a,customProperties:c,placeholder:u,keyCode:m})),this._isSelectOneElement&&this.removeActiveItems(E),this.passedElement.triggerEvent(W,{id:E,value:f,label:_,customProperties:v,groupValue:y&&y.value?y.value:void 0,keyCode:m}),this},t._removeItem=function(e){if(!e||!S(\"Object\",e))return this;var t=e.id,i=e.value,n=e.label,s=e.choiceId,r=e.groupId,o=r>=0?this._store.getGroupById(r):null;return this._store.dispatch(function(e,t){return{type:te,id:e,choiceId:t}}(t,s)),o&&o.value?this.passedElement.triggerEvent(U,{id:t,value:i,label:n,groupValue:o.value}):this.passedElement.triggerEvent(U,{id:t,value:i,label:n}),this},t._addChoice=function(e){var t=e.value,i=e.label,n=void 0===i?null:i,s=e.isSelected,r=void 0!==s&&s,o=e.isDisabled,a=void 0!==o&&o,l=e.groupId,c=void 0===l?-1:l,h=e.customProperties,u=void 0===h?null:h,d=e.placeholder,p=void 0!==d&&d,f=e.keyCode,m=void 0===f?null:f;if(null!=t){var v=this._store.choices,g=n||t,_=v?v.length+1:1,b=this._baseId+\"-\"+this._idNames.itemChoice+\"-\"+_;this._store.dispatch(function(e){var t=e.value,i=e.label,n=e.id,s=e.groupId,r=e.disabled,o=e.elementId,a=e.customProperties,l=e.placeholder,c=e.keyCode;return{type:Y,value:t,label:i,id:n,groupId:s,disabled:r,elementId:o,customProperties:a,placeholder:l,keyCode:c}}({value:t,label:g,id:_,groupId:c,disabled:a,elementId:b,customProperties:u,placeholder:p,keyCode:m})),r&&this._addItem({value:t,label:g,choiceId:_,customProperties:u,placeholder:p,keyCode:m})}},t._addGroup=function(e){var t=this,i=e.group,n=e.id,s=e.valueKey,r=void 0===s?\"value\":s,o=e.labelKey,a=void 0===o?\"label\":o,l=S(\"Object\",i)?i.choices:Array.from(i.getElementsByTagName(\"OPTION\")),c=n||Math.floor((new Date).valueOf()*Math.random()),h=!!i.disabled&&i.disabled;if(l){this._store.dispatch(we(i.label,c,!0,h));l.forEach((function(e){var i=e.disabled||e.parentNode&&e.parentNode.disabled;t._addChoice({value:e[r],label:S(\"Object\",e)?e[a]:e.innerHTML,isSelected:e.selected,isDisabled:i,groupId:c,customProperties:e.customProperties,placeholder:e.placeholder})}))}else this._store.dispatch(we(i.label,i.id,!1,i.disabled))},t._getTemplate=function(e){var t;if(!e)return null;for(var i=this.config,n=i.templates,s=i.classNames,r=arguments.length,o=new Array(r>1?r-1:0),a=1;a element with our dynamically created styles\n var cssStyleElement;\n\n //all rules found for element queries\n var allQueries = {};\n\n //association map to identify which selector belongs to a element from the animationstart event.\n var idToSelectorMapping = [];\n\n /**\n *\n * @param element\n * @returns {Number}\n */\n function getEmSize(element) {\n if (!element) {\n element = document.documentElement;\n }\n var fontSize = window.getComputedStyle(element, null).fontSize;\n return parseFloat(fontSize) || 16;\n }\n\n /**\n * Get element size\n * @param {HTMLElement} element\n * @returns {Object} {width, height}\n */\n function getElementSize(element) {\n if (!element.getBoundingClientRect) {\n return {\n width: element.offsetWidth,\n height: element.offsetHeight\n }\n }\n\n var rect = element.getBoundingClientRect();\n return {\n width: Math.round(rect.width),\n height: Math.round(rect.height)\n }\n }\n\n /**\n *\n * @copyright https://github.com/Mr0grog/element-query/blob/master/LICENSE\n *\n * @param {HTMLElement} element\n * @param {*} value\n * @returns {*}\n */\n function convertToPx(element, value) {\n var numbers = value.split(/\\d/);\n var units = numbers[numbers.length - 1];\n value = parseFloat(value);\n switch (units) {\n case \"px\":\n return value;\n case \"em\":\n return value * getEmSize(element);\n case \"rem\":\n return value * getEmSize();\n // Viewport units!\n // According to http://quirksmode.org/mobile/tableViewport.html\n // documentElement.clientWidth/Height gets us the most reliable info\n case \"vw\":\n return value * document.documentElement.clientWidth / 100;\n case \"vh\":\n return value * document.documentElement.clientHeight / 100;\n case \"vmin\":\n case \"vmax\":\n var vw = document.documentElement.clientWidth / 100;\n var vh = document.documentElement.clientHeight / 100;\n var chooser = Math[units === \"vmin\" ? \"min\" : \"max\"];\n return value * chooser(vw, vh);\n default:\n return value;\n // for now, not supporting physical units (since they are just a set number of px)\n // or ex/ch (getting accurate measurements is hard)\n }\n }\n\n /**\n *\n * @param {HTMLElement} element\n * @param {String} id\n * @constructor\n */\n function SetupInformation(element, id) {\n this.element = element;\n var key, option, elementSize, value, actualValue, attrValues, attrValue, attrName;\n\n var attributes = ['min-width', 'min-height', 'max-width', 'max-height'];\n\n /**\n * Extracts the computed width/height and sets to min/max- attribute.\n */\n this.call = function () {\n // extract current dimensions\n elementSize = getElementSize(this.element);\n\n attrValues = {};\n\n for (key in allQueries[id]) {\n if (!allQueries[id].hasOwnProperty(key)) {\n continue;\n }\n option = allQueries[id][key];\n\n value = convertToPx(this.element, option.value);\n\n actualValue = option.property === 'width' ? elementSize.width : elementSize.height;\n attrName = option.mode + '-' + option.property;\n attrValue = '';\n\n if (option.mode === 'min' && actualValue >= value) {\n attrValue += option.value;\n }\n\n if (option.mode === 'max' && actualValue <= value) {\n attrValue += option.value;\n }\n\n if (!attrValues[attrName]) attrValues[attrName] = '';\n if (attrValue && -1 === (' ' + attrValues[attrName] + ' ').indexOf(' ' + attrValue + ' ')) {\n attrValues[attrName] += ' ' + attrValue;\n }\n }\n\n for (var k in attributes) {\n if (!attributes.hasOwnProperty(k)) continue;\n\n if (attrValues[attributes[k]]) {\n this.element.setAttribute(attributes[k], attrValues[attributes[k]].substr(1));\n } else {\n this.element.removeAttribute(attributes[k]);\n }\n }\n };\n }\n\n /**\n * @param {HTMLElement} element\n * @param {Object} id\n */\n function setupElement(element, id) {\n if (!element.elementQueriesSetupInformation) {\n element.elementQueriesSetupInformation = new SetupInformation(element, id);\n }\n if (!element.elementQueriesSensor) {\n element.elementQueriesSensor = new ResizeSensor(element, function () {\n element.elementQueriesSetupInformation.call();\n });\n }\n\n element.elementQueriesSetupInformation.call();\n }\n\n /**\n * Stores rules to the selector that should be applied once resized.\n *\n * @param {String} selector\n * @param {String} mode min|max\n * @param {String} property width|height\n * @param {String} value\n */\n function queueQuery(selector, mode, property, value) {\n if (typeof(allQueries[selector]) === 'undefined') {\n allQueries[selector] = [];\n // add animation to trigger animationstart event, so we know exactly when a element appears in the DOM\n\n var id = idToSelectorMapping.length;\n cssStyleElement.innerHTML += '\\n' + selector + ' {animation: 0.1s element-queries;}';\n cssStyleElement.innerHTML += '\\n' + selector + ' > .resize-sensor {min-width: '+id+'px;}';\n idToSelectorMapping.push(selector);\n }\n\n allQueries[selector].push({\n mode: mode,\n property: property,\n value: value\n });\n }\n\n function getQuery(container) {\n var query;\n if (document.querySelectorAll) query = (container) ? container.querySelectorAll.bind(container) : document.querySelectorAll.bind(document);\n if (!query && 'undefined' !== typeof $$) query = $$;\n if (!query && 'undefined' !== typeof jQuery) query = jQuery;\n\n if (!query) {\n throw 'No document.querySelectorAll, jQuery or Mootools\\'s $$ found.';\n }\n\n return query;\n }\n\n /**\n * If animationStart didn't catch a new element in the DOM, we can manually search for it\n */\n function findElementQueriesElements(container) {\n var query = getQuery(container);\n\n for (var selector in allQueries) if (allQueries.hasOwnProperty(selector)) {\n // find all elements based on the extract query selector from the element query rule\n var elements = query(selector, container);\n\n for (var i = 0, j = elements.length; i < j; i++) {\n setupElement(elements[i], selector);\n }\n }\n }\n\n /**\n *\n * @param {HTMLElement} element\n */\n function attachResponsiveImage(element) {\n var children = [];\n var rules = [];\n var sources = [];\n var defaultImageId = 0;\n var lastActiveImage = -1;\n var loadedImages = [];\n\n for (var i in element.children) {\n if (!element.children.hasOwnProperty(i)) continue;\n\n if (element.children[i].tagName && element.children[i].tagName.toLowerCase() === 'img') {\n children.push(element.children[i]);\n\n var minWidth = element.children[i].getAttribute('min-width') || element.children[i].getAttribute('data-min-width');\n //var minHeight = element.children[i].getAttribute('min-height') || element.children[i].getAttribute('data-min-height');\n var src = element.children[i].getAttribute('data-src') || element.children[i].getAttribute('url');\n\n sources.push(src);\n\n var rule = {\n minWidth: minWidth\n };\n\n rules.push(rule);\n\n if (!minWidth) {\n defaultImageId = children.length - 1;\n element.children[i].style.display = 'block';\n } else {\n element.children[i].style.display = 'none';\n }\n }\n }\n\n lastActiveImage = defaultImageId;\n\n function check() {\n var imageToDisplay = false, i;\n\n for (i in children) {\n if (!children.hasOwnProperty(i)) continue;\n\n if (rules[i].minWidth) {\n if (element.offsetWidth > rules[i].minWidth) {\n imageToDisplay = i;\n }\n }\n }\n\n if (!imageToDisplay) {\n //no rule matched, show default\n imageToDisplay = defaultImageId;\n }\n\n if (lastActiveImage !== imageToDisplay) {\n //image change\n\n if (!loadedImages[imageToDisplay]) {\n //image has not been loaded yet, we need to load the image first in memory to prevent flash of\n //no content\n\n var image = new Image();\n image.onload = function () {\n children[imageToDisplay].src = sources[imageToDisplay];\n\n children[lastActiveImage].style.display = 'none';\n children[imageToDisplay].style.display = 'block';\n\n loadedImages[imageToDisplay] = true;\n\n lastActiveImage = imageToDisplay;\n };\n\n image.src = sources[imageToDisplay];\n } else {\n children[lastActiveImage].style.display = 'none';\n children[imageToDisplay].style.display = 'block';\n lastActiveImage = imageToDisplay;\n }\n } else {\n //make sure for initial check call the .src is set correctly\n children[imageToDisplay].src = sources[imageToDisplay];\n }\n }\n\n element.resizeSensorInstance = new ResizeSensor(element, check);\n check();\n }\n\n function findResponsiveImages() {\n var query = getQuery();\n\n var elements = query('[data-responsive-image],[responsive-image]');\n for (var i = 0, j = elements.length; i < j; i++) {\n attachResponsiveImage(elements[i]);\n }\n }\n\n var regex = /,?[\\s\\t]*([^,\\n]*?)((?:\\[[\\s\\t]*?(?:min|max)-(?:width|height)[\\s\\t]*?[~$\\^]?=[\\s\\t]*?\"[^\"]*?\"[\\s\\t]*?])+)([^,\\n\\s\\{]*)/mgi;\n var attrRegex = /\\[[\\s\\t]*?(min|max)-(width|height)[\\s\\t]*?[~$\\^]?=[\\s\\t]*?\"([^\"]*?)\"[\\s\\t]*?]/mgi;\n\n /**\n * @param {String} css\n */\n function extractQuery(css) {\n var match, smatch, attrs, attrMatch;\n\n css = css.replace(/'/g, '\"');\n while (null !== (match = regex.exec(css))) {\n smatch = match[1] + match[3];\n attrs = match[2];\n\n while (null !== (attrMatch = attrRegex.exec(attrs))) {\n queueQuery(smatch, attrMatch[1], attrMatch[2], attrMatch[3]);\n }\n }\n }\n\n /**\n * @param {CssRule[]|String} rules\n */\n function readRules(rules) {\n var selector = '';\n\n if (!rules) {\n return;\n }\n\n if ('string' === typeof rules) {\n rules = rules.toLowerCase();\n if (-1 !== rules.indexOf('min-width') || -1 !== rules.indexOf('max-width')) {\n extractQuery(rules);\n }\n } else {\n for (var i = 0, j = rules.length; i < j; i++) {\n if (1 === rules[i].type) {\n selector = rules[i].selectorText || rules[i].cssText;\n if (-1 !== selector.indexOf('min-height') || -1 !== selector.indexOf('max-height')) {\n extractQuery(selector);\n } else if (-1 !== selector.indexOf('min-width') || -1 !== selector.indexOf('max-width')) {\n extractQuery(selector);\n }\n } else if (4 === rules[i].type) {\n readRules(rules[i].cssRules || rules[i].rules);\n } else if (3 === rules[i].type) {\n if(rules[i].styleSheet.hasOwnProperty(\"cssRules\")) {\n readRules(rules[i].styleSheet.cssRules);\n }\n }\n }\n }\n }\n\n var defaultCssInjected = false;\n\n /**\n * Searches all css rules and setups the event listener to all elements with element query rules..\n */\n this.init = function () {\n var animationStart = 'animationstart';\n if (typeof document.documentElement.style['webkitAnimationName'] !== 'undefined') {\n animationStart = 'webkitAnimationStart';\n } else if (typeof document.documentElement.style['MozAnimationName'] !== 'undefined') {\n animationStart = 'mozanimationstart';\n } else if (typeof document.documentElement.style['OAnimationName'] !== 'undefined') {\n animationStart = 'oanimationstart';\n }\n\n document.body.addEventListener(animationStart, function (e) {\n var element = e.target;\n var styles = element && window.getComputedStyle(element, null);\n var animationName = styles && styles.getPropertyValue('animation-name');\n var requiresSetup = animationName && (-1 !== animationName.indexOf('element-queries'));\n\n if (requiresSetup) {\n element.elementQueriesSensor = new ResizeSensor(element, function () {\n if (element.elementQueriesSetupInformation) {\n element.elementQueriesSetupInformation.call();\n }\n });\n\n var sensorStyles = window.getComputedStyle(element.resizeSensor, null);\n var id = sensorStyles.getPropertyValue('min-width');\n id = parseInt(id.replace('px', ''));\n setupElement(e.target, idToSelectorMapping[id]);\n }\n });\n\n if (!defaultCssInjected) {\n cssStyleElement = document.createElement('style');\n cssStyleElement.type = 'text/css';\n cssStyleElement.innerHTML = '[responsive-image] > img, [data-responsive-image] {overflow: hidden; padding: 0; } [responsive-image] > img, [data-responsive-image] > img {width: 100%;}';\n\n //safari wants at least one rule in keyframes to start working\n cssStyleElement.innerHTML += '\\n@keyframes element-queries { 0% { visibility: inherit; } }';\n document.getElementsByTagName('head')[0].appendChild(cssStyleElement);\n defaultCssInjected = true;\n }\n\n for (var i = 0, j = document.styleSheets.length; i < j; i++) {\n try {\n if (document.styleSheets[i].href && 0 === document.styleSheets[i].href.indexOf('file://')) {\n console.log(\"CssElementQueries: unable to parse local css files, \" + document.styleSheets[i].href);\n }\n\n readRules(document.styleSheets[i].cssRules || document.styleSheets[i].rules || document.styleSheets[i].cssText);\n } catch (e) {\n }\n }\n\n findResponsiveImages();\n };\n\n /**\n * Go through all collected rules (readRules()) and attach the resize-listener.\n * Not necessary to call it manually, since we detect automatically when new elements\n * are available in the DOM. However, sometimes handy for dirty DOM modifications.\n *\n * @param {HTMLElement} container only elements of the container are considered (document.body if not set)\n */\n this.findElementQueriesElements = function (container) {\n findElementQueriesElements(container);\n };\n\n this.update = function () {\n this.init();\n };\n };\n\n ElementQueries.update = function () {\n ElementQueries.instance.update();\n };\n\n /**\n * Removes all sensor and elementquery information from the element.\n *\n * @param {HTMLElement} element\n */\n ElementQueries.detach = function (element) {\n if (element.elementQueriesSetupInformation) {\n //element queries\n element.elementQueriesSensor.detach();\n delete element.elementQueriesSetupInformation;\n delete element.elementQueriesSensor;\n\n } else if (element.resizeSensorInstance) {\n //responsive image\n\n element.resizeSensorInstance.detach();\n delete element.resizeSensorInstance;\n }\n };\n\n ElementQueries.init = function () {\n if (!ElementQueries.instance) {\n ElementQueries.instance = new ElementQueries();\n }\n\n ElementQueries.instance.init();\n };\n\n var domLoaded = function (callback) {\n /* Mozilla, Chrome, Opera */\n if (document.addEventListener) {\n document.addEventListener('DOMContentLoaded', callback, false);\n }\n /* Safari, iCab, Konqueror */\n else if (/KHTML|WebKit|iCab/i.test(navigator.userAgent)) {\n var DOMLoadTimer = setInterval(function () {\n if (/loaded|complete/i.test(document.readyState)) {\n callback();\n clearInterval(DOMLoadTimer);\n }\n }, 10);\n }\n /* Other web browsers */\n else window.onload = callback;\n };\n\n ElementQueries.findElementQueriesElements = function (container) {\n ElementQueries.instance.findElementQueriesElements(container);\n };\n\n ElementQueries.listen = function () {\n domLoaded(ElementQueries.init);\n };\n\n return ElementQueries;\n\n}));\n","'use strict';\n\n/**\n * Copyright Marc J. Schmidt. See the LICENSE file at the top-level\n * directory of this distribution and at\n * https://github.com/marcj/css-element-queries/blob/master/LICENSE.\n */\n(function (root, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(factory);\n } else if (typeof exports === \"object\") {\n module.exports = factory();\n } else {\n root.ResizeSensor = factory();\n }\n}(typeof window !== 'undefined' ? window : this, function () {\n\n // Make sure it does not throw in a SSR (Server Side Rendering) situation\n if (typeof window === \"undefined\") {\n return null;\n }\n // Only used for the dirty checking, so the event callback count is limited to max 1 call per fps per sensor.\n // In combination with the event based resize sensor this saves cpu time, because the sensor is too fast and\n // would generate too many unnecessary events.\n var requestAnimationFrame = window.requestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n function (fn) {\n return window.setTimeout(fn, 20);\n };\n\n /**\n * Iterate over each of the provided element(s).\n *\n * @param {HTMLElement|HTMLElement[]} elements\n * @param {Function} callback\n */\n function forEachElement(elements, callback){\n var elementsType = Object.prototype.toString.call(elements);\n var isCollectionTyped = ('[object Array]' === elementsType\n || ('[object NodeList]' === elementsType)\n || ('[object HTMLCollection]' === elementsType)\n || ('[object Object]' === elementsType)\n || ('undefined' !== typeof jQuery && elements instanceof jQuery) //jquery\n || ('undefined' !== typeof Elements && elements instanceof Elements) //mootools\n );\n var i = 0, j = elements.length;\n if (isCollectionTyped) {\n for (; i < j; i++) {\n callback(elements[i]);\n }\n } else {\n callback(elements);\n }\n }\n\n /**\n * Get element size\n * @param {HTMLElement} element\n * @returns {Object} {width, height}\n */\n function getElementSize(element) {\n if (!element.getBoundingClientRect) {\n return {\n width: element.offsetWidth,\n height: element.offsetHeight\n }\n }\n\n var rect = element.getBoundingClientRect();\n return {\n width: Math.round(rect.width),\n height: Math.round(rect.height)\n }\n }\n\n /**\n * Class for dimension change detection.\n *\n * @param {Element|Element[]|Elements|jQuery} element\n * @param {Function} callback\n *\n * @constructor\n */\n var ResizeSensor = function(element, callback) {\n /**\n *\n * @constructor\n */\n function EventQueue() {\n var q = [];\n this.add = function(ev) {\n q.push(ev);\n };\n\n var i, j;\n this.call = function(sizeInfo) {\n for (i = 0, j = q.length; i < j; i++) {\n q[i].call(this, sizeInfo);\n }\n };\n\n this.remove = function(ev) {\n var newQueue = [];\n for(i = 0, j = q.length; i < j; i++) {\n if(q[i] !== ev) newQueue.push(q[i]);\n }\n q = newQueue;\n };\n\n this.length = function() {\n return q.length;\n }\n }\n\n /**\n *\n * @param {HTMLElement} element\n * @param {Function} resized\n */\n function attachResizeEvent(element, resized) {\n if (!element) return;\n if (element.resizedAttached) {\n element.resizedAttached.add(resized);\n return;\n }\n\n element.resizedAttached = new EventQueue();\n element.resizedAttached.add(resized);\n\n element.resizeSensor = document.createElement('div');\n element.resizeSensor.dir = 'ltr';\n element.resizeSensor.className = 'resize-sensor';\n var style = 'pointer-events: none; position: absolute; left: 0px; top: 0px; right: 0; bottom: 0; ' +\n 'overflow: hidden; z-index: -1; visibility: hidden; max-width: 100%;';\n var styleChild = 'position: absolute; left: 0; top: 0; transition: 0s;';\n\n element.resizeSensor.style.cssText = style;\n element.resizeSensor.innerHTML =\n '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
';\n element.appendChild(element.resizeSensor);\n\n var computedStyle = window.getComputedStyle(element);\n var position = computedStyle ? computedStyle.getPropertyValue('position') : null;\n if ('absolute' !== position && 'relative' !== position && 'fixed' !== position) {\n element.style.position = 'relative';\n }\n\n var expand = element.resizeSensor.childNodes[0];\n var expandChild = expand.childNodes[0];\n var shrink = element.resizeSensor.childNodes[1];\n var dirty, rafId;\n var size = getElementSize(element);\n var lastWidth = size.width;\n var lastHeight = size.height;\n var initialHiddenCheck = true;\n var lastAnimationFrame = 0;\n\n var resetExpandShrink = function () {\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n expandChild.style.width = (width + 10) + 'px';\n expandChild.style.height = (height + 10) + 'px';\n\n expand.scrollLeft = width + 10;\n expand.scrollTop = height + 10;\n\n shrink.scrollLeft = width + 10;\n shrink.scrollTop = height + 10;\n };\n\n var reset = function() {\n // Check if element is hidden\n if (initialHiddenCheck) {\n var invisible = element.offsetWidth === 0 && element.offsetHeight === 0;\n if (invisible) {\n // Check in next frame\n if (!lastAnimationFrame){\n lastAnimationFrame = requestAnimationFrame(function(){\n lastAnimationFrame = 0;\n\n reset();\n });\n }\n\n return;\n } else {\n // Stop checking\n initialHiddenCheck = false;\n }\n }\n\n resetExpandShrink();\n };\n element.resizeSensor.resetSensor = reset;\n\n var onResized = function() {\n rafId = 0;\n\n if (!dirty) return;\n\n lastWidth = size.width;\n lastHeight = size.height;\n\n if (element.resizedAttached) {\n element.resizedAttached.call(size);\n }\n };\n\n var onScroll = function() {\n size = getElementSize(element);\n dirty = size.width !== lastWidth || size.height !== lastHeight;\n\n if (dirty && !rafId) {\n rafId = requestAnimationFrame(onResized);\n }\n\n reset();\n };\n\n var addEvent = function(el, name, cb) {\n if (el.attachEvent) {\n el.attachEvent('on' + name, cb);\n } else {\n el.addEventListener(name, cb);\n }\n };\n\n addEvent(expand, 'scroll', onScroll);\n addEvent(shrink, 'scroll', onScroll);\n\n // Fix for custom Elements\n requestAnimationFrame(reset);\n }\n\n forEachElement(element, function(elem){\n attachResizeEvent(elem, callback);\n });\n\n this.detach = function(ev) {\n ResizeSensor.detach(element, ev);\n };\n\n this.reset = function() {\n element.resizeSensor.resetSensor();\n };\n };\n\n ResizeSensor.reset = function(element) {\n forEachElement(element, function(elem){\n elem.resizeSensor.resetSensor();\n });\n };\n\n ResizeSensor.detach = function(element, ev) {\n forEachElement(element, function(elem){\n if (!elem) return;\n if(elem.resizedAttached && typeof ev === \"function\"){\n elem.resizedAttached.remove(ev);\n if(elem.resizedAttached.length()) return;\n }\n if (elem.resizeSensor) {\n if (elem.contains(elem.resizeSensor)) {\n elem.removeChild(elem.resizeSensor);\n }\n delete elem.resizeSensor;\n delete elem.resizedAttached;\n }\n });\n };\n\n if (typeof MutationObserver !== \"undefined\") {\n var observer = new MutationObserver(function (mutations) {\n for (var i in mutations) {\n if (mutations.hasOwnProperty(i)) {\n var items = mutations[i].addedNodes;\n for (var j = 0; j < items.length; j++) {\n if (items[j].resizeSensor) {\n ResizeSensor.reset(items[j]);\n }\n }\n }\n }\n });\n\n document.addEventListener(\"DOMContentLoaded\", function (event) {\n observer.observe(document.body, {\n childList: true,\n subtree: true,\n });\n });\n }\n\n return ResizeSensor;\n\n}));\n",";(function(){var k;function l(a){var b=0;return function(){return barguments.length)throw new TypeError(\"2 arguments required, but only \"+arguments.length+\" present.\");return b instanceof Blob?[a+\"\",b,void 0!==d?d+\"\":\"string\"===typeof b.name?b.name:\"blob\"]:[a+\"\",b+\"\"]},P=function(a){if(!arguments.length)throw new TypeError(\"1 argument required, but only 0 present.\");return[a+\"\"]},Q=function(a){var b=x(a);a=b.next().value;b=b.next().value;\na instanceof Blob&&(a=new File([a],b,{type:a.type,lastModified:a.lastModified}));return a},R=\"object\"===typeof window?window:\"object\"===typeof self?self:this,S=R.FormData,T=R.XMLHttpRequest&&R.XMLHttpRequest.prototype.send,U=R.Request&&R.fetch;p();var V=R.Symbol&&Symbol.toStringTag,W=new WeakMap,X=Array.from||function(a){return[].slice.call(a)};V&&(Blob.prototype[V]||(Blob.prototype[V]=\"Blob\"),\"File\"in R&&!File.prototype[V]&&(File.prototype[V]=\"File\"));try{new File([],\"\")}catch(a){R.File=function(b,\nd,c){b=new Blob(b,c);c=c&&void 0!==c.lastModified?new Date(c.lastModified):new Date;Object.defineProperties(b,{name:{value:d},lastModifiedDate:{value:c},lastModified:{value:+c},toString:{value:function(){return\"[object File]\"}}});V&&Object.defineProperty(b,V,{value:\"File\"});return b}}p();u();var Y=function(a){W.set(this,Object.create(null));if(!a)return this;var b=this;N(a.elements,function(a){a.name&&!a.disabled&&\"submit\"!==a.type&&\"button\"!==a.type&&(\"file\"===a.type?N(a.files||[],function(c){b.append(a.name,\nc)}):\"select-multiple\"===a.type||\"select-one\"===a.type?N(a.options,function(c){!c.disabled&&c.selected&&b.append(a.name,c.value)}):\"checkbox\"===a.type||\"radio\"===a.type?a.checked&&b.append(a.name,a.value):b.append(a.name,a.value))})};k=Y.prototype;k.append=function(a,b,d){var c=W.get(this);c[a]||(c[a]=[]);c[a].push([b,d])};k[\"delete\"]=function(a){delete W.get(this)[a]};k.entries=function b(){var d=this,c,e,f,g,h,q;return M(b,function(b){switch(b.b){case 1:c=W.get(d),f=new G(c);case 2:var t;a:{for(t=\nf;0': 7, '=': 8, '_v': 9,\n '{': 10, '&': 11, '_t': 12\n };\n\n Hogan.scan = function scan(text, delimiters) {\n var len = text.length,\n IN_TEXT = 0,\n IN_TAG_TYPE = 1,\n IN_TAG = 2,\n state = IN_TEXT,\n tagType = null,\n tag = null,\n buf = '',\n tokens = [],\n seenTag = false,\n i = 0,\n lineStart = 0,\n otag = '{{',\n ctag = '}}';\n\n function addBuf() {\n if (buf.length > 0) {\n tokens.push({tag: '_t', text: new String(buf)});\n buf = '';\n }\n }\n\n function lineIsWhitespace() {\n var isAllWhitespace = true;\n for (var j = lineStart; j < tokens.length; j++) {\n isAllWhitespace =\n (Hogan.tags[tokens[j].tag] < Hogan.tags['_v']) ||\n (tokens[j].tag == '_t' && tokens[j].text.match(rIsWhitespace) === null);\n if (!isAllWhitespace) {\n return false;\n }\n }\n\n return isAllWhitespace;\n }\n\n function filterLine(haveSeenTag, noNewLine) {\n addBuf();\n\n if (haveSeenTag && lineIsWhitespace()) {\n for (var j = lineStart, next; j < tokens.length; j++) {\n if (tokens[j].text) {\n if ((next = tokens[j+1]) && next.tag == '>') {\n // set indent to token value\n next.indent = tokens[j].text.toString()\n }\n tokens.splice(j, 1);\n }\n }\n } else if (!noNewLine) {\n tokens.push({tag:'\\n'});\n }\n\n seenTag = false;\n lineStart = tokens.length;\n }\n\n function changeDelimiters(text, index) {\n var close = '=' + ctag,\n closeIndex = text.indexOf(close, index),\n delimiters = trim(\n text.substring(text.indexOf('=', index) + 1, closeIndex)\n ).split(' ');\n\n otag = delimiters[0];\n ctag = delimiters[delimiters.length - 1];\n\n return closeIndex + close.length - 1;\n }\n\n if (delimiters) {\n delimiters = delimiters.split(' ');\n otag = delimiters[0];\n ctag = delimiters[1];\n }\n\n for (i = 0; i < len; i++) {\n if (state == IN_TEXT) {\n if (tagChange(otag, text, i)) {\n --i;\n addBuf();\n state = IN_TAG_TYPE;\n } else {\n if (text.charAt(i) == '\\n') {\n filterLine(seenTag);\n } else {\n buf += text.charAt(i);\n }\n }\n } else if (state == IN_TAG_TYPE) {\n i += otag.length - 1;\n tag = Hogan.tags[text.charAt(i + 1)];\n tagType = tag ? text.charAt(i + 1) : '_v';\n if (tagType == '=') {\n i = changeDelimiters(text, i);\n state = IN_TEXT;\n } else {\n if (tag) {\n i++;\n }\n state = IN_TAG;\n }\n seenTag = i;\n } else {\n if (tagChange(ctag, text, i)) {\n tokens.push({tag: tagType, n: trim(buf), otag: otag, ctag: ctag,\n i: (tagType == '/') ? seenTag - otag.length : i + ctag.length});\n buf = '';\n i += ctag.length - 1;\n state = IN_TEXT;\n if (tagType == '{') {\n if (ctag == '}}') {\n i++;\n } else {\n cleanTripleStache(tokens[tokens.length - 1]);\n }\n }\n } else {\n buf += text.charAt(i);\n }\n }\n }\n\n filterLine(seenTag, true);\n\n return tokens;\n }\n\n function cleanTripleStache(token) {\n if (token.n.substr(token.n.length - 1) === '}') {\n token.n = token.n.substring(0, token.n.length - 1);\n }\n }\n\n function trim(s) {\n if (s.trim) {\n return s.trim();\n }\n\n return s.replace(/^\\s*|\\s*$/g, '');\n }\n\n function tagChange(tag, text, index) {\n if (text.charAt(index) != tag.charAt(0)) {\n return false;\n }\n\n for (var i = 1, l = tag.length; i < l; i++) {\n if (text.charAt(index + i) != tag.charAt(i)) {\n return false;\n }\n }\n\n return true;\n }\n\n // the tags allowed inside super templates\n var allowedInSuper = {'_t': true, '\\n': true, '$': true, '/': true};\n\n function buildTree(tokens, kind, stack, customTags) {\n var instructions = [],\n opener = null,\n tail = null,\n token = null;\n\n tail = stack[stack.length - 1];\n\n while (tokens.length > 0) {\n token = tokens.shift();\n\n if (tail && tail.tag == '<' && !(token.tag in allowedInSuper)) {\n throw new Error('Illegal content in < super tag.');\n }\n\n if (Hogan.tags[token.tag] <= Hogan.tags['$'] || isOpener(token, customTags)) {\n stack.push(token);\n token.nodes = buildTree(tokens, token.tag, stack, customTags);\n } else if (token.tag == '/') {\n if (stack.length === 0) {\n throw new Error('Closing tag without opener: /' + token.n);\n }\n opener = stack.pop();\n if (token.n != opener.n && !isCloser(token.n, opener.n, customTags)) {\n throw new Error('Nesting error: ' + opener.n + ' vs. ' + token.n);\n }\n opener.end = token.i;\n return instructions;\n } else if (token.tag == '\\n') {\n token.last = (tokens.length == 0) || (tokens[0].tag == '\\n');\n }\n\n instructions.push(token);\n }\n\n if (stack.length > 0) {\n throw new Error('missing closing tag: ' + stack.pop().n);\n }\n\n return instructions;\n }\n\n function isOpener(token, tags) {\n for (var i = 0, l = tags.length; i < l; i++) {\n if (tags[i].o == token.n) {\n token.tag = '#';\n return true;\n }\n }\n }\n\n function isCloser(close, open, tags) {\n for (var i = 0, l = tags.length; i < l; i++) {\n if (tags[i].c == close && tags[i].o == open) {\n return true;\n }\n }\n }\n\n function stringifySubstitutions(obj) {\n var items = [];\n for (var key in obj) {\n items.push('\"' + esc(key) + '\": function(c,p,t,i) {' + obj[key] + '}');\n }\n return \"{ \" + items.join(\",\") + \" }\";\n }\n\n function stringifyPartials(codeObj) {\n var partials = [];\n for (var key in codeObj.partials) {\n partials.push('\"' + esc(key) + '\":{name:\"' + esc(codeObj.partials[key].name) + '\", ' + stringifyPartials(codeObj.partials[key]) + \"}\");\n }\n return \"partials: {\" + partials.join(\",\") + \"}, subs: \" + stringifySubstitutions(codeObj.subs);\n }\n\n Hogan.stringify = function(codeObj, text, options) {\n return \"{code: function (c,p,i) { \" + Hogan.wrapMain(codeObj.code) + \" },\" + stringifyPartials(codeObj) + \"}\";\n }\n\n var serialNo = 0;\n Hogan.generate = function(tree, text, options) {\n serialNo = 0;\n var context = { code: '', subs: {}, partials: {} };\n Hogan.walk(tree, context);\n\n if (options.asString) {\n return this.stringify(context, text, options);\n }\n\n return this.makeTemplate(context, text, options);\n }\n\n Hogan.wrapMain = function(code) {\n return 'var t=this;t.b(i=i||\"\");' + code + 'return t.fl();';\n }\n\n Hogan.template = Hogan.Template;\n\n Hogan.makeTemplate = function(codeObj, text, options) {\n var template = this.makePartials(codeObj);\n template.code = new Function('c', 'p', 'i', this.wrapMain(codeObj.code));\n return new this.template(template, text, this, options);\n }\n\n Hogan.makePartials = function(codeObj) {\n var key, template = {subs: {}, partials: codeObj.partials, name: codeObj.name};\n for (key in template.partials) {\n template.partials[key] = this.makePartials(template.partials[key]);\n }\n for (key in codeObj.subs) {\n template.subs[key] = new Function('c', 'p', 't', 'i', codeObj.subs[key]);\n }\n return template;\n }\n\n function esc(s) {\n return s.replace(rSlash, '\\\\\\\\')\n .replace(rQuot, '\\\\\\\"')\n .replace(rNewline, '\\\\n')\n .replace(rCr, '\\\\r')\n .replace(rLineSep, '\\\\u2028')\n .replace(rParagraphSep, '\\\\u2029');\n }\n\n function chooseMethod(s) {\n return (~s.indexOf('.')) ? 'd' : 'f';\n }\n\n function createPartial(node, context) {\n var prefix = \"<\" + (context.prefix || \"\");\n var sym = prefix + node.n + serialNo++;\n context.partials[sym] = {name: node.n, partials: {}};\n context.code += 't.b(t.rp(\"' + esc(sym) + '\",c,p,\"' + (node.indent || '') + '\"));';\n return sym;\n }\n\n Hogan.codegen = {\n '#': function(node, context) {\n context.code += 'if(t.s(t.' + chooseMethod(node.n) + '(\"' + esc(node.n) + '\",c,p,1),' +\n 'c,p,0,' + node.i + ',' + node.end + ',\"' + node.otag + \" \" + node.ctag + '\")){' +\n 't.rs(c,p,' + 'function(c,p,t){';\n Hogan.walk(node.nodes, context);\n context.code += '});c.pop();}';\n },\n\n '^': function(node, context) {\n context.code += 'if(!t.s(t.' + chooseMethod(node.n) + '(\"' + esc(node.n) + '\",c,p,1),c,p,1,0,0,\"\")){';\n Hogan.walk(node.nodes, context);\n context.code += '};';\n },\n\n '>': createPartial,\n '<': function(node, context) {\n var ctx = {partials: {}, code: '', subs: {}, inPartial: true};\n Hogan.walk(node.nodes, ctx);\n var template = context.partials[createPartial(node, context)];\n template.subs = ctx.subs;\n template.partials = ctx.partials;\n },\n\n '$': function(node, context) {\n var ctx = {subs: {}, code: '', partials: context.partials, prefix: node.n};\n Hogan.walk(node.nodes, ctx);\n context.subs[node.n] = ctx.code;\n if (!context.inPartial) {\n context.code += 't.sub(\"' + esc(node.n) + '\",c,p,i);';\n }\n },\n\n '\\n': function(node, context) {\n context.code += write('\"\\\\n\"' + (node.last ? '' : ' + i'));\n },\n\n '_v': function(node, context) {\n context.code += 't.b(t.v(t.' + chooseMethod(node.n) + '(\"' + esc(node.n) + '\",c,p,0)));';\n },\n\n '_t': function(node, context) {\n context.code += write('\"' + esc(node.text) + '\"');\n },\n\n '{': tripleStache,\n\n '&': tripleStache\n }\n\n function tripleStache(node, context) {\n context.code += 't.b(t.t(t.' + chooseMethod(node.n) + '(\"' + esc(node.n) + '\",c,p,0)));';\n }\n\n function write(s) {\n return 't.b(' + s + ');';\n }\n\n Hogan.walk = function(nodelist, context) {\n var func;\n for (var i = 0, l = nodelist.length; i < l; i++) {\n func = Hogan.codegen[nodelist[i].tag];\n func && func(nodelist[i], context);\n }\n return context;\n }\n\n Hogan.parse = function(tokens, text, options) {\n options = options || {};\n return buildTree(tokens, '', [], options.sectionTags || []);\n }\n\n Hogan.cache = {};\n\n Hogan.cacheKey = function(text, options) {\n return [text, !!options.asString, !!options.disableLambda, options.delimiters, !!options.modelGet].join('||');\n }\n\n Hogan.compile = function(text, options) {\n options = options || {};\n var key = Hogan.cacheKey(text, options);\n var template = this.cache[key];\n\n if (template) {\n var partials = template.partials;\n for (var name in partials) {\n delete partials[name].instance;\n }\n return template;\n }\n\n template = this.generate(this.parse(this.scan(text, options.delimiters), text, options), text, options);\n return this.cache[key] = template;\n }\n})(typeof exports !== 'undefined' ? exports : Hogan);\n","/*\n * Copyright 2011 Twitter, Inc.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// This file is for use with Node.js. See dist/ for browser files.\n\nvar Hogan = require('./compiler');\nHogan.Template = require('./template').Template;\nHogan.template = Hogan.Template;\nmodule.exports = Hogan;\n","/*\n * Copyright 2011 Twitter, Inc.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar Hogan = {};\n\n(function (Hogan) {\n Hogan.Template = function (codeObj, text, compiler, options) {\n codeObj = codeObj || {};\n this.r = codeObj.code || this.r;\n this.c = compiler;\n this.options = options || {};\n this.text = text || '';\n this.partials = codeObj.partials || {};\n this.subs = codeObj.subs || {};\n this.buf = '';\n }\n\n Hogan.Template.prototype = {\n // render: replaced by generated code.\n r: function (context, partials, indent) { return ''; },\n\n // variable escaping\n v: hoganEscape,\n\n // triple stache\n t: coerceToString,\n\n render: function render(context, partials, indent) {\n return this.ri([context], partials || {}, indent);\n },\n\n // render internal -- a hook for overrides that catches partials too\n ri: function (context, partials, indent) {\n return this.r(context, partials, indent);\n },\n\n // ensurePartial\n ep: function(symbol, partials) {\n var partial = this.partials[symbol];\n\n // check to see that if we've instantiated this partial before\n var template = partials[partial.name];\n if (partial.instance && partial.base == template) {\n return partial.instance;\n }\n\n if (typeof template == 'string') {\n if (!this.c) {\n throw new Error(\"No compiler available.\");\n }\n template = this.c.compile(template, this.options);\n }\n\n if (!template) {\n return null;\n }\n\n // We use this to check whether the partials dictionary has changed\n this.partials[symbol].base = template;\n\n if (partial.subs) {\n // Make sure we consider parent template now\n if (!partials.stackText) partials.stackText = {};\n for (key in partial.subs) {\n if (!partials.stackText[key]) {\n partials.stackText[key] = (this.activeSub !== undefined && partials.stackText[this.activeSub]) ? partials.stackText[this.activeSub] : this.text;\n }\n }\n template = createSpecializedPartial(template, partial.subs, partial.partials,\n this.stackSubs, this.stackPartials, partials.stackText);\n }\n this.partials[symbol].instance = template;\n\n return template;\n },\n\n // tries to find a partial in the current scope and render it\n rp: function(symbol, context, partials, indent) {\n var partial = this.ep(symbol, partials);\n if (!partial) {\n return '';\n }\n\n return partial.ri(context, partials, indent);\n },\n\n // render a section\n rs: function(context, partials, section) {\n var tail = context[context.length - 1];\n\n if (!isArray(tail)) {\n section(context, partials, this);\n return;\n }\n\n for (var i = 0; i < tail.length; i++) {\n context.push(tail[i]);\n section(context, partials, this);\n context.pop();\n }\n },\n\n // maybe start a section\n s: function(val, ctx, partials, inverted, start, end, tags) {\n var pass;\n\n if (isArray(val) && val.length === 0) {\n return false;\n }\n\n if (typeof val == 'function') {\n val = this.ms(val, ctx, partials, inverted, start, end, tags);\n }\n\n pass = !!val;\n\n if (!inverted && pass && ctx) {\n ctx.push((typeof val == 'object') ? val : ctx[ctx.length - 1]);\n }\n\n return pass;\n },\n\n // find values with dotted names\n d: function(key, ctx, partials, returnFound) {\n var found,\n names = key.split('.'),\n val = this.f(names[0], ctx, partials, returnFound),\n doModelGet = this.options.modelGet,\n cx = null;\n\n if (key === '.' && isArray(ctx[ctx.length - 2])) {\n val = ctx[ctx.length - 1];\n } else {\n for (var i = 1; i < names.length; i++) {\n found = findInScope(names[i], val, doModelGet);\n if (found !== undefined) {\n cx = val;\n val = found;\n } else {\n val = '';\n }\n }\n }\n\n if (returnFound && !val) {\n return false;\n }\n\n if (!returnFound && typeof val == 'function') {\n ctx.push(cx);\n val = this.mv(val, ctx, partials);\n ctx.pop();\n }\n\n return val;\n },\n\n // find values with normal names\n f: function(key, ctx, partials, returnFound) {\n var val = false,\n v = null,\n found = false,\n doModelGet = this.options.modelGet;\n\n for (var i = ctx.length - 1; i >= 0; i--) {\n v = ctx[i];\n val = findInScope(key, v, doModelGet);\n if (val !== undefined) {\n found = true;\n break;\n }\n }\n\n if (!found) {\n return (returnFound) ? false : \"\";\n }\n\n if (!returnFound && typeof val == 'function') {\n val = this.mv(val, ctx, partials);\n }\n\n return val;\n },\n\n // higher order templates\n ls: function(func, cx, partials, text, tags) {\n var oldTags = this.options.delimiters;\n\n this.options.delimiters = tags;\n this.b(this.ct(coerceToString(func.call(cx, text)), cx, partials));\n this.options.delimiters = oldTags;\n\n return false;\n },\n\n // compile text\n ct: function(text, cx, partials) {\n if (this.options.disableLambda) {\n throw new Error('Lambda features disabled.');\n }\n return this.c.compile(text, this.options).render(cx, partials);\n },\n\n // template result buffering\n b: function(s) { this.buf += s; },\n\n fl: function() { var r = this.buf; this.buf = ''; return r; },\n\n // method replace section\n ms: function(func, ctx, partials, inverted, start, end, tags) {\n var textSource,\n cx = ctx[ctx.length - 1],\n result = func.call(cx);\n\n if (typeof result == 'function') {\n if (inverted) {\n return true;\n } else {\n textSource = (this.activeSub && this.subsText && this.subsText[this.activeSub]) ? this.subsText[this.activeSub] : this.text;\n return this.ls(result, cx, partials, textSource.substring(start, end), tags);\n }\n }\n\n return result;\n },\n\n // method replace variable\n mv: function(func, ctx, partials) {\n var cx = ctx[ctx.length - 1];\n var result = func.call(cx);\n\n if (typeof result == 'function') {\n return this.ct(coerceToString(result.call(cx)), cx, partials);\n }\n\n return result;\n },\n\n sub: function(name, context, partials, indent) {\n var f = this.subs[name];\n if (f) {\n this.activeSub = name;\n f(context, partials, this, indent);\n this.activeSub = false;\n }\n }\n\n };\n\n //Find a key in an object\n function findInScope(key, scope, doModelGet) {\n var val;\n\n if (scope && typeof scope == 'object') {\n\n if (scope[key] !== undefined) {\n val = scope[key];\n\n // try lookup with get for backbone or similar model data\n } else if (doModelGet && scope.get && typeof scope.get == 'function') {\n val = scope.get(key);\n }\n }\n\n return val;\n }\n\n function createSpecializedPartial(instance, subs, partials, stackSubs, stackPartials, stackText) {\n function PartialTemplate() {};\n PartialTemplate.prototype = instance;\n function Substitutions() {};\n Substitutions.prototype = instance.subs;\n var key;\n var partial = new PartialTemplate();\n partial.subs = new Substitutions();\n partial.subsText = {}; //hehe. substext.\n partial.buf = '';\n\n stackSubs = stackSubs || {};\n partial.stackSubs = stackSubs;\n partial.subsText = stackText;\n for (key in subs) {\n if (!stackSubs[key]) stackSubs[key] = subs[key];\n }\n for (key in stackSubs) {\n partial.subs[key] = stackSubs[key];\n }\n\n stackPartials = stackPartials || {};\n partial.stackPartials = stackPartials;\n for (key in partials) {\n if (!stackPartials[key]) stackPartials[key] = partials[key];\n }\n for (key in stackPartials) {\n partial.partials[key] = stackPartials[key];\n }\n\n return partial;\n }\n\n var rAmp = /&/g,\n rLt = //g,\n rApos = /\\'/g,\n rQuot = /\\\"/g,\n hChars = /[&<>\\\"\\']/;\n\n function coerceToString(val) {\n return String((val === null || val === undefined) ? '' : val);\n }\n\n function hoganEscape(str) {\n str = coerceToString(str);\n return hChars.test(str) ?\n str\n .replace(rAmp, '&')\n .replace(rLt, '<')\n .replace(rGt, '>')\n .replace(rApos, ''')\n .replace(rQuot, '"') :\n str;\n }\n\n var isArray = Array.isArray || function(a) {\n return Object.prototype.toString.call(a) === '[object Array]';\n };\n\n})(typeof exports !== 'undefined' ? exports : Hogan);\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","/*!\n * jQuery JavaScript Library v3.3.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2018-01-20T17:24Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar document = window.document;\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar concat = arr.concat;\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n // Support: Chrome <=57, Firefox <=52\n // In some browsers, typeof returns \"function\" for HTML elements\n // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n // We don't want to classify *any* DOM node as a function.\n return typeof obj === \"function\" && typeof obj.nodeType !== \"number\";\n };\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, doc, node ) {\n\t\tdoc = doc || document;\n\n\t\tvar i,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\t\t\t\tif ( node[ i ] ) {\n\t\t\t\t\tscript[ i ] = node[ i ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.3.1\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android <=4.0 only\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && Array.isArray( src ) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject( src ) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\n\t\t/* eslint-disable no-unused-vars */\n\t\t// See https://github.com/eslint/eslint/issues/6125\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a global context\n\tglobalEval: function( code ) {\n\t\tDOMEval( code );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android <=4.0 only\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.3\n * https://sizzlejs.com/\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2016-08-08\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\0-\\\\xa0])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tdisabledAncestor = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && (\"form\" in elem || \"label\" in elem);\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\t\tsetDocument( context );\n\t\t}\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( (m = match[1]) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( (elem = context.getElementById( m )) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && (elem = newContext.getElementById( m )) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[2] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!compilerCache[ selector + \" \" ] &&\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\n\t\t\t\tif ( nodeType !== 1 ) {\n\t\t\t\t\tnewContext = context;\n\t\t\t\t\tnewSelector = selector;\n\n\t\t\t\t// qSA looks outside Element context, which is not what we want\n\t\t\t\t// Thanks to Andrew Dupont for this workaround technique\n\t\t\t\t// Support: IE <=8\n\t\t\t\t// Exclude object elements\n\t\t\t\t} else if ( context.nodeName.toLowerCase() !== \"object\" ) {\n\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\n\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = \"#\" + nid + \" \" + toSelector( groups[i] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\t\t\t\t}\n\n\t\t\t\tif ( newSelector ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement(\"fieldset\");\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tdisabledAncestor( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9-11, Edge\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\tif ( preferredDoc !== document &&\n\t\t(subWindow = document.defaultView) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( el ) {\n\t\tel.appendChild( document.createComment(\"\") );\n\t\treturn !el.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t});\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( (elem = elems[i++]) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( el ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( el ) {\n\t\t\tel.innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll(\":enabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll(\":disabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( el ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === document ? -1 :\n\t\t\t\tb === document ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!compilerCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn (sel + \"\").replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( (oldCache = uniqueCache[ key ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context === document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\tif ( !context && elem.ownerDocument !== document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( el ) {\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement(\"fieldset\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( el ) {\n\tel.innerHTML = \"\";\n\treturn el.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( el ) {\n\tel.innerHTML = \"\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( el ) {\n\treturn el.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n};\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n if ( nodeName( elem, \"iframe\" ) ) {\n return elem.contentDocument;\n }\n\n // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n // Treat the template element as a regular one in browsers that\n // don't support it.\n if ( nodeName( elem, \"template\" ) ) {\n elem = elem.content || elem;\n }\n\n return jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the master Deferred\n\t\t\tmaster = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tmaster.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( master.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn master.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), master.reject );\n\t\t}\n\n\t\treturn master.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\tvalue :\n\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tjQuery.contains( elem.ownerDocument, elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\nvar swap = function( elem, options, callback, args ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.apply( elem, args || [] );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = ( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]+)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// Support: IE <=9 only\n\toption: [ 1, \"\" ],\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"
\" ],\n\tcol: [ 2, \"\", \"
\" ],\n\ttr: [ 2, \"\", \"
\" ],\n\ttd: [ 3, \"\", \"
\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\n// Support: IE <=9 only\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, contains, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( contains ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n} )();\nvar documentElement = document.documentElement;\n\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 only\n// See #13393 for more info\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tvar event = jQuery.event.fix( nativeEvent );\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\t\t\thandlers = ( dataPriv.get( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// Triggered event must either 1) have no namespace, or 2) have namespace(s)\n\t\t\t\t// a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tfocus: {\n\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\tthis.focus();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\t\tclick: {\n\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this.type === \"checkbox\" && this.click && nodeName( this, \"input\" ) ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn nodeName( event.target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\n\twhich: function( event ) {\n\t\tvar button = event.button;\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && rkeyEvent.test( event.type ) ) {\n\t\t\treturn event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\tif ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {\n\t\t\tif ( button & 1 ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tif ( button & 2 ) {\n\t\t\t\treturn 3;\n\t\t\t}\n\n\t\t\tif ( button & 4 ) {\n\t\t\t\treturn 2;\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn event.which;\n\t}\n}, jQuery.event.addProp );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t/* eslint-disable max-len */\n\n\t// See https://github.com/eslint/eslint/issues/3229\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,\n\n\t/* eslint-enable */\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.access( src );\n\t\tpdataCur = dataPriv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.events = {};\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = concat.apply( [], args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), doc, node );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && jQuery.contains( node.ownerDocument, node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html.replace( rxhtmlTag, \"<$1>\" );\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = div.offsetWidth === 36 || \"absolute\";\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t},\n\n\tcssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style;\n\n// Return a css property mapped to a potentially vendor prefixed property\nfunction vendorPropName( name ) {\n\n\t// Shortcut for names that are not vendor prefixed\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a property mapped along what jQuery.cssProps suggests or to\n// a vendor prefixed property.\nfunction finalPropName( name ) {\n\tvar ret = jQuery.cssProps[ name ];\n\tif ( !ret ) {\n\t\tret = jQuery.cssProps[ name ] = vendorPropName( name ) || name;\n\t}\n\treturn ret;\n}\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\t\t) );\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\t\tval = curCSS( elem, dimension, styles ),\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox;\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\t// Check for style in case a browser which returns unreliable values\n\t// for getComputedStyle silently falls back to the reliable elem.style\n\tvalueIsBorderBox = valueIsBorderBox &&\n\t\t( support.boxSizingReliable() || val === elem.style[ dimension ] );\n\n\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t// This happens for inline elements with no explicit setting (gh-3571)\n\t// Support: Android <=4.1 - 4.3 only\n\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\tif ( val === \"auto\" ||\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) {\n\n\t\tval = elem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ];\n\n\t\t// offsetWidth/offsetHeight provide border-box values\n\t\tvalueIsBorderBox = true;\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\tif ( type === \"number\" ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t\t} ) :\n\t\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\t\t\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra && boxModelAdjustment(\n\t\t\t\t\telem,\n\t\t\t\t\tdimension,\n\t\t\t\t\textra,\n\t\t\t\t\tisBorderBox,\n\t\t\t\t\tstyles\n\t\t\t\t);\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && support.scrollboxSize() === styles.position ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 &&\n\t\t\t\t( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null ||\n\t\t\t\t\tjQuery.cssHooks[ tween.prop ] ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || {} )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = Date.now();\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {\n\t\txml = undefined;\n\t}\n\n\tif ( !xml || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\tjQuery.error( \"Invalid XML: \" + data );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} )\n\t\t.filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} )\n\t\t.map( function( i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\toriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce++ ) + uncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\n\njQuery._evalUrl = function( url ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\t\t\"throws\": true\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"