{"version":3,"sources":["state/farms/fetchFarms.ts","state/farms/fetchFarmUser.ts","state/farms/index.ts","state/fetchBNBPrice.ts","state/fetchTokenPrice.ts","state/hooks.ts","utils/getRpcUrl.ts","contexts/RefreshContext.tsx","state/actions.ts","hooks/useRefresh.ts","components/layout/Container.tsx","components/layout/Page.tsx","contexts/Localisation/translationsContext.ts","config/constants/types.ts","config/constants/contracts.ts","utils/multicall.ts","utils/addressHelpers.ts","config/constants/pools.ts","state/pools/fetchPoolsUser.ts","state/pools/index.ts","config/constants/farms.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","App.tsx","contexts/BlockContext.tsx","state/index.ts","Providers.tsx","index.tsx","utils/web3.ts"],"names":["fetchFarms","a","Promise","all","farmsConfig","map","farmConfig","lpAdress","lpAddresses","CHAIN_ID","calls","address","tokenAddresses","name","params","quoteTokenAdresses","isTokenOnly","getMasterChefAddress","multicall","erc20","tokenBalanceLP","quoteTokenBlanceLP","lpTokenBalanceMC","lpTotalSupply","tokenDecimals","quoteTokenDecimals","tokenAmount","BigNumber","div","pow","tokenPriceVsQuote","tokenSymbol","QuoteToken","BUSD","quoteTokenSymbol","lpTotalInQuoteToken","times","lpTokenRatio","quoteTokenAmount","comparedTo","masterchefABI","pid","info","totalAllocPoint","eggPerBlock","allocPoint","_hex","poolWeight","toJSON","toNumber","multiplier","toString","depositFeeBP","data","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","find","f","setFarmUserData","arrayOfUserDataObjects","forEach","userDataEl","index","userData","actions","fetchFarmsPublicDataAsync","dispatch","farms","fetchFarmUserDataAsync","userFarmAllowances","userFarmTokenBalances","userStakedBalances","userFarmEarnings","farmAllowance","allowance","useGetBNBPriceData","useState","setData","useEffect","axios","get","resp","console","log","priceUSD","fetchData","useGetPriceData","useFetchPublicData","useDispatch","slowRefresh","useRefresh","useFarms","useSelector","useFarmFromPid","useFarmUser","usePriceBnbBusd","usePriceCakeBusd","useTotalValue","bnbPrice","cakePrice","value","i","length","val","BNB","CAKE","plus","nodes","process","getNodeUrl","randomIndex","random","RefreshContext","React","createContext","slow","fast","RefreshContextProvider","children","setSlow","setFast","interval","setInterval","prev","clearInterval","Provider","useContext","fastRefresh","Container","styled","theme","mediaQueries","sm","Page","lg","defaultTranslationState","translations","setTranslations","TranslationsContext","PoolCategory","cake","56","97","masterChef","wbnb","lottery","lotteryNFT","mulltiCall","busd","usdt","tusd","abi","web3","getWeb3","multi","eth","Contract","MultiCallAbi","getMulticallAddress","itf","Interface","calldata","call","toLowerCase","encodeFunctionData","methods","aggregate","returnData","res","decodeFunctionResult","getCakeAddress","addresses","chainId","getWbnbAddress","getLotteryAddress","getLotteryTicketAddress","pools","nonBnbPools","poolsConfig","filter","p","stakingTokenName","bnbPools","nonMasterPools","sousId","masterChefContract","masterChefABI","fetchPoolsAllowance","stakingTokenAddress","contractAddress","allowances","reduce","acc","pool","fetchUserBalances","tokenBalancesRaw","tokenBalances","getBalance","bnbBalance","bnbBalances","fetchUserStakeBalances","sousChefABI","userInfo","stakedBalances","amount","masterPoolAmount","0","fetchUserPendingRewards","pendingRewards","pendingSIMEX","pendingReward","PoolsSlice","setPoolsPublicData","livePoolsData","livePoolData","entry","setPoolsUserData","userPoolData","updatePoolsUserData","field","findIndex","fetchPoolsUserDataAsync","stakingTokenBalances","stakingTokenBalance","updateUserAllowance","updateUserBalance","updateUserStakedBalance","updateUserPendingReward","risk","lpSymbol","contracts","USDT","TUSD","GlobalStyle","createGlobalStyle","EN","code","language","allLanguages","CACHE_KEY","LanguageContext","selectedLanguage","setSelectedLanguage","translatedLanguage","setTranslatedLanguage","LanguageContextProvider","parseInt","REACT_APP_CROWDIN_PROJECTID","StringTranslations","token","REACT_APP_CROWDIN_APIKEY","storedLangCode","localStorage","getItem","storedLang","getStoredLang","fetch","then","r","json","translationApiResponse","catch","e","error","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","cakePriceUsd","login","logout","currentLang","langs","setLang","links","priceLink","Wrapper","PageLoader","Home","lazy","Farms","NotFound","EXPONENTIAL_AT","DECIMAL_PLACES","App","window","Global","fallback","path","exact","tokenMode","component","memo","BlockContext","BlockContextProvider","previousBlock","useRef","block","setBlock","getBlockNumber","blockNumber","current","configureStore","devTools","reducer","farmsReducer","poolsReducer","Providers","rpcUrl","getRpcUrl","store","connectors","walletconnect","bsc","ReactDOM","render","StrictMode","document","getElementById","RPC_URL","httpProvider","Web3","providers","HttpProvider","timeout","getContract","contractOptions"],"mappings":"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","file":"static/js/main.40844508.chunk.js","sourcesContent":["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'\nimport { QuoteToken } from '../../config/constants/types'\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: farmConfig.isTokenOnly ? farmConfig.tokenAddresses[CHAIN_ID] : 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 let tokenAmount\n let lpTotalInQuoteToken\n let tokenPriceVsQuote\n if (farmConfig.isTokenOnly) {\n tokenAmount = new BigNumber(lpTokenBalanceMC).div(new BigNumber(10).pow(tokenDecimals))\n if (farmConfig.tokenSymbol === QuoteToken.BUSD && farmConfig.quoteTokenSymbol === QuoteToken.BUSD) {\n tokenPriceVsQuote = new BigNumber(1)\n } else {\n tokenPriceVsQuote = new BigNumber(quoteTokenBlanceLP).div(new BigNumber(tokenBalanceLP))\n }\n lpTotalInQuoteToken = tokenAmount.times(tokenPriceVsQuote)\n } else {\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 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 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 if (tokenAmount.comparedTo(0) > 0) {\n tokenPriceVsQuote = quoteTokenAmount.div(tokenAmount)\n } else {\n tokenPriceVsQuote = new BigNumber(quoteTokenBlanceLP).div(new BigNumber(tokenBalanceLP))\n }\n }\n\n const [info, totalAllocPoint, eggPerBlock] = 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 address: getMasterChefAddress(),\n name: 'simexPerBlock',\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,\n lpTotalInQuoteToken: lpTotalInQuoteToken.toJSON(),\n tokenPriceVsQuote: tokenPriceVsQuote.toJSON(),\n poolWeight: poolWeight.toNumber(),\n multiplier: `${allocPoint.div(100).toString()}X`,\n depositFeeBP: info.depositFeeBP,\n eggPerBlock: new BigNumber(eggPerBlock).toNumber(),\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.isTokenOnly ? farm.tokenAddresses[CHAIN_ID] : 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.isTokenOnly ? farm.tokenAddresses[CHAIN_ID] : 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: 'pendingSIMEX',\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 { useEffect, useState } from 'react'\nimport BigNumber from 'bignumber.js'\nimport axios from \"axios\"\n\n\n\nconst useGetBNBPriceData = () => {\n const [data, setData] = useState(new BigNumber(0))\n const API_URL = \"https://api.dex.guru/v1/tokens/0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c-bsc\"\n\n\n useEffect(() => {\n const fetchData = async () => {\n const resp = await axios.get(API_URL);\n // axios.get(API_URL).then((re)=>{\n // setCakePriceBusd(new BigNumber(re.data.data.price))\n // });\n console.log(resp.data.priceUSD, \"price\");\n\n setData(new BigNumber(resp.data.priceUSD))\n }\n\n fetchData()\n }, [])\n\n return data\n}\n\nexport default useGetBNBPriceData","import { useEffect, useState } from 'react'\nimport BigNumber from 'bignumber.js'\nimport axios from \"axios\"\n\n\n\nconst useGetPriceData = () => {\n const [data, setData] = useState(new BigNumber(0))\n const API_URL = \"https://api.dex.guru/v1/tokens/0x0db5ca5Fd5E07E4038273CF5710E06fFcD0fecC0-bsc\"\n\n\n useEffect(() => {\n const fetchData = async () => {\n const resp = await axios.get(API_URL);\n // axios.get(API_URL).then((re)=>{\n // setCakePriceBusd(new BigNumber(re.data.data.price))\n // });\n console.log(resp.data,\"price 22\");\n\n setData(new BigNumber(resp.data.priceUSD))\n }\n\n fetchData()\n }, [])\n\n return data\n}\n\nexport default useGetPriceData","import BigNumber from 'bignumber.js'\nimport { useEffect, useMemo } 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'\nimport { QuoteToken } from '../config/constants/types'\nimport useGetBNBPriceData from './fetchBNBPrice'\nimport useGetPriceData from './fetchTokenPrice'\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 = (sousId): Pool => {\n const pool = useSelector((state: State) => state.pools.data.find((p) => p.sousId === sousId))\n return pool\n}\n\n// Prices\n\nexport const usePriceBnbBusd = (): BigNumber => {\n const price = useGetBNBPriceData();\n return price;\n // const pid = 0 // BUSD-BNB LP\n // const farm = useFarmFromPid(pid)\n // return farm.tokenPriceVsQuote ? new BigNumber(farm.tokenPriceVsQuote) : ZERO\n}\n\nexport const usePriceCakeBusd = (): BigNumber => {\n const price = useGetPriceData();\n return price;\n // const pid = 0 // CAKE-BNB LP\n // const bnbPriceUSD = usePriceBnbBusd()\n // const farm = useFarmFromPid(pid)\n // return farm.tokenPriceVsQuote ? bnbPriceUSD.times(farm.tokenPriceVsQuote) : ZERO\n // const pid = 0; // EGG-BUSD LP\n // const farm = useFarmFromPid(pid);\n // return farm.tokenPriceVsQuote ? new BigNumber(farm.tokenPriceVsQuote) : ZERO;\n}\n\nexport const useTotalValue = (): BigNumber => {\n const farms = useFarms()\n const bnbPrice = usePriceBnbBusd()\n const cakePrice = usePriceCakeBusd()\n let value = new BigNumber(0)\n for (let i = 0; i < farms.length; i++) {\n const farm = farms[i]\n if (farm.lpTotalInQuoteToken) {\n let val\n if (farm.quoteTokenSymbol === QuoteToken.BNB) {\n val = bnbPrice.times(farm.lpTotalInQuoteToken)\n } else if (farm.quoteTokenSymbol === QuoteToken.CAKE) {\n val = cakePrice.times(farm.lpTotalInQuoteToken)\n } else {\n val = farm.lpTotalInQuoteToken\n }\n value = value.plus(val)\n }\n }\n return value\n}\n","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 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","export { fetchFarmsPublicDataAsync, fetchFarmUserDataAsync } from './farms'\nexport {\n fetchPoolsPublicDataAsync,\n fetchPoolsUserDataAsync,\n updateUserAllowance,\n updateUserBalance,\n updateUserPendingReward,\n updateUserStakedBalance,\n} from './pools'\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","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","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 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","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 cakeToBurn: 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 'CAKE' = 'CAKE',\n 'SYRUP' = 'SYRUP',\n 'BUSD' = 'BUSD',\n 'TWT' = 'TWT',\n 'UST' = 'UST',\n 'USDT' = 'USDT',\n 'TUSD' = 'TUSD',\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 56: string\n}\n\nexport interface FarmConfig {\n pid: number\n lpSymbol: string\n lpAddresses: Address\n tokenSymbol: string\n tokenAddresses: Address\n quoteTokenSymbol: QuoteToken\n quoteTokenAdresses: Address\n multiplier?: string\n isTokenOnly?: boolean\n isCommunity?: boolean\n risk: number\n dual?: {\n rewardPerBlock: number\n earnLabel: string\n endBlock: number\n }\n}\n\nexport interface PoolConfig {\n sousId: number\n image?: string\n tokenName: 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","export default {\n cake: {\n 56: '0x0db5ca5Fd5E07E4038273CF5710E06fFcD0fecC0',\n 97: '0x1de7921C03AC76894e8c930654A12c60d4979217',\n },\n masterChef: {\n 56: '0x7cd0dDf6f8aa136f34590b454FD7390341A34D7E',\n 97: '0x69732418b7CCAAfE0bD42d37A0e66A788b93DA9c',\n },\n wbnb: {\n 56: '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c',\n 97: '0xae13d989dac2f0debff460ac112a837c89baa7cd',\n },\n lottery: {\n 56: '',\n 97: '',\n },\n lotteryNFT: {\n 56: '',\n 97: '',\n },\n mulltiCall: {\n 56: '0x1ee38d535d541c55c9dae27b12edf090c608e6fb',\n 97: '0x67ADCB4dF3931b0C5Da724058ADC2174a9844412',\n },\n busd: {\n 56: '0xe9e7cea3dedca5984780bafc599bd69add087d56',\n 97: '',\n },\n usdt: {\n 56: \"0x55d398326f99059fF775485246999027B3197955\"\n },\n tusd:{\n 56:\"0x14016E85a25aeb13065688cAFB43044C2ef86784\"\n }\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 addresses from 'config/constants/contracts'\n\nconst chainId = process.env.REACT_APP_CHAIN_ID\n\nexport const getCakeAddress = () => {\n return addresses.cake[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}\n","import { PoolConfig, QuoteToken, PoolCategory } from './types'\n\nconst pools: PoolConfig[] = [\n // {\n // sousId: 0,\n // tokenName: 'CAKE',\n // stakingTokenName: QuoteToken.CAKE,\n // stakingTokenAddress: '0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82',\n // contractAddress: {\n // 97: '0xd3af5fe61dbaf8f73149bfcfa9fb653ff096029a',\n // 56: '0x73feaa1eE314F8c655E354234017bE2193C9E24E',\n // },\n // poolCategory: PoolCategory.CORE,\n // projectLink: 'https://pancakeswap.finance/',\n // harvest: true,\n // tokenPerBlock: '10',\n // sortOrder: 1,\n // isFinished: false,\n // tokenDecimals: 18,\n // },\n // {\n // sousId: 1,\n // tokenName: 'TWT',\n // stakingTokenName: QuoteToken.SYRUP,\n // stakingTokenAddress: '0x009cF7bC57584b7998236eff51b98A168DceA9B0',\n // contractAddress: {\n // 97: '0xAfd61Dc94f11A70Ae110dC0E0F2061Af5633061A',\n // 56: '0xAfd61Dc94f11A70Ae110dC0E0F2061Af5633061A',\n // },\n // poolCategory: PoolCategory.CORE,\n // projectLink: 'https://trustwallet.com/',\n // harvest: true,\n // tokenPerBlock: '20',\n // sortOrder: 999,\n // isFinished: true,\n // tokenDecimals: 18,\n // },\n]\n\nexport default pools\n","import { AbiItem } from 'web3-utils'\nimport poolsConfig from 'config/constants/pools'\nimport masterChefABI from 'config/abi/masterchef.json'\nimport sousChefABI from 'config/abi/sousChef.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, Cake / Cake 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.sousId !== 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.sousId]: 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.sousId]: 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.sousId]: 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(sousChefABI, calls)\n const stakedBalances = nonMasterPools.reduce(\n (acc, pool, index) => ({\n ...acc,\n [pool.sousId]: new BigNumber(userInfo[index].amount._hex).toJSON(),\n }),\n {},\n )\n\n // Cake / Cake 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(sousChefABI, calls)\n const pendingRewards = nonMasterPools.reduce(\n (acc, pool, index) => ({\n ...acc,\n [pool.sousId]: new BigNumber(res[index]).toJSON(),\n }),\n {},\n )\n\n // Cake / Cake pool\n const pendingReward = await masterChefContract.methods.pendingSIMEX('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.sousId === pool.sousId)\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.sousId === pool.sousId)\n return { ...pool, userData: userPoolData }\n })\n },\n updatePoolsUserData: (state, action) => {\n const { field, value, sousId } = action.payload\n const index = state.data.findIndex((p) => p.sousId === sousId)\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.sousId === pool.sousId)\n const totalStaking = totalStakings.find((entry) => entry.sousId === pool.sousId)\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 sousId: pool.sousId,\n allowance: allowances[pool.sousId],\n stakingTokenBalance: stakingTokenBalances[pool.sousId],\n stakedBalance: stakedBalances[pool.sousId],\n pendingReward: pendingRewards[pool.sousId],\n }))\n\n dispatch(setPoolsUserData(userData))\n}\n\nexport const updateUserAllowance = (sousId: string, account: string) => async (dispatch) => {\n const allowances = await fetchPoolsAllowance(account)\n dispatch(updatePoolsUserData({ sousId, field: 'allowance', value: allowances[sousId] }))\n}\n\nexport const updateUserBalance = (sousId: string, account: string) => async (dispatch) => {\n const tokenBalances = await fetchUserBalances(account)\n dispatch(updatePoolsUserData({ sousId, field: 'stakingTokenBalance', value: tokenBalances[sousId] }))\n}\n\nexport const updateUserStakedBalance = (sousId: string, account: string) => async (dispatch) => {\n const stakedBalances = await fetchUserStakeBalances(account)\n dispatch(updatePoolsUserData({ sousId, field: 'stakedBalance', value: stakedBalances[sousId] }))\n}\n\nexport const updateUserPendingReward = (sousId: string, account: string) => async (dispatch) => {\n const pendingRewards = await fetchUserPendingRewards(account)\n dispatch(updatePoolsUserData({ sousId, field: 'pendingReward', value: pendingRewards[sousId] }))\n}\n\nexport default PoolsSlice.reducer\n","import contracts from './contracts'\nimport { FarmConfig, QuoteToken } from './types'\n\nconst farms: FarmConfig[] = [\n\n {\n pid: 0,\n risk: 5,\n isTokenOnly: true,\n lpSymbol: 'SIMEX',\n lpAddresses: {\n 97: '0x1de7921C03AC76894e8c930654A12c60d4979217',\n 56: '0x6712F1B1443B4513F230BA6eeb53527ea946f7f1', // AUTO-BNB LP\n },\n tokenSymbol: 'SIMEX',\n tokenAddresses: {\n 97: '0x1de7921C03AC76894e8c930654A12c60d4979217',\n 56: '0x0db5ca5Fd5E07E4038273CF5710E06fFcD0fecC0',\n },\n quoteTokenSymbol: QuoteToken.BNB,\n quoteTokenAdresses: contracts.wbnb,\n },\n {\n pid: 1,\n risk: 5,\n isTokenOnly: true,\n lpSymbol: 'USDT',\n lpAddresses: {\n 97: '0x1de7921C03AC76894e8c930654A12c60d4979217',\n 56: '0x16b9a82891338f9bA80E2D6970FddA79D1eb0daE', // AUTO-BNB LP\n },\n tokenSymbol: 'USDT',\n tokenAddresses: {\n 97: '0x1de7921C03AC76894e8c930654A12c60d4979217',\n 56: '0x55d398326f99059fF775485246999027B3197955',\n },\n quoteTokenSymbol: QuoteToken.BNB,\n quoteTokenAdresses: contracts.wbnb,\n },\n {\n pid: 2,\n risk: 5,\n isTokenOnly: true,\n lpSymbol: 'BUSD',\n lpAddresses: {\n 97: '0x1de7921C03AC76894e8c930654A12c60d4979217',\n 56: '0x58F876857a02D6762E0101bb5C46A8c1ED44Dc16', // AUTO-BNB LP\n },\n tokenSymbol: 'BUSD',\n tokenAddresses: {\n 97: '0x1de7921C03AC76894e8c930654A12c60d4979217',\n 56: '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56',\n },\n quoteTokenSymbol: QuoteToken.BNB,\n quoteTokenAdresses: contracts.wbnb,\n },\n {\n pid: 3,\n risk: 5,\n isTokenOnly: true,\n lpSymbol: 'BNB',\n lpAddresses: {\n 97: '0x1de7921C03AC76894e8c930654A12c60d4979217',\n 56: '0x58F876857a02D6762E0101bb5C46A8c1ED44Dc16', // AUTO-BNB LP\n },\n tokenSymbol: 'BNB',\n tokenAddresses: {\n 97: '0x1de7921C03AC76894e8c930654A12c60d4979217',\n 56: '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c',\n },\n quoteTokenSymbol: QuoteToken.BUSD,\n quoteTokenAdresses: contracts.busd,\n },\n {\n pid: 4,\n risk: 5,\n isTokenOnly: true,\n lpSymbol: 'TUSD',\n lpAddresses: {\n 97: '0x1de7921C03AC76894e8c930654A12c60d4979217',\n 56: '0xE1c4f0CcFED718C9E11Bd70977381F1e8D13C00D', // AUTO-BNB LP\n },\n tokenSymbol: 'TUSD',\n tokenAddresses: {\n 97: '0x1de7921C03AC76894e8c930654A12c60d4979217',\n 56: '0x14016E85a25aeb13065688cAFB43044C2ef86784',\n },\n quoteTokenSymbol: QuoteToken.BNB,\n quoteTokenAdresses: contracts.wbnb,\n },\n {\n pid: 5,\n risk: 5,\n // isTokenOnly: true,\n lpSymbol: 'SIMEX-USDT LP',\n lpAddresses: {\n 97: '0x1de7921C03AC76894e8c930654A12c60d4979217',\n 56: '0x9cB9Fc426B25649b7d3Fb6207e115f5732252f2F', // AUTO-BNB LP\n },\n tokenSymbol: 'USDT',\n tokenAddresses: {\n 97: '0x1de7921C03AC76894e8c930654A12c60d4979217',\n 56: '0x55d398326f99059fF775485246999027B3197955',\n },\n quoteTokenSymbol: QuoteToken.USDT,\n quoteTokenAdresses: contracts.usdt,\n },\n {\n pid: 6,\n risk: 5,\n // isTokenOnly: true,\n lpSymbol: 'SIMEX-TUSD LP',\n lpAddresses: {\n 97: '0x1de7921C03AC76894e8c930654A12c60d4979217',\n 56: '0x543901790225270A70784deb4bD2Cf5Cca75B57F', // AUTO-BNB LP\n },\n tokenSymbol: 'TUSD',\n tokenAddresses: {\n 97: '0x1de7921C03AC76894e8c930654A12c60d4979217',\n 56: '0x14016E85a25aeb13065688cAFB43044C2ef86784',\n },\n quoteTokenSymbol: QuoteToken.TUSD,\n quoteTokenAdresses: contracts.tusd,\n },\n {\n pid: 7,\n risk: 5,\n // isTokenOnly: true,\n lpSymbol: 'SIMEX-BNB LP',\n lpAddresses: {\n 97: '0x1de7921C03AC76894e8c930654A12c60d4979217',\n 56: '0x6712F1B1443B4513F230BA6eeb53527ea946f7f1', // AUTO-BNB LP\n },\n tokenSymbol: 'BNB',\n tokenAddresses: {\n 97: '0x1de7921C03AC76894e8c930654A12c60d4979217',\n 56: '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c',\n },\n quoteTokenSymbol: QuoteToken.BNB,\n quoteTokenAdresses: contracts.wbnb,\n },\n {\n pid: 8,\n risk: 5,\n // isTokenOnly: true,\n lpSymbol: 'SIMEX-BUSD LP',\n lpAddresses: {\n 97: '0x1de7921C03AC76894e8c930654A12c60d4979217',\n 56: '0x009cD9fdbBc4C3A8DbBb1B6a22bA7Da32d7FDF90', // AUTO-BNB LP\n },\n tokenSymbol: 'BUSD',\n tokenAddresses: {\n 97: '0x1de7921C03AC76894e8c930654A12c60d4979217',\n 56: '0xe9e7cea3dedca5984780bafc599bd69add087d56',\n },\n quoteTokenSymbol: QuoteToken.BUSD,\n quoteTokenAdresses: contracts.busd,\n },\n {\n pid: 9,\n risk: 5,\n // isTokenOnly: true,\n lpSymbol: 'SIMEX-BSW LP',\n lpAddresses: {\n 97: '0x1de7921C03AC76894e8c930654A12c60d4979217',\n 56: '0x70c406f9841ad26874E17FfC3F38269837e36453', // AUTO-BNB LP\n },\n tokenSymbol: 'SIMEX',\n tokenAddresses: {\n 97: '0x1de7921C03AC76894e8c930654A12c60d4979217',\n 56: '0x0db5ca5Fd5E07E4038273CF5710E06fFcD0fecC0',\n },\n quoteTokenSymbol: QuoteToken.CAKE,\n quoteTokenAdresses: contracts.cake,\n },\n {\n pid: 10,\n risk: 5,\n // isTokenOnly: true,\n lpSymbol: 'SIMEX-CHESS LP',\n lpAddresses: {\n 97: '0x1de7921C03AC76894e8c930654A12c60d4979217',\n 56: '0x86fA23b3579f986aD005E25988e696A467228105', // AUTO-BNB LP\n },\n tokenSymbol: 'SIMEX',\n tokenAddresses: {\n 97: '0x1de7921C03AC76894e8c930654A12c60d4979217',\n 56: '0x0db5ca5Fd5E07E4038273CF5710E06fFcD0fecC0',\n },\n quoteTokenSymbol: QuoteToken.CAKE,\n quoteTokenAdresses: contracts.cake,\n },\n {\n pid: 11,\n risk: 5,\n // isTokenOnly: true,\n lpSymbol: 'SIMEX-BABYDOGE LP',\n lpAddresses: {\n 97: '0x1de7921C03AC76894e8c930654A12c60d4979217',\n 56: '0x145cE3283FED0234fEb251109B5Ce0Afa8d3A7Be', // AUTO-BNB LP\n },\n tokenSymbol: 'SIMEX',\n tokenAddresses: {\n 97: '0x1de7921C03AC76894e8c930654A12c60d4979217',\n 56: '0x0db5ca5Fd5E07E4038273CF5710E06fFcD0fecC0',\n },\n quoteTokenSymbol: QuoteToken.CAKE,\n quoteTokenAdresses: contracts.cake,\n },\n]\n\n\n\n\nexport default farms\n","import { createGlobalStyle } from 'styled-components'\n// eslint-disable-next-line import/no-unresolved\nimport { PancakeTheme } from '@pancakeswap-libs/uikit'\n\ndeclare module 'styled-components' {\n /* eslint-disable @typescript-eslint/no-empty-interface */\n export interface DefaultTheme extends PancakeTheme {}\n}\n\nconst GlobalStyle = createGlobalStyle`\n * {\n // font-family: 'Kanit', sans-serif;\n font-family: 'Lato', sans-serif;\n }\n body {\n \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 = 'pancakeSwapLanguage'\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_PROJECTID)\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 console.log(`import(\\`../../../public/i18n/${selectedLanguage.code}.json\\`)`)\n fetch(`./i18n/${selectedLanguage.code}.json`)\n .then((r) => r.json())\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((e) => {\n console.error('ERROR')\n console.error(e)\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 '@pancakeswap-libs/uikit'\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 '@pancakeswap-libs/uikit'\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://swap.simbadex.com/', // 'https://exchange.goosedefi.com/',\n },\n {\n label: 'Liquidity',\n href: 'https://swap.simbadex.com/#/pool', // 'https://exchange.goosedefi.com/#/pool',\n },\n ],\n },\n // {\n // label: 'Farming',\n // icon: 'FarmIcon',\n // href: '/farms',\n // },\n \n\n // {\n // label: 'IBG Super Staking',\n // icon: 'VaultsIcon',\n // href: 'https://bscsuper.ibg.finance/', \n // },\n // {\n // label: 'Farming',\n // icon: 'FarmIcon',\n // items: [\n\n // // {\n // // label: 'IBG Booster (OLD)',\n // // href: 'https://booster.ibg.finance/ibgbooster', \n // // },\n // // {\n // // label: 'Withdraw (Old)',\n // // href: 'https://farm1.ibg.finance/withdraw', \n // // },\n // {\n // label: 'V2',\n // href: '/farms', \n \n // },\n // ],\n // },\n {\n label: 'Farming',\n icon: 'FarmIcon',\n href: '/farms',\n },\n {\n label: 'Staking',\n icon: 'PoolIcon',\n href: '/pools',\n },\n\n // {\n // label: 'Price Charts',\n // icon: 'InfoIcon',\n // initialOpenState: false,\n // items: [\n // {\n // label: 'Dex Guru',\n // href: 'https://dex.guru/token/0x5c46c55a699a6359e451b2c99344138420c87261-bsc',\n // },\n // {\n // label: 'Poo Coin',\n // href: 'https://poocoin.app/tokens/0x5c46c55a699a6359e451b2c99344138420c87261',\n // },\n // {\n // label: 'Bogged Finance',\n // href: 'https://charts.bogged.finance/?token=0x5c46c55a699a6359e451b2c99344138420c87261',\n // },\n // {\n // label: 'Dex Tools',\n // href: 'https://www.dextools.io/app/pancakeswap/pair-explorer/0x8673491B4B72695D4BE789fe814D1dd0988e19A8',\n // },\n // ],\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: 'WhitePaper',\n // icon: 'NftIcon',\n // href: '/SimbaExchange_WhitePaper.pdf',\n // },\n // {\n // label: 'Info',\n // icon: 'InfoIcon',\n // items: [\n // {\n // label: 'Swap',\n // href: '/', // 'https://pancakeswap.info/token/0xF952Fc3ca7325Cc27D15885d37117676d25BfdA6',\n // },\n // {\n // label: 'CoinGecko',\n // href: '/', // 'https://www.coingecko.com/en/coins/goose-finance',\n // },\n // {\n // label: 'CoinMarketCap',\n // href: '/', // 'https://coinmarketcap.com/currencies/goose-finance/',\n // },\n // {\n // label: 'AstroTools',\n // href: '/', // 'https://app.astrotools.io/pancake-pair-explorer/0x19e7cbecdd23a16dfa5573df54d98f7caae03019',\n // },\n // ],\n // },\n // {\n // label: 'More',\n // icon: 'MoreIcon',\n // items: [\n // {\n // label: 'Github',\n // href:'/', // 'https://github.com/goosedefi/',\n // },\n // {\n // label: 'Docs',\n // href: '/', // 'https://goosedefi.gitbook.io/goose-finance/',\n // },\n // {\n // label: 'Blog',\n // href: '/', // 'https://goosefinance.medium.com/',\n // },\n // ],\n // },\n // {\n // label: 'Partnerships/IFO',\n // icon: 'GooseIcon',\n // href:'/', // 'https://docs.google.com/forms/d/e/1FAIpQLSe7ycrw8Dq4C5Vjc9WNlRtTxEhFDB1Ny6jlAByZ2Y6qBo7SKg/viewform?usp=sf_link',\n // },\n // {\n // label: 'Audit by Hacken',\n // icon: 'AuditIcon',\n // href: '/', // 'https://www.goosedefi.com/files/hackenAudit.pdf',\n // },\n // {\n // label: 'Audit by CertiK',\n // icon: 'AuditIcon',\n // href:'/', // 'https://certik.org/projects/goose-finance',\n // },\n\n // {\n // label: 'Audits',\n // icon: 'AuditIcon',\n // href:\"https://github.com/IBG-Finance-Defi/IBG-Farms-build/blob/main/audits/bsc.pdf\"\n // }\n]\n\nexport default config\n","import React, { useContext } from 'react'\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 { usePriceCakeBusd } from 'state/hooks'\nimport { Menu as UikitMenu } from '@pancakeswap-libs/uikit'\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 cakePriceUsd = usePriceCakeBusd()\n\n return (\n \n )\n}\n\nexport default Menu\n","import React from 'react'\nimport styled from 'styled-components'\nimport { Spinner } from '@pancakeswap-libs/uikit'\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 React, { useEffect, Suspense, lazy } from 'react'\nimport { BrowserRouter as Router, Redirect, Route, Switch } from 'react-router-dom'\nimport { useWallet } from '@binance-chain/bsc-use-wallet'\nimport { ResetCSS } from '@pancakeswap-libs/uikit'\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'\nimport NftGlobalNotification from './views/Nft/components/NftGlobalNotification'\n\n// Route-based code splitting\n// Only pool is included in the main bundle because of it's the most visited page'\nconst Home = lazy(() => import('./views/Home'))\nconst Farms = lazy(() => import('./views/Farms'))\n// const Lottery = lazy(() => import('./views/Lottery'))\n// const Pools = lazy(() => import('./views/Pools'))\n// const Ifos = lazy(() => import('./views/Ifos'))\nconst NotFound = lazy(() => import('./views/NotFound'))\n// const Nft = lazy(() => import('./views/Nft'))\nconst Withdraw = lazy(() => import('./views/Withdraw'))\nconst Bootster = lazy(() => import('./views/ShortBooster'))\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 {/* Redirect */}\n {/* */}\n {/* */}\n {/* */}\n {/* */}\n {/* */}\n {/* */}\n {/* 404 */}\n \n \n \n \n {/* */}\n \n )\n}\n\nexport default React.memo(App)\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 { 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 '@pancakeswap-libs/uikit'\n// import bsc, { UseWalletProvider } from '@binance-chain/bsc-use-wallet'\nimport * as bsc 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 const chainId = parseInt(process.env.REACT_APP_CHAIN_ID)\n return (\n \n \n \n \n \n \n {children}\n \n \n \n \n \n \n )\n}\n\nexport default Providers\n","import React from 'react'\nimport ReactDOM from 'react-dom'\nimport App from './App'\nimport Providers from './Providers'\n\nReactDOM.render(\n \n \n \n \n ,\n document.getElementById('root'),\n)\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"],"sourceRoot":""}