@kimafinance/kima-transaction-widget 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +74 -0
- package/dist/assets/icons/Arrow.d.ts +8 -0
- package/dist/assets/icons/ArrowRight.d.ts +8 -0
- package/dist/assets/icons/Avalanche.d.ts +7 -0
- package/dist/assets/icons/Check.d.ts +7 -0
- package/dist/assets/icons/Cross.d.ts +8 -0
- package/dist/assets/icons/Ethereum.d.ts +7 -0
- package/dist/assets/icons/FooterLogo.d.ts +8 -0
- package/dist/assets/icons/Minimize.d.ts +8 -0
- package/dist/assets/icons/Polygon.d.ts +7 -0
- package/dist/assets/icons/Solana.d.ts +7 -0
- package/dist/assets/icons/USDC.d.ts +7 -0
- package/dist/assets/icons/USDT.d.ts +7 -0
- package/dist/assets/icons/Warning.d.ts +7 -0
- package/dist/assets/icons/index.d.ts +13 -0
- package/dist/assets/loading/180-ring.d.ts +3 -0
- package/dist/assets/loading/index.d.ts +1 -0
- package/dist/components/KimaTransactionWidget.d.ts +12 -0
- package/dist/components/TransactionWidget.d.ts +4 -0
- package/dist/components/TransferWidget.d.ts +4 -0
- package/dist/components/reusable/AddressInput.d.ts +3 -0
- package/dist/components/reusable/CoinDropdown.d.ts +3 -0
- package/dist/components/reusable/CoinSelect.d.ts +3 -0
- package/dist/components/reusable/ConfirmDetails.d.ts +3 -0
- package/dist/components/reusable/CustomCheckbox.d.ts +8 -0
- package/dist/components/reusable/Dropdown.d.ts +8 -0
- package/dist/components/reusable/ExternalLink.d.ts +9 -0
- package/dist/components/reusable/NetworkLabel.d.ts +8 -0
- package/dist/components/reusable/NetworkSelect.d.ts +6 -0
- package/dist/components/reusable/PrimaryButton.d.ts +9 -0
- package/dist/components/reusable/Progressbar.d.ts +9 -0
- package/dist/components/reusable/SecondaryButton.d.ts +9 -0
- package/dist/components/reusable/SingleForm.d.ts +3 -0
- package/dist/components/reusable/Tooltip.d.ts +8 -0
- package/dist/components/reusable/WalletButton.d.ts +5 -0
- package/dist/components/reusable/WalletConnectModal.d.ts +3 -0
- package/dist/components/reusable/WalletSelect.d.ts +3 -0
- package/dist/components/reusable/index.d.ts +13 -0
- package/dist/contexts/EthereumProviderContext.d.ts +18 -0
- package/dist/helpers/fetch-wrapper.d.ts +7 -0
- package/dist/helpers/functions.d.ts +2 -0
- package/dist/hooks/useAllowance.d.ts +4 -0
- package/dist/hooks/useIsWalletReady.d.ts +7 -0
- package/dist/hooks/useServiceFee.d.ts +3 -0
- package/dist/index.css +809 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +6663 -0
- package/dist/index.js.map +1 -0
- package/dist/index.modern.js +6226 -0
- package/dist/index.modern.js.map +1 -0
- package/dist/interface.d.ts +31 -0
- package/dist/store/index.d.ts +5 -0
- package/dist/store/optionSlice.d.ts +47 -0
- package/dist/store/selectors.d.ts +20 -0
- package/dist/styles/hooks/index.d.ts +1 -0
- package/dist/styles/hooks/useWidth.d.ts +2 -0
- package/dist/utils/config.d.ts +8 -0
- package/dist/utils/constants.d.ts +50 -0
- package/dist/utils/ethereum/common.d.ts +21 -0
- package/dist/utils/ethereum/erc20Token.d.ts +171 -0
- package/dist/utils/functions.d.ts +1 -0
- package/dist/utils/parseError.d.ts +2 -0
- package/dist/utils/solana/createAssociatedTokenAccountInstruction.d.ts +2 -0
- package/dist/utils/solana/createTransferInstruction.d.ts +39 -0
- package/dist/utils/solana/getAccountInfo.d.ts +19 -0
- package/dist/utils/solana/getAssociatedTokenAddress.d.ts +2 -0
- package/dist/utils/solana/getOrCreateAssociatedTokenAccount.d.ts +14 -0
- package/package.json +69 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/interface.tsx","../src/store/optionSlice.ts","../src/store/index.ts","../src/store/selectors.ts","../src/contexts/EthereumProviderContext.tsx","../src/assets/icons/Cross.tsx","../src/assets/icons/Minimize.tsx","../src/assets/icons/FooterLogo.tsx","../src/assets/icons/Check.tsx","../src/assets/icons/Warning.tsx","../src/assets/icons/ArrowRight.tsx","../src/assets/icons/Arrow.tsx","../src/assets/icons/Ethereum.tsx","../src/assets/icons/Solana.tsx","../src/assets/icons/Polygon.tsx","../src/assets/icons/Avalanche.tsx","../src/assets/icons/USDC.tsx","../src/assets/icons/USDT.tsx","../src/utils/config.tsx","../src/utils/constants.tsx","../src/components/reusable/Progressbar.tsx","../src/components/reusable/ExternalLink.tsx","../src/components/reusable/NetworkLabel.tsx","../src/assets/loading/180-ring.tsx","../src/components/reusable/PrimaryButton.tsx","../src/components/reusable/SecondaryButton.tsx","../src/components/reusable/NetworkSelect.tsx","../src/components/reusable/WalletSelect.tsx","../src/components/reusable/Dropdown.tsx","../node_modules/@ethersproject/logger/lib.esm/_version.js","../node_modules/@ethersproject/logger/lib.esm/index.js","../node_modules/@ethersproject/bytes/lib.esm/_version.js","../node_modules/@ethersproject/bytes/lib.esm/index.js","../src/hooks/useIsWalletReady.tsx","../src/utils/functions.tsx","../src/components/reusable/WalletButton.tsx","../src/components/reusable/CoinDropdown.tsx","../src/helpers/functions.tsx","../src/components/reusable/ConfirmDetails.tsx","../src/components/reusable/WalletConnectModal.tsx","../src/components/reusable/AddressInput.tsx","../src/components/reusable/CustomCheckbox.tsx","../src/styles/hooks/useWidth.tsx","../src/components/reusable/Tooltip.tsx","../src/helpers/fetch-wrapper.tsx","../src/components/TransactionWidget.tsx","../src/components/reusable/SingleForm.tsx","../src/components/reusable/CoinSelect.tsx","../node_modules/babel-plugin-transform-async-to-promises/helpers.mjs","../src/utils/solana/createAssociatedTokenAccountInstruction.ts","../src/utils/solana/getAccountInfo.ts","../src/utils/solana/getAssociatedTokenAddress.ts","../src/utils/solana/getOrCreateAssociatedTokenAccount.ts","../node_modules/bn.js/lib/bn.js","../src/utils/solana/createTransferInstruction.ts","../src/hooks/useAllowance.tsx","../src/hooks/useServiceFee.tsx","../src/components/TransferWidget.tsx","../src/components/KimaTransactionWidget.tsx","../src/index.tsx"],"sourcesContent":["export enum SupportNetworks {\r\n Ethereum = 'Ethereum',\r\n Polygon = 'Polygon',\r\n Avalanche = 'Avalanche',\r\n Solana = 'Solana'\r\n}\r\n\r\nexport enum FontSizeOptions {\r\n large = 'large',\r\n medium = 'medium',\r\n small = 'small'\r\n}\r\n\r\nexport enum ModeOptions {\r\n payment = 'payment',\r\n bridge = 'bridge'\r\n}\r\n\r\nexport enum CurrencyOptions {\r\n USDK = 'USDK'\r\n}\r\n\r\nexport enum ThemeOptions {\r\n light = 'light',\r\n dark = 'dark'\r\n}\r\nexport interface TransactionOption {\r\n targetChain: SupportNetworks\r\n targetAddress: string\r\n amount: number\r\n // currency: CurrencyOptions\r\n}\r\n\r\nexport interface DefaultProps {\r\n theme?: ThemeOptions\r\n fontSize?: FontSizeOptions\r\n}\r\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit'\r\n// import { WalletName } from '@solana/wallet-adapter-base'\r\nimport { ModeOptions, ThemeOptions, TransactionOption } from '../interface'\r\n\r\nexport interface OptionState {\r\n theme: ThemeOptions // light or dark\r\n mode: ModeOptions // payment or bridge\r\n originNetwork: string // origin network on UI\r\n targetNetwork: string // target network on UI\r\n targetAddress: string // target address on UI\r\n connectModal: boolean // solana wallet connection modal state - open or closed\r\n solanaProvider: any // selected solana wallet provider - phantom, solflare or ...\r\n submitted: boolean // if transaction is submitted, shows Transaction Widget to monitor status\r\n amount: number // amount input\r\n isApproving: boolean // is waiting for approval\r\n isSubmitting: boolean // is waiting for submission\r\n isConfirming: boolean // is on the confirmation page, disable service fee update\r\n feeDeduct: boolean // whether deduct fee from amount or not\r\n splAllowance: number // allowance amount for solana\r\n transactionOption?: TransactionOption // input option from dApp\r\n errorHandler: Function // error callback function from dApp\r\n closeHandler: Function // callback function for close event\r\n successHandler: Function // callback function for success event\r\n serviceFee: number // service fee from kima node\r\n}\r\n\r\nconst initialState: OptionState = {\r\n theme: ThemeOptions.light,\r\n mode: ModeOptions.bridge,\r\n originNetwork: 'Solana',\r\n targetNetwork: 'Ethereum',\r\n targetAddress: '',\r\n connectModal: false,\r\n solanaProvider: undefined,\r\n submitted: false,\r\n amount: 0,\r\n isApproving: false,\r\n isSubmitting: false,\r\n isConfirming: false,\r\n feeDeduct: false,\r\n splAllowance: 0,\r\n errorHandler: () => void 0,\r\n closeHandler: () => void 0,\r\n successHandler: () => void 0,\r\n serviceFee: 0\r\n}\r\n\r\nexport const optionSlice = createSlice({\r\n name: 'option',\r\n initialState,\r\n reducers: {\r\n setTheme: (state, action: PayloadAction<ThemeOptions>) => {\r\n state.theme = action.payload\r\n },\r\n setOriginNetwork: (state, action: PayloadAction<string>) => {\r\n state.originNetwork = action.payload\r\n },\r\n setTargetNetwork: (state, action: PayloadAction<string>) => {\r\n state.targetNetwork = action.payload\r\n },\r\n setTargetAddress: (state, action: PayloadAction<string>) => {\r\n state.targetAddress = action.payload\r\n },\r\n setConnectModal: (state, action: PayloadAction<boolean>) => {\r\n state.connectModal = action.payload\r\n },\r\n setSolanaProvider: (state, action: PayloadAction<any>) => {\r\n state.solanaProvider = action.payload\r\n },\r\n setSubmitted: (state, action: PayloadAction<boolean>) => {\r\n state.submitted = action.payload\r\n },\r\n setTransactionOption: (state, action: PayloadAction<TransactionOption>) => {\r\n state.transactionOption = action.payload\r\n },\r\n setAmount: (state, action: PayloadAction<number>) => {\r\n state.amount = action.payload\r\n },\r\n setApproving: (state, action: PayloadAction<boolean>) => {\r\n state.isApproving = action.payload\r\n },\r\n setSubmitting: (state, action: PayloadAction<boolean>) => {\r\n state.isSubmitting = action.payload\r\n },\r\n setSplAllowance: (state, action: PayloadAction<number>) => {\r\n state.splAllowance = action.payload\r\n },\r\n setErrorHandler: (state, action: PayloadAction<Function>) => {\r\n state.errorHandler = action.payload\r\n },\r\n setCloseHandler: (state, action: PayloadAction<Function>) => {\r\n state.closeHandler = action.payload\r\n },\r\n setSuccessHandler: (state, action: PayloadAction<Function>) => {\r\n state.successHandler = action.payload\r\n },\r\n setServiceFee: (state, action: PayloadAction<number>) => {\r\n state.serviceFee = action.payload\r\n },\r\n setMode: (state, action: PayloadAction<ModeOptions>) => {\r\n state.mode = action.payload\r\n },\r\n setConfirming: (state, action: PayloadAction<boolean>) => {\r\n state.isConfirming = action.payload\r\n },\r\n setFeeDeduct: (state, action: PayloadAction<boolean>) => {\r\n state.feeDeduct = action.payload\r\n }\r\n }\r\n})\r\n\r\nexport const {\r\n setTheme,\r\n setOriginNetwork,\r\n setTargetNetwork,\r\n setTargetAddress,\r\n setConnectModal,\r\n setSolanaProvider,\r\n setSubmitted,\r\n setTransactionOption,\r\n setAmount,\r\n setApproving,\r\n setSubmitting,\r\n setConfirming,\r\n setSplAllowance,\r\n setErrorHandler,\r\n setCloseHandler,\r\n setSuccessHandler,\r\n setServiceFee,\r\n setMode,\r\n setFeeDeduct\r\n} = optionSlice.actions\r\n\r\nexport default optionSlice.reducer\r\n","import { configureStore } from '@reduxjs/toolkit'\r\nimport optionReducer from './optionSlice'\r\n\r\nexport const store = configureStore({\r\n reducer: {\r\n option: optionReducer\r\n },\r\n middleware: (getDefaultMiddleware) =>\r\n getDefaultMiddleware({\r\n serializableCheck: false\r\n })\r\n})\r\n\r\n// Infer the `RootState` and `AppDispatch` types from the store itself\r\nexport type RootState = ReturnType<typeof store.getState>\r\n// Inferred type: {posts: PostsState, comments: CommentsState, users: UsersState}\r\nexport type AppDispatch = typeof store.dispatch\r\n","import { RootState } from '.'\r\n\r\n/*\r\n * Option\r\n */\r\n\r\nexport const selectTheme = (state: RootState) => state.option.theme\r\nexport const selectOriginNetwork = (state: RootState) =>\r\n state.option.originNetwork\r\nexport const selectTargetNetwork = (state: RootState) =>\r\n state.option.targetNetwork\r\nexport const selectTargetAddress = (state: RootState) =>\r\n state.option.targetAddress\r\nexport const selectConnectModal = (state: RootState) =>\r\n state.option.connectModal\r\nexport const selectSolanaProvider = (state: RootState) =>\r\n state.option.solanaProvider\r\nexport const selectSubmitted = (state: RootState) => state.option.submitted\r\nexport const selectTransactionOption = (state: RootState) =>\r\n state.option.transactionOption\r\nexport const selectAmount = (state: RootState) => state.option.amount\r\nexport const selectApproving = (state: RootState) => state.option.isApproving\r\nexport const selectSubmitting = (state: RootState) => state.option.isSubmitting\r\nexport const selectSplAllowance = (state: RootState) =>\r\n state.option.splAllowance\r\nexport const selectErrorHandler = (state: RootState) =>\r\n state.option.errorHandler\r\nexport const selectCloseHandler = (state: RootState) =>\r\n state.option.closeHandler\r\nexport const selectSuccessHandler = (state: RootState) =>\r\n state.option.successHandler\r\nexport const selectServiceFee = (state: RootState) => state.option.serviceFee\r\nexport const selectMode = (state: RootState) => state.option.mode\r\nexport const selectConfirming = (state: RootState) => state.option.isConfirming\r\nexport const selectFeeDeduct = (state: RootState) => state.option.feeDeduct\r\n","import detectEthereumProvider from '@metamask/detect-provider'\r\nimport { BigNumber, ethers } from 'ethers'\r\nimport React, {\r\n ReactNode,\r\n useCallback,\r\n useContext,\r\n useMemo,\r\n useState\r\n} from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { selectErrorHandler } from '../store/selectors'\r\n\r\nexport type Provider = ethers.providers.Web3Provider | undefined\r\nexport type Signer = ethers.Signer | undefined\r\n\r\ninterface IEthereumProviderContext {\r\n connect(): void\r\n disconnect(): void\r\n provider: Provider\r\n chainId: number | undefined\r\n signer: Signer\r\n signerAddress: string | undefined\r\n providerError: string | null\r\n}\r\n\r\nconst EthereumProviderContext = React.createContext<IEthereumProviderContext>({\r\n connect: () => {},\r\n disconnect: () => {},\r\n provider: undefined,\r\n chainId: undefined,\r\n signer: undefined,\r\n signerAddress: undefined,\r\n providerError: null\r\n})\r\nexport const EthereumProvider = ({ children }: { children: ReactNode }) => {\r\n const errorHandler = useSelector(selectErrorHandler)\r\n const [providerError, setProviderError] = useState<string | null>(null)\r\n const [provider, setProvider] = useState<Provider>(undefined)\r\n const [chainId, setChainId] = useState<number | undefined>(undefined)\r\n const [signer, setSigner] = useState<Signer>(undefined)\r\n const [signerAddress, setSignerAddress] = useState<string | undefined>(\r\n undefined\r\n )\r\n const connect = useCallback(() => {\r\n setProviderError(null)\r\n detectEthereumProvider()\r\n .then((detectedProvider) => {\r\n if (detectedProvider) {\r\n const provider = new ethers.providers.Web3Provider(\r\n // @ts-ignore\r\n detectedProvider,\r\n 'any'\r\n )\r\n provider\r\n .send('eth_requestAccounts', [])\r\n .then(() => {\r\n setProviderError(null)\r\n setProvider(provider)\r\n provider\r\n .getNetwork()\r\n .then((network) => {\r\n setChainId(network.chainId)\r\n })\r\n .catch((e) => {\r\n errorHandler(e)\r\n setProviderError(\r\n 'An error occurred while getting the network'\r\n )\r\n })\r\n const signer = provider.getSigner()\r\n setSigner(signer)\r\n signer\r\n .getAddress()\r\n .then((address) => {\r\n setSignerAddress(address)\r\n })\r\n .catch((e) => {\r\n errorHandler(e)\r\n setProviderError(\r\n 'An error occurred while getting the signer address'\r\n )\r\n })\r\n // TODO: try using ethers directly\r\n // @ts-ignore\r\n if (detectedProvider && detectedProvider.on) {\r\n // @ts-ignore\r\n detectedProvider.on('chainChanged', (chainId) => {\r\n try {\r\n setChainId(BigNumber.from(chainId).toNumber())\r\n } catch (e) {\r\n errorHandler(e)\r\n }\r\n })\r\n // @ts-ignore\r\n detectedProvider.on('accountsChanged', (accounts) => {\r\n try {\r\n const signer = provider.getSigner()\r\n setSigner(signer)\r\n signer\r\n .getAddress()\r\n .then((address) => {\r\n setSignerAddress(address)\r\n })\r\n .catch((e) => {\r\n errorHandler(e)\r\n setProviderError(\r\n 'An error occurred while getting the signer address'\r\n )\r\n })\r\n } catch (e) {\r\n errorHandler(e)\r\n }\r\n })\r\n }\r\n })\r\n .catch((e) => {\r\n errorHandler(e)\r\n setProviderError(\r\n 'An error occurred while requesting eth accounts'\r\n )\r\n })\r\n } else {\r\n setProviderError('Please install MetaMask')\r\n }\r\n })\r\n .catch((e) => {\r\n errorHandler(e)\r\n setProviderError('Please install MetaMask')\r\n })\r\n }, [])\r\n const disconnect = useCallback(() => {\r\n setProviderError(null)\r\n setProvider(undefined)\r\n setChainId(undefined)\r\n setSigner(undefined)\r\n setSignerAddress(undefined)\r\n }, [])\r\n const contextValue = useMemo(\r\n () => ({\r\n connect,\r\n disconnect,\r\n provider,\r\n chainId,\r\n signer,\r\n signerAddress,\r\n providerError\r\n }),\r\n [\r\n connect,\r\n disconnect,\r\n provider,\r\n chainId,\r\n signer,\r\n signerAddress,\r\n providerError\r\n ]\r\n )\r\n return (\r\n <EthereumProviderContext.Provider value={contextValue}>\r\n {children}\r\n </EthereumProviderContext.Provider>\r\n )\r\n}\r\nexport const useEthereumProvider = () => {\r\n return useContext(EthereumProviderContext)\r\n}\r\n","import React from 'react'\r\n\r\nconst Cross = ({ width = 32, height = 32, fill = 'white', ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox='0 0 11 11'\r\n xmlns='http://www.w3.org/2000/svg'\r\n {...rest}\r\n >\r\n <path\r\n d='M9.656 1.688L5.944 5.4L9.656 9.112L8.712 10.056L5 6.344L1.288 10.056L0.344 9.112L4.056 5.4L0.344 1.688L1.288 0.743999L5 4.456L8.712 0.743999L9.656 1.688Z'\r\n fill={fill}\r\n />\r\n </svg>\r\n )\r\n}\r\n\r\nexport default Cross\r\n","import React from 'react'\r\n\r\nconst Minimize = ({ width = 16, height = 1, fill = 'white', ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox='0 0 11 1'\r\n xmlns='http://www.w3.org/2000/svg'\r\n {...rest}\r\n >\r\n <rect width='11' height='1' fill={fill} />\r\n </svg>\r\n )\r\n}\r\n\r\nexport default Minimize\r\n","import React from 'react'\r\n\r\nconst Cross = ({ width = 32, height = 32, fill = '#C5C5C5', ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox='0 0 103 20'\r\n xmlns='http://www.w3.org/2000/svg'\r\n {...rest}\r\n >\r\n <path d='M82.3252 6.44437H80.6807V13.9013H82.3252V6.44437Z' fill={fill} />\r\n <path\r\n d='M85.1385 13.9013V9.75536C85.1385 9.11355 85.2732 8.61836 85.5426 8.2698C85.8119 7.92123 86.2639 7.74666 86.8985 7.74606C87.4853 7.75548 87.9206 7.93203 88.2044 8.27568C88.4882 8.61935 88.6299 9.11256 88.6295 9.75536V13.9013H90.2597V9.75271C90.2597 9.11228 90.3944 8.61787 90.6638 8.26951C90.9332 7.92112 91.3852 7.74656 92.0198 7.74578C92.6066 7.7552 93.0417 7.93171 93.3253 8.27539C93.6089 8.61904 93.7508 9.11189 93.751 9.75388V13.9013H95.3812V9.69887C95.3812 8.53843 95.0855 7.68947 94.4941 7.15203C93.9027 6.61457 93.0778 6.34564 92.0195 6.34525C91.5195 6.34525 91.0651 6.4041 90.6563 6.52179C90.2642 6.6305 89.9019 6.82381 89.5958 7.0876C89.5454 7.13141 89.4974 7.1788 89.4506 7.22736C89.4248 7.20175 89.3993 7.17586 89.3723 7.15142C88.7807 6.61359 87.9559 6.34467 86.8979 6.34467C86.3979 6.34467 85.9436 6.40351 85.5347 6.5212C85.1427 6.62999 84.7804 6.82329 84.4743 7.087C84.1769 7.3471 83.942 7.69184 83.7696 8.12123C83.5972 8.55058 83.5106 9.07647 83.5098 9.69887V13.9013H85.1385Z'\r\n fill={fill}\r\n />\r\n <path\r\n d='M101.5 12.9815C101.252 13.3286 100.905 13.5968 100.504 13.7527C100.09 13.9175 99.6284 14 99.1188 14.0002C98.7459 14.0042 98.3743 13.9565 98.0151 13.8587C97.6983 13.7719 97.4017 13.6254 97.1421 13.4273C96.8915 13.2338 96.6889 12.987 96.5496 12.7056C96.4054 12.4178 96.3332 12.0901 96.333 11.7223C96.333 11.3168 96.4148 10.9701 96.5784 10.6822C96.7389 10.3975 96.9695 10.1568 97.2492 9.9819C97.5326 9.80263 97.8668 9.66815 98.2518 9.57851C98.649 9.48757 99.0558 9.44244 99.4637 9.44407H101.413C101.413 8.89718 101.288 8.47271 101.038 8.17065C100.788 7.86859 100.35 7.71293 99.7247 7.70372C99.359 7.70372 99.044 7.76499 98.7798 7.8876C98.5156 8.01018 98.34 8.21262 98.253 8.49488H96.5652C96.6228 8.09886 96.755 7.76404 96.9618 7.49041C97.1657 7.21941 97.4202 6.98885 97.7118 6.81102C98.0136 6.62856 98.3456 6.49912 98.6928 6.42852C99.051 6.35415 99.4162 6.31697 99.7824 6.3176C100.227 6.31389 100.669 6.37589 101.095 6.5015C101.493 6.62085 101.855 6.83471 102.148 7.12407C102.484 7.46133 102.718 7.88222 102.826 8.341C102.946 8.84667 103.004 9.36435 103 9.88334V13.9013H101.571L101.5 12.9815ZM101.413 10.5901H99.8256C99.5454 10.5903 99.2657 10.6116 98.9889 10.6539C98.7281 10.6887 98.4815 10.7913 98.2749 10.9511C98.0775 11.1067 97.9789 11.3307 97.9791 11.6231C97.9791 11.9819 98.1113 12.2531 98.3757 12.4367C98.6401 12.6203 98.9646 12.7122 99.3495 12.7126C99.6303 12.7152 99.9101 12.677 100.18 12.5994C100.426 12.5289 100.652 12.4002 100.836 12.2245C101.027 12.0371 101.172 11.8098 101.262 11.5596C101.362 11.2906 101.413 10.9675 101.413 10.5901H101.413Z'\r\n fill={fill}\r\n />\r\n <path\r\n d='M81.3832 3.37531C81.7326 3.37531 82.0226 3.48044 82.2532 3.69072C82.4838 3.90099 82.5995 4.18816 82.6003 4.55222C82.6003 4.90529 82.4847 5.18736 82.2535 5.39842C82.0223 5.60947 81.7323 5.71452 81.3835 5.71353C81.0115 5.71353 80.7126 5.60849 80.4868 5.39842C80.261 5.18834 80.1483 4.90627 80.1484 4.55222C80.1484 4.18698 80.2612 3.89942 80.4865 3.68954C80.7119 3.47966 81.0108 3.37491 81.3832 3.37531Z'\r\n fill='url(#paint0_linear_13_1036)'\r\n />\r\n <path\r\n d='M78.4029 11.5578C78.345 11.5657 78.2865 11.5693 78.228 11.5684C77.4442 11.5684 76.8117 10.9323 76.8117 10.1637C76.8118 9.80152 76.9558 9.45366 77.2131 9.19385C77.4704 8.93407 77.8208 8.78288 78.1899 8.77233C78.2611 8.77049 78.3324 8.77449 78.4029 8.78437C79.4145 8.9368 80.3685 7.65073 79.4325 6.73243C78.5481 5.86505 77.3388 6.60003 77.3107 7.51686C77.3045 7.7062 77.2574 7.89209 77.1727 8.0623C77.0878 8.23251 76.9672 8.38318 76.8187 8.50426L76.5999 8.68315C76.3123 8.91853 75.9367 9.00211 75.5653 8.95649C75.2203 8.91413 74.8852 9.03299 74.6317 9.24513V4.54132H73V13.9013H74.6302V11.0614C74.944 11.3471 75.2947 11.4348 75.6169 11.3851C75.8073 11.3556 76.0019 11.3673 76.1872 11.4192C76.3726 11.4711 76.5441 11.5621 76.6899 11.6858L76.8307 11.8052C77.1187 12.0497 77.3013 12.3993 77.3082 12.7726C77.3133 13.0557 77.4322 13.3531 77.7087 13.6244C78.8661 14.7595 80.5854 13.0671 79.4313 11.935C79.1073 11.6175 78.7401 11.5151 78.4029 11.5578Z'\r\n fill={fill}\r\n />\r\n <path\r\n d='M6.516 8.084C6.516 8.78 6.276 9.36 5.796 9.824C5.324 10.28 4.6 10.508 3.624 10.508H2.016V14H0.924V5.636H3.624C4.568 5.636 5.284 5.864 5.772 6.32C6.268 6.776 6.516 7.364 6.516 8.084ZM3.624 9.608C4.232 9.608 4.68 9.476 4.968 9.212C5.256 8.948 5.4 8.572 5.4 8.084C5.4 7.052 4.808 6.536 3.624 6.536H2.016V9.608H3.624ZM10.5412 14.108C9.92522 14.108 9.36522 13.968 8.86122 13.688C8.36522 13.408 7.97322 13.012 7.68522 12.5C7.40522 11.98 7.26522 11.38 7.26522 10.7C7.26522 10.028 7.40922 9.436 7.69722 8.924C7.99322 8.404 8.39322 8.008 8.89722 7.736C9.40122 7.456 9.96522 7.316 10.5892 7.316C11.2132 7.316 11.7772 7.456 12.2812 7.736C12.7852 8.008 13.1812 8.4 13.4692 8.912C13.7652 9.424 13.9132 10.02 13.9132 10.7C13.9132 11.38 13.7612 11.98 13.4572 12.5C13.1612 13.012 12.7572 13.408 12.2452 13.688C11.7332 13.968 11.1652 14.108 10.5412 14.108ZM10.5412 13.148C10.9332 13.148 11.3012 13.056 11.6452 12.872C11.9892 12.688 12.2652 12.412 12.4732 12.044C12.6892 11.676 12.7972 11.228 12.7972 10.7C12.7972 10.172 12.6932 9.724 12.4852 9.356C12.2772 8.988 12.0052 8.716 11.6692 8.54C11.3332 8.356 10.9692 8.264 10.5772 8.264C10.1772 8.264 9.80922 8.356 9.47322 8.54C9.14522 8.716 8.88122 8.988 8.68122 9.356C8.48122 9.724 8.38122 10.172 8.38122 10.7C8.38122 11.236 8.47722 11.688 8.66922 12.056C8.86922 12.424 9.13322 12.7 9.46122 12.884C9.78922 13.06 10.1492 13.148 10.5412 13.148ZM23.909 7.424L21.857 14H20.729L19.145 8.78L17.561 14H16.433L14.369 7.424H15.485L16.997 12.944L18.629 7.424H19.745L21.341 12.956L22.829 7.424H23.909ZM30.7927 10.46C30.7927 10.668 30.7807 10.888 30.7567 11.12H25.5007C25.5407 11.768 25.7607 12.276 26.1607 12.644C26.5687 13.004 27.0607 13.184 27.6367 13.184C28.1087 13.184 28.5007 13.076 28.8127 12.86C29.1327 12.636 29.3567 12.34 29.4847 11.972H30.6608C30.4848 12.604 30.1327 13.12 29.6047 13.52C29.0767 13.912 28.4207 14.108 27.6367 14.108C27.0127 14.108 26.4527 13.968 25.9567 13.688C25.4687 13.408 25.0847 13.012 24.8047 12.5C24.5247 11.98 24.3847 11.38 24.3847 10.7C24.3847 10.02 24.5207 9.424 24.7927 8.912C25.0647 8.4 25.4447 8.008 25.9327 7.736C26.4287 7.456 26.9967 7.316 27.6367 7.316C28.2607 7.316 28.8127 7.452 29.2927 7.724C29.7727 7.996 30.1407 8.372 30.3967 8.852C30.6607 9.324 30.7927 9.86 30.7927 10.46ZM29.6647 10.232C29.6647 9.816 29.5727 9.46 29.3887 9.164C29.2047 8.86 28.9527 8.632 28.6327 8.48C28.3207 8.32 27.9727 8.24 27.5887 8.24C27.0367 8.24 26.5647 8.416 26.1727 8.768C25.7887 9.12 25.5687 9.608 25.5127 10.232H29.6647ZM33.1262 8.492C33.3182 8.116 33.5902 7.824 33.9422 7.616C34.3022 7.408 34.7382 7.304 35.2502 7.304V8.432H34.9622C33.7382 8.432 33.1262 9.096 33.1262 10.424V14H32.0342V7.424H33.1262V8.492ZM42.3107 10.46C42.3107 10.668 42.2987 10.888 42.2747 11.12H37.0187C37.0587 11.768 37.2787 12.276 37.6787 12.644C38.0867 13.004 38.5787 13.184 39.1547 13.184C39.6267 13.184 40.0187 13.076 40.3307 12.86C40.6507 12.636 40.8747 12.34 41.0027 11.972H42.1787C42.0027 12.604 41.6507 13.12 41.1227 13.52C40.5947 13.912 39.9387 14.108 39.1547 14.108C38.5307 14.108 37.9707 13.968 37.4747 13.688C36.9867 13.408 36.6027 13.012 36.3227 12.5C36.0427 11.98 35.9027 11.38 35.9027 10.7C35.9027 10.02 36.0387 9.424 36.3107 8.912C36.5827 8.4 36.9627 8.008 37.4507 7.736C37.9467 7.456 38.5147 7.316 39.1547 7.316C39.7787 7.316 40.3307 7.452 40.8107 7.724C41.2907 7.996 41.6587 8.372 41.9147 8.852C42.1787 9.324 42.3107 9.86 42.3107 10.46ZM41.1827 10.232C41.1827 9.816 41.0907 9.46 40.9067 9.164C40.7227 8.86 40.4707 8.632 40.1507 8.48C39.8387 8.32 39.4907 8.24 39.1067 8.24C38.5547 8.24 38.0827 8.416 37.6907 8.768C37.3067 9.12 37.0867 9.608 37.0307 10.232H41.1827ZM43.1441 10.688C43.1441 10.016 43.2801 9.428 43.5521 8.924C43.8241 8.412 44.1961 8.016 44.6681 7.736C45.1481 7.456 45.6841 7.316 46.2761 7.316C46.7881 7.316 47.2641 7.436 47.7041 7.676C48.1441 7.908 48.4801 8.216 48.7121 8.6V5.12H49.8161V14H48.7121V12.764C48.4961 13.156 48.1761 13.48 47.7521 13.736C47.3281 13.984 46.8321 14.108 46.2641 14.108C45.6801 14.108 45.1481 13.964 44.6681 13.676C44.1961 13.388 43.8241 12.984 43.5521 12.464C43.2801 11.944 43.1441 11.352 43.1441 10.688ZM48.7121 10.7C48.7121 10.204 48.6121 9.772 48.4121 9.404C48.2121 9.036 47.9401 8.756 47.5961 8.564C47.2601 8.364 46.8881 8.264 46.4801 8.264C46.0721 8.264 45.7001 8.36 45.3641 8.552C45.0281 8.744 44.7601 9.024 44.5601 9.392C44.3601 9.76 44.2601 10.192 44.2601 10.688C44.2601 11.192 44.3601 11.632 44.5601 12.008C44.7601 12.376 45.0281 12.66 45.3641 12.86C45.7001 13.052 46.0721 13.148 46.4801 13.148C46.8881 13.148 47.2601 13.052 47.5961 12.86C47.9401 12.66 48.2121 12.376 48.4121 12.008C48.6121 11.632 48.7121 11.196 48.7121 10.7ZM55.5527 8.648C55.7767 8.256 56.1047 7.936 56.5367 7.688C56.9687 7.44 57.4607 7.316 58.0127 7.316C58.6047 7.316 59.1367 7.456 59.6087 7.736C60.0807 8.016 60.4527 8.412 60.7247 8.924C60.9967 9.428 61.1327 10.016 61.1327 10.688C61.1327 11.352 60.9967 11.944 60.7247 12.464C60.4527 12.984 60.0767 13.388 59.5967 13.676C59.1247 13.964 58.5967 14.108 58.0127 14.108C57.4447 14.108 56.9447 13.984 56.5127 13.736C56.0887 13.488 55.7687 13.172 55.5527 12.788V14H54.4607V5.12H55.5527V8.648ZM60.0167 10.688C60.0167 10.192 59.9167 9.76 59.7167 9.392C59.5167 9.024 59.2447 8.744 58.9007 8.552C58.5647 8.36 58.1927 8.264 57.7847 8.264C57.3847 8.264 57.0127 8.364 56.6687 8.564C56.3327 8.756 56.0607 9.04 55.8527 9.416C55.6527 9.784 55.5527 10.212 55.5527 10.7C55.5527 11.196 55.6527 11.632 55.8527 12.008C56.0607 12.376 56.3327 12.66 56.6687 12.86C57.0127 13.052 57.3847 13.148 57.7847 13.148C58.1927 13.148 58.5647 13.052 58.9007 12.86C59.2447 12.66 59.5167 12.376 59.7167 12.008C59.9167 11.632 60.0167 11.192 60.0167 10.688ZM68.0341 7.424L64.0741 17.096H62.9461L64.2421 13.928L61.5901 7.424H62.8021L64.8661 12.752L66.9061 7.424H68.0341Z'\r\n fill={fill}\r\n />\r\n <defs>\r\n <linearGradient\r\n id='paint0_linear_13_1036'\r\n x1='82.33'\r\n y1='3.76575'\r\n x2='80.4422'\r\n y2='5.3588'\r\n gradientUnits='userSpaceOnUse'\r\n >\r\n <stop stopColor='#44E2DE' />\r\n <stop offset='0.91' stopColor='#41A5F7' />\r\n </linearGradient>\r\n </defs>\r\n </svg>\r\n )\r\n}\r\n\r\nexport default Cross\r\n","import React from 'react'\r\n\r\nconst Check = ({ width = 15, height = 11, ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox='0 0 15 11'\r\n xmlns='http://www.w3.org/2000/svg'\r\n {...rest}\r\n >\r\n <path\r\n d='M13.7319 0.295798C13.639 0.20207 13.5284 0.127675 13.4065 0.0769067C13.2846 0.026138 13.1539 0 13.0219 0C12.8899 0 12.7592 0.026138 12.6373 0.0769067C12.5155 0.127675 12.4049 0.20207 12.3119 0.295798L4.86192 7.7558L1.73192 4.6158C1.6354 4.52256 1.52146 4.44925 1.3966 4.40004C1.27175 4.35084 1.13843 4.32671 1.00424 4.32903C0.870064 4.33135 0.737655 4.36008 0.614576 4.41357C0.491498 4.46706 0.380161 4.54428 0.286922 4.6408C0.193684 4.73732 0.12037 4.85126 0.0711659 4.97612C0.0219619 5.10097 -0.00216855 5.2343 0.000152918 5.36848C0.00247438 5.50266 0.0312022 5.63507 0.0846957 5.75814C0.138189 5.88122 0.215401 5.99256 0.311922 6.0858L4.15192 9.9258C4.24489 10.0195 4.35549 10.0939 4.47735 10.1447C4.59921 10.1955 4.72991 10.2216 4.86192 10.2216C4.99393 10.2216 5.12464 10.1955 5.2465 10.1447C5.36836 10.0939 5.47896 10.0195 5.57192 9.9258L13.7319 1.7658C13.8334 1.67216 13.9144 1.5585 13.9698 1.432C14.0252 1.30551 14.0539 1.1689 14.0539 1.0308C14.0539 0.892697 14.0252 0.756091 13.9698 0.629592C13.9144 0.503092 13.8334 0.389441 13.7319 0.295798Z'\r\n fill='#33EA66'\r\n />\r\n </svg>\r\n )\r\n}\r\n\r\nexport default Check\r\n","import React from 'react'\r\n\r\nconst Warning = ({ width = 14, height = 13, ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox='0 0 14 13'\r\n xmlns='http://www.w3.org/2000/svg'\r\n {...rest}\r\n >\r\n <path\r\n d='M13.8418 11.0561L8.16007 0.683372C8.04697 0.476647 7.87973 0.304041 7.67598 0.183764C7.47223 0.0634876 7.23954 0 7.00245 0C6.76537 0 6.53267 0.0634876 6.32893 0.183764C6.12518 0.304041 5.95794 0.476647 5.84484 0.683372L0.167185 11.0561C0.05491 11.2556 -0.00270098 11.4807 9.72867e-05 11.7091C0.00289555 11.9376 0.0660053 12.1613 0.183133 12.358C0.300261 12.5546 0.467315 12.7174 0.667636 12.8301C0.867956 12.9427 1.09454 13.0013 1.3248 13H12.6842C12.9121 12.9997 13.1361 12.9408 13.3342 12.829C13.5323 12.7172 13.6977 12.5563 13.8144 12.3621C13.931 12.1678 13.9949 11.9469 13.9997 11.7208C14.0045 11.4947 13.9501 11.2713 13.8418 11.0723V11.0561ZM6.47887 3.26032C6.47887 3.10964 6.5392 2.96513 6.6466 2.85858C6.754 2.75203 6.89966 2.69218 7.05154 2.69218C7.20342 2.69218 7.34908 2.75203 7.45648 2.85858C7.56388 2.96513 7.62421 3.10964 7.62421 3.26032V8.13015C7.62421 8.28083 7.56388 8.42534 7.45648 8.53189C7.34908 8.63844 7.20342 8.6983 7.05154 8.6983C6.89966 8.6983 6.754 8.63844 6.6466 8.53189C6.5392 8.42534 6.47887 8.28083 6.47887 8.13015V3.26032ZM7.05154 11.3158C6.90592 11.3158 6.76356 11.273 6.64248 11.1927C6.52139 11.1125 6.42702 10.9984 6.37129 10.8649C6.31556 10.7314 6.30098 10.5845 6.32939 10.4428C6.3578 10.3011 6.42793 10.171 6.5309 10.0688C6.63387 9.96667 6.76507 9.8971 6.9079 9.86892C7.05072 9.84073 7.19877 9.8552 7.33331 9.91048C7.46785 9.96577 7.58284 10.0594 7.66375 10.1795C7.74465 10.2997 7.78783 10.4409 7.78783 10.5854C7.78783 10.6813 7.76879 10.7763 7.73179 10.8649C7.69479 10.9535 7.64055 11.034 7.57218 11.1019C7.50381 11.1697 7.42264 11.2235 7.33331 11.2602C7.24398 11.2969 7.14823 11.3158 7.05154 11.3158Z'\r\n fill='#FFB03A'\r\n />\r\n </svg>\r\n )\r\n}\r\n\r\nexport default Warning\r\n","import React from 'react'\r\n\r\nconst ArrowRight = ({ width = 12, height = 9, fill = 'white', ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox='0 0 12 9'\r\n xmlns='http://www.w3.org/2000/svg'\r\n {...rest}\r\n >\r\n <path\r\n d='M11.3536 4.85355C11.5488 4.65829 11.5488 4.34171 11.3536 4.14645L8.17157 0.964466C7.97631 0.769204 7.65973 0.769204 7.46447 0.964466C7.2692 1.15973 7.2692 1.47631 7.46447 1.67157L10.2929 4.5L7.46447 7.32843C7.2692 7.52369 7.2692 7.84027 7.46447 8.03553C7.65973 8.2308 7.97631 8.2308 8.17157 8.03553L11.3536 4.85355ZM0.5 5H11V4H0.5V5Z'\r\n fill={fill}\r\n />\r\n </svg>\r\n )\r\n}\r\n\r\nexport default ArrowRight\r\n","import React from 'react'\r\n\r\nconst Arrow = ({ width = 27, height = 51, fill = 'black', ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox='0 0 27 51'\r\n xmlns='http://www.w3.org/2000/svg'\r\n fill='transparent'\r\n {...rest}\r\n >\r\n <path\r\n d='M25 49L2 25.5L25 2'\r\n stroke={fill}\r\n strokeWidth='4'\r\n strokeLinecap='round'\r\n strokeLinejoin='round'\r\n />\r\n </svg>\r\n )\r\n}\r\n\r\nexport default Arrow\r\n","import React from 'react'\r\n\r\nconst Ethereum = ({ width = 37, height = 37, ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox='0 0 37 37'\r\n xmlns='http://www.w3.org/2000/svg'\r\n {...rest}\r\n >\r\n <rect x='0' y='0' width='37' height='37' fill='url(#pattern0)' />\r\n <defs>\r\n <pattern\r\n id='pattern0'\r\n patternContentUnits='objectBoundingBox'\r\n width='1'\r\n height='1'\r\n >\r\n <use href='#image0_184_1295' transform='scale(0.00520833)' />\r\n </pattern>\r\n <image\r\n id='image0_184_1295'\r\n width='192'\r\n height='192'\r\n href='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAMAAABlApw1AAACBFBMVEUAAADv7//09PTy8vXx9Pbz9Pjy9ffy9fjy9Pfx9Pfy9Pby9Pfx8/Xz8/Py8vTx9Pjv7/fy9Pfy9Pfy9ffz9ffy8/b09vjy9fXz9Pb09/ry9Pjz9fnv7/Tv9PTk5uiCg4Ssra9jZGWQkpTIycw7PDza296QkZIvMDBgYWK6vL21t7lHSUnm6OqEhojNz9Ly9PSztLednqB4envBw8Xv8vWen6Hv8/NsbW7x8/bP0NOpqqyJiovz8/dUVVXv7++lpqjy8/jz9Pbx9PZ9fn9bXF01NjYdHh4sLCw5Ojo0NTUwMTETExNucHBISElgYWE+Pz9zdHUaGhomJyfv7/oWFxckJSUtLi7x8vV4eXpRUlMhISHx8/Z1d3fy9PdnaGlERkaEhYZ6fHxrbW1AQUGDhYVWV1cqKipERUVOT1BcXV6LjI1iY2QyMzNMTU7Fx8lLTU2Sk5ba3N+HiIpKS0zW2Nt7fH4vLy+6vL6rrK6ChIXk5umfoKJYWVpXWVmQkpPd3+GTlJaXmJnOz9Lm5+qFhoepq6y6u77r7fB1dneRkpQ7PT2EhoeQkZPIysxISUnW2NrW19uztLa3uLqXmJp4enpTVVVvcHKsrrBmZ2g8PT2eoKJsbm+en6A9PT7v8/dsbm7BwsXd3+KEhYfx8/fy9fbP0dPx9Pjx8/bv8veJiozy9fnv8vQEFD2BAAAArHRSTlMAEDBQcI+fr7/f7/+AQGDPIJ9g33+vb1CPX+9/MDD//////////////////////2D/////UP9A/5D///9A/xD/r8/P/////////////////////zD///+g////sP/f/////////////////////////////////////////////////////////////////////////////////////0D/////gK//cO9g/1BgIk4dsgAACKdJREFUeNrM1YV1wEAMA9BjsMJOGfYfszBA0YnyJ5De6fmcPR9iyqW23gWfpPfWypBi8O7afEi5Cb4gLafxouGnPOOH5hyXa4Ufc8cvzWu8SvrUBH9Tt4U/nIZ/aZt3PGMW/JusI206MKIbIf4uMKTr4s60ZIG1EyssKwwYVGCMh19hFxxI09GHU3EwjUeu5wYGeDu6FRig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'\r\n />\r\n </defs>\r\n </svg>\r\n )\r\n}\r\n\r\nexport default Ethereum\r\n","import React from 'react'\r\n\r\nconst Solana = ({ width = 14, height = 14, ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox='0 0 14 14'\r\n xmlns='http://www.w3.org/2000/svg'\r\n {...rest}\r\n >\r\n <path\r\n d='M4.19214 0L4.10059 0.311195V9.34137L4.19214 9.43276L8.38385 6.95506L4.19214 0Z'\r\n fill='#343434'\r\n />\r\n <path d='M4.1917 0L0 6.95505L4.1917 9.43279V5.04982V0Z' fill='#8C8C8C' />\r\n <path\r\n d='M4.19222 10.2264L4.14062 10.2893V13.506L4.19222 13.6568L8.38641 7.74994L4.19222 10.2264Z'\r\n fill='#3C3C3B'\r\n />\r\n <path\r\n d='M4.1917 13.6567V10.2264L0 7.74991L4.1917 13.6567Z'\r\n fill='#8C8C8C'\r\n />\r\n <path\r\n d='M4.19141 9.43272L8.38305 6.95504L4.19141 5.0498V9.43272Z'\r\n fill='#141414'\r\n />\r\n <path d='M0 6.95503L4.19164 9.4327V5.04979L0 6.95503Z' fill='#393939' />\r\n <rect width='14' height='14' fill='url(#pattern1)' />\r\n <defs>\r\n <pattern\r\n id='pattern1'\r\n patternContentUnits='objectBoundingBox'\r\n width='1'\r\n height='1'\r\n >\r\n <use href='#image0_4_722' transform='scale(0.00316456)' />\r\n </pattern>\r\n <image\r\n id='image0_4_722'\r\n width='316'\r\n height='316'\r\n href='data:image/png;base64,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'\r\n />\r\n </defs>\r\n </svg>\r\n )\r\n}\r\n\r\nexport default Solana\r\n","import React from 'react'\r\n\r\nconst Ethereum = ({ width = 27, height = 27, ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox='0 0 27 27'\r\n xmlns='http://www.w3.org/2000/svg'\r\n {...rest}\r\n >\r\n <mask\r\n id='mask0_214_508'\r\n style={{ maskType: 'alpha' }}\r\n maskUnits='userSpaceOnUse'\r\n x='0'\r\n y='0'\r\n width='27'\r\n height='27'\r\n >\r\n <circle cx='13.0357' cy='13.0357' r='13.0357' fill='#D9D9D9' />\r\n </mask>\r\n <g mask='url(#mask0_214_508)'></g>\r\n <g clipPath='url(#clip0_214_508)'>\r\n <path\r\n d='M13 26C20.1797 26 26 20.1797 26 13C26 5.8203 20.1797 0 13 0C5.8203 0 0 5.8203 0 13C0 20.1797 5.8203 26 13 26Z'\r\n fill='#8247E5'\r\n />\r\n <path\r\n d='M17.3028 10.2187C16.991 10.0373 16.5856 10.0373 16.2426 10.2187L13.8105 11.6094L12.1579 12.5164L9.72584 13.9071C9.41401 14.0885 9.00868 14.0885 8.66568 13.9071L6.73246 12.8187C6.42066 12.6373 6.2024 12.3048 6.2024 11.9419V9.79545C6.2024 9.43266 6.38948 9.1001 6.73246 8.91871L8.6345 7.86055C8.94629 7.67916 9.35165 7.67916 9.69466 7.86055L11.5967 8.91871C11.9085 9.1001 12.1267 9.43266 12.1267 9.79545V11.1861L13.7793 10.2489V8.85823C13.7793 8.49545 13.5922 8.16288 13.2493 7.98149L9.72584 5.98614C9.41401 5.80475 9.00868 5.80475 8.66568 5.98614L5.07988 7.98149C4.73688 8.16288 4.5498 8.49545 4.5498 8.85823V12.8792C4.5498 13.2419 4.73688 13.5745 5.07988 13.7559L8.66568 15.7512C8.9775 15.9327 9.38283 15.9327 9.72584 15.7512L12.1579 14.3908L13.8105 13.4536L16.2426 12.0931C16.5544 11.9117 16.9598 11.9117 17.3028 12.0931L19.2048 13.1512C19.5166 13.3327 19.7349 13.6652 19.7349 14.028V16.1745C19.7349 16.5373 19.5478 16.8699 19.2048 17.0512L17.3028 18.1396C16.991 18.321 16.5856 18.321 16.2426 18.1396L14.3406 17.0815C14.0288 16.9001 13.8105 16.5675 13.8105 16.2048V14.8141L12.1579 15.7512V17.1419C12.1579 17.5048 12.345 17.8373 12.688 18.0187L16.2738 20.0141C16.5856 20.1954 16.991 20.1954 17.3339 20.0141L20.9197 18.0187C21.2315 17.8373 21.4498 17.5048 21.4498 17.1419V13.121C21.4498 12.7582 21.2627 12.4257 20.9197 12.2443L17.3028 10.2187Z'\r\n fill='white'\r\n />\r\n </g>\r\n <defs>\r\n <clipPath id='clip0_214_508'>\r\n <rect width='26' height='26' fill='white' />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n )\r\n}\r\n\r\nexport default Ethereum\r\n","import React from 'react'\r\n\r\nconst Avalanche = ({ width = 37, height = 37, ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox='0 0 37 37'\r\n xmlns='http://www.w3.org/2000/svg'\r\n {...rest}\r\n >\r\n <rect x='0' y='0' width='37' height='37' fill='url(#pattern2)' />\r\n <defs>\r\n <pattern\r\n id='pattern2'\r\n patternContentUnits='objectBoundingBox'\r\n width='1'\r\n height='1'\r\n >\r\n <use href='#image0_214_494' transform='scale(0.00390625)' />\r\n </pattern>\r\n <image\r\n id='image0_214_494'\r\n width='256'\r\n height='256'\r\n href='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAAAXNSR0IArs4c6QAAAOZlWElmTU0AKgAAAAgABgESAAMAAAABAAEAAAEaAAUAAAABAAAAVgEbAAUAAAABAAAAXgExAAIAAAAhAAAAZgEyAAIAAAAUAAAAiIdpAAQAAAABAAAAnAAAAAAAAABIAAAAAQAAAEgAAAABQWRvYmUgUGhvdG9zaG9wIDIxLjAgKE1hY2ludG9zaCkAADIwMjA6MDY6MjEgMTI6MTc6MjUAAASQBAACAAAAFAAAANKgAQADAAAAAQABAACgAgAEAAAAAQAAAQCgAwAEAAAAAQAAAQAAAAAAMjAyMDowNjoyMSAxMjoxNDoyNQAyPGR9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKn2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iCiAgICAgICAgICAgIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiCiAgICAgICAgICAgIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIgogICAgICAgICAgICB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIj4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9wbmc8L2RjOmZvcm1hdD4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMjAtMDYtMjFUMTI6MTc6MjUtMDQ6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOkNyZWF0b3JUb29sPkFkb2JlIFBob3Rvc2hvcCAyMS4wIChNYWNpbnRvc2gpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDIwLTA2LTIxVDEyOjE0OjI1LTA0OjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU+MjAyMC0wNi0yMVQxMjoxNzoyNS0wNDowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhtcE1NOkhpc3Rvcnk+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIDIxLjEgKE1hY2ludG9zaCk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMjAtMDYtMjFUMTI6MTc6MjUtMDQ6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6OGVhNTMzNjMtYzY2OS00YWVjLWE5ZmUtNzQ5YzUzMmFjZGZiPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIDIxLjEgKE1hY2ludG9zaCk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMjAtMDYtMjFUMTI6MTc6MjUtMDQ6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6ZTZmNGEzOTctM2ZkNC00NDEzLWE2YTMtOWIzYzExNTMxOTFhPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpTZXE+CiAgICAgICAgIDwveG1wTU06SGlzdG9yeT4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOkQwMTE4NzY2OEUxMjExRUE5MEFDQkVFRjMyM0M3OUNFPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpEb2N1bWVudElEPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDpkZDQ3ZTdiMy02YjIyLTFkNDAtOTc2MC02MDFjYjljYmY4YzY8L3htcE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpEZXJpdmVkRnJvbSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgIDxzdFJlZjppbnN0YW5jZUlEPnhtcC5paWQ6NUYwRTAyRDU4RTExMTFFQTkwQUNCRUVGMzIzQzc5Q0U8L3N0UmVmOmluc3RhbmNlSUQ+CiAgICAgICAgICAgIDxzdFJlZjpkb2N1bWVudElEPnhtcC5kaWQ6NUYwRTAyRDY4RTExMTFFQTkwQUNCRUVGMzIzQzc5Q0U8L3N0UmVmOmRvY3VtZW50SUQ+CiAgICAgICAgIDwv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'\r\n />\r\n </defs>\r\n </svg>\r\n )\r\n}\r\n\r\nexport default Avalanche\r\n","import React from 'react'\r\n\r\nconst USDC = ({ width = 37, height = 37, ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox='0 0 37 37'\r\n xmlns='http://www.w3.org/2000/svg'\r\n {...rest}\r\n >\r\n <rect width='37' height='37' fill='url(#pattern4)' />\r\n <defs>\r\n <pattern\r\n id='pattern4'\r\n patternContentUnits='objectBoundingBox'\r\n width='1'\r\n height='1'\r\n >\r\n <use href='#image0_214_308' transform='scale(0.00552486)' />\r\n </pattern>\r\n <image\r\n id='image0_214_308'\r\n width='181'\r\n height='181'\r\n href='data:image/png;base64,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'\r\n />\r\n </defs>\r\n </svg>\r\n )\r\n}\r\n\r\nexport default USDC\r\n","import React from 'react'\r\n\r\nconst USDT = ({ width = 37, height = 37, ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox='0 0 37 37'\r\n xmlns='http://www.w3.org/2000/svg'\r\n {...rest}\r\n >\r\n <rect width='37' height='37' fill='url(#pattern5)' />\r\n <defs>\r\n <pattern\r\n id='pattern5'\r\n patternContentUnits='objectBoundingBox'\r\n width='1'\r\n height='1'\r\n >\r\n <use href='#image0_214_312' transform='scale(0.00390625)' />\r\n </pattern>\r\n <image\r\n id='image0_214_312'\r\n width='256'\r\n height='256'\r\n href='data:image/png;base64,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'\r\n />\r\n </defs>\r\n </svg>\r\n )\r\n}\r\n\r\nexport default USDT\r\n","export const ETHEREUM_POOL_ADDRESS =\r\n '0x369b28f227C0188478cb05F8467bdd52002EcC4E'\r\nexport const POLYGON_POOL_ADDRESS = '0x369b28f227C0188478cb05F8467bdd52002EcC4E'\r\nexport const AVAX_POOL_ADDRESS = '0x369b28f227C0188478cb05F8467bdd52002EcC4E'\r\nexport const SOLANA_POOL_ADDRESS =\r\n 'DRmLANN1qXBELs69gW5upY4qH4iWc23MTcRPjDuzZYuH'\r\nexport const SOLANA_USDK_ADDRESS =\r\n 'GkbnUDkymDTF4U6Z5wM5kKJn3GmGndMn2rN5typmyUHY'\r\nexport const ETHEREUM_USDK_ADDRESS =\r\n '0x8BAd07F2445D6390DD94Eca08882b7d515EAbe6C'\r\nexport const POLYGON_USDK_ADDRESS = '0x5bd4865a6dEd507dA08ed1aBE3cd971a7e0405D7'\r\nexport const AVAX_USDK_ADDRESS = '0x7C043d4D2b505740742dF6Fdb79C5caEe08728a5'\r\n","import { clusterApiUrl } from '@solana/web3.js'\r\nimport {\r\n EthereumIcon,\r\n PolygonIcon,\r\n AvalancheIcon,\r\n SolanaIcon,\r\n USDTIcon,\r\n USDCIcon\r\n} from '../assets/icons'\r\nimport {\r\n AVAX_POOL_ADDRESS,\r\n AVAX_USDK_ADDRESS,\r\n ETHEREUM_POOL_ADDRESS,\r\n ETHEREUM_USDK_ADDRESS,\r\n POLYGON_POOL_ADDRESS,\r\n POLYGON_USDK_ADDRESS,\r\n SOLANA_POOL_ADDRESS,\r\n SOLANA_USDK_ADDRESS\r\n} from './config'\r\n\r\nexport const networkOptions = [\r\n {\r\n id: 'Ethereum',\r\n icon: EthereumIcon\r\n },\r\n {\r\n id: 'Polygon',\r\n icon: PolygonIcon\r\n },\r\n {\r\n id: 'Avalanche',\r\n icon: AvalancheIcon\r\n },\r\n {\r\n id: 'Solana',\r\n icon: SolanaIcon\r\n }\r\n]\r\nexport const getNetworkOption = (id: string) => {\r\n const index = networkOptions.findIndex((item) => item.id === id)\r\n if (index < 0) return\r\n return networkOptions[index]\r\n}\r\n\r\nexport type Cluster = 'devnet' | 'testnet' | 'mainnet'\r\nexport const CLUSTER: Cluster = 'devnet'\r\nexport const SOLANA_HOST = clusterApiUrl(CLUSTER)\r\nexport const CHAIN_STRING_SOLANA = 'Solana'\r\nexport const CHAIN_STRING_ETHEREUM = 'Ethereum'\r\nexport const CHAIN_STRING_POLYGON = 'Polygon'\r\nexport const CHAIN_STRING_AVALANCHE = 'Avalanche'\r\nexport const getEvmChainId = (chainId: string) =>\r\n chainId === 'Ethereum'\r\n ? GOERLI_ETH_NETWORK_CHAIN_ID\r\n : chainId === 'Polygon'\r\n ? POLYGON_NETWORK_CHAIN_ID\r\n : chainId === 'Avalanche'\r\n ? AVAX_NETWORK_CHAIN_ID\r\n : undefined\r\nexport const getEvmChainString = (chainId: number) =>\r\n chainId === GOERLI_ETH_NETWORK_CHAIN_ID\r\n ? 'Ethereum'\r\n : chainId === POLYGON_NETWORK_CHAIN_ID\r\n ? 'Polygon'\r\n : chainId === AVAX_NETWORK_CHAIN_ID\r\n ? 'Avalanche'\r\n : 'Unknown'\r\nexport const getPoolAddress = (chainId: string) =>\r\n chainId === 'Ethereum'\r\n ? ETHEREUM_POOL_ADDRESS\r\n : chainId === 'Polygon'\r\n ? POLYGON_POOL_ADDRESS\r\n : chainId === 'Avalanche'\r\n ? AVAX_POOL_ADDRESS\r\n : chainId === 'Solana'\r\n ? SOLANA_POOL_ADDRESS\r\n : undefined\r\nexport const isEVMChain = (chainId: string) =>\r\n chainId === 'Ethereum' || chainId === 'Polygon' || chainId === 'Avalanche'\r\nexport const GOERLI_ETH_NETWORK_CHAIN_ID = 5\r\nexport const POLYGON_NETWORK_CHAIN_ID = 80001\r\nexport const AVAX_NETWORK_CHAIN_ID = 43113\r\n\r\ntype coinOptions = {\r\n [key: string]: any\r\n}\r\n\r\nexport const COIN_LIST: coinOptions = {\r\n USDK: {\r\n symbol: 'USDK',\r\n icon: USDTIcon,\r\n decimals: 6,\r\n address: {\r\n Solana: SOLANA_USDK_ADDRESS,\r\n Ethereum: ETHEREUM_USDK_ADDRESS,\r\n Polygon: POLYGON_USDK_ADDRESS,\r\n Avalanche: AVAX_USDK_ADDRESS\r\n }\r\n },\r\n USDC: {\r\n symbol: 'USDC',\r\n icon: USDCIcon,\r\n decimals: 6,\r\n address: {\r\n Solana: SOLANA_USDK_ADDRESS,\r\n Ethereum: ETHEREUM_USDK_ADDRESS,\r\n Polygon: POLYGON_USDK_ADDRESS,\r\n Avalanche: AVAX_USDK_ADDRESS\r\n }\r\n }\r\n}\r\n\r\nexport const FEE_PERCENT = 0.005\r\nexport const PAY_AVAILABLE = 'Available'\r\nexport const PAY_CONFIRMED = 'Confirmed'\r\nexport const PAY_PAID = 'Paid'\r\nexport const PAY_FAILED = 'FailedToPay'\r\nexport const PAY_UNAVAILABLE = 'UnAvailable'\r\nexport const PAY_KEYSIGNED = 'KeySigned'\r\n\r\nexport const tooltipInfo = [\r\n ['Transfer liquidity from source chain'],\r\n ['Key signing'],\r\n ['Transfer liquidity to target chain']\r\n]\r\n\r\nexport const ETH_USD_PROXY = '0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419'\r\nexport const AVAX_USD_PROXY = '0xFF3EEb22B5E3dE6e705b44749C2559d704923FD7'\r\nexport const MATIC_USD_PROXY = '0x7bAC85A8a13A4BcD8abb3eB7d6b4d632c5a57676'\r\nexport const SOL_USD_PROXY = '0x4ffC43a60e009B551865A93d232E33Fce9f01507'\r\nexport const ETHEREUM_NODE_PROVIDER =\r\n 'https://eth-mainnet.g.alchemy.com/v2/KuGxhvDhFDX-r40tmVfgopWs0KdcjHPI'\r\nexport const DIVERSIFI_NODE_PROVIDER1_QUERY = 'api.testnode1.kima.finance'\r\n","import React, { Dispatch, SetStateAction } from 'react'\r\nimport { CheckIcon, WarningIcon } from '../../assets/icons'\r\n\r\ninterface Props {\r\n step: number\r\n focus: number\r\n setFocus: Dispatch<SetStateAction<number>>\r\n errorStep: number\r\n}\r\n\r\nconst stepInfo = [\r\n {\r\n title: 'Initializing'\r\n },\r\n {\r\n title: 'Source Transfer'\r\n },\r\n {\r\n title: 'Validation'\r\n },\r\n {\r\n title: 'Target Transfer'\r\n },\r\n {\r\n title: 'Finalizing'\r\n }\r\n]\r\n\r\nconst Progressbar = ({ step, errorStep, setFocus }: Props) => {\r\n return (\r\n <div className='kima-progressbar'>\r\n <div\r\n className='value'\r\n style={{\r\n width: `calc(${(step * 100) / 4}% + ${\r\n step > 0 && step < 3 ? 0.5 : 0\r\n }em)`\r\n }}\r\n />\r\n <div className='step-indicators'>\r\n {stepInfo.map((item, index) => (\r\n <div\r\n key={item.title}\r\n className='step'\r\n onClick={() => {\r\n if (index > 0 && index < 4) setFocus(index)\r\n }}\r\n >\r\n <div className='step-info'>\r\n {step >= index &&\r\n (index === errorStep ? <WarningIcon /> : <CheckIcon />)}\r\n <span>{item.title}</span>\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default Progressbar\r\n","import React from 'react'\r\n\r\ninterface Props {\r\n to: string\r\n children?: any\r\n className?: string\r\n rest?: any\r\n}\r\n\r\nconst ExternalLink = ({ to, children, className, rest }: Props) => (\r\n <a\r\n className={className}\r\n href={to}\r\n target='_blank'\r\n rel='noreferrer noopener'\r\n {...rest}\r\n >\r\n {children}\r\n </a>\r\n)\r\n\r\nexport default ExternalLink\r\n","import React from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { ArrowRightIcon, WarningIcon } from '../../assets/icons'\r\nimport { selectTheme } from '../../store/selectors'\r\nimport { getNetworkOption } from '../../utils/constants'\r\n\r\ninterface Props {\r\n hasError: boolean\r\n sourceChain: string\r\n targetChain: string\r\n}\r\n\r\nconst NetworkLabel = ({ sourceChain, targetChain, hasError }: Props) => {\r\n const theme = useSelector(selectTheme)\r\n const SourceInfo = getNetworkOption(sourceChain)\r\n const TargetInfo = getNetworkOption(targetChain)\r\n\r\n return (\r\n <div className='kima-card-network-label'>\r\n <div className='label'>\r\n <div className='icon-wrapper'>{SourceInfo && <SourceInfo.icon />}</div>\r\n {SourceInfo?.id}\r\n </div>\r\n <ArrowRightIcon fill={theme === 'light' ? 'black' : 'white'} />\r\n <div className='label'>\r\n <div className='icon-wrapper'>{TargetInfo && <TargetInfo.icon />}</div>\r\n {TargetInfo?.id}\r\n </div>\r\n {hasError && (\r\n <div className='warning-container'>\r\n <WarningIcon />\r\n <span>1 issue</span>\r\n </div>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nexport default NetworkLabel\r\n","import React from 'react'\r\n\r\nconst Loading180Ring = ({ width, height, fill = 'white' }: any) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n fill={fill}\r\n viewBox='0 0 24 24'\r\n xmlns='http://www.w3.org/2000/svg'\r\n >\r\n <path d='M12,4a8,8,0,0,1,7.89,6.7A1.53,1.53,0,0,0,21.38,12h0a1.5,1.5,0,0,0,1.48-1.75,11,11,0,0,0-21.72,0A1.5,1.5,0,0,0,2.62,12h0a1.53,1.53,0,0,0,1.49-1.3A8,8,0,0,1,12,4Z'>\r\n <animateTransform\r\n attributeName='transform'\r\n type='rotate'\r\n dur='0.75s'\r\n values='0 12 12;360 12 12'\r\n repeatCount='indefinite'\r\n />\r\n </path>\r\n </svg>\r\n )\r\n}\r\n\r\nexport default Loading180Ring\r\n","import React from 'react'\r\nimport { Loading180Ring } from '../../assets/loading'\r\n\r\ninterface Props {\r\n clickHandler?: any\r\n children?: any\r\n className?: string\r\n isLoading?: boolean\r\n}\r\n\r\nconst PrimaryButton = ({\r\n className,\r\n clickHandler,\r\n children,\r\n isLoading = false\r\n}: Props) => (\r\n <button className={`primary-button ${className}`} onClick={clickHandler}>\r\n {isLoading && (\r\n <div className='loading-indicator'>\r\n <Loading180Ring width={24} height={24} fill='white' />\r\n </div>\r\n )}\r\n {children}\r\n </button>\r\n)\r\n\r\nexport default PrimaryButton\r\n","import React from 'react'\r\n\r\ninterface Props {\r\n clickHandler?: any\r\n children?: any\r\n className?: string\r\n theme?: string\r\n}\r\n\r\nconst SecondaryButton = ({\r\n className,\r\n clickHandler,\r\n children,\r\n theme\r\n}: Props) => (\r\n <button\r\n className={`secondary-button ${className} ${theme}`}\r\n onClick={clickHandler}\r\n >\r\n {children}\r\n </button>\r\n)\r\n\r\nexport default SecondaryButton\r\n","import React, { useMemo } from 'react'\r\nimport { useSelector, useDispatch } from 'react-redux'\r\nimport { networkOptions } from '../../utils/constants'\r\nimport {\r\n selectOriginNetwork,\r\n selectTargetNetwork,\r\n selectTheme\r\n} from '../../store/selectors'\r\nimport { setOriginNetwork, setTargetNetwork } from '../../store/optionSlice'\r\n\r\ninterface Props {\r\n type?: string\r\n}\r\n\r\nconst Network = ({ type = 'origin' }: Props) => {\r\n const theme = useSelector(selectTheme)\r\n const originNetwork = useSelector(selectOriginNetwork)\r\n const targetNetwork = useSelector(selectTargetNetwork)\r\n const dispatch = useDispatch()\r\n\r\n const filteredNetworks = useMemo(\r\n () =>\r\n type === 'target'\r\n ? networkOptions.filter((network) => network.id !== originNetwork)\r\n : networkOptions,\r\n [type, originNetwork]\r\n )\r\n\r\n return (\r\n <div className={`network-select`}>\r\n <p>Which network are you funding from?</p>\r\n <div className='network-container'>\r\n {filteredNetworks.map((network) => (\r\n <div\r\n className={`card-item ${theme} ${\r\n network.id === (type === 'target' ? targetNetwork : originNetwork)\r\n ? 'active'\r\n : ''\r\n }`}\r\n key={network.id}\r\n onClick={() => {\r\n if (type === 'target') {\r\n dispatch(setTargetNetwork(network.id))\r\n } else {\r\n dispatch(setOriginNetwork(network.id))\r\n }\r\n }}\r\n >\r\n <network.icon />\r\n <span>{network.id}</span>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default Network\r\n","import React, { useEffect, useMemo, useRef } from 'react'\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { useWallet } from '@solana/wallet-adapter-react'\r\nimport { WalletReadyState } from '@solana/wallet-adapter-base'\r\nimport { ArrowIcon } from '../../assets/icons'\r\nimport { selectSolanaProvider, selectTheme } from '../../store/selectors'\r\nimport ExternalLink from './ExternalLink'\r\nimport { setSolanaProvider } from '../../store/optionSlice'\r\n\r\nconst WalletSelect = () => {\r\n const theme = useSelector(selectTheme)\r\n const selectedProvider = useSelector(selectSolanaProvider)\r\n const sliderRef = useRef<any>()\r\n\r\n const dispatch = useDispatch()\r\n const { wallets } = useWallet()\r\n const [detected, undetected] = useMemo(() => {\r\n const detected = []\r\n const undetected = []\r\n for (const wallet of wallets) {\r\n if (\r\n wallet.readyState === WalletReadyState.Installed ||\r\n wallet.readyState === WalletReadyState.Loadable\r\n ) {\r\n detected.push(wallet)\r\n } else if (wallet.readyState === WalletReadyState.NotDetected) {\r\n undetected.push(wallet)\r\n }\r\n }\r\n return [detected, undetected]\r\n }, [wallets])\r\n\r\n useEffect(() => {\r\n let isDown = false\r\n let startX: number\r\n let scrollLeft: number\r\n\r\n sliderRef.current?.addEventListener('mousedown', (e: any) => {\r\n isDown = true\r\n sliderRef.current?.classList.add('active')\r\n startX = e.pageX - sliderRef.current?.offsetLeft\r\n scrollLeft = sliderRef.current?.scrollLeft\r\n })\r\n sliderRef.current?.addEventListener('mouseleave', () => {\r\n isDown = false\r\n sliderRef.current.classList.remove('active')\r\n })\r\n sliderRef.current?.addEventListener('mouseup', () => {\r\n isDown = false\r\n sliderRef.current.classList.remove('active')\r\n })\r\n sliderRef.current?.addEventListener('mousemove', (e: any) => {\r\n if (!isDown) return\r\n e.preventDefault()\r\n const x = e.pageX - sliderRef.current.offsetLeft\r\n const walk = (x - startX) * 1 //scroll-fast\r\n sliderRef.current.scrollLeft = scrollLeft - walk\r\n })\r\n })\r\n\r\n const slideLeft = () => {\r\n let temp = 0\r\n const timerId = setInterval(() => {\r\n sliderRef.current.scrollLeft -= 10\r\n if (temp++ === 20) clearInterval(timerId)\r\n }, 10)\r\n }\r\n\r\n const slideRight = () => {\r\n let temp = 0\r\n const timerId = setInterval(() => {\r\n sliderRef.current.scrollLeft += 10\r\n if (temp++ === 20) clearInterval(timerId)\r\n }, 10)\r\n }\r\n\r\n return (\r\n <div className={`wallet-select`}>\r\n <p>Please select:</p>\r\n <div className='scroll-button'>\r\n <ArrowIcon\r\n fill={theme === 'light' ? 'black' : 'white'}\r\n onClick={slideLeft}\r\n />\r\n <ArrowIcon\r\n fill={theme === 'light' ? 'black' : 'white'}\r\n onClick={slideRight}\r\n />\r\n </div>\r\n <div className='slide-area hide-scrollbar' ref={sliderRef}>\r\n <div className='wallet-container'>\r\n {detected.map((wallet) => (\r\n <div\r\n className={`card-item ${theme} ${\r\n wallet.adapter.name === selectedProvider ? 'active' : ''\r\n }`}\r\n onClick={() => dispatch(setSolanaProvider(wallet.adapter.name))}\r\n key={wallet.adapter.name}\r\n >\r\n <img src={wallet.adapter.icon} alt={wallet.adapter.name} />\r\n <span>{wallet.adapter.name}</span>\r\n </div>\r\n ))}\r\n {undetected.map((wallet) => (\r\n <ExternalLink\r\n to={wallet.adapter.url}\r\n className={`card-item ${theme}`}\r\n key={wallet.adapter.name}\r\n >\r\n <img src={wallet.adapter.icon} alt={wallet.adapter.name} />\r\n <span>\r\n Install\r\n <br />\r\n {wallet.adapter.name}\r\n </span>\r\n </ExternalLink>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default WalletSelect\r\n","import React from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { selectTheme } from '../../store/selectors'\r\nimport ExternalLink from './ExternalLink'\r\n\r\ninterface Props {\r\n open: boolean\r\n isWizard: boolean\r\n toggleWizard: any\r\n}\r\n\r\nconst Dropdown = ({ open, isWizard, toggleWizard }: Props) => {\r\n const theme = useSelector(selectTheme)\r\n\r\n return (\r\n <div className={`dropdown-menu ${theme} ${open ? 'open' : 'closed'}`}>\r\n <div className='menu-item'>\r\n <ExternalLink to='https://kima.finance'>Open Help</ExternalLink>\r\n </div>\r\n <div className='menu-item' onClick={toggleWizard}>\r\n Switch to {isWizard ? 'Form' : 'Wizard'}\r\n </div>\r\n <div className='menu-item'>Chat with someone</div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default Dropdown\r\n","export const version = \"logger/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nlet _permanentCensorErrors = false;\nlet _censorErrors = false;\nconst LogLevels = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\nimport { version } from \"./_version\";\nlet _globalLogger = null;\nfunction _checkNormalize() {\n try {\n const missing = [];\n // Make sure all forms of normalization are supported\n [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].forEach((form) => {\n try {\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad normalize\");\n }\n ;\n }\n catch (error) {\n missing.push(form);\n }\n });\n if (missing.length) {\n throw new Error(\"missing \" + missing.join(\", \"));\n }\n if (String.fromCharCode(0xe9).normalize(\"NFD\") !== String.fromCharCode(0x65, 0x0301)) {\n throw new Error(\"broken implementation\");\n }\n }\n catch (error) {\n return error.message;\n }\n return null;\n}\nconst _normalizeError = _checkNormalize();\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[\"DEBUG\"] = \"DEBUG\";\n LogLevel[\"INFO\"] = \"INFO\";\n LogLevel[\"WARNING\"] = \"WARNING\";\n LogLevel[\"ERROR\"] = \"ERROR\";\n LogLevel[\"OFF\"] = \"OFF\";\n})(LogLevel || (LogLevel = {}));\nexport var ErrorCode;\n(function (ErrorCode) {\n ///////////////////\n // Generic Errors\n // Unknown Error\n ErrorCode[\"UNKNOWN_ERROR\"] = \"UNKNOWN_ERROR\";\n // Not Implemented\n ErrorCode[\"NOT_IMPLEMENTED\"] = \"NOT_IMPLEMENTED\";\n // Unsupported Operation\n // - operation\n ErrorCode[\"UNSUPPORTED_OPERATION\"] = \"UNSUPPORTED_OPERATION\";\n // Network Error (i.e. Ethereum Network, such as an invalid chain ID)\n // - event (\"noNetwork\" is not re-thrown in provider.ready; otherwise thrown)\n ErrorCode[\"NETWORK_ERROR\"] = \"NETWORK_ERROR\";\n // Some sort of bad response from the server\n ErrorCode[\"SERVER_ERROR\"] = \"SERVER_ERROR\";\n // Timeout\n ErrorCode[\"TIMEOUT\"] = \"TIMEOUT\";\n ///////////////////\n // Operational Errors\n // Buffer Overrun\n ErrorCode[\"BUFFER_OVERRUN\"] = \"BUFFER_OVERRUN\";\n // Numeric Fault\n // - operation: the operation being executed\n // - fault: the reason this faulted\n ErrorCode[\"NUMERIC_FAULT\"] = \"NUMERIC_FAULT\";\n ///////////////////\n // Argument Errors\n // Missing new operator to an object\n // - name: The name of the class\n ErrorCode[\"MISSING_NEW\"] = \"MISSING_NEW\";\n // Invalid argument (e.g. value is incompatible with type) to a function:\n // - argument: The argument name that was invalid\n // - value: The value of the argument\n ErrorCode[\"INVALID_ARGUMENT\"] = \"INVALID_ARGUMENT\";\n // Missing argument to a function:\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"MISSING_ARGUMENT\"] = \"MISSING_ARGUMENT\";\n // Too many arguments\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"UNEXPECTED_ARGUMENT\"] = \"UNEXPECTED_ARGUMENT\";\n ///////////////////\n // Blockchain Errors\n // Call exception\n // - transaction: the transaction\n // - address?: the contract address\n // - args?: The arguments passed into the function\n // - method?: The Solidity method signature\n // - errorSignature?: The EIP848 error signature\n // - errorArgs?: The EIP848 error parameters\n // - reason: The reason (only for EIP848 \"Error(string)\")\n ErrorCode[\"CALL_EXCEPTION\"] = \"CALL_EXCEPTION\";\n // Insufficient funds (< value + gasLimit * gasPrice)\n // - transaction: the transaction attempted\n ErrorCode[\"INSUFFICIENT_FUNDS\"] = \"INSUFFICIENT_FUNDS\";\n // Nonce has already been used\n // - transaction: the transaction attempted\n ErrorCode[\"NONCE_EXPIRED\"] = \"NONCE_EXPIRED\";\n // The replacement fee for the transaction is too low\n // - transaction: the transaction attempted\n ErrorCode[\"REPLACEMENT_UNDERPRICED\"] = \"REPLACEMENT_UNDERPRICED\";\n // The gas limit could not be estimated\n // - transaction: the transaction passed to estimateGas\n ErrorCode[\"UNPREDICTABLE_GAS_LIMIT\"] = \"UNPREDICTABLE_GAS_LIMIT\";\n // The transaction was replaced by one with a higher gas price\n // - reason: \"cancelled\", \"replaced\" or \"repriced\"\n // - cancelled: true if reason == \"cancelled\" or reason == \"replaced\")\n // - hash: original transaction hash\n // - replacement: the full TransactionsResponse for the replacement\n // - receipt: the receipt of the replacement\n ErrorCode[\"TRANSACTION_REPLACED\"] = \"TRANSACTION_REPLACED\";\n ///////////////////\n // Interaction Errors\n // The user rejected the action, such as signing a message or sending\n // a transaction\n ErrorCode[\"ACTION_REJECTED\"] = \"ACTION_REJECTED\";\n})(ErrorCode || (ErrorCode = {}));\n;\nconst HEX = \"0123456789abcdef\";\nexport class Logger {\n constructor(version) {\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n value: version,\n writable: false\n });\n }\n _log(logLevel, args) {\n const level = logLevel.toLowerCase();\n if (LogLevels[level] == null) {\n this.throwArgumentError(\"invalid log level name\", \"logLevel\", logLevel);\n }\n if (_logLevel > LogLevels[level]) {\n return;\n }\n console.log.apply(console, args);\n }\n debug(...args) {\n this._log(Logger.levels.DEBUG, args);\n }\n info(...args) {\n this._log(Logger.levels.INFO, args);\n }\n warn(...args) {\n this._log(Logger.levels.WARNING, args);\n }\n makeError(message, code, params) {\n // Errors are being censored\n if (_censorErrors) {\n return this.makeError(\"censored error\", code, {});\n }\n if (!code) {\n code = Logger.errors.UNKNOWN_ERROR;\n }\n if (!params) {\n params = {};\n }\n const messageDetails = [];\n Object.keys(params).forEach((key) => {\n const value = params[key];\n try {\n if (value instanceof Uint8Array) {\n let hex = \"\";\n for (let i = 0; i < value.length; i++) {\n hex += HEX[value[i] >> 4];\n hex += HEX[value[i] & 0x0f];\n }\n messageDetails.push(key + \"=Uint8Array(0x\" + hex + \")\");\n }\n else {\n messageDetails.push(key + \"=\" + JSON.stringify(value));\n }\n }\n catch (error) {\n messageDetails.push(key + \"=\" + JSON.stringify(params[key].toString()));\n }\n });\n messageDetails.push(`code=${code}`);\n messageDetails.push(`version=${this.version}`);\n const reason = message;\n let url = \"\";\n switch (code) {\n case ErrorCode.NUMERIC_FAULT: {\n url = \"NUMERIC_FAULT\";\n const fault = message;\n switch (fault) {\n case \"overflow\":\n case \"underflow\":\n case \"division-by-zero\":\n url += \"-\" + fault;\n break;\n case \"negative-power\":\n case \"negative-width\":\n url += \"-unsupported\";\n break;\n case \"unbound-bitwise-result\":\n url += \"-unbound-result\";\n break;\n }\n break;\n }\n case ErrorCode.CALL_EXCEPTION:\n case ErrorCode.INSUFFICIENT_FUNDS:\n case ErrorCode.MISSING_NEW:\n case ErrorCode.NONCE_EXPIRED:\n case ErrorCode.REPLACEMENT_UNDERPRICED:\n case ErrorCode.TRANSACTION_REPLACED:\n case ErrorCode.UNPREDICTABLE_GAS_LIMIT:\n url = code;\n break;\n }\n if (url) {\n message += \" [ See: https:/\\/links.ethers.org/v5-errors-\" + url + \" ]\";\n }\n if (messageDetails.length) {\n message += \" (\" + messageDetails.join(\", \") + \")\";\n }\n // @TODO: Any??\n const error = new Error(message);\n error.reason = reason;\n error.code = code;\n Object.keys(params).forEach(function (key) {\n error[key] = params[key];\n });\n return error;\n }\n throwError(message, code, params) {\n throw this.makeError(message, code, params);\n }\n throwArgumentError(message, name, value) {\n return this.throwError(message, Logger.errors.INVALID_ARGUMENT, {\n argument: name,\n value: value\n });\n }\n assert(condition, message, code, params) {\n if (!!condition) {\n return;\n }\n this.throwError(message, code, params);\n }\n assertArgument(condition, message, name, value) {\n if (!!condition) {\n return;\n }\n this.throwArgumentError(message, name, value);\n }\n checkNormalize(message) {\n if (message == null) {\n message = \"platform missing String.prototype.normalize\";\n }\n if (_normalizeError) {\n this.throwError(\"platform missing String.prototype.normalize\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"String.prototype.normalize\", form: _normalizeError\n });\n }\n }\n checkSafeUint53(value, message) {\n if (typeof (value) !== \"number\") {\n return;\n }\n if (message == null) {\n message = \"value not safe\";\n }\n if (value < 0 || value >= 0x1fffffffffffff) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"out-of-safe-range\",\n value: value\n });\n }\n if (value % 1) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"non-integer\",\n value: value\n });\n }\n }\n checkArgumentCount(count, expectedCount, message) {\n if (message) {\n message = \": \" + message;\n }\n else {\n message = \"\";\n }\n if (count < expectedCount) {\n this.throwError(\"missing argument\" + message, Logger.errors.MISSING_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n if (count > expectedCount) {\n this.throwError(\"too many arguments\" + message, Logger.errors.UNEXPECTED_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n }\n checkNew(target, kind) {\n if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n checkAbstract(target, kind) {\n if (target === kind) {\n this.throwError(\"cannot instantiate abstract class \" + JSON.stringify(kind.name) + \" directly; use a sub-class\", Logger.errors.UNSUPPORTED_OPERATION, { name: target.name, operation: \"new\" });\n }\n else if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n static globalLogger() {\n if (!_globalLogger) {\n _globalLogger = new Logger(version);\n }\n return _globalLogger;\n }\n static setCensorship(censorship, permanent) {\n if (!censorship && permanent) {\n this.globalLogger().throwError(\"cannot permanently disable censorship\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n if (_permanentCensorErrors) {\n if (!censorship) {\n return;\n }\n this.globalLogger().throwError(\"error censorship permanent\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n _censorErrors = !!censorship;\n _permanentCensorErrors = !!permanent;\n }\n static setLogLevel(logLevel) {\n const level = LogLevels[logLevel.toLowerCase()];\n if (level == null) {\n Logger.globalLogger().warn(\"invalid log level - \" + logLevel);\n return;\n }\n _logLevel = level;\n }\n static from(version) {\n return new Logger(version);\n }\n}\nLogger.errors = ErrorCode;\nLogger.levels = LogLevel;\n//# sourceMappingURL=index.js.map","export const version = \"bytes/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n///////////////////////////////\nfunction isHexable(value) {\n return !!(value.toHexString);\n}\nfunction addSlice(array) {\n if (array.slice) {\n return array;\n }\n array.slice = function () {\n const args = Array.prototype.slice.call(arguments);\n return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));\n };\n return array;\n}\nexport function isBytesLike(value) {\n return ((isHexString(value) && !(value.length % 2)) || isBytes(value));\n}\nfunction isInteger(value) {\n return (typeof (value) === \"number\" && value == value && (value % 1) === 0);\n}\nexport function isBytes(value) {\n if (value == null) {\n return false;\n }\n if (value.constructor === Uint8Array) {\n return true;\n }\n if (typeof (value) === \"string\") {\n return false;\n }\n if (!isInteger(value.length) || value.length < 0) {\n return false;\n }\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n if (!isInteger(v) || v < 0 || v >= 256) {\n return false;\n }\n }\n return true;\n}\nexport function arrayify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof (value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid arrayify value\");\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value = parseInt(String(value / 256));\n }\n if (result.length === 0) {\n result.push(0);\n }\n return addSlice(new Uint8Array(result));\n }\n if (options.allowMissingPrefix && typeof (value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n value = value.toHexString();\n }\n if (isHexString(value)) {\n let hex = value.substring(2);\n if (hex.length % 2) {\n if (options.hexPad === \"left\") {\n hex = \"0\" + hex;\n }\n else if (options.hexPad === \"right\") {\n hex += \"0\";\n }\n else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n const result = [];\n for (let i = 0; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n return addSlice(new Uint8Array(result));\n }\n if (isBytes(value)) {\n return addSlice(new Uint8Array(value));\n }\n return logger.throwArgumentError(\"invalid arrayify value\", \"value\", value);\n}\nexport function concat(items) {\n const objects = items.map(item => arrayify(item));\n const length = objects.reduce((accum, item) => (accum + item.length), 0);\n const result = new Uint8Array(length);\n objects.reduce((offset, object) => {\n result.set(object, offset);\n return offset + object.length;\n }, 0);\n return addSlice(result);\n}\nexport function stripZeros(value) {\n let result = arrayify(value);\n if (result.length === 0) {\n return result;\n }\n // Find the first non-zero entry\n let start = 0;\n while (start < result.length && result[start] === 0) {\n start++;\n }\n // If we started with zeros, strip them\n if (start) {\n result = result.slice(start);\n }\n return result;\n}\nexport function zeroPad(value, length) {\n value = arrayify(value);\n if (value.length > length) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[0]);\n }\n const result = new Uint8Array(length);\n result.set(value, length - value.length);\n return addSlice(result);\n}\nexport function isHexString(value, length) {\n if (typeof (value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n if (length && value.length !== 2 + 2 * length) {\n return false;\n }\n return true;\n}\nconst HexCharacters = \"0123456789abcdef\";\nexport function hexlify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof (value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid hexlify value\");\n let hex = \"\";\n while (value) {\n hex = HexCharacters[value & 0xf] + hex;\n value = Math.floor(value / 16);\n }\n if (hex.length) {\n if (hex.length % 2) {\n hex = \"0\" + hex;\n }\n return \"0x\" + hex;\n }\n return \"0x00\";\n }\n if (typeof (value) === \"bigint\") {\n value = value.toString(16);\n if (value.length % 2) {\n return (\"0x0\" + value);\n }\n return \"0x\" + value;\n }\n if (options.allowMissingPrefix && typeof (value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n return value.toHexString();\n }\n if (isHexString(value)) {\n if (value.length % 2) {\n if (options.hexPad === \"left\") {\n value = \"0x0\" + value.substring(2);\n }\n else if (options.hexPad === \"right\") {\n value += \"0\";\n }\n else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n return value.toLowerCase();\n }\n if (isBytes(value)) {\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n let v = value[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n }\n return logger.throwArgumentError(\"invalid hexlify value\", \"value\", value);\n}\n/*\nfunction unoddify(value: BytesLike | Hexable | number): BytesLike | Hexable | number {\n if (typeof(value) === \"string\" && value.length % 2 && value.substring(0, 2) === \"0x\") {\n return \"0x0\" + value.substring(2);\n }\n return value;\n}\n*/\nexport function hexDataLength(data) {\n if (typeof (data) !== \"string\") {\n data = hexlify(data);\n }\n else if (!isHexString(data) || (data.length % 2)) {\n return null;\n }\n return (data.length - 2) / 2;\n}\nexport function hexDataSlice(data, offset, endOffset) {\n if (typeof (data) !== \"string\") {\n data = hexlify(data);\n }\n else if (!isHexString(data) || (data.length % 2)) {\n logger.throwArgumentError(\"invalid hexData\", \"value\", data);\n }\n offset = 2 + 2 * offset;\n if (endOffset != null) {\n return \"0x\" + data.substring(offset, 2 + 2 * endOffset);\n }\n return \"0x\" + data.substring(offset);\n}\nexport function hexConcat(items) {\n let result = \"0x\";\n items.forEach((item) => {\n result += hexlify(item).substring(2);\n });\n return result;\n}\nexport function hexValue(value) {\n const trimmed = hexStripZeros(hexlify(value, { hexPad: \"left\" }));\n if (trimmed === \"0x\") {\n return \"0x0\";\n }\n return trimmed;\n}\nexport function hexStripZeros(value) {\n if (typeof (value) !== \"string\") {\n value = hexlify(value);\n }\n if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n value = value.substring(2);\n let offset = 0;\n while (offset < value.length && value[offset] === \"0\") {\n offset++;\n }\n return \"0x\" + value.substring(offset);\n}\nexport function hexZeroPad(value, length) {\n if (typeof (value) !== \"string\") {\n value = hexlify(value);\n }\n else if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n if (value.length > 2 * length + 2) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[1]);\n }\n while (value.length < 2 * length + 2) {\n value = \"0x0\" + value.substring(2);\n }\n return value;\n}\nexport function splitSignature(signature) {\n const result = {\n r: \"0x\",\n s: \"0x\",\n _vs: \"0x\",\n recoveryParam: 0,\n v: 0,\n yParityAndS: \"0x\",\n compact: \"0x\"\n };\n if (isBytesLike(signature)) {\n let bytes = arrayify(signature);\n // Get the r, s and v\n if (bytes.length === 64) {\n // EIP-2098; pull the v from the top bit of s and clear it\n result.v = 27 + (bytes[32] >> 7);\n bytes[32] &= 0x7f;\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n }\n else if (bytes.length === 65) {\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n result.v = bytes[64];\n }\n else {\n logger.throwArgumentError(\"invalid signature string\", \"signature\", signature);\n }\n // Allow a recid to be used as the v\n if (result.v < 27) {\n if (result.v === 0 || result.v === 1) {\n result.v += 27;\n }\n else {\n logger.throwArgumentError(\"signature invalid v byte\", \"signature\", signature);\n }\n }\n // Compute recoveryParam from v\n result.recoveryParam = 1 - (result.v % 2);\n // Compute _vs from recoveryParam and s\n if (result.recoveryParam) {\n bytes[32] |= 0x80;\n }\n result._vs = hexlify(bytes.slice(32, 64));\n }\n else {\n result.r = signature.r;\n result.s = signature.s;\n result.v = signature.v;\n result.recoveryParam = signature.recoveryParam;\n result._vs = signature._vs;\n // If the _vs is available, use it to populate missing s, v and recoveryParam\n // and verify non-missing s, v and recoveryParam\n if (result._vs != null) {\n const vs = zeroPad(arrayify(result._vs), 32);\n result._vs = hexlify(vs);\n // Set or check the recid\n const recoveryParam = ((vs[0] >= 128) ? 1 : 0);\n if (result.recoveryParam == null) {\n result.recoveryParam = recoveryParam;\n }\n else if (result.recoveryParam !== recoveryParam) {\n logger.throwArgumentError(\"signature recoveryParam mismatch _vs\", \"signature\", signature);\n }\n // Set or check the s\n vs[0] &= 0x7f;\n const s = hexlify(vs);\n if (result.s == null) {\n result.s = s;\n }\n else if (result.s !== s) {\n logger.throwArgumentError(\"signature v mismatch _vs\", \"signature\", signature);\n }\n }\n // Use recid and v to populate each other\n if (result.recoveryParam == null) {\n if (result.v == null) {\n logger.throwArgumentError(\"signature missing v and recoveryParam\", \"signature\", signature);\n }\n else if (result.v === 0 || result.v === 1) {\n result.recoveryParam = result.v;\n }\n else {\n result.recoveryParam = 1 - (result.v % 2);\n }\n }\n else {\n if (result.v == null) {\n result.v = 27 + result.recoveryParam;\n }\n else {\n const recId = (result.v === 0 || result.v === 1) ? result.v : (1 - (result.v % 2));\n if (result.recoveryParam !== recId) {\n logger.throwArgumentError(\"signature recoveryParam mismatch v\", \"signature\", signature);\n }\n }\n }\n if (result.r == null || !isHexString(result.r)) {\n logger.throwArgumentError(\"signature missing or invalid r\", \"signature\", signature);\n }\n else {\n result.r = hexZeroPad(result.r, 32);\n }\n if (result.s == null || !isHexString(result.s)) {\n logger.throwArgumentError(\"signature missing or invalid s\", \"signature\", signature);\n }\n else {\n result.s = hexZeroPad(result.s, 32);\n }\n const vs = arrayify(result.s);\n if (vs[0] >= 128) {\n logger.throwArgumentError(\"signature s out of range\", \"signature\", signature);\n }\n if (result.recoveryParam) {\n vs[0] |= 0x80;\n }\n const _vs = hexlify(vs);\n if (result._vs) {\n if (!isHexString(result._vs)) {\n logger.throwArgumentError(\"signature invalid _vs\", \"signature\", signature);\n }\n result._vs = hexZeroPad(result._vs, 32);\n }\n // Set or check the _vs\n if (result._vs == null) {\n result._vs = _vs;\n }\n else if (result._vs !== _vs) {\n logger.throwArgumentError(\"signature _vs mismatch v and s\", \"signature\", signature);\n }\n }\n result.yParityAndS = result._vs;\n result.compact = result.r + result.yParityAndS.substring(2);\n return result;\n}\nexport function joinSignature(signature) {\n signature = splitSignature(signature);\n return hexlify(concat([\n signature.r,\n signature.s,\n (signature.recoveryParam ? \"0x1c\" : \"0x1b\")\n ]));\n}\n//# sourceMappingURL=index.js.map","import { hexlify, hexStripZeros } from '@ethersproject/bytes'\r\nimport { useCallback, useMemo } from 'react'\r\nimport { useEthereumProvider } from '../contexts/EthereumProviderContext'\r\nimport { useWallet } from '@solana/wallet-adapter-react'\r\n\r\nimport {\r\n CLUSTER,\r\n getEvmChainId,\r\n isEVMChain,\r\n CHAIN_STRING_SOLANA\r\n} from '../utils/constants'\r\nimport { useSelector } from 'react-redux'\r\nimport { selectErrorHandler, selectOriginNetwork } from '../store/selectors'\r\n\r\nconst createWalletStatus = (\r\n isReady: boolean,\r\n statusMessage: string = '',\r\n forceNetworkSwitch: () => void,\r\n walletAddress?: string\r\n) => ({\r\n isReady,\r\n statusMessage,\r\n forceNetworkSwitch,\r\n walletAddress\r\n})\r\n\r\nfunction useIsWalletReady(enableNetworkAutoswitch: boolean = false): {\r\n isReady: boolean\r\n statusMessage: string\r\n walletAddress?: string\r\n forceNetworkSwitch: () => void\r\n} {\r\n const autoSwitch = enableNetworkAutoswitch\r\n const { publicKey: solPK } = useWallet()\r\n const { provider, signerAddress, chainId: evmChainId } = useEthereumProvider()\r\n const sourceChain = useSelector(selectOriginNetwork)\r\n const hasEthInfo = !!provider && !!signerAddress\r\n const errorHandler = useSelector(selectErrorHandler)\r\n const correctEvmNetwork = getEvmChainId(sourceChain)\r\n const hasCorrectEvmNetwork = evmChainId === correctEvmNetwork\r\n // const hasCorrectEvmNetwork = evmChainId === GOERLI_ETH_NETWORK_CHAIN_ID;\r\n\r\n const forceNetworkSwitch = useCallback(() => {\r\n if (provider && correctEvmNetwork) {\r\n if (!isEVMChain(sourceChain)) {\r\n return\r\n }\r\n\r\n // Put code manually to Goerli for now\r\n try {\r\n provider.send('wallet_switchEthereumChain', [\r\n { chainId: hexStripZeros(hexlify(correctEvmNetwork)) }\r\n ])\r\n } catch (e) {\r\n errorHandler(e)\r\n }\r\n }\r\n }, [provider, correctEvmNetwork, sourceChain])\r\n\r\n return useMemo(() => {\r\n if (sourceChain === CHAIN_STRING_SOLANA && solPK) {\r\n return createWalletStatus(\r\n true,\r\n undefined,\r\n forceNetworkSwitch,\r\n solPK.toBase58()\r\n )\r\n }\r\n if (isEVMChain(sourceChain) && hasEthInfo && signerAddress) {\r\n if (hasCorrectEvmNetwork) {\r\n return createWalletStatus(\r\n true,\r\n undefined,\r\n forceNetworkSwitch,\r\n signerAddress\r\n )\r\n } else {\r\n if (provider && correctEvmNetwork && autoSwitch) {\r\n forceNetworkSwitch()\r\n }\r\n return createWalletStatus(\r\n false,\r\n `Wallet is not connected to ${CLUSTER}. Expected Chain ID: ${correctEvmNetwork}`,\r\n forceNetworkSwitch,\r\n signerAddress\r\n )\r\n }\r\n }\r\n\r\n return createWalletStatus(\r\n false,\r\n 'Wallet not connected',\r\n forceNetworkSwitch,\r\n undefined\r\n )\r\n }, [\r\n sourceChain,\r\n autoSwitch,\r\n forceNetworkSwitch,\r\n solPK,\r\n hasEthInfo,\r\n correctEvmNetwork,\r\n hasCorrectEvmNetwork,\r\n provider,\r\n signerAddress\r\n ])\r\n}\r\n\r\nexport default useIsWalletReady\r\n","// Return shortened address for EVM, Solana wallet address\r\n\r\nexport const getShortenedAddress = (address: string) => {\r\n const is0x = (addr: string) => addr?.startsWith('0x')\r\n return `${address?.substring(0, is0x(address) ? 6 : 3)}...${address?.substr(\r\n address.length - (is0x(address) ? 4 : 3)\r\n )}`\r\n}\r\n","import React from 'react'\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { useWallet } from '@solana/wallet-adapter-react'\r\nimport { setConnectModal } from '../../store/optionSlice'\r\nimport { selectOriginNetwork, selectTheme } from '../../store/selectors'\r\nimport PrimaryButton from './PrimaryButton'\r\nimport useIsWalletReady from '../../hooks/useIsWalletReady'\r\nimport { useEthereumProvider } from '../../contexts/EthereumProviderContext'\r\nimport { CHAIN_STRING_SOLANA } from '../../utils/constants'\r\nimport { getShortenedAddress } from '../../utils/functions'\r\n\r\nconst WalletButton = ({ errorBelow = false }: { errorBelow?: boolean }) => {\r\n const dispatch = useDispatch()\r\n const theme = useSelector(selectTheme)\r\n const selectedNetwork = useSelector(selectOriginNetwork)\r\n const { disconnect: disconnectSolana } = useWallet()\r\n const { connect, disconnect: disconnectEVM } = useEthereumProvider()\r\n const { isReady, statusMessage, walletAddress } = useIsWalletReady(true)\r\n\r\n const handleClick = () => {\r\n if (isReady) {\r\n if (selectedNetwork === CHAIN_STRING_SOLANA) {\r\n disconnectSolana()\r\n } else {\r\n disconnectEVM()\r\n }\r\n return\r\n }\r\n\r\n if (selectedNetwork === CHAIN_STRING_SOLANA) {\r\n dispatch(setConnectModal(true))\r\n return\r\n }\r\n\r\n connect()\r\n }\r\n\r\n return (\r\n <div\r\n className={`wallet-button ${theme} ${errorBelow ? 'error-below' : ''}`}\r\n >\r\n <PrimaryButton clickHandler={handleClick}>\r\n {isReady\r\n ? `Disconnect ${getShortenedAddress(walletAddress || '')}`\r\n : 'Connect Wallet'}\r\n </PrimaryButton>\r\n {!isReady && <p className='provider-error'>{statusMessage}</p>}\r\n </div>\r\n )\r\n}\r\n\r\nexport default WalletButton\r\n","import React, { useState } from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { COIN_LIST } from '../../utils/constants'\r\n\r\nimport { selectTheme } from '../../store/selectors'\r\n\r\nconst CoinDropdown = () => {\r\n const [collapsed, setCollapsed] = useState(true)\r\n // const selectedCoin = useMemo(\r\n // () => COIN_LIST[(transactionOption?.currency || 'USDK') as string],\r\n // [COIN_LIST, transactionOption]\r\n // )\r\n const selectedCoin = COIN_LIST['USDK']\r\n const theme = useSelector(selectTheme)\r\n\r\n return (\r\n <div\r\n className={`coin-dropdown ${theme} ${collapsed ? 'collapsed' : ''}`}\r\n onClick={() => setCollapsed((prev) => !prev)}\r\n >\r\n <div className='coin-wrapper'>\r\n {<selectedCoin.icon />}\r\n {selectedCoin.symbol}\r\n </div>\r\n {/* <div className={`coin-menu ${theme} ${collapsed ? 'collapsed' : ''}`}>\r\n {coinList.map((coin) => (\r\n <div className='coin-item' key={selectedCoin.symbol}>\r\n {<selectedCoin.icon />}\r\n <p>{selectedCoin.symbol}</p>\r\n </div>\r\n ))}\r\n </div> */}\r\n </div>\r\n )\r\n}\r\n\r\nexport default CoinDropdown\r\n","export const formatterInt = new Intl.NumberFormat('en-US', {\r\n maximumFractionDigits: 0\r\n})\r\n\r\nexport const formatterFloat = new Intl.NumberFormat('en-US', {\r\n maximumFractionDigits: 3\r\n})\r\n","import React, { useMemo } from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { formatterFloat } from '../../helpers/functions'\r\nimport useIsWalletReady from '../../hooks/useIsWalletReady'\r\nimport { ModeOptions } from '../../interface'\r\nimport {\r\n selectAmount,\r\n selectFeeDeduct,\r\n selectMode,\r\n selectOriginNetwork,\r\n selectServiceFee,\r\n selectTargetAddress,\r\n selectTargetNetwork,\r\n selectTheme,\r\n selectTransactionOption\r\n} from '../../store/selectors'\r\nimport { FEE_PERCENT, networkOptions } from '../../utils/constants'\r\nimport { getShortenedAddress } from '../../utils/functions'\r\n\r\nconst ConfirmDetails = () => {\r\n const feeDeduct = useSelector(selectFeeDeduct)\r\n const mode = useSelector(selectMode)\r\n const theme = useSelector(selectTheme)\r\n const amount = useSelector(selectAmount)\r\n const serviceFee = useSelector(selectServiceFee)\r\n const originNetwork = useSelector(selectOriginNetwork)\r\n const targetNetwork = useSelector(selectTargetNetwork)\r\n const targetAddress = useSelector(selectTargetAddress)\r\n const transactionOption = useSelector(selectTransactionOption)\r\n const { walletAddress } = useIsWalletReady()\r\n const originNetworkOption = useMemo(\r\n () => networkOptions.filter((network) => network.id === originNetwork)[0],\r\n [networkOptions, originNetwork]\r\n )\r\n const targetNetworkIcon = useMemo(\r\n () =>\r\n networkOptions.filter(\r\n (network) =>\r\n network.id ===\r\n (mode === ModeOptions.payment\r\n ? transactionOption?.targetChain\r\n : targetNetwork)\r\n )[0],\r\n [networkOptions, originNetwork]\r\n )\r\n\r\n return (\r\n <div className={`confirm-details ${theme}`}>\r\n <p>Confirm the below</p>\r\n <div className='detail-item'>\r\n <span className='label'>Wallet:</span>\r\n <p>{getShortenedAddress(walletAddress || '')}</p>\r\n <span className='kima-card-network-label'>\r\n <originNetworkOption.icon />\r\n {originNetwork}\r\n </span>\r\n </div>\r\n <div className='detail-item'>\r\n <span className='label'>Amount:</span>\r\n <p>\r\n {formatterFloat.format(\r\n feeDeduct ? amount : amount + serviceFee + amount * FEE_PERCENT\r\n )}{' '}\r\n USDK\r\n </p>\r\n </div>\r\n <div className='detail-item'>\r\n <span className='label'>Target:</span>\r\n <p>\r\n {getShortenedAddress(\r\n (mode === ModeOptions.payment\r\n ? transactionOption?.targetAddress\r\n : targetAddress) || ''\r\n )}\r\n </p>\r\n <span className='kima-card-network-label'>\r\n <targetNetworkIcon.icon />\r\n {mode === ModeOptions.payment\r\n ? transactionOption?.targetChain\r\n : targetNetwork}\r\n </span>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default ConfirmDetails\r\n","import React from 'react'\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { CrossIcon } from '../../assets/icons'\r\nimport { setConnectModal } from '../../store/optionSlice'\r\nimport {\r\n selectConnectModal,\r\n selectSolanaProvider,\r\n selectTheme\r\n} from '../../store/selectors'\r\nimport PrimaryButton from './PrimaryButton'\r\nimport SecondaryButton from './SecondaryButton'\r\nimport WalletSelect from './WalletSelect'\r\n\r\nimport { useWallet } from '@solana/wallet-adapter-react'\r\n\r\nconst WalletConnectModal = () => {\r\n const dispatch = useDispatch()\r\n const theme = useSelector(selectTheme)\r\n const connectModal = useSelector(selectConnectModal)\r\n const selectedProvider = useSelector(selectSolanaProvider)\r\n const { select } = useWallet()\r\n\r\n const handleConnect = () => {\r\n select(selectedProvider)\r\n dispatch(setConnectModal(false))\r\n }\r\n\r\n return (\r\n <div\r\n className={`modal wallet-connect ${theme} ${connectModal ? 'open' : ''}`}\r\n >\r\n <div className='kima-card-header'>\r\n <div className='topbar'>\r\n <div className='title'>\r\n <h3>Connect Wallet</h3>\r\n </div>\r\n <div className='control-buttons'>\r\n <button\r\n className='icon-button'\r\n onClick={() => dispatch(setConnectModal(false))}\r\n >\r\n <CrossIcon fill={theme === 'light' ? 'black' : 'white'} />\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div className='modal-content'>\r\n <WalletSelect />\r\n </div>\r\n <div\r\n className='kima-card-footer'\r\n style={{ justifyContent: 'flex-end', marginTop: '2em' }}\r\n >\r\n <SecondaryButton\r\n clickHandler={() => dispatch(setConnectModal(false))}\r\n theme={theme}\r\n >\r\n Cancel\r\n </SecondaryButton>\r\n <PrimaryButton clickHandler={handleConnect}>Connect</PrimaryButton>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default WalletConnectModal\r\n","import React from 'react'\r\nimport { useDispatch } from 'react-redux'\r\nimport { useSelector } from 'react-redux'\r\nimport { setTargetAddress } from '../../store/optionSlice'\r\nimport { selectTargetAddress } from '../../store/selectors'\r\n\r\nconst AddressInput = () => {\r\n const dispatch = useDispatch()\r\n const targetAddress = useSelector(selectTargetAddress)\r\n\r\n return (\r\n <input\r\n className='kima-address-input'\r\n type='text'\r\n value={targetAddress}\r\n onChange={(e) => dispatch(setTargetAddress(e.target.value))}\r\n />\r\n )\r\n}\r\n\r\nexport default AddressInput\r\n","import React from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { CheckIcon } from '../../assets/icons'\r\nimport { selectTheme } from '../../store/selectors'\r\n\r\ninterface Props {\r\n text: string\r\n checked: boolean\r\n setCheck: (e: any) => void\r\n}\r\n\r\nconst CustomCheckbox = ({ text, checked, setCheck }: Props) => {\r\n const theme = useSelector(selectTheme)\r\n\r\n return (\r\n <div className='kima-custom-checkbox'>\r\n <div\r\n className={`icon-wrapper ${theme}`}\r\n onClick={() => setCheck(!checked)}\r\n >\r\n {checked && <CheckIcon />}\r\n </div>\r\n <span>{text}</span>\r\n </div>\r\n )\r\n}\r\n\r\nexport default CustomCheckbox\r\n","import { useEffect, useState } from 'react';\r\n\r\nconst useWidth = () => {\r\n const [width, setWidth] = useState(window.innerWidth);\r\n\r\n useEffect(() => {\r\n const handleResize = () => {\r\n setWidth(window.innerWidth);\r\n };\r\n\r\n window.addEventListener('resize', handleResize);\r\n\r\n return () => window.removeEventListener('resize', handleResize);\r\n }, []);\r\n\r\n return width;\r\n};\r\n\r\nexport default useWidth;\r\n","import React from 'react'\r\nimport { CheckIcon, WarningIcon } from '../../assets/icons'\r\nimport { useWidth } from '../../styles/hooks'\r\nimport { tooltipInfo } from '../../utils/constants'\r\n\r\ninterface Props {\r\n step: number\r\n focus: number\r\n errorStep: number\r\n}\r\n\r\nconst Tooltip = ({ step, focus, errorStep }: Props) => {\r\n const windowWidth = useWidth()\r\n\r\n return (\r\n <div className='kima-tooltip'>\r\n <div\r\n className={`${\r\n focus === 0 ? 'position-first' : focus === 4 ? 'position-last' : ''\r\n }`}\r\n style={{\r\n left: `${(focus - 1) * 25}%`,\r\n opacity: `${focus < 0 ? 0 : 1}`\r\n }}\r\n >\r\n <div className='content-wrapper'>\r\n {tooltipInfo[focus] &&\r\n tooltipInfo[focus].map((info: any) => (\r\n <div key={info} className='info-item'>\r\n {focus === errorStep ? (\r\n <WarningIcon />\r\n ) : focus <= step ? (\r\n <CheckIcon />\r\n ) : (\r\n ''\r\n )}\r\n <p>{info}</p>\r\n </div>\r\n ))}\r\n {windowWidth <= 768 && (\r\n <div\r\n className='arrow'\r\n style={{\r\n left:\r\n focus === 0\r\n ? '1em'\r\n : focus === 4\r\n ? 'calc(100% - 3em)'\r\n : `calc(${focus * 25}% - 1em)`\r\n }}\r\n />\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default Tooltip\r\n","export const fetchWrapper = {\r\n get,\r\n post\r\n}\r\n\r\nfunction get(url: string) {\r\n const requestOptions: any = {\r\n method: 'GET'\r\n }\r\n\r\n requestOptions.headers = {\r\n 'Content-Type': 'application/json'\r\n }\r\n\r\n return fetch(url, requestOptions).then(handleResponse)\r\n}\r\n\r\nfunction post(url: string, body: any) {\r\n const requestOptions: any = {\r\n method: 'POST',\r\n credentials: 'include',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n // Authorization: `Bearer ${token}`\r\n },\r\n body: body\r\n }\r\n\r\n return fetch(url, requestOptions).then(handleResponse)\r\n}\r\n\r\nfunction handleResponse(response: Response) {\r\n return response.text().then((text) => {\r\n let data = text\r\n\r\n try {\r\n data = JSON.parse(text)\r\n } catch (error) {\r\n data = text\r\n }\r\n\r\n if (!response.ok) {\r\n if ([401, 403].includes(response.status)) {\r\n // auto logout if 401 Unauthorized or 403 Forbidden response returned from api\r\n }\r\n\r\n // const error = (data && data.message) || response.statusText;\r\n const error = data || response.statusText\r\n\r\n return Promise.reject({ status: response.status, error })\r\n }\r\n\r\n return data\r\n })\r\n}\r\n","import React, { useEffect, useState } from 'react'\r\nimport AnimatedNumber from 'animated-number-react'\r\nimport { CrossIcon, FooterLogo, MinimizeIcon } from '../assets/icons'\r\nimport Progressbar from './reusable/Progressbar'\r\nimport { ExternalLink, NetworkLabel } from './reusable'\r\nimport Tooltip from './reusable/Tooltip'\r\nimport '../index.css'\r\nimport { DefaultProps, FontSizeOptions, ThemeOptions } from '../interface'\r\nimport { Provider, useDispatch } from 'react-redux'\r\nimport { store } from '../store'\r\nimport { setSubmitted } from '../store/optionSlice'\r\nimport { fetchWrapper } from '../helpers/fetch-wrapper'\r\nimport {\r\n CHAIN_STRING_AVALANCHE,\r\n DIVERSIFI_NODE_PROVIDER1_QUERY,\r\n PAY_AVAILABLE,\r\n PAY_CONFIRMED,\r\n PAY_FAILED,\r\n PAY_KEYSIGNED,\r\n PAY_PAID,\r\n PAY_UNAVAILABLE\r\n} from '../utils/constants'\r\nimport { formatterInt } from '../helpers/functions'\r\n\r\nexport const TransactionWidget = ({\r\n theme = ThemeOptions.light,\r\n fontSize = FontSizeOptions.medium\r\n}: DefaultProps) => {\r\n const dispatch = useDispatch()\r\n const [step, setStep] = useState(0)\r\n const [focus, setFocus] = useState(-1)\r\n const [errorStep, setErrorStep] = useState(-1)\r\n const [minimized, setMinimized] = useState(false)\r\n const [percent, setPercent] = useState(0)\r\n const [amount, setAmount] = useState<number>(0)\r\n const [sourceChain, setSourceChain] = useState<string>('')\r\n const [targetChain, setTargetChain] = useState<string>('')\r\n\r\n useEffect(() => {\r\n const timerId = setInterval(async () => {\r\n // Monitor last transaction for now until transaction_data endpoint is ready\r\n\r\n const result: any = await fetchWrapper.get(\r\n `https://${DIVERSIFI_NODE_PROVIDER1_QUERY}/Diversifi-Technologies/diversifi/diversifi/transaction_data`\r\n )\r\n\r\n const data = result?.transactionData\r\n\r\n if (!data?.length) return\r\n\r\n data.sort((a: any, b: any) => b.index - a.index)\r\n const status = data[0].status\r\n\r\n // Status of last transaction\r\n console.log(status)\r\n setSourceChain(\r\n data[0].originChain === 'Avax'\r\n ? CHAIN_STRING_AVALANCHE\r\n : data[0].originChain\r\n )\r\n setTargetChain(\r\n data[0].targetChain === 'Avax'\r\n ? CHAIN_STRING_AVALANCHE\r\n : data[0].targetChain\r\n )\r\n setAmount(+data[0].amount)\r\n\r\n setErrorStep(-1)\r\n if (status === PAY_AVAILABLE) {\r\n setStep(0)\r\n setPercent(0)\r\n } else if (status === PAY_CONFIRMED) {\r\n setStep(1)\r\n setPercent(25)\r\n } else if (status.startsWith(PAY_UNAVAILABLE)) {\r\n setStep(1)\r\n setErrorStep(1)\r\n setPercent(25)\r\n } else if (status === PAY_KEYSIGNED) {\r\n setStep(2)\r\n setPercent(50)\r\n } else if (status === PAY_PAID) {\r\n setStep(4)\r\n setPercent(100)\r\n } else if (status === PAY_FAILED) {\r\n setStep(3)\r\n setErrorStep(3)\r\n setPercent(75)\r\n }\r\n }, 1000)\r\n\r\n return () => {\r\n clearInterval(timerId)\r\n }\r\n }, [])\r\n\r\n return (\r\n <Provider store={store}>\r\n <div\r\n className={`kima-card transaction-card ${theme} font-${fontSize} ${\r\n minimized ? 'minimized' : ''\r\n }`}\r\n >\r\n <div className='kima-card-header'>\r\n <div className='topbar'>\r\n <div className='title'>\r\n <h3>Transferring {formatterInt.format(amount)} USDK</h3>\r\n <AnimatedNumber\r\n component='p'\r\n value={percent}\r\n duration={1000}\r\n formatValue={(n: any) => `${formatterInt.format(n)}%`}\r\n />\r\n {/* <p>{percent}%</p> */}\r\n </div>\r\n\r\n {!minimized ? (\r\n <div className='control-buttons'>\r\n <button\r\n className='icon-button'\r\n onClick={() => {\r\n setMinimized(true)\r\n }}\r\n >\r\n <MinimizeIcon fill={theme === 'light' ? 'black' : 'white'} />\r\n </button>\r\n <button\r\n className='icon-button'\r\n onClick={() => {\r\n dispatch(setSubmitted(false))\r\n }}\r\n >\r\n <CrossIcon fill={theme === 'light' ? 'black' : 'white'} />\r\n </button>\r\n </div>\r\n ) : (\r\n <div className='control-buttons'>\r\n <div className='maximize' onClick={() => setMinimized(false)}>\r\n View\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n {sourceChain && targetChain && (\r\n <NetworkLabel\r\n sourceChain={sourceChain}\r\n targetChain={targetChain}\r\n hasError={errorStep >= 0}\r\n />\r\n )}\r\n </div>\r\n\r\n <div className='kima-card-content'>\r\n <Progressbar\r\n step={step}\r\n focus={focus}\r\n errorStep={errorStep}\r\n setFocus={setFocus}\r\n />\r\n <Tooltip step={step} focus={focus} errorStep={errorStep} />\r\n </div>\r\n\r\n <div className='kima-card-footer'>\r\n <FooterLogo fill={theme === 'light' ? 'black' : '#C5C5C5'} />\r\n <p>Click on a step to see detailed information.</p>\r\n <ExternalLink to='https://kima.finance'>I need help</ExternalLink>\r\n </div>\r\n </div>\r\n </Provider>\r\n )\r\n}\r\n","import React, { useMemo } from 'react'\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport {\r\n selectAmount,\r\n selectFeeDeduct,\r\n selectMode,\r\n selectOriginNetwork,\r\n selectServiceFee,\r\n selectTargetNetwork,\r\n selectTheme,\r\n selectTransactionOption\r\n} from '../../store/selectors'\r\nimport { FEE_PERCENT, networkOptions } from '../../utils/constants'\r\nimport { CoinDropdown, WalletButton, CustomCheckbox } from './'\r\nimport {\r\n setAmount,\r\n setFeeDeduct,\r\n setOriginNetwork,\r\n setServiceFee,\r\n setTargetNetwork\r\n} from '../../store/optionSlice'\r\nimport { ModeOptions } from '../../interface'\r\nimport AddressInput from './AddressInput'\r\nimport { formatterFloat } from '../../helpers/functions'\r\n\r\nconst SingleForm = () => {\r\n const originNetwork = useSelector(selectOriginNetwork)\r\n const targetNetwork = useSelector(selectTargetNetwork)\r\n const dispatch = useDispatch()\r\n const mode = useSelector(selectMode)\r\n const theme = useSelector(selectTheme)\r\n const amount = useSelector(selectAmount)\r\n const feeDeduct = useSelector(selectFeeDeduct)\r\n const serviceFee = useSelector(selectServiceFee)\r\n const transactionOption = useSelector(selectTransactionOption)\r\n // const originNetworks = useMemo(\r\n // () =>\r\n // mode === ModeOptions.payment\r\n // ? networkOptions.filter(\r\n // (network) => network.id !== transactionOption?.targetChain\r\n // )\r\n // : networkOptions,\r\n // [transactionOption, mode]\r\n // )\r\n const originNetworks = networkOptions\r\n const targetNetworks = useMemo(\r\n () => networkOptions.filter((network) => network.id !== originNetwork),\r\n [originNetwork]\r\n )\r\n\r\n return (\r\n <div className='single-form'>\r\n <div className='form-item'>\r\n <span className='label'>\r\n {mode === ModeOptions.payment\r\n ? 'Funding Network:'\r\n : 'Origin Network:'}{' '}\r\n </span>\r\n {originNetworks.map((network) => (\r\n <div\r\n className={`network-item ${theme} ${\r\n originNetwork === network.id ? 'active' : ''\r\n }`}\r\n onClick={() => {\r\n dispatch(setOriginNetwork(network.id))\r\n dispatch(setTargetNetwork(''))\r\n }}\r\n key={network.id}\r\n >\r\n <network.icon />\r\n <p>{network.id}</p>\r\n </div>\r\n ))}\r\n </div>\r\n <div className='form-item'>\r\n <span className='label'>Connect wallet:</span>\r\n <WalletButton />\r\n </div>\r\n {mode === ModeOptions.bridge && (\r\n <div className='form-item'>\r\n <span className='label'>Target Network:</span>\r\n {targetNetworks.map((network) => (\r\n <div\r\n className={`network-item ${theme} ${\r\n targetNetwork === network.id ? 'active' : ''\r\n }`}\r\n onClick={() => {\r\n dispatch(setTargetNetwork(network.id))\r\n dispatch(setServiceFee(0))\r\n }}\r\n key={network.id}\r\n >\r\n <network.icon />\r\n <p>{network.id}</p>\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n {mode === ModeOptions.bridge && (\r\n <div className='form-item'>\r\n <span className='label'>Target Address:</span>\r\n <AddressInput />\r\n </div>\r\n )}\r\n <div className={`form-item ${theme}`}>\r\n <span className='label'>Amount:</span>\r\n <input\r\n type='number'\r\n value={\r\n mode === ModeOptions.payment\r\n ? transactionOption?.amount || 0\r\n : amount\r\n }\r\n onChange={(e) => dispatch(setAmount(+e.target.value))}\r\n readOnly={mode === ModeOptions.payment}\r\n />\r\n <CoinDropdown />\r\n {mode === ModeOptions.bridge && serviceFee ? (\r\n <CustomCheckbox\r\n text={`Deduct ${formatterFloat.format(\r\n amount * FEE_PERCENT + serviceFee\r\n )} USDK fee`}\r\n checked={feeDeduct}\r\n setCheck={(value: boolean) => dispatch(setFeeDeduct(value))}\r\n />\r\n ) : null}\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default SingleForm\r\n","import React from 'react'\r\nimport { COIN_LIST } from '../../utils/constants'\r\nimport {\r\n selectAmount,\r\n selectMode,\r\n selectTheme,\r\n selectTransactionOption\r\n // selectTransactionOption\r\n} from '../../store/selectors'\r\nimport { useSelector } from 'react-redux'\r\nimport { ModeOptions } from '../../interface'\r\nimport { setAmount } from '../../store/optionSlice'\r\nimport { useDispatch } from 'react-redux'\r\n\r\nconst CoinSelect = () => {\r\n const dispatch = useDispatch()\r\n const theme = useSelector(selectTheme)\r\n const mode = useSelector(selectMode)\r\n const transactionOption = useSelector(selectTransactionOption)\r\n const amount = useSelector(selectAmount)\r\n // const selectedCoin = useMemo(\r\n // () => COIN_LIST[transactionOption?.currency || 'USDK'],\r\n // [COIN_LIST, transactionOption]\r\n // )\r\n const selectedCoin = COIN_LIST['USDK']\r\n\r\n return (\r\n <div className={`coin-select`}>\r\n <p>Select Amount of Token for Funding</p>\r\n {/* <div className='coin-list-container'>\r\n {coinList.map((coin, index) => (\r\n <div\r\n className={`card-item ${theme} ${\r\n index === selectedCoin ? 'active' : ''\r\n }`}\r\n key={coin.symbol}\r\n onClick={() => setCoin(index)}\r\n >\r\n {coin.icon}\r\n <span>{coin.symbol}</span>\r\n </div>\r\n ))}\r\n </div> */}\r\n <div className={`amount-input ${theme}`}>\r\n <span>Amount:</span>\r\n <div className='input-wrapper'>\r\n <input\r\n type='number'\r\n value={\r\n mode === ModeOptions.payment\r\n ? transactionOption?.amount || 0\r\n : amount\r\n }\r\n readOnly={mode === ModeOptions.payment}\r\n onChange={(e) => dispatch(setAmount(+e.target.value))}\r\n />\r\n <div className='coin-label'>\r\n {<selectedCoin.icon />}\r\n <span>{selectedCoin.symbol}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default CoinSelect\r\n","// A type of promise-like that resolves synchronously and supports only one observer\nexport const _Pact = /*#__PURE__*/(function() {\n\tfunction _Pact() {}\n\t_Pact.prototype.then = function(onFulfilled, onRejected) {\n\t\tconst result = new _Pact();\n\t\tconst state = this.s;\n\t\tif (state) {\n\t\t\tconst callback = state & 1 ? onFulfilled : onRejected;\n\t\t\tif (callback) {\n\t\t\t\ttry {\n\t\t\t\t\t_settle(result, 1, callback(this.v));\n\t\t\t\t} catch (e) {\n\t\t\t\t\t_settle(result, 2, e);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}\n\t\tthis.o = function(_this) {\n\t\t\ttry {\n\t\t\t\tconst value = _this.v;\n\t\t\t\tif (_this.s & 1) {\n\t\t\t\t\t_settle(result, 1, onFulfilled ? onFulfilled(value) : value);\n\t\t\t\t} else if (onRejected) {\n\t\t\t\t\t_settle(result, 1, onRejected(value));\n\t\t\t\t} else {\n\t\t\t\t\t_settle(result, 2, value);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(result, 2, e);\n\t\t\t}\n\t\t};\n\t\treturn result;\n\t}\n\treturn _Pact;\n})();\n\n// Settles a pact synchronously\nexport function _settle(pact, state, value) {\n\tif (!pact.s) {\n\t\tif (value instanceof _Pact) {\n\t\t\tif (value.s) {\n\t\t\t\tif (state & 1) {\n\t\t\t\t\tstate = value.s;\n\t\t\t\t}\n\t\t\t\tvalue = value.v;\n\t\t\t} else {\n\t\t\t\tvalue.o = _settle.bind(null, pact, state);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (value && value.then) {\n\t\t\tvalue.then(_settle.bind(null, pact, state), _settle.bind(null, pact, 2));\n\t\t\treturn;\n\t\t}\n\t\tpact.s = state;\n\t\tpact.v = value;\n\t\tconst observer = pact.o;\n\t\tif (observer) {\n\t\t\tobserver(pact);\n\t\t}\n\t}\n}\n\nexport function _isSettledPact(thenable) {\n\treturn thenable instanceof _Pact && thenable.s & 1;\n}\n\n// Converts argument to a function that always returns a Promise\nexport function _async(f) {\n\treturn function() {\n\t\tfor (var args = [], i = 0; i < arguments.length; i++) {\n\t\t\targs[i] = arguments[i];\n\t\t}\n\t\ttry {\n\t\t\treturn Promise.resolve(f.apply(this, args));\n\t\t} catch(e) {\n\t\t\treturn Promise.reject(e);\n\t\t}\n\t}\n}\n\n// Awaits on a value that may or may not be a Promise (equivalent to the await keyword in ES2015, with continuations passed explicitly)\nexport function _await(value, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(value) : value;\n\t}\n\tif (!value || !value.then) {\n\t\tvalue = Promise.resolve(value);\n\t}\n\treturn then ? value.then(then) : value;\n}\n\n// Awaits on a value that may or may not be a Promise, then ignores it\nexport function _awaitIgnored(value, direct) {\n\tif (!direct) {\n\t\treturn value && value.then ? value.then(_empty) : Promise.resolve();\n\t}\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continue(value, then) {\n\treturn value && value.then ? value.then(then) : then(value);\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continueIgnored(value) {\n\tif (value && value.then) {\n\t\treturn value.then(_empty);\n\t}\n}\n\n// Asynchronously iterate through an object that has a length property, passing the index as the first argument to the callback (even as the length property changes)\nexport function _forTo(array, body, check) {\n\tvar i = -1, pact, reject;\n\tfunction _cycle(result) {\n\t\ttry {\n\t\t\twhile (++i < array.length && (!check || !check())) {\n\t\t\t\tresult = body(i);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (pact) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t} else {\n\t\t\t\tpact = result;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t}\n\t}\n\t_cycle();\n\treturn pact;\n}\n\n// Asynchronously iterate through an object's properties (including properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forIn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tkeys.push(key);\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\n// Asynchronously iterate through an object's own properties (excluding properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forOwn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tif (Object.prototype.hasOwnProperty.call(target, key)) {\n\t\t\tkeys.push(key);\n\t\t}\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\nexport const _iteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.iterator || (Symbol.iterator = Symbol(\"Symbol.iterator\"))) : \"@@iterator\";\n\n// Asynchronously iterate through an object's values\n// Uses for...of if the runtime supports it, otherwise iterates until length on a copy\nexport function _forOf(target, body, check) {\n\tif (typeof target[_iteratorSymbol] === \"function\") {\n\t\tvar iterator = target[_iteratorSymbol](), step, pact, reject;\n\t\tfunction _cycle(result) {\n\t\t\ttry {\n\t\t\t\twhile (!(step = iterator.next()).done && (!check || !check())) {\n\t\t\t\t\tresult = body(step.value);\n\t\t\t\t\tif (result && result.then) {\n\t\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (pact) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t} else {\n\t\t\t\t\tpact = result;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t\t}\n\t\t}\n\t\t_cycle();\n\t\tif (iterator.return) {\n\t\t\tvar _fixup = function(value) {\n\t\t\t\ttry {\n\t\t\t\t\tif (!step.done) {\n\t\t\t\t\t\titerator.return();\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\t\t\tif (pact && pact.then) {\n\t\t\t\treturn pact.then(_fixup, function(e) {\n\t\t\t\t\tthrow _fixup(e);\n\t\t\t\t});\n\t\t\t}\n\t\t\t_fixup();\n\t\t}\n\t\treturn pact;\n\t}\n\t// No support for Symbol.iterator\n\tif (!(\"length\" in target)) {\n\t\tthrow new TypeError(\"Object is not iterable\");\n\t}\n\t// Handle live collections properly\n\tvar values = [];\n\tfor (var i = 0; i < target.length; i++) {\n\t\tvalues.push(target[i]);\n\t}\n\treturn _forTo(values, function(i) { return body(values[i]); }, check);\n}\n\nexport const _asyncIteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.asyncIterator || (Symbol.asyncIterator = Symbol(\"Symbol.asyncIterator\"))) : \"@@asyncIterator\";\n\n// Asynchronously iterate on a value using it's async iterator if present, or its synchronous iterator if missing\nexport function _forAwaitOf(target, body, check) {\n\tif (typeof target[_asyncIteratorSymbol] === \"function\") {\n\t\tvar pact = new _Pact();\n\t\tvar iterator = target[_asyncIteratorSymbol]();\n\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\treturn pact;\n\t\tfunction _resumeAfterBody(result) {\n\t\t\tif (check && check()) {\n\t\t\t\treturn _settle(pact, 1, iterator.return ? iterator.return().then(function() { return result; }) : result);\n\t\t\t}\n\t\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\t}\n\t\tfunction _resumeAfterNext(step) {\n\t\t\tif (step.done) {\n\t\t\t\t_settle(pact, 1);\n\t\t\t} else {\n\t\t\t\tPromise.resolve(body(step.value)).then(_resumeAfterBody).then(void 0, _reject);\n\t\t\t}\n\t\t}\n\t\tfunction _reject(error) {\n\t\t\t_settle(pact, 2, iterator.return ? iterator.return().then(function() { return error; }) : error);\n\t\t}\n\t}\n\treturn Promise.resolve(_forOf(target, function(value) { return Promise.resolve(value).then(body); }, check));\n}\n\n// Asynchronously implement a generic for loop\nexport function _for(test, update, body) {\n\tvar stage;\n\tfor (;;) {\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t\tif (shouldContinue.then) {\n\t\t\tstage = 0;\n\t\t\tbreak;\n\t\t}\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.s;\n\t\t\t} else {\n\t\t\t\tstage = 1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (update) {\n\t\t\tvar updateValue = update();\n\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\tstage = 2;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tvar pact = new _Pact();\n\tvar reject = _settle.bind(null, pact, 2);\n\t(stage === 0 ? shouldContinue.then(_resumeAfterTest) : stage === 1 ? result.then(_resumeAfterBody) : updateValue.then(_resumeAfterUpdate)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tdo {\n\t\t\tif (update) {\n\t\t\t\tupdateValue = update();\n\t\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\t\tupdateValue.then(_resumeAfterUpdate).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tshouldContinue = test();\n\t\t\tif (!shouldContinue || (_isSettledPact(shouldContinue) && !shouldContinue.v)) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t}\n\t\t} while (!result || !result.then);\n\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterBody(result);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n\tfunction _resumeAfterUpdate() {\n\t\tif (shouldContinue = test()) {\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterTest(shouldContinue);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a do ... while loop\nexport function _do(body, test) {\n\tvar awaitBody;\n\tdo {\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t} else {\n\t\t\t\tawaitBody = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t} while (!shouldContinue.then);\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : shouldContinue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tfor (;;) {\n\t\t\tshouldContinue = test();\n\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t}\n\t\t\tif (!shouldContinue) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\tresult = result.v;\n\t\t\t\t} else {\n\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tdo {\n\t\t\t\tresult = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tshouldContinue = test();\n\t\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t\t}\n\t\t\t\tif (!shouldContinue) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} while (!shouldContinue.then);\n\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a switch statement\nexport function _switch(discriminant, cases) {\n\tvar dispatchIndex = -1;\n\tvar awaitBody;\n\touter: {\n\t\tfor (var i = 0; i < cases.length; i++) {\n\t\t\tvar test = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvar testValue = test();\n\t\t\t\tif (testValue && testValue.then) {\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tif (testValue === discriminant) {\n\t\t\t\t\tdispatchIndex = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Found the default case, set it as the pending dispatch case\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tif (dispatchIndex !== -1) {\n\t\t\tdo {\n\t\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\t\twhile (!body) {\n\t\t\t\t\tdispatchIndex++;\n\t\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t\t}\n\t\t\t\tvar result = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tawaitBody = true;\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\t\tdispatchIndex++;\n\t\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t\treturn result;\n\t\t}\n\t}\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : testValue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterTest(value) {\n\t\tfor (;;) {\n\t\t\tif (value === discriminant) {\n\t\t\t\tdispatchIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (++i === cases.length) {\n\t\t\t\tif (dispatchIndex !== -1) {\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttest = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvalue = test();\n\t\t\t\tif (value && value.then) {\n\t\t\t\t\tvalue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tdo {\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tvar result = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tdispatchIndex++;\n\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterBody(result) {\n\t\tfor (;;) {\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tif (!fallthroughCheck || fallthroughCheck()) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdispatchIndex++;\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _call(body, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(body()) : body();\n\t}\n\ttry {\n\t\tvar result = Promise.resolve(body());\n\t\treturn then ? result.then(then) : result;\n\t} catch (e) {\n\t\treturn Promise.reject(e);\n\t}\n}\n\n// Asynchronously call a function and swallow the result\nexport function _callIgnored(body, direct) {\n\treturn _call(body, _empty, direct);\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _invoke(body, then) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(then);\n\t}\n\treturn then(result);\n}\n\n// Asynchronously call a function and swallow the result\nexport function _invokeIgnored(body) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(_empty);\n\t}\n}\n\n// Asynchronously call a function and send errors to recovery continuation\nexport function _catch(body, recover) {\n\ttry {\n\t\tvar result = body();\n\t} catch(e) {\n\t\treturn recover(e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(void 0, recover);\n\t}\n\treturn result;\n}\n\n// Asynchronously await a promise and pass the result to a finally continuation\nexport function _finallyRethrows(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer(true, e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer.bind(null, false), finalizer.bind(null, true));\n\t}\n\treturn finalizer(false, result);\n}\n\n// Asynchronously await a promise and invoke a finally continuation that always overrides the result\nexport function _finally(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer();\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer, finalizer);\n\t}\n\treturn finalizer();\n}\n\n// Rethrow or return a value from a finally continuation\nexport function _rethrow(thrown, value) {\n\tif (thrown)\n\t\tthrow value;\n\treturn value;\n}\n\n// Empty function to implement break and other control flow that ignores asynchronous results\nexport function _empty() {\n}\n\n// Sentinel value for early returns in generators \nexport const _earlyReturn = /*#__PURE__*/ {};\n\n// Asynchronously call a function and send errors to recovery continuation, skipping early returns\nexport function _catchInGenerator(body, recover) {\n\treturn _catch(body, function(e) {\n\t\tif (e === _earlyReturn) {\n\t\t\tthrow e;\n\t\t}\n\t\treturn recover(e);\n\t});\n}\n\n// Asynchronous generator class; accepts the entrypoint of the generator, to which it passes itself when the generator should start\nexport const _AsyncGenerator = /*#__PURE__*/(function() {\n\tfunction _AsyncGenerator(entry) {\n\t\tthis._entry = entry;\n\t\tthis._pact = null;\n\t\tthis._resolve = null;\n\t\tthis._return = null;\n\t\tthis._promise = null;\n\t}\n\n\tfunction _wrapReturnedValue(value) {\n\t\treturn { value: value, done: true };\n\t}\n\tfunction _wrapYieldedValue(value) {\n\t\treturn { value: value, done: false };\n\t}\n\n\t_AsyncGenerator.prototype._yield = function(value) {\n\t\t// Yield the value to the pending next call\n\t\tthis._resolve(value && value.then ? value.then(_wrapYieldedValue) : _wrapYieldedValue(value));\n\t\t// Return a pact for an upcoming next/return/throw call\n\t\treturn this._pact = new _Pact();\n\t};\n\t_AsyncGenerator.prototype.next = function(value) {\n\t\t// Advance the generator, starting it if it has yet to be started\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tconst _entry = _this._entry;\n\t\t\t\tif (_entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the next call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Start the generator\n\t\t\t\t_this._entry = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\tfunction returnValue(value) {\n\t\t\t\t\t_this._resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t_this._resolve = null;\n\t\t\t\t}\n\t\t\t\tvar result = _entry(_this);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tresult.then(returnValue, function(error) {\n\t\t\t\t\t\tif (error === _earlyReturn) {\n\t\t\t\t\t\t\treturnValue(_this._return);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst pact = new _Pact();\n\t\t\t\t\t\t\t_this._resolve(pact);\n\t\t\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t\t\t_this._resolve = null;\n\t\t\t\t\t\t\t_resolve(pact, 2, error);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturnValue(result);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Generator is started and a yield expression is pending, settle it\n\t\t\t\t_this._pact = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\t_settle(_pact, 1, value);\n\t\t\t}\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.return = function(value) {\n\t\t// Early return from the generator if started, otherwise abandons the generator\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the return call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return the specified value\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t}\n\t\t\t// Settle the yield expression with a rejected \"early return\" value\n\t\t\t_this._return = value;\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, _earlyReturn);\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.throw = function(error) {\n\t\t// Inject an exception into the pending yield expression\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve, reject) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the throw call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return a rejected Promise containing the error\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn reject(error);\n\t\t\t}\n\t\t\t// Settle the yield expression with the value as a rejection\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, error);\n\t\t});\n\t};\n\n\t_AsyncGenerator.prototype[_asyncIteratorSymbol] = function() {\n\t\treturn this;\n\t};\n\t\n\treturn _AsyncGenerator;\n})();\n","import { TOKEN_PROGRAM_ID, ASSOCIATED_TOKEN_PROGRAM_ID } from '@solana/spl-token'\r\nimport { PublicKey, TransactionInstruction, SystemProgram, SYSVAR_RENT_PUBKEY } from '@solana/web3.js'\r\n\r\nexport function createAssociatedTokenAccountInstruction(\r\n payer: PublicKey,\r\n associatedToken: PublicKey,\r\n owner: PublicKey,\r\n mint: PublicKey,\r\n programId = TOKEN_PROGRAM_ID,\r\n associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID\r\n): TransactionInstruction {\r\n const keys = [\r\n { pubkey: payer, isSigner: true, isWritable: true },\r\n { pubkey: associatedToken, isSigner: false, isWritable: true },\r\n { pubkey: owner, isSigner: false, isWritable: false },\r\n { pubkey: mint, isSigner: false, isWritable: false },\r\n { pubkey: SystemProgram.programId, isSigner: false, isWritable: false },\r\n { pubkey: programId, isSigner: false, isWritable: false },\r\n { pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false },\r\n ]\r\n\r\n return new TransactionInstruction({\r\n keys,\r\n programId: associatedTokenProgramId,\r\n data: Buffer.alloc(0),\r\n })\r\n}","import { TOKEN_PROGRAM_ID, AccountLayout } from '@solana/spl-token'\r\nimport { Connection, PublicKey, Commitment } from '@solana/web3.js'\r\n\r\nexport enum AccountState {\r\n Uninitialized = 0,\r\n Initialized = 1,\r\n Frozen = 2,\r\n}\r\n\r\nexport async function getAccountInfo(\r\n connection: Connection,\r\n address: PublicKey,\r\n commitment?: Commitment,\r\n programId = TOKEN_PROGRAM_ID\r\n) {\r\n const info = await connection.getAccountInfo(address, commitment)\r\n if (!info) throw new Error('TokenAccountNotFoundError')\r\n if (!info.owner.equals(programId)) throw new Error('TokenInvalidAccountOwnerError')\r\n if (info.data.length != AccountLayout.span) throw new Error('TokenInvalidAccountSizeError')\r\n\r\n const rawAccount = AccountLayout.decode(Buffer.from(info.data))\r\n\r\n return {\r\n address,\r\n mint: rawAccount.mint,\r\n owner: rawAccount.owner,\r\n amount: rawAccount.amount,\r\n delegate: rawAccount.delegateOption ? rawAccount.delegate : null,\r\n delegatedAmount: rawAccount.delegatedAmount,\r\n isInitialized: rawAccount.state !== AccountState.Uninitialized,\r\n isFrozen: rawAccount.state === AccountState.Frozen,\r\n isNative: !!rawAccount.isNativeOption,\r\n rentExemptReserve: rawAccount.isNativeOption ? rawAccount.isNative : null,\r\n closeAuthority: rawAccount.closeAuthorityOption ? rawAccount.closeAuthority : null,\r\n }\r\n}","import { TOKEN_PROGRAM_ID, ASSOCIATED_TOKEN_PROGRAM_ID } from '@solana/spl-token'\r\nimport { PublicKey } from '@solana/web3.js'\r\n\r\nexport async function getAssociatedTokenAddress(\r\n mint: PublicKey,\r\n owner: PublicKey,\r\n allowOwnerOffCurve = false,\r\n programId = TOKEN_PROGRAM_ID,\r\n associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID\r\n): Promise<PublicKey> {\r\n if (!allowOwnerOffCurve && !PublicKey.isOnCurve(owner.toBuffer())) throw new Error('TokenOwnerOffCurveError')\r\n\r\n const [address] = await PublicKey.findProgramAddress(\r\n [owner.toBuffer(), programId.toBuffer(), mint.toBuffer()],\r\n associatedTokenProgramId\r\n )\r\n\r\n return address\r\n}","import {\r\n TOKEN_PROGRAM_ID,\r\n ASSOCIATED_TOKEN_PROGRAM_ID\r\n} from '@solana/spl-token'\r\n// import { SignerWalletAdapterProps } from '@solana/wallet-adapter-base'\r\nimport { Connection, PublicKey, Commitment, Transaction } from '@solana/web3.js'\r\nimport { createAssociatedTokenAccountInstruction } from './createAssociatedTokenAccountInstruction'\r\nimport { getAccountInfo } from './getAccountInfo'\r\nimport { getAssociatedTokenAddress } from './getAssociatedTokenAddress'\r\n\r\nexport async function getOrCreateAssociatedTokenAccount(\r\n connection: Connection,\r\n payer: PublicKey,\r\n mint: PublicKey,\r\n owner: PublicKey,\r\n signTransaction: /*SignerWalletAdapterProps['signTransaction']*/ any,\r\n allowOwnerOffCurve = false,\r\n commitment?: Commitment,\r\n programId = TOKEN_PROGRAM_ID,\r\n associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID\r\n) {\r\n const associatedToken = await getAssociatedTokenAddress(\r\n mint,\r\n owner,\r\n allowOwnerOffCurve,\r\n programId,\r\n associatedTokenProgramId\r\n )\r\n\r\n // This is the optimal logic, considering TX fee, client-side computation, RPC roundtrips and guaranteed idempotent.\r\n // Sadly we can't do this atomically.\r\n let account\r\n try {\r\n account = await getAccountInfo(\r\n connection,\r\n associatedToken,\r\n commitment,\r\n programId\r\n )\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n } catch (error) {\r\n // TokenAccountNotFoundError can be possible if the associated address has already received some lamports,\r\n // becoming a system account. Assuming program derived addressing is safe, this is the only case for the\r\n // TokenInvalidAccountOwnerError in this code path.\r\n const err = error as { message: string }\r\n if (\r\n err.message === 'TokenAccountNotFoundError' ||\r\n err.message === 'TokenInvalidAccountOwnerError'\r\n ) {\r\n // As this isn't atomic, it's possible others can create associated accounts meanwhile.\r\n try {\r\n const transaction = new Transaction().add(\r\n createAssociatedTokenAccountInstruction(\r\n payer,\r\n associatedToken,\r\n owner,\r\n mint,\r\n programId,\r\n associatedTokenProgramId\r\n )\r\n )\r\n\r\n const blockHash = await connection.getRecentBlockhash()\r\n transaction.feePayer = await payer\r\n transaction.recentBlockhash = await blockHash.blockhash\r\n const signed = await signTransaction(transaction)\r\n\r\n const signature = await connection.sendRawTransaction(\r\n signed.serialize()\r\n )\r\n\r\n await connection.confirmTransaction(signature)\r\n } catch (error) {\r\n // Ignore all errors; for now there is no API-compatible way to selectively ignore the expected\r\n // instruction error if the associated account exists already.\r\n }\r\n\r\n // Now this should always succeed\r\n account = await getAccountInfo(\r\n connection,\r\n associatedToken,\r\n commitment,\r\n programId\r\n )\r\n } else {\r\n throw error\r\n }\r\n }\r\n\r\n if (!account.mint.equals(mint)) throw Error('TokenInvalidMintError')\r\n if (!account.owner.equals(owner)) throw new Error('TokenInvalidOwnerError')\r\n\r\n return account\r\n}\r\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","import { TOKEN_PROGRAM_ID } from '@solana/spl-token'\r\nimport {\r\n AccountMeta,\r\n PublicKey,\r\n Signer,\r\n TransactionInstruction\r\n} from '@solana/web3.js'\r\nimport BN from 'bn.js'\r\n\r\nconst BufferLayout = require('buffer-layout')\r\n\r\nexport enum TokenInstruction {\r\n InitializeMint = 0,\r\n InitializeAccount = 1,\r\n InitializeMultisig = 2,\r\n Transfer = 3,\r\n Approve = 4,\r\n Revoke = 5,\r\n SetAuthority = 6,\r\n MintTo = 7,\r\n Burn = 8,\r\n CloseAccount = 9,\r\n FreezeAccount = 10,\r\n ThawAccount = 11,\r\n TransferChecked = 12,\r\n ApproveChecked = 13,\r\n MintToChecked = 14,\r\n BurnChecked = 15,\r\n InitializeAccount2 = 16,\r\n SyncNative = 17,\r\n InitializeAccount3 = 18,\r\n InitializeMultisig2 = 19,\r\n InitializeMint2 = 20\r\n}\r\n\r\n/**\r\n * Construct a Transfer instruction\r\n *\r\n * @param source Source account\r\n * @param destination Destination account\r\n * @param owner Owner of the source account\r\n * @param amount Number of tokens to transfer\r\n * @param multiSigners Signing accounts if `owner` is a multisig\r\n * @param programId SPL Token program account\r\n *\r\n * @return Instruction to add to a transaction\r\n */\r\nexport function createTransferInstruction(\r\n source: PublicKey,\r\n destination: PublicKey,\r\n owner: PublicKey,\r\n amount: number,\r\n multiSigners: Signer[] = [],\r\n programId = TOKEN_PROGRAM_ID\r\n): TransactionInstruction {\r\n const dataLayout = BufferLayout.struct([\r\n BufferLayout.u8('instruction'),\r\n BufferLayout.blob(8, 'amount')\r\n ])\r\n\r\n const keys = addSigners(\r\n [\r\n { pubkey: source, isSigner: false, isWritable: true },\r\n { pubkey: destination, isSigner: false, isWritable: true }\r\n ],\r\n owner,\r\n multiSigners\r\n )\r\n\r\n const data = Buffer.alloc(dataLayout.span)\r\n dataLayout.encode(\r\n {\r\n instruction: TokenInstruction.Transfer,\r\n amount: new TokenAmount(amount).toBuffer()\r\n },\r\n data\r\n )\r\n\r\n return new TransactionInstruction({ keys, programId, data })\r\n}\r\n\r\nexport function createApproveTransferInstruction(\r\n source: PublicKey,\r\n destination: PublicKey,\r\n owner: PublicKey,\r\n amount: number,\r\n multiSigners: Signer[] = [],\r\n programId = TOKEN_PROGRAM_ID\r\n): TransactionInstruction {\r\n const dataLayout = BufferLayout.struct([\r\n BufferLayout.u8('instruction'),\r\n BufferLayout.blob(8, 'amount')\r\n ])\r\n\r\n const keys = addSigners(\r\n [\r\n { pubkey: source, isSigner: false, isWritable: true },\r\n { pubkey: destination, isSigner: false, isWritable: true }\r\n ],\r\n owner,\r\n multiSigners\r\n )\r\n\r\n const data = Buffer.alloc(dataLayout.span)\r\n dataLayout.encode(\r\n {\r\n instruction: TokenInstruction.Approve,\r\n amount: new TokenAmount(amount).toBuffer()\r\n },\r\n data\r\n )\r\n\r\n return new TransactionInstruction({ keys, programId, data })\r\n}\r\n\r\nexport function addSigners(\r\n keys: AccountMeta[],\r\n ownerOrAuthority: PublicKey,\r\n multiSigners: Signer[]\r\n): AccountMeta[] {\r\n if (multiSigners.length) {\r\n keys.push({ pubkey: ownerOrAuthority, isSigner: false, isWritable: false })\r\n for (const signer of multiSigners) {\r\n keys.push({ pubkey: signer.publicKey, isSigner: true, isWritable: false })\r\n }\r\n } else {\r\n keys.push({ pubkey: ownerOrAuthority, isSigner: true, isWritable: false })\r\n }\r\n return keys\r\n}\r\n\r\nclass TokenAmount extends BN {\r\n /**\r\n * Convert to Buffer representation\r\n */\r\n toBuffer(): Buffer {\r\n const a = super.toArray().reverse()\r\n const b = Buffer.from(a)\r\n if (b.length === 8) {\r\n return b\r\n }\r\n\r\n if (b.length >= 8) {\r\n throw new Error('TokenAmount too large')\r\n }\r\n\r\n const zeroPad = Buffer.alloc(8)\r\n b.copy(zeroPad)\r\n return zeroPad\r\n }\r\n\r\n /**\r\n * Construct a TokenAmount from Buffer representation\r\n */\r\n // static fromBuffer(buffer: Buffer): TokenAmount {\r\n // if (buffer.length !== 8) {\r\n // throw new Error(`Invalid buffer length: ${buffer.length}`)\r\n // }\r\n\r\n // return new BN(\r\n // [...buffer]\r\n // .reverse()\r\n // .map((i) => `00${i.toString(16)}`.slice(-2))\r\n // .join(''),\r\n // 16\r\n // )\r\n // }\r\n}\r\n","import { useCallback, useEffect, useMemo, useState } from 'react'\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { BigNumber } from 'ethers'\r\nimport { Contract } from '@ethersproject/contracts'\r\nimport { parseUnits } from '@ethersproject/units'\r\nimport {\r\n useConnection,\r\n useWallet as useSolanaWallet\r\n} from '@solana/wallet-adapter-react'\r\nimport { useEthereumProvider } from '../contexts/EthereumProviderContext'\r\nimport {\r\n CHAIN_STRING_SOLANA,\r\n COIN_LIST,\r\n getEvmChainId,\r\n getEvmChainString,\r\n getPoolAddress,\r\n isEVMChain\r\n} from '../utils/constants'\r\nimport ERC20ABI from '../utils/ethereum/erc20ABI.json'\r\nimport {\r\n selectAmount,\r\n selectApproving,\r\n selectErrorHandler,\r\n selectOriginNetwork,\r\n selectSplAllowance\r\n} from '../store/selectors'\r\nimport { setApproving, setSplAllowance } from '../store/optionSlice'\r\nimport { getOrCreateAssociatedTokenAccount } from '../utils/solana/getOrCreateAssociatedTokenAccount'\r\nimport { PublicKey, Transaction } from '@solana/web3.js'\r\n// import { SignerWalletAdapterProps } from '@solana/wallet-adapter-base'\r\nimport { TOKEN_PROGRAM_ID } from '@solana/spl-token'\r\nimport { createApproveTransferInstruction } from '../utils/solana/createTransferInstruction'\r\n\r\nexport default function useAllowance() {\r\n const dispatch = useDispatch()\r\n const [allowance, setAllowance] = useState<BigNumber | null>(null)\r\n const [decimals, setDecimals] = useState<number | null>(null)\r\n const { signerAddress, signer, chainId: evmChainId } = useEthereumProvider()\r\n const selectedNetwork = useSelector(selectOriginNetwork)\r\n const errorHandler = useSelector(selectErrorHandler)\r\n const sourceChain = useMemo(() => {\r\n if (selectedNetwork === CHAIN_STRING_SOLANA) return selectedNetwork\r\n if (getEvmChainId(selectedNetwork) !== evmChainId) {\r\n return getEvmChainString(evmChainId as number)\r\n }\r\n\r\n return selectedNetwork\r\n }, [selectedNetwork, evmChainId])\r\n const amount = useSelector(selectAmount)\r\n const isApproving = useSelector(selectApproving)\r\n const splAllowance = useSelector(selectSplAllowance)\r\n const { connection } = useConnection()\r\n const { publicKey, signTransaction } = useSolanaWallet()\r\n const tokenAddress = COIN_LIST['USDK'].address[sourceChain]\r\n const targetAddress = useMemo(\r\n () => getPoolAddress(sourceChain),\r\n [sourceChain]\r\n )\r\n const isApproved = useMemo(() => {\r\n if (!isEVMChain(sourceChain)) return splAllowance >= amount\r\n if (\r\n allowance &&\r\n amount &&\r\n allowance.gte(parseUnits(amount.toString(), decimals as number))\r\n )\r\n return true\r\n return false\r\n }, [decimals, sourceChain, allowance, amount, splAllowance])\r\n\r\n useEffect(() => {\r\n ;(async () => {\r\n try {\r\n if (\r\n !isEVMChain(sourceChain) ||\r\n !tokenAddress ||\r\n !targetAddress ||\r\n !signer ||\r\n !signerAddress\r\n )\r\n return\r\n\r\n const erc20Contract = new Contract(tokenAddress, ERC20ABI.abi, signer)\r\n const decimals = await erc20Contract.decimals()\r\n const userAllowance = await erc20Contract.allowance(\r\n signerAddress,\r\n targetAddress\r\n )\r\n\r\n setDecimals(+decimals)\r\n setAllowance(userAllowance)\r\n } catch (error) {\r\n errorHandler(error)\r\n }\r\n })()\r\n }, [signerAddress, tokenAddress, targetAddress, isApproving, sourceChain])\r\n\r\n const approve = useCallback(async () => {\r\n if (isEVMChain(sourceChain)) {\r\n if (!decimals || !tokenAddress || !signer || !tokenAddress) return\r\n\r\n try {\r\n const erc20Contract = new Contract(tokenAddress, ERC20ABI.abi, signer)\r\n\r\n dispatch(setApproving(true))\r\n const approve = await erc20Contract.approve(\r\n targetAddress,\r\n parseUnits(amount.toString(), decimals)\r\n )\r\n\r\n await approve.wait()\r\n dispatch(setApproving(false))\r\n } catch (error) {\r\n errorHandler(error)\r\n dispatch(setApproving(false))\r\n }\r\n\r\n return\r\n }\r\n\r\n if (!signTransaction) return\r\n\r\n try {\r\n dispatch(setApproving(true))\r\n\r\n const mint = new PublicKey(tokenAddress)\r\n const toPublicKey = new PublicKey(targetAddress as string)\r\n\r\n const fromTokenAccount = await getOrCreateAssociatedTokenAccount(\r\n connection,\r\n publicKey as PublicKey,\r\n mint,\r\n publicKey as PublicKey,\r\n signTransaction /* as SignerWalletAdapterProps['signTransaction']*/\r\n )\r\n\r\n const toTokenAccount = await getOrCreateAssociatedTokenAccount(\r\n connection,\r\n publicKey as PublicKey,\r\n mint,\r\n toPublicKey,\r\n signTransaction /* as SignerWalletAdapterProps['signTransaction']*/\r\n )\r\n\r\n const transaction = new Transaction().add(\r\n createApproveTransferInstruction(\r\n fromTokenAccount.address, // source\r\n toTokenAccount.address, // dest\r\n publicKey as PublicKey,\r\n amount * Math.pow(10, COIN_LIST['USDK'].decimals), // amount * LAMPORTS_PER_SOL,\r\n [],\r\n TOKEN_PROGRAM_ID\r\n )\r\n )\r\n\r\n const blockHash = await connection.getLatestBlockhash()\r\n transaction.feePayer = publicKey as PublicKey\r\n transaction.recentBlockhash = await blockHash.blockhash\r\n const signed = await signTransaction(transaction)\r\n\r\n await connection.sendRawTransaction(signed.serialize())\r\n dispatch(setSplAllowance(amount))\r\n dispatch(setApproving(false))\r\n } catch (e) {\r\n errorHandler(e)\r\n dispatch(setApproving(false))\r\n }\r\n }, [decimals, tokenAddress, signer, amount, targetAddress, signTransaction])\r\n\r\n return useMemo(\r\n () => ({\r\n isApproved,\r\n approve\r\n }),\r\n [isApproved, approve]\r\n )\r\n}\r\n","import { useEffect, useMemo, useState } from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport Web3 from 'web3'\r\nimport { fetchWrapper } from '../helpers/fetch-wrapper'\r\nimport { ModeOptions } from '../interface'\r\nimport {\r\n selectMode,\r\n selectOriginNetwork,\r\n selectTargetNetwork,\r\n selectTransactionOption\r\n} from '../store/selectors'\r\nimport aggregatorV3ABI from '../utils/chainlink/aggregatorV3ABI.json'\r\nimport {\r\n AVAX_USD_PROXY,\r\n CHAIN_STRING_AVALANCHE,\r\n CHAIN_STRING_ETHEREUM,\r\n CHAIN_STRING_POLYGON,\r\n CHAIN_STRING_SOLANA,\r\n DIVERSIFI_NODE_PROVIDER1_QUERY,\r\n ETHEREUM_NODE_PROVIDER,\r\n ETH_USD_PROXY,\r\n MATIC_USD_PROXY,\r\n SOL_USD_PROXY\r\n} from '../utils/constants'\r\nimport useIsWalletReady from './useIsWalletReady'\r\n\r\nasync function getPrice(chainId: string) {\r\n const ETH_Node1 = ETHEREUM_NODE_PROVIDER as string\r\n let addr = SOL_USD_PROXY\r\n if (chainId === CHAIN_STRING_ETHEREUM) addr = ETH_USD_PROXY\r\n if (chainId === CHAIN_STRING_POLYGON) addr = MATIC_USD_PROXY\r\n if (chainId === CHAIN_STRING_AVALANCHE) addr = AVAX_USD_PROXY\r\n\r\n const web3 = new Web3(ETH_Node1)\r\n const contractAbi: any = aggregatorV3ABI.abi\r\n const priceFeed = new web3.eth.Contract(contractAbi, addr)\r\n\r\n const data = await priceFeed.methods.latestRoundData().call()\r\n\r\n return +data.answer / 1e8\r\n}\r\n\r\nfunction getFeeInUSD(chainId: string, gasFee: any, tokenPrice: any) {\r\n const max_gas = 50000\r\n if (chainId === CHAIN_STRING_SOLANA) {\r\n return +gasFee.solana * +tokenPrice.sol\r\n }\r\n if (chainId === CHAIN_STRING_ETHEREUM)\r\n return (+gasFee.ethereum * max_gas * +tokenPrice.eth) / 1e9\r\n if (chainId === CHAIN_STRING_POLYGON)\r\n return (+gasFee.polygon * max_gas * +tokenPrice.matic) / 1e9\r\n if (chainId === 'Avax')\r\n return (+gasFee.avax * max_gas * +tokenPrice.avax) / 1e9\r\n\r\n return 0\r\n}\r\n\r\nexport default function useServiceFee() {\r\n const { walletAddress, isReady } = useIsWalletReady()\r\n const [serviceFee, setServiceFee] = useState<number>(0)\r\n const mode = useSelector(selectMode)\r\n const originNetwork = useSelector(selectOriginNetwork)\r\n const targetNetwork = useSelector(selectTargetNetwork)\r\n const transactionOption = useSelector(selectTransactionOption)\r\n const filterAvax = (str: string) =>\r\n str === CHAIN_STRING_AVALANCHE ? 'Avax' : str\r\n const sourceChain = useMemo(() => filterAvax(originNetwork), [originNetwork])\r\n const targetChain = useMemo(\r\n () =>\r\n filterAvax(\r\n mode === ModeOptions.payment\r\n ? transactionOption?.targetChain || ''\r\n : targetNetwork\r\n ) as string,\r\n [transactionOption, mode, targetNetwork]\r\n )\r\n\r\n const getServiceFee = async () => {\r\n if (!sourceChain || !targetChain || !isReady || !walletAddress) return\r\n let tokenPrice = {\r\n sol: 0,\r\n eth: 0,\r\n matic: 0,\r\n avax: 0\r\n }\r\n\r\n let gasFee = {\r\n solana: 0,\r\n ethereum: 0,\r\n polygon: 0,\r\n avax: 0\r\n }\r\n\r\n try {\r\n const gasFeeData: any = await fetchWrapper.get(\r\n `https://${DIVERSIFI_NODE_PROVIDER1_QUERY}/Diversifi-Technologies/diversifi/diversifi/gas_fee`\r\n )\r\n\r\n gasFeeData.gasFee.forEach((data: any) => {\r\n if (data.chainId === CHAIN_STRING_SOLANA) gasFee.solana = data.fee\r\n if (data.chainId === CHAIN_STRING_ETHEREUM) gasFee.ethereum = data.fee\r\n if (data.chainId === CHAIN_STRING_POLYGON) gasFee.polygon = data.fee\r\n if (data.chainId === 'Avax') gasFee.avax = data.fee\r\n })\r\n\r\n tokenPrice.sol = await getPrice(CHAIN_STRING_SOLANA as string)\r\n tokenPrice.eth = await getPrice(CHAIN_STRING_ETHEREUM as string)\r\n tokenPrice.matic = await getPrice(CHAIN_STRING_POLYGON as string)\r\n tokenPrice.avax = await getPrice('Avax' as string)\r\n\r\n const estimation: any = await fetchWrapper.get(\r\n `https://${DIVERSIFI_NODE_PROVIDER1_QUERY}/Diversifi-Technologies/diversifi/diversifi/estimate_transfer/${sourceChain}/${walletAddress}/${targetChain}/${0x123}/${100}`\r\n )\r\n\r\n const originFee = getFeeInUSD(sourceChain, gasFee, tokenPrice)\r\n const targetFee = getFeeInUSD(targetChain as string, gasFee, tokenPrice)\r\n const fee =\r\n parseFloat(estimation.estimateTransfer.TakerPenalty) +\r\n parseFloat(estimation.estimateTransfer.MakerPenalty) -\r\n parseFloat(estimation.estimateTransfer.TakerBounty) -\r\n parseFloat(estimation.estimateTransfer.MakerBounty) +\r\n parseFloat(estimation.estimateTransfer.NetworkFee) +\r\n originFee +\r\n targetFee\r\n\r\n setServiceFee(fee)\r\n } catch (e) {\r\n console.log(e)\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n getServiceFee()\r\n const timerId = setInterval(() => {\r\n getServiceFee()\r\n }, 5 * 1000)\r\n\r\n return () => {\r\n clearInterval(timerId)\r\n }\r\n\r\n // eslint-disable-next-line\r\n }, [sourceChain, targetChain, isReady, walletAddress])\r\n\r\n return useMemo(\r\n () => ({\r\n serviceFee\r\n }),\r\n [serviceFee]\r\n )\r\n}\r\n","import React, { useEffect, useState } from 'react'\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { CrossIcon, FooterLogo } from '../assets/icons'\r\nimport {\r\n ConfirmDetails,\r\n Dropdown,\r\n NetworkSelect,\r\n PrimaryButton,\r\n SecondaryButton,\r\n WalletButton,\r\n WalletConnectModal\r\n} from './reusable'\r\nimport {\r\n DefaultProps,\r\n FontSizeOptions,\r\n ModeOptions,\r\n ThemeOptions\r\n} from '../interface'\r\nimport SingleForm from './reusable/SingleForm'\r\nimport CoinSelect from './reusable/CoinSelect'\r\n\r\n// store\r\nimport {\r\n setConfirming,\r\n setServiceFee,\r\n // setSubmitted,\r\n setSubmitting,\r\n setTheme\r\n} from '../store/optionSlice'\r\nimport '../index.css'\r\nimport {\r\n selectAmount,\r\n selectApproving,\r\n selectCloseHandler,\r\n selectConfirming,\r\n selectErrorHandler,\r\n selectMode,\r\n selectOriginNetwork,\r\n selectSubmitting,\r\n selectSuccessHandler,\r\n selectTargetAddress,\r\n selectTransactionOption\r\n} from '../store/selectors'\r\nimport useIsWalletReady from '../hooks/useIsWalletReady'\r\nimport useAllowance from '../hooks/useAllowance'\r\n// import { fetchWrapper } from '../helpers/fetch-wrapper'\r\nimport { CHAIN_STRING_AVALANCHE, FEE_PERCENT } from '../utils/constants'\r\nimport useServiceFee from '../hooks/useServiceFee'\r\n\r\nexport const TransferWidget = ({\r\n theme = ThemeOptions.light,\r\n fontSize = FontSizeOptions.medium\r\n}: DefaultProps) => {\r\n const dispatch = useDispatch()\r\n\r\n // State variables for UI\r\n const [menuOpen, setMenuOpen] = useState(false)\r\n const [isWizard, setWizard] = useState(false)\r\n const [formStep, setFormStep] = useState(0)\r\n const [wizardStep, setWizardStep] = useState(0)\r\n\r\n // Hooks for wallet connection, allowance\r\n const { walletAddress, isReady } = useIsWalletReady()\r\n const { isApproved, approve } = useAllowance()\r\n const { serviceFee: fee } = useServiceFee()\r\n\r\n // Redux variables\r\n const mode = useSelector(selectMode)\r\n const amount = useSelector(selectAmount)\r\n const sourceChain = useSelector(selectOriginNetwork)\r\n const targetAddress = useSelector(selectTargetAddress)\r\n const isApproving = useSelector(selectApproving)\r\n const isConfirming = useSelector(selectConfirming)\r\n const errorHandler = useSelector(selectErrorHandler)\r\n const closeHandler = useSelector(selectCloseHandler)\r\n const successHandler = useSelector(selectSuccessHandler)\r\n const isSubmitting = useSelector(selectSubmitting)\r\n const transactionOption = useSelector(selectTransactionOption)\r\n\r\n useEffect(() => {\r\n if (!isReady) {\r\n if (formStep > 0) setFormStep(0)\r\n if (wizardStep > 0) setWizardStep(1)\r\n }\r\n }, [isReady, wizardStep, formStep])\r\n\r\n useEffect(() => {\r\n if (isConfirming) return\r\n dispatch(setServiceFee(fee))\r\n }, [fee, isConfirming])\r\n\r\n const handleSubmit = async () => {\r\n if (!isApproved) {\r\n approve()\r\n return\r\n }\r\n\r\n try {\r\n dispatch(setSubmitting(true))\r\n const params = JSON.stringify({\r\n originAddress: walletAddress,\r\n originChain:\r\n sourceChain === CHAIN_STRING_AVALANCHE ? 'Avax' : sourceChain,\r\n targetAddress: transactionOption?.targetAddress,\r\n targetChain:\r\n transactionOption?.targetChain === CHAIN_STRING_AVALANCHE\r\n ? 'Avax'\r\n : transactionOption?.targetChain,\r\n amount: amount,\r\n fee: amount * FEE_PERCENT + fee\r\n })\r\n\r\n console.log(params)\r\n // await fetchWrapper.post(\r\n // `${process.env.REACT_APP_KIMA_BACKEND_URL}/auth`,\r\n // params\r\n // )\r\n // await fetchWrapper.post(\r\n // `${process.env.REACT_APP_KIMA_BACKEND_URL}/submit`,\r\n // params\r\n // )\r\n\r\n successHandler({\r\n address: walletAddress,\r\n chain: sourceChain === CHAIN_STRING_AVALANCHE ? 'Avax' : sourceChain\r\n })\r\n // dispatch(setSubmitted(true))\r\n dispatch(setSubmitting(false))\r\n } catch (e) {\r\n errorHandler(e)\r\n dispatch(setSubmitting(false))\r\n }\r\n }\r\n\r\n const onNext = () => {\r\n if (isWizard && wizardStep < 4) {\r\n if (wizardStep === 1 && !isReady) return\r\n if (wizardStep === 3) {\r\n if (\r\n fee > 0 &&\r\n (mode === ModeOptions.payment || (targetAddress && amount > 0))\r\n ) {\r\n setWizardStep((step) => step + 1)\r\n dispatch(setConfirming(true))\r\n }\r\n return\r\n }\r\n\r\n if (mode === ModeOptions.payment && wizardStep === 1) setWizardStep(3)\r\n else setWizardStep((step) => step + 1)\r\n }\r\n\r\n if (!isWizard && !formStep) {\r\n if (isReady) {\r\n if (\r\n fee > 0 &&\r\n (mode === ModeOptions.payment || (targetAddress && amount > 0))\r\n ) {\r\n dispatch(setConfirming(true))\r\n setFormStep(1)\r\n }\r\n return\r\n }\r\n }\r\n\r\n if ((isWizard && wizardStep === 4) || (!isWizard && formStep > 0)) {\r\n handleSubmit()\r\n }\r\n }\r\n\r\n const onBack = () => {\r\n if (isWizard && wizardStep > 0) {\r\n if (mode === ModeOptions.payment && wizardStep === 3) setWizardStep(1)\r\n else setWizardStep((step) => step - 1)\r\n dispatch(setConfirming(false))\r\n }\r\n if (!isWizard && formStep > 0) {\r\n setFormStep(0)\r\n dispatch(setConfirming(false))\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n dispatch(setTheme(theme))\r\n }, [theme])\r\n\r\n return (\r\n <div className={`kima-card ${theme} font-${fontSize}`}>\r\n <div className='kima-card-header'>\r\n <div className='topbar'>\r\n <div className='title'>\r\n <h3>\r\n {(isWizard && wizardStep === 3) || (!isWizard && formStep > 0)\r\n ? 'Confirm Transfer Details'\r\n : 'New Transfer'}\r\n </h3>\r\n </div>\r\n <div className='control-buttons'>\r\n <button\r\n className='icon-button'\r\n onClick={() => {\r\n closeHandler()\r\n }}\r\n >\r\n <CrossIcon fill={theme === 'light' ? 'black' : 'white'} />\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div className='kima-card-content' onClick={() => setMenuOpen(false)}>\r\n {isWizard ? (\r\n wizardStep === 0 ? (\r\n <NetworkSelect />\r\n ) : wizardStep === 1 ? (\r\n <div className='connect-wallet-step'>\r\n <p>Connect your wallet</p>\r\n <WalletButton errorBelow={true} />\r\n </div>\r\n ) : wizardStep === 2 ? (\r\n <NetworkSelect type='target' />\r\n ) : wizardStep === 3 ? (\r\n <CoinSelect />\r\n ) : (\r\n <ConfirmDetails />\r\n )\r\n ) : formStep === 0 ? (\r\n <SingleForm />\r\n ) : (\r\n <ConfirmDetails />\r\n )}\r\n </div>\r\n\r\n <div className='kima-card-footer'>\r\n <FooterLogo fill={theme === 'light' ? 'black' : '#C5C5C5'} />\r\n <div\r\n className='menu-button'\r\n onClick={() => setMenuOpen((prev) => !prev)}\r\n >\r\n I need help\r\n <Dropdown\r\n open={menuOpen}\r\n isWizard={isWizard}\r\n toggleWizard={() => setWizard(false)}\r\n />\r\n </div>\r\n <SecondaryButton clickHandler={onBack} theme={theme}>\r\n {(isWizard && wizardStep > 0) || (!isWizard && formStep > 0)\r\n ? 'Back'\r\n : 'Cancel'}\r\n </SecondaryButton>\r\n <PrimaryButton\r\n clickHandler={onNext}\r\n isLoading={isApproving || isSubmitting}\r\n >\r\n {(isWizard && wizardStep === 3) || (!isWizard && formStep === 1)\r\n ? isApproved\r\n ? isSubmitting\r\n ? 'Submitting...'\r\n : 'Submit'\r\n : isApproving\r\n ? 'Approving...'\r\n : 'Approve'\r\n : 'Next'}\r\n </PrimaryButton>\r\n </div>\r\n <WalletConnectModal />\r\n </div>\r\n )\r\n}\r\n","import React, { useEffect } from 'react'\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport {\r\n DefaultProps,\r\n TransactionOption,\r\n FontSizeOptions,\r\n ThemeOptions,\r\n ModeOptions\r\n} from '../interface'\r\n\r\n// store\r\nimport {\r\n setCloseHandler,\r\n setErrorHandler,\r\n setMode,\r\n setTheme,\r\n setFeeDeduct,\r\n setTransactionOption,\r\n setAmount,\r\n setSuccessHandler\r\n} from '../store/optionSlice'\r\nimport '../index.css'\r\nimport { selectSubmitted } from '../store/selectors'\r\nimport { TransactionWidget } from './TransactionWidget'\r\nimport { TransferWidget } from './TransferWidget'\r\n\r\ninterface Props extends DefaultProps {\r\n transactionOption?: TransactionOption\r\n mode: ModeOptions\r\n errorHandler?: (e: any) => void\r\n closeHandler?: (e: any) => void\r\n successHandler?: (e: any) => void\r\n}\r\n\r\nexport const KimaTransactionWidget = ({\r\n theme = ThemeOptions.light,\r\n fontSize = FontSizeOptions.medium,\r\n mode,\r\n transactionOption,\r\n errorHandler = () => void 0,\r\n closeHandler = () => void 0,\r\n successHandler = () => void 0\r\n}: Props) => {\r\n const submitted = useSelector(selectSubmitted)\r\n const dispatch = useDispatch()\r\n\r\n useEffect(() => {\r\n dispatch(setTheme(theme))\r\n if (transactionOption) dispatch(setTransactionOption(transactionOption))\r\n dispatch(setErrorHandler(errorHandler))\r\n dispatch(setCloseHandler(closeHandler))\r\n dispatch(setSuccessHandler(successHandler))\r\n dispatch(setMode(mode))\r\n if (mode === ModeOptions.payment) {\r\n dispatch(setFeeDeduct(false))\r\n dispatch(setAmount(transactionOption?.amount || 0))\r\n }\r\n }, [theme, transactionOption, errorHandler, closeHandler, mode])\r\n\r\n return submitted ? (\r\n <TransactionWidget theme={theme} fontSize={fontSize} />\r\n ) : (\r\n <TransferWidget theme={theme} fontSize={fontSize} />\r\n )\r\n}\r\n","import React from 'react'\r\nimport { store } from './store'\r\nimport { Provider } from 'react-redux'\r\n// import { Adapter } from '@solana/wallet-adapter-base'\r\nimport {\r\n ConnectionProvider,\r\n WalletProvider\r\n} from '@solana/wallet-adapter-react'\r\nimport {\r\n PhantomWalletAdapter,\r\n SolflareWalletAdapter,\r\n SolletWalletAdapter,\r\n CloverWalletAdapter,\r\n Coin98WalletAdapter,\r\n SlopeWalletAdapter,\r\n SolongWalletAdapter,\r\n TorusWalletAdapter,\r\n SolletExtensionWalletAdapter\r\n} from '@solana/wallet-adapter-wallets'\r\nimport { EthereumProvider } from './contexts/EthereumProviderContext'\r\nimport { SOLANA_HOST } from './utils/constants'\r\n\r\nexport {\r\n FontSizeOptions,\r\n ThemeOptions,\r\n SupportNetworks,\r\n CurrencyOptions,\r\n ModeOptions\r\n} from './interface'\r\nexport { KimaTransactionWidget } from './components/KimaTransactionWidget'\r\nexport const KimaProvider = ({ children }: any) => {\r\n const wallets = [\r\n new PhantomWalletAdapter(),\r\n new SolflareWalletAdapter(),\r\n new SolletWalletAdapter(),\r\n new SolletExtensionWalletAdapter(),\r\n new CloverWalletAdapter(),\r\n new Coin98WalletAdapter(),\r\n new SlopeWalletAdapter(),\r\n new SolongWalletAdapter(),\r\n new TorusWalletAdapter()\r\n ]\r\n\r\n return (\r\n <Provider store={store}>\r\n <EthereumProvider>\r\n <ConnectionProvider endpoint={SOLANA_HOST}>\r\n <WalletProvider wallets={wallets} autoConnect>\r\n {children}\r\n </WalletProvider>\r\n </ConnectionProvider>\r\n </EthereumProvider>\r\n </Provider>\r\n )\r\n}\r\n"],"names":["SupportNetworks","FontSizeOptions","ModeOptions","CurrencyOptions","ThemeOptions","initialState","theme","light","mode","bridge","originNetwork","targetNetwork","targetAddress","connectModal","solanaProvider","undefined","submitted","amount","isApproving","isSubmitting","isConfirming","feeDeduct","splAllowance","errorHandler","closeHandler","successHandler","serviceFee","optionSlice","createSlice","name","reducers","setTheme","state","action","payload","setOriginNetwork","setTargetNetwork","setTargetAddress","setConnectModal","setSolanaProvider","setSubmitted","setTransactionOption","transactionOption","setAmount","setApproving","setSubmitting","setSplAllowance","setErrorHandler","setCloseHandler","setSuccessHandler","setServiceFee","setMode","setConfirming","setFeeDeduct","actions","reducer","store","configureStore","option","optionReducer","middleware","getDefaultMiddleware","serializableCheck","selectTheme","selectOriginNetwork","selectTargetNetwork","selectTargetAddress","selectConnectModal","selectSolanaProvider","selectSubmitted","selectTransactionOption","selectAmount","selectApproving","selectSubmitting","selectSplAllowance","selectErrorHandler","selectCloseHandler","selectSuccessHandler","selectServiceFee","selectMode","selectConfirming","selectFeeDeduct","EthereumProviderContext","React","createContext","connect","disconnect","provider","chainId","signer","signerAddress","providerError","EthereumProvider","children","useSelector","useState","setProviderError","setProvider","setChainId","setSigner","setSignerAddress","useCallback","detectEthereumProvider","then","detectedProvider","ethers","providers","Web3Provider","send","getNetwork","network","e","getSigner","getAddress","address","on","BigNumber","from","toNumber","accounts","contextValue","useMemo","Provider","value","useEthereumProvider","useContext","Cross","width","height","fill","rest","viewBox","xmlns","d","Minimize","id","x1","y1","x2","y2","gradientUnits","stopColor","offset","Check","Warning","ArrowRight","Arrow","stroke","strokeWidth","strokeLinecap","strokeLinejoin","Ethereum","x","y","patternContentUnits","href","transform","Solana","style","maskType","maskUnits","cx","cy","r","mask","clipPath","Avalanche","USDC","USDT","ETHEREUM_POOL_ADDRESS","POLYGON_POOL_ADDRESS","AVAX_POOL_ADDRESS","SOLANA_POOL_ADDRESS","SOLANA_USDK_ADDRESS","ETHEREUM_USDK_ADDRESS","POLYGON_USDK_ADDRESS","AVAX_USDK_ADDRESS","networkOptions","icon","EthereumIcon","PolygonIcon","AvalancheIcon","SolanaIcon","getNetworkOption","index","findIndex","item","CLUSTER","SOLANA_HOST","clusterApiUrl","CHAIN_STRING_SOLANA","CHAIN_STRING_ETHEREUM","CHAIN_STRING_POLYGON","CHAIN_STRING_AVALANCHE","getEvmChainId","GOERLI_ETH_NETWORK_CHAIN_ID","POLYGON_NETWORK_CHAIN_ID","AVAX_NETWORK_CHAIN_ID","getEvmChainString","getPoolAddress","isEVMChain","COIN_LIST","USDK","symbol","USDTIcon","decimals","Polygon","USDCIcon","FEE_PERCENT","PAY_AVAILABLE","PAY_CONFIRMED","PAY_PAID","PAY_FAILED","PAY_UNAVAILABLE","PAY_KEYSIGNED","tooltipInfo","ETH_USD_PROXY","AVAX_USD_PROXY","MATIC_USD_PROXY","SOL_USD_PROXY","ETHEREUM_NODE_PROVIDER","DIVERSIFI_NODE_PROVIDER1_QUERY","stepInfo","title","Progressbar","step","errorStep","setFocus","className","map","key","onClick","WarningIcon","CheckIcon","ExternalLink","to","target","rel","NetworkLabel","sourceChain","targetChain","hasError","SourceInfo","TargetInfo","ArrowRightIcon","Loading180Ring","attributeName","type","dur","values","repeatCount","PrimaryButton","clickHandler","isLoading","SecondaryButton","Network","dispatch","useDispatch","filteredNetworks","filter","WalletSelect","selectedProvider","sliderRef","useRef","useWallet","wallets","detected","undetected","wallet","readyState","WalletReadyState","Installed","Loadable","push","NotDetected","useEffect","isDown","startX","scrollLeft","current","addEventListener","classList","add","pageX","offsetLeft","remove","preventDefault","walk","slideLeft","temp","timerId","setInterval","clearInterval","slideRight","ArrowIcon","ref","adapter","src","alt","url","Dropdown","open","isWizard","toggleWizard","version","createWalletStatus","isReady","statusMessage","forceNetworkSwitch","walletAddress","useIsWalletReady","enableNetworkAutoswitch","autoSwitch","solPK","publicKey","evmChainId","hasEthInfo","correctEvmNetwork","hasCorrectEvmNetwork","hexStripZeros","hexlify","toBase58","getShortenedAddress","is0x","addr","startsWith","substring","substr","length","WalletButton","errorBelow","selectedNetwork","disconnectSolana","disconnectEVM","handleClick","CoinDropdown","collapsed","setCollapsed","selectedCoin","prev","formatterInt","Intl","NumberFormat","maximumFractionDigits","formatterFloat","ConfirmDetails","originNetworkOption","targetNetworkIcon","payment","format","WalletConnectModal","select","handleConnect","CrossIcon","justifyContent","marginTop","AddressInput","onChange","CustomCheckbox","text","checked","setCheck","useWidth","window","innerWidth","setWidth","handleResize","removeEventListener","Tooltip","focus","windowWidth","left","opacity","info","fetchWrapper","get","post","requestOptions","method","headers","fetch","handleResponse","body","credentials","response","data","JSON","parse","error","ok","statusText","Promise","reject","status","TransactionWidget","fontSize","medium","setStep","setErrorStep","minimized","setMinimized","percent","setPercent","setSourceChain","setTargetChain","result","transactionData","sort","a","b","console","log","originChain","AnimatedNumber","component","duration","formatValue","n","MinimizeIcon","FooterLogo","SingleForm","originNetworks","targetNetworks","readOnly","CoinSelect","createAssociatedTokenAccountInstruction","payer","associatedToken","owner","mint","programId","associatedTokenProgramId","TOKEN_PROGRAM_ID","ASSOCIATED_TOKEN_PROGRAM_ID","keys","pubkey","isSigner","isWritable","SystemProgram","SYSVAR_RENT_PUBKEY","TransactionInstruction","Buffer","alloc","getAccountInfo","connection","commitment","Error","equals","AccountLayout","span","rawAccount","decode","delegate","delegateOption","delegatedAmount","isInitialized","AccountState","Uninitialized","isFrozen","Frozen","isNative","isNativeOption","rentExemptReserve","closeAuthority","closeAuthorityOption","getAssociatedTokenAddress","allowOwnerOffCurve","PublicKey","isOnCurve","toBuffer","findProgramAddress","getOrCreateAssociatedTokenAccount","signTransaction","account","err","message","transaction","Transaction","getRecentBlockhash","blockHash","feePayer","blockhash","recentBlockhash","signed","sendRawTransaction","serialize","signature","confirmTransaction","this","BufferLayout","require","TokenInstruction","createApproveTransferInstruction","source","destination","multiSigners","dataLayout","struct","u8","blob","addSigners","encode","instruction","Approve","TokenAmount","ownerOrAuthority","toArray","reverse","zeroPad","copy","BN","useAllowance","allowance","setAllowance","setDecimals","useConnection","useSolanaWallet","tokenAddress","isApproved","gte","parseUnits","toString","erc20Contract","Contract","ERC20ABI","abi","userAllowance","approve","toPublicKey","fromTokenAccount","toTokenAccount","Math","pow","getLatestBlockhash","wait","getPrice","ETH_Node1","web3","Web3","contractAbi","aggregatorV3ABI","priceFeed","eth","methods","latestRoundData","call","answer","getFeeInUSD","gasFee","tokenPrice","max_gas","solana","sol","ethereum","polygon","matic","avax","useServiceFee","filterAvax","str","getServiceFee","gasFeeData","forEach","fee","estimation","originFee","targetFee","parseFloat","estimateTransfer","TakerPenalty","MakerPenalty","TakerBounty","MakerBounty","NetworkFee","TransferWidget","menuOpen","setMenuOpen","setWizard","formStep","setFormStep","wizardStep","setWizardStep","handleSubmit","params","stringify","originAddress","chain","onNext","onBack","NetworkSelect","KimaTransactionWidget","KimaProvider","PhantomWalletAdapter","SolflareWalletAdapter","SolletWalletAdapter","SolletExtensionWalletAdapter","CloverWalletAdapter","Coin98WalletAdapter","SlopeWalletAdapter","SolongWalletAdapter","TorusWalletAdapter","ConnectionProvider","endpoint","WalletProvider","autoConnect"],"mappings":"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E,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI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AC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GA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CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACvD,IAAI,GAAG,IAAI,SAAS,CAAC;AACrB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACvD,IAAI,GAAG,IAAI,SAAS,CAAC;AACrB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACvD,IAAI,GAAG,IAAI,SAAS,CAAC;AACrB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACvD,IAAI,GAAG,IAAI,SAAS,CAAC;AACrB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI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"}
|