{"version":3,"sources":["/build/node_modules/lodash/flatMap.js","/build/src/modules/filters/components/MobileFilters/TournamentList/TournamentItem/tournamentItem.scss","/build/src/modules/filters/components/Categorizer/CategorizerHeadingFavorite/categorizerHeadingFavorite.scss","/build/src/modules/filters/utils.ts","/build/node_modules/lodash/concat.js","/build/node_modules/@gin-betting/filters/dist/reducer.js","/build/node_modules/lodash/differenceBy.js","/build/node_modules/@gin-betting/filters/dist/utils.js","/build/src/modules/filters/components/MobileFilters/TournamentList/TournamentItemWrapper/tournamentItemWrapper.scss","/build/src/modules/filters/components/MobileFilters/BackLink/backLink.scss","/build/src/modules/filters/components/FilterByTimePeriod/filterByTimePeriod.scss","/build/src/modules/filters/components/MobileFilters/TournamentList/TournamentsByOrganization/tournamentsByOrganization.scss","/build/src/modules/filters/components/MobileFilters/TournamentList/CountryRegionItem/countryRegionItem.scss","/build/src/modules/filters/components/MobileFilters/mobileFilters.scss","/build/src/modules/filters/components/MobileFilters/TournamentList/CountryTitle/countryTitle.scss","/build/node_modules/@gin-betting/filters/dist/types.js","/build/src/modules/filters/components/MobileFilters/MobileFiltersCtx/MobileFiltersCtx.ts","/build/src/modules/filters/components/MobileFilters/MobileFiltersCtx/MobileFiltersCtxProvider.ts","/build/src/modules/filters/components/Categorizer/CategorizerRowHeader/CategorizerRowHeader.tsx","/build/src/modules/filters/components/Categorizer/messages.js","/build/src/assets/svg/summaries.svg","/build/src/modules/filters/components/Categorizer/CategorizerSportSummaries/CategorizerSportSummaries.tsx","/build/src/modules/filters/components/Categorizer/CategorizerCheckRow/CategorizerCheckRow.tsx","/build/src/modules/filters/components/Categorizer/CategorizerRow/CheckRowList/CheckRowList.tsx","/build/src/modules/filters/components/Categorizer/useCategorizerRowChecker.ts","/build/src/modules/filters/components/Categorizer/CategorizerSubRow/useCategorizerSubRow.ts","/build/src/modules/filters/components/Categorizer/CategorizerSubRow/CategorizerSubRow.tsx","/build/src/modules/filters/components/Categorizer/CategorizerRow/LocationRow/LocationRow.tsx","/build/src/modules/filters/components/Categorizer/CategorizerRow/OrganizationRow/OrganizationRow.tsx","/build/src/modules/filters/components/Categorizer/CategorizerRow/useCategorizerRow.ts","/build/src/modules/filters/components/Categorizer/CategorizerRow/CategorizerRow.tsx","/build/src/modules/filters/hooks/useOutrightsCountBySport.ts","/build/src/modules/filters/components/Categorizer/CategorizerBody/useCategorizerBody.ts","/build/src/modules/filters/components/Categorizer/CategorizerBody/CategorizerBody.tsx","/build/src/modules/filters/components/Categorizer/CategorizerHeadingFavorite/CategorizerHeadingFavorite.tsx","/build/src/modules/filters/components/Categorizer/CategorizerHeading/CategorizerHeading.tsx","/build/src/modules/filters/components/Categorizer/useCategorizer.ts","/build/src/modules/filters/components/Categorizer/Categorizer.tsx","/build/src/modules/filters/messages.js","/build/src/modules/filters/components/FilterByTimePeriod/useFilterByTimePeriod.ts","/build/src/modules/filters/components/FilterByTimePeriod/FilterByTimePeriod.tsx","/build/src/modules/filters/components/SportsNavigation/useSportsNavigation.ts","/build/src/modules/filters/components/SportsNavigation/SportsNavigation.tsx","/build/src/modules/filters/components/MobileFilters/BackLink/BackLink.tsx","/build/src/modules/filters/components/MobileFilters/FeaturedTournamentsHeading/useFeaturedTournamentsHeading.ts","/build/src/modules/filters/components/MobileFilters/FeaturedTournamentsHeading/FeaturedTournamentsHeading.tsx","/build/src/modules/filters/components/MobileFilters/FilterBySportHeading/useFilterBySportHeading.ts","/build/src/assets/svg/classicAll.svg","/build/src/modules/filters/components/MobileFilters/FilterBySportHeading/FilterBySportHeading.tsx","/build/src/modules/filters/components/MobileFilters/FeaturedTournamentsList/FeaturedTournamentsItem.tsx","/build/src/modules/filters/components/MobileFilters/FeaturedTournamentsList/FeaturedTournamentsList.tsx","/build/src/modules/filters/components/MobileFilters/OutrightsBySportContext.ts","/build/src/modules/filters/components/MobileFilters/TournamentList/TournamentItem/TournamentItem.tsx","/build/src/modules/filters/components/MobileFilters/TournamentList/TournamentItemWrapper/TournamentItemWrapper.tsx","/build/src/modules/filters/components/MobileFilters/TournamentList/SportSummaryRow/SportSummaryRow.tsx","/build/src/modules/filters/components/MobileFilters/TournamentList/OrganizationList/OrganizationList.tsx","/build/src/modules/filters/components/MobileFilters/TournamentList/CountryTitle/CountryTitle.tsx","/build/src/modules/filters/components/MobileFilters/TournamentList/hooks/useCountryInfo.ts","/build/src/modules/filters/components/MobileFilters/TournamentList/ActiveRegionItem/useActiveRegionItem.ts","/build/src/modules/filters/components/MobileFilters/TournamentList/ActiveRegionItem/ActiveRegionItem.tsx","/build/src/modules/filters/components/MobileFilters/TournamentList/CountryRegionItem/useCountryRegionItem.ts","/build/src/modules/filters/components/MobileFilters/TournamentList/CountryRegionItem/CountryRegionItem.tsx","/build/src/modules/filters/components/MobileFilters/TournamentList/TournamentTitle.tsx","/build/src/modules/filters/components/MobileFilters/TournamentList/useTournamentList.ts","/build/src/modules/filters/components/MobileFilters/TournamentList/TournamentList.tsx","/build/src/modules/filters/components/MobileFilters/TournamentList/TournamentsByOrganization/TournamentsByOrganization.tsx","/build/src/modules/filters/components/MobileFilters/TournamentList/OrganizationContainer/useOrganizationContainer.ts","/build/src/modules/filters/components/MobileFilters/TournamentList/OrganizationContainer/OrganizationContainer.tsx","/build/src/modules/filters/components/MobileFilters/TournamentList/TournamentListContainer.tsx","/build/src/modules/filters/components/MobileFilters/Overlay/Overlay.tsx","/build/src/modules/filters/components/MobileFilters/SportsList/useSportsList.ts","/build/src/modules/filters/components/MobileFilters/SportsList/SportsList.tsx","/build/src/modules/filters/components/MobileFilters/useMobileFilters.ts","/build/src/modules/filters/components/MobileFilters/MobileFilters.tsx","/build/src/modules/filters/index.ts","/build/node_modules/@gin-betting/filters/dist/index.js","/build/src/modules/filters/components/Categorizer/CategorizerBody/categorizerBody.scss","/build/src/modules/filters/components/Categorizer/CategorizerRow/categorizerRow.scss","/build/node_modules/@gin-betting/filters/dist/actions.js","/build/src/modules/filters/components/Categorizer/CategorizerCheckRow/categorizerCheckRow.scss","/build/src/modules/filters/constants.ts","/build/node_modules/@gin-betting/filters/dist/selectors.js","/build/src/modules/filters/components/MobileFilters/TournamentList/SportSummaryRow/sportSummaryRow.scss","/build/src/modules/filters/components/MobileFilters/FeaturedTournamentsHeading/featuredTournamentsHeading.scss","/build/src/modules/filters/components/MobileFilters/FeaturedTournamentsList/featuredTournamentsItem.scss","/build/node_modules/lodash/sumBy.js","/build/src/modules/filters/components/Categorizer/CategorizerRowHeader/CategorizerRowHeader.scss","/build/src/modules/filters/components/Categorizer/CategorizerSportSummaries/categorizerSportSummaries.scss","/build/node_modules/lodash/pickBy.js","/build/src/modules/filters/components/Categorizer/CategorizerHeading/categorizerHeading.scss","/build/src/modules/filters/components/Categorizer/CategorizerSubRow/categorizerSubRow.scss","/build/node_modules/@gin-betting/filters/dist/constants.js","/build/src/modules/filters/components/SportsNavigation/sportsNavigation.scss","/build/src/modules/filters/components/Categorizer/Categorizer.scss"],"names":["baseFlatten","map","module","exports","flatMap","collection","iteratee","SportType","stringify","getHistory","getAppliedFilters","checkOnRoute","isOneOfPages","isInnerPage","getSportsBySportType","getBettingOptions","getSportTypeBySportTags","getSportTypeFromLocation","getDefaultVariables","filterMatches","filters","pathname","searchObj","history","validSearchObj","v","search","replace","location","hash","window","canFilterByTournamentOnMobile","Routes","UPCOMING_LIST","RESULTS_LIST","ESPORT","CLASSIC","exact","canFilterByTimePeriods","canFilterByLivePeriods","LIVE_LIST","getFormattedCountryCode","countryCode","getTournamentCountryCode","isAlpha3Format","metaCountryCode","find","CountryCode","value","length","getSearchString","changedFilters","currentFilters","nextFilters","getSportsWithCheckedTournaments","sports","tournamentIds","filter","some","includes","item","getSortedSportsBySportType","sportType","categorizerItems","sportsOrder","sportsByActiveTab","sportsToSort","get","isActive","list","CategorizerSortingApi","matchOrder","getCategorizerItemsForStaticSports","staticSports","rest","sortedStatic","sort","a","b","indexOf","sortedRest","name","localeCompare","concat","categorizerItem","getI18nCounties","locale","convert","from","to","getNameByCountryCode","formatMessage","region","undefined","sortByCountryCode","order","rule","sortByCountryName","countryName","getSortedTournamentsInfo","tournaments","sportId","topRegionsOrder","topCountriesOrder","productName","mappingByProduct","unknown","WW","getRegionOrderRules","topRegions","otherRegions","topCountries","otherCountries","tournament","push","getItemsByLocation","groupedTournaments","t","tournamentsInfo","itemsByCountryCode","items","getTournamentsInfo","tournamentsWithLocation","tournamentsWithoutLocation","null","groupCategorizerItemsByOrganizations","organizations","logoMaps","groupedItems","meta","organizationLocalized","OrganizationLocalized","organizationName","organizationLogo","OrganizationLogo","categorizerItemByOrganizations","logo","count","lastIdx","idx","checkIsShowLiveLabel","matchStatuses","getCategorizerVars","OUTRIGHTS_LIST","OUTRIGHT","getSummaryPath","sportIds","getNextOpenedSportIds","options","actionType","openedSportIds","triggeredSportId","CheckGameType","Close","Open","selectedSportIds","isFreeBetVisibleInCategorizer","sportTypeRoutes","timeTypeRoutes","PREMATCH","combinedRoutes","sportTypeRoute","timeTypeRout","getNextPathname","requestedSportType","slicedPathname","getRequestedSportType","Mix","nextSportType","getSportTypeBySelectedSportsIds","getSelectedCountryKeyInfo","activeCountryKey","split","selectedCountryKey","allPrefix","isSelectedCountryCodeWithAll","Boolean","sortByTopTournaments","el","IsTop","incomeSportIds","getInstance","isDeviceMobile","expand","countLiveEventsBySport","countPreMatchEventsBySport","marketStatuses","restVariables","marketStatusesForLiveSportEvent","defaultDateFrom","dateFrom","MarketStatus","ACTIVE","SUSPENDED","RESULTED","CANCELLED","DEACTIVATED","SportEventStatus","NOT_STARTED","LIVE","sportEventTypes","SportEventType","MATCH","hasAnyMetaEventsInCategorizer","metaName","getSortedCategorizerItems","outrightItems","differenceOutrightCategorizer","arrayPush","copyArray","isArray","arguments","args","Array","array","index","__createBinding","this","Object","create","o","m","k","k2","defineProperty","enumerable","__setModuleDefault","__importStar","mod","__esModule","result","prototype","hasOwnProperty","call","FilterStateRecord","CategorizerStateRecord","immutable_1","lodash_1","core_1","types_1","constants_1","utils_1","_a","default","utils","getFiltersFromLocation","Record","fetchStatus","App","FetchStatus","INITIAL","isOpen","openedGameIds","fixedTournamentIds","categorizer","initialState","reducer","state","action","type","GET_CATEGORIZER_REQUEST","nextCategorizer","set","LOADING","GET_CATEGORIZER_SUCCESS","data","payload","LOADED","GET_CATEGORIZER_FAIL","nextCateogrizer","FAILED","TOGGLE_FILTERS","OPEN_CATEGORIZER","CLOSE_CATEGORIZER","CHANGE_FIXED_TOURNAMENTS","xor","SELECT_GAME","gameId","nextTournamentIds","nextOpenedGameIds","getOpenedGameIds","UNSELECT_GAMES_WITHOUT_SELECTED_TOURNAMENTS","_b","RESET_CATEGORIZER_CONTROL_FIELDS","INIT_CATEGORIZER_CONTROLS_BY_LOCATION","nextFixedTournamentIds","_c","tournamentIds_1","fId","baseDifference","baseIteratee","baseRest","isArrayLikeObject","last","differenceBy","values","__assign","assign","s","i","n","p","apply","__rest","e","getOwnPropertySymbols","propertyIsEnumerable","__spreadArray","il","j","filterMatchesPreview","isVisibleFreeBetInCategorizer","getCountAppliedFilters","services","calculationFields","reduce","pick","sum","curr","categorizerData","currentOpenedGameIds","selectedTournamentIds","acc","currentGame","currentGameId","currentTournamentIds","children","child","intersection","nextAcc","vars","apiClient","appServiceLocator","defaultVariables","withMarketsCount","variables","makeRequest","method","currentOverlay","NONE","setOverlay","setActiveMobileCountryKey","ui","dispatch","Provider","SELECT_SPORT_ANALYTICS","category","FiltersCategorizer","SelectSport","glyph","live","hasBorder","label","additionalIcon","isSelected","isOpened","onSelect","onClick","isLive","data-category","data-action","OpenSport","checked","onChange","stopPropagation","analytics","className","title","summaries","defaultMessage","id","selectAll","symbol","outrightsCount","messages","memo","handleClick","SelectTournament","isAllItemsInSportChecked","hasSiblingSubgroups","isTournamentManuallyChecked","onTournamentsChecked","hasOnlyOneTournament","isRowCheckable","Fragment","isChecked","key","topCategorizerItem","handleTournamentIdsChange","isGroupWithOneItem","setTournamentManuallyChecked","isSubgroupManuallyChecked","setSubgroupManuallyChecked","itemTournamentIds","isAllTournamentsChecked","hasAnyCheckedTournament","handleItemCheck","checkedTournamentIds","groupType","getNextTournamentIds","allTournamentsInSport","isGroupCheckClicked","Subgroup","hasSingleTournament","itemsToRemove","removableItems","isTournamentsAlreadyChecked","every","Tournament","activeTournamentIds","onTournamentIdsChange","isSubgroupChecked","handleOpenToggle","isTournamentCheckable","handleTournamentCheck","handleSubgroupCheck","itemCountryCode","groupedItemsByOrganization","organization","selectEntityByCategorizerItemTyped","selectProps","entity","onSportSelected","onSportPreviewClick","handleTournamentsCheck","handleSportSelected","sport","handleSportPreviewClick","renderRowContent","isActiveTopTournaments","CategorizerTopTournaments","childrenCategorizerItem","checkGroupedByLocation","tags","SportTag","sortedItems","categorizerItemChildren","getPollerManager","API_CLIENT","pollInterval$","getIntervalObserve","reduceOutrightsCount","record","catItem","outrightsCountBySport","setOutrightsCountBySport","getOutrightsCategorizer","then","catch","sub$","subscribe","unsubscribe","usePoller","selectSports","useDeepMemo","getCategorizer","selectCategorizerData","onFilterChange","widget","CATEGORIZER","outrightCategorizerItems","requestContent","pollerName","PollerName","Categorizer","executableAction","skipInitialRequest","sortedCategorizerItems","notifyCmsAboutRedirect","nextSearch","nextPathname","getSportTypeBySelectedSports","handleSportSelect","isSportSelected","chosenSportTournamentIds","nextSportIds","historyOutrightSport","sportsWithCheckedTournaments","FavoriteCountAll","favorite","components","FAVORITE_UPCOMING","prefix","suffix","favorites","FeaturedTournamentsList","promo","dropPaginationState","getAppliedFiltersWithDefault","appliedFilters","setOpenedSportIds","categorizerItemsRef","prevCategorizerItems","current","clearState","callback","prevState","sportIdsByTournaments","setupFiltersIntoUrl","page","goToUpcomingWithSearch","pathnameRout","currentSportIds","freeBetId","handleFiltersChange","nextOpenedSportIds","starts","started","allNextToGo","all","today","yesterday","week","setSearchString","extendSearchString","useFilterByTimePeriod","currentPeriod","nextPeriod","period","selectIsCompact","handleTab","withResetFilters","withHistoryReplace","nextLocation","selectLivePrematchIds","LiveEventsCount","isPrematch","PrematchEventsCount","liveSportIds","prematchSportIds","isCompact","livePrematchIds","ANALYTICS_LIVE","FiltersLive","ANALYTICS_PREMATCH","FiltersNextToGo","tournamentId","sportIdsMem","handleAll","handleLive","isLiveTabActive","isNextToActive","isAllTabActive","isTournamentTabActive","redirectInfo","redirectInfoRef","refValue","sIds","tabs","text","analyticAttrs","nextToGo","TOURNAMENT_LIST","withoutRender","ids","useFeaturedConfigs","useFeaturedTournamentsHeading","featuredConfigs","isSportIdExist","openOverlay","FEATURED_TOURNAMENTS_LIST","featured","useFilterBySportHeading","closeOverlay","isClassicSport","Classic","allGameMsg","allGames","classicAll","config","linkToTournament","selectFeaturedTournamentsList","size","slug","OutrightsBySportContext","getLinkToTournament","content","categorizerItemsByOrganizations","sportItemCount","selectOrganization","onClickAll","obj","goToTournamentsList","other","useCountryInfo","totalCount","handleClickBack","handleClickAll","handleClickCountryRegion","firstTournamentId","withFlag","getSportTypeBySport","selectActiveMobileCountryKey","DEFAULT_ITEMS","activeMobileCountryKey","sportItem","isGroupedByOrganization","prevSportId","isClassic","partitionTournaments","makeHandleClickAll","withSportSummary","isOrganization","renderTournaments","renderContent","tournamentItems","groupItems","selectedOrganization","onBackClick","activeOrganization","setActiveOrganization","contextValue","useSportsList","handleLinkClick","getLinkTo","aria-disabled","selectTournaments","openFilter","closeFilter","selectTournament","_state","props","tournamentName","useMobileFilters","withSportNavigation","BackLinkTitle","filtersModule","MobileFiltersCtx","constants","moduleLocator","__importDefault","Filters","actions","selectors","FiltersType","reducer_1","searchMatchesByText","Actions","initControlsByLocation","resetCategorizerControls","unselectGamesWithoutSelectedTournaments","selectGame","changeFixedTournamentIds","toggleCategorizer","closeCategorizer","openCategorizer","toggleFilters","selectors_1","makeAction","getMatchStatusesByLocation","makeSearchMatchesFn","entities","searchMatches","SEARCH_MATCHES_REQUEST","searchMatchesByFilters","FILTER_MATCHES_REQUEST","inputVariables","isApiCall","getState","currentOpenStatus","selectCategorizerOpenStatus","nextOpenStatus","isBoolean","CategorizerRowType","OverlayType","FILTER_TIME_PERIODS","TimePeriodVariants","ONE_HOUR","TODAY","YESTERDAY","THREE_DAYS","WEEK","INTERVAL_ALL","TIME_INTERVAL_ALL","interval","displayedValue","unit","customFlagsMapping","ENG","EU","ACTIVE_COUNTRY_KEY_DIVIDER","DEFAULT_TIME_PERIOD","TIME_FILTER_NEXT_TO_GO_BOUNDARY","filteringKey","UNGROUPED_CATEGORIES_KEY","STATIC_SPORTS_ALL","ESPORTS_COUNTER_STRIKE","ESPORTS_DOTA_2","FOOTBALL","BASKETBALL","TENNIS","ICE_HOCKEY","TABLE_TENNIS","ESPORTS_LEAGUE_OF_LEGENDS","ESPORTS_BASKETBALL","ESPORTS_FIFA","ESPORTS_VALORANT","ESPORTS_FORTNITE","STATIC_SPORTS_ESPORT","STATIC_SPORTS_CLASSIC","VOLLEYBALL","HANDBALL","CATEGORIZER_STATIC_SPORTS_BY_TYPE","Esport","EXCLUDED_WORLD_REGIONS","WORLD_REGIONS","code","ALL","ORDER_CATEGORIZER_ITEMS_MAPPING","ru","bet","com","ua","SPORTS_ORGANIZATION","selectEntityByCategorizerItem","selectValueFromCategorizerItemProps","selectFilterOpenStatus","selectCategorizerFetchStatus","selectFixedTournamentIds","selectOpenedGameIds","selectCategorizer","selectFilters","reselect_1","fieldMapping","sport_id","selectEntities","createSelector","_","field","baseSum","sumBy","arrayMap","basePickBy","getAllKeysIn","pickBy","object","predicate","prop","path","SEARCH_MATCHES_FAIL","SEARCH_MATCHES_SUCCESS","FILTER_MATCHES_FAIL","FILTER_MATCHES_SUCCESS","NAME"],"mappings":";0HAAA,IAAIA,YAAc,oBAAlB,YACIC,IAAM,oBAAV,YA2BAC,OAAOC,QAJP,SAASC,QAAQC,WAAYC,UAC3B,OAAON,YAAYC,IAAII,WAAYC,UAAW,K,wDCxBhDJ,OAAOC,QAAU,CAAC,UAAY,oCAAoC,MAAQ,gCAAgC,QAAU,oC,wDCApHD,OAAOC,QAAU,CAAC,UAAY,kD,8qPC+DbI,UAab,0DAAI,UAbkB,UACtB,GAYA,0DAZmC,SAAvBC,UAAS,aAAEC,WAAU,cACjC,GAWA,0DADC,MATGC,kBAAiB,qBACjBC,aAAY,gBACZC,aAAY,gBACZC,YAAW,eACXC,qBAAoB,wBACpBC,kBAAiB,qBACjBC,wBAAuB,2BACvBC,yBAAwB,4BACxBC,oBAAmB,uBAIrB,SAAUC,cACZC,QACAC,UAEA,IAAMC,UAAS,qBAAQZ,qBAAwBU,SAEzCG,QAAUd,aACVe,eAAmC,qDAAOF,WAAW,SAAAG,GAAK,aAE1DC,OAASlB,UAAUgB,gBAEzBD,QAAQI,QAAO,8BACRJ,QAAQK,UAAQ,CACnBC,KAAMC,OAAOF,SAASC,KACtBH,OAAM,SACFL,UAAY,CAAEA,SAAQ,YAI5B,SAAUU,gCACZ,OAAOnB,aACH,CACI,oDAAIoB,OAAOC,cACX,oDAAID,OAAOE,aACX,oDAAIF,OAAOG,OACX,oDAAIH,OAAOI,SAEf,CAAEC,OAAO,IAIX,SAAUC,yBACZ,OAAO3B,aAAa,oDAAIqB,OAAOE,cAG7B,SAAUK,yBACZ,OAAO5B,aAAa,oDAAIqB,OAAOQ,WAG5B,IAAMC,wBAA0B,SAACC,aACpC,qDAAS,4DAAoBA,cAC7B,wEAAeA,cACf,MAEE,SAAUC,yBACZ,GACAC,gB,YAAA,IAAAA,iCAAA,GAEA,IAAMC,gBAEL,QAFoB,GAHf,QAGuBC,MACzB,SAAC,IAAa,OAAP,UAAgB,8CAA6BC,sBACvD,iBAAEC,MAEH,OAAKH,gBAEmB,OAApBA,gBACO,SAGPD,eACO,8CAAS,4DAAoBC,kBAAoBA,gBAG7B,IAA3BA,gBAAgBI,OACTJ,gBAGJJ,wBAAwBI,iBAdF,KAiB3B,SAAUK,gBAAgBC,gBAC5B,IAAMC,eAAiB1C,oBACjB2C,YAAW,qBACVD,gBACAD,gBAGP,OAAO3C,UAAU6C,aAGf,SAAUC,gCACZC,OACAC,eAEA,OAAKA,cAAcP,OAEZM,OACFE,QAAO,SAAC,IACL,OADe,YACNC,MAAK,SAAC,I,IAAEV,MAAK,SAAO,OAAAQ,cAAcG,SAASX,aAEvD/C,KAAI,SAAA2D,MAAQ,OAAAA,KAAA,SANiB,GAShC,SAAUC,2BAA2B,I,IACvCC,UAAS,aACTP,OAAM,UACNQ,iBAAgB,oBAChBC,YAAW,eAOX,IAAKF,UAAW,MAAO,GAEvB,IAAMG,kBAAoBnD,qBAAqByC,OAAQO,WAEjDI,aAAeH,iBAAiBN,QAAO,SAAAG,MACzC,OAAAK,kBAAkBE,IAAIP,KAAKZ,UAK/B,GAFqB,yDAASoB,SAAS,yDAASC,KAAKC,uBAEnC,OAAOJ,aAEzB,IAAMK,WAAa,qBACZ,4EACAP,aACLF,WAEI,GAAuB,wDACzBI,aACAM,mCAAmCD,aAFhCE,aAAY,MAAEC,KAAI,MAInBC,aAAeF,aAAaG,MAC9B,SAACC,EAAGC,GAAM,OAAAP,WAAWQ,QAAQF,EAAE7B,OAASuB,WAAWQ,QAAQD,EAAjD,UAGRE,WAAaN,KAAKE,MACpB,SAACC,EAAwBC,GACrB,OAAAD,EAAEI,KAAKC,cAAcJ,EAAEG,SAG/B,OAAON,aAAaQ,OAAOH,YAGzB,SAAUR,mCACZC,cAEA,OAAO,SAACW,iBACJ,OAAAX,aAAad,SAASyB,gBAAgBpC,QAGvC,IAAMqC,gBAAkB,WACnB,IAAAC,OAAWvE,oBAAL,OAEd,OAAO,wDAAcwE,QAAQD,OAAQ,CAAEE,KAAM,MAAOC,GAAI,mBAG/CC,qBAAuB,SAChCC,cACAjD,aAEA,IAAKA,YAAa,MAAO,GAEzB,IAAMkD,OAAS,mDAAI,yCAAgBlD,iBAAamD,GAEhD,OAAID,QAA0B,OAAhBlD,YACHiD,cAAcC,QAGe,iEACpClD,YACA2C,oBAGkB3C,aAmC1B,SAASoD,kBACLzB,KACA0B,OAEA,OAAO,qDAAO1B,MAAM,SAAC,I,IAAE3B,YAAW,eAC9B,gEAAUqD,OAAO,SAAAC,MAAQ,OAAAA,OAAA,kBAIjC,SAASC,kBAAqD5B,MAC1D,OAAO,eAAIA,MAAMO,MAAK,SAACC,EAAGC,GACtB,OAAAD,EAAEqB,YAAYhB,cAAcJ,EAAEoB,YAAab,sBAInD,IAAMc,yBAA2B,SAC7BC,YACAC,SAEM,OAzCkB,SACxBA,SAEA,IAAK,8CAAc,yEAAiCA,SAChD,MAAO,CAAEC,gBAAiB,GAAIC,kBAAmB,IAGrD,IAAMC,YAAc,gDAEdC,iBAAmB,yEAAgCJ,SACnDE,kBACFC,cAAgB,8CAAQE,QAAU,GAAKD,iBAAiBD,aAE5D,MAAO,CACHF,gBAAiB,CACb,yEAAoB,UACpB,yEAAoBK,IAExBJ,kBAAiB,mBAuB0BK,CAAoBP,SAA3DC,gBAAe,mBAAEC,kBAAiB,qBAEpCM,WAA+B,GAC/BC,aAAiC,GAEjCC,aAAiC,GACjCC,eAAmC,GA2BzC,OAzBA,uDAAQZ,aAAa,SAAAa,YACT,IAAAvE,YAAgBuE,WAAL,YAEnB,QAAQ,GACJ,KAAK,uDAASX,gBAAiB5D,aAC3BmE,WAAWK,KAAKD,YAChB,MAGJ,KAAK,uDAAS,uDAAevE,aACzBoE,aAAaI,KAAKD,YAClB,MAGJ,KAAK,uDAASV,kBAAmB7D,aAC7BqE,aAAaG,KAAKD,YAClB,MAGJ,QACID,eAAeE,KAAKD,gBAKzB,sDACHnB,kBAAkBe,WAAYP,iBAC9BL,kBAAkBa,cAClBhB,kBAhCsC,GAgCH,iEACnCA,kBAAkBiB,aAAcR,mBAChCN,kBAAkBe,kBAIbG,mBAAqB,SAAC,I,IAC/Bf,YAAW,eACXC,QAAO,WACPV,cAAa,iBAMPyB,mBAAqB,sDAAQhB,aAAa,SAAAiB,GAC5C,OAAA1E,yBAAyB0E,MAGvBC,gBA1GiB,SACvBC,mBACA5B,eAEA,yDAAI4B,oBAAoB,SAACC,MAAO9E,aAAgB,MAAC,CAC7CwD,YAAaR,qBAAqBC,cAAejD,aACjDA,YAAW,YACX8E,MAAK,UAmGeC,CACpB,mDAAKL,mBAAoB,QACzBzB,eAGJ,MAAO,CACH+B,wBAAyBvB,yBACrBmB,gBACAjB,SAEJsB,2BAA4BP,mBAAmBQ,MAAQ,KAIlDC,qCAAuC,SAChD9D,iBACAsC,SAEA,IAAMyB,cAAgB,4EAAuBzB,UAAY,GACnD0B,SAA8C,GAE9CC,aAAe,sDAAQjE,kBAAkB,SAAC,I,IAAEkE,KAAI,QAC5CC,sBAAwBD,KAAKnF,MAC/B,SAAC,IACG,OADG,UACM,8CAA6BqF,yBAGxCC,kBACmB,OAArBF,4BAAqB,IAArBA,2BAAqB,EAArBA,sBAAuBlF,QAAS,kEAEpC,IAAK+E,SAASK,kBAAmB,CAC7B,IAAMC,iBAAmBJ,KAAKnF,MAC1B,SAAC,IACG,OADG,UACM,8CAA6BwF,oBAG9CP,SAASK,mBAAoC,OAAhBC,uBAAgB,IAAhBA,sBAAgB,EAAhBA,iBAAkBrF,QAAS,KAG5D,OAAOoF,oBAGLG,+BAAiC,kDAAIP,cAAc,SAACR,MAAOvC,MAC7D,MAAO,CACHA,KAAI,KACJuC,MAAK,MACLgB,KAAMT,SAAS9C,OAAS,KACxBwD,MAAO,oDAAMjB,OAAO,SAAC,IAAc,OAAP,gBAI9BkB,QAAUZ,cAAc7E,OAE9B,OAAO,qDAAOsF,gCAAgC,SAAC,I,IAAEtD,KAAI,QAC3C0D,IAAMb,cAAc/C,QAAQE,MAElC,OAAIA,OAAS,kEAAiCyD,QAAU,GAExC,IAATC,IAAaD,QAAUC,QAIzBC,qBAAuB,WACxB,IAAAC,cAAkBC,qBAAL,cAErB,OAAKD,cASE,2DAAaA,cAAe,+CAA0B5F,OAAS,IAP9DrC,aAAa,CAAC,oDAAIoB,OAAO+G,eAAgB,oDAAI/G,OAAOgH,YACpDpI,aAAa,CAAC,oDAAIoB,OAAOG,OAAQ,oDAAIH,OAAOI,SAAU,CAClDC,OAAO,MAQV4G,eAAiB,SAC1B5C,SAEA,MAAO,CACH3E,OAAQlB,UAAU,CACd0I,SAAU,CAAC7C,WAEfhF,SAAU,oDAAIW,OAAO+G,iBAIhBI,sBAAwB,SAACC,SAM1B,IAAAC,WAAiDD,QAAvC,WAAEE,eAAqCF,QAAvB,eAAEG,iBAAqBH,QAAL,iBAEpD,GAAIC,aAAe,2DAAQG,cAAcC,MACrC,OAAO,sDAAQH,eAAgBC,kBAGnC,GAAIF,aAAe,2DAAQG,cAAcE,KAAM,CACnC,IAAAC,iBAAqBP,QAAL,iBAExB,OAAO,2DAAaE,eAAgBK,kBAAkBxE,OAClDoE,kBAIR,MAAO,IAGEK,8BAAgC,SAACvI,UAC1C,IAAMwI,gBAAkB,CAAC,oDAAI7H,OAAOI,QAAS,oDAAIJ,OAAOG,QAClD2H,eAAiB,CAAC,oDAAI9H,OAAOQ,UAAW,oDAAIR,OAAO+H,UAEnDC,eAAiB,uDAAQH,iBAAiB,SAAAI,gBAC5C,OAAAH,eAAe7J,KAAI,SAAAiK,cAAgB,SAAGD,eAAH,mBAGvC,OAAO,sDACH,CAAC,oDAAIjI,OAAOC,eACZ4H,gBACAC,eACAE,gBACFrG,SAAStC,WAGF8I,gBAAkB,SAACC,oBAC5B,IAEMC,eAFU5J,aAEemB,SAASP,SACnCM,QAAQ,oDAAIK,OAAOG,OAAQ,IAC3BR,QAAQ,oDAAIK,OAAOI,QAAS,IAIjC,MAAO,GAFY,8CAAoBgI,oBAEhBC,gBAAoB,oDAAIrI,OAAOC,eAG7CqI,sBAAwB,SACjCpB,SACA3F,QAEA,IAAMO,UAAY7C,2BAElB,GACI6C,YAAcvD,UAAUgK,KACxB3J,aAAa,CAAC,oDAAIoB,OAAO+G,eAAgB,oDAAI/G,OAAOgH,YACpD,iDACAnI,cAEA,OAAO,KAGX,IAAM2J,cAAgBC,gCAAgClH,OAAQ2F,UAE9D,OAAOsB,eAAiB1G,YAAc0G,cAAgBA,cAAgB,MAGpEC,gCAAkC,SACpClH,OACAoG,kBAEA,OAAKA,iBAAiB1G,OAEfjC,wBAAwBuC,OAAQoG,kBAFF,MAK5Be,0BAA4B,SACrCC,kBAKM,OAAkCA,iBAAiBC,MACrD,qEADGC,mBAAkB,MAAEC,UAAS,MAIpC,MAAO,CACHD,mBAAoBA,oBAAsB,GAC1CE,6BAA8BC,QAAQF,aAIxC,SAAUG,qBACZlH,kBAEA,OAAO,qDAAOA,kBAAkB,SAAAH,MAC5B,OAAAA,KAAKqE,KAAKnF,MACN,SAAAoI,IACI,OAAAA,GAAGjG,OAAS,8CAA6BkG,OAC5B,SAAbD,GAAGlI,YAKb,SAAU8F,qB,OACN,GAAiD/H,oBAA/C4I,iBAAgB,oBAAYyB,eAAc,YAC5ClC,UAAmC,QAAxB,wDAAWmC,qBAAa,iBAAEC,kBACrC3B,iBACAyB,eACAG,OAAS,CACXC,wBAAwB,EACxBC,4BAA4B,GAGhC,GAAI,gDAA6B,CAC7B,IAAM,GAIFvK,sBAHAwK,eAAc,kBACd7C,cAAa,iBACV8C,cAAa,UAHd,oCAMA,GAGF,8CAA8B9C,cAAe6C,gBAF7CE,gCAA+B,mCACrBC,gBAAe,YAG7B,0BACIC,SAAUD,gBACVhD,cAAa,eACV8C,eAAa,CAChBD,eAAgBE,gCAChB1C,SAAQ,SACRqC,OAAM,SAId,MAAO,CACHG,eAAgB,CACZ,oDAAIK,aAAaC,OACjB,oDAAID,aAAaE,UACjB,oDAAIF,aAAaG,SACjB,oDAAIH,aAAaI,UACjB,oDAAIJ,aAAaK,aAErBvD,cAAe,CACX,oDAAIwD,iBAAiBC,YACrB,oDAAID,iBAAiBJ,UACrB,oDAAII,iBAAiBE,MAEzBC,gBAAiB,CAAC,oDAAIC,eAAeC,OACrCxD,SAAQ,SACRqC,OAAM,QAIR,SAAUoB,8BACZ1E,KACA2E,UAEA,OAAO3E,KAAKvE,MAAK,SAAAwH,IAAM,OAAAA,GAAGjG,OAAS2H,WAAa1B,GAAGlI,MAA5B,KAGpB,IAAM6J,0BAA4B,SAAC,I,IACtC/I,UAAS,aACTP,OAAM,UACNS,YAAW,eACXD,iBAAgB,oBASV+I,cARkB,4BAQuBrJ,QAAO,SAAC,I,IAAET,MAAK,SAC1D,8DAAS,8CAAuBA,UAG9B+J,8BAAgC,4DAClCD,cACA/I,iBACA,SAQJ,OAAOF,2BAA2B,CAC9BC,UAAS,UACTP,OAAM,OACNQ,iBARuB,eACpBA,iBACAgJ,+BAOH/I,YAAW,gB,wDChoBnB,IAAIgJ,UAAY,oBAAhB,YACIhN,YAAc,oBAAlB,YACIiN,UAAY,oBAAhB,YACIC,QAAU,oBAAd,YAuCAhN,OAAOC,QAfP,SAASgF,SACP,IAAIlC,OAASkK,UAAUlK,OACvB,IAAKA,OACH,MAAO,GAMT,IAJA,IAAImK,KAAOC,MAAMpK,OAAS,GACtBqK,MAAQH,UAAU,GAClBI,MAAQtK,OAELsK,SACLH,KAAKG,MAAQ,GAAKJ,UAAUI,OAE9B,OAAOP,UAAUE,QAAQI,OAASL,UAAUK,OAAS,CAACA,OAAQtN,YAAYoN,KAAM,M,qECtClF,IAAII,gBAAmBC,MAAQA,KAAKD,kBAAqBE,OAAOC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,SAC7ElI,IAAPkI,KAAkBA,GAAKD,GAC3BJ,OAAOM,eAAeJ,EAAGG,GAAI,CAAEE,YAAY,EAAM9J,IAAK,WAAa,OAAO0J,EAAEC,OAC3E,SAAUF,EAAGC,EAAGC,EAAGC,SACTlI,IAAPkI,KAAkBA,GAAKD,GAC3BF,EAAEG,IAAMF,EAAEC,KAEVI,mBAAsBT,MAAQA,KAAKS,qBAAwBR,OAAOC,OAAS,SAAUC,EAAGnM,GACxFiM,OAAOM,eAAeJ,EAAG,UAAW,CAAEK,YAAY,EAAMjL,MAAOvB,KAC9D,SAASmM,EAAGnM,GACbmM,EAAW,QAAInM,IAEf0M,aAAgBV,MAAQA,KAAKU,cAAiB,SAAUC,KACxD,GAAIA,KAAOA,IAAIC,WAAY,OAAOD,IAClC,IAAIE,OAAS,GACb,GAAW,MAAPF,IAAa,IAAK,IAAIN,KAAKM,IAAe,YAANN,GAAmBJ,OAAOa,UAAUC,eAAeC,KAAKL,IAAKN,IAAIN,gBAAgBc,OAAQF,IAAKN,GAEtI,OADAI,mBAAmBI,OAAQF,KACpBE,QAEXZ,OAAOM,eAAe7N,QAAS,aAAc,CAAE6C,OAAO,IACtD7C,QAAQuO,kBAAoBvO,QAAQwO,4BAAyB,EAC7D,IAAIC,YAAc,oBAAlB,YACIC,SAAW,oBAAf,YACIC,OAASX,aAAa,oBAA1B,aACIY,QAAU,oBAAd,YACIC,YAAc,oBAAlB,YACIC,QAAU,oBAAd,YACIC,GAAKJ,OAAOK,QAAQC,MAAOvO,YAAcqO,GAAGrO,YAAawO,uBAAyBH,GAAGG,uBACzFlP,QAAQwO,uBAAyBC,YAAYU,OAAO,CAChD9H,MAAO,GACP+H,YAAaT,OAAOU,IAAIC,YAAYC,QACpCC,QAAQ,EACRC,cAAe,GACfC,mBAAoB,IACrB,oBACH1P,QAAQuO,kBAAoBE,YAAYU,OAAO,CAC3CQ,YAAa,IAAI3P,QAAQwO,uBACzBgB,QAAQ,GACT,eACH,IAAII,aAAe,IAAI5P,QAAQuO,kBAuF/BvO,QAAQgP,QAtFR,SAASa,QAAQC,MAAOC,QAEpB,YADc,IAAVD,QAAoBA,MAAQF,cACxBG,OAAOC,MACX,KAAKnB,YAAYoB,wBACb,IAAIC,gBAAkBJ,MAAMH,YAAYQ,IAAI,cAAexB,OAAOU,IAAIC,YAAYc,SAClF,OAAON,MAAMK,IAAI,cAAeD,iBAEpC,KAAKrB,YAAYwB,wBACb,IAAIC,KAAOP,OAAOQ,QAAQD,KACtBJ,gBAAkBJ,MAAMH,YACvBQ,IAAI,QAASG,KAAKX,aAClBQ,IAAI,cAAexB,OAAOU,IAAIC,YAAYkB,QAC/C,OAAOV,MAAMK,IAAI,cAAeD,iBAEpC,KAAKrB,YAAY4B,qBACb,IAAIC,gBAAkBZ,MAAMH,YAAYQ,IAAI,cAAexB,OAAOU,IAAIC,YAAYqB,QAClF,OAAOb,MAAMK,IAAI,cAAeO,iBAEpC,KAAK7B,YAAY+B,eACb,OAAOd,MAAMK,IAAI,UAAWL,MAAMN,QAEtC,KAAKX,YAAYgC,iBACb,GAAIf,MAAMH,YAAYH,OAClB,OAAOM,MACPI,gBAAkBJ,MAAMH,YAAYQ,IAAI,UAAU,GACtD,OAAOL,MAAMK,IAAI,cAAeD,iBAEpC,KAAKrB,YAAYiC,kBACb,IAAKhB,MAAMH,YAAYH,OACnB,OAAOM,MACPI,gBAAkBJ,MAAMH,YAAYQ,IAAI,UAAU,GACtD,OAAOL,MAAMK,IAAI,cAAeD,iBAEpC,KAAKrB,YAAYkC,yBACb,IAAIrB,mBAAqBK,OAAOQ,QAAQb,mBACpCQ,gBAAkBJ,MAAMH,YAAYQ,IAAI,qBAAsBzB,SAASsC,IAAIlB,MAAMH,YAAYD,mBAAoBA,qBACrH,OAAOI,MAAMK,IAAI,cAAeD,iBAEpC,KAAKrB,YAAYoC,YACb,IAAIlC,GAAKgB,OAAOQ,QAASW,OAASnC,GAAGmC,OAAQlB,KAAOjB,GAAGiB,KAAMmB,kBAAoBpC,GAAGoC,kBAChFC,kBAAoBtB,MAAMH,YAAYF,cAEtC2B,kBADApB,OAASpB,QAAQvF,cAAcC,MACXoF,SAASsC,IAAIlB,MAAMH,YAAYF,cAAe,CAC9DyB,SAIgBpC,QAAQuC,iBAAiBvB,MAAMH,YAAYtI,MAAOqH,SAASsC,IAAIlB,MAAMH,YAAYF,cAAe,CAACyB,SAAUC,kBAAmBrB,MAAMH,YAAYD,oBAEpKQ,gBAAkBJ,MAAMH,YAAYQ,IAAI,gBAAiBiB,mBAC7D,OAAOtB,MAAMK,IAAI,cAAeD,iBAEpC,KAAKrB,YAAYyC,4CACb,IAAIjK,MAAQyI,MAAMH,YAAYtI,MAC1BkK,GAAKrC,yBAAyB7L,cAAeA,mBAAuB,IAAPkO,GAAgB,GAAKA,GAClFH,kBAAoBtC,QAAQuC,iBAAiBhK,MAAO,GAAIhE,cAAe,IACvE6M,gBAAkBJ,MAAMH,YAAYQ,IAAI,gBAAiBiB,mBAC7D,OAAOtB,MAAMK,IAAI,cAAeD,iBAEpC,KAAKrB,YAAY2C,iCACTtB,gBAAkBJ,MAAMH,YACvBQ,IAAI,gBAAiB,IACrBA,IAAI,qBAAsB,IAC/B,OAAOL,MAAMK,IAAI,cAAeD,iBAEpC,KAAKrB,YAAY4C,sCACTL,kBAAoBtB,MAAMH,YAAYF,cAA1C,IACIiC,uBAAyB5B,MAAMH,YAAYD,mBAC/C,GAAIhP,cACA0Q,kBAAoB,GACpBM,uBAAyB,OAExB,CACD,IAAIC,GAAKzC,yBAAyB7L,cAAeuO,qBAAyB,IAAPD,GAAgB,GAAKA,GACxFP,kBAAoBtC,QAAQuC,iBAAiBvB,MAAMH,YAAYtI,MAAO,GAAIuK,gBAAiB9B,MAAMH,YAAYD,oBAC7GgC,uBAAyB5B,MAAMH,YAAYD,mBAAmBpM,QAAO,SAAUuO,KAAO,OAAOD,gBAAgBpO,SAASqO,QAEtH3B,gBAAkBJ,MAAMH,YACvBQ,IAAI,gBAAiBiB,mBACrBjB,IAAI,qBAAsBuB,wBAC/B,OAAO5B,MAAMK,IAAI,cAAeD,iBAEpC,QACI,OAAOJ,S,wDC5HnB,IAAIgC,eAAiB,oBAArB,YACIjS,YAAc,oBAAlB,YACIkS,aAAe,oBAAnB,YACIC,SAAW,oBAAf,YACIC,kBAAoB,oBAAxB,YACIC,KAAO,oBAAX,YA4BIC,aAAeH,UAAS,SAAS7E,MAAOiF,QAC1C,IAAIjS,SAAW+R,KAAKE,QAIpB,OAHIH,kBAAkB9R,YACpBA,cAAWuF,GAENuM,kBAAkB9E,OACrB2E,eAAe3E,MAAOtN,YAAYuS,OAAQ,EAAGH,mBAAmB,GAAOF,aAAa5R,SAAU,IAC9F,MAGNJ,OAAOC,QAAUmS,c,qEC1CjB,IAAIE,SAAY/E,MAAQA,KAAK+E,UAAa,WAStC,OARAA,SAAW9E,OAAO+E,QAAU,SAASpL,GACjC,IAAK,IAAIqL,EAAGC,EAAI,EAAGC,EAAIzF,UAAUlK,OAAQ0P,EAAIC,EAAGD,IAE5C,IAAK,IAAIE,KADTH,EAAIvF,UAAUwF,GACOjF,OAAOa,UAAUC,eAAeC,KAAKiE,EAAGG,KACzDxL,EAAEwL,GAAKH,EAAEG,IAEjB,OAAOxL,IAEKyL,MAAMrF,KAAMN,YAE5BK,gBAAmBC,MAAQA,KAAKD,kBAAqBE,OAAOC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,SAC7ElI,IAAPkI,KAAkBA,GAAKD,GAC3BJ,OAAOM,eAAeJ,EAAGG,GAAI,CAAEE,YAAY,EAAM9J,IAAK,WAAa,OAAO0J,EAAEC,OAC3E,SAAUF,EAAGC,EAAGC,EAAGC,SACTlI,IAAPkI,KAAkBA,GAAKD,GAC3BF,EAAEG,IAAMF,EAAEC,KAEVI,mBAAsBT,MAAQA,KAAKS,qBAAwBR,OAAOC,OAAS,SAAUC,EAAGnM,GACxFiM,OAAOM,eAAeJ,EAAG,UAAW,CAAEK,YAAY,EAAMjL,MAAOvB,KAC9D,SAASmM,EAAGnM,GACbmM,EAAW,QAAInM,IAEf0M,aAAgBV,MAAQA,KAAKU,cAAiB,SAAUC,KACxD,GAAIA,KAAOA,IAAIC,WAAY,OAAOD,IAClC,IAAIE,OAAS,GACb,GAAW,MAAPF,IAAa,IAAK,IAAIN,KAAKM,IAAe,YAANN,GAAmBJ,OAAOa,UAAUC,eAAeC,KAAKL,IAAKN,IAAIN,gBAAgBc,OAAQF,IAAKN,GAEtI,OADAI,mBAAmBI,OAAQF,KACpBE,QAEPyE,OAAUtF,MAAQA,KAAKsF,QAAW,SAAUL,EAAGM,GAC/C,IAAI3L,EAAI,GACR,IAAK,IAAIwL,KAAKH,EAAOhF,OAAOa,UAAUC,eAAeC,KAAKiE,EAAGG,IAAMG,EAAEjO,QAAQ8N,GAAK,IAC9ExL,EAAEwL,GAAKH,EAAEG,IACb,GAAS,MAALH,GAAqD,oBAAjChF,OAAOuF,sBACtB,KAAIN,EAAI,EAAb,IAAgBE,EAAInF,OAAOuF,sBAAsBP,GAAIC,EAAIE,EAAE5P,OAAQ0P,IAC3DK,EAAEjO,QAAQ8N,EAAEF,IAAM,GAAKjF,OAAOa,UAAU2E,qBAAqBzE,KAAKiE,EAAGG,EAAEF,MACvEtL,EAAEwL,EAAEF,IAAMD,EAAEG,EAAEF,KAE1B,OAAOtL,GAEP8L,cAAiB1F,MAAQA,KAAK0F,eAAkB,SAAU1N,GAAID,MAC9D,IAAK,IAAImN,EAAI,EAAGS,GAAK5N,KAAKvC,OAAQoQ,EAAI5N,GAAGxC,OAAQ0P,EAAIS,GAAIT,IAAKU,IAC1D5N,GAAG4N,GAAK7N,KAAKmN,GACjB,OAAOlN,IAEXiI,OAAOM,eAAe7N,QAAS,aAAc,CAAE6C,OAAO,IACtD7C,QAAQmT,qBAAuBnT,QAAQoT,8BAAgCpT,QAAQqR,iBAAmBrR,QAAQqT,4BAAyB,EACnI,IAAI3E,SAAW,oBAAf,YACIC,OAASX,aAAa,oBAA1B,aACIe,GAAKJ,OAAOK,QAAQC,MAAOC,uBAAyBH,GAAGG,uBAAwBnO,oBAAsBgO,GAAGhO,oBACxGT,WAAaqO,OAAOK,QAAQsE,SAAShT,WAWzCN,QAAQqT,uBAVR,SAASA,uBAAuBE,mBAC5B,IAAIpS,UAAY+N,yBAChB,OAAOR,SAAS8E,OAAO9E,SAAS+E,KAAKtS,UAAWoS,oBAAoB,SAAUG,IAAKC,MAC/E,OAAKA,KAEDjF,SAAS3B,QAAQ4G,MACTD,IAAOC,KAAK7Q,SACf4Q,IAHEA,MAIZ,IAuBP1T,QAAQqR,iBApBR,SAASA,iBAAiBuC,gBAAiBC,qBAAsBC,sBAAuBpE,oBACpF,OAAOhB,SAAS8E,OAAOI,iBAAiB,SAAUG,IAAKC,aACnD,IAAIC,cAAgBD,YAAYnR,MAC5BqR,qBAAuBxF,SAAS5O,IAAIkU,YAAYG,UAAU,SAAUC,OAAS,OAAOA,MAAMvR,SAG9F,GAFyB6L,SAAS2F,aAAa3E,mBAAoBwE,sBAAsBpR,OACrF,EACoB,CACpB,IAAIwR,QAAUtB,cAAc,GAAIe,KAIhC,OAHIF,qBAAqBrQ,SAASyQ,gBAC9BK,QAAQvN,KAAKkN,eAEVK,QAEX,OAAI5F,SAAS2F,aAAaH,qBAAsBJ,uBAC3ChR,OAAS,EACHkQ,cAAcA,cAAc,GAAIe,KAAM,CAACE,gBAE3CF,MACR,KAMP/T,QAAQoT,8BAHR,SAASA,gCACL,OAAO9S,aAAamB,SAASP,WAAayN,OAAOU,IAAIxN,OAAOC,eAgBhE9B,QAAQmT,qBAbmB,SAAUoB,WACpB,IAATA,OAAmBA,KAAO,IAC9B,IAAIC,UAAY7F,OAAOK,QAAQyF,kBAAkBzQ,IAAI,aACjD0Q,iBAAmB3T,sBAEmCwD,MAAnCmQ,iBAAiBC,iBAAyB/B,OAAO8B,iBAAkB,CAAC,sBACvFE,UAAYvC,SAASA,SAAS,GAAI9N,MAAOgQ,MAE7C,OAAOC,UAAUK,YAAY,CACzBC,OAFS,6BAGTF,UAAWA,c,wDClGnB7U,OAAOC,QAAU,CAAC,UAAY,2CAA2C,aAAa,8C,wDCAtFD,OAAOC,QAAU,CAAC,UAAY,8BAA8B,KAAO,2B,sDCAnED,OAAOC,QAAU,CAAC,UAAY,wCAAwC,KAAO,mCAAmC,YAAY,0C,sDCA5HD,OAAOC,QAAU,CAAC,MAAQ,6C,wDCA1BD,OAAOC,QAAU,CAAC,UAAY,uCAAuC,MAAQ,mCAAmC,QAAU,qCAAqC,aAAa,0C,sDCA5KD,OAAOC,QAAU,CAAC,UAAY,mCAAmC,QAAU,iCAAiC,MAAQ,iC,wDCApHD,OAAOC,QAAU,CAAC,UAAY,oC,mECA9BuN,OAAOM,eAAe7N,QAAS,aAAc,CAAE6C,OAAO,IACtD7C,QAAQqJ,mBAAgB,EAExB,SAAWA,eACPA,cAAoB,KAAI,OACxBA,cAAqB,MAAI,QACzBA,cAAmB,IAAI,MAH3B,CAImBrJ,QAAQqJ,gBAAkBrJ,QAAQqJ,cAAgB,M,0gCCOrE,kCALyB,4BAAiC,CACtD0L,eAAgB,sBAAYC,KAC5BC,WAAA,iB,uPCDWC,0BACXC,GAAA,EAAE,QADkC,0BAkCxC,0CAAe,kBAAf,EA/B2C,SAAC,I,IAAEhB,SAAQ,YAC5CiB,SAAW,0BACTlU,SAAa,mCAAL,SACRgF,QAAY,kBAAL,QACT,GAA+B,uBACjC,sBAAY8O,MADTD,eAAc,MAAEE,WAAU,MAejC,OAXA,yBAAU,WACF/T,WAAa,cAAIW,OAAOC,gBAE5BmT,WAAW,sBAAYD,MACvBI,SAASF,0BAA0B,mBACpC,CAACE,SAAUlU,WAEd,yBAAU,WACNkU,SAASF,0BAA0B,kBACpC,CAACE,SAAUlP,UAEP,4BACH,kCAAiBmP,SACjB,CACIxS,MAAO,CACHkS,eAAc,eACdE,WAAU,aAGlBd,a,+nCCnBFmB,uBAAyB,CAC3BC,SAAU,YAASC,mBACnBzF,OAAQ,YAAO0F,a,KA+DI,8BAAC,aAAD,CAAMC,MAAOC,KAAA,EAAM,UAAU,uC,MAE3B,qCAAK,UAAU,0CAKxC,sDAnE8C,SAAC,I,IAC3C,MAAAC,yBAAS,QAAO,GAChBrT,YAAW,eACXsT,MAAK,SACL1B,SAAQ,YACR2B,eAAc,kBACd5E,OAAM,UACN6E,WAAU,cACVC,SAAQ,YACRC,SAAQ,YACRC,QAAO,WACPC,OAAM,UAUN,OACI,qCAOID,QAASA,QACTE,gBAAe,YAASZ,mBACxBa,cAAa,YAAOC,UATxB,yEACe,qBAAG,SAAU,CACpB,YAAaN,SACb,cAAeD,WACf,aAAcH,YAJtB,2DAWMrT,aAAe2O,QACb,qCAAK,UAAU,sCACX,qCAAK,UAAU,sCACX,8BAAC,aAAD,CAAUA,OAAQA,WAK9B,8BAAC,aAAD,CACIqF,QAASR,WACTS,SA9BiB,SAAC3D,GAC1BA,EAAE4D,kBAEGR,UAELA,YA0BQS,UAAWpB,yBAGdQ,gBACG,qCAAKa,UAAU,8CACVb,gBAIT,qCAEIc,MAAOf,MACPc,UAAU,wEAETxC,UAAY0B,OAEhBM,QAAA,KAEAH,UAAA,Q,iGCrFb,iDACIa,UAAW,CACPC,eAAgB,YAChBC,GAAI,mCAERC,UAAW,CACPF,eAAgB,aAChBC,GAAI,kD,0OCTRE,OAAS,IAAI,uBAAjB,GACE,GAAM,kBACN,IAAO,wBACP,QAAW,YACX,QAAW,k/CAGb,WADa,6BAAb,cACA,Q,+DCeY,qCAAK,UAAU,6D,+BAEf,8BAAC,aAAD,CAAMvB,MAAOmB,UAAe,UAAU,4CASlD,oDAnBmD,SAAC,I,IAChD3Q,QAAO,WACPgR,eAAc,kBAEd,YAAuBxR,IAAnBwR,gBAAgCA,eAAiB,EAAU,KAG3D,8BAAC,sBAAD,CAAM,UAAU,+CAAY5R,GAAI,6BAAeY,UAA/C,6DAKI,8BAAC,iCAAqBiR,SAASN,WAE/B,qCAAK,UAAU,8CAAWK,kB,4RCsBtC,wCAAe,gBAAME,MAlCwB,SAAC,I,IAC1CL,GAAE,MACFR,QAAO,WACPK,MAAK,SACLtO,MAAK,SACL,MAAA/F,6BAAW,OAAG,KAAI,GAClB2T,QAAO,WAEDmB,YAAc,2BAAY,WAC5BnB,QAAQ,CAACa,OACV,CAACb,QAASa,KAEb,OACI,qCAKIX,gBAAe,YAASZ,mBACxBa,cAAa,YAAOiB,iBACpBpB,QAASmB,YAPb,kEACe,qBAAG,MAAO,CACjBd,QAAO,UAFf,6EASI,8BAAC,aAAD,CAAUA,QAASA,UAEnB,qCAAK,UAAU,qCAAQK,MAAOA,OAC1B,sCAAM,UAAU,IAASA,MAAMpV,QAAQ,iBAAY,KACnD,8BAAC,aAAD,CAAUe,YAAaA,eAG3B,qCAAK,UAAU,wCAAW+F,WCOtC,0BAvCsC,SAAC,I,IACnCjB,MAAK,SACLyM,sBAAqB,yBACrByD,yBAAwB,4BACxBC,oBAAmB,uBACnBC,4BAA2B,+BAC3BC,qBAAoB,wBAEdC,sBAAwBH,qBAAwC,IAAjBnQ,MAAMvE,OAErD8U,gBACDL,0BACDE,6BACAE,qBAEJ,OACI,8BAAC,gBAAME,SAAP,KACKxQ,MAAMvH,KAAI,SAACsU,OACA,IAAAtP,KAAuBsP,MAAnB,KAAEvR,MAAiBuR,MAAZ,MAAE9L,MAAU8L,MAAL,MAEpB0D,UACFF,gBAAkB9D,sBAAsBtQ,SAASX,OAErD,OACI,8BAAC,wCAAD,CACIkV,IAAKlV,MACL+T,MAAO9R,KACPiS,GAAIlU,MACJ0T,QAASuB,UACT5B,QAASwB,qBACTpP,MAAOA,MACP/F,YAAa,uCAAyB6R,OAAO,U,iYC8KrE,yCA/LiC,SAAC,I,IAC9BN,sBAAqB,yBACrBzM,MAAK,SACL2Q,mBAAkB,sBAClBC,0BAAyB,6BACzBV,yBAAwB,4BACxB,MAAAW,2CAAkB,QAAQ,GAEpB,GAGF,wBAAkB,GAFlBT,4BAA2B,MAC3BU,6BAA4B,MAE1B,GAGF,wBAAkB,GAFlBC,0BAAyB,MACzBC,2BAA0B,MAGxBC,kBAAoB,uBAAQ,WAAM,OAAAjR,MAAMvH,KAAI,SAAC,IAAc,OAAP,cAAe,CACrEuH,QAGEkR,wBAA0B,uBAC5B,WAAM,gCAAWD,kBAAmBxE,uBAAuBhR,SAC3D,CAACgR,sBAAuBwE,oBAGtBE,wBACF1E,sBAAsBhR,OAAS,GAC/BwV,kBAAkB/U,MAAK,SAAAwT,IAAM,OAAAjD,sBAAsBtQ,SAAtB,OAE3BiV,gBAAkB,2BACpB,SACIC,qBACAC,WAEA,IAIMxH,kBA+ElB,SAASyH,qBAAqB,I,IAC1BN,kBAAiB,qBACjBO,sBAAqB,yBACrBH,qBAAoB,wBACpB5E,sBAAqB,yBACrByE,wBAAuB,2BACvBC,wBAAuB,2BACvBG,UAAS,aACTlB,4BAA2B,+BAC3BW,0BAAyB,6BACzBb,yBAAwB,4BACxBW,mBAAkB,sBAEZY,oBAAsBH,YAAc,6BAAmBI,SACvDC,oBAAmD,IAA7BV,kBAAkBxV,OAE9C,GAAIyU,yBAA0B,CAC1B,GACqC,IAAjCsB,sBAAsB/V,QACrBgW,qBAAuBZ,mBAExB,OAAO,kBAAO,6BAACpE,uBAA0B4E,uBAO7C,KAHIH,0BACCH,2BAA6BX,8BAG9B,OAAO,kBAAO,6BACV3D,uBACG+E,wBACL7T,OAAO0T,sBAGb,IAAMO,cAAgBxB,4BAChBiB,qBACA,kBAAO,6BACHI,oBACMD,sBACAP,mBACHI,uBAGb,OAAO,kBAAO,6BAAC5E,uBAA0BmF,gBAG7C,GAAIV,wBAAyB,CACzB,IAAMW,eAAiBZ,kBAAkBhV,QAAO,SAACyT,IAC7C,OAAA+B,qBACArB,6BACAuB,oBACMN,qBAAqBlV,SAASuT,KAC7B2B,qBAAqBlV,SAASuT,OAGzC,OAAO,kBAAO,6BAACjD,uBAA0BoF,iBAG7C,IAAMC,4BAA8BT,qBAAqBU,OAAM,SAAArC,IAC3D,OAAAjD,sBAAsBtQ,SAASuT,OAGnC,GACK+B,qBAAuBN,yBACxBW,4BAEA,OAAO,kBAAO,6BAACrF,uBAA0B4E,uBAG7C,OAAO5E,sBAAsB9O,OAAO0T,sBArJFE,CAAqB,CAC3CC,sBAL0Bb,mBAAmB7D,SAASrU,KACtD,SAAC,IAAc,OAAP,YAKR4Y,qBAAoB,qBACpBC,UAAS,UACTH,wBAAuB,wBACvBjB,yBAC4B,OAAxBA,+BAAwB,IAAxBA,kDAA4BgB,wBAChCA,wBAAuB,wBACvBL,mBAAkB,mBAClBE,0BAAyB,0BACzBX,4BAA2B,4BAC3Ba,kBAAiB,kBACjBxE,sBAAqB,wBAGrB6E,YAAc,6BAAmBU,YACjClB,8BAA6B,GAG7BQ,YAAc,6BAAmBI,UACjCV,4BAA2B,GAG/BJ,0BAA0B9G,qBAE9B,CACI8G,0BACAO,wBACAjB,yBACAgB,wBACAL,mBACAE,0BACAX,4BACAa,kBACAxE,sBACAkE,qBAIR,iBAAa,WACLQ,0BAEJL,8BAA6B,GAC7BE,4BAA2B,MAC5B,CAACG,0BAEJ,IAAMc,oBACFf,yBACAD,kBAAkBxV,OAAS,IAC1B2U,8BACAW,0BACK,GACAtE,sBAEV,MAAO,CACHwE,kBAAiB,kBACjBgB,oBAAmB,oBACnBf,wBAAuB,wBACvBC,wBAAuB,wBACvBf,4BAA2B,4BAC3BW,0BAAyB,0BACzBK,gBAAe,kBCtCvB,uCAjE6B,SAAC,I,IAC1BpR,MAAK,SACL2Q,mBAAkB,sBAClBlE,sBAAqB,yBACrByD,yBAAwB,4BACxBW,mBAAkB,sBAClBqB,sBAAqB,yBAEf,GAQF,qCAAyB,CACzBlS,MAAK,MACL2Q,mBAAkB,mBAClBlE,sBAAqB,sBACrByD,yBAAwB,yBACxBW,mBAAkB,mBAClBD,0BAA2BsB,wBAb3BjB,kBAAiB,qBACjBgB,oBAAmB,uBACnB7B,4BAA2B,+BAC3BW,0BAAyB,6BACzBG,wBAAuB,2BACvBC,wBAAuB,2BACvBC,gBAAe,mBAUbe,oBACAjC,0BACEW,oBACAT,6BACAW,4BACJI,wBAEE,GAA+B,gBAAWgB,mBAAzCxD,SAAQ,MAAEyD,iBAAgB,MAE3BC,uBACDnB,yBACDd,8BACEW,2BAA6BF,qBACV,IAAjB7Q,MAAMvE,OAER6W,sBAAwB,2BAC1B,SAACjB,sBACGD,gBACIC,qBACA,6BAAmBW,cAG3B,CAACZ,kBAOL,MAAO,CACHa,oBAAmB,oBACnBtD,SAAQ,SACR0D,sBAAqB,sBACrBF,kBAAiB,kBACjBC,iBAAgB,iBAChBG,oBAVwB,2BAAY,WACpCnB,gBAAgBH,kBAAmB,6BAAmBS,YACvD,CAACN,gBAAiBH,oBASjBqB,sBAAqB,wBCM7B,qC,gCAvE2C,SAAC,I,IACxC9D,MAAK,SACLmC,mBAAkB,sBAClBzV,YAAW,eACX8E,MAAK,SACLyM,sBAAqB,yBACrByD,yBAAwB,4BACxBW,mBAAkB,sBAClBqB,sBAAqB,yBACrBzD,eAAc,kBAER,GAQF,uCAAqB,CACrBzO,MAAK,MACL2Q,mBAAkB,mBAClBlE,sBAAqB,sBACrByD,yBAAwB,yBACxBgC,sBAAqB,sBACrBrB,mBAAkB,qBAblBoB,oBAAmB,uBACnBI,sBAAqB,yBACrBF,kBAAiB,qBACjBxD,SAAQ,YACRyD,iBAAgB,oBAChBE,sBAAqB,yBACrBC,oBAAmB,uBAUvB,OACI,qCAAK,UAAU,wCACX,8BAAC,sDAAD,CACIhE,WAAW,EACXC,MAAOA,MACPtT,YAAaA,YACbyT,SAAUA,SACVD,WAAYyD,kBACZtD,QAASuD,iBACTxD,SAAU2D,oBACV9D,eAAgBA,iBAGnBE,UACG,qCAAK,UAAU,mCACV3O,MAAMvH,KAAI,SAAA2D,MACC,IAAAqB,KAAuBrB,KAAnB,KAAEZ,MAAiBY,KAAZ,MAAE6E,MAAU7E,KAAL,MACpBqU,UACFwB,oBAAoB9V,SAASX,QAC7B6W,sBAEEG,gBAAkBtX,iBAClBmD,EACA,uCAAyBjC,MAAM,GAErC,OACI,8BAAC,wCAAD,CACIsU,IAAKlV,MACL+T,MAAO9R,KACPiS,GAAIlU,MACJ0T,QAASuB,UACT5B,QAASyD,sBACTrR,MAAOA,MACP/F,YAAasX,yBCP7C,wBAxDqC,SAAC,I,IAClC3T,QAAO,WACPD,YAAW,eACX6N,sBAAqB,yBACrByD,yBAAwB,4BACxBE,4BAA2B,+BAC3BO,mBAAkB,sBAClBN,qBAAoB,wBACpB6B,sBAAqB,yBAEb/T,cAAkB,kCAAL,cAEf,GAGF,iCAAmB,CACnBS,YAAW,YACXC,QAAO,QACPV,cAAa,gBALb+B,wBAAuB,2BACvBC,2BAA0B,8BAO9B,OACI,8BAAC,gBAAMqQ,SAAP,KACKtQ,wBAAwBzH,KACrB,SAAC,I,IAAEuH,MAAK,SAAEtB,YAAW,eAAExD,YAAW,eAAO,OACrC,8BAAC,oCAAD,CACIwV,IAAKxV,YACLsT,MAAO9P,YACPxD,YAAaA,YACb8E,MAAOA,MACP2Q,mBAAoBA,mBACpBlE,sBAAuBA,sBACvByD,yBAA0BA,yBAC1BW,mBACuC,IAAnC3Q,wBAAwBzE,OAE5ByW,sBAAuBA,sBACvBzD,eAAgB,8BAAC,aAAD,CAAUvT,YAAaA,mBAKnD,yCACI,8BAAC,0BAAD,CACI8E,MAAOG,2BACPiQ,4BAA6BA,4BAC7B3D,sBAAuBA,sBACvByD,yBAA0BA,yBAC1BG,qBAAsBA,qBACtBF,oBAAqBjQ,wBAAwBzE,OAAS,OCnB1E,gCAlCyC,SAAC,I,IACtCuE,MAAK,SACL2Q,mBAAkB,sBAClB9R,QAAO,WACP4N,sBAAqB,yBACrByD,yBAAwB,4BACDU,0BAAyB,yBAE1C6B,2BAA6B,mDAC/BzS,MACAnB,SAGJ,OACI,8BAAC,gBAAM2R,SAAP,KACKiC,2BAA2Bha,KAAI,SAAAia,cAAgB,OAC5C,8BAAC,oCAAD,CACIhC,IAAKgC,aAAajV,KAClB+Q,MAAOkE,aAAajV,KACpBkT,mBAAoBA,mBACpB3Q,MAAO0S,aAAa1S,MACpByM,sBAAuBA,sBACvByD,yBAA0BA,yBAC1BgC,sBAAuBtB,0BACvBC,mBAA0D,IAAtC4B,2BAA2BhX,OAC/CgT,eACI,8BAAC,aAAD,CAAkBzN,KAAM0R,aAXY,c,6CCQtDC,mCA1BF,eAAO,UADmC,8BA+BxCC,YAAc,8CAAyB,CACzCC,OAAQF,qCAwEZ,iCArE0B,SAAC,I,IACvB/U,gBAAe,mBACf6O,sBAAqB,yBACrBkC,SAAQ,YACRmE,gBAAe,mBACfC,oBAAmB,uBACnBnC,0BAAyB,6BACzBlC,WAAU,cAEFmE,OAAW,iBAAgB,SAACpK,OAChC,OAAAmK,YAAYnK,MAAO,CAAE7K,gBAAe,qBAD1B,OAIR,GAKF,qCAAyB,CACzBoC,MAAOpC,gBAAgBkP,SACvB6D,mBAAoB/S,gBACpB6O,sBAAqB,sBACrBmE,0BAAyB,4BARzBqB,oBAAmB,uBACnBf,wBAAuB,2BACvBd,4BAA2B,+BAC3BgB,gBAAe,mBAQb4B,uBAAyB,2BAC3B,SAAC3B,sBACGD,gBACIC,qBACA,6BAAmBW,cAG3B,CAACZ,kBAGC6B,oBAAsB,2BAAY,WACpCH,gBAAgBlV,mBACjB,CAACA,gBAAiBkV,kBAqBrB,MAAO,CACHI,MAAOL,OACPZ,oBAAmB,oBACnB/B,yBAA0BgB,wBAC1Bd,4BAA2B,4BAC3B+C,wBAxB4B,2BAAY,WAChC,IAAA3X,MAAUoC,gBAAL,MAEbmV,oBACIvX,MACAmT,SAAW,aAAQ3M,cAAcC,MAAQ,aAAQD,cAAcE,MAG9DyM,WAAaD,aAAiBC,UAAYD,YAE/CuE,wBACD,CACCF,oBACApE,SACAD,WACA9Q,gBACAqV,sBASAA,oBAAmB,oBACnBD,uBAAsB,yBChFjB7Z,c,gCACT,oBAAI,MADiB,cAqKzB,kCAlKwC,SAAC,I,IACrCsT,sBAAqB,yBACEmE,0BAAyB,yBAChDhT,gBAAe,mBACf+Q,SAAQ,YACRoE,oBAAmB,uBACnBD,gBAAe,mBACfpE,WAAU,cACVmB,eAAc,kBACdf,OAAM,UAEA,GAOF,iCAAkB,CAClBrC,sBAAqB,sBACrB7O,gBAAe,gBACf+Q,SAAQ,SACRoE,oBAAmB,oBACnBD,gBAAe,gBACflC,0BAAyB,0BACzBlC,WAAU,aAbVwE,MAAK,SACLhD,yBAAwB,4BACxBE,4BAA2B,+BAC3B+C,wBAAuB,2BACvBF,oBAAmB,uBACnBD,uBAAsB,0BAW1B,IAAKE,MAAO,OAAO,KAEX,IAAIrU,QAAYqU,MAAL,GAEnB,OACI,8BAAC,gBAAM1C,SAAP,KACI,8BAAC,sDAAD,CACIhC,MAAO0E,MAAMzV,KACboM,OAAQhL,QACR8P,SAAUA,SACVD,WAAYA,WACZG,QAASsE,wBACTvE,SAAUqE,oBACVnE,OAAQA,SAGXH,UACG,qCAAK,UAAU,oCACTxV,aAAa,cAAIqB,OAAOE,eACtB,8BAAC,oDAAD,CACImE,QAASA,QACTgR,eAAgBA,iBAgC5C,SAASuD,iBAAiB,I,IACtBF,MAAK,SACLtV,gBAAe,mBACf6O,sBAAqB,yBACrByD,yBAAwB,4BACxBE,4BAA2B,+BAC3B4C,uBAAsB,0BACtBpC,0BAAyB,6BAEnByC,uBAAyB,kBAASzW,SACpC,kBAASC,KAAKyW,2BAGAC,wBAA4B3V,gBAAL,SAezC,QAAQ,GACJ,KAAK,8BAAoBzB,SAAS+W,MAAMxD,IACpC,OACI,8BAAC,gBAAMc,SAAP,KACI,8BAAC,gCAAD,CACIxQ,MACIqT,uBACM,mCAAqBE,yBACrBA,wBAEV1U,QAASqU,MAAMxD,GACfiB,mBAAoB/S,gBACpB6O,sBAAuBA,sBACvByD,yBAA0BA,yBAC1BgC,sBAAuBtB,6BAMvC,KA7DR,SAAS4C,uBAAuBN,OAC5B,OAAOA,MAAMO,KAAKtX,SAAS,cAAIuX,SAAS9Y,SA4D/B4Y,CAAuBN,OACxB,OACI,8BAAC,gBAAM1C,SAAP,KACI,8BAAC,wBAAD,CACI3R,QAASqU,MAAMxD,GACfiB,mBAAoB/S,gBACpBgB,YACIyU,uBACM,mCAAqBE,yBACrBA,wBAEV9G,sBAAuBA,sBACvB2D,4BACIA,4BAEJF,yBAA0BA,yBAC1BG,qBAAsB2C,uBACtBd,sBAAuBtB,6BAMvC,QACI,IAAM+C,YAAcN,uBACd,mCAAqBE,yBACrBA,wBAEN,OA5DJK,wBA4D8BD,YA1D9B,8BAAC,0BAAD,CACI3T,MAAO4T,wBACPxD,4BAA6BA,4BAC7BF,yBAA0BA,yBAC1BzD,sBAAuBA,sBACvB0D,qBAAqB,EACrBE,qBAPU,yBAFS,IACvBuD,wBA5CaR,CAAiB,CACdF,MAAK,MACLtV,gBAAe,gBACf6O,sBAAqB,sBACrByD,yBAAwB,yBACxBE,4BAA2B,4BAC3B4C,uBAAsB,uBACtBpC,0BAAyB,+B,6YClFpCrX,kBAGT,oBAAI,MAHsB,kBAChBsa,iBAEV,oBAAI,OAFsB,iBAIxBC,WAFF,oBADiB,kBAGgBnX,IAAI,aAEnCoX,cAAgBF,mBAAmBG,qBA2DzC,SAASC,qBACLhL,MAEA,OAAKA,KAAKX,YAEHW,KAAKX,YAAY6D,QAAO,SAAC+H,OAA+BC,SAG3D,OAFAD,OAAOC,QAAQ3Y,OAAS2Y,QAAQlT,MAEzBiT,SACR,IAN2B,GASlC,mCArEiC,WACvB,OAGF,uBAGD,CAAEE,sBAAuB,GAAI7X,iBAAkB,KAL9C,SAAE6X,sBAAqB,yBAAE7X,iBAAgB,oBACzC8X,yBAAwB,MAMpBxa,SAAa,mCAAL,SAEVya,wBAA0B,2BAC5B,WACI,OAAAR,WAAWtG,YAAY,CACnBC,OAAQ,iBACRF,UAAW,CACPlM,cAAe,CACX,cAAIwD,iBAAiBC,YACrB,cAAID,iBAAiBJ,UACrB,cAAII,iBAAiBE,MAEzBb,eAAgB,CACZ,cAAIK,aAAaC,OACjB,cAAID,aAAaE,WAErB/C,SAAUnI,oBAAoBmI,SAC9BsD,gBAAiB,CAAC,cAAIC,eAAezD,aAGxC+S,MAAK,SAAC,I,IAAEtL,KAAI,QACT,OAAAoL,yBAAyB,CACrBD,sBAAuBH,qBAAqBhL,MAC5C1M,iBAAkB0M,KAAKX,iBAG9BkM,MAtBL,kBAuBJ,IAeJ,OAZA,yBAAU,WACNF,0BAEA,IAAMG,KAAOV,cAAcW,WAAU,WACjCJ,6BAGJ,OAAO,WACHG,KAAKE,iBAEV,CAAC9a,SAAUya,0BAEP,uBAAQ,WAAM,MAAC,CAAEF,sBAAqB,sBAAE7X,iBAA1B,oBAA+C,CAChE6X,sBACA7X,oB,wbCjDSxD,UAab,oBAAI,UAbkB,UACZ6b,UAYV,oBAAI,OAZe,UACnB,qBAWA,oBANC,MAJG1b,kBAAiB,uCACjBM,wBAAuB,6CACvBC,yBAAwB,8CACxB,gCAAY,kCAGCob,aAIjB,oBAAI,mBAJyB,aAE7B,qBAEA,oBAFmC,SAAvB7b,UAAS,+BAAEC,WAAU,gCACxB6b,YACT,oBAAI,MADgB,YAITC,eAEX,eAAO,QAFkB,eACZC,sBACb,eAAO,UAD2B,sBAkBhC,+BAAc,8CAAyB,CACzCjZ,OAAQ8Y,aACRtY,iBAAkByY,wBAuLtB,uCApL2B,SAAC,I,IACxB7S,iBAAgB,oBAChB8S,eAAc,kBAERlb,QAAU,kCACRyC,YAAgB,gBAAkB,CACtC0Y,OAAQ,gBAAeC,cADR,YAGbjI,KAAO,iBAAgB,WAAM,6CAC7BK,UAAYuH,YAAY5H,MAEtB9S,SAAaL,QAAL,SACRF,SAAaO,SAAL,SACV,GAA+B,yBAGnC,SAAAqO,OAAS,sCAAYA,MAAZ,OAHH1M,OAAM,UAAEQ,iBAAgB,oBAK1B,GAGF,iCAFA6X,sBAAqB,yBACHgB,yBAAwB,oBAGtCC,eAAmBT,UAAiC,CACxDU,WAAY,cAAIC,WAAWC,YAC3BC,iBAAkBV,eAClBW,mBAAoB,kBAChB,iBAAgCtb,SAASP,WAE7C0T,UAAS,YANS,eAShBjR,UAAY7C,2BAEZkc,uBAAyB,uBAC3B,WACI,+CAA0B,CACtBrZ,UAAWvD,UAAUgK,IACrBhH,OAAM,OACNS,YAAW,YACXD,iBAAgB,iBAChB6Y,yBAAwB,6BAEhC,CAACrZ,OAAQS,YAAaD,iBAAkB6Y,2BAG5C,yBAAU,WACNC,mBACD,CAAC9H,UAAW8H,iBAEf,IAAMO,uBAAyB,2BAC3B,SAAC,I,IACGhT,mBAAkB,sBAClBlB,SAAQ,YACR1F,cAAa,iBAMP6Z,WAAa7c,UAAU,CACzB0I,SAAQ,SACR1F,cAAa,gBAGX6G,eAAiBhJ,SAClBM,QAAQ,cAAIK,OAAOG,OAAQ,IAC3BR,QAAQ,cAAIK,OAAOI,QAAS,IAI3Bkb,aACF,GAHe,kBAAoBlT,oBAGnBC,gBAAoB,cAAIrI,OAAOC,cAEnDV,QAAQ2F,KAAI,qBACL3F,QAAQK,UAAQ,CACnBC,KAAMC,OAAOF,SAASC,KACtBR,SAAUic,aACV5b,OAAQ2b,gBAGhB,CAAC9b,QAASF,WAGRiJ,sBAAwB,2BAC1B,SAACpB,UACG,GAAIpF,YAAcvD,UAAUgK,IAAK,OAAO,KAExC,IAAMC,cAgFlB,SAAS+S,6BACLha,OACAoG,kBAEA,OAAKA,iBAAiB1G,OAEfjC,wBACHuC,OACAoG,kBAJiC,KApFP4T,CAClBha,OACA2F,UAGJ,OAAOsB,eAAiB1G,YAAc0G,cAChCA,cACA,OAEV,CAACjH,OAAQO,YA+Db,MAAO,CACH8X,sBAAqB,sBACrBuB,uBAAsB,uBACtBK,kBA/DsB,2BACtB,SAAC,I,IAAExa,MAAK,SAAEsR,SAAQ,YACR,GAAwC5T,oBAAtC,MAAAwI,uBAAQ,OAAG,GAAE,GAAE,MAAA1F,iCAAa,OAAG,GAAE,GAEzC,IACI,mBAAS,gBAAuBR,QAC/B,gCAAa,cAAIhB,OAAO+G,gBAF7B,CAaA,IAAM0U,gBAAkBvU,SAASvF,SAASX,OACpC0a,yBAA2BpJ,SAASrU,KAAI,SAAAsU,OAAS,OAAAA,MAAA,SAEjDoJ,aAAeF,gBACf,kBAAQvU,SAAUlG,OAClB,iBAAOkG,SAAUlG,OACjBsO,kBAAoBmM,gBACpB,kBAAO,8CAACja,eAAkBka,2BAC1Bla,cAAc2B,OAAOuY,0BAErBtT,mBAAqBE,sBAAsBqT,cAE7CvT,oBACAgT,uBAAuB,CACnBhT,mBAAkB,mBAClBlB,SAAUyU,aACVna,cAAe8N,oBAIvBmL,eAAekB,aAAcrM,uBAjC7B,CAII,IAAMsM,qBAAuBnd,aAC7Bmd,qBAAqB1W,KAAI,qBAClB0W,qBAAqBhc,UACrB,6BAAeoB,YA4B9B,CAACsH,sBAAuBmS,eAAgBW,yBAyBxChF,0BAtB8B,2BAC9B,SAAC9G,mBACG,IAAMuM,6BAA+B,8CACjC9Z,iBACAuN,mBAGEqM,aAAe,gBAEjB,uBAAahU,iBAAkBkU,8BAC/BA,8BAGJpB,eAAekB,aAAcrM,qBAEjC,CAAC3H,iBAAkB5F,iBAAkB0Y,mBC7J7C,iC,gCA5CyC,SAAC,I,IACtCjZ,cAAa,iBACb8F,eAAc,kBACdK,iBAAgB,oBAChB4Q,oBAAmB,uBACnBkC,eAAc,kBAER,GAKF,mCAAmB,CACnB9S,iBAAgB,iBAChB8S,eAAc,iBANdb,sBAAqB,yBACrBuB,uBAAsB,0BACtBK,kBAAiB,qBACjBpF,0BAAyB,6BAM7B,OACI,qCAAK,UAAU,sCACV,cAAI+E,wBAAwB,SAAA/X,iBAAmB,OAC5C,8BAAC,8BAAD,CACI8S,IAAK9S,gBAAgBH,KACrBgP,sBAAuBzQ,cACvB6T,eACIuE,sBAAsBxW,gBAAgBpC,OAE1CoC,gBAAiBA,gBACjB+Q,SAAU7M,eAAe3F,SAASyB,gBAAgBpC,OAClDkT,WAAYvM,iBAAiBhG,SACzByB,gBAAgBpC,OAEpBsX,gBAAiBkD,kBACjBjD,oBAAqBA,oBACrBb,sBAAuBtB,0BACvB9B,OAAQ,4CACJlR,gBAAgB6C,KAChB,gBAjBoC,yB,4oBC5BpD6V,iBAAqBC,SAAA,EAASC,WAAd,iB,+BAeI,8BAACF,iBAAD,MAS5B,sDAAe,gBAAMvG,MAtBwB,WACzC,IAAMnT,SAAW,gBAAgB,WAEjC,OACI,sEACe,qBAAG,aAAc,CACxB,YAAaA,WAFrB,oFAKI,8BAAC,aAAD,CAAWqB,GAAI,gBAAcwY,mBACzB,8BAAC,aAAD,CACI7Z,SAAUA,SACV8Z,OAAQ,8BAAC,aAAD,CAAc9Z,SAAUA,WAChC+Z,OAAA,gCAEA,8BAAC,iCAAqB,aAAeC,iBCpBvCC,yB,gCACdC,MAAA,EAAK,WADgC,yB,uBAKjC,qCAAK,UAAU,yCACX,8BAAC,gBAAD,MAEA,8BAAC,aAAD,KACI,8BAAC,sDAAD,OAGJ,8BAAC,aAAD,KACI,8BAACD,wBAAD,QAMhB,sCAhBqC,WACjC,+B,6jBCOY,yBAWZ,oBAAI,SAXiB,UACrB,iBAUA,oBALC,MAJGxd,YAAW,6BACX,4BAAY,8BACZ,iCAAiB,mCACjBwO,uBAAsB,wCAEjB,2BAIT,oBAAI,MAJgB,YAEH,4BAEjB,oBAAI,mBAFyB,aAKhB,qCACb,eAAO,UAD2B,sBAKnBkP,oBAEf,0BAAS,mBAFyB,oBAIhC,2BAAc,8CAAyB,CACzChb,OAAQ,4BACRQ,iBAAkB,uCA6JtB,SAASya,+BAIC,OAAwC,mCAAtC,MAAAtV,uBAAQ,OAAG,GAAE,GAAE,MAAA1F,cAEvB,MAAO,CACH0F,SAAQ,SACR1F,mBAJgC,OAAG,GAAE,IAQ7C,+BA3JuB,WACnB,IAAMjC,QAAU,kCACVgU,SAAW,0BAET3T,SAAaL,QAAL,SAEVkd,eAAiB,2BAAYD,gCAE3BtV,SAA4BuV,eAApB,SAAEjb,cAAkBib,eAAL,cAEzB,GAAsC,uBAAmBvV,UAAxDI,eAAc,MAAEoV,kBAAiB,MAElC,GAA+B,yBAAY,SAACzO,OAC9C,kCAAYA,MAAO,OADf1M,OAAM,UAAEQ,iBAAgB,oBAI1B4a,oBAAsB,qBAAO5a,kBAC7B6a,qBAAuB,gBAAY7a,kBAEzC4a,oBAAoBE,QAAU9a,iBAE9B,IAAM+a,WAAa,2BAAY,SAACC,UAC5BA,aACD,IAEH,iBAAa,WACTL,kBAAkBF,+BAA+BtV,YAClD,CAACtH,SAASP,SAAUO,SAASF,SAEhC,iBAAa,WAEe,OAApBkd,2BAAoB,IAApBA,2CAAsB3b,SACrB0b,oBAAoBE,QAAQ5b,QAKjCyb,mBAAkB,SAAAM,WACd,GAAIA,UAAU/b,OAAQ,OAAO+b,UAE7B,IAAMC,sBAAwB,8CAC1BN,oBAAoBE,QACpBrb,eAGJ,mCAAW0F,SAAa+V,4BAE7B,CAACzb,cAAe0F,WAEnB,IAAMgW,oBAA4C,2BAC9C,SAAA7b,aACY,IAAA8b,KAAS9P,yBAAL,KAER8P,OAASA,KAAO,GAChB5J,SAASgJ,uBAGb,IAAMnU,mBAAqB,oCACvB/G,YAAY6F,UAAY,GACxB3F,QAGE+Z,aAAelT,mBACf,8BAAgBA,yBAChBvE,EAEN,4BAAcxC,YAAaia,gBAE/B,CAAC/H,SAAUhS,SAGT6b,uBAAyB,2BAC3B,SAAC1d,QACG,IAAM2d,aAAe,4BAAa,cAAIrd,OAAOgH,UACvC,cAAIhH,OAAO+G,eACX,cAAI/G,OAAOC,cAEjB6c,YAAW,WACP,OAAAvd,QAAQ2F,KAAI,+CACLtF,UAAQ,CACXP,SAAUge,aACV3d,OAAQA,OAAS,yBAAUA,QAAU,WAIjD,CAACod,WAAYvd,QAASK,WAGpBwU,SAAW,2BACb,SAAC,I,IACakJ,gBAAe,YACVjL,qBAAoB,iBAEnC,GAAIxT,eAAiB,qBAAoB,oBACrC,OAAOue,uBAAuB,CAC1BlW,SAAUoW,gBACV9b,cAAe6Q,uBAIvB6K,oBAAoB,CAChBhW,SAAUoW,gBACV9b,cAAe6Q,qBACfxL,cAAe,GACf0W,UAAW,OAGnB,CAACH,uBAAwBF,sBAGvBM,oBAAsB,2BACxB,SAAC7B,aAAwBrM,mBACrB8E,SAAS,CACLlN,SAAUyU,aACVna,cAAe8N,sBAGvB,CAAC8E,WAGCuE,wBAA0B,2BAC5B,SAACpR,iBAA0BF,YACvB,IAAMoW,mBAAqB,oCAAsB,CAC7CpW,WAAU,WACVC,eAAc,eACdK,iBAAkBT,SAClBK,iBAAgB,mBAGpBmV,kBAAkBe,sBAEtB,CAACnW,eAAgBJ,WAGrB,MAAO,CACH1F,cAAa,cACb8F,eAAc,eACdJ,SAAQ,SACRsW,oBAAmB,oBACnB7E,wBAAuB,0B,iDCpLnB,8BAAC,sCAAD,OAaZ,mCAxB8B,WACpB,OAMF,6BALAnX,cAAa,iBACb8F,eAAc,kBACdJ,SAAQ,YACRsW,oBAAmB,uBACnB7E,wBAAuB,2BAG3B,OACI,qCAA2B7D,UAAU,8DAArC,gBAGI,8BAAC,gCAAD,CACItT,cAAeA,cACf8F,eAAgBA,eAChBK,iBAAkBT,SAClBuT,eAAgB+C,oBAChBjF,oBAAqBI,4BCvBrC,yDACI+E,OAAQ,CACJzI,eACI,2FACJC,GAAI,mDAERyI,QAAS,CACL1I,eAAgB,qCAChBC,GAAI,oDAERpB,KAAM,CACFmB,eAAgB,mBAChBC,GAAI,iDAER0I,YAAa,CACT3I,eAAgB,qCAChBC,GAAI,wDAER2I,IAAK,CACD5I,eAAgB,MAChBC,GAAI,6BAER,QAAS,CACLD,eAAgB,OAChBC,GAAI,qCAER4I,MAAO,CACH7I,eAAgB,QAChBC,GAAI,sCAER6I,UAAW,CACP9I,eAAgB,YAChBC,GAAI,0CAER,QAAS,CACLD,eAAgB,SAChBC,GAAI,0CAER8I,KAAM,CACF/I,eAAgB,OAChBC,GAAI,qCAER9Q,YAAa,CACT6Q,eAAgB,cAChBC,GAAI,0CCnCR,wBACA,oBAD8C,MAArC+I,gBAAe,wCAAEC,mBAAkB,2CAgChD,6CA7BA,SAASC,wBACG,IAAArU,SAAa,kBAAL,SACVsU,cACFtU,UACA,8BAAoBnI,SAASmI,UACtBA,SACD,8BAiBV,OAfA,iBAAS,WACLoU,mBAAmB,WAAYE,kBAc5B,CACHzJ,SAZa,2BACb,SAAC0J,YACOD,gBAAkBC,YAEtBJ,gBAAgB,CACZnU,SAAUuU,eAGlB,CAACD,gBAKDA,cAAa,gB,wPCPrB,sCAAe,gBAAM7I,MApBuB,WAClC,OAA8B,2CAA5B6I,cAAa,iBAAEzJ,SAAQ,YAE/B,OACI,qCAAK,UAAU,yCACV,cAAI,+BAAqB,SAAA2J,QAAU,OAChC,qCACIpI,IAAKoI,OAILjK,QAAS,WAAM,OAAAM,SAAA,SALnB,iCAEe,qBAAG,OAAQ,CAClB,YAAayJ,gBAAkBE,SAHvC,4EAOI,8BAAC,iCAAqB,iBAASA,iB,siBCEtC,sCAMT,oBAAI,MANsB,kBAETC,gBAIjB,oBAAI,mBAJ4B,gBAEpB,+BAEZ,oBAAI,SAFkB,WACb,gCACT,oBAAI,MADgB,YAIP,0CACb,eAAO,UAD2B,sBAkJtC,SAASC,UAAU,I,IACfnf,SAAQ,YACRof,iBAAgB,oBAChBC,mBAAkB,sBAEZnf,QAAU,iCAEVof,aAAY,yDACXpf,QAAQK,UAAQ,CACnBP,SAAQ,WAGZ,GAAIof,iBAAkB,CACZ,OAAwB,wCAAtBpa,QAAO,WAAE6C,SAAQ,YAEzByX,aAAajf,OAAS,kBAAU,CAC5B2E,QAAO,QACP6C,SAAQ,WAIZwX,mBACAnf,QAAQI,QAAQgf,cAKpBpf,QAAQ2F,KAAKyZ,cAQjB,IAAMC,sBAAwB,oCAC1B,2CACA,SAAC7c,kBACG,OAAAA,iBAAiB4P,QACb,SAACO,IAAsB,I,IAAEjM,KAAI,QAAS5B,QAAO,SACnCiQ,OAAS,4CACXrO,KACA,gBAA6B4Y,iBAG3BC,WAAa,4CACf7Y,KACA,gBAA6B8Y,qBAWjC,OARIzK,QACApC,IAAI8M,aAAa9Z,KAAKb,SAGtBya,YACA5M,IAAI+M,iBAAiB/Z,KAAKb,SAGvB6N,MAEX,CACI8M,aAAc,GACdC,iBAAkB,QAK5B,gCAAc,8CAAyB,CACzCC,UAAWX,gBACXY,gBAAiBP,wBAGfQ,eAAgC,CAClC,gBAAiB,YAASC,YAC1B,cAAe,YAAO3X,MAGpB4X,mBAAoC,CACtC,gBAAiB,YAASC,gBAC1B,cAAe,YAAO7X,MAG1B,qCAjO4B,WAChB,IAAA/D,cAAkB,kCAAL,cACf,GAGF,gBAAgB,gCAAa,IAF7Bub,UAAS,aACT,MAAAC,gBAAmBH,aAAY,gBAAEC,iBAAgB,oBAG7C5f,SAAa,mCAAL,SACV,GAAsC,kBAApCgF,QAAO,WAAE6C,SAAQ,YAAEsY,aAAY,gBAEjCC,YAAc,gCAAYvY,UAE1B,GAAiC,yBAAW,mCAA1CgM,eAAc,kBAAEE,WAAU,cAE5BsM,UAAY,SAAChB,oBACfF,UAAU,CACNnf,SAAU,cAAIW,OAAOC,cACrBwe,iBAAkBS,UAClBR,mBAAkB,qBAGjBQ,WAEL9L,WAAW,sBAAYD,OAGrBwM,WAAa,SAACjB,oBAChBF,UAAU,CACNnf,SAAU,cAAIW,OAAOQ,UACrBie,iBAAkBS,UAClBR,mBAAkB,sBAqBpBkB,gBAAkBvgB,WAAa,cAAIW,OAAOQ,UAE1Cqf,eAAiBxgB,WAAa,cAAIW,OAAO+H,SAEzC+X,eACFzgB,WAAa,cAAIW,OAAOC,gBACvBif,WACMM,cAAgBtM,iBAAmB,sBAAYC,MAC/CyM,kBAAoBC,gBAEzBE,sBACF1gB,WAAa,cAAIW,OAAOC,gBAAkB6f,eAExCE,aAAe,CACjBhB,aAAY,aACZW,WAAU,WACVD,UAAS,UACTE,gBAAe,gBACfE,eAAc,gBAGZG,gBAAkB,qBAAOD,cAC/BC,gBAAgBpD,QAAUmD,aAE1B,yBAAU,WACN,IAAME,SAAWD,gBAAgBpD,QAE3BsD,KAAI,iCACF9b,QAAU,CAACA,SAAW,GACtBob,aAAe,IAMvB,GAFIP,WAAa,uBAAaiB,KAAMD,SAASlB,cAAc/d,OAAS,EAElD,CACd,GAAIif,SAASN,gBAAiB,OAE9BM,SAASP,YAAW,QACZO,SAASJ,gBAAkBK,KAAKlf,OAAS,GACjDif,SAASR,WAAU,KAExB,CAACrb,QAASob,YAAaP,YAE1B,IAAMkB,KAAuB,CACzB,CACIC,KAAM1c,cAAc,aAAeka,KACnCxJ,QAASqL,UACTtd,SAAU0d,gBAEd,CACIO,KAAM1c,cAAc,aAAemQ,MACnCO,QAASsL,WACTvd,SAAUwd,gBACVU,cAAelB,gBAEnB,CACIiB,KAAM1c,cAAc,aAAe4c,UACnClM,QA3Ee,WACnBmK,UAAU,CACNnf,SAAU,cAAIW,OAAO+H,SACrB0W,iBAAkBS,aAyElB9c,SAAUyd,eACVS,cAAehB,qBAmBvB,OAfIJ,WAAe7a,SACf+b,KAAKlb,KAAK,CACNmb,KAAM1c,cAAc,iBAASS,aAC7BiQ,QA7EkB,WACjB6K,YAEL9L,WAAW,sBAAYoN,iBACvBhC,UAAU,CACNnf,SAAU,cAAIW,OAAOC,cACrBwe,kBAAkB,MAwElBrc,SAAU2d,wBAWX,CACHK,KAAI,KACJK,eARCvB,cACS,OAARhY,eAAQ,IAARA,cAAQ,EAARA,SAAUjG,SACZ,CAAC+d,aAAcC,kBAAkBvd,MAC7B,SAAAgf,KAAO,kCAAaA,IAAKxZ,UAAUjG,UAMvCie,UAAS,Y,wKCrJjB,kCAAe,kBAAf,EAhBmC,WACzB,OAAqC,uCAAnCkB,KAAI,QAAElB,UAAS,aAEvB,OAFsC,iBAEZ,KAGtB,sEACe,qBAAG,YAAa,CACvB,aAAcA,YAFtB,0EAKI,8BAAC,SAAD,CAAgBkB,KAAMA,W,yFCL1B,qCAAK,UAAU,0BACX,8BAAC,aAAD,CAAMvM,MAAO,iBAOzB,kBAAe,gBAAM0B,MAVa,SAAC,I,IAAER,MAAK,SAAEV,QAAO,WAAO,OACtD,qCAAK,UAAU,8BAAYA,QAASA,SAApC,aAKKU,UCTO,yCACZ,oBAAI,SADkB,WAUb4L,mBACTrE,MAAA,EAAK,MADsB,mBA8B/B,6DA3BA,SAASsE,gCACG,IAAAC,gBAAoBF,qBAAL,gBACftc,QAAY,kBAAL,QACT,GAAiC,yBAAW,mCAA1C6O,eAAc,kBAAEE,WAAU,cAE5B0N,iBAAmBzc,QAezB,OAbA,yBAAU,WACDyc,gBAEL1N,WAAW,sBAAYD,QACxB,CAAC2N,eAAgB1N,aASb,CACH2N,YARgB,2BAAY,WAC5B3N,WAAW,sBAAY4N,2BAEP,2CACRrhB,QAAQ,cAAIK,OAAOC,iBAC5B,CAACmT,aAIA3M,MAAOoa,gBAAgBpa,QACvBrE,SAAU8Q,iBAAmB,sBAAY8N,4B,+GCxB3B,8BAAC,aAAD,CAAM,UAAU,2CAAOnN,MAAO,oBAQpD,sDAAe,gBAAM0B,MAlBwB,WACnC,OAAmC,2DAAjCnT,SAAQ,YAAEqE,MAAK,SAAEsa,YAAW,eAC5Bpd,cAAkB,kCAAL,cAErB,OAAc,IAAV8C,MAAoB,KAGpB,8BAAC,sBAAD,CAAMhD,GAAI,CAAE/D,OAAQ,KAChB,8BAAC,aAAD,CACIqV,MAAOpR,cAAc,aAAesd,UACpCza,KAAA,+BACApE,SAAUA,SACViS,QAAS0M,kBCFZ,iDAET,oBAAI,MAF6B,yBACpB,kCACb,oBAAI,UADkB,UAIT,8CACb,eAAO,UAD2B,sBA0BtC,iDAvBA,SAASG,0BACG,IAAAvd,cAAkB,kCAAL,cACf,GAAiC,yBAAW,mCAA1CyP,WAAU,cAAEF,eAAc,kBAG5BzM,MAFkB,wBAAY,+CAENkL,QAAO,SAACO,IAAKtQ,MAAS,OAAAsQ,IAAMtQ,KAAN,QAAkB,GAChEuf,aAAe,2BAAY,WAC7B/N,WAAW,sBAAYD,QACxB,CAACC,aAEI/O,QAAY,kBAAL,QACT+c,eAAiB,qDAA+B,kCAAUC,QAEhE,MAAO,CACH5a,MAAK,MACLpC,QAAO,QACP8c,aAAY,aACZjO,eAAc,eACdoO,WAAY3d,cAAc,aAAe4d,UACzCH,eAAc,iB,0CC9ClB,kBAAJ,8BACE,GAAM,mBACN,IAAO,yBACP,QAAW,gBACX,QAAW,itFAGb,YADA,sDACA,mBC+BA,0CAAe,gBAAM7L,MA7BkB,WAC7B,OAMF,+CALA4L,aAAY,gBACZ9c,QAAO,WACPid,WAAU,cACVpO,eAAc,kBACdkO,eAAc,kBAGlB,OACI,8BAAC,sBAAD,CACI/M,QAAS8M,aACT1d,GAAI,CACA/D,OAAQ,8BAAgB,CACpB2E,aAASR,EACT2b,kBAAc3b,EACdrC,mBAAeqC,MAIvB,8BAAC,aAAD,CACIkR,MAAOuM,WACP9a,KAAM,8BAAC,aAAD,CAAMqN,MAAOuN,eAAiBI,WAAa,cACjDpf,SAAU8Q,iBAAmB,sBAAYC,OAAS9O,c,6DCdtD,8BAAC,aAAD,CAAM,UAAU,8CAAawP,MAAO,gBAKhD,gDAAe,gBAAM0B,MAb4B,SAAC,I,IAAEkM,OAAM,UAC9Cxe,KAA2Bwe,OAAvB,KAAEC,iBAAqBD,OAAL,iBAE9B,OAAKxe,MAASye,iBAGV,8BAAC,aAAD,CAAW,UAAU,6CAAYje,GAAIie,kBACjC,qCAAK,UAAU,yCAAQze,MAD3B,6BAHmC,QCR1B0e,8BACbrF,MAAA,EAAK,UADqC,8BAiB9C,8DAAe,gBAAM/G,MAdqB,WACtC,IAAMsL,gBAAkB,gBAAgBc,+BAExC,OAAKd,gBAAgBe,KAGjB,8BAAC,gBAAM5L,SAAP,KACK6K,gBAAgB5iB,KAAI,SAAAwjB,QAAU,OAC3B,8BAAC,gDAAD,CAAyBvL,IAAKuL,OAAOI,KAAMJ,OADhB,aAJL,QCPzBK,wBAA0B,4BAAwC,CAC3ElI,sBAAuB,K,8ECc3B,+B,gCAAe,gBAAMrE,MAXmB,SAAC,I,IAAER,MAAK,SAAEtO,MAAK,SAAE,MAAA6L,uBAAQ,OAAG,KAAI,GAAO,OAC3E,8BAAC,gBAAM0D,SAAP,KACK1D,SAED,qCAAK,UAAU,qCACX,qCAAK,UAAU,iCAASyC,OACvBtO,OAAS,qCAAK,UAAU,mCAAWA,a,uSCAnC,6CAET,oBAAI,MAF2B,uBACnB,gCACZ,oBAAI,SADiB,U,0BAYb,8BAAC,aAAD,CAAM,UAAU,4CAAaoN,MAAO,eAyBhD,SAASkO,oBAAoBvC,cACzB,IAAMpgB,QAAU,+CAEhB,OAAO,gCAAS,6DACTA,SAAO,CACVoC,mBAAeqC,EACf2b,aAAY,gBAIpB,gDAAe,gBAAMjK,MA5C0B,SAAC,I,IAC5CjD,SAAQ,YACRkN,aAAY,gBACZnL,QAAO,WAED2N,QACF,8BAAC,gBAAMhM,SAAP,KACK1D,SADL,2BAOJ,OAAKkN,aASD,8BAAC,sBAAD,CACI,UAAU,2CACV/b,GAAI,CACA/D,OAAQqiB,oBAAoBvC,eAEhCnL,QAASA,SAER2N,SAdD,qCAAK3N,QAASA,QAAS,UAAU,4CAC5B2N,YCnBJ,mC,gCACT,oBAAI,MADsB,mB,oBAuBV,qCAAK,UAAU,iCACX,8BAAC,aAAD,CAAMnO,MAAOmB,aAQrC,gCA7BkC,WACtB,IAAA4E,sBAA0B,yBAAWkI,yBAAhB,sBAErBne,cAAkB,kCAAL,cAEbU,QAAY,oCAAL,QAEf,IAAKA,QAAS,OAAO,KAErB,IAAMoC,MAAQmT,sBAAsBvV,UAAY,EAEhD,OAAIoC,MAAQ,EAAU,KAGlB,8BAAC,sBAAD,CAAMhD,GAAI,6BAAeY,UACrB,8BAAC,4CAAD,CAAuBgQ,QAAA,gBACnB,8BAAC,8BAAD,CACI5N,MAAOA,MACPsO,MAAOpR,cAAc2R,SAASN,YAFlC,wBCNZ,mBACA,oBAD6C,MAApC,iCAAe,mCAAE,mCAAiB,qCAIhC,2CACX1B,GAAA,EAAE,QADkC,0B,qBAyC5B,8BAAC,gCAAD,MAsBZ,kCAAe,gBAAMiC,MA5DqB,SAAC,I,IACvC0M,gCAA+B,mCAC/BC,eAAc,kBACdC,mBAAkB,sBAEZ5O,SAAW,0BACT5P,cAAkB,kCAAL,cACbyP,WAAe,yBAAW,mCAAhB,WAEZgP,WAAa,2BAAY,WAC3B,IAAMC,IAAM,qCAQZ9O,SAAS,2CAA0B,gBAEnC,iCAAgB,eAAK8O,IARyB,CAC1C,eACA,gBACA,cAMJjP,WAAW,sBAAYD,QACxB,CAACI,SAAUH,aAERkP,oBAAsB,2BACxB,SAAClc,kBAA6B,kBAC1B,OAAA+b,mBAAmB/b,qBACvB,CAAC+b,qBAGL,OACI,8BAAC,eAAD,KACI,8BAAC,4CAAD,CAAuB9N,QAAS+N,YAC5B,8BAAC,8BAAD,CACI3b,MAAOyb,eACPnN,MAAOpR,cAAc2R,SAASH,cAJ1C,qBAQoC,OAA/B8M,sCAA+B,IAA/BA,qCAA+B,EAA/BA,gCAAiChkB,KAAI,SAAC,I,IAAEgF,KAAI,QAAEwD,MAAK,SAAED,KAAI,QAChDuO,MACF9R,OAAS,mCACHU,cAAc,aAAe4e,OAC7Btf,KAEV,OACI,8BAAC,4CAAD,CACIiT,IAAKjT,KACLoR,QAASiO,oBAAoBrf,OAE7B,8BAAC,8BAAD,CAAgBwD,MAAOA,MAAOsO,MAAOA,OACjC,8BAAC,aAAD,CAAkBvO,KAAMA,gBCpEpD,2B,gCATsC,SAAC,I,IAAE9F,YAAW,eAAEwD,YAAW,eAC7D,OACI,sCAAM,UAAU,mCACXxD,aAAe,8BAAC,aAAD,CAAUA,YAAaA,cACtCwD,e,oFCXA,2BACT,oBAAI,MADgB,YAYV,SAAUse,eAAe,I,IAAEpe,YAAW,eAC1C,GAAgC,4BAClC,WACI,wBACIA,aACA,SACI8N,IAIA,I,IAAElR,MAAK,SAAEyF,MAAK,SAKd,OAHAyL,IAAI1Q,cAAc0D,KAAKlE,OACvBkR,IAAIuQ,YAAchc,MAEXyL,MAEX,CACI1Q,cAAe,GACfihB,WAAY,MAGxB,CAACre,cAGL,MAAO,CACH5C,cAzBiB,iBA0BjBihB,WA1B6B,e,qQCQjC,sBACA,oBAD6C,MAApC,oCAAe,sCAAE,sCAAiB,wCAIhC,8CACXnP,GAAA,EAAE,QADkC,0BA0CxC,qCAvC4B,SAAC,I,IAAE5S,YAAW,eAAE0D,YAAW,eAC7CmP,SAAW,0BACTH,WAAe,yBAAW,mCAAhB,WAEZ,GAAgCoP,eAAe,CAAEpe,YAAW,cAA1D5C,cAAa,iBA4BrB,MAAO,CACHihB,WA7B6B,cA8B7BC,gBA5BoB,2BAAY,WAChCnP,SAAS,8CAA0B,KAEnC,IAAMnS,eAAiB,wCAEvB,oCAAe,yDACRA,gBAAc,CACjBI,mBAAeqC,OAEpB,CAAC0P,WAoBAoP,eAlBmB,2BAAY,WAC/B,IAAMvhB,eAAiB,wCACvB,oCAAe,yDACRA,gBAAc,CACjBI,cAAa,iBAGjB+R,SACI,8CACI,GAAG7S,YAAc,qCAA6B,gBAGtD0S,WAAW,sBAAYD,QACxB,CAACI,SAAU7S,YAAa0S,WAAY5R,kBCJ3C,kCAxC0C,SAAC,I,IACvC4C,YAAW,eACX1D,YAAW,eACXwD,YAAW,eACXoO,SAAQ,YAEA3O,cAAkB,kCAAL,cACf,GAAkD,qCACpD,CACIjD,YAAW,YACX0D,YAAW,cAHXse,gBAAe,mBAAEC,eAAc,kBAAEF,WAAU,cAOnD,OACI,8BAAC,gBAAMzM,SAAP,KACI,8BAAC,kBAAD,CACIjB,MACI,8BAAC,0BAAD,CACIrU,YAAaA,YACbwD,YAAaA,cAGrBmQ,QAASqO,kBAGZte,YAAYnD,OAAS,GAClB,8BAAC,4CAAD,CAAuBoT,QAASsO,gBAC5B,8BAAC,8BAAD,CACIlc,MAAOgc,WACP1N,MAAOpR,cAAc2R,SAASH,cAKzC7C,W,mQC7CT,uBACA,oBAD6C,MAApC,qCAAe,uCAAE,uCAAiB,yCAIhC,+CACXgB,GAAA,EAAE,QADkC,0BAoCxC,uCAvB6B,SAAC,I,IAAE5S,YAAW,eAAE0D,YAAW,eAC9CmP,SAAW,0BAEX,GAAgCiP,eAAe,CAAEpe,YAAW,cAA1D5C,cAAa,iBAcrB,MAAO,CACHihB,WAf6B,cAgB7BG,yBAd6B,2BAAY,WACzCrP,SAAS,+CAA0B7S,cAEnC,IAAMmiB,kBAAoBrhB,cAAc,GAExC,qCAAe,2DACR,0CAAmB,CACtBge,kBAAc3b,EACdrC,cAAeqhB,kBAAoB,CAACA,wBAAqBhf,OAE9D,CAAC0P,SAAU7S,YAAac,kB,uDCTf,8BAAC,aAAD,CAAM,UAAU,wCAAaqS,MAAO,gBAMpD,oCAAe,gBAAM0B,MArBsB,SAAC,I,IACxCnR,YAAW,eACX1D,YAAW,eACXwD,YAAW,eAEL,GAA2C,uCAAqB,CAClExD,YAAW,YACX0D,YAAW,cAFPqe,WAAU,cAAEG,yBAAwB,4BAK5C,OACI,qCAAKvO,QAASuO,yBAA0B,UAAU,wCAC9C,8BAAC,0BAAD,CAAcliB,YAAaA,YAAawD,YAAaA,cACrD,qCAAK,UAAU,oCACX,qCAAK,UAAU,sCAAWue,YAD9B,2BCLZ,+BAZwC,SAAC,I,IAAE7gB,KAAI,QAAE,MAAAkhB,uBAAQ,QAAO,GAAO,OACnE,0CACKlhB,KAAKqB,KAAKtD,QAAQ,iBAAY,IAC9BmjB,UACG,8BAAC,eAAD,YAEI,8BAAC,aAAD,CAAUpiB,YAAa,uCAAyBkB,MAAM,QCOrD,4BAKb,oBAAI,UALkB,UAEL,+BAGjB,oBAAI,mBAHyB,aAE7B,oBACA,oBAD+C,MAAtC,kCAAe,oCAAEmhB,oBAAmB,wCAIhC,wCACb,eAAO,UAD2B,sBAIrBC,6BAEb1P,GAAA,EAAE,UAFuC,6BAC9B,4CACXA,GAAA,EAAE,QADkC,0BAGlC2P,cAAgB,CAClBvd,wBAAyB,GACzBC,2BAA4B,IAgGhC,iCA7F0B,WACtB,IAAM4N,SAAW,0BACTH,WAAe,yBAAW,mCAAhB,WACV/O,QAAY,kBAAL,QAEPV,cAAkB,kCAAL,cAEfoO,gBAAkB,wBAAY,yCAE9BmR,uBAAyB,gBAC3BF,8BAGEG,UAAY9e,QACZ0N,gBAAgBjR,MAAK,SAAA6P,GAAK,OAAAA,EAAE3P,QAAF,gBAC1B6C,EAEAsd,aAAe,2BAAY,WAC7B/N,WAAW,sBAAYD,QACxB,CAACC,aAEEgQ,0BACAD,WAAa,8BAAoBxhB,SAASwhB,UAAUniB,OAEpDqiB,YAAc,gBAAYhf,SAE1B9C,OAAS,gBAAgB,+BAAc,IACvCmX,MAAQyK,WAAa5hB,OAAOY,IAAIghB,UAAUniB,OAC1CsiB,UAAYP,oBAAoBrK,SAAW,4BAAU2I,QAErDkC,qBAAuB,2BACzB,SAACngB,iBACG,OAAKA,gBAEAkgB,UAOE,iCAAmB,CACtBlf,YAAahB,gBAAgBkP,SAC7BjO,QAASjB,gBAAgBpC,MACzB2C,cAAa,gBATN,CACH+B,wBAAyB,GACzBC,2BAA4BvC,gBAAgBkP,UALvB2Q,gBAejC,CAACK,UAAW3f,gBAGV6f,mBAAqB,2BACvB,SAAChiB,eAA4B,kBACzB,kCAAgB,CACZ6C,QAAO,QACP7C,cAAa,gBAEjB2f,eACA5N,SAAS,4CAA0B,mBAEvC,CAAC4N,aAAc5N,SAAUlP,UAG7B,yBAAU,WACFA,SAAWgf,aAAehf,UAAYgf,aACtC,kCAAgB,CACZhf,QAAO,QACP7C,mBAAeqC,MAGxB,CAACwf,YAAahf,UAEjB,4BAAc,CACV8e,UAAS,UACTC,wBAAuB,0BAGrB,OAGFG,qBAAqBJ,WAFrBzd,wBAAuB,2BACvBC,2BAA0B,8BAG9B,MAAO,CACHwd,UAAS,UACThC,aAAY,aACZmC,UAAS,UACT5d,wBAAuB,wBACvBC,2BAA0B,2BAC1Bud,uBAAsB,uBACtBE,wBAAuB,wBACvBI,mBAAkB,qB,mBC1DW,8BAAC,gCAAD,MA4DrC,8BA/GwC,SAAC,I,IACrChe,MAAK,SACL,MAAAie,uCAAgB,QAAO,GACvBC,eAAc,kBAEN/f,cAAkB,kCAAL,cACf,GAOF,mCANA2f,UAAS,aACT5d,wBAAuB,2BACvBC,2BAA0B,8BAC1Bud,uBAAsB,0BACtB/B,aAAY,gBACZqC,mBAAkB,sBAEhB3K,uBAAyB,kBAASzW,SACpC,kBAASC,KAAKyW,2BAGZ6K,kBAAoB,SACtB5hB,iBACAqF,SAEA,YAFA,IAAAA,kBAAA,CAAmC0b,UAAU,IAE7C,cAAI/gB,kBAAkB,SAAAH,MAAQ,OAC1B,8BAAC,4CAAD,CACIsU,IAAKtU,KAAKZ,MACVwe,aAAc5d,KAAKZ,MACnBqT,QAAS8M,cAET,8BAAC,8BAAD,CACI1a,MAAO7E,KAAK6E,MACZsO,MACI,8BAAC,+BAAD,CACInT,KAAMA,KACNkhB,SAAU1b,QAAQ0b,kBAOpCc,cAAgB,SAClBC,gBACAC,iBAAA,IAAAA,wBAAA,MAEA,IAAMpD,IAAMmD,gBAAgB5lB,KAAI,SAAA0S,GAAK,OAAAA,EAAA,SAErC,OACI,8BAAC,gBAAMqF,SAAP,KACI,8BAAC,4CAAD,CAAuB3B,QAASmP,mBAAmB9C,MAC/C,8BAAC,8BAAD,CAAgB3L,MAAOpR,cAAc2R,SAASH,cAEjDsO,kBAAA,mBACAK,WAEAH,kBACG9K,uBACM,mCAAqBgL,iBACrBA,mBAMtB,IAAMP,WAAaJ,yBAA2B,eAAQQ,eAClD,OAAOE,cAAcpe,OAGjB,IAAAqD,mBAAuB,wCAC3Bqa,wBADsB,mBAIpBtf,OAAS8B,wBAAwB5E,MACnC,SAAC,IAAoB,OAAP,iBAAuB+H,sBAGzC,OAAIA,oBAAsBjF,OAElB,8BAAC,kCAAD,CACIsS,IAAKtS,OAAOlD,YACZ0D,YAAaR,OAAO4B,MACpB9E,YAAakD,OAAOlD,YACpBwD,YAAaN,OAAOM,aAEnByf,kBACG9K,uBACM,mCAAqBjV,OAAO4B,OAC5B5B,OAAO4B,MACb,CACIsd,UAAU,KAOvBc,cACHje,2BACA,cACID,yBACA,SAAC,I,IAAStB,YAAW,SAAE1D,YAAW,eAAEwD,YAAW,eAAO,OAClD,8BAAC,oCAAD,CACIgS,IAAKxV,YACL0D,YAAaA,YACb1D,YAAaA,YACbwD,YAAaA,mBCzFjC,qD,gCA3BmD,SAAC,I,IAChD6f,qBAAoB,wBACpBC,YAAW,eAEH/gB,KAAsB8gB,qBAAlB,KAAEve,MAAgBue,qBAAX,MAAEvd,KAASud,qBAAL,KAEzB,OACI,8BAAC,eAAD,KACI,8BAAC,kBAAD,CACI1P,QAAS2P,YACTjP,MACI,qCAAK,UAAU,4CACX,8BAAC,aAAD,CAAkBvO,KAAMA,OACvBvD,QAKb,8BAAC,8BAAD,CACIuC,MAAOA,MACPie,kBAAkB,EAClBC,gBAAgB,OCqBhC,+CAlCiC,SAAC,I,IAC9B,MAAAP,UAAa7Q,SAAQ,YAAEtR,MAAK,SAEtB,GAA8C,yBAA7CijB,mBAAkB,MAAEC,sBAAqB,MAI1CrL,uBAAyB,kBAASzW,SACpC,kBAASC,KAAKyW,2BAGZmJ,gCAAkC,mDACpCpJ,uBAAyB,mCAAqBvG,UAAYA,SAC1DtR,OAEEkX,aAAe+J,gCAAgCnhB,MACjD,SAAC,I,IAAEmC,KAAI,QAAO,OAAAghB,qBAAuBhhB,QAWzC,MAAO,CACHgf,gCAA+B,gCAC/B8B,qBAAsB7L,aACtBiK,mBAXuB,SAAC/b,kBACxB,GAAgC,kBAArBA,iBACP,OAAO8d,2BAAsBrgB,GAGjCqgB,sBAAsB9d,qBCV9B,4CAAe,gBAAMmP,MAzB0B,SAAC,I,IAAE4N,UAAS,aACjD,GAIF,+CAAyB,CAAEA,UAAS,YAHpClB,gCAA+B,mCAC/B8B,qBAAoB,wBACpB5B,mBAAkB,sBAGtB,OAAI4B,qBAEI,8BAAC,oDAAD,CACIA,qBAAsBA,qBACtBC,YAAa7B,qBAMrB,8BAAC,kCAAD,CACIF,gCAAiCA,gCACjCC,eAAgBiB,UAAU1c,MAC1B0b,mBAAoBA,wBCLhC,uCAAe,gBAAM5M,MAlBqB,WAChC,OAAyC,mCAAvC4N,UAAS,aAAEC,wBAAuB,2BAEpCe,aAAe,iCAErB,OAAKhB,UAGD,8BAACrB,wBAAwBtO,SAAzB,CAAkCxS,MAAOmjB,cACpCf,wBACG,8BAAC,4CAAD,CAAuBD,UAAWA,YAElC,8BAAC,8BAAD,CAAgB3d,MAAO2d,UAAU7Q,YAPtB,Q,YCAR,8BAAC,8DAAD,M,aAMA,8BAAC,uCAAD,MASnB,gBApB0B,WAGtB,OAF2B,yBAAW,mCAAhB,gBAGlB,KAAK,sBAAY0O,0BACb,mBAGJ,KAAK,sBAAYR,gBACb,OAAK,8CAEL,aAF6C,KAKjD,QACI,OAAO,OCRF,oCACb,eAAO,UAD2B,sBAIjB,2BAGjB,oBAAI,mBAHyB,aAE7B,gBACA,oBADiD,MAAxC,uCAAwB,yCAAE,2BAAY,6BAGpC,wCACXlN,GAAA,EAAE,QADkC,0BASlC,0BAAc,SAACrF,OAIjB,MAAO,CAAE1M,OAHM,2BAAa0M,OAGXlM,iBAFQ,oCAAsBkM,SAyDnD,6BApDA,SAASmW,gBACL,IAAM7Q,SAAW,0BACTH,WAAe,yBAAW,mCAAhB,WACV/O,QAAY,kBAAL,QAGOuW,yBAClB,iCAD0C,iBAGxC9Y,UAAY,yCAEVE,YAAgB,gBAAkB,CACtC0Y,OAAQ,gBAAeC,cADR,YAIb,GAA+B,yBAAY,SAAC1M,OAC9C,iCAAYA,UADR1M,OAAM,UAAEQ,iBAAgB,oBA8BhC,MAAO,CACHsC,QAAO,QACPggB,gBAVoB,WACpB9Q,SAAS,wCAA0B,KAE9B,2BAAa,cAAIvT,OAAOE,eAE7BkT,WAAW,sBAAYoN,kBAMvBze,iBA7B2B,uBAC3B,WACI,+CAA0B,CACtBD,UAAS,UACTP,OAAM,OACNS,YAAW,YACXD,iBAAgB,iBAChB6Y,yBAAwB,6BAEhC,CACI9Y,UACAP,OACAQ,iBACA6Y,yBACA5Y,gBC9BZ,sBAAe,gBAAMuT,MA3BQ,WACnB,OAAiD,2BAA/CxT,iBAAgB,oBAAEsiB,gBAAe,mBAAEhgB,QAAO,WAElD,OACI,8BAAC,gBAAM2R,SAAP,KACK,cAAIjU,kBAAkB,SAAC,I,IAAEf,MAAK,SAAEiC,KAAI,QAAEgD,KAAI,QAAO,OAC9C,8BAAC,sBAAD,CACIiQ,IAAKlV,MACLyC,GAAI6gB,UAAUtjB,OACdqT,QAASgQ,gBACTE,iBAAe,GAEf,8BAAC,aAAD,CACIniB,SAAUpB,QAAUqD,QACpBmC,KAAM,8BAAC,aAAD,CAAU6I,OAAQrO,QACxB+T,MAAO9R,KACPqR,OAAQ,4CACJrO,KACA,gBAA6B4Y,2BAWnDyF,UAAY,SAACtjB,OACf,OAAI,mBAAS,gBAAuBA,OACzB,6BAAeA,OAGnB,CACHtB,OAAQ,8BAAgB,CACpB2E,QAASrD,MACTwe,kBAAc3b,EACdrC,mBAAeqC,M,2PCvBN2gB,kBAKjB,oBAAI,mBAL8B,kBAExB,2BAGV,oBAAI,OAHe,UACV,iCAET,oBAAI,MAFoB,gBACf,6BACT,oBAAI,MADgB,YAIT,gCACX,eAAO,QADkB,eAIzB,mBAEAlR,GAAA,EAF+D,QAApDmR,WAAU,8BAAEC,YAAW,+BAAE,2CAAyB,6CAChD,8CACbpR,GAAA,EAAE,UADuC,6BA6F7C,IAKMqR,iBAAmB,qCALW,SAChCC,OACAC,OACS,OAAAA,MAAA,eAITL,mBACA,SAAChF,aAAcpb,aACX,GAAKob,aAEL,OAAOpb,YAAYjC,IAAIqd,iBAIzB,6BAAc,oCAChBmF,iBACA,+CACA,SAAC1f,WAAY0D,kBAAqB,MAAC,CAC/Bmc,eAA0B,OAAV7f,iBAAU,IAAVA,gBAAU,EAAVA,WAAYhC,KAC5BvC,aAAuB,OAAVuE,iBAAU,IAAVA,gBAAU,EAAVA,WAAYvE,aACnB,sCAAkC,OAAVuE,iBAAU,IAAVA,gBAAU,EAAVA,WAAYvE,aAC1B,OAAVuE,iBAAU,IAAVA,gBAAU,EAAVA,WAAYvE,YAClBiI,iBAAgB,qBAIxB,+BArHA,SAASoc,mBACC,OAAiC,yBAAW,mCAA1C7R,eAAc,kBAAEE,WAAU,cAC5BG,SAAW,0BACXnS,eAAiB,kBACjB,GAAgC,iBAAgB,WAAM,MAAC,CACzD4jB,qBACK,qBACD9R,iBAAmB,sBAAY8N,0BACnCtO,KAAM,uCAJFA,KAAI,QAAEsS,oBAAmB,uBAM3BjS,UAAY,6BAAYL,MAEtB8M,aAAgCpe,eAApB,aAAEI,cAAkBJ,eAAL,cAE7B,GAAoD,gBACtD,6BACA,CACIoe,aAAcA,eAA6B,OAAbhe,oBAAa,IAAbA,mBAAa,EAAbA,cAAgB,MAH9CsjB,eAAc,kBAAEpkB,YAAW,eAAEiI,iBAAgB,oBAO7CkS,eAAmB,2BAAU,CACjCC,WAAY,cAAIC,WAAWC,YAC3BC,iBAAkB,gCAClBlI,UAAS,UACTmI,oBAAoB,IAJF,eAOhB,GAGF,wCAA0BvS,kBAF1BE,mBAAkB,sBAClBE,6BAA4B,gCAgDhC,OAVA,yBAAU,WACNwK,SACIL,iBAAmB,sBAAYC,KAAOuR,cAAgBD,gBAE3D,CAACvR,eAAgBK,WAEpB,yBAAU,WACNsH,mBACD,CAAC9H,UAAW8H,iBAER,CACH3H,eAAc,eACdrK,mBAAkB,mBAClBE,6BAA4B,6BAC5B2Z,gBAjDoB,WACpB,OAAI3Z,8BACAwK,SAAS,2CAA0B1K,qBAEnC,iCAAe,mDACRzH,gBAAc,CACjBoe,kBAAc3b,EACdrC,eAA4B,OAAbA,oBAAa,IAAbA,mBAAa,EAAbA,cAAgB,IACzB,CAAc,OAAbA,oBAAa,IAAbA,mBAAa,EAAbA,cAAgB,SACjBqC,UAGVuP,WAAW,sBAAYoN,kBAKtBhB,cAOD9e,aACA6S,SAAS,2CAA0B7S,mBAGvC,iCAAe,mDACRU,gBAAc,CACjBoe,kBAAc3b,EACdrC,cAAed,YAAc,CAAC8e,mBAAgB3b,OAb9C0P,SAAS,2CAA0B,UACnCH,WAAW,sBAAYoN,mBA+B3B9f,YAAW,YACXokB,eAAc,eACdtF,aAAcA,eAA6B,OAAbhe,oBAAa,IAAbA,mBAAa,EAAbA,cAAgB,IAC9CwjB,oBAAmB,sB,mDCtFc,8BAAC,sCAAD,O,mBAE7B,qCAAK,UAAU,kCACX,8BAAC,0CAAD,MACA,8BAAC,sDAAD,MACA,8BAAC,sBAAD,O,MAGoB,8BAAC,kCAAD,M,MAKxB,8BAAC,gBAAD,MAKZ,4BAAe,gBAAMzP,MA/CW,WACpB,IAAA5R,cAAkB,kCAAL,cACf,GASF,iCARAkF,mBAAkB,sBAClBE,6BAA4B,gCAC5B2Z,gBAAe,mBACfhiB,YAAW,eACXokB,eAAc,kBACdtF,aAAY,gBACZtM,eAAc,kBACd8R,oBAAmB,uBAGjBC,cAAgBlc,6BAClB,qCAAK,UAAU,gCACX,8BAAC,aAAD,CAAUrI,YAAamI,qBACtB,mCAAqBlF,cAAekF,qBAGzC,qCAAK,UAAU,gCACVnI,aAAe,8BAAC,aAAD,CAAUA,YAAaA,cACtCmI,qBAAuB,cAClBlF,cAAc2R,SAASH,WACvB2P,gBAId,OACI,qCAAK,UAAU,oCACV,0DADL,mBASKE,qBAAA,MAEA9R,iBAAmB,sBAAYC,MAAQqM,cACpC,8BAAC,kBAAD,CAAUzK,MAAOkQ,cAAe5Q,QAASqO,kBAZjD,U,yOCpCFwC,cAAa,iCACZ,gBAAO,CACVlJ,WAAU,2BACVmJ,iBAAgB,kCAChB/X,MAAK,iCAAO,eAAQA,OAAUA,OAC9BgY,UAAS,iCAAO,eAAQA,WAAcA,aAG1CC,cAAA,EAAc/W,IAAI,UAAW,CAAEnB,QAAS+X,gBAExC,2C,mECnBA,IAAI1Z,gBAAmBC,MAAQA,KAAKD,kBAAqBE,OAAOC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,SAC7ElI,IAAPkI,KAAkBA,GAAKD,GAC3BJ,OAAOM,eAAeJ,EAAGG,GAAI,CAAEE,YAAY,EAAM9J,IAAK,WAAa,OAAO0J,EAAEC,OAC3E,SAAUF,EAAGC,EAAGC,EAAGC,SACTlI,IAAPkI,KAAkBA,GAAKD,GAC3BF,EAAEG,IAAMF,EAAEC,KAEVI,mBAAsBT,MAAQA,KAAKS,qBAAwBR,OAAOC,OAAS,SAAUC,EAAGnM,GACxFiM,OAAOM,eAAeJ,EAAG,UAAW,CAAEK,YAAY,EAAMjL,MAAOvB,KAC9D,SAASmM,EAAGnM,GACbmM,EAAW,QAAInM,IAEf0M,aAAgBV,MAAQA,KAAKU,cAAiB,SAAUC,KACxD,GAAIA,KAAOA,IAAIC,WAAY,OAAOD,IAClC,IAAIE,OAAS,GACb,GAAW,MAAPF,IAAa,IAAK,IAAIN,KAAKM,IAAe,YAANN,GAAmBJ,OAAOa,UAAUC,eAAeC,KAAKL,IAAKN,IAAIN,gBAAgBc,OAAQF,IAAKN,GAEtI,OADAI,mBAAmBI,OAAQF,KACpBE,QAEPgZ,gBAAmB7Z,MAAQA,KAAK6Z,iBAAoB,SAAUlZ,KAC9D,OAAQA,KAAOA,IAAIC,WAAcD,IAAM,CAAE,QAAWA,MAExDV,OAAOM,eAAe7N,QAAS,aAAc,CAAE6C,OAAO,IACtD7C,QAAQonB,aAAU,EAClB,IAAIC,QAAUrZ,aAAa,oBAA3B,aACIsZ,UAAYtZ,aAAa,oBAA7B,aACIuZ,YAAcvZ,aAAa,oBAA/B,aACAhO,QAAQonB,QAAUG,YAClB,IAAIN,UAAYjZ,aAAa,oBAA7B,aACIiB,MAAQjB,aAAa,oBAAzB,aACIwZ,UAAYL,gBAAgB,oBAAhC,aACAnnB,QAAQgP,QAAU,CAAEqY,QAASA,QAASC,UAAWA,UAAWzX,QAAS2X,UAAUxY,QAASiY,UAAWA,UAAWhY,MAAOA,Q,sDC/BrHlP,OAAOC,QAAU,CAAC,UAAY,uC,sDCA9BD,OAAOC,QAAU,CAAC,QAAU,oC,mECA5B,IAAIqS,SAAY/E,MAAQA,KAAK+E,UAAa,WAStC,OARAA,SAAW9E,OAAO+E,QAAU,SAASpL,GACjC,IAAK,IAAIqL,EAAGC,EAAI,EAAGC,EAAIzF,UAAUlK,OAAQ0P,EAAIC,EAAGD,IAE5C,IAAK,IAAIE,KADTH,EAAIvF,UAAUwF,GACOjF,OAAOa,UAAUC,eAAeC,KAAKiE,EAAGG,KACzDxL,EAAEwL,GAAKH,EAAEG,IAEjB,OAAOxL,IAEKyL,MAAMrF,KAAMN,YAE5Bma,gBAAmB7Z,MAAQA,KAAK6Z,iBAAoB,SAAUlZ,KAC9D,OAAQA,KAAOA,IAAIC,WAAcD,IAAM,CAAE,QAAWA,MAExDV,OAAOM,eAAe7N,QAAS,aAAc,CAAE6C,OAAO,IACtD7C,QAAQynB,oBAAsBznB,QAAQ0nB,QAAU1nB,QAAQ2nB,uBAAyB3nB,QAAQ4nB,yBAA2B5nB,QAAQ6nB,wCAA0C7nB,QAAQ8nB,WAAa9nB,QAAQ+nB,yBAA2B/nB,QAAQgoB,kBAAoBhoB,QAAQioB,iBAAmBjoB,QAAQkoB,gBAAkBloB,QAAQmoB,cAAgBnoB,QAAQoc,eAAiBpc,QAAQgB,mBAAgB,EACxX,IAAI2N,OAASwY,gBAAgB,oBAA7B,aACIzY,SAAW,oBAAf,YACI0Z,YAAc,oBAAlB,YACIvZ,YAAc,oBAAlB,YACIE,GAAKJ,OAAOK,QAAQC,MAAO1O,kBAAoBwO,GAAGxO,kBAAmBuf,gBAAkB/Q,GAAG+Q,gBAAiB/e,oBAAsBgO,GAAGhO,oBAAqBsnB,WAAatZ,GAAGsZ,WAAYC,2BAA6BvZ,GAAGuZ,2BACrNC,oBAAsB5Z,OAAOK,QAAQwZ,SAASnB,QAAQkB,oBACtDE,cAAgBF,oBAAoB1Z,YAAY6Z,wBAChDC,uBAAyBJ,oBAAoB1Z,YAAY+Z,wBAK7D5oB,QAAQgB,cAJY,SAAUC,SAE1B,OADA6e,gBAAgBzN,SAASA,SAAS,GAAI9R,qBAAsBU,UACrD0nB,0BAcX3oB,QAAQoc,eAXa,SAAUyM,gBAC3B,IAAIjU,UAAYiU,gBAAkBxW,SAASA,SAAS,GAAItR,uBAAwB,CAAE2H,cAAe4f,+BACjG,MAAO,CACHtY,KAAMnB,YAAYoB,wBAClBM,QAAS,CACLuE,OAAQ,iBACRF,UAAWA,WAEf9M,KAAM,CAAEghB,WAAW,KAK3B9oB,QAAQmoB,cADY,WAAc,OAAOE,WAAWxZ,YAAY+B,iBAGhE5Q,QAAQkoB,gBADc,WAAc,OAAOG,WAAWxZ,YAAYgC,mBAGlE7Q,QAAQioB,iBADe,WAAc,OAAOI,WAAWxZ,YAAYiC,oBASnE9Q,QAAQgoB,kBAPgB,SAAUxY,QAAU,OAAO,SAAU4F,SAAU2T,UACnE,IAAIC,kBAAoBZ,YAAYa,4BAA4BF,YAC5DG,eAAiBxa,SAASya,UAAU3Z,QAAUA,QAAUwZ,kBACxDE,iBAAmBF,mBAEvB5T,SAAS8T,eAAiBlpB,QAAQkoB,kBAAoBloB,QAAQioB,sBAIlEjoB,QAAQ+nB,yBADuB,SAAU9e,SAAW,OAAOof,WAAWxZ,YAAYkC,yBAA0B9H,UAK5GjJ,QAAQ8nB,WAHS,SAAU7e,SACvB,OAAOof,WAAWxZ,YAAYoC,YAAahI,UAM/CjJ,QAAQ6nB,wCAHsC,WAC1C,OAAOQ,WAAWxZ,YAAYyC,8CAMlCtR,QAAQ4nB,yBAHuB,WAC3B,OAAOS,WAAWxZ,YAAY2C,mCAMlCxR,QAAQ2nB,uBAHqB,WACzB,OAAOU,WAAWxZ,YAAY4C,wCAGlCzR,QAAQ0nB,QAAU,CACd1mB,cAAehB,QAAQgB,cACvBob,eAAgBpc,QAAQoc,eACxB+L,cAAenoB,QAAQmoB,cACvBJ,yBAA0B/nB,QAAQ+nB,yBAClCD,WAAY9nB,QAAQ8nB,WACpBF,yBAA0B5nB,QAAQ4nB,yBAClCD,uBAAwB3nB,QAAQ2nB,uBAChCE,wCAAyC7nB,QAAQ6nB,wCACjDI,iBAAkBjoB,QAAQioB,iBAC1BC,gBAAiBloB,QAAQkoB,iBAM7BloB,QAAQynB,oBAJkB,SAAUxmB,SAEhC,OADA6e,gBAAgBzN,SAASA,SAAS,GAAI9R,qBAAsBU,UACrDwnB,kB,sDCvFX1oB,OAAOC,QAAU,CAAC,IAAM,mCAAmC,QAAU,uCAAuC,MAAQ,qCAAqC,QAAU,yC,g1DCsIvJopB,mBAKAC,Y,qiBApIKjpB,UACb,yDAAI,UADkB,UAGbkpB,oBAAgD,CACzD,mDAAIC,mBAAmBC,SACvB,mDAAID,mBAAmBE,MACvB,mDAAIF,mBAAmBG,UACvB,mDAAIH,mBAAmBI,WACvB,mDAAIJ,mBAAmBK,MAGdC,aAAe,EAEfC,kBAAkC,CAC3CC,SAAUF,aACVG,eAAgBH,aAChBI,KAAM,UAGGC,mBAAqB,CAC9BC,IAAK,KACLC,GAAI,MAGKC,2BAA6B,IAE7BC,oBAAsB,mDAAIf,mBAAmBG,UAE7Ca,gCAAwD,CACjEC,aAAc,SACdT,SAAU,EACVE,KAAM,OAGGQ,yBAA2B,QAElCC,kBAAoB,CACtB,2DAAOC,uBACP,2DAAOC,eACP,2DAAOC,SACP,2DAAOC,WACP,2DAAOC,OACP,2DAAOC,WACP,2DAAOC,aACP,2DAAOC,0BACP,2DAAOC,mBACP,2DAAOC,aACP,2DAAOC,iBACP,2DAAOC,kBAGLC,qBAAuB,CACzB,2DAAOZ,uBACP,2DAAOC,eACP,2DAAOQ,aACP,2DAAOF,0BACP,2DAAOI,kBAGLE,sBAAwB,CAC1B,2DAAOX,SACP,2DAAOC,WACP,2DAAOC,OACP,2DAAOC,WACP,2DAAOS,WACP,2DAAOR,aACP,2DAAOS,UAGEC,oCAAiC,OAIzCvrB,UAAUgK,KAAMsgB,kBACjB,GAACtqB,UAAUwrB,QAASL,qBACpB,GAACnrB,UAAU8iB,SAAUsI,sBACxB,IAEYK,uBAAyB,CAAC,SAAU,SAAU,SAAU,UAExDC,cAAgB,mDAAK,yEAAqBxoB,QACnD,SAAAyoB,MAAQ,OAACF,uBAAuBroB,SAAxB,SAGCwoB,IAAM,MAENC,kCAA+B,OACvC,2DAAOpB,YAAQ,OACX,6CAAQqB,IAAK,CAAC,KAAM,SAAU,KAAM,KAAM,KAAM,MACjD,GAAC,6CAAQC,KAAM,CAAC,SAAU,KAAM,KAAM,KAAM,KAAM,KAAM,MACxD,GAAC,6CAAQC,KAAM,CAAC,SAAU,KAAM,KAAM,KAAM,KAAM,KAAM,MACxD,GAAC,6CAAQC,IAAK,CAAC,KAAM,SAAU,KAAM,KAAM,KAAM,KAAM,MAC1D,IACD,GAAC,2DAAOvB,cAAU,OACb,6CAAQoB,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MACzD,GAAC,6CAAQC,KAAM,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAChE,GAAC,6CAAQC,KAAM,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAChE,GAAC,6CAAQC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAClE,IACD,GAAC,2DAAOrB,cAAU,OACb,6CAAQkB,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MACzD,GAAC,6CAAQC,KAAM,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAC1D,GAAC,6CAAQC,KAAM,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAC1D,GAAC,6CAAQC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAC5D,IACD,GAAC,2DAAOZ,cAAU,OACb,6CAAQS,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MACzD,GAAC,6CAAQC,KAAM,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MAC9C,GAAC,6CAAQC,KAAM,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MAC9C,GAAC,6CAAQC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAClE,IACD,GAAC,2DAAOpB,gBAAY,OACf,6CAAQiB,IAAK,CAAC,KAAM,MACrB,GAAC,6CAAQC,KAAM,CAAC,KAAM,MACtB,GAAC,6CAAQC,KAAM,CAAC,KAAM,MACtB,GAAC,6CAAQC,IAAK,CAAC,KAAM,MACxB,IACD,GAAC,2DAAOX,YAAQ,OACX,6CAAQQ,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MACzD,GAAC,6CAAQC,KAAM,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAChE,GAAC,6CAAQC,KAAM,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAChE,GAAC,6CAAQC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAClE,IACJ,IAEYC,oBAAsB,CAAC,WAEpC,SAAYlD,oBACR,uCACA,2CAFJ,CAAYA,wCAAkB,KAK9B,SAAYC,aACR,wBACA,8CACA,kEAHJ,CAAYA,0BAAW,M,mEC3IvB,IAAIlC,gBAAmB7Z,MAAQA,KAAK6Z,iBAAoB,SAAUlZ,KAC9D,OAAQA,KAAOA,IAAIC,WAAcD,IAAM,CAAE,QAAWA,MAExDV,OAAOM,eAAe7N,QAAS,aAAc,CAAE6C,OAAO,IACtD7C,QAAQusB,8BAAgCvsB,QAAQwsB,oCAAsCxsB,QAAQysB,uBAAyBzsB,QAAQipB,4BAA8BjpB,QAAQqc,sBAAwBrc,QAAQ0sB,6BAA+B1sB,QAAQ2sB,yBAA2B3sB,QAAQ4sB,oBAAsB5sB,QAAQ6sB,kBAAoB7sB,QAAQ8sB,mBAAgB,EACzV,IAAIC,WAAa,oBAAjB,YACIpe,OAASwY,gBAAgB,oBAA7B,aACI6F,aAAe,CACfC,SAAU,SACV,gBAAiB,cACjB,uBAAwB,eAExBC,eAAiBve,OAAOK,QAAQwZ,SAASlB,UAAU4F,eAEvDltB,QAAQ8sB,cADY,SAAUhd,OAAS,OAAOA,MAAM7O,SAEpDjB,QAAQ6sB,kBAAoBE,WAAWI,eAAentB,QAAQ8sB,eAAe,SAAU7rB,SAAW,OAAOA,QAAQ0O,eACjH3P,QAAQ4sB,oBAAsBG,WAAWI,eAAentB,QAAQ6sB,mBAAmB,SAAUld,aAAe,OAAOA,YAAYF,iBAC/HzP,QAAQ2sB,yBAA2BI,WAAWI,eAAentB,QAAQ6sB,mBAAmB,SAAUld,aAAe,OAAOA,YAAYD,sBACpI1P,QAAQ0sB,6BAA+BK,WAAWI,eAAentB,QAAQ6sB,mBAAmB,SAAUld,aAAe,OAAOA,YAAYP,eACxIpP,QAAQqc,sBAAwB0Q,WAAWI,eAAentB,QAAQ6sB,mBAAmB,SAAUld,aAAe,OAAOA,YAAYtI,SACjIrH,QAAQipB,4BAA8B8D,WAAWI,eAAentB,QAAQ6sB,mBAAmB,SAAUld,aAAe,OAAOA,YAAYH,UACvIxP,QAAQysB,uBAAyBM,WAAWI,eAAentB,QAAQ8sB,eAAe,SAAU7rB,SAAW,OAAOA,QAAQuO,UAKtHxP,QAAQwsB,oCAJkC,SAAUY,EAAG1G,OAAS,MAAO,CACnE2G,MAAO3G,MAAMzhB,gBAAgBooB,MAC7BxqB,MAAO6jB,MAAMzhB,gBAAgBpC,QAGjC7C,QAAQusB,8BAAgCQ,WAAWI,eAAentB,QAAQwsB,oCAAqCU,gBAAgB,SAAUne,GAAIyZ,UACzI,IAAI6E,MAAQte,GAAGse,MAAOxqB,MAAQkM,GAAGlM,MACjC,OAAO2lB,SAASxkB,IAAIgpB,aAAaK,QAAQrpB,IAAInB,W,wDC7BjD9C,OAAOC,QAAU,CAAC,KAAO,kC,sDCAzBD,OAAOC,QAAU,CAAC,KAAO,6C,sDCAzBD,OAAOC,QAAU,CAAC,UAAY,6CAA6C,aAAa,8CAA8C,KAAO,0C,sDCD7I,IAAI+R,aAAe,oBAAnB,YACIub,QAAU,oBAAd,YA+BAvtB,OAAOC,QANP,SAASutB,MAAMpgB,MAAOhN,UACpB,OAAQgN,OAASA,MAAMrK,OACnBwqB,QAAQngB,MAAO4E,aAAa5R,SAAU,IACtC,I,sDC5BNJ,OAAOC,QAAU,CAAC,OAAS,uCAAuC,YAAY,0CAA0C,aAAa,2CAA2C,QAAU,wCAAwC,MAAQ,sCAAsC,cAAc,4CAA4C,KAAO,qCAAqC,YAAY,0CAA0C,KAAO,qCAAqC,QAAU,wCAAwC,KAAO,uC,sDCAjhBD,OAAOC,QAAU,CAAC,UAAY,+CAA+C,KAAO,0CAA0C,QAAU,6CAA6C,uBAAuB,4D,sDCD5M,IAAIwtB,SAAW,oBAAf,YACIzb,aAAe,oBAAnB,YACI0b,WAAa,oBAAjB,YACIC,aAAe,oBAAnB,YAiCA3tB,OAAOC,QAbP,SAAS2tB,OAAOC,OAAQC,WACtB,GAAc,MAAVD,OACF,MAAO,GAET,IAAIlH,MAAQ8G,SAASE,aAAaE,SAAS,SAASE,MAClD,MAAO,CAACA,SAGV,OADAD,UAAY9b,aAAa8b,WAClBJ,WAAWG,OAAQlH,OAAO,SAAS7jB,MAAOkrB,MAC/C,OAAOF,UAAUhrB,MAAOkrB,KAAK,S,sDC/BjChuB,OAAOC,QAAU,CAAC,UAAY,0C,sDCA9BD,OAAOC,QAAU,CAAC,UAAY,uCAAuC,KAAO,oC,mECA5EuN,OAAOM,eAAe7N,QAAS,aAAc,CAAE6C,OAAO,IACtD7C,QAAQguB,oBAAsBhuB,QAAQiuB,uBAAyBjuB,QAAQ0oB,uBAAyB1oB,QAAQwR,iCAAmCxR,QAAQ+Q,yBAA2B/Q,QAAQsR,4CAA8CtR,QAAQiR,YAAcjR,QAAQyR,sCAAwCzR,QAAQ8Q,kBAAoB9Q,QAAQ6Q,iBAAmB7Q,QAAQ4Q,eAAiB5Q,QAAQyQ,qBAAuBzQ,QAAQqQ,wBAA0BrQ,QAAQiQ,wBAA0BjQ,QAAQkuB,oBAAsBluB,QAAQmuB,uBAAyBnuB,QAAQ4oB,uBAAyB5oB,QAAQouB,UAAO,EAC5kBpuB,QAAQouB,KAAO,UACfpuB,QAAQ4oB,uBAAyB5oB,QAAQouB,KAAO,0BAChDpuB,QAAQmuB,uBAAyBnuB,QAAQouB,KAAO,0BAChDpuB,QAAQkuB,oBAAsBluB,QAAQouB,KAAO,uBAC7CpuB,QAAQiQ,wBAA0BjQ,QAAQouB,KAAO,2BACjDpuB,QAAQqQ,wBAA0BrQ,QAAQouB,KAAO,2BACjDpuB,QAAQyQ,qBAAuBzQ,QAAQouB,KAAO,wBAC9CpuB,QAAQ4Q,eAAiB5Q,QAAQouB,KAAO,kBACxCpuB,QAAQ6Q,iBAAmB7Q,QAAQouB,KAAO,oBAC1CpuB,QAAQ8Q,kBAAoB9Q,QAAQouB,KAAO,qBAC3CpuB,QAAQyR,sCAAwCzR,QAAQouB,KAAO,yCAC/DpuB,QAAQiR,YAAcjR,QAAQouB,KAAO,eACrCpuB,QAAQsR,4CAA8CtR,QAAQouB,KAAO,+CACrEpuB,QAAQ+Q,yBAA2B/Q,QAAQouB,KAAO,4BAClDpuB,QAAQwR,iCAAmCxR,QAAQouB,KAAO,oCAC1DpuB,QAAQ0oB,uBAAyB,gCACjC1oB,QAAQiuB,uBAAyB,gCACjCjuB,QAAQguB,oBAAsB,8B,wDCnB9BjuB,OAAOC,QAAU,CAAC,UAAY,sCAAsC,aAAa,yC,sDCAjFD,OAAOC,QAAU,CAAC,UAAY","file":"filters-module-8c07a6ff.js","sourcesContent":["var baseFlatten = require('./_baseFlatten'),\n map = require('./map');\n\n/**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\nfunction flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n}\n\nmodule.exports = flatMap;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"tournamentItem__container___h2WLn\",\"title\":\"tournamentItem__title___vevMH\",\"counter\":\"tournamentItem__counter___2_Beu\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"categorizerHeadingFavorite__container___9ZhTs\"};","import type { IntlFormatters } from 'react-intl';\nimport {\n ORGANIZATIONS_BY_SPORT,\n WORLD_REGIONS_CODES,\n} from '@gin-betting/constants';\nimport core, { API, App, GQL, View } from '@gin-betting/core';\nimport { Filters } from '@gin-betting/filters';\nimport { alpha3ToAlpha2, getName } from 'i18n-iso-countries';\nimport { Map } from 'immutable';\nimport {\n concat,\n differenceBy,\n findIndex,\n flatMap,\n forEach,\n get,\n groupBy,\n includes,\n intersection,\n map,\n omit,\n partition,\n pickBy,\n sortBy,\n sumBy,\n without,\n} from 'lodash';\n\nimport {\n CategorizerTournamentMetaKey,\n LIVE_SPORTEVENT_STATUSES,\n OUTRIGHTS_ONLY_SPORTS,\n Product,\n} from 'app-constants';\nimport globalMessages from 'messages';\nimport features from 'services/feature-manager';\nimport localeManager from 'services/locale-manager';\nimport UserDevice from 'services/user-device';\nimport {\n checkIsDynamicCategorizer,\n checkKeyInObj,\n getByKey,\n getProductName,\n getRouteBySportType,\n getVariablesForLiveSportEvent,\n isFavoritePage,\n} from 'utils';\nimport { CategorizerWidgetOptions } from '../../types';\nimport {\n ACTIVE_COUNTRY_KEY_DIVIDER,\n CATEGORIZER_STATIC_SPORTS_BY_TYPE,\n customFlagsMapping,\n EXCLUDED_WORLD_REGIONS,\n ORDER_CATEGORIZER_ITEMS_MAPPING,\n UNGROUPED_CATEGORIES_KEY,\n WORLD_REGIONS,\n} from './constants';\nimport {\n CategorizerItemByOrganizations,\n LocationInfo,\n TournamentInfo,\n} from './types';\n\nconst {\n constants: { SportType },\n services: { stringify, getHistory },\n utils: {\n getAppliedFilters,\n checkOnRoute,\n isOneOfPages,\n isInnerPage,\n getSportsBySportType,\n getBettingOptions,\n getSportTypeBySportTags,\n getSportTypeFromLocation,\n getDefaultVariables,\n },\n} = core;\n\nexport function filterMatches(\n filters: Partial,\n pathname?: string\n): void {\n const searchObj = { ...getAppliedFilters(), ...filters };\n\n const history = getHistory();\n const validSearchObj: typeof searchObj = pickBy(searchObj, v => !!v);\n\n const search = stringify(validSearchObj);\n\n history.replace({\n ...history.location,\n hash: window.location.hash,\n search,\n ...(pathname && { pathname }),\n });\n}\n\nexport function canFilterByTournamentOnMobile(): boolean {\n return isOneOfPages(\n [\n App.Routes.UPCOMING_LIST,\n App.Routes.RESULTS_LIST,\n App.Routes.ESPORT,\n App.Routes.CLASSIC,\n ],\n { exact: true }\n );\n}\n\nexport function canFilterByTimePeriods(): boolean {\n return checkOnRoute(App.Routes.RESULTS_LIST);\n}\n\nexport function canFilterByLivePeriods(): boolean {\n return checkOnRoute(App.Routes.LIVE_LIST);\n}\n\nexport const getFormattedCountryCode = (countryCode: string): string | null =>\n getByKey(customFlagsMapping, countryCode) ||\n alpha3ToAlpha2(countryCode) ||\n null;\n\nexport function getTournamentCountryCode(\n { meta }: API.CategorizerItem,\n isAlpha3Format: boolean = false\n): string | null {\n const metaCountryCode = meta.find(\n ({ name }) => name === CategorizerTournamentMetaKey.CountryCode\n )?.value;\n\n if (!metaCountryCode) return null;\n\n if (metaCountryCode === 'EU') {\n return 'WW-EUR';\n }\n\n if (isAlpha3Format) {\n return getByKey(customFlagsMapping, metaCountryCode) || metaCountryCode;\n }\n\n if (metaCountryCode.length !== 3) {\n return metaCountryCode;\n }\n\n return getFormattedCountryCode(metaCountryCode);\n}\n\nexport function getSearchString(changedFilters: Partial): string {\n const currentFilters = getAppliedFilters();\n const nextFilters = {\n ...currentFilters,\n ...changedFilters,\n };\n\n return stringify(nextFilters);\n}\n\nexport function getSportsWithCheckedTournaments(\n sports: API.CategorizerItem[],\n tournamentIds: string[]\n): string[] {\n if (!tournamentIds.length) return [];\n\n return sports\n .filter(({ children }) =>\n children.some(({ value }) => tournamentIds.includes(value))\n )\n .map(item => item.value);\n}\n\nexport function getSortedSportsBySportType({\n sportType,\n sports,\n categorizerItems,\n sportsOrder,\n}: {\n sportType: App.SportType | null;\n sports: Map;\n categorizerItems: API.CategorizerItem[];\n sportsOrder: CategorizerWidgetOptions['sportsOrder'];\n}): API.CategorizerItem[] {\n if (!sportType) return [];\n\n const sportsByActiveTab = getSportsBySportType(sports, sportType);\n\n const sportsToSort = categorizerItems.filter(item =>\n sportsByActiveTab.get(item.value)\n );\n\n const isSortingApi = features.isActive(features.list.CategorizerSortingApi);\n\n if (isSortingApi) return sportsToSort;\n\n const matchOrder = {\n ...CATEGORIZER_STATIC_SPORTS_BY_TYPE,\n ...sportsOrder,\n }[sportType];\n\n const [staticSports, rest] = partition(\n sportsToSort,\n getCategorizerItemsForStaticSports(matchOrder)\n );\n const sortedStatic = staticSports.sort(\n (a, b) => matchOrder.indexOf(a.value) - matchOrder.indexOf(b.value)\n );\n\n const sortedRest = rest.sort(\n (a: API.CategorizerItem, b: API.CategorizerItem) =>\n a.name.localeCompare(b.name)\n );\n\n return sortedStatic.concat(sortedRest);\n}\n\nexport function getCategorizerItemsForStaticSports(\n staticSports: string[] | readonly string[]\n): (categorizerItem: API.CategorizerItem) => boolean {\n return (categorizerItem: API.CategorizerItem) =>\n staticSports.includes(categorizerItem.value);\n}\n\nexport const getI18nCounties = (): string => {\n const { locale } = getBettingOptions();\n\n return localeManager.convert(locale, { from: 'cms', to: 'i18nCountries' });\n};\n\nexport const getNameByCountryCode = (\n formatMessage: IntlFormatters['formatMessage'],\n countryCode?: string\n): string => {\n if (!countryCode) return '';\n\n const region = get(globalMessages, countryCode, undefined);\n\n if (region && countryCode !== 'US') {\n return formatMessage(region);\n }\n\n const countryName: string | undefined = getName(\n countryCode,\n getI18nCounties()\n );\n\n return countryName || countryCode;\n};\n\nconst getTournamentsInfo = (\n itemsByCountryCode: { [key in string]: API.CategorizerItem[] },\n formatMessage: IntlFormatters['formatMessage']\n): TournamentInfo[] =>\n map(itemsByCountryCode, (items, countryCode) => ({\n countryName: getNameByCountryCode(formatMessage, countryCode),\n countryCode,\n items,\n }));\n\nconst getRegionOrderRules = (\n sportId: string\n): { topRegionsOrder: string[]; topCountriesOrder: string[] } => {\n if (!checkKeyInObj(ORDER_CATEGORIZER_ITEMS_MAPPING, sportId)) {\n return { topRegionsOrder: [], topCountriesOrder: [] };\n }\n\n const productName = getProductName();\n\n const mappingByProduct = ORDER_CATEGORIZER_ITEMS_MAPPING[sportId];\n const topCountriesOrder =\n productName === Product.unknown ? [] : mappingByProduct[productName];\n\n return {\n topRegionsOrder: [\n WORLD_REGIONS_CODES['WW-EUR'],\n WORLD_REGIONS_CODES.WW,\n ],\n topCountriesOrder,\n };\n};\n\nfunction sortByCountryCode(\n list: T[],\n order: string[]\n) {\n return sortBy(list, ({ countryCode }) =>\n findIndex(order, rule => rule === countryCode)\n );\n}\n\nfunction sortByCountryName(list: T[]): T[] {\n return [...list].sort((a, b) =>\n a.countryName.localeCompare(b.countryName, getI18nCounties())\n );\n}\n\nconst getSortedTournamentsInfo = (\n tournaments: TournamentInfo[],\n sportId: string\n): TournamentInfo[] => {\n const { topRegionsOrder, topCountriesOrder } = getRegionOrderRules(sportId);\n\n const topRegions: TournamentInfo[] = [];\n const otherRegions: TournamentInfo[] = [];\n const excludedRegions: TournamentInfo[] = [];\n const topCountries: TournamentInfo[] = [];\n const otherCountries: TournamentInfo[] = [];\n\n forEach(tournaments, tournament => {\n const { countryCode } = tournament;\n\n switch (true) {\n case includes(topRegionsOrder, countryCode): {\n topRegions.push(tournament);\n break;\n }\n\n case includes(WORLD_REGIONS, countryCode): {\n otherRegions.push(tournament);\n break;\n }\n\n case includes(topCountriesOrder, countryCode): {\n topCountries.push(tournament);\n break;\n }\n\n default: {\n otherCountries.push(tournament);\n }\n }\n });\n\n return concat(\n sortByCountryCode(topRegions, topRegionsOrder),\n sortByCountryName(otherRegions),\n sortByCountryCode(excludedRegions, EXCLUDED_WORLD_REGIONS),\n sortByCountryCode(topCountries, topCountriesOrder),\n sortByCountryName(otherCountries)\n );\n};\n\nexport const getItemsByLocation = ({\n tournaments,\n sportId,\n formatMessage,\n}: {\n tournaments: API.CategorizerItem[];\n sportId: string;\n formatMessage: IntlFormatters['formatMessage'];\n}): LocationInfo => {\n const groupedTournaments = groupBy(tournaments, t =>\n getTournamentCountryCode(t)\n );\n\n const tournamentsInfo = getTournamentsInfo(\n omit(groupedTournaments, 'null'),\n formatMessage\n );\n\n return {\n tournamentsWithLocation: getSortedTournamentsInfo(\n tournamentsInfo,\n sportId\n ),\n tournamentsWithoutLocation: groupedTournaments.null || [],\n };\n};\n\nexport const groupCategorizerItemsByOrganizations = (\n categorizerItems: API.CategorizerItem[],\n sportId: string\n): CategorizerItemByOrganizations[] => {\n const organizations = ORGANIZATIONS_BY_SPORT[sportId] || [];\n const logoMaps: { [name: string]: string | null } = {};\n\n const groupedItems = groupBy(categorizerItems, ({ meta }) => {\n const organizationLocalized = meta.find(\n ({ name }) =>\n name === CategorizerTournamentMetaKey.OrganizationLocalized\n );\n\n const organizationName =\n organizationLocalized?.value || UNGROUPED_CATEGORIES_KEY;\n\n if (!logoMaps[organizationName]) {\n const organizationLogo = meta.find(\n ({ name }) =>\n name === CategorizerTournamentMetaKey.OrganizationLogo\n );\n\n logoMaps[organizationName] = organizationLogo?.value || null;\n }\n\n return organizationName;\n });\n\n const categorizerItemByOrganizations = map(groupedItems, (items, name) => {\n return {\n name,\n items,\n logo: logoMaps[name] || null,\n count: sumBy(items, ({ count }) => count),\n };\n });\n\n const lastIdx = organizations.length;\n\n return sortBy(categorizerItemByOrganizations, ({ name }) => {\n const idx = organizations.indexOf(name);\n\n if (name === UNGROUPED_CATEGORIES_KEY) return lastIdx + 1;\n\n return idx === -1 ? lastIdx : idx;\n });\n};\n\nexport const checkIsShowLiveLabel = (): boolean => {\n const { matchStatuses } = getCategorizerVars();\n\n if (!matchStatuses) {\n return !(\n isOneOfPages([App.Routes.OUTRIGHTS_LIST, App.Routes.OUTRIGHT]) ||\n isOneOfPages([App.Routes.ESPORT, App.Routes.CLASSIC], {\n exact: true,\n })\n );\n }\n\n return intersection(matchStatuses, LIVE_SPORTEVENT_STATUSES).length > 0;\n};\n\nexport const getSummaryPath = (\n sportId: string\n): { search: string; pathname: App.Routes } => {\n return {\n search: stringify({\n sportIds: [sportId],\n }),\n pathname: App.Routes.OUTRIGHTS_LIST,\n };\n};\n\nexport const getNextOpenedSportIds = (options: {\n actionType: Filters.CheckGameType;\n openedSportIds: string[];\n selectedSportIds: string[];\n triggeredSportId: string;\n}): string[] => {\n const { actionType, openedSportIds, triggeredSportId } = options;\n\n if (actionType === Filters.CheckGameType.Close) {\n return without(openedSportIds, triggeredSportId);\n }\n\n if (actionType === Filters.CheckGameType.Open) {\n const { selectedSportIds } = options;\n\n return intersection(openedSportIds, selectedSportIds).concat(\n triggeredSportId\n );\n }\n\n return [];\n};\n\nexport const isFreeBetVisibleInCategorizer = (pathname: string): boolean => {\n const sportTypeRoutes = [App.Routes.CLASSIC, App.Routes.ESPORT];\n const timeTypeRoutes = [App.Routes.LIVE_LIST, App.Routes.PREMATCH];\n\n const combinedRoutes = flatMap(sportTypeRoutes, sportTypeRoute =>\n timeTypeRoutes.map(timeTypeRout => `${sportTypeRoute}${timeTypeRout}`)\n );\n\n return concat(\n [App.Routes.UPCOMING_LIST],\n sportTypeRoutes,\n timeTypeRoutes,\n combinedRoutes\n ).includes(pathname);\n};\n\nexport const getNextPathname = (requestedSportType: App.SportType): string => {\n const history = getHistory();\n\n const slicedPathname = history.location.pathname\n .replace(App.Routes.ESPORT, '')\n .replace(App.Routes.CLASSIC, '');\n\n const parentPath = getRouteBySportType(requestedSportType);\n\n return `${parentPath}${slicedPathname}` || App.Routes.UPCOMING_LIST;\n};\n\nexport const getRequestedSportType = (\n sportIds: string[],\n sports: Map\n): App.SportType | null => {\n const sportType = getSportTypeFromLocation();\n\n if (\n sportType === SportType.Mix ||\n isOneOfPages([App.Routes.OUTRIGHTS_LIST, App.Routes.OUTRIGHT]) ||\n isFavoritePage() ||\n isInnerPage()\n ) {\n return null;\n }\n\n const nextSportType = getSportTypeBySelectedSportsIds(sports, sportIds);\n\n return nextSportType && sportType !== nextSportType ? nextSportType : null;\n};\n\nconst getSportTypeBySelectedSportsIds = (\n sports: Map,\n selectedSportIds: string[]\n): App.SportType | null => {\n if (!selectedSportIds.length) return null;\n\n return getSportTypeBySportTags(sports, selectedSportIds);\n};\n\nexport const getSelectedCountryKeyInfo = (\n activeCountryKey: string\n): {\n selectedCountryKey: string;\n isSelectedCountryCodeWithAll: boolean;\n} => {\n const [selectedCountryKey, allPrefix] = activeCountryKey.split(\n ACTIVE_COUNTRY_KEY_DIVIDER\n );\n\n return {\n selectedCountryKey: selectedCountryKey || '',\n isSelectedCountryCodeWithAll: Boolean(allPrefix),\n };\n};\n\nexport function sortByTopTournaments(\n categorizerItems: API.CategorizerItem[]\n): API.CategorizerItem[] {\n return sortBy(categorizerItems, item =>\n item.meta.find(\n el =>\n el.name === CategorizerTournamentMetaKey.IsTop &&\n el.value === 'true'\n )\n );\n}\n\nexport function getCategorizerVars(): GQL.GetCategorizerQueryVariables {\n const { selectedSportIds, sportIds: incomeSportIds } = getBettingOptions();\n const sportIds = UserDevice.getInstance()?.isDeviceMobile()\n ? selectedSportIds\n : incomeSportIds;\n const expand = {\n countLiveEventsBySport: true,\n countPreMatchEventsBySport: true,\n };\n\n if (checkIsDynamicCategorizer()) {\n const {\n marketStatuses,\n matchStatuses,\n ...restVariables\n } = getDefaultVariables();\n\n const {\n marketStatusesForLiveSportEvent,\n dateFrom: defaultDateFrom,\n } = getVariablesForLiveSportEvent(matchStatuses, marketStatuses);\n\n return {\n dateFrom: defaultDateFrom,\n matchStatuses,\n ...restVariables,\n marketStatuses: marketStatusesForLiveSportEvent,\n sportIds,\n expand,\n };\n }\n\n return {\n marketStatuses: [\n GQL.MarketStatus.ACTIVE,\n GQL.MarketStatus.SUSPENDED,\n GQL.MarketStatus.RESULTED,\n GQL.MarketStatus.CANCELLED,\n GQL.MarketStatus.DEACTIVATED,\n ],\n matchStatuses: [\n GQL.SportEventStatus.NOT_STARTED,\n GQL.SportEventStatus.SUSPENDED,\n GQL.SportEventStatus.LIVE,\n ],\n sportEventTypes: [GQL.SportEventType.MATCH],\n sportIds,\n expand,\n };\n}\n\nexport function hasAnyMetaEventsInCategorizer(\n meta: API.Pair[],\n metaName: CategorizerTournamentMetaKey\n): boolean {\n return meta.some(el => el.name === metaName && +el.value > 0);\n}\n\nexport const getSortedCategorizerItems = ({\n sportType,\n sports,\n sportsOrder,\n categorizerItems,\n outrightCategorizerItems,\n}: {\n sportType: App.SportType | null;\n sports: Map;\n sportsOrder: Partial> | undefined;\n categorizerItems: API.CategorizerItem[];\n outrightCategorizerItems: API.CategorizerItem[];\n}): API.CategorizerItem[] => {\n const outrightItems = outrightCategorizerItems.filter(({ value }) =>\n includes(OUTRIGHTS_ONLY_SPORTS, value)\n );\n\n const differenceOutrightCategorizer = differenceBy(\n outrightItems,\n categorizerItems,\n 'value'\n );\n\n const categorizerItemResult = [\n ...categorizerItems,\n ...differenceOutrightCategorizer,\n ];\n\n return getSortedSportsBySportType({\n sportType,\n sports,\n categorizerItems: categorizerItemResult,\n sportsOrder,\n });\n};\n","var arrayPush = require('./_arrayPush'),\n baseFlatten = require('./_baseFlatten'),\n copyArray = require('./_copyArray'),\n isArray = require('./isArray');\n\n/**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\nfunction concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n}\n\nmodule.exports = concat;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FilterStateRecord = exports.CategorizerStateRecord = void 0;\nvar immutable_1 = require(\"immutable\");\nvar lodash_1 = require(\"lodash\");\nvar core_1 = __importStar(require(\"@gin-betting/core\"));\nvar types_1 = require(\"./types\");\nvar constants_1 = require(\"./constants\");\nvar utils_1 = require(\"./utils\");\nvar _a = core_1.default.utils, isInnerPage = _a.isInnerPage, getFiltersFromLocation = _a.getFiltersFromLocation;\nexports.CategorizerStateRecord = immutable_1.Record({\n items: [],\n fetchStatus: core_1.App.FetchStatus.INITIAL,\n isOpen: false,\n openedGameIds: [],\n fixedTournamentIds: [],\n}, 'CategorizerState');\nexports.FilterStateRecord = immutable_1.Record({\n categorizer: new exports.CategorizerStateRecord(),\n isOpen: false,\n}, 'FilterState');\nvar initialState = new exports.FilterStateRecord();\nfunction reducer(state, action) {\n if (state === void 0) { state = initialState; }\n switch (action.type) {\n case constants_1.GET_CATEGORIZER_REQUEST: {\n var nextCategorizer = state.categorizer.set('fetchStatus', core_1.App.FetchStatus.LOADING);\n return state.set('categorizer', nextCategorizer);\n }\n case constants_1.GET_CATEGORIZER_SUCCESS: {\n var data = action.payload.data;\n var nextCategorizer = state.categorizer\n .set('items', data.categorizer)\n .set('fetchStatus', core_1.App.FetchStatus.LOADED);\n return state.set('categorizer', nextCategorizer);\n }\n case constants_1.GET_CATEGORIZER_FAIL: {\n var nextCateogrizer = state.categorizer.set('fetchStatus', core_1.App.FetchStatus.FAILED);\n return state.set('categorizer', nextCateogrizer);\n }\n case constants_1.TOGGLE_FILTERS: {\n return state.set('isOpen', !state.isOpen);\n }\n case constants_1.OPEN_CATEGORIZER: {\n if (state.categorizer.isOpen)\n return state;\n var nextCategorizer = state.categorizer.set('isOpen', true);\n return state.set('categorizer', nextCategorizer);\n }\n case constants_1.CLOSE_CATEGORIZER: {\n if (!state.categorizer.isOpen)\n return state;\n var nextCategorizer = state.categorizer.set('isOpen', false);\n return state.set('categorizer', nextCategorizer);\n }\n case constants_1.CHANGE_FIXED_TOURNAMENTS: {\n var fixedTournamentIds = action.payload.fixedTournamentIds;\n var nextCategorizer = state.categorizer.set('fixedTournamentIds', lodash_1.xor(state.categorizer.fixedTournamentIds, fixedTournamentIds));\n return state.set('categorizer', nextCategorizer);\n }\n case constants_1.SELECT_GAME: {\n var _a = action.payload, gameId = _a.gameId, type = _a.type, nextTournamentIds = _a.nextTournamentIds;\n var nextOpenedGameIds = state.categorizer.openedGameIds;\n if (type === types_1.CheckGameType.Close) {\n nextOpenedGameIds = lodash_1.xor(state.categorizer.openedGameIds, [\n gameId,\n ]);\n }\n else {\n nextOpenedGameIds = utils_1.getOpenedGameIds(state.categorizer.items, lodash_1.xor(state.categorizer.openedGameIds, [gameId]), nextTournamentIds, state.categorizer.fixedTournamentIds);\n }\n var nextCategorizer = state.categorizer.set('openedGameIds', nextOpenedGameIds);\n return state.set('categorizer', nextCategorizer);\n }\n case constants_1.UNSELECT_GAMES_WITHOUT_SELECTED_TOURNAMENTS: {\n var items = state.categorizer.items;\n var _b = getFiltersFromLocation().tournamentIds, tournamentIds = _b === void 0 ? [] : _b;\n var nextOpenedGameIds = utils_1.getOpenedGameIds(items, [], tournamentIds, []);\n var nextCategorizer = state.categorizer.set('openedGameIds', nextOpenedGameIds);\n return state.set('categorizer', nextCategorizer);\n }\n case constants_1.RESET_CATEGORIZER_CONTROL_FIELDS: {\n var nextCategorizer = state.categorizer\n .set('openedGameIds', [])\n .set('fixedTournamentIds', []);\n return state.set('categorizer', nextCategorizer);\n }\n case constants_1.INIT_CATEGORIZER_CONTROLS_BY_LOCATION: {\n var nextOpenedGameIds = state.categorizer.openedGameIds;\n var nextFixedTournamentIds = state.categorizer.fixedTournamentIds;\n if (isInnerPage()) {\n nextOpenedGameIds = [];\n nextFixedTournamentIds = [];\n }\n else {\n var _c = getFiltersFromLocation().tournamentIds, tournamentIds_1 = _c === void 0 ? [] : _c;\n nextOpenedGameIds = utils_1.getOpenedGameIds(state.categorizer.items, [], tournamentIds_1, state.categorizer.fixedTournamentIds);\n nextFixedTournamentIds = state.categorizer.fixedTournamentIds.filter(function (fId) { return tournamentIds_1.includes(fId); });\n }\n var nextCategorizer = state.categorizer\n .set('openedGameIds', nextOpenedGameIds)\n .set('fixedTournamentIds', nextFixedTournamentIds);\n return state.set('categorizer', nextCategorizer);\n }\n default:\n return state;\n }\n}\nexports.default = reducer;\n//# sourceMappingURL=reducer.js.map","var baseDifference = require('./_baseDifference'),\n baseFlatten = require('./_baseFlatten'),\n baseIteratee = require('./_baseIteratee'),\n baseRest = require('./_baseRest'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n last = require('./last');\n\n/**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\nvar differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), baseIteratee(iteratee, 2))\n : [];\n});\n\nmodule.exports = differenceBy;\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.filterMatchesPreview = exports.isVisibleFreeBetInCategorizer = exports.getOpenedGameIds = exports.getCountAppliedFilters = void 0;\nvar lodash_1 = require(\"lodash\");\nvar core_1 = __importStar(require(\"@gin-betting/core\"));\nvar _a = core_1.default.utils, getFiltersFromLocation = _a.getFiltersFromLocation, getDefaultVariables = _a.getDefaultVariables;\nvar getHistory = core_1.default.services.getHistory;\nfunction getCountAppliedFilters(calculationFields) {\n var searchObj = getFiltersFromLocation();\n return lodash_1.reduce(lodash_1.pick(searchObj, calculationFields), function (sum, curr) {\n if (!curr)\n return sum;\n if (lodash_1.isArray(curr))\n return (sum += curr.length);\n return ++sum;\n }, 0);\n}\nexports.getCountAppliedFilters = getCountAppliedFilters;\nfunction getOpenedGameIds(categorizerData, currentOpenedGameIds, selectedTournamentIds, fixedTournamentIds) {\n return lodash_1.reduce(categorizerData, function (acc, currentGame) {\n var currentGameId = currentGame.value;\n var currentTournamentIds = lodash_1.map(currentGame.children, function (child) { return child.value; });\n var isCurrentGameFixed = lodash_1.intersection(fixedTournamentIds, currentTournamentIds).length >\n 0;\n if (isCurrentGameFixed) {\n var nextAcc = __spreadArray([], acc);\n if (currentOpenedGameIds.includes(currentGameId)) {\n nextAcc.push(currentGameId);\n }\n return nextAcc;\n }\n if (lodash_1.intersection(currentTournamentIds, selectedTournamentIds)\n .length > 0) {\n return __spreadArray(__spreadArray([], acc), [currentGameId]);\n }\n return acc;\n }, []);\n}\nexports.getOpenedGameIds = getOpenedGameIds;\nfunction isVisibleFreeBetInCategorizer() {\n return getHistory().location.pathname === core_1.App.Routes.UPCOMING_LIST;\n}\nexports.isVisibleFreeBetInCategorizer = isVisibleFreeBetInCategorizer;\nvar filterMatchesPreview = function (vars) {\n if (vars === void 0) { vars = {}; }\n var apiClient = core_1.default.appServiceLocator.get('apiClient');\n var defaultVariables = getDefaultVariables();\n // eslint-disable-next-line no-unused-vars\n var withMarketsCount = defaultVariables.withMarketsCount, rest = __rest(defaultVariables, [\"withMarketsCount\"]);\n var variables = __assign(__assign({}, rest), vars);\n var method = 'getMatchesPreviewByFilters';\n return apiClient.makeRequest({\n method: method,\n variables: variables,\n });\n};\nexports.filterMatchesPreview = filterMatchesPreview;\n//# sourceMappingURL=utils.js.map","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"tournamentItemWrapper__container___K4s0t\",\"arrow-icon\":\"tournamentItemWrapper__arrow-icon___1AXvu\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"backLink__container___2J6SF\",\"back\":\"backLink__back___3sMf_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"filterByTimePeriod__container___qH3iJ\",\"item\":\"filterByTimePeriod__item___3dl9b\",\"is-active\":\"filterByTimePeriod__is-active___3bQW9\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"title\":\"tournamentsByOrganization__title___2d5cr\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"countryRegionItem__container___2trTm\",\"right\":\"countryRegionItem__right___wmVxa\",\"counter\":\"countryRegionItem__counter___3bR5q\",\"arrow-icon\":\"countryRegionItem__arrow-icon___3WDzS\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"mobileFilters__container___3ZkxJ\",\"filters\":\"mobileFilters__filters___f4wVP\",\"title\":\"mobileFilters__title___EiJ60\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"countryTitle__container___1OLle\"};","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CheckGameType = void 0;\nvar CheckGameType;\n(function (CheckGameType) {\n CheckGameType[\"Open\"] = \"open\";\n CheckGameType[\"Close\"] = \"close\";\n CheckGameType[\"Set\"] = \"set\";\n})(CheckGameType = exports.CheckGameType || (exports.CheckGameType = {}));\n//# sourceMappingURL=types.js.map","import { createContext } from 'react';\nimport { noop } from 'lodash';\n\nimport { OverlayType } from '../../../constants';\n\ninterface IMobileFiltersCtx {\n currentOverlay: OverlayType;\n setOverlay: (nextOverlay: OverlayType) => void;\n}\n\nconst MobileFiltersCtx = createContext({\n currentOverlay: OverlayType.NONE,\n setOverlay: noop,\n});\n\nexport default MobileFiltersCtx;\n","import React, { createElement, memo, useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useLocation } from 'react-router';\nimport { App } from '@gin-betting/core';\n\nimport { useAppliedFilters } from 'hooks';\nimport ui from 'modules/ui';\nimport { ALL, OverlayType } from '../../../constants';\nimport MobileFiltersCtx from './MobileFiltersCtx';\n\nconst {\n actions: { setActiveMobileCountryKey },\n} = ui;\n\nconst MobileFiltersCtxProvider: React.FC = ({ children }) => {\n const dispatch = useDispatch();\n const { pathname } = useLocation();\n const { sportId } = useAppliedFilters();\n const [currentOverlay, setOverlay] = useState(\n OverlayType.NONE\n );\n\n useEffect(() => {\n if (pathname === App.Routes.UPCOMING_LIST) return;\n\n setOverlay(OverlayType.NONE);\n dispatch(setActiveMobileCountryKey(ALL));\n }, [dispatch, pathname]);\n\n useEffect(() => {\n dispatch(setActiveMobileCountryKey(ALL));\n }, [dispatch, sportId]);\n\n return createElement(\n MobileFiltersCtx.Provider,\n {\n value: {\n currentOverlay,\n setOverlay,\n },\n },\n children\n );\n};\n\nexport default memo(MobileFiltersCtxProvider);\n","import React from 'react';\nimport cn from 'classnames';\n\nimport { CheckBox, GameLogo, Icon } from 'components';\nimport { Action, Category } from 'services/analytics';\n\nimport live from 'assets/svg/live.svg';\nimport './CategorizerRowHeader.scss';\n\ninterface Props {\n hasBorder?: boolean;\n label: string;\n gameId?: string;\n countryCode?: string | null;\n isOpened: boolean;\n isSelected: boolean;\n additionalIcon?: JSX.Element | null | boolean;\n onClick: (e: React.SyntheticEvent) => void;\n onSelect: VoidFunction;\n isLive?: boolean;\n}\n\nconst SELECT_SPORT_ANALYTICS = {\n category: Category.FiltersCategorizer,\n action: Action.SelectSport,\n};\n\nconst CategorizerRowHeader: React.FC = ({\n hasBorder = true,\n countryCode,\n label,\n children,\n additionalIcon,\n gameId,\n isSelected,\n isOpened,\n onSelect,\n onClick,\n isLive,\n}) => {\n const handleCheckboxChange = (e: React.SyntheticEvent) => {\n e.stopPropagation();\n\n if (!onSelect) return;\n\n onSelect();\n };\n\n return (\n \n {!countryCode && gameId && (\n
\n
\n \n
\n
\n )}\n\n \n\n {additionalIcon && (\n
\n {additionalIcon}\n
\n )}\n\n \n {children || label}\n \n {isLive && }\n\n {isOpened &&
}\n
\n );\n};\n\nexport default CategorizerRowHeader;\n","/* tslint:disable */\n\nimport { defineMessages } from 'react-intl';\n\nexport default defineMessages({\n summaries: {\n defaultMessage: 'Summaries',\n id: 'component.Categorizer.summaries',\n },\n selectAll: {\n defaultMessage: 'All events',\n id: 'component.CategorizerSubmenuHeader.selectAll',\n },\n});\n","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"summaries_ba4d0\",\n \"use\": \"summaries_ba4d0-usage\",\n \"viewBox\": \"0 0 14 16\",\n \"content\": \"\\n \\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { Link } from 'react-router-dom';\n\nimport { Icon } from 'components';\nimport { getSummaryPath } from '../../../utils';\nimport messages from '../messages';\n\nimport summariesIcon from 'assets/svg/summaries.svg';\nimport './categorizerSportSummaries.scss';\n\ninterface Props {\n sportId: string;\n outrightsCount: number | undefined;\n}\n\nconst CategorizerSportSummaries: React.FC = ({\n sportId,\n outrightsCount,\n}) => {\n if (outrightsCount === undefined || outrightsCount < 1) return null;\n\n return (\n \n
\n\n \n\n \n\n
{outrightsCount}
\n \n );\n};\n\nexport default CategorizerSportSummaries;\n","import React, { useCallback } from 'react';\nimport cn from 'classnames';\n\nimport { countryReg } from 'app-constants';\nimport { CheckBox, FlagIcon } from 'components';\nimport { Action, Category } from 'services/analytics';\n\nimport './categorizerCheckRow.scss';\n\ninterface Props {\n title: string;\n count: number;\n checked: boolean;\n id: string;\n onClick: (tournamentIds: string[]) => void;\n countryCode?: string | null;\n}\n\nconst CategorizerCheckRow: React.FC = ({\n id,\n checked,\n title,\n count,\n countryCode = null,\n onClick,\n}) => {\n const handleClick = useCallback(() => {\n onClick([id]);\n }, [onClick, id]);\n\n return (\n \n \n\n
\n {title.replace(countryReg, '')}\n \n
\n\n
{count}
\n
\n );\n};\n\nexport default React.memo(CategorizerCheckRow);\n","import React from 'react';\nimport { API } from '@gin-betting/core';\n\nimport { getTournamentCountryCode } from '../../../../utils';\nimport CategorizerCheckRow from '../../CategorizerCheckRow';\n\ninterface Props {\n items: API.CategorizerItem[];\n isAllItemsInSportChecked: boolean;\n isTournamentManuallyChecked: boolean;\n selectedTournamentIds: string[];\n hasSiblingSubgroups: boolean;\n onTournamentsChecked: (tournamentIds: string[]) => void;\n}\n\nconst CheckRowList: React.FC = ({\n items,\n selectedTournamentIds,\n isAllItemsInSportChecked,\n hasSiblingSubgroups,\n isTournamentManuallyChecked,\n onTournamentsChecked,\n}) => {\n const hasOnlyOneTournament = !hasSiblingSubgroups && items.length === 1;\n\n const isRowCheckable =\n !isAllItemsInSportChecked ||\n isTournamentManuallyChecked ||\n hasOnlyOneTournament;\n\n return (\n \n {items.map((child: API.CategorizerItem) => {\n const { name, value, count } = child;\n\n const isChecked =\n isRowCheckable && selectedTournamentIds.includes(value);\n\n return (\n \n );\n })}\n \n );\n};\n\nexport default CheckRowList;\n","import { useCallback, useMemo, useState } from 'react';\nimport { API } from '@gin-betting/core';\nimport { difference, without } from 'lodash';\n\nimport { useDidUpdate } from 'hooks';\nimport { CategorizerRowType } from '../../constants';\n\ninterface Input {\n isAllItemsInSportChecked?: boolean;\n isGroupWithOneItem?: boolean;\n items: API.CategorizerItem[];\n selectedTournamentIds: string[];\n topCategorizerItem: API.CategorizerItem;\n handleTournamentIdsChange: (nextTournamentIds: string[]) => void;\n}\n\ninterface Output {\n activeTournamentIds: string[];\n hasAnyCheckedTournament: boolean;\n isAllTournamentsChecked: boolean;\n isSubgroupManuallyChecked: boolean;\n isTournamentManuallyChecked: boolean;\n itemTournamentIds: string[];\n handleItemCheck: (\n checkedTournamentIds: string[],\n groupType: CategorizerRowType\n ) => void;\n}\n\nconst useCategorizerRowChecker = ({\n selectedTournamentIds,\n items,\n topCategorizerItem,\n handleTournamentIdsChange,\n isAllItemsInSportChecked,\n isGroupWithOneItem = false,\n}: Input): Output => {\n const [\n isTournamentManuallyChecked,\n setTournamentManuallyChecked,\n ] = useState(false);\n const [\n isSubgroupManuallyChecked,\n setSubgroupManuallyChecked,\n ] = useState(false);\n\n const itemTournamentIds = useMemo(() => items.map(({ value }) => value), [\n items,\n ]);\n\n const isAllTournamentsChecked = useMemo(\n () => difference(itemTournamentIds, selectedTournamentIds).length === 0,\n [selectedTournamentIds, itemTournamentIds]\n );\n\n const hasAnyCheckedTournament =\n selectedTournamentIds.length > 0 &&\n itemTournamentIds.some(id => selectedTournamentIds.includes(id));\n\n const handleItemCheck = useCallback(\n (\n checkedTournamentIds: string[],\n groupType: CategorizerRowType\n ): void => {\n const allTournamentsInSport = topCategorizerItem.children.map(\n ({ value }) => value\n );\n\n const nextTournamentIds = getNextTournamentIds({\n allTournamentsInSport,\n checkedTournamentIds,\n groupType,\n hasAnyCheckedTournament,\n isAllItemsInSportChecked:\n isAllItemsInSportChecked ?? isAllTournamentsChecked,\n isAllTournamentsChecked,\n isGroupWithOneItem,\n isSubgroupManuallyChecked,\n isTournamentManuallyChecked,\n itemTournamentIds,\n selectedTournamentIds,\n });\n\n if (groupType === CategorizerRowType.Tournament) {\n setTournamentManuallyChecked(true);\n }\n\n if (groupType === CategorizerRowType.Subgroup) {\n setSubgroupManuallyChecked(true);\n }\n\n handleTournamentIdsChange(nextTournamentIds);\n },\n [\n handleTournamentIdsChange,\n hasAnyCheckedTournament,\n isAllItemsInSportChecked,\n isAllTournamentsChecked,\n isGroupWithOneItem,\n isSubgroupManuallyChecked,\n isTournamentManuallyChecked,\n itemTournamentIds,\n selectedTournamentIds,\n topCategorizerItem,\n ]\n );\n\n useDidUpdate(() => {\n if (hasAnyCheckedTournament) return;\n\n setTournamentManuallyChecked(false);\n setSubgroupManuallyChecked(false);\n }, [hasAnyCheckedTournament]);\n\n const activeTournamentIds =\n isAllTournamentsChecked &&\n itemTournamentIds.length > 1 &&\n !isTournamentManuallyChecked &&\n !isSubgroupManuallyChecked\n ? []\n : selectedTournamentIds;\n\n return {\n itemTournamentIds,\n activeTournamentIds,\n isAllTournamentsChecked,\n hasAnyCheckedTournament,\n isTournamentManuallyChecked,\n isSubgroupManuallyChecked,\n handleItemCheck,\n };\n};\n\ninterface GetNextTournamentsArgs {\n allTournamentsInSport: string[];\n checkedTournamentIds: string[];\n groupType: CategorizerRowType;\n hasAnyCheckedTournament: boolean;\n isAllItemsInSportChecked: boolean;\n isAllTournamentsChecked: boolean;\n isGroupWithOneItem: boolean;\n isSubgroupManuallyChecked: boolean;\n isTournamentManuallyChecked: boolean;\n itemTournamentIds: string[];\n selectedTournamentIds: string[];\n}\n\nfunction getNextTournamentIds({\n itemTournamentIds,\n allTournamentsInSport,\n checkedTournamentIds,\n selectedTournamentIds,\n isAllTournamentsChecked,\n hasAnyCheckedTournament,\n groupType,\n isTournamentManuallyChecked,\n isSubgroupManuallyChecked,\n isAllItemsInSportChecked,\n isGroupWithOneItem,\n}: GetNextTournamentsArgs): string[] {\n const isGroupCheckClicked = groupType === CategorizerRowType.Subgroup;\n const hasSingleTournament = itemTournamentIds.length === 1;\n\n if (isAllItemsInSportChecked) {\n if (\n allTournamentsInSport.length === 1 ||\n (isGroupCheckClicked && isGroupWithOneItem)\n ) {\n return without(selectedTournamentIds, ...checkedTournamentIds);\n }\n\n const isAllTournamentCheckedManually =\n isAllTournamentsChecked &&\n (isSubgroupManuallyChecked || isTournamentManuallyChecked);\n\n if (!isAllTournamentCheckedManually) {\n return without(\n selectedTournamentIds,\n ...allTournamentsInSport\n ).concat(checkedTournamentIds);\n }\n\n const itemsToRemove = isTournamentManuallyChecked\n ? checkedTournamentIds\n : without(\n isGroupCheckClicked\n ? allTournamentsInSport\n : itemTournamentIds,\n ...checkedTournamentIds\n );\n\n return without(selectedTournamentIds, ...itemsToRemove);\n }\n\n if (isAllTournamentsChecked) {\n const removableItems = itemTournamentIds.filter((id: string) =>\n isGroupCheckClicked ||\n isTournamentManuallyChecked ||\n hasSingleTournament\n ? checkedTournamentIds.includes(id)\n : !checkedTournamentIds.includes(id)\n );\n\n return without(selectedTournamentIds, ...removableItems);\n }\n\n const isTournamentsAlreadyChecked = checkedTournamentIds.every(id =>\n selectedTournamentIds.includes(id)\n );\n\n if (\n (isGroupCheckClicked && hasAnyCheckedTournament) ||\n isTournamentsAlreadyChecked\n ) {\n return without(selectedTournamentIds, ...checkedTournamentIds);\n }\n\n return selectedTournamentIds.concat(checkedTournamentIds);\n}\n\nexport default useCategorizerRowChecker;\n","import { useCallback } from 'react';\nimport { API } from '@gin-betting/core';\n\nimport { useToggler } from 'hooks';\nimport { CategorizerRowType } from '../../../constants';\nimport useCategorizerRowChecker from '../useCategorizerRowChecker';\n\ninterface Input {\n topCategorizerItem: API.CategorizerItem;\n items: API.CategorizerItem[];\n selectedTournamentIds: string[];\n isAllItemsInSportChecked: boolean;\n isGroupWithOneItem: boolean;\n onTournamentIdsChange: (nextTournamentIds: string[]) => void;\n}\n\ninterface Output {\n activeTournamentIds: string[];\n isOpened: boolean;\n isSubgroupChecked: boolean;\n isTournamentCheckable: boolean;\n handleOpenToggle: VoidFn;\n handleSubgroupCheck: VoidFn;\n handleTournamentCheck: (checkedTournamentIds: string[]) => void;\n}\n\nconst useCategorizerSubRow = ({\n items,\n topCategorizerItem,\n selectedTournamentIds,\n isAllItemsInSportChecked,\n isGroupWithOneItem,\n onTournamentIdsChange,\n}: Input): Output => {\n const {\n itemTournamentIds,\n activeTournamentIds,\n isTournamentManuallyChecked,\n isSubgroupManuallyChecked,\n isAllTournamentsChecked,\n hasAnyCheckedTournament,\n handleItemCheck,\n } = useCategorizerRowChecker({\n items,\n topCategorizerItem,\n selectedTournamentIds,\n isAllItemsInSportChecked,\n isGroupWithOneItem,\n handleTournamentIdsChange: onTournamentIdsChange,\n });\n\n const isSubgroupChecked =\n (!isAllItemsInSportChecked ||\n isGroupWithOneItem ||\n isTournamentManuallyChecked ||\n isSubgroupManuallyChecked) &&\n hasAnyCheckedTournament;\n\n const [isOpened, handleOpenToggle] = useToggler(isSubgroupChecked);\n\n const isTournamentCheckable =\n !isAllTournamentsChecked ||\n isTournamentManuallyChecked ||\n ((isSubgroupManuallyChecked || isGroupWithOneItem) &&\n items.length === 1);\n\n const handleTournamentCheck = useCallback(\n (checkedTournamentIds: string[]) => {\n handleItemCheck(\n checkedTournamentIds,\n CategorizerRowType.Tournament\n );\n },\n [handleItemCheck]\n );\n\n const handleSubgroupCheck = useCallback(() => {\n handleItemCheck(itemTournamentIds, CategorizerRowType.Subgroup);\n }, [handleItemCheck, itemTournamentIds]);\n\n return {\n activeTournamentIds,\n isOpened,\n isTournamentCheckable,\n isSubgroupChecked,\n handleOpenToggle,\n handleSubgroupCheck,\n handleTournamentCheck,\n };\n};\n\nexport default useCategorizerSubRow;\n","import React from 'react';\nimport { API } from '@gin-betting/core';\n\nimport { getTournamentCountryCode } from '../../../utils';\nimport CategorizerCheckRow from '../CategorizerCheckRow';\nimport CategorizerRowHeader from '../CategorizerRowHeader';\nimport useCategorizerSubRow from './useCategorizerSubRow';\n\nimport './categorizerSubRow.scss';\n\ninterface Props {\n label: string;\n topCategorizerItem: API.CategorizerItem;\n countryCode?: string;\n items: API.CategorizerItem[];\n selectedTournamentIds: string[];\n isAllItemsInSportChecked: boolean;\n isGroupWithOneItem: boolean;\n onTournamentIdsChange: (nextTournamentIds: string[]) => void;\n additionalIcon?: JSX.Element | boolean | null;\n}\n\nconst CategorizerSubRow: React.FC = ({\n label,\n topCategorizerItem,\n countryCode,\n items,\n selectedTournamentIds,\n isAllItemsInSportChecked,\n isGroupWithOneItem,\n onTournamentIdsChange,\n additionalIcon,\n}) => {\n const {\n activeTournamentIds,\n isTournamentCheckable,\n isSubgroupChecked,\n isOpened,\n handleOpenToggle,\n handleTournamentCheck,\n handleSubgroupCheck,\n } = useCategorizerSubRow({\n items,\n topCategorizerItem,\n selectedTournamentIds,\n isAllItemsInSportChecked,\n onTournamentIdsChange,\n isGroupWithOneItem,\n });\n\n return (\n
\n \n\n {isOpened && (\n
\n {items.map(item => {\n const { name, value, count } = item;\n const isChecked =\n activeTournamentIds.includes(value) &&\n isTournamentCheckable;\n\n const itemCountryCode = countryCode\n ? undefined\n : getTournamentCountryCode(item, true);\n\n return (\n \n );\n })}\n
\n )}\n
\n );\n};\n\nexport default CategorizerSubRow;\n","import React from 'react';\nimport { useIntl } from 'react-intl';\nimport { API } from '@gin-betting/core';\n\nimport { FlagIcon } from 'components';\nimport { getItemsByLocation } from '../../../../utils';\nimport CategorizerSubRow from '../../CategorizerSubRow';\nimport { CheckRowList } from '../CheckRowList';\n\ninterface Props {\n tournaments: API.CategorizerItem[];\n topCategorizerItem: API.CategorizerItem;\n sportId: string;\n selectedTournamentIds: string[];\n isTournamentManuallyChecked: boolean;\n isAllItemsInSportChecked: boolean;\n onTournamentsChecked: (tournamentIds: string[]) => void;\n onTournamentIdsChange: (nextTournamentIds: string[]) => void;\n}\n\nconst LocationRow: React.FC = ({\n sportId,\n tournaments,\n selectedTournamentIds,\n isAllItemsInSportChecked,\n isTournamentManuallyChecked,\n topCategorizerItem,\n onTournamentsChecked,\n onTournamentIdsChange,\n}) => {\n const { formatMessage } = useIntl();\n\n const {\n tournamentsWithLocation,\n tournamentsWithoutLocation,\n } = getItemsByLocation({\n tournaments,\n sportId,\n formatMessage,\n });\n\n return (\n \n {tournamentsWithLocation.map(\n ({ items, countryName, countryCode }) => (\n }\n />\n )\n )}\n\n
\n 0}\n />\n
\n
\n );\n};\n\nexport default LocationRow;\n","import React from 'react';\nimport { API } from '@gin-betting/core';\n\nimport { OrganizationIcon } from 'components';\nimport { groupCategorizerItemsByOrganizations } from '../../../../utils';\nimport CategorizerSubRow from '../../CategorizerSubRow';\n\ninterface Props {\n items: API.CategorizerItem[];\n topCategorizerItem: API.CategorizerItem;\n sportId: string;\n selectedTournamentIds: string[];\n isAllItemsInSportChecked: boolean;\n onTournamentIdsChange: (nextTournamentIds: string[]) => void;\n}\n\nconst OrganizationRow: React.FC = ({\n items,\n topCategorizerItem,\n sportId,\n selectedTournamentIds,\n isAllItemsInSportChecked,\n onTournamentIdsChange: handleTournamentIdsChange,\n}) => {\n const groupedItemsByOrganization = groupCategorizerItemsByOrganizations(\n items,\n sportId\n );\n\n return (\n \n {groupedItemsByOrganization.map(organization => (\n \n }\n />\n ))}\n \n );\n};\n\nexport default OrganizationRow;\n","import { useCallback } from 'react';\nimport { API, View } from '@gin-betting/core';\nimport filters, { Filters } from '@gin-betting/filters';\nimport { createStructuredSelector } from 'reselect';\nimport type { ArgsN } from 'tsargs';\n\nimport { usePureSelector } from 'hooks';\nimport type { State } from 'types';\nimport { CategorizerRowType } from '../../../constants';\nimport useCategorizerRowChecker from '../useCategorizerRowChecker';\n\nconst {\n selectors: { selectEntityByCategorizerItem },\n} = filters;\n\ninterface Input {\n categorizerItem: API.CategorizerItem;\n selectedTournamentIds: string[];\n isOpened: boolean;\n onSportSelected: (categorizerItem: API.CategorizerItem) => void;\n onSportPreviewClick: (sportId: string, type: Filters.CheckGameType) => void;\n handleTournamentIdsChange: (\n tournamentsIds: string[],\n sportIdToRemove?: string\n ) => void;\n isSelected: boolean;\n}\n\ninterface Output {\n sport: View.Sport | undefined;\n activeTournamentIds: string[];\n isAllItemsInSportChecked: boolean;\n isTournamentManuallyChecked: boolean;\n handleSportSelected: VoidFunction;\n handleSportPreviewClick: VoidFunction;\n handleTournamentsCheck: (tournamentIds: string[]) => void;\n}\n\n// TODO: add type to selectEntityByCategorizerItem selector in filter lib\nconst selectEntityByCategorizerItemTyped: (\n ...args: ArgsN\n) => View.Sport | undefined = selectEntityByCategorizerItem;\n\nconst selectProps = createStructuredSelector({\n entity: selectEntityByCategorizerItemTyped,\n});\n\nconst useCategorizerRow = ({\n categorizerItem,\n selectedTournamentIds,\n isOpened,\n onSportSelected,\n onSportPreviewClick,\n handleTournamentIdsChange,\n isSelected,\n}: Input): Output => {\n const { entity } = usePureSelector((state: State) =>\n selectProps(state, { categorizerItem })\n );\n\n const {\n activeTournamentIds,\n isAllTournamentsChecked,\n isTournamentManuallyChecked,\n handleItemCheck,\n } = useCategorizerRowChecker({\n items: categorizerItem.children,\n topCategorizerItem: categorizerItem,\n selectedTournamentIds,\n handleTournamentIdsChange,\n });\n\n const handleTournamentsCheck = useCallback(\n (checkedTournamentIds: string[]) => {\n handleItemCheck(\n checkedTournamentIds,\n CategorizerRowType.Tournament\n );\n },\n [handleItemCheck]\n );\n\n const handleSportSelected = useCallback(() => {\n onSportSelected(categorizerItem);\n }, [categorizerItem, onSportSelected]);\n\n const handleSportPreviewClick = useCallback(() => {\n const { value } = categorizerItem;\n\n onSportPreviewClick(\n value,\n isOpened ? Filters.CheckGameType.Close : Filters.CheckGameType.Open\n );\n\n if ((isOpened && !isSelected) || (!isOpened && isSelected)) return;\n\n handleSportSelected();\n }, [\n onSportPreviewClick,\n isOpened,\n isSelected,\n categorizerItem,\n handleSportSelected,\n ]);\n\n return {\n sport: entity,\n activeTournamentIds,\n isAllItemsInSportChecked: isAllTournamentsChecked,\n isTournamentManuallyChecked,\n handleSportPreviewClick,\n handleSportSelected,\n handleTournamentsCheck,\n };\n};\n\nexport default useCategorizerRow;\n","import React from 'react';\nimport core, { API, App, View } from '@gin-betting/core';\nimport { Filters } from '@gin-betting/filters';\n\nimport features from 'services/feature-manager';\nimport { SPORTS_ORGANIZATION } from '../../../constants';\nimport { sortByTopTournaments } from '../../../utils';\nimport CategorizerRowHeader from '../CategorizerRowHeader';\nimport { CategorizerSportSummaries } from '../CategorizerSportSummaries';\nimport { CheckRowList } from './CheckRowList';\nimport { LocationRow } from './LocationRow';\nimport { OrganizationRow } from './OrganizationRow';\nimport useCategorizerRow from './useCategorizerRow';\n\nimport './categorizerRow.scss';\n\ninterface Props {\n selectedTournamentIds: string[];\n outrightsCount: number | undefined;\n categorizerItem: API.CategorizerItem;\n isOpened: boolean;\n isSelected: boolean;\n onSportSelected: (categorizerItem: API.CategorizerItem) => void;\n onSportPreviewClick: (sportId: string, type: Filters.CheckGameType) => void;\n onTournamentIdsChange: (\n tournamentsIds: string[],\n sportIdToRemove?: string\n ) => void;\n isLive: boolean;\n}\n\nconst {\n utils: { checkOnRoute },\n} = core;\n\nconst CategorizerRow: React.FC = ({\n selectedTournamentIds,\n onTournamentIdsChange: handleTournamentIdsChange,\n categorizerItem,\n isOpened,\n onSportPreviewClick,\n onSportSelected,\n isSelected,\n outrightsCount,\n isLive,\n}) => {\n const {\n sport,\n isAllItemsInSportChecked,\n isTournamentManuallyChecked,\n handleSportPreviewClick,\n handleSportSelected,\n handleTournamentsCheck,\n } = useCategorizerRow({\n selectedTournamentIds,\n categorizerItem,\n isOpened,\n onSportPreviewClick,\n onSportSelected,\n handleTournamentIdsChange,\n isSelected,\n });\n\n if (!sport) return null;\n\n const { id: sportId } = sport;\n\n return (\n \n \n\n {isOpened && (\n
\n {!checkOnRoute(App.Routes.RESULTS_LIST) && (\n \n )}\n\n {renderRowContent({\n sport,\n categorizerItem,\n selectedTournamentIds,\n isAllItemsInSportChecked,\n isTournamentManuallyChecked,\n handleTournamentsCheck,\n handleTournamentIdsChange,\n })}\n
\n )}\n
\n );\n};\n\nfunction checkGroupedByLocation(sport: View.Sport): boolean {\n return sport.tags.includes(API.SportTag.CLASSIC);\n}\n\ninterface RenderRowContentInput\n extends Pick {\n sport: View.Sport;\n isAllItemsInSportChecked: boolean;\n isTournamentManuallyChecked: boolean;\n handleTournamentsCheck: (nextTournamentIds: string[]) => void;\n handleTournamentIdsChange: (tournamentIds: string[]) => void;\n}\n\nfunction renderRowContent({\n sport,\n categorizerItem,\n selectedTournamentIds,\n isAllItemsInSportChecked,\n isTournamentManuallyChecked,\n handleTournamentsCheck,\n handleTournamentIdsChange,\n}: RenderRowContentInput): JSX.Element {\n const isActiveTopTournaments = features.isActive(\n features.list.CategorizerTopTournaments\n );\n\n const { children: childrenCategorizerItem } = categorizerItem;\n\n const renderCheckRowList = (\n categorizerItemChildren: API.CategorizerItem[]\n ): JSX.Element => (\n \n );\n\n switch (true) {\n case SPORTS_ORGANIZATION.includes(sport.id): {\n return (\n \n \n \n );\n }\n\n case checkGroupedByLocation(sport): {\n return (\n \n \n \n );\n }\n\n default: {\n const sortedItems = isActiveTopTournaments\n ? sortByTopTournaments(childrenCategorizerItem)\n : childrenCategorizerItem;\n\n return renderCheckRowList(sortedItems);\n }\n }\n}\n\nexport default CategorizerRow;\n","import { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useLocation } from 'react-router';\nimport core, { API, GQL } from '@gin-betting/core';\nimport { noop } from 'lodash';\n\ntype OutrightsCountBySport = Record;\n\ninterface Output {\n outrightsCountBySport: OutrightsCountBySport;\n categorizerItems: API.CategorizerItem[];\n}\n\nconst {\n utils: { getBettingOptions },\n poller: { getPollerManager },\n appServiceLocator,\n} = core;\n\nconst API_CLIENT = appServiceLocator.get('apiClient');\n\nconst pollInterval$ = getPollerManager().getIntervalObserve();\n\nconst useOutrightsCountBySport = (): Output => {\n const [\n { outrightsCountBySport, categorizerItems },\n setOutrightsCountBySport,\n ] = useState<{\n outrightsCountBySport: OutrightsCountBySport;\n categorizerItems: API.CategorizerItem[];\n }>({ outrightsCountBySport: {}, categorizerItems: [] });\n\n const { pathname } = useLocation();\n\n const getOutrightsCategorizer = useCallback(\n () =>\n API_CLIENT.makeRequest({\n method: 'getCategorizer',\n variables: {\n matchStatuses: [\n GQL.SportEventStatus.NOT_STARTED,\n GQL.SportEventStatus.SUSPENDED,\n GQL.SportEventStatus.LIVE,\n ],\n marketStatuses: [\n GQL.MarketStatus.ACTIVE,\n GQL.MarketStatus.SUSPENDED,\n ],\n sportIds: getBettingOptions().sportIds,\n sportEventTypes: [GQL.SportEventType.OUTRIGHT],\n },\n })\n .then(({ data }) =>\n setOutrightsCountBySport({\n outrightsCountBySport: reduceOutrightsCount(data),\n categorizerItems: data.categorizer as API.CategorizerItem[],\n })\n )\n .catch(noop),\n []\n );\n\n useEffect(() => {\n getOutrightsCategorizer();\n\n const sub$ = pollInterval$.subscribe(() => {\n getOutrightsCategorizer();\n });\n\n return () => {\n sub$.unsubscribe();\n };\n }, [pathname, getOutrightsCategorizer]);\n\n return useMemo(() => ({ outrightsCountBySport, categorizerItems }), [\n outrightsCountBySport,\n categorizerItems,\n ]);\n};\n\nfunction reduceOutrightsCount(\n data: GQL.GetCategorizerQuery\n): OutrightsCountBySport {\n if (!data.categorizer) return {};\n\n return data.categorizer.reduce((record: OutrightsCountBySport, catItem) => {\n record[catItem.value] = catItem.count;\n\n return record;\n }, {});\n}\n\nexport default useOutrightsCountBySport;\n","import { useCallback, useEffect, useMemo } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useHistory } from 'react-router';\nimport core, { API, App, View } from '@gin-betting/core';\nimport filters from '@gin-betting/filters';\nimport { Map as ImmutableMap } from 'immutable';\nimport { concat, includes, intersection, union, without } from 'lodash';\nimport { createStructuredSelector } from 'reselect';\n\nimport {\n BettingWidgets,\n OUTRIGHTS_ONLY_SPORTS,\n SKIP_MATCH_LIST_INITIAL_REQUEST,\n} from 'app-constants';\nimport { useWidgetSettings, useWithLocation } from 'hooks';\nimport type { State } from 'types';\nimport { checkSkipPollerConfiguration, getRouteBySportType } from 'utils';\nimport { useOutrightsCountBySport } from '../../../hooks';\nimport {\n getCategorizerVars,\n getSortedCategorizerItems,\n getSportsWithCheckedTournaments,\n getSummaryPath,\n} from '../../../utils';\n\nconst {\n constants: { SportType },\n poller: { usePoller },\n utils: {\n getAppliedFilters,\n getSportTypeBySportTags,\n getSportTypeFromLocation,\n checkOnRoute,\n },\n entities: {\n selectors: { selectSports },\n },\n services: { stringify, getHistory },\n hooks: { useDeepMemo },\n} = core;\n\nconst {\n actions: { getCategorizer },\n selectors: { selectCategorizerData },\n} = filters;\n\ninterface Input {\n selectedSportIds: string[];\n onFilterChange: (sportIds: string[], tournamentIds?: string[]) => void;\n}\n\ninterface Output {\n outrightsCountBySport: Record;\n sortedCategorizerItems: API.CategorizerItem[];\n handleSportSelect: (categorizerItem: API.CategorizerItem) => void;\n handleTournamentIdsChange: (\n tournamentIds: string[],\n sportIdToRemove: string\n ) => void;\n}\n\nconst selectProps = createStructuredSelector({\n sports: selectSports,\n categorizerItems: selectCategorizerData,\n});\n\nconst useCategorizerBody = ({\n selectedSportIds,\n onFilterChange,\n}: Input): Output => {\n const history = useHistory();\n const { sportsOrder } = useWidgetSettings({\n widget: BettingWidgets.CATEGORIZER,\n });\n const vars = useWithLocation(() => getCategorizerVars());\n const variables = useDeepMemo(vars);\n\n const { location } = history;\n const { pathname } = location;\n const { sports, categorizerItems } = useSelector<\n State,\n ReturnType\n >(state => selectProps(state, {}));\n\n const {\n outrightsCountBySport,\n categorizerItems: outrightCategorizerItems,\n } = useOutrightsCountBySport();\n\n const { requestContent } = usePoller({\n pollerName: App.PollerName.Categorizer,\n executableAction: getCategorizer,\n skipInitialRequest: checkSkipPollerConfiguration(\n SKIP_MATCH_LIST_INITIAL_REQUEST[location.pathname as App.Routes]\n ),\n variables,\n });\n\n const sportType = getSportTypeFromLocation();\n\n const sortedCategorizerItems = useMemo(\n () =>\n getSortedCategorizerItems({\n sportType: SportType.Mix,\n sports,\n sportsOrder,\n categorizerItems,\n outrightCategorizerItems,\n }),\n [sports, sportsOrder, categorizerItems, outrightCategorizerItems]\n );\n\n useEffect(() => {\n requestContent();\n }, [variables, requestContent]);\n\n const notifyCmsAboutRedirect = useCallback(\n ({\n requestedSportType,\n sportIds,\n tournamentIds,\n }: {\n requestedSportType: App.SportType;\n sportIds: string[];\n tournamentIds: string[];\n }) => {\n const nextSearch = stringify({\n sportIds,\n tournamentIds,\n });\n\n const slicedPathname = pathname\n .replace(App.Routes.ESPORT, '')\n .replace(App.Routes.CLASSIC, '');\n\n const parentPath = getRouteBySportType(requestedSportType);\n\n const nextPathname =\n `${parentPath}${slicedPathname}` || App.Routes.UPCOMING_LIST;\n\n history.push({\n ...history.location,\n hash: window.location.hash,\n pathname: nextPathname,\n search: nextSearch,\n });\n },\n [history, pathname]\n );\n\n const getRequestedSportType = useCallback(\n (sportIds: string[]) => {\n if (sportType === SportType.Mix) return null;\n\n const nextSportType = getSportTypeBySelectedSports(\n sports as any,\n sportIds\n );\n\n return nextSportType && sportType !== nextSportType\n ? nextSportType\n : null;\n },\n [sports, sportType]\n );\n\n const handleSportSelect = useCallback(\n ({ value, children }: API.CategorizerItem): void => {\n const { sportIds = [], tournamentIds = [] } = getAppliedFilters();\n\n if (\n includes(OUTRIGHTS_ONLY_SPORTS, value) &&\n !checkOnRoute(App.Routes.OUTRIGHTS_LIST)\n ) {\n const historyOutrightSport = getHistory();\n historyOutrightSport.push({\n ...historyOutrightSport.location,\n ...getSummaryPath(value),\n });\n\n return;\n }\n\n const isSportSelected = sportIds.includes(value);\n const chosenSportTournamentIds = children.map(child => child.value);\n\n const nextSportIds = isSportSelected\n ? without(sportIds, value)\n : concat(sportIds, value);\n const nextTournamentIds = isSportSelected\n ? without(tournamentIds, ...chosenSportTournamentIds)\n : tournamentIds.concat(chosenSportTournamentIds);\n\n const requestedSportType = getRequestedSportType(nextSportIds);\n\n if (requestedSportType) {\n notifyCmsAboutRedirect({\n requestedSportType,\n sportIds: nextSportIds,\n tournamentIds: nextTournamentIds,\n });\n }\n\n onFilterChange(nextSportIds, nextTournamentIds);\n },\n [getRequestedSportType, onFilterChange, notifyCmsAboutRedirect]\n );\n\n const handleTournamentIdsChange = useCallback(\n (nextTournamentIds: string[]) => {\n const sportsWithCheckedTournaments = getSportsWithCheckedTournaments(\n categorizerItems,\n nextTournamentIds\n );\n\n const nextSportIds = union(\n // Sports without any selected tournament should be deselected\n intersection(selectedSportIds, sportsWithCheckedTournaments),\n sportsWithCheckedTournaments\n );\n\n onFilterChange(nextSportIds, nextTournamentIds);\n },\n [selectedSportIds, categorizerItems, onFilterChange]\n );\n\n return {\n outrightsCountBySport,\n sortedCategorizerItems,\n handleSportSelect,\n handleTournamentIdsChange,\n };\n};\n\nfunction getSportTypeBySelectedSports(\n sports: ImmutableMap,\n selectedSportIds: string[]\n): App.SportType | null {\n if (!selectedSportIds.length) return null;\n\n return getSportTypeBySportTags(\n sports as ImmutableMap,\n selectedSportIds\n );\n}\n\nexport default useCategorizerBody;\n","import React from 'react';\nimport { Filters } from '@gin-betting/filters';\nimport { map } from 'lodash';\n\nimport { CategorizerTournamentMetaKey } from 'app-constants';\nimport { hasAnyMetaEventsInCategorizer } from '../../../utils';\nimport CategorizerRow from '../CategorizerRow';\nimport useCategorizerBody from './useCategorizerBody';\n\nimport './categorizerBody.scss';\n\ninterface Props {\n tournamentIds: string[];\n openedSportIds: string[];\n selectedSportIds: string[];\n onSportPreviewClick: (\n triggeredSportId: string,\n actionType: Filters.CheckGameType\n ) => void;\n onFilterChange: (sportIds: string[], tournamentIds?: string[]) => void;\n}\n\nconst CategorizerBody: React.FC = ({\n tournamentIds,\n openedSportIds,\n selectedSportIds,\n onSportPreviewClick,\n onFilterChange,\n}) => {\n const {\n outrightsCountBySport,\n sortedCategorizerItems,\n handleSportSelect,\n handleTournamentIdsChange,\n } = useCategorizerBody({\n selectedSportIds,\n onFilterChange,\n });\n\n return (\n
\n {map(sortedCategorizerItems, categorizerItem => (\n \n ))}\n
\n );\n};\n\nexport default CategorizerBody;\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport cn from 'classnames';\n\nimport { ExtendedRouts } from 'app-constants';\nimport { CategorizerHeadingRow, FavoriteIcon, SmartLink } from 'components';\nimport { useWithLocation } from 'hooks';\nimport globalMessages from 'messages';\nimport favorite from 'modules/favorite';\nimport { isFavoritePage } from 'utils';\n\nimport './categorizerHeadingFavorite.scss';\n\nconst { FavoriteCountAll } = favorite.components;\n\nconst CategorizerHeadingFavorite: React.FC = () => {\n const isActive = useWithLocation(isFavoritePage);\n\n return (\n \n \n }\n suffix={}\n >\n \n \n \n \n );\n};\n\nexport default React.memo(CategorizerHeadingFavorite);\n","import React from 'react';\n\nimport { CategorizerHeadingRowGroup } from 'components';\nimport { AsyncFreeBetCategorizer } from 'modules/freebet/async';\nimport promo from 'modules/promo';\nimport CategorizerHeadingFavorite from '../CategorizerHeadingFavorite';\n\nimport './categorizerHeading.scss';\n\nconst {\n components: { FeaturedTournamentsList },\n} = promo;\n\nconst CategorizerHeading: React.FC = () => {\n return (\n
\n \n\n \n \n \n\n \n \n \n
\n );\n};\n\nexport default CategorizerHeading;\n","import { useCallback, useRef, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useHistory } from 'react-router';\nimport core, { App } from '@gin-betting/core';\nimport filters, { Filters } from '@gin-betting/filters';\nimport matchList from '@gin-betting/match-list';\nimport { createStructuredSelector } from 'reselect';\n\nimport { useDidUpdate, usePrevious } from 'hooks';\nimport { State } from 'types';\nimport { isFavoritePage, isFeaturedPage } from 'utils';\nimport type { NextFilters } from '../../types';\nimport {\n filterMatches,\n getNextOpenedSportIds,\n getNextPathname,\n getRequestedSportType,\n getSportsWithCheckedTournaments,\n} from '../../utils';\n\nconst {\n services: { stringify },\n utils: {\n isInnerPage,\n checkOnRoute,\n getAppliedFilters,\n getFiltersFromLocation,\n },\n hooks: { useDeepMemo },\n entities: {\n selectors: { selectSports },\n },\n} = core;\n\nconst {\n selectors: { selectCategorizerData },\n} = filters;\n\nconst {\n pagination: {\n actions: { dropPaginationState },\n },\n} = matchList;\n\nconst selectProps = createStructuredSelector({\n sports: selectSports,\n categorizerItems: selectCategorizerData,\n});\n\ninterface Output {\n tournamentIds: string[];\n openedSportIds: string[];\n sportIds: string[];\n handleFiltersChange: (sportIds: string[], tournamentIds: string[]) => void;\n handleSportPreviewClick: (\n triggeredSportId: string,\n actionType: Filters.CheckGameType\n ) => void;\n}\n\nconst useCategorizer = (): Output => {\n const history = useHistory();\n const dispatch = useDispatch();\n\n const { location } = history;\n\n const appliedFilters = useDeepMemo(getAppliedFiltersWithDefault());\n\n const { sportIds, tournamentIds } = appliedFilters;\n\n const [openedSportIds, setOpenedSportIds] = useState(sportIds);\n\n const { sports, categorizerItems } = useSelector((state: State) =>\n selectProps(state, {})\n );\n\n const categorizerItemsRef = useRef(categorizerItems);\n const prevCategorizerItems = usePrevious(categorizerItems);\n\n categorizerItemsRef.current = categorizerItems;\n\n const clearState = useCallback((callback: AnyFn) => {\n callback();\n }, []);\n\n useDidUpdate(() => {\n setOpenedSportIds(getAppliedFiltersWithDefault().sportIds);\n }, [location.pathname, location.search]);\n\n useDidUpdate(() => {\n if (\n prevCategorizerItems?.length ||\n !categorizerItemsRef.current.length\n ) {\n return;\n }\n\n setOpenedSportIds(prevState => {\n if (prevState.length) return prevState;\n\n const sportIdsByTournaments = getSportsWithCheckedTournaments(\n categorizerItemsRef.current,\n tournamentIds\n );\n\n return [...sportIds, ...sportIdsByTournaments];\n });\n }, [tournamentIds, sportIds]);\n\n const setupFiltersIntoUrl: typeof filterMatches = useCallback(\n nextFilters => {\n const { page } = getFiltersFromLocation();\n\n if (page && +page > 1) {\n dispatch(dropPaginationState());\n }\n\n const requestedSportType = getRequestedSportType(\n nextFilters.sportIds || [],\n sports\n );\n\n const nextPathname = requestedSportType\n ? getNextPathname(requestedSportType)\n : undefined;\n\n filterMatches(nextFilters, nextPathname);\n },\n [dispatch, sports]\n );\n\n const goToUpcomingWithSearch = useCallback(\n (search: NextFilters): void => {\n const pathnameRout = checkOnRoute(App.Routes.OUTRIGHT)\n ? App.Routes.OUTRIGHTS_LIST\n : App.Routes.UPCOMING_LIST;\n\n clearState(() =>\n history.push({\n ...location,\n pathname: pathnameRout,\n search: search ? stringify(search) : '',\n })\n );\n },\n [clearState, history, location]\n );\n\n const onSelect = useCallback(\n ({\n sportIds: currentSportIds,\n tournamentIds: currentTournamentIds,\n }: NextFilters) => {\n if (isInnerPage() || isFavoritePage() || isFeaturedPage()) {\n return goToUpcomingWithSearch({\n sportIds: currentSportIds,\n tournamentIds: currentTournamentIds,\n });\n }\n\n setupFiltersIntoUrl({\n sportIds: currentSportIds,\n tournamentIds: currentTournamentIds,\n matchStatuses: [],\n freeBetId: '',\n });\n },\n [goToUpcomingWithSearch, setupFiltersIntoUrl]\n );\n\n const handleFiltersChange = useCallback(\n (nextSportIds: string[], nextTournamentIds: string[]): void => {\n onSelect({\n sportIds: nextSportIds,\n tournamentIds: nextTournamentIds,\n });\n },\n [onSelect]\n );\n\n const handleSportPreviewClick = useCallback(\n (triggeredSportId: string, actionType: Filters.CheckGameType) => {\n const nextOpenedSportIds = getNextOpenedSportIds({\n actionType,\n openedSportIds,\n selectedSportIds: sportIds,\n triggeredSportId,\n });\n\n setOpenedSportIds(nextOpenedSportIds);\n },\n [openedSportIds, sportIds]\n );\n\n return {\n tournamentIds,\n openedSportIds,\n sportIds,\n handleFiltersChange,\n handleSportPreviewClick,\n };\n};\n\nfunction getAppliedFiltersWithDefault(): Pick<\n Required>,\n 'sportIds' | 'tournamentIds'\n> {\n const { sportIds = [], tournamentIds = [] } = getAppliedFilters();\n\n return {\n sportIds,\n tournamentIds,\n };\n}\n\nexport default useCategorizer;\n","import React from 'react';\n\nimport CategorizerBody from './CategorizerBody';\nimport CategorizerHeading from './CategorizerHeading';\nimport useCategorizer from './useCategorizer';\n\nimport './Categorizer.scss';\n\nconst Categorizer: React.FC = () => {\n const {\n tournamentIds,\n openedSportIds,\n sportIds,\n handleFiltersChange,\n handleSportPreviewClick,\n } = useCategorizer();\n\n return (\n
\n \n\n \n
\n );\n};\n\nexport default Categorizer;\n","/* tslint:disable */\nimport { defineMessages } from 'react-intl';\n\nexport default defineMessages({\n starts: {\n defaultMessage:\n 'Matches begin in the next {interval, plural, =30 {30 minutes} =1 {hour} other {# hours}}',\n id: 'component.CategorizerHeadingLiveControls.starts',\n },\n started: {\n defaultMessage: 'Matches that last more than {time}',\n id: 'component.CategorizerHeadingLiveControls.started',\n },\n live: {\n defaultMessage: 'All Live matches',\n id: 'component.CategorizerHeadingLiveControls.live',\n },\n allNextToGo: {\n defaultMessage: 'Matches begin in the next 24 hours',\n id: 'component.CategorizerHeadingLiveControls.allNextToGo',\n },\n all: {\n defaultMessage: 'All',\n id: 'component.Categorizer.all',\n },\n '1hour': {\n defaultMessage: 'Hour',\n id: 'component.FilterByTimePeriod.hour',\n },\n today: {\n defaultMessage: 'Today',\n id: 'component.FilterByTimePeriod.today',\n },\n yesterday: {\n defaultMessage: 'Yesterday',\n id: 'component.FilterByTimePeriod.yesterday',\n },\n '3days': {\n defaultMessage: '3 Days',\n id: 'component.FilterByTimePeriod.threeDays',\n },\n week: {\n defaultMessage: 'Week',\n id: 'component.FilterByTimePeriod.week',\n },\n tournaments: {\n defaultMessage: 'Tournaments',\n id: 'filters.SportsNavigation.tournaments',\n },\n});\n","import { useCallback } from 'react';\nimport core, { App } from '@gin-betting/core';\n\nimport { useAppliedFilters, useMount } from 'hooks';\nimport { DEFAULT_TIME_PERIOD, FILTER_TIME_PERIODS } from '../../constants';\n\ninterface Output {\n currentPeriod: App.TimePeriodVariants;\n onChange: (nextPeriod: App.TimePeriodVariants) => void;\n}\n\nconst {\n utils: { setSearchString, extendSearchString },\n} = core;\n\nfunction useFilterByTimePeriod(): Output {\n const { dateFrom } = useAppliedFilters();\n const currentPeriod =\n dateFrom &&\n FILTER_TIME_PERIODS.includes(dateFrom as App.TimePeriodVariants)\n ? (dateFrom as App.TimePeriodVariants)\n : DEFAULT_TIME_PERIOD;\n\n useMount(() => {\n extendSearchString('dateFrom', currentPeriod);\n });\n\n const onChange = useCallback(\n (nextPeriod: App.TimePeriodVariants) => {\n if (currentPeriod === nextPeriod) return;\n\n setSearchString({\n dateFrom: nextPeriod,\n });\n },\n [currentPeriod]\n );\n\n return {\n onChange,\n currentPeriod,\n };\n}\n\nexport default useFilterByTimePeriod;\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport cn from 'classnames';\nimport { map } from 'lodash';\n\nimport { FILTER_TIME_PERIODS } from '../../constants';\nimport messages from '../../messages';\nimport useFilterByTimePeriod from './useFilterByTimePeriod';\n\nimport './filterByTimePeriod.scss';\n\ninterface Props {}\n\nconst FilterByTimePeriod: React.FC = () => {\n const { currentPeriod, onChange } = useFilterByTimePeriod();\n\n return (\n
\n {map(FILTER_TIME_PERIODS, period => (\n onChange(period)}\n >\n \n
\n ))}\n \n );\n};\n\nexport default React.memo(FilterByTimePeriod);\n","import { ComponentPropsWithoutRef, useContext, useEffect, useRef } from 'react';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router';\nimport core, { App } from '@gin-betting/core';\nimport filters from '@gin-betting/filters';\nimport { intersection } from 'lodash';\nimport { createSelector, createStructuredSelector } from 'reselect';\n\nimport { CategorizerTournamentMetaKey } from 'app-constants';\nimport { useAppliedFilters, useMemoSelector } from 'hooks';\nimport globalMessages from 'messages';\nimport { Action, AnalyticAttrs, Category } from 'services/analytics';\nimport type { SegmentControl } from 'ui-lib';\nimport { stringify } from 'utils';\nimport { OverlayType } from '../../constants';\nimport messages from '../../messages';\nimport { hasAnyMetaEventsInCategorizer } from '../../utils';\nimport { MobileFiltersCtx } from '../MobileFilters/MobileFiltersCtx';\n\nimport './sportsNavigation.scss';\n\ninterface Output {\n isCompact: boolean;\n withoutRender: boolean;\n tabs: ComponentPropsWithoutRef['tabs'];\n}\n\nconst {\n utils: { getAppliedFilters },\n viewport: {\n selectors: { selectIsCompact },\n },\n services: { getHistory },\n hooks: { useDeepMemo },\n} = core;\n\nconst {\n selectors: { selectCategorizerData },\n} = filters;\n\nconst useSportsNavigation = (): Output => {\n const { formatMessage } = useIntl();\n const {\n isCompact,\n livePrematchIds: { liveSportIds, prematchSportIds },\n } = useMemoSelector(selectProps, {});\n\n const { pathname } = useLocation();\n const { sportId, sportIds, tournamentId } = useAppliedFilters();\n\n const sportIdsMem = useDeepMemo(sportIds);\n\n const { currentOverlay, setOverlay } = useContext(MobileFiltersCtx);\n\n const handleAll = (withHistoryReplace?: boolean) => {\n handleTab({\n pathname: App.Routes.UPCOMING_LIST,\n withResetFilters: isCompact,\n withHistoryReplace,\n });\n\n if (!isCompact) return;\n\n setOverlay(OverlayType.NONE);\n };\n\n const handleLive = (withHistoryReplace?: boolean) => {\n handleTab({\n pathname: App.Routes.LIVE_LIST,\n withResetFilters: isCompact,\n withHistoryReplace,\n });\n };\n\n const handleNextToGo = () => {\n handleTab({\n pathname: App.Routes.PREMATCH,\n withResetFilters: isCompact,\n });\n };\n\n const handleTournaments = () => {\n if (!isCompact) return;\n\n setOverlay(OverlayType.TOURNAMENT_LIST);\n handleTab({\n pathname: App.Routes.UPCOMING_LIST,\n withResetFilters: true,\n });\n };\n\n const isLiveTabActive = pathname === App.Routes.LIVE_LIST;\n\n const isNextToActive = pathname === App.Routes.PREMATCH;\n\n const isAllTabActive =\n pathname === App.Routes.UPCOMING_LIST &&\n (isCompact\n ? !tournamentId && currentOverlay === OverlayType.NONE\n : !isLiveTabActive && !isNextToActive);\n\n const isTournamentTabActive =\n pathname === App.Routes.UPCOMING_LIST && !isAllTabActive;\n\n const redirectInfo = {\n liveSportIds,\n handleLive,\n handleAll,\n isLiveTabActive,\n isAllTabActive,\n };\n\n const redirectInfoRef = useRef(redirectInfo);\n redirectInfoRef.current = redirectInfo;\n\n useEffect(() => {\n const refValue = redirectInfoRef.current;\n\n const sIds: string[] = [\n ...(sportId ? [sportId] : []),\n ...(sportIdsMem || []),\n ];\n\n const isLiveSports =\n isCompact && intersection(sIds, refValue.liveSportIds).length > 0;\n\n if (isLiveSports) {\n if (refValue.isLiveTabActive) return;\n\n refValue.handleLive(true);\n } else if (!refValue.isAllTabActive && sIds.length > 0) {\n refValue.handleAll(true);\n }\n }, [sportId, sportIdsMem, isCompact]);\n\n const tabs: Output['tabs'] = [\n {\n text: formatMessage(globalMessages.all),\n onClick: handleAll,\n isActive: isAllTabActive,\n },\n {\n text: formatMessage(globalMessages.live),\n onClick: handleLive,\n isActive: isLiveTabActive,\n analyticAttrs: ANALYTICS_LIVE,\n },\n {\n text: formatMessage(globalMessages.nextToGo),\n onClick: handleNextToGo,\n isActive: isNextToActive,\n analyticAttrs: ANALYTICS_PREMATCH,\n },\n ];\n\n if (isCompact && !!sportId) {\n tabs.push({\n text: formatMessage(messages.tournaments),\n onClick: handleTournaments,\n isActive: isTournamentTabActive,\n });\n }\n\n const withoutRender =\n !isCompact &&\n !!sportIds?.length &&\n [liveSportIds, prematchSportIds].some(\n ids => intersection(ids, sportIds).length === 0\n );\n\n return {\n tabs,\n withoutRender,\n isCompact,\n };\n};\n\ninterface Options {\n pathname: App.Routes;\n withResetFilters: boolean;\n withHistoryReplace?: boolean;\n}\n\nfunction handleTab({\n pathname,\n withResetFilters,\n withHistoryReplace,\n}: Options) {\n const history = getHistory();\n\n const nextLocation = {\n ...history.location,\n pathname,\n };\n\n if (withResetFilters) {\n const { sportId, sportIds } = getAppliedFilters();\n\n nextLocation.search = stringify({\n sportId,\n sportIds,\n });\n }\n\n if (withHistoryReplace) {\n history.replace(nextLocation);\n\n return;\n }\n\n history.push(nextLocation);\n}\n\ninterface LivePrematchIds {\n liveSportIds: string[];\n prematchSportIds: string[];\n}\n\nconst selectLivePrematchIds = createSelector(\n selectCategorizerData,\n (categorizerItems): LivePrematchIds =>\n categorizerItems.reduce(\n (acc: LivePrematchIds, { meta, value: sportId }) => {\n const isLive = hasAnyMetaEventsInCategorizer(\n meta,\n CategorizerTournamentMetaKey.LiveEventsCount\n );\n\n const isPrematch = hasAnyMetaEventsInCategorizer(\n meta,\n CategorizerTournamentMetaKey.PrematchEventsCount\n );\n\n if (isLive) {\n acc.liveSportIds.push(sportId);\n }\n\n if (isPrematch) {\n acc.prematchSportIds.push(sportId);\n }\n\n return acc;\n },\n {\n liveSportIds: [],\n prematchSportIds: [],\n }\n )\n);\n\nconst selectProps = createStructuredSelector({\n isCompact: selectIsCompact,\n livePrematchIds: selectLivePrematchIds,\n});\n\nconst ANALYTICS_LIVE: AnalyticAttrs = {\n 'data-category': Category.FiltersLive,\n 'data-action': Action.Open,\n};\n\nconst ANALYTICS_PREMATCH: AnalyticAttrs = {\n 'data-category': Category.FiltersNextToGo,\n 'data-action': Action.Open,\n};\n\nexport default useSportsNavigation;\n","import React, { memo } from 'react';\nimport cn from 'classnames';\n\nimport { SegmentControl } from 'ui-lib';\nimport useSportsNavigation from './useSportsNavigation';\n\nimport './sportsNavigation.scss';\n\nconst SportsNavigation: React.FC = () => {\n const { tabs, isCompact, withoutRender } = useSportsNavigation();\n\n if (withoutRender) return null;\n\n return (\n \n \n \n );\n};\n\nexport default memo(SportsNavigation);\n","import React from 'react';\n\nimport { Icon } from 'components';\n\nimport backIcon from 'assets/svg/arrow-left.svg';\nimport './backLink.scss';\n\ninterface Props {\n title: JSX.Element | string;\n onClick: VoidFn;\n}\n\nconst BackLink: React.FC = ({ title, onClick }) => (\n
\n
\n \n
\n\n {title}\n
\n);\n\nexport default React.memo(BackLink);\n","import { useCallback, useContext, useEffect } from 'react';\nimport core, { App } from '@gin-betting/core';\n\nimport { useAppliedFilters } from 'hooks';\nimport promo from 'modules/promo';\nimport { OverlayType } from '../../../constants';\nimport { MobileFiltersCtx } from '../MobileFiltersCtx';\n\nconst {\n services: { getHistory },\n} = core;\n\ninterface Output {\n openOverlay: VoidFn;\n isActive: boolean;\n count: number;\n}\n\nconst {\n hooks: { useFeaturedConfigs },\n} = promo;\n\nfunction useFeaturedTournamentsHeading(): Output {\n const { featuredConfigs } = useFeaturedConfigs();\n const { sportId } = useAppliedFilters();\n const { currentOverlay, setOverlay } = useContext(MobileFiltersCtx);\n\n const isSportIdExist = !!sportId;\n\n useEffect(() => {\n if (!isSportIdExist) return;\n\n setOverlay(OverlayType.NONE);\n }, [isSportIdExist, setOverlay]);\n\n const openOverlay = useCallback(() => {\n setOverlay(OverlayType.FEATURED_TOURNAMENTS_LIST);\n\n const history = getHistory();\n history.replace(App.Routes.UPCOMING_LIST);\n }, [setOverlay]);\n\n return {\n openOverlay,\n count: featuredConfigs.count(),\n isActive: currentOverlay === OverlayType.FEATURED_TOURNAMENTS_LIST,\n };\n}\n\nexport default useFeaturedTournamentsHeading;\n","import React from 'react';\nimport { useIntl } from 'react-intl';\nimport { Link } from 'react-router-dom';\n\nimport { Icon, SportFilterHeading } from 'components';\nimport globalMessages from 'messages';\nimport useFeaturedTournamentsHeading from './useFeaturedTournamentsHeading';\n\nimport featuredTournamentIcon from 'assets/svg/top-tournament.svg';\nimport './featuredTournamentsHeading.scss';\n\nconst FeaturedTournamentsHeading: React.FC = () => {\n const { isActive, count, openOverlay } = useFeaturedTournamentsHeading();\n const { formatMessage } = useIntl();\n\n if (count === 0) return null;\n\n return (\n \n }\n isActive={isActive}\n onClick={openOverlay}\n />\n \n );\n};\n\nexport default React.memo(FeaturedTournamentsHeading);\n","import { useCallback, useContext } from 'react';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\nimport core from '@gin-betting/core';\nimport filters from '@gin-betting/filters';\n\nimport { useAppliedFilters } from 'hooks';\nimport globalMessages from 'messages';\nimport { OverlayType } from '../../../constants';\nimport { MobileFiltersCtx } from '../MobileFiltersCtx';\n\ninterface Output {\n count: number;\n closeOverlay: VoidFunction;\n sportId: string | undefined;\n currentOverlay: OverlayType;\n allGameMsg: string;\n isClassicSport: boolean;\n}\n\nconst {\n utils: { getSportTypeFromLocation },\n constants: { SportType },\n} = core;\n\nconst {\n selectors: { selectCategorizerData },\n} = filters;\n\nfunction useFilterBySportHeading(): Output {\n const { formatMessage } = useIntl();\n const { setOverlay, currentOverlay } = useContext(MobileFiltersCtx);\n const categorizerData = useSelector(selectCategorizerData);\n\n const count = categorizerData.reduce((acc, item) => acc + item.count, 0);\n const closeOverlay = useCallback(() => {\n setOverlay(OverlayType.NONE);\n }, [setOverlay]);\n\n const { sportId } = useAppliedFilters();\n const isClassicSport = getSportTypeFromLocation() === SportType.Classic;\n\n return {\n count,\n sportId,\n closeOverlay,\n currentOverlay,\n allGameMsg: formatMessage(globalMessages.allGames),\n isClassicSport,\n };\n}\n\nexport default useFilterBySportHeading;\n","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"classicAll_ed4d0\",\n \"use\": \"classicAll_ed4d0-usage\",\n \"viewBox\": \"0 0 64.2 64.1\",\n \"content\": \"\\n \\n \\n \\n \\n \\n \\n \\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import React from 'react';\nimport { Link } from 'react-router-dom';\n\nimport { Icon, SportFilterHeading } from 'components';\nimport { OverlayType } from '../../../constants';\nimport { getSearchString } from '../../../utils';\nimport useFilterBySportHeading from './useFilterBySportHeading';\n\nimport allGames from 'assets/svg/all-games.svg';\nimport classicAll from 'assets/svg/classicAll.svg';\n\nconst FilterBySportHeading: React.FC = () => {\n const {\n closeOverlay,\n sportId,\n allGameMsg,\n currentOverlay,\n isClassicSport,\n } = useFilterBySportHeading();\n\n return (\n \n }\n isActive={currentOverlay === OverlayType.NONE && !sportId}\n />\n \n );\n};\n\nexport default React.memo(FilterBySportHeading);\n","import React from 'react';\n\nimport { Icon, SmartLink } from 'components';\nimport type { Promo } from 'modules/promo';\n\nimport arrowRight from 'assets/svg/arrow-left.svg';\nimport './featuredTournamentsItem.scss';\n\ninterface Props {\n config: Promo.FeaturedConfig;\n}\n\nconst FeaturedTournamentsItem: React.FC = ({ config }) => {\n const { name, linkToTournament } = config;\n\n if (!name || !linkToTournament) return null;\n\n return (\n \n
{name}
\n \n
\n );\n};\n\nexport default React.memo(FeaturedTournamentsItem);\n","import React from 'react';\n\nimport { useMemoSelector } from 'hooks';\nimport promo from 'modules/promo';\nimport FeaturedTournamentsItem from './FeaturedTournamentsItem';\n\nconst {\n selectors: { selectFeaturedTournamentsList },\n} = promo;\n\nconst FeaturedTournamentsList: React.FC = () => {\n const featuredConfigs = useMemoSelector(selectFeaturedTournamentsList);\n\n if (!featuredConfigs.size) return null;\n\n return (\n \n {featuredConfigs.map(config => (\n \n ))}\n \n );\n};\n\nexport default React.memo(FeaturedTournamentsList);\n","import { createContext } from 'react';\n\ninterface IOutrightsBySportContext {\n outrightsCountBySport: Record;\n}\n\nexport const OutrightsBySportContext = createContext({\n outrightsCountBySport: {},\n});\n","import React from 'react';\n\nimport './tournamentItem.scss';\n\ninterface Props {\n title: string | React.ReactNode;\n count?: number;\n children?: JSX.Element;\n}\n\nconst TournamentItem: React.FC = ({ title, count, children = null }) => (\n \n {children}\n\n
\n
{title}
\n {count &&
{count}
}\n
\n
\n);\n\nexport default React.memo(TournamentItem);\n","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport core from '@gin-betting/core';\n\nimport { Icon } from 'components';\n\nimport arrowRight from 'assets/svg/arrow-left.svg';\nimport './tournamentItemWrapper.scss';\n\ninterface Props {\n tournamentId?: string;\n onClick: VoidFn;\n children: JSX.Element[] | JSX.Element;\n}\n\nconst {\n utils: { getFiltersFromLocation },\n services: { stringify },\n} = core;\n\nconst TournamentItemWrapper: React.FC = ({\n children,\n tournamentId,\n onClick,\n}) => {\n const content = (\n \n {children}\n\n \n \n );\n\n if (!tournamentId) {\n return (\n
\n {content}\n
\n );\n }\n\n return (\n \n {content}\n \n );\n};\n\nfunction getLinkToTournament(tournamentId: string): string {\n const filters = getFiltersFromLocation();\n\n return stringify({\n ...filters,\n tournamentIds: undefined,\n tournamentId,\n });\n}\n\nexport default React.memo(TournamentItemWrapper);\n","import React, { useContext } from 'react';\nimport { useIntl } from 'react-intl';\nimport { Link } from 'react-router-dom';\nimport core from '@gin-betting/core';\nimport { noop } from 'lodash';\n\nimport { Icon } from 'components';\nimport { getSummaryPath } from '../../../../utils';\nimport messages from '../../../Categorizer/messages.js'; // TODO: probably need to move this in root translations\nimport { OutrightsBySportContext } from '../../OutrightsBySportContext';\nimport TournamentItem from '../TournamentItem';\nimport TournamentItemWrapper from '../TournamentItemWrapper';\n\nimport summariesIcon from 'assets/svg/summaries.svg';\nimport './sportSummaryRow.scss';\n\nconst {\n utils: { getAppliedFilters },\n} = core;\n\nconst SportSummaryRow: React.FC = () => {\n const { outrightsCountBySport } = useContext(OutrightsBySportContext);\n\n const { formatMessage } = useIntl();\n\n const { sportId } = getAppliedFilters();\n\n if (!sportId) return null;\n\n const count = outrightsCountBySport[sportId] || 0;\n\n if (count < 1) return null;\n\n return (\n \n \n \n
\n \n
\n \n
\n \n );\n};\n\nexport default SportSummaryRow;\n","import React, { Fragment, useCallback, useContext } from 'react';\nimport { useIntl } from 'react-intl';\nimport { useDispatch } from 'react-redux';\nimport core from '@gin-betting/core';\nimport { omit } from 'lodash';\n\nimport { OrganizationIcon } from 'components';\nimport globalMessages from 'messages';\nimport ui from 'modules/ui';\nimport {\n ALL,\n OverlayType,\n UNGROUPED_CATEGORIES_KEY,\n} from '../../../../constants';\nimport { CategorizerItemByOrganizations } from '../../../../types';\nimport messages from '../../../Categorizer/messages';\nimport { MobileFiltersCtx } from '../../MobileFiltersCtx';\nimport { SportSummaryRow } from '../SportSummaryRow';\nimport TournamentItem from '../TournamentItem';\nimport TournamentItemWrapper from '../TournamentItemWrapper';\n\ninterface Props {\n categorizerItemsByOrganizations:\n | CategorizerItemByOrganizations[]\n | undefined;\n sportItemCount: number;\n selectOrganization: (organizationName: string) => void;\n}\n\nconst {\n utils: { setSearchString, getAppliedFilters },\n} = core;\n\nconst {\n actions: { setActiveMobileCountryKey },\n} = ui;\n\nconst OrganizationList: React.FC = ({\n categorizerItemsByOrganizations,\n sportItemCount,\n selectOrganization,\n}) => {\n const dispatch = useDispatch();\n const { formatMessage } = useIntl();\n const { setOverlay } = useContext(MobileFiltersCtx);\n\n const onClickAll = useCallback(() => {\n const obj = getAppliedFilters();\n\n const fieldsToOmit: Array = [\n 'tournamentId',\n 'tournamentIds',\n 'sportIds',\n ];\n\n dispatch(setActiveMobileCountryKey(ALL));\n\n setSearchString(omit(obj, fieldsToOmit));\n setOverlay(OverlayType.NONE);\n }, [dispatch, setOverlay]);\n\n const goToTournamentsList = useCallback(\n (organizationName: string) => () =>\n selectOrganization(organizationName),\n [selectOrganization]\n );\n\n return (\n \n \n \n \n \n {categorizerItemsByOrganizations?.map(({ name, count, logo }) => {\n const title =\n name === UNGROUPED_CATEGORIES_KEY\n ? formatMessage(globalMessages.other)\n : name;\n\n return (\n \n \n \n \n \n );\n })}\n \n );\n};\n\nexport default React.memo(OrganizationList);\n","import React from 'react';\n\nimport { FlagIcon } from 'components';\n\nimport './countryTitle.scss';\n\ninterface Props {\n countryCode: string;\n countryName: string;\n}\n\nconst CountryTitle: React.FC = ({ countryCode, countryName }) => {\n return (\n \n {countryCode && }\n {countryName}\n \n );\n};\n\nexport default CountryTitle;\n","import core, { API } from '@gin-betting/core';\nimport { reduce } from 'lodash';\n\nconst {\n hooks: { useDeepMemo },\n} = core;\n\ninterface Input {\n tournaments: API.CategorizerItem[];\n}\n\ninterface Output {\n tournamentIds: string[];\n totalCount: number;\n}\n\nexport default function useCountryInfo({ tournaments }: Input): Output {\n const { tournamentIds, totalCount } = useDeepMemo(\n () =>\n reduce(\n tournaments,\n (\n acc: {\n tournamentIds: string[];\n totalCount: number;\n },\n { value, count }\n ) => {\n acc.tournamentIds.push(value);\n acc.totalCount += count;\n\n return acc;\n },\n {\n tournamentIds: [],\n totalCount: 0,\n }\n ),\n [tournaments]\n );\n\n return {\n tournamentIds,\n totalCount,\n };\n}\n","import { useCallback, useContext } from 'react';\nimport { useDispatch } from 'react-redux';\nimport core, { API } from '@gin-betting/core';\n\nimport ui from 'modules/ui';\nimport {\n ACTIVE_COUNTRY_KEY_DIVIDER,\n ALL,\n OverlayType,\n} from '../../../../constants';\nimport { MobileFiltersCtx } from '../../MobileFiltersCtx';\nimport { useCountryInfo } from '../hooks';\n\ninterface Input {\n countryCode: string;\n tournaments: API.CategorizerItem[];\n}\n\ninterface Output {\n handleClickBack: VoidFn;\n handleClickAll: VoidFn;\n totalCount: number;\n}\n\nconst {\n utils: { setSearchString, getAppliedFilters },\n} = core;\n\nconst {\n actions: { setActiveMobileCountryKey },\n} = ui;\n\nconst useActiveRegionItem = ({ countryCode, tournaments }: Input): Output => {\n const dispatch = useDispatch();\n const { setOverlay } = useContext(MobileFiltersCtx);\n\n const { tournamentIds, totalCount } = useCountryInfo({ tournaments });\n\n const handleClickBack = useCallback(() => {\n dispatch(setActiveMobileCountryKey(''));\n\n const currentFilters = getAppliedFilters();\n\n setSearchString({\n ...currentFilters,\n tournamentIds: undefined,\n });\n }, [dispatch]);\n\n const handleClickAll = useCallback(() => {\n const currentFilters = getAppliedFilters();\n setSearchString({\n ...currentFilters,\n tournamentIds,\n });\n\n dispatch(\n setActiveMobileCountryKey(\n `${countryCode}${ACTIVE_COUNTRY_KEY_DIVIDER}${ALL}`\n )\n );\n setOverlay(OverlayType.NONE);\n }, [dispatch, countryCode, setOverlay, tournamentIds]);\n\n return {\n totalCount,\n handleClickBack,\n handleClickAll,\n };\n};\n\nexport default useActiveRegionItem;\n","import React from 'react';\nimport { useIntl } from 'react-intl';\nimport { API } from '@gin-betting/core';\n\nimport messages from '../../../Categorizer/messages.js'; // TODO: probably need to move this in root translations\nimport BackLink from '../../BackLink';\nimport CountryTitle from '../CountryTitle';\nimport TournamentItem from '../TournamentItem';\nimport TournamentItemWrapper from '../TournamentItemWrapper';\nimport useActiveRegionItem from './useActiveRegionItem';\n\ninterface Props {\n tournaments: API.CategorizerItem[];\n countryCode: string;\n countryName: string;\n children: React.ReactNode[];\n}\n\nconst ActiveRegionItem: React.FC = ({\n tournaments,\n countryCode,\n countryName,\n children,\n}) => {\n const { formatMessage } = useIntl();\n const { handleClickBack, handleClickAll, totalCount } = useActiveRegionItem(\n {\n countryCode,\n tournaments,\n }\n );\n\n return (\n \n \n }\n onClick={handleClickBack}\n />\n\n {tournaments.length > 1 && (\n \n \n \n )}\n\n {children}\n \n );\n};\n\nexport default ActiveRegionItem;\n","import { useCallback } from 'react';\nimport { useDispatch } from 'react-redux';\nimport core, { API } from '@gin-betting/core';\n\nimport ui from 'modules/ui';\nimport { useCountryInfo } from '../hooks';\n\nconst {\n utils: { setSearchString, getAppliedFilters },\n} = core;\n\nconst {\n actions: { setActiveMobileCountryKey },\n} = ui;\n\ninterface Input {\n countryCode: string;\n tournaments: API.CategorizerItem[];\n}\n\ninterface Output {\n totalCount: number;\n handleClickCountryRegion: VoidFn;\n}\n\nconst useCountryRegionItem = ({ countryCode, tournaments }: Input): Output => {\n const dispatch = useDispatch();\n\n const { tournamentIds, totalCount } = useCountryInfo({ tournaments });\n\n const handleClickCountryRegion = useCallback(() => {\n dispatch(setActiveMobileCountryKey(countryCode));\n\n const firstTournamentId = tournamentIds[0];\n\n setSearchString({\n ...getAppliedFilters(),\n tournamentId: undefined,\n tournamentIds: firstTournamentId ? [firstTournamentId] : undefined,\n });\n }, [dispatch, countryCode, tournamentIds]);\n\n return {\n totalCount,\n handleClickCountryRegion,\n };\n};\n\nexport default useCountryRegionItem;\n","import React from 'react';\nimport { API } from '@gin-betting/core';\n\nimport { Icon } from 'components';\nimport CountryTitle from '../CountryTitle';\nimport useCountryRegionItem from './useCountryRegionItem';\n\nimport arrowRight from 'assets/svg/arrow-left.svg';\nimport './countryRegionItem.scss';\n\ninterface Props {\n tournaments: API.CategorizerItem[];\n countryCode: string;\n countryName: string;\n}\n\nconst CountryRegionItem: React.FC = ({\n tournaments,\n countryCode,\n countryName,\n}) => {\n const { totalCount, handleClickCountryRegion } = useCountryRegionItem({\n countryCode,\n tournaments,\n });\n\n return (\n
\n \n
\n
{totalCount}
\n \n
\n
\n );\n};\n\nexport default React.memo(CountryRegionItem);\n","import React, { FC, Fragment } from 'react';\nimport { GQL } from '@gin-betting/core';\n\nimport { countryReg } from 'app-constants';\nimport { FlagIcon } from 'components';\nimport { getTournamentCountryCode } from '../../../utils';\n\ninterface InputProps {\n item: GQL.CategorizerItem;\n withFlag?: boolean;\n}\n\nconst TournamentTitle: FC = ({ item, withFlag = true }) => (\n \n {item.name.replace(countryReg, '')}\n {withFlag && (\n \n  \n \n \n )}\n \n);\n\nexport default TournamentTitle;\n","import { useCallback, useContext, useDebugValue, useEffect } from 'react';\nimport { useIntl } from 'react-intl';\nimport { useDispatch, useSelector } from 'react-redux';\nimport core, { API } from '@gin-betting/core';\nimport filters from '@gin-betting/filters';\n\nimport { useAppliedFilters, useMemoSelector, usePrevious } from 'hooks';\nimport ui from 'modules/ui';\nimport { ALL, OverlayType, SPORTS_ORGANIZATION } from '../../../constants';\nimport type { LocationInfo, TournamentInfo } from '../../../types';\nimport { getItemsByLocation } from '../../../utils';\nimport { MobileFiltersCtx } from '../MobileFiltersCtx';\n\ninterface Output {\n sportItem?: API.CategorizerItem;\n closeOverlay: VoidFunction;\n isClassic: boolean;\n tournamentsWithLocation: TournamentInfo[];\n tournamentsWithoutLocation: API.CategorizerItem[];\n activeMobileCountryKey: string;\n isGroupedByOrganization: boolean;\n makeHandleClickAll: (tournamentIds: string[]) => VoidFunction;\n}\n\nconst {\n constants: { SportType },\n entities: {\n selectors: { selectSports },\n },\n utils: { setSearchString, getSportTypeBySport },\n} = core;\n\nconst {\n selectors: { selectCategorizerData },\n} = filters;\n\nconst {\n selectors: { selectActiveMobileCountryKey },\n actions: { setActiveMobileCountryKey },\n} = ui;\n\nconst DEFAULT_ITEMS = {\n tournamentsWithLocation: [],\n tournamentsWithoutLocation: [],\n};\n\nconst useTournamentList = (): Output => {\n const dispatch = useDispatch();\n const { setOverlay } = useContext(MobileFiltersCtx);\n const { sportId } = useAppliedFilters();\n\n const { formatMessage } = useIntl();\n\n const categorizerData = useSelector(selectCategorizerData);\n\n const activeMobileCountryKey = useMemoSelector(\n selectActiveMobileCountryKey\n );\n\n const sportItem = sportId\n ? categorizerData.find(i => i.value === sportId)\n : undefined;\n\n const closeOverlay = useCallback(() => {\n setOverlay(OverlayType.NONE);\n }, [setOverlay]);\n\n const isGroupedByOrganization =\n !!sportItem && SPORTS_ORGANIZATION.includes(sportItem.value);\n\n const prevSportId = usePrevious(sportId);\n\n const sports = useMemoSelector(selectSports, []);\n const sport = sportItem && sports.get(sportItem.value);\n const isClassic = getSportTypeBySport(sport) === SportType.Classic;\n\n const partitionTournaments = useCallback(\n (categorizerItem: API.CategorizerItem | undefined): LocationInfo => {\n if (!categorizerItem) return DEFAULT_ITEMS;\n\n if (!isClassic) {\n return {\n tournamentsWithLocation: [],\n tournamentsWithoutLocation: categorizerItem.children,\n };\n }\n\n return getItemsByLocation({\n tournaments: categorizerItem.children,\n sportId: categorizerItem.value,\n formatMessage,\n });\n },\n [isClassic, formatMessage]\n );\n\n const makeHandleClickAll = useCallback(\n (tournamentIds: string[]) => () => {\n setSearchString({\n sportId,\n tournamentIds,\n });\n closeOverlay();\n dispatch(setActiveMobileCountryKey(ALL));\n },\n [closeOverlay, dispatch, sportId]\n );\n\n useEffect(() => {\n if (sportId && prevSportId && sportId !== prevSportId) {\n setSearchString({\n sportId,\n tournamentIds: undefined,\n });\n }\n }, [prevSportId, sportId]);\n\n useDebugValue({\n sportItem,\n isGroupedByOrganization,\n });\n\n const {\n tournamentsWithLocation,\n tournamentsWithoutLocation,\n } = partitionTournaments(sportItem);\n\n return {\n sportItem,\n closeOverlay,\n isClassic,\n tournamentsWithLocation,\n tournamentsWithoutLocation,\n activeMobileCountryKey,\n isGroupedByOrganization,\n makeHandleClickAll,\n };\n};\n\nexport default useTournamentList;\n","import React from 'react';\nimport { useIntl } from 'react-intl';\nimport { API, GQL } from '@gin-betting/core';\nimport { map } from 'lodash';\n\nimport features from 'services/feature-manager';\nimport { ALL } from '../../../constants';\nimport {\n getSelectedCountryKeyInfo,\n sortByTopTournaments,\n} from '../../../utils';\nimport messages from '../../Categorizer/messages.js'; // TODO: probably need to move this in root translations\nimport ActiveRegionItem from './ActiveRegionItem';\nimport CountryRegionItem from './CountryRegionItem';\nimport { SportSummaryRow } from './SportSummaryRow';\nimport TournamentItem from './TournamentItem';\nimport TournamentItemWrapper from './TournamentItemWrapper';\nimport TournamentTitle from './TournamentTitle';\nimport useTournamentList from './useTournamentList';\n\ninterface Props {\n items: GQL.CategorizerItem[];\n withSportSummary?: boolean;\n isOrganization?: boolean;\n}\n\nconst TournamentList: React.FC = ({\n items,\n withSportSummary = true,\n isOrganization,\n}) => {\n const { formatMessage } = useIntl();\n const {\n isClassic,\n tournamentsWithLocation,\n tournamentsWithoutLocation,\n activeMobileCountryKey,\n closeOverlay,\n makeHandleClickAll,\n } = useTournamentList();\n const isActiveTopTournaments = features.isActive(\n features.list.CategorizerTopTournaments\n );\n\n const renderTournaments = (\n categorizerItems: API.CategorizerItem[],\n options: { withFlag: boolean } = { withFlag: true }\n ) =>\n map(categorizerItems, item => (\n \n \n }\n />\n \n ));\n\n const renderContent = (\n tournamentItems: API.CategorizerItem[],\n groupItems: JSX.Element[] | null = null\n ) => {\n const ids = tournamentItems.map(i => i.value);\n\n return (\n \n \n \n \n {withSportSummary && }\n {groupItems}\n\n {renderTournaments(\n isActiveTopTournaments\n ? sortByTopTournaments(tournamentItems)\n : tournamentItems\n )}\n \n );\n };\n\n if ((!isClassic && activeMobileCountryKey === ALL) || isOrganization) {\n return renderContent(items);\n }\n\n const { selectedCountryKey } = getSelectedCountryKeyInfo(\n activeMobileCountryKey\n );\n\n const region = tournamentsWithLocation.find(\n ({ countryCode }) => countryCode === selectedCountryKey\n );\n\n if (selectedCountryKey && region) {\n return (\n \n {renderTournaments(\n isActiveTopTournaments\n ? sortByTopTournaments(region.items)\n : region.items,\n {\n withFlag: false,\n }\n )}\n \n );\n }\n\n return renderContent(\n tournamentsWithoutLocation,\n map(\n tournamentsWithLocation,\n ({ items: tournaments, countryCode, countryName }) => (\n \n )\n )\n );\n};\n\nexport default TournamentList;\n","import React, { Fragment } from 'react';\n\nimport { OrganizationIcon } from 'components';\nimport { CategorizerItemByOrganizations } from '../../../../types';\nimport BackLink from '../../BackLink';\nimport TournamentList from '../TournamentList';\n\nimport './tournamentsByOrganization.scss';\n\ninterface Props {\n selectedOrganization: CategorizerItemByOrganizations;\n onBackClick: VoidFn;\n}\n\nconst TournamentsByOrganization: React.FC = ({\n selectedOrganization,\n onBackClick,\n}) => {\n const { name, items, logo } = selectedOrganization;\n\n return (\n \n \n \n {name}\n \n }\n />\n\n \n \n );\n};\n\nexport default TournamentsByOrganization;\n","import { useState } from 'react';\nimport { API } from '@gin-betting/core';\n\nimport features from 'services/feature-manager';\nimport { CategorizerItemByOrganizations } from '../../../../types';\nimport {\n groupCategorizerItemsByOrganizations,\n sortByTopTournaments,\n} from '../../../../utils';\n\ninterface Input {\n sportItem: API.CategorizerItem;\n}\n\ninterface Output {\n categorizerItemsByOrganizations:\n | CategorizerItemByOrganizations[]\n | undefined;\n selectedOrganization: CategorizerItemByOrganizations | undefined;\n selectOrganization: (organizationName?: string) => void;\n}\n\nconst useOrganizationContainer = ({\n sportItem: { children, value },\n}: Input): Output => {\n const [activeOrganization, setActiveOrganization] = useState<\n string | undefined\n >();\n\n const isActiveTopTournaments = features.isActive(\n features.list.CategorizerTopTournaments\n );\n\n const categorizerItemsByOrganizations = groupCategorizerItemsByOrganizations(\n isActiveTopTournaments ? sortByTopTournaments(children) : children,\n value\n );\n const organization = categorizerItemsByOrganizations.find(\n ({ name }) => activeOrganization === name\n );\n\n const selectOrganization = (organizationName?: string) => {\n if (typeof organizationName !== 'string') {\n return setActiveOrganization(undefined);\n }\n\n setActiveOrganization(organizationName);\n };\n\n return {\n categorizerItemsByOrganizations,\n selectedOrganization: organization,\n selectOrganization,\n };\n};\n\nexport default useOrganizationContainer;\n","import React from 'react';\nimport { API } from '@gin-betting/core';\n\nimport OrganizationList from '../OrganizationList/OrganizationList';\nimport TournamentsByOrganization from '../TournamentsByOrganization';\nimport useOrganizationContainer from './useOrganizationContainer';\n\ninterface Props {\n sportItem: API.CategorizerItem;\n}\n\nconst OrganizationContainer: React.FC = ({ sportItem }) => {\n const {\n categorizerItemsByOrganizations,\n selectedOrganization,\n selectOrganization,\n } = useOrganizationContainer({ sportItem });\n\n if (selectedOrganization) {\n return (\n \n );\n }\n\n return (\n \n );\n};\n\nexport default React.memo(OrganizationContainer);\n","import React from 'react';\n\nimport { useOutrightsCountBySport } from '../../../hooks';\nimport { OutrightsBySportContext } from '../OutrightsBySportContext';\nimport OrganizationContainer from './OrganizationContainer';\nimport TournamentList from './TournamentList';\nimport useTournamentList from './useTournamentList';\n\nconst TournamentListContainer: React.FC = () => {\n const { sportItem, isGroupedByOrganization } = useTournamentList();\n\n const contextValue = useOutrightsCountBySport();\n\n if (!sportItem) return null;\n\n return (\n \n {isGroupedByOrganization ? (\n \n ) : (\n \n )}\n \n );\n};\n\nexport default React.memo(TournamentListContainer);\n","import React, { useContext } from 'react';\n\nimport { OverlayType } from '../../../constants';\nimport { canFilterByTournamentOnMobile } from '../../../utils';\nimport FeaturedTournamentsList from '../FeaturedTournamentsList';\nimport { MobileFiltersCtx } from '../MobileFiltersCtx';\nimport TournamentList from '../TournamentList';\n\nconst Overlay: React.FC = () => {\n const { currentOverlay } = useContext(MobileFiltersCtx);\n\n switch (currentOverlay) {\n case OverlayType.FEATURED_TOURNAMENTS_LIST: {\n return ;\n }\n\n case OverlayType.TOURNAMENT_LIST: {\n if (!canFilterByTournamentOnMobile()) return null;\n\n return ;\n }\n\n default: {\n return null;\n }\n }\n};\n\nexport default Overlay;\n","import { useContext, useMemo } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport core, { API, App } from '@gin-betting/core';\nimport filters from '@gin-betting/filters';\n\nimport { BettingWidgets } from 'app-constants';\nimport { useAppliedFilters, useWidgetSettings } from 'hooks';\nimport ui from 'modules/ui';\nimport { State } from 'types';\nimport { OverlayType } from '../../../constants';\nimport { useOutrightsCountBySport } from '../../../hooks';\nimport { getSortedCategorizerItems } from '../../../utils';\nimport { MobileFiltersCtx } from '../MobileFiltersCtx';\n\nconst {\n selectors: { selectCategorizerData },\n} = filters;\nconst {\n entities: {\n selectors: { selectSports },\n },\n utils: { getSportTypeFromLocation, checkOnRoute },\n} = core;\nconst {\n actions: { setActiveMobileCountryKey },\n} = ui;\n\ninterface Output {\n categorizerItems: API.CategorizerItem[];\n handleLinkClick: VoidFn;\n sportId?: string;\n}\n\nconst selectProps = (state: State) => {\n const sports = selectSports(state);\n const categorizerItems = selectCategorizerData(state);\n\n return { sports, categorizerItems };\n};\n\nfunction useSportsList(): Output {\n const dispatch = useDispatch();\n const { setOverlay } = useContext(MobileFiltersCtx);\n const { sportId } = useAppliedFilters();\n\n const {\n categorizerItems: outrightCategorizerItems,\n } = useOutrightsCountBySport();\n\n const sportType = getSportTypeFromLocation();\n\n const { sportsOrder } = useWidgetSettings({\n widget: BettingWidgets.CATEGORIZER,\n });\n\n const { sports, categorizerItems } = useSelector((state: State) =>\n selectProps(state)\n );\n\n const sortedCategorizerItems = useMemo(\n () =>\n getSortedCategorizerItems({\n sportType,\n sports,\n sportsOrder,\n categorizerItems,\n outrightCategorizerItems,\n }),\n [\n sportType,\n sports,\n categorizerItems,\n outrightCategorizerItems,\n sportsOrder,\n ]\n );\n\n const handleLinkClick = () => {\n dispatch(setActiveMobileCountryKey(''));\n\n if (!checkOnRoute(App.Routes.RESULTS_LIST)) return;\n\n setOverlay(OverlayType.TOURNAMENT_LIST);\n };\n\n return {\n sportId,\n handleLinkClick,\n categorizerItems: sortedCategorizerItems,\n };\n}\n\nexport default useSportsList;\n","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport { includes, map } from 'lodash';\n\nimport {\n CategorizerTournamentMetaKey,\n OUTRIGHTS_ONLY_SPORTS,\n} from 'app-constants';\nimport { GameLogo, SportFilterHeading } from 'components';\nimport {\n getSearchString,\n getSummaryPath,\n hasAnyMetaEventsInCategorizer,\n} from '../../../utils';\nimport useSportsList from './useSportsList';\n\nconst SportsList: React.FC = () => {\n const { categorizerItems, handleLinkClick, sportId } = useSportsList();\n\n return (\n \n {map(categorizerItems, ({ value, name, meta }) => (\n \n }\n title={name}\n isLive={hasAnyMetaEventsInCategorizer(\n meta,\n CategorizerTournamentMetaKey.LiveEventsCount\n )}\n />\n \n ))}\n \n );\n};\n\nexport default React.memo(SportsList);\n\nconst getLinkTo = (value: string): { search: string; pathname?: string } => {\n if (includes(OUTRIGHTS_ONLY_SPORTS, value)) {\n return getSummaryPath(value);\n }\n\n return {\n search: getSearchString({\n sportId: value,\n tournamentId: undefined,\n tournamentIds: undefined,\n }),\n };\n};\n","import { useContext, useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport core, { App } from '@gin-betting/core';\nimport filters from '@gin-betting/filters';\nimport { createSelector } from 'reselect';\n\nimport { useAppliedFilters, useMemoSelector, useWithLocation } from 'hooks';\nimport ui from 'modules/ui';\nimport type { State } from 'types';\nimport { checkIsDynamicCategorizer } from 'utils';\nimport { OverlayType } from '../../constants';\nimport {\n getCategorizerVars,\n getFormattedCountryCode,\n getSelectedCountryKeyInfo,\n} from '../../utils';\nimport { MobileFiltersCtx } from './MobileFiltersCtx';\n\ninterface Output {\n selectedCountryKey: string;\n countryCode: string | null | undefined;\n isSelectedCountryCodeWithAll: boolean;\n handleClickBack: VoidFn;\n tournamentName: string | undefined;\n tournamentId: string | undefined;\n currentOverlay: OverlayType;\n withSportNavigation: boolean;\n}\n\nconst {\n entities: {\n selectors: { selectTournaments },\n },\n poller: { usePoller },\n utils: { setSearchString },\n hooks: { useDeepMemo },\n} = core;\n\nconst {\n actions: { getCategorizer },\n} = filters;\n\nconst {\n actions: { openFilter, closeFilter, setActiveMobileCountryKey },\n selectors: { selectActiveMobileCountryKey },\n} = ui;\n\nfunction useMobileFilters(): Output {\n const { currentOverlay, setOverlay } = useContext(MobileFiltersCtx);\n const dispatch = useDispatch();\n const currentFilters = useAppliedFilters();\n const { vars, withSportNavigation } = useWithLocation(() => ({\n withSportNavigation:\n !checkIsDynamicCategorizer() &&\n currentOverlay !== OverlayType.FEATURED_TOURNAMENTS_LIST,\n vars: getCategorizerVars(),\n }));\n const variables = useDeepMemo(vars);\n\n const { tournamentId, tournamentIds } = currentFilters;\n\n const { tournamentName, countryCode, activeCountryKey } = useMemoSelector(\n selectProps,\n {\n tournamentId: tournamentId || tournamentIds?.[0],\n }\n );\n\n const { requestContent } = usePoller({\n pollerName: App.PollerName.Categorizer,\n executableAction: getCategorizer,\n variables,\n skipInitialRequest: true,\n });\n\n const {\n selectedCountryKey,\n isSelectedCountryCodeWithAll,\n } = getSelectedCountryKeyInfo(activeCountryKey);\n\n const handleClickBack = () => {\n if (isSelectedCountryCodeWithAll) {\n dispatch(setActiveMobileCountryKey(selectedCountryKey));\n\n setSearchString({\n ...currentFilters,\n tournamentId: undefined,\n tournamentIds: tournamentIds?.[0]\n ? [tournamentIds?.[0]]\n : undefined,\n });\n\n setOverlay(OverlayType.TOURNAMENT_LIST);\n\n return;\n }\n\n if (!tournamentId) {\n dispatch(setActiveMobileCountryKey(''));\n setOverlay(OverlayType.TOURNAMENT_LIST);\n\n return;\n }\n\n if (countryCode) {\n dispatch(setActiveMobileCountryKey(countryCode));\n }\n\n setSearchString({\n ...currentFilters,\n tournamentId: undefined,\n tournamentIds: countryCode ? [tournamentId] : undefined,\n });\n };\n\n useEffect(() => {\n dispatch(\n currentOverlay === OverlayType.NONE ? closeFilter() : openFilter()\n );\n }, [currentOverlay, dispatch]);\n\n useEffect(() => {\n requestContent();\n }, [variables, requestContent]);\n\n return {\n currentOverlay,\n selectedCountryKey,\n isSelectedCountryCodeWithAll,\n handleClickBack,\n countryCode,\n tournamentName,\n tournamentId: tournamentId || tournamentIds?.[0],\n withSportNavigation,\n };\n}\n\nconst selectTournamentIdFromProps = (\n _state: State,\n props: T\n): string => props.tournamentId;\n\nconst selectTournament = createSelector(\n selectTournamentIdFromProps,\n selectTournaments,\n (tournamentId, tournaments) => {\n if (!tournamentId) return;\n\n return tournaments.get(tournamentId);\n }\n);\n\nconst selectProps = createSelector(\n selectTournament,\n selectActiveMobileCountryKey,\n (tournament, activeCountryKey) => ({\n tournamentName: tournament?.name,\n countryCode: tournament?.countryCode\n ? getFormattedCountryCode(tournament?.countryCode)\n : tournament?.countryCode,\n activeCountryKey,\n })\n);\n\nexport default useMobileFilters;\n","import React from 'react';\nimport { useIntl } from 'react-intl';\n\nimport { FlagIcon } from 'components';\nimport { ALL, OverlayType } from '../../constants';\nimport { canFilterByTimePeriods, getNameByCountryCode } from '../../utils';\nimport messages from '../Categorizer/messages.js'; // TODO: probably need to move this in root translations\nimport FilterByTimePeriod from '../FilterByTimePeriod';\nimport SportsNavigation from '../SportsNavigation';\nimport BackLink from './BackLink';\nimport FeaturedTournamentsHeading from './FeaturedTournamentsHeading';\nimport FilterBySportHeading from './FilterBySportHeading';\nimport Overlay from './Overlay';\nimport SportsList from './SportsList';\nimport useMobileFilters from './useMobileFilters';\n\nimport './mobileFilters.scss';\n\nconst MobileFilters: React.FC = () => {\n const { formatMessage } = useIntl();\n const {\n selectedCountryKey,\n isSelectedCountryCodeWithAll,\n handleClickBack,\n countryCode,\n tournamentName,\n tournamentId,\n currentOverlay,\n withSportNavigation,\n } = useMobileFilters();\n\n const BackLinkTitle = isSelectedCountryCodeWithAll ? (\n
\n \n {getNameByCountryCode(formatMessage, selectedCountryKey)}\n
\n ) : (\n
\n {countryCode && }\n {selectedCountryKey === ALL\n ? formatMessage(messages.selectAll)\n : tournamentName}\n
\n );\n\n return (\n
\n {canFilterByTimePeriods() && }\n\n
\n \n \n \n
\n\n {withSportNavigation && }\n\n {currentOverlay === OverlayType.NONE && tournamentId && (\n \n )}\n \n
\n );\n};\n\nexport default React.memo(MobileFilters);\n","import filters, { Filters } from '@gin-betting/filters';\n\nimport moduleLocator from 'moduleLocator';\nimport { MobileFiltersCtx } from './components/MobileFilters/MobileFiltersCtx';\nimport * as components from './components';\nimport * as constants from './constants';\nimport * as utils from './utils';\n\nexport type { Filters };\n\nconst filtersModule = {\n ...filters,\n components,\n MobileFiltersCtx,\n utils: { ...filters.utils, ...utils },\n constants: { ...filters.constants, ...constants },\n};\n\nmoduleLocator.set('filters', { default: filtersModule });\n\nexport default filtersModule;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Filters = void 0;\nvar actions = __importStar(require(\"./actions\"));\nvar selectors = __importStar(require(\"./selectors\"));\nvar FiltersType = __importStar(require(\"./types\"));\nexports.Filters = FiltersType;\nvar constants = __importStar(require(\"./constants\"));\nvar utils = __importStar(require(\"./utils\"));\nvar reducer_1 = __importDefault(require(\"./reducer\"));\nexports.default = { actions: actions, selectors: selectors, reducer: reducer_1.default, constants: constants, utils: utils };\n//# sourceMappingURL=index.js.map","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"categorizerBody__container___SC5_c\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"filters\":\"categorizerRow__filters____WrCQ\"};","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.searchMatchesByText = exports.Actions = exports.initControlsByLocation = exports.resetCategorizerControls = exports.unselectGamesWithoutSelectedTournaments = exports.selectGame = exports.changeFixedTournamentIds = exports.toggleCategorizer = exports.closeCategorizer = exports.openCategorizer = exports.toggleFilters = exports.getCategorizer = exports.filterMatches = void 0;\nvar core_1 = __importDefault(require(\"@gin-betting/core\"));\nvar lodash_1 = require(\"lodash\");\nvar selectors_1 = require(\"./selectors\");\nvar constants_1 = require(\"./constants\");\nvar _a = core_1.default.utils, getAppliedFilters = _a.getAppliedFilters, setSearchString = _a.setSearchString, getDefaultVariables = _a.getDefaultVariables, makeAction = _a.makeAction, getMatchStatusesByLocation = _a.getMatchStatusesByLocation;\nvar makeSearchMatchesFn = core_1.default.entities.actions.makeSearchMatchesFn;\nvar searchMatches = makeSearchMatchesFn(constants_1.SEARCH_MATCHES_REQUEST);\nvar searchMatchesByFilters = makeSearchMatchesFn(constants_1.FILTER_MATCHES_REQUEST);\nvar filterMatches = function (filters) {\n setSearchString(__assign(__assign({}, getAppliedFilters()), filters));\n return searchMatchesByFilters();\n};\nexports.filterMatches = filterMatches;\nvar getCategorizer = function (inputVariables) {\n var variables = inputVariables || __assign(__assign({}, getDefaultVariables()), { matchStatuses: getMatchStatusesByLocation() });\n return {\n type: constants_1.GET_CATEGORIZER_REQUEST,\n payload: {\n method: 'getCategorizer',\n variables: variables,\n },\n meta: { isApiCall: true },\n };\n};\nexports.getCategorizer = getCategorizer;\nvar toggleFilters = function () { return makeAction(constants_1.TOGGLE_FILTERS); };\nexports.toggleFilters = toggleFilters;\nvar openCategorizer = function () { return makeAction(constants_1.OPEN_CATEGORIZER); };\nexports.openCategorizer = openCategorizer;\nvar closeCategorizer = function () { return makeAction(constants_1.CLOSE_CATEGORIZER); };\nexports.closeCategorizer = closeCategorizer;\nvar toggleCategorizer = function (isOpen) { return function (dispatch, getState) {\n var currentOpenStatus = selectors_1.selectCategorizerOpenStatus(getState());\n var nextOpenStatus = lodash_1.isBoolean(isOpen) ? isOpen : !currentOpenStatus;\n if (nextOpenStatus === currentOpenStatus)\n return;\n dispatch(nextOpenStatus ? exports.openCategorizer() : exports.closeCategorizer());\n}; };\nexports.toggleCategorizer = toggleCategorizer;\nvar changeFixedTournamentIds = function (options) { return makeAction(constants_1.CHANGE_FIXED_TOURNAMENTS, options); };\nexports.changeFixedTournamentIds = changeFixedTournamentIds;\nvar selectGame = function (options) {\n return makeAction(constants_1.SELECT_GAME, options);\n};\nexports.selectGame = selectGame;\nvar unselectGamesWithoutSelectedTournaments = function () {\n return makeAction(constants_1.UNSELECT_GAMES_WITHOUT_SELECTED_TOURNAMENTS);\n};\nexports.unselectGamesWithoutSelectedTournaments = unselectGamesWithoutSelectedTournaments;\nvar resetCategorizerControls = function () {\n return makeAction(constants_1.RESET_CATEGORIZER_CONTROL_FIELDS);\n};\nexports.resetCategorizerControls = resetCategorizerControls;\nvar initControlsByLocation = function () {\n return makeAction(constants_1.INIT_CATEGORIZER_CONTROLS_BY_LOCATION);\n};\nexports.initControlsByLocation = initControlsByLocation;\nexports.Actions = {\n filterMatches: exports.filterMatches,\n getCategorizer: exports.getCategorizer,\n toggleFilters: exports.toggleFilters,\n changeFixedTournamentIds: exports.changeFixedTournamentIds,\n selectGame: exports.selectGame,\n resetCategorizerControls: exports.resetCategorizerControls,\n initControlsByLocation: exports.initControlsByLocation,\n unselectGamesWithoutSelectedTournaments: exports.unselectGamesWithoutSelectedTournaments,\n closeCategorizer: exports.closeCategorizer,\n openCategorizer: exports.openCategorizer,\n};\nvar searchMatchesByText = function (filters) {\n setSearchString(__assign(__assign({}, getAppliedFilters()), filters));\n return searchMatches();\n};\nexports.searchMatchesByText = searchMatchesByText;\n//# sourceMappingURL=actions.js.map","// extracted by mini-css-extract-plugin\nmodule.exports = {\"row\":\"categorizerCheckRow__row___EW7wX\",\"checked\":\"categorizerCheckRow__checked___3U52a\",\"label\":\"categorizerCheckRow__label___1UBRI\",\"counter\":\"categorizerCheckRow__counter___3rFMF\"};","import { Sports, WORLD_REGIONS_CODES } from '@gin-betting/constants';\nimport core, { App } from '@gin-betting/core';\nimport { keys } from 'lodash';\n\nimport { Product } from 'app-constants';\nimport { TimeInterval, TimeIntervalBoundary } from './types';\n\nconst {\n constants: { SportType },\n} = core;\n\nexport const FILTER_TIME_PERIODS: App.TimePeriodVariants[] = [\n App.TimePeriodVariants.ONE_HOUR,\n App.TimePeriodVariants.TODAY,\n App.TimePeriodVariants.YESTERDAY,\n App.TimePeriodVariants.THREE_DAYS,\n App.TimePeriodVariants.WEEK,\n];\n\nexport const INTERVAL_ALL = 0;\n\nexport const TIME_INTERVAL_ALL: TimeInterval = {\n interval: INTERVAL_ALL,\n displayedValue: INTERVAL_ALL,\n unit: 'minute',\n};\n\nexport const customFlagsMapping = {\n ENG: 'GB',\n EU: 'EU',\n};\n\nexport const ACTIVE_COUNTRY_KEY_DIVIDER = '~' as const;\n\nexport const DEFAULT_TIME_PERIOD = App.TimePeriodVariants.YESTERDAY;\n\nexport const TIME_FILTER_NEXT_TO_GO_BOUNDARY: TimeIntervalBoundary = {\n filteringKey: 'dateTo',\n interval: 1,\n unit: 'day',\n};\n\nexport const UNGROUPED_CATEGORIES_KEY = 'other' as const;\n\nconst STATIC_SPORTS_ALL = [\n Sports.ESPORTS_COUNTER_STRIKE,\n Sports.ESPORTS_DOTA_2,\n Sports.FOOTBALL,\n Sports.BASKETBALL,\n Sports.TENNIS,\n Sports.ICE_HOCKEY,\n Sports.TABLE_TENNIS,\n Sports.ESPORTS_LEAGUE_OF_LEGENDS,\n Sports.ESPORTS_BASKETBALL,\n Sports.ESPORTS_FIFA,\n Sports.ESPORTS_VALORANT,\n Sports.ESPORTS_FORTNITE,\n] as const;\n\nconst STATIC_SPORTS_ESPORT = [\n Sports.ESPORTS_COUNTER_STRIKE,\n Sports.ESPORTS_DOTA_2,\n Sports.ESPORTS_FIFA,\n Sports.ESPORTS_LEAGUE_OF_LEGENDS,\n Sports.ESPORTS_FORTNITE,\n] as const;\n\nconst STATIC_SPORTS_CLASSIC = [\n Sports.FOOTBALL,\n Sports.BASKETBALL,\n Sports.TENNIS,\n Sports.ICE_HOCKEY,\n Sports.VOLLEYBALL,\n Sports.TABLE_TENNIS,\n Sports.HANDBALL,\n] as const;\n\nexport const CATEGORIZER_STATIC_SPORTS_BY_TYPE: Record<\n App.SportType,\n readonly string[]\n> = {\n [SportType.Mix]: STATIC_SPORTS_ALL,\n [SportType.Esport]: STATIC_SPORTS_ESPORT,\n [SportType.Classic]: STATIC_SPORTS_CLASSIC,\n};\n\nexport const EXCLUDED_WORLD_REGIONS = ['GB-ENG', 'GB-SCT', 'GB-WLS', 'GB-NIR'];\n\nexport const WORLD_REGIONS = keys(WORLD_REGIONS_CODES).filter(\n code => !EXCLUDED_WORLD_REGIONS.includes(code)\n);\n\nexport const ALL = 'all' as const;\n\nexport const ORDER_CATEGORIZER_ITEMS_MAPPING = {\n [Sports.FOOTBALL]: {\n [Product.ru]: ['RU', 'GB-ENG', 'ES', 'DE', 'IT', 'FR'],\n [Product.bet]: ['GB-ENG', 'ES', 'DE', 'IT', 'FR', 'RU', 'UA'],\n [Product.com]: ['GB-ENG', 'ES', 'DE', 'IT', 'FR', 'RU', 'UA'],\n [Product.ua]: ['UA', 'GB-ENG', 'ES', 'DE', 'IT', 'FR', 'RU'],\n },\n [Sports.BASKETBALL]: {\n [Product.ru]: ['RU', 'US', 'ES', 'PH', 'CN', 'DE', 'IT', 'FR'],\n [Product.bet]: ['US', 'CN', 'RU', 'ES', 'DE', 'IT', 'FR', 'PH', 'UA'],\n [Product.com]: ['US', 'CN', 'RU', 'ES', 'DE', 'IT', 'FR', 'PH', 'UA'],\n [Product.ua]: ['UA', 'US', 'ES', 'PH', 'CN', 'DE', 'IT', 'FR', 'RU'],\n },\n [Sports.ICE_HOCKEY]: {\n [Product.ru]: ['RU', 'US', 'BY', 'KZ', 'FI', 'SE', 'CH', 'UA'],\n [Product.bet]: ['US', 'RU', 'FI', 'SE', 'CH', 'BY', 'KZ', 'UA'],\n [Product.com]: ['US', 'RU', 'FI', 'SE', 'CH', 'BY', 'KZ', 'UA'],\n [Product.ua]: ['US', 'UA', 'RU', 'BY', 'KZ', 'FI', 'SE', 'CH'],\n },\n [Sports.VOLLEYBALL]: {\n [Product.ru]: ['RU', 'BY', 'KZ', 'US', 'PL', 'ES', 'IT', 'TR'],\n [Product.bet]: ['US', 'ES', 'IT', 'TR', 'PL', 'RU'],\n [Product.com]: ['US', 'ES', 'IT', 'TR', 'PL', 'RU'],\n [Product.ua]: ['UA', 'US', 'RU', 'BY', 'KZ', 'PL', 'ES', 'IT', 'TR'],\n },\n [Sports.TABLE_TENNIS]: {\n [Product.ru]: ['RU', 'UA'],\n [Product.bet]: ['RU', 'UA'],\n [Product.com]: ['RU', 'UA'],\n [Product.ua]: ['UA', 'RU'],\n },\n [Sports.HANDBALL]: {\n [Product.ru]: ['RU', 'HU', 'DE', 'DK', 'ES', 'FR', 'NO', 'PL'],\n [Product.bet]: ['DE', 'ES', 'FR', 'DK', 'RU', 'NO', 'HU', 'PL', 'UA'],\n [Product.com]: ['DE', 'ES', 'FR', 'DK', 'RU', 'NO', 'HU', 'PL', 'UA'],\n [Product.ua]: ['UA', 'DE', 'ES', 'FR', 'DK', 'RU', 'NO', 'HU', 'PL'],\n },\n};\n\nexport const SPORTS_ORGANIZATION = ['tennis'];\n\nexport enum CategorizerRowType {\n Subgroup = 'subgroup',\n Tournament = 'tournament',\n}\n\nexport enum OverlayType {\n NONE = 'NONE',\n TOURNAMENT_LIST = 'TOURNAMENT_LIST',\n FEATURED_TOURNAMENTS_LIST = 'FEATURED_TOURNAMENTS_LIST',\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.selectEntityByCategorizerItem = exports.selectValueFromCategorizerItemProps = exports.selectFilterOpenStatus = exports.selectCategorizerOpenStatus = exports.selectCategorizerData = exports.selectCategorizerFetchStatus = exports.selectFixedTournamentIds = exports.selectOpenedGameIds = exports.selectCategorizer = exports.selectFilters = void 0;\nvar reselect_1 = require(\"reselect\");\nvar core_1 = __importDefault(require(\"@gin-betting/core\"));\nvar fieldMapping = {\n sport_id: 'sports',\n 'tournament.id': 'tournaments',\n 'tournament.master_id': 'tournaments',\n};\nvar selectEntities = core_1.default.entities.selectors.selectEntities;\nvar selectFilters = function (state) { return state.filters; };\nexports.selectFilters = selectFilters;\nexports.selectCategorizer = reselect_1.createSelector(exports.selectFilters, function (filters) { return filters.categorizer; });\nexports.selectOpenedGameIds = reselect_1.createSelector(exports.selectCategorizer, function (categorizer) { return categorizer.openedGameIds; });\nexports.selectFixedTournamentIds = reselect_1.createSelector(exports.selectCategorizer, function (categorizer) { return categorizer.fixedTournamentIds; });\nexports.selectCategorizerFetchStatus = reselect_1.createSelector(exports.selectCategorizer, function (categorizer) { return categorizer.fetchStatus; });\nexports.selectCategorizerData = reselect_1.createSelector(exports.selectCategorizer, function (categorizer) { return categorizer.items; });\nexports.selectCategorizerOpenStatus = reselect_1.createSelector(exports.selectCategorizer, function (categorizer) { return categorizer.isOpen; });\nexports.selectFilterOpenStatus = reselect_1.createSelector(exports.selectFilters, function (filters) { return filters.isOpen; });\nvar selectValueFromCategorizerItemProps = function (_, props) { return ({\n field: props.categorizerItem.field,\n value: props.categorizerItem.value,\n}); };\nexports.selectValueFromCategorizerItemProps = selectValueFromCategorizerItemProps;\nexports.selectEntityByCategorizerItem = reselect_1.createSelector(exports.selectValueFromCategorizerItemProps, selectEntities, function (_a, entities) {\n var field = _a.field, value = _a.value;\n return entities.get(fieldMapping[field]).get(value);\n});\n//# sourceMappingURL=selectors.js.map","// extracted by mini-css-extract-plugin\nmodule.exports = {\"icon\":\"sportSummaryRow__icon___11rmL\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"icon\":\"featuredTournamentsHeading__icon___2jNUe\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"featuredTournamentsItem__container___14tSh\",\"arrow-icon\":\"featuredTournamentsItem__arrow-icon___3DOaD\",\"name\":\"featuredTournamentsItem__name___3AR-H\"};","var baseIteratee = require('./_baseIteratee'),\n baseSum = require('./_baseSum');\n\n/**\n * This method is like `_.sum` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be summed.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the sum.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.sumBy(objects, function(o) { return o.n; });\n * // => 20\n *\n * // The `_.property` iteratee shorthand.\n * _.sumBy(objects, 'n');\n * // => 20\n */\nfunction sumBy(array, iteratee) {\n return (array && array.length)\n ? baseSum(array, baseIteratee(iteratee, 2))\n : 0;\n}\n\nmodule.exports = sumBy;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"header\":\"CategorizerRowHeader__header___2ynt0\",\"is-opened\":\"CategorizerRowHeader__is-opened___pe1_O\",\"has-border\":\"CategorizerRowHeader__has-border___3CdB2\",\"counter\":\"CategorizerRowHeader__counter___1xRCu\",\"label\":\"CategorizerRowHeader__label___LQD65\",\"is-selected\":\"CategorizerRowHeader__is-selected___2OAFf\",\"icon\":\"CategorizerRowHeader__icon___tXTiR\",\"is-active\":\"CategorizerRowHeader__is-active___KvHOj\",\"logo\":\"CategorizerRowHeader__logo___1h3F1\",\"divider\":\"CategorizerRowHeader__divider___2oZor\",\"live\":\"CategorizerRowHeader__live___3VeI0\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"categorizerSportSummaries__container___3P8FW\",\"icon\":\"categorizerSportSummaries__icon___2fjiJ\",\"counter\":\"categorizerSportSummaries__counter___3LiRz\",\"checkbox-placeholder\":\"categorizerSportSummaries__checkbox-placeholder___2q1ir\"};","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n basePickBy = require('./_basePickBy'),\n getAllKeysIn = require('./_getAllKeysIn');\n\n/**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\nfunction pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = baseIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n}\n\nmodule.exports = pickBy;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"categorizerHeading__container___3066H\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"categorizerSubRow__container___fiaGZ\",\"list\":\"categorizerSubRow__list___2QNAz\"};","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SEARCH_MATCHES_FAIL = exports.SEARCH_MATCHES_SUCCESS = exports.SEARCH_MATCHES_REQUEST = exports.RESET_CATEGORIZER_CONTROL_FIELDS = exports.CHANGE_FIXED_TOURNAMENTS = exports.UNSELECT_GAMES_WITHOUT_SELECTED_TOURNAMENTS = exports.SELECT_GAME = exports.INIT_CATEGORIZER_CONTROLS_BY_LOCATION = exports.CLOSE_CATEGORIZER = exports.OPEN_CATEGORIZER = exports.TOGGLE_FILTERS = exports.GET_CATEGORIZER_FAIL = exports.GET_CATEGORIZER_SUCCESS = exports.GET_CATEGORIZER_REQUEST = exports.FILTER_MATCHES_FAIL = exports.FILTER_MATCHES_SUCCESS = exports.FILTER_MATCHES_REQUEST = exports.NAME = void 0;\nexports.NAME = 'filters';\nexports.FILTER_MATCHES_REQUEST = exports.NAME + \"/FILTER_MATCHES:REQUEST\";\nexports.FILTER_MATCHES_SUCCESS = exports.NAME + \"/FILTER_MATCHES:SUCCESS\";\nexports.FILTER_MATCHES_FAIL = exports.NAME + \"/FILTER_MATCHES:FAIL\";\nexports.GET_CATEGORIZER_REQUEST = exports.NAME + \"/GET_CATEGORIZER:REQUEST\";\nexports.GET_CATEGORIZER_SUCCESS = exports.NAME + \"/GET_CATEGORIZER:SUCCESS\";\nexports.GET_CATEGORIZER_FAIL = exports.NAME + \"/GET_CATEGORIZER:FAIL\";\nexports.TOGGLE_FILTERS = exports.NAME + \"/TOGGLE_FILTERS\";\nexports.OPEN_CATEGORIZER = exports.NAME + \"/OPEN_CATEGORIZER\";\nexports.CLOSE_CATEGORIZER = exports.NAME + \"/CLOSE_CATEGORIZER\";\nexports.INIT_CATEGORIZER_CONTROLS_BY_LOCATION = exports.NAME + \"/INIT_CATEGORIZER_CONTROLS_BY_LOCATION\";\nexports.SELECT_GAME = exports.NAME + \"/SELECT_GAME\";\nexports.UNSELECT_GAMES_WITHOUT_SELECTED_TOURNAMENTS = exports.NAME + \"/UNSELECT_GAMES_WITHOUT_SELECTED_TOURNAMENTS\";\nexports.CHANGE_FIXED_TOURNAMENTS = exports.NAME + \"/CHANGE_FIXED_TOURNAMENTS\";\nexports.RESET_CATEGORIZER_CONTROL_FIELDS = exports.NAME + \"/RESET_CATEGORIZER_CONTROL_FIELDS\";\nexports.SEARCH_MATCHES_REQUEST = 'SEARCH/SEARCH_MATCHES:REQUEST';\nexports.SEARCH_MATCHES_SUCCESS = 'SEARCH/SEARCH_MATCHES:SUCCESS';\nexports.SEARCH_MATCHES_FAIL = 'SEARCH/SEARCH_MATCHES:FAIL';\n//# sourceMappingURL=constants.js.map","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"sportsNavigation__container___2EJq2\",\"is-compact\":\"sportsNavigation__is-compact___5D-5k\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"Categorizer__container___1Mf_Q\"};"],"sourceRoot":""}