{"version":3,"sources":["utils/translateTextHelpers.ts","hooks/useI18n.ts","components/layout/Page.tsx","components/layout/Container.tsx","config/constants/types.ts","contexts/RefreshContext.tsx","hooks/useRefresh.ts","config/constants/contracts.ts","config/constants/farms.ts","utils/getRpcUrl.ts","utils/web3.ts","utils/addressHelpers.ts","utils/multicall.ts","state/farms/fetchFarms.ts","state/farms/fetchFarmUser.ts","state/farms/index.ts","config/constants/pools.ts","state/pools/fetchPools.ts","state/pools/fetchPoolsUser.ts","state/pools/index.ts","state/hooks.ts","style/Global.tsx","config/localisation/languageCodes.ts","contexts/Localisation/languageContext.tsx","contexts/ThemeContext.tsx","hooks/useTheme.ts","components/Menu/config.ts","components/Menu/index.tsx","components/PageLoader.tsx","config/index.ts","contexts/BlockContext.tsx","hooks/useBlock.ts","utils/formatBalance.ts","components/layout/Flex.tsx","components/Tags.tsx","views/Pools/components/Card.tsx","views/Pools/components/CardTitle.tsx","views/Pools/components/Coming.tsx","components/UnlockButton.tsx","components/Label/Label.tsx","hooks/useWeb3.ts","config/constants/ifo.ts","config/constants/index.ts","hooks/useContract.ts","utils/callHelpers.ts","hooks/useStake.ts","hooks/useUnstake.ts","components/Balance.tsx","components/Spacer/Spacer.tsx","components/ModalActions/ModalActions.tsx","components/Input/Input.tsx","components/TokenInput/TokenInput.tsx","views/Pools/components/DepositModal.tsx","views/Pools/components/WithdrawModal.tsx","views/Pools/components/CompoundModal.tsx","views/Pools/components/OldPastaTitle.tsx","views/Pools/components/HarvestButton.tsx","views/Pools/components/CardFooter.tsx","views/Pools/components/PoolCard.tsx","hooks/useApprove.ts","hooks/useHarvest.ts","views/Pools/components/PoolTabButtons/index.tsx","views/Pools/components/Divider.tsx","views/Pools/Pasta.tsx","utils/erc20.ts","hooks/useTokenBalance.ts","views/Home/components/CardValue.tsx","views/Home/components/PizzaStats.tsx","hooks/useFarmsWithBalance.ts","hooks/useAllEarnings.ts","views/Home/components/PizzaHarvestBalance.tsx","views/Home/components/PizzaWalletBalance.tsx","views/Home/components/FarmStakingCard.tsx","utils/lotteryUtils.js","hooks/useGetLotteryHasDrawn.ts","hooks/useBuyLottery.ts","hooks/useTickets.ts","components/TicketInput/TicketInput.tsx","views/Lottery/components/TicketCard/BuyTicketModal.tsx","views/Home/components/PizzaWinnings.tsx","views/Home/components/LotteryJackpot.tsx","views/Home/components/LotteryCard.tsx","views/Home/components/TotalValueLockedCard.tsx","views/Home/components/EarnAPYCard.tsx","views/Home/components/EarnAssetCard.tsx","hooks/useLotteryTotalPrizesUsd.ts","views/Home/components/WinCard.tsx","views/Home/Home.tsx","components/ExpandableSectionButton/ExpandableSectionButton.tsx","utils/getLiquidityUrlPathParts.ts","views/Farms/components/FarmCard/DetailsSection.tsx","views/Farms/components/FarmCard/CardHeading.tsx","views/Farms/components/DepositModal.tsx","views/Farms/components/WithdrawModal.tsx","views/Farms/components/FarmCard/StakeAction.tsx","views/Farms/components/FarmCard/HarvestAction.tsx","views/Farms/components/FarmCard/CardActionsContainer.tsx","utils/compoundApyHelpers.ts","views/Farms/components/FarmCard/ApyCalculatorModal.tsx","views/Farms/components/FarmCard/ApyButton.tsx","views/Farms/components/FarmCard/FarmCard.tsx","views/Farms/components/FarmTabButtons/index.tsx","views/Farms/components/Divider.tsx","views/Farms/Farms.tsx","contexts/PastLotteryDataContext.tsx","hooks/useTimer.ts","utils/getTimePeriods.ts","views/Lottery/helpers/CountdownHelpers.ts","views/Lottery/components/LotteryProgress.tsx","views/Lottery/components/Hero.tsx","views/Lottery/components/Divider.tsx","views/Lottery/components/Loading.tsx","views/Lottery/components/TicketCard/UserTicketsModal.tsx","views/Lottery/components/YourPrizesCard/PrizesWonContent.tsx","views/Lottery/components/YourPrizesCard/NoPrizesContent.tsx","views/Lottery/components/YourPrizesCard/index.tsx","views/Lottery/components/UnlockWalletCard.tsx","views/Lottery/components/TicketCard/PurchaseWarningModal.tsx","views/Lottery/components/TicketCard/TicketActions.tsx","hooks/useAllowance.ts","views/Lottery/components/TicketCard/index.tsx","views/Lottery/components/PrizeGrid.tsx","views/Lottery/components/TotalPrizesCard/index.tsx","views/Lottery/components/WinningNumbers.tsx","views/Lottery/components/HowItWorks.tsx","views/Lottery/NextDrawPage.tsx","utils/getLotteryRoundData.ts","views/Lottery/components/PastLotteryRoundViewer/PastLotterySearcher.tsx","views/Lottery/components/PastLotteryRoundViewer/PastRoundCardError.tsx","views/Lottery/components/LotteryCardHeading.tsx","views/Lottery/components/PastLotteryRoundViewer/PastLotteryActions.tsx","views/Lottery/helpers/formatLotteryDate.ts","views/Lottery/components/Timestamp.tsx","views/Lottery/components/PastLotteryRoundViewer/PastRoundCardDetails.tsx","views/Lottery/components/PastLotteryRoundViewer/PastRoundCard.tsx","views/Lottery/hooks/useGetRecentLotteryRoundData.ts","views/Lottery/components/PastLotteryRoundViewer/index.tsx","views/Lottery/components/PastDrawsHistory/HistoryChart.tsx","views/Lottery/components/PastDrawsHistory/Legend.tsx","views/Lottery/components/PastDrawsHistory/PastDrawsHistoryCard.tsx","views/Lottery/PastDrawsPage.tsx","views/Lottery/Lottery.tsx","views/Ifos/components/IfoTabButtons/index.tsx","views/Ifos/components/Hero.tsx","views/Ifos/components/IfoCard/IfoCardHeader.tsx","views/Ifos/components/IfoCard/IfoCardProgress.tsx","views/Ifos/components/IfoCard/IfoCardDescription.tsx","views/Ifos/components/IfoCard/IfoCardDetails.tsx","views/Ifos/components/IfoCard/IfoCardTime.tsx","views/Ifos/components/IfoCard/LabelButton.tsx","components/Input/BalanceInput.tsx","views/Ifos/components/IfoCard/ContributeModal.tsx","views/Ifos/components/IfoCard/IfoCardContribute.tsx","views/Ifos/components/IfoCard/index.tsx","views/Ifos/components/Title.tsx","views/Ifos/components/IfoCards.tsx","views/Ifos/CurrentIfo.tsx","views/Ifos/PastIfo.tsx","views/Ifos/index.tsx","App.tsx","state/index.ts","Providers.tsx","index.tsx","contexts/Localisation/translationsContext.ts"],"names":["variableRegex","getTranslation","translations","translationId","fallback","foundTranslation","find","translation","data","stringId","translatedString","text","includes","stringToReplace","exec","fallbackValueAtIndex","split","replace","replaceDynamicString","useI18n","useContext","TranslationsContext","length","Page","styled","Container","theme","mediaQueries","sm","lg","div","QuoteToken","PoolCategory","RefreshContext","React","createContext","slow","fast","RefreshContextProvider","children","useState","setSlow","setFast","useEffect","interval","setInterval","a","prev","clearInterval","Provider","value","useRefresh","fastRefresh","slowRefresh","pizza","97","355113","pasta","masterChef","pastaChef","wbnb","lottery","lotteryNFT","mulltiCall","tusdt","int","fns","cod","wbft","chap","farms","pid","lpSymbol","lpAddresses","tokenSymbol","tokenAddresses","quoteTokenSymbol","BFT","quoteTokenAdresses","contracts","tUSDT","isCommunity","nodes","process","getNodeUrl","randomIndex","random","RPC_URL","getRpcUrl","httpProvider","Web3","providers","HttpProvider","timeout","getWeb3","getContract","abi","address","contractOptions","eth","Contract","getPizzaAddress","addresses","chainId","getMasterChefAddress","getMulticallAddress","getchapAddress","multicall","calls","web3","multi","MultiCallAbi","itf","Interface","calldata","map","call","toLowerCase","encodeFunctionData","name","params","methods","aggregate","returnData","res","i","decodeFunctionResult","fetchFarms","Promise","all","farmsConfig","farmConfig","lpAdress","CHAIN_ID","erc20","tokenBalanceLP","quoteTokenBlanceLP","lpTokenBalanceMC","lpTotalSupply","tokenDecimals","quoteTokenDecimals","lpTokenRatio","BigNumber","lpTotalInQuoteToken","pow","times","tokenAmount","quoteTokenAmount","masterchefABI","info","totalAllocPoint","allocPoint","_hex","poolWeight","toJSON","tokenPriceVsQuote","multiplier","toString","fetchFarmUserAllowances","account","masterChefAdress","farm","erc20ABI","rawLpAllowances","parsedLpAllowances","lpBalance","fetchFarmUserTokenBalances","rawTokenBalances","parsedTokenBalances","tokenBalance","fetchFarmUserStakedBalances","rawStakedBalances","parsedStakedBalances","stakedBalance","fetchFarmUserEarnings","rawEarnings","parsedEarnings","earnings","initialState","farmsSlice","createSlice","reducers","setFarmsPublicData","state","action","liveFarmsData","payload","liveFarmData","f","setFarmUserData","arrayOfUserDataObjects","forEach","userDataEl","index","userData","actions","fetchFarmUserDataAsync","dispatch","userFarmAllowances","userFarmTokenBalances","userStakedBalances","userFarmEarnings","farmAllowance","allowance","pools","pastaId","tokenName","earnToken","stakingTokenName","RCHAP","stakingTokenAddress","contractAddress","poolCategory","CORE","projectLink","harvest","tokenPerBlock","sortOrder","isFinished","fetchPoolsBlockLimits","poolsWithEnd","poolsConfig","filter","p","callsStartBlock","poolConfig","callsEndBlock","pastaChefABI","starts","ends","pizzaPoolConfig","startBlock","endBlock","fetchPoolsTotalStatking","nonBnbPools","BNB","bnbPool","callsNonBnbPools","callsBnbPools","pizzaABI","nonBnbPoolsTotalStaked","wbnbABI","bnbPoolsTotalStaked","totalStaked","bnbPools","nonMasterPools","masterChefContract","masterChefABI","fetchPoolsAllowance","allowances","reduce","acc","pool","fetchUserBalances","tokenBalancesRaw","tokenBalances","getBalance","bnbBalance","bnbBalances","fetchUserStakeBalances","userInfo","stakedBalances","amount","masterPoolAmount","0","fetchUserPendingRewards","pendingRewards","pendingRchap","pendingReward","PoolsSlice","setPoolsPublicData","livePoolsData","livePoolData","entry","setPoolsUserData","userPoolData","updatePoolsUserData","field","findIndex","updateUserAllowance","updateUserBalance","updateUserStakedBalance","updateUserPendingReward","ZERO","useFetchPublicData","useDispatch","blockLimits","totalStakings","liveData","blockLimit","totalStaking","useFarms","useSelector","useFarmFromPid","usePools","stakingTokenBalances","stakingTokenBalance","fetchPoolsUserDataAsync","usePriceBnbBusd","usePricePizzaBusd","bnbPriceUSD","GlobalStyle","createGlobalStyle","colors","background","EN","code","language","allLanguages","CACHE_KEY","LanguageContext","selectedLanguage","setSelectedLanguage","translatedLanguage","setTranslatedLanguage","projectId","parseInt","REACT_APP_CROWDIN_PROJECT_ID","stringTranslationsApi","StringTranslations","token","LanguageContextProvider","setTranslations","storedLangCode","localStorage","getItem","storedLang","getStoredLang","listLanguageTranslations","undefined","fetchTranslationsForSelectedLanguage","then","translationApiResponse","catch","langObject","setItem","ThemeContext","isDark","toggleTheme","ThemeContextProvider","isDarkUserSetting","JSON","parse","setIsDark","prevState","stringify","dark","light","useTheme","StyledThemeCopntext","config","label","icon","href","items","Menu","props","useWallet","connect","reset","pizzaPriceUsd","login","logout","currentLang","langs","setLang","toNumber","links","Wrapper","PageLoader","EXPONENTIAL_AT","DECIMAL_PLACES","PIZZA_PER_BLOCK","BLOCKS_PER_YEAR","BlockContext","BlockContextProvider","previousBlock","useRef","block","setBlock","getBlockNumber","blockNumber","current","useBlock","getBalanceNumber","balance","decimals","displayBalance","dividedBy","getFullDisplayBalance","toFixed","FlexLayout","CoreTag","variant","outline","startIcon","CommunityTag","Card","card","isActive","CardTitle","Balance","Label","textSubtle","DetailPlaceholder","Value","Footer","Coming","TranslateString","style","padding","role","aria-label","src","width","height","alt","as","external","fullWidth","mb","flex","UnlockButton","onPresentConnectModal","useWalletModal","onClick","StyledLabel","useWeb3","ethereum","refEth","setweb3","ifos","id","subTitle","description","launchDate","launchTime","saleAmount","raiseAmount","pizzaToBurn","projectSiteUrl","currency","currencyAddress","releaseBlockNumber","communityFarms","useContract","contract","setContract","useERC20","usePizza","useLottery","useLotteryTicket","lotteryTicket","useMasterchef","usePastaChef","rawAbi","BINANCE","pastaChefBnb","approve","lpContract","options","ethers","constants","MaxUint256","send","from","stake","enterStaking","on","tx","transactionHash","deposit","pastaStake","pastaChefContract","pastaStakeBnb","unstake","leaveStaking","withdraw","pastaUnstake","emergencyWithdraw","pastaEmegencyUnstake","pastahHarvest","pastahHarvestBnb","useStake","onStake","useCallback","txHash","console","PASTAIDS","useUnstake","onUnstake","StyledText","Text","isDisabled","color","textDisabled","fontSize","unit","previousValue","bold","start","end","duration","separator","defaultProps","StyledSpacer","size","Spacer","s","spacing","StyledModalActions","primaryDark","StyledModalAction","ModalActions","l","Children","toArray","child","StyledInputWrapper","input","radii","default","StyledInput","primary","Input","endAdornment","onChange","placeholder","startAdornment","StyledTokenInput","StyledTokenAdornmentWrapper","StyledMaxText","StyledTokenSymbol","span","TokenInput","max","symbol","onSelectMax","toLocaleString","DepositModal","onConfirm","onDismiss","val","setVal","pendingTx","setPendingTx","fullBalance","useMemo","handleChange","e","currentTarget","handleSelectMax","title","disabled","WithdrawModal","CompoundModal","BalanceRow","Number","Title","ActionLink","OldPastaTitle","hasBalance","target","StyledButton","button","StyledLink","Link","StyledExternalLink","Button","buttonSize","buttonPadding","to","buttonColor","ButtonChild","boxShadow","tags","COMMUNITY","StyledFooter","StyledDetailsButton","Details","Row","FlexFull","TokenLink","CardFooter","blocksRemaining","blocksUntilStart","isOpen","setIsOpen","Icon","ChevronUp","ChevronDown","Tag","marginBottom","memo","PoolFinishedSash","StyledCardActions","BalanceAndCompound","StyledActionSpacer","StyledDetails","PoolCard","image","apy","stakingLimit","isBnbPool","stakingTokenContract","onApprove","usePastaApprove","isUsingBnb","usePastaStake","isOldPasta","usePastaUnstake","onReward","usePastaHarvest","requestedApproval","setRequestedApproval","Math","PASTA","accountHasStakedBalance","needsApproval","isCardActive","convertedLimit","multipliedBy","useModal","isGreaterThan","onPresentDeposit","onPresentCompound","onPresentWithdraw","handleApprove","error","display","alignItems","HarvestButton","eq","isNaN","isFinite","PoolTabButtons","useRouteMatch","url","isExact","activeIndex","Hero","Farm","path","poolsWithApy","rewardTokenFarm","stakingTokenFarm","stakingTokenPriceInBNB","totalRewardPricePerYear","tokenPrice","quoteToken","tokenPriceBN","BUSD","priceToBnb","totalStakingTokenInPool","partition","finishedPools","openPools","Divider","Flex","exact","orderBy","provider","getAllowance","getTokenBalance","tokenAddress","userAddress","balanceOf","useBurnedBalance","setBalance","fetchBalance","useTokenBalance","CardValue","useCountUp","countUp","update","updateValue","StyledPizzaStats","PizzaStats","totalSupply","setTotalSupply","pizzaContract","supply","fetchTotalSupply","useTotalSupply","totalSupply1","setTotalSupply1","pizzaContract1","supply1","fetchTotalSupply1","useTotalSupply1","burnedBalance","burnedBalance1","pizzaSupply","chapSupply","useFarmsWithBalance","farmsWithBalances","setFarmsWithBalances","rawResults","results","fetchBalances","useAllEarnings","balances","fetchAllBalances","PizzaHarvestBalance","earningsSum","accum","earning","lineHeight","PizzaWalletBalance","pizzaBalance","StyledFarmStakingCard","Block","CardImage","img","Actions","FarmedStakingCard","balancesWithValue","balanceType","farmPids","harvestPromises","useAllHarvest","farmWithBalance","harvestAllFarms","multiCall","newCalls","slice","concat","multiBuy","lotteryContract","price","numbersList","getTickets","ticketsContract","customLotteryNum","issueIndex","issueIdex","getTicketsAmount","calls1","Array","apply","ticketAbi","tokenIds","calls2","ticketIssues","finalTokenids","ticketIssue","push","calls3","tickets","getLotteryStatus","multiClaim","claimedStatus","unClaimedIds","lotteryAbi","rewards","finanltokenIds","r","getTotalClaim","drawed","calls4","claim","c","sum","getTotalRewards","getMax","maxNumber","getLotteryIssueIndex","getMatchingRewardLength","matchNumber","historyAmount","getWinningNumbers","numbers","historyNumbers","winningNumbers","useGetLotteryHasDrawn","lotteryHasDrawn","setLotteryHasDrawn","fetchLotteryStatus","useMultiClaimLottery","lotteryTicketContract","onMultiClaim","useTotalRewards","setRewards","useTotalClaim","claimAmount","setClaimAmount","claimLoading","setClaimLoading","useWinningNumbers","winngNumbers","setWinningNumbers","useMatchingRewardLength","matchingNumbers","setMatchingNumbers","matchedNumbaers","useTickets","lotteryNumber","setTickets","TicketInput","availableSymbol","BuyTicketModal","setRequestedBuy","maxTickets","onMultiBuy","useMultiBuyLottery","setMax","fetchMax","useMaxNumber","handleBuy","floor","Tips","Announce","Final","PizzaWinnings","LotteryJackpot","lotteryPrizeAmount","maximumFractionDigits","StyledLotteryCard","requesteClaim","setRequestedClaim","handleClaim","onPresentBuy","marginRight","StyledPartnerCard","PartnerCard","CardMidContent","Heading","attrs","EarnAPYCard","farmsLP","bnbPrice","maxAPY","MIN_VALUE","getHighestAPY","activeFarms","calculateAPY","farmsToDisplay","pizzaPriceVsBNB","pizzaRewardPerBlock","pizzaRewardPerYear","PIZZA","dual","pizzaApy","dualApy","rewardPerBlock","plus","animation","justifyContent","activeClassName","mt","EarnAssetCard","latestPools","assets","join","useLotteryTotalPrizesUsd","totalRewards","WinCard","lotteryPrize","round","Cards","BaseLayout","CTACards","Home","FarmStakingCard","LotteryCard","TotalValueLockedCard","ExpandableSectionButton","expanded","getLiquidityUrlPathParts","firstPart","secondPart","StyledLinkExternal","LinkExternal","DetailsSection","bscScanAddress","removed","lpLabel","totalValueFormated","liquidityUrlPathParts","MultiplierTag","CardHeading","isCommunityFarm","farmImage","flexDirection","IconButtonWrapper","StakeAction","rawStakedBalance","mr","HarvestAction","farmPid","useHarvest","rawEarningsBalance","Action","CardActions","useFarmUser","lpAddress","lpName","toUpperCase","isApproved","useApprove","textTransform","pr","calculatePizzaEarnedPerThousandDollars","number","numberOfDays","apyAsDecimal","farmApy","daysAsDecimalOfYear","principal","pizzaPrice","finalAmount","apyModalRoi","amountEarned","amountInvested","Grid","GridItem","Description","ApyCalculatorModal","oneThousandDollarsWorthOfPizza","pizzaEarnedPerThousand1D","pizzaEarnedPerThousand7D","pizzaEarnedPerThousand30D","pizzaEarnedPerThousand365D","ApyButton","onPresentApyModal","ml","RainbowLight","keyframes","StyledCardAccent","FCard","borderColor","ExpandingWrapper","FarmCard","showExpandableSection","setShowExpandableSection","toLocaleLowerCase","totalValue","earnLabel","farmAPY","CardActionsContainer","FarmTabButtons","Farms","inactiveFarms","farmsList","USDT","USDC","textAlign","responsive","mostRecentLotteryNumber","historyError","historyData","useCurrentTime","Date","getTime","currentMillis","setCurrentMillis","timerID","prevMillis","HOUR_IN_SECONDS","DAY_IN_SECONDS","MONTH_IN_SECONDS","YEAR_IN_SECONDS","getTimePeriods","seconds","delta","timeLeft","years","months","days","hours","minutes","lotteryDrawHoursUtc","getNextLotteryDrawTime","millisTimeOfNextDraw","date","currentHour","getUTCHours","nextLotteryHour","getClosestLotteryHour","tomorrow","nextDay","getUTCDate","setUTCDate","setUTCHours","hoursAndMinutesString","getTicketSaleTime","msUntilNextTicketSale","getNextTicketSaleTime","getLotteryDrawStep","ProgressWrapper","TopTextWrapper","BottomTextWrapper","StyledPrimaryText","LotteryProgress","timeUntilTicketSale","timeUntilLotteryDraw","msUntilLotteryDraw","getLotteryDrawTime","primaryStep","secondaryStep","showProgressBunny","secondary","Blurb","StyledHero","StyledContainer","LeftWrapper","RightWrapper","StyledLoading","Loading","RewardP","TicketsList","UserTicketsModal","myTicketNumbers","winNumbers","rewardMatch","n","listItems","emoji","WinningsWrapper","IconWrapper","StyledCardContentInner","PrizesWonContent","requestedClaim","onPresentMyTickets","winnings","TextWrapper","Image","md","NoPrizesContent","StyledCard","YourPrizesCard","isAWin","StyledCardBody","CardBody","StyledHeading","UnlockWalletCard","WarningModal","TicketCard","setAllowance","fetchAllowance","refreshInterval","useLotteryAllowance","useLotteryApprove","ticketsLength","PurchaseWarningModal","onPresentApprove","isSecondCard","CardHeader","TicketCountWrapper","TicketActions","pastDraw","RightAlignedText","RightAlignedHeading","PastDrawGridItem","PrizeGrid","jackpotMatches","twoTicketMatches","threeTicketMatches","fourMatchesAmount","threeMatchesAmount","twoMatchesAmount","burnAmount","Right","Left","PrizeCountWrapper","showFooter","TotalPrizesCard","setShowFooter","lotteryPrizeWithCommaSeparators","currentLotteryNumber","PastLotteryDataContext","fontWeight","RabbitRow","RabbitRowSmall","CardImageFirst","RowNoPadding","Column","CenteredText","CenteredTextWithPadding","TicketNumberBox","RabbitBox","RabbitBoxSmall","StyledCardHeader","CardWrapper","WinningNumbers","MatchedNumber4","MatchedNumber3","MatchedNumber2","marginLeft","LayoutWrapper","StyledImage","HowItWorks","SecondCardColumnWrapper","NextDrawPage","getLotteryRoundData","fetch","response","json","Error","SearchWrapper","ButtonWrapper","PastLotterySearcher","initialLotteryNumber","onSubmit","setLotteryNumber","isError","setIsError","evt","preventDefault","type","isWarning","PastRoundCardError","message","LotteryCardHeading","valueToDisplay","ExternalLinkWrap","contractLink","formatLotteryDate","lotteryDate","dateString","toDateString","monthAndDay","splice","Timestamp","timeValue","TopLotteryCardHeading","PastRoundCardDetails","jackpotTicket","lotteryNumbers","match2Ticket","match3Ticket","poolSize","TicketRound","RchapRoundIcon","PastLotteryActions","PastRoundCard","useGetRecentLotteryRoundData","isLoading","setIsLoading","setData","setError","roundData","fetchRecentLotteryData","PastLotteryRoundViewer","isInitialized","setState","initialLotteryData","handleSubmit","Line","lazy","InnerWrapper","HistoryChart","getDataArray","kind","dataPoint","reverse","lineStyles","fill","borderWidth","pointRadius","pointHitRadius","chartData","labels","datasets","yAxisID","axesStyles","borderCapStyle","gridLines","ticks","fontFamily","fontColor","maxRotation","beginAtZero","autoSkipPadding","userCallback","legend","scales","yAxes","position","xAxes","LegendItem","Circle","isPoolSize","Legend","PastDrawsHistoryCard","BunnyImageWrapper","PastDrawsPage","Lottery","setActiveIndex","setHistoryData","setHistoryError","setCurrentLotteryNumber","setMostRecentLotteryNumber","previousLotteryNumber","getInitialLotteryIndex","IfoTabButtons","StyledIfoCardHeader","Name","IfoCardHeader","ifoId","StyledProgress","IfoCardProgress","progress","StyledIfoCardDescription","ToggleButton","IfoCardDescription","defaultIsOpen","StyledIfoCardDetails","Item","Display","IfoCardDetails","raisingAmount","totalAmount","rel","margin","Countdown","IfoCardTime","status","secondsUntilStart","secondsUntilEnd","countdownToUse","timeUntil","suffix","LabelButton","buttonLabel","BalanceInput","ContributeModal","setValue","IfoCardContribute","offeringTokenBalance","setOfferingTokenBalance","claimed","setUserInfo","contractRaisingToken","tokenContract","spenderAddress","dependency","useIfoAllowance","useIfoApprove","onPresentContributeModal","getOfferingAmount","userinfo","percentOfUserContribution","StyledIfoCard","getStatus","currentBlock","IfoCard","ifo","startBlockNum","endBlockNum","useIfoContract","Ribbon","variantColor","getRibbonComponent","totalBlocks","fetchProgress","ribbon","IfoCardWrapper","isSingle","LaunchIfoCallout","List","ul","activeIfo","ifosConfig","Ifo","IfoCards","pt","inactiveIfo","PastIfo","Ifos","CurrentIfo","NotFound","App","window","Global","component","configureStore","devTools","reducer","farmsReducer","poolsReducer","Providers","rpcUrl","store","connectors","walletconnect","bsc","ReactDOM","render","StrictMode","document","getElementById","defaultTranslationState"],"mappings":"0IAGMA,EAAgB,UASTC,EAAiB,SAACC,EAA0BC,EAAuBC,GAC9E,IAAMC,EAAmBH,EAAaI,MAAK,SAACC,GAC1C,OAAOA,EAAYC,KAAKC,WAAaN,KAEvC,GAAIE,EAAkB,CACpB,IAAMK,EAAmBL,EAAiBG,KAAKG,KAE/C,OADyBD,EAAiBE,SAAS,KAb1B,SAACP,EAA0BD,GACtD,IAAMS,EAAkBb,EAAcc,KAAKT,GAAkB,GAEvDU,EAAuBX,EAASY,MAAM,KAAK,GACjD,OAAOX,EAAiBY,QAAQJ,EAAiBE,GAWtCG,CAAqBR,EAAkBN,GAEzCM,EAET,OAAON,GCNMe,IAdC,WAAO,IACbjB,EAAiBkB,qBAAWC,KAA5BnB,aAER,OAAO,SAACC,EAAuBC,GAC7B,MAAwB,UAApBF,EAAa,GACRE,EAELF,EAAaoB,OAAS,EACjBrB,EAAeC,EAAcC,EAAeC,GAE9CA,K,4gyDCXLmB,EAAOC,YAAOC,IAAPD,CAAH,oPAKN,qBAAGE,MAAkBC,aAAaC,MAKlC,qBAAGF,MAAkBC,aAAaE,MAMvBN,O,6CCjBTE,E,KAAYD,EAAOM,IAAV,gNAOX,qBAAGJ,MAAkBC,aAAaC,MAMvBH,O,srGCMHM,EAqBAC,E,8HCrCNC,EAAiBC,IAAMC,cAAc,CAAEC,KAAM,EAAGC,KAAM,IAGtDC,EAAyB,SAAC,GAAkB,IAAhBC,EAAe,EAAfA,SAAe,EACvBC,mBAAS,GADc,mBACxCJ,EADwC,KAClCK,EADkC,OAEvBD,mBAAS,GAFc,mBAExCH,EAFwC,KAElCK,EAFkC,KAkB/C,OAdAC,qBAAU,WACR,IAAMC,EAAWC,YAAW,sBAAC,sBAAAC,EAAA,sDAC3BJ,GAAQ,SAACK,GAAD,OAAUA,EAAO,KADE,2CAXX,KAclB,OAAO,kBAAMC,cAAcJ,MAC1B,IAEHD,qBAAU,WACR,IAAMC,EAAWC,YAAW,sBAAC,sBAAAC,EAAA,sDAC3BL,GAAQ,SAACM,GAAD,OAAUA,EAAO,KADE,2CAjBX,KAoBlB,OAAO,kBAAMC,cAAcJ,MAC1B,IAEI,cAACX,EAAegB,SAAhB,CAAyBC,MAAO,CAAEd,OAAMC,QAAxC,SAAiDE,KClB3CY,EALI,WAAO,IAAD,EACA/B,qBAAWa,GAClC,MAAO,CAAEmB,YAFc,EACff,KACoBgB,YAFL,EACTjB,O,wBCJD,GACbkB,MAAO,CACLC,GAAI,GACJC,OAAQ,8CAEVC,MAAO,CACLF,GAAI,GACJC,OAAQ,8CAEVE,WAAY,CACVH,GAAI,GACJC,OAAQ,8CAEVG,UAAW,CACTJ,GAAI,GACJC,OAAQ,8CAEVI,KAAM,CACJL,GAAI,GACJC,OAAQ,8CAEVK,QAAS,CACPN,GAAI,GACJC,OAAQ,8CAEVM,WAAY,CACVP,GAAI,GACJC,OAAQ,8CAEVO,WAAY,CACVP,OAAQ,6CACRD,GAAI,IAkDNS,MAAO,CACLR,OAAQ,6CACRD,GAAI,IAENU,IAAK,CACHT,OAAQ,6CACRD,GAAI,IAENW,IAAK,CACHV,OAAQ,6CACRD,GAAI,IAENY,IAAK,CACHX,OAAQ,6CACRD,GAAI,IAENa,KAAM,CACJZ,OAAQ,6CACRD,GAAI,IAENc,KAAM,CACJb,OAAQ,6CACRD,GAAI,M,SHlFIxB,K,UAAAA,E,cAAAA,E,UAAAA,E,YAAAA,E,YAAAA,E,YAAAA,E,cAAAA,E,cAAAA,E,UAAAA,E,UAAAA,E,YAAAA,E,YAAAA,E,YAAAA,E,cAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,eAAAA,M,cAqBAC,K,sBAAAA,E,YAAAA,E,mBAAAA,M,KIvCZ,I,IA+GesC,EA/Ga,CAC1B,CACEC,IAAK,EACLC,SAAU,QACVC,YAAa,CACXlB,GAAI,GACJC,OAAQ,8CAEVkB,YAAa,OACbC,eAAgB,CACdpB,GAAI,GACJC,OAAQ,8CAEVoB,iBAAkB7C,EAAW8C,IAC7BC,mBAAoBC,EAAUX,MAEhC,CACEG,IAAK,EACLC,SAAU,cACVC,YAAa,CACXlB,GAAI,GACJC,OAAQ,8CAEVkB,YAAa,OACbC,eAAgB,CACdpB,GAAI,GACJC,OAAQ,8CAEVoB,iBAAkB7C,EAAW8C,IAC7BC,mBAAoBC,EAAUX,MAEhC,CACEG,IAAK,EACLC,SAAU,gBACVC,YAAa,CACXlB,GAAI,GACJC,OAAQ,8CAEVkB,YAAa,OACbC,eAAgB,CACdpB,GAAI,GACJC,OAAQ,8CAEVoB,iBAAkB7C,EAAWiD,MAC7BF,mBAAoBC,EAAUf,MAC9BiB,aAAa,GAEjB,CACIV,IAAK,EACLC,SAAU,aACVC,YAAa,CACXlB,GAAI,GACJC,OAAQ,8CAEVkB,YAAa,MACbC,eAAgB,CACdpB,GAAI,GACJC,OAAQ,8CAEVoB,iBAAkB7C,EAAW8C,IAC7BC,mBAAoBC,EAAUX,MAElC,CACIG,IAAK,EACLC,SAAU,aACVC,YAAa,CACXlB,GAAI,GACJC,OAAQ,8CAEVkB,YAAa,MACbC,eAAgB,CACdpB,GAAI,GACJC,OAAQ,8CAEVoB,iBAAkB7C,EAAW8C,IAC7BC,mBAAoBC,EAAUX,MAElC,CACGG,IAAK,EACLC,SAAU,aACVC,YAAa,CACXlB,GAAI,GACJC,OAAQ,8CAEVkB,YAAa,MACbC,eAAgB,CACdpB,GAAI,GACJC,OAAQ,8CAEVoB,iBAAkB7C,EAAW8C,IAC7BC,mBAAoBC,EAAUX,KAC9Ba,aAAa,GAEhB,CACGV,IAAK,EACLC,SAAU,eACVC,YAAa,CACXlB,GAAI,GACJC,OAAQ,8CAEVkB,YAAa,QACbC,eAAgB,CACdpB,GAAI,GACJC,OAAQ,8CAEVoB,iBAAkB7C,EAAW8C,IAC7BC,mBAAoBC,EAAUX,KAC9Ba,aAAa,I,4DC3GVC,EAAQ,CAACC,qCAA8BA,qCAA8BA,sCAO5DC,EALI,WACjB,IAAMC,EAAcC,IAAO,EAAGJ,EAAM5D,OAAS,GAC7C,OAAO4D,EAAMG,ICDTE,EAAUC,IACVC,EAAe,IAAIC,IAAKC,UAAUC,aAAaL,EAAS,CAAEM,QAAS,MAKnEC,EAAU,WAEd,OADa,IAAIJ,IAAKD,IAGlBM,EAAc,SAACC,EAAUC,EAAiBC,GAE9C,OAAO,IADMJ,IACGK,IAAIC,UAAUJ,EAA4BC,EAASC,I,SCdxDG,EAAkB,WAC7B,OAAOC,EAAUhD,MAAMiD,SAKZC,EAAuB,WAClC,OAAOF,EAAU5C,WAAW6C,SAEjBE,EAAsB,WACjC,OAAOH,EAAUvC,WAAWwC,SAWjBG,EAAiB,WAC5B,OAAOJ,EAAUjC,KAAKkC,SCFTI,EAZA,uCAAG,WAAOX,EAAYY,GAAnB,2BAAA9D,EAAA,6DACV+D,EAAOf,IACPgB,EAAQ,IAAID,EAAKV,IAAIC,SAAUW,EAAqCN,KACpEO,EAAM,IAAIC,IAAUjB,GAEpBkB,EAAWN,EAAMO,KAAI,SAACC,GAAD,MAAU,CAACA,EAAKnB,QAAQoB,cAAeL,EAAIM,mBAAmBF,EAAKG,KAAMH,EAAKI,YALzF,SAMaV,EAAMW,QAAQC,UAAUR,GAAUE,OAN/C,uBAMRO,EANQ,EAMRA,WACFC,EAAMD,EAAWR,KAAI,SAACC,EAAMS,GAAP,OAAab,EAAIc,qBAAqBlB,EAAMiB,GAAGN,KAAMH,MAPhE,kBASTQ,GATS,4CAAH,wDC0FAG,EA7FC,uCAAG,4BAAAjF,EAAA,sEACEkF,QAAQC,IACzBC,EAAYf,IAAZ,uCAAgB,WAAOgB,GAAP,qDAAArF,EAAA,6DACRsF,EAAWD,EAAW1D,YAAY4D,QAClCzB,EAAQ,CAEZ,CACEX,QAASkC,EAAWxD,eAAe0D,QACnCd,KAAM,YACNC,OAAQ,CAACY,IAGX,CACEnC,QAASkC,EAAWrD,mBAAmBuD,QACvCd,KAAM,YACNC,OAAQ,CAACY,IAGX,CACEnC,QAASmC,EACTb,KAAM,YACNC,OAAQ,CAAChB,MAGX,CACEP,QAASmC,EACTb,KAAM,eAGR,CACEtB,QAASkC,EAAWxD,eAAe0D,QACnCd,KAAM,YAGR,CACEtB,QAASkC,EAAWrD,mBAAmBuD,QACvCd,KAAM,aAlCI,SA6CJZ,EAAU2B,EAAO1B,GA7Cb,0CAuCZ2B,EAvCY,KAwCZC,EAxCY,KAyCZC,EAzCY,KA0CZC,EA1CY,KA2CZC,EA3CY,KA4CZC,EA5CY,KAgDRC,EAAe,IAAIC,IAAUL,GAAkB3G,IAAI,IAAIgH,IAAUJ,IAGjEK,EAAsB,IAAID,IAAUN,GACvC1G,IAAI,IAAIgH,IAAU,IAAIE,IAAI,KAC1BC,MAAM,IAAIH,IAAU,IACpBG,MAAMJ,GAGHK,EAAc,IAAIJ,IAAUP,GAAgBzG,IAAI,IAAIgH,IAAU,IAAIE,IAAIL,IAAgBM,MAAMJ,GAC5FM,EAAmB,IAAIL,IAAUN,GACpC1G,IAAI,IAAIgH,IAAU,IAAIE,IAAIJ,IAC1BK,MAAMJ,GA5DK,UA8DwBlC,EAAUyC,EAAe,CAC7D,CACEnD,QAASO,IACTe,KAAM,WACNC,OAAQ,CAACW,EAAW5D,MAEtB,CACE0B,QAASO,IACTe,KAAM,qBAtEI,2CA8DP8B,EA9DO,KA8DDC,EA9DC,KA0ERC,EAAa,IAAIT,IAAUO,EAAKE,WAAWC,MAC3CC,EAAaF,EAAWzH,IAAI,IAAIgH,IAAUQ,IA3ElC,6CA8ETnB,GA9ES,IA+EZe,YAAaA,EAAYQ,SACzBP,iBAAkBA,EAAiBO,SACnCX,oBAAqBA,EAAoBW,SACzCC,kBAAmBR,EAAiBrH,IAAIoH,GAAaQ,SACrDD,WAAYA,EAAWC,SACvBE,WAAW,GAAD,OAAKL,EAAWzH,IAAI,KAAK+H,WAAzB,QApFE,4CAAhB,wDAFe,cACXrJ,EADW,yBA0FVA,GA1FU,2CAAH,qDCAHsJ,EAAuB,uCAAG,WAAOC,GAAP,qBAAAjH,EAAA,6DAC/BkH,EAAmBxD,IAEnBI,EAAQsB,EAAYf,KAAI,SAAC8C,GAE7B,MAAO,CAAEhE,QADiBgE,EAAKxF,YAAY4D,QACNd,KAAM,YAAaC,OAAQ,CAACuC,EAASC,OALvC,SAQPrD,EAAUuD,EAAUtD,GARb,cAQ/BuD,EAR+B,OAS/BC,EAAqBD,EAAgBhD,KAAI,SAACkD,GAC9C,OAAO,IAAIvB,IAAUuB,GAAWX,YAVG,kBAY9BU,GAZ8B,2CAAH,sDAevBE,EAA0B,uCAAG,WAAOP,GAAP,mBAAAjH,EAAA,6DAClC8D,EAAQsB,EAAYf,KAAI,SAAC8C,GAE7B,MAAO,CACLhE,QAFwBgE,EAAKxF,YAAY4D,QAGzCd,KAAM,YACNC,OAAQ,CAACuC,OAN2B,SAUTpD,EAAUuD,EAAUtD,GAVX,cAUlC2D,EAVkC,OAWlCC,EAAsBD,EAAiBpD,KAAI,SAACsD,GAChD,OAAO,IAAI3B,IAAU2B,GAAcf,YAZG,kBAcjCc,GAdiC,2CAAH,sDAiB1BE,EAA2B,uCAAG,WAAOX,GAAP,qBAAAjH,EAAA,6DACnCkH,EAAmBxD,IAEnBI,EAAQsB,EAAYf,KAAI,SAAC8C,GAC7B,MAAO,CACLhE,QAAS+D,EACTzC,KAAM,WACNC,OAAQ,CAACyC,EAAK1F,IAAKwF,OAPkB,SAWTpD,EAAUyC,EAAexC,GAXhB,cAWnC+D,EAXmC,OAYnCC,EAAuBD,EAAkBxD,KAAI,SAAC0D,GAClD,OAAO,IAAI/B,IAAU+B,EAAc,GAAGrB,MAAME,YAbL,kBAelCkB,GAfkC,2CAAH,sDAkB3BE,GAAqB,uCAAG,WAAOf,GAAP,qBAAAjH,EAAA,6DAC7BkH,EAAmBxD,IAEnBI,EAAQsB,EAAYf,KAAI,SAAC8C,GAC7B,MAAO,CACLhE,QAAS+D,EACTzC,KAAM,eACNC,OAAQ,CAACyC,EAAK1F,IAAKwF,OAPY,SAWTpD,EAAUyC,EAAexC,GAXhB,cAW7BmE,EAX6B,OAY7BC,EAAiBD,EAAY5D,KAAI,SAAC8D,GACtC,OAAO,IAAInC,IAAUmC,GAAUvB,YAbE,kBAe5BsB,GAf4B,2CAAH,sDC/C5BE,GAA2B,CAAE1K,KAAK,YAAK0H,IAEhCiD,GAAaC,YAAY,CACpC7D,KAAM,QACN2D,gBACAG,SAAU,CACRC,mBAAoB,SAACC,EAAOC,GAC1B,IAAMC,EAAwBD,EAAOE,QACrCH,EAAM/K,KAAO+K,EAAM/K,KAAK2G,KAAI,SAAC8C,GAC3B,IAAM0B,EAAeF,EAAcnL,MAAK,SAACsL,GAAD,OAAOA,EAAErH,MAAQ0F,EAAK1F,OAC9D,OAAO,2BAAK0F,GAAS0B,OAGzBE,gBAAiB,SAACN,EAAOC,GACYA,EAAOE,QAAlCI,uBACeC,SAAQ,SAACC,GAAgB,IACtCC,EAAUD,EAAVC,MACRV,EAAM/K,KAAKyL,GAAX,2BAAyBV,EAAM/K,KAAKyL,IAApC,IAA4CC,SAAUF,W,GAOPb,GAAWgB,QAAnDb,G,GAAAA,mBAAoBO,G,GAAAA,gBAOtBO,GAAyB,SAACrC,GAAD,8CAAa,WAAOsC,GAAP,uBAAAvJ,EAAA,sEAChBgH,EAAwBC,GADR,cAC3CuC,EAD2C,gBAEbhC,EAA2BP,GAFd,cAE3CwC,EAF2C,gBAGhB7B,EAA4BX,GAHZ,cAG3CyC,EAH2C,iBAIlB1B,GAAsBf,GAJJ,QAI3C0C,EAJ2C,OAM3CX,EAAyBQ,EAAmBnF,KAAI,SAACuF,EAAeT,GACpE,MAAO,CACLA,QACAU,UAAWL,EAAmBL,GAC9BxB,aAAc8B,EAAsBN,GACpCpB,cAAe2B,EAAmBP,GAClChB,SAAUwB,EAAiBR,OAI/BI,EAASR,GAAgB,CAAEC,4BAhBsB,4CAAb,uDAmBvBX,MAAf,Q,SCvCeyB,GArBa,CAC1B,CACEC,QAAS,EACTC,UAAW,QACXC,UAAW,QACXC,iBAAkBjL,EAAWkL,MAC7BC,oBAAqB,6CACrBC,gBAAiB,CACf5J,GAAI,GACJC,OAAQ,8CAEV4J,aAAcpL,EAAaqL,KAC3BC,YAAa,uBACbC,SAAS,EACTC,cAAe,QACfC,UAAW,EACXC,YAAY,EACZ/E,cAAe,K,6BCRNgF,GAAqB,uCAAG,oCAAA7K,EAAA,6DAC7B8K,EAAeC,GAAYC,QAAO,SAACC,GAAD,OAAqB,IAAdA,EAAElB,WAC3CmB,EAAkBJ,EAAazG,KAAI,SAAC8G,GACxC,MAAO,CACLhI,QAASgI,EAAWd,gBAAgB9E,QACpCd,KAAM,iBAGJ2G,EAAgBN,EAAazG,KAAI,SAAC8G,GACtC,MAAO,CACLhI,QAASgI,EAAWd,gBAAgB9E,QACpCd,KAAM,oBAXyB,SAedZ,EAAUwH,GAAcH,GAfV,cAe7BI,EAf6B,gBAgBhBzH,EAAUwH,GAAcD,GAhBR,cAgB7BG,EAhB6B,yBAkB5BT,EAAazG,KAAI,SAACmH,EAAiBrC,GACxC,IAAMsC,EAAaH,EAAOnC,GACpBuC,EAAWH,EAAKpC,GACtB,MAAO,CACLY,QAASyB,EAAgBzB,QACzB0B,WAAY,IAAIzF,IAAUyF,GAAY7E,SACtC8E,SAAU,IAAI1F,IAAU0F,GAAU9E,cAxBH,4CAAH,qDA6BrB+E,GAAuB,uCAAG,sCAAA3L,EAAA,6DAC/B4L,EAAcb,GAAYC,QAAO,SAACC,GAAD,OAAOA,EAAEf,mBAAqBjL,EAAW4M,OAC1EC,EAAUf,GAAYC,QAAO,SAACC,GAAD,OAAOA,EAAEf,mBAAqBjL,EAAW4M,OAEtEE,EAAmBH,EAAYvH,KAAI,SAAC8G,GACxC,MAAO,CACLhI,QAASgI,EAAWf,oBACpB3F,KAAM,YACNC,OAAQ,CAACyG,EAAWd,gBAAgB9E,aAIlCyG,EAAgBF,EAAQzH,KAAI,SAAC8G,GACjC,MAAO,CACLhI,QNrCGK,EAAU1C,KAAK2C,QMsClBgB,KAAM,YACNC,OAAQ,CAACyG,EAAWd,gBAAgB9E,aAhBH,SAoBA1B,EAAUoI,GAAUF,GApBpB,cAoB/BG,EApB+B,gBAqBHrI,EAAUsI,GAASH,GArBhB,cAqB/BI,EArB+B,+CAwBhCR,EAAYvH,KAAI,SAAC4G,EAAG9B,GAAJ,MAAe,CAChCY,QAASkB,EAAElB,QACXsC,YAAa,IAAIrG,IAAUkG,EAAuB/C,IAAQvC,cA1BzB,YA4BhCkF,EAAQzH,KAAI,SAAC4G,EAAG9B,GAAJ,MAAe,CAC5BY,QAASkB,EAAElB,QACXsC,YAAa,IAAIrG,IAAUoG,EAAoBjD,IAAQvC,gBA9BtB,4CAAH,qDCzB9BgF,GAAcb,GAAYC,QAAO,SAACC,GAAD,OAAOA,EAAEf,mBAAqBjL,EAAW4M,OAC1ES,GAAWvB,GAAYC,QAAO,SAACC,GAAD,OAAOA,EAAEf,mBAAqBjL,EAAW4M,OACvEU,GAAiBxB,GAAYC,QAAO,SAACC,GAAD,OAAqB,IAAdA,EAAElB,WAC7ChG,GAAOf,IACPwJ,GAAqB,IAAIzI,GAAKV,IAAIC,SAAUmJ,EAAsC/I,KAE3EgJ,GAAmB,uCAAG,WAAOzF,GAAP,iBAAAjH,EAAA,6DAC3B8D,EAAQ8H,GAAYvH,KAAI,SAAC4G,GAAD,MAAQ,CACpC9H,QAAS8H,EAAEb,oBACX3F,KAAM,YACNC,OAAQ,CAACuC,EAASgE,EAAEZ,gBAAgB9E,aAJL,SAOR1B,EAAUuD,EAAUtD,GAPZ,cAO3B6I,EAP2B,yBAQ1Bf,GAAYgB,QACjB,SAACC,EAAKC,EAAM3D,GAAZ,mBAAC,eAA2B0D,GAA5B,mBAAkCC,EAAK/C,QAAU,IAAI/D,IAAU2G,EAAWxD,IAAQvC,aAClF,KAV+B,2CAAH,sDAcnBmG,GAAiB,uCAAG,WAAO9F,GAAP,uBAAAjH,EAAA,6DAEzB8D,EAAQ8H,GAAYvH,KAAI,SAAC4G,GAAD,MAAQ,CACpC9H,QAAS8H,EAAEb,oBACX3F,KAAM,YACNC,OAAQ,CAACuC,OALoB,SAOApD,EAAUuD,EAAUtD,GAPpB,cAOzBkJ,EAPyB,OAQzBC,EAAgBrB,GAAYgB,QAChC,SAACC,EAAKC,EAAM3D,GAAZ,mBAAC,eAA2B0D,GAA5B,mBAAkCC,EAAK/C,QAAU,IAAI/D,IAAUgH,EAAiB7D,IAAQvC,aACxF,IAV6B,SAcN7C,GAAKV,IAAI6J,WAAWjG,GAdd,cAczBkG,EAdyB,OAezBC,EAAcd,GAASM,QAC3B,SAACC,EAAKC,GAAN,mBAAC,eAAoBD,GAArB,mBAA2BC,EAAK/C,QAAU,IAAI/D,IAAUmH,GAAYvG,aACpE,IAjB6B,6CAoBnBqG,GAAkBG,IApBC,4CAAH,sDAuBjBC,GAAsB,uCAAG,WAAOpG,GAAP,uBAAAjH,EAAA,6DAC9B8D,EAAQyI,GAAelI,KAAI,SAAC4G,GAAD,MAAQ,CACvC9H,QAAS8H,EAAEZ,gBAAgB9E,QAC3Bd,KAAM,WACNC,OAAQ,CAACuC,OAJyB,SAMbpD,EAAUwH,GAAcvH,GANX,cAM9BwJ,EAN8B,OAO9BC,EAAiBhB,GAAeK,QACpC,SAACC,EAAKC,EAAM3D,GAAZ,mBAAC,eACI0D,GADL,mBAEGC,EAAK/C,QAAU,IAAI/D,IAAUsH,EAASnE,GAAOqE,OAAO9G,MAAME,aAE7D,IAZkC,SAgBO4F,GAAmB7H,QAAQ2I,SAAS,IAAKrG,GAAS3C,OAhBzD,uBAgBpBmJ,EAhBoB,EAgB5BD,OAhB4B,6CAkBxBD,GAlBwB,IAkBRG,EAAG,IAAI1H,IAAUyH,GAAkB7G,YAlB3B,4CAAH,sDAqBtB+G,GAAuB,uCAAG,WAAO1G,GAAP,qBAAAjH,EAAA,6DAC/B8D,EAAQyI,GAAelI,KAAI,SAAC4G,GAAD,MAAQ,CACvC9H,QAAS8H,EAAEZ,gBAAgB9E,QAC3Bd,KAAM,gBACNC,OAAQ,CAACuC,OAJ0B,SAMnBpD,EAAUwH,GAAcvH,GANL,cAM/BgB,EAN+B,OAO/B8I,EAAiBrB,GAAeK,QACpC,SAACC,EAAKC,EAAM3D,GAAZ,mBAAC,eACI0D,GADL,mBAEGC,EAAK/C,QAAU,IAAI/D,IAAUlB,EAAIqE,IAAQvC,aAE5C,IAZmC,SAgBT4F,GAAmB7H,QAAQkJ,aAAa,IAAK5G,GAAS3C,OAhB7C,cAgB/BwJ,EAhB+B,oDAkBzBF,GAlByB,IAkBTF,EAAG,IAAI1H,IAAU8H,GAAelH,YAlBvB,2CAAH,sDCnE9BwB,GAA2B,CAAE1K,KAAK,YAAKqN,KAEhCgD,GAAazF,YAAY,CACpC7D,KAAM,QACN2D,gBACAG,SAAU,CACRyF,mBAAoB,SAACvF,EAAOC,GAC1B,IAAMuF,EAAwBvF,EAAOE,QACrCH,EAAM/K,KAAO+K,EAAM/K,KAAK2G,KAAI,SAACyI,GAC3B,IAAMoB,EAAeD,EAAczQ,MAAK,SAAC2Q,GAAD,OAAWA,EAAMpE,UAAY+C,EAAK/C,WAC1E,OAAO,2BAAK+C,GAASoB,OAGzBE,iBAAkB,SAAC3F,EAAOC,GACxB,IAAMU,EAAWV,EAAOE,QACxBH,EAAM/K,KAAO+K,EAAM/K,KAAK2G,KAAI,SAACyI,GAC3B,IAAMuB,EAAejF,EAAS5L,MAAK,SAAC2Q,GAAD,OAAWA,EAAMpE,UAAY+C,EAAK/C,WACrE,OAAO,2BAAK+C,GAAZ,IAAkB1D,SAAUiF,QAGhCC,oBAAqB,SAAC7F,EAAOC,GAAY,IAAD,EACJA,EAAOE,QAAjC2F,EAD8B,EAC9BA,MAAOnO,EADuB,EACvBA,MAAO2J,EADgB,EAChBA,QAChBZ,EAAQV,EAAM/K,KAAK8Q,WAAU,SAACvD,GAAD,OAAOA,EAAElB,UAAYA,KACxDtB,EAAM/K,KAAKyL,GAAX,2BAAyBV,EAAM/K,KAAKyL,IAApC,IAA4CC,SAAS,2BAAMX,EAAM/K,KAAKyL,GAAOC,UAAzB,mBAAoCmF,EAAQnO,U,GAMzB2N,GAAW1E,QAAzE2E,G,GAAAA,mBAAoBI,G,GAAAA,iBAAkBE,G,GAAAA,oBAoCxCG,GAAsB,SAAC1E,EAAiB9C,GAAlB,8CAAsC,WAAOsC,GAAP,eAAAvJ,EAAA,sEAC9C0M,GAAoBzF,GAD0B,OACjE0F,EADiE,OAEvEpD,EAAS+E,GAAoB,CAAEvE,UAASwE,MAAO,YAAanO,MAAOuM,EAAW5C,MAFP,2CAAtC,uDAKtB2E,GAAoB,SAAC3E,EAAiB9C,GAAlB,8CAAsC,WAAOsC,GAAP,eAAAvJ,EAAA,sEACzC+M,GAAkB9F,GADuB,OAC/DgG,EAD+D,OAErE1D,EAAS+E,GAAoB,CAAEvE,UAASwE,MAAO,sBAAuBnO,MAAO6M,EAAclD,MAFtB,2CAAtC,uDAKpB4E,GAA0B,SAAC5E,EAAiB9C,GAAlB,8CAAsC,WAAOsC,GAAP,eAAAvJ,EAAA,sEAC9CqN,GAAuBpG,GADuB,OACrEsG,EADqE,OAE3EhE,EAAS+E,GAAoB,CAAEvE,UAASwE,MAAO,gBAAiBnO,MAAOmN,EAAexD,MAFX,2CAAtC,uDAK1B6E,GAA0B,SAAC7E,EAAiB9C,GAAlB,8CAAsC,WAAOsC,GAAP,eAAAvJ,EAAA,sEAC9C2N,GAAwB1G,GADsB,OACrE2G,EADqE,OAE3ErE,EAAS+E,GAAoB,CAAEvE,UAASwE,MAAO,gBAAiBnO,MAAOwN,EAAe7D,MAFX,2CAAtC,uDAKxBgE,MAAf,QC1FMc,GAAO,IAAI7I,IAAU,GAEd8I,GAAqB,WAChC,IAAMvF,EAAWwF,cACTxO,EAAgBF,IAAhBE,YACRV,qBAAU,WACR0J,EL0BqC,uCAAM,WAAOA,GAAP,eAAAvJ,EAAA,sEACzBiF,IADyB,OACvCzD,EADuC,OAE7C+H,EAASf,GAAmBhH,IAFiB,2CAAN,uDKzBrC+H,ED8BqC,uCAAM,WAAOA,GAAP,mBAAAvJ,EAAA,sEACnB6K,KADmB,cACvCmE,EADuC,gBAEjBrD,KAFiB,OAEvCsD,EAFuC,OAIvCC,EAAWnE,GAAY1G,KAAI,SAACyI,GAChC,IAAMqC,EAAaH,EAAYxR,MAAK,SAAC2Q,GAAD,OAAWA,EAAMpE,UAAY+C,EAAK/C,WAChEqF,EAAeH,EAAczR,MAAK,SAAC2Q,GAAD,OAAWA,EAAMpE,UAAY+C,EAAK/C,WAC1E,OAAO,2BACFoF,GACAC,MAIP7F,EAASyE,GAAmBkB,IAbiB,2CAAN,yDC7BpC,CAAC3F,EAAUhJ,KAKH8O,GAAW,WAEtB,OADcC,aAAY,SAAC7G,GAAD,OAAkBA,EAAMjH,MAAM9D,SAI7C6R,GAAiB,SAAC9N,GAE7B,OADa6N,aAAY,SAAC7G,GAAD,OAAkBA,EAAMjH,MAAM9D,KAAKF,MAAK,SAACsL,GAAD,OAAOA,EAAErH,MAAQA,SAsBvE+N,GAAW,SAACvI,GAAqB,IACpC3G,EAAgBD,IAAhBC,YACFiJ,EAAWwF,cAQjB,OAPAlP,qBAAU,WACJoH,GACFsC,EDOiC,SAACtC,GAAD,8CAAa,WAAOsC,GAAP,uBAAAvJ,EAAA,sEACzB0M,GAAoBzF,GADK,cAC5C0F,EAD4C,gBAEfI,GAAkB9F,GAFH,cAE5CwI,EAF4C,gBAGrBpC,GAAuBpG,GAHF,cAG5CsG,EAH4C,iBAIrBI,GAAwB1G,GAJH,QAI5C2G,EAJ4C,OAM5CxE,EAAW2B,GAAY1G,KAAI,SAACyI,GAAD,MAAW,CAC1C/C,QAAS+C,EAAK/C,QACdF,UAAW8C,EAAWG,EAAK/C,SAC3B2F,oBAAqBD,EAAqB3C,EAAK/C,SAC/ChC,cAAewF,EAAeT,EAAK/C,SACnC+D,cAAeF,EAAed,EAAK/C,aAGrCR,EAAS6E,GAAiBhF,IAdwB,4CAAb,sDCPxBuG,CAAwB1I,MAElC,CAACA,EAASsC,EAAUjJ,IAETgP,aAAY,SAAC7G,GAAD,OAAkBA,EAAMqB,MAAMpM,SAW7CkS,GAAkB,WAC7B,IACMzI,EAAOoI,GADD,GAEZ,OAAOpI,EAAKN,kBAAoB,IAAIb,IAAU,GAAGhH,IAAImI,EAAKN,mBAAqBgI,IAGpEgB,GAAoB,WAC/B,IACMC,EAAcF,KACdzI,EAAOoI,GAFD,GAGZ,OAAOpI,EAAKN,kBAAoBiJ,EAAY3J,MAAMgB,EAAKN,mBAAqBgI,I,gBCvD/DkB,GAdKC,aAAH,4LAKO,qBAAGpR,MAAkBqR,OAAOC,cCdvCC,GAAK,CAAEC,KAAM,KAAMC,SAAU,WA8B7BC,GAAe,CAC1BH,GA9BgB,CAAEC,KAAM,KAAMC,SAAU,8CACxB,CAAED,KAAM,KAAMC,SAAU,aACtB,CAAED,KAAM,QAASC,SAAU,4BAC3B,CAAED,KAAM,QAASC,SAAU,4BAC7B,CAAED,KAAM,KAAMC,SAAU,qBACxB,CAAED,KAAM,KAAMC,SAAU,SACxB,CAAED,KAAM,KAAMC,SAAU,WACxB,CAAED,KAAM,KAAMC,SAAU,cACvB,CAAED,KAAM,MAAOC,SAAU,YAC1B,CAAED,KAAM,KAAMC,SAAU,eACxB,CAAED,KAAM,KAAMC,SAAU,eACxB,CAAED,KAAM,KAAMC,SAAU,oDACxB,CAAED,KAAM,KAAMC,SAAU,kCACxB,CAAED,KAAM,KAAMC,SAAU,UACxB,CAAED,KAAM,KAAMC,SAAU,oBACxB,CAAED,KAAM,KAAMC,SAAU,YACxB,CAAED,KAAM,KAAMC,SAAU,sBACxB,CAAED,KAAM,KAAMC,SAAU,sBACtB,CAAED,KAAM,QAASC,SAAU,gBAC7B,CAAED,KAAM,KAAMC,SAAU,kBACxB,CAAED,KAAM,KAAMC,SAAU,8CACxB,CAAED,KAAM,KAAMC,SAAU,wCACtB,CAAED,KAAM,QAASC,SAAU,cAC3B,CAAED,KAAM,QAASC,SAAU,WAC7B,CAAED,KAAM,KAAMC,SAAU,kCACxB,CAAED,KAAM,KAAMC,SAAU,gBACxB,CAAED,KAAM,KAAMC,SAAU,gEACxB,CAAED,KAAM,KAAMC,SAAU,yB,mBCvBpCE,GAAY,oBAcZC,GAAkBpR,IAAMC,cAAc,CAC1CoR,iBAAkBN,GAClBO,oBAAqB,aACrBC,mBAAoBR,GACpBS,sBAAuB,eAInBC,GAAYC,SAASzO,icAAY0O,8BACjCC,GAAwB,IAAIC,sBAAmB,CACnDC,MAAO7O,qCAOH8O,GAA0B,SAAC,GAAkB,IAAhB1R,EAAe,EAAfA,SAAe,EACAC,mBAAcyQ,IADd,mBACzCM,EADyC,KACvBC,EADuB,OAEIhR,mBAAcyQ,IAFlB,mBAEzCQ,EAFyC,KAErBC,EAFqB,OAGRlR,mBAAqB,IAHb,mBAGzCtC,EAHyC,KAG3BgU,EAH2B,KAWhDvR,qBAAU,WACR,IAAMwR,EAAiBC,aAAaC,QAAQhB,IAC5C,GAAIc,EAAgB,CAClB,IAAMG,EATY,SAACH,GACrB,OAAOf,GAAatF,QAAO,SAACqF,GAC1B,OAAOA,EAASD,OAASiB,KACxB,GAMkBI,CAAcJ,GACjCX,EAAoBc,QAEpBd,EAAoBP,MAErB,IAEHtQ,qBAAU,WACJ4Q,GA1BqC,SAACA,GAC5C,OAAOO,GAAsBU,yBAAyBb,GAAWJ,EAAiBL,UAAMuB,EAP3E,EAO8F,KA0BvGC,CAAqCnB,GAClCoB,MAAK,SAACC,GACDA,EAAuBpU,KAAKc,OAAS,EACvC4S,EAAgB,CAAC,UAEjBA,EAAgBU,EAAuBpU,SAG1CmU,MAAK,kBAAMjB,EAAsBH,MACjCsB,OAAM,WACLX,EAAgB,CAAC,eAGtB,CAACX,EAAkBW,IAOtB,OACE,cAACZ,GAAgBrQ,SAAjB,CACEC,MAAO,CAAEqQ,mBAAkBC,oBAPF,SAACsB,GAC5BtB,EAAoBsB,GACpBV,aAAaW,QAAQ1B,GAAWyB,EAAW5B,OAK6BO,qBAAoBC,yBAD5F,SAGE,cAAC,KAAoBzQ,SAArB,CAA8BC,MAAO,CAAEhD,eAAcgU,mBAArD,SAAyE3R,OC/EzE8Q,GAAY,UAEZ2B,GAAe9S,IAAMC,cAAc,CAAE8S,OAAQ,KAAMC,YAAa,kBAAM,QAEtEC,GAAuB,SAAC,GAAkB,IAAhB5S,EAAe,EAAfA,SAAe,EACjBC,oBAAS,WACnC,IAAM4S,EAAoBhB,aAAaC,QAAQhB,IAC/C,QAAO+B,GAAoBC,KAAKC,MAAMF,MAHK,mBACtCH,EADsC,KAC9BM,EAD8B,KAa7C,OACE,cAACP,GAAa/R,SAAd,CAAuBC,MAAO,CAAE+R,SAAQC,YARtB,WAClBK,GAAU,SAACC,GAET,OADApB,aAAaW,QAAQ1B,GAAWgC,KAAKI,WAAWD,KACxCA,OAKV,SACE,cAAC,KAAD,CAAiB9T,MAAOuT,EAASS,IAAOC,IAAxC,SAAgDpT,OCbvCqT,GANE,WAAO,IAAD,EACWxU,qBAAW4T,IAE3C,MAAO,CAAEC,OAHY,EACbA,OAESC,YAHI,EACLA,YAEcxT,MADhBN,qBAAWyU,QC0EZC,GA9Ea,CAC1B,CACEC,MAAO,OACPC,KAAM,WACNC,KAAM,KAER,CACEF,MAAO,QACPC,KAAM,YACNE,MAAO,CACL,CACEH,MAAO,WACPE,KAAM,2CAER,CACEF,MAAO,YACPE,KAAM,6CAIZ,CACEF,MAAO,QACPC,KAAM,WACNC,KAAM,UAER,CACEF,MAAO,QACPC,KAAM,WACNC,KAAM,UAER,CACEF,MAAO,UACPC,KAAM,aACNC,KAAM,YA6BR,CACEF,MAAO,OACPC,KAAM,WACNE,MAAO,CACL,CACEH,MAAO,WACPE,KAAM,yDAER,CACEF,MAAO,cACPE,KAAM,0DC1CCE,GAvBF,SAACC,GAAW,IAAD,EACcC,cAA5BtM,EADc,EACdA,QAASuM,EADK,EACLA,QAASC,EADJ,EACIA,MADJ,EAE4BnV,qBAAWkS,IAArDC,EAFc,EAEdA,iBAAkBC,EAFJ,EAEIA,oBAFJ,EAGUoC,KAAxBX,EAHc,EAGdA,OAAQC,EAHM,EAGNA,YACVsB,EAAgB7D,KAEtB,OACE,cAAC,IAAD,aACE5I,QAASA,EACT0M,MAAOH,EACPI,OAAQH,EACRtB,OAAQA,EACRC,YAAaA,EACbyB,YAAapD,GAAoBA,EAAiBL,KAClD0D,MAAOxD,GACPyD,QAASrD,EACTgD,cAAeA,EAAcM,WAC7BC,MAAOjB,IACHM,K,SCtBJY,GAAUxV,aAAOD,KAAPC,CAAH,mGAcEyV,GARc,WAC3B,OACE,cAACD,GAAD,UACE,cAAC,IAAD,O,UCZNlO,KAAUgN,OAAO,CACfoB,eAAgB,IAChBC,eAAgB,KAGX,I,8BAAMC,GAAkB,IAAItO,KAAU,KAChCuO,GAAkB,IAAIvO,KAAU,S,mDCLvCwO,GAAepV,IAAMC,cAAc,GAEnCoV,GAAuB,SAAC,GAAkB,IAAhBhV,EAAe,EAAfA,SACxBiV,EAAgBC,iBAAO,GADgB,EAEnBjV,mBAAS,GAFU,mBAEtCkV,EAFsC,KAE/BC,EAF+B,KAiB7C,OAbAhV,qBAAU,WACR,IAAMkE,EAAOf,IACPlD,EAAWC,YAAW,sBAAC,4BAAAC,EAAA,sEACD+D,EAAKV,IAAIyR,iBADR,QACrBC,EADqB,UAEPL,EAAcM,UAChCN,EAAcM,QAAUD,EACxBF,EAASE,IAJgB,2CAM1B,KAEH,OAAO,kBAAM7U,cAAcJ,MAC1B,IAEI,cAAC0U,GAAarU,SAAd,CAAuBC,MAAOwU,EAA9B,SAAsCnV,KCdhCwV,GALE,WAEf,OADsB3W,qBAAWkW,KCFtBU,GAAmB,SAACC,GAAuC,IAAnBC,EAAkB,uDAAP,GACxDC,EAAiB,IAAIrP,IAAUmP,GAASG,UAAU,IAAItP,IAAU,IAAIE,IAAIkP,IAC9E,OAAOC,EAAerB,YAGXuB,GAAwB,SAACJ,GAAuC,IAAnBC,EAAkB,uDAAP,GACnE,OAAOD,EAAQG,UAAU,IAAItP,IAAU,IAAIE,IAAIkP,IAAWI,WCO7CC,GAbI/W,KAAOM,IAAV,+NCCV0W,GAAU,kBACd,cAAC,IAAD,CAAKC,QAAQ,YAAYC,SAAO,EAACC,UAAW,cAAC,IAAD,IAA5C,mBAKIC,GAAe,kBACnB,cAAC,IAAD,CAAKH,QAAQ,aAAaC,SAAO,EAACC,UAAW,cAAC,IAAD,IAA7C,wBCMaE,GAdFrX,KAAOM,IAAV,oOACM,SAACsU,GAAD,OAAWA,EAAM1U,MAAMoX,KAAK9F,cAIjC,gBAAGtF,EAAH,EAAGA,WAAH,SAAehM,MAAkBqR,OAAOrF,EAAa,eAAiB,gBACjE,qBAAGqL,SAEX,oEACA,uCCGOC,GARGxX,KAAOM,IAAV,oIACJ,gBAAG4L,EAAH,EAAGA,WAAH,SAAehM,MAAkBqR,OAAOrF,EAAa,eAAiB,WCC3EuL,GAAUzX,KAAOM,IAAV,uFACF,qBAAGJ,MAAkBqR,OAAOpS,QAKjCuY,GAAQ1X,KAAOM,IAAV,0FACA,qBAAGJ,MAAkBqR,OAAOoG,cAKjCC,GAAoB5X,KAAOM,IAAV,qEAIjBuX,GAAQ7X,KAAOM,IAAV,kEACA,qBAAGJ,MAAkBqR,OAAOpS,QAIjC2Y,GAAS9X,KAAOM,IAAV,+EACc,qBAAGJ,MAAmBuT,OAAS,UAAY,aAiDtDsE,GA9CU,WACvB,IAAMC,EAAkBrY,eAExB,OACE,eAAC,GAAD,WACE,sBAAKsY,MAAO,CAAEC,QAAS,QAAvB,UACE,eAAC,GAAD,WACGF,EAAgB,IAAK,iBAAkB,IACxC,sBAAMG,KAAK,MAAMC,aAAW,OAA5B,6BAIF,cAAC,IAAD,CAAOC,IAAI,6BAA6BC,MAAO,GAAIC,OAAQ,GAAIC,IAAI,sBACnE,cAAC,GAAD,kBACA,cAAC,GAAD,UAAQR,EAAgB,IAAK,0CAC7B,cAAC,IAAD,CACEf,QAAQ,YACRwB,GAAG,IACHhE,KAAK,kDACLiE,UAAQ,EACRC,WAAS,EACTC,GAAG,OANL,SAQGZ,EAAgB,IAAK,eAExB,eAACJ,GAAD,WACE,sBAAKK,MAAO,CAAEY,KAAM,GAApB,UAA0Bb,EAAgB,IAAK,OAA/C,OACA,cAACH,GAAD,oBAEF,eAACD,GAAD,WACE,sBAAKK,MAAO,CAAEY,KAAM,GAApB,UACE,uBAAMV,KAAK,MAAMC,aAAW,QAA5B,yBACG,OAEFJ,EAAgB,IAAK,cAJxB,OAMA,cAACH,GAAD,+BAGJ,cAACC,GAAD,UACE,cAAC,GAAD,UCxDOgB,GAZM,SAAClE,GACpB,IAAMoD,EAAkBrY,eADM,EAEHkV,cAAnBC,EAFsB,EAEtBA,QAASC,EAFa,EAEbA,MACTgE,EAA0BC,YAAelE,EAASC,GAAlDgE,sBAER,OACE,cAAC,IAAD,yBAAQE,QAASF,GAA2BnE,GAA5C,aACGoD,EAAgB,IAAK,qBCAtBkB,GAAclZ,KAAOM,IAAV,kEACN,gBAAG4L,EAAH,EAAGA,WAAH,SAAehM,MAAkBqR,OAAOrF,EAAa,eAAiB,cAIlEwL,GATqB,SAAC,GAAD,IAAGvY,EAAH,EAAGA,KAAH,IAAS+M,kBAAT,gBAClC,cAACgN,GAAD,CAAahN,WAAYA,EAAzB,SAAsC/M,KCFlC4E,GAAUC,IACVC,GAAe,IAAIC,IAAKC,UAAUC,aAAaL,GAAS,CAAEM,QAAS,MAsB1D8U,GAfC,WAAO,IACbC,EAAyCvE,cAAzCuE,SACFC,EAASpD,iBAAOmD,GAFF,EAGIpY,mBAAS,IAAIkD,IAAKkV,GAAYnV,KAHlC,mBAGboB,EAHa,KAGPiU,EAHO,KAYpB,OAPAnY,qBAAU,WACJiY,IAAaC,EAAO/C,UACtBgD,EAAQ,IAAIpV,IAAKkV,GAAYnV,KAC7BoV,EAAO/C,QAAU8C,KAElB,CAACA,IAEG/T,GCHMkU,GAtBK,CAClB,CACEC,GAAI,QACJ/U,QAAS,6CACT8S,UAAU,EACVxR,KAAM,QACN0T,SAAU,mEACVC,YACE,wDACFC,WAAY,YACZC,WAAY,eACZC,WAAY,cACZC,YAAa,cACbC,YAAa,aACbC,eAAgB,GAChBC,SAAU,cACVC,gBAAiB,6CACjB/S,cAAe,GACfgT,mBAAoB,UClBlBC,GAAiB1T,EAAY4F,QAAO,SAAC7D,GAAD,OAAUA,EAAKhF,eAAakC,KAAI,SAAC8C,GAAD,OAAUA,EAAKvF,e,uDCenFmX,GAAc,SAAC7V,EAAcC,EAAiBC,GAClD,IAAMW,EAAO8T,KAD2E,EAExDnY,mBAAS,IAAIqE,EAAKV,IAAIC,SAASJ,EAAKC,EAASC,IAFW,mBAEjF4V,EAFiF,KAEvEC,EAFuE,KAQxF,OAJApZ,qBAAU,WACRoZ,EAAY,IAAIlV,EAAKV,IAAIC,SAASJ,EAAKC,EAASC,MAC/C,CAACF,EAAKC,EAASC,EAAiBW,IAE5BiV,GAYIE,GAAW,SAAC/V,GAEvB,OAAO4V,GADWvT,EACWrC,IAGlBgW,GAAW,WACtB,OAAOD,GAAS3V,MAaL6V,GAAa,WAExB,OAAOL,GADMhY,GhCrCNyC,EAAUzC,QAAQ0C,UgCyCd4V,GAAmB,WAE9B,OAAON,GADMO,GhCvCN9V,EAAUxC,WAAWyC,UgC2CjB8V,GAAgB,WAE3B,OAAOR,GADMnY,EACW8C,MAGb8V,GAAe,SAACtB,GAC3B,IAAMlF,EAASjI,GAAYvN,MAAK,SAACsP,GAAD,OAAUA,EAAK/C,UAAYmO,KACrDuB,EAASzG,EAAO1I,eAAiBpL,EAAawa,QAAUC,GAAe9Y,GAE7E,OAAOkY,GADMU,EACWzG,EAAO3I,gBAAgBhI,U,UCxEpCuX,GAAO,uCAAG,WAAOC,EAAYrN,EAAoBvF,GAAvC,SAAAjH,EAAA,+EACd6Z,EAAWlV,QACfiV,QAAQpN,EAAmBsN,QAAQ3W,QAAS4W,UAAOC,UAAUC,YAC7DC,KAAK,CAAEC,KAAMlT,KAHK,2CAAH,0DAMPmT,GAAK,uCAAG,WAAO5N,EAAoB/K,EAAK+L,EAAQvG,GAAxC,SAAAjH,EAAA,yDACP,IAARyB,EADe,yCAEV+K,EAAmB7H,QACvB0V,aAAa,IAAIrU,IAAUwH,GAAQrH,MAAM,IAAIH,IAAU,IAAIE,IAAI,KAAKa,YACpEmT,KAAK,CAAEC,KAAMlT,IACbqT,GAAG,mBAAmB,SAACC,GACtB,OAAOA,EAAGC,oBANG,gCAUZhO,EAAmB7H,QACvB8V,QAAQhZ,EAAK,IAAIuE,IAAUwH,GAAQrH,MAAM,IAAIH,IAAU,IAAIE,IAAI,KAAKa,YACpEmT,KAAK,CAAEC,KAAMlT,IACbqT,GAAG,mBAAmB,SAACC,GACtB,OAAOA,EAAGC,oBAdK,2CAAH,4DAkBLE,GAAU,uCAAG,WAAOC,EAAmBnN,EAAQvG,GAAlC,SAAAjH,EAAA,+EACjB2a,EAAkBhW,QACtB8V,QAAQ,IAAIzU,IAAUwH,GAAQrH,MAAM,IAAIH,IAAU,IAAIE,IAAI,KAAKa,YAC/DmT,KAAK,CAAEC,KAAMlT,IACbqT,GAAG,mBAAmB,SAACC,GACtB,OAAOA,EAAGC,oBALU,2CAAH,0DASVI,GAAa,uCAAG,WAAOD,EAAmBnN,EAAQvG,GAAlC,SAAAjH,EAAA,+EACpB2a,EAAkBhW,QACtB8V,UACAP,KAAK,CAAEC,KAAMlT,EAAS7G,MAAO,IAAI4F,IAAUwH,GAAQrH,MAAM,IAAIH,IAAU,IAAIE,IAAI,KAAKa,aACpFuT,GAAG,mBAAmB,SAACC,GACtB,OAAOA,EAAGC,oBALa,2CAAH,0DASbK,GAAO,uCAAG,WAAOrO,EAAoB/K,EAAK+L,EAAQvG,GAAxC,SAAAjH,EAAA,yDACT,IAARyB,EADiB,yCAEZ+K,EAAmB7H,QACvBmW,aAAa,IAAI9U,IAAUwH,GAAQrH,MAAM,IAAIH,IAAU,IAAIE,IAAI,KAAKa,YACpEmT,KAAK,CAAEC,KAAMlT,IACbqT,GAAG,mBAAmB,SAACC,GACtB,OAAOA,EAAGC,oBANK,gCASdhO,EAAmB7H,QACvBoW,SAAStZ,EAAK,IAAIuE,IAAUwH,GAAQrH,MAAM,IAAIH,IAAU,IAAIE,IAAI,KAAKa,YACrEmT,KAAK,CAAEC,KAAMlT,IACbqT,GAAG,mBAAmB,SAACC,GACtB,OAAOA,EAAGC,oBAbO,2CAAH,4DAiBPQ,GAAY,uCAAG,WAAOL,EAAmBnN,EAAQvG,GAAlC,SAAAjH,EAAA,yDACgB,+CAAtC2a,EAAkBb,QAAQ3W,QADJ,yCAEjBwX,EAAkBhW,QACtBsW,oBACAf,KAAK,CAAEC,KAAMlT,IACbqT,GAAG,mBAAmB,SAACC,GACtB,OAAOA,EAAGC,oBANU,UASgB,+CAAtCG,EAAkBb,QAAQ3W,QATJ,yCAUjBwX,EAAkBhW,QACtBsW,oBACAf,KAAK,CAAEC,KAAMlT,IACbqT,GAAG,mBAAmB,SAACC,GACtB,OAAOA,EAAGC,oBAdU,gCAiBnBG,EAAkBhW,QACtBoW,SAAS,IAAI/U,IAAUwH,GAAQrH,MAAM,IAAIH,IAAU,IAAIE,IAAI,KAAKa,YAChEmT,KAAK,CAAEC,KAAMlT,IACbqT,GAAG,mBAAmB,SAACC,GACtB,OAAOA,EAAGC,oBArBY,2CAAH,0DAyBZU,GAAoB,uCAAG,WAAOP,EAAmBnN,EAAQvG,GAAlC,SAAAjH,EAAA,+EAC3B2a,EAAkBhW,QACtBsW,oBACAf,KAAK,CAAEC,KAAMlT,IACbqT,GAAG,mBAAmB,SAACC,GACtB,OAAOA,EAAGC,oBALoB,2CAAH,0DASpB/P,GAAO,uCAAG,WAAO+B,EAAoB/K,EAAKwF,GAAhC,SAAAjH,EAAA,yDACT,IAARyB,EADiB,yCAEZ+K,EAAmB7H,QACvBmW,aAAa,KACbZ,KAAK,CAAEC,KAAMlT,IACbqT,GAAG,mBAAmB,SAACC,GACtB,OAAOA,EAAGC,oBANK,gCASdhO,EAAmB7H,QACvB8V,QAAQhZ,EAAK,KACbyY,KAAK,CAAEC,KAAMlT,IACbqT,GAAG,mBAAmB,SAACC,GACtB,OAAOA,EAAGC,oBAbO,2CAAH,0DAiBPW,GAAa,uCAAG,WAAOR,EAAmB1T,GAA1B,SAAAjH,EAAA,+EACpB2a,EAAkBhW,QACtB8V,QAAQ,KACRP,KAAK,CAAEC,KAAMlT,IACbqT,GAAG,mBAAmB,SAACC,GACtB,OAAOA,EAAGC,oBALa,2CAAH,wDASbY,GAAgB,uCAAG,WAAOT,EAAmB1T,GAA1B,SAAAjH,EAAA,+EACvB2a,EAAkBhW,QACtB8V,UACAP,KAAK,CAAEC,KAAMlT,EAAS7G,MAAO,IAAI4F,IAAU,KAC3CsU,GAAG,mBAAmB,SAACC,GACtB,OAAOA,EAAGC,oBALgB,2CAAH,wDC1Eda,GAzCE,SAAC5Z,GAChB,IAAM8H,EAAWwF,cACT9H,EAAYsM,cAAZtM,QACFuF,EAAqB+M,KAW3B,MAAO,CAAE+B,QATWC,sBAAW,uCAC7B,WAAO/N,GAAP,eAAAxN,EAAA,sEACuBoa,GAAM5N,EAAoB/K,EAAK+L,EAAQvG,GAD9D,OACQuU,EADR,OAEEjS,EAASD,GAAuBrC,IAChCwU,QAAQlV,KAAKiV,GAHf,2CAD6B,sDAM7B,CAACvU,EAASsC,EAAUiD,EAAoB/K,MCWtCia,GAAW,CAAE,EAAG,EAAG,GA+BVC,GAhDI,SAACla,GAClB,IAAM8H,EAAWwF,cACT9H,EAAYsM,cAAZtM,QACFuF,EAAqB+M,KAW3B,MAAO,CAAEqC,UATaL,sBAAW,uCAC/B,WAAO/N,GAAP,eAAAxN,EAAA,sEACuB6a,GAAQrO,EAAoB/K,EAAK+L,EAAQvG,GADhE,OACQuU,EADR,OAEEjS,EAASD,GAAuBrC,IAChCwU,QAAQlV,KAAKiV,GAHf,2CAD+B,sDAM/B,CAACvU,EAASsC,EAAUiD,EAAoB/K,M,qBCNtCoa,GAAand,aAAOod,IAAPpd,CAAH,8CACL,gBAAGqd,EAAH,EAAGA,WAAYC,EAAf,EAAeA,MAAOpd,EAAtB,EAAsBA,MAAtB,OAAmCmd,EAAand,EAAMqR,OAAOgM,aAAeD,KAGjF7F,GAAkC,SAAC,GAA4D,IAA1D/V,EAAyD,EAAzDA,MAAO8b,EAAkD,EAAlDA,SAAUF,EAAwC,EAAxCA,MAAO5G,EAAiC,EAAjCA,SAAU2G,EAAuB,EAAvBA,WAAYI,EAAW,EAAXA,KACjFC,EAAgBzH,iBAAO,GAM7B,OAJA9U,qBAAU,WACRuc,EAAcpH,QAAU5U,IACvB,CAACA,IAGF,eAACyb,GAAD,CAAYQ,MAAI,EAACL,MAAOA,EAAOE,SAAUA,EAAUH,WAAYA,EAA/D,UACE,cAAC,KAAD,CAASO,MAAOF,EAAcpH,QAASuH,IAAKnc,EAAOgV,SAAUA,EAAUoH,SAAU,EAAGC,UAAU,MAC7Frc,GAAS+b,GAAQ,+BAAOA,QAK/BhG,GAAQuG,aAAe,CACrBR,SAAU,OACVH,YAAY,EACZC,MAAO,OACP5G,SAAU,GAGGe,I,mMAAAA,MCbTwG,GAAeje,KAAOM,IAAV,kEACN,SAACsU,GAAD,OAAWA,EAAMsJ,QAClB,SAACtJ,GAAD,OAAWA,EAAMsJ,QAGbC,GA5BuB,SAAC,GAAqB,IAGtDC,EAHqD,IAAlBF,YAAkB,MAAX,KAAW,EACjDG,EAAYze,qBAAW4T,MAAvB6K,QAGR,OAAQH,GACN,IAAK,KACHE,EAAIC,EAAQ,GACZ,MACF,IAAK,KACHD,EAAIC,EAAQ,GACZ,MACF,IAAK,KACL,QACED,EAAIC,EAAQ,GAGhB,OAAO,cAACJ,GAAD,CAAcC,KAAME,KCJvBE,GAAqBte,KAAOM,IAAV,sIAEF,SAACsU,GAAD,OAAWA,EAAM1U,MAAMqR,OAAOgN,eAGvC,SAAC3J,GAAD,OAAWA,EAAM1U,MAAMme,QAAQ,MAGtCG,GAAoBxe,KAAOM,IAAV,2CAIRme,GA1BgB,SAAC,GAAkB,IAAhB1d,EAAe,EAAfA,SAC1B2d,EAAIhe,IAAMie,SAASC,QAAQ7d,GAAUjB,OAC3C,OACE,cAACwe,GAAD,UACG5d,IAAMie,SAAShZ,IAAI5E,GAAU,SAAC8d,EAAOxY,GAAR,OAC5B,qCACE,cAACmY,GAAD,UAAoBK,IACnBxY,EAAIqY,EAAI,GAAK,cAAC,GAAD,aCSlBI,GAAqB9e,KAAOM,IAAV,gKAEF,SAACsU,GAAD,OAAWA,EAAM1U,MAAMqR,OAAOwN,SACjC,SAACnK,GAAD,OAAWA,EAAM1U,MAAM8e,MAAMC,WAGjC,SAACrK,GAAD,OAAWA,EAAM1U,MAAMme,QAAQ,MAGxCa,GAAclf,KAAO+e,MAAV,iMAIN,SAACnK,GAAD,OAAWA,EAAM1U,MAAMqR,OAAO4N,WAS1BC,GAhCqB,SAAC,GAAoE,IAAlEC,EAAiE,EAAjEA,aAAcC,EAAmD,EAAnDA,SAAUC,EAAyC,EAAzCA,YAAaC,EAA4B,EAA5BA,eAAgB9d,EAAY,EAAZA,MAC1F,OACE,eAACod,GAAD,aACKU,GAAkBA,EACrB,cAACN,GAAD,CAAaK,YAAaA,EAAa7d,MAAOA,EAAO4d,SAAUA,MAC5DD,GAAgBA,MCuBnBI,GAAmBzf,KAAOM,IAAV,6BAEhB2d,GAAeje,KAAOM,IAAV,gDACP,SAACsU,GAAD,OAAWA,EAAM1U,MAAMme,QAAQ,MAGpCqB,GAA8B1f,KAAOM,IAAV,yEAK3Bqf,GAAgB3f,KAAOM,IAAV,gLAER,SAACsU,GAAD,OAAWA,EAAM1U,MAAMqR,OAAO4N,WAQnCS,GAAoB5f,KAAO6f,KAAV,mEACZ,SAACjL,GAAD,OAAWA,EAAM1U,MAAMqR,OAAO4N,WAI1BW,GArD+B,SAAC,GAAmD,IAAjDC,EAAgD,EAAhDA,IAAKC,EAA2C,EAA3CA,OAAQV,EAAmC,EAAnCA,SAAUW,EAAyB,EAAzBA,YAAave,EAAY,EAAZA,MAC7EsW,EAAkBrY,eACxB,OACE,eAAC8f,GAAD,WACE,eAACE,GAAD,WACGI,EAAIG,iBADP,IAC0BF,EAD1B,IACmChI,EAAgB,IAAK,gBAExD,cAAC,GAAD,CACEqH,aACE,eAACK,GAAD,WACE,cAACE,GAAD,UAAoBI,IACpB,cAAC,GAAD,IACA,8BACE,cAAC,IAAD,CAAQ9B,KAAK,KAAKjF,QAASgH,EAA3B,SACGjI,EAAgB,IAAK,cAK9BsH,SAAUA,EACVC,YAAY,IACZ7d,MAAOA,QC+BAye,GAjDmC,SAAC,GAAmD,IAAjDJ,EAAgD,EAAhDA,IAAKK,EAA2C,EAA3CA,UAAWC,EAAgC,EAAhCA,UAAgC,IAArB/U,iBAAqB,MAAT,GAAS,IAC7EtK,mBAAS,IADoE,mBAC5Fsf,EAD4F,KACvFC,EADuF,OAEjEvf,oBAAS,GAFwD,mBAE5Fwf,EAF4F,KAEjFC,EAFiF,KAG7FzI,EAAkBrY,eAClB+gB,EAAcC,mBAAQ,WAC1B,OAAO9J,GAAsBkJ,KAC5B,CAACA,IAEEa,EAAe/D,uBACnB,SAACgE,GACCN,EAAOM,EAAEC,cAAcpf,SAEzB,CAAC6e,IAGGQ,EAAkBlE,uBAAY,WAClC0D,EAAOG,KACN,CAACA,EAAaH,IAEjB,OACE,eAAC,IAAD,CAAOS,MAAK,UAAKhJ,EAAgB,IAAK,WAA1B,YAAwC1M,EAAxC,WAA4D+U,UAAWA,EAAnF,UACE,cAAC,GAAD,CACE3e,MAAO4e,EACPL,YAAac,EACbzB,SAAUsB,EACVb,IAAKW,EACLV,OAAQ1U,IAEV,eAAC,GAAD,WACE,cAAC,IAAD,CAAQqN,WAAS,EAAC1B,QAAQ,YAAYgC,QAASoH,EAA/C,SACGrI,EAAgB,IAAK,YAExB,cAAC,IAAD,CACEW,WAAS,EACTsI,SAAUT,EACVvH,QAAO,sBAAE,sBAAA3X,EAAA,6DACPmf,GAAa,GADN,SAEDL,EAAUE,GAFT,OAGPG,GAAa,GACbJ,IAJO,2CAHX,SAUGG,EAAYxI,EAAgB,IAAK,wBAA0BA,EAAgB,IAAK,oBCM5EkJ,GAhDqC,SAAC,GAAmD,IAAjDd,EAAgD,EAAhDA,UAAWC,EAAqC,EAArCA,UAAWN,EAA0B,EAA1BA,IAA0B,IAArBzU,iBAAqB,MAAT,GAAS,IAC/EtK,mBAAS,IADsE,mBAC9Fsf,EAD8F,KACzFC,EADyF,OAEnEvf,oBAAS,GAF0D,mBAE9Fwf,EAF8F,KAEnFC,EAFmF,KAG/FzI,EAAkBrY,eAClB+gB,EAAcC,mBAAQ,WAC1B,OAAO9J,GAAsBkJ,KAC5B,CAACA,IAEEa,EAAe/D,uBACnB,SAACgE,GACCN,EAAOM,EAAEC,cAAcpf,SAEzB,CAAC6e,IAGGQ,EAAkBlE,uBAAY,WAClC0D,EAAOG,KACN,CAACA,EAAaH,IAEjB,OACE,eAAC,IAAD,CAAOS,MAAK,mBAAc1V,GAAa+U,UAAWA,EAAlD,UACE,cAAC,GAAD,CACEJ,YAAac,EACbzB,SAAUsB,EACVlf,MAAO4e,EACPP,IAAKW,EACLV,OAAQ1U,IAEV,eAAC,GAAD,WACE,cAAC,IAAD,CAAQ2L,QAAQ,YAAYgC,QAASoH,EAArC,SACGrI,EAAgB,IAAK,YAExB,cAAC,IAAD,CACEiJ,SAAUT,EACVvH,QAAO,sBAAE,sBAAA3X,EAAA,6DACPmf,GAAa,GADN,SAEDL,EAAUE,GAFT,OAGPG,GAAa,GACbJ,IAJO,2CAFX,SASGG,EAAYxI,EAAgB,IAAK,wBAA0BA,EAAgB,IAAK,oBCF5EmJ,GArCoC,SAAC,GAAwD,IAAtD1X,EAAqD,EAArDA,SAAU2W,EAA2C,EAA3CA,UAAWC,EAAgC,EAAhCA,UAAgC,IAArB9U,iBAAqB,MAAT,GAAS,IACvEvK,oBAAS,GAD8D,mBAClGwf,EADkG,KACvFC,EADuF,KAEnGzI,EAAkBrY,eAClB+gB,EAAcC,mBAAQ,WAC1B,OAAO9J,GAAsBpN,KAC5B,CAACA,IAEJ,OACE,eAAC,IAAD,CACEuX,MAAK,UAAKhJ,EAAgB,IAAK,YAA1B,YAAyCA,EAAgB,IAAD,UAASzM,EAAT,aAC7D8U,UAAWA,EAFb,UAIE,cAACe,GAAD,UACE,cAAC,GAAD,CAAS1f,MAAO2f,OAAOX,OAEzB,eAAC,GAAD,WACE,cAAC,IAAD,CAAQ/H,WAAS,EAAC1B,QAAQ,YAAYgC,QAASoH,EAA/C,SACGrI,EAAgB,IAAK,YAExB,cAAC,IAAD,CACEwB,GAAG,iBACHb,WAAS,EACTsI,SAAUT,EACVvH,QAAO,sBAAE,sBAAA3X,EAAA,6DACPmf,GAAa,GADN,SAEDL,EAAUM,GAFT,OAGPD,GAAa,GACbJ,IAJO,2CAJX,SAWGG,EAAYxI,EAAgB,IAAK,wBAA0BA,EAAgB,IAAK,oBASrFoJ,GAAaphB,KAAOM,IAAV,6HChDVghB,GAAQthB,KAAOM,IAAV,yHAOLihB,GAAavhB,KAAOsB,EAAV,sEAwBDkgB,GAnBwB,SAAC,GAA4B,IAAD,IAAzBC,WACxC,YADiE,SAG7D,gCACE,cAACH,GAAD,8BACA,cAACC,GAAD,CAAY9M,KAAK,IAAIiN,OAAO,SAA5B,sCAQJ,8BACE,cAAC,GAAD,CAAWxV,YAAU,EAArB,yBC+CAyV,GAAe3hB,KAAO4hB,OAAV,0cAEF,SAAChN,GAAD,OAAaA,EAAMqM,SAAP,OAAkBrM,EAAM1U,MAAMoX,KAAK9F,cAGpD,SAACoD,GAAD,OAAaA,EAAMqM,SAAP,uBAGR,SAACrM,GAAD,OAAWA,EAAM4I,YAEpB,SAAC5I,GAAD,OAAWA,EAAMsJ,QAGX,SAACtJ,GAAD,OAAWA,EAAMsD,WAChB,SAACtD,GAAD,OAAWA,EAAMsD,WAChB,SAACtD,GAAD,OAAaA,EAAMqM,SAAuB,YAAZhO,KAE5B,SAAC2B,GAAD,OAAaA,EAAMqM,SAAP,oBAO5BY,GAAa7hB,aAAO8hB,IAAP9hB,CAAH,wNAOF,SAAC4U,GAAD,OAAYA,EAAM1U,MAAMme,QAAQ,MAC/B,SAACzJ,GAAD,OAAWA,EAAM1U,MAAMme,QAAQ,MAIxC0D,GAAqB/hB,KAAOsB,EAAV,wNAOV,SAACsT,GAAD,OAAYA,EAAM1U,MAAMme,QAAQ,MAC/B,SAACzJ,GAAD,OAAWA,EAAM1U,MAAMme,QAAQ,MAI/B2D,GAjHuB,SAAC,GAA2D,IAK5FC,EACAC,EACA1E,EAPmCzc,EAAwD,EAAxDA,SAAUkgB,EAA8C,EAA9CA,SAAUxM,EAAoC,EAApCA,KAAMwE,EAA8B,EAA9BA,QAASiF,EAAqB,EAArBA,KAAM/e,EAAe,EAAfA,KAAMgjB,EAAS,EAATA,GAAS,EACnEviB,qBAAW4T,MAA/BjC,EADuF,EACvFA,OAAQ8M,EAD+E,EAC/EA,QACV+D,EAAc7Q,EAAOC,WAM3B,OAAQ0M,GACN,IAAK,KACHgE,EAAgB7D,EAAQ,GACxB4D,EAAa,GACbzE,EAAW,GACX,MACF,IAAK,KACH0E,EAAgB7D,EAAQ,GACxB4D,EAAa,GACbzE,EAAW,GACX,MACF,IAAK,KACL,QACE0E,EAAgB7D,EAAQ,GACxB4D,EAAa,GACbzE,EAAW,GAGf,IAAM6E,EAAc1B,mBAAQ,WAC1B,OAAIwB,EACK,cAACN,GAAD,CAAYM,GAAIA,EAAhB,SAAqBhjB,IAE1BsV,EAEA,cAACsN,GAAD,CAAoBtN,KAAMA,EAAMiN,OAAO,UAAvC,SACGviB,IAIAA,IACN,CAACsV,EAAMtV,EAAMgjB,IAEhB,OACE,eAACR,GAAD,CACEW,UAtCAA,UAuCAhF,MAAO8E,EACPnB,SAAUA,EACVzD,SAAUA,EACVvE,QAASA,EACTf,QAASgK,EACThE,KAAM+D,EAPR,UASGlhB,EACAshB,M,oBCzDDE,IAAI,sBACP/hB,EAAawa,SvBIG,kBACjB,cAAC,IAAD,CAAK/D,QAAQ,UAAUC,SAAO,EAACC,UAAW,cAAC,IAAD,IAA1C,wBuBNQ,gBAEP3W,EAAaqL,KAAOmL,IAFb,gBAGPxW,EAAagiB,UAAYpL,IAHlB,IAgBJqL,GAAeziB,KAAOM,IAAV,8FACQ,qBAAGJ,MAAmBuT,OAAS,UAAY,aAC1D,gBAAGvH,EAAH,EAAGA,WAAH,SAAehM,MAAkBqR,OAAOrF,EAAa,gBAAkB,eAI5EwW,GAAsB1iB,KAAO4hB,OAAV,uWAId,SAAChN,GAAD,OAAWA,EAAM1U,MAAMqR,OAAO4N,WAkBnCwD,GAAU3iB,KAAOM,IAAV,oDAIPsiB,GAAM5iB,KAAOM,IAAV,yEAKHuiB,GAAW7iB,KAAOM,IAAV,2CAGRoX,GAAQ1X,KAAOM,IAAV,mDAGLwiB,GAAY9iB,KAAOsB,EAAV,gGAMTyhB,GAA8B,SAAC,GAQ9B,IAPLjX,EAOI,EAPJA,YACA6B,EAMI,EANJA,YACArC,EAKI,EALJA,UACA0X,EAII,EAJJA,gBACA9W,EAGI,EAHJA,WACA+W,EAEI,EAFJA,iBACArX,EACI,EADJA,aACI,EACwB5K,oBAAS,GADjC,mBACGkiB,EADH,KACWC,EADX,KAEEnL,EAAkBrY,eAClByjB,EAAOF,EAASG,KAAYC,KAG5BC,EAAMhB,GAAK3W,GAEjB,OACE,eAAC6W,GAAD,CAAcvW,WAAYA,EAA1B,UACE,eAAC0W,GAAD,WACE,cAACC,GAAD,UACE,cAACU,EAAD,MAEF,eAACb,GAAD,CAAqBzJ,QATP,kBAAMkK,GAAWD,IAS/B,UACGA,EAAS,OAAS,UADrB,IACgC,cAACE,EAAD,UAGjCF,GACC,eAACP,GAAD,WACE,eAACC,GAAD,CAAK3K,MAAO,CAAEuL,aAAc,OAA5B,UACE,cAACX,GAAD,UACE,eAAC,GAAD,WACE,sBAAM1K,KAAK,MAAMC,aAAW,QAA5B,SACG,MAEFJ,EAAgB,IAAK,kBAJxB,IAI4C1M,EAJ5C,SAOF,cAAC,GAAD,CAASkS,SAAS,OAAOH,WAAYnR,EAAYxK,MAAO8U,GAAiB7I,QAE1EsV,EAAmB,GAClB,eAACL,GAAD,WACE,cAACC,GAAD,UACE,eAAC,GAAD,WAAQ7K,EAAgB,IAAK,SAA7B,SAEF,cAAC,GAAD,CAASwF,SAAS,OAAOH,WAAYnR,EAAYxK,MAAOuhB,EAAkBvM,SAAU,OAGlE,IAArBuM,GAA0BD,EAAkB,GAC3C,eAACJ,GAAD,WACE,cAACC,GAAD,UACE,eAAC,GAAD,WAAQ7K,EAAgB,IAAK,sBAA7B,SAEF,cAAC,GAAD,CAASwF,SAAS,OAAOH,WAAYnR,EAAYxK,MAAOshB,EAAiBtM,SAAU,OAGvF,cAACoM,GAAD,CAAWrO,KAAM3I,EAAa4V,OAAO,SAArC,SACG1J,EAAgB,IAAK,8BAQnBtX,OAAM+iB,KAAKV,IC2EpBW,GAAmB1jB,KAAOM,IAAV,0PAWhBqjB,GAAoB3jB,KAAOM,IAAV,2IAQjBsjB,GAAqB5jB,KAAOM,IAAV,oIAOlBujB,GAAqB7jB,KAAOM,IAAV,kEACZ,SAACsU,GAAD,OAAWA,EAAM1U,MAAMme,QAAQ,MAChC,SAACzJ,GAAD,OAAWA,EAAM1U,MAAMme,QAAQ,MAGpCyF,GAAgB9jB,KAAOM,IAAV,qEAKJyjB,GAvN0B,SAAC,GAAc,IAAZ3V,EAAW,EAAXA,KAExC/C,EAiBE+C,EAjBF/C,QACA2Y,EAgBE5V,EAhBF4V,MACA1Y,EAeE8C,EAfF9C,UACAC,EAcE6C,EAdF7C,UACAC,EAaE4C,EAbF5C,iBACAE,EAYE0C,EAZF1C,oBACAI,EAWEsC,EAXFtC,YACAC,EAUEqC,EAVFrC,QACAkY,EASE7V,EATF6V,IACA9c,EAQEiH,EARFjH,cACAyE,EAOEwC,EAPFxC,aACA+B,EAMES,EANFT,YACAZ,EAKEqB,EALFrB,WACAC,EAIEoB,EAJFpB,SACAd,EAGEkC,EAHFlC,WACAxB,EAEE0D,EAFF1D,SACAwZ,EACE9V,EADF8V,aAGIC,EAAYvY,IAAiBpL,EAAawa,QAC1ChD,EAAkBrY,eAClBykB,EAAuB5J,GAAS9O,GAC9BnD,EAAYsM,cAAZtM,QACF2N,EAAQK,KACN8N,EChCqB,SAAClJ,EAAsB9P,GACpD,IAAMR,EAAWwF,cACT9H,EAAiCsM,cAAjCtM,QACF0T,EAAoBnB,GAAazP,GAYvC,MAAO,CAAEgZ,UAVaxH,sBAAW,sBAAC,4BAAAvb,EAAA,+EAEb4Z,GAAQC,EAAYc,EAAmB1T,GAF1B,cAExBsT,EAFwB,OAG9BhR,EAASkF,GAAoB1E,EAAS9C,IAHR,kBAIvBsT,GAJuB,0DAMvB,GANuB,yDAQ/B,CAACtT,EAASsC,EAAUsQ,EAAYc,EAAmB5Q,KDmBhCiZ,CAAgBF,EAAsB/Y,GAApDgZ,UACAzH,EbtCmB,SAACvR,GAAiC,IAAxBkZ,EAAuB,wDACtD1Z,EAAWwF,cACT9H,EAAYsM,cAAZtM,QACFuF,EAAqB+M,KACrBoB,EAAoBnB,GAAazP,GAiBvC,MAAO,CAAEuR,QAfWC,sBAAW,uCAC7B,WAAO/N,GAAP,SAAAxN,EAAA,yDACkB,IAAZ+J,EADN,gCAEUqQ,GAAM5N,EAAoB,EAAGgB,EAAQvG,GAF/C,kCAGagc,EAHb,iCAIUrI,GAAcD,EAAmBnN,EAAQvG,GAJnD,gDAMUyT,GAAWC,EAAmBnN,EAAQvG,GANhD,QAQEsC,EAASoF,GAAwB5E,EAAS9C,IAC1CsC,EAASmF,GAAkB3E,EAAS9C,IATtC,4CAD6B,sDAY7B,CAACA,EAASsC,EAAU0Z,EAAYzW,EAAoBmO,EAAmB5Q,KaoBrDmZ,CAAcnZ,EAAS8Y,GAAnCvH,QACAM,EZhCqB,SAAC7R,GAC9B,IAAMR,EAAWwF,cACT9H,EAAYsM,cAAZtM,QACFuF,EAAqB+M,KACrBoB,EAAoBnB,GAAazP,GACjCoZ,EAAazH,GAAS5d,SAASiM,GAqBrC,MAAO,CAAE6R,UAnBaL,sBAAW,uCAC/B,WAAO/N,GAAP,mBAAAxN,EAAA,yDACkB,IAAZ+J,EADN,gCAEyB8Q,GAAQrO,EAAoB,EAAGgB,EAAQvG,GAFhE,OAEUuU,EAFV,OAGIC,QAAQlV,KAAKiV,GAHjB,2BAIa2H,EAJb,kCAKyBjI,GAAqBP,EAAmBnN,EAAQvG,GALzE,QAKUuU,EALV,OAMIC,QAAQlV,KAAKiV,GANjB,yCAQyBR,GAAaL,EAAmBnN,EAAQvG,GARjE,QAQUuU,EARV,OASIC,QAAQlV,KAAKiV,GATjB,QAWEjS,EAASoF,GAAwB5E,EAAS9C,IAC1CsC,EAASmF,GAAkB3E,EAAS9C,IACpCsC,EAASqF,GAAwB7E,EAAS9C,IAb5C,4CAD+B,sDAgB/B,CAACA,EAASsC,EAAU4Z,EAAY3W,EAAoBmO,EAAmB5Q,KYSnDqZ,CAAgBrZ,GAA9B6R,UACAyH,EE5BqB,SAACtZ,GAAiC,IAAxBkZ,EAAuB,wDACxD1Z,EAAWwF,cACT9H,EAAYsM,cAAZtM,QACF0T,EAAoBnB,GAAazP,GACjCyC,EAAqB+M,KAc3B,MAAO,CAAE8J,SAZa9H,sBAAW,sBAAC,sBAAAvb,EAAA,yDAChB,IAAZ+J,EAD4B,gCAExBU,GAAQ+B,EAAoB,EAAGvF,GAFP,kCAGrBgc,EAHqB,iCAIxB7H,GAAiBT,EAAmB1T,GAJZ,gDAMxBkU,GAAcR,EAAmB1T,GANT,QAQhCsC,EAASqF,GAAwB7E,EAAS9C,IAC1CsC,EAASmF,GAAkB3E,EAAS9C,IATJ,4CAU/B,CAACA,EAASsC,EAAU0Z,EAAYzW,EAAoBmO,EAAmB5Q,KFYrDuZ,CAAgBvZ,EAAS8Y,GAAtCQ,SA7B6C,EA+BH3jB,oBAAS,GA/BN,mBA+B9C6jB,EA/B8C,KA+B3BC,EA/B2B,OAgCnB9jB,oBAAS,GAhCU,mBAgC9Cwf,EAhC8C,KAgCnCC,EAhCmC,KAkC/CtV,EAAY,IAAI7D,KAAkB,OAARoD,QAAQ,IAARA,OAAA,EAAAA,EAAUS,YAAa,GACjD6F,EAAsB,IAAI1J,KAAkB,OAARoD,QAAQ,IAARA,OAAA,EAAAA,EAAUsG,sBAAuB,GACrE3H,EAAgB,IAAI/B,KAAkB,OAARoD,QAAQ,IAARA,OAAA,EAAAA,EAAUrB,gBAAiB,GACzDI,EAAW,IAAInC,KAAkB,OAARoD,QAAQ,IAARA,OAAA,EAAAA,EAAU0E,gBAAiB,GAEpD6T,EAAmB8B,KAAKhF,IAAIhT,EAAamJ,EAAO,GAChD8M,EAAkB+B,KAAKhF,IAAI/S,EAAWkJ,EAAO,GAC7CuO,EAAajZ,IAAqBjL,EAAWykB,MAC7CC,IAAuC,OAAb5b,QAAa,IAAbA,OAAA,EAAAA,EAAeiM,YAAa,EACtD4P,IAAiBD,KAA4B9Z,EAAUmK,aAAe6O,EACtEgB,GAAejZ,GAAc+Y,GAE7BG,GAAiB,IAAI9d,IAAU4c,GAAcmB,aAAa,IAAI/d,IAAU,IAAIE,IAAIL,IA9CjC,GA+C1Bme,YACzB,cAAC,GAAD,CACEvF,IAAKmE,GAAgBlT,EAAoBuU,cAAcH,IAAkBA,GAAiBpU,EAC1FoP,UAAWxD,EACXtR,UAAW4Y,EAAY,UAAM1Y,EAAN,aAA2B0Y,EAA3B,SAAiD1Y,KAJrEga,GA/C8C,wBAuDzBF,YAC1B,cAAC,GAAD,CAAe7b,SAAUA,EAAU2W,UAAWxD,EAAStR,UAAWE,KAD7Dia,GAvD8C,wBA2DzBH,YAC1B,cAAC,GAAD,CAAevF,IAAK1W,EAAe+W,UAAWlD,EAAW5R,UAAWE,KAD/Dka,GA3D8C,qBA+D/CC,GAAgB9I,sBAAW,sBAAC,sBAAAvb,EAAA,sEAE9BwjB,GAAqB,GAFS,SAGTT,IAHS,eAM5BS,GAAqB,GANO,gDAS9B/H,QAAQ6I,MAAR,MAT8B,yDAW/B,CAACvB,EAAWS,IAEf,OACE,eAAC,GAAD,CAAMvN,SAAU4N,GAAcjZ,WAAYA,GAA0B,IAAZb,EAAxD,UACGa,GAA0B,IAAZb,GAAiB,cAACqY,GAAD,IAChC,sBAAKzL,MAAO,CAAEC,QAAS,QAAvB,UACE,eAAC,GAAD,CAAWhM,WAAYA,GAA0B,IAAZb,EAArC,UACGoZ,GAAc,QADjB,IAC2BnZ,EAD3B,IACuC0M,EAAgB,IAAK,WAE5D,sBAAKC,MAAO,CAAEuL,aAAc,MAAOqC,QAAS,OAAQC,WAAY,UAAhE,UACE,qBAAK7N,MAAO,CAAEY,KAAM,GAApB,SACE,cAAC,IAAD,CAAOR,IAAG,yBAAoB2L,GAAS1Y,EAA7B,QAA8CgN,MAAO,GAAIC,OAAQ,GAAIC,IAAKlN,MAErF/C,GAAWwD,IAAY0Y,GACtB,cAACsB,GAAD,CACE9E,UAAWxX,EAAS6L,YAAckL,EAClCrhB,KAAMqhB,EAAY,aAAe,UACjCvH,QAAO,sBAAE,sBAAA3X,EAAA,6DACPmf,GAAa,GADN,SAEDkE,IAFC,OAGPlE,GAAa,GAHN,gDAQbgE,EAYA,cAAC,GAAD,CAAehD,WAAYwD,KAX3B,eAACrB,GAAD,WACE,cAAC,GAAD,CAASliB,MAAO8U,GAAiB/M,EAAUtC,GAAgBkW,WAAYnR,IAC1D,IAAZb,GAAiB9C,GAAWwD,GAC3B,cAACga,GAAD,CACE9E,UAAWxX,EAAS6L,YAAckL,EAClCrhB,KAAkB6Y,EAAgB,IAA5BwI,EAAiC,cAAsC,YAC7EvH,QAASwM,QAOjB,cAAC,GAAD,CAAOvZ,WAAYA,GAA0B,IAAZb,EAAelM,KAAM6Y,EAAgB,IAAD,UAASzM,EAAT,cACrE,eAACoY,GAAD,YACIpb,GAAW,cAAC,GAAD,IACZA,IACE2c,KAAkBT,EACjB,qBAAKxM,MAAO,CAAEY,KAAM,GAApB,SACE,cAAC,IAAD,CAAQoI,SAAU/U,GAAc2Y,EAAmB5L,QAAS0M,GAAehN,WAAS,EAApF,2BACcnN,OAIhB,qCACE,cAAC,IAAD,CACEyV,SAAU5X,EAAc2c,GAAG,IAAI1e,IAAU,KAAOkZ,EAChDvH,QACEwL,EAAU,sBACN,sBAAAnjB,EAAA,6DACEmf,GAAa,GADf,SAEQvD,EAAU,KAFlB,OAGEuD,GAAa,GAHf,2CAKAiF,GATR,2BAYcla,KAEd,cAACqY,GAAD,KACEY,GACA,cAAC,IAAD,CAAYxD,SAAU/U,GAA0B,IAAZb,EAAe4N,QAASuM,GAA5D,SACE,cAAC,IAAD,CAASlI,MAAM,wBAM3B,eAACwG,GAAD,WACE,sBAAK7L,MAAO,CAAEY,KAAM,GAApB,UAA0Bb,EAAgB,IAAK,OAA/C,OACC9L,GAAcuY,IAAeR,IAA7B,OAAoCA,QAApC,IAAoCA,OAApC,EAAoCA,EAAKgC,YAAW,OAAChC,QAAD,IAACA,OAAD,EAACA,EAAKiC,YACzD,IAEA,cAAC,GAAD,CAAS1I,SAAS,OAAOH,WAAYnR,EAAYxK,MAAK,OAAEuiB,QAAF,IAAEA,OAAF,EAAEA,EAAK3O,WAAYoB,SAAU,EAAG+G,KAAK,SAG/F,eAACqG,GAAD,WACE,sBAAK7L,MAAO,CAAEY,KAAM,GAApB,UACE,sBAAMV,KAAK,MAAMC,aAAY5M,EAA7B,SACI,MAEHwM,EAAgB,IAAK,cAJxB,OAMA,cAAC,GAAD,CAASwF,SAAS,OAAOH,WAAYnR,EAAYxK,MAAO8U,GAAiBnN,WAG7E,cAAC,GAAD,CACEyC,YAAaA,EACb6B,YAAaA,EACbrC,UAAWA,EACX0X,gBAAiBA,EACjB9W,WAAYA,EACZ+W,iBAAkBA,EAClBrX,aAAcA,QGxLPua,GAlBQ,WAAO,IAAD,EACFC,cAAjBC,EADmB,EACnBA,IAAKC,EADc,EACdA,QACPtO,EAAkBrY,eAExB,OACE,cAAC,GAAD,UACE,eAAC,IAAD,CAAY4mB,YAAcD,EAAc,EAAJ,EAAOpI,KAAK,KAAKjH,QAAQ,SAA7D,UACE,cAAC,IAAD,CAAgBwB,GAAIqJ,IAAMK,GAAE,UAAKkE,GAAjC,SACGrO,EAAgB,IAAK,YAExB,cAAC,IAAD,CAAgBS,GAAIqJ,IAAMK,GAAE,UAAKkE,EAAL,YAA5B,SACGrO,EAAgB,IAAK,oBAS1BxC,GAAUxV,KAAOM,IAAV,6HCxBEN,QAAOM,IAAtB,mHACsB,qBAAGJ,MAAkBqR,OAAOoG,cC6G5C6O,GAAOxmB,KAAOM,IAAV,khBAEC,qBAAGJ,MAAkBqR,OAAO4N,WA4BxBsH,GAzHQ,WAAO,IACpBC,EAASN,cAATM,KACF1O,EAAkBrY,eAChB4I,EAAYsM,cAAZtM,QACFzF,EAAQ6N,KACRvF,EAAQ0F,GAASvI,GACjB6I,EAAcF,KACdgF,EAAQK,KAaRoQ,EAAevb,EAAMzF,KAAI,SAACyI,GAC9B,IAAM+V,EAAY/V,EAAKxC,eAAiBpL,EAAawa,QAC/C4L,EAAkB9jB,EAAMhE,MAAK,SAACsL,GAAD,OAAOA,EAAElH,cAAgBkL,EAAK9C,aAC3Dub,EAAmB/jB,EAAMhE,MAAK,SAACsf,GAAD,OAAOA,EAAElb,cAAgBkL,EAAK5C,oBAG5Dsb,EAAyB3C,EAAY,IAAI7c,IAAU,GAAK,IAAIA,IAAJ,OAAcuf,QAAd,IAAcA,OAAd,EAAcA,EAAkB1e,mBAOxF4e,EAxBW,SAACzb,EAAmB0b,EAAuBC,GAC5D,IAAMC,EAAe,IAAI5f,IAAU0f,GACnC,MAAkB,QAAd1b,EACK,IAAIhE,IAAU,GAEnB0f,GAAcC,IAAe1mB,EAAW4mB,KACnCD,EAAa5mB,IAAI8Q,GAEnB8V,EAUuBE,CAC5BhZ,EAAK9C,UADiC,OAEtCsb,QAFsC,IAEtCA,OAFsC,EAEtCA,EAAiBze,kBAFqB,OAGtCye,QAHsC,IAGtCA,OAHsC,EAGtCA,EAAiBxjB,kBAGmCqE,MAAM2G,EAAKpC,eAAevE,MAAMoO,IAChFwR,EAA0BP,EAAuBrf,MAAM+O,GAAiBpI,EAAKT,cAC7EsW,EAAM8C,EAAwBzmB,IAAI+mB,GAAyB5f,MAAM,KAEvE,OAAO,2BACF2G,GADL,IAEElC,WAA6B,IAAjBkC,EAAK/C,UAAwB+C,EAAKlC,YAAcgK,EAAQ9H,EAAKpB,UACzEiX,WAxCuB,EA4CQqD,KAAUX,GAAc,SAACvY,GAAD,OAAUA,EAAKlC,cA5C/C,mBA4CpBqb,EA5CoB,KA4CLC,EA5CK,KA8C3B,OACE,eAACznB,GAAA,EAAD,WACE,eAAC,GAAD,WACE,gCACE,cAAC,IAAD,CAAS0Y,GAAG,KAAKyF,KAAK,MAAMtF,GAAG,OAA/B,SACGZ,EAAgB,IAAK,eAExB,cAAC,IAAD,CAASS,GAAG,KAAKyF,KAAK,IAAItF,GAAG,OAA7B,SACGZ,EAAgB,IAAK,wBAKxB,+BACE,6BAAKA,EAAgB,IAAK,6CAE1B,6BAAKA,EAAgB,IAAK,mCAC1B,6BAAKA,EAAgB,IAAK,6CAK9B,qBAAKK,IAAI,mBAAmBG,IAAI,kBAAkBF,MAAO,IAAKC,OAAQ,SAExE,cAAC,GAAD,IACA,cAACkP,GAAD,IACA,eAACC,GAAD,WACE,cAAC,IAAD,CAAOC,OAAK,EAACjB,KAAI,UAAKA,GAAtB,SACE,qCACGkB,KAAQJ,EAAW,CAAC,cAAc7hB,KAAI,SAACyI,GAAD,OACrC,cAAC,GAAD,CAA6BA,KAAMA,GAApBA,EAAK/C,YAEtB,cAAC,GAAD,SAGJ,cAAC,IAAD,CAAOqb,KAAI,UAAKA,EAAL,YAAX,SACGkB,KAAQL,EAAe,CAAC,cAAc5hB,KAAI,SAACyI,GAAD,OACzC,cAAC,GAAD,CAA6BA,KAAMA,GAApBA,EAAK/C,qBClGnB9G,GAAc,SAACsjB,EAAwBpjB,GAGlD,OADiB,IADJ,IAAIP,IAAK2jB,GACIljB,IAAIC,UAAUkC,EAA8BrC,IAI3DqjB,GAAY,uCAAG,WAC1B3M,EACArN,EACAvF,GAH0B,eAAAjH,EAAA,+EAMQ6Z,EAAWlV,QAAQkF,UAAU5C,EAASuF,EAAmBsN,QAAQ3W,SAASmB,OANlF,cAMlBuF,EANkB,yBAOjBA,GAPiB,yDASjB,KATiB,yDAAH,0DAaZ4c,GAAe,uCAAG,WAC7BF,EACAG,EACAC,GAH6B,iBAAA3mB,EAAA,6DAKvBgZ,EAAW/V,GAAYsjB,EAAUG,GALV,kBAOG1N,EAASrU,QAAQiiB,UAAUD,GAAariB,OAP3C,cAOrB6Q,EAPqB,yBAQpBA,GARoB,yDAUpB,KAVoB,yDAAH,0DCsCf0R,GAAmB,SAACH,GAA0B,IAAD,EAC1BhnB,mBAAS,IAAIsG,IAAU,IADG,mBACjDmP,EADiD,KACxC2R,EADwC,OAEevT,cAA/DtM,EAFgD,EAEhDA,QAAS6Q,EAFuC,EAEvCA,SACTvX,EAAgBF,IAAhBE,YAaR,OAXAV,qBAAU,WAMJoH,GAAW6Q,GALG,uCAAG,4BAAA9X,EAAA,sEACDymB,GAAgB3O,EAAU4O,EAAc,8CADvC,OACb5hB,EADa,OAEnBgiB,EAAW,IAAI9gB,IAAUlB,IAFN,2CAAH,oDAMhBiiB,KAED,CAAC9f,EAAS6Q,EAAU4O,EAAcnmB,IAE9B4U,GAGM6R,GAxES,SAACN,GAA0B,IAAD,EAClBhnB,mBAAS,IAAIsG,IAAU,IADL,mBACzCmP,EADyC,KAChC2R,EADgC,OAEuBvT,cAA/DtM,EAFwC,EAExCA,QAAS6Q,EAF+B,EAE/BA,SACTxX,EAAgBD,IAAhBC,YAaR,OAXAT,qBAAU,WAMJoH,GAAW6Q,GALG,uCAAG,4BAAA9X,EAAA,sEACDymB,GAAgB3O,EAAU4O,EAAczf,GADvC,OACbnC,EADa,OAEnBgiB,EAAW,IAAI9gB,IAAUlB,IAFN,2CAAH,oDAMhBiiB,KAED,CAAC9f,EAAS6Q,EAAU4O,EAAcpmB,IAE9B6U,GCQM8R,GAxB6B,SAAC,GAA4C,IAA1C7mB,EAAyC,EAAzCA,MAAOgV,EAAkC,EAAlCA,SAAkC,IAAxB8G,gBAAwB,MAAb,OAAa,IAC1DgL,sBAAW,CACrC5K,MAAO,EACPC,IAAKnc,EACLoc,SAAU,EACVC,UAAW,IACXrH,cAEezD,IAAbyD,EAAyBA,EAAWhV,EAAQ,EAAI,EAAIA,EAAQ,IAAM,EAAI,IAPlE+mB,EAD8E,EAC9EA,QAASC,EADqE,EACrEA,OAUXC,EAAc1S,iBAAOyS,GAM3B,OAJAvnB,qBAAU,WACRwnB,EAAYrS,QAAQ5U,KACnB,CAACA,EAAOinB,IAGT,cAAC,IAAD,CAAMhL,MAAI,EAACH,SAAUA,EAArB,SACGiL,KCpBDG,GAAmB5oB,aAAOqX,IAAPrX,CAAH,4EAKhB4iB,GAAM5iB,KAAOM,IAAV,uJAiDMuoB,GAzCI,WACjB,IAAM7Q,EAAkBrY,eAClBmpB,EFKsB,WAAO,IAC3BjnB,EAAgBF,IAAhBE,YAD0B,EAEIb,qBAFJ,mBAE3B8nB,EAF2B,KAEdC,EAFc,KAclC,OAVA5nB,qBAAU,WAAM,4CACd,8BAAAG,EAAA,6DACQ0nB,EAAgBzkB,EAAYgJ,GAAU1I,KAD9C,SAEuBmkB,EAAc/iB,QAAQ6iB,cAAcljB,OAF3D,OAEQqjB,EAFR,OAGEF,EAAe,IAAIzhB,IAAU2hB,IAH/B,4CADc,uBAAC,WAAD,wBAOdC,KACC,CAACrnB,IAEGinB,EEnBaK,GACdC,EFqBuB,WAAO,IAC5BvnB,EAAgBF,IAAhBE,YAD2B,EAEKb,qBAFL,mBAE5BooB,EAF4B,KAEdC,EAFc,KAcnC,OAVAloB,qBAAU,WAAM,4CACd,8BAAAG,EAAA,6DACQgoB,EAAiB/kB,EAAYgJ,GAAUrI,KAD/C,SAEwBokB,EAAerjB,QAAQ6iB,cAAcljB,OAF7D,OAEQ2jB,EAFR,OAGEF,EAAgB,IAAI/hB,IAAUiiB,IAHhC,4CADc,uBAAC,WAAD,wBAOdC,KACC,CAAC3nB,IAEGunB,EEnCcK,GACfC,EAAgBvB,GAAiBtjB,KACjC8kB,EAAiBxB,GAAiBjjB,KAClC0kB,EAAcd,EAActS,GAAiBsS,GAAetS,GAAiBkT,GAAiB,EAC9FG,EAAaT,EAAe5S,GAAiB4S,GAAgB5S,GAAiBmT,GAAkB,EAGtG,OACE,cAACf,GAAD,UACE,eAAC,IAAD,WACE,cAAC,IAAD,CAAS1K,KAAK,KAAKtF,GAAG,OAAtB,SACGZ,EAAgB,IAAK,sBAExB,eAAC,GAAD,WACE,cAAC,IAAD,CAAMwF,SAAS,OAAf,SAAuBxF,EAAgB,IAAK,uBAC3C6R,GAAc,cAAC,GAAD,CAAWrM,SAAS,OAAO9b,MAAOmoB,OAEnD,eAAC,GAAD,WACE,cAAC,IAAD,CAAMrM,SAAS,OAAf,SAAuBxF,EAAgB,IAAK,wBAC3C4R,GAAe,cAAC,GAAD,CAAWpM,SAAS,OAAO9b,MAAOkoB,OAElD,eAAC,GAAD,WACA,cAAC,IAAD,CAAMpM,SAAS,OAAf,SAAuBxF,EAAgB,IAAK,wBAC5C,cAAC,GAAD,CAAWwF,SAAS,OAAO9b,MAAO8U,GAAiBkT,QAErD,eAAC,GAAD,WACE,cAAC,IAAD,CAAMlM,SAAS,OAAf,SAAuBxF,EAAgB,IAAK,uBAC5C,cAAC,GAAD,CAAWwF,SAAS,OAAO9b,MAAO8U,GAAiBmT,QAErD,eAAC,GAAD,WACE,cAAC,IAAD,CAAMnM,SAAS,OAAf,SAAuBxF,EAAgB,IAAK,qBAC5C,cAAC,GAAD,CAAWwF,SAAS,OAAO9G,SAAU,EAAGhV,MAAO,eCf1CooB,GA3Ba,WAAO,IAAD,EACkB9oB,mBAA4B,IAD9C,mBACzB+oB,EADyB,KACNC,EADM,KAExBzhB,EAAYsM,cAAZtM,QACA3G,EAAgBD,IAAhBC,YAqBR,OAnBAT,qBAAU,WAcJoH,GAbe,uCAAG,gCAAAjH,EAAA,6DACd8D,EAAQsB,EAAYf,KAAI,SAAC8C,GAAD,MAAW,CACvChE,QAASO,IACTe,KAAM,eACNC,OAAQ,CAACyC,EAAK1F,IAAKwF,OAJD,SAOKpD,EAAU4I,EAAe3I,GAP9B,OAOd6kB,EAPc,OAQdC,EAAUxjB,EAAYf,KAAI,SAAC8C,EAAMgC,GAAP,mBAAC,eAAsBhC,GAAvB,IAA6BgO,QAAS,IAAInP,IAAU2iB,EAAWxf,SAE/Fuf,EAAqBE,GAVD,2CAAH,oDAcjBC,KAED,CAAC5hB,EAAS3G,IAENmoB,GCJMK,GA1BQ,WAAO,IAAD,EACIppB,mBAAS,IADb,mBACpBqpB,EADoB,KACVjC,EADU,KAEnB7f,EAAiCsM,cAAjCtM,QACA3G,EAAgBD,IAAhBC,YAoBR,OAlBAT,qBAAU,WAaJoH,GAZkB,uCAAG,8BAAAjH,EAAA,6DACjB8D,EAAQsB,EAAYf,KAAI,SAAC8C,GAAD,MAAW,CACvChE,QAASO,IACTe,KAAM,eACNC,OAAQ,CAACyC,EAAK1F,IAAKwF,OAJE,SAOLpD,EAAU4I,EAAe3I,GAPpB,OAOjBgB,EAPiB,OASvBgiB,EAAWhiB,GATY,2CAAH,oDAapBkkB,KAED,CAAC/hB,EAAS3G,IAENyoB,GCJME,GAnBa,WAC1B,IAAMvS,EAAkBrY,eAChB4I,EAAYsM,cAAZtM,QAEFiiB,EADcJ,KACYlc,QAAO,SAACuc,EAAOC,GAC7C,OAAOD,EAAQ,IAAInjB,IAAUojB,GAASpqB,IAAI,IAAIgH,IAAU,IAAIE,IAAI,KAAK8N,aACpE,GAEH,OAAK/M,EAQE,cAAC,GAAD,CAAW7G,MAAO8oB,IANrB,cAAC,IAAD,CAAMlN,MAAM,eAAerF,MAAO,CAAE0S,WAAY,QAAhD,SACG3S,EAAgB,IAAK,aCMf4S,GAhBY,WACzB,IAAM5S,EAAkBrY,eAClBkrB,EAAevC,GAAgBzjB,KAGrC,OAFoBgQ,cAAZtM,QAUD,cAAC,GAAD,CAAW7G,MAAO8U,GAAiBqU,GAAerN,SAAS,SAN9D,cAAC,IAAD,CAAMF,MAAM,eAAerF,MAAO,CAAE0S,WAAY,QAAhD,SACG3S,EAAgB,IAAK,aCNxB8S,GAAwB9qB,aAAOqX,IAAPrX,CAAH,2KAOrB+qB,GAAQ/qB,KAAOM,IAAV,uDAIL0qB,GAAYhrB,KAAOirB,IAAV,uDAITvT,GAAQ1X,KAAOM,IAAV,kEACA,qBAAGJ,MAAkBqR,OAAOoG,cAIjCuT,GAAUlrB,KAAOM,IAAV,oDA4DE6qB,GAxDW,WAAO,IAAD,EACInqB,oBAAS,GADb,mBACvBwf,EADuB,KACZC,EADY,KAEtBlY,EAAYsM,cAAZtM,QACFyP,EAAkBrY,eAElByrB,EADmBtB,KACkBxd,QAAO,SAAC+e,GAAD,OAAiBA,EAAY5U,QAAQnB,WAAa,KAE5FqP,EZrBmB,SAAC2G,GAAwB,IAC5C/iB,EAAYsM,cAAZtM,QACFuF,EAAqB+M,KAU3B,MAAO,CAAE8J,SARa9H,sBAAW,sBAAC,4BAAAvb,EAAA,6DAC1BiqB,EAAkBD,EAASpd,QAAO,SAACuc,EAAO1nB,GAC9C,MAAM,GAAN,mBAAW0nB,GAAX,CAAkB1e,GAAQ+B,EAAoB/K,EAAKwF,OAClD,IAH6B,kBAKzB/B,QAAQC,IAAI8kB,IALa,2CAM/B,CAAChjB,EAAS+iB,EAAUxd,KYWF0d,CAAcJ,EAAkBzlB,KAAI,SAAC8lB,GAAD,OAAqBA,EAAgB1oB,QAAtF4hB,SAEF+G,EAAkB7O,sBAAW,sBAAC,sBAAAvb,EAAA,6DAClCmf,GAAa,GADqB,kBAG1BkE,IAH0B,6EAOhClE,GAAa,GAPmB,0EASjC,CAACkE,IAEJ,OACE,cAACmG,GAAD,UACE,eAAC,IAAD,WACE,cAAC,IAAD,CAAS5M,KAAK,KAAKtF,GAAG,OAAtB,SACGZ,EAAgB,IAAK,qBAExB,cAACgT,GAAD,CAAW3S,IAAI,oBAAoBG,IAAI,aAAaF,MAAO,GAAIC,OAAQ,KACvE,eAACwS,GAAD,WACE,cAAC,GAAD,IACA,cAAC,GAAD,UAAQ/S,EAAgB,IAAK,yBAE/B,eAAC+S,GAAD,WACE,cAAC,GAAD,IACA,cAAC,GAAD,UAAQ/S,EAAgB,IAAK,wBAE/B,cAACkT,GAAD,UACG3iB,EACC,cAAC,IAAD,CACEiR,GAAG,cACHyH,SAAUmK,EAAkBtrB,QAAU,GAAK0gB,EAC3CvH,QAASyS,EACT/S,WAAS,EAJX,SAMG6H,EACGxI,EAAgB,IAAK,oBACrBA,EAAgB,IAAD,uBAAsBoT,EAAkBtrB,OAAxC,QAGrB,cAAC,GAAD,CAAc6Y,WAAS,YC1EtBgT,GAAS,uCAAG,WAAOnnB,EAAKY,GAAZ,+BAAA9D,EAAA,yDACjB+D,EAAOf,IACPgB,EAAQ,IAAID,EAAKV,IAAIC,SAASW,EAAcN,KAC5CO,EAAM,IAAIC,IAAUjB,GACtB4B,EAAM,KACNhB,EAAMtF,OAAS,KALI,iBAMjBuG,EAAI,EANa,IAAA/E,EAAA,wCAAAA,EAAA,6DAQbsqB,EAAWxmB,EAAMymB,MAAU,IAAJxlB,EAAS,KAAOA,EAAI,IAC3CX,EAAWkmB,EAASjmB,KAAI,SAACC,GAAD,MAAU,CAACA,EAAK,GAAGC,cAAeL,EAAIM,mBAAmBF,EAAK,GAAIA,EAAK,QATlF,SAUUN,EAAMW,QAAQC,UAAUR,GAAUE,OAV5C,gBAUXO,EAVW,EAUXA,WACRE,IACAD,EAAMA,EAAI0lB,OAAO3lB,EAAWR,KAAI,SAACC,EAAM6E,GAAP,OAAiBjF,EAAIc,qBAAqBslB,EAASnhB,GAAO,GAAI7E,OAZ3E,sDAOdS,EAAIjB,EAAMtF,OAAS,KAPL,iHAef4F,EAAWN,EAAMO,KAAI,SAACC,GAAD,MAAU,CAACA,EAAK,GAAGC,cAAeL,EAAIM,mBAAmBF,EAAK,GAAIA,EAAK,QAf7E,UAgBQN,EAAMW,QAAQC,UAAUR,GAAUE,OAhB1C,iBAgBbO,EAhBa,EAgBbA,WACRC,EAAMD,EAAWR,KAAI,SAACC,EAAMS,GAAP,OAAab,EAAIc,qBAAqBlB,EAAMiB,GAAG,GAAIT,MAjBnD,iCAmBhBQ,GAnBgB,4CAAH,wDAsBT2lB,GAAQ,uCAAG,WAAOC,EAAiBC,EAAOC,EAAa3jB,GAA5C,SAAAjH,EAAA,wFAEb0qB,EAAgB/lB,QACpB8lB,SAAS,IAAIzkB,IAAU2kB,GAAOxkB,MAAM,IAAIH,IAAU,IAAIE,IAAI,KAAKa,WAAY6jB,GAC3E1Q,KAAK,CAAEC,KAAMlT,IACbqT,GAAG,mBAAmB,SAACC,GACtB,OAAOA,EAAGC,oBANM,yDASbiB,QAAQ6I,MAAR,OATa,wDAAH,4DAaRuG,GAAU,uCAAG,WAAOH,EAAiBI,EAAiB7jB,EAAS8jB,GAAlD,iCAAA/qB,EAAA,8DACN+qB,EADM,qCACqBL,EAAgB/lB,QAAQqmB,aAAa1mB,OAD1D,iCAClB2mB,EADkB,cAEHC,GAAiBJ,EAAiB7jB,GAF/B,cAElBzI,EAFkB,OAKlB2sB,EAASC,MAAMC,MAAM,KAAM,CAAE7sB,WAAU6F,KAAI,SAACrE,EAAG+E,GAAJ,MAAU,CACzD+lB,EAAgBhR,QAAQ3W,QACxB,sBACA,CAAC8D,EAASlC,OARY,UAUNslB,GAAUiB,GAAWH,GAVf,eAUlBrmB,EAVkB,OAYlBymB,EAAWzmB,EAAIT,KAAI,SAAC6T,GAAD,OAAQA,EAAGnR,cAE9BykB,EAASD,EAASlnB,KAAI,SAAC6T,GAAD,MAAQ,CAAC4S,EAAgBhR,QAAQ3W,QAAS,uBAAwB,CAAC+U,OAdvE,UAeGmS,GAAUiB,GAAWE,GAfxB,eAelBC,EAfkB,OAiBlBC,EAAgB,GACtBD,EAAaxiB,QAAb,uCAAqB,WAAO0iB,EAAa5mB,GAApB,SAAA/E,EAAA,sDACf2rB,EAAY5kB,aAAekkB,GAC7BS,EAAcE,KAAKL,EAASxmB,IAFX,2CAArB,yDAKM8mB,EAASH,EAAcrnB,KAAI,SAAC6T,GAAD,MAAQ,CAAC4S,EAAgBhR,QAAQ3W,QAAS,oBAAqB,CAAC+U,OAvBzE,UAwBFmS,GAAUiB,GAAWO,GAxBnB,eAwBlBC,EAxBkB,iBA0BlBC,GAAiBrB,GA1BC,iCA2BjBoB,GA3BiB,4CAAH,4DA8BVZ,GAAgB,uCAAG,WAAOJ,EAAiB7jB,GAAxB,SAAAjH,EAAA,+EACvB8qB,EAAgBnmB,QAAQiiB,UAAU3f,GAAS3C,QADpB,2CAAH,wDAIhB0nB,GAAU,uCAAG,WAAOtB,EAAiBI,EAAiB7jB,GAAzC,iCAAAjH,EAAA,sEAClB0qB,EAAgB/lB,QAAQqmB,aAAa1mB,OADnB,uBAEH4mB,GAAiBJ,EAAiB7jB,GAF/B,cAElBzI,EAFkB,OAIlB2sB,EAASC,MAAMC,MAAM,KAAM,CAAE7sB,WAAU6F,KAAI,SAACrE,EAAG+E,GAAJ,MAAU,CACzD+lB,EAAgBhR,QAAQ3W,QACxB,sBACA,CAAC8D,EAASlC,OAPY,SASNslB,GAAUiB,GAAWH,GATf,cASlBrmB,EATkB,OAUlBymB,EAAWzmB,EAAIT,KAAI,SAAC6T,GAAD,OAAQA,EAAGnR,cAE9BykB,EAASD,EAASlnB,KAAI,SAAC6T,GAAD,MAAQ,CAAC4S,EAAgBhR,QAAQ3W,QAAS,iBAAkB,CAAC+U,OAZjE,UAaImS,GAAUiB,GAAWE,GAbzB,eAalBS,EAbkB,OAelBC,EAAeX,EAASvgB,QAAO,SAACkN,EAAI/O,GAAL,OAAgB8iB,EAAc9iB,GAAO,MAEpE0iB,EAASK,EAAa7nB,KAAI,SAAC6T,GAAD,MAAQ,CAACwS,EAAgB5Q,QAAQ3W,QAAS,gBAAiB,CAAC+U,OAjBpE,UAkBFmS,GAAU8B,GAAYN,GAlBpB,eAkBlBO,EAlBkB,OAoBpBC,EAAiB,GACrBD,EAAQnjB,SAAQ,SAACqjB,EAAGvnB,GACdunB,EAAI,GACND,EAAeT,KAAKM,EAAannB,OAIjCsnB,EAAe7tB,OAAS,MAC1B6tB,EAAiBA,EAAe9B,MAAM,EAAG,MA5BnB,4BAgCfG,EAAgB/lB,QACpBqnB,WAAWK,GACXnS,KAAK,CAAEC,KAAMlT,IACbqT,GAAG,mBAAmB,SAACC,GACtB,OAAOA,EAAGC,oBApCQ,4DAuCfiB,QAAQ6I,MAAR,OAvCe,2DAAH,0DA2CViI,GAAa,uCAAG,WAAO7B,EAAiBI,EAAiB7jB,GAAzC,yCAAAjH,EAAA,+EAED0qB,EAAgB/lB,QAAQqmB,aAAa1mB,OAFpC,cAEnB2mB,EAFmB,gBAGJC,GAAiBJ,EAAiB7jB,GAH9B,cAGnBzI,EAHmB,OAKnB2sB,EAASC,MAAMC,MAAM,KAAM,CAAE7sB,WAAU6F,KAAI,SAACrE,EAAG+E,GAAJ,MAAU,CACzD+lB,EAAgBhR,QAAQ3W,QACxB,sBACA,CAAC8D,EAASlC,OARa,UAUPslB,GAAUiB,GAAWH,GAVd,eAUnBrmB,EAVmB,OAWnBymB,EAAWzmB,EAAIT,KAAI,SAAC6T,GAAD,OAAQA,EAAGnR,cAC9BykB,EAASD,EAASlnB,KAAI,SAAC6T,GAAD,MAAQ,CAAC4S,EAAgBhR,QAAQ3W,QAAS,uBAAwB,CAAC+U,OAZtE,UAaEmS,GAAUiB,GAAWE,GAbvB,eAanBC,EAbmB,OAcnBI,EAASN,EAASlnB,KAAI,SAAC6T,GAAD,MAAQ,CAAC4S,EAAgBhR,QAAQ3W,QAAS,iBAAkB,CAAC+U,OAdhE,UAeGmS,GAAUiB,GAAWO,GAfxB,eAenBI,EAfmB,iBAiBJF,GAAiBrB,GAjBb,eAiBnB8B,EAjBmB,OAmBnBd,EAAgB,GACtBD,EAAaxiB,QAAb,uCAAqB,WAAO0iB,EAAa5mB,GAApB,SAAA/E,EAAA,uDAEdwsB,GAAUb,EAAY5kB,aAAekkB,KAC9BgB,EAAclnB,GAAG,IAC3B2mB,EAAcE,KAAKL,EAASxmB,KAJX,2CAArB,yDAQM0nB,EAASf,EAAcrnB,KAAI,SAAC6T,GAAD,MAAQ,CAACwS,EAAgB5Q,QAAQ3W,QAAS,gBAAiB,CAAC+U,OA5BpE,UA8BHmS,GAAU8B,GAAYM,GA9BnB,eA8BnBL,EA9BmB,OA+BnBM,EAAQN,EAAQxf,QAAO,SAAC3B,EAAG0hB,GAAJ,OAAU3mB,IAAU4mB,IAAI3hB,EAAG0hB,KAAI3mB,IAAU,IA/B7C,kBAiClB0mB,GAjCkB,kCAmCzBjR,QAAQ6I,MAAR,MAnCyB,iCAqCpBte,IAAU,IArCU,0DAAH,0DAwCb6mB,GAAe,uCAAG,WAAOnC,GAAP,eAAA1qB,EAAA,sEACL0qB,EAAgB/lB,QAAQqmB,aAAa1mB,OADhC,cACvB2mB,EADuB,yBAEtBP,EAAgB/lB,QAAQkoB,gBAAgB5B,GAAW3mB,QAF7B,2CAAH,sDAKfwoB,GAAM,uCAAG,WAAOpC,GAAP,SAAA1qB,EAAA,+EACb0qB,EAAgB/lB,QAAQooB,YAAYzoB,QADvB,2CAAH,sDAIN0oB,GAAoB,uCAAG,WAAOtC,GAAP,eAAA1qB,EAAA,sEACT0qB,EAAgB/lB,QAAQqmB,aAAa1mB,OAD5B,cAC5B0mB,EAD4B,yBAE3BA,GAF2B,2CAAH,sDAKpBe,GAAgB,uCAAG,WAAOrB,GAAP,SAAA1qB,EAAA,+EACvB0qB,EAAgB/lB,QAAQ6nB,SAASloB,QADV,2CAAH,sDAIhB2oB,GAAuB,uCAAG,WAAOvC,EAAiBwC,GAAxB,iBAAAltB,EAAA,sEACf0qB,EAAgB/lB,QAAQqmB,aAAa1mB,OADtB,cACjC2mB,EADiC,gBAEhBP,EAAgB/lB,QAAQ6nB,SAASloB,OAFjB,uBAInC2mB,GAAa,GAJsB,mBAOdP,EAAgB/lB,QAAQwoB,cAAclC,EAAW,EAAIiC,GAAa5oB,OAPpD,eAO7BkJ,EAP6B,yBAQ5BA,EAAS,KAAO,IARY,kCAUnCiO,QAAQ6I,MAAR,MAVmC,iCAY9B,GAZ8B,0DAAH,wDAevB8I,GAAiB,uCAAG,WAAO1C,GAAP,uBAAA1qB,EAAA,sEACP0qB,EAAgB/lB,QAAQqmB,aAAa1mB,OAD9B,cACzB2mB,EADyB,OAEzBoC,EAAU,GAFe,SAGV3C,EAAgB/lB,QAAQ6nB,SAASloB,OAHvB,WAGzBkoB,EAHyB,SAKY,IAA5B1b,SAASma,EAAW,IALJ,yCAMtB,CAAC,EAAG,EAAG,EAAG,IANY,UAQ1BuB,EAR0B,iBASpBznB,EAAI,EATgB,aASbA,EAAI,GATS,6BAU3BsoB,EAV2B,UAUN3C,EAAgB/lB,QAAQ2oB,eAAerC,EAAY,EAAGlmB,GAAGT,OAVnD,qBAU2DyC,WAV3D,KAUnB6kB,KAVmB,wBASN7mB,IATM,gDAapBA,EAAI,EAbgB,aAabA,EAAI,GAbS,6BAc3BsoB,EAd2B,UAcN3C,EAAgB/lB,QAAQ4oB,eAAexoB,GAAGT,OAdpC,qBAc4CyC,WAd5C,KAcnB6kB,KAdmB,wBAaN7mB,IAbM,iDAiBxBsoB,GAjBwB,4CAAH,sDCrKfG,GAnBe,WAAO,IAAD,EACY9tB,oBAAS,GADrB,mBAC3B+tB,EAD2B,KACVC,EADU,KAE1BzmB,EAAYsM,cAAZtM,QACFyjB,EAAkBtR,KAaxB,OAXAvZ,qBAAU,WACJoH,GAAWyjB,GACW,uCAAG,4BAAA1qB,EAAA,sEACL+rB,GAAiBrB,GADZ,OACnBjiB,EADmB,OAEzBilB,EAAmBjlB,GAFM,2CAAH,oDAKxBklB,KAED,CAAC1mB,EAASyjB,IAEN+C,GCrBIG,GAAuB,WAAO,IACjC3mB,EAAYsM,cAAZtM,QACFyjB,EAAkBtR,KAClByU,EAAwBxU,KAW9B,MAAO,CAAEyU,aATWvS,sBAAW,sBAAC,4BAAAvb,EAAA,+EAEPgsB,GAAWtB,EAAiBmD,EAAuB5mB,GAF5C,cAEtBuU,EAFsB,yBAGrBA,GAHqB,0DAKrB,GALqB,yDAO7B,CAACvU,EAASyjB,EAAiBmD,MCiBnBE,GAAkB,WAAO,IAAD,EACLruB,mBAAS,IAAIsG,IAAU,IADlB,mBAC5BomB,EAD4B,KACnB4B,EADmB,KAE7BtD,EAAkBtR,KAChB9Y,EAAgBD,IAAhBC,YAaR,OAXAT,qBAAU,WAMJ6qB,GALc,uCAAG,4BAAA1qB,EAAA,sEACD6sB,GAAgBnC,GADf,OACb5lB,EADa,OAEnBkpB,EAAW,IAAIhoB,IAAUlB,IAFN,2CAAH,oDAMhBiiB,KAED,CAAC2D,EAAiBpqB,IAEd8rB,GAGI6B,GAAgB,WAAO,IAAD,EACKvuB,mBAAS,IAAIsG,IAAU,IAD5B,mBAC1BkoB,EAD0B,KACbC,EADa,OAEOzuB,oBAAS,GAFhB,mBAE1B0uB,EAF0B,KAEZC,EAFY,KAGzBpnB,EAAYsM,cAAZtM,QACF6jB,EAAkBzR,KAClBqR,EAAkBtR,KAElB2N,EAAexL,sBAAW,sBAAC,4BAAAvb,EAAA,6DAC/BquB,GAAgB,GADe,SAEX9B,GAAc7B,EAAiBI,EAAiB7jB,GAFrC,OAEzBylB,EAFyB,OAG/ByB,EAAezB,GACf2B,GAAgB,GAJe,2CAK9B,CAACpnB,EAASyjB,EAAiBI,IAQ9B,OANAjrB,qBAAU,WACJoH,GAAWyjB,GAAmBI,GAChC/D,MAED,CAAC9f,EAAS8f,EAAc2D,EAAiBI,IAErC,CAAEsD,eAAcF,gBAGZI,GAAoB,WAAO,IAAD,EACK5uB,mBAAS,CAAC,EAAG,EAAG,EAAG,IADxB,mBAC9B6uB,EAD8B,KAChBC,EADgB,KAE/B9D,EAAkBtR,KAChB9Y,EAAgBD,IAAhBC,YAaR,OAXAT,qBAAU,WAMJ6qB,GALc,uCAAG,4BAAA1qB,EAAA,sEACGotB,GAAkB1C,GADrB,OACb0B,EADa,OAEnBoC,EAAkBpC,GAFC,2CAAH,oDAMhBrF,KAED,CAACzmB,EAAaoqB,EAAiB8D,IAE3BD,GAGIE,GAA0B,SAACpB,GAAa,IAAD,EACJ3tB,mBAAS,GADL,mBAC3CgvB,EAD2C,KAC1BC,EAD0B,KAE5CjE,EAAkBtR,KAChB9Y,EAAgBD,IAAhBC,YAaR,OAXAT,qBAAU,WAMJ6qB,GALc,uCAAG,4BAAA1qB,EAAA,sEACWitB,GAAwBvC,EAAiB2C,GADpD,OACbuB,EADa,OAEnBD,EAAmBC,GAFA,2CAAH,oDAMhB7H,KAED,CAAC2D,EAAiB2C,EAAS/sB,IAEvBouB,GAGMG,GArGI,WAA2B,IAA1BC,EAAyB,uDAAT,KAAS,EACbpvB,mBAAS,IADI,mBACpCosB,EADoC,KAC3BiD,EAD2B,OAEvBxb,cAAZtM,EAFmC,EAEnCA,QACF6jB,EAAkBzR,KAClBqR,EAAkBtR,KAJmB,EAKnB/Y,IAAhBC,EALmC,EAKnCA,YAaR,OAXAT,qBAAU,WAMJoH,GAAWyjB,GAAmBI,GALhB,uCAAG,4BAAA9qB,EAAA,sEACD6qB,GAAWH,EAAiBI,EAAiB7jB,EAAS6nB,GADrD,OACbhqB,EADa,OAEnBiqB,EAAWjqB,GAFQ,2CAAH,oDAMhBiiB,KAED,CAAC9f,EAASyjB,EAAiBI,EAAiBxqB,EAAawuB,IAErDhD,GCQH3N,GAAmBzf,KAAOM,IAAV,6BAEhB2d,GAAeje,KAAOM,IAAV,gDACP,SAACsU,GAAD,OAAWA,EAAM1U,MAAMme,QAAQ,MAGpCqB,GAA8B1f,KAAOM,IAAV,yEAK3Bqf,GAAgB3f,KAAOM,IAAV,gLAER,SAACsU,GAAD,OAAWA,EAAM1U,MAAMqR,OAAO4N,WAQnCS,GAAoB5f,KAAO6f,KAAV,mEACZ,SAACjL,GAAD,OAAWA,EAAM1U,MAAMqR,OAAO4N,WAI1BmR,GApDgC,SAAC,GAAoE,IAAlEvQ,EAAiE,EAAjEA,IAAKC,EAA4D,EAA5DA,OAAQuQ,EAAoD,EAApDA,gBAAiBjR,EAAmC,EAAnCA,SAAUW,EAAyB,EAAzBA,YAAave,EAAY,EAAZA,MAC/FsW,EAAkBrY,eAExB,OACE,eAAC,GAAD,WACE,cAAC,GAAD,CACE0f,aACE,eAAC,GAAD,WACE,cAAC,GAAD,UAAoBW,IACpB,cAAC,GAAD,IACA,8BACE,cAAC,IAAD,CAAQ9B,KAAK,KAAKjF,QAASgH,EAA3B,SACGjI,EAAgB,IAAK,cAK9BsH,SAAUA,EACVC,YAAY,IACZ7d,MAAOA,IAET,cAAC,GAAD,UAAgBsW,EAAgB,IAAD,UAAS+H,EAAIG,iBAAb,YAAiCqQ,EAAjC,qBC8EtBC,GA/FuC,SAAC,GAAwB,IA+CzD1hB,EA/CmCiR,EAAqB,EAArBA,IAAKM,EAAgB,EAAhBA,UAAgB,EACtDrf,mBAAS,KAD6C,mBACrEsf,EADqE,KAChEC,EADgE,OAE1Cvf,oBAAS,GAFiC,mBAErEwf,EAFqE,KAE1DC,EAF0D,OAGhDzf,oBAAS,GAA5ByvB,EAHmE,oBAItEzY,EAAkBrY,eAClB+gB,EAAcC,mBAAQ,WAC1B,OAAO9J,GAAsBkJ,KAC5B,CAACA,IAEE2Q,EAAa/P,mBAAQ,WACxB,OAAOvO,SAASyE,GAAsBkJ,EAAIzf,IAAI,IAAIgH,IAAU,QAC3D,CAACyY,IAII4Q,EHVuB,WAAO,IAC/BpoB,EAAYsM,cAAZtM,QACFyjB,EAAkBtR,KAcxB,MAAO,CAAEiW,WAZS9T,sBAAW,uCAC3B,WAAO/N,EAAgB6f,GAAvB,eAAArtB,EAAA,+EAEyByqB,GAASC,EAAiBld,EAAQ6f,EAASpmB,GAFpE,cAEUuU,EAFV,yBAGWA,GAHX,0DAKW,GALX,yDAD2B,wDAS3B,CAACvU,EAASyjB,KGHY4E,GAAfD,WACFtC,EHQmB,WAAO,IAAD,EACVrtB,mBAAS,GADC,mBACzB+e,EADyB,KACpB8Q,EADoB,KAE1B7E,EAAkBtR,KAElBoW,EAAWjU,sBAAW,sBAAC,4BAAAvb,EAAA,sEACH8sB,GAAOpC,GADJ,OACrBqC,EADqB,OAE3BwC,EAAOxC,GAFoB,2CAG1B,CAACrC,IAQJ,OANA7qB,qBAAU,WACJ6qB,GACF8E,MAED,CAAC9E,EAAiB8E,IAEd/Q,EGvBYgR,GACZC,EAAYnU,sBAAW,sBAAC,8BAAAvb,EAAA,sEAE1BmvB,GAAgB,GACV3wB,EAASsS,SAASkO,GAGlBqO,EAAUjC,MAAMC,MAAM,KAAM,CAAE7sB,WAAU6F,KAAI,iBAAM,CACtDof,KAAKkM,MAAMlM,KAAKjhB,SAAWuqB,GAAa,EACxCtJ,KAAKkM,MAAMlM,KAAKjhB,SAAWuqB,GAAa,EACxCtJ,KAAKkM,MAAMlM,KAAKjhB,SAAWuqB,GAAa,EACxCtJ,KAAKkM,MAAMlM,KAAKjhB,SAAWuqB,GAAa,MAVhB,SAYLsC,EAAW,IAAKhC,GAZX,eAexB8B,GAAgB,GAfQ,kDAkB1B1T,QAAQ6I,MAAR,MAlB0B,0DAoB3B,CAAC+K,EAAYF,EAAiBpC,EAAW/N,IAEvCS,EAAkBlE,uBAAY,WAC9BwE,OAAOqP,GAAc,IACvBnQ,EAAO,OAEPA,EAAOmQ,EAAWroB,cAEnB,CAACqoB,IAKJ,OACE,eAAC,IAAD,CAAO1P,MAAOhJ,EAAgB,IAAK,kCAAmCqI,UAAWA,EAAjF,UACE,cAAC,GAAD,CACE3e,MAAO4e,EACPL,YAAac,EACbzB,SA1CgB,SAACuB,GAAD,OAA0CN,EAAOM,EAAEC,cAAcpf,QA2CjFqe,IAAKW,EACLV,OAAO,cACPuQ,gBAAgB,UAElB,gCACE,cAACW,GAAD,UAAOlZ,EAAgB,IAAK,+CAC5B,cAACkZ,GAAD,UAAOlZ,EAAgB,IAAK,2BAE9B,gCACE,cAACmZ,GAAD,UACGnZ,EACC,IACA,4FAGJ,cAACoZ,GAAD,UAAQpZ,EAAgB,IAAD,2BAxBTlJ,EAwB6CwR,EAvB9C,GAATxR,GAuBmB,gBAEzB,eAAC,GAAD,WACE,cAAC,IAAD,CAAQ6J,WAAS,EAAC1B,QAAQ,YAAYgC,QAASoH,EAA/C,SACGrI,EAAgB,IAAK,YAExB,cAAC,IAAD,CACEwB,GAAG,uBACHb,WAAS,EACTsI,SAAUT,GAAapO,SAASkO,GAAOe,OAAOqP,IAAete,SAASkO,GAAO,IAAMlO,SAASkO,GAAO,EACnGrH,QAAO,sBAAE,sBAAA3X,EAAA,6DACPmf,GAAa,GADN,SAEDuQ,IAFC,OAGPvQ,GAAa,GACbJ,IAJO,2CAJX,SAWGG,EAAYxI,EAAgB,IAAK,wBAA0BA,EAAgB,IAAK,oBASrFkZ,GAAOlxB,KAAOM,IAAV,8GAIC,SAACsU,GAAD,OAAWA,EAAM1U,MAAMqR,OAAO4N,WAGnCiS,GAAQpxB,KAAOM,IAAV,kIAKA,SAACsU,GAAD,OAAWA,EAAM1U,MAAMqR,OAAO4N,WAEnCgS,GAAWnxB,KAAOM,IAAV,6FCtHC+wB,GALO,WAAO,IACnB7B,EAAgBD,KAAhBC,YACR,OAAO,cAAC,GAAD,CAAW9tB,MAAO8U,GAAiBgZ,MCU7B8B,GAZQ,WACrB,IAAMC,EAAqBlC,KAE3B,OACE,cAAC,IAAD,CAAM1R,MAAI,EAACH,SAAS,OAApB,SACGhH,GAAiB+a,GAAoBrR,oBAAejN,EAAW,CAC9Due,sBAAuB,OCIzBC,GAAoBzxB,aAAOqX,IAAPrX,CAAH,6KAMjB+qB,GAAQ/qB,KAAOM,IAAV,sDAGL0qB,GAAYhrB,KAAOirB,IAAV,uDAGTvT,GAAQ1X,KAAOM,IAAV,+DACF,qBAAGJ,MAAkBqR,OAAOoG,cAG/BuT,GAAUlrB,KAAOM,IAAV,uGAkEE6qB,GA1DW,WAC1B,IAAM4D,EAAkBD,KADQ,EAEa9tB,oBAAS,GAFtB,mBAEvB0wB,EAFuB,KAERC,EAFQ,KAGxB3Z,EAAkBrY,eAChB6vB,EAAgBD,KAAhBC,YACAJ,EAAiBF,KAAjBE,aAEFvE,EAAevC,GAAgBzjB,KAG/B+sB,EAAc/U,sBAAW,sBAAC,sBAAAvb,EAAA,sEAE5BqwB,GAAkB,GAFU,SAGPvC,IAHO,eAM1BuC,GAAkB,GANQ,gDAS5B5U,QAAQ6I,MAAR,MAT4B,yDAW7B,CAACwJ,EAAcuC,IArBY,EAuBPrM,YAAS,cAAC,GAAD,CAAUvF,IAAK8K,EAAcvf,UAAU,WAAhEumB,EAvBuB,oBAyB9B,OACE,cAACJ,GAAD,UACE,eAAC,IAAD,WACA,cAAC,IAAD,CAASvT,KAAK,KAAKtF,GAAG,OAAtB,SACGZ,EAAgB,IAAK,wBAExB,cAAC,GAAD,CAAWK,IAAI,sBAAsBG,IAAI,oBAAoBF,MAAO,GAAIC,OAAQ,KAChF,eAAC,GAAD,WACE,cAAC,GAAD,IACA,cAAC,GAAD,UAAQP,EAAgB,IAAK,yBAE/B,eAAC,GAAD,WACE,cAAC,GAAD,IACA,cAAC,GAAD,UAAQA,EAAgB,IAAK,iCAE/B,eAAC,GAAD,WACE,cAAC,IAAD,CACEwB,GAAG,6BACHyH,SAA4C,IAAlCzK,GAAiBgZ,IAAsBkC,EACjDzY,QAAS2Y,EACT3Z,MAAO,CAAE6Z,YAAa,OAJxB,SAMG9Z,EAAgB,IAAK,sBAExB,cAAC,IAAD,CAAQwB,GAAG,wBAAwBvC,QAAQ,YAAYgC,QAAS4Y,EAAc5Q,SAAU8N,EAAxF,SACG/W,EAAgB,IAAK,0BCnF1B+Z,GAAoB/xB,aAAOqX,IAAPrX,CAAH,qFAKjBgrB,GAAYhrB,KAAOirB,IAAV,+CAGTpJ,GAAa7hB,aAAO8hB,IAAP9hB,CAAH,2EA2BDgyB,GAtBK,WAClB,IAAMha,EAAkBrY,eAIxB,OACE,cAACoyB,GAAD,UACE,eAAC,IAAD,WACA,cAAC,IAAD,CAAS7T,KAAK,KAAKtF,GAAG,OAAtB,SACGZ,EAAgB,IAAK,gBAEtB,cAAC,GAAD,CAAYvD,KAAK,gCAAjB,SACE,cAAC,GAAD,CAAW4D,IAAI,kBAAkBG,IAAI,kBAAkBF,MAAO,QAEhE,cAAC,GAAD,CAAY7D,KAAK,6BAAjB,SACE,cAAC,GAAD,CAAW4D,IAAI,wBAAwBG,IAAI,eAAeF,MAAO,cCxBrEwS,GAAwB9qB,aAAOqX,IAAPrX,CAAH,kJAKvB,qBAAGE,MAAkBC,aAAaE,MAKhC4xB,GAAiBjyB,aAAOkyB,KAASC,MAAM,CAAEjU,KAAM,MAA9Ble,CAAH,qDAkFLoyB,GA/EK,WAClB,IAAMpa,EAAkBrY,eAClB0yB,EAAU1hB,KACV2hB,EAAWphB,KAEXqhB,EAAStc,iBAAOoL,OAAOmR,WAEvBC,EAAgB,WACpB,IAAMC,EAAcL,EAAQ/lB,QAAO,SAAC7D,GAAD,OAAuB,IAAbA,EAAK1F,KAAiC,OAApB0F,EAAKL,cAIpE,OAFAuqB,EAAaD,IAEY,IAAjBH,EAAOjc,SAAe4J,eAAe,SAAS2L,MAAM,GAAI,IAG5D8G,EAAe9V,uBACnB,SAAC+V,GAAoB,IAAD,EACZC,EAAkB,IAAIvrB,KAAU,UAAA+qB,EAAQvzB,MAAK,SAAC2J,GAAD,OtD7B3B,IsD6BqCA,EAAK1F,cAA5B,eAAqDoF,oBAAqB,GAEhHyqB,EAAejtB,KAAI,SAAC8C,GAClB,IAAKA,EAAKf,cAAgBe,EAAKlB,sBAAwBkB,EAAKlB,oBAC1D,OAAOkB,EAET,IAAMqqB,EAAsBld,GAAgBnO,MAAMgB,EAAKR,YACjD8qB,EAAqBD,EAAoBrrB,MAAMoO,IAEjDoO,EAAM4O,EAAgBprB,MAAMsrB,GAAoBzyB,IAAImI,EAAKlB,qBAE7D,GAAIkB,EAAKrF,mBAAqB7C,EAAW4mB,KACvClD,EAAM4O,EAAgBprB,MAAMsrB,GAAoBzyB,IAAImI,EAAKlB,qBAAqBE,MAAM6qB,QAC/E,GAAI7pB,EAAKrF,mBAAqB7C,EAAWyyB,MAC9C/O,EAAM8O,EAAmBzyB,IAAImI,EAAKlB,0BAC7B,GAAIkB,EAAKwqB,KAAM,CACpB,IAAMC,EACJzqB,GAAQoqB,EAAgBprB,MAAMqrB,GAAqBrrB,MAAMoO,IAAiBvV,IAAImI,EAAKlB,qBAC/E4rB,EACJ1qB,EAAKN,mBACL,IAAIb,IAAUmB,EAAKN,mBAChBV,MAAMgB,EAAKwqB,KAAKG,gBAChB3rB,MAAMoO,IACNvV,IAAImI,EAAKlB,qBAEd0c,EAAMiP,GAAYC,GAAWD,EAASG,KAAKF,GAK7C,OAFIZ,EAAOjc,QAAU2N,EAAI3O,aAAYid,EAAOjc,QAAU2N,EAAI3O,YAEnD2O,OAGX,CAACqO,EAAUD,IAGb,OACE,cAAC,GAAD,UACE,eAAC,IAAD,WACE,cAAC,IAAD,CAAS/U,MAAM,WAAWY,KAAK,KAA/B,wBAGA,cAAC+T,GAAD,CAAgB3U,MAAM,UAAtB,SACGmV,IAAa,UACTA,IADS,aACWza,EAAgB,IAAK,QAE5C,cAAC,IAAD,CAAUsb,UAAU,QAAQrc,QAAQ,OAAOsB,OAAO,WAGtD,eAAC,IAAD,CAAMgb,eAAe,gBAArB,UACE,cAAC,IAAD,CAASjW,MAAM,WAAWY,KAAK,KAA/B,sBAGA,cAAC,IAAD,CAASyJ,OAAK,EAAC6L,gBAAgB,SAASrR,GAAG,SAA3C,SACE,cAAC,IAAD,CAAkBsR,GAAI,GAAInW,MAAM,uBCtFtCwN,GAAwB9qB,aAAOqX,IAAPrX,CAAH,kMAKvB,qBAAGE,MAAkBC,aAAaE,MAKhC4xB,GAAiBjyB,aAAOkyB,KAASC,MAAM,CAAEjU,KAAM,MAA9Ble,CAAH,qDA6BL0zB,GA1BO,WACpB,IAAMC,EAAsB/L,KAAQxc,GAAO,CAAC,YAAa,OAAQ,CAAC,OAAQ,SAASygB,MAAM,EAAG,GAGtF+H,EAAS,CAAC,SAAD,mBAAaD,EAAYhuB,KAAI,SAACyI,GAAD,OAAUA,EAAK9C,eAAYuoB,KAAK,MAE5E,OACE,cAAC,GAAD,UACE,eAAC,IAAD,WACE,cAAC,IAAD,CAASvW,MAAM,WAAWY,KAAK,KAA/B,kBAGA,cAAC,GAAD,CAAgBZ,MAAM,mBAAtB,SAA0CsW,IAC1C,eAAC,IAAD,CAAML,eAAe,gBAArB,UACE,cAAC,IAAD,CAASjW,MAAM,WAAWY,KAAK,KAA/B,sBAGA,cAAC,IAAD,CAASyJ,OAAK,EAAC6L,gBAAgB,SAASrR,GAAG,SAA3C,SACE,cAAC,IAAD,CAAkBsR,GAAI,GAAInW,MAAM,uBC3B7BwW,GARkB,WAC/B,IAAMC,EAAe1E,KAIrB,OAHmB7Y,GAAiBud,GACb5iB,KAEYmE,YCH/BwV,GAAwB9qB,aAAOqX,IAAPrX,CAAH,kJAKvB,qBAAGE,MAAkBC,aAAaE,MAKhC4xB,GAAiBjyB,aAAOkyB,KAASC,MAAM,CAAEjU,KAAM,MAA9Ble,CAAH,qDA0BLg0B,GAvBC,WACd,IAAMC,EAAelP,KAAKmP,MAAMJ,MAA4B5T,iBAE5D,OACE,cAAC,GAAD,UACE,eAAC,IAAD,WACE,cAAC,IAAD,CAAS5C,MAAM,WAAWY,KAAK,KAA/B,0BAGA,eAAC,GAAD,CAAgBZ,MAAM,UAAtB,cAAkC2W,KAClC,eAAC,IAAD,CAAMV,eAAe,gBAArB,UACE,cAAC,IAAD,CAASjW,MAAM,WAAWY,KAAK,KAA/B,0BAGA,cAAC,IAAD,CAASyJ,OAAK,EAAC6L,gBAAgB,SAASrR,GAAG,WAA3C,SACE,cAAC,IAAD,CAAkBsR,GAAI,GAAInW,MAAM,uBCrBtCkJ,GAAOxmB,KAAOM,IAAV,wgBAaN,qBAAGJ,MAAkBC,aAAaE,MAQhC8zB,GAAQn0B,aAAOo0B,IAAPp0B,CAAH,iTAUP,qBAAGE,MAAkBC,aAAaC,MAMlC,qBAAGF,MAAkBC,aAAaE,MAOhCg0B,GAAWr0B,aAAOo0B,IAAPp0B,CAAH,gQAQV,qBAAGE,MAAkBC,aAAaC,MAMlC,qBAAGF,MAAkBC,aAAaE,MAqCvBi0B,GA9BQ,WACrB,IAAMtc,EAAkBrY,eAExB,OACE,eAACI,GAAA,EAAD,WACE,eAAC,GAAD,WACE,cAAC,IAAD,CAAS0Y,GAAG,KAAKyF,KAAK,KAAKtF,GAAG,OAAO0E,MAAM,YAA3C,SACGtF,EAAgB,IAAK,sBAExB,cAAC,IAAD,UAAOA,EAAgB,IAAK,sEAE9B,gCACA,eAACmc,GAAD,WACE,cAACI,GAAD,IACA,cAACC,GAAD,OAEF,eAACH,GAAD,WACE,cAAC,GAAD,IACA,cAAC,GAAD,IACA,cAAC,GAAD,OAEF,eAACF,GAAD,WACE,cAAC,GAAD,IACA,cAACM,GAAD,cC5FFjf,GAAUxV,KAAOM,IAAV,yJAOD,qBAAGJ,MAAkBqR,OAAO4N,WAIlCuV,GAAkE,SAAC,GAA2B,IAAzBzb,EAAwB,EAAxBA,QAAS0b,EAAe,EAAfA,SAClF,OACE,eAAC,GAAD,CAASvc,aAAW,kCAAkCD,KAAK,SAASc,QAAS,kBAAMA,KAAnF,UACE,cAAC,IAAD,CAAMqE,MAAM,UAAUK,MAAI,EAA1B,SACGgX,EAAW,OAAS,YAEtBA,EAAW,cAAC,IAAD,IAAoB,cAAC,IAAD,QAKtCD,GAAwB1W,aAAe,CACrC2W,UAAU,GAGGD,I,2QAAAA,MCzBAE,GAPkB,SAAC,GAA8D,IAA5DtxB,EAA2D,EAA3DA,mBAAoBF,EAAuC,EAAvCA,iBAAkBD,EAAqB,EAArBA,eAElE0xB,EAAiC,QAArBzxB,EAA6B,MAAQE,EAAmByB,QACpE+vB,EAAa3xB,EAAe4B,QAClC,MAAM,GAAN,OAAU8vB,EAAV,YAAuBC,ICgBnBtf,GAAUxV,KAAOM,IAAV,oDAIPy0B,GAAqB/0B,aAAOg1B,IAAPh1B,CAAH,uOAGb,qBAAGE,MAAkBqR,OAAOpS,QAQ3B,qBAAGe,MAAkBqR,OAAO4N,WAyCzB8V,GArC0C,SAAC,GAQnD,IAPLC,EAOI,EAPJA,eACAC,EAMI,EANJA,QAEAC,GAII,EALJC,mBAKI,EAJJD,SACA9xB,EAGI,EAHJA,mBACAF,EAEI,EAFJA,iBACAD,EACI,EADJA,eAEM6U,EAAkBrY,eAClB21B,EAAwBV,GAAyB,CAAEtxB,qBAAoBF,mBAAkBD,mBAE/F,OACE,eAAC,GAAD,WACE,eAAC,IAAD,CAAMowB,eAAe,gBAArB,UACE,eAAC,IAAD,WAAOvb,EAAgB,IAAK,SAA5B,OACA,cAAC+c,GAAD,CAAoBtgB,KAAI,iDAA4C6gB,GAApE,SACGF,QAGHD,GACH,cAAC,IAAD,CAAM5B,eAAe,gBAArB,SACK,cAAC,IAAD,UAAOvb,EAAgB,GAAI,SAM/B,cAAC,IAAD,CAAMub,eAAe,aAArB,SACE,cAAC,IAAD,CAAM7a,UAAQ,EAACjE,KAAMygB,EAAgBvX,MAAM,EAA3C,SACG3F,EAAgB,IAAK,4BC3D1BxC,GAAUxV,aAAO0nB,IAAP1nB,CAAH,yEAMPu1B,GAAgBv1B,aAAOujB,IAAPvjB,CAAH,oDAyBJw1B,GArBuC,SAAC,GAMhD,IALLJ,EAKI,EALJA,QACAhtB,EAII,EAJJA,WACAqtB,EAGI,EAHJA,gBACAC,EAEI,EAFJA,UACAxyB,EACI,EADJA,YAEA,OACE,eAAC,GAAD,CAASqwB,eAAe,gBAAgBzN,WAAW,SAASlN,GAAG,OAA/D,UACE,cAAC,IAAD,CAAOP,IAAG,wBAAmBqd,EAAnB,QAAoCld,IAAKtV,EAAaoV,MAAO,GAAIC,OAAQ,KACnF,eAAC,IAAD,CAAMod,cAAc,SAAS7P,WAAW,WAAxC,UACE,cAAC,IAAD,CAASlN,GAAG,MAAZ,SAAmBwc,IACnB,eAAC,IAAD,CAAM7B,eAAe,SAArB,UACGkC,EAAkB,cAAC,GAAD,IAAmB,cAAC,GAAD,IACtC,cAACF,GAAD,CAAete,QAAQ,YAAvB,SAAoC7O,cC0B/B+X,GAhDmC,SAAC,GAAmD,IAAjDJ,EAAgD,EAAhDA,IAAKK,EAA2C,EAA3CA,UAAWC,EAAgC,EAAhCA,UAAgC,IAArB/U,iBAAqB,MAAT,GAAS,IAC7EtK,mBAAS,IADoE,mBAC5Fsf,EAD4F,KACvFC,EADuF,OAEjEvf,oBAAS,GAFwD,mBAE5Fwf,EAF4F,KAEjFC,EAFiF,KAG7FzI,EAAkBrY,eAClB+gB,EAAcC,mBAAQ,WAC1B,OAAO9J,GAAsBkJ,KAC5B,CAACA,IAEEa,EAAe/D,uBACnB,SAACgE,GACCN,EAAOM,EAAEC,cAAcpf,SAEzB,CAAC6e,IAGGQ,EAAkBlE,uBAAY,WAClC0D,EAAOG,KACN,CAACA,EAAaH,IAEjB,OACE,eAAC,IAAD,CAAOS,MAAK,UAAKhJ,EAAgB,IAAK,WAA1B,YAAwC1M,EAAxC,WAA4D+U,UAAWA,EAAnF,UACE,cAAC,GAAD,CACE3e,MAAO4e,EACPL,YAAac,EACbzB,SAAUsB,EACVb,IAAKW,EACLV,OAAQ1U,IAEV,eAAC,GAAD,WACE,cAAC,IAAD,CAAQ2L,QAAQ,YAAYgC,QAASoH,EAArC,SACGrI,EAAgB,IAAK,YAExB,cAAC,IAAD,CACEiJ,SAAUT,EACVvH,QAAO,sBAAE,sBAAA3X,EAAA,6DACPmf,GAAa,GADN,SAEDL,EAAUE,GAFT,OAGPG,GAAa,GACbJ,IAJO,2CAFX,SASGG,EAAYxI,EAAgB,IAAK,wBAA0BA,EAAgB,IAAK,oBCO5EkJ,GAhDqC,SAAC,GAAmD,IAAjDd,EAAgD,EAAhDA,UAAWC,EAAqC,EAArCA,UAAWN,EAA0B,EAA1BA,IAA0B,IAArBzU,iBAAqB,MAAT,GAAS,IAC/EtK,mBAAS,IADsE,mBAC9Fsf,EAD8F,KACzFC,EADyF,OAEnEvf,oBAAS,GAF0D,mBAE9Fwf,EAF8F,KAEnFC,EAFmF,KAG/FzI,EAAkBrY,eAClB+gB,EAAcC,mBAAQ,WAC1B,OAAO9J,GAAsBkJ,KAC5B,CAACA,IAEEa,EAAe/D,uBACnB,SAACgE,GACCN,EAAOM,EAAEC,cAAcpf,SAEzB,CAAC6e,IAGGQ,EAAkBlE,uBAAY,WAClC0D,EAAOG,KACN,CAACA,EAAaH,IAEjB,OACE,eAAC,IAAD,CAAOS,MAAK,mBAAc1V,GAAa+U,UAAWA,EAAlD,UACE,cAAC,GAAD,CACEJ,YAAac,EACbzB,SAAUsB,EACVlf,MAAO4e,EACPP,IAAKW,EACLV,OAAQ1U,IAEV,eAAC,GAAD,WACE,cAAC,IAAD,CAAQ2L,QAAQ,YAAYgC,QAASoH,EAArC,SACGrI,EAAgB,IAAK,YAExB,cAAC,IAAD,CACEiJ,SAAUT,EACVvH,QAAO,sBAAE,sBAAA3X,EAAA,6DACPmf,GAAa,GADN,SAEDL,EAAUE,GAFT,OAGPG,GAAa,GACbJ,IAJO,2CAFX,SASGG,EAAYxI,EAAgB,IAAK,wBAA0BA,EAAgB,IAAK,oBCtCrF4d,GAAoB51B,KAAOM,IAAV,iFA2CRu1B,GApCqC,SAAC,GAAqD,IAAnDxsB,EAAkD,EAAlDA,cAAeJ,EAAmC,EAAnCA,aAAcqC,EAAqB,EAArBA,UAAWvI,EAAU,EAAVA,IACvFiV,EAAkBrY,eAChBid,EAAYD,GAAS5Z,GAArB6Z,QACAM,EAAcD,GAAWla,GAAzBma,UAEF4Y,EAAmBtf,GAAiBnN,GACpCsN,EAAiBmf,EAAiB5V,iBAN+D,EAQ5EoF,YAAS,cAAC,GAAD,CAAcvF,IAAK9W,EAAcmX,UAAWxD,EAAStR,UAAWA,KAA7Fka,EARgG,sBAS3EF,YAC1B,cAAC,GAAD,CAAevF,IAAK1W,EAAe+W,UAAWlD,EAAW5R,UAAWA,KAD/Doa,EATgG,oBA4BvG,OACE,eAAC,IAAD,CAAM6N,eAAe,gBAAgBzN,WAAW,SAAhD,UACE,cAAC,IAAD,CAASxI,MAA4B,IAArBwY,EAAyB,eAAiB,OAA1D,SAAmEnf,IAhBzC,IAArBmf,EACL,cAAC,IAAD,CAAQ7c,QAASuM,EAAjB,SAAoCxN,EAAgB,IAAK,cAEzD,eAAC4d,GAAD,WACE,cAAC,IAAD,CAAY3e,QAAQ,WAAWgC,QAASyM,EAAmBqQ,GAAG,MAA9D,SACE,cAAC,IAAD,CAAWzY,MAAM,cAEnB,cAAC,IAAD,CAAYrG,QAAQ,WAAWgC,QAASuM,EAAxC,SACE,cAAC,IAAD,CAASlI,MAAM,qBCVV0Y,GAzBuC,SAAC,GAAuB,IAArBvsB,EAAoB,EAApBA,SAAU1G,EAAU,EAAVA,IAC3DiV,EAAkBrY,eADmD,EAEzCqB,oBAAS,GAFgC,mBAEpEwf,EAFoE,KAEzDC,EAFyD,KAGnEkE,EnCRgB,SAACsR,GACzB,IAAMprB,EAAWwF,cACT9H,EAAYsM,cAAZtM,QACFuF,EAAqB+M,KAQ3B,MAAO,CAAE8J,SANa9H,sBAAW,sBAAC,4BAAAvb,EAAA,sEACXyK,GAAQ+B,EAAoBmoB,EAAS1tB,GAD1B,cAC1BuU,EAD0B,OAEhCjS,EAASD,GAAuBrC,IAFA,kBAGzBuU,GAHyB,2CAI/B,CAACvU,EAASsC,EAAUorB,EAASnoB,KmCDXooB,CAAWnzB,GAAxB4hB,SAEFwR,EAAqB3f,GAAiB/M,GACtCkN,EAAiBwf,EAAmBjW,iBAE1C,OACE,eAAC,IAAD,CAAMtH,GAAG,MAAM2a,eAAe,gBAAgBzN,WAAW,SAAzD,UACE,cAAC,IAAD,CAASxI,MAA8B,IAAvB6Y,EAA2B,eAAiB,OAA5D,SAAqExf,IACrE,cAAC,IAAD,CACEsK,SAAiC,IAAvBkV,GAA4B3V,EACtCvH,QAAO,sBAAE,sBAAA3X,EAAA,6DACPmf,GAAa,GADN,SAEDkE,IAFC,OAGPlE,GAAa,GAHN,2CAFX,SAQGzI,EAAgB,IAAK,iBCjBxBoe,GAASp2B,KAAOM,IAAV,qDAyEG+1B,GA5DqC,SAAC,GAAiC,I5EGpDrzB,E4EHqByF,EAA8B,EAA9BA,KAAM2Q,EAAwB,EAAxBA,SAAU7Q,EAAc,EAAdA,QAC/DyP,EAAkBrY,eAD2D,EAEjCqB,oBAAS,GAFwB,mBAE5E6jB,EAF4E,KAEzDC,EAFyD,Q5EGnD9hB,E4EAeyF,EAAKzF,S5ECvC4N,aAAY,SAAC7G,GAAD,OAAkBA,EAAMjH,MAAM9D,KAAKF,MAAK,SAACsL,GAAD,OAAOA,EAAEpH,WAAaA,S4ED/ED,EAH2E,EAG3EA,IAAKE,EAHsE,EAGtEA,YAHsE,E5EQ1D,SAACF,GAC1B,IAAM0F,EAAOoI,GAAe9N,GAE5B,MAAO,CACLoI,UAAW1C,EAAKiC,SAAW,IAAIpD,IAAUmB,EAAKiC,SAASS,WAAa,IAAI7D,IAAU,GAClF2B,aAAcR,EAAKiC,SAAW,IAAIpD,IAAUmB,EAAKiC,SAASzB,cAAgB,IAAI3B,IAAU,GACxF+B,cAAeZ,EAAKiC,SAAW,IAAIpD,IAAUmB,EAAKiC,SAASrB,eAAiB,IAAI/B,IAAU,GAC1FmC,SAAUhB,EAAKiC,SAAW,IAAIpD,IAAUmB,EAAKiC,SAASjB,UAAY,IAAInC,IAAU,I4EXrBgvB,CAAYvzB,GAAjEoI,EAJ2E,EAI3EA,UAAWlC,EAJgE,EAIhEA,aAAcI,EAJkD,EAIlDA,cAAeI,EAJmC,EAInCA,SAC1C8sB,EAAYtzB,EAAYU,QACxB6yB,EAAS/tB,EAAKzF,SAASyzB,cACvBC,EAAanuB,GAAW4C,GAAaA,EAAUoa,cAAc,GAM3DlB,ErC9BgB,SAAClJ,GACzB,IAAMtQ,EAAWwF,cACT9H,EAAiCsM,cAAjCtM,QACFuF,EAAqB+M,KAY3B,MAAO,CAAEwJ,UAVaxH,sBAAW,sBAAC,4BAAAvb,EAAA,+EAEb4Z,GAAQC,EAAYrN,EAAoBvF,GAF3B,cAExBsT,EAFwB,OAG9BhR,EAASD,GAAuBrC,IAHF,kBAIvBsT,GAJuB,0DAMvB,GANuB,yDAQ/B,CAACtT,EAASsC,EAAUsQ,EAAYrN,KqCiBb6oB,CAJHhW,mBAAQ,WACzB,OAAOpc,GAAY6U,EAAsBmd,KACxC,CAACnd,EAAUmd,KAENlS,UAEFsB,EAAgB9I,sBAAW,sBAAC,sBAAAvb,EAAA,sEAE9BwjB,GAAqB,GAFS,SAGxBT,IAHwB,OAI9BS,GAAqB,GAJS,gDAM9B/H,QAAQ6I,MAAR,MAN8B,yDAQ/B,CAACvB,IAYJ,OACE,eAAC+R,GAAD,WACE,eAAC,IAAD,WACE,cAAC,IAAD,CAAMzY,MAAI,EAACiZ,cAAc,YAAYtZ,MAAM,YAAYE,SAAS,OAAOqZ,GAAG,MAA1E,mBAIA,cAAC,IAAD,CAAMlZ,MAAI,EAACiZ,cAAc,YAAYtZ,MAAM,aAAaE,SAAS,OAAjE,SACGxF,EAAgB,IAAK,eAG1B,cAAC,GAAD,CAAevO,SAAUA,EAAU1G,IAAKA,IACxC,eAAC,IAAD,WACE,cAAC,IAAD,CAAM4a,MAAI,EAACiZ,cAAc,YAAYtZ,MAAM,YAAYE,SAAS,OAAOqZ,GAAG,MAA1E,SACGL,IAEH,cAAC,IAAD,CAAM7Y,MAAI,EAACiZ,cAAc,YAAYtZ,MAAM,aAAaE,SAAS,OAAjE,SACGxF,EAAgB,IAAK,eAGxBzP,EA7BGmuB,EACL,cAAC,GAAD,CAAartB,cAAeA,EAAeJ,aAAcA,EAAcqC,UAAWkrB,EAAQzzB,IAAKA,IAE/F,cAAC,IAAD,CAAQ0wB,GAAG,MAAM9a,WAAS,EAACsI,SAAU4D,EAAmB5L,QAAS0M,EAAjE,SACG3N,EAAgB,IAAK,sBAyBZ,cAAC,GAAD,CAAcyb,GAAG,MAAM9a,WAAS,QChFrCme,GAAyC,SAAC,GAA2C,IAF5EC,EAEmCC,EAAwC,EAAxCA,aAIjDC,EAJyF,EAA1BC,QAItC,IACzBC,EAAsBH,EAHJ,IAKlBI,EAAY,IAP6E,EAAjBC,WAUxEC,EAAcF,EAAS,SAAI,EAAIH,EARb,QAQmEE,GAI3F,OAhBoBJ,EAeGO,EAAcF,EAfNrS,KAAKmP,MAAe,IAAT6C,GAAgB,KAmB/CQ,GAAc,SAAC,GAE1B,OAF+D,EAAnCC,aAAmC,EAArBC,eACW,KACnC3gB,QAAQ,ICFtB4gB,GAAO13B,KAAOM,IAAV,2JAOJq3B,GAAW33B,KAAOM,IAAV,yDAIRs3B,GAAc53B,aAAOod,IAAPpd,CAAH,4EA0GF63B,GArG+C,SAAC,GAQxD,IAPLxX,EAOI,EAPJA,UACA+U,EAMI,EANJA,QACA9xB,EAKI,EALJA,mBACAF,EAII,EAJJA,iBACAD,EAGI,EAHJA,eACAk0B,EAEI,EAFJA,WACApT,EACI,EADJA,IAEMjM,EAAkBrY,eAClB21B,EAAwBV,GAAyB,CAAEtxB,qBAAoBF,mBAAkBD,mBACzF+zB,EAAUjT,EAAIxc,MAAM,IAAIH,IAAU,MAAMgO,WACxCwiB,EAAiC,IAAOT,EAAW/hB,WAEnDyiB,EAA2BjB,GAAuC,CAAEE,aAAc,EAAGE,UAASG,eAC9FW,EAA2BlB,GAAuC,CAAEE,aAAc,EAAGE,UAASG,eAC9FY,EAA4BnB,GAAuC,CAAEE,aAAc,GAAIE,UAASG,eAChGa,EAA6BpB,GAAuC,CAAEE,aAAc,IAAKE,UAASG,eAExG,OACE,eAAC,IAAD,CAAOrW,MAAM,MAAMX,UAAWA,EAA9B,UACE,eAACqX,GAAD,WACE,cAACC,GAAD,UACE,cAAC,IAAD,CAAMna,SAAS,OAAOG,MAAI,EAACL,MAAM,aAAasZ,cAAc,YAAYhe,GAAG,OAA3E,SACGZ,EAAgB,IAAK,iBAG1B,cAAC2f,GAAD,UACE,cAAC,IAAD,CAAMna,SAAS,OAAOG,MAAI,EAACL,MAAM,aAAasZ,cAAc,YAAYhe,GAAG,OAA3E,SACGZ,EAAgB,IAAK,WAG1B,cAAC2f,GAAD,UACE,cAAC,IAAD,CAAMna,SAAS,OAAOG,MAAI,EAACL,MAAM,aAAasZ,cAAc,YAAYhe,GAAG,OAA3E,SACGZ,EAAgB,IAAK,uBAI1B,cAAC2f,GAAD,UACE,cAAC,IAAD,mBAEF,cAACA,GAAD,UACE,eAAC,IAAD,WACGJ,GAAY,CAAEC,aAAcO,EAA0BN,eAAgBK,IADzE,SAIF,cAACH,GAAD,UACE,cAAC,IAAD,UAAOI,MAGT,cAACJ,GAAD,UACE,cAAC,IAAD,mBAEF,cAACA,GAAD,UACE,eAAC,IAAD,WACGJ,GAAY,CAAEC,aAAcQ,EAA0BP,eAAgBK,IADzE,SAIF,cAACH,GAAD,UACE,cAAC,IAAD,UAAOK,MAGT,cAACL,GAAD,UACE,cAAC,IAAD,oBAEF,cAACA,GAAD,UACE,eAAC,IAAD,WACGJ,GAAY,CAAEC,aAAcS,EAA2BR,eAAgBK,IAD1E,SAIF,cAACH,GAAD,UACE,cAAC,IAAD,UAAOM,MAGT,cAACN,GAAD,UACE,cAAC,IAAD,0BAEF,cAACA,GAAD,UACE,eAAC,IAAD,WACGJ,GAAY,CAAEC,aAAcU,EAA4BT,eAAgBK,IAD3E,SAIF,cAACH,GAAD,UACE,cAAC,IAAD,UAAOO,SAGX,cAACN,GAAD,CAAapa,SAAS,OAAOF,MAAM,aAAnC,SACGtF,EACC,IACA,sKAGJ,cAAC,IAAD,CAAMub,eAAe,SAArB,SACE,eAAC,IAAD,CAAc9e,KAAI,iDAA4C6gB,GAA9D,UACGtd,EAAgB,IAAK,OADxB,IACiCod,WCxF1B+C,GA1B6B,SAAC,GAOtC,IANL/C,EAMI,EANJA,QACA9xB,EAKI,EALJA,mBACAF,EAII,EAJJA,iBACAD,EAGI,EAHJA,eACAk0B,EAEI,EAFJA,WACApT,EACI,EADJA,IACI,EACwBqB,YAC1B,cAAC,GAAD,CACE8P,QAASA,EACT9xB,mBAAoBA,EACpBF,iBAAkBA,EAClBD,eAAgBA,EAChBk0B,WAAYA,EACZpT,IAAKA,KAPFmU,EADH,oBAYJ,OACE,cAAC,IAAD,CAAYnf,QAASmf,EAAmBnhB,QAAQ,OAAOiH,KAAK,KAAKma,GAAG,MAApE,SACE,cAAC,IAAD,OCjBAC,GAAeC,aAAH,iLAYZC,GAAmBx4B,KAAOM,IAAV,6nBAgBPg4B,IAWTG,GAAQz4B,KAAOM,IAAV,qSAEK,SAACsU,GAAD,OAAWA,EAAM1U,MAAMoX,KAAK9F,cAWtCiW,GAAUznB,KAAOM,IAAV,+GACS,qBAAGJ,MAAkBqR,OAAOmnB,eAM5CC,GAAmB34B,KAAOM,IAAV,oEACV,SAACsU,GAAD,OAAYA,EAAM+f,SAAW,OAAS,SAuGnCiE,GA1F2B,SAAC,GAAgE,IAA9DnwB,EAA6D,EAA7DA,KAAM0sB,EAAuD,EAAvDA,QAASkC,EAA8C,EAA9CA,WAAY/E,EAAkC,EAAlCA,SAAUlZ,EAAwB,EAAxBA,SAAU7Q,EAAc,EAAdA,QACpFyP,EAAkBrY,eADgF,EAG9CqB,oBAAS,GAHqC,mBAGjG63B,EAHiG,KAG1EC,EAH0E,KAKlGrD,EAAkBrb,GAAehb,SAASqJ,EAAKvF,aAG/CwyB,EAAYjtB,EAAKzF,SAASxD,MAAM,KAAK,GAAGu5B,oBAExCC,EAAwBrY,mBAAQ,WACpC,OAAKlY,EAAKlB,oBAGNkB,EAAKrF,mBAAqB7C,EAAW4M,IAChCmlB,EAAS7qB,MAAMgB,EAAKlB,qBAEzBkB,EAAKrF,mBAAqB7C,EAAWyyB,MAChCqE,EAAW5vB,MAAMgB,EAAKlB,qBAExBkB,EAAKlB,oBARH,OASR,CAAC+qB,EAAU+E,EAAY5uB,EAAKlB,oBAAqBkB,EAAKrF,mBAEnDiyB,EAAqB2D,EAAU,WAC7B3X,OAAO2X,GAAY9Y,oBAAejN,EAAW,CAAEue,sBAAuB,KAC1E,IAEE4D,EAAU3sB,EAAKzF,UAAYyF,EAAKzF,SAASyzB,cAAch3B,QAAQ,eAAgB,IAC/Ew5B,EAAYxwB,EAAKwqB,KAAOxqB,EAAKwqB,KAAKgG,UAAY,QAC9CC,EAAUzwB,EAAKwb,KAAOxb,EAAKwb,IAAIxc,MAAM,IAAIH,IAAU,MAAMgO,WAAW4K,eAAe,SAAS2L,MAAM,GAAI,GAEpGvoB,EAAyDmF,EAAzDnF,mBAAoBF,EAAqCqF,EAArCrF,iBAAkBD,EAAmBsF,EAAnBtF,eAE9C,OACE,eAACs1B,GAAD,WACwB,UAArBhwB,EAAKvF,aAA2B,cAACs1B,GAAD,IACjC,cAAC,GAAD,CACEpD,QAASA,EACThtB,WAAYK,EAAKL,WACjBqtB,gBAAiBA,EACjBC,UAAWA,EACXxyB,YAAauF,EAAKvF,eAElBiyB,GACA,eAAC,IAAD,CAAM5B,eAAe,gBAAgBzN,WAAW,SAAhD,UACE,eAAC,IAAD,WAAO9N,EAAgB,IAAK,OAA5B,OACA,cAAC,IAAD,CAAM2F,MAAI,EAAC1F,MAAO,CAAE4N,QAAS,OAAQC,WAAY,UAAjD,SACGrd,EAAKwb,IACJ,qCACE,cAAC,GAAD,CACEmR,QAASA,EACT9xB,mBAAoBA,EACpBF,iBAAkBA,EAClBD,eAAgBA,EAChBk0B,WAAYA,EACZpT,IAAKxb,EAAKwb,MAEXiV,EATH,OAYA,cAAC,IAAD,CAAU3gB,OAAQ,GAAID,MAAO,UAKrC,eAAC,IAAD,CAAMib,eAAe,gBAArB,UACE,eAAC,IAAD,WAAOvb,EAAgB,IAAK,QAA5B,OACA,cAAC,IAAD,CAAM2F,MAAI,EAAV,SAAYsb,OAEd,cAACE,GAAD,CAAsB1wB,KAAMA,EAAM2Q,SAAUA,EAAU7Q,QAASA,IAC/D,cAAC,GAAD,IACA,cAAC,GAAD,CACE0Q,QAAS,kBAAM6f,GAA0BD,IACzClE,SAAUkE,IAEZ,cAACF,GAAD,CAAkBhE,SAAUkE,EAA5B,SACE,cAAC,GAAD,CACE1D,QAASA,EACTD,eAAc,6DAAwDzsB,EAAKxF,YAAYU,SACvF0xB,mBAAoBA,EACpBD,QAASA,EACT9xB,mBAAoBA,EACpBF,iBAAkBA,EAClBD,eAAgBA,UCvJXi2B,GAlBQ,WAAO,IAAD,EACFhT,cAAjBC,EADmB,EACnBA,IAAKC,EADc,EACdA,QACPtO,EAAkBrY,eAExB,OACE,cAAC,GAAD,UACE,eAAC,IAAD,CAAY4mB,YAAcD,EAAc,EAAJ,EAAOpI,KAAK,KAAKjH,QAAQ,SAA7D,UACE,cAAC,IAAD,CAAgBwB,GAAIqJ,IAAMK,GAAE,UAAKkE,GAAjC,SACGrO,EAAgB,IAAK,YAExB,cAAC,IAAD,CAAgBS,GAAIqJ,IAAMK,GAAE,UAAKkE,EAAL,YAA5B,SACGrO,EAAgB,IAAK,oBAS1BxC,GAAUxV,KAAOM,IAAV,6HCxBEN,QAAOM,IAAtB,iHACsB,qBAAGJ,MAAkBqR,OAAOoG,cC6GnC0hB,GA7FS,WAAO,IACrB3S,EAASN,cAATM,KACF1O,EAAkBrY,eAClB0yB,EAAU1hB,KACV0mB,EAAalmB,KACbmhB,EAAWphB,KALW,EAM2C2D,cAA/DtM,EANoB,EAMpBA,QAAS6Q,EANW,EAMXA,SAEXvO,EAAWwF,cACTzO,EAAgBD,IAAhBC,YACRT,qBAAU,WACJoH,GACFsC,EAASD,GAAuBrC,MAEjC,CAACA,EAASsC,EAAUjJ,IAEvB,IAAM8wB,EAAcL,EAAQ/lB,QAAO,SAAC7D,GAAD,OAAuB,IAAbA,EAAK1F,KAAiC,OAApB0F,EAAKL,cAC9DkxB,EAAgBjH,EAAQ/lB,QAAO,SAAC7D,GAAD,OAAuB,IAAbA,EAAK1F,KAAiC,OAApB0F,EAAKL,cAKhEmxB,EAAY1c,uBAChB,SAAC+V,EAAgBuC,GAAsB,IAAD,EAC9BtC,EAAkB,IAAIvrB,KAAU,UAAA+qB,EAAQvzB,MAAK,SAAC2J,GAAD,O1EhC3B,I0EgCqCA,EAAK1F,cAA5B,eAAqDoF,oBAAqB,GA6BhH,OA5BqDyqB,EAAejtB,KAAI,SAAC8C,GACvE,IAAKA,EAAKf,cAAgBe,EAAKlB,sBAAwBkB,EAAKlB,oBAC1D,OAAOkB,EAET,IAAMqqB,EAAsBld,GAAgBnO,MAAMgB,EAAKR,YACjD8qB,EAAqBD,EAAoBrrB,MAAMoO,IAEjDoO,EAAM4O,EAAgBprB,MAAMsrB,GAAoBzyB,IAAImI,EAAKlB,qBAE7D,GAAIkB,EAAKrF,mBAAqB7C,EAAWi5B,MAAQ/wB,EAAKrF,mBAAqB7C,EAAWk5B,KACpFxV,EAAM4O,EAAgBprB,MAAMsrB,GAAoBzyB,IAAImI,EAAKlB,qBAAqBE,MAAM6qB,QAC/E,GAAI7pB,EAAKrF,mBAAqB7C,EAAWyyB,MAC9C/O,EAAM8O,EAAmBzyB,IAAImI,EAAKlB,0BAC7B,GAAIkB,EAAKwqB,KAAM,CACpB,IAAMC,EACJzqB,GAAQoqB,EAAgBprB,MAAMqrB,GAAqBrrB,MAAMoO,IAAiBvV,IAAImI,EAAKlB,qBAC/E4rB,EACJ1qB,EAAKN,mBACL,IAAIb,IAAUmB,EAAKN,mBAChBV,MAAMgB,EAAKwqB,KAAKG,gBAChB3rB,MAAMoO,IACNvV,IAAImI,EAAKlB,qBAEd0c,EAAMiP,GAAYC,GAAWD,EAASG,KAAKF,GAG7C,OAAO,2BAAK1qB,GAAZ,IAAkBwb,WAESte,KAAI,SAAC8C,GAAD,OAC/B,cAAC,GAAD,CAEEA,KAAMA,EACN0sB,QAASA,EACT7C,SAAUA,EACV+E,WAAYA,EACZje,SAAUA,EACV7Q,QAASA,GANJE,EAAK1F,UAUhB,CAACuvB,EAAUD,EAAS9pB,EAAS8uB,EAAYje,IAG3C,OACE,eAACrZ,GAAA,EAAD,WACE,cAAC,IAAD,CAAS0Y,GAAG,KAAKyF,KAAK,KAAKZ,MAAM,YAAY1E,GAAG,OAAOX,MAAO,CAAEyhB,UAAW,UAA3E,SACG1hB,EAAgB,IAAK,wCAKxB,cAAC,GAAD,IACA,gCACE,cAAC,GAAD,IACA,eAAC0P,GAAD,WACE,cAAC,IAAD,CAAOC,OAAK,EAACjB,KAAI,UAAKA,GAAtB,SACG6S,EAAU7G,GAAa,KAE1B,cAAC,IAAD,CAAO/K,OAAK,EAACjB,KAAI,UAAKA,EAAL,YAAjB,SACG6S,EAAUD,GAAe,WAIhC,cAAC,IAAD,CAAOjhB,IAAI,kBAAkBG,IAAI,sBAAsBF,MAAO,IAAMC,OAAQ,KAAMohB,YAAU,QClGnFj5B,OAAMC,cAAc,CACjCi5B,wBAAyB,EACzBC,cAAc,EACdC,YAAa,K,SCVFC,GAAiB,WAAO,IAAD,EACQ/4B,oBAAS,IAAIg5B,MAAOC,WAD5B,mBAC3BC,EAD2B,KACZC,EADY,KAalC,OAVAh5B,qBAAU,WACR,IAIMi5B,EAAU/4B,aAAY,WAH1B84B,GAAiB,SAACE,GAAD,OAAgBA,EAAa,SAGN,KAE1C,OAAO,kBAAM74B,cAAc44B,MAC1B,IAEIF,GCdHI,GAAkB,KAClBC,GAAiB,MACjBC,GAAmB,QACnBC,GAAkB,SAgDTC,GAzCQ,SAACC,GACtB,IAAIC,EAAQD,EACNE,EAAW,CACfC,MAAO,EACPC,OAAQ,EACRC,KAAM,EACNC,MAAO,EACPC,QAAS,EACTP,QAAS,GA8BX,OA3BIC,GAASH,KACXI,EAASC,MAAQ/V,KAAKkM,MAAM2J,EAAQH,IACpCG,GAASC,EAASC,MAAQL,IAGxBG,GAASJ,KACXK,EAASE,OAAShW,KAAKkM,MAAM2J,EAAQJ,IACrCI,GAASC,EAASE,OAASP,IAGzBI,GAASL,KACXM,EAASG,KAAOjW,KAAKkM,MAAM2J,EAAQL,IACnCK,GAASC,EAASG,KAAOT,IAGvBK,GAASN,KACXO,EAASI,MAAQlW,KAAKkM,MAAM2J,EAAQN,IACpCM,GAASC,EAASI,MAAQX,IAGxBM,GA1CoB,KA2CtBC,EAASK,QAAUnW,KAAKkM,MAAM2J,EA3CR,IA4CtBA,GA5CsB,GA4CbC,EAASK,SAGpBL,EAASF,QAAUC,EAEZC,GC9CHM,GAAsB,CAAC,EAAG,IAa1BC,GAAyB,SAAClB,GAC9B,IAMImB,EANEC,EAAO,IAAItB,KAAKE,GAChBqB,EAAcD,EAAKE,cACnBC,EAdsB,SAACF,GAC7B,QAAQ,GACN,KAAKA,EAAcJ,GAAoB,IAAMI,GAAeJ,GAAoB,GAC9E,OAAOA,GAAoB,GAC7B,KAAKI,EAAcJ,GAAoB,GACrC,OAAOA,GAAoB,GAC7B,QACE,OAAO,GAOaO,CAAsBH,GAM9C,GAHkD,IAApBE,GAAyBF,GAAe,GAAKA,GAAe,GAG/D,CACzB,IAAMI,EAAW,IAAI3B,KAAKE,GACpB0B,EAAUD,EAASE,aAAe,EACxCF,EAASG,WAAWF,GACpBP,EAAuBM,EAASI,YAAYN,EAAiB,EAAG,EAAG,QAEnEJ,EAAuBC,EAAKS,YAAYN,EAAiB,EAAG,EAAG,GAGjE,OAAOJ,GAKHW,GAAwB,SAACf,EAAOC,GAAR,gBAAuB9oB,SAAS6oB,GAAhC,cAA4C7oB,SAAS8oB,GAArD,MAEjBe,GAAoB,SAAC/B,GAChC,IACMgC,EALsB,SAAChC,GAAD,OAA6D,MAAzC9nB,SAAS8nB,EAAgB,MAAW,GAIzDiC,CAAsBjC,GACEA,EAC3CgB,EAAYR,GAAewB,EAAwB,KAAnDhB,QACAD,EAAUP,GAAewB,EAAwB,KAAjDjB,MACR,OAAOe,GAAsBf,EAAOC,IAazBkB,GAAqB,SAAClC,GAKjC,OAAO,KAHSkB,GAAuBlB,GACFA,GAFV,MAG6C,KClDpEmC,GAAkBr8B,KAAOM,IAAV,kEAKfg8B,GAAiBt8B,KAAOM,IAAV,iJAQdi8B,GAAoBv8B,KAAOM,IAAV,4HAOjBk8B,GAAoBx8B,aAAOod,IAAPpd,CAAH,sDAgCRy8B,GA7BS,WACtB,IAAMzkB,EAAkBrY,eAClBovB,EAAkBD,KAClBoL,EAAgBH,KAChB2C,EAAsBT,GAAkB/B,GACxCyC,EDQ0B,SAACzC,GACjC,IACM0C,EADsBxB,GAAuBlB,GACFA,EACzCgB,EAAYR,GAAekC,EAAqB,KAAhD1B,QACAD,EAAUP,GAAekC,EAAqB,KAA9C3B,MACR,OAAOe,GAAsBf,EAAOC,GCbP2B,CAAmB3C,GAEhD,OACE,eAACmC,GAAD,WACE,cAAC,IAAD,CAAUS,YAAaV,GAAmBlC,GAAgB6C,cDYxB,EAAI,GAAM,ICZkDC,mBAAiB,IAC/G,eAACV,GAAD,WACE,cAACE,GAAD,CAAmBhf,SAAS,OAAOG,MAAI,EAACL,MAAM,WAA9C,SACGyR,EAAkB2N,EAAsBC,IAE3C,cAAC,IAAD,CAAMnf,SAAS,OAAOG,MAAI,EAACL,MAAM,mBAAjC,SACqBtF,EAAgB,EAAlC+W,EAAqC,oBAA0C,2BAGnFA,GACC,cAACwN,GAAD,UACE,eAAC,IAAD,CAAMjf,MAAM,mBAAZ,UACGqf,EADH,IAC0B3kB,EAAgB,EAAG,+BClDjDsJ,GAAQthB,aAAOkyB,KAASC,MAAM,CAAE1Z,GAAI,KAAMyF,KAAM,MAAxCle,CAAH,sEACA,qBAAGE,MAAkBqR,OAAO0rB,aAIjCC,GAAQl9B,aAAOod,IAAPpd,CAAH,2FAMLm9B,GAAan9B,KAAOM,IAAV,sJAMV88B,GAAkBp9B,aAAOC,KAAPD,CAAH,wHAKjB,qBAAGE,MAAkBC,aAAaC,MAKhCi9B,GAAcr9B,KAAOM,IAAV,oJAIb,qBAAGJ,MAAkBC,aAAaC,MAIlC,qBAAGF,MAAkBC,aAAaE,MAKhCi9B,GAAet9B,KAAOM,IAAV,gQAQd,qBAAGJ,MAAkBC,aAAaC,MAKlC,qBAAGF,MAAkBC,aAAaE,MAwBvBmmB,GAnBF,WACX,IAAMxO,EAAkBrY,eAExB,OACE,cAACw9B,GAAD,UACE,eAACC,GAAD,WACE,eAACC,GAAD,WACE,cAAC,GAAD,UAAQrlB,EAAgB,IAAK,uBAC7B,cAACklB,GAAD,UAAQllB,EAAgB,IAAK,4BAC7B,cAACklB,GAAD,UAAQllB,EAAgB,IAAK,wDAE/B,cAACslB,GAAD,UACE,cAAC,GAAD,YC3EKt9B,QAAOM,IAAtB,iHACsB,qBAAGJ,MAAkBqR,OAAOoG,cCE5C4lB,GAAgBv9B,KAAOM,IAAV,siBA4BJk9B,GA9BW,kBAAM,cAACD,GAAD,KCoD1BE,GAAUz9B,KAAOM,IAAV,kDAIPo9B,GAAc19B,KAAOM,IAAV,gHAIN,SAACsU,GAAD,OAAWA,EAAM1U,MAAMqR,OAAO4N,WAGnCwC,GAAe3hB,aAAOgiB,IAAPhiB,CAAH,qDACF,SAAC4U,GAAD,OAAWA,EAAM1U,MAAMme,QAAQ,MAGhCsf,GA1D2C,SAAC,GAA0C,IAAxCC,EAAuC,EAAvCA,gBAAiBvd,EAAsB,EAAtBA,UAAW5E,EAAW,EAAXA,KACjFoiB,EAAajO,KACb5X,EAAkBrY,eAClBm+B,EAAcjhB,uBAClB,SAACka,GAEC,IADA,IAAIgH,EAAI,EACC13B,EAAIw3B,EAAW/9B,OAAS,EAAGuG,GAAK,EAAGA,IAEtCw3B,EAAWx3B,IAAM0wB,EAAO1wB,IAAI03B,IAElC,OAAOA,IAET,CAACF,IAGGG,EAAYJ,EAAgBj4B,KAAI,SAACoxB,EAAQtsB,GAC7C,GAAIqzB,EAAY/G,EAAO,IAAM,GAAc,QAATtb,EAAgB,CAChD,IAAMwiB,EAAQ,IAAIvR,MAAMoR,EAAY/G,EAAO,IAAM,GAAGlD,KAAK,gBACzD,OAEE,cADA,CACC4J,GAAD,WACGQ,EACAlH,EAAO1uB,WACP41B,IAHWxzB,GAQlB,OAAO,4BAAgBssB,EAAO1uB,YAAfoC,MAGjB,OACE,eAAC,IAAD,CAAOuW,MAAOhJ,EAAgB,IAAD,6BAA4B4lB,EAAgB99B,OAA5C,MAAwDugB,UAAWA,EAAhG,UACE,cAACqd,GAAD,UACE,6BAAKM,MAEP,cAAC,GAAD,CAAc/mB,QAAQ,YAAYgC,QAASoH,EAA3C,SACGrI,EAAgB,IAAK,eCvCxBkmB,GAAkBl+B,KAAOM,IAAV,2EAKf69B,GAAcn+B,KAAOM,IAAV,4GASXqjB,GAAoB3jB,KAAOM,IAAV,qDACP,SAACsU,GAAD,OAAWA,EAAM1U,MAAMme,QAAQ,MAGzC+f,GAAyBp+B,KAAOM,IAAV,mJAQtBqhB,GAAe3hB,aAAOgiB,IAAPhiB,CAAH,qDACF,SAAC4U,GAAD,OAAWA,EAAM1U,MAAMme,QAAQ,MA2DhCggB,GAxDoB,WAAO,IAAD,EACKr9B,oBAAS,GADd,mBAChCs9B,EADgC,KAChB3M,EADgB,KAEjC3Z,EAAkBrY,eAFe,EAGD4vB,KAA9BG,EAH+B,EAG/BA,aAAcF,EAHiB,EAGjBA,YACdJ,EAAiBF,KAAjBE,aACFhC,EAAU+C,KALuB,EAMV7K,YAAS,cAAC,GAAD,CAAgBsY,gBAAiBxQ,EAAS3R,KAAK,SAA9E8iB,EANgC,oBAQjC3M,EAAc/U,sBAAW,sBAAC,sBAAAvb,EAAA,sEAE5BqwB,GAAkB,GAFU,SAGPvC,IAHO,eAM1BuC,GAAkB,GANQ,gDAS5B5U,QAAQ6I,MAAR,MAT4B,yDAW7B,CAACwJ,EAAcuC,IAEZ6M,EAAWhoB,GAAiBgZ,GAAa1Y,QAAQ,GAEvD,OACE,eAACsnB,GAAD,WACE,cAACD,GAAD,UACE,cAAC,IAAD,MAEF,cAAC,IAAD,CAAS1lB,GAAG,KAAKyF,KAAK,KAAKZ,MAAM,YAAjC,SACGtF,EAAgB,IAAK,cAEvB0X,GAAgB,cAAC,GAAD,KACfA,GACA,mCACE,eAACwO,GAAD,WACE,cAAC,IAAD,CAASzlB,GAAG,KAAKyF,KAAK,KAAKjG,MAAO,CAAE6Z,YAAa,OAAjD,SACG0M,IAEH,cAAC,IAAD,CAAS/lB,GAAG,KAAKyF,KAAK,KAAtB,wBAMN,cAAC,GAAD,UACE,cAAC,IAAD,CAAQvF,WAAS,EAACsI,SAAUqd,EAAgBrlB,QAAS2Y,EAArD,SACG5Z,EAAgB,IAAK,eAG1B,cAAC,GAAD,CAAcf,QAAQ,OAAOgC,QAASslB,EAAtC,SACGvmB,EAAgB,IAAK,2BCnFxBxC,GAAUxV,KAAOM,IAAV,iDAIPm+B,GAAcz+B,KAAOM,IAAV,4EAKX6c,GAAand,aAAOod,IAAPpd,CAAH,sDAIV0+B,GAAQ1+B,KAAOirB,IAAV,8FAGP,qBAAG/qB,MAAkBC,aAAaw+B,MAIhChd,GAAe3hB,aAAOgiB,IAAPhiB,CAAH,qEAuBH4+B,GAlBmB,WAChC,IAAM5mB,EAAkBrY,eAClBytB,EAAU+C,KAFsB,EAGT7K,YAAS,cAAC,GAAD,CAAgBsY,gBAAiBxQ,EAAS3R,KAAK,SAA9E8iB,EAH+B,oBAKtC,OACE,eAAC,GAAD,WACE,cAACG,GAAD,CAAOrmB,IAAI,uBAAuBG,IAAI,kBACtC,eAACimB,GAAD,WACE,cAAC,GAAD,CAAYnhB,MAAM,eAAlB,SAAkCtF,EAAgB,IAAK,iCACvD,cAAC,GAAD,CAAcf,QAAQ,OAAOgC,QAASslB,EAAtC,SACGvmB,EAAgB,IAAK,8BCnC1B6mB,GAAa7+B,aAAOqX,IAAPrX,CAAH,sCACZ,SAAC4U,GAAD,OACAA,EAAMyI,WAAN,iIAKwBzI,EAAM1U,MAAMqR,OAAOgM,aAL3C,wBAOM3I,EAAM1U,MAAMC,aAAaC,GAP/B,iEAWMwU,EAAM1U,MAAMC,aAAaE,GAX/B,8DA+BWy+B,GAbkB,WAAO,IAC9BtP,EAAgBD,KAAhBC,YAGFuP,EADWvoB,GAAiBgZ,GACR,EAE1B,OACE,cAACqP,GAAD,CAAYxhB,YAAa0hB,EAAQxnB,SAAUwnB,EAA3C,SACE,cAAC,IAAD,UAAWA,EAAS,cAAC,GAAD,IAAuB,cAAC,GAAD,SC9B3CC,GAAiBh/B,aAAOi/B,IAAPj/B,CAAH,gIAOdk/B,GAAgBl/B,aAAOkyB,IAAPlyB,CAAH,kDAIbm+B,GAAcn+B,KAAOM,IAAV,kFAuBF6+B,GAhBU,WACvB,IAAMnnB,EAAkBrY,eAExB,OACE,cAAC,IAAD,CAAM4X,UAAQ,EAAd,SACE,eAACynB,GAAD,WACE,cAAC,GAAD,UACE,cAAC,IAAD,MAEF,cAACE,GAAD,CAAehhB,KAAK,KAApB,SAA0BlG,EAAgB,IAAK,qCAC/C,cAAC,GAAD,UCFF0lB,GAAc19B,KAAOM,IAAV,8GAIN,SAACsU,GAAD,OAAWA,EAAM1U,MAAMqR,OAAO4N,WAG1BigB,GAjC4C,SAAC,GAAmB,IAAjB/e,EAAgB,EAAhBA,UACtDrI,EAAkBrY,eAExB,OACE,eAAC,IAAD,CAAOqhB,MAAOhJ,EAAgB,IAAK,WAAYqI,UAAWA,EAA1D,UACE,eAAC,GAAD,WACGrI,EAAgB,IAAK,uCACtB,uBACCA,EAAgB,IAAK,6EACtB,uBACCA,EAAgB,IAAK,kFACtB,uBACCA,EACC,IACA,sHAGJ,cAAC,GAAD,UACE,cAAC,IAAD,CAAQW,WAAS,EAACM,QAASoH,EAA3B,SACGrI,EAAgB,IAAK,wBCX1Bqe,GAAcr2B,KAAOM,IAAV,wJAGD,SAACsU,GAAD,OAAWA,EAAM1U,MAAMme,QAAQ,MAE3C,qBAAGne,MAAkBC,aAAaE,MA2EvBg/B,GAtEc,WAAO,IAAD,EACiBr+B,oBAAS,GAD1B,mBAC1B6jB,EAD0B,KACPC,EADO,KAE3B9M,EAAkBrY,eAClBwL,ECnB2B,WAAO,IAAD,EACLnK,mBAAS,IAAIsG,IAAU,IADlB,mBAChC6D,EADgC,KACrBm0B,EADqB,KAE/B/2B,EAAiCsM,cAAjCtM,QACFyjB,EAAkBtR,KAClBsO,EAAgBvO,KAetB,OAbAtZ,qBAAU,WACR,IAAMo+B,EAAc,uCAAG,4BAAAj+B,EAAA,sEACHwmB,GAAakB,EAAegD,EAAiBzjB,GAD1C,OACfnC,EADe,OAErBk5B,EAAa,IAAIh4B,IAAUlB,IAFN,2CAAH,qDAKhBmC,GAAWygB,GAAiBA,GAC9BuW,IAEF,IAAMC,EAAkBn+B,YAAYk+B,EAAgB,KACpD,OAAO,kBAAM/9B,cAAcg+B,MAC1B,CAACj3B,EAASygB,EAAegD,IAErB7gB,EDAWs0B,GACVpb,E3DoBuB,WAAO,IAC9B9b,EAAiCsM,cAAjCtM,QACFygB,EAAgBvO,KAChBuR,EAAkBtR,KAWxB,MAAO,CAAE2J,UATaxH,sBAAW,sBAAC,4BAAAvb,EAAA,+EAEb4Z,GAAQ8N,EAAegD,EAAiBzjB,GAF3B,cAExBsT,EAFwB,yBAGvBA,GAHuB,0DAKvB,GALuB,yDAO/B,CAACtT,EAASygB,EAAegD,K2DhCN0T,GAAdrb,UACF0K,EAAkBD,KAClBjE,EAAevC,GAAgBzjB,KAE/BuoB,EAAU+C,KACVwP,EAAgBvS,EAAQttB,OATG,EAUJwlB,YAAS,cAAC,GAAD,CAAgBsY,gBAAiBxQ,EAAS3R,KAAK,SAA9E8iB,EAV0B,sBAWNjZ,YAAS,cAACsa,GAAD,KAA7BC,EAX0B,sBAYVva,YAAS,cAAC,GAAD,CAAgBvF,IAAK8K,EAAcvf,UAAU,WAAtEumB,EAZ0B,oBAc3BlM,EAAgB9I,sBAAW,sBAAC,sBAAAvb,EAAA,sEAE9BwjB,GAAqB,GAFS,SAGTT,IAHS,eAM5BS,GAAqB,GAEvB+a,IAR8B,gDAU9B9iB,QAAQ6I,MAAR,MAV8B,yDAY/B,CAACvB,EAAWwb,IAiCf,OACE,cAAC,GAAD,UACG9Q,EACC,eAAC,IAAD,CAAQ9N,UAAQ,EAAhB,cAAmBjJ,EAAgB,IAAK,cAjCvC7M,EAAUmK,WAab,qCACE,cAAC,IAAD,CACE2C,MAAO,CAAE6Z,YAAa,OACtBnZ,WAAS,EACTsI,SAA4B,IAAlB0e,EACV1oB,QAAQ,YACRgC,QAASslB,EALX,SAOGvmB,EAAgB,IAAK,uBAExB,cAAC,IAAD,CAAQwB,GAAG,oBAAoBb,WAAS,EAACM,QAAS4Y,EAAlD,SACG7Z,EAAgB,IAAK,mBAtBxB,qCACE,cAAC,IAAD,CAAQW,WAAS,EAACsI,UAAQ,EAA1B,SACGjJ,EAAgB,IAAK,uBAExB,cAAC,IAAD,CAAQW,WAAS,EAACsI,SAAU4D,EAAmB5L,QAAS0M,EAAxD,SACG3N,EAAgB,IAAK,yBE9C5B6mB,GAAa7+B,aAAOqX,IAAPrX,CAAH,sCACZ,SAAC4U,GAAD,OACAA,EAAMkrB,aAAN,mDAIMlrB,EAAM1U,MAAMC,aAAaC,GAJ/B,iEAQMwU,EAAM1U,MAAMC,aAAaE,GAR/B,8DAeE0/B,GAAa//B,KAAOM,IAAV,yEAKV69B,GAAcn+B,KAAOM,IAAV,yGAQX0/B,GAAqBhgC,KAAOM,IAAV,4EA4CT++B,GAvCyB,SAAC,GAA8B,IAAD,IAA3BS,oBAA2B,SAC9D9nB,EAAkBrY,eAClBovB,EAAkBD,KAGlB6Q,EADUxP,KACcrwB,OAExBo6B,EAAgBH,KAChB2C,EAAsB3N,GAAmBkN,GAAkB/B,GAEjE,OACE,cAAC,GAAD,CAAY4F,aAAcA,EAA1B,SACE,eAAC,IAAD,WACE,eAACC,GAAD,WACE,cAAC,GAAD,UACE,cAAC,IAAD,MAEDhR,EACC,eAACiR,GAAD,WACE,cAAC,IAAD,CAAMxiB,SAAS,OAAOF,MAAM,aAA5B,SACGtF,EAAgB,IAAK,wBAExB,cAAC,IAAD,CAASkG,KAAK,KAAd,SAAoBwe,OAGtB,eAACsD,GAAD,WACE,cAAC,IAAD,CAAMxiB,SAAS,OAAOF,MAAM,aAA5B,SACGtF,EAAgB,IAAK,iCAExB,cAAC,IAAD,CAASkG,KAAK,KAAd,SAAoByhB,UAI1B,cAACM,GAAD,UCrEFvI,GAAO13B,KAAOM,IAAV,qIAEwB,SAACsU,GAAD,OAAYA,EAAMsrB,SAAW,EAAI,KAI7DC,GAAmBngC,aAAOod,IAAPpd,CAAH,qDAIhBogC,GAAsBpgC,aAAOkyB,IAAPlyB,CAAH,qDAInB23B,GAAW33B,KAAOM,IAAV,sDACK,SAACsU,GAAD,OAAYA,EAAM4O,aAAe5O,EAAM4O,aAAe,UAGnE6c,GAAmBrgC,aAAO23B,GAAP33B,CAAH,kEA4FPsgC,GAxF6B,SAAC,GAMtC,IAAD,IALJ/O,0BAKI,MALiB,EAKjB,MAJJ2O,gBAII,SAHJK,EAGI,EAHJA,eACAC,EAEI,EAFJA,iBACAC,EACI,EADJA,mBAEMC,IAAuBnP,EAAqB,IAAO,IAAIza,QAAQ,GAC/D6pB,IAAwBpP,EAAqB,IAAO,IAAIza,QAAQ,GAChE8pB,IAAsBrP,EAAqB,IAAO,IAAIza,QAAQ,GAC9D+pB,IAAgBtP,EAAqB,IAAO,IAAIza,QAAQ,GACxDkB,EAAkBrY,eAExB,OACE,eAAC,GAAD,CAAMugC,SAAUA,EAAhB,UACE,cAAC,GAAD,UACE,cAAC,IAAD,CAAM1iB,SAAS,OAAOF,MAAM,aAA5B,SACGtF,EAAgB,IAAK,mBAGzBkoB,GACC,cAACG,GAAD,UACE,cAACF,GAAD,CAAkB3iB,SAAS,OAAOF,MAAM,aAAxC,SACGtF,EAAgB,IAAK,eAI5B,cAAC,GAAD,UACE,cAACmoB,GAAD,CAAkB3iB,SAAS,OAAOF,MAAM,aAAxC,SACGtF,EAAgB,IAAK,iBAI1B,cAAC,GAAD,UACE,cAAC,IAAD,CAASkG,KAAK,KAAd,iBAEDgiB,GACC,cAACG,GAAD,UACE,cAACD,GAAD,CAAqBliB,KAAK,KAA1B,SAAgCqiB,MAGpC,cAAC,GAAD,UACE,cAACH,GAAD,CAAqBliB,KAAK,KAA1B,SAAgCwiB,EAAkBxgB,qBAGpD,cAAC,GAAD,UACE,cAAC,IAAD,CAAMvC,MAAI,EAAV,iBAEDuiB,GACC,cAACG,GAAD,UACE,cAACF,GAAD,CAAkBxiB,MAAI,EAAtB,SAAwB8iB,MAG5B,cAAC,GAAD,UACE,cAACN,GAAD,UAAmBQ,EAAmBzgB,qBAGxC,cAAC,GAAD,CAAUsD,aAAa,OAAvB,SACE,cAAC,IAAD,kBAED0c,GACC,cAACG,GAAD,CAAkB7c,aAAa,OAA/B,SACE,cAAC2c,GAAD,UAAmBK,MAGvB,cAAC,GAAD,CAAUhd,aAAa,OAAvB,SACE,cAAC2c,GAAD,UAAmBS,EAAiB1gB,qBAGtC,cAAC,GAAD,CAAUsD,aAAa,IAAvB,SACE,eAAC,IAAD,WAAOxL,EAAgB,IAAD,UAASkoB,EAAW,SAAW,YAArD,SAEDA,EACC,qCACE,cAAC,GAAD,CAAU1c,aAAa,MACvB,cAAC,GAAD,CAAUA,aAAa,IAAvB,SACE,cAAC2c,GAAD,UAAmBU,EAAW3gB,wBAIlC,cAAC,GAAD,CAAUsD,aAAa,IAAvB,SACE,cAAC2c,GAAD,UAAmBU,EAAW3gB,yBCzGlCsV,GAAcx1B,KAAOM,IAAV,2GAMXwgC,GAAQ9gC,KAAOM,IAAV,qFAGP,qBAAGJ,MAAkBC,aAAaC,MAKhC2gC,GAAO/gC,KAAOM,IAAV,iDAIJ69B,GAAcn+B,KAAOM,IAAV,yGAQX0gC,GAAoBhhC,KAAOM,IAAV,4EAKjBq4B,GAAmB34B,KAAOM,IAAV,kFACV,SAACsU,GAAD,OAAYA,EAAMqsB,WAAa,OAAS,SAEhD,qBAAG/gC,MAAkBC,aAAaC,MAoDvB8gC,GA/CS,WACtB,IAAMlpB,EAAkBrY,eAChB4I,EAAYsM,cAAZtM,QAFoB,EAGQvH,oBAAS,GAHjB,mBAGrBigC,EAHqB,KAGTE,EAHS,KAItB5P,GAAsB/a,GAAiB6Y,MAAmBvY,QAAQ,GAClEsqB,EAAkC7P,EAAmBrR,iBACnDmhB,EAAyBzhC,qBAAW0hC,IAApCD,qBAER,OACE,eAAC,IAAD,WACE,eAAC,IAAD,WACG94B,GACC,eAAC,IAAD,CAAMqQ,GAAG,OAAOkN,WAAW,SAASyN,eAAe,gBAAgBtb,MAAO,CAAEM,OAAQ,QAApF,UAC4B,IAAzB8oB,GAA8B,cAAC,IAAD,CAAU9oB,OAAQ,GAAID,MAAO,KAC3D+oB,EAAuB,GACtB,mCACE,cAAC,IAAD,CAAM7jB,SAAS,OAAOvF,MAAO,CAAEspB,WAAY,KAA3C,0BAA6DF,UAKrE,eAAC,GAAD,WACE,eAACN,GAAD,WACE,cAAC,GAAD,UACE,cAAC,IAAD,MAEF,eAACC,GAAD,WACE,cAAC,IAAD,CAAMxjB,SAAS,OAAOF,MAAM,aAA5B,SACGtF,EAAgB,IAAK,gBAExB,eAAC,IAAD,CAASkG,KAAK,KAAd,UAAoBkjB,EAApB,kBAGJ,cAACN,GAAD,UACE,cAAC,GAAD,CAAyB7nB,QAAS,kBAAMkoB,GAAeF,IAAatM,SAAUsM,YAIpF,cAAC,GAAD,CAAkBA,WAAYA,EAA9B,SACE,cAAC,IAAD,UACE,cAAC,GAAD,CAAW1P,mBAAoBA,YC2BnC3O,IANO5iB,KAAOsB,EAAV,gGAMEtB,KAAOM,IAAV,sHAOHkhC,GAAYxhC,KAAOM,IAAV,kLAWTmhC,GAAiBzhC,KAAOM,IAAV,kLAWd0qB,GAAYhrB,KAAOM,IAAV,sDAITohC,GAAiB1hC,KAAOM,IAAV,4IASdqhC,GAAe3hC,KAAOM,IAAV,iGAMZshC,GAAS5hC,KAAOM,IAAV,wHAONuhC,GAAe7hC,KAAOM,IAAV,8EAKZwhC,GAA0B9hC,KAAOM,IAAV,2HAOvByhC,GAAkB/hC,KAAOM,IAAV,iWAkBf0hC,GAAYhiC,KAAOM,IAAV,qHAOT2hC,GAAiBjiC,KAAOM,IAAV,qIAQd4hC,GAAmBliC,KAAOM,IAAV,oGAMhB6hC,GAAcniC,KAAOM,IAAV,6BAEXghB,GAAQthB,KAAOM,IAAV,+HACA,SAACsU,GAAD,OAAWA,EAAM1U,MAAMqR,OAAO0rB,aAOnCmB,GAAyBp+B,KAAOM,IAAV,mJAQb8hC,GAzOkB,WAAO,IAC9B75B,EAAYsM,cAAZtM,QACFs1B,EAAajO,KACbb,EAAkBD,KAClBuT,EAAiBtS,GAAwB,GACzCuS,EAAiBvS,GAAwB,GACzCwS,EAAiBxS,GAAwB,GACzC/X,EAAkBrY,eAExB,OACE,cAACwiC,GAAD,UACE,cAAC,IAAD,UACE,cAAC,IAAD,UACE,eAAC,GAAD,WACE,eAACD,GAAD,WACE,cAAC,GAAD,UACG35B,GAAWwmB,EAAX,sBACQ/W,EAAgB,IAAK,8BAD7B,gBAEGA,EAAgB,IAAK,4BAE3B,0BAEF,cAAC,GAAD,UACG6lB,EAAWl4B,KAAI,SAACoxB,EAAQtsB,GAAT,OAEd,aADA,CACCs3B,GAAD,UACE,cAACF,GAAD,UAAe9K,KADKtsB,QAK1B,eAAC+2B,GAAD,WACE,cAACQ,GAAD,UACE,cAACN,GAAD,UACE,cAAC,IAAD,CAAOrpB,IAAI,sBAAsBG,IAAI,WAAWF,MAAO,IAAKC,OAAQ,IAAKohB,YAAU,QAGvF,cAACqI,GAAD,UACE,cAAC,GAAD,CAAW/pB,MAAO,CAAEuqB,WAAY,UAAhC,SACE,cAAC,IAAD,CAAOnqB,IAAI,sBAAsBG,IAAI,WAAWF,MAAO,IAAKC,OAAQ,IAAKohB,YAAU,QAGvF,cAACqI,GAAD,UACE,cAAC,GAAD,CAAW/pB,MAAO,CAAEuqB,WAAY,UAAhC,SACE,cAAC,IAAD,CAAOnqB,IAAI,sBAAsBG,IAAI,WAAWF,MAAO,IAAKC,OAAQ,IAAKohB,YAAU,QAGvF,cAACqI,GAAD,UACE,cAAC,GAAD,CAAW/pB,MAAO,CAAEuqB,WAAY,UAAhC,SACE,cAAC,IAAD,CAAOnqB,IAAI,sBAAsBG,IAAI,WAAWF,MAAO,IAAKC,OAAQ,IAAKohB,YAAU,WAIzF,eAAC8H,GAAD,WACE,cAACQ,GAAD,UACE,cAACP,GAAD,UACE,cAAC,IAAD,CAAOrpB,IAAI,sBAAsBG,IAAI,WAAWF,MAAO,IAAKC,OAAQ,IAAKohB,YAAU,QAGvF,cAACsI,GAAD,UACE,cAAC,GAAD,CAAWhqB,MAAO,CAAEuqB,WAAY,UAAhC,SACE,cAAC,IAAD,CAAOnqB,IAAI,sBAAsBG,IAAI,WAAWF,MAAO,IAAKC,OAAQ,IAAKohB,YAAU,QAGvF,cAACsI,GAAD,UACE,cAAC,GAAD,CAAWhqB,MAAO,CAAEuqB,WAAY,UAAhC,SACE,cAAC,IAAD,CAAOnqB,IAAI,sBAAsBG,IAAI,WAAWF,MAAO,IAAKC,OAAQ,IAAKohB,YAAU,QAGvF,cAACsI,GAAD,UACE,cAAC,GAAD,CAAWhqB,MAAO,CAAEuqB,WAAY,UAAhC,SACE,cAAC,IAAD,CAAOnqB,IAAI,sBAAsBG,IAAI,WAAWF,MAAO,IAAKC,OAAQ,IAAKohB,YAAU,WAIzF,eAACiI,GAAD,WACE,eAACD,GAAD,WACE,cAACG,GAAD,UAA0B9pB,EAAgB,IAAK,iCAC/C,cAAC8pB,GAAD,UACE,iCAASO,SAGb,eAACV,GAAD,WACE,cAACG,GAAD,UAA0B9pB,EAAgB,IAAK,iCAC/C,cAAC8pB,GAAD,UACE,iCAASQ,SAGb,eAACX,GAAD,WACE,cAACG,GAAD,UAA0B9pB,EAAgB,IAAK,iCAC/C,cAAC8pB,GAAD,UACE,iCAASS,sBC7FrBE,GAAgBziC,KAAOM,IAAV,yHAOb4+B,GAAgBl/B,aAAOkyB,IAAPlyB,CAAH,kDAIb0iC,GAAc1iC,aAAO0+B,IAAP1+B,CAAH,sDAIX6hB,GAAa7hB,aAAO8hB,IAAP9hB,CAAH,2EAyBD2iC,GApBI,WACjB,IAAM3qB,EAAkBrY,eAExB,OACE,eAAC8iC,GAAD,WACE,cAACC,GAAD,CAAarqB,IAAI,sBAAsBG,IAAI,gBAAgBF,MAAO,IAAKC,OAAQ,MAC/E,cAAC,GAAD,CAAe2F,KAAK,KAAKzF,GAAG,KAAK6E,MAAM,YAAvC,SACGtF,EAAgB,IAAK,kBAExB,cAAC,IAAD,CAAMwF,SAAS,OAAf,SACGxF,EACC,IACA,mKAGJ,cAAC,GAAD,CAAYvD,KAAK,IAAjB,2BC3BA0f,GAAQn0B,aAAOo0B,IAAPp0B,CAAH,iQAQP,qBAAGE,MAAkBC,aAAaC,MAMlC,qBAAGF,MAAkBC,aAAaE,MAOhCuiC,GAA0B5iC,KAAOM,IAAV,yEAET,SAACsU,GAAD,OAAYA,EAAMmqB,OAAS,SAAW,oBAiC3C8D,GA9BgB,WAAO,IAC5Bt6B,EAAYsM,cAAZtM,QACAinB,EAAgBD,KAAhBC,YAEFuP,EADWvoB,GAAiBgZ,GACR,EAE1B,OACE,qCACE,eAAC,GAAD,WACE,8BACE,cAAC,GAAD,MAEF,cAACoT,GAAD,CAAyB7D,OAAQA,EAAjC,SACIx2B,EAGA,qCACE,cAAC,GAAD,IACA,cAAC,GAAD,CAAYu3B,aAAcf,OAJ5B,cAAC,GAAD,SASN,cAAC,GAAD,IAEA,cAAC,GAAD,QC/BS+D,GAXU,uCAAG,WAAO1S,GAAP,iBAAA9uB,EAAA,+EAEDyhC,MAAM,gEAAD,OAAiE3S,IAFrE,cAElB4S,EAFkB,gBAGLA,EAASC,OAHJ,cAGlBjkC,EAHkB,yBAKjBA,GALiB,wCAOlB,IAAIkkC,MAAJ,MAPkB,0DAAH,sDCZnB1tB,GAAUxV,KAAOM,IAAV,uDAIP6iC,GAAgBnjC,KAAOM,IAAV,sDAIb8iC,GAAgBpjC,KAAOM,IAAV,qIAkDJ+iC,GA1CiD,SAAC,GAAwC,IAAtCC,EAAqC,EAArCA,qBAAsBC,EAAe,EAAfA,SAAe,EAC5DviC,mBAASsiC,GADmD,mBAC/FlT,EAD+F,KAChFoT,EADgF,OAExExiC,oBAAS,GAF+D,mBAE/FyiC,EAF+F,KAEtFC,EAFsF,KAGhG1rB,EAAkBrY,eAgBxB,OACE,eAAC,GAAD,WACE,cAAC,IAAD,UAAOqY,EAAgB,IAAK,4BAC5B,sBAAMurB,SAjBW,SAACI,GACpBA,EAAIC,iBACJL,EAASnT,IAeP,SACE,eAAC+S,GAAD,WACE,cAAC,IAAD,CACEzhC,MAAO0uB,EACPyT,KAAK,SACLC,UAAWL,EACX1jB,IAAKujB,EACLhkB,SAnBW,SAACqkB,GACpB,IAAMjiC,EAAQ0Q,SAASuxB,EAAI7iB,cAAcpf,MAAO,IAIhDgiC,EAAWhiC,EAAQ4hC,GACnBE,EAAiB9hC,MAeX,cAAC0hC,GAAD,UACE,cAAC,IAAD,CAAQS,KAAK,SAAS3lB,KAAK,KAAK+C,SAAUwiB,EAA1C,SACGzrB,EAAgB,IAAK,uBC9CrB+rB,GAJ+C,SAAC,GAAe,IAAbne,EAAY,EAAZA,MAC/D,OAAO,cAAC,IAAD,CAAMrZ,EAAE,OAAR,SAAgBqZ,EAAMoe,W,UCAzB7F,GAAcn+B,KAAOM,IAAV,yGAQX2jC,GAA6C,SAAC,GAAkD,IAAhDC,EAA+C,EAA/CA,eAAgBnjC,EAA+B,EAA/BA,SAAUqiB,EAAqB,EAArBA,KAASxO,EAAY,qDACnG,OACE,eAAC,IAAD,2BAAUA,GAAV,cACGwO,GACC,cAAC,GAAD,UACE,cAACA,EAAD,MAGJ,eAAC,IAAD,CAAMuS,cAAc,SAApB,UACE,cAAC,IAAD,CAAMnY,SAAS,OAAOF,MAAM,aAA5B,SACGvc,IAEH,cAAC,IAAD,CAASmd,KAAK,KAAd,SAAoBgmB,YAM5BD,GAAmBjmB,aAAe,CAChCkmB,eAAgB,GAChB9gB,KAAM,kBAAM,yBACZriB,SAAU,IAGGkjC,I,wHAAAA,MCjCTzuB,GAAUxV,KAAOM,IAAV,8KAYP6jC,GAAmBnkC,aAAOg1B,IAAPh1B,CAAH,gKAsCPq/B,GA7BiE,SAAC,GAAqC,IAAnC+E,EAAkC,EAAlCA,aAAchU,EAAoB,EAApBA,cACzFpY,EAAkBrY,eAClBytB,EAAU+C,GAAWC,GACrBuP,EAAgBvS,EAAQttB,OAHqF,EAItFwlB,YAAS,cAAC,GAAD,CAAgBsY,gBAAiBxQ,EAAS3R,KAAK,SAA9E8iB,EAJ4G,oBAOnH,OAFoB1pB,cAAZtM,QAWN,eAAC,GAAD,WACE,8BACE,cAAC,IAAD,CAAQ0Y,SAA4B,IAAlB0e,EAAqB1mB,QAASslB,EAAoB5lB,WAAS,EAA7E,SACGX,EAAgB,IAAK,yBAG1B,8BACE,cAACmsB,GAAD,CAAkB1vB,KAAM2vB,EAAxB,SAAuCpsB,EAAgB,IAAK,2BAd9D,cAAC,GAAD,UACE,cAAC,GAAD,OC1BOqsB,GAdW,SAACC,GACzB,IAAKA,EACH,MAAO,GAGT,IAAMhJ,EAAO,IAAItB,KAAKsK,GAEhBC,EAAajJ,EAAKkJ,eAIxB,MAAO,CAAEvJ,MAHKK,EAAKE,cAGHiJ,YAFIF,EAAW/kC,MAAM,KAAKklC,OAAO,EAAG,GAAG7Q,KAAK,OCJxDre,GAAUxV,KAAOM,IAAV,8EAkBEqkC,GAZG,SAAC,GAAmB,IAAjBC,EAAgB,EAAhBA,UAAgB,EACJP,GAAkBO,GAAzCH,EAD2B,EAC3BA,YAAaxJ,EADc,EACdA,MAErB,OACE,cAAC,GAAD,UACE,eAAC,IAAD,CAAMzd,SAAS,OAAf,UACGinB,EADH,KACkBxJ,EADlB,gBCFAzF,GAAcx1B,KAAOM,IAAV,sIAOXukC,GAAwB7kC,aAAOikC,GAAPjkC,CAAH,wDACR,SAAC4U,GAAD,OAAWA,EAAM1U,MAAMme,QAAQ,MAwDnCymB,GArDmD,SAAC,GAAc,IAAZ9lC,EAAW,EAAXA,KAC7DgZ,EAAkBrY,eAGtBykC,EAQEplC,EARFolC,aACAW,EAOE/lC,EAPF+lC,cACAT,EAMEtlC,EANFslC,YACAlU,EAKEpxB,EALFoxB,cACA4U,EAIEhmC,EAJFgmC,eACAC,EAGEjmC,EAHFimC,aACAC,EAEElmC,EAFFkmC,aACAC,EACEnmC,EADFmmC,SAGF,OACGnmC,EAAK4mB,OACN5mB,GACE,qCACE,cAAC,IAAD,UACE,eAAC,GAAD,WACE,cAAC,GAAD,CAAW4lC,UAAWN,IACtB,eAAC,IAAD,CAASpmB,KAAK,KAAKtF,GAAG,OAAtB,oBACUwX,KAEV,cAACyU,GAAD,CACEX,eAAc,UAAKc,EAAe,GAApB,aAA2BA,EAAe,GAA1C,aAAiDA,EAAe,GAAhE,aAAuEA,EAAe,IACpG5hB,KAAMgiB,IAFR,SAIGptB,EAAgB,IAAK,qBAExB,cAAC,GAAD,CACEksB,eAAgBlsB,EAAgB,IAAD,UAASmtB,EAASjlB,iBAAlB,WAC/BkD,KAAMiiB,IAFR,SAIGrtB,EAAgB,IAAK,uBAI5B,eAAC,IAAD,WACE,cAAC,GAAD,CACEuZ,mBAAoB4T,EACpB5E,eAAgBwE,EAChBvE,iBAAkByE,EAClBxE,mBAAoByE,EACpBhF,UAAQ,IAEV,cAACoF,GAAD,CAAoBlB,aAAcA,EAAchU,cAAeA,WCtD1DmV,GAJqC,SAAC,GAAqB,IAAnB3f,EAAkB,EAAlBA,MAAO5mB,EAAW,EAAXA,KAC5D,OAAO,cAAC,IAAD,UAAO4mB,EAAMoe,QAAU,cAAC,GAAD,CAAoBpe,MAAOA,IAAY,cAAC,GAAD,CAAsB5mB,KAAMA,OCyBpFwmC,GA5BsB,WAAwC,IAAD,EACxCxkC,oBAAS,GAD+B,mBACnEykC,EADmE,KACxDC,EADwD,OAElD1kC,mBAAS,MAFyC,mBAEnEhC,EAFmE,KAE7D2mC,EAF6D,OAGhD3kC,mBAAS,MAHuC,mBAGnE4kB,EAHmE,KAG5DggB,EAH4D,KAIlEhM,EAA4Bh6B,qBAAW0hC,IAAvC1H,wBAqBR,OAnBAz4B,qBAAU,WAcJy4B,EAA0B,GAbF,uCAAG,4BAAAt4B,EAAA,sEAE3BokC,GAAa,GAFc,SAIH5C,GAAoBlJ,GAJjB,OAIrBiM,EAJqB,OAK3BF,EAAQE,GALmB,gDAO3BD,EAAS,EAAD,IAPmB,yBAS3BF,GAAa,GATc,4EAAH,oDAc1BI,KAED,CAAClM,EAAyB+L,EAASD,EAAcE,IAE7C,CAAEH,YAAWzmC,OAAM46B,0BAAyBhU,UC1B/CpQ,GAAUxV,KAAOM,IAAV,4EAKP0+B,GAAiBh/B,aAAOi/B,IAAPj/B,CAAH,+IA8EL+lC,GAvEgB,WAAO,IAAD,EACT/kC,mBAAS,CACjC6kC,UAAW,KACXjgB,MAAO,CAAEoe,QAAS,KAAMH,KAAM,MAC9BmC,eAAe,EACfP,WAAW,IALsB,mBAC5B17B,EAD4B,KACrBk8B,EADqB,OAO2BT,KAAhDU,EAPqB,EAO3BlnC,KAA0B46B,EAPC,EAODA,wBAC5B5hB,EAAkBrY,eAChBkmC,EAA+C97B,EAA/C87B,UAAWjgB,EAAoC7b,EAApC6b,MAAOogB,EAA6Bj8B,EAA7Bi8B,cAAeP,EAAc17B,EAAd07B,UAEzCtkC,qBAAU,WACJ+kC,GACFD,GAAS,SAACjyB,GAAD,mBAAC,eAAoBA,GAArB,IAAgCyxB,WAAW,EAAOO,eAAe,EAAMH,UAAWK,SAE5F,CAACA,EAAoBD,IAExB,IAAME,EAAY,uCAAG,WAAO/V,GAAP,SAAA9uB,EAAA,sDACnB2kC,GAAS,SAACjyB,GAAD,mBAAC,eACLA,GADI,IAEPyxB,WAAW,OAGb3C,GAAoB1S,GACjBjd,MAAK,SAACnU,GACDA,EAAK4mB,MACPqgB,GAAS,SAACjyB,GAAD,mBAAC,eACLA,GADI,IAEP4R,MAAO,CACLoe,QAAShsB,EAAgB,IAAK,kDAC9B6rB,KAAM,gBAER4B,WAAW,EACXO,eAAe,OAGjBC,GAAS,SAACjyB,GAAD,mBAAC,eACLA,GADI,IAEP4R,MAAO,CAAEoe,QAAS,KAAMH,KAAM,MAC9BgC,UAAW7mC,EACXymC,WAAW,EACXO,eAAe,UAIpB3yB,OAAM,WACL4yB,GAAS,SAACjyB,GAAD,mBAAC,eACLA,GADI,IAEP4R,MAAO,CAAEoe,QAAShsB,EAAgB,IAAK,uBAAwB6rB,KAAM,OACrE4B,WAAW,EACXO,eAAe,UAjCF,2CAAH,sDAsClB,OACE,eAAC,GAAD,WACE,cAAC,GAAD,CAAqB1C,qBAAsB1J,EAAyB2J,SAAU4C,KAC5EH,GAAiBP,EACjB,cAAC,IAAD,UACE,cAAC,GAAD,UACE,cAAC,GAAD,QAIJ,cAAC,GAAD,CAAe7f,MAAOA,EAAO5mB,KAAM6mC,QCjFrCO,GAAOC,gBAAK,kBAAM,uDAElBC,GAAetmC,KAAOM,IAAV,sIAgHHimC,GAxGgB,WAAO,IAAD,EACG3mC,qBAAW0hC,IAAzCxH,EAD2B,EAC3BA,YAAaD,EADc,EACdA,aACf2M,EAAe,SAACC,GACpB,OAAO3M,EACJn0B,KAAI,SAAC+gC,GACJ,OAAOA,EAAUD,MAElBE,WAGCC,EAAa,SAAC,GAClB,MAAO,CACLlO,YAF8B,EAAZpb,MAGlBupB,MAAM,EACNC,YAAa,EACbC,YAAa,EACbC,eAAgB,KAIdC,EAAY,CAChBC,OAAQV,EAAa,iBACrBW,SAAU,CAAC,aAEP5yB,MAAO,YACPvV,KAAMwnC,EAAa,YACnBY,QAAS,eACNR,EAAW,CAAEtpB,MAAO,aALjB,aAQN/I,MAAO,SACPvV,KAAMwnC,EAAa,UACnBY,QAAS,iBACNR,EAAW,CAAEtpB,MAAO,eAKvB+pB,EAAa,SAAC,GAClB,MAAO,CACLC,eAAgB,QAChBC,UAAW,CAAE1hB,SAAS,GACtB2hB,MAAO,CACLC,WAAY,oBACZC,UANwC,EAAxBpqB,MAOhBE,SAAU,GACVmN,WARwC,EAAjBA,WASvBgd,YAAa,EACbC,aAAa,EACbC,gBAAiB,GACjBC,aAAc,SAACpmC,GACb,OAAOA,EAAMwe,qBAMf9E,EAAU,CACd2sB,OAAQ,CAAEliB,SAAS,GACnBmiB,OAAQ,CACNC,MAAO,CAAC,aAEJpE,KAAM,SACNhe,SAAS,EACTqiB,SAAU,OACV1uB,GAAI,eACD6tB,EAAW,CAAE/pB,MAAO,UAAWqN,WAAY,OAN3C,aASHkZ,KAAM,SACNhe,SAAS,EACTqiB,SAAU,QACV1uB,GAAI,iBACD6tB,EAAW,CAAE/pB,MAAO,UAAWqN,WAAY,QAGlDwd,MAAO,CAAC,eAEDd,EAAW,CAAE/pB,MAAO,UAAWqN,WAAY,QAMtD,OACE,qCACGkP,GACC,cAACyM,GAAD,UACE,cAAC,IAAD,qCAGFzM,GAAgBC,EAAYh6B,OAAS,EACrC,cAAC,WAAD,CAAUlB,SAAU,6CAApB,SACE,cAACwnC,GAAD,CAAMpnC,KAAMioC,EAAW7rB,QAASA,EAASyoB,KAAK,WAGhD,cAACyC,GAAD,UACE,cAAC,GAAD,UC5GJ9wB,GAAUxV,KAAOM,IAAV,yEAKP8nC,GAAapoC,KAAOM,IAAV,gGAMV+nC,GAASroC,KAAOM,IAAV,wIAIU,gBAAGgoC,EAAH,EAAGA,WAAH,SAAepoC,MAAkBqR,OAAO+2B,EAAa,aAAe,cAqB3EC,GAjBA,WACb,IAAMvwB,EAAkBrY,eAExB,OACE,eAAC,GAAD,WACE,eAACyoC,GAAD,WACE,cAACC,GAAD,CAAQC,YAAU,IAClB,cAAC,IAAD,UAAOtwB,EAAgB,IAAK,kBAE9B,eAACowB,GAAD,WACE,cAACC,GAAD,IACA,cAAC,IAAD,UAAOrwB,EAAgB,IAAK,mBCfrBwwB,GAdwB,WACrC,IAAMxwB,EAAkBrY,eAExB,OACE,cAAC,IAAD,UACE,eAAC,IAAD,WACE,cAAC,IAAD,CAASue,KAAK,KAAd,SAAoBlG,EAAgB,IAAK,aACzC,cAAC,GAAD,IACA,cAAC,GAAD,UCRFmc,GAAQn0B,aAAOo0B,IAAPp0B,CAAH,iQAQP,qBAAGE,MAAkBC,aAAaC,MAMlC,qBAAGF,MAAkBC,aAAaE,MAOhCuiC,GAA0B5iC,KAAOM,IAAV,4EAKvBmoC,GAAoBzoC,KAAOM,IAAV,kGAoBRooC,GAdiB,WAC9B,OACE,eAAC,GAAD,WACE,cAAC,GAAD,IACA,eAAC,GAAD,WACE,cAAC,GAAD,IACA,cAACD,GAAD,UACE,qBAAKpwB,IAAI,sBAAsBG,IAAI,2BC/BvChD,GAAUxV,KAAOM,IAAV,oJAkEEqoC,GA1DW,WACxB,IAAM3c,EAAkBtR,KAChBnS,EAAYsM,cAAZtM,QACFyP,EAAkBrY,eAHM,EAIQqB,mBAAS,GAJjB,mBAIvBulB,EAJuB,KAIVqiB,EAJU,OAKQ5nC,mBAAS,IALjB,mBAKvB84B,EALuB,KAKV+O,EALU,OAMU7nC,oBAAS,GANnB,mBAMvB64B,EANuB,KAMTiP,EANS,OAO0B9nC,mBAAS,GAPnC,mBAOvBqgC,EAPuB,KAOD0H,EAPC,OAQgC/nC,mBAAS,GARzC,mBAQvB44B,EARuB,KAQEoP,EARF,KAU9B7nC,qBAAU,WACR4hC,MAAM,mDACH5vB,MAAK,SAAC6vB,GAAD,OAAcA,EAASC,UAC5B9vB,MAAK,SAACnU,GAAD,OAAU6pC,EAAe7pC,MAC9BqU,OAAM,WACLy1B,GAAgB,QAEnB,IAEH3nC,qBAAU,WASJoH,GAAWyjB,GARa,uCAAG,8BAAA1qB,EAAA,sEACTgtB,GAAqBtC,GADZ,OACvBvhB,EADuB,OAEvBw+B,EAAwBx+B,EAAQ,EAEtCs+B,EAAwBt+B,GACxBu+B,EAA2BC,GALE,2CAAH,oDAS1BC,KAED,CAAC3gC,EAASyjB,IAMb,OACE,qCACE,cAAC,GAAD,IACA,eAACjsB,GAAA,EAAD,WACE,cAAC,GAAD,UACE,eAAC,IAAD,CAAYwmB,YAAaA,EAAatN,QAT1B,SAACxO,GACnBm+B,EAAen+B,IAQmDyT,KAAK,KAAKjH,QAAQ,SAA9E,UACE,cAAC,IAAD,UAAiBe,EAAgB,IAAK,eACtC,cAAC,IAAD,UAAiBA,EAAgB,IAAK,qBAG1C,cAAC,GAAD,IACA,cAACspB,GAAuB7/B,SAAxB,CACEC,MAAO,CAAEm4B,eAAcC,cAAaF,0BAAyByH,wBAD/D,SAGmB,IAAhB9a,EAAoB,cAAC,GAAD,IAAmB,cAAC,GAAD,aCpE5C/Q,GAAUxV,KAAOM,IAAV,6HAwBE6oC,GAjBO,WAAO,IAAD,EACD/iB,cAAjBC,EADkB,EAClBA,IAAKC,EADa,EACbA,QAEb,OACE,cAAC,GAAD,UACE,eAAC,IAAD,CAAYC,YAAcD,EAAc,EAAJ,EAAOpI,KAAK,KAAKjH,QAAQ,SAA7D,UACE,cAAC,IAAD,CAAgBwB,GAAIqJ,IAAMK,GAAE,UAAKkE,GAAjC,sBAGA,cAAC,IAAD,CAAgB5N,GAAIqJ,IAAMK,GAAE,UAAKkE,EAAL,YAA5B,6BCfF/E,GAAQthB,aAAOkyB,KAASC,MAAM,CAAE1Z,GAAI,KAAMyF,KAAM,MAAxCle,CAAH,sEACA,qBAAGE,MAAkBqR,OAAO0rB,aAIjCC,GAAQl9B,aAAOod,IAAPpd,CAAH,2FAMLm9B,GAAan9B,KAAOM,IAAV,8KAmBDkmB,GAbF,WACX,IAAMxO,EAAkBrY,eAExB,OACE,cAAC,GAAD,UACE,eAACM,GAAA,EAAD,WACE,cAAC,GAAD,UAAQ+X,EAAgB,IAAK,iCAC7B,cAAC,GAAD,UAAQA,EAAgB,IAAK,6DCpB/BoxB,GAAsBppC,aAAO0nB,IAAP1nB,CAAH,+DAMnBqpC,GAAOrpC,aAAOkyB,KAASC,MAAM,CAAE1Z,GAAI,KAAMyF,KAAM,MAAxCle,CAAH,4EAKJ43B,GAAc53B,aAAOod,IAAPpd,CAAH,wFACN,qBAAGE,MAAkBqR,OAAOoG,cAiBxB2xB,GAZqC,SAAC,GAA+B,IAA7BC,EAA4B,EAA5BA,MAAOxjC,EAAqB,EAArBA,KAAM0T,EAAe,EAAfA,SAClE,OACE,eAAC2vB,GAAD,CAAqBxwB,GAAG,OAAOkN,WAAW,SAA1C,UACE,qBAAKzN,IAAG,uBAAkBkxB,EAAlB,QAA+B/wB,IAAK+wB,EAAOjxB,MAAM,OAAOC,OAAO,SACvE,gCACE,cAAC8wB,GAAD,UAAOtjC,IACP,cAAC,GAAD,UAAc0T,WCzBhB+vB,GAAiBxpC,KAAOM,IAAV,uDAYLmpC,GARyC,SAAC,GAAkB,IAAhBC,EAAe,EAAfA,SACzD,OACE,cAACF,GAAD,UACE,cAAC,IAAD,CAAU1M,YAAa4M,OCLvBC,GAA2B3pC,KAAOM,IAAV,4EAKxBmnB,GAAUznB,KAAOM,IAAV,qIACS,qBAAGJ,MAAkBqR,OAAOmnB,eAO5CkR,GAAe5pC,KAAO4hB,OAAV,6MAGP,qBAAG1hB,MAAkBqR,OAAO4N,WASjCyY,GAAc53B,aAAOod,IAAPpd,CAAH,+DACN,qBAAGE,MAAkBqR,OAAOoG,cAC1B,qBAAGuL,OAAuB,QAAU,UAoBlC2mB,GAjB+C,SAAC,GAA2C,IAAD,IAAxCC,qBAAwC,SAAlBpwB,EAAkB,EAAlBA,YAAkB,EAC3E1Y,mBAAS8oC,GADkE,mBAChG5mB,EADgG,KACxFC,EADwF,KAEjGnL,EAAkBrY,eAIxB,OACE,eAACgqC,GAAD,WACE,cAAC,GAAD,IACA,cAACC,GAAD,CAAc3wB,QALE,kBAAMkK,GAAWD,IAKjC,SACYlL,EAAgB,IAAzBkL,EAA8B,OAA+B,UAEhE,cAAC,GAAD,CAAaA,OAAQA,EAArB,SAA8BxJ,QCnC9BqwB,GAAuB/pC,KAAOM,IAAV,uDAIpB0pC,GAAOhqC,KAAOM,IAAV,wFAEC,qBAAGJ,MAAkBqR,OAAO0rB,aAIjCgN,GAAUjqC,aAAOod,IAAPpd,CAAH,2CA0DEkqC,GAtDuC,SAAC,GAShD,IARLvwB,EAQI,EARJA,WACAC,EAOI,EAPJA,WACAC,EAMI,EANJA,WACAC,EAKI,EALJA,YACAC,EAII,EAJJA,YACAC,EAGI,EAHJA,eACAmwB,EAEI,EAFJA,cACAC,EACI,EADJA,YAEMpyB,EAAkBrY,eAExB,OACE,qCACE,eAACoqC,GAAD,WACE,eAACC,GAAD,WACE,cAACC,GAAD,UAAUjyB,EAAgB,IAAK,iBAC/B,eAAC,IAAD,WACG2B,EADH,IAEE,cAAC,IAAD,CACElF,KAAK,sDACLiN,OAAO,QACP2oB,IAAI,sBACJhS,GAAG,MACHpgB,MAAO,CAAE4N,QAAS,UALpB,SAOGjM,UAIP,eAACowB,GAAD,WACE,cAACC,GAAD,UAAUjyB,EAAgB,IAAK,cAC/B,cAAC,IAAD,UAAO6B,OAET,eAACmwB,GAAD,WACE,cAACC,GAAD,UAAUjyB,EAAgB,IAAK,oBAC/B,cAAC,IAAD,UAAO8B,OAET,eAACkwB,GAAD,WACE,cAACC,GAAD,UAAUjyB,EAAgB,IAAK,wBAC/B,cAAC,IAAD,UAAO+B,OAET,eAACiwB,GAAD,WACE,cAACC,GAAD,UAAUjyB,EAAgB,IAAK,gCAC/B,cAAC,IAAD,oBAAUoyB,EAAY9pC,IAAI6pC,GAAe1iC,MAAM,KAAKqP,QAAQ,GAA5D,aAGJ,cAAC,IAAD,CAAcrC,KAAMuF,EAAgB/B,MAAO,CAAEqyB,OAAQ,QAArD,SACGtyB,EAAgB,IAAK,2BChExB2K,GAAU3iB,KAAOM,IAAV,8IAQPiqC,GAAYvqC,KAAOM,IAAV,8GACJ,qBAAGJ,MAAkBqR,OAAO0rB,aAkCxBuN,GA5BiC,SAAC,GAAsE,IAApE/E,EAAmE,EAAnEA,UAAWgF,EAAwD,EAAxDA,OAAQC,EAAgD,EAAhDA,kBAAmBC,EAA6B,EAA7BA,gBAAiBz0B,EAAY,EAAZA,MAClG8B,EAAkBrY,eAClBirC,EAA4B,gBAAXH,EAA2BC,EAAoBC,EAChEE,EAAYnQ,GAAekQ,GAC3BE,EAAoB,gBAAXL,EAA2B,QAAU,SAEpD,OAAIhF,EACK,cAAC,GAAD,UAAUztB,EAAgB,IAAK,gBAGpC4yB,GAAkB,EAElB,cAAC,GAAD,UACE,cAAC,IAAD,CAAMjtB,MAAI,EAAV,SAAY3F,EAAgB,IAAK,iBAMrC,eAAC,GAAD,WACE,cAACuyB,GAAD,oBAAeM,EAAU7P,KAAzB,cAAmC6P,EAAU5P,MAA7C,cAAwD4P,EAAU3P,QAAlE,mBAAoF4P,KACpF,cAAC,IAAD,CAAMr2B,KAAI,qEAAgEyB,GAASwL,OAAO,QAAQ2oB,IAAI,sBAAsBhS,GAAG,MAA/H,0BCxCA+K,GAAgBpjC,KAAOM,IAAV,sMAKA,qBAAGJ,MAAkB8e,MAAMC,WAC5B,qBAAG/e,MAAkBqR,OAAOmnB,eAwB/BqS,GApBsB,SAAC,GAA8D,IAA5DrpC,EAA2D,EAA3DA,MAAO6S,EAAoD,EAApDA,MAAOy2B,EAA6C,EAA7CA,YAAa/xB,EAAgC,EAAhCA,QAAgC,IAAvBgI,gBAAuB,SACjG,OACE,gCACG1M,GACC,cAAC,IAAD,CAAMiJ,SAAS,OAAOF,MAAM,aAA5B,SACG/I,IAGL,eAAC,GAAD,WACE,cAAC,IAAD,CAAMoJ,MAAI,EAACH,SAAS,OAApB,SACG9b,IAEH,cAAC,IAAD,CAAQuX,QAASA,EAASgI,SAAUA,EAApC,SACG+pB,WCtBL/sB,GAAeje,KAAOM,IAAV,gDACP,SAACsU,GAAD,OAAWA,EAAM1U,MAAMme,QAAQ,MAGpCqB,GAA8B1f,KAAOM,IAAV,yEAK3Bqf,GAAgB3f,KAAOM,IAAV,gLAER,SAACsU,GAAD,OAAWA,EAAM1U,MAAMqR,OAAO4N,WAQnCS,GAAoB5f,KAAO6f,KAAV,mEACZ,SAACjL,GAAD,OAAWA,EAAM1U,MAAMqR,OAAO4N,WA8B1B8rB,GA1BuB,SAAC,GAAmD,IAAjDlrB,EAAgD,EAAhDA,IAAKC,EAA2C,EAA3CA,OAAQV,EAAmC,EAAnCA,SAAUW,EAAyB,EAAzBA,YAAave,EAAY,EAAZA,MACrEsW,EAAkBrY,eAExB,OACE,gCACE,cAAC,GAAD,CACE0f,aACE,eAAC,GAAD,WACE,cAAC,GAAD,UAAoBW,IACpB,cAAC,GAAD,IACA,8BACE,cAAC,IAAD,CAAQ9B,KAAK,KAAKjF,QAASgH,EAA3B,SACGjI,EAAgB,IAAK,cAK9BsH,SAAUA,EACVC,YAAY,IACZ7d,MAAOA,IAET,cAAC,GAAD,UAAgBsW,EAAgB,IAAD,UAAS+H,EAAIG,iBAAb,YAAiCF,EAAjC,qBCEtBkrB,GA5C0B,SAAC,GAAwD,IAAtDjxB,EAAqD,EAArDA,SAAUK,EAA2C,EAA3CA,SAAUJ,EAAiC,EAAjCA,gBAAiBmG,EAAgB,EAAhBA,UAAgB,EACrErf,mBAAS,IAD4D,mBACxFU,EADwF,KACjFypC,EADiF,OAE7DnqC,oBAAS,GAFoD,mBAExFwf,EAFwF,KAE7EC,EAF6E,KAGvFlY,EAAYsM,cAAZtM,QACFkO,EAAUI,GAAsByR,GAAgBpO,IAEtD,OACE,eAAC,IAAD,CAAO8G,MAAK,qBAAgB/G,GAAYoG,UAAWA,EAAnD,UACE,cAAC,GAAD,CACE3e,MAAOA,EACP4d,SAAU,SAACuB,GAAD,OAAOsqB,EAAStqB,EAAEC,cAAcpf,QAC1Cse,OAAQ/F,EACR8F,IAAKtJ,EACLwJ,YAAa,kBAAMkrB,EAAS10B,EAAQpO,eAEtC,eAAC,IAAD,CAAMkrB,eAAe,gBAAgB3a,GAAG,OAAxC,UACE,cAAC,IAAD,CAAQD,WAAS,EAAC1B,QAAQ,YAAYgC,QAASoH,EAAW0V,GAAG,MAA7D,oBAGA,cAAC,IAAD,CACEpd,WAAS,EACTsI,SAAUT,EACVvH,QAAO,sBAAE,sBAAA3X,EAAA,6DACPmf,GAAa,GADN,SAEDnG,EAASrU,QACZ8V,QAAQ,IAAIzU,IAAU5F,GAAO+F,MAAM,IAAIH,IAAU,IAAIE,IAAI,KAAKa,YAC9DmT,KAAK,CAAEC,KAAMlT,IAJT,OAKPkY,GAAa,GACbJ,IANO,2CAHX,wBAeF,cAAC,IAAD,CACE5L,KAAK,wFACLwD,MAAO,CAAEqyB,OAAQ,QAFnB,uBAIUrwB,SC+DDmxB,GA7F4B,SAAC,GAQrC,IAPL3mC,EAOI,EAPJA,QACAwV,EAMI,EANJA,SACAC,EAKI,EALJA,gBACAI,EAII,EAJJA,SACAmwB,EAGI,EAHJA,OACAN,EAEI,EAFJA,cACAhjC,EACI,EADJA,cACI,EAC8BnG,oBAAS,GADvC,mBACGwf,EADH,KACcC,EADd,OAEoDzf,mBAAS,IAAIsG,IAAU,IAF3E,mBAEG+jC,EAFH,KAEyBC,EAFzB,OAG4BtqC,mBAAS,CAAE8N,OAAQ,EAAGy8B,SAAS,IAH3D,mBAGG38B,EAHH,KAGa48B,EAHb,KAKIjjC,EAAYsM,cAAZtM,QACFkjC,EAAuBjxB,GAASN,GAChC/O,EjCPuB,SAACugC,EAAyBC,EAAwBC,GAAsB,IAC7FrjC,EAAiCsM,cAAjCtM,QAD4F,EAElEvH,mBAAS,MAFyD,mBAE7FmK,EAF6F,KAElFm0B,EAFkF,KAgBpG,OAZAn+B,qBAAU,YACG,uCAAG,4BAAAG,EAAA,+EAEQoqC,EAAczlC,QAAQkF,UAAU5C,EAASojC,GAAgB/lC,OAFjE,OAEJQ,EAFI,OAGVk5B,EAAa,IAAIh4B,IAAUlB,IAHjB,gDAKVk5B,EAAa,MALH,yDAAH,oDAQXyD,KACC,CAACx6B,EAASojC,EAAgBD,EAAeE,IAErCzgC,EiCTW0gC,CAAgBJ,EAAsBhnC,EAAS+b,GAC3D6D,E7F2BqB,SAACqnB,EAAyBC,GAA4B,IACzEpjC,EAAYsM,cAAZtM,QAYR,OAXkBsU,sBAAW,sBAAC,4BAAAvb,EAAA,+EAEToqC,EAAczlC,QAC5BiV,QAAQywB,EAAgBtwB,UAAOC,UAAUC,YACzCC,KAAK,CAAEC,KAAMlT,IAJU,cAEpBsT,EAFoB,yBAKnBA,GALmB,0DAOnB,GAPmB,yDAS3B,CAACtT,EAASojC,EAAgBD,I6FtCXI,CAAcL,EAAsBhnC,GARlD,EAS+B6gB,YACjC,cAAC,GAAD,CAAiBrL,SAAUA,EAAUK,SAAUA,EAAUJ,gBAAiBA,KADrE6xB,EATH,oBA2BJ,GAdA5qC,qBAAU,WASJoH,GARO,uCAAG,8BAAAjH,EAAA,kEACQgG,IADR,SACwBgT,EAASrU,QAAQ+lC,kBAAkBzjC,GAAS3C,OADpE,0BACN6Q,EADM,wBAEW6D,EAASrU,QAAQ2I,SAASrG,GAAS3C,OAF9C,OAENqmC,EAFM,OAIZT,EAAYS,GACZX,EAAwB70B,GALZ,4CAAH,oDASTssB,KAED,CAACx6B,EAAS+R,EAASrU,QAASua,IAEb,OAAdrV,EACF,OAAO,KAGT,IAAM6iB,EAAK,uCAAG,sBAAA1sB,EAAA,6DACZmf,GAAa,GADD,SAENnG,EAASrU,QAAQ8F,UAAUyP,KAAK,CAAEC,KAAMlT,IAFlC,OAGZkY,GAAa,GAHD,2CAAH,qDAKLvU,EAAwB,aAAXu+B,EACbyB,EAA4B,IAAI5kC,IAAUsH,EAASE,QAAQxO,IAAI6pC,GAAe1iC,MAAM,KAE1F,OAAI0D,GAAa,EAEb,cAAC,IAAD,CACEwN,WAAS,EACTsI,SAAUT,GAAatU,EACvB+M,QAAO,sBAAE,sBAAA3X,EAAA,sEAELmf,GAAa,GAFR,SAGC4D,IAHD,OAIL5D,GAAa,GAJR,gDAMLA,GAAa,GACb1D,QAAQ6I,MAAR,MAPK,yDAHX,qBAoBF,qCACE,cAAC,GAAD,CACE3E,SAAUT,GAAa5R,EAAS28B,QAChCP,YAAa9+B,EAAa,QAAU,aACpCqI,MAAOrI,EAAa,uBAAH,6BAAkD+N,EAAlD,KACjBvY,MAEEwK,EACI0C,EAAS28B,QACP,UACA/0B,GAAiB60B,EAAsBlkC,GAAe2P,QAAQ,GAChEN,GAAiB,IAAIlP,IAAUsH,EAASE,SAASgI,QAAQ,GAE/DmC,QAAS/M,EAAa8hB,EAAQ+d,IAEhC,cAAC,IAAD,CAAMvuB,SAAS,OAAOF,MAAM,aAA5B,SACGpR,EAAU,gEAEJggC,EAA0Bp1B,QAAQ,GAF9B,oBCtFbq1B,GAAgBnsC,aAAOqX,IAAPrX,CAAH,gOACG,gBAAGupC,EAAH,EAAGA,MAAH,kCAAoCA,EAApC,gBAUhB6C,GAAY,SAACC,EAAsBt/B,EAAoBC,GAC3D,OAAIq/B,EAAet/B,EACV,cAGLs/B,GAAgBt/B,GAAcs/B,GAAgBr/B,EACzC,OAGLq/B,EAAer/B,EACV,WAGF,MAuIMs/B,GAxHyB,SAAC,GAAa,IAAXC,EAAU,EAAVA,IAEvC/yB,EAeE+yB,EAfF/yB,GACA/U,EAcE8nC,EAdF9nC,QACAsB,EAaEwmC,EAbFxmC,KACA0T,EAYE8yB,EAZF9yB,SACAC,EAWE6yB,EAXF7yB,YACAC,EAUE4yB,EAVF5yB,WACAC,EASE2yB,EATF3yB,WACAC,EAQE0yB,EARF1yB,WACAC,EAOEyyB,EAPFzyB,YACAC,EAMEwyB,EANFxyB,YACAC,EAKEuyB,EALFvyB,eACAC,EAIEsyB,EAJFtyB,SACAC,EAGEqyB,EAHFryB,gBACA/S,EAEEolC,EAFFplC,cACAgT,EACEoyB,EADFpyB,mBAhBiD,EAkBzBnZ,mBAAS,CACjCykC,WAAW,EACXgF,OAAQ,KACRznB,gBAAiB,EACjB0nB,kBAAmB,EACnBhB,SAAU,EACViB,gBAAiB,EACjBR,cAAe,IAAI7iC,IAAU,GAC7B8iC,YAAa,IAAI9iC,IAAU,GAC3BklC,cAAe,EACfC,YAAa,IA5BoC,mBAkB5C1iC,EAlB4C,KAkBrCk8B,EAlBqC,KA8B3C19B,EAAYsM,cAAZtM,QACF+R,E9G5DsB,SAAC7V,GAE7B,OAAO4V,GADSkyB,GACW9nC,G8G0DVioC,CAAejoC,GAE1B4nC,EAAe91B,KACfyB,EAAkBrY,eAElBgtC,EAhDmB,SAAClC,EAAmBzyB,GAC7C,MAAe,gBAAXyyB,EACK,cAAC,IAAD,CAAYmC,aAAa,eAAeztC,KAAM6Y,EAAgB,IAAK,iBAG7D,SAAXyyB,EACK,cAAC,IAAD,CAAYmC,aAAa,UAAUztC,KAAM6Y,EAAgB,IAAK,eAGhE,KAuCQ60B,CAAmB9iC,EAAM0gC,OAAQzyB,GAEhD7W,qBAAU,YACW,uCAAG,kDAAAG,EAAA,sEAC6CkF,QAAQC,IAAI,CAC3E6T,EAASrU,QAAQ8G,aAAanH,OAC9B0U,EAASrU,QAAQ+G,WAAWpH,OAC5B0U,EAASrU,QAAQkkC,gBAAgBvkC,OACjC0U,EAASrU,QAAQmkC,cAAcxkC,SALb,mCACbmH,EADa,KACDC,EADC,KACSm9B,EADT,KACwBC,EADxB,KAQdoC,EAAgBp6B,SAASrF,EAAY,IACrC0/B,EAAcr6B,SAASpF,EAAU,IAEjCy9B,EAAS2B,GAAUC,EAAcG,EAAeC,GAChDK,EAAcL,EAAcD,EAI5B9C,EACJ2C,EAAeG,GACTH,EAAeG,GAAiBM,EAAe,KAC/CT,EAAelyB,IAAuBqyB,EAAgBryB,GAAuB,IAErF8rB,EAAS,CACPR,WAAW,EACXkF,gB5HlHsB,G4HwGlB3nB,EAAkBypB,EAAcJ,GAWpC3B,kB5HnHsB,G4HmHF8B,EAAgBH,GACpClC,cAAe,IAAI7iC,IAAU6iC,GAC7BC,YAAa,IAAI9iC,IAAU8iC,GAC3BK,SACAf,WACA1mB,kBACAwpB,gBACAC,gBA/BkB,4CAAH,qDAmCnBM,KACC,CAACV,EAAc/xB,EAAUH,EAAoB8rB,IAEhD,IAAM1uB,EAA4B,SAAjBxN,EAAM0gC,OACjBv+B,EAA8B,aAAjBnC,EAAM0gC,OAEzB,OACE,cAAC0B,GAAD,CAAe5C,MAAO/vB,EAAIwzB,OAAQL,EAAQp1B,SAAUA,EAApD,SACE,eAAC,IAAD,WACE,cAAC,GAAD,CAAegyB,MAAO/vB,EAAIzT,KAAMA,EAAM0T,SAAUA,IAChD,cAAC,GAAD,CAAiBiwB,SAAU3/B,EAAM2/B,WACjC,cAAC,GAAD,CACEjE,UAAW17B,EAAM07B,UACjBgF,OAAQ1gC,EAAM0gC,OACdC,kBAAmB3gC,EAAM2gC,kBACzBC,gBAAiB5gC,EAAM4gC,gBACvBz0B,MAAOqB,GAAYrL,EAAanC,EAAM0iC,YAAc1iC,EAAMyiC,iBAE1DjkC,GAAW,cAAC,GAAD,CAAcoQ,WAAS,KAClCpB,GAAYrL,IACZ,cAAC,GAAD,CACEzH,QAASA,EACTwV,SAAUA,EACVC,gBAAiBA,EACjBI,SAAUA,EACVmwB,OAAQ1gC,EAAM0gC,OACdN,cAAepgC,EAAMogC,cACrBhjC,cAAeA,IAGnB,cAAC,GAAD,CAAoBuS,YAAaA,IACjC,cAAC,GAAD,CACEC,WAAYA,EACZC,WAAYA,EACZC,WAAYA,EACZC,YAAaA,EACbC,YAAaA,EACbC,eAAgBA,EAChBmwB,cAAepgC,EAAMogC,cACrBC,YAAargC,EAAMqgC,oBCtKd9oB,GALDthB,aAAOkyB,KAASC,MAAM,CAAEjU,KAAM,MAA9Ble,CAAH,sEACA,qBAAGE,MAAkBqR,OAAO0rB,aCEjCgQ,GAAiBjtC,KAAOM,IAAV,iOACM,qBAAGJ,MAAkBqR,OAAOoG,cAOlD,qBAAGzX,MAAkBC,aAAaw+B,MACT,gBAAGuO,EAAH,EAAGA,SAAH,uBAA4BA,EAAW,EAAI,EAA3C,aAI7BD,GAAejvB,aAAe,CAC5BkvB,UAAU,GAGGD,I,MAAAA,MCdTE,GAAmBntC,aAAOo0B,IAAPp0B,CAAH,6NACI,qBAAGE,MAAkBqR,OAAOoG,cAOlD,qBAAGzX,MAAkBC,aAAaC,MAKhCgtC,GAAOptC,KAAOqtC,GAAV,yIACC,qBAAGntC,MAAkBqR,OAAOpS,QAYjCmuC,GAAYC,GAAWzuC,MAAK,SAACytC,GAAD,OAASA,EAAIh1B,YAqEhCi2B,GAnEH,WACV,IAAMx1B,EAAkBrY,eAExB,OACE,gCACE,cAAC8tC,GAAD,CAAUP,UAAQ,EAAlB,SACE,cAAC,GAAD,CAASX,IAAKe,OAEhB,eAACH,GAAD,WACE,gCACE,cAAC,GAAD,CAAO10B,GAAG,KAAV,SAAgBT,EAAgB,IAAK,sBACrC,eAAC,IAAD,CAASY,GAAG,OAAZ,UAAoBZ,EAAgB,IAAK,eAAzC,OACA,eAACo1B,GAAD,WACE,6BAAKp1B,EAAgB,IAAK,6BAC1B,6BAAKA,EAAgB,IAAK,gEAE5B,eAAC,IAAD,CAAMY,GAAG,OAAT,UACE,cAAC,IAAD,CAAcnE,KAAK,6JAA6JshB,GAAG,OAAnL,SACG/d,EAAgB,IAAK,cAExB,cAAC,IAAD,CAAcvD,KAAK,wFAAnB,SACGuD,EAAgB,IAAK,sBAG1B,eAAC,IAAD,CAASY,GAAG,OAAZ,UAAoBZ,EAAgB,IAAK,eAAzC,OACA,cAACo1B,GAAD,UACE,6BAAKp1B,EAAgB,IAAK,gFAE5B,eAAC,IAAD,CAASY,GAAG,OAAZ,UAAoBZ,EAAgB,IAAK,cAAzC,OACA,eAACo1B,GAAD,WACE,6BAAKp1B,EAAgB,IAAK,gEAC1B,6BAAKA,EAAgB,IAAK,cAE5B,cAAC,IAAD,CAAMS,GAAG,MAAMi1B,GAAG,OAAlB,SACE,cAAC,IAAD,CACEj1B,GAAG,IACHxB,QAAQ,YACRxC,KAAK,yBAHP,SAKGuD,EAAgB,IAAK,oBAI5B,gCACE,cAAC,IAAD,CAAOK,IAAI,qBAAqBG,IAAI,aAAaF,MAAO,IAAKC,OAAQ,IAAKohB,YAAU,IACpF,gCACE,cAAC,GAAD,CAAOlhB,GAAG,KAAV,SAAgBT,EAAgB,IAAK,kCACrC,cAAC,IAAD,CAAMY,GAAI,EAAV,SACGZ,EACC,IACA,gMAGJ,cAAC,IAAD,CACES,GAAG,IACHhE,KAAK,kDACLiE,UAAQ,EAHV,SAKGV,EAAgB,IAAK,kCCzF9B21B,GAAqBJ,GAAWjhC,QAAO,SAACigC,GAAD,OAAUA,EAAIh1B,YAY5Cq2B,GAVC,WACd,OACE,cAACH,GAAD,UACGE,GAAYhoC,KAAI,SAAC4mC,GAAD,OACf,cAAC,GAAD,CAAsBA,IAAKA,GAAbA,EAAI/yB,UCeXq0B,GAnBF,WAAO,IACVnnB,EAASN,cAATM,KAER,OACE,qCACE,cAAC,GAAD,IACA,eAACzmB,GAAA,EAAD,WACE,cAAC,GAAD,IACA,cAAC,IAAD,CAAO0nB,OAAK,EAACjB,KAAI,UAAKA,GAAtB,SACE,cAAConB,GAAD,MAEF,cAAC,IAAD,CAAOpnB,KAAI,UAAKA,EAAL,YAAX,SACE,cAAC,GAAD,aCCJqnB,GAAW1H,gBAAK,kBAAM,kCAI5B/+B,IAAUgN,OAAO,CACfoB,eAAgB,IAChBC,eAAgB,KAGlB,IAAMq4B,GAAgB,WAAO,IAAD,EACGn5B,cAArBtM,EADkB,EAClBA,QAASuM,EADS,EACTA,QASjB,OARA3T,qBAAU,YACHoH,GAAW0lC,OAAOr7B,aAAaC,QAAQ,kBAC1CiC,EAAQ,cAET,CAACvM,EAASuM,IAEb1E,KAGE,cAAC,WAAD,CAAUxR,SAAU,KAApB,SACC,eAAC,IAAD,WAEC,cAAC,IAAD,IACA,cAACsvC,GAAD,IACA,cAAC,GAAD,UACE,cAAC,WAAD,CAAUtvC,SAAU,cAAC,GAAD,IAApB,SACE,eAAC,IAAD,WACE,cAAC,IAAD,CAAO8nB,KAAK,IAAIiB,OAAK,EAArB,SACE,cAAC,GAAD,MAEF,cAAC,IAAD,CAAOjB,KAAK,SAAZ,SACE,cAAC,GAAD,MAEF,cAAC,IAAD,CAAOA,KAAK,SAAZ,SACE,cAAC,GAAD,MAEF,cAAC,IAAD,CAAOA,KAAK,WAAZ,SACE,cAAC,GAAD,MAEA,cAAC,IAAD,CAAOA,KAAK,OAAZ,SACA,cAAC,GAAD,MAED,cAAC,IAAD,CAAOynB,UAAWJ,kBAShBrtC,OAAM+iB,KAAKuqB,ICrEXI,eAAe,CAC5BC,UAAU1qC,EACV2qC,QAAS,CACPxrC,MAAOyrC,GACPnjC,MAAOojC,MC6BIC,GA1Ba,SAAC,GAAkB,IAAhB1tC,EAAe,EAAfA,SACvB2tC,EAAS1qC,IAEf,OACE,cAAC,IAAD,CAAU2qC,MAAOA,GAAjB,SACE,cAAC,GAAD,UACE,cAAC,GAAD,UACE,cAAC,IAAD,CACE5pC,QAASqN,SAASzO,UAClBirC,WAAY,CACVC,cAAe,CAAEH,UACjBI,SAJJ,SAOE,cAAC,GAAD,UACE,cAAC,EAAD,UACE,cAAC,IAAD,UAAgB/tC,iBCtBhCguC,IAASC,OACP,cAAC,IAAMC,WAAP,UACE,cAAC,GAAD,UACE,cAAC,GAAD,QAGJC,SAASC,eAAe,U,gCCX1B,6CAOMC,EAA4C,CAChD1wC,aAAc,GACdgU,gBAAiB,cAGN7S,EAAsBc,wBAAcyuC,K","file":"static/js/main.f3b82d5c.chunk.js","sourcesContent":["import { useContext } from 'react'\nimport { TranslationsContext } from '../contexts/Localisation/translationsContext'\n\nconst variableRegex = /%(.*?)%/\n\nconst replaceDynamicString = (foundTranslation: string, fallback: string) => {\n const stringToReplace = variableRegex.exec(foundTranslation)[0]\n // const indexToReplace = foundTranslation.split(' ').indexOf(stringToReplace)\n const fallbackValueAtIndex = fallback.split(' ')[0]\n return foundTranslation.replace(stringToReplace, fallbackValueAtIndex)\n}\n\nexport const getTranslation = (translations: Array, translationId: number, fallback: string) => {\n const foundTranslation = translations.find((translation) => {\n return translation.data.stringId === translationId\n })\n if (foundTranslation) {\n const translatedString = foundTranslation.data.text\n const includesVariable = translatedString.includes('%')\n if (includesVariable) {\n return replaceDynamicString(translatedString, fallback)\n }\n return translatedString\n }\n return fallback\n}\n\n// TODO: Replace instances where this is called directly with the \"useI18n\" hook.\n// Using this directly can lead to errors because \"useContext\" is not preserved between renders\n// @see https://reactjs.org/docs/hooks-rules.html\nexport const TranslateString = (translationId: number, fallback: string) => {\n const { translations } = useContext(TranslationsContext)\n if (translations[0] === 'error') {\n return fallback\n }\n if (translations.length > 0) {\n return getTranslation(translations, translationId, fallback)\n }\n return fallback\n}\n","import { useContext } from 'react'\nimport { TranslationsContext } from '../contexts/Localisation/translationsContext'\nimport { getTranslation } from '../utils/translateTextHelpers'\n\nconst useI18n = () => {\n const { translations } = useContext(TranslationsContext)\n\n return (translationId: number, fallback: string) => {\n if (translations[0] === 'error') {\n return fallback\n }\n if (translations.length > 0) {\n return getTranslation(translations, translationId, fallback)\n }\n return fallback\n }\n}\n\nexport default useI18n\n","import styled from 'styled-components'\nimport Container from './Container'\n\nconst Page = styled(Container)`\n min-height: calc(100vh - 64px);\n padding-top: 16px;\n padding-bottom: 16px;\n\n ${({ theme }) => theme.mediaQueries.sm} {\n padding-top: 24px;\n padding-bottom: 24px;\n }\n\n ${({ theme }) => theme.mediaQueries.lg} {\n padding-top: 32px;\n padding-bottom: 32px;\n }\n`\n\nexport default Page\n","import styled from 'styled-components'\n\nconst Container = styled.div`\n margin-left: auto;\n margin-right: auto;\n max-width: 992px;\n padding-left: 16px;\n padding-right: 16px;\n\n ${({ theme }) => theme.mediaQueries.sm} {\n padding-left: 24px;\n padding-right: 24px;\n }\n`\n\nexport default Container\n","export type IfoStatus = 'coming_soon' | 'live' | 'finished'\n\nexport interface Ifo {\n id: string\n isActive: boolean\n address: string\n name: string\n subTitle?: string\n description?: string\n launchDate: string\n launchTime: string\n saleAmount: string\n raiseAmount: string\n pizzaToBurn: string\n projectSiteUrl: string\n currency: string\n currencyAddress: string\n tokenDecimals: number\n releaseBlockNumber: number\n}\n\nexport enum QuoteToken {\n 'BNB' = 'BNB',\n 'PIZZA' = 'PIZZA',\n 'CHS' = 'CHS',\n 'USDT' = 'USDT',\n 'BUSD' = 'BUSD',\n 'HOTS' = 'HOTS',\n 'KP3RB' = 'KP3RB',\n 'PASTA' = 'PASTA',\n 'DAI' = 'DAI',\n 'ETH' = 'ETH',\n 'USDC' = 'USDC',\n 'CAKE' = 'CAKE',\n 'XCHS' = 'XCHS',\n 'tUSDT' = 'tUSDT',\n 'INT' = 'INT',\n 'COD' = 'COD',\n 'BFT' = 'BFT',\n 'RCHAP' = 'RCHAP',\n}\n\nexport enum PoolCategory {\n 'COMMUNITY' = 'Community',\n 'CORE' = 'Core',\n 'BINANCE' = 'Binance', // Pools using native BNB behave differently than pools using a token\n}\n\nexport interface Address {\n 97?: string\n 355113: string\n}\n\nexport interface FarmConfig {\n pid: number\n lpSymbol: string\n lpAddresses: Address\n tokenSymbol: string\n tokenAddresses: Address\n tokenDecimal?: number\n quoteTokenSymbol: QuoteToken\n quoteTokenAdresses: Address\n multiplier?: string\n isCommunity?: boolean\n dual?: {\n rewardPerBlock: number\n earnLabel: string\n endBlock: number\n }\n}\n\nexport interface PoolConfig {\n pastaId: number\n image?: string\n tokenName: string\n earnToken: string\n stakingTokenName: QuoteToken\n stakingLimit?: number\n stakingTokenAddress?: string\n contractAddress: Address\n poolCategory: PoolCategory\n projectLink: string\n tokenPerBlock: string\n sortOrder?: number\n harvest?: boolean\n isFinished?: boolean\n tokenDecimals: number\n}\n\nexport type Nft = {\n name: string\n description: string\n originalImage: string\n previewImage: string\n blurImage: string\n sortOrder: number\n bunnyId: number\n}\n","import React, { useState, useEffect } from 'react'\n\nconst FAST_INTERVAL = 10000\nconst SLOW_INTERVAL = 60000\n\nconst RefreshContext = React.createContext({ slow: 0, fast: 0 })\n\n// This context maintain 2 counters that can be used as a dependencies on other hooks to force a periodic refresh\nconst RefreshContextProvider = ({ children }) => {\n const [slow, setSlow] = useState(0)\n const [fast, setFast] = useState(0)\n\n useEffect(() => {\n const interval = setInterval(async () => {\n setFast((prev) => prev + 1)\n }, FAST_INTERVAL)\n return () => clearInterval(interval)\n }, [])\n\n useEffect(() => {\n const interval = setInterval(async () => {\n setSlow((prev) => prev + 1)\n }, SLOW_INTERVAL)\n return () => clearInterval(interval)\n }, [])\n\n return {children}\n}\n\nexport { RefreshContext, RefreshContextProvider }\n","import { useContext } from 'react'\nimport { RefreshContext } from 'contexts/RefreshContext'\n\nconst useRefresh = () => {\n const { fast, slow } = useContext(RefreshContext)\n return { fastRefresh: fast, slowRefresh: slow }\n}\n\nexport default useRefresh\n","export default {\n pizza: {\n 97: '',\n 355113: '0x7EcaaCA6eB73beeBCc2595dE864410dC50567B7F',\n },\n pasta: {\n 97: '',\n 355113: '0x420FfF77FC4adD3478030A895A175BcD56568BF0',\n },\n masterChef: {\n 97: '',\n 355113: '0x30CA643734CEc96F9202931A7b2A16B7c8aC6b85',\n },\n pastaChef: {\n 97: '',\n 355113: '0xBAc68Fea1dbc30270704c151EDe9e137685c21E4',\n },\n wbnb: {\n 97: '',\n 355113: '0x7938ACd297d53bD743c3926E3C24e7262C18AEc3',\n },\n lottery: {\n 97: '',\n 355113: '0x48ca6C7080F9099B5C9A452E237BF5fD28a3F608',\n },\n lotteryNFT: {\n 97: '',\n 355113: '0x88906e736d1BD9711c59d4F3820dA4414aeb7019',\n },\n mulltiCall: {\n 355113: '0x852FCcD0C50cAdCd3EbfBcb06a9373d759246Dd3',\n 97: '',\n },\n// busd: {\n// 355113: '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56',\n// 97: '',\n// },\n// chs: {\n// 355113: '0xaDD8A06fd58761A5047426e160B2B88AD3B9D464',\n// 97: '',\n// },\n// hots: {\n// 355113: '0x793766efcA4CEF8c55EE950E759AD6FF73D49c09',\n// 97: '',\n// },\n// kp3rb: {\n// 355113: '0x5EA29eEe799aA7cC379FdE5cf370BC24f2Ea7c81',\n// 97: '',\n// },\n// usdt: {\n// 355113: '0x55d398326f99059fF775485246999027B3197955',\n// 97: '',\n// },\n// usdc: {\n// 355113: '0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d',\n// 97: '',\n// },\n// dai: {\n// 355113: '0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3',\n// 97: '',\n// },\n// eth: {\n// 355113: '0x2170Ed0880ac9A755fd29B2688956BD959F933F8',\n// 97: '',\n// },\n// xchs: {\n// 355113: '0x9f51CAA2A1D1663fCa5bEFbFaf6C8acD8Ac9717a',\n// 97: '',\n// },\n// cpizza: {\n// 355113: '0xda3684575afa20309938434F3d40799B12868057',\n// 97: '',\n// },\n// pizzaRabbits: {\n// 355113: '',\n// 97: '',\n// },\n// ifo: {\n// 355113: '0xF90Ee56bCF8411f67FD0E44776b2f2A566Ef5bC2',\n// 97: '',\n// },\n tusdt: {\n 355113: '0xbd9A5c1d9fBbBEC84633ec9Cb046C01fB79809f2',\n 97: '',\n },\n int: {\n 355113: '0xa9449C8E42D5D49a2B5031A843747B342816dC13',\n 97: '',\n },\n fns: {\n 355113: '0xD89E302C8ac7AbAa4eC6016961e04692cccb6039',\n 97: '',\n },\n cod: {\n 355113: '0xc489778CD7DB9427a730F30BD66a57762DE96628',\n 97: '',\n },\n wbft: {\n 355113: '0x7938ACd297d53bD743c3926E3C24e7262C18AEc3',\n 97: '',\n },\n chap: {\n 355113: '0x9581aa53E089F4E8f0B3c566f00121DF7c83c83B',\n 97: '',\n },\n}\n","import contracts from './contracts'\nimport { FarmConfig, QuoteToken } from './types'\n\nconst farms: FarmConfig[] = [\n {\n pid: 0,\n lpSymbol: 'RCHAP',\n lpAddresses: {\n 97: '',\n 355113: '0x7EcaaCA6eB73beeBCc2595dE864410dC50567B7F',\n },\n tokenSymbol: 'CHOP',\n tokenAddresses: {\n 97: '',\n 355113: '0x420FfF77FC4adD3478030A895A175BcD56568BF0',\n },\n quoteTokenSymbol: QuoteToken.BFT,\n quoteTokenAdresses: contracts.wbft,\n },\n {\n pid: 1,\n lpSymbol: 'CHAP-BFT LP',\n lpAddresses: {\n 97: '',\n 355113: '0xF5f4e220B39713C47242A8530441085B8F28Fa23',\n },\n tokenSymbol: 'CHAP',\n tokenAddresses: {\n 97: '',\n 355113: '0x9581aa53E089F4E8f0B3c566f00121DF7c83c83B',\n },\n quoteTokenSymbol: QuoteToken.BFT,\n quoteTokenAdresses: contracts.wbft,\n },\n {\n pid: 2,\n lpSymbol: 'CHAP-tUSDT LP',\n lpAddresses: {\n 97: '',\n 355113: '0xdE509748A1Fd9d2d221b970a9bE2eC9cb90c4da3',\n },\n tokenSymbol: 'CHAP',\n tokenAddresses: {\n 97: '',\n 355113: '0x9581aa53E089F4E8f0B3c566f00121DF7c83c83B',\n },\n quoteTokenSymbol: QuoteToken.tUSDT,\n quoteTokenAdresses: contracts.tusdt,\n isCommunity: false,\n },\n{\n pid: 3,\n lpSymbol: 'INT-BFT LP',\n lpAddresses: {\n 97: '',\n 355113: '0x4d6B502Da58feF38833869EDC128Cc4fC45CE090',\n },\n tokenSymbol: 'INT',\n tokenAddresses: {\n 97: '',\n 355113: '0xa9449C8E42D5D49a2B5031A843747B342816dC13',\n },\n quoteTokenSymbol: QuoteToken.BFT,\n quoteTokenAdresses: contracts.wbft,\n },\n{\n pid: 4,\n lpSymbol: 'COD-BFT LP',\n lpAddresses: {\n 97: '',\n 355113: '0x9F3C5ed9b1A518Fe2c7C15A21B69A7152394bd45',\n },\n tokenSymbol: 'COD',\n tokenAddresses: {\n 97: '',\n 355113: '0xc489778CD7DB9427a730F30BD66a57762DE96628',\n },\n quoteTokenSymbol: QuoteToken.BFT,\n quoteTokenAdresses: contracts.wbft,\n },\n{\n pid: 5,\n lpSymbol: 'FNS-BFT LP',\n lpAddresses: {\n 97: '',\n 355113: '0x58E2B0eC1C2E0bDd93EE171F0AF1E0efE654a1fd',\n },\n tokenSymbol: 'FNS',\n tokenAddresses: {\n 97: '',\n 355113: '0xD89E302C8ac7AbAa4eC6016961e04692cccb6039',\n },\n quoteTokenSymbol: QuoteToken.BFT,\n quoteTokenAdresses: contracts.wbft,\n isCommunity: false,\n },\n{\n pid: 6,\n lpSymbol: 'tUSDT-BFT LP',\n lpAddresses: {\n 97: '',\n 355113: '0xac7cE1b7032391eABC55BB3438C76f9e6Fb04D43',\n },\n tokenSymbol: 'tUSDT',\n tokenAddresses: {\n 97: '',\n 355113: '0xbd9A5c1d9fBbBEC84633ec9Cb046C01fB79809f2',\n },\n quoteTokenSymbol: QuoteToken.BFT,\n quoteTokenAdresses: contracts.wbft,\n isCommunity: false,\n },\n]\n\nexport default farms","import random from 'lodash/random'\n\n// Array of available nodes to connect to\nconst nodes = [process.env.REACT_APP_NODE_1, process.env.REACT_APP_NODE_2, process.env.REACT_APP_NODE_3]\n\nconst getNodeUrl = () => {\n const randomIndex = random(0, nodes.length - 1)\n return nodes[randomIndex]\n}\n\nexport default getNodeUrl\n","import Web3 from 'web3'\nimport { HttpProviderOptions } from 'web3-core-helpers'\nimport { AbiItem } from 'web3-utils'\nimport { ContractOptions } from 'web3-eth-contract'\nimport getRpcUrl from 'utils/getRpcUrl'\n\nconst RPC_URL = getRpcUrl()\nconst httpProvider = new Web3.providers.HttpProvider(RPC_URL, { timeout: 10000 } as HttpProviderOptions)\n\n/**\n * Provides a web3 instance using our own private provider httpProver\n */\nconst getWeb3 = () => {\n const web3 = new Web3(httpProvider)\n return web3\n}\nconst getContract = (abi: any, address: string, contractOptions?: ContractOptions) => {\n const web3 = getWeb3()\n return new web3.eth.Contract((abi as unknown) as AbiItem, address, contractOptions)\n}\n\nexport { getWeb3, getContract, httpProvider }\n","import addresses from 'config/constants/contracts'\n\nconst chainId = process.env.REACT_APP_CHAIN_ID\n\nexport const getPizzaAddress = () => {\n return addresses.pizza[chainId]\n}\nexport const getPastaAddress = () => {\n return addresses.pasta[chainId]\n}\nexport const getMasterChefAddress = () => {\n return addresses.masterChef[chainId]\n}\nexport const getMulticallAddress = () => {\n return addresses.mulltiCall[chainId]\n}\nexport const getWbnbAddress = () => {\n return addresses.wbnb[chainId]\n}\nexport const getLotteryAddress = () => {\n return addresses.lottery[chainId]\n}\nexport const getLotteryTicketAddress = () => {\n return addresses.lotteryNFT[chainId]\n}\nexport const getchapAddress = () => {\n return addresses.chap[chainId]\n}\n","import { AbiItem } from 'web3-utils'\nimport { Interface } from '@ethersproject/abi'\nimport { getWeb3 } from 'utils/web3'\nimport MultiCallAbi from 'config/abi/Multicall.json'\nimport { getMulticallAddress } from 'utils/addressHelpers'\n\ninterface Call {\n address: string // Address of the contract\n name: string // Function name on the contract (exemple: balanceOf)\n params?: any[] // Function params\n}\n\nconst multicall = async (abi: any[], calls: Call[]) => {\n const web3 = getWeb3()\n const multi = new web3.eth.Contract((MultiCallAbi as unknown) as AbiItem, getMulticallAddress())\n const itf = new Interface(abi)\n\n const calldata = calls.map((call) => [call.address.toLowerCase(), itf.encodeFunctionData(call.name, call.params)])\n const { returnData } = await multi.methods.aggregate(calldata).call()\n const res = returnData.map((call, i) => itf.decodeFunctionResult(calls[i].name, call))\n\n return res\n}\n\nexport default multicall\n","import BigNumber from 'bignumber.js'\nimport erc20 from 'config/abi/erc20.json'\nimport masterchefABI from 'config/abi/masterchef.json'\nimport multicall from 'utils/multicall'\nimport { getMasterChefAddress } from 'utils/addressHelpers'\nimport farmsConfig from 'config/constants/farms'\n\nconst CHAIN_ID = process.env.REACT_APP_CHAIN_ID\n\nconst fetchFarms = async () => {\n const data = await Promise.all(\n farmsConfig.map(async (farmConfig) => {\n const lpAdress = farmConfig.lpAddresses[CHAIN_ID]\n const calls = [\n // Balance of token in the LP contract\n {\n address: farmConfig.tokenAddresses[CHAIN_ID],\n name: 'balanceOf',\n params: [lpAdress],\n },\n // Balance of quote token on LP contract\n {\n address: farmConfig.quoteTokenAdresses[CHAIN_ID],\n name: 'balanceOf',\n params: [lpAdress],\n },\n // Balance of LP tokens in the master chef contract\n {\n address: lpAdress,\n name: 'balanceOf',\n params: [getMasterChefAddress()],\n },\n // Total supply of LP tokens\n {\n address: lpAdress,\n name: 'totalSupply',\n },\n // Token decimals\n {\n address: farmConfig.tokenAddresses[CHAIN_ID],\n name: 'decimals',\n },\n // Quote token decimals\n {\n address: farmConfig.quoteTokenAdresses[CHAIN_ID],\n name: 'decimals',\n },\n ]\n\n const [\n tokenBalanceLP,\n quoteTokenBlanceLP,\n lpTokenBalanceMC,\n lpTotalSupply,\n tokenDecimals,\n quoteTokenDecimals,\n ] = await multicall(erc20, calls)\n\n // Ratio in % a LP tokens that are in staking, vs the total number in circulation\n const lpTokenRatio = new BigNumber(lpTokenBalanceMC).div(new BigNumber(lpTotalSupply))\n\n // Total value in staking in quote token value\n const lpTotalInQuoteToken = new BigNumber(quoteTokenBlanceLP)\n .div(new BigNumber(10).pow(18))\n .times(new BigNumber(2))\n .times(lpTokenRatio)\n\n // Amount of token in the LP that are considered staking (i.e amount of token * lp ratio)\n const tokenAmount = new BigNumber(tokenBalanceLP).div(new BigNumber(10).pow(tokenDecimals)).times(lpTokenRatio)\n const quoteTokenAmount = new BigNumber(quoteTokenBlanceLP)\n .div(new BigNumber(10).pow(quoteTokenDecimals))\n .times(lpTokenRatio)\n\n const [info, totalAllocPoint] = await multicall(masterchefABI, [\n {\n address: getMasterChefAddress(),\n name: 'poolInfo',\n params: [farmConfig.pid],\n },\n {\n address: getMasterChefAddress(),\n name: 'totalAllocPoint',\n },\n ])\n\n const allocPoint = new BigNumber(info.allocPoint._hex)\n const poolWeight = allocPoint.div(new BigNumber(totalAllocPoint))\n\n return {\n ...farmConfig,\n tokenAmount: tokenAmount.toJSON(),\n quoteTokenAmount: quoteTokenAmount.toJSON(),\n lpTotalInQuoteToken: lpTotalInQuoteToken.toJSON(),\n tokenPriceVsQuote: quoteTokenAmount.div(tokenAmount).toJSON(),\n poolWeight: poolWeight.toJSON(),\n multiplier: `${allocPoint.div(100).toString()}X`,\n }\n }),\n )\n return data\n}\n\nexport default fetchFarms\n","import BigNumber from 'bignumber.js'\nimport erc20ABI from 'config/abi/erc20.json'\nimport masterchefABI from 'config/abi/masterchef.json'\nimport multicall from 'utils/multicall'\nimport farmsConfig from 'config/constants/farms'\nimport { getMasterChefAddress } from 'utils/addressHelpers'\n\nconst CHAIN_ID = process.env.REACT_APP_CHAIN_ID\n\nexport const fetchFarmUserAllowances = async (account: string) => {\n const masterChefAdress = getMasterChefAddress()\n\n const calls = farmsConfig.map((farm) => {\n const lpContractAddress = farm.lpAddresses[CHAIN_ID]\n return { address: lpContractAddress, name: 'allowance', params: [account, masterChefAdress] }\n })\n\n const rawLpAllowances = await multicall(erc20ABI, calls)\n const parsedLpAllowances = rawLpAllowances.map((lpBalance) => {\n return new BigNumber(lpBalance).toJSON()\n })\n return parsedLpAllowances\n}\n\nexport const fetchFarmUserTokenBalances = async (account: string) => {\n const calls = farmsConfig.map((farm) => {\n const lpContractAddress = farm.lpAddresses[CHAIN_ID]\n return {\n address: lpContractAddress,\n name: 'balanceOf',\n params: [account],\n }\n })\n\n const rawTokenBalances = await multicall(erc20ABI, calls)\n const parsedTokenBalances = rawTokenBalances.map((tokenBalance) => {\n return new BigNumber(tokenBalance).toJSON()\n })\n return parsedTokenBalances\n}\n\nexport const fetchFarmUserStakedBalances = async (account: string) => {\n const masterChefAdress = getMasterChefAddress()\n\n const calls = farmsConfig.map((farm) => {\n return {\n address: masterChefAdress,\n name: 'userInfo',\n params: [farm.pid, account],\n }\n })\n\n const rawStakedBalances = await multicall(masterchefABI, calls)\n const parsedStakedBalances = rawStakedBalances.map((stakedBalance) => {\n return new BigNumber(stakedBalance[0]._hex).toJSON()\n })\n return parsedStakedBalances\n}\n\nexport const fetchFarmUserEarnings = async (account: string) => {\n const masterChefAdress = getMasterChefAddress()\n\n const calls = farmsConfig.map((farm) => {\n return {\n address: masterChefAdress,\n name: 'pendingRchap',\n params: [farm.pid, account],\n }\n })\n\n const rawEarnings = await multicall(masterchefABI, calls)\n const parsedEarnings = rawEarnings.map((earnings) => {\n return new BigNumber(earnings).toJSON()\n })\n return parsedEarnings\n}\n","/* eslint-disable no-param-reassign */\nimport { createSlice } from '@reduxjs/toolkit'\nimport farmsConfig from 'config/constants/farms'\nimport fetchFarms from './fetchFarms'\nimport {\n fetchFarmUserEarnings,\n fetchFarmUserAllowances,\n fetchFarmUserTokenBalances,\n fetchFarmUserStakedBalances,\n} from './fetchFarmUser'\nimport { FarmsState, Farm } from '../types'\n\nconst initialState: FarmsState = { data: [...farmsConfig] }\n\nexport const farmsSlice = createSlice({\n name: 'Farms',\n initialState,\n reducers: {\n setFarmsPublicData: (state, action) => {\n const liveFarmsData: Farm[] = action.payload\n state.data = state.data.map((farm) => {\n const liveFarmData = liveFarmsData.find((f) => f.pid === farm.pid)\n return { ...farm, ...liveFarmData }\n })\n },\n setFarmUserData: (state, action) => {\n const { arrayOfUserDataObjects } = action.payload\n arrayOfUserDataObjects.forEach((userDataEl) => {\n const { index } = userDataEl\n state.data[index] = { ...state.data[index], userData: userDataEl }\n })\n },\n },\n})\n\n// Actions\nexport const { setFarmsPublicData, setFarmUserData } = farmsSlice.actions\n\n// Thunks\nexport const fetchFarmsPublicDataAsync = () => async (dispatch) => {\n const farms = await fetchFarms()\n dispatch(setFarmsPublicData(farms))\n}\nexport const fetchFarmUserDataAsync = (account) => async (dispatch) => {\n const userFarmAllowances = await fetchFarmUserAllowances(account)\n const userFarmTokenBalances = await fetchFarmUserTokenBalances(account)\n const userStakedBalances = await fetchFarmUserStakedBalances(account)\n const userFarmEarnings = await fetchFarmUserEarnings(account)\n\n const arrayOfUserDataObjects = userFarmAllowances.map((farmAllowance, index) => {\n return {\n index,\n allowance: userFarmAllowances[index],\n tokenBalance: userFarmTokenBalances[index],\n stakedBalance: userStakedBalances[index],\n earnings: userFarmEarnings[index],\n }\n })\n\n dispatch(setFarmUserData({ arrayOfUserDataObjects }))\n}\n\nexport default farmsSlice.reducer\n","import { PoolConfig, QuoteToken, PoolCategory } from './types'\n\nconst pools: PoolConfig[] = [\n {\n pastaId: 0,\n tokenName: 'RCHAP',\n earnToken: 'RCHAP',\n stakingTokenName: QuoteToken.RCHAP,\n stakingTokenAddress: '0x7EcaaCA6eB73beeBCc2595dE864410dC50567B7F',\n contractAddress: {\n 97: '',\n 355113: '0x30CA643734CEc96F9202931A7b2A16B7c8aC6b85',\n },\n poolCategory: PoolCategory.CORE,\n projectLink: 'http://chapswap.com/',\n harvest: true,\n tokenPerBlock: '0.005',\n sortOrder: 1,\n isFinished: false,\n tokenDecimals: 18,\n }\n]\n\nexport default pools\n","import poolsConfig from 'config/constants/pools'\nimport pastaChefABI from 'config/abi/pastaChef.json'\nimport pizzaABI from 'config/abi/pizza.json'\nimport wbnbABI from 'config/abi/weth.json'\nimport { QuoteToken } from 'config/constants/types'\nimport multicall from 'utils/multicall'\nimport { getWbnbAddress } from 'utils/addressHelpers'\nimport BigNumber from 'bignumber.js'\n\nconst CHAIN_ID = process.env.REACT_APP_CHAIN_ID\n\nexport const fetchPoolsBlockLimits = async () => {\n const poolsWithEnd = poolsConfig.filter((p) => p.pastaId !== 0)\n const callsStartBlock = poolsWithEnd.map((poolConfig) => {\n return {\n address: poolConfig.contractAddress[CHAIN_ID],\n name: 'startBlock',\n }\n })\n const callsEndBlock = poolsWithEnd.map((poolConfig) => {\n return {\n address: poolConfig.contractAddress[CHAIN_ID],\n name: 'bonusEndBlock',\n }\n })\n\n const starts = await multicall(pastaChefABI, callsStartBlock)\n const ends = await multicall(pastaChefABI, callsEndBlock)\n\n return poolsWithEnd.map((pizzaPoolConfig, index) => {\n const startBlock = starts[index]\n const endBlock = ends[index]\n return {\n pastaId: pizzaPoolConfig.pastaId,\n startBlock: new BigNumber(startBlock).toJSON(),\n endBlock: new BigNumber(endBlock).toJSON(),\n }\n })\n}\n\nexport const fetchPoolsTotalStatking = async () => {\n const nonBnbPools = poolsConfig.filter((p) => p.stakingTokenName !== QuoteToken.BNB)\n const bnbPool = poolsConfig.filter((p) => p.stakingTokenName === QuoteToken.BNB)\n\n const callsNonBnbPools = nonBnbPools.map((poolConfig) => {\n return {\n address: poolConfig.stakingTokenAddress,\n name: 'balanceOf',\n params: [poolConfig.contractAddress[CHAIN_ID]],\n }\n })\n\n const callsBnbPools = bnbPool.map((poolConfig) => {\n return {\n address: getWbnbAddress(),\n name: 'balanceOf',\n params: [poolConfig.contractAddress[CHAIN_ID]],\n }\n })\n\n const nonBnbPoolsTotalStaked = await multicall(pizzaABI, callsNonBnbPools)\n const bnbPoolsTotalStaked = await multicall(wbnbABI, callsBnbPools)\n\n return [\n ...nonBnbPools.map((p, index) => ({\n pastaId: p.pastaId,\n totalStaked: new BigNumber(nonBnbPoolsTotalStaked[index]).toJSON(),\n })),\n ...bnbPool.map((p, index) => ({\n pastaId: p.pastaId,\n totalStaked: new BigNumber(bnbPoolsTotalStaked[index]).toJSON(),\n })),\n ]\n}\n","import { AbiItem } from 'web3-utils'\nimport poolsConfig from 'config/constants/pools'\nimport masterChefABI from 'config/abi/masterchef.json'\nimport pastaChefABI from 'config/abi/pastaChef.json'\nimport erc20ABI from 'config/abi/erc20.json'\nimport { QuoteToken } from 'config/constants/types'\nimport multicall from 'utils/multicall'\nimport { getMasterChefAddress } from 'utils/addressHelpers'\nimport { getWeb3 } from 'utils/web3'\nimport BigNumber from 'bignumber.js'\n\nconst CHAIN_ID = process.env.REACT_APP_CHAIN_ID\n\n// Pool 0, Pizza / Pizza is a different kind of contract (master chef)\n// BNB pools use the native BNB token (wrapping ? unwrapping is done at the contract level)\nconst nonBnbPools = poolsConfig.filter((p) => p.stakingTokenName !== QuoteToken.BNB)\nconst bnbPools = poolsConfig.filter((p) => p.stakingTokenName === QuoteToken.BNB)\nconst nonMasterPools = poolsConfig.filter((p) => p.pastaId !== 0)\nconst web3 = getWeb3()\nconst masterChefContract = new web3.eth.Contract((masterChefABI as unknown) as AbiItem, getMasterChefAddress())\n\nexport const fetchPoolsAllowance = async (account) => {\n const calls = nonBnbPools.map((p) => ({\n address: p.stakingTokenAddress,\n name: 'allowance',\n params: [account, p.contractAddress[CHAIN_ID]],\n }))\n\n const allowances = await multicall(erc20ABI, calls)\n return nonBnbPools.reduce(\n (acc, pool, index) => ({ ...acc, [pool.pastaId]: new BigNumber(allowances[index]).toJSON() }),\n {},\n )\n}\n\nexport const fetchUserBalances = async (account) => {\n // Non BNB pools\n const calls = nonBnbPools.map((p) => ({\n address: p.stakingTokenAddress,\n name: 'balanceOf',\n params: [account],\n }))\n const tokenBalancesRaw = await multicall(erc20ABI, calls)\n const tokenBalances = nonBnbPools.reduce(\n (acc, pool, index) => ({ ...acc, [pool.pastaId]: new BigNumber(tokenBalancesRaw[index]).toJSON() }),\n {},\n )\n\n // BNB pools\n const bnbBalance = await web3.eth.getBalance(account)\n const bnbBalances = bnbPools.reduce(\n (acc, pool) => ({ ...acc, [pool.pastaId]: new BigNumber(bnbBalance).toJSON() }),\n {},\n )\n\n return { ...tokenBalances, ...bnbBalances }\n}\n\nexport const fetchUserStakeBalances = async (account) => {\n const calls = nonMasterPools.map((p) => ({\n address: p.contractAddress[CHAIN_ID],\n name: 'userInfo',\n params: [account],\n }))\n const userInfo = await multicall(pastaChefABI, calls)\n const stakedBalances = nonMasterPools.reduce(\n (acc, pool, index) => ({\n ...acc,\n [pool.pastaId]: new BigNumber(userInfo[index].amount._hex).toJSON(),\n }),\n {},\n )\n\n // Pizza / Pizza pool\n const { amount: masterPoolAmount } = await masterChefContract.methods.userInfo('0', account).call()\n\n return { ...stakedBalances, 0: new BigNumber(masterPoolAmount).toJSON() }\n}\n\nexport const fetchUserPendingRewards = async (account) => {\n const calls = nonMasterPools.map((p) => ({\n address: p.contractAddress[CHAIN_ID],\n name: 'pendingReward',\n params: [account],\n }))\n const res = await multicall(pastaChefABI, calls)\n const pendingRewards = nonMasterPools.reduce(\n (acc, pool, index) => ({\n ...acc,\n [pool.pastaId]: new BigNumber(res[index]).toJSON(),\n }),\n {},\n )\n\n // Pizza / Pizza pool\n const pendingReward = await masterChefContract.methods.pendingRchap('0', account).call()\n\n return { ...pendingRewards, 0: new BigNumber(pendingReward).toJSON() }\n}\n","/* eslint-disable no-param-reassign */\nimport { createSlice } from '@reduxjs/toolkit'\nimport poolsConfig from 'config/constants/pools'\nimport { fetchPoolsBlockLimits, fetchPoolsTotalStatking } from './fetchPools'\nimport {\n fetchPoolsAllowance,\n fetchUserBalances,\n fetchUserStakeBalances,\n fetchUserPendingRewards,\n} from './fetchPoolsUser'\nimport { PoolsState, Pool } from '../types'\n\nconst initialState: PoolsState = { data: [...poolsConfig] }\n\nexport const PoolsSlice = createSlice({\n name: 'Pools',\n initialState,\n reducers: {\n setPoolsPublicData: (state, action) => {\n const livePoolsData: Pool[] = action.payload\n state.data = state.data.map((pool) => {\n const livePoolData = livePoolsData.find((entry) => entry.pastaId === pool.pastaId)\n return { ...pool, ...livePoolData }\n })\n },\n setPoolsUserData: (state, action) => {\n const userData = action.payload\n state.data = state.data.map((pool) => {\n const userPoolData = userData.find((entry) => entry.pastaId === pool.pastaId)\n return { ...pool, userData: userPoolData }\n })\n },\n updatePoolsUserData: (state, action) => {\n const { field, value, pastaId } = action.payload\n const index = state.data.findIndex((p) => p.pastaId === pastaId)\n state.data[index] = { ...state.data[index], userData: { ...state.data[index].userData, [field]: value } }\n },\n },\n})\n\n// Actions\nexport const { setPoolsPublicData, setPoolsUserData, updatePoolsUserData } = PoolsSlice.actions\n\n// Thunks\nexport const fetchPoolsPublicDataAsync = () => async (dispatch) => {\n const blockLimits = await fetchPoolsBlockLimits()\n const totalStakings = await fetchPoolsTotalStatking()\n\n const liveData = poolsConfig.map((pool) => {\n const blockLimit = blockLimits.find((entry) => entry.pastaId === pool.pastaId)\n const totalStaking = totalStakings.find((entry) => entry.pastaId === pool.pastaId)\n return {\n ...blockLimit,\n ...totalStaking,\n }\n })\n\n dispatch(setPoolsPublicData(liveData))\n}\n\nexport const fetchPoolsUserDataAsync = (account) => async (dispatch) => {\n const allowances = await fetchPoolsAllowance(account)\n const stakingTokenBalances = await fetchUserBalances(account)\n const stakedBalances = await fetchUserStakeBalances(account)\n const pendingRewards = await fetchUserPendingRewards(account)\n\n const userData = poolsConfig.map((pool) => ({\n pastaId: pool.pastaId,\n allowance: allowances[pool.pastaId],\n stakingTokenBalance: stakingTokenBalances[pool.pastaId],\n stakedBalance: stakedBalances[pool.pastaId],\n pendingReward: pendingRewards[pool.pastaId],\n }))\n\n dispatch(setPoolsUserData(userData))\n}\n\nexport const updateUserAllowance = (pastaId: string, account: string) => async (dispatch) => {\n const allowances = await fetchPoolsAllowance(account)\n dispatch(updatePoolsUserData({ pastaId, field: 'allowance', value: allowances[pastaId] }))\n}\n\nexport const updateUserBalance = (pastaId: string, account: string) => async (dispatch) => {\n const tokenBalances = await fetchUserBalances(account)\n dispatch(updatePoolsUserData({ pastaId, field: 'stakingTokenBalance', value: tokenBalances[pastaId] }))\n}\n\nexport const updateUserStakedBalance = (pastaId: string, account: string) => async (dispatch) => {\n const stakedBalances = await fetchUserStakeBalances(account)\n dispatch(updatePoolsUserData({ pastaId, field: 'stakedBalance', value: stakedBalances[pastaId] }))\n}\n\nexport const updateUserPendingReward = (pastaId: string, account: string) => async (dispatch) => {\n const pendingRewards = await fetchUserPendingRewards(account)\n dispatch(updatePoolsUserData({ pastaId, field: 'pendingReward', value: pendingRewards[pastaId] }))\n}\n\nexport default PoolsSlice.reducer\n","import BigNumber from 'bignumber.js'\nimport { useEffect } from 'react'\nimport { useSelector, useDispatch } from 'react-redux'\nimport useRefresh from 'hooks/useRefresh'\nimport { fetchFarmsPublicDataAsync, fetchPoolsPublicDataAsync, fetchPoolsUserDataAsync } from './actions'\nimport { State, Farm, Pool } from './types'\n\nconst ZERO = new BigNumber(0)\n\nexport const useFetchPublicData = () => {\n const dispatch = useDispatch()\n const { slowRefresh } = useRefresh()\n useEffect(() => {\n dispatch(fetchFarmsPublicDataAsync())\n dispatch(fetchPoolsPublicDataAsync())\n }, [dispatch, slowRefresh])\n}\n\n// Farms\n\nexport const useFarms = (): Farm[] => {\n const farms = useSelector((state: State) => state.farms.data)\n return farms\n}\n\nexport const useFarmFromPid = (pid): Farm => {\n const farm = useSelector((state: State) => state.farms.data.find((f) => f.pid === pid))\n return farm\n}\n\nexport const useFarmFromSymbol = (lpSymbol: string): Farm => {\n const farm = useSelector((state: State) => state.farms.data.find((f) => f.lpSymbol === lpSymbol))\n return farm\n}\n\nexport const useFarmUser = (pid) => {\n const farm = useFarmFromPid(pid)\n\n return {\n allowance: farm.userData ? new BigNumber(farm.userData.allowance) : new BigNumber(0),\n tokenBalance: farm.userData ? new BigNumber(farm.userData.tokenBalance) : new BigNumber(0),\n stakedBalance: farm.userData ? new BigNumber(farm.userData.stakedBalance) : new BigNumber(0),\n earnings: farm.userData ? new BigNumber(farm.userData.earnings) : new BigNumber(0),\n }\n}\n\n// Pools\n\nexport const usePools = (account): Pool[] => {\n const { fastRefresh } = useRefresh()\n const dispatch = useDispatch()\n useEffect(() => {\n if (account) {\n dispatch(fetchPoolsUserDataAsync(account))\n }\n }, [account, dispatch, fastRefresh])\n\n const pools = useSelector((state: State) => state.pools.data)\n return pools\n}\n\nexport const usePoolFromPid = (pastaId): Pool => {\n const pool = useSelector((state: State) => state.pools.data.find((p) => p.pastaId === pastaId))\n return pool\n}\n\n// Prices\n\nexport const usePriceBnbBusd = (): BigNumber => {\n const pid = 6 // USDT-BNB LP\n const farm = useFarmFromPid(pid)\n return farm.tokenPriceVsQuote ? new BigNumber(1).div(farm.tokenPriceVsQuote) : ZERO\n}\n\nexport const usePricePizzaBusd = (): BigNumber => {\n const pid = 1 // PIZZA-BNB LP\n const bnbPriceUSD = usePriceBnbBusd()\n const farm = useFarmFromPid(pid)\n return farm.tokenPriceVsQuote ? bnbPriceUSD.times(farm.tokenPriceVsQuote) : ZERO\n}\n","import { createGlobalStyle } from 'styled-components'\n// eslint-disable-next-line import/no-unresolved\nimport { PizzaTheme } from '@pizzafinance/ui-sdk/dist/theme'\n\ndeclare module 'styled-components' {\n /* eslint-disable @typescript-eslint/no-empty-interface */\n export interface DefaultTheme extends PizzaTheme {}\n}\n\nconst GlobalStyle = createGlobalStyle`\n * {\n font-family: 'Heebo', sans-serif;\n }\n body {\n background-color: ${({ theme }) => theme.colors.background};\n\n img {\n height: auto;\n max-width: 100%;\n }\n }\n`\n\nexport default GlobalStyle\n","export const EN = { code: 'en', language: 'English' }\nexport const AR = { code: 'ar', language: 'العربية' }\nexport const CA = { code: 'ca', language: 'Català' }\nexport const ZHCN = { code: 'zh-CN', language: '简体中文' }\nexport const ZHTW = { code: 'zh-TW', language: '繁體中文' }\nexport const CS = { code: 'cs', language: 'Čeština' }\nexport const DA = { code: 'da', language: 'Dansk' }\nexport const DE = { code: 'de', language: 'Deutsch' }\nexport const NL = { code: 'nl', language: 'Nederlands' }\nexport const FIL = { code: 'fil', language: 'Filipino' }\nexport const FI = { code: 'fi', language: 'Suomalainen' }\nexport const FR = { code: 'fr', language: 'Français' }\nexport const EL = { code: 'el', language: 'Ελληνικά' }\nexport const HI = { code: 'hi', language: 'हिंदी' }\nexport const HU = { code: 'hu', language: 'Magyar' }\nexport const ID = { code: 'id', language: 'Bahasa Indonesia' }\nexport const IT = { code: 'it', language: 'Italiano' }\nexport const JA = { code: 'ja', language: '日本語' }\nexport const KO = { code: 'ko', language: '한국어' }\nexport const PTBR = { code: 'pt-BR', language: 'Português' }\nexport const RO = { code: 'ro', language: 'Română' }\nexport const RU = { code: 'ru', language: 'Русский' }\nexport const SR = { code: 'sr', language: 'Српски' }\nexport const ESES = { code: 'es-ES', language: 'Español' }\nexport const SVSE = { code: 'sv-SE', language: 'Svenska' }\nexport const TA = { code: 'ta', language: 'தமிழ்' }\nexport const TR = { code: 'tr', language: 'Türkçe' }\nexport const UK = { code: 'uk', language: 'Українська' }\nexport const VI = { code: 'vi', language: 'Tiếng Việt' }\n\nexport const allLanguages = [\n EN,\n AR,\n CA,\n ZHCN,\n ZHTW,\n CS,\n DA,\n DE,\n NL,\n FIL,\n FI,\n FR,\n EL,\n HI,\n HU,\n ID,\n IT,\n JA,\n KO,\n PTBR,\n RO,\n RU,\n SR,\n ESES,\n SVSE,\n TA,\n TR,\n UK,\n VI,\n]\n","import React, { useState, useEffect } from 'react'\nimport { StringTranslations } from '@crowdin/crowdin-api-client'\nimport { TranslationsContext } from 'contexts/Localisation/translationsContext'\nimport { allLanguages, EN } from 'config/localisation/languageCodes'\n\nconst CACHE_KEY = 'pizzaSwapLanguage'\n\nexport interface LangType {\n code: string\n language: string\n}\n\nexport interface LanguageState {\n selectedLanguage: LangType\n setSelectedLanguage: (langObject: LangType) => void\n translatedLanguage: LangType\n setTranslatedLanguage: React.Dispatch>\n}\n\nconst LanguageContext = React.createContext({\n selectedLanguage: EN,\n setSelectedLanguage: () => undefined,\n translatedLanguage: EN,\n setTranslatedLanguage: () => undefined,\n} as LanguageState)\n\nconst fileId = 8\nconst projectId = parseInt(process.env.REACT_APP_CROWDIN_PROJECT_ID)\nconst stringTranslationsApi = new StringTranslations({\n token: process.env.REACT_APP_CROWDIN_APIKEY,\n})\n\nconst fetchTranslationsForSelectedLanguage = (selectedLanguage) => {\n return stringTranslationsApi.listLanguageTranslations(projectId, selectedLanguage.code, undefined, fileId, 200)\n}\n\nconst LanguageContextProvider = ({ children }) => {\n const [selectedLanguage, setSelectedLanguage] = useState(EN)\n const [translatedLanguage, setTranslatedLanguage] = useState(EN)\n const [translations, setTranslations] = useState>([])\n\n const getStoredLang = (storedLangCode: string) => {\n return allLanguages.filter((language) => {\n return language.code === storedLangCode\n })[0]\n }\n\n useEffect(() => {\n const storedLangCode = localStorage.getItem(CACHE_KEY)\n if (storedLangCode) {\n const storedLang = getStoredLang(storedLangCode)\n setSelectedLanguage(storedLang)\n } else {\n setSelectedLanguage(EN)\n }\n }, [])\n\n useEffect(() => {\n if (selectedLanguage) {\n fetchTranslationsForSelectedLanguage(selectedLanguage)\n .then((translationApiResponse) => {\n if (translationApiResponse.data.length < 1) {\n setTranslations(['error'])\n } else {\n setTranslations(translationApiResponse.data)\n }\n })\n .then(() => setTranslatedLanguage(selectedLanguage))\n .catch(() => {\n setTranslations(['error'])\n })\n }\n }, [selectedLanguage, setTranslations])\n\n const handleLanguageSelect = (langObject: LangType) => {\n setSelectedLanguage(langObject)\n localStorage.setItem(CACHE_KEY, langObject.code)\n }\n\n return (\n \n {children}\n \n )\n}\n\nexport { LanguageContext, LanguageContextProvider }\n","import React, { useState } from 'react'\nimport { ThemeProvider as SCThemeProvider } from 'styled-components'\nimport { light, dark } from '@pizzafinance/ui-sdk'\n\nconst CACHE_KEY = 'IS_DARK'\n\nconst ThemeContext = React.createContext({ isDark: null, toggleTheme: () => null })\n\nconst ThemeContextProvider = ({ children }) => {\n const [isDark, setIsDark] = useState(() => {\n const isDarkUserSetting = localStorage.getItem(CACHE_KEY)\n return isDarkUserSetting ? JSON.parse(isDarkUserSetting) : false\n })\n\n const toggleTheme = () => {\n setIsDark((prevState) => {\n localStorage.setItem(CACHE_KEY, JSON.stringify(!prevState))\n return !prevState\n })\n }\n\n return (\n \n {children}\n \n )\n}\n\nexport { ThemeContext, ThemeContextProvider }\n","import { useContext } from 'react'\nimport { ThemeContext as StyledThemeCopntext } from 'styled-components'\nimport { ThemeContext } from 'contexts/ThemeContext'\n\nconst useTheme = () => {\n const { isDark, toggleTheme } = useContext(ThemeContext)\n const theme = useContext(StyledThemeCopntext)\n return { isDark, toggleTheme, theme }\n}\n\nexport default useTheme\n","import { MenuEntry } from '@pizzafinance/ui-sdk'\n\nconst config: MenuEntry[] = [\n {\n label: 'Home',\n icon: 'HomeIcon',\n href: '/',\n },\n {\n label: 'Trade',\n icon: 'TradeIcon',\n items: [\n {\n label: 'Exchange',\n href: 'https://amm.testnet.chapswap.com/#/swap',\n },\n {\n label: 'Liquidity',\n href: 'https://amm.testnet.chapswap.com/#/pool',\n },\n ],\n },\n {\n label: 'Farms',\n icon: 'FarmIcon',\n href: '/farms',\n },\n {\n label: 'Pools',\n icon: 'PoolIcon',\n href: '/pools',\n },\n {\n label: 'Lottery',\n icon: 'TicketIcon',\n href: '/lottery',\n },\n // {\n // label: 'IDO',\n // icon: 'IfoIcon',\n // href: '/ido',\n // },\n // {\n // label: 'Info',\n // icon: 'InfoIcon',\n // items: [\n // {\n // label: 'Overview',\n // href: 'https://info.cheeseswap.app',\n // },\n // {\n // label: 'Tokens',\n // href: 'https://info.cheeseswap.app/#/token/0x7EcaaCA6eB73beeBCc2595dE864410dC50567B7F',\n // },\n // {\n // label: 'Pairs',\n // href: 'https://info.cheeseswap.app/#/pair/0x8405be915af56589756a275d4894fa9f0ff6ca0f',\n // },\n // {\n // label: 'Accounts',\n // href: 'https://info.cheeseswap.app/#/accounts',\n // },\n // ],\n // },\n {\n label: 'More',\n icon: 'MoreIcon',\n items: [\n {\n label: 'Openchat',\n href: 'https://oc.app/community/vlpdh-aiaaa-aaaar-bh3pq-cai/',\n },\n {\n label: 'Mora Planet',\n href: 'https://mora.app/planet/o4tit-iiaaa-aaaan-qdpuq-cai',\n },\n ],\n },\n]\n\nexport default config\n","import React, { useContext } from 'react'\nimport { Menu as UikitMenu } from '@pizzafinance/ui-sdk'\nimport { useWallet } from '@binance-chain/bsc-use-wallet'\nimport { allLanguages } from 'config/localisation/languageCodes'\nimport { LanguageContext } from 'contexts/Localisation/languageContext'\nimport useTheme from 'hooks/useTheme'\nimport { usePricePizzaBusd } from 'state/hooks'\nimport config from './config'\n\nconst Menu = (props) => {\n const { account, connect, reset } = useWallet()\n const { selectedLanguage, setSelectedLanguage } = useContext(LanguageContext)\n const { isDark, toggleTheme } = useTheme()\n const pizzaPriceUsd = usePricePizzaBusd()\n\n return (\n \n )\n}\n\nexport default Menu\n","import React from 'react'\nimport styled from 'styled-components'\nimport { Spinner } from '@pizzafinance/ui-sdk'\nimport Page from './layout/Page'\n\nconst Wrapper = styled(Page)`\n display: flex;\n justify-content: center;\n align-items: center;\n`\n\nconst PageLoader: React.FC = () => {\n return (\n \n \n \n )\n}\n\nexport default PageLoader\n","import BigNumber from 'bignumber.js/bignumber'\n\nBigNumber.config({\n EXPONENTIAL_AT: 1000,\n DECIMAL_PLACES: 80,\n})\n\nexport const PIZZA_PER_BLOCK = new BigNumber(0.25)\nexport const BLOCKS_PER_YEAR = new BigNumber(10512000)\nexport const BSC_BLOCK_TIME = 3\n\nexport const PIZZA_POOL_PID = 1\n","import React, { useState, useEffect, useRef } from 'react'\nimport { getWeb3 } from 'utils/web3'\n\nconst BlockContext = React.createContext(0)\n\nconst BlockContextProvider = ({ children }) => {\n const previousBlock = useRef(0)\n const [block, setBlock] = useState(0)\n\n useEffect(() => {\n const web3 = getWeb3()\n const interval = setInterval(async () => {\n const blockNumber = await web3.eth.getBlockNumber()\n if (blockNumber !== previousBlock.current) {\n previousBlock.current = blockNumber\n setBlock(blockNumber)\n }\n }, 6000)\n\n return () => clearInterval(interval)\n }, [])\n\n return {children}\n}\n\nexport { BlockContext, BlockContextProvider }\n","import { useContext } from 'react'\nimport { BlockContext } from 'contexts/BlockContext'\n\nconst useBlock = () => {\n const block: number = useContext(BlockContext)\n return block\n}\n\nexport default useBlock\n","import BigNumber from 'bignumber.js'\n\nexport const getBalanceNumber = (balance: BigNumber, decimals = 18) => {\n const displayBalance = new BigNumber(balance).dividedBy(new BigNumber(10).pow(decimals))\n return displayBalance.toNumber()\n}\n\nexport const getFullDisplayBalance = (balance: BigNumber, decimals = 18) => {\n return balance.dividedBy(new BigNumber(10).pow(decimals)).toFixed()\n}\n","import styled from 'styled-components'\n\nconst FlexLayout = styled.div`\n display: flex;\n justify-content: center;\n flex-wrap: wrap;\n & > * {\n min-width: 280px;\n max-width: 31.5%;\n width: 100%;\n margin: 0 8px;\n margin-bottom: 32px;\n }\n`\n\nexport default FlexLayout\n","import React from 'react'\nimport { Tag, VerifiedIcon, CommunityIcon, BinanceIcon } from '@pizzafinance/ui-sdk'\n\nconst CoreTag = () => (\n }>\n Core\n \n)\n\nconst CommunityTag = () => (\n }>\n Community\n \n)\n\nconst BinanceTag = () => (\n }>\n Binance\n \n)\n\nexport { CoreTag, CommunityTag, BinanceTag }\n","import styled from 'styled-components'\n\nconst Card = styled.div<{ isActive?: boolean; isFinished?: boolean }>`\n background: ${(props) => props.theme.card.background};\n box-shadow: 0px 0px 10px rgb(75, 77, 80, 0.1);\n border-radius: 32px;\n display: flex;\n color: ${({ isFinished, theme }) => theme.colors[isFinished ? 'textDisabled' : 'secondary']};\n box-shadow: ${({ isActive }) =>\n isActive\n ? '0px 0px 0px 1px #0098A1, 0px 0px 4px 8px rgba(31, 199, 212, 0.4);'\n : '0px 0px 10px rgb(75, 77, 80, 0.1)'};\n flex-direction: column;\n position: relative;\n`\n\nexport default Card\n","import styled from 'styled-components'\n\ninterface StyledTitleProps {\n isFinished?: boolean\n}\n\nconst CardTitle = styled.div`\n color: ${({ isFinished, theme }) => theme.colors[isFinished ? 'textDisabled' : 'text']};\n font-weight: 600;\n font-size: 24px;\n line-height: 1.1;\n margin-bottom: 14px;\n`\n\nexport default CardTitle\n","import React from 'react'\nimport styled from 'styled-components'\nimport { Image, Button } from '@pizzafinance/ui-sdk'\nimport { CommunityTag } from 'components/Tags'\nimport useI18n from 'hooks/useI18n'\nimport Card from './Card'\nimport CardTitle from './CardTitle'\n\nconst Balance = styled.div`\n color: ${({ theme }) => theme.colors.text};\n font-size: 40px;\n font-weight: 600;\n`\n\nconst Label = styled.div`\n color: ${({ theme }) => theme.colors.textSubtle};\n font-size: 14px;\n margin-bottom: 16px;\n`\n\nconst DetailPlaceholder = styled.div`\n display: flex;\n font-size: 14px;\n`\nconst Value = styled.div`\n color: ${({ theme }) => theme.colors.text};\n font-size: 14px;\n`\n\nconst Footer = styled.div`\n border-top: 1px solid ${({ theme }) => (theme.isDark ? '#524B63' : '#E9EAEB')};\n padding: 24px;\n`\nconst Coming: React.FC = () => {\n const TranslateString = useI18n()\n\n return (\n \n
\n \n {TranslateString(414, 'Your Project?')}{' '}\n \n 👀\n \n \n \"Your\n ...\n \n \n {TranslateString(418, 'Apply Now')}\n \n \n
{TranslateString(352, 'APY')}:
\n ..\n
\n \n
\n \n 🥷{' '}\n \n {TranslateString(384, 'Your Stake')}:\n
\n ... RCHAP\n
\n
\n
\n \n
\n
\n )\n}\n\nexport default Coming\n","import React from 'react'\nimport { Button, useWalletModal } from '@pizzafinance/ui-sdk'\nimport { useWallet } from '@binance-chain/bsc-use-wallet'\nimport useI18n from 'hooks/useI18n'\n\nconst UnlockButton = (props) => {\n const TranslateString = useI18n()\n const { connect, reset } = useWallet()\n const { onPresentConnectModal } = useWalletModal(connect, reset)\n\n return (\n \n )\n}\n\nexport default UnlockButton\n","import React from 'react'\nimport styled from 'styled-components'\n\ninterface LabelProps {\n text?: string\n isFinished?: boolean\n}\n\nconst Label: React.FC = ({ text, isFinished = false }) => (\n {text}\n)\n\nconst StyledLabel = styled.div<{ isFinished: boolean }>`\n color: ${({ isFinished, theme }) => theme.colors[isFinished ? 'textDisabled' : 'primary']};\n font-size: 14px;\n`\n\nexport default Label\n","import { useEffect, useState, useRef } from 'react'\nimport Web3 from 'web3'\nimport { HttpProviderOptions } from 'web3-core-helpers'\nimport { provider as ProviderType } from 'web3-core'\nimport { useWallet } from '@binance-chain/bsc-use-wallet'\nimport getRpcUrl from 'utils/getRpcUrl'\n\nconst RPC_URL = getRpcUrl()\nconst httpProvider = new Web3.providers.HttpProvider(RPC_URL, { timeout: 10000 } as HttpProviderOptions)\n\n/**\n * Provides a web3 instance using the provider provided by useWallet\n * with a fallback of an httpProver\n * Recreate web3 instance only if the ethereum provider change\n */\nconst useWeb3 = () => {\n const { ethereum }: { ethereum: ProviderType } = useWallet()\n const refEth = useRef(ethereum)\n const [web3, setweb3] = useState(new Web3(ethereum || httpProvider))\n\n useEffect(() => {\n if (ethereum !== refEth.current) {\n setweb3(new Web3(ethereum || httpProvider))\n refEth.current = ethereum\n }\n }, [ethereum])\n\n return web3\n}\n\nexport default useWeb3\n","import { Ifo } from './types'\n\nconst ifos: Ifo[] = [\n {\n id: 'MANGO',\n address: '0xF90Ee56bCF8411f67FD0E44776b2f2A566Ef5bC2',\n isActive: true,\n name: 'MANGO',\n subTitle: 'Mango Farm - Inflation controlled VERY LOW emission rate farming',\n description:\n 'Mango Farm - Very new types of yield-farming project ',\n launchDate: 'March. 12',\n launchTime: '01:14:38 UTC',\n saleAmount: '8,000 MANGO',\n raiseAmount: '$11,200,000',\n pizzaToBurn: '$1,000,000',\n projectSiteUrl: '',\n currency: 'CHAP-BFT LP',\n currencyAddress: '0x8405be915af56589756a275d4894fa9f0ff6ca0f',\n tokenDecimals: 18,\n releaseBlockNumber: 5639441,\n },\n]\n\nexport default ifos\n","import farmsConfig from './farms'\n\nconst communityFarms = farmsConfig.filter((farm) => farm.isCommunity).map((farm) => farm.tokenSymbol)\n\nexport { farmsConfig, communityFarms }\nexport { default as poolsConfig } from './pools'\nexport { default as ifosConfig } from './ifo'\n","import { useEffect, useState } from 'react'\nimport { AbiItem } from 'web3-utils'\nimport { ContractOptions } from 'web3-eth-contract'\nimport useWeb3 from 'hooks/useWeb3'\nimport { getMasterChefAddress, getPizzaAddress, getLotteryAddress, getLotteryTicketAddress } from 'utils/addressHelpers'\nimport { poolsConfig } from 'config/constants'\nimport { PoolCategory } from 'config/constants/types'\nimport ifo from 'config/abi/ifo.json'\nimport erc20 from 'config/abi/erc20.json'\nimport rabbitmintingfarm from 'config/abi/rabbitmintingfarm.json'\nimport pizzaRabbits from 'config/abi/pizzaRabbits.json'\nimport lottery from 'config/abi/lottery.json'\nimport lotteryTicket from 'config/abi/lotteryNft.json'\nimport masterChef from 'config/abi/masterchef.json'\nimport pastaChef from 'config/abi/pastaChef.json'\nimport pastaChefBnb from 'config/abi/pastaChefBnb.json'\n\nconst useContract = (abi: AbiItem, address: string, contractOptions?: ContractOptions) => {\n const web3 = useWeb3()\n const [contract, setContract] = useState(new web3.eth.Contract(abi, address, contractOptions))\n\n useEffect(() => {\n setContract(new web3.eth.Contract(abi, address, contractOptions))\n }, [abi, address, contractOptions, web3])\n\n return contract\n}\n\n/**\n * Helper hooks to get specific contracts (by ABI)\n */\n\nexport const useIfoContract = (address: string) => {\n const ifoAbi = (ifo as unknown) as AbiItem\n return useContract(ifoAbi, address)\n}\n\nexport const useERC20 = (address: string) => {\n const erc20Abi = (erc20 as unknown) as AbiItem\n return useContract(erc20Abi, address)\n}\n\nexport const usePizza = () => {\n return useERC20(getPizzaAddress())\n}\n\nexport const useRabbitMintingFarm = (address: string) => {\n const rabbitMintingFarmAbi = (rabbitmintingfarm as unknown) as AbiItem\n return useContract(rabbitMintingFarmAbi, address)\n}\n\nexport const usePizzaRabbits = (address: string) => {\n const pizzaRabbitsAbi = (pizzaRabbits as unknown) as AbiItem\n return useContract(pizzaRabbitsAbi, address)\n}\n\nexport const useLottery = () => {\n const abi = (lottery as unknown) as AbiItem\n return useContract(abi, getLotteryAddress())\n}\n\nexport const useLotteryTicket = () => {\n const abi = (lotteryTicket as unknown) as AbiItem\n return useContract(abi, getLotteryTicketAddress())\n}\n\nexport const useMasterchef = () => {\n const abi = (masterChef as unknown) as AbiItem\n return useContract(abi, getMasterChefAddress())\n}\n\nexport const usePastaChef = (id) => {\n const config = poolsConfig.find((pool) => pool.pastaId === id)\n const rawAbi = config.poolCategory === PoolCategory.BINANCE ? pastaChefBnb : pastaChef\n const abi = (rawAbi as unknown) as AbiItem\n return useContract(abi, config.contractAddress[process.env.REACT_APP_CHAIN_ID])\n}\n\nexport default useContract\n","import BigNumber from 'bignumber.js'\nimport { ethers } from 'ethers'\n\nexport const approve = async (lpContract, masterChefContract, account) => {\n return lpContract.methods\n .approve(masterChefContract.options.address, ethers.constants.MaxUint256)\n .send({ from: account })\n}\n\nexport const stake = async (masterChefContract, pid, amount, account) => {\n if (pid === 0) {\n return masterChefContract.methods\n .enterStaking(new BigNumber(amount).times(new BigNumber(10).pow(18)).toString())\n .send({ from: account })\n .on('transactionHash', (tx) => {\n return tx.transactionHash\n })\n }\n\n return masterChefContract.methods\n .deposit(pid, new BigNumber(amount).times(new BigNumber(10).pow(18)).toString())\n .send({ from: account })\n .on('transactionHash', (tx) => {\n return tx.transactionHash\n })\n}\n\nexport const pastaStake = async (pastaChefContract, amount, account) => {\n return pastaChefContract.methods\n .deposit(new BigNumber(amount).times(new BigNumber(10).pow(18)).toString())\n .send({ from: account })\n .on('transactionHash', (tx) => {\n return tx.transactionHash\n })\n}\n\nexport const pastaStakeBnb = async (pastaChefContract, amount, account) => {\n return pastaChefContract.methods\n .deposit()\n .send({ from: account, value: new BigNumber(amount).times(new BigNumber(10).pow(18)).toString() })\n .on('transactionHash', (tx) => {\n return tx.transactionHash\n })\n}\n\nexport const unstake = async (masterChefContract, pid, amount, account) => {\n if (pid === 0) {\n return masterChefContract.methods\n .leaveStaking(new BigNumber(amount).times(new BigNumber(10).pow(18)).toString())\n .send({ from: account })\n .on('transactionHash', (tx) => {\n return tx.transactionHash\n })\n }\n return masterChefContract.methods\n .withdraw(pid, new BigNumber(amount).times(new BigNumber(10).pow(18)).toString())\n .send({ from: account })\n .on('transactionHash', (tx) => {\n return tx.transactionHash\n })\n}\n\nexport const pastaUnstake = async (pastaChefContract, amount, account) => {\n if (pastaChefContract.options.address === '0xBAc68Fea1dbc30270704c151EDe9e137685c21E4') {\n return pastaChefContract.methods\n .emergencyWithdraw()\n .send({ from: account })\n .on('transactionHash', (tx) => {\n return tx.transactionHash\n })\n }\n if (pastaChefContract.options.address === '0xBAc68Fea1dbc30270704c151EDe9e137685c21E4') {\n return pastaChefContract.methods\n .emergencyWithdraw()\n .send({ from: account })\n .on('transactionHash', (tx) => {\n return tx.transactionHash\n })\n }\n return pastaChefContract.methods\n .withdraw(new BigNumber(amount).times(new BigNumber(10).pow(18)).toString())\n .send({ from: account })\n .on('transactionHash', (tx) => {\n return tx.transactionHash\n })\n}\n\nexport const pastaEmegencyUnstake = async (pastaChefContract, amount, account) => {\n return pastaChefContract.methods\n .emergencyWithdraw()\n .send({ from: account })\n .on('transactionHash', (tx) => {\n return tx.transactionHash\n })\n}\n\nexport const harvest = async (masterChefContract, pid, account) => {\n if (pid === 0) {\n return masterChefContract.methods\n .leaveStaking('0')\n .send({ from: account })\n .on('transactionHash', (tx) => {\n return tx.transactionHash\n })\n }\n return masterChefContract.methods\n .deposit(pid, '0')\n .send({ from: account })\n .on('transactionHash', (tx) => {\n return tx.transactionHash\n })\n}\n\nexport const pastahHarvest = async (pastaChefContract, account) => {\n return pastaChefContract.methods\n .deposit('0')\n .send({ from: account })\n .on('transactionHash', (tx) => {\n return tx.transactionHash\n })\n}\n\nexport const pastahHarvestBnb = async (pastaChefContract, account) => {\n return pastaChefContract.methods\n .deposit()\n .send({ from: account, value: new BigNumber(0) })\n .on('transactionHash', (tx) => {\n return tx.transactionHash\n })\n}\n","import { useCallback } from 'react'\nimport { useWallet } from '@binance-chain/bsc-use-wallet'\nimport { useDispatch } from 'react-redux'\nimport { fetchFarmUserDataAsync, updateUserStakedBalance, updateUserBalance } from 'state/actions'\nimport { stake, pastaStake, pastaStakeBnb } from 'utils/callHelpers'\nimport { useMasterchef, usePastaChef } from './useContract'\n\nconst useStake = (pid: number) => {\n const dispatch = useDispatch()\n const { account } = useWallet()\n const masterChefContract = useMasterchef()\n\n const handleStake = useCallback(\n async (amount: string) => {\n const txHash = await stake(masterChefContract, pid, amount, account)\n dispatch(fetchFarmUserDataAsync(account))\n console.info(txHash)\n },\n [account, dispatch, masterChefContract, pid],\n )\n\n return { onStake: handleStake }\n}\n\nexport const usePastaStake = (pastaId, isUsingBnb = false) => {\n const dispatch = useDispatch()\n const { account } = useWallet()\n const masterChefContract = useMasterchef()\n const pastaChefContract = usePastaChef(pastaId)\n\n const handleStake = useCallback(\n async (amount: string) => {\n if (pastaId === 0) {\n await stake(masterChefContract, 0, amount, account)\n } else if (isUsingBnb) {\n await pastaStakeBnb(pastaChefContract, amount, account)\n } else {\n await pastaStake(pastaChefContract, amount, account)\n }\n dispatch(updateUserStakedBalance(pastaId, account))\n dispatch(updateUserBalance(pastaId, account))\n },\n [account, dispatch, isUsingBnb, masterChefContract, pastaChefContract, pastaId],\n )\n\n return { onStake: handleStake }\n}\n\nexport default useStake\n","import { useCallback } from 'react'\nimport { useWallet } from '@binance-chain/bsc-use-wallet'\nimport { useDispatch } from 'react-redux'\nimport {\n fetchFarmUserDataAsync,\n updateUserStakedBalance,\n updateUserBalance,\n updateUserPendingReward,\n} from 'state/actions'\nimport { unstake, pastaUnstake, pastaEmegencyUnstake } from 'utils/callHelpers'\nimport { useMasterchef, usePastaChef } from './useContract'\n\nconst useUnstake = (pid: number) => {\n const dispatch = useDispatch()\n const { account } = useWallet()\n const masterChefContract = useMasterchef()\n\n const handleUnstake = useCallback(\n async (amount: string) => {\n const txHash = await unstake(masterChefContract, pid, amount, account)\n dispatch(fetchFarmUserDataAsync(account))\n console.info(txHash)\n },\n [account, dispatch, masterChefContract, pid],\n )\n\n return { onUnstake: handleUnstake }\n}\n\nconst PASTAIDS = [ 0, 3, 4 ]\n\nexport const usePastaUnstake = (pastaId) => {\n const dispatch = useDispatch()\n const { account } = useWallet()\n const masterChefContract = useMasterchef()\n const pastaChefContract = usePastaChef(pastaId)\n const isOldPasta = PASTAIDS.includes(pastaId)\n\n const handleUnstake = useCallback(\n async (amount: string) => {\n if (pastaId === 0) {\n const txHash = await unstake(masterChefContract, 0, amount, account)\n console.info(txHash)\n } else if (isOldPasta) {\n const txHash = await pastaEmegencyUnstake(pastaChefContract, amount, account)\n console.info(txHash)\n } else {\n const txHash = await pastaUnstake(pastaChefContract, amount, account)\n console.info(txHash)\n }\n dispatch(updateUserStakedBalance(pastaId, account))\n dispatch(updateUserBalance(pastaId, account))\n dispatch(updateUserPendingReward(pastaId, account))\n },\n [account, dispatch, isOldPasta, masterChefContract, pastaChefContract, pastaId],\n )\n\n return { onUnstake: handleUnstake }\n}\n\nexport default useUnstake\n","import React, { useEffect, useRef } from 'react'\nimport CountUp from 'react-countup'\nimport styled from 'styled-components'\nimport { Text } from '@pizzafinance/ui-sdk'\n\ninterface TextProps {\n isDisabled?: boolean\n fontSize?: string\n color?: string\n}\n\ninterface BalanceProps extends TextProps {\n value?: number\n decimals?: number\n unit?: string\n}\n\nconst StyledText = styled(Text)`\n color: ${({ isDisabled, color, theme }) => (isDisabled ? theme.colors.textDisabled : color)};\n`\n\nconst Balance: React.FC = ({ value, fontSize, color, decimals, isDisabled, unit }) => {\n const previousValue = useRef(0)\n\n useEffect(() => {\n previousValue.current = value\n }, [value])\n\n return (\n \n \n {value && unit && {unit}}\n \n )\n}\n\nBalance.defaultProps = {\n fontSize: '32px',\n isDisabled: false,\n color: 'text',\n decimals: 3,\n}\n\nexport default Balance\n","import React, { useContext } from 'react'\nimport styled, { ThemeContext } from 'styled-components'\n\ninterface SpacerProps {\n size?: 'sm' | 'md' | 'lg'\n}\n\nconst Spacer: React.FC = ({ size = 'md' }) => {\n const { spacing } = useContext(ThemeContext)\n\n let s: number\n switch (size) {\n case 'lg':\n s = spacing[6]\n break\n case 'sm':\n s = spacing[2]\n break\n case 'md':\n default:\n s = spacing[4]\n }\n\n return \n}\n\ninterface StyledSpacerProps {\n size: number\n}\n\nconst StyledSpacer = styled.div`\n height: ${(props) => props.size}px;\n width: ${(props) => props.size}px;\n`\n\nexport default Spacer\n","import React from 'react'\nimport styled from 'styled-components'\n\nimport Spacer from '../Spacer'\n\nconst ModalActions: React.FC = ({ children }) => {\n const l = React.Children.toArray(children).length\n return (\n \n {React.Children.map(children, (child, i) => (\n <>\n {child}\n {i < l - 1 && }\n \n ))}\n \n )\n}\n\nconst StyledModalActions = styled.div`\n align-items: center;\n background-color: ${(props) => props.theme.colors.primaryDark}00;\n display: flex;\n margin: 0;\n padding: ${(props) => props.theme.spacing[4]}px;\n`\n\nconst StyledModalAction = styled.div`\n flex: 1;\n`\n\nexport default ModalActions\n","import React from 'react'\nimport styled from 'styled-components'\n\nexport interface InputProps {\n endAdornment?: React.ReactNode\n onChange: (e: React.FormEvent) => void\n placeholder?: string\n startAdornment?: React.ReactNode\n value: string\n}\n\nconst Input: React.FC = ({ endAdornment, onChange, placeholder, startAdornment, value }) => {\n return (\n \n {!!startAdornment && startAdornment}\n \n {!!endAdornment && endAdornment}\n \n )\n}\n\nconst StyledInputWrapper = styled.div`\n align-items: center;\n background-color: ${(props) => props.theme.colors.input};\n border-radius: ${(props) => props.theme.radii.default};\n display: flex;\n height: 72px;\n padding: 0 ${(props) => props.theme.spacing[3]}px;\n`\n\nconst StyledInput = styled.input`\n width: 100%;\n background: none;\n border: 0;\n color: ${(props) => props.theme.colors.primary};\n font-size: 18px;\n flex: 1;\n height: 56px;\n margin: 0;\n padding: 0;\n outline: none;\n`\n\nexport default Input\n","import React from 'react'\nimport styled from 'styled-components'\nimport { Button } from '@pizzafinance/ui-sdk'\nimport useI18n from '../../hooks/useI18n'\nimport Input, { InputProps } from '../Input'\n\ninterface TokenInputProps extends InputProps {\n max: number | string\n symbol: string\n onSelectMax?: () => void\n}\n\nconst TokenInput: React.FC = ({ max, symbol, onChange, onSelectMax, value }) => {\n const TranslateString = useI18n()\n return (\n \n \n {max.toLocaleString()} {symbol} {TranslateString(526, 'Available')}\n \n \n {symbol}\n \n
\n \n
\n \n }\n onChange={onChange}\n placeholder=\"0\"\n value={value}\n />\n
\n )\n}\n\nconst StyledTokenInput = styled.div``\n\nconst StyledSpacer = styled.div`\n width: ${(props) => props.theme.spacing[3]}px;\n`\n\nconst StyledTokenAdornmentWrapper = styled.div`\n align-items: center;\n display: flex;\n`\n\nconst StyledMaxText = styled.div`\n align-items: center;\n color: ${(props) => props.theme.colors.primary};\n display: flex;\n font-size: 14px;\n font-weight: 700;\n height: 44px;\n justify-content: flex-end;\n`\n\nconst StyledTokenSymbol = styled.span`\n color: ${(props) => props.theme.colors.primary};\n font-weight: 700;\n`\n\nexport default TokenInput\n","import BigNumber from 'bignumber.js'\nimport React, { useCallback, useMemo, useState } from 'react'\nimport { Button, Modal } from '@pizzafinance/ui-sdk'\nimport ModalActions from 'components/ModalActions'\nimport TokenInput from '../../../components/TokenInput'\nimport useI18n from '../../../hooks/useI18n'\nimport { getFullDisplayBalance } from '../../../utils/formatBalance'\n\ninterface DepositModalProps {\n max: BigNumber\n onConfirm: (amount: string) => void\n onDismiss?: () => void\n tokenName?: string\n}\n\nconst DepositModal: React.FC = ({ max, onConfirm, onDismiss, tokenName = '' }) => {\n const [val, setVal] = useState('')\n const [pendingTx, setPendingTx] = useState(false)\n const TranslateString = useI18n()\n const fullBalance = useMemo(() => {\n return getFullDisplayBalance(max)\n }, [max])\n\n const handleChange = useCallback(\n (e: React.FormEvent) => {\n setVal(e.currentTarget.value)\n },\n [setVal],\n )\n\n const handleSelectMax = useCallback(() => {\n setVal(fullBalance)\n }, [fullBalance, setVal])\n\n return (\n \n \n \n \n {\n setPendingTx(true)\n await onConfirm(val)\n setPendingTx(false)\n onDismiss()\n }}\n >\n {pendingTx ? TranslateString(488, 'Pending Confirmation') : TranslateString(464, 'Confirm')}\n \n \n \n )\n}\n\nexport default DepositModal\n","import BigNumber from 'bignumber.js'\nimport React, { useCallback, useMemo, useState } from 'react'\nimport { Button, Modal } from '@pizzafinance/ui-sdk'\nimport ModalActions from 'components/ModalActions'\nimport TokenInput from '../../../components/TokenInput'\nimport useI18n from '../../../hooks/useI18n'\nimport { getFullDisplayBalance } from '../../../utils/formatBalance'\n\ninterface WithdrawModalProps {\n max: BigNumber\n onConfirm: (amount: string) => void\n onDismiss?: () => void\n tokenName?: string\n}\n\nconst WithdrawModal: React.FC = ({ onConfirm, onDismiss, max, tokenName = '' }) => {\n const [val, setVal] = useState('')\n const [pendingTx, setPendingTx] = useState(false)\n const TranslateString = useI18n()\n const fullBalance = useMemo(() => {\n return getFullDisplayBalance(max)\n }, [max])\n\n const handleChange = useCallback(\n (e: React.FormEvent) => {\n setVal(e.currentTarget.value)\n },\n [setVal],\n )\n\n const handleSelectMax = useCallback(() => {\n setVal(fullBalance)\n }, [fullBalance, setVal])\n\n return (\n \n \n \n \n {\n setPendingTx(true)\n await onConfirm(val)\n setPendingTx(false)\n onDismiss()\n }}\n >\n {pendingTx ? TranslateString(488, 'Pending Confirmation') : TranslateString(464, 'Confirm')}\n \n \n \n )\n}\n\nexport default WithdrawModal\n","import BigNumber from 'bignumber.js'\nimport styled from 'styled-components'\nimport React, { useMemo, useState } from 'react'\nimport { Button, Modal } from '@pizzafinance/ui-sdk'\nimport ModalActions from 'components/ModalActions'\nimport Balance from 'components/Balance'\nimport useI18n from 'hooks/useI18n'\nimport { getFullDisplayBalance } from 'utils/formatBalance'\n\ninterface DepositModalProps {\n earnings: BigNumber\n onConfirm: (amount: string) => void\n onDismiss?: () => void\n tokenName?: string\n earnToken?: string\n}\n\nconst CompoundModal: React.FC = ({ earnings, onConfirm, onDismiss, earnToken = '' }) => {\n const [pendingTx, setPendingTx] = useState(false)\n const TranslateString = useI18n()\n const fullBalance = useMemo(() => {\n return getFullDisplayBalance(earnings)\n }, [earnings])\n\n return (\n \n \n \n \n \n \n {\n setPendingTx(true)\n await onConfirm(fullBalance)\n setPendingTx(false)\n onDismiss()\n }}\n >\n {pendingTx ? TranslateString(488, 'Pending Confirmation') : TranslateString(464, 'Confirm')}\n \n \n \n )\n}\n\nexport default CompoundModal\n\nconst BalanceRow = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: row;\n`\n","import React from 'react'\nimport styled from 'styled-components'\nimport CardTitle from './CardTitle'\n\ninterface Props {\n hasBalance?: boolean\n}\n\nconst Title = styled.div`\n color: #ed4b9e;\n font-size: 24px;\n font-weight: 600;\n text-transform: uppercase;\n`\n\nconst ActionLink = styled.a`\n color: #ed4b9e;\n font-size: 14px;\n`\n\nconst OldPastaTitle: React.FC = ({ hasBalance = false }) => {\n if (hasBalance) {\n return (\n
\n Action Required\n \n What do I need to do?\n \n
\n )\n }\n\n return (\n
\n FINISHED\n
\n )\n}\n\nexport default OldPastaTitle\n","import React, { useContext, useMemo } from 'react'\nimport styled, { ThemeContext } from 'styled-components'\n\nimport { Link } from 'react-router-dom'\n\ninterface ButtonProps {\n children?: React.ReactNode\n disabled?: boolean\n href?: string\n onClick?: () => void\n size?: 'sm' | 'md' | 'lg'\n text?: string\n to?: string\n variant?: 'default' | 'secondary' | 'tertiary'\n}\n\nconst Button: React.FC = ({ children, disabled, href, onClick, size, text, to }) => {\n const { colors, spacing } = useContext(ThemeContext)\n const buttonColor = colors.background\n\n let boxShadow: string\n let buttonSize: number\n let buttonPadding: number\n let fontSize: number\n switch (size) {\n case 'sm':\n buttonPadding = spacing[3]\n buttonSize = 36\n fontSize = 14\n break\n case 'lg':\n buttonPadding = spacing[4]\n buttonSize = 72\n fontSize = 16\n break\n case 'md':\n default:\n buttonPadding = spacing[4]\n buttonSize = 56\n fontSize = 16\n }\n\n const ButtonChild = useMemo(() => {\n if (to) {\n return {text}\n }\n if (href) {\n return (\n \n {text}\n \n )\n }\n return text\n }, [href, text, to])\n\n return (\n \n {children}\n {ButtonChild}\n \n )\n}\n\ninterface StyledButtonProps {\n boxShadow: string\n color: string\n disabled?: boolean\n fontSize: number\n padding: number\n size: number\n}\n\nconst StyledButton = styled.button`\n align-items: center;\n background: ${(props) => (!props.disabled ? props.theme.card.background : `#ddd`)};\n border: 0;\n border-radius: 12px;\n color: ${(props) => (!props.disabled ? `#2ab770` : `#acaaaf`)};\n cursor: pointer;\n display: flex;\n font-size: ${(props) => props.fontSize}px;\n font-weight: 700;\n height: ${(props) => props.size}px;\n justify-content: center;\n outline: none;\n padding-left: ${(props) => props.padding}px;\n padding-right: ${(props) => props.padding}px;\n pointer-events: ${(props) => (!props.disabled ? undefined : 'none')};\n width: 100%;\n border: 2px solid ${(props) => (!props.disabled ? `#2ab770` : `#eee`)};\n width: 100px;\n height: 30px;\n font-size: 14px;\n padding: 0px;\n`\n\nconst StyledLink = styled(Link)`\n align-items: center;\n color: inherit;\n display: flex;\n flex: 1;\n height: 56px;\n justify-content: center;\n margin: 0 ${(props) => -props.theme.spacing[4]}px;\n padding: 0 ${(props) => props.theme.spacing[4]}px;\n text-decoration: none;\n`\n\nconst StyledExternalLink = styled.a`\n align-items: center;\n color: inherit;\n display: flex;\n flex: 1;\n height: 56px;\n justify-content: center;\n margin: 0 ${(props) => -props.theme.spacing[4]}px;\n padding: 0 ${(props) => props.theme.spacing[4]}px;\n text-decoration: none;\n`\n\nexport default Button\n","import React, { useState } from 'react'\nimport BigNumber from 'bignumber.js'\nimport styled from 'styled-components'\nimport { getBalanceNumber } from 'utils/formatBalance'\nimport useI18n from 'hooks/useI18n'\nimport { ChevronDown, ChevronUp } from 'react-feather'\nimport Balance from 'components/Balance'\nimport { CommunityTag, CoreTag, BinanceTag } from 'components/Tags'\nimport { PoolCategory } from 'config/constants/types'\n\nconst tags = {\n [PoolCategory.BINANCE]: BinanceTag,\n [PoolCategory.CORE]: CoreTag,\n [PoolCategory.COMMUNITY]: CommunityTag,\n}\n\ninterface Props {\n projectLink: string\n totalStaked: BigNumber\n tokenName: string\n blocksRemaining: number\n isFinished: boolean\n blocksUntilStart: number\n poolCategory: PoolCategory\n}\n\nconst StyledFooter = styled.div<{ isFinished: boolean }>`\n border-top: 1px solid ${({ theme }) => (theme.isDark ? '#524B63' : '#E9EAEB')};\n color: ${({ isFinished, theme }) => theme.colors[isFinished ? 'textDisabled2' : 'primary2']};\n padding: 24px;\n`\n\nconst StyledDetailsButton = styled.button`\n align-items: center;\n background-color: transparent;\n border: 0;\n color: ${(props) => props.theme.colors.primary};\n cursor: pointer;\n display: inline-flex;\n font-size: 16px;\n font-weight: 600;\n height: 32px;\n justify-content: center;\n outline: 0;\n padding: 0;\n &:hover {\n opacity: 0.9;\n }\n\n & > svg {\n margin-left: 4px;\n }\n`\n\nconst Details = styled.div`\n margin-top: 24px;\n`\n\nconst Row = styled.div`\n align-items: center;\n display: flex;\n`\n\nconst FlexFull = styled.div`\n flex: 1;\n`\nconst Label = styled.div`\n font-size: 14px;\n`\nconst TokenLink = styled.a`\n font-size: 14px;\n text-decoration: none;\n color: #12aab5;\n`\n\nconst CardFooter: React.FC = ({\n projectLink,\n totalStaked,\n tokenName,\n blocksRemaining,\n isFinished,\n blocksUntilStart,\n poolCategory,\n}) => {\n const [isOpen, setIsOpen] = useState(false)\n const TranslateString = useI18n()\n const Icon = isOpen ? ChevronUp : ChevronDown\n\n const handleClick = () => setIsOpen(!isOpen)\n const Tag = tags[poolCategory]\n\n return (\n \n \n \n \n \n \n {isOpen ? 'Hide' : 'Details'} \n \n \n {isOpen && (\n
\n \n \n \n \n \n \n {blocksUntilStart > 0 && (\n \n \n \n \n \n \n )}\n {blocksUntilStart === 0 && blocksRemaining > 0 && (\n \n \n \n \n \n \n )}\n \n {TranslateString(412, 'View project site')}\n \n
\n )}\n
\n )\n}\n\nexport default React.memo(CardFooter)\n","import BigNumber from 'bignumber.js'\nimport React, { useCallback, useState } from 'react'\nimport styled from 'styled-components'\nimport { Button, IconButton, useModal, AddIcon, Image } from '@pizzafinance/ui-sdk'\nimport { useWallet } from '@binance-chain/bsc-use-wallet'\nimport UnlockButton from 'components/UnlockButton'\nimport Label from 'components/Label'\nimport { useERC20 } from 'hooks/useContract'\nimport { usePastaApprove } from 'hooks/useApprove'\nimport useI18n from 'hooks/useI18n'\nimport { usePastaStake } from 'hooks/useStake'\nimport { usePastaUnstake } from 'hooks/useUnstake'\nimport useBlock from 'hooks/useBlock'\nimport { getBalanceNumber } from 'utils/formatBalance'\nimport { usePastaHarvest } from 'hooks/useHarvest'\nimport Balance from 'components/Balance'\nimport { QuoteToken, PoolCategory } from 'config/constants/types'\nimport { Pool } from 'state/types'\nimport DepositModal from './DepositModal'\nimport WithdrawModal from './WithdrawModal'\nimport CompoundModal from './CompoundModal'\nimport CardTitle from './CardTitle'\nimport Card from './Card'\nimport OldPastaTitle from './OldPastaTitle'\nimport HarvestButton from './HarvestButton'\nimport CardFooter from './CardFooter'\n\ninterface PoolWithApy extends Pool {\n apy: BigNumber\n}\n\ninterface HarvestProps {\n pool: PoolWithApy\n}\n\nconst PoolCard: React.FC = ({ pool }) => {\n const {\n pastaId,\n image,\n tokenName,\n earnToken,\n stakingTokenName,\n stakingTokenAddress,\n projectLink,\n harvest,\n apy,\n tokenDecimals,\n poolCategory,\n totalStaked,\n startBlock,\n endBlock,\n isFinished,\n userData,\n stakingLimit,\n } = pool\n // Pools using native BNB behave differently than pools using a token\n const isBnbPool = poolCategory === PoolCategory.BINANCE\n const TranslateString = useI18n()\n const stakingTokenContract = useERC20(stakingTokenAddress)\n const { account } = useWallet()\n const block = useBlock()\n const { onApprove } = usePastaApprove(stakingTokenContract, pastaId)\n const { onStake } = usePastaStake(pastaId, isBnbPool)\n const { onUnstake } = usePastaUnstake(pastaId)\n const { onReward } = usePastaHarvest(pastaId, isBnbPool)\n\n const [requestedApproval, setRequestedApproval] = useState(false)\n const [pendingTx, setPendingTx] = useState(false)\n\n const allowance = new BigNumber(userData?.allowance || 0)\n const stakingTokenBalance = new BigNumber(userData?.stakingTokenBalance || 0)\n const stakedBalance = new BigNumber(userData?.stakedBalance || 0)\n const earnings = new BigNumber(userData?.pendingReward || 0)\n\n const blocksUntilStart = Math.max(startBlock - block, 0)\n const blocksRemaining = Math.max(endBlock - block, 0)\n const isOldPasta = stakingTokenName === QuoteToken.PASTA\n const accountHasStakedBalance = stakedBalance?.toNumber() > 0\n const needsApproval = !accountHasStakedBalance && !allowance.toNumber() && !isBnbPool\n const isCardActive = isFinished && accountHasStakedBalance\n\n const convertedLimit = new BigNumber(stakingLimit).multipliedBy(new BigNumber(10).pow(tokenDecimals))\n const [onPresentDeposit] = useModal(\n ,\n )\n\n const [onPresentCompound] = useModal(\n ,\n )\n\n const [onPresentWithdraw] = useModal(\n ,\n )\n\n const handleApprove = useCallback(async () => {\n try {\n setRequestedApproval(true)\n const txHash = await onApprove()\n // user rejected tx or didn't go thru\n if (!txHash) {\n setRequestedApproval(false)\n }\n } catch (e) {\n console.error(e)\n }\n }, [onApprove, setRequestedApproval])\n\n return (\n \n {isFinished && pastaId !== 0 && }\n
\n \n {isOldPasta && '[OLD]'} {tokenName} {TranslateString(348, 'Pool')}\n \n
\n
\n {tokenName}\n
\n {account && harvest && !isOldPasta && (\n {\n setPendingTx(true)\n await onReward()\n setPendingTx(false)\n }}\n />\n )}\n
\n {!isOldPasta ? (\n \n \n {pastaId === 0 && account && harvest && (\n \n )}\n \n ) : (\n \n )}\n
\n \n
\n )\n}\n\nconst PoolFinishedSash = styled.div`\n background-image: url('/images/pool-finished-sash.svg');\n background-position: top right;\n background-repeat: not-repeat;\n height: 135px;\n position: absolute;\n right: -24px;\n top: -24px;\n width: 135px;\n`\n\nconst StyledCardActions = styled.div`\n display: flex;\n justify-content: center;\n margin: 16px 0;\n width: 100%;\n box-sizing: border-box;\n`\n\nconst BalanceAndCompound = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex-direction: row;\n`\n\nconst StyledActionSpacer = styled.div`\n height: ${(props) => props.theme.spacing[4]}px;\n width: ${(props) => props.theme.spacing[4]}px;\n`\n\nconst StyledDetails = styled.div`\n display: flex;\n font-size: 14px;\n`\n\nexport default PoolCard\n","import { useCallback } from 'react'\nimport { useWallet } from '@binance-chain/bsc-use-wallet'\nimport { Contract } from 'web3-eth-contract'\nimport { ethers } from 'ethers'\nimport { useDispatch } from 'react-redux'\nimport { updateUserAllowance, fetchFarmUserDataAsync } from 'state/actions'\nimport { approve } from 'utils/callHelpers'\nimport { useMasterchef, usePizza, usePastaChef, useLottery } from './useContract'\n\n// Approve a Farm\nexport const useApprove = (lpContract: Contract) => {\n const dispatch = useDispatch()\n const { account }: { account: string } = useWallet()\n const masterChefContract = useMasterchef()\n\n const handleApprove = useCallback(async () => {\n try {\n const tx = await approve(lpContract, masterChefContract, account)\n dispatch(fetchFarmUserDataAsync(account))\n return tx\n } catch (e) {\n return false\n }\n }, [account, dispatch, lpContract, masterChefContract])\n\n return { onApprove: handleApprove }\n}\n\n// Approve a Pool\nexport const usePastaApprove = (lpContract: Contract, pastaId) => {\n const dispatch = useDispatch()\n const { account }: { account: string } = useWallet()\n const pastaChefContract = usePastaChef(pastaId)\n\n const handleApprove = useCallback(async () => {\n try {\n const tx = await approve(lpContract, pastaChefContract, account)\n dispatch(updateUserAllowance(pastaId, account))\n return tx\n } catch (e) {\n return false\n }\n }, [account, dispatch, lpContract, pastaChefContract, pastaId])\n\n return { onApprove: handleApprove }\n}\n\n// Approve the lottery\nexport const useLotteryApprove = () => {\n const { account }: { account: string } = useWallet()\n const pizzaContract = usePizza()\n const lotteryContract = useLottery()\n\n const handleApprove = useCallback(async () => {\n try {\n const tx = await approve(pizzaContract, lotteryContract, account)\n return tx\n } catch (e) {\n return false\n }\n }, [account, pizzaContract, lotteryContract])\n\n return { onApprove: handleApprove }\n}\n\n// Approve an IFO\nexport const useIfoApprove = (tokenContract: Contract, spenderAddress: string) => {\n const { account } = useWallet()\n const onApprove = useCallback(async () => {\n try {\n const tx = await tokenContract.methods\n .approve(spenderAddress, ethers.constants.MaxUint256)\n .send({ from: account })\n return tx\n } catch {\n return false\n }\n }, [account, spenderAddress, tokenContract])\n\n return onApprove\n}\n","import { useCallback } from 'react'\nimport { useWallet } from '@binance-chain/bsc-use-wallet'\nimport { useDispatch } from 'react-redux'\nimport { fetchFarmUserDataAsync, updateUserBalance, updateUserPendingReward } from 'state/actions'\nimport { pastahHarvest, pastahHarvestBnb, harvest } from 'utils/callHelpers'\nimport { useMasterchef, usePastaChef } from './useContract'\n\nexport const useHarvest = (farmPid: number) => {\n const dispatch = useDispatch()\n const { account } = useWallet()\n const masterChefContract = useMasterchef()\n\n const handleHarvest = useCallback(async () => {\n const txHash = await harvest(masterChefContract, farmPid, account)\n dispatch(fetchFarmUserDataAsync(account))\n return txHash\n }, [account, dispatch, farmPid, masterChefContract])\n\n return { onReward: handleHarvest }\n}\n\nexport const useAllHarvest = (farmPids: number[]) => {\n const { account } = useWallet()\n const masterChefContract = useMasterchef()\n\n const handleHarvest = useCallback(async () => {\n const harvestPromises = farmPids.reduce((accum, pid) => {\n return [...accum, harvest(masterChefContract, pid, account)]\n }, [])\n\n return Promise.all(harvestPromises)\n }, [account, farmPids, masterChefContract])\n\n return { onReward: handleHarvest }\n}\n\nexport const usePastaHarvest = (pastaId, isUsingBnb = false) => {\n const dispatch = useDispatch()\n const { account } = useWallet()\n const pastaChefContract = usePastaChef(pastaId)\n const masterChefContract = useMasterchef()\n\n const handleHarvest = useCallback(async () => {\n if (pastaId === 0) {\n await harvest(masterChefContract, 0, account)\n } else if (isUsingBnb) {\n await pastahHarvestBnb(pastaChefContract, account)\n } else {\n await pastahHarvest(pastaChefContract, account)\n }\n dispatch(updateUserPendingReward(pastaId, account))\n dispatch(updateUserBalance(pastaId, account))\n }, [account, dispatch, isUsingBnb, masterChefContract, pastaChefContract, pastaId])\n\n return { onReward: handleHarvest }\n}\n","import React from 'react'\nimport styled from 'styled-components'\nimport { useRouteMatch, Link } from 'react-router-dom'\nimport { ButtonMenu, ButtonMenuItem } from '@pizzafinance/ui-sdk'\nimport useI18n from 'hooks/useI18n'\n\nconst PoolTabButtons = () => {\n const { url, isExact } = useRouteMatch()\n const TranslateString = useI18n()\n\n return (\n \n \n \n {TranslateString(999, 'Active')}\n \n \n {TranslateString(999, 'Inactive')}\n \n \n \n )\n}\n\nexport default PoolTabButtons\n\nconst Wrapper = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n margin-bottom: 32px;\n`\n","import styled from 'styled-components'\n\nexport default styled.div`\n background-color: ${({ theme }) => theme.colors.textSubtle};\n height: 1.7px;\n margin: 0 auto 32px;\n width: 100%;\n`\n","import React from 'react'\nimport { Route, useRouteMatch } from 'react-router-dom'\nimport BigNumber from 'bignumber.js'\nimport styled from 'styled-components'\nimport { useWallet } from '@binance-chain/bsc-use-wallet'\nimport { Heading } from '@pizzafinance/ui-sdk'\nimport { BLOCKS_PER_YEAR } from 'config'\nimport orderBy from 'lodash/orderBy'\nimport partition from 'lodash/partition'\nimport useI18n from 'hooks/useI18n'\nimport useBlock from 'hooks/useBlock'\nimport { getBalanceNumber } from 'utils/formatBalance'\nimport { useFarms, usePriceBnbBusd, usePools } from 'state/hooks'\nimport { QuoteToken, PoolCategory } from 'config/constants/types'\nimport FlexLayout from 'components/layout/Flex'\nimport Page from 'components/layout/Page'\nimport Coming from './components/Coming'\nimport PoolCard from './components/PoolCard'\nimport PoolTabButtons from './components/PoolTabButtons'\nimport Divider from './components/Divider'\n\nconst Farm: React.FC = () => {\n const { path } = useRouteMatch()\n const TranslateString = useI18n()\n const { account } = useWallet()\n const farms = useFarms()\n const pools = usePools(account)\n const bnbPriceUSD = usePriceBnbBusd()\n const block = useBlock()\n\n const priceToBnb = (tokenName: string, tokenPrice: BigNumber, quoteToken: QuoteToken): BigNumber => {\n const tokenPriceBN = new BigNumber(tokenPrice)\n if (tokenName === 'BNB') {\n return new BigNumber(1)\n }\n if (tokenPrice && quoteToken === QuoteToken.BUSD) {\n return tokenPriceBN.div(bnbPriceUSD)\n }\n return tokenPriceBN\n }\n\n const poolsWithApy = pools.map((pool) => {\n const isBnbPool = pool.poolCategory === PoolCategory.BINANCE\n const rewardTokenFarm = farms.find((f) => f.tokenSymbol === pool.tokenName)\n const stakingTokenFarm = farms.find((s) => s.tokenSymbol === pool.stakingTokenName)\n\n // /!\\ Assume that the farm quote price is BNB\n const stakingTokenPriceInBNB = isBnbPool ? new BigNumber(1) : new BigNumber(stakingTokenFarm?.tokenPriceVsQuote)\n const rewardTokenPriceInBNB = priceToBnb(\n pool.tokenName,\n rewardTokenFarm?.tokenPriceVsQuote,\n rewardTokenFarm?.quoteTokenSymbol,\n )\n\n const totalRewardPricePerYear = rewardTokenPriceInBNB.times(pool.tokenPerBlock).times(BLOCKS_PER_YEAR)\n const totalStakingTokenInPool = stakingTokenPriceInBNB.times(getBalanceNumber(pool.totalStaked))\n const apy = totalRewardPricePerYear.div(totalStakingTokenInPool).times(100)\n\n return {\n ...pool,\n isFinished: pool.pastaId === 0 ? false : pool.isFinished || block > pool.endBlock,\n apy,\n }\n })\n\n const [finishedPools, openPools] = partition(poolsWithApy, (pool) => pool.isFinished)\n\n return (\n \n \n
\n \n {TranslateString(282, 'CHOP Pool')}\n \n \n {TranslateString(282, 'RCHAP Staking Pool')}\n \n {/* \n {TranslateString(282, 'CAUTION!!! PLEASE DO NOT SELL / MOVE YOUR EARNED #PASTA TOKEN. YOUR TRANSACTION MAY REVERT THEN.')}\n */}\n
    \n
  • {TranslateString(580, 'Stake RCHAP or supported tokens to earn')}
  • \n {/*
  • {TranslateString(580, 'Any listed NEW BEP20 tokens.')}
  • */}\n
  • {TranslateString(404, 'You can unstake at any time..')}
  • \n
  • {TranslateString(406, 'Rewards are calculated per block.')}
  • \n {/*
  • {TranslateString(406, '______________________________________________________________')}
  • \n
  • {TranslateString(406, 'CAUTION!: STAKING POOLS CALCULATED \"APY\" DATA IS REAL TIME AND AUTOMATICALLY COLLECTED FROM BLOCKCHAIN. DATA MAY NOT ACCURATE.')}
  • */}\n
\n
\n \"RCHAP\n
\n \n \n \n \n <>\n {orderBy(openPools, ['sortOrder']).map((pool) => (\n \n ))}\n \n \n \n \n {orderBy(finishedPools, ['sortOrder']).map((pool) => (\n \n ))}\n \n \n
\n )\n}\n\nconst Hero = styled.div`\n align-items: center;\n color: ${({ theme }) => theme.colors.primary};\n display: grid;\n grid-gap: 32px;\n grid-template-columns: 1fr;\n margin-left: auto;\n margin-right: auto;\n max-width: 250px;\n padding: 48px 0;\n ul {\n margin: 0;\n padding: 0;\n list-style-type: none;\n font-size: 16px;\n li {\n margin-bottom: 4px;\n }\n }\n img {\n height: auto;\n max-width: 100%;\n }\n @media (min-width: 576px) {\n grid-template-columns: 1fr 1fr;\n margin: 0;\n max-width: none;\n }\n`\n\nexport default Farm\n","import Web3 from 'web3'\nimport { provider as ProviderType } from 'web3-core'\nimport { Contract } from 'web3-eth-contract'\nimport { AbiItem } from 'web3-utils'\nimport erc20 from 'config/abi/erc20.json'\n\nexport const getContract = (provider: ProviderType, address: string) => {\n const web3 = new Web3(provider)\n const contract = new web3.eth.Contract((erc20 as unknown) as AbiItem, address)\n return contract\n}\n\nexport const getAllowance = async (\n lpContract: Contract,\n masterChefContract: Contract,\n account: string,\n): Promise => {\n try {\n const allowance: string = await lpContract.methods.allowance(account, masterChefContract.options.address).call()\n return allowance\n } catch (e) {\n return '0'\n }\n}\n\nexport const getTokenBalance = async (\n provider: ProviderType,\n tokenAddress: string,\n userAddress: string,\n): Promise => {\n const contract = getContract(provider, tokenAddress)\n try {\n const balance: string = await contract.methods.balanceOf(userAddress).call()\n return balance\n } catch (e) {\n return '0'\n }\n}\n","import { useEffect, useState } from 'react'\nimport BigNumber from 'bignumber.js'\nimport { useWallet } from '@binance-chain/bsc-use-wallet'\nimport { provider } from 'web3-core'\nimport pizzaABI from 'config/abi/pizza.json'\nimport { getContract } from 'utils/web3'\nimport { getTokenBalance } from 'utils/erc20'\nimport { getPizzaAddress, getchapAddress } from 'utils/addressHelpers'\nimport useRefresh from './useRefresh'\n\nconst useTokenBalance = (tokenAddress: string) => {\n const [balance, setBalance] = useState(new BigNumber(0))\n const { account, ethereum }: { account: string; ethereum: provider } = useWallet()\n const { fastRefresh } = useRefresh()\n\n useEffect(() => {\n const fetchBalance = async () => {\n const res = await getTokenBalance(ethereum, tokenAddress, account)\n setBalance(new BigNumber(res))\n }\n\n if (account && ethereum) {\n fetchBalance()\n }\n }, [account, ethereum, tokenAddress, fastRefresh])\n\n return balance\n}\n\nexport const useTotalSupply = () => {\n const { slowRefresh } = useRefresh()\n const [totalSupply, setTotalSupply] = useState()\n\n useEffect(() => {\n async function fetchTotalSupply() {\n const pizzaContract = getContract(pizzaABI, getPizzaAddress())\n const supply = await pizzaContract.methods.totalSupply().call()\n setTotalSupply(new BigNumber(supply))\n }\n\n fetchTotalSupply()\n }, [slowRefresh])\n\n return totalSupply\n}\n\nexport const useTotalSupply1 = () => {\n const { slowRefresh } = useRefresh()\n const [totalSupply1, setTotalSupply1] = useState()\n\n useEffect(() => {\n async function fetchTotalSupply1() {\n const pizzaContract1 = getContract(pizzaABI, getchapAddress())\n const supply1 = await pizzaContract1.methods.totalSupply().call()\n setTotalSupply1(new BigNumber(supply1))\n }\n\n fetchTotalSupply1()\n }, [slowRefresh])\n\n return totalSupply1\n}\n\nexport const useBurnedBalance = (tokenAddress: string) => {\n const [balance, setBalance] = useState(new BigNumber(0))\n const { account, ethereum }: { account: string; ethereum: provider } = useWallet()\n const { slowRefresh } = useRefresh()\n\n useEffect(() => {\n const fetchBalance = async () => {\n const res = await getTokenBalance(ethereum, tokenAddress, '0x000000000000000000000000000000000000dEaD')\n setBalance(new BigNumber(res))\n }\n\n if (account && ethereum) {\n fetchBalance()\n }\n }, [account, ethereum, tokenAddress, slowRefresh])\n\n return balance\n}\n\nexport default useTokenBalance\n","import React, { useEffect, useRef } from 'react'\nimport { useCountUp } from 'react-countup'\nimport { Text } from '@pizzafinance/ui-sdk'\n\ninterface CardValueProps {\n value: number\n decimals?: number\n fontSize?: string\n}\n\nconst CardValue: React.FC = ({ value, decimals, fontSize = '40px' }) => {\n const { countUp, update } = useCountUp({\n start: 0,\n end: value,\n duration: 1,\n separator: ',',\n decimals:\n // eslint-disable-next-line no-nested-ternary\n decimals !== undefined ? decimals : value < 0 ? 4 : value > 1e5 ? 0 : 3,\n })\n\n const updateValue = useRef(update)\n\n useEffect(() => {\n updateValue.current(value)\n }, [value, updateValue])\n\n return (\n \n {countUp}\n \n )\n}\n\nexport default CardValue\n","import React from 'react'\nimport { Card, CardBody, Heading, Text } from '@pizzafinance/ui-sdk'\nimport styled from 'styled-components'\nimport { getBalanceNumber } from 'utils/formatBalance'\nimport { useTotalSupply, useBurnedBalance, useTotalSupply1 } from 'hooks/useTokenBalance'\nimport useI18n from 'hooks/useI18n'\nimport { getPizzaAddress, getchapAddress } from 'utils/addressHelpers'\nimport CardValue from './CardValue'\n\nconst StyledPizzaStats = styled(Card)`\n margin-left: auto;\n margin-right: auto;\n`\n\nconst Row = styled.div`\n align-items: center;\n display: flex;\n font-size: 14px;\n justify-content: space-between;\n margin-bottom: 8px;\n`\n\nconst PizzaStats = () => {\n const TranslateString = useI18n()\n const totalSupply = useTotalSupply()\n const totalSupply1 = useTotalSupply1()\n const burnedBalance = useBurnedBalance(getPizzaAddress())\n const burnedBalance1 = useBurnedBalance(getchapAddress())\n const pizzaSupply = totalSupply ? getBalanceNumber(totalSupply) - getBalanceNumber(burnedBalance) : 0\n const chapSupply = totalSupply1 ? getBalanceNumber(totalSupply1) - getBalanceNumber(burnedBalance1) : 0\n \n\n return (\n \n \n \n {TranslateString(534, 'CHAP/RCHAP Stats')}\n \n \n {TranslateString(536, 'Total CHAP Supply')}\n {chapSupply && }\n \n \n {TranslateString(536, 'Total RCHAP Supply')}\n {pizzaSupply && }\n \n \n {TranslateString(538, 'Total RCHAP Burned')}\n \n \n \n {TranslateString(538, 'Total CHAP Burned')}\n \n \n \n {TranslateString(540, 'New RCHAP/block')}\n \n \n \n \n )\n}\n\nexport default PizzaStats\n","import { useEffect, useState } from 'react'\nimport BigNumber from 'bignumber.js'\nimport { useWallet } from '@binance-chain/bsc-use-wallet'\nimport multicall from 'utils/multicall'\nimport { getMasterChefAddress } from 'utils/addressHelpers'\nimport masterChefABI from 'config/abi/masterchef.json'\nimport { farmsConfig } from 'config/constants'\nimport { FarmConfig } from 'config/constants/types'\nimport useRefresh from './useRefresh'\n\nexport interface FarmWithBalance extends FarmConfig {\n balance: BigNumber\n}\n\nconst useFarmsWithBalance = () => {\n const [farmsWithBalances, setFarmsWithBalances] = useState([])\n const { account } = useWallet()\n const { fastRefresh } = useRefresh()\n\n useEffect(() => {\n const fetchBalances = async () => {\n const calls = farmsConfig.map((farm) => ({\n address: getMasterChefAddress(),\n name: 'pendingRchap',\n params: [farm.pid, account],\n }))\n\n const rawResults = await multicall(masterChefABI, calls)\n const results = farmsConfig.map((farm, index) => ({ ...farm, balance: new BigNumber(rawResults[index]) }))\n\n setFarmsWithBalances(results)\n }\n\n if (account) {\n fetchBalances()\n }\n }, [account, fastRefresh])\n\n return farmsWithBalances\n}\n\nexport default useFarmsWithBalance\n","import { useEffect, useState } from 'react'\nimport { useWallet } from '@binance-chain/bsc-use-wallet'\nimport multicall from 'utils/multicall'\nimport { getMasterChefAddress } from 'utils/addressHelpers'\nimport masterChefABI from 'config/abi/masterchef.json'\nimport { farmsConfig } from 'config/constants'\nimport useRefresh from './useRefresh'\n\nconst useAllEarnings = () => {\n const [balances, setBalance] = useState([])\n const { account }: { account: string } = useWallet()\n const { fastRefresh } = useRefresh()\n\n useEffect(() => {\n const fetchAllBalances = async () => {\n const calls = farmsConfig.map((farm) => ({\n address: getMasterChefAddress(),\n name: 'pendingRchap',\n params: [farm.pid, account],\n }))\n\n const res = await multicall(masterChefABI, calls)\n\n setBalance(res)\n }\n\n if (account) {\n fetchAllBalances()\n }\n }, [account, fastRefresh])\n\n return balances\n}\n\nexport default useAllEarnings\n","import React from 'react'\nimport { Text } from '@pizzafinance/ui-sdk'\nimport { useWallet } from '@binance-chain/bsc-use-wallet'\nimport BigNumber from 'bignumber.js'\nimport useI18n from 'hooks/useI18n'\nimport useAllEarnings from 'hooks/useAllEarnings'\nimport CardValue from './CardValue'\n\nconst PizzaHarvestBalance = () => {\n const TranslateString = useI18n()\n const { account } = useWallet()\n const allEarnings = useAllEarnings()\n const earningsSum = allEarnings.reduce((accum, earning) => {\n return accum + new BigNumber(earning).div(new BigNumber(10).pow(18)).toNumber()\n }, 0)\n\n if (!account) {\n return (\n \n {TranslateString(298, 'Locked')}\n \n )\n }\n\n return \n}\n\nexport default PizzaHarvestBalance\n","import React from 'react'\nimport { Text } from '@pizzafinance/ui-sdk'\nimport { useWallet } from '@binance-chain/bsc-use-wallet'\nimport useTokenBalance from 'hooks/useTokenBalance'\nimport useI18n from 'hooks/useI18n'\nimport { getPizzaAddress } from 'utils/addressHelpers'\nimport { getBalanceNumber } from 'utils/formatBalance'\nimport CardValue from './CardValue'\n\nconst PizzaWalletBalance = () => {\n const TranslateString = useI18n()\n const pizzaBalance = useTokenBalance(getPizzaAddress())\n const { account } = useWallet()\n\n if (!account) {\n return (\n \n {TranslateString(298, 'Locked')}\n \n )\n }\n\n return \n}\n\nexport default PizzaWalletBalance\n","import React, { useState, useCallback } from 'react'\nimport styled from 'styled-components'\nimport { Heading, Card, CardBody, Button } from '@pizzafinance/ui-sdk'\nimport { useWallet } from '@binance-chain/bsc-use-wallet'\nimport useI18n from 'hooks/useI18n'\nimport { useAllHarvest } from 'hooks/useHarvest'\nimport useFarmsWithBalance from 'hooks/useFarmsWithBalance'\nimport UnlockButton from 'components/UnlockButton'\nimport PizzaHarvestBalance from './PizzaHarvestBalance'\nimport PizzaWalletBalance from './PizzaWalletBalance'\n\nconst StyledFarmStakingCard = styled(Card)`\n background-image: url('/images/rchap-bg.png');\n background-repeat: no-repeat;\n background-position: top right;\n min-height: 376px;\n`\n\nconst Block = styled.div`\n margin-bottom: 16px;\n`\n\nconst CardImage = styled.img`\n margin-bottom: 16px;\n`\n\nconst Label = styled.div`\n color: ${({ theme }) => theme.colors.textSubtle};\n font-size: 14px;\n`\n\nconst Actions = styled.div`\n margin-top: 24px;\n`\n\nconst FarmedStakingCard = () => {\n const [pendingTx, setPendingTx] = useState(false)\n const { account } = useWallet()\n const TranslateString = useI18n()\n const farmsWithBalance = useFarmsWithBalance()\n const balancesWithValue = farmsWithBalance.filter((balanceType) => balanceType.balance.toNumber() > 0)\n\n const { onReward } = useAllHarvest(balancesWithValue.map((farmWithBalance) => farmWithBalance.pid))\n\n const harvestAllFarms = useCallback(async () => {\n setPendingTx(true)\n try {\n await onReward()\n } catch (error) {\n // TODO: find a way to handle when the user rejects transaction or it fails\n } finally {\n setPendingTx(false)\n }\n }, [onReward])\n\n return (\n \n \n \n {TranslateString(542, 'Farms & Staking')}\n \n \n \n \n \n \n \n \n \n \n \n {account ? (\n \n {pendingTx\n ? TranslateString(548, 'Collecting RCHAP')\n : TranslateString(999, `Harvest all (${balancesWithValue.length})`)}\n \n ) : (\n \n )}\n \n \n \n )\n}\n\nexport default FarmedStakingCard\n","/* eslint-disable no-await-in-loop */\nimport BigNumber from 'bignumber.js'\nimport { Interface } from '@ethersproject/abi'\nimport { getWeb3 } from 'utils/web3'\nimport MultiCallAbi from 'config/abi/Multicall.json'\nimport ticketAbi from 'config/abi/lotteryNft.json'\nimport lotteryAbi from 'config/abi/lottery.json'\nimport { getMulticallAddress } from './addressHelpers'\n\nexport const multiCall = async (abi, calls) => {\n const web3 = getWeb3()\n const multi = new web3.eth.Contract(MultiCallAbi, getMulticallAddress())\n const itf = new Interface(abi)\n let res = []\n if (calls.length > 100) {\n let i = 0\n while (i < calls.length / 100) {\n const newCalls = calls.slice(i * 100, 100 * (i + 1))\n const calldata = newCalls.map((call) => [call[0].toLowerCase(), itf.encodeFunctionData(call[1], call[2])])\n const { returnData } = await multi.methods.aggregate(calldata).call()\n i++\n res = res.concat(returnData.map((call, index) => itf.decodeFunctionResult(newCalls[index][1], call)))\n }\n } else {\n const calldata = calls.map((call) => [call[0].toLowerCase(), itf.encodeFunctionData(call[1], call[2])])\n const { returnData } = await multi.methods.aggregate(calldata).call()\n res = returnData.map((call, i) => itf.decodeFunctionResult(calls[i][1], call))\n }\n return res\n}\n\nexport const multiBuy = async (lotteryContract, price, numbersList, account) => {\n try {\n return lotteryContract.methods\n .multiBuy(new BigNumber(price).times(new BigNumber(10).pow(18)).toString(), numbersList)\n .send({ from: account })\n .on('transactionHash', (tx) => {\n return tx.transactionHash\n })\n } catch (err) {\n return console.error(err)\n }\n}\n\nexport const getTickets = async (lotteryContract, ticketsContract, account, customLotteryNum) => {\n const issueIdex = customLotteryNum || (await lotteryContract.methods.issueIndex().call())\n const length = await getTicketsAmount(ticketsContract, account)\n\n // eslint-disable-next-line prefer-spread\n const calls1 = Array.apply(null, { length }).map((a, i) => [\n ticketsContract.options.address,\n 'tokenOfOwnerByIndex',\n [account, i],\n ])\n const res = await multiCall(ticketAbi, calls1)\n\n const tokenIds = res.map((id) => id.toString())\n\n const calls2 = tokenIds.map((id) => [ticketsContract.options.address, 'getLotteryIssueIndex', [id]])\n const ticketIssues = await multiCall(ticketAbi, calls2)\n\n const finalTokenids = []\n ticketIssues.forEach(async (ticketIssue, i) => {\n if (ticketIssue.toString() === issueIdex) {\n finalTokenids.push(tokenIds[i])\n }\n })\n const calls3 = finalTokenids.map((id) => [ticketsContract.options.address, 'getLotteryNumbers', [id]])\n const tickets = await multiCall(ticketAbi, calls3)\n\n await getLotteryStatus(lotteryContract)\n return tickets\n}\n\nexport const getTicketsAmount = async (ticketsContract, account) => {\n return ticketsContract.methods.balanceOf(account).call()\n}\n\nexport const multiClaim = async (lotteryContract, ticketsContract, account) => {\n await lotteryContract.methods.issueIndex().call()\n const length = await getTicketsAmount(ticketsContract, account)\n // eslint-disable-next-line prefer-spread\n const calls1 = Array.apply(null, { length }).map((a, i) => [\n ticketsContract.options.address,\n 'tokenOfOwnerByIndex',\n [account, i],\n ])\n const res = await multiCall(ticketAbi, calls1)\n const tokenIds = res.map((id) => id.toString())\n\n const calls2 = tokenIds.map((id) => [ticketsContract.options.address, 'getClaimStatus', [id]])\n const claimedStatus = await multiCall(ticketAbi, calls2)\n\n const unClaimedIds = tokenIds.filter((id, index) => !claimedStatus[index][0])\n\n const calls3 = unClaimedIds.map((id) => [lotteryContract.options.address, 'getRewardView', [id]])\n const rewards = await multiCall(lotteryAbi, calls3)\n\n let finanltokenIds = []\n rewards.forEach((r, i) => {\n if (r > 0) {\n finanltokenIds.push(unClaimedIds[i])\n }\n })\n\n if (finanltokenIds.length > 200) {\n finanltokenIds = finanltokenIds.slice(0, 200)\n }\n\n try {\n return lotteryContract.methods\n .multiClaim(finanltokenIds)\n .send({ from: account })\n .on('transactionHash', (tx) => {\n return tx.transactionHash\n })\n } catch (err) {\n return console.error(err)\n }\n}\n\nexport const getTotalClaim = async (lotteryContract, ticketsContract, account) => {\n try {\n const issueIdex = await lotteryContract.methods.issueIndex().call()\n const length = await getTicketsAmount(ticketsContract, account)\n // eslint-disable-next-line prefer-spread\n const calls1 = Array.apply(null, { length }).map((a, i) => [\n ticketsContract.options.address,\n 'tokenOfOwnerByIndex',\n [account, i],\n ])\n const res = await multiCall(ticketAbi, calls1)\n const tokenIds = res.map((id) => id.toString())\n const calls2 = tokenIds.map((id) => [ticketsContract.options.address, 'getLotteryIssueIndex', [id]])\n const ticketIssues = await multiCall(ticketAbi, calls2)\n const calls3 = tokenIds.map((id) => [ticketsContract.options.address, 'getClaimStatus', [id]])\n const claimedStatus = await multiCall(ticketAbi, calls3)\n\n const drawed = await getLotteryStatus(lotteryContract)\n\n const finalTokenids = []\n ticketIssues.forEach(async (ticketIssue, i) => {\n // eslint-disable-next-line no-empty\n if (!drawed && ticketIssue.toString() === issueIdex) {\n } else if (!claimedStatus[i][0]) {\n finalTokenids.push(tokenIds[i])\n }\n })\n\n const calls4 = finalTokenids.map((id) => [lotteryContract.options.address, 'getRewardView', [id]])\n\n const rewards = await multiCall(lotteryAbi, calls4)\n const claim = rewards.reduce((p, c) => BigNumber.sum(p, c), BigNumber(0))\n\n return claim\n } catch (err) {\n console.error(err)\n }\n return BigNumber(0)\n}\n\nexport const getTotalRewards = async (lotteryContract) => {\n const issueIdex = await lotteryContract.methods.issueIndex().call()\n return lotteryContract.methods.getTotalRewards(issueIdex).call()\n}\n\nexport const getMax = async (lotteryContract) => {\n return lotteryContract.methods.maxNumber().call()\n}\n\nexport const getLotteryIssueIndex = async (lotteryContract) => {\n const issueIndex = await lotteryContract.methods.issueIndex().call()\n return issueIndex\n}\n\nexport const getLotteryStatus = async (lotteryContract) => {\n return lotteryContract.methods.drawed().call()\n}\n\nexport const getMatchingRewardLength = async (lotteryContract, matchNumber) => {\n let issueIdex = await lotteryContract.methods.issueIndex().call()\n const drawed = await lotteryContract.methods.drawed().call()\n if (!drawed) {\n issueIdex -= 1\n }\n try {\n const amount = await lotteryContract.methods.historyAmount(issueIdex, 5 - matchNumber).call()\n return amount / 1e18 / 10\n } catch (err) {\n console.error(err)\n }\n return 0\n}\n\nexport const getWinningNumbers = async (lotteryContract) => {\n const issueIdex = await lotteryContract.methods.issueIndex().call()\n const numbers = []\n const drawed = await lotteryContract.methods.drawed().call()\n\n if (!drawed && parseInt(issueIdex, 10) === 0) {\n return [0, 0, 0, 0]\n }\n if (!drawed) {\n for (let i = 0; i < 4; i++) {\n numbers.push(+(await lotteryContract.methods.historyNumbers(issueIdex - 1, i).call()).toString())\n }\n } else {\n for (let i = 0; i < 4; i++) {\n numbers.push(+(await lotteryContract.methods.winningNumbers(i).call()).toString())\n }\n }\n return numbers\n}\n","import { useEffect, useState } from 'react'\nimport { useWallet } from '@binance-chain/bsc-use-wallet'\nimport { useLottery } from 'hooks/useContract'\nimport { getLotteryStatus } from 'utils/lotteryUtils'\n\n/**\n * Returns whether or not the current lottery has drawn numbers\n *\n * @return {Boolean}\n */\nconst useGetLotteryHasDrawn = () => {\n const [lotteryHasDrawn, setLotteryHasDrawn] = useState(true)\n const { account } = useWallet()\n const lotteryContract = useLottery()\n\n useEffect(() => {\n if (account && lotteryContract) {\n const fetchLotteryStatus = async () => {\n const state = await getLotteryStatus(lotteryContract)\n setLotteryHasDrawn(state)\n }\n\n fetchLotteryStatus()\n }\n }, [account, lotteryContract])\n\n return lotteryHasDrawn\n}\n\nexport default useGetLotteryHasDrawn\n","import { useCallback, useState, useEffect } from 'react'\nimport { useWallet } from '@binance-chain/bsc-use-wallet'\nimport { useLottery, useLotteryTicket } from 'hooks/useContract'\nimport { multiClaim, getMax, multiBuy } from '../utils/lotteryUtils'\n\nexport const useMultiClaimLottery = () => {\n const { account } = useWallet()\n const lotteryContract = useLottery()\n const lotteryTicketContract = useLotteryTicket()\n\n const handleClaim = useCallback(async () => {\n try {\n const txHash = await multiClaim(lotteryContract, lotteryTicketContract, account)\n return txHash\n } catch (e) {\n return false\n }\n }, [account, lotteryContract, lotteryTicketContract])\n\n return { onMultiClaim: handleClaim }\n}\n\nexport const useMultiBuyLottery = () => {\n const { account } = useWallet()\n const lotteryContract = useLottery()\n\n const handleBuy = useCallback(\n async (amount: string, numbers: Array) => {\n try {\n const txHash = await multiBuy(lotteryContract, amount, numbers, account)\n return txHash\n } catch (e) {\n return false\n }\n },\n [account, lotteryContract],\n )\n\n return { onMultiBuy: handleBuy }\n}\n\nexport const useMaxNumber = () => {\n const [max, setMax] = useState(5)\n const lotteryContract = useLottery()\n\n const fetchMax = useCallback(async () => {\n const maxNumber = await getMax(lotteryContract)\n setMax(maxNumber)\n }, [lotteryContract])\n\n useEffect(() => {\n if (lotteryContract) {\n fetchMax()\n }\n }, [lotteryContract, fetchMax])\n\n return max\n}\n","import { useCallback, useState, useEffect } from 'react'\nimport { useWallet } from '@binance-chain/bsc-use-wallet'\nimport BigNumber from 'bignumber.js'\nimport { useLottery, useLotteryTicket } from 'hooks/useContract'\nimport useRefresh from './useRefresh'\nimport {\n getTotalRewards,\n getTotalClaim,\n getMatchingRewardLength,\n getWinningNumbers,\n getTickets,\n} from '../utils/lotteryUtils'\n\nconst useTickets = (lotteryNumber = null) => {\n const [tickets, setTickets] = useState([])\n const { account } = useWallet()\n const ticketsContract = useLotteryTicket()\n const lotteryContract = useLottery()\n const { fastRefresh } = useRefresh()\n\n useEffect(() => {\n const fetchBalance = async () => {\n const res = await getTickets(lotteryContract, ticketsContract, account, lotteryNumber)\n setTickets(res)\n }\n\n if (account && lotteryContract && ticketsContract) {\n fetchBalance()\n }\n }, [account, lotteryContract, ticketsContract, fastRefresh, lotteryNumber])\n\n return tickets\n}\n\nexport const useTotalRewards = () => {\n const [rewards, setRewards] = useState(new BigNumber(0))\n const lotteryContract = useLottery()\n const { fastRefresh } = useRefresh()\n\n useEffect(() => {\n const fetchBalance = async () => {\n const res = await getTotalRewards(lotteryContract)\n setRewards(new BigNumber(res))\n }\n\n if (lotteryContract) {\n fetchBalance()\n }\n }, [lotteryContract, fastRefresh])\n\n return rewards\n}\n\nexport const useTotalClaim = () => {\n const [claimAmount, setClaimAmount] = useState(new BigNumber(0))\n const [claimLoading, setClaimLoading] = useState(false)\n const { account } = useWallet()\n const ticketsContract = useLotteryTicket()\n const lotteryContract = useLottery()\n\n const fetchBalance = useCallback(async () => {\n setClaimLoading(true)\n const claim = await getTotalClaim(lotteryContract, ticketsContract, account)\n setClaimAmount(claim)\n setClaimLoading(false)\n }, [account, lotteryContract, ticketsContract])\n\n useEffect(() => {\n if (account && lotteryContract && ticketsContract) {\n fetchBalance()\n }\n }, [account, fetchBalance, lotteryContract, ticketsContract])\n\n return { claimLoading, claimAmount }\n}\n\nexport const useWinningNumbers = () => {\n const [winngNumbers, setWinningNumbers] = useState([0, 0, 0, 0])\n const lotteryContract = useLottery()\n const { fastRefresh } = useRefresh()\n\n useEffect(() => {\n const fetchBalance = async () => {\n const rewards = await getWinningNumbers(lotteryContract)\n setWinningNumbers(rewards)\n }\n\n if (lotteryContract) {\n fetchBalance()\n }\n }, [fastRefresh, lotteryContract, setWinningNumbers])\n\n return winngNumbers\n}\n\nexport const useMatchingRewardLength = (numbers) => {\n const [matchingNumbers, setMatchingNumbers] = useState(0)\n const lotteryContract = useLottery()\n const { fastRefresh } = useRefresh()\n\n useEffect(() => {\n const fetchBalance = async () => {\n const matchedNumbaers = await getMatchingRewardLength(lotteryContract, numbers)\n setMatchingNumbers(matchedNumbaers)\n }\n\n if (lotteryContract) {\n fetchBalance()\n }\n }, [lotteryContract, numbers, fastRefresh])\n\n return matchingNumbers\n}\n\nexport default useTickets\n","import React from 'react'\nimport styled from 'styled-components'\nimport { Button } from '@pizzafinance/ui-sdk'\nimport useI18n from '../../hooks/useI18n'\nimport Input, { InputProps } from '../Input'\n\ninterface TokenInputProps extends InputProps {\n max: number | string\n symbol: string\n availableSymbol: string\n onSelectMax?: () => void\n}\n\nconst TicketInput: React.FC = ({ max, symbol, availableSymbol, onChange, onSelectMax, value }) => {\n const TranslateString = useI18n()\n\n return (\n \n \n {symbol}\n \n
\n \n
\n \n }\n onChange={onChange}\n placeholder=\"0\"\n value={value}\n />\n {TranslateString(454, `${max.toLocaleString()} ${availableSymbol} Available`)}\n
\n )\n}\n\nconst StyledTokenInput = styled.div``\n\nconst StyledSpacer = styled.div`\n width: ${(props) => props.theme.spacing[3]}px;\n`\n\nconst StyledTokenAdornmentWrapper = styled.div`\n align-items: center;\n display: flex;\n`\n\nconst StyledMaxText = styled.div`\n align-items: center;\n color: ${(props) => props.theme.colors.primary};\n display: flex;\n font-size: 14px;\n font-weight: 700;\n height: 44px;\n justify-content: flex-end;\n`\n\nconst StyledTokenSymbol = styled.span`\n color: ${(props) => props.theme.colors.primary};\n font-weight: 700;\n`\n\nexport default TicketInput\n","import BigNumber from 'bignumber.js'\nimport React, { useCallback, useMemo, useState } from 'react'\nimport styled from 'styled-components'\nimport { Button, Modal } from '@pizzafinance/ui-sdk'\nimport { getFullDisplayBalance } from 'utils/formatBalance'\nimport TicketInput from 'components/TicketInput'\nimport ModalActions from 'components/ModalActions'\nimport { useMultiBuyLottery, useMaxNumber } from 'hooks/useBuyLottery'\nimport useI18n from 'hooks/useI18n'\n\ninterface BuyTicketModalProps {\n max: BigNumber\n onConfirm?: (amount: string, numbers: Array) => void\n onDismiss?: () => void\n tokenName?: string\n}\n\nconst BuyTicketModal: React.FC = ({ max, onDismiss }) => {\n const [val, setVal] = useState('1')\n const [pendingTx, setPendingTx] = useState(false)\n const [, setRequestedBuy] = useState(false)\n const TranslateString = useI18n()\n const fullBalance = useMemo(() => {\n return getFullDisplayBalance(max)\n }, [max])\n\n const maxTickets = useMemo(() => {\n return parseInt(getFullDisplayBalance(max.div(new BigNumber(1))))\n }, [max])\n\n const handleChange = (e: React.FormEvent) => setVal(e.currentTarget.value)\n\n const { onMultiBuy } = useMultiBuyLottery()\n const maxNumber = useMaxNumber()\n const handleBuy = useCallback(async () => {\n try {\n setRequestedBuy(true)\n const length = parseInt(val)\n // @ts-ignore\n // eslint-disable-next-line prefer-spread\n const numbers = Array.apply(null, { length }).map(() => [\n Math.floor(Math.random() * maxNumber) + 1,\n Math.floor(Math.random() * maxNumber) + 1,\n Math.floor(Math.random() * maxNumber) + 1,\n Math.floor(Math.random() * maxNumber) + 1,\n ])\n const txHash = await onMultiBuy('1', numbers)\n // user rejected tx or didn't go thru\n if (txHash) {\n setRequestedBuy(false)\n }\n } catch (e) {\n console.error(e)\n }\n }, [onMultiBuy, setRequestedBuy, maxNumber, val])\n\n const handleSelectMax = useCallback(() => {\n if (Number(maxTickets) > 100) {\n setVal('100')\n } else {\n setVal(maxTickets.toString())\n }\n }, [maxTickets])\n\n const pizzaCosts = (amount: string): number => {\n return +amount * 1\n }\n return (\n \n \n
\n {TranslateString(456, 'Your amount must be a multiple of 1 RCHAP')}\n {TranslateString(458, '1 Ticket = 1 RCHAP')}\n
\n
\n \n {TranslateString(\n 478,\n 'Ticket purchases are final. Your RCHAP cannot be returned to you after buying tickets.',\n )}\n \n {TranslateString(460, `You will spend: ${pizzaCosts(val)} RCHAP`)}\n
\n \n \n Number(maxTickets) || parseInt(val) > 50 || parseInt(val) < 1}\n onClick={async () => {\n setPendingTx(true)\n await handleBuy()\n setPendingTx(false)\n onDismiss()\n }}\n >\n {pendingTx ? TranslateString(488, 'Pending Confirmation') : TranslateString(464, 'Confirm')}\n \n \n
\n )\n}\n\nexport default BuyTicketModal\n\nconst Tips = styled.div`\n margin-left: 0.4em;\n font-size: 14px;\n font-weight: 600;\n color: ${(props) => props.theme.colors.primary};\n`\n\nconst Final = styled.div`\n margin-top: 1em;\n text-align: center;\n font-size: 20px;\n font-weight: 600;\n color: ${(props) => props.theme.colors.primary};\n`\nconst Announce = styled.div`\n margin-top: 1em;\n margin-left: 0.4em;\n color: #ed4b9e;\n`\n","import React from 'react'\nimport { useTotalClaim } from 'hooks/useTickets'\nimport { getBalanceNumber } from 'utils/formatBalance'\nimport CardValue from './CardValue'\n\nconst PizzaWinnings = () => {\n const { claimAmount } = useTotalClaim()\n return \n}\n\nexport default PizzaWinnings\n","import React from 'react'\nimport { Text } from '@pizzafinance/ui-sdk'\nimport { getBalanceNumber } from 'utils/formatBalance'\nimport { useTotalRewards } from 'hooks/useTickets'\n\nconst LotteryJackpot = () => {\n const lotteryPrizeAmount = useTotalRewards()\n\n return (\n \n {getBalanceNumber(lotteryPrizeAmount).toLocaleString(undefined, {\n maximumFractionDigits: 2,\n })}\n \n )\n}\n\nexport default LotteryJackpot\n","import React, { useState, useCallback } from 'react'\nimport styled from 'styled-components'\nimport { Heading, Card, CardBody, Button, useModal } from '@pizzafinance/ui-sdk'\nimport { getPizzaAddress } from 'utils/addressHelpers'\nimport { getBalanceNumber } from 'utils/formatBalance'\nimport useI18n from 'hooks/useI18n'\nimport useGetLotteryHasDrawn from 'hooks/useGetLotteryHasDrawn'\nimport useTokenBalance from 'hooks/useTokenBalance'\nimport { useMultiClaimLottery } from 'hooks/useBuyLottery'\nimport { useTotalClaim } from 'hooks/useTickets'\n\nimport BuyModal from 'views/Lottery/components/TicketCard/BuyTicketModal'\nimport PizzaWinnings from './PizzaWinnings'\nimport LotteryJackpot from './LotteryJackpot'\n\nconst StyledLotteryCard = styled(Card)`\n background-image: url('/images/lottery-bg.png');\n background-repeat: no-repeat;\n background-position: top right;\n min-height: 376px;\n`\nconst Block = styled.div`\n margin-bottom: 16px;\n`\nconst CardImage = styled.img`\n margin-bottom: 16px;\n`\nconst Label = styled.div`\ncolor: ${({ theme }) => theme.colors.textSubtle};\n font-size: 14px;\n`\nconst Actions = styled.div`\n display: flex;\n margin-top: 24px;\n button {\n flex: 1 0 50%;\n }\n `\n\nconst FarmedStakingCard = () => {\nconst lotteryHasDrawn = useGetLotteryHasDrawn()\n const [requesteClaim, setRequestedClaim] = useState(false)\n const TranslateString = useI18n()\n const { claimAmount } = useTotalClaim()\n const { onMultiClaim } = useMultiClaimLottery()\n\n const pizzaBalance = useTokenBalance(getPizzaAddress())\n\n\n const handleClaim = useCallback(async () => {\n try {\n setRequestedClaim(true)\n const txHash = await onMultiClaim()\n // user rejected tx or didn't go thru\n if (txHash) {\n setRequestedClaim(false)\n }\n } catch (e) {\n console.error(e)\n }\n }, [onMultiClaim, setRequestedClaim])\n\n const [onPresentBuy] = useModal()\n\n return (\n \n \n \n {TranslateString(550, 'RCHAP Lottery Desk')}\n \n \n \n \n \n \n \n \n \n \n \n \n {TranslateString(556, 'Collect Winnings')}\n \n \n \n \n \n )\n}\n\nexport default FarmedStakingCard\n","import React from 'react'\nimport styled from 'styled-components'\nimport { Card, CardBody, Heading, Link } from '@pizzafinance/ui-sdk'\nimport useI18n from 'hooks/useI18n'\n// import { useGetStats } from 'hooks/api'\n\nconst StyledPartnerCard = styled(Card)`\n align-items: center;\n display: flex;\n flex: 1;\n`\nconst CardImage = styled.img`\n margin: 2px;\n`\nconst StyledLink = styled(Link)`\n align-self: center;\n margin-top: 16px;\n`\n\nconst PartnerCard = () => {\n const TranslateString = useI18n()\n// const data = useGetStats()\n// const tvl = data ? data.total_value_locked_all.toLocaleString('en-US', { maximumFractionDigits: 0 }) : null\n\n return (\n \n \n \n {TranslateString(550, 'Powered by')}\n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default PartnerCard\n","import React, { useCallback, useRef } from 'react'\nimport styled from 'styled-components'\nimport { Heading, Card, CardBody, Flex, ArrowForwardIcon, Skeleton } from '@pizzafinance/ui-sdk'\nimport { NavLink } from 'react-router-dom'\nimport useI18n from 'hooks/useI18n'\nimport BigNumber from 'bignumber.js'\nimport { QuoteToken } from 'config/constants/types'\nimport { useFarms, usePriceBnbBusd } from 'state/hooks'\nimport { BLOCKS_PER_YEAR, PIZZA_PER_BLOCK, PIZZA_POOL_PID } from 'config'\n\nconst StyledFarmStakingCard = styled(Card)`\n margin-left: auto;\n margin-right: auto;\n width: 100%;\n\n ${({ theme }) => theme.mediaQueries.lg} {\n margin: 0;\n max-width: none;\n }\n`\nconst CardMidContent = styled(Heading).attrs({ size: 'xl' })`\n line-height: 44px;\n`\nconst EarnAPYCard = () => {\n const TranslateString = useI18n()\n const farmsLP = useFarms()\n const bnbPrice = usePriceBnbBusd()\n\n const maxAPY = useRef(Number.MIN_VALUE)\n\n const getHighestAPY = () => {\n const activeFarms = farmsLP.filter((farm) => farm.pid !== 0 && farm.multiplier !== '0X')\n\n calculateAPY(activeFarms)\n\n return (maxAPY.current * 100).toLocaleString('en-US').slice(0, -1)\n }\n\n const calculateAPY = useCallback(\n (farmsToDisplay) => {\n const pizzaPriceVsBNB = new BigNumber(farmsLP.find((farm) => farm.pid === PIZZA_POOL_PID)?.tokenPriceVsQuote || 0)\n\n farmsToDisplay.map((farm) => {\n if (!farm.tokenAmount || !farm.lpTotalInQuoteToken || !farm.lpTotalInQuoteToken) {\n return farm\n }\n const pizzaRewardPerBlock = PIZZA_PER_BLOCK.times(farm.poolWeight)\n const pizzaRewardPerYear = pizzaRewardPerBlock.times(BLOCKS_PER_YEAR)\n\n let apy = pizzaPriceVsBNB.times(pizzaRewardPerYear).div(farm.lpTotalInQuoteToken)\n\n if (farm.quoteTokenSymbol === QuoteToken.BUSD) {\n apy = pizzaPriceVsBNB.times(pizzaRewardPerYear).div(farm.lpTotalInQuoteToken).times(bnbPrice)\n } else if (farm.quoteTokenSymbol === QuoteToken.PIZZA) {\n apy = pizzaRewardPerYear.div(farm.lpTotalInQuoteToken)\n } else if (farm.dual) {\n const pizzaApy =\n farm && pizzaPriceVsBNB.times(pizzaRewardPerBlock).times(BLOCKS_PER_YEAR).div(farm.lpTotalInQuoteToken)\n const dualApy =\n farm.tokenPriceVsQuote &&\n new BigNumber(farm.tokenPriceVsQuote)\n .times(farm.dual.rewardPerBlock)\n .times(BLOCKS_PER_YEAR)\n .div(farm.lpTotalInQuoteToken)\n\n apy = pizzaApy && dualApy && pizzaApy.plus(dualApy)\n }\n\n if (maxAPY.current < apy.toNumber()) maxAPY.current = apy.toNumber()\n\n return apy\n })\n },\n [bnbPrice, farmsLP],\n )\n\n return (\n \n \n \n Earn up to\n \n \n {getHighestAPY() ? (\n `${getHighestAPY()}% ${TranslateString(736, 'APY')}`\n ) : (\n \n )}\n \n \n \n in Farms\n \n \n \n \n \n \n \n )\n}\n\nexport default EarnAPYCard\n","import React from 'react'\nimport styled from 'styled-components'\nimport orderBy from 'lodash/orderBy'\nimport { Heading, Card, CardBody, Flex, ArrowForwardIcon } from '@pizzafinance/ui-sdk'\nimport { NavLink } from 'react-router-dom'\nimport pools from 'config/constants/pools'\nimport { Pool } from 'state/types'\n\nconst StyledFarmStakingCard = styled(Card)`\n background: linear-gradient(#EF4E7B, #6445DD);\n margin-left: auto;\n margin-right: auto;\n width: 100%;\n ${({ theme }) => theme.mediaQueries.lg} {\n margin: 0;\n max-width: none;\n }\n`\nconst CardMidContent = styled(Heading).attrs({ size: 'xl' })`\n line-height: 44px;\n`\nconst EarnAssetCard = () => {\n const latestPools: Pool[] = orderBy(pools, ['sortOrder', 'pid'], ['desc', 'desc']).slice(0, 2)\n\n // Always include RCHAP\n const assets = ['RCHAP', ...latestPools.map((pool) => pool.tokenName)].join(', ')\n\n return (\n \n \n \n Earn\n \n {assets}\n \n \n in Pools\n \n \n \n \n \n \n \n )\n}\n\nexport default EarnAssetCard\n","import { usePricePizzaBusd } from 'state/hooks'\nimport { getBalanceNumber } from 'utils/formatBalance'\nimport { useTotalRewards } from './useTickets'\n\nconst useLotteryTotalPrizesUsd = () => {\n const totalRewards = useTotalRewards()\n const totalPizza = getBalanceNumber(totalRewards)\n const pizzaPriceBusd = usePricePizzaBusd()\n\n return totalPizza * pizzaPriceBusd.toNumber()\n}\n\nexport default useLotteryTotalPrizesUsd\n","import React from 'react'\nimport styled from 'styled-components'\nimport { Heading, Card, CardBody, Flex, ArrowForwardIcon } from '@pizzafinance/ui-sdk'\nimport { NavLink } from 'react-router-dom'\nimport useLotteryTotalPrizesUsd from 'hooks/useLotteryTotalPrizesUsd'\n\nconst StyledFarmStakingCard = styled(Card)`\n margin-left: auto;\n margin-right: auto;\n width: 100%;\n\n ${({ theme }) => theme.mediaQueries.lg} {\n margin: 0;\n max-width: none;\n }\n`\nconst CardMidContent = styled(Heading).attrs({ size: 'xl' })`\n line-height: 44px;\n`\nconst WinCard = () => {\n const lotteryPrize = Math.round(useLotteryTotalPrizesUsd()).toLocaleString()\n\n return (\n \n \n \n Lottery with\n \n ${lotteryPrize}\n \n \n up for grabs\n \n \n \n \n \n \n \n )\n}\n\nexport default WinCard\n","import React from 'react'\nimport styled from 'styled-components'\nimport { Heading, Text, BaseLayout } from '@pizzafinance/ui-sdk'\nimport useI18n from 'hooks/useI18n'\nimport Page from 'components/layout/Page'\nimport PizzaStats from './components/PizzaStats'\nimport FarmStakingCard from './components/FarmStakingCard'\nimport LotteryCard from './components/LotteryCard'\nimport TotalValueLockedCard from './components/TotalValueLockedCard'\nimport EarnAPYCard from './components/EarnAPYCard'\nimport EarnAssetCard from './components/EarnAssetCard'\nimport WinCard from './components/WinCard'\n\nconst Hero = styled.div`\n align-items: center;\n background-image: url('/images/mascottbg.svg');\n background-repeat: no-repeat;\n background-position: top center;\n display: flex;\n justify-content: center;\n flex-direction: column;\n margin: auto;\n margin-bottom: 32px;\n padding-top: 116px;\n text-align: center;\n\n ${({ theme }) => theme.mediaQueries.lg} {\n background-image: url('/images/rchap1.png'), url('/images/chap.png');\n background-position: left center, right center;\n height: 200px;\n padding-top: 0;\n }\n`\n\nconst Cards = styled(BaseLayout)`\n align-items: stretch;\n justify-content: stretch;\n margin-bottom: 48px;\n\n & > div {\n grid-column: span 6;\n width: 100%;\n }\n\n ${({ theme }) => theme.mediaQueries.sm} {\n & > div {\n grid-column: span 8;\n }\n }\n\n ${({ theme }) => theme.mediaQueries.lg} {\n & > div {\n grid-column: span 6;\n }\n }\n`\n\nconst CTACards = styled(BaseLayout)`\n align-items: start;\n margin-bottom: 32px;\n\n & > div {\n grid-column: span 6;\n }\n\n ${({ theme }) => theme.mediaQueries.sm} {\n & > div {\n grid-column: span 8;\n }\n }\n\n ${({ theme }) => theme.mediaQueries.lg} {\n & > div {\n grid-column: span 4;\n }\n }\n`\n\nconst Home: React.FC = () => {\n const TranslateString = useI18n()\n\n return (\n \n \n \n {TranslateString(576, 'Chapswap Finance')}\n \n {TranslateString(578, 'Supercharge DEFI on Bitcoin with the #1 AMM on Bitfinity EVM.')}\n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n )\n}\n\nexport default Home\n","import React from 'react'\nimport styled from 'styled-components'\nimport { ChevronDownIcon, ChevronUpIcon, Text } from '@pizzafinance/ui-sdk'\n\nexport interface ExpandableSectionButtonProps {\n onClick?: () => void\n expanded?: boolean\n}\n\nconst Wrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n\n svg {\n fill: ${({ theme }) => theme.colors.primary};\n }\n`\n\nconst ExpandableSectionButton: React.FC = ({ onClick, expanded }) => {\n return (\n onClick()}>\n \n {expanded ? 'Hide' : 'Details'}\n \n {expanded ? : }\n \n )\n}\n\nExpandableSectionButton.defaultProps = {\n expanded: false,\n}\n\nexport default ExpandableSectionButton\n","// Constructing the two forward-slash-separated parts of the 'Add Liquidity' URL\n// Each part of the url represents a different side of the LP pair.\n// In the URL, using the quote token 'BNB' is represented by 'ETH'\nconst getLiquidityUrlPathParts = ({ quoteTokenAdresses, quoteTokenSymbol, tokenAddresses }) => {\n const chainId = process.env.REACT_APP_CHAIN_ID\n const firstPart = quoteTokenSymbol === 'BNB' ? 'ETH' : quoteTokenAdresses[chainId]\n const secondPart = tokenAddresses[chainId]\n return `${firstPart}/${secondPart}`\n}\n\nexport default getLiquidityUrlPathParts\n","import React from 'react'\nimport useI18n from 'hooks/useI18n'\nimport styled from 'styled-components'\n// import BigNumber from 'bignumber.js'\nimport { Text, Flex, Link, LinkExternal } from '@pizzafinance/ui-sdk'\n// import { Farm } from 'state/types'\nimport getLiquidityUrlPathParts from 'utils/getLiquidityUrlPathParts'\n\nexport interface TokenAddressesObject {\n 355113?: string\n 97?: string\n}\n\nexport interface ExpandableSectionProps {\n bscScanAddress?: string\n removed?: boolean\n totalValueFormated?: string\n lpLabel?: string\n quoteTokenAdresses?: TokenAddressesObject\n quoteTokenSymbol?: string\n tokenAddresses: TokenAddressesObject\n}\n\nconst Wrapper = styled.div`\n margin-top: 24px;\n`\n\nconst StyledLinkExternal = styled(LinkExternal)`\n text-decoration: none;\n font-weight: normal;\n color: ${({ theme }) => theme.colors.text};\n display: flex;\n align-items: center;\n\n svg {\n padding-left: 4px;\n height: 18px;\n width: auto;\n fill: ${({ theme }) => theme.colors.primary};\n }\n`\n\nconst DetailsSection: React.FC = ({\n bscScanAddress,\n removed,\n totalValueFormated,\n lpLabel,\n quoteTokenAdresses,\n quoteTokenSymbol,\n tokenAddresses,\n}) => {\n const TranslateString = useI18n()\n const liquidityUrlPathParts = getLiquidityUrlPathParts({ quoteTokenAdresses, quoteTokenSymbol, tokenAddresses })\n// const lpAddress = getLpAddress()\n return (\n \n \n {TranslateString(316, 'Stake')}:\n \n {lpLabel}\n \n \n {!removed && (\n \n {TranslateString(23, ' ')}\n {/* \n {lpLabel}\n */}\n \n )}\n \n \n {TranslateString(356, 'View on Explorer')}\n \n \n \n )\n}\n\nexport default DetailsSection\n","import React from 'react'\nimport styled from 'styled-components'\nimport { Tag, Flex, Heading, Image } from '@pizzafinance/ui-sdk'\nimport { CommunityTag, CoreTag } from 'components/Tags'\n\nexport interface ExpandableSectionProps {\n lpLabel?: string\n multiplier?: string\n isCommunityFarm?: boolean\n farmImage?: string\n tokenSymbol?: string\n}\n\nconst Wrapper = styled(Flex)`\n svg {\n margin-right: 0.25rem;\n }\n`\n\nconst MultiplierTag = styled(Tag)`\n margin-left: 4px;\n`\n\nconst CardHeading: React.FC = ({\n lpLabel,\n multiplier,\n isCommunityFarm,\n farmImage,\n tokenSymbol,\n}) => {\n return (\n \n {tokenSymbol}\n \n {lpLabel}\n \n {isCommunityFarm ? : }\n {multiplier}\n \n \n \n )\n}\n\nexport default CardHeading\n","import BigNumber from 'bignumber.js'\nimport React, { useCallback, useMemo, useState } from 'react'\nimport { Button, Modal } from '@pizzafinance/ui-sdk'\nimport ModalActions from 'components/ModalActions'\nimport TokenInput from 'components/TokenInput'\nimport useI18n from 'hooks/useI18n'\nimport { getFullDisplayBalance } from 'utils/formatBalance'\n\ninterface DepositModalProps {\n max: BigNumber\n onConfirm: (amount: string) => void\n onDismiss?: () => void\n tokenName?: string\n}\n\nconst DepositModal: React.FC = ({ max, onConfirm, onDismiss, tokenName = '' }) => {\n const [val, setVal] = useState('')\n const [pendingTx, setPendingTx] = useState(false)\n const TranslateString = useI18n()\n const fullBalance = useMemo(() => {\n return getFullDisplayBalance(max)\n }, [max])\n\n const handleChange = useCallback(\n (e: React.FormEvent) => {\n setVal(e.currentTarget.value)\n },\n [setVal],\n )\n\n const handleSelectMax = useCallback(() => {\n setVal(fullBalance)\n }, [fullBalance, setVal])\n\n return (\n \n \n \n \n {\n setPendingTx(true)\n await onConfirm(val)\n setPendingTx(false)\n onDismiss()\n }}\n >\n {pendingTx ? TranslateString(488, 'Pending Confirmation') : TranslateString(464, 'Confirm')}\n \n \n \n )\n}\n\nexport default DepositModal\n","import BigNumber from 'bignumber.js'\nimport React, { useCallback, useMemo, useState } from 'react'\nimport { Button, Modal } from '@pizzafinance/ui-sdk'\nimport ModalActions from 'components/ModalActions'\nimport TokenInput from 'components/TokenInput'\nimport useI18n from 'hooks/useI18n'\nimport { getFullDisplayBalance } from 'utils/formatBalance'\n\ninterface WithdrawModalProps {\n max: BigNumber\n onConfirm: (amount: string) => void\n onDismiss?: () => void\n tokenName?: string\n}\n\nconst WithdrawModal: React.FC = ({ onConfirm, onDismiss, max, tokenName = '' }) => {\n const [val, setVal] = useState('')\n const [pendingTx, setPendingTx] = useState(false)\n const TranslateString = useI18n()\n const fullBalance = useMemo(() => {\n return getFullDisplayBalance(max)\n }, [max])\n\n const handleChange = useCallback(\n (e: React.FormEvent) => {\n setVal(e.currentTarget.value)\n },\n [setVal],\n )\n\n const handleSelectMax = useCallback(() => {\n setVal(fullBalance)\n }, [fullBalance, setVal])\n\n return (\n \n \n \n \n {\n setPendingTx(true)\n await onConfirm(val)\n setPendingTx(false)\n onDismiss()\n }}\n >\n {pendingTx ? TranslateString(488, 'Pending Confirmation') : TranslateString(464, 'Confirm')}\n \n \n \n )\n}\n\nexport default WithdrawModal\n","import React from 'react'\nimport styled from 'styled-components'\nimport BigNumber from 'bignumber.js'\nimport { Button, Flex, Heading, IconButton, AddIcon, MinusIcon, useModal } from '@pizzafinance/ui-sdk'\nimport useI18n from 'hooks/useI18n'\nimport useStake from 'hooks/useStake'\nimport useUnstake from 'hooks/useUnstake'\nimport { getBalanceNumber } from 'utils/formatBalance'\nimport DepositModal from '../DepositModal'\nimport WithdrawModal from '../WithdrawModal'\n\ninterface FarmCardActionsProps {\n stakedBalance?: BigNumber\n tokenBalance?: BigNumber\n tokenName?: string\n pid?: number\n}\n\nconst IconButtonWrapper = styled.div`\n display: flex;\n svg {\n width: 20px;\n }\n`\n\nconst StakeAction: React.FC = ({ stakedBalance, tokenBalance, tokenName, pid }) => {\n const TranslateString = useI18n()\n const { onStake } = useStake(pid)\n const { onUnstake } = useUnstake(pid)\n\n const rawStakedBalance = getBalanceNumber(stakedBalance)\n const displayBalance = rawStakedBalance.toLocaleString()\n\n const [onPresentDeposit] = useModal()\n const [onPresentWithdraw] = useModal(\n ,\n )\n\n const renderStakingButtons = () => {\n return rawStakedBalance === 0 ? (\n \n ) : (\n \n \n \n \n \n \n \n \n )\n }\n\n return (\n \n {displayBalance}\n {renderStakingButtons()}\n \n )\n}\n\nexport default StakeAction\n","import React, { useState } from 'react'\nimport BigNumber from 'bignumber.js'\nimport { Button, Flex, Heading } from '@pizzafinance/ui-sdk'\nimport useI18n from 'hooks/useI18n'\nimport { useHarvest } from 'hooks/useHarvest'\nimport { getBalanceNumber } from 'utils/formatBalance'\n\ninterface FarmCardActionsProps {\n earnings?: BigNumber\n pid?: number\n}\n\nconst HarvestAction: React.FC = ({ earnings, pid }) => {\n const TranslateString = useI18n()\n const [pendingTx, setPendingTx] = useState(false)\n const { onReward } = useHarvest(pid)\n\n const rawEarningsBalance = getBalanceNumber(earnings)\n const displayBalance = rawEarningsBalance.toLocaleString()\n\n return (\n \n {displayBalance}\n {\n setPendingTx(true)\n await onReward()\n setPendingTx(false)\n }}\n >\n {TranslateString(999, 'Harvest')}\n \n \n )\n}\n\nexport default HarvestAction\n","import React, { useMemo, useState, useCallback } from 'react'\nimport BigNumber from 'bignumber.js'\nimport styled from 'styled-components'\nimport { provider } from 'web3-core'\nimport { getContract } from 'utils/erc20'\nimport { Button, Flex, Text } from '@pizzafinance/ui-sdk'\nimport { Farm } from 'state/types'\nimport { useFarmFromSymbol, useFarmUser } from 'state/hooks'\nimport useI18n from 'hooks/useI18n'\nimport UnlockButton from 'components/UnlockButton'\nimport { useApprove } from 'hooks/useApprove'\nimport StakeAction from './StakeAction'\nimport HarvestAction from './HarvestAction'\n\nconst Action = styled.div`\n padding-top: 16px;\n`\nexport interface FarmWithStakedValue extends Farm {\n apy?: BigNumber\n}\n\ninterface FarmCardActionsProps {\n farm: FarmWithStakedValue\n ethereum?: provider\n account?: string\n}\n\nconst CardActions: React.FC = ({ farm, ethereum, account }) => {\n const TranslateString = useI18n()\n const [requestedApproval, setRequestedApproval] = useState(false)\n const { pid, lpAddresses } = useFarmFromSymbol(farm.lpSymbol)\n const { allowance, tokenBalance, stakedBalance, earnings } = useFarmUser(pid)\n const lpAddress = lpAddresses[process.env.REACT_APP_CHAIN_ID]\n const lpName = farm.lpSymbol.toUpperCase()\n const isApproved = account && allowance && allowance.isGreaterThan(0)\n\n const lpContract = useMemo(() => {\n return getContract(ethereum as provider, lpAddress)\n }, [ethereum, lpAddress])\n\n const { onApprove } = useApprove(lpContract)\n\n const handleApprove = useCallback(async () => {\n try {\n setRequestedApproval(true)\n await onApprove()\n setRequestedApproval(false)\n } catch (e) {\n console.error(e)\n }\n }, [onApprove])\n\n const renderApprovalOrStakeButton = () => {\n return isApproved ? (\n \n ) : (\n \n )\n }\n\n return (\n \n \n \n {/* TODO: Is there a way to get a dynamic value here from useFarmFromSymbol? */}\n RCHAP\n \n \n {TranslateString(999, 'Earned')}\n \n \n \n \n \n {lpName}\n \n \n {TranslateString(999, 'Staked')}\n \n \n {!account ? : renderApprovalOrStakeButton()}\n \n )\n}\n\nexport default CardActions\n","const roundToTwoDp = (number) => Math.round(number * 100) / 100\n\nexport const calculatePizzaEarnedPerThousandDollars = ({ numberOfDays, farmApy, pizzaPrice }) => {\n // Everything here is worked out relative to a year, with the asset compounding daily\n const timesCompounded = 365\n // We use decimal values rather than % in the math for both APY and the number of days being calculates as a proportion of the year\n const apyAsDecimal = farmApy / 100\n const daysAsDecimalOfYear = numberOfDays / timesCompounded\n // Calculate the starting PIZZA balance with a dollar balance of $1000.\n const principal = 1000 / pizzaPrice\n\n // This is a translation of the typical mathematical compounding APY formula. Details here: https://www.calculatorsoup.com/calculators/financial/compound-interest-calculator.php\n const finalAmount = principal * (1 + apyAsDecimal / timesCompounded) ** (timesCompounded * daysAsDecimalOfYear)\n\n // To get the pizza earned, deduct the amount after compounding (finalAmount) from the starting PIZZA balance (principal)\n const interestEarned = finalAmount - principal\n return roundToTwoDp(interestEarned)\n}\n\nexport const apyModalRoi = ({ amountEarned, amountInvested }) => {\n const percentage = (amountEarned / amountInvested) * 100\n return percentage.toFixed(2)\n}\n","import React from 'react'\nimport BigNumber from 'bignumber.js'\nimport styled from 'styled-components'\nimport { Modal, Text, LinkExternal, Flex } from '@pizzafinance/ui-sdk'\nimport useI18n from 'hooks/useI18n'\nimport getLiquidityUrlPathParts from 'utils/getLiquidityUrlPathParts'\nimport { calculatePizzaEarnedPerThousandDollars, apyModalRoi } from 'utils/compoundApyHelpers'\nimport { Address } from 'config/constants/types'\n\ninterface ApyCalculatorModalProps {\n onDismiss?: () => void\n lpLabel?: string\n pizzaPrice?: BigNumber\n apy?: BigNumber\n quoteTokenAdresses?: Address\n quoteTokenSymbol?: string\n tokenAddresses: Address\n}\n\nconst Grid = styled.div`\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n grid-template-rows: repeat(4, auto);\n margin-bottom: 24px;\n`\n\nconst GridItem = styled.div`\n margin-bottom: '10px';\n`\n\nconst Description = styled(Text)`\n max-width: 320px;\n margin-bottom: 28px;\n`\n\nconst ApyCalculatorModal: React.FC = ({\n onDismiss,\n lpLabel,\n quoteTokenAdresses,\n quoteTokenSymbol,\n tokenAddresses,\n pizzaPrice,\n apy,\n}) => {\n const TranslateString = useI18n()\n const liquidityUrlPathParts = getLiquidityUrlPathParts({ quoteTokenAdresses, quoteTokenSymbol, tokenAddresses })\n const farmApy = apy.times(new BigNumber(100)).toNumber()\n const oneThousandDollarsWorthOfPizza = 1000 / pizzaPrice.toNumber()\n\n const pizzaEarnedPerThousand1D = calculatePizzaEarnedPerThousandDollars({ numberOfDays: 1, farmApy, pizzaPrice })\n const pizzaEarnedPerThousand7D = calculatePizzaEarnedPerThousandDollars({ numberOfDays: 7, farmApy, pizzaPrice })\n const pizzaEarnedPerThousand30D = calculatePizzaEarnedPerThousandDollars({ numberOfDays: 30, farmApy, pizzaPrice })\n const pizzaEarnedPerThousand365D = calculatePizzaEarnedPerThousandDollars({ numberOfDays: 365, farmApy, pizzaPrice })\n\n return (\n \n \n \n \n {TranslateString(999, 'Timeframe')}\n \n \n \n \n {TranslateString(999, 'ROI')}\n \n \n \n \n {TranslateString(999, 'PIZZA per $1000')}\n \n \n {/* 1 day row */}\n \n 1d\n \n \n \n {apyModalRoi({ amountEarned: pizzaEarnedPerThousand1D, amountInvested: oneThousandDollarsWorthOfPizza })}%\n \n \n \n {pizzaEarnedPerThousand1D}\n \n {/* 7 day row */}\n \n 7d\n \n \n \n {apyModalRoi({ amountEarned: pizzaEarnedPerThousand7D, amountInvested: oneThousandDollarsWorthOfPizza })}%\n \n \n \n {pizzaEarnedPerThousand7D}\n \n {/* 30 day row */}\n \n 30d\n \n \n \n {apyModalRoi({ amountEarned: pizzaEarnedPerThousand30D, amountInvested: oneThousandDollarsWorthOfPizza })}%\n \n \n \n {pizzaEarnedPerThousand30D}\n \n {/* 365 day / APY row */}\n \n 365d(APY)\n \n \n \n {apyModalRoi({ amountEarned: pizzaEarnedPerThousand365D, amountInvested: oneThousandDollarsWorthOfPizza })}%\n \n \n \n {pizzaEarnedPerThousand365D}\n \n \n \n {TranslateString(\n 999,\n 'Calculated based on current rates. Compounding once daily. Rates are estimates provided for your convenience only, and by no means represent guaranteed returns.',\n )}\n \n \n \n {TranslateString(999, 'Get')} {lpLabel}\n \n \n \n )\n}\n\nexport default ApyCalculatorModal\n","import React from 'react'\nimport BigNumber from 'bignumber.js'\nimport { CalculateIcon, IconButton, useModal } from '@pizzafinance/ui-sdk'\nimport { Address } from 'config/constants/types'\nimport ApyCalculatorModal from './ApyCalculatorModal'\n\nexport interface ApyButtonProps {\n lpLabel?: string\n pizzaPrice?: BigNumber\n apy?: BigNumber\n quoteTokenAdresses?: Address\n quoteTokenSymbol?: string\n tokenAddresses: Address\n}\n\nconst ApyButton: React.FC = ({\n lpLabel,\n quoteTokenAdresses,\n quoteTokenSymbol,\n tokenAddresses,\n pizzaPrice,\n apy,\n}) => {\n const [onPresentApyModal] = useModal(\n ,\n )\n\n return (\n \n \n \n )\n}\n\nexport default ApyButton\n","import React, { useMemo, useState } from 'react'\nimport BigNumber from 'bignumber.js'\nimport styled, { keyframes } from 'styled-components'\nimport { Flex, Text, Skeleton } from '@pizzafinance/ui-sdk'\nimport { communityFarms } from 'config/constants'\nimport { Farm } from 'state/types'\nimport { provider } from 'web3-core'\nimport useI18n from 'hooks/useI18n'\nimport ExpandableSectionButton from 'components/ExpandableSectionButton'\nimport { QuoteToken } from 'config/constants/types'\nimport DetailsSection from './DetailsSection'\nimport CardHeading from './CardHeading'\nimport CardActionsContainer from './CardActionsContainer'\nimport ApyButton from './ApyButton'\n\nexport interface FarmWithStakedValue extends Farm {\n apy?: BigNumber\n}\n\nconst RainbowLight = keyframes`\n\t0% {\n\t\tbackground-position: 0% 50%;\n\t}\n\t50% {\n\t\tbackground-position: 100% 50%;\n\t}\n\t100% {\n\t\tbackground-position: 0% 50%;\n\t}\n`\n\nconst StyledCardAccent = styled.div`\n background: linear-gradient(\n 45deg,\n rgba(255, 0, 0, 1) 0%,\n rgba(255, 154, 0, 1) 10%,\n rgba(208, 222, 33, 1) 20%,\n rgba(79, 220, 74, 1) 30%,\n rgba(63, 218, 216, 1) 40%,\n rgba(47, 201, 226, 1) 50%,\n rgba(28, 127, 238, 1) 60%,\n rgba(95, 21, 242, 1) 70%,\n rgba(186, 12, 248, 1) 80%,\n rgba(251, 7, 217, 1) 90%,\n rgba(255, 0, 0, 1) 100%\n );\n background-size: 300% 300%;\n animation: ${RainbowLight} 2s linear infinite;\n border-radius: 16px;\n filter: blur(6px);\n position: absolute;\n top: -2px;\n right: -2px;\n bottom: -2px;\n left: -2px;\n z-index: -1;\n`\n\nconst FCard = styled.div`\n align-self: baseline;\n background: ${(props) => props.theme.card.background};\n border-radius: 16px;\n box-shadow: 0px 0px 10px rgba(9, 31, 67, 0.1);\n display: flex;\n flex-direction: column;\n justify-content: space-around;\n padding: 24px;\n position: relative;\n text-align: center;\n`\n\nconst Divider = styled.div`\n background-color: ${({ theme }) => theme.colors.borderColor};\n height: 1px;\n margin: 28px auto;\n width: 100%;\n`\n\nconst ExpandingWrapper = styled.div<{ expanded: boolean }>`\n height: ${(props) => (props.expanded ? '100%' : '0px')};\n overflow: hidden;\n`\n\ninterface FarmCardProps {\n farm: FarmWithStakedValue\n removed: boolean\n pizzaPrice?: BigNumber\n bnbPrice?: BigNumber\n ethereum?: provider\n account?: string\n}\n\nconst FarmCard: React.FC = ({ farm, removed, pizzaPrice, bnbPrice, ethereum, account }) => {\n const TranslateString = useI18n()\n\n const [showExpandableSection, setShowExpandableSection] = useState(false)\n\n const isCommunityFarm = communityFarms.includes(farm.tokenSymbol)\n // We assume the token name is coin pair + lp e.g. PIZZA-BNB LP, LINK-BNB LP,\n // NAR-PIZZA LP. The images should be pizza-bnb.svg, link-bnb.svg, nar-pizza.svg\n const farmImage = farm.lpSymbol.split(' ')[0].toLocaleLowerCase()\n\n const totalValue: BigNumber = useMemo(() => {\n if (!farm.lpTotalInQuoteToken) {\n return null\n }\n if (farm.quoteTokenSymbol === QuoteToken.BNB) {\n return bnbPrice.times(farm.lpTotalInQuoteToken)\n }\n if (farm.quoteTokenSymbol === QuoteToken.PIZZA) {\n return pizzaPrice.times(farm.lpTotalInQuoteToken)\n }\n return farm.lpTotalInQuoteToken\n }, [bnbPrice, pizzaPrice, farm.lpTotalInQuoteToken, farm.quoteTokenSymbol])\n\n const totalValueFormated = totalValue\n ? `$${Number(totalValue).toLocaleString(undefined, { maximumFractionDigits: 0 })}`\n : '-'\n\n const lpLabel = farm.lpSymbol && farm.lpSymbol.toUpperCase().replace('RCHAPFINANCE', '')\n const earnLabel = farm.dual ? farm.dual.earnLabel : 'RCHAP'\n const farmAPY = farm.apy && farm.apy.times(new BigNumber(100)).toNumber().toLocaleString('en-US').slice(0, -1)\n\n const { quoteTokenAdresses, quoteTokenSymbol, tokenAddresses } = farm\n\n return (\n \n {farm.tokenSymbol === 'RCHAP' && }\n \n {!removed && (\n \n {TranslateString(352, 'APY')}:\n \n {farm.apy ? (\n <>\n \n {farmAPY}%\n \n ) : (\n \n )}\n \n \n )}\n \n {TranslateString(318, 'Earn')}:\n {earnLabel}\n \n \n \n setShowExpandableSection(!showExpandableSection)}\n expanded={showExpandableSection}\n />\n \n \n \n \n )\n}\n\nexport default FarmCard\n","import React from 'react'\nimport styled from 'styled-components'\nimport { useRouteMatch, Link } from 'react-router-dom'\nimport { ButtonMenu, ButtonMenuItem } from '@pizzafinance/ui-sdk'\nimport useI18n from 'hooks/useI18n'\n\nconst FarmTabButtons = () => {\n const { url, isExact } = useRouteMatch()\n const TranslateString = useI18n()\n\n return (\n \n \n \n {TranslateString(999, 'Active')}\n \n \n {TranslateString(999, 'Inactive')}\n \n \n \n )\n}\n\nexport default FarmTabButtons\n\nconst Wrapper = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n margin-bottom: 32px;\n`\n","import styled from 'styled-components'\n\nexport default styled.div`\n background-color: ${({ theme }) => theme.colors.textSubtle};\n height: 1px;\n margin: 0 auto 32px;\n width: 100%;\n`\n","import React, { useEffect, useCallback } from 'react'\nimport { Route, useRouteMatch } from 'react-router-dom'\nimport { useDispatch } from 'react-redux'\nimport BigNumber from 'bignumber.js'\nimport { useWallet } from '@binance-chain/bsc-use-wallet'\nimport { provider } from 'web3-core'\nimport { Image, Heading } from '@pizzafinance/ui-sdk'\nimport { BLOCKS_PER_YEAR, PIZZA_PER_BLOCK, PIZZA_POOL_PID } from 'config'\nimport FlexLayout from 'components/layout/Flex'\nimport Page from 'components/layout/Page'\nimport { useFarms, usePriceBnbBusd, usePricePizzaBusd } from 'state/hooks'\nimport useRefresh from 'hooks/useRefresh'\nimport { fetchFarmUserDataAsync } from 'state/actions'\nimport { QuoteToken } from 'config/constants/types'\nimport useI18n from 'hooks/useI18n'\nimport FarmCard, { FarmWithStakedValue } from './components/FarmCard/FarmCard'\nimport FarmTabButtons from './components/FarmTabButtons'\nimport Divider from './components/Divider'\n\nconst Farms: React.FC = () => {\n const { path } = useRouteMatch()\n const TranslateString = useI18n()\n const farmsLP = useFarms()\n const pizzaPrice = usePricePizzaBusd()\n const bnbPrice = usePriceBnbBusd()\n const { account, ethereum }: { account: string; ethereum: provider } = useWallet()\n\n const dispatch = useDispatch()\n const { fastRefresh } = useRefresh()\n useEffect(() => {\n if (account) {\n dispatch(fetchFarmUserDataAsync(account))\n }\n }, [account, dispatch, fastRefresh])\n\n const activeFarms = farmsLP.filter((farm) => farm.pid !== 0 && farm.multiplier !== '0X')\n const inactiveFarms = farmsLP.filter((farm) => farm.pid !== 0 && farm.multiplier === '0X')\n\n // /!\\ This function will be removed soon\n // This function compute the APY for each farm and will be replaced when we have a reliable API\n // to retrieve assets prices against USD\n const farmsList = useCallback(\n (farmsToDisplay, removed: boolean) => {\n const pizzaPriceVsBNB = new BigNumber(farmsLP.find((farm) => farm.pid === PIZZA_POOL_PID)?.tokenPriceVsQuote || 0)\n const farmsToDisplayWithAPY: FarmWithStakedValue[] = farmsToDisplay.map((farm) => {\n if (!farm.tokenAmount || !farm.lpTotalInQuoteToken || !farm.lpTotalInQuoteToken) {\n return farm\n }\n const pizzaRewardPerBlock = PIZZA_PER_BLOCK.times(farm.poolWeight)\n const pizzaRewardPerYear = pizzaRewardPerBlock.times(BLOCKS_PER_YEAR)\n\n let apy = pizzaPriceVsBNB.times(pizzaRewardPerYear).div(farm.lpTotalInQuoteToken)\n\n if (farm.quoteTokenSymbol === QuoteToken.USDT || farm.quoteTokenSymbol === QuoteToken.USDC) {\n apy = pizzaPriceVsBNB.times(pizzaRewardPerYear).div(farm.lpTotalInQuoteToken).times(bnbPrice)\n } else if (farm.quoteTokenSymbol === QuoteToken.PIZZA) {\n apy = pizzaRewardPerYear.div(farm.lpTotalInQuoteToken)\n } else if (farm.dual) {\n const pizzaApy =\n farm && pizzaPriceVsBNB.times(pizzaRewardPerBlock).times(BLOCKS_PER_YEAR).div(farm.lpTotalInQuoteToken)\n const dualApy =\n farm.tokenPriceVsQuote &&\n new BigNumber(farm.tokenPriceVsQuote)\n .times(farm.dual.rewardPerBlock)\n .times(BLOCKS_PER_YEAR)\n .div(farm.lpTotalInQuoteToken)\n\n apy = pizzaApy && dualApy && pizzaApy.plus(dualApy)\n }\n\n return { ...farm, apy }\n })\n return farmsToDisplayWithAPY.map((farm) => (\n \n ))\n },\n [bnbPrice, farmsLP, account, pizzaPrice, ethereum],\n )\n\n return (\n \n \n {TranslateString(999, 'Stake Chap-LP tokens to earn RCHAP')}\n \n {/* \n {TranslateString(999, 'CAUTION!: FARMS CALCULATED \"APY\" DATA IS REAL TIME AND AUTOMATICALLY COLLECTED FROM BLOCKCHAIN. DATA MAY NOT BE ACCURATE.')}\n */}\n \n
\n \n \n \n {farmsList(activeFarms, false)}\n \n \n {farmsList(inactiveFarms, true)}\n \n \n
\n \"Naruto\n
\n )\n}\n\nexport default Farms\n","import React from 'react'\n\nexport interface PastLotteryDataState {\n mostRecentLotteryNumber: number\n currentLotteryNumber: number\n historyError: boolean\n historyData: Array\n}\n\nexport default React.createContext({\n mostRecentLotteryNumber: 0,\n historyError: false,\n historyData: [],\n} as PastLotteryDataState)\n","import { useState, useEffect } from 'react'\n\nexport const useCurrentTime = () => {\n const [currentMillis, setCurrentMillis] = useState(new Date().getTime())\n\n useEffect(() => {\n const tick = () => {\n setCurrentMillis((prevMillis) => prevMillis + 1000)\n }\n\n const timerID = setInterval(() => tick(), 1000)\n\n return () => clearInterval(timerID)\n }, [])\n\n return currentMillis\n}\n\nexport default useCurrentTime\n","const MINUTE_IN_SECONDS = 60\nconst HOUR_IN_SECONDS = 3600\nconst DAY_IN_SECONDS = 86400\nconst MONTH_IN_SECONDS = 2629800\nconst YEAR_IN_SECONDS = 31557600\n\n/**\n * Format number of seconds into year, month, day, hour, minute, seconds\n *\n * @param seconds\n */\nconst getTimePeriods = (seconds: number) => {\n let delta = seconds\n const timeLeft = {\n years: 0,\n months: 0,\n days: 0,\n hours: 0,\n minutes: 0,\n seconds: 0,\n }\n\n if (delta >= YEAR_IN_SECONDS) {\n timeLeft.years = Math.floor(delta / YEAR_IN_SECONDS)\n delta -= timeLeft.years * YEAR_IN_SECONDS\n }\n\n if (delta >= MONTH_IN_SECONDS) {\n timeLeft.months = Math.floor(delta / MONTH_IN_SECONDS)\n delta -= timeLeft.months * MONTH_IN_SECONDS\n }\n\n if (delta >= DAY_IN_SECONDS) {\n timeLeft.days = Math.floor(delta / DAY_IN_SECONDS)\n delta -= timeLeft.days * DAY_IN_SECONDS\n }\n\n if (delta >= HOUR_IN_SECONDS) {\n timeLeft.hours = Math.floor(delta / HOUR_IN_SECONDS)\n delta -= timeLeft.hours * HOUR_IN_SECONDS\n }\n\n if (delta >= MINUTE_IN_SECONDS) {\n timeLeft.minutes = Math.floor(delta / MINUTE_IN_SECONDS)\n delta -= timeLeft.minutes * MINUTE_IN_SECONDS\n }\n\n timeLeft.seconds = delta\n\n return timeLeft\n}\n\nexport default getTimePeriods\n","import getTimePeriods from 'utils/getTimePeriods'\n\n// lottery draws UTC: 7:00, 19:00 should be 12 hours apart\nconst lotteryDrawHoursUtc = [7, 19]\n\nconst getClosestLotteryHour = (currentHour) => {\n switch (true) {\n case currentHour < lotteryDrawHoursUtc[0] || currentHour >= lotteryDrawHoursUtc[1]:\n return lotteryDrawHoursUtc[0]\n case currentHour < lotteryDrawHoursUtc[1]:\n return lotteryDrawHoursUtc[1]\n default:\n return 0\n }\n}\n\nconst getNextLotteryDrawTime = (currentMillis) => {\n const date = new Date(currentMillis)\n const currentHour = date.getUTCHours()\n const nextLotteryHour = getClosestLotteryHour(currentHour)\n // next lottery is tomorrow if the next lottery is at 2am UTC...\n // ...and current time is between 02:00am & 23:59pm UTC\n const nextLotteryIsTomorrow = nextLotteryHour === 2 && currentHour >= 2 && currentHour <= 23\n let millisTimeOfNextDraw\n\n if (nextLotteryIsTomorrow) {\n const tomorrow = new Date(currentMillis)\n const nextDay = tomorrow.getUTCDate() + 1\n tomorrow.setUTCDate(nextDay)\n millisTimeOfNextDraw = tomorrow.setUTCHours(nextLotteryHour, 0, 0, 0)\n } else {\n millisTimeOfNextDraw = date.setUTCHours(nextLotteryHour, 0, 0, 0)\n }\n\n return millisTimeOfNextDraw\n}\n\n// @ts-ignore\nconst getNextTicketSaleTime = (currentMillis) => (parseInt(currentMillis / 3600000) + 1) * 3600000\nconst hoursAndMinutesString = (hours, minutes) => `${parseInt(hours)}h, ${parseInt(minutes)}m`\n\nexport const getTicketSaleTime = (currentMillis): string => {\n const nextTicketSaleTime = getNextTicketSaleTime(currentMillis)\n const msUntilNextTicketSale = nextTicketSaleTime - currentMillis\n const { minutes } = getTimePeriods(msUntilNextTicketSale / 1000)\n const { hours } = getTimePeriods(msUntilNextTicketSale / 1000)\n return hoursAndMinutesString(hours, minutes)\n}\n\nexport const getLotteryDrawTime = (currentMillis): string => {\n const nextLotteryDrawTime = getNextLotteryDrawTime(currentMillis)\n const msUntilLotteryDraw = nextLotteryDrawTime - currentMillis\n const { minutes } = getTimePeriods(msUntilLotteryDraw / 1000)\n const { hours } = getTimePeriods(msUntilLotteryDraw / 1000)\n return hoursAndMinutesString(hours, minutes)\n}\n\nexport const getTicketSaleStep = () => (1 / 12) * 100\n\nexport const getLotteryDrawStep = (currentMillis) => {\n const msBetweenLotteries = 43200000\n const endTime = getNextLotteryDrawTime(currentMillis)\n const msUntilLotteryDraw = endTime - currentMillis\n const percentageRemaining = (msUntilLotteryDraw / msBetweenLotteries) * 100\n return 100 - percentageRemaining\n}\n","import React from 'react'\nimport styled from 'styled-components'\nimport { Text, Progress } from '@pizzafinance/ui-sdk'\nimport useI18n from 'hooks/useI18n'\nimport useGetLotteryHasDrawn from 'hooks/useGetLotteryHasDrawn'\nimport { useCurrentTime } from 'hooks/useTimer'\nimport {\n getLotteryDrawTime,\n getLotteryDrawStep,\n getTicketSaleTime,\n getTicketSaleStep,\n} from '../helpers/CountdownHelpers'\n\nconst ProgressWrapper = styled.div`\n display: block;\n width: 100%;\n`\n\nconst TopTextWrapper = styled.div`\n margin-top: 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n`\n\nconst BottomTextWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n`\n\nconst StyledPrimaryText = styled(Text)`\n margin-right: 16px;\n`\nconst LotteryProgress = () => {\n const TranslateString = useI18n()\n const lotteryHasDrawn = useGetLotteryHasDrawn()\n const currentMillis = useCurrentTime()\n const timeUntilTicketSale = getTicketSaleTime(currentMillis)\n const timeUntilLotteryDraw = getLotteryDrawTime(currentMillis)\n\n return (\n \n \n \n \n {lotteryHasDrawn ? timeUntilTicketSale : timeUntilLotteryDraw}\n \n \n {lotteryHasDrawn ? TranslateString(0, 'Until ticket sale') : TranslateString(0, 'Until lottery draw')}\n \n \n {lotteryHasDrawn && (\n \n \n {timeUntilLotteryDraw} {TranslateString(0, 'Until lottery draw')}\n \n \n )}\n \n )\n}\n\nexport default LotteryProgress\n","import React from 'react'\nimport styled from 'styled-components'\nimport { Heading, Text } from '@pizzafinance/ui-sdk'\nimport useI18n from 'hooks/useI18n'\nimport Container from 'components/layout/Container'\nimport LotteryProgress from './LotteryProgress'\n\nconst Title = styled(Heading).attrs({ as: 'h1', size: 'xl' })`\n color: ${({ theme }) => theme.colors.secondary};\n margin-bottom: 24px;\n`\n\nconst Blurb = styled(Text)`\n color: #ffffff;\n font-size: 20px;\n font-weight: 600;\n`\n\nconst StyledHero = styled.div`\n background-image: linear-gradient(180deg, #dcb46d 0%,#d0a860 100%);\n padding-bottom: 40px;\n padding-top: 40px;\n`\n\nconst StyledContainer = styled(Container)`\n display: flex;\n\n flex-direction: column;\n\n ${({ theme }) => theme.mediaQueries.sm} {\n flex-direction: row;\n }\n`\n\nconst LeftWrapper = styled.div`\n flex: 1;\n padding-right: 0;\n\n ${({ theme }) => theme.mediaQueries.sm} {\n padding-right: 24px;\n }\n\n ${({ theme }) => theme.mediaQueries.lg} {\n padding-right: 32px;\n }\n`\n\nconst RightWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1;\n padding-left: 0;\n margin-top: 16px;\n\n ${({ theme }) => theme.mediaQueries.sm} {\n margin-top: 0;\n padding-left: 24px;\n }\n\n ${({ theme }) => theme.mediaQueries.lg} {\n padding-left: 32px;\n }\n`\n\nconst Hero = () => {\n const TranslateString = useI18n()\n\n return (\n \n \n \n {TranslateString(999, 'The RCHAP Lottery')}\n {TranslateString(999, 'Buy tickets with RCHAP')}\n {TranslateString(999, 'Win if 2, 3, or 4 of your ticket numbers match!')}\n \n \n \n \n \n \n )\n}\n\nexport default Hero\n","import styled from 'styled-components'\n\nexport default styled.div`\n background-color: ${({ theme }) => theme.colors.textSubtle};\n height: 1px;\n margin: 0 auto 32px;\n width: 100%;\n`\n","import React from 'react'\nimport styled from 'styled-components'\n\nconst Loading: React.FC = () => \n\nconst StyledLoading = styled.div`\n border: 8px solid #f3f3f3;\n border-radius: 50%;\n border-top: 8px solid #ddd;\n border-bottom: 8px solid #ddd;\n width: 20px;\n height: 20px;\n -webkit-animation: spin 2s linear infinite;\n animation: spin 2s linear infinite;\n @-webkit-keyframes spin {\n 0% {\n -webkit-transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n }\n }\n\n @keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n`\n\nexport default Loading\n","import React, { useCallback } from 'react'\nimport { Button, Modal } from '@pizzafinance/ui-sdk'\nimport styled from 'styled-components'\nimport { useWinningNumbers } from 'hooks/useTickets'\nimport useI18n from 'hooks/useI18n'\n\ninterface UserTicketsModalProps {\n myTicketNumbers: Array\n from?: string\n onDismiss?: () => void\n}\n\nconst UserTicketsModal: React.FC = ({ myTicketNumbers, onDismiss, from }) => {\n const winNumbers = useWinningNumbers()\n const TranslateString = useI18n()\n const rewardMatch = useCallback(\n (number) => {\n let n = 0\n for (let i = winNumbers.length - 1; i >= 0; i--) {\n // eslint-disable-next-line eqeqeq\n if (winNumbers[i] == number[i]) n++\n }\n return n\n },\n [winNumbers],\n )\n\n const listItems = myTicketNumbers.map((number, index) => {\n if (rewardMatch(number[0]) > 1 && from !== 'buy') {\n const emoji = new Array(rewardMatch(number[0]) + 1).join('🤑')\n return (\n // eslint-disable-next-line react/no-array-index-key\n \n {emoji}\n {number.toString()}\n {emoji}\n \n )\n }\n // eslint-disable-next-line react/no-array-index-key\n return

{number.toString()}

\n })\n\n return (\n \n \n

{listItems}

\n
\n \n {TranslateString(438, 'Close')}\n \n
\n )\n}\n\nconst RewardP = styled.div`\n color: #ff8c28;\n`\n\nconst TicketsList = styled.div`\n text-align: center;\n overflow-y: auto;\n max-height: 400px;\n color: ${(props) => props.theme.colors.primary};\n`\n\nconst StyledButton = styled(Button)`\n margin-top: ${(props) => props.theme.spacing[2]}px;\n`\n\nexport default UserTicketsModal\n","import React, { useCallback, useState } from 'react'\nimport styled from 'styled-components'\nimport { Button, Heading, Won, useModal } from '@pizzafinance/ui-sdk'\nimport useI18n from 'hooks/useI18n'\nimport { getBalanceNumber } from 'utils/formatBalance'\nimport { useMultiClaimLottery } from 'hooks/useBuyLottery'\nimport useTickets, { useTotalClaim } from 'hooks/useTickets'\nimport Loading from '../Loading'\nimport MyTicketsModal from '../TicketCard/UserTicketsModal'\n\nconst WinningsWrapper = styled.div`\n display: flex;\n align-items: baseline;\n`\n\nconst IconWrapper = styled.div`\n margin-bottom: 16px;\n\n svg {\n width: 80px;\n height: 80px;\n }\n`\n\nconst StyledCardActions = styled.div`\n margin-top: ${(props) => props.theme.spacing[3]}px;\n`\n\nconst StyledCardContentInner = styled.div`\n align-items: center;\n display: flex;\n flex: 1;\n flex-direction: column;\n justify-content: space-between;\n`\n\nconst StyledButton = styled(Button)`\n margin-top: ${(props) => props.theme.spacing[1]}px;\n`\n\nconst PrizesWonContent: React.FC = () => {\n const [requestedClaim, setRequestedClaim] = useState(false)\n const TranslateString = useI18n()\n const { claimLoading, claimAmount } = useTotalClaim()\n const { onMultiClaim } = useMultiClaimLottery()\n const tickets = useTickets()\n const [onPresentMyTickets] = useModal()\n\n const handleClaim = useCallback(async () => {\n try {\n setRequestedClaim(true)\n const txHash = await onMultiClaim()\n // user rejected tx or didn't go thru\n if (txHash) {\n setRequestedClaim(false)\n }\n } catch (e) {\n console.error(e)\n }\n }, [onMultiClaim, setRequestedClaim])\n\n const winnings = getBalanceNumber(claimAmount).toFixed(2)\n\n return (\n \n \n \n \n \n {TranslateString(999, 'You won!')}\n \n {claimLoading && }\n {!claimLoading && (\n <>\n \n \n {winnings}\n \n \n RCHAP\n \n \n \n )}\n \n \n \n \n {TranslateString(432, 'View your tickets')}\n \n \n )\n}\n\nexport default PrizesWonContent\n","import React from 'react'\nimport styled from 'styled-components'\nimport { Text, Button, useModal } from '@pizzafinance/ui-sdk'\nimport useI18n from 'hooks/useI18n'\nimport useTickets from 'hooks/useTickets'\nimport MyTicketsModal from '../TicketCard/UserTicketsModal'\n\nconst Wrapper = styled.div`\n display: flex;\n`\n\nconst TextWrapper = styled.div`\n display: flex;\n flex-direction: column;\n`\n\nconst StyledText = styled(Text)`\n padding-left: 12px;\n`\n\nconst Image = styled.img`\n margin-right: 6px;\n\n ${({ theme }) => theme.mediaQueries.md} {\n margin-right: 20px;\n }\n`\nconst StyledButton = styled(Button)`\n padding: 0 12px;\n height: unset;\n`\n\nconst NoPrizesContent: React.FC = () => {\n const TranslateString = useI18n()\n const tickets = useTickets()\n const [onPresentMyTickets] = useModal()\n\n return (\n \n \"no\n \n {TranslateString(999, 'Sorry, no prizes to collect')}\n \n {TranslateString(432, 'View your tickets')}\n \n \n \n )\n}\n\nexport default NoPrizesContent\n","import React from 'react'\nimport styled from 'styled-components'\nimport { Card, CardBody } from '@pizzafinance/ui-sdk'\nimport { getBalanceNumber } from 'utils/formatBalance'\nimport { useTotalClaim } from 'hooks/useTickets'\nimport PrizesWonContent from './PrizesWonContent'\nimport NoPrizesContent from './NoPrizesContent'\n\nconst StyledCard = styled(Card)`\n ${(props) =>\n props.isDisabled\n ? ` \n margin-top: 16px;\n background-color: unset;\n box-shadow: unset;\n border: 1px solid ${props.theme.colors.textDisabled};\n\n ${props.theme.mediaQueries.sm} {\n margin-top: 24px;\n }\n\n ${props.theme.mediaQueries.lg} {\n margin-top: 32px;\n }\n `\n : ``}\n`\n\nconst YourPrizesCard: React.FC = () => {\n const { claimAmount } = useTotalClaim()\n\n const winnings = getBalanceNumber(claimAmount)\n const isAWin = winnings > 0\n\n return (\n \n {isAWin ? : }\n \n )\n}\n\nexport default YourPrizesCard\n","import React from 'react'\nimport styled from 'styled-components'\nimport { Heading, Card, CardBody, Ticket } from '@pizzafinance/ui-sdk'\nimport useI18n from 'hooks/useI18n'\nimport UnlockButton from 'components/UnlockButton'\n\nconst StyledCardBody = styled(CardBody)`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n`\n\nconst StyledHeading = styled(Heading)`\n margin: 16px 0;\n`\n\nconst IconWrapper = styled.div`\n svg {\n width: 80px;\n height: 80px;\n }\n`\n\nconst UnlockWalletCard = () => {\n const TranslateString = useI18n()\n\n return (\n \n \n \n \n \n {TranslateString(999, 'Unlock wallet to access lottery')}\n \n \n \n )\n}\n\nexport default UnlockWalletCard\n","import React from 'react'\nimport { Button, Modal } from '@pizzafinance/ui-sdk'\nimport ModalActions from 'components/ModalActions'\nimport styled from 'styled-components'\nimport useI18n from 'hooks/useI18n'\n\nconst WarningModal: React.FC<{ onDismiss?: () => void }> = ({ onDismiss }) => {\n const TranslateString = useI18n()\n\n return (\n \n \n {TranslateString(468, 'Lottery ticket purchases are final.')}\n
\n {TranslateString(470, 'Your RCHAP will not be returned to you after you spend it to buy tickets.')}\n
\n {TranslateString(472, 'Tickets are only valid for one lottery draw, and will be burnedafter the draw.')}\n
\n {TranslateString(\n 474,\n 'Buying tickets does not guarantee you will win anything. Please only participate once you understand the risks.',\n )}\n
\n \n \n \n
\n )\n}\n\nconst TicketsList = styled.div`\n text-align: left;\n overflow-y: auto;\n max-height: 400px;\n color: ${(props) => props.theme.colors.primary};\n`\n\nexport default WarningModal\n","import React, { useCallback, useState } from 'react'\nimport styled from 'styled-components'\nimport { Button, useModal } from '@pizzafinance/ui-sdk'\nimport useI18n from 'hooks/useI18n'\nimport useGetLotteryHasDrawn from 'hooks/useGetLotteryHasDrawn'\nimport { useLotteryAllowance } from 'hooks/useAllowance'\nimport { useLotteryApprove } from 'hooks/useApprove'\nimport useTickets from 'hooks/useTickets'\nimport useTokenBalance from 'hooks/useTokenBalance'\nimport { getPizzaAddress } from 'utils/addressHelpers'\nimport BuyTicketModal from './BuyTicketModal'\nimport MyTicketsModal from './UserTicketsModal'\nimport PurchaseWarningModal from './PurchaseWarningModal'\n\nconst CardActions = styled.div`\n display: flex;\n justify-content: center;\n margin-top: ${(props) => props.theme.spacing[3]}px;\n\n ${({ theme }) => theme.mediaQueries.lg} {\n justify-content: space-between;\n }\n`\n\nconst TicketCard: React.FC = () => {\n const [requestedApproval, setRequestedApproval] = useState(false)\n const TranslateString = useI18n()\n const allowance = useLotteryAllowance()\n const { onApprove } = useLotteryApprove()\n const lotteryHasDrawn = useGetLotteryHasDrawn()\n const pizzaBalance = useTokenBalance(getPizzaAddress())\n\n const tickets = useTickets()\n const ticketsLength = tickets.length\n const [onPresentMyTickets] = useModal()\n const [onPresentApprove] = useModal()\n const [onPresentBuy] = useModal()\n\n const handleApprove = useCallback(async () => {\n try {\n setRequestedApproval(true)\n const txHash = await onApprove()\n // user rejected tx or didn't go thru\n if (!txHash) {\n setRequestedApproval(false)\n }\n onPresentApprove()\n } catch (e) {\n console.error(e)\n }\n }, [onApprove, onPresentApprove])\n\n const renderLotteryTicketButtons = () => {\n if (!allowance.toNumber()) {\n return (\n <>\n \n \n \n )\n }\n return (\n <>\n \n {TranslateString(432, 'View your tickets')}\n \n \n \n )\n }\n\n return (\n \n {lotteryHasDrawn ? (\n \n ) : (\n renderLotteryTicketButtons()\n )}\n \n )\n}\n\nexport default TicketCard\n","import { useEffect, useState } from 'react'\nimport BigNumber from 'bignumber.js'\nimport { useWallet } from '@binance-chain/bsc-use-wallet'\nimport { Contract } from 'web3-eth-contract'\nimport { usePizza, useLottery } from './useContract'\nimport { getAllowance } from '../utils/erc20'\n\n// Retrieve lottery allowance\nexport const useLotteryAllowance = () => {\n const [allowance, setAllowance] = useState(new BigNumber(0))\n const { account }: { account: string } = useWallet()\n const lotteryContract = useLottery()\n const pizzaContract = usePizza()\n\n useEffect(() => {\n const fetchAllowance = async () => {\n const res = await getAllowance(pizzaContract, lotteryContract, account)\n setAllowance(new BigNumber(res))\n }\n\n if (account && pizzaContract && pizzaContract) {\n fetchAllowance()\n }\n const refreshInterval = setInterval(fetchAllowance, 10000)\n return () => clearInterval(refreshInterval)\n }, [account, pizzaContract, lotteryContract])\n\n return allowance\n}\n\n// Retrieve IFO allowance\nexport const useIfoAllowance = (tokenContract: Contract, spenderAddress: string, dependency?: any) => {\n const { account }: { account: string } = useWallet()\n const [allowance, setAllowance] = useState(null)\n\n useEffect(() => {\n const fetch = async () => {\n try {\n const res = await tokenContract.methods.allowance(account, spenderAddress).call()\n setAllowance(new BigNumber(res))\n } catch (e) {\n setAllowance(null)\n }\n }\n fetch()\n }, [account, spenderAddress, tokenContract, dependency])\n\n return allowance\n}\n","import React from 'react'\nimport styled from 'styled-components'\nimport { Card, CardBody, TicketRound, Text, Heading } from '@pizzafinance/ui-sdk'\nimport useI18n from 'hooks/useI18n'\nimport useGetLotteryHasDrawn from 'hooks/useGetLotteryHasDrawn'\nimport useTickets from 'hooks/useTickets'\nimport { useCurrentTime } from 'hooks/useTimer'\nimport TicketActions from './TicketActions'\nimport { getTicketSaleTime } from '../../helpers/CountdownHelpers'\n\ninterface CardProps {\n isSecondCard?: boolean\n}\n\nconst StyledCard = styled(Card)`\n ${(props) =>\n props.isSecondCard\n ? ` \n margin-top: 16px;\n\n ${props.theme.mediaQueries.sm} {\n margin-top: 24px;\n }\n\n ${props.theme.mediaQueries.lg} {\n margin-top: 32px;\n }\n `\n : ``}\n`\n\nconst CardHeader = styled.div`\n align-items: center;\n display: flex;\n`\n\nconst IconWrapper = styled.div`\n margin-right: 16px;\n svg {\n width: 48px;\n height: 48px;\n }\n`\n\nconst TicketCountWrapper = styled.div`\n display: flex;\n flex-direction: column;\n`\n\nconst TicketCard: React.FC = ({ isSecondCard = false }) => {\n const TranslateString = useI18n()\n const lotteryHasDrawn = useGetLotteryHasDrawn()\n\n const tickets = useTickets()\n const ticketsLength = tickets.length\n\n const currentMillis = useCurrentTime()\n const timeUntilTicketSale = lotteryHasDrawn && getTicketSaleTime(currentMillis)\n\n return (\n \n \n \n \n \n \n {lotteryHasDrawn ? (\n \n \n {TranslateString(999, 'Until ticket sale:')}\n \n {timeUntilTicketSale}\n \n ) : (\n \n \n {TranslateString(999, 'Your tickets for this round')}\n \n {ticketsLength}\n \n )}\n \n \n \n \n )\n}\n\nexport default TicketCard\n","import React from 'react'\nimport styled from 'styled-components'\nimport useI18n from 'hooks/useI18n'\nimport { Heading, Text } from '@pizzafinance/ui-sdk'\n\nexport interface PrizeGridProps {\n lotteryPrizeAmount?: number\n pastDraw?: boolean\n jackpotMatches?: number\n twoTicketMatches?: number\n threeTicketMatches?: number\n}\n\nconst Grid = styled.div<{ pastDraw?: boolean }>`\n display: grid;\n grid-template-columns: repeat(${(props) => (props.pastDraw ? 3 : 2)}, 1fr);\n grid-template-rows: repeat(4, auto);\n`\n\nconst RightAlignedText = styled(Text)`\n text-align: right;\n`\n\nconst RightAlignedHeading = styled(Heading)`\n text-align: right;\n`\n\nconst GridItem = styled.div<{ marginBottom?: string }>`\n margin-bottom: ${(props) => (props.marginBottom ? props.marginBottom : '10px')};\n`\n\nconst PastDrawGridItem = styled(GridItem)`\n transform: translate(-40%, 0%);\n`\n\nconst PrizeGrid: React.FC = ({\n lotteryPrizeAmount = 0,\n pastDraw = false,\n jackpotMatches,\n twoTicketMatches,\n threeTicketMatches,\n}) => {\n const fourMatchesAmount = +((lotteryPrizeAmount / 100) * 50).toFixed(0)\n const threeMatchesAmount = +((lotteryPrizeAmount / 100) * 20).toFixed(0)\n const twoMatchesAmount = +((lotteryPrizeAmount / 100) * 10).toFixed(0)\n const burnAmount = +((lotteryPrizeAmount / 100) * 20).toFixed(0)\n const TranslateString = useI18n()\n\n return (\n \n \n \n {TranslateString(999, 'No. Matched')}\n \n \n {pastDraw && (\n \n \n {TranslateString(999, 'Winners')}\n \n \n )}\n \n \n {TranslateString(999, 'Prize Pot')}\n \n \n {/* 4 matches row */}\n \n 4\n \n {pastDraw && (\n \n {jackpotMatches}\n \n )}\n \n {fourMatchesAmount.toLocaleString()}\n \n {/* 3 matches row */}\n \n 3\n \n {pastDraw && (\n \n {threeTicketMatches}\n \n )}\n \n {threeMatchesAmount.toLocaleString()}\n \n {/* 2 matches row */}\n \n 2\n \n {pastDraw && (\n \n {twoTicketMatches}\n \n )}\n \n {twoMatchesAmount.toLocaleString()}\n \n {/* Burn row */}\n \n {TranslateString(999, `${pastDraw ? 'Burned' : 'To burn'}`)}:\n \n {pastDraw ? (\n <>\n \n \n {burnAmount.toLocaleString()}\n \n \n ) : (\n \n {burnAmount.toLocaleString()}\n \n )}\n \n )\n}\n\nexport default PrizeGrid\n","import React, { useContext, useState } from 'react'\nimport styled from 'styled-components'\nimport { useWallet } from '@binance-chain/bsc-use-wallet'\nimport { Heading, Card, CardBody, CardFooter, Text, PizzaRoundIcon, RchapRoundIcon, Flex, Skeleton } from '@pizzafinance/ui-sdk'\nimport { getBalanceNumber } from 'utils/formatBalance'\nimport useI18n from 'hooks/useI18n'\nimport { useTotalRewards } from 'hooks/useTickets'\nimport PastLotteryDataContext from 'contexts/PastLotteryDataContext'\nimport ExpandableSectionButton from 'components/ExpandableSectionButton/ExpandableSectionButton'\nimport PrizeGrid from '../PrizeGrid'\n\nconst CardHeading = styled.div`\n position: relative;\n display: flex;\n justify-content: space-between;\n`\n\nconst Right = styled.div`\n display: flex;\n\n ${({ theme }) => theme.mediaQueries.sm} {\n display: none;\n }\n`\n\nconst Left = styled.div`\n display: flex;\n`\n\nconst IconWrapper = styled.div`\n margin-right: 16px;\n svg {\n width: 48px;\n height: 48px;\n }\n`\n\nconst PrizeCountWrapper = styled.div`\n display: flex;\n flex-direction: column;\n`\n\nconst ExpandingWrapper = styled.div<{ showFooter: boolean }>`\n height: ${(props) => (props.showFooter ? '100%' : '0px')};\n\n ${({ theme }) => theme.mediaQueries.sm} {\n height: 100%;\n }\n`\n\nconst TotalPrizesCard = () => {\n const TranslateString = useI18n()\n const { account } = useWallet()\n const [showFooter, setShowFooter] = useState(false)\n const lotteryPrizeAmount = +getBalanceNumber(useTotalRewards()).toFixed(0)\n const lotteryPrizeWithCommaSeparators = lotteryPrizeAmount.toLocaleString()\n const { currentLotteryNumber } = useContext(PastLotteryDataContext)\n\n return (\n \n \n {account && (\n \n {currentLotteryNumber === 0 && }\n {currentLotteryNumber > 0 && (\n <>\n {`Round #${currentLotteryNumber}`}\n \n )}\n \n )}\n \n \n \n \n \n \n \n {TranslateString(999, 'Total Pot:')}\n \n {lotteryPrizeWithCommaSeparators} RCHAP\n \n \n \n setShowFooter(!showFooter)} expanded={showFooter} />\n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default TotalPrizesCard\n","import React from 'react'\nimport styled from 'styled-components'\nimport { useWallet } from '@binance-chain/bsc-use-wallet'\nimport { Image, Card, CardBody } from '@pizzafinance/ui-sdk'\nimport { useWinningNumbers, useMatchingRewardLength } from 'hooks/useTickets'\nimport useI18n from 'hooks/useI18n'\nimport useGetLotteryHasDrawn from 'hooks/useGetLotteryHasDrawn'\n\nconst WinningNumbers: React.FC = () => {\n const { account } = useWallet()\n const winNumbers = useWinningNumbers()\n const lotteryHasDrawn = useGetLotteryHasDrawn()\n const MatchedNumber4 = useMatchingRewardLength(4)\n const MatchedNumber3 = useMatchingRewardLength(3)\n const MatchedNumber2 = useMatchingRewardLength(2)\n const TranslateString = useI18n()\n\n return (\n \n \n \n \n \n \n {account && lotteryHasDrawn\n ? `🥳${TranslateString(570, 'Winning Numbers This Round')}🥳`\n : TranslateString(572, 'Latest Winning Numbers')}\n \n
\n
\n \n {winNumbers.map((number, index) => (\n // eslint-disable-next-line react/no-array-index-key\n \n {number}\n \n ))}\n \n \n \n \n \"Number\n \n \n \n \n \"Number\n \n \n \n \n \"Number\n \n \n \n \n \"Number\n \n \n \n \n \n \n \"Number\n \n \n \n \n \"Number\n \n \n \n \n \"Number\n \n \n \n \n \"Number\n \n \n \n \n \n {TranslateString(442, 'Tickets matching 4 numbers:')}\n \n {MatchedNumber4}\n \n \n \n {TranslateString(444, 'Tickets matching 3 numbers:')}\n \n {MatchedNumber3}\n \n \n \n {TranslateString(446, 'Tickets matching 2 numbers:')}\n \n {MatchedNumber2}\n \n \n \n {/* \n {TranslateString(448, 'Export recent winning numbers')}\n */}\n
\n
\n
\n
\n )\n}\nconst Link = styled.a`\n margin-top: 1em;\n text-decoration: none;\n color: #2ab770;\n`\n\nconst Row = styled.div`\n margin-top: 1em;\n align-items: center;\n display: flex;\n flex-direction: row;\n`\n\nconst RabbitRow = styled.div`\n margin-top: -2.3em;\n align-items: center;\n display: flex;\n flex-direction: row;\n\n @media (max-width: 768px) {\n display: none;\n }\n`\n\nconst RabbitRowSmall = styled.div`\n margin-top: -2.3em;\n align-items: center;\n display: flex;\n flex-direction: row;\n\n @media (min-width: 768px) {\n display: none;\n }\n`\n\nconst CardImage = styled.div`\n text-align: center;\n`\n\nconst CardImageFirst = styled.div`\n text-align: center;\n margin-left: -1.2em;\n\n @media (max-width: 600) {\n margin-left: -0.2em;\n }\n`\n\nconst RowNoPadding = styled.div`\n align-items: center;\n display: flex;\n flex-direction: row;\n`\n\nconst Column = styled.div`\n margin-top: 1em;\n align-items: center;\n display: flex;\n flex-direction: column;\n`\n\nconst CenteredText = styled.div`\n text-align: center;\n align-items: center;\n`\n\nconst CenteredTextWithPadding = styled.div`\n text-align: center;\n align-items: center;\n padding-left: 2px;\n padding-right: 2px;\n`\n\nconst TicketNumberBox = styled.div`\n padding: 10px;\n border-radius: 12px;\n background: linear-gradient(180deg, #dcb46d 0%, #d0a860 76.22%);\n color: white;\n font-size: 20px;\n font-weight: 900;\n margin: 10px;\n margin-bottom: 7px;\n width: 40px;\n\n @media (min-width: 768px) {\n font-size: 40px;\n margin: 20px;\n width: 60px;\n }\n`\n\nconst RabbitBox = styled.div`\n /* padding: 10px; */\n border-radius: 12px;\n margin: 16px 20px;\n width: 60px;\n`\n\nconst RabbitBoxSmall = styled.div`\n padding-top: 10px;\n padding-left: 10px;\n border-radius: 12px;\n margin: 20px;\n width: 20px;\n`\n\nconst StyledCardHeader = styled.div`\n align-items: center;\n display: flex;\n flex-direction: column;\n`\n\nconst CardWrapper = styled.div``\n\nconst Title = styled.div`\n color: ${(props) => props.theme.colors.secondary};\n font-size: 24px;\n width: 50vw;\n text-align: center;\n font-weight: 1000;\n`\n\nconst StyledCardContentInner = styled.div`\n align-items: center;\n display: flex;\n flex: 1;\n flex-direction: column;\n justify-content: space-between;\n`\n\nexport default WinningNumbers\n","import React from 'react'\nimport styled from 'styled-components'\nimport { Text, Heading, Link, Image } from '@pizzafinance/ui-sdk'\nimport useI18n from 'hooks/useI18n'\n\nconst LayoutWrapper = styled.div`\n max-width: 500px;\n margin: 0 auto 40px;\n display: flex;\n flex-direction: column;\n`\n\nconst StyledHeading = styled(Heading)`\n margin: 16px 0;\n`\n\nconst StyledImage = styled(Image)`\n align-self: center;\n`\n\nconst StyledLink = styled(Link)`\n align-self: center;\n margin-top: 16px;\n`\n\nconst HowItWorks = () => {\n const TranslateString = useI18n()\n\n return (\n \n \n \n {TranslateString(999, 'How it works')}\n \n \n {TranslateString(\n 999,\n 'Spend RCHAP to buy tickets, contributing to the lottery pot. Win prizes if 2, 3, or 4 of your ticket numbers match the winning numbers and their exact order!',\n )}\n \n Read more\n \n )\n}\n\nexport default HowItWorks\n","import React from 'react'\nimport styled from 'styled-components'\nimport { useWallet } from '@binance-chain/bsc-use-wallet'\nimport { BaseLayout } from '@pizzafinance/ui-sdk'\nimport { getBalanceNumber } from 'utils/formatBalance'\nimport { useTotalClaim } from 'hooks/useTickets'\nimport YourPrizesCard from './components/YourPrizesCard'\nimport UnlockWalletCard from './components/UnlockWalletCard'\nimport TicketCard from './components/TicketCard'\nimport TotalPrizesCard from './components/TotalPrizesCard'\nimport WinningNumbers from './components/WinningNumbers'\nimport HowItWorks from './components/HowItWorks'\n\nconst Cards = styled(BaseLayout)`\n align-items: start;\n margin-bottom: 32px;\n\n & > div {\n grid-column: span 6;\n }\n\n ${({ theme }) => theme.mediaQueries.sm} {\n & > div {\n grid-column: span 12;\n }\n }\n\n ${({ theme }) => theme.mediaQueries.lg} {\n & > div {\n grid-column: span 6;\n }\n }\n`\n\nconst SecondCardColumnWrapper = styled.div<{ isAWin?: boolean }>`\n display: flex;\n flex-direction: ${(props) => (props.isAWin ? 'column' : 'column-reverse')};\n`\n\nconst NextDrawPage: React.FC = () => {\n const { account } = useWallet()\n const { claimAmount } = useTotalClaim()\n const winnings = getBalanceNumber(claimAmount)\n const isAWin = winnings > 0\n\n return (\n <>\n \n
\n \n
\n \n {!account ? (\n \n ) : (\n <>\n \n \n \n )}\n \n
\n \n {/* legacy page content */}\n \n \n )\n}\n\nexport default NextDrawPage\n","export type DataResponse = {\n lotteryNumber: number\n lotteryDate: string\n lotteryNumbers: number[]\n poolSize: number\n burned: number\n contractLink: string\n jackpotTicket: number\n match2Ticket: number\n match3Ticket: number\n match4Ticket: number\n poolJackpot: number\n poolMatch3: number\n poolMatch2: number\n\n // TODO: Fill in the error type\n error: any\n}\n\n/**\n * Get data for a specific lottery\n */\nconst getLotteryRoundData = async (lotteryNumber: number): Promise => {\n try {\n const response = await fetch(`https://api.pizzafinance.app/api/singleLottery?lotteryNumber=${lotteryNumber}`)\n const data = await response.json()\n\n return data\n } catch (error) {\n throw new Error(error)\n }\n}\n\nexport default getLotteryRoundData\n","import React, { useState } from 'react'\nimport styled from 'styled-components'\nimport { Text, Input, Button } from '@pizzafinance/ui-sdk'\nimport useI18n from 'hooks/useI18n'\n\ninterface PastLotterySearcherProps {\n initialLotteryNumber: number\n onSubmit: (num: number) => void\n}\n\nconst Wrapper = styled.div`\n margin-bottom: 24px;\n`\n\nconst SearchWrapper = styled.div`\n position: relative;\n`\n\nconst ButtonWrapper = styled.div`\n position: absolute;\n right: 8px;\n top: 50%;\n transform: translate(0%, -50%);\n width: auto;\n`\n\nconst PastLotterySearcher: React.FC = ({ initialLotteryNumber, onSubmit }) => {\n const [lotteryNumber, setLotteryNumber] = useState(initialLotteryNumber)\n const [isError, setIsError] = useState(false)\n const TranslateString = useI18n()\n\n const handleSubmit = (evt: React.FormEvent) => {\n evt.preventDefault()\n onSubmit(lotteryNumber)\n }\n\n const handleChange = (evt: React.ChangeEvent) => {\n const value = parseInt(evt.currentTarget.value, 10)\n\n // The max value will always be the initialLotterNumber which equals\n // the latest lottery round\n setIsError(value > initialLotteryNumber)\n setLotteryNumber(value)\n }\n\n return (\n \n {TranslateString(999, 'Select lottery number:')}\n
\n \n \n \n \n \n \n
\n
\n )\n}\n\nexport default PastLotterySearcher\n","import React from 'react'\nimport { Text } from '@pizzafinance/ui-sdk'\n\ninterface PastRoundCardErrorProps {\n error: {\n message: string\n }\n}\n\nconst PastRoundCardError: React.FC = ({ error }) => {\n return {error.message}\n}\n\nexport default PastRoundCardError\n","import React from 'react'\nimport styled from 'styled-components'\nimport { Flex, Heading, Text } from '@pizzafinance/ui-sdk'\n\ninterface HeadingProps {\n valueToDisplay?: string\n children?: string\n Icon?: React.ComponentType\n}\n\nconst IconWrapper = styled.div`\n margin-right: 16px;\n svg {\n width: 48px;\n height: 48px;\n }\n`\n\nconst LotteryCardHeading: React.FC = ({ valueToDisplay, children, Icon, ...props }) => {\n return (\n \n {Icon && (\n \n \n \n )}\n \n \n {children}\n \n {valueToDisplay}\n \n \n )\n}\n\nLotteryCardHeading.defaultProps = {\n valueToDisplay: '',\n Icon: () =>
,\n children: '',\n}\n\nexport default LotteryCardHeading\n","import React from 'react'\nimport styled from 'styled-components'\nimport { Button, LinkExternal, useModal } from '@pizzafinance/ui-sdk'\nimport useI18n from 'hooks/useI18n'\nimport { useWallet } from '@binance-chain/bsc-use-wallet'\nimport useTickets from 'hooks/useTickets'\nimport UnlockButton from 'components/UnlockButton'\nimport MyTicketsModal from '../TicketCard/UserTicketsModal'\n\nconst Wrapper = styled.div`\n align-items: center;\n display: flex;\n flex-direction: column;\n padding-top: 24px;\n\n & > div {\n flex: 1;\n width: 100%;\n }\n`\n\nconst ExternalLinkWrap = styled(LinkExternal)`\n align-items: center;\n display: flex;\n height: 48px;\n justify-content: center;\n text-decoration: none;\n width: 100%;\n`\n\nconst TicketCard: React.FC<{ contractLink?: string; lotteryNumber?: number }> = ({ contractLink, lotteryNumber }) => {\n const TranslateString = useI18n()\n const tickets = useTickets(lotteryNumber)\n const ticketsLength = tickets.length\n const [onPresentMyTickets] = useModal()\n const { account } = useWallet()\n\n if (!account) {\n return (\n \n \n \n )\n }\n\n return (\n \n
\n \n
\n
\n {TranslateString(999, 'View on Explorer')}\n
\n
\n )\n}\n\nexport default TicketCard\n","const formatLotteryDate = (lotteryDate: string) => {\n if (!lotteryDate) {\n return {}\n }\n\n const date = new Date(lotteryDate)\n\n const dateString = date.toDateString()\n const hours = date.getUTCHours()\n const monthAndDay = dateString.split(' ').splice(1, 2).join(' ')\n\n return { hours, monthAndDay }\n}\n\nexport default formatLotteryDate\n","import React from 'react'\nimport styled from 'styled-components'\nimport { Text } from '@pizzafinance/ui-sdk'\nimport formatLotteryDate from '../helpers/formatLotteryDate'\n\nconst Wrapper = styled.div`\n position: absolute;\n top: 0;\n right: 0;\n`\n\nconst Timestamp = ({ timeValue }) => {\n const { monthAndDay, hours } = formatLotteryDate(timeValue)\n\n return (\n \n \n {monthAndDay}, {hours}:00 UTC\n \n \n )\n}\n\nexport default Timestamp\n","import React from 'react'\nimport styled from 'styled-components'\nimport { Heading, CardBody, CardFooter, PizzaRoundIcon, RchapRoundIcon, TicketRound } from '@pizzafinance/ui-sdk'\nimport useI18n from 'hooks/useI18n'\nimport { DataResponse } from 'utils/getLotteryRoundData'\nimport LotteryCardHeading from '../LotteryCardHeading'\nimport PastLotteryActions from './PastLotteryActions'\nimport PrizeGrid from '../PrizeGrid'\nimport Timestamp from '../Timestamp'\n\ninterface PastRoundCardDetailsProps {\n data: DataResponse\n}\n\nconst CardHeading = styled.div`\n position: relative;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n`\n\nconst TopLotteryCardHeading = styled(LotteryCardHeading)`\n margin-bottom: ${(props) => props.theme.spacing[4]}px;\n`\n\nconst PastRoundCardDetails: React.FC = ({ data }) => {\n const TranslateString = useI18n()\n\n const {\n contractLink,\n jackpotTicket,\n lotteryDate,\n lotteryNumber,\n lotteryNumbers,\n match2Ticket,\n match3Ticket,\n poolSize,\n } = data\n\n return (\n !data.error &&\n data && (\n <>\n \n \n \n \n Round #{lotteryNumber}\n \n \n {TranslateString(999, 'Winning numbers')}\n \n \n {TranslateString(999, 'Total prizes')}\n \n \n \n \n \n \n \n \n )\n )\n}\n\nexport default PastRoundCardDetails\n","import React from 'react'\nimport { Card } from '@pizzafinance/ui-sdk'\nimport { DataResponse } from 'utils/getLotteryRoundData'\nimport PastRoundCardError from './PastRoundCardError'\nimport PastRoundCardDetails from './PastRoundCardDetails'\n\ninterface PastRoundCardProps {\n error: {\n message: string\n }\n data: DataResponse\n}\n\nconst PastRoundCard: React.FC = ({ error, data }) => {\n return {error.message ? : }\n}\n\nexport default PastRoundCard\n","import { useContext, useEffect, useState } from 'react'\nimport PastLotteryDataContext from 'contexts/PastLotteryDataContext'\nimport getLotteryRoundData, { DataResponse } from 'utils/getLotteryRoundData'\n\ntype GetRecentLotteryRoundDataReturn = {\n isLoading: boolean\n data: DataResponse\n mostRecentLotteryNumber: number\n error: any\n}\n\nconst useGetRecentLotteryRoundData = (): GetRecentLotteryRoundDataReturn => {\n const [isLoading, setIsLoading] = useState(true)\n const [data, setData] = useState(null)\n const [error, setError] = useState(null)\n const { mostRecentLotteryNumber } = useContext(PastLotteryDataContext)\n\n useEffect(() => {\n const fetchRecentLotteryData = async () => {\n try {\n setIsLoading(true)\n\n const roundData = await getLotteryRoundData(mostRecentLotteryNumber)\n setData(roundData)\n } catch (err) {\n setError(err)\n } finally {\n setIsLoading(false)\n }\n }\n\n if (mostRecentLotteryNumber > 0) {\n fetchRecentLotteryData()\n }\n }, [mostRecentLotteryNumber, setData, setIsLoading, setError])\n\n return { isLoading, data, mostRecentLotteryNumber, error }\n}\n\nexport default useGetRecentLotteryRoundData\n","import React, { useState, useEffect } from 'react'\nimport styled from 'styled-components'\nimport { Card, CardBody } from '@pizzafinance/ui-sdk'\nimport getLotteryRoundData from 'utils/getLotteryRoundData'\nimport useI18n from 'hooks/useI18n'\nimport PastLotterySearcher from './PastLotterySearcher'\nimport PastRoundCard from './PastRoundCard'\nimport Loading from '../Loading'\nimport useGetRecentLotteryRoundData from '../../hooks/useGetRecentLotteryRoundData'\n\nconst Wrapper = styled.div`\n display: flex;\n flex-direction: column;\n`\n\nconst StyledCardBody = styled(CardBody)`\n display: flex;\n justify-content: center;\n align-items: center;\n height: 552px; // height of final card\n`\n\nconst PastLotteryRoundViewer = () => {\n const [state, setState] = useState({\n roundData: null,\n error: { message: null, type: null },\n isInitialized: false,\n isLoading: true,\n })\n const { data: initialLotteryData, mostRecentLotteryNumber } = useGetRecentLotteryRoundData()\n const TranslateString = useI18n()\n const { roundData, error, isInitialized, isLoading } = state\n\n useEffect(() => {\n if (initialLotteryData) {\n setState((prevState) => ({ ...prevState, isLoading: false, isInitialized: true, roundData: initialLotteryData }))\n }\n }, [initialLotteryData, setState])\n\n const handleSubmit = async (lotteryNumber: number) => {\n setState((prevState) => ({\n ...prevState,\n isLoading: true,\n }))\n\n getLotteryRoundData(lotteryNumber)\n .then((data) => {\n if (data.error) {\n setState((prevState) => ({\n ...prevState,\n error: {\n message: TranslateString(999, 'The lottery number you provided does not exist'),\n type: 'out of range',\n },\n isLoading: false,\n isInitialized: true,\n }))\n } else {\n setState((prevState) => ({\n ...prevState,\n error: { message: null, type: null },\n roundData: data,\n isLoading: false,\n isInitialized: true,\n }))\n }\n })\n .catch(() => {\n setState((prevState) => ({\n ...prevState,\n error: { message: TranslateString(999, 'Error fetching data'), type: 'api' },\n isLoading: false,\n isInitialized: true,\n }))\n })\n }\n\n return (\n \n \n {!isInitialized || isLoading ? (\n \n \n \n \n \n ) : (\n \n )}\n \n )\n}\n\nexport default PastLotteryRoundViewer\n","import React, { lazy, Suspense, useContext } from 'react'\nimport styled from 'styled-components'\nimport { Text } from '@pizzafinance/ui-sdk'\nimport PastLotteryDataContext from 'contexts/PastLotteryDataContext'\nimport Loading from '../Loading'\n\nconst Line = lazy(() => import('./LineChartWrapper'))\n\nconst InnerWrapper = styled.div`\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n`\n\nconst HistoryChart: React.FC = () => {\n const { historyData, historyError } = useContext(PastLotteryDataContext)\n const getDataArray = (kind) => {\n return historyData\n .map((dataPoint) => {\n return dataPoint[kind]\n })\n .reverse()\n }\n\n const lineStyles = ({ color }) => {\n return {\n borderColor: color,\n fill: false,\n borderWidth: 2,\n pointRadius: 0,\n pointHitRadius: 10,\n }\n }\n\n const chartData = {\n labels: getDataArray('lotteryNumber'),\n datasets: [\n {\n label: 'Pool Size',\n data: getDataArray('poolSize'),\n yAxisID: 'y-axis-pool',\n ...lineStyles({ color: '#DAAF65' }),\n },\n {\n label: 'Burned',\n data: getDataArray('burned'),\n yAxisID: 'y-axis-burned',\n ...lineStyles({ color: '#EF4E7B' }),\n },\n ],\n }\n\n const axesStyles = ({ color, lineHeight }) => {\n return {\n borderCapStyle: 'round',\n gridLines: { display: false },\n ticks: {\n fontFamily: 'Heebo, sans-serif',\n fontColor: color,\n fontSize: 14,\n lineHeight,\n maxRotation: 0,\n beginAtZero: true,\n autoSkipPadding: 15,\n userCallback: (value) => {\n return value.toLocaleString()\n },\n },\n }\n }\n\n const options = {\n legend: { display: false },\n scales: {\n yAxes: [\n {\n type: 'linear',\n display: true,\n position: 'left',\n id: 'y-axis-pool',\n ...axesStyles({ color: '#DAAF65', lineHeight: 1.6 }),\n },\n {\n type: 'linear',\n display: true,\n position: 'right',\n id: 'y-axis-burned',\n ...axesStyles({ color: '#EF4E7B', lineHeight: 1.5 }),\n },\n ],\n xAxes: [\n {\n ...axesStyles({ color: '#35A969', lineHeight: 1 }),\n },\n ],\n },\n }\n\n return (\n <>\n {historyError && (\n \n Error fetching data\n \n )}\n {!historyError && historyData.length > 1 ? (\n Loading...
}>\n \n \n ) : (\n \n \n \n )}\n \n )\n}\n\nexport default HistoryChart\n","import React from 'react'\nimport styled from 'styled-components'\nimport { Text } from '@pizzafinance/ui-sdk'\nimport useI18n from 'hooks/useI18n'\n\nconst Wrapper = styled.div`\n display: flex;\n margin: 36px 0 28px;\n`\n\nconst LegendItem = styled.div`\n display: flex;\n margin-right: 18px;\n align-items: center;\n`\n\nconst Circle = styled.div<{ isPoolSize?: boolean }>`\n width: 20px;\n height: 20px;\n border-radius: 10px;\n background-color: ${({ isPoolSize, theme }) => theme.colors[isPoolSize ? 'textSubtle' : 'primary']};\n margin-right: 6px;\n`\n\nconst Legend = () => {\n const TranslateString = useI18n()\n\n return (\n \n \n \n {TranslateString(999, 'Pool Size')}\n \n \n \n {TranslateString(999, 'Burned')}\n \n \n )\n}\n\nexport default Legend\n","import React from 'react'\nimport { Heading, Card, CardBody } from '@pizzafinance/ui-sdk'\nimport useI18n from 'hooks/useI18n'\nimport HistoryChart from './HistoryChart'\nimport Legend from './Legend'\n\nconst PastDrawsHistoryCard: React.FC = () => {\n const TranslateString = useI18n()\n\n return (\n \n \n {TranslateString(999, 'History')}\n \n \n \n \n )\n}\n\nexport default PastDrawsHistoryCard\n","import React from 'react'\nimport styled from 'styled-components'\nimport { BaseLayout } from '@pizzafinance/ui-sdk'\nimport PastLotteryRoundViewer from './components/PastLotteryRoundViewer'\nimport PastDrawsHistoryCard from './components/PastDrawsHistory/PastDrawsHistoryCard'\n\nconst Cards = styled(BaseLayout)`\n align-items: start;\n margin-bottom: 32px;\n\n & > div {\n grid-column: span 6;\n }\n\n ${({ theme }) => theme.mediaQueries.sm} {\n & > div {\n grid-column: span 12;\n }\n }\n\n ${({ theme }) => theme.mediaQueries.lg} {\n & > div {\n grid-column: span 6;\n }\n }\n`\n\nconst SecondCardColumnWrapper = styled.div<{ isAWin?: boolean }>`\n display: flex;\n flex-direction: column;\n`\n\nconst BunnyImageWrapper = styled.div`\n display: flex;\n margin-top: 32px;\n justify-content: center;\n`\n\nconst PastDrawsPage: React.FC = () => {\n return (\n \n \n \n \n \n \"lottery\n \n \n \n )\n}\n\nexport default PastDrawsPage\n","import React, { useState, useEffect } from 'react'\nimport styled from 'styled-components'\nimport { ButtonMenu, ButtonMenuItem } from '@pizzafinance/ui-sdk'\nimport { useWallet } from '@binance-chain/bsc-use-wallet'\nimport PastLotteryDataContext from 'contexts/PastLotteryDataContext'\nimport { getLotteryIssueIndex } from 'utils/lotteryUtils'\nimport useI18n from 'hooks/useI18n'\nimport { useLottery } from 'hooks/useContract'\nimport Page from 'components/layout/Page'\nimport Hero from './components/Hero'\nimport Divider from './components/Divider'\nimport NextDrawPage from './NextDrawPage'\nimport PastDrawsPage from './PastDrawsPage'\n\nconst Wrapper = styled.div`\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 32px;\n`\n\nconst Lottery: React.FC = () => {\n const lotteryContract = useLottery()\n const { account } = useWallet()\n const TranslateString = useI18n()\n const [activeIndex, setActiveIndex] = useState(0)\n const [historyData, setHistoryData] = useState([])\n const [historyError, setHistoryError] = useState(false)\n const [currentLotteryNumber, setCurrentLotteryNumber] = useState(0)\n const [mostRecentLotteryNumber, setMostRecentLotteryNumber] = useState(1)\n\n useEffect(() => {\n fetch(`https://api.pizzafinance.app/api/lotteryHistory`)\n .then((response) => response.json())\n .then((data) => setHistoryData(data))\n .catch(() => {\n setHistoryError(true)\n })\n }, [])\n\n useEffect(() => {\n const getInitialLotteryIndex = async () => {\n const index = await getLotteryIssueIndex(lotteryContract)\n const previousLotteryNumber = index - 1\n\n setCurrentLotteryNumber(index)\n setMostRecentLotteryNumber(previousLotteryNumber)\n }\n\n if (account && lotteryContract) {\n getInitialLotteryIndex()\n }\n }, [account, lotteryContract])\n\n const handleClick = (index) => {\n setActiveIndex(index)\n }\n\n return (\n <>\n \n \n \n \n {TranslateString(999, 'Next draw')}\n {TranslateString(999, 'Past draws')}\n \n \n \n \n {activeIndex === 0 ? : }\n \n \n \n )\n}\n\nexport default Lottery\n","import React from 'react'\nimport styled from 'styled-components'\nimport { useRouteMatch, Link } from 'react-router-dom'\nimport { ButtonMenu, ButtonMenuItem } from '@pizzafinance/ui-sdk'\n\nconst Wrapper = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n margin-bottom: 39px;\n`\n\nconst IfoTabButtons = () => {\n const { url, isExact } = useRouteMatch()\n\n return (\n \n \n \n Next IDO\n \n \n Past IDOs\n \n \n \n )\n}\n\nexport default IfoTabButtons\n","import React from 'react'\nimport styled from 'styled-components'\nimport { Heading, Text } from '@pizzafinance/ui-sdk'\nimport Container from 'components/layout/Container'\nimport useI18n from 'hooks/useI18n'\n\nconst Title = styled(Heading).attrs({ as: 'h1', size: 'xl' })`\n color: ${({ theme }) => theme.colors.secondary};\n margin-bottom: 24px;\n`\n\nconst Blurb = styled(Text)`\n color: #ffffff;\n font-size: 20px;\n font-weight: 600;\n`\n\nconst StyledHero = styled.div`\n background-image: linear-gradient(180deg, #dcb46d 0%, #d0a860 100%);\n padding-bottom: 40px;\n padding-top: 40px;\n margin-bottom: 32px;\n`\nconst Hero = () => {\n const TranslateString = useI18n()\n\n return (\n \n \n {TranslateString(500, 'IDO: Initial DeFi Offerings')}\n {TranslateString(502, 'Buy new tokens with a brand new token sale model.')}\n \n \n )\n}\n\nexport default Hero\n","import React from 'react'\nimport styled from 'styled-components'\nimport { Heading, Text, Flex } from '@pizzafinance/ui-sdk'\n\ninterface IfoCardHeaderProps {\n ifoId: string\n name: string\n subTitle: string\n}\n\nconst StyledIfoCardHeader = styled(Flex)`\n & > div {\n flex: 1;\n }\n`\n\nconst Name = styled(Heading).attrs({ as: 'h3', size: 'lg' })`\n margin-bottom: 4px;\n text-align: right;\n`\n\nconst Description = styled(Text)`\n color: ${({ theme }) => theme.colors.textSubtle};\n font-size: 14px;\n text-align: right;\n`\n\nconst IfoCardHeader: React.FC = ({ ifoId, name, subTitle }) => {\n return (\n \n {ifoId}\n
\n {name}\n {subTitle}\n
\n
\n )\n}\n\nexport default IfoCardHeader\n","import React from 'react'\nimport styled from 'styled-components'\nimport { Progress } from '@pizzafinance/ui-sdk'\n\ninterface IfoCardProgressProps {\n progress: number\n}\n\nconst StyledProgress = styled.div`\n margin-bottom: 16px;\n`\n\nconst IfoCardProgress: React.FC = ({ progress }) => {\n return (\n \n \n \n )\n}\n\nexport default IfoCardProgress\n","import React, { useState } from 'react'\nimport styled from 'styled-components'\nimport { Text } from '@pizzafinance/ui-sdk'\nimport useI18n from 'hooks/useI18n'\n\nexport interface IfoCardDescriptionProps {\n defaultIsOpen?: boolean\n description: string\n}\n\nconst StyledIfoCardDescription = styled.div`\n margin-top: 24px;\n margin-bottom: 24px;\n`\n\nconst Divider = styled.div`\n background-color: ${({ theme }) => theme.colors.borderColor};\n height: 1px;\n margin-left: auto;\n margin-right: auto;\n width: 90%;\n`\n\nconst ToggleButton = styled.button`\n background: transparent;\n border: none;\n color: ${({ theme }) => theme.colors.primary};\n cursor: pointer;\n display: block;\n font-weight: 600;\n outline: 0;\n padding: 24px 16px;\n width: 100%;\n`\n\nconst Description = styled(Text)<{ isOpen: boolean }>`\n color: ${({ theme }) => theme.colors.textSubtle};\n display: ${({ isOpen }) => (isOpen ? 'block' : 'none')};\n`\n\nconst IfoCardDescription: React.FC = ({ defaultIsOpen = true, description }) => {\n const [isOpen, setIsOpen] = useState(defaultIsOpen)\n const TranslateString = useI18n()\n\n const handleClick = () => setIsOpen(!isOpen)\n\n return (\n \n \n \n {isOpen ? TranslateString(999, 'Hide') : TranslateString(999, 'Show')}\n \n {description}\n \n )\n}\n\nexport default IfoCardDescription\n","import React from 'react'\nimport styled from 'styled-components'\nimport BigNumber from 'bignumber.js'\nimport { Text, LinkExternal, Link } from '@pizzafinance/ui-sdk'\nimport useI18n from 'hooks/useI18n'\n\nexport interface IfoCardDetailsProps {\n launchDate: string\n launchTime: string\n saleAmount: string\n raiseAmount: string\n pizzaToBurn: string\n projectSiteUrl: string\n raisingAmount: BigNumber\n totalAmount: BigNumber\n}\n\nconst StyledIfoCardDetails = styled.div`\n margin-bottom: 24px;\n`\n\nconst Item = styled.div`\n align-items: center;\n color: ${({ theme }) => theme.colors.secondary};\n display: flex;\n`\n\nconst Display = styled(Text)`\n flex: 1;\n`\n\nconst IfoCardDetails: React.FC = ({\n launchDate,\n launchTime,\n saleAmount,\n raiseAmount,\n pizzaToBurn,\n projectSiteUrl,\n raisingAmount,\n totalAmount,\n}) => {\n const TranslateString = useI18n()\n\n return (\n <>\n \n \n {TranslateString(582, 'Launch Time')}\n \n {launchDate},\n \n {launchTime}\n \n \n \n \n {TranslateString(584, 'For Sale')}\n {saleAmount}\n \n \n {TranslateString(999, 'To raise (USD)')}\n {raiseAmount}\n \n \n {TranslateString(586, 'CHAP to burn (USD)')}\n {pizzaToBurn}\n \n \n {TranslateString(999, 'Total raised (% of target)')}\n {`${totalAmount.div(raisingAmount).times(100).toFixed(2)}%`}\n \n \n \n {TranslateString(412, 'View project site')}\n \n \n )\n}\n\nexport default IfoCardDetails\n","import React from 'react'\nimport styled from 'styled-components'\nimport { Link, Text } from '@pizzafinance/ui-sdk'\nimport { IfoStatus } from 'config/constants/types'\nimport getTimePeriods from 'utils/getTimePeriods'\nimport useI18n from 'hooks/useI18n'\n\nexport interface IfoCardTimeProps {\n isLoading: boolean\n status: IfoStatus\n secondsUntilStart: number\n secondsUntilEnd: number\n block: number\n}\n\nconst Details = styled.div`\n align-items: center;\n display: flex;\n height: 24px;\n justify-content: center;\n margin-bottom: 24px;\n`\n\nconst Countdown = styled.div`\n color: ${({ theme }) => theme.colors.secondary};\n font-size: 20px;\n font-weight: 600;\n text-align: center;\n`\n\nconst IfoCardTime: React.FC = ({ isLoading, status, secondsUntilStart, secondsUntilEnd, block }) => {\n const TranslateString = useI18n()\n const countdownToUse = status === 'coming_soon' ? secondsUntilStart : secondsUntilEnd\n const timeUntil = getTimePeriods(countdownToUse)\n const suffix = status === 'coming_soon' ? 'start' : 'finish'\n\n if (isLoading) {\n return
{TranslateString(656, 'Loading...')}
\n }\n\n if (countdownToUse <= 0) {\n return (\n
\n {TranslateString(999, 'Finished!')}\n
\n )\n }\n\n return (\n
\n {`${timeUntil.days}d, ${timeUntil.hours}h, ${timeUntil.minutes}m until ${suffix}`}\n \n (blocks)\n \n
\n )\n}\n\nexport default IfoCardTime\n","import React, { ButtonHTMLAttributes } from 'react'\nimport styled from 'styled-components'\nimport { Button, Text } from '@pizzafinance/ui-sdk'\n\ninterface Props extends ButtonHTMLAttributes {\n value: string\n label?: string\n buttonLabel: string\n disabled?: boolean\n}\n\nconst ButtonWrapper = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n border: solid 1px;\n border-radius: ${({ theme }) => theme.radii.default};\n border-color: ${({ theme }) => theme.colors.borderColor};\n padding-left: 16px;\n`\n\nconst LabelButton: React.FC = ({ value, label, buttonLabel, onClick, disabled = false }) => {\n return (\n
\n {label && (\n \n {label}\n \n )}\n \n \n {value}\n \n \n \n
\n )\n}\n\nexport default LabelButton\n","import React from 'react'\nimport styled from 'styled-components'\nimport { Button } from '@pizzafinance/ui-sdk'\nimport useI18n from 'hooks/useI18n'\nimport Input, { InputProps } from './Input'\n\ninterface Props extends InputProps {\n max: number | string\n symbol: string\n onSelectMax?: () => void\n}\n\nconst StyledSpacer = styled.div`\n width: ${(props) => props.theme.spacing[3]}px;\n`\n\nconst StyledTokenAdornmentWrapper = styled.div`\n align-items: center;\n display: flex;\n`\n\nconst StyledMaxText = styled.div`\n align-items: center;\n color: ${(props) => props.theme.colors.primary};\n display: flex;\n font-size: 14px;\n font-weight: 700;\n height: 44px;\n justify-content: flex-end;\n`\n\nconst StyledTokenSymbol = styled.span`\n color: ${(props) => props.theme.colors.primary};\n font-weight: 700;\n`\n\nconst BalanceInput: React.FC = ({ max, symbol, onChange, onSelectMax, value }) => {\n const TranslateString = useI18n()\n\n return (\n
\n \n {symbol}\n \n
\n \n
\n \n }\n onChange={onChange}\n placeholder=\"0\"\n value={value}\n />\n {TranslateString(454, `${max.toLocaleString()} ${symbol} Available`)}\n
\n )\n}\n\nexport default BalanceInput\n","import React, { useState } from 'react'\nimport { useWallet } from '@binance-chain/bsc-use-wallet'\nimport BigNumber from 'bignumber.js'\nimport { Modal, Button, Flex, LinkExternal } from '@pizzafinance/ui-sdk'\nimport BalanceInput from 'components/Input/BalanceInput'\nimport useTokenBalance from 'hooks/useTokenBalance'\nimport { getFullDisplayBalance } from 'utils/formatBalance'\n\ninterface Props {\n currency: string\n contract: any\n currencyAddress: string\n onDismiss?: () => void\n}\n\nconst ContributeModal: React.FC = ({ currency, contract, currencyAddress, onDismiss }) => {\n const [value, setValue] = useState('')\n const [pendingTx, setPendingTx] = useState(false)\n const { account } = useWallet()\n const balance = getFullDisplayBalance(useTokenBalance(currencyAddress))\n\n return (\n \n setValue(e.currentTarget.value)}\n symbol={currency}\n max={balance}\n onSelectMax={() => setValue(balance.toString())}\n />\n \n \n {\n setPendingTx(true)\n await contract.methods\n .deposit(new BigNumber(value).times(new BigNumber(10).pow(18)).toString())\n .send({ from: account })\n setPendingTx(false)\n onDismiss()\n }}\n >\n Confirm\n \n \n \n {`Get ${currency}`}\n \n \n )\n}\n\nexport default ContributeModal\n","import React, { useState, useEffect } from 'react'\nimport { useModal, Button, Text } from '@pizzafinance/ui-sdk'\nimport { useWallet } from '@binance-chain/bsc-use-wallet'\nimport BigNumber from 'bignumber.js'\nimport { Contract } from 'web3-eth-contract'\nimport { useERC20 } from 'hooks/useContract'\nimport { useIfoAllowance } from 'hooks/useAllowance'\nimport { useIfoApprove } from 'hooks/useApprove'\nimport { IfoStatus } from 'config/constants/types'\nimport { getBalanceNumber } from 'utils/formatBalance'\nimport LabelButton from './LabelButton'\nimport ContributeModal from './ContributeModal'\n\nexport interface Props {\n address: string\n currency: string\n currencyAddress: string\n contract: Contract\n status: IfoStatus\n raisingAmount: BigNumber\n tokenDecimals: number\n}\n\nconst IfoCardContribute: React.FC = ({\n address,\n currency,\n currencyAddress,\n contract,\n status,\n raisingAmount,\n tokenDecimals,\n}) => {\n const [pendingTx, setPendingTx] = useState(false)\n const [offeringTokenBalance, setOfferingTokenBalance] = useState(new BigNumber(0))\n const [userInfo, setUserInfo] = useState({ amount: 0, claimed: false })\n\n const { account } = useWallet()\n const contractRaisingToken = useERC20(currencyAddress)\n const allowance = useIfoAllowance(contractRaisingToken, address, pendingTx)\n const onApprove = useIfoApprove(contractRaisingToken, address)\n const [onPresentContributeModal] = useModal(\n ,\n )\n\n useEffect(() => {\n const fetch = async () => {\n const balance = new BigNumber(await contract.methods.getOfferingAmount(account).call())\n const userinfo = await contract.methods.userInfo(account).call()\n\n setUserInfo(userinfo)\n setOfferingTokenBalance(balance)\n }\n\n if (account) {\n fetch()\n }\n }, [account, contract.methods, pendingTx])\n\n if (allowance === null) {\n return null\n }\n\n const claim = async () => {\n setPendingTx(true)\n await contract.methods.harvest().send({ from: account })\n setPendingTx(false)\n }\n const isFinished = status === 'finished'\n const percentOfUserContribution = new BigNumber(userInfo.amount).div(raisingAmount).times(100)\n\n if (allowance <= 0) {\n return (\n {\n try {\n setPendingTx(true)\n await onApprove()\n setPendingTx(false)\n } catch (e) {\n setPendingTx(false)\n console.error(e)\n }\n }}\n >\n Approve\n \n )\n }\n\n return (\n <>\n \n \n {isFinished\n ? `You'll be refunded any excess tokens when you claim`\n : `${percentOfUserContribution.toFixed(5)}% of total`}\n \n \n )\n}\n\nexport default IfoCardContribute\n","import React, { useEffect, useState } from 'react'\nimport styled from 'styled-components'\nimport { useWallet } from '@binance-chain/bsc-use-wallet'\nimport BigNumber from 'bignumber.js'\nimport { Card, CardBody, CardRibbon } from '@pizzafinance/ui-sdk'\nimport { BSC_BLOCK_TIME } from 'config'\nimport { Ifo, IfoStatus } from 'config/constants/types'\nimport useI18n from 'hooks/useI18n'\nimport useBlock from 'hooks/useBlock'\nimport { useIfoContract } from 'hooks/useContract'\nimport UnlockButton from 'components/UnlockButton'\nimport IfoCardHeader from './IfoCardHeader'\nimport IfoCardProgress from './IfoCardProgress'\nimport IfoCardDescription from './IfoCardDescription'\nimport IfoCardDetails from './IfoCardDetails'\nimport IfoCardTime from './IfoCardTime'\nimport IfoCardContribute from './IfoCardContribute'\n\nexport interface IfoCardProps {\n ifo: Ifo\n}\n\nconst StyledIfoCard = styled(Card)<{ ifoId: string }>`\n background-image: ${({ ifoId }) => `url('/images/idos/${ifoId}-bg.svg')`};\n background-repeat: no-repeat;\n background-size: contain;\n padding-top: 112px;\n margin-left: auto;\n margin-right: auto;\n max-width: 437px;\n width: 100%;\n`\n\nconst getStatus = (currentBlock: number, startBlock: number, endBlock: number): IfoStatus | null => {\n if (currentBlock < startBlock) {\n return 'coming_soon'\n }\n\n if (currentBlock >= startBlock && currentBlock <= endBlock) {\n return 'live'\n }\n\n if (currentBlock > endBlock) {\n return 'finished'\n }\n\n return null\n}\n\nconst getRibbonComponent = (status: IfoStatus, TranslateString: (translationId: number, fallback: string) => any) => {\n if (status === 'coming_soon') {\n return \n }\n\n if (status === 'live') {\n return \n }\n\n return null\n}\n\nconst IfoCard: React.FC = ({ ifo }) => {\n const {\n id,\n address,\n name,\n subTitle,\n description,\n launchDate,\n launchTime,\n saleAmount,\n raiseAmount,\n pizzaToBurn,\n projectSiteUrl,\n currency,\n currencyAddress,\n tokenDecimals,\n releaseBlockNumber,\n } = ifo\n const [state, setState] = useState({\n isLoading: true,\n status: null,\n blocksRemaining: 0,\n secondsUntilStart: 0,\n progress: 0,\n secondsUntilEnd: 0,\n raisingAmount: new BigNumber(0),\n totalAmount: new BigNumber(0),\n startBlockNum: 0,\n endBlockNum: 0,\n })\n const { account } = useWallet()\n const contract = useIfoContract(address)\n\n const currentBlock = useBlock()\n const TranslateString = useI18n()\n\n const Ribbon = getRibbonComponent(state.status, TranslateString)\n\n useEffect(() => {\n const fetchProgress = async () => {\n const [startBlock, endBlock, raisingAmount, totalAmount] = await Promise.all([\n contract.methods.startBlock().call(),\n contract.methods.endBlock().call(),\n contract.methods.raisingAmount().call(),\n contract.methods.totalAmount().call(),\n ])\n\n const startBlockNum = parseInt(startBlock, 10)\n const endBlockNum = parseInt(endBlock, 10)\n\n const status = getStatus(currentBlock, startBlockNum, endBlockNum)\n const totalBlocks = endBlockNum - startBlockNum\n const blocksRemaining = endBlockNum - currentBlock\n\n // Calculate the total progress until finished or until start\n const progress =\n currentBlock > startBlockNum\n ? ((currentBlock - startBlockNum) / totalBlocks) * 100\n : ((currentBlock - releaseBlockNumber) / (startBlockNum - releaseBlockNumber)) * 100\n\n setState({\n isLoading: false,\n secondsUntilEnd: blocksRemaining * BSC_BLOCK_TIME,\n secondsUntilStart: (startBlockNum - currentBlock) * BSC_BLOCK_TIME,\n raisingAmount: new BigNumber(raisingAmount),\n totalAmount: new BigNumber(totalAmount),\n status,\n progress,\n blocksRemaining,\n startBlockNum,\n endBlockNum,\n })\n }\n\n fetchProgress()\n }, [currentBlock, contract, releaseBlockNumber, setState])\n\n const isActive = state.status === 'live'\n const isFinished = state.status === 'finished'\n\n return (\n \n \n \n \n \n {!account && }\n {(isActive || isFinished) && (\n \n )}\n \n \n \n \n )\n}\n\nexport default IfoCard\n","import styled from 'styled-components'\nimport { Heading } from '@pizzafinance/ui-sdk'\n\nconst Title = styled(Heading).attrs({ size: 'lg' })`\n color: ${({ theme }) => theme.colors.secondary};\n margin-bottom: 16px;\n`\n\nexport default Title\n","import styled from 'styled-components'\n\ninterface IfoCardWrapperProps {\n isSingle?: boolean\n}\n\nconst IfoCardWrapper = styled.div`\n border-top: 2px solid ${({ theme }) => theme.colors.textSubtle};\n display: grid;\n grid-template-columns: 1fr;\n grid-gap: 32px;\n padding-bottom: 40px;\n padding-top: 40px;\n\n ${({ theme }) => theme.mediaQueries.md} {\n grid-template-columns: ${({ isSingle }) => `repeat(${isSingle ? 1 : 2}, 1fr)`};\n }\n`\n\nIfoCardWrapper.defaultProps = {\n isSingle: true,\n}\n\nexport default IfoCardWrapper\n","import React from 'react'\nimport styled from 'styled-components'\nimport { Text, Heading, BaseLayout, Button, LinkExternal, Flex, Image } from '@pizzafinance/ui-sdk'\nimport { ifosConfig } from 'config/constants'\nimport useI18n from 'hooks/useI18n'\nimport IfoCard from './components/IfoCard'\nimport Title from './components/Title'\nimport IfoCards from './components/IfoCards'\n\nconst LaunchIfoCallout = styled(BaseLayout)`\n border-top: 2px solid ${({ theme }) => theme.colors.textSubtle};\n display: grid;\n grid-template-columns: 1fr;\n grid-gap: 32px;\n margin: 0 auto;\n padding: 32px 0;\n\n ${({ theme }) => theme.mediaQueries.sm} {\n grid-template-columns: 1fr 1fr;\n }\n`\n\nconst List = styled.ul`\n color: ${({ theme }) => theme.colors.text};\n margin-bottom: 16px;\n\n & > li {\n line-height: 1.4;\n margin-bottom: 8px;\n }\n`\n\n/**\n * Note: currently there should be only 1 active IFO at a time\n */\nconst activeIfo = ifosConfig.find((ifo) => ifo.isActive)\n\nconst Ifo = () => {\n const TranslateString = useI18n()\n\n return (\n
\n \n \n \n \n
\n {TranslateString(592, 'How to take part')}\n {TranslateString(594, 'Before Sale')}:\n \n
  • {TranslateString(596, 'Buy CHAP and BFT tokens')}
  • \n
  • {TranslateString(598, 'Get CHAP-BFT LP tokens by adding CHAP and BFT liquidity')}
  • \n
    \n \n \n {TranslateString(999, 'Buy Chap')}\n \n \n {TranslateString(999, 'Get LP tokens')}\n \n \n {TranslateString(600, 'During Sale')}:\n \n
  • {TranslateString(602, 'While the sale is live, commit your Chap-LP tokens to buy the IDO tokens')}
  • \n
    \n {TranslateString(604, 'After Sale')}:\n \n
  • {TranslateString(606, 'Claim the tokens you bought, along with any unspent funds.')}
  • \n
  • {TranslateString(608, 'Done!')}
  • \n
    \n \n \n {TranslateString(610, 'Read more')}\n \n \n
    \n
    \n \"ido\n
    \n {TranslateString(512, 'Want to launch your own IDO?')}\n \n {TranslateString(\n 514,\n 'Launch your project with Chapswap, Bitfinity EVM most-used AMM project and liquidity provider, to bring your token directly to the most active and rapidly growing community on Bitfinity.',\n )}\n \n \n {TranslateString(516, 'Apply to launch')}\n \n
    \n
    \n
    \n
    \n )\n}\n\nexport default Ifo\n","import React from 'react'\nimport { ifosConfig } from 'config/constants'\nimport { Ifo } from 'config/constants/types'\nimport IfoCard from './components/IfoCard'\nimport IfoCards from './components/IfoCards'\n\nconst inactiveIfo: Ifo[] = ifosConfig.filter((ifo) => !ifo.isActive)\n\nconst PastIfo = () => {\n return (\n \n {inactiveIfo.map((ifo) => (\n \n ))}\n \n )\n}\n\nexport default PastIfo\n","import React from 'react'\nimport { Route, useRouteMatch } from 'react-router-dom'\nimport Container from 'components/layout/Container'\nimport IfoTabButtons from './components/IfoTabButtons'\nimport Hero from './components/Hero'\nimport CurrentIfo from './CurrentIfo'\nimport PastIfo from './PastIfo'\n\nconst Ifos = () => {\n const { path } = useRouteMatch()\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default Ifos\n","import React, { Suspense, useEffect, lazy } from 'react'\nimport { HashRouter, Route, Switch, Router } from 'react-router-dom'\nimport { useWallet } from '@binance-chain/bsc-use-wallet'\nimport { ResetCSS } from '@pizzafinance/ui-sdk'\nimport BigNumber from 'bignumber.js'\nimport { useFetchPublicData } from 'state/hooks'\nimport GlobalStyle from './style/Global'\nimport Menu from './components/Menu'\nimport PageLoader from './components/PageLoader'\n\nimport Pools from './views/Pools'\nimport Home from './views/Home'\nimport Farms from './views/Farms'\nimport Lottery from './views/Lottery'\nimport Ifos from './views/Ifos'\n\n\n// const Home = lazy(() => import('./views/Home'))\n// const Farms = lazy(() => import('./views/Farms'))\n// const Lottery = lazy(() => import('./views/Lottery'))\n// const Ifos = lazy(() => import('./views/Ifos'))\nconst NotFound = lazy(() => import('./views/NotFound'))\n// const Nft = lazy(() => import('./views/Nft'))\n\n// This config is required for number formating\nBigNumber.config({\n EXPONENTIAL_AT: 1000,\n DECIMAL_PLACES: 80,\n})\n\nconst App: React.FC = () => {\n const { account, connect } = useWallet()\n useEffect(() => {\n if (!account && window.localStorage.getItem('accountStatus')) {\n connect('injected')\n }\n }, [account, connect])\n\n useFetchPublicData()\n\n return (\n \n \n\n \n \n \n }>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default React.memo(App)\n","import { configureStore } from '@reduxjs/toolkit'\nimport farmsReducer from './farms'\nimport poolsReducer from './pools'\n\nexport default configureStore({\n devTools: process.env.NODE_ENV !== 'production',\n reducer: {\n farms: farmsReducer,\n pools: poolsReducer,\n },\n})\n","import React from 'react'\nimport { ModalProvider } from '@pizzafinance/ui-sdk'\nimport bsc, { UseWalletProvider } from '@binance-chain/bsc-use-wallet'\nimport { Provider } from 'react-redux'\nimport getRpcUrl from 'utils/getRpcUrl'\nimport { LanguageContextProvider } from 'contexts/Localisation/languageContext'\nimport { ThemeContextProvider } from 'contexts/ThemeContext'\nimport { BlockContextProvider } from 'contexts/BlockContext'\nimport { RefreshContextProvider } from 'contexts/RefreshContext'\nimport store from 'state'\n\nconst Providers: React.FC = ({ children }) => {\n const rpcUrl = getRpcUrl()\n\n return (\n \n \n \n \n \n \n {children}\n \n \n \n \n \n \n )\n}\n\nexport default Providers\n","import ReactDOM from 'react-dom'\nimport React from 'react'\nimport App from './App'\nimport Providers from './Providers'\n\nReactDOM.render(\n \n \n \n \n ,\n document.getElementById('root'),\n)\n","import React, { createContext } from 'react'\n\nexport interface TranslationState {\n translations: Array\n setTranslations: React.Dispatch>>\n}\n\nconst defaultTranslationState: TranslationState = {\n translations: [],\n setTranslations: (): void => undefined,\n}\n\nexport const TranslationsContext = createContext(defaultTranslationState as TranslationState)\n"],"sourceRoot":""}