{"version":3,"sources":["webpack:///./node_modules/@tarekraafat/autocomplete.js/dist/autoComplete.min.js","webpack:///./node_modules/@atypon/ui-bundle-generator/.generated/groups/_search.js","webpack:///./node_modules/ui-core/components/facet/js/toggle.js","webpack:///./node_modules/ui-core/components/facet-date/js/facet-date.js","webpack:///./node_modules/ui-core/components/facet-date-chart/js/facet-date-chart.js","webpack:///./node_modules/ui-core/components/refine-search/js/refine-search.js","webpack:///./node_modules/ui-core/widgets/search-result/js/search-result.js","webpack:///./node_modules/ui-core/widgets/advanced-search/js/tabular.ts","webpack:///./node_modules/ui-core/widgets/advanced-search/js/range-fields.ts","webpack:///./node_modules/ui-core/plugins/autocomplete/tags.ts","webpack:///./node_modules/ui-core/widgets/advanced-search/js/autocomplete.ts","webpack:///./node_modules/ui-core/widgets/advanced-search/js/advanced-search.ts"],"names":["t","e","n","Object","keys","getOwnPropertySymbols","r","filter","getOwnPropertyDescriptor","enumerable","push","apply","arguments","length","i","forEach","getOwnPropertyDescriptors","defineProperties","defineProperty","Symbol","_typeof","iterator","constructor","prototype","value","configurable","writable","Array","isArray","s","from","o","TypeError","toString","call","slice","name","test","u","document","querySelector","a","createElement","append","insertAdjacentElement","parentNode","insertBefore","getAttribute","focus","setAttribute","c","String","toLowerCase","normalize","replace","l","innerHTML","class","outerHTML","f","input","dispatchEvent","CustomEvent","bubbles","detail","feedback","cancelable","p","mode","diacritics","highlight","map","join","d","indexOf","substring","Promise","data","cache","store","src","then","h","searchEngine","resultItem","match","key","done","next","resultsList","maxResults","query","matches","results","m","b","y","v","selection","index","g","isOpen","wrapper","list","removeAttribute","w","O","getElementsByTagName","tag","selected","split","cursor","classList","remove","add","id","scrollTop","offsetTop","clientHeight","A","k","L","event","j","this","HTMLInputElement","HTMLTextAreaElement","trigger","threshold","Error","noResults","DocumentFragment","concat","role","inside","element","S","E","placeHolder","placeholder","around","dest","destination","position","hidden","T","events","debounce","clearTimeout","setTimeout","keydown","keyCode","preventDefault","submit","tabSelect","blur","mousedown","click","toUpperCase","querySelectorAll","target","closest","nodeName","addEventListener","x","init","start","unInit","removeChild","removeEventListener","open","close","goTo","previous","select","search","options","instances","selector","exports","module","define","main","UX","$toggle","getElementsByClassName","$facetDate","$facetDateChart","$refine","$advancedSearch","$searchResult","toggle","err","console","error","facetDate","facetDateChart","refine","advancedSearch","AdvancedSearch","initialize","searchResult","$body","$","lessLabel","moreLabel","setLabels","on","build","control","additionalControls","find","off","toggleFacet","$filters","each","$target","$lis","children","$options","lisNum","optionsNum","shownItems","val","isToggle","moreCount","attr","after","get","showMore","elem","slideToggle","toggleClass","hasClass","html","firstElementChild","count","sliderRanges","sliderValues","$rangeStart","$rangeEnd","url","location","href","initRange","window","jcf","destroy","change","setRange","setStart","setEnd","updateUrl","sliderRange","queryString","queryStringObj","keyVal","AfterYear","BeforeYear","parseInt","end","closestStart","closestEnd","reduce","prev","curr","Math","abs","$sliderRange","frequencies","nonLinearSliderSteps","allowedTotalYears","cur","minVal","maxVal","totalYears","linearSlider","displaySteps","reverse","remaining","startYear","startSlice","step","all","oneThird","floor","twoThirds","remainder","stop","displayStep","slideStep","freq","range","sliderVal","initialValue","getSelectedRange","initialPosition","getSelectedRangePosition","$rangeWrapper","$rangeFrequencies","$rangeSlice","prepend","rangeSliceWidth","tmp2","getValue","thisVal","getValueFromInput","sliderInstance","getInstance","values","refresh","rangeUpdate","callbackFn","URL","searchParams","set","removeParam","baseUrl","thisValIndex","customVal","widget","ui","slider","chart","_refreshValue","lastValPercent","valPercent","valueMin","valueMax","oRange","oChart","that","animate","_animateOff","_set","_hasMultipleValues","handles","_valueMin","_valueMax","orientation","left","width","queue","duration","bottom","height","handle","$element","rangeStartVal","rangeEndVal","yearWeights","queryID","amplifierRatio","endYear","setOptions","self","dataItems","items","bins","numberOfBins","fill","rangePerBin","increment","chartName","sliderName","wrapHtml","heightRatio","calculateHeightRatio","widthPerBin","binRange","getBinRange","inRangeClass","outRangeClass","optimalRange","toolTipHtml","showTooltips","scaledValue","convertToHeight","binHtml","min","max","selectedRange","slide","update","create","first","addClass","setHeight","sliderMin","leftValue","rightValue","$minLabelHandler","$maxLabelHandler","bin","setOpacity","setLabelHandlersPosition","minOuterRight","offset","outerWidth","rangeLabelsPosition","marginValue","css","chartHeight","maxValue","$targets","$showController","$hideController","$elements","ctrls","$wrapper","isMobile","vPort","escape","hide","viewPortListener","toggleSearchBlock","$this","clone","show","is","has","which","tabs","ctrl","tab","destroyAll","appendTo","siblings","removeClass","removeAttr","setPopupAttr","isTrue","undefined","rememberUserLayout","$savedSearchPanel","frequencyLabels","maxSearchQueries","goLink","removeLink","additionalInit","additionalControl","userPublicationLayout","openSaveSearchDialog","onSaveSearchSubmitHandler","localStorage","setItem","allFieldInput","currentTarget","setSelectionRange","text","RegExp","exec","render","row","item","$row","eq","columns","actions","parent","qName","qSavedOn","qLastRun","additionalColumns","frequencyColumn","_ref","frequency","qAlertStatus","_ref2","qId","openDialog","getCookie","saveSearchButton","cookie","nameEQ","ca","charAt","ajax","type","serialize","success","saveSearchSuccessHandler","modal","redrawSavedSearchesPanel","JSON","parse","favQueries","jsonData","_this","keywordField","typeField","searchInFields","searchInFieldWrapper","_searchInField","searchInField","currentAddButton","getAddButton","currentRemoveButton","getRemoveButton","domUtils","getElement","selectors","getElements","onChanged","searchTermsAligner","searchTermRows","searchTerm","contextSearchLabel","previousElementSibling","TermSearchLabel","removeBtn","dropdown","elements","addEventListeners","toggleButtons","setSearchInFieldsEvents","elm","bind","onKeyDownAdd","onKeyDownRemove","ENTER","stopPropagation","div","clonedInput","clonedSelectInput","fieldWrapper","selectFieldWrapper","focusedSearchTerm","focusedSearchActionBtn","searchTermWrapper","searchTerms","filteredTermRows","targetElement","changeFieldAttributes","labels","number","fieldNames","label","includes","AdvancedSearchTabular","Elements","ClassList","Texts","HTMLElement","rangeField","customRange","customRangeRadio","radios","selects","timeRangeAlert","_oldRadio","disabledAllFields","enableSiblingFields","radio","onChange","oldRadio","shouldDisable","fromYear","fromMonth","toYear","toMonth","hasOwnProperty","customRangeSelected","checked","hasNaNValues","some","isNaN","endDateBeforeStartDate","isDisabled","alertText","isNaNCombinedDate","AdvancedSearchRangeFields","config","inputField","badgeCloseIcon","tagsPosition","preselectedItems","tagValues","onTagRemoved","tagClasses","checkSetPreselected","valueExists","findIndex","createTagValue","buildInput","mainInput","inputNode","fragment","firstChild","getValues","removeAllTags","buildTag","appendChild","parentElement","inputStored","tagStored","autocompleteList","autocompleteItem","autoComplete","autoCompleteWrapper","filters","stateChanged","placeHolders","Map","autoCompletes","_configs","configs","maxWords","maxChars","method","valueField","autoSelect","allowFreeEntries","displayField","cls","elementRenderer","className","innerText","initAutoComplete","autocompleteAnnouncer","announcerContainer","autocompleteLists","observer","MutationObserver","mutationsList","mutation","observe","childList","urlWithQuery","term","trim","dataset","autoCompleteTarget","autoCompleteWithin","encodeURIComponent","buildConfigs","fetch","json","idName","sort","itemPreselectedValues","createAutoCompleteInstance","record","onSearchEngine","autoCompleteInstance","onAutoCompleteFocus","onTagValuesChange","onBlur","onSelection","onResults","field","scrollHeight","style","autocomplete","relatedTarget","pop","toggleClasses","AdvancedSearchAutoComplete","Function","searchInInputs","submitButton","autoCompleteFields","advancedFiltersRadioInputs","initTabular","setSubmitButtonState","setResetButtonListener","selectAdvancedFiltersRadioInput","tabularListener","rangeFieldListener","browserUtils","isIE","autoCompleteListener","state","hasEmptyFields","hasEmptySuggestions","radioInputs","textInputs","suggestions","suggestion","selectedIndex"],"mappings":"sFAAMA,E,OAASA,EAAE,SAAFA,IAAa,aAAa,SAASC,EAAEA,EAAED,GAAG,IAAIE,EAAEC,OAAOC,KAAKH,GAAG,GAAGE,OAAOE,sBAAsB,CAAC,IAAIC,EAAEH,OAAOE,sBAAsBJ,GAAGD,IAAIM,EAAEA,EAAEC,QAAQ,SAASP,GAAG,OAAOG,OAAOK,yBAAyBP,EAAED,GAAGS,eAAeP,EAAEQ,KAAKC,MAAMT,EAAEI,GAAG,OAAOJ,EAAE,SAASF,EAAEA,GAAG,IAAI,IAAIE,EAAE,EAAEA,EAAEU,UAAUC,OAAOX,IAAI,CAAC,IAAIY,EAAE,MAAMF,UAAUV,GAAGU,UAAUV,GAAG,GAAGA,EAAE,EAAED,EAAEE,OAAOW,IAAG,GAAIC,SAAS,SAASd,GAAGK,EAAEN,EAAEC,EAAEa,EAAEb,OAAOE,OAAOa,0BAA0Bb,OAAOc,iBAAiBjB,EAAEG,OAAOa,0BAA0BF,IAAIb,EAAEE,OAAOW,IAAIC,SAAS,SAASd,GAAGE,OAAOe,eAAelB,EAAEC,EAAEE,OAAOK,yBAAyBM,EAAEb,OAAO,OAAOD,EAAE,SAASE,EAAED,GAAG,OAAOC,EAAE,mBAAmBiB,QAAQ,UAAQC,EAASD,OAAOE,UAAS,SAASpB,GAAG,OAAAmB,EAAcnB,IAAG,SAASA,GAAG,OAAOA,GAAG,mBAAmBkB,QAAQlB,EAAEqB,cAAcH,QAAQlB,IAAIkB,OAAOI,UAAU,SAAQH,EAAQnB,KAAKA,GAAG,SAASK,EAAEL,EAAED,EAAEE,GAAG,OAAOF,KAAKC,EAAEE,OAAOe,eAAejB,EAAED,EAAE,CAACwB,MAAMtB,EAAEO,YAAW,EAAGgB,cAAa,EAAGC,UAAS,IAAKzB,EAAED,GAAGE,EAAED,EAAE,SAASa,EAAEb,GAAG,OAAO,SAASA,GAAG,GAAG0B,MAAMC,QAAQ3B,GAAG,OAAO4B,EAAE5B,GAAzC,CAA6CA,IAAI,SAASA,GAAG,GAAG,oBAAoBkB,QAAQ,MAAMlB,EAAEkB,OAAOE,WAAW,MAAMpB,EAAE,cAAc,OAAO0B,MAAMG,KAAK7B,GAA7G,CAAiHA,IAAI8B,EAAE9B,IAAI,WAAW,MAAM,IAAI+B,UAAU,wIAA/B,GAA0K,SAASD,EAAE9B,EAAED,GAAG,GAAGC,EAAE,CAAC,GAAG,iBAAiBA,EAAE,OAAO4B,EAAE5B,EAAED,GAAG,IAAIE,EAAEC,OAAOoB,UAAUU,SAASC,KAAKjC,GAAGkC,MAAM,GAAG,GAAG,MAAM,WAAWjC,GAAGD,EAAEqB,cAAcpB,EAAED,EAAEqB,YAAYc,MAAM,QAAQlC,GAAG,QAAQA,EAAEyB,MAAMG,KAAK7B,GAAG,cAAcC,GAAG,2CAA2CmC,KAAKnC,GAAG2B,EAAE5B,EAAED,QAAG,GAAQ,SAAS6B,EAAE5B,EAAED,IAAI,MAAMA,GAAGA,EAAEC,EAAEY,UAAUb,EAAEC,EAAEY,QAAQ,IAAI,IAAIX,EAAE,EAAEI,EAAE,IAAIqB,MAAM3B,GAAGE,EAAEF,EAAEE,IAAII,EAAEJ,GAAGD,EAAEC,GAAG,OAAOI,EAAE,IAAIgC,EAAE,SAAFA,EAAWrC,GAAG,MAAM,iBAAiBA,EAAEsC,SAASC,cAAcvC,GAAGA,KAAKwC,EAAE,SAAFA,EAAWxC,EAAED,GAAG,IAAIE,EAAE,iBAAiBD,EAAEsC,SAASG,cAAczC,GAAGA,EAAE,IAAI,IAAIK,KAAKN,EAAE,CAAC,IAAIc,EAAEd,EAAEM,GAAG,GAAG,WAAWA,EAAEQ,EAAE6B,OAAOzC,QAAQ,GAAG,SAASI,EAAEgC,EAAExB,EAAE,IAAI8B,sBAAsB9B,EAAE,GAAGZ,QAAQ,GAAG,WAAWI,EAAE,CAAC,IAAIyB,EAAEjB,EAAEiB,EAAEc,WAAWC,aAAa5C,EAAE6B,GAAG7B,EAAEyC,OAAOZ,GAAG,MAAMA,EAAEgB,aAAa,cAAchB,EAAEiB,aAAa1C,KAAKJ,EAAEA,EAAEI,GAAGQ,EAAEZ,EAAE+C,aAAa3C,EAAEQ,GAAG,OAAOZ,GAAGgD,EAAE,SAAFA,EAAWjD,EAAED,GAAG,OAAOC,EAAEkD,OAAOlD,GAAGmD,cAAcpD,EAAEC,EAAEoD,UAAU,OAAOC,QAAQ,mBAAmB,IAAID,UAAU,OAAOpD,GAAGsD,EAAE,SAAFA,EAAWtD,EAAEC,GAAG,OAAOuC,EAAE,OAAOzC,EAAE,CAACwD,UAAUvD,GAAG,iBAAiBC,GAAG,CAACuD,MAAMvD,KAAKwD,WAAWC,EAAE,SAAFA,EAAW1D,EAAED,GAAGA,EAAE4D,MAAMC,cAAc,IAAIC,YAAY7D,EAAE,CAAC8D,SAAQ,EAAGC,OAAOhE,EAAEiE,SAASC,YAAW,MAAOC,EAAE,SAAFA,EAAWlE,EAAED,EAAEE,GAAG,IAAII,EAAEJ,GAAG,GAAGY,EAAER,EAAE8D,KAAKrC,EAAEzB,EAAE+D,WAAWxC,EAAEvB,EAAEgE,UAAUhC,EAAEY,EAAElD,EAAE+B,GAAG,GAAG/B,EAAEmD,OAAOnD,GAAGC,EAAEiD,EAAEjD,EAAE8B,GAAG,UAAUjB,EAAE,CAAC,IAAI2B,GAAGxC,EAAEA,EAAEqD,QAAQ,KAAK,KAAKzC,OAAO8C,EAAE,EAAEQ,EAAExC,MAAMG,KAAK9B,GAAGuE,KAAK,SAASvE,EAAEE,GAAG,OAAOyD,EAAElB,GAAGH,EAAEpC,KAAKD,EAAE0D,KAAK3D,EAAE6B,EAAE0B,EAAEvD,EAAE6B,GAAG7B,EAAE2D,KAAK3D,KAAKwE,KAAK,IAAI,GAAGb,IAAIlB,EAAE,OAAO0B,MAAM,CAAC,IAAIM,EAAEnC,EAAEoC,QAAQzE,GAAG,IAAIwE,EAAE,OAAOxE,EAAED,EAAE2E,UAAUF,EAAEA,EAAExE,EAAEY,QAAUgB,EAAE7B,EAAEsD,QAAQrD,EAAEsD,EAAEtD,EAAE4B,IAAI7B,IAAIyE,EAAE,SAAFA,EAAWxE,EAAED,GAAG,OAAO,IAAI4E,SAAS,SAAS1E,EAAEI,GAAG,IAAIQ,EAAE,OAAOA,EAAEb,EAAE4E,MAAMC,OAAOhE,EAAEiE,MAAM7E,IAAI,IAAI0E,SAAS,SAAS3E,EAAEC,GAAG,MAAM,mBAAmBY,EAAEkE,IAAIlE,EAAEkE,IAAIhF,GAAGiF,KAAKhF,EAAEC,GAAGD,EAAEa,EAAEkE,QAAQC,MAAM,SAASjF,GAAG,IAAI,OAAOC,EAAEgE,SAASnD,EAAEiE,MAAM/E,EAAE2D,EAAE,WAAW1D,GAAGC,IAAI,MAAMD,GAAG,OAAOK,EAAEL,MAAMK,OAAO4E,EAAE,SAAFA,EAAWjF,EAAED,GAAG,IAAIE,EAAEF,EAAE6E,KAAKvE,EAAEN,EAAEmF,aAAarE,EAAE,GAAGZ,EAAE6E,MAAMhE,SAAS,SAASc,EAAES,GAAG,IAAIG,EAAE,SAAFA,EAAWvC,GAAG,IAAI6B,EAAE7B,EAAE2B,EAAE3B,GAAG2B,EAAES,EAAE,mBAAmBhC,EAAEA,EAAEL,EAAE8B,GAAGoC,EAAElE,EAAE8B,EAAE,CAACqC,KAAK9D,EAAE+D,WAAWrE,EAAEqE,WAAWC,UAAUtE,EAAEoF,WAAWd,YAAY,GAAGhC,EAAE,CAAC,IAAIG,EAAE,CAAC4C,MAAM/C,EAAEd,MAAMK,GAAG3B,IAAIuC,EAAE6C,IAAIpF,GAAGY,EAAEJ,KAAK+B,KAAK,GAAGvC,EAAEE,KAAK,CAAC,IAAI8C,EAAEK,EAAE,SAAStD,EAAED,GAAG,IAAIE,EAAE,oBAAoBiB,QAAQlB,EAAEkB,OAAOE,WAAWpB,EAAE,cAAc,IAAIC,EAAE,CAAC,GAAGyB,MAAMC,QAAQ3B,KAAKC,EAAE6B,EAAE9B,IAAqC,CAACC,IAAID,EAAEC,GAAG,IAAII,EAAE,EAAEQ,EAAE,SAAFA,MAAe,MAAM,CAACe,EAAEf,EAAEZ,EAAE,SAAFA,IAAa,OAAOI,GAAGL,EAAEY,OAAO,CAAC0E,MAAK,GAAI,CAACA,MAAK,EAAG/D,MAAMvB,EAAEK,OAAOL,EAAE,SAAFA,EAAWA,GAAG,MAAMA,GAAG0D,EAAE7C,GAAG,MAAM,IAAIkB,UAAU,yIAAyI,IAAIH,EAAES,GAAE,EAAGG,GAAE,EAAG,MAAM,CAACZ,EAAE,SAAFA,IAAa3B,EAAEA,EAAEgC,KAAKjC,IAAIC,EAAE,SAAFA,IAAa,IAAID,EAAEC,EAAEsF,OAAO,OAAOlD,EAAErC,EAAEsF,KAAKtF,GAAGA,EAAE,SAAFA,EAAWA,GAAGwC,GAAE,EAAGZ,EAAE5B,GAAG0D,EAAE,SAAFA,IAAa,IAAIrB,GAAG,MAAMpC,EAAC,QAASA,EAAC,SAAU,QAAQ,GAAGuC,EAAE,MAAMZ,KAA3nB,CAAioB3B,EAAEE,MAAM,IAAI,IAAImD,EAAE1B,MAAMqB,EAAEK,EAAErD,KAAKqF,MAAM9C,EAAES,EAAE1B,OAAO,MAAMvB,GAAGsD,EAAEtD,EAAEA,GAAG,QAAQsD,EAAEI,UAAUlB,OAAOvC,EAAEK,SAASO,EAAEZ,EAAEK,OAAOO,IAAI,IAAIe,EAAEf,EAAEqB,MAAM,EAAEnC,EAAEyF,YAAYC,YAAY1F,EAAEiE,SAAS,CAAC0B,MAAM1F,EAAE2F,QAAQ9E,EAAE+E,QAAQhE,GAAG8B,EAAE,UAAU3D,IAAI8F,EAAE,gBAAgBC,EAAE,wBAAwBC,EAAE,gBAAgBC,EAAE,SAAFA,EAAWhG,EAAEC,GAAGD,EAAEgE,SAASiC,UAAUlG,EAAE,CAACmG,MAAMjG,GAAGD,EAAEgE,SAAS4B,QAAQ3F,KAAKkG,EAAE,SAAFA,EAAWnG,GAAGA,EAAEoG,UAAUpG,EAAEqG,SAASrG,EAAE2D,OAAOX,aAAa6C,GAAE,GAAI7F,EAAEsG,KAAKC,gBAAgB,UAAUvG,EAAEoG,QAAO,EAAG1C,EAAE,OAAO1D,KAAKwG,EAAE,SAAFA,EAAWxG,GAAGA,EAAEoG,UAAUpG,EAAEqG,SAASrG,EAAE2D,OAAOX,aAAa6C,GAAE,GAAI7F,EAAE2D,MAAMX,aAAa8C,EAAE,IAAI9F,EAAEsG,KAAKtD,aAAa,SAAS,IAAIhD,EAAEoG,QAAO,EAAG1C,EAAE,QAAQ1D,KAAKyG,EAAE,SAAFA,EAAWzG,EAAED,GAAG,IAAIE,EAAEF,EAAEoF,WAAW9E,EAAEN,EAAEuG,KAAKI,qBAAqBzG,EAAE0G,KAAK7E,IAAI7B,EAAE2G,UAAU3G,EAAE2G,SAASC,MAAM,KAAK,GAAG9G,EAAEqG,QAAQ/F,EAAEO,OAAO,CAAC,IAAIgB,EAAES,EAAEG,EAAEzC,EAAE+G,OAAO9G,GAAGK,EAAEO,SAASZ,EAAE,GAAGA,EAAE,IAAIA,EAAEK,EAAEO,OAAO,GAAGb,EAAE+G,OAAO9G,EAAEwC,GAAG,IAAInC,EAAEmC,GAAG+D,gBAAgBR,GAAGjE,IAAIO,EAAEhC,EAAEmC,GAAGuE,WAAWC,OAAOtG,MAAM2B,EAAExB,EAAEiB,KAAKzB,EAAEL,GAAGgD,aAAa+C,GAAE,GAAIjE,IAAIF,EAAEvB,EAAEL,GAAG+G,WAAWE,IAAIvG,MAAMkB,EAAEf,EAAEiB,IAAI/B,EAAE4D,MAAMX,aAAa8C,EAAEzF,EAAEN,EAAE+G,QAAQI,IAAInH,EAAEuG,KAAKa,UAAU9G,EAAEL,GAAGoH,UAAUrH,EAAEuG,KAAKe,aAAahH,EAAEL,GAAGqH,aAAa,EAAEtH,EAAEiE,SAAS8C,OAAO/G,EAAE+G,OAAOd,EAAEjG,EAAEC,GAAG0D,EAAE,WAAW3D,KAAKuH,EAAE,SAAFA,EAAWtH,GAAGyG,EAAEzG,EAAE8G,OAAO,EAAE9G,IAAIuH,EAAE,SAAFA,EAAWvH,GAAGyG,EAAEzG,EAAE8G,OAAO,EAAE9G,IAAIwH,EAAE,SAAFA,EAAWxH,EAAED,EAAEE,IAAIA,EAAEA,GAAG,EAAEA,EAAED,EAAE8G,QAAQ,IAAI9G,EAAEgE,SAASyD,MAAM1H,EAAEiG,EAAEhG,EAAEC,GAAGyD,EAAE,YAAY1D,GAAGwG,EAAExG,KAAK,SAAS0H,EAAE1H,EAAEC,GAAG,IAAII,EAAEsH,KAAK,OAAO,IAAIhD,SAAS,SAAS9D,EAAEiB,GAAG,IAAIF,EAAES,EAAE,OAAOT,EAAE3B,KAAKoC,EAAErC,EAAE2D,iBAAiBiE,kBAAkBvF,aAAawF,oBAAoBxF,EAAEd,MAAMc,EAAEkB,WAAW,SAASvD,EAAED,EAAEE,GAAG,OAAOF,EAAEA,EAAEC,GAAGA,EAAEY,QAAQX,EAAxC,CAA2C2B,EAAE5B,EAAE0F,MAAM1F,EAAE0F,MAAM9D,GAAGA,EAAE5B,EAAE8H,QAAQ9H,EAAE+H,WAAWvD,EAAExE,EAAE4B,GAAGoD,MAAM,SAAS/E,GAAG,IAAI,OAAOD,EAAEgE,oBAAoBgE,MAAMnH,KAAKoE,EAAErD,EAAE5B,GAAGA,EAAEwF,aAAa,SAASxF,GAAG,IAAIC,EAAED,EAAEwF,YAAYnF,EAAEL,EAAEsG,KAAKzF,EAAEb,EAAEmF,WAAWrD,EAAE9B,EAAEgE,SAASpC,EAAEE,EAAE6D,QAAQtD,EAAEP,EAAE8D,QAAQ,GAAG5F,EAAE8G,QAAQ,EAAEzG,EAAEkD,UAAU,GAAG3B,EAAEhB,QAAQX,EAAEgI,UAAU,CAAC,IAAIhF,EAAE,IAAIiF,iBAAiB7F,EAAEvB,SAAS,SAASd,EAAEC,GAAG,IAAII,EAAEmC,EAAE3B,EAAE8F,IAAI5G,EAAE,CAACmH,GAAG,GAAGiB,OAAOtH,EAAEqG,GAAG,KAAKiB,OAAOlI,GAAGmI,KAAK,SAAS7E,UAAUvD,EAAEoF,MAAMiD,OAAOpF,GAAGpC,EAAC,OAAQ,CAAC2C,MAAM3C,EAAC,SAAUA,EAAEyH,SAASzH,EAAEyH,QAAQjI,EAAEL,MAAMK,EAAEqC,OAAOO,GAAGhD,EAAEqI,SAASrI,EAAEqI,QAAQjI,EAAEyB,GAAGqE,EAAEnG,QAAQwG,EAAExG,GAA5Y,CAAgZA,GAAGiD,EAAEhB,KAAK5B,IAAI,MAAML,GAAG,OAAO8B,EAAE9B,MAAM8B,IAAI0E,EAAExG,GAAGiD,EAAEhB,KAAK5B,IAAI,SAAS4C,IAAI,OAAOpC,QAAQ,IAAI0H,EAAE,SAAFA,EAAWvI,EAAED,GAAG,IAAI,IAAIE,KAAKD,EAAE,IAAI,IAAIK,KAAKL,EAAEC,GAAGF,EAAEE,EAAEI,IAAi6B,SAASmI,EAAExI,GAAG,IAAIC,EAAE0H,KAAK,OAAO,IAAIhD,SAAS,SAAStE,EAAEQ,GAAG,IAAIiB,EAAEF,EAAES,EAAE,GAAGP,EAAE9B,EAAEyI,YAAYpG,EAAE,CAAC+F,KAAK,WAAW,aAAaxG,EAAE5B,EAAEwF,aAAa0B,GAAG,iBAAgB,EAAG,iBAAgB,GAAI1E,EAAExC,EAAE2D,MAAM5D,EAAEA,EAAE,CAAC,gBAAgB6B,EAAEsF,GAAG,oBAAoB,QAAQpF,GAAG,CAAC4G,YAAY5G,KAAK9B,EAAEqG,SAAStG,EAAE,GAAGsC,KAAKrC,EAAEqG,UAAUrG,EAAEqG,QAAQ7D,EAAE,MAAMzC,EAAE,CAAC4I,OAAO3I,EAAE2D,MAAMH,MAAMxD,EAAEmC,KAAK,YAAYE,KAAKT,IAAI5B,EAAEsG,KAAK9D,EAAEZ,EAAE+E,IAAI5G,EAAE,CAAC6I,KAAK,CAAChH,EAAEiH,YAAYjH,EAAEkH,UAAU5B,GAAGtF,EAAEsF,GAAGkB,KAAK,UAAUW,OAAO,UAAUnH,EAAC,OAAQ,CAAC4B,MAAM5B,EAAC,UAAr3C,SAAFoH,EAAWhJ,GAAG,IAAIC,EAAEI,EAAEQ,EAAEiB,EAAE9B,EAAEiJ,OAAOrH,GAAG3B,EAAE,SAAFA,IAAa,OAAOyH,EAAE1H,IAAIK,EAAEL,EAAEkJ,SAAS,WAAWC,aAAatI,GAAGA,EAAEuI,YAAY,WAAW,OAAOnJ,MAAMI,KAAKgC,EAAErC,EAAEiJ,OAAOlJ,EAAE,CAAC4D,MAAM5D,EAAE,GAAG+B,GAAGA,EAAE6B,QAAQ3D,EAAEwF,aAAa,CAACc,KAAKxE,EAAE/B,EAAE,GAAG+B,EAAEwE,MAAM,KAAK9D,EAAE,CAACmB,MAAM,CAACA,MAAM,SAANA,QAAiB/B,KAAKyH,QAAQ,SAARA,QAAiBtJ,IAAI,SAASC,EAAED,GAAG,OAAOC,EAAEsJ,SAAS,KAAK,GAAG,KAAK,GAAGtJ,EAAEuJ,iBAAiB,KAAKvJ,EAAEsJ,QAAQhC,EAAEvH,GAAGwH,EAAExH,GAAG,MAAM,KAAK,GAAGA,EAAEyJ,QAAQxJ,EAAEuJ,iBAAiBxJ,EAAE+G,QAAQ,GAAGU,EAAEzH,EAAEC,GAAG,MAAM,KAAK,EAAED,EAAEyF,YAAYiE,WAAW1J,EAAE+G,QAAQ,GAAGU,EAAEzH,EAAEC,GAAG,MAAM,KAAK,GAAGD,EAAE4D,MAAMpC,MAAM,GAAGiF,EAAEzG,IAAtP,CAA2PA,EAAEC,IAAI0J,KAAK,SAALA,OAAgBlD,EAAExG,KAAKsG,KAAK,CAACqD,UAAU,SAAVA,UAAmB3J,GAAGA,EAAEuJ,kBAAkBK,MAAM,SAANA,MAAe7J,IAAI,SAASC,EAAED,GAAG,IAAIE,EAAEF,EAAEoF,WAAWwB,IAAIkD,cAAcxJ,EAAEqB,MAAMG,KAAK9B,EAAEuG,KAAKwD,iBAAiB7J,IAAIY,EAAEb,EAAE+J,OAAOC,QAAQ/J,GAAGY,GAAGA,EAAEoJ,WAAWhK,GAAGuH,EAAEzH,EAAEC,EAAEK,EAAEoE,QAAQ5D,IAArJ,CAA0Jd,EAAEC,MAAMuI,EAAE/F,GAAG,SAASzC,EAAEE,IAAID,EAAEwF,aAAa,UAAUvF,KAAKoC,EAAEtC,GAAGE,KAAKoC,EAAEtC,GAAGE,GAAGuC,EAAEzC,GAAGE,QAAQsI,EAAElG,GAAG,SAAStC,EAAEE,GAAGD,EAAED,GAAGmK,iBAAiBjK,EAAEoC,EAAEtC,GAAGE,OAA6e+I,CAAEhJ,GAAGA,EAAE4E,KAAKC,MAAM,OAAOL,EAAExE,GAAGgF,MAAM,SAAShF,GAAG,IAAI,OAAOiD,EAAEhB,KAAKhC,GAAG,MAAMD,GAAG,OAAOa,EAAEb,MAAMa,GAAG,SAASoC,IAAI,OAAOS,EAAE,OAAO1D,GAAGK,IAAI,OAAO4C,EAAEhB,KAAKhC,MAAM,SAASkK,EAAEnK,GAAG,IAAID,EAAEC,EAAEsB,UAAUvB,EAAEqK,KAAK,WAAW5B,EAAEb,OAAO5H,EAAEsK,MAAM,SAASrK,GAAG0H,EAAEC,KAAK3H,IAAID,EAAEuK,OAAO,WAAW,GAAG3C,KAAKtB,QAAQ,CAAC,IAAIrG,EAAE2H,KAAKtB,QAAQzD,WAAW5C,EAAE6C,aAAa8E,KAAKhE,MAAMgE,KAAKtB,SAASrG,EAAEuK,YAAY5C,KAAKtB,SAAS,IAAItG,EAAEwI,GAAGxI,EAAE4H,MAAMsB,QAAQ,SAASjJ,EAAEC,GAAGF,EAAEC,GAAGwK,oBAAoBvK,EAAEF,EAAEkJ,OAAOjJ,GAAGC,QAAQF,EAAE0K,KAAK,WAAWtE,EAAEwB,OAAO5H,EAAE2K,MAAM,WAAWlE,EAAEmB,OAAO5H,EAAE4K,KAAK,SAAS3K,GAAGyG,EAAEzG,EAAE2H,OAAO5H,EAAEwF,KAAK,WAAW+B,EAAEK,OAAO5H,EAAE6K,SAAS,WAAWrD,EAAEI,OAAO5H,EAAE8K,OAAO,SAAS7K,GAAGwH,EAAEG,KAAK,KAAK3H,IAAID,EAAE+K,OAAO,SAAS9K,EAAED,EAAEE,GAAG,OAAOiE,EAAElE,EAAED,EAAEE,IAAI,OAAO,SAASD,EAAED,GAAG4H,KAAKoD,QAAQhL,EAAE4H,KAAKT,GAAGlH,EAAEgL,WAAWhL,EAAEgL,WAAW,GAAG,EAAErD,KAAKxF,KAAK,eAAewF,KAAKtB,QAAQ,EAAEsB,KAAKI,UAAU,EAAEJ,KAAKuB,SAAS,EAAEvB,KAAKnC,YAAY,CAACsD,SAAS,WAAWnC,IAAI,KAAKlB,WAAW,GAAGkC,KAAKxC,WAAW,CAACwB,IAAI,MAAM,SAAS3G,GAAG,IAAID,EAAEC,EAAEmC,KAAK9B,EAAEL,EAAE+K,QAAQlK,EAAEb,EAAEwF,YAAY1D,EAAE9B,EAAEmF,WAAW,IAAI,IAAIvD,KAAKvB,EAAE,GAAG,WAAWJ,EAAEI,EAAEuB,IAAI,IAAI,IAAIY,KAAKxC,EAAE4B,KAAK5B,EAAE4B,GAAG,IAAIvB,EAAEuB,GAAG5B,EAAE4B,GAAGY,GAAGnC,EAAEuB,GAAGY,QAAQxC,EAAE4B,GAAGvB,EAAEuB,GAAG5B,EAAEiL,SAASjL,EAAEiL,UAAU,IAAIlL,EAAEc,EAAEgI,YAAYhI,EAAEgI,aAAa7I,EAAEiL,SAASpK,EAAEqG,GAAGrG,EAAEqG,IAAInH,EAAE,SAASC,EAAEkH,GAAGpF,EAAEoF,GAAGpF,EAAEoF,IAAInH,EAAE,UAAUC,EAAE2D,MAAMtB,EAAErC,EAAEiL,UAA7S,CAAwTtD,MAAMwC,EAAElI,KAAK0F,KAAK3H,GAAGwI,EAAEb,QAAQ,UAAwBxG,EAAP+J,SAAS,IAAoBC,EAAOA,EAAOD,QAAQnL,SAAkD,0BAARqL,KAAQ,mC,iCCC9yR,uDAqEeC,UA1DV,SAAPA,KAAQC,GACV,IAAMC,EAAU7J,MAAMJ,UAAUY,MAAMD,KAAKK,SAASkJ,uBAAuB,UACvEC,EAAa/J,MAAMJ,UAAUY,MAAMD,KAAKK,SAASkJ,uBAAuB,iBACxEE,EAAkBhK,MAAMJ,UAAUY,MAAMD,KAAKK,SAASkJ,uBAAuB,mBAC7EG,EAAUjK,MAAMJ,UAAUY,MAAMD,KAAKK,SAASwH,iBAAiB,mCAC/D8B,EAAkBtJ,SAASC,cAAc,oBACzCsJ,EAAgBnK,MAAMJ,UAAUY,MAAMD,KAAKK,SAASkJ,uBAAuB,kBAEnF,IACYD,EAAQ3K,QACR0K,EAAGQ,OAAO1B,KAAKmB,GAErB,MAAOQ,GACLC,QAAQC,MAAMF,GAGtB,IACYN,EAAW7K,QACX0K,EAAGY,UAAU9B,KAAKqB,GAExB,MAAOM,GACLC,QAAQC,MAAMF,GAGtB,IACYL,EAAgB9K,QAChB0K,EAAGa,eAAe/B,KAAKsB,GAE7B,MAAOK,GACLC,QAAQC,MAAMF,GAGtB,IACYJ,EAAQ/K,QACR0K,EAAGc,OAAOhC,KAAKuB,GAErB,MAAOI,GACLC,QAAQC,MAAMF,GAGtB,IACYH,IACAN,EAAGe,eAAiB,IAAIC,IAAeV,GAAiBW,cAE9D,MAAOR,GACLC,QAAQC,MAAMF,GAGtB,IACYF,EAAcjL,QACd0K,EAAGkB,aAAapC,KAAKyB,GAE3B,MAAOE,GACLC,QAAQC,MAAMF,M,kBCjEtB,IACQU,EAEAX,EAFAW,EAAQC,EAAE,QAEVZ,EAAS,CACTP,QAASmB,EAAE,2BACXC,UAAW,OACXC,UAAW,OACXxC,KAAM,SAANA,OACI0B,EAAOe,YACPf,EAAOgB,GAAGC,QACVjB,EAAOkB,UACPlB,EAAOmB,sBAEXD,QAAS,SAATA,UACIP,EAAMK,GAAG,QAAS,qBAAqB,SAAU9M,GAC7CA,EAAEuJ,iBACFuC,EAAOgB,GAAGhB,OAAOY,EAAE/E,UAEvB8E,EAAMS,KAAK,4BAA4BC,MACvCV,EAAMK,GAAG,QAAS,4BAA4B,SAAU9M,GACpDA,EAAEuJ,iBACFuC,EAAOgB,GAAGM,YAAYV,EAAE/E,WAGhCsF,mBAAoB,SAApBA,uBACAJ,UAAW,SAAXA,YACI,IAAIQ,EAAWX,EAAE,WACbW,EAASzM,SACTkL,EAAOc,UAAYS,EAASzI,KAAK,aAAeyI,EAASzI,KAAK,aAAekH,EAAOc,UACpFd,EAAOa,UAAYU,EAASzI,KAAK,aAAeyI,EAASzI,KAAK,aAAekH,EAAOa,YAG5FG,GAAI,CACAC,MAAO,SAAPA,QACIjB,EAAOP,QAAQ+B,MAAK,WAChB,IAAIC,EAAUb,EAAE/E,MAAMuF,KAAK,kBACvBM,EAAOD,EAAQE,SAAS,MAGxBC,EADUhB,EAAE/E,MAAMuF,KAAK,mBACJO,SAAS,UAE5BE,EAASH,EAAK5M,OACdgN,EAAaF,EAAS9M,OACtBiN,EAAaN,EAAQL,KAAK,4BAA4BY,OAAS,EAC/DC,EAAWJ,EAASE,EAEpBG,EAAYJ,EAAaD,EAASE,EAElCN,EAAQL,KAAK,6BAA6BtM,SAC1CoN,EAAYT,EAAQL,KAAK,6BAA6BY,OAC1DP,EAAQvD,QAAQ,UAAUiE,KAAK,kBAAmBD,GAE9CD,GAAUR,EAAQW,MAAMpC,EAAOqC,IAAIC,SAASJ,QAGxDlC,OAAQ,SAARA,OAAkBuC,GACd,IAAI9C,EAAU8C,EAAKrE,QAAQ,UACbuB,EAAQ2B,KAAK,kBAEnBA,KAAK,eAAeoB,cAC5B/C,EAAQ2B,KAAK,0BAA0BpB,SAEvCuC,EAAKE,YAAY,YACbF,EAAKG,SAAS,aACdH,EAAKI,KAAK3C,EAAOa,UAAY,2DAC7B0B,EAAKrE,QAAQ,uBAAuBkD,KAAK,iBAAiB,GAAGwB,kBAAkB3L,QAC/EsL,EAAKJ,KAAK,iBAAiB,KAE3BI,EAAKI,KACD3C,EAAOc,UACH,+BACArB,EAAQ3G,KAAK,cACb,oEAERyJ,EAAKrE,QAAQ,uBAAuBkD,KAAK,oBAAoBxD,OAC7D2E,EAAKJ,KAAK,iBAAiB,KAGnCb,YAAa,SAAbA,YAAuBiB,GACnB,IACId,EADUc,EAAKrE,QAAQ,MACLyD,SAAS,2BAE/BF,EAAQe,cACRD,EAAKE,YAAY,YACjBF,EAAKnB,KAAK,KAAKqB,YAAY,mCAEvBF,EAAKG,SAAS,YACdjB,EAAQU,KAAK,eAAe,GAE5BV,EAAQU,KAAK,eAAe,KAIxCE,IAAK,CAQDC,SAAQ,SAARA,SAASO,GACL,MAAO,uEAAPxG,OAA8E2D,EAAOc,UAAS,+BAAAzE,OAA8BwG,EAAK,2EAK7IrD,GAAGQ,OAASA,G,oBC3GhB,IACQW,EACAP,EADAO,EAAQC,EAAE,SACVR,EAAY,CACZ0C,aAAc,GACdC,aAAc,GACdC,YAAapC,EAAE,wBACfqC,UAAWrC,EAAE,sBACbsC,IAAKC,SAASC,KAEd9E,KAAM,SAANA,OAEQ8B,EAAU0C,aAAe,GACzB1C,EAAU2C,aAAe,GAEzB3C,EAAU4C,YAAcpC,EAAE,wBAC1BR,EAAU6C,UAAYrC,EAAE,sBACxBR,EAAUiD,YAEdjD,EAAUc,WAEdA,QAAS,SAATA,UACIP,EAAMK,GAAG,QAAS,gBAAgB,SAAU9M,GACxCA,EAAEuJ,iBACF2C,EAAUY,GAAGhB,OAAOY,EAAE/E,UAG1B+E,EAAEpK,UAAUwK,GAAG,aAAa,WACxBZ,EAAU9B,UAGVsC,EAAEpK,UAAUwK,GAAG,aAAa,WACxBsC,OAAOC,IAAIC,QAAQ5C,EAAE,4BAGzBA,EAAE,wBAAwB6C,QAAO,WAC7BrD,EAAUY,GAAG0C,SAAS9C,EAAE/E,UAG5BuE,EAAU4C,YAAYhC,GAAG,UAAU,WAC/BZ,EAAUY,GAAG2C,SAAS/C,EAAE/E,UAG5BuE,EAAU6C,UAAUjC,GAAG,UAAU,WAC7BZ,EAAUY,GAAG4C,OAAOhD,EAAE/E,UAG1B+E,EAAE,wBAAwBI,GAAG,0BAA0B,WACnDZ,EAAUyD,UAAUjD,EAAE/E,WAIlCmF,GAAI,CACAhB,OAAQ,SAARA,OAAkBuC,GACAA,EAAKrE,QAAQ,UACnBkD,KAAK,qBAAqBoB,cAClCD,EAAKE,YAAY,cAKzBrC,iBAA6B,SAAU0D,GACnC,IAAMC,GAA8C,IAAhC3D,EAAU8C,IAAIvK,QAAQ,KAAcyH,EAAU8C,IAAInI,MAAM,KAAK,GAAK,GAChFiJ,EAAiB,GAEvB,OAAID,IACAA,EAAYhJ,MAAM,KAAKvC,KAAI,SAAU/C,GACjC,IAAMwO,EAASxO,EAAMsF,MAAM,KAC3BiJ,EAAeC,EAAO,IAAMA,EAAO,MAGnCD,EAAeE,WAAaF,EAAeG,YACpC,CAACH,EAAeE,UAAWF,EAAeG,YAIlD,CAACC,SAASN,EAAY3B,KAAK,YAAa,IAAKiC,SAASN,EAAY3B,KAAK,YAAa,MAG/F/B,yBAAqC,SAAU7B,EAAO8F,GAClD,IAAIC,EACAC,EAcJ,OAZInE,EAAU2C,aAAapK,QAAQ4F,GAAS,IACxC+F,EAAelE,EAAU2C,aAAayB,QAAO,SAAUC,EAAMC,GACzD,OAAOC,KAAKC,IAAIF,EAAOnG,GAASoG,KAAKC,IAAIH,EAAOlG,GAASmG,EAAOD,MAIpErE,EAAU2C,aAAapK,QAAQ0L,GAAO,IACtCE,EAAanE,EAAU2C,aAAayB,QAAO,SAAUC,EAAMC,GACvD,OAAOC,KAAKC,IAAIF,EAAOL,GAAOM,KAAKC,IAAIH,EAAOJ,GAAOK,EAAOD,MAI7D,CACHrE,EAAU2C,aAAapK,QAAQ2L,GAAgB/F,GAC/C6B,EAAU2C,aAAapK,QAAQ4L,GAAcF,KAIrDjE,UAAsB,WAClBQ,EAAE,iBAAiBY,MAAK,WACpB,IAAMqD,EAAejE,EAAE/E,MAAMuF,KAAK,wBAClC,IAAKyD,EAAanC,SAAS,cAAe,CACtC,IAAMoC,EAAcD,EAAa/L,KAAK,eAEhCiM,EAAuB,CAAC,EAAG,EAAG,EAAG,IACjCC,EAGG,EAFLD,EAAqBP,QAAO,SAAUC,EAAMQ,GACxC,OAAOR,EAAOQ,KAEhBC,EAASd,SAASS,EAAa1C,KAAK,aAAe0C,EAAa1C,KAAK,OAAQ,IAC7EgD,EAASf,SAASS,EAAa1C,KAAK,aAAe0C,EAAa1C,KAAK,OAAQ,IAC7EiD,EAAaD,EAASD,EACtBG,EAAyD,WAA1CR,EAAa1C,KAAK,oBAEvC,GAAIiD,EAAaJ,IAAsBK,EAAc,CAEjD,IAAMC,EAAeP,EAAqB3O,QAAQmP,UAC9CC,EAAYJ,EACZK,EAAYP,EACZQ,EAAa,EAEjBJ,EAAatQ,SAAQ,SAAU2Q,EAAM5Q,EAAG6Q,GACpC,IAAMC,EAAWlB,KAAKmB,MAAMN,EAAY,GACpCO,EAAYpB,KAAKmB,MAAM,EAAID,GACzBG,EAAYD,EAAYJ,EAC1BK,EAAY,IACZD,GAAwBC,GAE5BR,GAAwBO,EAEpBhR,IAAMuQ,EAAaxQ,OAAS,EAC5BsL,EAAU0C,aAAanO,KAAK,CACxB4J,MAAOkH,EACPQ,KAAMd,EACNe,YAAanB,EAAqBhQ,GAClCoR,UAAWR,EACXS,KAAMtB,EAAY1O,MAAMsP,EAAYZ,EAAYhQ,UAGpDsL,EAAU0C,aAAanO,KAAK,CACxB4J,MAAOkH,EACPQ,KAAMR,EAAYM,EAClBG,YAAanB,EAAqBhQ,GAClCoR,UAAWR,EACXS,KAAMtB,EAAY1O,MAAMsP,EAAYA,EAAaK,KAGzDL,GAA0BK,EAC1BN,GAAwBM,KAG5B3F,EAAU0C,aAAa9N,SAAQ,SAAUqR,GAErC,IADA,IAAIC,EAAYD,EAAM9H,MACf+H,GAAaD,EAAMJ,MAClB7F,EAAU2C,aAAapK,QAAQ2N,GAAa,GAC5ClG,EAAU2C,aAAapO,KAAK2R,GAEhCA,GAAaD,EAAMF,kBAK3B,IAAK/F,EAAU2C,aAAajO,OAAS,EACjC,IAAK,IAAIC,EAAImQ,EAAQnQ,GAAKoQ,EAAQpQ,IAC9BqL,EAAU2C,aAAapO,KAAKI,GAKxC8P,EAAa1C,KAAK,MAAO,GACzB0C,EAAa1C,KAAK,MAAO/B,EAAU2C,aAAajO,OAAS,GACzD,IAAMyR,EAAenG,EAAUoG,iBAAiB3B,GAChDzE,EAAU4C,YAAYhB,IAAIuE,EAAa,IACvCnG,EAAU6C,UAAUjB,IAAIuE,EAAa,IACrC,IAAME,EAAkBrG,EAAUsG,yBAAyBH,EAAa,GAAIA,EAAa,IAKzF,GAJA1B,EAAa1C,KAAK,QAASsE,EAAgBhO,KAAK,MAChD6K,OAAOC,IAAIhM,QAAQsN,GAGfC,EAAa,CACb,IAAM6B,EAAgB/F,EAAE/E,MAAMuF,KAAK,sBAC7BwF,EAAoBhG,EAAE,+CAE5B,GAAIwE,EAAaJ,IAAsBK,EAEnCjF,EAAU0C,aAAa9N,SAAQ,SAAUqR,GACrC,IAAK,IAAItR,EAAI,EAAGA,EAAIsR,EAAMD,KAAKtR,OAAQC,IAAK,CACxC,IAAM8R,EAAcjG,EAChB,4DACI,IAAMyF,EAAMD,KAAKtR,OAASsL,EAAU0C,aAAahO,OACjD,eACAuR,EAAMD,KAAKrR,GACX,aAER6R,EAAkBhQ,OAAOiQ,OAGjCF,EAAcG,QAAQF,OACnB,CAGH,IADA,IAAMG,EAAkB,IAAMjC,EAAYhQ,OACjCC,EAAI,EAAGA,EAAI+P,EAAYhQ,OAAQC,IAAK,CACzC,IAAM8R,EAAcjG,EAChB,4DACImG,EACA,eACAjC,EAAY/P,GACZ,aAER6R,EAAkBhQ,OAAOiQ,GAE7BF,EAAcG,QAAQF,YAOhC5F,GAAG0C,SAAW,SAAUnB,GAC9B,IAIMyE,EAJUzE,EAAKrE,QAAQ,iBACLkD,KAAK,sBAETe,KAAK,SAAS7I,MAAM,qBACvBpD,WAAW6E,MAAM,KAAK,GACvC6F,EAAE,eAAiBoG,GAAMhF,IAAI5B,EAAU6G,SAAS1E,KAEpDnC,EAAUY,GAAG2C,SAAW,SAAUpB,GAC9B,IAAMsC,EAAetC,EAAKrE,QAAQ,iBAAiBkD,KAAK,wBAClD8D,EAASd,SAASS,EAAa1C,KAAK,OAAQ,IAC5C+E,EAAU9G,EAAU+G,kBAAkB5E,GACtC6E,EAAiB9D,OAAOC,IAAI8D,YAAYxC,GAC1CqC,GAAWhC,GAAUgC,GAAWE,EAAeE,OAAO,KACtDF,EAAeE,OAAO,GAAKJ,EAAQhR,WACnCkR,EAAeG,UACf1C,EAAa7I,QAAQ,qBAG7BoE,EAAUY,GAAG4C,OAAS,SAAUrB,GAC5B,IAAMsC,EAAetC,EAAKrE,QAAQ,iBAAiBkD,KAAK,wBAClD+D,EAASf,SAASS,EAAa1C,KAAK,OAAQ,IAC5C+E,EAAU9G,EAAU+G,kBAAkB5E,GACtC6E,EAAiB9D,OAAOC,IAAI8D,YAAYxC,GAC1CqC,GAAW/B,GAAU+B,GAAWE,EAAeE,OAAO,KACtDF,EAAeE,OAAO,GAAKJ,EAAQhR,WACnCkR,EAAeG,UACf1C,EAAa7I,QAAQ,qBAI7BoE,EAAUY,GAAGwG,YAAc,SAAUjF,EAAMkF,GACpB7G,EAAE2B,GACRvB,GAAG,0BAA0B,WACtCyG,EAAWrH,EAAU4C,YAAYhB,MAAO5B,EAAU6C,UAAUjB,WAGpE5B,EAAUyD,UAAY,SAAUtB,GAC5B,IAAIW,EAAM,IAAIwE,IAAItH,EAAU8C,KAC5BA,EAAIyE,aAAaC,IAAI,YAAaxH,EAAU4C,YAAYhB,OACxDkB,EAAIyE,aAAaC,IAAI,aAAcxH,EAAU6C,UAAUjB,OACvDkB,EAAIyE,aAAaC,IAAI,UAAWhH,EAAE2B,GAAMJ,KAAK,iBAC7CmB,OAAOH,SAAWD,GAEtB9C,EAAUyH,YAAc,SAAUtO,GAC9B,IAAIuO,EAAU1H,EAAU8C,IAAInI,MAAM,KAAK,GACnCgJ,GAA8C,IAAhC3D,EAAU8C,IAAIvK,QAAQ,KAAcyH,EAAU8C,IAAInI,MAAM,KAAK,GAAK,GAChFiJ,EAAiB,GAEjBD,IACAA,EAAYhJ,MAAM,KAAKvC,KAAI,SAAU/C,GACjC,IAAIwO,EAASxO,EAAMsF,MAAM,KACzBiJ,EAAeC,EAAO,IAAMA,EAAO,MAEnCD,EAAezK,WACRyK,EAAezK,GAE1BwK,EAAc3P,OAAOC,KAAK2P,GACrBxL,KAAI,SAAU/C,GACX,OAAOA,EAAQ,IAAMuO,EAAevO,MAEvCgD,KAAK,KACV2H,EAAU8C,IAAM4E,GAAW/D,EAAc,IAAMA,EAAc,MAGrE3D,EAAU6G,SAAW,SAAU1E,GAC3B,IAAIwF,EAAe3D,SAAS7B,EAAKP,MAAO,IAGxC,OAFc5B,EAAU2C,aAAagF,IAIzC3H,EAAU+G,kBAAoB,SAAU5E,GACpC,IAII2E,EAJArC,EAAetC,EAAKrE,QAAQ,iBAAiBkD,KAAK,wBAClD4G,EAAY5D,SAAS7B,EAAKP,MAAO,IACjCkD,EAASd,SAASS,EAAa1C,KAAK,YAAa,IACjDgD,EAASf,SAASS,EAAa1C,KAAK,YAAa,IAGrD,GAAI6F,GAAa7C,GAAU6C,GAAa9C,EACpC,GAAI9E,EAAU2C,aAAapK,QAAQqP,IAAc,EAC7Cd,EAAU9G,EAAU2C,aAAapK,QAAQqP,OACtC,CACH,IAAM9J,EAAUkC,EAAU2C,aAAayB,QAAO,SAAUC,EAAMC,GAC1D,OAAOC,KAAKC,IAAIF,EAAOsD,GAAarD,KAAKC,IAAIH,EAAOuD,GAAatD,EAAOD,KAE5EyC,EAAU9G,EAAU2C,aAAapK,QAAQuF,GAGjD,OAAOgJ,GAGf1H,GAAGY,UAAYA,G,kBC5LnB,IACQC,EA5HRO,EAAEqH,OAAO,YAAarH,EAAEsH,GAAGC,OAAQ,CAC/BlJ,QAAS,CACLmJ,OAAO,GAEXC,cAAe,SAAfA,gBACI,IAAIC,EACAC,EACA9S,EACA+S,EACAC,EACAC,EAAS7M,KAAKoD,QAAQoH,MACtBsC,EAAS9M,KAAKoD,QAAQmJ,MACtBpS,EAAI6F,KAAKoD,QACT2J,EAAO/M,KACPgN,GAAWhN,KAAKiN,aAAc9S,EAAE6S,QAChCE,EAAO,GAEPlN,KAAKmN,qBACLnN,KAAKoN,QAAQzH,MAAK,SAAUzM,GACpB4T,GACU,IAAN5T,IACAwT,GACMK,EAAKtB,OAAOvS,GAAK6T,EAAKM,cAAgBN,EAAKO,YAAcP,EAAKM,YAAc,GAAM,KAElF,IAANnU,IACAwT,GACMK,EAAKtB,OAAOvS,GAAK6T,EAAKM,YAAc,IAAMN,EAAKO,YAAcP,EAAKM,YAAc,GAAM,MAGhGX,GAAeK,EAAKtB,OAAOvS,GAAK6T,EAAKM,cAAgBN,EAAKO,YAAcP,EAAKM,aAAgB,IAGjGH,EAA0B,eAArBH,EAAKQ,YAA+B,OAAS,UAAYb,EAAa,IAC3E3H,EAAE/E,MAAMoK,KAAK,EAAG,GAAG4C,EAAU,UAAY,OAAOE,EAAM/S,EAAE6S,UAC7B,IAAvBD,EAAK3J,QAAQoH,QACY,eAArBuC,EAAKQ,aACK,IAANrU,GACA6T,EAAKvC,MAAMJ,KAAK,EAAG,GAAG4C,EAAU,UAAY,OACxC,CACIQ,KAAMd,EAAa,KAEvBvS,EAAE6S,SAGA,IAAN9T,GACA6T,EAAKvC,MAAMwC,EAAU,UAAY,OAC7B,CACIS,MAAOf,EAAaD,EAAiB,KAEzC,CACIiB,OAAO,EACPC,SAAUxT,EAAE6S,YAKd,IAAN9T,GACA6T,EAAKvC,MAAMJ,KAAK,EAAG,GAAG4C,EAAU,UAAY,OACxC,CACIY,OAAQlB,EAAa,KAEzBvS,EAAE6S,SAGA,IAAN9T,GACA6T,EAAKvC,MAAMwC,EAAU,UAAY,OAC7B,CACIa,OAAQnB,EAAaD,EAAiB,KAE1C,CACIiB,OAAO,EACPC,SAAUxT,EAAE6S,YAMhCP,EAAiBC,MAGrB9S,EAAQoG,KAAKpG,QACb+S,EAAW3M,KAAKqN,YAChBT,EAAW5M,KAAKsN,YAChBZ,EAAaE,IAAaD,GAAa/S,EAAQ+S,IAAaC,EAAWD,GAAa,IAAM,EAC1FO,EAA0B,eAArBlN,KAAKuN,YAA+B,OAAS,UAAYb,EAAa,IAC3E1M,KAAK8N,OAAO1D,KAAK,EAAG,GAAG4C,EAAU,UAAY,OAAOE,EAAM/S,EAAE6S,SAE7C,QAAXH,GAAyC,eAArB7M,KAAKuN,aACzBvN,KAAKwK,MAAMJ,KAAK,EAAG,GAAG4C,EAAU,UAAY,OACxC,CACIS,MAAOf,EAAa,KAExBvS,EAAE6S,SAGK,QAAXH,GAAyC,eAArB7M,KAAKuN,aACzBvN,KAAKwK,MAAMJ,KAAK,EAAG,GAAG4C,EAAU,UAAY,OACxC,CACIS,MAAO,IAAMf,EAAa,KAE9BvS,EAAE6S,SAGK,QAAXH,GAAyC,aAArB7M,KAAKuN,aACzBvN,KAAKwK,MAAMJ,KAAK,EAAG,GAAG4C,EAAU,UAAY,OACxC,CACIa,OAAQnB,EAAa,KAEzBvS,EAAE6S,SAGK,QAAXH,GAAyC,aAArB7M,KAAKuN,aACzBvN,KAAKwK,MAAMJ,KAAK,EAAG,GAAG4C,EAAU,UAAY,OACxC,CACIa,OAAQ,IAAMnB,EAAa,KAE/BvS,EAAE6S,aAQdxI,EAAiB,CACjBuJ,SAAUhJ,EAAE,mBACZiJ,cAAe,KACfC,YAAa,KACbC,YAAa,KACbC,QAAS,KACTN,OAAQ,IACRO,eAAgB,KAChB/G,IAAKC,SAASC,KAEd9E,KAAM,SAANA,OACI+B,EAAewJ,cAAgBzF,SAAS/D,EAAeuJ,SAAS9Q,KAAK,QACrEuH,EAAeyJ,YAAc1F,SAAS/D,EAAeuJ,SAAS9Q,KAAK,QACnEuH,EAAe0J,YAAc1J,EAAeuJ,SAAS9Q,KAAK,eAC1DuH,EAAe2J,QAAU3J,EAAeuJ,SAAS9Q,KAAK,WACtDuH,EAAe4J,eAAiB7F,SAAS/D,EAAeuJ,SAAS9Q,KAAK,mBAEtEuH,EAAe+H,MAAM9J,OACrB+B,EAAea,WAEnBA,QAAS,SAATA,UACIN,EAAEpK,UAAUwK,GAAG,gBAAgB,SAAUrF,GACrCiF,EAAE,0DAA0D1F,SAC5DmF,EAAe/B,OACfsC,EAAE/E,MAAMwF,IAAI1F,OAGpB6K,iBAAkB,SAAlBA,iBAA4B1C,GACxB,IAAIC,GAAmD,IAArC1D,EAAe6C,IAAIvK,QAAQ,KAAc0H,EAAe6C,IAAInI,MAAM,KAAK,GAAK,GAC1FiJ,EAAiB,GAErB,OAAID,IACAA,EAAYhJ,MAAM,KAAKvC,KAAI,SAAU/C,GACjC,IAAIwO,EAASxO,EAAMsF,MAAM,KACzBiJ,EAAeC,EAAO,IAAMA,EAAO,MAGnCD,EAAeE,WAAaF,EAAeG,YACpC,CAACH,EAAeE,UAAWF,EAAeG,YAIlD,CAACC,SAAS/D,EAAewJ,eAAgBzF,SAAS/D,EAAeyJ,eAE5EjG,UAAW,SAAXA,UAAqB4B,EAAWyE,GAC5B7J,EAAewH,YAAY,aAC3BxH,EAAewH,YAAY,cAC3BxH,EAAewH,YAAY,WAC3BxH,EAAe6C,MACV7C,EAAe6C,IAAIvK,QAAQ,MAAQ,EAAI,IAAM,KAC9C,aACA8M,EACA,eACAyE,EACA,YACA7J,EAAe2J,QACnB1G,OAAOH,SAAW9C,EAAe6C,KAErC2E,YAAa,SAAbA,YAAuBtO,GACnB,IAAIuO,EAAUzH,EAAe6C,IAAInI,MAAM,KAAK,GACxCgJ,GAAmD,IAArC1D,EAAe6C,IAAIvK,QAAQ,KAAc0H,EAAe6C,IAAInI,MAAM,KAAK,GAAK,GAC1FiJ,EAAiB,GAEjBD,IACAA,EAAYhJ,MAAM,KAAKvC,KAAI,SAAU/C,GACjC,IAAIwO,EAASxO,EAAMsF,MAAM,KACzBiJ,EAAeC,EAAO,IAAMA,EAAO,MAEnCD,EAAezK,WACRyK,EAAezK,GAE1BwK,EAAc3P,OAAOC,KAAK2P,GACrBxL,KAAI,SAAU/C,GACX,OAAOA,EAAQ,IAAMuO,EAAevO,MAEvCgD,KAAK,KACV4H,EAAe6C,IAAM4E,GAAW/D,EAAc,IAAMA,EAAc,MAG1EqE,MAAO,CAGH9J,KAAM,SAANA,OACI+B,EAAe+H,MAAM+B,aAQrB,IANA,IAAMC,EAAO/J,EAAeuJ,SACxBS,EAAYD,EAAKnL,QAAQnG,KAAKwR,MAC9BC,EAAO,IAAI3U,MAAMwU,EAAKnL,QAAQuL,cAAcC,KAAK,GAEjDC,EADQN,EAAKnL,QAAQuL,aACCJ,EAAKnL,QAAQuL,aAE9BzV,EAAI,EAAGA,EAAIsV,EAAUvV,OAAQC,IAAK,CACvC,IAAIqF,EAAQgK,SAASiG,EAAUtV,GAAGU,MAAQiV,GACtCC,EAAY,EAEZN,EAAUtV,GAAG8N,QAEb8H,EAAYvG,SAASiG,EAAUtV,GAAG8N,QAGtC0H,EAAKnQ,IAAUuQ,EAGnB,IAAMC,EAAYR,EAAKjI,KAAK,QAAU,UAClC0I,EAAaT,EAAKjI,KAAK,QAAU,WAE/B2I,EACF,eACAF,EACA,mBACAR,EAAKnL,QAAQyK,OAHb,4CAMAmB,EACA,WAEJT,EAAKzH,KAAKmI,GAKV,IAHA,IAAMC,EAAc1K,EAAe+H,MAAM4C,qBAAqBT,EAAMH,EAAKnL,QAAQyK,QAC7EuB,EAAc,IAAMb,EAAKnL,QAAQuL,aAE5BzV,EAAI,EAAGA,EAAIwV,EAAKzV,OAAQC,IAAK,CAClC,IAAImW,EAAW7K,EAAe+H,MAAM+C,YAC5BT,EACA3V,EACAsL,EAAeuJ,SAAS3K,QAAQ6E,YAAY,IAEhDsH,EAAe,qBACfC,EAAgB,YAEhBjB,EAAKnL,QAAQqM,aAAa,IAAMJ,EAAS,IAAMA,EAAS,IAAMd,EAAKnL,QAAQqM,aAAa,KACxFF,EAAe,6BACfC,EAAgB,qBAGpB,IAAME,EAAcnB,EAAKnL,QAAQuM,aAC3B,6BAA+BN,EAAS,GAAK,IAAMX,EAAKxV,GAAK,UAC7D,GAEA0W,EAAcrH,SAASmG,EAAKxV,GAAKgW,GACnCrB,EAASrJ,EAAe+H,MAAMsD,gBAAgBD,GAI5CE,EACF,0DACAV,EACA,OACAM,EACA,4BACAH,EACA,mBACA1B,EACA,cAZgBtF,SAASgG,EAAKnL,QAAQyK,OAASA,GAI/C,8DAYA2B,EACA,mBACA3B,EACA,cAlBkBtF,SAASgG,EAAKnL,QAAQyK,OAAkB,EAATA,GAGjD,uCAoBJ9I,EAAE,IAAMgK,GAAWhU,OAAO+U,GAG9B/K,EAAE,IAAMiK,GAAY1C,OAAO,CACvB9B,OAAO,EACPuF,IAAKxB,EAAKnL,QAAQ6E,YAAY,GAC9B+H,IAAKzB,EAAKnL,QAAQ6E,YAAY,GAC9BwD,OAAQ8C,EAAKnL,QAAQ6M,cACrB1D,OAAO,EACP2D,MAAO,SAAPA,MAAiBpQ,EAAOuM,GACpB7H,EAAe+H,MAAM4D,OACjB9D,EAAGZ,OACH8C,EAAKnL,QAAQ6E,YAAY,GACzB4G,EACAE,EACAC,IAGRoB,OAAQ,SAARA,OAAkBtQ,EAAOuM,GACrBtH,EAAEjF,EAAMsC,QACHmD,KAAK,qBACLxK,OAAO,qDACPsV,QACAC,SAAS,SACdvL,EAAEjF,EAAMsC,QACHmD,KAAK,qBACLxK,OAAO,iDACZgK,EAAEjF,EAAMsC,QACHmD,KAAK,gCACLsI,OAAOrJ,EAAeqJ,OAAS,KAExCzD,KAAM,SAANA,KAAgBtK,EAAOuM,GACnB7H,EAAewD,UAAUqE,EAAGZ,OAAO,GAAIY,EAAGZ,OAAO,OAIzDjH,EAAe+H,MAAM4D,OACjB5B,EAAKnL,QAAQ6M,cACb1B,EAAKnL,QAAQ6E,YAAY,GACzB4G,EACAE,EACAC,IAIRV,WAAY,SAAZA,aACI,IAAIrR,EAAO,CAACwR,MAAO,IACnB1J,EAAEY,KAAKnB,EAAe0J,aAAa,SAAU3P,EAAO3E,GAChDqD,EAAKwR,MAAM3V,KAAK,CAACc,MAAO2E,EAAOyI,MAAOpN,EAAQ4K,EAAe4J,oBAGjE5J,EAAe+H,MAAMgE,UAAUtT,GAE/B,IAAMmG,EAAU,CACZnG,KAAMA,EACNgL,YAAa,CAACzD,EAAewJ,cAAexJ,EAAeyJ,aAC3DwB,aAAc,CAACjL,EAAewJ,cAAexJ,EAAeyJ,aAC5DgC,cAAezL,EAAemG,mBAC9BgE,aAAc1R,EAAKwR,MAAMxV,OACzB4U,OAAQrJ,EAAeqJ,OACvB8B,cAAc,GAGlBnL,EAAeuJ,SAAS3K,QAAUA,GAEtCmN,UAAW,SAAXA,UAAqBtT,GACjBuH,EAAeqJ,OAOP,EANJ/E,KAAKkH,IAAIjX,MACL+P,KACA7L,EAAKwR,MAAM9R,KAAI,SAAUxC,GACrB,OAAOA,EAAE6M,UAIjB,GAEAxC,EAAeqJ,OAAS,MACxBrJ,EAAeqJ,OAAS,MAGhCsC,OAAQ,SAARA,OAAkBF,EAAeO,EAAW3B,EAAaE,EAAWC,GAChE,IAAIyB,EAAYR,EAAc,GAC1BS,EAAaT,EAAc,GAC3BU,EAAmB5L,EAAE,IAAMiK,GACtBzJ,KAAK,oDACLuB,KAAK2J,GACVG,EAAmB7L,EAAE,IAAMiK,GACtBzJ,KAAK,0DACLuB,KAAK4J,GAGd3L,EAAE,IAAMgK,EAAY,cAAcpJ,MAAK,SAAUpH,EAAOsS,GACpD,IAAIxB,EAAW7K,EAAe+H,MAAM+C,YAAYT,EAAatQ,EAAOiS,GAEhEnB,EAAS,GAAKqB,EAEVD,EAAYpB,EAAS,GACrB7K,EAAe+H,MAAMuE,WAAWD,EAAK,GAC9BJ,EAAYpB,EAAS,GAC5B7K,EAAe+H,MAAMuE,WAAWD,EAAK,GAGrCrM,EAAe+H,MAAMuE,WAAWD,EAAK,GAAKJ,EAAYpB,EAAS,IAAMR,GAElEQ,EAAS,GAAKoB,IAEjBC,EAAarB,EAAS,GACtB7K,EAAe+H,MAAMuE,WAAWD,EAAK,GAC9BH,EAAarB,EAAS,GAC7B7K,EAAe+H,MAAMuE,WAAWD,EAAK,GAErCrM,EAAe+H,MAAMuE,WAAWD,EAAK,GAAKH,EAAarB,EAAS,IAAMR,OAKlFrK,EAAe+H,MAAMwE,yBAAyBJ,EAAkBC,GAEhEnP,YAAW,WACP+C,EAAe+H,MAAMwE,yBAAyBJ,EAAkBC,KACjE,MAEPG,yBAA0B,SAA1BA,yBAAoCJ,EAAkBC,GAClD,IAEII,EAFeL,EAAiBM,SAASzD,KAC9BmD,EAAiBO,aAG5BC,EADeP,EAAiBK,SAASzD,KACJwD,EAAgB,EACrDI,GAAe,EAAID,GAAuB,EAE9CR,EAAiBU,IAAI,OAAQ,KAAOD,GACpCR,EAAiBS,IAAI,OAAQ,KAAOD,GAEhCtI,KAAKmB,MAAMkH,GAAuB,IAClCR,EAAiBU,IAAI,OAAQ,KAC7BT,EAAiBS,IAAI,OAAQ,OAGrC/B,YAAa,SAAbA,YAAuBT,EAAatQ,EAAOiS,GACvC,IAAIT,EAAMlB,EAActQ,EAAQiS,EAC5BR,EAAMnB,GAAetQ,EAAQ,GAAK,EAItC,OAFoB,IAAhBsQ,IAAmBmB,EAAMD,GAEtB,CAACA,EAAKC,IAGjBc,WAAY,SAAZA,WAAsBD,EAAK1K,GACvBpB,EAAE8L,GAAKQ,IAAI,UAAWlL,IAG1B0J,gBAAiB,SAAjBA,gBAA2BxR,GACvB,OAAOkK,SAAS,EAAIlK,EAAI,IAG5B8Q,qBAAsB,SAAtBA,qBAAgCT,EAAM4C,GAClC,IAAIC,EAAWzI,KAAKkH,IAAIjX,MAAM,KAAM2V,GAChCb,EAASrJ,EAAe+H,MAAMsD,gBAAgB0B,GAClD,OAAI1D,EAASyD,EACFA,EAAczD,EAElB,KAKnBlK,GAAGa,eAAiBA,G,kBCvcxB,IACQM,EAEAL,EAFAK,EAAQC,EAAE,QAEVN,EAAS,CACTmB,QAAS,KACT4L,SAAUzM,EAAE,iBACZ0M,gBAAiB1M,EAAE,+BACnB2M,gBAAiB3M,EAAE,qCACnB4M,UAAW5M,EAAE,sBACb6M,MAAOjX,SAASwH,iBAAiB,0CACjC0P,SAAU,KACVC,UAAU,EACVC,MAAO,YACPC,OAAQ,GAERvP,KAAM,SAANA,OACIgC,EAAOY,UACHN,EAAE,iBAAiB9L,QACnBwL,EAAOU,GAAG8M,QAGlB5M,QAAS,SAATA,UACIZ,EAAOU,GAAG+M,mBACVzN,EAAOxC,MAAMkQ,oBAEbrN,EAAMK,GAAG,QAAS,+BAA+B,SAAU9M,GACvDA,EAAEuJ,iBACF,IAAMwQ,EAAQrN,EAAE/E,MAChByE,EAAOmB,QAAUwM,EAAM/P,QAAQ,iBAC/BoC,EAAOoN,SAAWpN,EAAOmB,QAAQL,KAAK,wBACtCd,EAAOU,GAAG9F,OAAO+S,MAGrBtN,EAAMK,GAAG,QAAS,4BAA4B,SAAU9M,GACpDA,EAAEuJ,iBACF,IAAMwQ,EAAQrN,EAAE/E,MAChByE,EAAOmB,QAAUwM,EAAM/P,QAAQ,iBAC/BoC,EAAOoN,SAAWpN,EAAOmB,QAAQL,KAAK,wBACtCd,EAAOU,GAAGkN,MAAMD,MAGpBtN,EAAMK,GAAG,QAAS,+BAA+B,SAAU9M,GACvDA,EAAEuJ,iBACE6C,EAAO+M,SAASvY,QAChBwL,EAAOU,GAAGmN,UAIlBxN,EAAMK,GAAG,QAAS,qCAAqC,SAAU9M,GAC7DA,EAAEuJ,iBACF6C,EAAOU,GAAG8M,UAGdnN,EAAMK,GAAG,SAAS,SAAU9M,GAEnBoM,EAAO+M,SAASe,GAAGla,EAAE+J,SACmB,IAAzCqC,EAAO+M,SAASgB,IAAIna,EAAE+J,QAAQnJ,QAC7BwL,EAAOgN,gBAAgBc,GAAGla,EAAE+J,SACmB,IAAhDqC,EAAOgN,gBAAgBe,IAAIna,EAAE+J,QAAQnJ,QACpC8L,EAAE1M,EAAE+J,QAAQC,QAAQ,oBAAoBpJ,QACxCwL,EAAO+M,SAASnP,QAAQ,iCAAiCpJ,QACzD8L,EAAE1M,EAAE+J,QAAQC,QAAQ,+BAA+BpJ,QAEpDwL,EAAOU,GAAG8M,UAIlBlN,EAAEpK,UAAUwK,GAAG,WAAW,SAAU9M,IAC3BA,EAAEsJ,SAAWtJ,EAAEoa,SAAWhO,EAAOuN,QAClCvN,EAAOU,GAAG8M,WAItBhQ,MAAO,CACHkQ,kBAAmB,SAAnBA,oBACI,IAAMO,EAAO/X,SAASwH,iBAAiB,8CACvCsC,EAAOmN,MAAMzY,SAAQ,SAAAwZ,GACjBA,EAAKpQ,iBAAiB,SAAS,SAAUlK,GACrCA,EAAEuJ,iBACG6C,EAAOqN,WACRa,EAAKvT,UAAU+E,OAAO,YACtBwO,EAAKtX,aACD,gBACuC,SAAvCsX,EAAKxX,aAAa,iBAA8B,QAAU,QAE9DuX,EAAKvZ,SAAQ,SAAAyZ,GACTA,EAAIxT,UAAU+E,OAAO,4CAO7CgB,GAAI,CACAkN,MAAO,SAAPA,MAAiBD,GACb3K,OAAOC,IAAImL,aACXT,EACK/P,QAAQ,sBACRgQ,OAAM,GAAM,GACZ9M,KAAK,SACLe,KAAK,OAAQ,QAAUvB,EAAE,sBAAsB9L,OAAS,GAAGoB,YAC3D8L,IAAI,IACJqC,MACAsK,SAASrO,EAAOoN,UACrBO,EAAM9B,SAAS,UACf8B,EAAMW,SAAS,+BAA+BC,YAAY,UAC1DjO,EAAE,QAAQY,MAAK,WACX+B,IAAIhM,QAAQqJ,EAAE/E,WAGtBX,OAAQ,SAARA,OAAkB+S,GACdA,EAAM/P,QAAQ,sBAAsBhD,UAExCiT,KAAM,SAANA,OACI7N,EAAOgN,gBAAgBnB,SAAS,UAChC7L,EAAOiN,gBAAgBsB,YAAY,UACnCvO,EAAO+M,SAASlB,SAAS,YACzB7L,EAAO+M,SAASc,QAEpBL,KAAM,SAANA,OACIxN,EAAO+M,SAAS7L,MAAK,WACiB,WAA9Bb,EAAMwB,KAAK,gBACXxB,EAAMmO,WAAW,eAErBxO,EAAOiN,gBAAgBpB,SAAS,UAChC7L,EAAOgN,gBAAgBuB,YAAY,UACnCvO,EAAO+M,SAASwB,YAAY,YAC5BvO,EAAO+M,SAASS,WAGxBC,iBAAkB,SAAlBA,mBACInN,EAAEpK,UAAUwK,GAAGV,EAAOsN,MAAQ,OAAO,WAEjCtN,EAAOqN,UAAW,EAClBrN,EAAOU,GAAG+N,cAAa,MAG3BnO,EAAEpK,UAAUwK,GAAGV,EAAOsN,MAAQ,QAAQ,WAElCtN,EAAOqN,UAAW,EAClBrN,EAAOU,GAAG+N,cAAa,OAG/BA,aAAc,SAAdA,eAAwC,IAAhBC,EAAMna,UAAAC,OAAA,QAAAma,IAAApa,UAAA,IAAAA,UAAA,GAC1ByL,EAAOmN,MAAMzY,SAAQ,SAAAwZ,GACjBA,EAAKtX,aAAa,gBAAiB8X,EAAS,OAAS,eAMrExP,GAAGc,OAASA,G,kBCvJhB,IACUK,EAEAD,EAFAC,EAAQC,EAAE,QAEVF,EAAe,CACjBwC,IAAKC,SAASC,KACd8L,oBAAoB,EAIpBC,kBAAmB,KAInBC,gBAAiB,GAIjBC,iBAAkB,KAIlBC,OAAQ,0CAIRC,WAAY,mDACZjR,KAAI,SAAJA,OAEIzC,KAAKsT,kBAAoBvO,EAAE,yCAC3B/E,KAAKwT,iBAAmBxT,KAAKsT,kBAAkBrW,KAAK,WACpD+C,KAAKuT,gBAAkBvT,KAAKsT,kBAAkBrW,KAAK,oBAEnD4H,EAAaQ,UACbR,EAAa8O,iBACb9O,EAAa+O,oBACb/O,EAAakH,IAAI8H,yBAErBxO,QAAS,SAATA,UACIP,EAAMK,GAAG,QAAS,4BAA4B,WAC1CN,EAAaiP,0BAGjBhP,EAAMK,GAAG,SAAU,0BAA0B,SAAUrF,GACnD,OAAO+E,EAAakP,0BAA0BjU,MAGlDgF,EAAMK,GAAG,QAAS,wBAAwB,WACtCJ,EAAE,wBAAwBiO,YAAY,UACtCjO,EAAE/E,MAAMsQ,SAAS,UAEbvL,EAAE/E,MAAM6G,SAAS,wBACjB9B,EAAE,wBAAwBuL,SAAS,uBACnC0D,aAAaC,QAAQ,wBAAyB,UAE9ClP,EAAE,wBAAwBiO,YAAY,uBACtCgB,aAAaC,QAAQ,wBAAyB,YAGtDnP,EAAMK,GAAG,QAAS,qBAAqB,SAAU9M,GAC7C,IAAM6b,EAAgBnP,EAAE1M,EAAE8b,eACtBD,EAAcjb,QACdib,EAAc,GAAGE,mBAAmB,GAAI,OAIpDR,kBAAmB,SAAnBA,sBACAD,eAAgB,SAAhBA,mBACA5H,IAAK,CACD8H,sBAAuB,SAAvBA,wBACQhP,EAAawO,qBAC8B,SAAvCW,aAAaH,sBACb9O,EAAE,wBAAwB9C,QACoB,SAAvC+R,aAAaH,uBACpB9O,EAAE,wBAAwB9C,WAK1CuE,IAAK,CACDa,IAAK,SAALA,QACAgN,KAAM,SAANA,KAAgB7Z,GACZA,EAAOA,EAAKkB,QAAQ,OAAQ,OAAOA,QAAQ,OAAQ,OACnD,IAEMuC,EADQ,IAAIqW,OADH,SAAW9Z,EAAO,aAEX+Z,KAAK1P,EAAawC,KACxC,OAAkB,MAAXpJ,EAAkB,KAAOA,EAAQ,IAE5CrE,MAAO,SAAPA,WAKJ4a,OAAQ,CAOJC,IAAG,SAAHA,IAAIC,EAAMnW,GACN,IAAMoW,EAAO9P,EAAayO,kBAAkB/N,KAAK,YAAYqP,GAAGrW,GAChEyB,KAAK6U,QAAQF,EAAMD,GACnB1U,KAAK8U,QAAQH,EAAMD,GACfC,EAAK9N,SAAS,YACd8N,EAAK3B,YAAY,UACjBnO,EAAayO,kBAAkB/N,KAAK,qBAAqBwP,SAAS/B,YAAY,UAC9EnO,EAAayO,kBAAkB/N,KAAK,uBAAuBlG,WASnEwV,QAAO,SAAPA,QAAQF,EAAMD,GACV,IAAOM,EAA6BN,EAA7BM,MAAOC,EAAsBP,EAAtBO,SAAUC,EAAYR,EAAZQ,SACxBP,EAAKpP,KAAK,YAAYuB,KAAKkO,GAC3BL,EAAKpP,KAAK,gBAAgBuB,KAAKmO,GAC/BN,EAAKpP,KAAK,gBAAgBuB,KAAKoO,GAC/BlV,KAAKmV,kBAAkBR,EAAMD,GAC7B1U,KAAKoV,gBAAgBT,EAAMD,IAU/BS,kBAAiB,SAAjBA,kBAAkBR,EAAMD,KAOxBU,gBAAe,SAAfA,gBAAgBT,EAAIU,GAAkB,IAC9BC,EAD2BD,EAAZE,aAEf1Q,EAAa0O,iBAAmB1O,EAAa0O,gBAAgB+B,KAC7DA,EAAYzQ,EAAa0O,gBAAgB+B,IAE7CX,EAAKpP,KAAK,iBAAiBuB,KAAKwO,IAQpCR,QAAO,SAAPA,QAAQH,EAAIa,GAAS,IAANC,EAAGD,EAAHC,IACXd,EAAKpP,KAAK,6CAA6Ce,KAAK,OAAQzB,EAAa6O,WAAa+B,GAC9Fd,EAAKpP,KAAK,0CAA0Ce,KAAK,OAAQzB,EAAa4O,OAASgC,KAG/F3B,qBAAsB,SAAtBA,uBACI,IAAI4B,EAAa7Q,EAAa8Q,UAAU,cACxC,GAAkB,MAAdD,GAAqC,KAAfA,EAAmB,CACzC,IAAME,EAAmB7Q,EAAE,4BACvB6Q,EAAiB3c,OAAS,IAC1B0B,SAASkb,OAAS,uCAClBD,EAAiB3T,WAI7B0T,UAAW,SAAXA,UAAqBnb,GAGjB,IAFA,IAAMsb,EAAStb,EAAO,IAChBub,EAAKpb,SAASkb,OAAO3W,MAAM,KACxBhG,EAAI,EAAGA,EAAI6c,EAAG9c,OAAQC,IAAK,CAEhC,IADA,IAAIoC,EAAIya,EAAG7c,GACY,MAAhBoC,EAAE0a,OAAO,IAAY1a,EAAIA,EAAEyB,UAAU,GAC5C,IAA2B,IAAvBzB,EAAEwB,QAAQgZ,GAAgB,OAAOxa,EAAEyB,UAAU+Y,EAAO7c,OAAQqC,EAAErC,QAEtE,OAAO,MAEX8a,0BAA2B,SAA3BA,0BAAqC1b,GAgBjC,OAfA0M,EAAE,wBAAwBkN,OAC1BlN,EAAE,uBAAuBuN,OACzBvN,EAAEkR,KAAK,CACHC,KAAM,OACN7O,IAAK,uBACLpK,KAAM8H,EAAE1M,EAAE+J,QAAQ+T,YAClBC,QAASvR,EAAawR,yBACtB/R,MAAO,SAAPA,MAAiBrH,GACb8H,EAAE,wBAAwBuN,KAAK,QAAQU,YAAY,UACnDjO,EAAE,wBAAwBuN,OAC1BvN,EAAE,+CAA+CkN,OACjDlN,EAAE,qBAAqBuR,MAAM,UAC7BvR,EAAE,qBAAqB9C,YAGxB,GAEXoU,yBAA0B,SAA1BA,yBAAoCpZ,GAChC8H,EAAE,0BAA0BuN,KAAK,QAAQU,YAAY,UACrDjO,EAAE,wBAAwBuN,OAC1BvN,EAAE,6CAA6CkN,OAC/ClN,EAAE,qBAAqBuR,MAAM,UAC7BvR,EAAE,qBAAqB9C,QACvB0B,GAAG2S,MAAMnR,GAAG8M,OACZpN,EAAa0R,yBAAyBC,KAAKC,MAAMxZ,GAAMyZ,aAQ3DH,yBAAwB,SAAxBA,yBAAyBI,GAAU,IAAAC,EAAA,KAC/BD,EAASxd,SAAQ,SAACS,EAAO2E,GACjBA,GAASsG,EAAa2O,kBAG1BoD,EAAKpC,OAAOC,IAAI7a,EAAO2E,QAInCoF,GAAGkB,aAAeA,G,8kCChNtB,+B,+CAAsC,OAAlB,WAAkB,MAAtC,CAAoB,KAEpB,iF,OACI,EAAAgS,aAAe,OACf,EAAAC,UAAY,aACZ,EAAA7E,KAAO,S,EACX,OAJwB,eAIxB,UAJA,CAAwB,KAMxB,iF,OACI,EAAA8E,eAAiB,8BACjB,EAAAzX,IAAM,mCACN,EAAAD,OAAS,sCACT,EAAAwX,aAAe,QACf,EAAAC,UAAY,SACZ,EAAAE,qBAAuB,IAAI,IAAkB,qC,EACjD,OAPwB,eAOxB,UAPA,CAAwB,KASxB,gF,OAEI,EAAAA,qBAAsC,G,EA6C1C,OA/CuB,cAOnB,sBAAI,mCAAa,C,IAMjB,WACI,OAAOhX,KAAKiX,gB,IAPhB,SAAkBC,GACdlX,KAAKiX,eAAiBC,EACtBlX,KAAKmX,iBAAmBnX,KAAKoX,aAAaF,GAC1ClX,KAAKqX,oBAAsBrX,KAAKsX,gBAAgBJ,I,gCAapD,mBAAAE,aAAA,SAAaF,GACT,OAAOlX,KAAKuX,SAASC,WAAWxX,KAAKyX,UAAUnY,IAAK4X,IASxD,mBAAAI,gBAAA,SAAgBJ,GACZ,OAAOlX,KAAKuX,SAASC,WAAWxX,KAAKyX,UAAUpY,OAAQ6X,IAS3D,sBAAI,oCAAc,C,IAAlB,WACI,OAAOlX,KAAKuX,SAASG,YAAY1X,KAAKyX,UAAUT,qBAAqB1T,SAAUtD,KAAKtB,U,gCAG5F,SA/CA,CAAuB,KAwOR,EApLf,WAcI,+BAAqBA,EAA+BiZ,GAA/B,KAAAjZ,UAA+B,KAAAiZ,YA2C1C,KAAAC,mBAAqB,SAACC,GAC5BA,EAAe1e,SAAQ,SAAC2e,EAAYvZ,G,UAC9BwZ,EAAyE,QAArD,EAAAD,aAAU,EAAVA,EAAYld,cAAc,mCAA2B,eAAEod,uBAC3EC,GAAiBH,aAAU,EAAVA,EAAYld,cAAc,kCAA6F,QAA1D,EAAAkd,aAAU,EAAVA,EAAYld,cAAc,wCAAgC,eAAEod,uBAA4E,QAApD,EAAAF,aAAU,EAAVA,EAAYld,cAAc,kCAA0B,eAAEod,uBACxNE,EAAWJ,aAAU,EAAVA,EAAYld,cAAc,uCAC3Cmd,IAAoBA,EAAmBnc,UAAW,4BAA2B2C,EAAQ,IACrF0Z,IAAiBA,EAAgBrc,UAAW,gBAAe2C,EAAQ,IACnE2Z,WAAW7c,aAAa,aAAc,wBAAuBkD,EAAQ,QAkH7E,OA3KI,sBAAI,6CAAU,C,IAAd,WACI,MAAO,CACHvC,MAAO,OACPmc,SAAU,U,gCAOlB,gCAAAvT,WAAA,WACI5E,KAAKoY,SAASxT,WAAW5E,KAAKtB,SAC9BsB,KAAKqY,oBACLrY,KAAKsY,iBAIT,gCAAAD,kBAAA,sBACQrY,KAAKoY,SAASlB,cACdlX,KAAKuY,wBAAwBvY,KAAKoY,SAASlB,eAG/ClX,KAAKoY,SAASpB,qBAAqB7d,SAAQ,SAAAqf,GACvC,EAAKJ,SAASjB,iBAAmB,EAAKiB,SAAShB,aAAaoB,GAC5D,EAAKJ,SAASf,oBAAsB,EAAKe,SAASd,gBAAgBkB,GAClE,EAAKD,wBAAwBC,OAI3B,gCAAAD,wBAAV,SAAkCrB,GAC9BlX,KAAKuX,SAAShV,iBAAiB2U,EAAe,QAASlX,KAAK2X,UAAUc,KAAKzY,OAC3EA,KAAKuX,SAAShV,iBAAiBvC,KAAKoY,SAASjB,iBAAkB,QAASnX,KAAKqS,MAAMoG,KAAKzY,OACxFA,KAAKuX,SAAShV,iBAAiBvC,KAAKoY,SAASf,oBAAqB,QAASrX,KAAKX,OAAOoZ,KAAKzY,OAC5FA,KAAKuX,SAAShV,iBAAiBvC,KAAKoY,SAASjB,iBAAiB,UAAWnX,KAAK0Y,aAAaD,KAAKzY,OAChGA,KAAKuX,SAAShV,iBAAiBvC,KAAKoY,SAASf,oBAAoB,UAAWrX,KAAK2Y,gBAAgBF,KAAKzY,QAIhG,gCAAA0Y,aAAV,SAAuBrgB,GACfA,EAAEsJ,UAAY,IAASiX,OACvB5Y,KAAKqS,MAAMha,IAIT,gCAAAsgB,gBAAV,SAA0BtgB,GAClBA,EAAEsJ,UAAY,IAASiX,OACvB5Y,KAAKX,OAAOhH,IAkBV,gCAAAga,MAAV,SAAgBha,G,QACZA,EAAEwgB,kBACFxgB,EAAEuJ,iBACF,IAAMkX,EAAMne,SAASG,cAAc,OACnCge,EAAIld,UAAiD,QAArC,EAAAoE,KAAKoY,SAASpB,qBAAqB,UAAE,eAAElb,UACvD,IAAMob,EAAgBlX,KAAKuX,SAASC,WAAWxX,KAAKyX,UAAUT,qBAAqB1T,SAAUwV,GACvFC,EAAc7B,EAActc,cAAc,SAC1Coe,EAAwC9B,EAActc,cAAc,qCAC1Eme,EAAYna,gBAAgB,UACC,QAA1B,EAAAoa,aAAiB,EAAjBA,EAAmB5V,eAAO,eAAEnK,UAC3B+f,EAAkB5V,QAAQ,GAAGnE,UAAW,GAE5Ce,KAAKtB,QAAQ1D,sBAAsB,YAAakc,GAChDlX,KAAKoY,SAASlB,cAAgBA,EAC9BlX,KAAKqY,oBACLrY,KAAKsY,gBAEL,IAAMW,EAAcjZ,KAAKoY,SAASlB,cAC5BgC,EAAoBD,aAAY,EAAZA,EAAcre,cAAc,4BACtDse,WAAoB9d,SAQxB,gCAAAiE,OAAA,SAAOhH,G,MACHA,EAAEwgB,kBACFxgB,EAAEuJ,iBACF,IAIIuX,EACAC,EALEC,EAAoBhhB,EAAE8b,cAA8B9R,QAAQrC,KAAKyX,UAAUT,qBAAqB1T,UAChGgW,EAAatZ,KAAKoY,SAAS1Z,QAAQyD,iBAAiBnC,KAAKyX,UAAUT,qBAAqB1T,UACxFiW,EAAyC,QAAvB,EAAAxf,MAAMG,KAAKof,UAAY,eAAE3gB,QAAO,SAACmf,GAAe,OAAAA,IAAeuB,KAKvFC,WAAangB,SAAQ,SAAC2e,EAAYvZ,GAC9B,GAAIuZ,IAAeuB,EAAkB,CACjC,IAAMG,EAAyB,IAAVjb,EAAc+a,EAAY/a,EAAM,GAAK+a,EAAY/a,EAAM,GAG5E6a,OADAA,GAAyBD,OADzBA,EAAmBK,QACuB,EAAjBL,EAAmBve,cAAc,sDAAuDue,aAAiB,EAAjBA,EAAmBve,cAAc,qDAAuDue,aAAiB,EAAjBA,EAAmBve,cAAc,oDAC1Owe,EAAwB/d,aAAa,WAAY,UAGjDyc,WAAYlZ,gBAAgB,eAIpCwa,WAAwBhe,QACxBie,WAAmBha,SACnBW,KAAK4X,mBAAmB2B,GACxBvZ,KAAKsY,iBAQT,gCAAAA,cAAA,sBACU7J,EAAQzO,KAAKoY,SAASrB,eAC5BtI,EAAMtV,SAAQ,SAACub,EAAMhX,G,UACjB,EAAK+b,sBAAsB/E,EAAMhX,GACjC,IAAM4B,EAAM,EAAK8Y,SAAShB,aAAa1C,GACjCrV,EAAS,EAAK+Y,SAASd,gBAAgB5C,GACvCqD,EAAmE,QAA/C,EAAArD,aAAI,EAAJA,EAAM9Z,cAAc,mCAA2B,eAAEod,uBACrEC,GAAiBvD,aAAI,EAAJA,EAAM9Z,cAAc,kCAAuF,QAApD,EAAA8Z,aAAI,EAAJA,EAAM9Z,cAAc,wCAAgC,eAAEod,uBAAsE,QAA9C,EAAAtD,aAAI,EAAJA,EAAM9Z,cAAc,kCAA0B,eAAEod,uBAExMta,IAAQ+Q,EAAMxV,OAAS,GACvBoG,WAAQD,UAAUE,IAAI,EAAKF,UAAU6S,MACrC3S,WAAKF,UAAUC,OAAO,EAAKD,UAAU6S,MACrC8F,IAAoBA,EAAmBnc,UAAW,4BAA2B8B,EAAM,IACnFua,IAAiBA,EAAgBrc,UAAW,gBAAe8B,EAAM,IACjE2B,WAAQhE,aAAa,aAAc,wBAAuBqC,EAAM,IAChE4B,WAAKjE,aAAa,aAAc,iBAEhCiE,WAAKF,UAAUE,IAAI,EAAKF,UAAU6S,MAClC5S,WAAQD,UAAUC,OAAO,EAAKD,UAAU6S,WAUpD,gCAAAwH,sBAAA,SAAsB/E,EAAmBhX,GACrC,IAAMya,EAAWnY,KAAKuX,SAASC,WAA6BxX,KAAKyX,UAAUX,UAAWpC,GAChF1Y,EAAQgE,KAAKuX,SAASC,WAA6BxX,KAAKyX,UAAUZ,aAAcnC,GAChFgF,EAAS1Z,KAAKuX,SAASG,YAAY,QAAShD,GAC5CiF,EAASjc,EAAM,EACrB1B,EAAMxB,KAAOwF,KAAK4Z,WAAW5d,MAAQ2d,EACrCxB,EAAS3d,KAAOwF,KAAK4Z,WAAWzB,SAAWwB,EAC3C3d,EAAMuD,GAAKS,KAAKZ,UAAUyX,aAAe8C,EACzCxB,EAAS5Y,GAAKS,KAAKZ,UAAU0X,UAAY6C,EACzCD,EAAOvgB,SAAQ,SAAC0gB,GACIA,EAAM1e,aAAa,OACvB2e,SAAS,QACjBD,EAAMxe,aAAa,MAAO,OAAOse,GAEjCE,EAAMxe,aAAa,MAAO,aAAase,OA7KjDI,sBAAqB,YAD1B,YAAkB,EAAWC,EAAUC,EAAWC,G,gCAejBC,YAAa,YAdzCJ,uBAAN,G,69BCrEA,+B,+CAAsC,OAAlB,WAAkB,MAAtC,CAAoB,KAEpB,mC,+CAA0C,OAAlB,eAAkB,UAA1C,CAAwB,KAExB,iF,OACI,EAAAK,WAAa,IAAI,IAAkB,4BACnC,EAAAC,YAAc,IAAI,IAAkB,mCACpC,EAAAC,iBAAmB,IAAI,IAAkB,gBACzC,EAAAC,OAAS,IAAI,IAAkB,yBAC/B,EAAAC,QAAU,IAAI,IAAkB,UAChC,EAAAC,eAAiB,IAAI,IAAkB,8B,EAC3C,OAPwB,eAOxB,UAPA,CAAwB,KASxB,gF,OAEI,EAAAF,OAAwB,GACxB,EAAAC,QAAyB,G,EAsC7B,OAzCuB,cAOnB,sBAAI,8BAAQ,C,IAAZ,WACI,OAAOxa,KAAK0a,W,IAGhB,SAAa9gB,GACToG,KAAK0a,UAAY9gB,EACjBoG,KAAK2a,oBACL,IAAM5F,EAASnb,EAAMyI,QAAWrC,KAAKyX,UAAU2C,WAAW9W,SAAQ,KAAKtD,KAAKyX,UAAU4C,YAAY/W,UAClGtD,KAAK4a,oBAAoB7F,I,gCAO7B,mBAAA4F,kBAAA,WACI3a,KAAKwa,QAAQrhB,SAAQ,SAAAub,GACjBA,EAAKrZ,aAAa,WAAY,YAStC,mBAAAuf,oBAAA,SAAoB7F,GACXA,GAGL/U,KAAKuX,SAASG,YAAY1X,KAAKyX,UAAU+C,QAAQlX,SAAUyR,GAAQ5b,SAAQ,SAAAub,GACvEA,EAAK9V,gBAAgB,gBAGjC,SAzCA,CAAuB,KAkHR,EApEf,WAEI,mCAAqBF,EAA+BiZ,GAA/B,KAAAjZ,UAA+B,KAAAiZ,YAgExD,OA9DI,oCAAA/S,WAAA,WACS5E,KAAKtB,UAGVsB,KAAKoY,SAASxT,WAAW5E,KAAKtB,SAC9BsB,KAAKqY,sBAGT,oCAAAA,kBAAA,sBACIrY,KAAKoY,SAASmC,OAAOphB,SAAQ,SAAA0hB,GACzB,EAAKtD,SAAShV,iBAAiBsY,EAAO,QAAS,EAAKC,SAASrC,KAAK,EAAMoC,OAE5E7a,KAAKoY,SAASoC,QAAQrhB,SAAQ,SAAA+J,GAC1B,EAAKqU,SAAShV,iBAAiBW,EAAQ,SAAU,EAAKyU,eAQpD,oCAAAmD,SAAV,SAAmBD,EAAoB/a,GAC/B+a,IAAU7a,KAAKoY,SAAS2C,WAG5B/a,KAAKoY,SAAS2C,SAAWF,EACzB7a,KAAK2X,UAAU7X,KAGZ,oCAAAkb,cAAP,W,UACUvP,EAAS,CACXwP,SAAU,EACVC,UAAW,EACXC,OAAQ,EACRC,QAAS,GAEbpb,KAAKoY,SAASoC,QAAQrhB,SAAQ,SAACub,GAEvBjJ,EAAO4P,eAAe3G,EAAKnV,MAC3BkM,EAAOiJ,EAAKnV,IAAMgJ,SAASmM,EAAK9a,WAGhC,IAAAqhB,EAAyCxP,EAAM,SAArCyP,EAA+BzP,EAAM,UAA1B0P,EAAoB1P,EAAM,OAAlB2P,EAAY3P,EAAM,QAEjD6P,EAA6D,QAAvC,EAA8B,QAA9B,EAAAtb,KAAKoY,SAASkC,wBAAgB,eAAEiB,eAAO,SAC7DC,EAAejjB,OAAOkT,OAAOA,GAAQgQ,MAAK,SAAApd,GAAK,OAAAqd,MAAMrd,MACrDsd,EAA0BR,EAASF,GAAcE,IAAWF,GAAYG,EAAUF,EAClFU,EAAsBN,IAAwBE,GAAgBG,GAC9DE,EAAwC,QAA5B,EAAA7b,KAAKoY,SAASqC,sBAAc,eAAEtf,aAAa,cACvD2gB,EAAoBX,EAASF,EAAWG,EAAUF,EAWxD,OATGlb,KAAKoY,SAASqC,iBACTmB,IAAeF,MAAMI,GACrB9b,KAAKoY,SAASqC,eAAe7e,UAAYigB,EAGzC7b,KAAKoY,SAASqC,eAAe7e,UAAY,IAI1C0f,IAAwBE,GAAgBG,IAhEjDI,0BAAyB,uBAD9B,YAAkB,EAAW,EAAU,EAAW,G,2CAGjB5B,YAAa,YAFzC4B,2BAAN,G,khBCgDe,EAjHf,YAwBI,0BAAsBC,EAAkBC,GAAxC,MACI,YAAMD,IAAO,KADK,EAAAA,SAAkB,EAAAC,aAtB9B,EAAAC,eAAwB,0CAwB9B,IAAM3E,EAAW,IAAU/Q,IAAI,KACzBxK,EAAmC,mBAApBggB,EAAO1Y,SAA0B0Y,EAAO1Y,WAAaiU,EAASC,WAAWwE,EAAO1Y,U,OACrG,EAAK6Y,aAAeH,EAAOG,cAAgBngB,EAC3C,EAAKogB,iBAAmBJ,EAAOI,kBAAoB,GACnD,EAAKC,UAAY,GAEkB,mBAAxBL,EAAOM,eACd,EAAKA,aAAeN,EAAOM,cAE/B,EAAKC,WAAaP,EAAOO,YAAc,CAAC,qBACxC,EAAKC,sB,EAwEb,OA5G+B,sBAS3B,sBAAI,mCAAK,C,IAAT,WACI,OAAOxc,KAAKic,Y,gCAGhB,sBAAI,oCAAM,C,IAAV,WACI,OAAOjc,KAAKqc,UAAU1f,KAAI,SAAC,GACvB,OAD6B,KAChB/C,U,gCAIX,2BAAA6iB,YAAV,SAAsB7iB,GAClB,OAAOoG,KAAKyL,OAAOiR,WAAU,SAAAhI,GAAM,OAAAA,IAAS9a,MAAU,GAmB1D,2BAAA4iB,oBAAA,sBACIxc,KAAKoc,iBAAiBzf,KAAI,SAAC,G,IAAEkd,EAAK,QAAEjgB,EAAK,QACrC,EAAK+iB,eAAe9C,EAAOjgB,OAInC,2BAAAgjB,WAAA,SAAWC,EAA6BjjB,GACpC,GAAKijB,EAAL,CAGA,IAAIC,EAAY,8BAA8BD,EAAUriB,KAAI,cAAcZ,EAAK,MACzEmjB,EAAWpiB,SAASG,cAAc,OAExC,OADAiiB,EAASnhB,UAAYkhB,EACdC,EAASC,aAGpB,2BAAAC,UAAA,WACI,OAAOjd,KAAKqc,WAGhB,2BAAAa,cAAA,WACIld,KAAKqc,UAAUljB,SAAQ,SAAC,G,IAAC6C,EAAK,KAAEgD,EAAG,KAC/BhD,EAAMf,WAAW2H,YAAY5G,GAC7BgD,EAAI/D,WAAW2H,YAAY5D,MAE/BgB,KAAKqc,UAAY,GACbrc,KAAKsc,cACLtc,KAAKsc,gBAIb,2BAAAK,eAAA,SAAe9C,EAAejgB,G,MAC1B,IAAGoG,KAAKyc,YAAY7iB,GAApB,CAGA,IAAM8a,EAAO1U,KAAKic,WACZjgB,EAAQgE,KAAK4c,WAAWlI,EAAM9a,GAC9BoF,EAAMgB,KAAKmd,SAAStD,EAAO7d,GACjCgE,KAAKqc,UAAUvjB,KAAK,CAACkD,EAAOgD,IACxBgB,KAAKgc,OAAOG,aACZnc,KAAKmc,aAAaiB,YAAYpe,GAE9BgB,KAAKmc,aAAalhB,WAAWC,aAAa8D,EAAKgB,KAAKmc,cAEtC,QAAlB,EAAAzH,EAAK2I,qBAAa,SAAEniB,aAAac,EAAO0Y,KAI5C,2BAAAyI,SAAA,SAAS9I,EAAcrY,G,MAAvB,OACUgD,EAAMrE,SAASG,cAAc,QACnCkE,EAAIpD,UAAY,SAASyY,EAAI,UAC7B,IAAM7O,EAAM7K,SAASG,cAAc,KAgBnC,OAfA0K,EAAI5J,UAAYoE,KAAKkc,eACrB1W,EAAI+B,KAAO,IACX/B,EAAIjD,iBAAiB,SAAS,SAAClK,GAC3BA,EAAEuJ,iBACF5F,EAAMf,WAAW2H,YAAY5G,GAC7BgD,EAAI/D,WAAW2H,YAAY5D,GAC3B,EAAKqd,UAAY,EAAKA,UAAU1jB,QAAO,SAAC,G,IAAC2kB,EAAW,KAAEC,EAAS,KAC3D,QAAQvhB,IAAUshB,GAAete,IAAQue,MAEzC,EAAKjB,cACL,EAAKA,kBAGbtd,EAAIoe,YAAY5X,IAChB,EAAAxG,EAAII,WAAUE,IAAG,QAAIU,KAAKuc,YACnBvd,GAEf,iBA5GA,CAA+B,EAAAnE,G,w4ECK/B,+B,+CAAsC,OAAlB,WAAkB,MAAtC,CAAoB,KAEpB,iF,OACI,EAAA2iB,iBAAmB,wCACnB,EAAAC,iBAAmB,0BACnB,EAAArc,OAAS,S,EACb,OAJwB,eAIxB,UAJA,CAAwB,KAMxB,iF,OACI,EAAAsc,aAAe,gBACf,EAAAC,oBAAsB,wB,EAC1B,OAHwB,eAGxB,UAHA,CAAwB,KAKxB,kC,+CAAsD,OAA/B,cAA+B,SAAtD,CAAuB,KAsOR,GAnNf,WA8CI,oCAAqBC,EAAiCC,GAAjC,KAAAD,UAAiC,KAAAC,eA5C5C,KAAAC,aAA8C,IAAIC,IAClD,KAAA9f,QAAyD,GA4C/D+B,KAAK4d,QAAUA,EACf5d,KAAK6d,aAAeA,EACpB7d,KAAKge,cAAgB,GACrBhe,KAAKie,SAAWje,KAAKke,QA+J7B,OA5MI,sBAAc,+CAAO,C,IAArB,WACI,MAAO,CACHC,SAAU,IACVC,SAAU,IACV/W,IAAK,sB,gCAIb,sBAAc,+CAAO,C,IAArB,WACI,MAAO,CACHgX,OAAQ,MACRC,WAAY,QACZC,YAAY,EACZC,kBAAkB,EAClBC,aAAc,QACdC,IAAK,S,gCASb,sBAAI,gDAAQ,C,IAAZ,WACI,MAAO,mE,gCAGD,qCAAAC,gBAAV,SAA0BjK,EAAMzX,GAC5B,IAAMpC,EAAIF,SAASG,cAAc,KACjCD,EAAE0M,KAAOtK,EAAKrD,MAAMyN,IACpBxM,EAAEe,UAAY,SAASqB,EAAKrD,MAAM8C,UAAS,UAC3C7B,EAAE+jB,UAAY,qBACdlK,EAAKrZ,aAAa,aAAcR,EAAEgkB,WAClCnK,EAAK9Y,UAAY,GACjB8Y,EAAK0I,YAAYviB,GACjBA,EAAE0H,iBAAiB,SAAS,SAACzC,GACzBA,EAAM8B,qBAWd,qCAAAgD,WAAA,WACI5E,KAAKqY,qBAGT,qCAAAA,kBAAA,WACIrY,KAAK4d,QAAQzkB,QAAQ6G,KAAK8e,iBAAiBrG,KAAKzY,OAChDA,KAAK+e,yBAGT,qCAAAA,sBAAA,WACI,IAAMC,EAAqBrkB,SAASC,cAAc,6CAC5CqkB,EAAoBtkB,SAASwH,iBAAiB,8BAU9C+c,EAAW,IAAIC,kBATI,SAASC,GAC9BA,EAAcjmB,SAAQ,SAAAkmB,GACfA,EAASjd,OAAO0D,SAAS7M,OACxB+lB,EAAmBpjB,UAAeyjB,EAASjd,OAAO0D,SAAS7M,OAAM,kEAEjE+lB,EAAmBpjB,UAAY,kCAK3CqjB,EAAkB9lB,SAAQ,SAAAwH,GACtBue,EAASI,QAAQ3e,EAAS,CAAE4e,WAAW,QAIrC,qCAAAC,aAAV,SAAuB9K,GACnB,IAAM+K,EAAO/K,EAAK9a,MAAM8lB,OAAOhkB,QAAQ,SAAU,KAC3C,EAA8BsE,KAAKke,QAAjCC,EAAQ,WAAEC,EAAQ,WAAE/W,EAAG,MAC/B,GAAIoY,EAAKvgB,MAAM,KAAKjG,QAAUklB,GAAYsB,EAAKxmB,QAAUmlB,EACrD,MAAO,GAEL,MAA6C1J,EAAKiL,QAAhDC,EAAkB,qBAAEC,EAAkB,qBAE1C9hB,EAAQ,WAAW6hB,EAAkB,UAAUE,mBAAmBL,GAKtE,OAJII,IACA9hB,EAAWA,EAAK,WAAW8hB,GAGxB,GAAGxY,EAAMtJ,GAGV,qCAAAgiB,aAAV,SAAuBrL,EAAmBxb,GAA1C,WACI,MAAO,CACH+D,KAAM,CACFG,IAAK,wD,kEAEY,OADPiK,EAAMrH,KAAKwf,aAAa9K,GACjB,GAAMsL,MAAM3Y,I,OAClB,SADM,SACK4Y,Q,OAAlB,MAAO,CAAP,EAAO,kBAEX/iB,OAAO,GAEXoG,SAAU,WAAM,OAAAoR,GAChB7W,YAAa,CACT2W,QAAQ,EACR0L,OAAQ,gBAAkBhnB,EAC1B2C,MAAOmE,KAAKZ,UAAUoe,iBACtB1f,WAAY,IAEhBN,WAAY,CACR3B,MAAOmE,KAAKZ,UAAUqe,iBACtB9c,QAASX,KAAK2e,gBAAgBlG,KAAKzY,OAEvCtD,WAAW,EACXyjB,MAAM,EACN/f,UAAW,EACXgc,iBAAkBpc,KAAKogB,sBAAsB1L,GAC7CnX,aAAc,KACd+e,aAAc,OAIZ,qCAAA8D,sBAAV,SAAgC1L,GACpB,IAAAjJ,EAAWiJ,EAAKiL,QAAO,OAC/B,OAAOlU,EAAS+K,KAAKC,MAAMhL,GAAU,IAG/B,qCAAA4U,2BAAV,SAAqCnC,EAASxJ,GAC1C,OAAO,IAAI,EAAiBwJ,EAASxJ,IAG/B,qCAAAoK,iBAAV,SAA2BpK,EAAwBxb,GAAnD,I,EAAA,OACUglB,EAAUle,KAAK+f,aAAarL,EAAMxb,GACxCglB,EAAQ3gB,aAAe,SAACQ,EAAYuiB,GAAgB,SAAKC,eAAeC,EAAsBziB,EAAOuiB,IACrGpC,EAAQ5B,aAAe,WAAM,SAAKA,aAAakE,IAC/C,IAAMA,EAAuBxgB,KAAKqgB,2BAA2BnC,EAASxJ,GACtE1U,KAAK8d,aAAa/R,IAAI2I,EAAMA,EAAK3T,aACjCf,KAAKge,cAAcllB,KAAK0nB,GACuC,QAA/D,EAAAxgB,KAAKuX,SAASlV,QAAQrC,KAAKyX,UAAUkG,oBAAqBjJ,UAAK,SACzDnS,iBAAiB,QAASvC,KAAKygB,oBAAoBhI,KAAKzY,KAAM0U,IACpE1U,KAAK0gB,kBAAkBF,GACvB9L,EAAKnS,iBAAiB,OAAQvC,KAAK2gB,OAAOlI,KAAKzY,KAAMwgB,EAAsB9L,IAC3EA,EAAKnS,iBAAiB,YAAavC,KAAK4gB,YAAYnI,KAAKzY,KAAMwgB,EAAsB9L,IACrFA,EAAKnS,iBAAiB,UAAWvC,KAAK6gB,UAAUpI,KAAKzY,QAG/C,qCAAAugB,eAAV,SAAyBC,EAAwCziB,EAAYuiB,GAKzE,OAJcE,EAAqBnE,UAAU9W,MAAK,SAAAmP,GACvC,IAAA1Y,EAAS0Y,EAAI,GACpB,OAAO4L,EAAO1mB,OAAUoC,EAA2BpC,SAG5C,KAEJ0mB,EAAO5jB,WAAa4jB,EAAOzG,OAG5B,qCAAAyC,aAAV,SAAuBkE,GACnBxgB,KAAK0gB,kBAAkBF,GACvBxgB,KAAK6d,gBAGC,qCAAA4C,oBAAV,SAA8BK,GAC1BA,EAAM1lB,QACN0lB,EAAMzD,cAAc7d,UAAYshB,EAAMzD,cAAc0D,cAG9C,qCAAAL,kBAAV,SAA4B,G,IAAEI,EAAK,QAAW,YAChB7nB,QAEtB6nB,EAAMliB,gBAAgB,eACtBkiB,EAAME,MAAMvT,MAAQ,SAEpBqT,EAAMzlB,aAAa,cAAe2E,KAAK8d,aAAatX,IAAIsa,IACxDA,EAAME,MAAMvT,MAAQ,SAIlB,qCAAAkT,OAAV,SAAiBM,EAAcjlB,EAAO3D,GAClC,GAAIA,EAAE6oB,eAAiB7oB,EAAE6oB,cAAc7e,QAAQrC,KAAKyX,UAAUiG,cAG1D,OAFA1hB,EAAMpC,MAAQ,UACdoG,KAAK/B,QAAU,IAGnB,GAAI+B,KAAK/B,QAAQhF,QAAkC,IAAxB+G,KAAK/B,QAAQhF,OAAc,CAC5C,MAAmB+G,KAAK/B,QAAQkjB,MAAMvnB,MAApCigB,EAAK,QAAEjgB,EAAK,QACpBqnB,EAAatE,eAAe9C,EAAOjgB,GAEvCoC,EAAMpC,MAAQ,GACdoG,KAAK/B,QAAU,IAGT,qCAAA2iB,YAAV,SAAsBK,EAAgCjlB,EAAyB8D,GACrE,MAAmBA,EAAM1D,OAAOkC,UAAU1E,MAAxCigB,EAAK,QAAEjgB,EAAK,QACpBqnB,EAAatE,eAAe9C,EAAOjgB,GACnCoC,EAAMpC,MAAQ,GACdoG,KAAKuX,SAAS6J,cAAcH,EAAa9E,aAAcnc,KAAKZ,UAAUgC,QAAS6f,EAAa5E,UAAUpjB,QACtG+G,KAAK0gB,kBAAkBO,GACvBjhB,KAAK6d,gBAGC,qCAAAgD,UAAV,SAAoB,G,IAAEzkB,EAAM,SACxB4D,KAAK/B,QAAU7B,EAAO6B,SA9MxBojB,2BAA0B,uBAD/B,YAAkB,EAAW,EAAU,EAAW,G,iDA+CqBC,YA9ClED,4BAAN,G,o+BC1BA,gC,+CAAsC,OAAlB,YAAkB,MAAtC,CAAoB,KAEpB,oC,+CAA0C,OAAlB,gBAAkB,UAA1C,CAAwB,KAExB,kF,OACI,EAAAtK,eAAiB,IAAI,IAAkB,+BACvC,EAAAwK,eAAiB,0BACjB,EAAAnH,WAAa,IAAI,IAAkB,+BACnC,EAAAoH,aAAe,IAAI,IAAkB,uBAAwB,YAC7D,EAAAC,mBAAqB,IAAI,IAAkB,kCAC3C,EAAAC,2BAA6B,yE,EACjC,OAPwB,gBAOxB,UAPA,CAAwB,KASxB,iF,OAII,EAAAD,mBAAyC,G,EAC7C,OALuB,eAKvB,SALA,CAAuB,KAUvB,cAoBI,wBAAqB/iB,GAAA,KAAAA,UA0HzB,OAxHI,yBAAAkG,WAAA,WACI5E,KAAKoY,SAASxT,WAAW5E,KAAKtB,SAC9BsB,KAAKqY,qBAIT,yBAAAA,kBAAA,WACIrY,KAAK2hB,cACL3hB,KAAKwH,YACLxH,KAAK8e,mBACL9e,KAAK4hB,uBACL5hB,KAAK6hB,yBACL7hB,KAAK8hB,mCAMT,yBAAAH,YAAA,WACI3hB,KAAK+hB,gBAAkB,IAAI,EAAsB/hB,KAAKoY,SAASrB,eAAgB/W,KAAK4hB,qBAAqBnJ,KAAKzY,OAC9GA,KAAK+hB,gBAAgBnd,cAOzB,yBAAA4C,UAAA,WACIxH,KAAKgiB,mBAAqB,IAAI,EAA0BhiB,KAAKoY,SAASgC,WAAapa,KAAK4hB,qBAAqBnJ,KAAKzY,OAClHA,KAAKgiB,mBAAmBpd,cAM5B,yBAAAka,iBAAA,WACS9e,KAAKiiB,aAAaC,OACnBliB,KAAKmiB,qBAAuB,IAAI,GAA2BniB,KAAKoY,SAASqJ,mBAAoBzhB,KAAK4hB,qBAAqBnJ,KAAKzY,OAC5HA,KAAKmiB,qBAAqBvd,eAOlC,yBAAAgd,qBAAA,SAAqB9hB,GACjB,IAAMsiB,EAASpiB,KAAKqiB,kBAAoBriB,KAAKsiB,uBAA0BtiB,KAAKgiB,mBAAmBhH,gBAC3FoH,EACApiB,KAAKoY,SAASoJ,aAAanmB,aAAa,WAAY,GAAG+mB,GAEvDpiB,KAAKoY,SAASoJ,aAAa5iB,gBAAgB,aAOlD,yBAAAkjB,gCAAA,SAAgChiB,GAC7B,IAAMyiB,EAAcviB,KAAKuX,SAASG,YAA8B1X,KAAKyX,UAAUiK,4BAC/Ea,EAAYppB,SAAQ,SAAAub,GAChBA,EAAKnS,iBAAiB,UAAU,SAACzC,GAC7ByiB,EAAYppB,SAAQ,SAAAub,GAChBA,EAAK6G,SAAU,KAEIzb,EAAMsC,OACdmZ,SAAU,SAU3B,yBAAA8G,eAAV,WACI,IAAMG,EAAaxiB,KAAKuX,SAASG,YAA8B1X,KAAKyX,UAAU8J,eAAgBvhB,KAAKoY,SAASrB,gBAI5G,OAHoByL,EAAW7pB,QAAO,SAACO,GACnC,OAAQA,EAAEU,SAEKX,SAAWupB,EAAWvpB,QAQlC,yBAAAqpB,oBAAV,WACG,IAAKtiB,KAAKmiB,qBACN,OAAO,EAEX,IAAMM,EAAcziB,KAAKmiB,qBAAqBnE,cAC9C,OAAKyE,EAAYxpB,QAKJ,IAFNwpB,EAAY9pB,QAAO,SAAA+pB,GACtB,OAAAA,EAAWzF,YAAYhkB,OAAS,KAClCA,QAGI,yBAAA4oB,uBAAV,sBACI7hB,KAAKtB,QAAQ6D,iBAAiB,SAAS,SAAClK,G,MACpCA,EAAEuJ,iBACF,EAAKmgB,gBAAgB3J,SAASrB,eAAe5d,SAAQ,SAACub,EAAM9U,GAC9C,IAANA,GACA,EAAK2X,SAASC,WAA6B,QAAS9C,GAAM9a,MAAQ,GAClE,EAAK2d,SAASC,WAA8B,SAAU9C,GAAMiO,cAAgB,GAE5EjO,EAAKrV,YAGb,EAAK0iB,gBAAgBzJ,gBACqB,QAA1C,IAAK0J,mBAAmB5J,SAASmC,OAAO,UAAE,SAAEtY,QAC5C,EAAKkgB,qBAAqBnE,cAAc7kB,SAAQ,SAAAub,GAC5CA,EAAKwI,uBAtIjB,0BADC,c,uCACsB,M,gDAHrBvY,eAAc,0BADnB,YAAkB,GAAW,GAAU,GAAW,I,8CAqBjBwV,eApB5BxV,gBAAN,GAgJe","file":"js/vendors~search-0d39815d9ccf51a069a4.js","sourcesContent":["var e,t;e=this,t=function(){\"use strict\";function e(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function t(t){for(var n=1;ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var s,u=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return u=e.done,e},e:function(e){a=!0,s=e},f:function(){try{u||null==n.return||n.return()}finally{if(a)throw s}}}}(n.keys);try{for(l.s();!(c=l.n()).done;)a(c.value)}catch(e){l.e(e)}finally{l.f()}}else a()})),n.filter&&(i=n.filter(i));var s=i.slice(0,t.resultsList.maxResults);t.feedback={query:e,matches:i,results:s},f(\"results\",t)},m=\"aria-expanded\",b=\"aria-activedescendant\",y=\"aria-selected\",v=function(e,n){e.feedback.selection=t({index:n},e.feedback.results[n])},g=function(e){e.isOpen||((e.wrapper||e.input).setAttribute(m,!0),e.list.removeAttribute(\"hidden\"),e.isOpen=!0,f(\"open\",e))},w=function(e){e.isOpen&&((e.wrapper||e.input).setAttribute(m,!1),e.input.setAttribute(b,\"\"),e.list.setAttribute(\"hidden\",\"\"),e.isOpen=!1,f(\"close\",e))},O=function(e,t){var n=t.resultItem,r=t.list.getElementsByTagName(n.tag),o=!!n.selected&&n.selected.split(\" \");if(t.isOpen&&r.length){var s,u,a=t.cursor;e>=r.length&&(e=0),e<0&&(e=r.length-1),t.cursor=e,a>-1&&(r[a].removeAttribute(y),o&&(u=r[a].classList).remove.apply(u,i(o))),r[e].setAttribute(y,!0),o&&(s=r[e].classList).add.apply(s,i(o)),t.input.setAttribute(b,r[t.cursor].id),t.list.scrollTop=r[e].offsetTop-t.list.clientHeight+r[e].clientHeight+5,t.feedback.cursor=t.cursor,v(t,e),f(\"navigate\",t)}},A=function(e){O(e.cursor+1,e)},k=function(e){O(e.cursor-1,e)},L=function(e,t,n){(n=n>=0?n:e.cursor)<0||(e.feedback.event=t,v(e,n),f(\"selection\",e),w(e))};function j(e,n){var r=this;return new Promise((function(i,o){var s,u;return s=n||((u=e.input)instanceof HTMLInputElement||u instanceof HTMLTextAreaElement?u.value:u.innerHTML),function(e,t,n){return t?t(e):e.length>=n}(s=e.query?e.query(s):s,e.trigger,e.threshold)?d(e,s).then((function(n){try{return e.feedback instanceof Error?i():(h(s,e),e.resultsList&&function(e){var n=e.resultsList,r=e.list,i=e.resultItem,o=e.feedback,s=o.matches,u=o.results;if(e.cursor=-1,r.innerHTML=\"\",s.length||n.noResults){var c=new DocumentFragment;u.forEach((function(e,n){var r=a(i.tag,t({id:\"\".concat(i.id,\"_\").concat(n),role:\"option\",innerHTML:e.match,inside:c},i.class&&{class:i.class}));i.element&&i.element(r,e)})),r.append(c),n.element&&n.element(r,o),g(e)}else w(e)}(e),c.call(r))}catch(e){return o(e)}}),o):(w(e),c.call(r));function c(){return i()}}))}var S=function(e,t){for(var n in e)for(var r in e[n])t(n,r)},T=function(e){var n,r,i,o=e.events,s=(n=function(){return j(e)},r=e.debounce,function(){clearTimeout(i),i=setTimeout((function(){return n()}),r)}),u=e.events=t({input:t({},o&&o.input)},e.resultsList&&{list:o?t({},o.list):{}}),a={input:{input:function(){s()},keydown:function(t){!function(e,t){switch(e.keyCode){case 40:case 38:e.preventDefault(),40===e.keyCode?A(t):k(t);break;case 13:t.submit||e.preventDefault(),t.cursor>=0&&L(t,e);break;case 9:t.resultsList.tabSelect&&t.cursor>=0&&L(t,e);break;case 27:t.input.value=\"\",w(t)}}(t,e)},blur:function(){w(e)}},list:{mousedown:function(e){e.preventDefault()},click:function(t){!function(e,t){var n=t.resultItem.tag.toUpperCase(),r=Array.from(t.list.querySelectorAll(n)),i=e.target.closest(n);i&&i.nodeName===n&&L(t,e,r.indexOf(i))}(t,e)}}};S(a,(function(t,n){(e.resultsList||\"input\"===n)&&(u[t][n]||(u[t][n]=a[t][n]))})),S(u,(function(t,n){e[t].addEventListener(n,u[t][n])}))};function E(e){var n=this;return new Promise((function(r,i){var o,s,u;if(o=e.placeHolder,u={role:\"combobox\",\"aria-owns\":(s=e.resultsList).id,\"aria-haspopup\":!0,\"aria-expanded\":!1},a(e.input,t(t({\"aria-controls\":s.id,\"aria-autocomplete\":\"both\"},o&&{placeholder:o}),!e.wrapper&&t({},u))),e.wrapper&&(e.wrapper=a(\"div\",t({around:e.input,class:e.name+\"_wrapper\"},u))),s&&(e.list=a(s.tag,t({dest:[s.destination,s.position],id:s.id,role:\"listbox\",hidden:\"hidden\"},s.class&&{class:s.class}))),T(e),e.data.cache)return d(e).then((function(e){try{return c.call(n)}catch(e){return i(e)}}),i);function c(){return f(\"init\",e),r()}return c.call(n)}))}function x(e){var t=e.prototype;t.init=function(){E(this)},t.start=function(e){j(this,e)},t.unInit=function(){if(this.wrapper){var e=this.wrapper.parentNode;e.insertBefore(this.input,this.wrapper),e.removeChild(this.wrapper)}var t;S((t=this).events,(function(e,n){t[e].removeEventListener(n,t.events[e][n])}))},t.open=function(){g(this)},t.close=function(){w(this)},t.goTo=function(e){O(e,this)},t.next=function(){A(this)},t.previous=function(){k(this)},t.select=function(e){L(this,null,e)},t.search=function(e,t,n){return p(e,t,n)}}return function e(t){this.options=t,this.id=e.instances=(e.instances||0)+1,this.name=\"autoComplete\",this.wrapper=1,this.threshold=1,this.debounce=0,this.resultsList={position:\"afterend\",tag:\"ul\",maxResults:5},this.resultItem={tag:\"li\"},function(e){var t=e.name,r=e.options,i=e.resultsList,o=e.resultItem;for(var s in r)if(\"object\"===n(r[s]))for(var a in e[s]||(e[s]={}),r[s])e[s][a]=r[s][a];else e[s]=r[s];e.selector=e.selector||\"#\"+t,i.destination=i.destination||e.selector,i.id=i.id||t+\"_list_\"+e.id,o.id=o.id||t+\"_result\",e.input=u(e.selector)}(this),x.call(this,e),E(this)}},\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).autoComplete=t();\n","\n import '/mnt/ssd/na101/home/literatum/sourcegit/ui-products-branches/maint-250204-c9c27144/ui-products/hope/components/facet/js/toggle';\n \nimport '/mnt/ssd/na101/home/literatum/sourcegit/ui-products-branches/maint-250204-c9c27144/ui-products/hope/node_modules/ui-core/components/facet-date/js/facet-date';\n \nimport '/mnt/ssd/na101/home/literatum/sourcegit/ui-products-branches/maint-250204-c9c27144/ui-products/hope/node_modules/ui-core/components/facet-date-chart/js/facet-date-chart';\n \nimport '/mnt/ssd/na101/home/literatum/sourcegit/ui-products-branches/maint-250204-c9c27144/ui-products/hope/node_modules/ui-core/components/refine-search/js/refine-search';\n \nimport AdvancedSearch from '/mnt/ssd/na101/home/literatum/sourcegit/ui-products-branches/maint-250204-c9c27144/ui-products/hope/widgets/advanced-search/js/advanced-search'; \nimport '/mnt/ssd/na101/home/literatum/sourcegit/ui-products-branches/maint-250204-c9c27144/ui-products/hope/node_modules/ui-core/widgets/search-result/js/search-result';\n \nconst main = (UX) => {\n const $toggle = Array.prototype.slice.call(document.getElementsByClassName('facet')),\n $facetDate = Array.prototype.slice.call(document.getElementsByClassName('range-slider')),\n $facetDateChart = Array.prototype.slice.call(document.getElementsByClassName('facetDateChart')),\n $refine = Array.prototype.slice.call(document.querySelectorAll('.refineSearch,.advanced-search')),\n $advancedSearch = document.querySelector('.advanced-search'),\n $searchResult = Array.prototype.slice.call(document.getElementsByClassName('search-result'))\n\ntry {\n if ($toggle.length ) {\n UX.toggle.init($toggle);\n }\n } catch (err) {\n console.error(err);\n }\n \ntry {\n if ($facetDate.length ) {\n UX.facetDate.init($facetDate);\n }\n } catch (err) {\n console.error(err);\n }\n \ntry {\n if ($facetDateChart.length ) {\n UX.facetDateChart.init($facetDateChart);\n }\n } catch (err) {\n console.error(err);\n }\n \ntry {\n if ($refine.length ) {\n UX.refine.init($refine);\n }\n } catch (err) {\n console.error(err);\n }\n \ntry {\n if ($advancedSearch ) {\n UX.advancedSearch = new AdvancedSearch($advancedSearch).initialize()\n }\n } catch (err) {\n console.error(err);\n }\n \ntry {\n if ($searchResult.length ) {\n UX.searchResult.init($searchResult);\n }\n } catch (err) {\n console.error(err);\n }\n \n}\n\n export default main;\n ","(function () {\n var $body = $('body');\n\n var toggle = {\n $toggle: $('.facet:not(.displayAll)'),\n lessLabel: 'Less',\n moreLabel: 'More',\n init: function () {\n toggle.setLabels();\n toggle.on.build();\n toggle.control();\n toggle.additionalControls();\n },\n control: function () {\n $body.on('click', '.facet .show-more', function (e) {\n e.preventDefault();\n toggle.on.toggle($(this));\n });\n $body.find('.facet .dropdown__toggle').off();\n $body.on('click', '.facet .dropdown__toggle', function (e) {\n e.preventDefault();\n toggle.on.toggleFacet($(this));\n });\n },\n additionalControls: function () {},\n setLabels: function () {\n let $filters = $('#filter');\n if ($filters.length) {\n toggle.moreLabel = $filters.data('more-text') ? $filters.data('more-text') : toggle.moreLabel;\n toggle.lessLabel = $filters.data('less-text') ? $filters.data('less-text') : toggle.lessLabel;\n }\n },\n on: {\n build: function () {\n toggle.$toggle.each(function () {\n var $target = $(this).find('ul.facet__list');\n var $lis = $target.children('li');\n\n var $select = $(this).find('.facet__select ');\n var $options = $select.children('option');\n\n var lisNum = $lis.length;\n var optionsNum = $options.length;\n var shownItems = $target.find('[name=facet-shown-items]').val() || 5;\n var isToggle = lisNum > shownItems;\n\n var moreCount = optionsNum + lisNum - shownItems;\n\n if ($target.find('[name=facet-hidden-items]').length)\n moreCount = $target.find('[name=facet-hidden-items]').val();\n $target.closest('.facet').attr('data-more-count', moreCount);\n\n if (isToggle) $target.after(toggle.get.showMore(moreCount));\n });\n },\n toggle: function (elem) {\n var $toggle = elem.closest('.facet');\n var $target = $toggle.find('ul.facet__list');\n\n $target.find('.js--toggle').slideToggle();\n $toggle.find('.facet__select--hidden').toggle();\n\n elem.toggleClass('js--open');\n if (elem.hasClass('js--open')) {\n elem.html(toggle.lessLabel + '');\n elem.closest('.accordion__content').find('li.js--toggle')[0].firstElementChild.focus();\n elem.attr('aria-expanded', true);\n } else {\n elem.html(\n toggle.moreLabel +\n ' (' +\n $toggle.data('more-count') +\n ') '\n );\n elem.closest('.accordion__content').find('li:first-child a').blur();\n elem.attr('aria-expanded', false);\n }\n },\n toggleFacet: function (elem) {\n var $toggle = elem.closest('li');\n var $target = $toggle.children('ul.facet-dropdown__menu');\n\n $target.slideToggle();\n elem.toggleClass('js--open');\n elem.find('i').toggleClass('icon-add_box icon-squared-minus');\n\n if (elem.hasClass('js--open')) {\n $target.attr('aria-hidden', false);\n } else {\n $target.attr('aria-hidden', true);\n }\n },\n },\n get: {\n /**\n * gets the show more/less link.\n * was added to make it easier for engineer to override it's value\n *\n * @param count\n * @returns {string}\n */\n showMore(count) {\n return ` ${toggle.moreLabel} (${count}) `;\n },\n },\n };\n\n UX.toggle = toggle; // add to global namespace\n})();\n","(function () {\n var $body = $('body');\n var facetDate = {\n sliderRanges: [],\n sliderValues: [],\n $rangeStart: $('.range-slider__start'),\n $rangeEnd: $('.range-slider__end'),\n url: location.href,\n\n init: function () {\n if (config.enableFacetRangeDate) {\n facetDate.sliderRanges = [];\n facetDate.sliderValues = [];\n\n facetDate.$rangeStart = $('.range-slider__start');\n facetDate.$rangeEnd = $('.range-slider__end');\n facetDate.initRange();\n }\n facetDate.control();\n },\n control: function () {\n $body.on('click', '.custom-date', function (e) {\n e.preventDefault();\n facetDate.on.toggle($(this));\n });\n\n $(document).on('UX-attach', function () {\n facetDate.init();\n });\n if (config.enableFacetRangeDate) {\n $(document).on('UX-detach', function () {\n window.jcf.destroy($('.range-slider__range'));\n });\n\n $('.range-slider__range').change(function () {\n facetDate.on.setRange($(this));\n });\n\n facetDate.$rangeStart.on('change', function () {\n facetDate.on.setStart($(this));\n });\n\n facetDate.$rangeEnd.on('change', function () {\n facetDate.on.setEnd($(this));\n });\n\n $('.range-slider__range').on('change change:startend', function () {\n facetDate.updateUrl($(this));\n });\n }\n },\n on: {\n toggle: function (elem) {\n var $toggle = elem.closest('.facet');\n $toggle.find('.custom-date-form').slideToggle();\n elem.toggleClass('js--open');\n },\n },\n };\n if (config.enableFacetRangeDate) {\n facetDate.getSelectedRange = function (sliderRange) {\n const queryString = facetDate.url.indexOf('?') !== -1 ? facetDate.url.split('?')[1] : '';\n const queryStringObj = {};\n\n if (queryString) {\n queryString.split('&').map(function (value) {\n const keyVal = value.split('=');\n queryStringObj[keyVal[0]] = keyVal[1];\n });\n\n if (queryStringObj.AfterYear && queryStringObj.BeforeYear) {\n return [queryStringObj.AfterYear, queryStringObj.BeforeYear];\n }\n }\n\n return [parseInt(sliderRange.attr('data-min'), 10), parseInt(sliderRange.attr('data-max'), 10)];\n };\n\n facetDate.getSelectedRangePosition = function (start, end) {\n var closestStart;\n var closestEnd;\n\n if (facetDate.sliderValues.indexOf(start) < 0) {\n closestStart = facetDate.sliderValues.reduce(function (prev, curr) {\n return Math.abs(curr - start) < Math.abs(prev - start) ? curr : prev;\n });\n }\n\n if (facetDate.sliderValues.indexOf(end) < 0) {\n closestEnd = facetDate.sliderValues.reduce(function (prev, curr) {\n return Math.abs(curr - end) < Math.abs(prev - end) ? curr : prev;\n });\n }\n\n return [\n facetDate.sliderValues.indexOf(closestStart || start),\n facetDate.sliderValues.indexOf(closestEnd || end),\n ];\n };\n\n facetDate.initRange = function () {\n $('.range-slider').each(function () {\n const $sliderRange = $(this).find('.range-slider__range');\n if (!$sliderRange.hasClass('jcf-hidden')) {\n const frequencies = $sliderRange.data('frequencies');\n\n const nonLinearSliderSteps = [1, 2, 5, 10];\n const allowedTotalYears =\n nonLinearSliderSteps.reduce(function (prev, cur) {\n return prev + cur;\n }) * 2;\n const minVal = parseInt($sliderRange.attr('data-min') || $sliderRange.attr('min'), 10);\n const maxVal = parseInt($sliderRange.attr('data-max') || $sliderRange.attr('max'), 10);\n const totalYears = maxVal - minVal;\n const linearSlider = $sliderRange.attr('data-slider-type') === 'linear';\n\n if (totalYears > allowedTotalYears && !linearSlider) {\n // non-linear slider\n const displaySteps = nonLinearSliderSteps.slice().reverse();\n let remaining = totalYears;\n let startYear = minVal;\n let startSlice = 0;\n\n displaySteps.forEach(function (step, i, all) {\n const oneThird = Math.floor(remaining / 3);\n let twoThirds = Math.floor(2 * oneThird);\n const remainder = twoThirds % step;\n if (remainder > 0) {\n twoThirds = twoThirds - remainder;\n }\n remaining = remaining - twoThirds;\n\n if (i === displaySteps.length - 1) {\n facetDate.sliderRanges.push({\n start: startYear,\n stop: maxVal,\n displayStep: nonLinearSliderSteps[i],\n slideStep: step,\n freq: frequencies.slice(startSlice, frequencies.length),\n });\n } else {\n facetDate.sliderRanges.push({\n start: startYear,\n stop: startYear + twoThirds,\n displayStep: nonLinearSliderSteps[i],\n slideStep: step,\n freq: frequencies.slice(startSlice, startSlice + twoThirds),\n });\n }\n startSlice = startSlice + twoThirds;\n startYear = startYear + twoThirds;\n });\n\n facetDate.sliderRanges.forEach(function (range) {\n let sliderVal = range.start;\n while (sliderVal <= range.stop) {\n if (facetDate.sliderValues.indexOf(sliderVal) < 0) {\n facetDate.sliderValues.push(sliderVal);\n }\n sliderVal += range.slideStep;\n }\n });\n } else {\n // linear slider\n if (!facetDate.sliderValues.length > 0) {\n for (let i = minVal; i <= maxVal; i++) {\n facetDate.sliderValues.push(i);\n }\n }\n }\n\n $sliderRange.attr('min', 0);\n $sliderRange.attr('max', facetDate.sliderValues.length - 1);\n const initialValue = facetDate.getSelectedRange($sliderRange);\n facetDate.$rangeStart.val(initialValue[0]);\n facetDate.$rangeEnd.val(initialValue[1]);\n const initialPosition = facetDate.getSelectedRangePosition(initialValue[0], initialValue[1]);\n $sliderRange.attr('value', initialPosition.join(','));\n window.jcf.replace($sliderRange);\n\n // render frequencies\n if (frequencies) {\n const $rangeWrapper = $(this).find('.jcf-range-wrapper');\n const $rangeFrequencies = $('');\n\n if (totalYears > allowedTotalYears && !linearSlider) {\n // non-linear slider\n facetDate.sliderRanges.forEach(function (range) {\n for (let i = 0; i < range.freq.length; i++) {\n const $rangeSlice = $(\n ''\n );\n $rangeFrequencies.append($rangeSlice);\n }\n });\n $rangeWrapper.prepend($rangeFrequencies);\n } else {\n // linear slider\n const rangeSliceWidth = 100 / frequencies.length;\n for (let i = 0; i < frequencies.length; i++) {\n const $rangeSlice = $(\n ''\n );\n $rangeFrequencies.append($rangeSlice);\n }\n $rangeWrapper.prepend($rangeFrequencies);\n }\n }\n }\n });\n };\n\n facetDate.on.setRange = function (elem) {\n const $toggle = elem.closest('.range-slider');\n const $target = $toggle.find('.jcf-active-handle');\n\n const tmp = $target.attr('class').match(/jcf-index[\\w-]*\\b/);\n const tmp2 = tmp.toString().split('-')[2];\n $('input.index-' + tmp2).val(facetDate.getValue(elem));\n };\n facetDate.on.setStart = function (elem) {\n const $sliderRange = elem.closest('.range-slider').find('.range-slider__range');\n const minVal = parseInt($sliderRange.attr('min'), 10);\n const thisVal = facetDate.getValueFromInput(elem);\n const sliderInstance = window.jcf.getInstance($sliderRange);\n if (thisVal >= minVal && thisVal <= sliderInstance.values[1]) {\n sliderInstance.values[0] = thisVal.toString();\n sliderInstance.refresh();\n $sliderRange.trigger('change:startend');\n }\n };\n facetDate.on.setEnd = function (elem) {\n const $sliderRange = elem.closest('.range-slider').find('.range-slider__range');\n const maxVal = parseInt($sliderRange.attr('max'), 10);\n const thisVal = facetDate.getValueFromInput(elem);\n const sliderInstance = window.jcf.getInstance($sliderRange);\n if (thisVal <= maxVal && thisVal >= sliderInstance.values[0]) {\n sliderInstance.values[1] = thisVal.toString();\n sliderInstance.refresh();\n $sliderRange.trigger('change:startend');\n }\n };\n\n facetDate.on.rangeUpdate = function (elem, callbackFn) {\n var $sliderRange = $(elem);\n $sliderRange.on('change change:startend', function () {\n callbackFn(facetDate.$rangeStart.val(), facetDate.$rangeEnd.val());\n });\n };\n facetDate.updateUrl = function (elem) {\n var url = new URL(facetDate.url);\n url.searchParams.set('AfterYear', facetDate.$rangeStart.val());\n url.searchParams.set('BeforeYear', facetDate.$rangeEnd.val());\n url.searchParams.set('queryID', $(elem).attr('data-queryID'));\n window.location = url;\n };\n facetDate.removeParam = function (key) {\n var baseUrl = facetDate.url.split('?')[0];\n var queryString = facetDate.url.indexOf('?') !== -1 ? facetDate.url.split('?')[1] : '';\n var queryStringObj = {};\n\n if (queryString) {\n queryString.split('&').map(function (value) {\n var keyVal = value.split('=');\n queryStringObj[keyVal[0]] = keyVal[1];\n });\n if (queryStringObj[key]) {\n delete queryStringObj[key];\n }\n queryString = Object.keys(queryStringObj)\n .map(function (value) {\n return value + '=' + queryStringObj[value];\n })\n .join('&');\n facetDate.url = baseUrl + (queryString ? '?' + queryString : '');\n }\n };\n facetDate.getValue = function (elem) {\n var thisValIndex = parseInt(elem.val(), 10);\n var thisVal = facetDate.sliderValues[thisValIndex];\n\n return thisVal;\n };\n facetDate.getValueFromInput = function (elem) {\n var $sliderRange = elem.closest('.range-slider').find('.range-slider__range');\n var customVal = parseInt(elem.val(), 10);\n var minVal = parseInt($sliderRange.attr('data-min'), 10);\n var maxVal = parseInt($sliderRange.attr('data-max'), 10);\n var thisVal;\n\n if (customVal <= maxVal && customVal >= minVal) {\n if (facetDate.sliderValues.indexOf(customVal) >= 0) {\n thisVal = facetDate.sliderValues.indexOf(customVal);\n } else {\n const closest = facetDate.sliderValues.reduce(function (prev, curr) {\n return Math.abs(curr - customVal) < Math.abs(prev - customVal) ? curr : prev;\n });\n thisVal = facetDate.sliderValues.indexOf(closest);\n }\n }\n return thisVal;\n };\n }\n UX.facetDate = facetDate; // add to global namespace\n})();\n","$.widget('ui.slider', $.ui.slider, {\n options: {\n chart: false,\n },\n _refreshValue: function () {\n var lastValPercent,\n valPercent,\n value,\n valueMin,\n valueMax,\n oRange = this.options.range,\n oChart = this.options.chart,\n o = this.options,\n that = this,\n animate = !this._animateOff ? o.animate : false,\n _set = {};\n\n if (this._hasMultipleValues()) {\n this.handles.each(function (i) {\n if (oChart) {\n if (i === 0) {\n valPercent =\n ((that.values(i) - that._valueMin()) / (that._valueMax() - that._valueMin() + 1)) * 100;\n }\n if (i === 1) {\n valPercent =\n ((that.values(i) - that._valueMin() + 1) / (that._valueMax() - that._valueMin() + 1)) * 100;\n }\n } else {\n valPercent = ((that.values(i) - that._valueMin()) / (that._valueMax() - that._valueMin())) * 100;\n }\n\n _set[that.orientation === 'horizontal' ? 'left' : 'bottom'] = valPercent + '%';\n $(this).stop(1, 1)[animate ? 'animate' : 'css'](_set, o.animate);/*eslint-disable-line*/\n if (that.options.range === true) {\n if (that.orientation === 'horizontal') {\n if (i === 0) {\n that.range.stop(1, 1)[animate ? 'animate' : 'css'](\n {\n left: valPercent + '%',\n },\n o.animate\n );\n }\n if (i === 1) {\n that.range[animate ? 'animate' : 'css'](\n {\n width: valPercent - lastValPercent + '%',\n },\n {\n queue: false,\n duration: o.animate,\n }\n );\n }\n } else {\n if (i === 0) {\n that.range.stop(1, 1)[animate ? 'animate' : 'css'](\n {\n bottom: valPercent + '%',\n },\n o.animate\n );\n }\n if (i === 1) {\n that.range[animate ? 'animate' : 'css'](\n {\n height: valPercent - lastValPercent + '%',\n },\n {\n queue: false,\n duration: o.animate,\n }\n );\n }\n }\n }\n lastValPercent = valPercent;\n });\n } else {\n value = this.value();\n valueMin = this._valueMin();\n valueMax = this._valueMax();\n valPercent = valueMax !== valueMin ? ((value - valueMin) / (valueMax - valueMin)) * 100 : 0;\n _set[this.orientation === 'horizontal' ? 'left' : 'bottom'] = valPercent + '%';\n this.handle.stop(1, 1)[animate ? 'animate' : 'css'](_set, o.animate);\n\n if (oRange === 'min' && this.orientation === 'horizontal') {\n this.range.stop(1, 1)[animate ? 'animate' : 'css'](\n {\n width: valPercent + '%',\n },\n o.animate\n );\n }\n if (oRange === 'max' && this.orientation === 'horizontal') {\n this.range.stop(1, 1)[animate ? 'animate' : 'css'](\n {\n width: 100 - valPercent + '%',\n },\n o.animate\n );\n }\n if (oRange === 'min' && this.orientation === 'vertical') {\n this.range.stop(1, 1)[animate ? 'animate' : 'css'](\n {\n height: valPercent + '%',\n },\n o.animate\n );\n }\n if (oRange === 'max' && this.orientation === 'vertical') {\n this.range.stop(1, 1)[animate ? 'animate' : 'css'](\n {\n height: 100 - valPercent + '%',\n },\n o.animate\n );\n }\n }\n },\n});\n\n(function () {\n var facetDateChart = {\n $element: $('.facetDateChart'),\n rangeStartVal: null,\n rangeEndVal: null,\n yearWeights: null,\n queryID: null,\n height: 200,\n amplifierRatio: null,\n url: location.href,\n\n init: function () {\n facetDateChart.rangeStartVal = parseInt(facetDateChart.$element.data('min'));\n facetDateChart.rangeEndVal = parseInt(facetDateChart.$element.data('max'));\n facetDateChart.yearWeights = facetDateChart.$element.data('yearweights');\n facetDateChart.queryID = facetDateChart.$element.data('queryid');\n facetDateChart.amplifierRatio = parseInt(facetDateChart.$element.data('amplifierratio'));\n\n facetDateChart.chart.init();\n facetDateChart.control();\n },\n control: function () {\n $(document).on('slide:opened', function (event) {\n $('.ui-slider-handle__indicator, .ui-slider-handle__label').remove();\n facetDateChart.init();\n $(this).off(event);\n });\n },\n getSelectedRange: function (sliderRange) {\n var queryString = facetDateChart.url.indexOf('?') !== -1 ? facetDateChart.url.split('?')[1] : '';\n var queryStringObj = {};\n\n if (queryString) {\n queryString.split('&').map(function (value) {\n var keyVal = value.split('=');\n queryStringObj[keyVal[0]] = keyVal[1];\n });\n\n if (queryStringObj.AfterYear && queryStringObj.BeforeYear) {\n return [queryStringObj.AfterYear, queryStringObj.BeforeYear];\n }\n }\n\n return [parseInt(facetDateChart.rangeStartVal), parseInt(facetDateChart.rangeEndVal)];\n },\n updateUrl: function (startYear, endYear) {\n facetDateChart.removeParam('AfterYear');\n facetDateChart.removeParam('BeforeYear');\n facetDateChart.removeParam('queryID');\n facetDateChart.url +=\n (facetDateChart.url.indexOf('?') > -1 ? '&' : '?') +\n 'AfterYear=' +\n startYear +\n '&BeforeYear=' +\n endYear +\n '&queryID=' +\n facetDateChart.queryID;\n window.location = facetDateChart.url;\n },\n removeParam: function (key) {\n var baseUrl = facetDateChart.url.split('?')[0];\n var queryString = facetDateChart.url.indexOf('?') !== -1 ? facetDateChart.url.split('?')[1] : '';\n var queryStringObj = {};\n\n if (queryString) {\n queryString.split('&').map(function (value) {\n var keyVal = value.split('=');\n queryStringObj[keyVal[0]] = keyVal[1];\n });\n if (queryStringObj[key]) {\n delete queryStringObj[key];\n }\n queryString = Object.keys(queryStringObj)\n .map(function (value) {\n return value + '=' + queryStringObj[value];\n })\n .join('&');\n facetDateChart.url = baseUrl + (queryString ? '?' + queryString : '');\n }\n },\n chart: {\n //more info https://www.jqueryscript.net/chart-graph/Histogram-Slider-Plugin-jQuery.html\n\n init: function () {\n facetDateChart.chart.setOptions();\n\n const self = facetDateChart.$element,\n dataItems = self.options.data.items,\n bins = new Array(self.options.numberOfBins).fill(0),\n range = self.options.numberOfBins,\n rangePerBin = range / self.options.numberOfBins;\n\n for (let i = 0; i < dataItems.length; i++) {\n let index = parseInt(dataItems[i].value / rangePerBin),\n increment = 1;\n\n if (dataItems[i].count) {\n // Handle grouped data structure\n increment = parseInt(dataItems[i].count);\n }\n\n bins[index] += increment;\n }\n\n const chartName = self.attr('name') + '__chart',\n sliderName = self.attr('name') + '__slider';\n\n const wrapHtml =\n \"
\" +\n \"
\";\n\n self.html(wrapHtml);\n\n const heightRatio = facetDateChart.chart.calculateHeightRatio(bins, self.options.height),\n widthPerBin = 100 / self.options.numberOfBins;\n\n for (let i = 0; i < bins.length; i++) {\n let binRange = facetDateChart.chart.getBinRange(\n rangePerBin,\n i,\n facetDateChart.$element.options.sliderRange[0]\n ),\n inRangeClass = 'bin-color-selected',\n outRangeClass = 'bin-color';\n\n if (self.options.optimalRange[0] <= binRange[0] && binRange[0] <= self.options.optimalRange[1]) {\n inRangeClass = 'bin-color-optimal-selected';\n outRangeClass = 'bin-color-optimal';\n }\n\n const toolTipHtml = self.options.showTooltips\n ? \"\" + binRange[0] + '/' + bins[i] + ''\n : '';\n\n const scaledValue = parseInt(bins[i] * heightRatio),\n height = facetDateChart.chart.convertToHeight(scaledValue),\n inRangeOffset = parseInt(self.options.height - height),\n outRangeOffset = -parseInt(self.options.height - height * 2);\n\n const binHtml =\n \"
\" +\n toolTipHtml +\n \"
\" +\n \"
\" +\n '
';\n\n $('.' + chartName).append(binHtml);\n }\n\n $('.' + sliderName).slider({\n range: true,\n min: self.options.sliderRange[0],\n max: self.options.sliderRange[1],\n values: self.options.selectedRange,\n chart: true,\n slide: function (event, ui) {\n facetDateChart.chart.update(\n ui.values,\n self.options.sliderRange[0],\n rangePerBin,\n chartName,\n sliderName\n );\n },\n create: function (event, ui) {\n $(event.target)\n .find('.ui-slider-handle')\n .append('')\n .first()\n .addClass('first');\n $(event.target)\n .find('.ui-slider-handle')\n .append('');\n $(event.target)\n .find('.ui-slider-handle__indicator')\n .height(facetDateChart.height + 10);\n },\n stop: function (event, ui) {\n facetDateChart.updateUrl(ui.values[0], ui.values[1]);\n },\n });\n\n facetDateChart.chart.update(\n self.options.selectedRange,\n self.options.sliderRange[0],\n rangePerBin,\n chartName,\n sliderName\n );\n },\n\n setOptions: function () {\n var data = {items: []};\n $.each(facetDateChart.yearWeights, function (index, value) {\n data.items.push({value: index, count: value * facetDateChart.amplifierRatio});\n });\n\n facetDateChart.chart.setHeight(data);\n\n const options = {\n data: data,\n sliderRange: [facetDateChart.rangeStartVal, facetDateChart.rangeEndVal],\n optimalRange: [facetDateChart.rangeStartVal, facetDateChart.rangeEndVal],\n selectedRange: facetDateChart.getSelectedRange(),\n numberOfBins: data.items.length,\n height: facetDateChart.height,\n showTooltips: false,\n };\n\n facetDateChart.$element.options = options;\n },\n setHeight: function (data) {\n facetDateChart.height =\n Math.max.apply(\n Math,\n data.items.map(function (o) {\n return o.count;\n })\n ) *\n 5 +\n 20;\n\n if (facetDateChart.height < 150) {\n facetDateChart.height = 150;\n }\n },\n update: function (selectedRange, sliderMin, rangePerBin, chartName, sliderName) {\n var leftValue = selectedRange[0],\n rightValue = selectedRange[1],\n $minLabelHandler = $('.' + sliderName)\n .find('.ui-slider-handle.first .ui-slider-handle__label')\n .html(leftValue),\n $maxLabelHandler = $('.' + sliderName)\n .find('.ui-slider-handle:not(.first) .ui-slider-handle__label')\n .html(rightValue);\n\n // set opacity per bin based on the slider values\n $('.' + chartName + ' .in-range').each(function (index, bin) {\n var binRange = facetDateChart.chart.getBinRange(rangePerBin, index, sliderMin);\n\n if (binRange[1] < rightValue) {\n // Set opacity based on left (min) slider\n if (leftValue > binRange[1]) {\n facetDateChart.chart.setOpacity(bin, 0);\n } else if (leftValue < binRange[0]) {\n facetDateChart.chart.setOpacity(bin, 1);\n } else {\n //setOpacity(bin, 1);\n facetDateChart.chart.setOpacity(bin, 1 - (leftValue - binRange[0]) / rangePerBin);\n }\n } else if (binRange[0] > leftValue) {\n // Set opacity based on right (max) slider value\n if (rightValue > binRange[1]) {\n facetDateChart.chart.setOpacity(bin, 1);\n } else if (rightValue < binRange[0]) {\n facetDateChart.chart.setOpacity(bin, 0);\n } else {\n facetDateChart.chart.setOpacity(bin, 1 - (rightValue - binRange[0]) / rangePerBin);\n }\n }\n });\n\n facetDateChart.chart.setLabelHandlersPosition($minLabelHandler, $maxLabelHandler);\n\n setTimeout(function () {\n facetDateChart.chart.setLabelHandlersPosition($minLabelHandler, $maxLabelHandler);\n }, 500);\n },\n setLabelHandlersPosition: function ($minLabelHandler, $maxLabelHandler) {\n var minOuterLeft = $minLabelHandler.offset().left,\n minWidth = $minLabelHandler.outerWidth(),\n minOuterRight = minOuterLeft + minWidth,\n maxOuterLeft = $maxLabelHandler.offset().left,\n rangeLabelsPosition = maxOuterLeft - minOuterRight - 2,\n marginValue = (2 - rangeLabelsPosition) / 2;\n\n $minLabelHandler.css('left', '-=' + marginValue);\n $maxLabelHandler.css('left', '+=' + marginValue);\n\n if (Math.floor(rangeLabelsPosition) > 2) {\n $minLabelHandler.css('left', '0');\n $maxLabelHandler.css('left', '0');\n }\n },\n getBinRange: function (rangePerBin, index, sliderMin) {\n var min = rangePerBin * index + sliderMin,\n max = rangePerBin * (index + 1) - 1;\n\n if (rangePerBin === 1) max = min;\n\n return [min, max];\n },\n\n setOpacity: function (bin, val) {\n $(bin).css('opacity', val);\n },\n\n convertToHeight: function (v) {\n return parseInt(5 * v + 1);\n },\n\n calculateHeightRatio: function (bins, chartHeight) {\n var maxValue = Math.max.apply(null, bins);\n var height = facetDateChart.chart.convertToHeight(maxValue);\n if (height > chartHeight) {\n return chartHeight / height;\n }\n return 1;\n },\n },\n };\n\n UX.facetDateChart = facetDateChart; // add to global namespace\n})();\n","(function () {\n var $body = $('body');\n\n var refine = {\n $target: null,\n $targets: $('.refineSearch'),\n $showController: $('.quick-search__ctrl__refine'),\n $hideController: $('.quick-search__ctrl__refine--hide'),\n $elements: $('.refineSearch__row'),\n ctrls: document.querySelectorAll('.search__result .advanced-search__ctrl'),\n $wrapper: null,\n isMobile: false,\n vPort: 'screen-sm', // default responsive break point\n escape: 27,\n\n init: function () {\n refine.control();\n if ($('.quick-search').length) {\n refine.on.hide();\n }\n },\n control: function () {\n refine.on.viewPortListener();\n refine.click.toggleSearchBlock();\n\n $body.on('click', '.refineSearch__ctrl__remove', function (e) {\n e.preventDefault();\n const $this = $(this);\n refine.$target = $this.closest('.refineSearch');\n refine.$wrapper = refine.$target.find('.refineSearch__texts');\n refine.on.remove($this);\n });\n\n $body.on('click', '.refineSearch__ctrl__add', function (e) {\n e.preventDefault();\n const $this = $(this);\n refine.$target = $this.closest('.refineSearch');\n refine.$wrapper = refine.$target.find('.refineSearch__texts');\n refine.on.clone($this);\n });\n\n $body.on('click', '.quick-search__ctrl__refine', function (e) {\n e.preventDefault();\n if (refine.$targets.length) {\n refine.on.show();\n }\n });\n\n $body.on('click', '.quick-search__ctrl__refine--hide', function (e) {\n e.preventDefault();\n refine.on.hide();\n });\n\n $body.on('click', function (e) {\n if (\n !refine.$targets.is(e.target) && // if the target of the click isn't the container...\n refine.$targets.has(e.target).length === 0 && // ... nor a descendant of the container\n !refine.$showController.is(e.target) && // if the target of the click isn't the controller...\n refine.$showController.has(e.target).length === 0 && // ... nor a descendant of the controller\n !$(e.target).closest('.jcf-select-drop').length &&\n !refine.$targets.closest('.search-result__refine-search').length &&\n !$(e.target).closest('.refineSearch__ctrl__remove').length\n ) {\n refine.on.hide();\n }\n });\n\n $(document).on('keydown', function (e) {\n if ((e.keyCode || e.which) === refine.escape) {\n refine.on.hide();\n }\n });\n },\n click: {\n toggleSearchBlock: function () {\n const tabs = document.querySelectorAll('.search-result__meta .advancedSearch__tabs');\n refine.ctrls.forEach(ctrl => {\n ctrl.addEventListener('click', function (e) {\n e.preventDefault();\n if (!refine.isMobile) {\n ctrl.classList.toggle('js--open');\n ctrl.setAttribute(\n 'aria-expanded',\n ctrl.getAttribute('aria-expanded') === 'true' ? 'false' : 'true'\n );\n tabs.forEach(tab => {\n tab.classList.toggle('advancedSearch__tabs--hidden');\n });\n }\n });\n });\n },\n },\n on: {\n clone: function ($this) {\n window.jcf.destroyAll();\n $this\n .closest('.refineSearch__row')\n .clone(true, true)\n .find('input')\n .attr('name', 'text' + ($('.refineSearch__row').length + 1).toString())\n .val('')\n .end()\n .appendTo(refine.$wrapper);\n $this.addClass('hidden');\n $this.siblings('.refineSearch__ctrl__remove').removeClass('hidden');\n $('.jcf').each(function () {\n jcf.replace($(this)); /*eslint-disable-line*/\n });\n },\n remove: function ($this) {\n $this.closest('.refineSearch__row').remove();\n },\n show: function () {\n refine.$showController.addClass('hidden');\n refine.$hideController.removeClass('hidden');\n refine.$targets.addClass('js--open');\n refine.$targets.show();\n },\n hide: function () {\n refine.$targets.each(function () {\n if ($body.attr('data-active') === 'refine') {\n $body.removeAttr('data-active');\n }\n refine.$hideController.addClass('hidden');\n refine.$showController.removeClass('hidden');\n refine.$targets.removeClass('js--open');\n refine.$targets.hide();\n });\n },\n viewPortListener: function () {\n $(document).on(refine.vPort + '-on', function () {\n // Waiting for custom event that will be triggered by controller.js to activate responsive effects\n refine.isMobile = true;\n refine.on.setPopupAttr(true);\n });\n\n $(document).on(refine.vPort + '-off', function () {\n // Waiting for custom event that will be triggered by controller.js to deactivate responsive effects\n refine.isMobile = false;\n refine.on.setPopupAttr(false);\n });\n },\n setPopupAttr: function (isTrue = false) {\n refine.ctrls.forEach(ctrl => {\n ctrl.setAttribute('aria-haspopup', isTrue ? 'menu' : 'false');\n });\n },\n },\n };\n\n UX.refine = refine; // add to global namespace\n})();\n","(function () {\n const $body = $('body');\n\n const searchResult = {\n url: location.href,\n rememberUserLayout: true,\n /**\n * The saved search panel\n */\n $savedSearchPanel: null,\n /**\n * Frequency Column Labels\n */\n frequencyLabels: {},\n /**\n * The max search queries needed to for iteration over the table\n */\n maxSearchQueries: null,\n /**\n * Link to edit saved search item\n */\n goLink: '/action/doSearch?target=saved&runSaved=',\n /**\n * Link to remove saved search item\n */\n removeLink: '/action/doDeleteSearch?searchType=saved&queryId=',\n init() {\n //searchResult.get.url();\n this.$savedSearchPanel = $('.advancedSearch__tabs .saved-searches');\n this.maxSearchQueries = this.$savedSearchPanel.data('queries');\n this.frequencyLabels = this.$savedSearchPanel.data('frequency-labels');\n\n searchResult.control();\n searchResult.additionalInit();\n searchResult.additionalControl();\n searchResult.set.userPublicationLayout();\n },\n control: function () {\n $body.on('click', '#saveSearchTriggerButton', function () {\n searchResult.openSaveSearchDialog();\n });\n\n $body.on('submit', '#saveSearchDialog form', function (event) {\n return searchResult.onSaveSearchSubmitHandler(event);\n });\n\n $body.on('click', '.search__layout>span', function () {\n $('.search__layout>span').removeClass('active');\n $(this).addClass('active');\n\n if ($(this).hasClass('search__layout-tile')) {\n $('.search-result__body').addClass('search-result--tile');\n localStorage.setItem('userPublicationLayout', 'tile');\n } else {\n $('.search-result__body').removeClass('search-result--tile');\n localStorage.setItem('userPublicationLayout', 'list');\n }\n });\n $body.on('focus', '[name=\"AllField\"]', function (e) {\n const allFieldInput = $(e.currentTarget);\n if (allFieldInput.length) {\n allFieldInput[0].setSelectionRange(-1, -1);\n }\n });\n },\n additionalControl: function () {},\n additionalInit: function () {},\n set: {\n userPublicationLayout: function () {\n if (searchResult.rememberUserLayout) {\n if (localStorage.userPublicationLayout === 'tile') {\n $('.search__layout-tile').click();\n } else if (localStorage.userPublicationLayout === 'list') {\n $('.search__layout-list').click();\n }\n }\n },\n },\n get: {\n url: function () {},\n text: function (name) {\n name = name.replace(/[\\[]/, '\\\\[').replace(/[\\]]/, '\\\\]'); /*eslint-disable-line*/\n const regexS = '[\\\\?&]' + name + '=([^&#]*)';\n const regex = new RegExp(regexS);\n const results = regex.exec(searchResult.url);\n return results == null ? null : results[1];\n },\n value: function () {},\n },\n /**\n * Responsible for rendering row items\n */\n render: {\n /**\n * Responsible for rendering rows\n *\n * @param {object} item\n * @param {number} index\n */\n row(item, index) {\n const $row = searchResult.$savedSearchPanel.find('tbody tr').eq(index);\n this.columns($row, item);\n this.actions($row, item);\n if ($row.hasClass('hidden')) {\n $row.removeClass('hidden');\n searchResult.$savedSearchPanel.find('.table-responsive').parent().removeClass('hidden');\n searchResult.$savedSearchPanel.find('.emptySavedSearches').remove();\n }\n },\n /**\n * Responsible for rendering columns\n *\n * @param {jQuery} $row\n * @param {object} item\n */\n columns($row, item) {\n const {qName, qSavedOn, qLastRun} = item;\n $row.find('.name-td').html(qName);\n $row.find('.saved-on-td').html(qSavedOn);\n $row.find('.last-run-td').html(qLastRun);\n this.additionalColumns($row, item);\n this.frequencyColumn($row, item);\n },\n\n /**\n * Responsible for additional columns rendering,\n * can be used to modify rendered row columns\n *\n * @param {jQuery} $row\n * @param {object} item\n */\n additionalColumns($row, item) {},\n /**\n * Render Frequency Column\n *\n * @param {jQuery} $row\n * @param {string} qAlertStatus\n */\n frequencyColumn($row, {qAlertStatus}) {\n let frequency = qAlertStatus;\n if (searchResult.frequencyLabels && searchResult.frequencyLabels[frequency]) {\n frequency = searchResult.frequencyLabels[frequency];\n }\n $row.find('.frequency-td').html(frequency);\n },\n /**\n * Responsible for rendering action columns\n *\n * @param {jQuery} $row\n * @param {number} qId\n */\n actions($row, {qId}) {\n $row.find('[data-action-type=\"saved-search--remove\"]').attr('href', searchResult.removeLink + qId);\n $row.find('[data-action-type=\"saved-search--run\"]').attr('href', searchResult.goLink + qId);\n },\n },\n openSaveSearchDialog: function () {\n var openDialog = searchResult.getCookie('openDialog');\n if (openDialog != null && openDialog !== '') {\n const saveSearchButton = $('#saveSearchTriggerButton');\n if (saveSearchButton.length > 0) {\n document.cookie = 'openDialog=;expires=Wed; 01 Jan 1970';\n saveSearchButton.click();\n }\n }\n },\n getCookie: function (name) {\n const nameEQ = name + '=';\n const ca = document.cookie.split(';');\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i];\n while (c.charAt(0) === ' ') c = c.substring(1);\n if (c.indexOf(nameEQ) !== -1) return c.substring(nameEQ.length, c.length);\n }\n return null;\n },\n onSaveSearchSubmitHandler: function (e) {\n $('#newSearchSaveButton').hide();\n $('.saveSearchProgress').show();\n $.ajax({\n type: 'POST',\n url: '/action/doSaveSearch',\n data: $(e.target).serialize(),\n success: searchResult.saveSearchSuccessHandler,\n error: function (data) {\n $('.error.saveSearchMsg').show('fade').removeClass('hidden');\n $('#newSearchSaveButton').show();\n $('.success.saveSearchMsg, .saveSearchProgress').hide();\n $('#saveSearchDialog').modal('toggle');\n $('#saveSearchDialog').click();\n },\n });\n return false;\n },\n saveSearchSuccessHandler: function (data) {\n $('.success.saveSearchMsg').show('fade').removeClass('hidden');\n $('#newSearchSaveButton').show();\n $('.error.saveSearchMsg, .saveSearchProgress').hide();\n $('#saveSearchDialog').modal('toggle');\n $('#saveSearchDialog').click();\n UX.modal.on.hide();\n searchResult.redrawSavedSearchesPanel(JSON.parse(data).favQueries);\n },\n\n /**\n * Redraws the table rows using the incoming from favQueries\n *\n * @param {array} jsonData\n */\n redrawSavedSearchesPanel(jsonData) {\n jsonData.forEach((value, index) => {\n if (index >= searchResult.maxSearchQueries) {\n return;\n }\n this.render.row(value, index);\n });\n },\n };\n UX.searchResult = searchResult; // add to global namespace\n})();\n","import {\n ComponentElements,\n ComponentInjector,\n ComponentObject,\n ComponentSelector,\n ComponentSelectors,\n ComponentService\n} from '@atypon/ui-utils';\nimport {keyCodes} from '../../../utility/js/utils';\n\nclass Texts extends ComponentObject { }\n\nclass ClassList extends ComponentObject {\n keywordField = 'text';\n typeField = 'searchArea';\n hide = 'hidden';\n}\n\nclass Selectors extends ComponentSelectors {\n searchInFields = '.advanced-search__search-in';\n add = '.advanced-search__search-in__add';\n remove = '.advanced-search__search-in__remove';\n keywordField = 'input';\n typeField = 'select';\n searchInFieldWrapper = new ComponentSelector('.advanced-search__search-in__term');\n}\n\nclass Elements extends ComponentElements {\n protected _searchInField: HTMLElement;\n searchInFieldWrapper: HTMLElement[] = [];\n currentAddButton: HTMLElement;\n currentRemoveButton: HTMLElement;\n wrapper: HTMLElement;\n\n set searchInField(searchInField: HTMLElement) {\n this._searchInField = searchInField;\n this.currentAddButton = this.getAddButton(searchInField);\n this.currentRemoveButton = this.getRemoveButton(searchInField);\n }\n\n get searchInField(): HTMLElement {\n return this._searchInField;\n }\n\n /**\n * returns the add action\n *\n * @param searchInField\n * @return {HTMLElement}\n */\n getAddButton(searchInField): HTMLElement {\n return this.domUtils.getElement(this.selectors.add, searchInField);\n }\n\n /**\n * returns the remove action\n *\n * @param searchInField\n * @return {HTMLElement}\n */\n getRemoveButton(searchInField): HTMLElement {\n return this.domUtils.getElement(this.selectors.remove, searchInField);\n }\n\n /**\n * returns all search in fields,\n * this is needed so we can have the updated DOM list and update their name attributes\n *\n * @return {Array}\n */\n get searchInFields(): HTMLElement[] {\n return this.domUtils.getElements(this.selectors.searchInFieldWrapper.selector, this.wrapper);\n }\n\n}\n\ninterface AdvancedSearchTabular extends ComponentService { }\n\n@ComponentInjector(Selectors, Elements, ClassList, Texts)\nclass AdvancedSearchTabular {\n\n /**\n * Needed for tabular field names\n *\n * @return {{input: string, dropdown: string}}\n */\n get fieldNames() {\n return {\n input: 'text',\n dropdown: 'field',\n };\n }\n\n constructor(readonly wrapper: HTMLElement, readonly onChanged: (Event) => void) {\n }\n\n initialize(): void {\n this.elements.initialize(this.wrapper);\n this.addEventListeners();\n this.toggleButtons();\n }\n\n\n addEventListeners() {\n if (this.elements.searchInField) {\n this.setSearchInFieldsEvents(this.elements.searchInField);\n return;\n }\n this.elements.searchInFieldWrapper.forEach(elm => {\n this.elements.currentAddButton = this.elements.getAddButton(elm);\n this.elements.currentRemoveButton = this.elements.getRemoveButton(elm);\n this.setSearchInFieldsEvents(elm);\n })\n }\n\n protected setSearchInFieldsEvents(searchInField: HTMLElement) {\n this.domUtils.addEventListener(searchInField, 'input', this.onChanged.bind(this));\n this.domUtils.addEventListener(this.elements.currentAddButton, 'click', this.clone.bind(this));\n this.domUtils.addEventListener(this.elements.currentRemoveButton, 'click', this.remove.bind(this));\n this.domUtils.addEventListener(this.elements.currentAddButton,'keydown', this.onKeyDownAdd.bind(this));\n this.domUtils.addEventListener(this.elements.currentRemoveButton,'keydown', this.onKeyDownRemove.bind(this));\n }\n\n\n protected onKeyDownAdd(e: KeyboardEvent) {\n if (e.keyCode === keyCodes.ENTER) {\n this.clone(e);\n }\n }\n\n protected onKeyDownRemove(e: KeyboardEvent) {\n if (e.keyCode === keyCodes.ENTER) {\n this.remove(e);\n }\n }\n \n protected searchTermsAligner = (searchTermRows: HTMLElement[])=>{\n searchTermRows.forEach((searchTerm, index)=>{\n const contextSearchLabel= searchTerm?.querySelector('.advanced-search__select')?.previousElementSibling;\n const TermSearchLabel= searchTerm?.querySelector('.advanced-search__search-term') ? searchTerm?.querySelector('.advanced-search__search-term')?.previousElementSibling: searchTerm?.querySelector('.advanced-search__input')?.previousElementSibling;\n const removeBtn= searchTerm?.querySelector('.advanced-search__search-in__remove');\n contextSearchLabel? contextSearchLabel.innerHTML= `Context for search term ${index + 1}`: '';\n TermSearchLabel? TermSearchLabel.innerHTML= `Search term ${index + 1}`: ''; \n removeBtn?.setAttribute('aria-label', `Remove search field ${index + 1}`);\n })\n }\n\n /**\n * clone the search in field and set the events\n */\n protected clone(e: Event) {\n e.stopPropagation();\n e.preventDefault();\n const div = document.createElement('div');\n div.innerHTML = this.elements.searchInFieldWrapper[0]?.outerHTML;\n const searchInField = this.domUtils.getElement(this.selectors.searchInFieldWrapper.selector, div);\n const clonedInput = searchInField.querySelector('input');\n const clonedSelectInput : HTMLSelectElement = searchInField.querySelector('.advanced-search__search-in__area');\n clonedInput.removeAttribute('value');\n if(clonedSelectInput?.options?.length){\n clonedSelectInput.options[0].selected = true;\n }\n this.wrapper.insertAdjacentElement('beforeend', searchInField);\n this.elements.searchInField = searchInField;\n this.addEventListeners();\n this.toggleButtons();\n\n const fieldWrapper= this.elements.searchInField;\n const selectFieldWrapper= fieldWrapper?.querySelector('select[id^=\"searchArea\"]') as HTMLElement;\n selectFieldWrapper?.focus();\n }\n\n /**\n * remove the current tabular item\n *\n * @param e\n */\n remove(e: Event) {\n e.stopPropagation();\n e.preventDefault();\n const searchTermWrapper= (e.currentTarget as HTMLElement).closest(this.selectors.searchInFieldWrapper.selector); \n const searchTerms= this.elements.wrapper.querySelectorAll(this.selectors.searchInFieldWrapper.selector)\n const filteredTermRows= Array.from(searchTerms)?.filter((searchTerm) => searchTerm !== searchTermWrapper);\n\n let focusedSearchTerm: HTMLElement; \n let focusedSearchActionBtn: HTMLElement;\n\n searchTerms?.forEach((searchTerm, index)=> {\n if (searchTerm === searchTermWrapper){\n const targetElement= index === 0 ? searchTerms[index+1] : searchTerms[index-1];\n focusedSearchTerm= targetElement as HTMLElement;\n focusedSearchActionBtn= focusedSearchTerm?.querySelector('a.advanced-search__search-in__remove:not(.hidden)') ? focusedSearchTerm?.querySelector('a.advanced-search__search-in__remove:not(.hidden)') : focusedSearchTerm?.querySelector('a.advanced-search__search-in__add:not(.hidden)');\n focusedSearchActionBtn?.setAttribute('tabindex', '0');\n }\n else {\n searchTerm?.removeAttribute('tabindex');\n }\n })\n \n focusedSearchActionBtn?.focus();\n searchTermWrapper?.remove();\n this.searchTermsAligner(filteredTermRows as HTMLElement[]);\n this.toggleButtons();\n }\n\n /**\n * hide/show the action buttons depending on the item in the list,\n * and change the fields names\n */\n\n toggleButtons() {\n const items = this.elements.searchInFields;\n items.forEach((item, key) => {\n this.changeFieldAttributes(item, key);\n const add = this.elements.getAddButton(item);\n const remove = this.elements.getRemoveButton(item);\n const contextSearchLabel= item?.querySelector('.advanced-search__select')?.previousElementSibling;\n const TermSearchLabel= item?.querySelector('.advanced-search__search-term') ? item?.querySelector('.advanced-search__search-term')?.previousElementSibling: item?.querySelector('.advanced-search__input')?.previousElementSibling;\n\n if (key === items.length - 1) {\n remove?.classList.add(this.classList.hide);\n add?.classList.remove(this.classList.hide);\n contextSearchLabel? contextSearchLabel.innerHTML= `Context for search term ${key + 1}`: '';\n TermSearchLabel? TermSearchLabel.innerHTML= `Search term ${key + 1}`: '';\n remove?.setAttribute('aria-label', `Remove search field ${key + 1}`);\n add?.setAttribute('aria-label', 'Add new row');\n } else {\n add?.classList.add(this.classList.hide);\n remove?.classList.remove(this.classList.hide);\n }\n });\n }\n\n /**\n * changes the id,name for each tabular search in field\n * @param item\n * @param key\n */\n changeFieldAttributes(item: HTMLElement, key: number) {\n const dropdown = this.domUtils.getElement(this.selectors.typeField, item);\n const input = this.domUtils.getElement(this.selectors.keywordField, item);\n const labels = this.domUtils.getElements(\"label\", item);\n const number = key + 1;\n input.name = this.fieldNames.input + number;\n dropdown.name = this.fieldNames.dropdown + number;\n input.id = this.classList.keywordField + number;\n dropdown.id = this.classList.typeField + number;\n labels.forEach((label: HTMLElement) => {\n const forAttr = label.getAttribute(\"for\");\n if (forAttr.includes(\"text\")) {\n label.setAttribute(\"for\", `text${number}`);\n } else {\n label.setAttribute(\"for\", `searchArea${number}`);\n }\n });\n }\n\n}\n\nexport default AdvancedSearchTabular;\n\nexport {\n Elements as AdvancedSearchTabularElements,\n Selectors as AdvancedSearchTabularSelectors,\n ClassList as AdvancedSearchTabularClassList,\n Texts as AdvancedSearchTabularTexts\n}","import {\n ComponentSelectors,\n ComponentSelector,\n ComponentObject,\n ComponentElements,\n ComponentService,\n ComponentInjector,\n UIComponent\n} from '@atypon/ui-utils';\n\nclass Texts extends ComponentObject { }\n\nclass ClassList extends ComponentObject { }\n\nclass Selectors extends ComponentSelectors {\n rangeField = new ComponentSelector('.timeframe__static-range');\n customRange = new ComponentSelector('.timeframe__custom-range-filter');\n customRangeRadio = new ComponentSelector('#customRange');\n radios = new ComponentSelector('.radio--primary input');\n selects = new ComponentSelector('select');\n timeRangeAlert = new ComponentSelector(\"#time_range_interval_alert\");\n}\n\nclass Elements extends ComponentElements {\n protected _oldRadio: HTMLElement;\n radios: HTMLElement[] = [];\n selects: HTMLElement[] = [];\n timeRangeAlert: HTMLElement;\n customRangeRadio: HTMLInputElement;\n\n get oldRadio(): HTMLElement {\n return this._oldRadio;\n }\n\n set oldRadio(value: HTMLElement) {\n this._oldRadio = value;\n this.disabledAllFields();\n const parent = value.closest(`${this.selectors.rangeField.selector}, ${this.selectors.customRange.selector}`);\n this.enableSiblingFields(parent);\n }\n\n /**\n * all selects are already store so basically loop through them and disable them all.\n *\n */\n disabledAllFields() {\n this.selects.forEach(item => {\n item.setAttribute('disabled', 'true');\n });\n }\n\n /**\n * loop through Sibling selects and enable them all\n *\n * @param {HTMLElement} parent - the radio button shared parent\n */\n enableSiblingFields(parent) {\n if (!parent) {\n return;\n }\n this.domUtils.getElements(this.selectors.selects.selector, parent).forEach(item => {\n item.removeAttribute('disabled');\n });\n }\n}\n\ninterface AdvancedSearchRangeFields extends ComponentService { }\n\n@ComponentInjector(Selectors, Elements, ClassList, Texts)\nclass AdvancedSearchRangeFields implements UIComponent {\n\n constructor(readonly wrapper: HTMLElement, readonly onChanged: (Event) => void) { }\n\n initialize(): void {\n if (!this.wrapper) {\n return;\n }\n this.elements.initialize(this.wrapper);\n this.addEventListeners();\n }\n\n addEventListeners() {\n this.elements.radios.forEach(radio => {\n this.domUtils.addEventListener(radio, 'click', this.onChange.bind(this, radio));\n });\n this.elements.selects.forEach(select => {\n this.domUtils.addEventListener(select, 'change', this.onChanged);\n });\n }\n\n /**\n * click event listener, disables all fields then enables sibling fields\n *\n */\n protected onChange(radio: HTMLElement, event: Event) {\n if (radio === this.elements.oldRadio) {\n return;\n }\n this.elements.oldRadio = radio;\n this.onChanged(event)\n }\n\n public shouldDisable() {\n const values = {\n fromYear: 0,\n fromMonth: 0,\n toYear: 0,\n toMonth: 0,\n }\n this.elements.selects.forEach((item: HTMLSelectElement) => {\n //since the id is the same name as the key of the values\n if (values.hasOwnProperty(item.id)) {\n values[item.id] = parseInt(item.value)\n }\n })\n const { fromYear, fromMonth, toYear, toMonth } = values;\n // Check if \"customRange\" is selected and if end date is before start date or NaN values\n const customRangeSelected = this.elements.customRangeRadio?.checked ?? false;\n const hasNaNValues = Object.values(values).some(v => isNaN(v));\n const endDateBeforeStartDate = (toYear < fromYear) || (toYear === fromYear && toMonth < fromMonth);\n const isDisabled: boolean = customRangeSelected && (hasNaNValues || endDateBeforeStartDate);\n const alertText = this.elements.timeRangeAlert?.getAttribute('data-label');\n const isNaNCombinedDate = toYear + fromYear + toMonth + fromMonth;\n\n if(this.elements.timeRangeAlert) {\n if (isDisabled && !isNaN(isNaNCombinedDate)) {\n this.elements.timeRangeAlert.innerHTML = alertText;\n }\n else {\n this.elements.timeRangeAlert.innerHTML = '';\n }\n }\n\n return customRangeSelected && (hasNaNValues || endDateBeforeStartDate);\n }\n}\n\nexport default AdvancedSearchRangeFields;\n\nexport {\n Elements as AdvancedSearchRangeFieldsElements,\n Selectors as AdvancedSearchRangeFieldsSelectors,\n ClassList as AdvancedSearchRangeFieldsClassList,\n Texts as AdvancedSearchRangeFieldsTexts\n}\n","import autoComplete from '@tarekraafat/autocomplete.js'\nimport { DOMUtils, Container } from '@atypon/ui-utils';\n\n// please note that the Base class is not used here as it doesn't share much but may result in some potential bugs\nclass AutoCompleteTags extends autoComplete {\n protected preselectedItems: { label: string, value: string }[];\n protected badgeCloseIcon:string = ``;\n protected onTagRemoved: Function;\n protected tagClasses: Array;\n\n tagValues: Array<[HTMLInputElement, HTMLElement]>;\n tagsPosition: HTMLElement;\n\n get field() {\n return this.inputField;\n }\n\n get values() {\n return this.tagValues.map(([input])=>{\n return input.value;\n });\n }\n\n protected valueExists(value:string):boolean {\n return this.values.findIndex(item=>item === value) > -1;\n }\n\n\n constructor(protected config, protected inputField: HTMLInputElement) {\n super(config);\n const domUtils = Container.get(DOMUtils);\n const input = typeof config.selector === 'function' ? config.selector() : domUtils.getElement(config.selector);\n this.tagsPosition = config.tagsPosition || input;\n this.preselectedItems = config.preselectedItems || [];\n this.tagValues = [];\n\n if (typeof config.onTagRemoved === 'function') {\n this.onTagRemoved = config.onTagRemoved\n }\n this.tagClasses = config.tagClasses || ['autoComplete__tag']\n this.checkSetPreselected();\n }\n\n checkSetPreselected(): void {\n this.preselectedItems.map(({ label, value }) => {\n this.createTagValue(label, value);\n });\n }\n\n buildInput(mainInput: HTMLInputElement, value: string): HTMLInputElement {\n if (!mainInput) {\n return;\n }\n let inputNode = ``;\n const fragment = document.createElement('div');\n fragment.innerHTML = inputNode;\n return fragment.firstChild as HTMLInputElement;\n }\n\n getValues(): Array<[ChildNode, HTMLElement]> {\n return this.tagValues;\n }\n\n removeAllTags(): void {\n this.tagValues.forEach(([input, tag]) => {\n input.parentNode.removeChild(input);\n tag.parentNode.removeChild(tag);\n });\n this.tagValues = [];\n if (this.onTagRemoved) {\n this.onTagRemoved();\n }\n }\n\n createTagValue(label: string, value: string): void {\n if(this.valueExists(value)) {\n return;\n }\n const item = this.inputField;\n const input = this.buildInput(item, value);\n const tag = this.buildTag(label, input);\n this.tagValues.push([input, tag]);\n if (this.config.tagsPosition) {\n this.tagsPosition.appendChild(tag);\n } else {\n this.tagsPosition.parentNode.insertBefore(tag, this.tagsPosition);\n }\n item.parentElement?.insertBefore(input, item);\n }\n\n\n buildTag(text: string, input: ChildNode): HTMLElement {\n const tag = document.createElement('span');\n tag.innerHTML = `${text}`;\n const off = document.createElement('a');\n off.innerHTML = this.badgeCloseIcon;\n off.href = '#';\n off.addEventListener('click', (e) => {\n e.preventDefault();\n input.parentNode.removeChild(input);\n tag.parentNode.removeChild(tag);\n this.tagValues = this.tagValues.filter(([inputStored, tagStored]) => {\n return!(input === inputStored && tag === tagStored)\n });\n if (this.onTagRemoved) {\n this.onTagRemoved();\n }\n });\n tag.appendChild(off);\n tag.classList.add(...this.tagClasses);\n return tag;\n }\n}\n\n\n\n\nexport default AutoCompleteTags;\n\n","import AutoCompleteTags from '../../../plugins/autocomplete/tags';\nimport {\n ComponentElements,\n ComponentInjector,\n ComponentObject,\n ComponentSelectors,\n ComponentService\n} from '@atypon/ui-utils';\n\nclass Texts extends ComponentObject { }\n\nclass ClassList extends ComponentObject {\n autocompleteList = 'autoComplete autoComplete--tags rlist';\n autocompleteItem = 'autoComplete__item my-2';\n hidden = 'hidden'\n}\n\nclass Selectors extends ComponentSelectors {\n autoComplete = '.autoComplete';\n autoCompleteWrapper = '.autoComplete_wrapper';\n}\n\nclass Elements extends ComponentElements { }\n\ninterface AdvancedSearchAutoComplete extends ComponentService { }\ninterface AdvancedSearchAutoCompleteConfigs {\n maxWords: number;\n maxChars: number;\n url: string;\n}\n\ninterface AdvancedSearchAutoCompleteOptions {\n method: string;\n valueField: string;\n autoSelect: boolean;\n allowFreeEntries: boolean;\n displayField: string;\n cls: string;\n}\n\n@ComponentInjector(Selectors, Elements, ClassList, Texts)\nclass AdvancedSearchAutoComplete {\n autoCompletes: AutoCompleteTags[];\n protected placeHolders: Map = new Map();\n protected results: { value: { value: string, label: string } }[] = [];\n protected _configs: AdvancedSearchAutoCompleteConfigs;\n protected get configs(): AdvancedSearchAutoCompleteConfigs {\n return {\n maxWords: 200,\n maxChars: 222,\n url: '/action/doSuggest'\n }\n }\n\n protected get options(): AdvancedSearchAutoCompleteOptions {\n return {\n method: 'GET',\n valueField: 'value',\n autoSelect: false,\n allowFreeEntries: false,\n displayField: 'label',\n cls: 'pr-4',\n };\n }\n\n /**\n * local uri for testing perposes\n *\n * @return {string}\n */\n get localURL(): string {\n return '/specs/libraries/ui-core/widgets/advanced-search/ajax/data.json';\n }\n\n protected elementRenderer(item, data) {\n const a = document.createElement('a');\n a.href = data.value.url;\n a.innerHTML = `${data.value.highlight}`;\n a.className = 'autoComplete__link';\n item.setAttribute('aria-label', a.innerText);\n item.innerHTML = '';\n item.appendChild(a);\n a.addEventListener(\"click\", (event) => {\n event.preventDefault();\n });\n };\n\n constructor(readonly filters: HTMLElement[], readonly stateChanged: Function) {\n this.filters = filters;\n this.stateChanged = stateChanged;\n this.autoCompletes = [];\n this._configs = this.configs;\n }\n\n initialize(): void {\n this.addEventListeners();\n }\n\n addEventListeners(): void {\n this.filters.forEach(this.initAutoComplete.bind(this));\n this.autocompleteAnnouncer();\n }\n\n autocompleteAnnouncer(): void {\n const announcerContainer = document.querySelector('.advanced-search__autocomplete__announcer');\n const autocompleteLists = document.querySelectorAll('[id^=\"autoComplete_list_\"]');\n const mutationCallback = function(mutationsList) {\n mutationsList.forEach(mutation => {\n if(mutation.target.children.length){\n announcerContainer.innerHTML = `${mutation.target.children.length} results are available, use up and down arrow keys to navigate.`\n } else {\n announcerContainer.innerHTML = `No results are available.`\n }\n });\n };\n const observer = new MutationObserver(mutationCallback);\n autocompleteLists.forEach(element => {\n observer.observe(element, { childList: true });\n });\n }\n\n protected urlWithQuery(item) {\n const term = item.value.trim().replace(/\\s\\s+/g, ' ');\n const { maxWords, maxChars, url } = this.configs;\n if (term.split(' ').length >= maxWords || term.length >= maxChars) {\n return '';\n }\n const { autoCompleteTarget, autoCompleteWithin } = item.dataset;\n\n let query = `?target=${autoCompleteTarget}&query=${encodeURIComponent(term)}`;\n if (autoCompleteWithin) {\n query = `${query}&within=${autoCompleteWithin}`;\n }\n // return `${this.localURL}${query}`;\n return `${url}${query}`;\n }\n\n protected buildConfigs(item: HTMLElement, i: number) {\n return {\n data: {\n src: async () => {\n const url = this.urlWithQuery(item);\n const data = await fetch(url);\n return await data.json();\n },\n cache: false\n },\n selector: () => item,\n resultsList: {\n render: true,\n idName: 'autoComplete-' + i,\n class: this.classList.autocompleteList,\n maxResults: 10\n },\n resultItem: {\n class: this.classList.autocompleteItem,\n element: this.elementRenderer.bind(this),\n },\n highlight: false,\n sort: false,\n threshold: 2,\n preselectedItems: this.itemPreselectedValues(item),\n searchEngine: null,\n onTagRemoved: null\n }\n }\n\n protected itemPreselectedValues(item) {\n const { values } = item.dataset;\n return values ? JSON.parse(values) : [];\n }\n\n protected createAutoCompleteInstance(configs, item): AutoCompleteTags {\n return new AutoCompleteTags(configs, item)\n }\n\n protected initAutoComplete(item: HTMLInputElement, i: number) {\n const configs = this.buildConfigs(item, i);\n configs.searchEngine = (query: any, record: any) => this.onSearchEngine(autoCompleteInstance, query, record);\n configs.onTagRemoved = () => this.onTagRemoved(autoCompleteInstance);\n const autoCompleteInstance = this.createAutoCompleteInstance(configs, item);\n this.placeHolders.set(item, item.placeholder);\n this.autoCompletes.push(autoCompleteInstance);\n this.domUtils.closest(this.selectors.autoCompleteWrapper, item)\n ?.addEventListener('click', this.onAutoCompleteFocus.bind(this, item));\n this.onTagValuesChange(autoCompleteInstance);\n item.addEventListener('blur', this.onBlur.bind(this, autoCompleteInstance, item));\n item.addEventListener(\"selection\", this.onSelection.bind(this, autoCompleteInstance, item));\n item.addEventListener('results', this.onResults.bind(this));\n }\n\n protected onSearchEngine(autoCompleteInstance: AutoCompleteTags, query: any, record: any) {\n const found = autoCompleteInstance.tagValues.find(item => {\n const [input] = item;\n return record.value == (input as HTMLInputElement).value\n })\n if (found) {\n return null;\n }\n return record.highlight || record.label;\n }\n\n protected onTagRemoved(autoCompleteInstance: AutoCompleteTags) {\n this.onTagValuesChange(autoCompleteInstance);\n this.stateChanged();\n }\n\n protected onAutoCompleteFocus(field: HTMLInputElement) {\n field.focus();\n field.parentElement.scrollTop = field.parentElement.scrollHeight;\n }\n\n protected onTagValuesChange({ field, tagValues }: AutoCompleteTags) {\n const hasTags = tagValues.length;\n if (hasTags) {\n field.removeAttribute('placeholder');\n field.style.width = \"auto\";\n } else {\n field.setAttribute('placeholder', this.placeHolders.get(field));\n field.style.width = \"100%\";\n }\n }\n\n protected onBlur(autocomplete, input, e) {\n if (e.relatedTarget && e.relatedTarget.closest(this.selectors.autoComplete)) {\n input.value = null;\n this.results = [];\n return;\n }\n if (this.results.length && this.results.length === 1) {\n const { label, value } = this.results.pop().value;\n autocomplete.createTagValue(label, value);\n }\n input.value = '';\n this.results = [];\n }\n\n protected onSelection(autocomplete: AutoCompleteTags, input: HTMLInputElement, event: CustomEvent) {\n const { label, value } = event.detail.selection.value;\n autocomplete.createTagValue(label, value);\n input.value = '';\n this.domUtils.toggleClasses(autocomplete.tagsPosition, this.classList.hidden, !autocomplete.tagValues.length);\n this.onTagValuesChange(autocomplete);\n this.stateChanged();\n }\n\n protected onResults({ detail }: CustomEvent) {\n this.results = detail.results;\n }\n\n}\n\nexport default AdvancedSearchAutoComplete;\n\nexport {\n Elements as AdvancedSearchAutoCompleteElements,\n Selectors as AdvancedSearchAutoCompleteSelectors,\n ClassList as AdvancedSearchAutoCompleteClassList,\n Texts as AdvancedSearchAutoCompleteTexts\n}","import AdvancedSearchTabular from './tabular';\nimport AdvancedSearchRangeFields from './range-fields';\nimport AdvancedSearchAutoComplete from './autocomplete';\nimport {\n ComponentElements,\n ComponentInjector,\n ComponentObject,\n ComponentSelector,\n ComponentService,\n UIComponent,\n ComponentSelectors,\n Inject,\n BrowserUtils\n} from '@atypon/ui-utils';\n\nclass Texts extends ComponentObject { }\n\nclass ClassList extends ComponentObject { }\n\nclass Selectors extends ComponentSelectors {\n searchInFields = new ComponentSelector('.advanced-search__search-in');\n searchInInputs = '.advanced-search__input';\n rangeField = new ComponentSelector('.advanced-search__timeframe');\n submitButton = new ComponentSelector('#advanced-search-btn', 'document');\n autoCompleteFields = new ComponentSelector('.advanced-search__autocomplete');\n advancedFiltersRadioInputs = '.advanced-search__advanced-filters .radio--primary input[type=\"radio\"]';\n}\n\nclass Elements extends ComponentElements {\n rangeField: HTMLElement;\n searchInFields: HTMLElement;\n submitButton: HTMLButtonElement;\n autoCompleteFields: Array = [];\n}\n\ninterface AdvancedSearch extends ComponentService { }\n\n@ComponentInjector(Selectors, Elements, ClassList, Texts)\nclass AdvancedSearch implements UIComponent {\n\n @Inject()\n protected browserUtils:BrowserUtils;\n\n /**\n * {AdvancedSearchTabular}\n */\n tabularListener: AdvancedSearchTabular;\n\n /**\n * {AdvancedSearchRangeFields}\n */\n rangeFieldListener: AdvancedSearchRangeFields;\n\n /**\n * {AdvancedSearchAutoComplete}\n */\n autoCompleteListener: AdvancedSearchAutoComplete;\n\n constructor(readonly wrapper: HTMLElement) { }\n\n initialize(): void {\n this.elements.initialize(this.wrapper);\n this.addEventListeners();\n }\n\n\n addEventListeners(): void {\n this.initTabular();\n this.initRange();\n this.initAutoComplete();\n this.setSubmitButtonState();\n this.setResetButtonListener();\n this.selectAdvancedFiltersRadioInput();\n }\n\n /**\n * creates instance AdvancedSearchTabular to handle the Tabular Fields\n */\n initTabular() {\n this.tabularListener = new AdvancedSearchTabular(this.elements.searchInFields, this.setSubmitButtonState.bind(this));\n this.tabularListener.initialize();\n\n }\n\n /**\n * creates instance AdvancedSearchRangeFields to handle the state if enable/disabled of range filters\n */\n initRange() {\n this.rangeFieldListener = new AdvancedSearchRangeFields(this.elements.rangeField, this.setSubmitButtonState.bind(this));\n this.rangeFieldListener.initialize();\n }\n\n /**\n * creates instance AdvancedSearchAutoComplete to handle the autocompletion this contains the logic of autocomplete\n */\n initAutoComplete() {\n if (!this.browserUtils.isIE) {\n this.autoCompleteListener = new AdvancedSearchAutoComplete(this.elements.autoCompleteFields, this.setSubmitButtonState.bind(this));\n this.autoCompleteListener.initialize();\n }\n }\n\n /**\n * enables/disables the submit button depending on the form content\n */\n setSubmitButtonState(event?:CustomEvent) {\n const state = (this.hasEmptyFields() && this.hasEmptySuggestions()) || this.rangeFieldListener.shouldDisable();\n if (state) {\n this.elements.submitButton.setAttribute('disabled', `${state}`);\n } else {\n this.elements.submitButton.removeAttribute('disabled');\n }\n }\n\n /**\n * to prevent duplicate selection happened when clicked on the radio inputs at advanced filter section \n */\n selectAdvancedFiltersRadioInput(event?:CustomEvent) {\n const radioInputs = this.domUtils.getElements(this.selectors.advancedFiltersRadioInputs);\n radioInputs.forEach(item => {\n item.addEventListener('change', (event)=>{\n radioInputs.forEach(item => {\n item.checked = false;\n })\n const selectedTarget = event.target as HTMLInputElement;\n selectedTarget.checked = true;\n });\n });\n }\n\n /**\n * check if any of the text fields are not empty\n *\n * @return {boolean}\n */\n protected hasEmptyFields(): boolean {\n const textInputs = this.domUtils.getElements(this.selectors.searchInInputs, this.elements.searchInFields);\n const emptyFields = textInputs.filter((i) => {\n return !i.value;\n });\n return emptyFields.length === textInputs.length;\n }\n\n /**\n * check if all suggestions are empty\n *\n * @return {boolean}\n */\n protected hasEmptySuggestions(): boolean {\n if (!this.autoCompleteListener) {\n return true;\n }\n const suggestions = this.autoCompleteListener.autoCompletes;\n if (!suggestions.length) {\n return true;\n }\n return suggestions.filter(suggestion =>\n suggestion.getValues().length > 0\n ).length === 0;\n }\n\n protected setResetButtonListener() {\n this.wrapper.addEventListener('reset', (e) => {\n e.preventDefault();\n this.tabularListener.elements.searchInFields.forEach((item, k) => {\n if (k === 0) {\n this.domUtils.getElement('input', item).value = '';\n this.domUtils.getElement('select', item).selectedIndex = 0;\n } else {\n item.remove();\n }\n });\n this.tabularListener.toggleButtons();\n this.rangeFieldListener.elements.radios[0]?.click();\n this.autoCompleteListener.autoCompletes.forEach(item => {\n item.removeAllTags();\n });\n });\n }\n\n}\n\nexport default AdvancedSearch;\n\nexport {\n Elements as AdvancedSearchElements,\n Selectors as AdvancedSearchSelectors,\n ClassList as AdvancedSearchClassList,\n Texts as AdvancedSearchTexts\n}\n\n"],"sourceRoot":""}