@kaspacom/swap-sdk 1.1.2 → 1.1.4
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/dist/index.cjs +1 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.global.js +3923 -7638
- package/dist/index.global.js.map +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -0
- package/package.json +5 -5
- package/dist/types/config/networks.d.ts +0 -2
- package/dist/types/controllers/swap-sdk.controller.d.ts +0 -25
- package/dist/types/index.d.ts +0 -14
- package/dist/types/services/swap.service.d.ts +0 -107
- package/dist/types/services/wallet.service.d.ts +0 -20
- package/dist/types/types/index.d.ts +0 -81
package/dist/index.cjs
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/types/index.ts","../src/services/wallet.service.ts","../src/services/swap.service.ts","../src/types/CustomFeePair.ts","../node_modules/jsbi/lib/jsbi.ts","../src/controllers/swap-sdk.controller.ts","../src/config/networks.ts"],"sourcesContent":["// Export types\nexport * from './types';\n\n// Export services\nexport { WalletService } from './services/wallet.service';\nexport { SwapService } from './services/swap.service';\n\n// Export headless controller only\nimport { SwapSdkController } from './controllers/swap-sdk.controller';\nexport { SwapSdkController } from './controllers/swap-sdk.controller';\n\n// Main factory function for easy initialization (headless)\nimport { SwapSdkOptions } from './types';\nimport { NETWORKS } from './config/networks';\nexport { NETWORKS} from './config/networks';\n\nexport { DEFAULT_SETTINGS as DEFAULT_SWAP_SETTINGS } from './controllers/swap-sdk.controller';\n\n/**\n * Create a new headless swap controller\n * @param options Configuration options for the controller\n * @returns SwapSdkController instance\n */\nexport function createKaspaComSwapController(options: SwapSdkOptions): SwapSdkController {\n let resolvedOptions: SwapSdkOptions;\n if ('networkConfig' in options && typeof options.networkConfig === 'string') {\n const networkConfig = NETWORKS[options.networkConfig];\n if (!networkConfig) throw new Error(`Unknown network key: ${options.networkConfig}`);\n resolvedOptions = { ...options, networkConfig };\n } else {\n resolvedOptions = options as SwapSdkOptions;\n }\n \n return new SwapSdkController(resolvedOptions);\n} ","import { Trade } from \"@uniswap/v2-sdk\";\nimport { Currency, TradeType } from \"@uniswap/sdk-core\";\nimport { Eip1193Provider } from \"ethers\";\n\nexport interface Erc20Token {\n address: string;\n symbol: string;\n name: string;\n decimals: number;\n balance?: number;\n rawBalance?: string;\n logoURI?: string;\n}\n\nexport interface SwapSettings {\n maxSlippage: string;\n swapDeadline: number;\n}\n\nexport interface SwapState {\n needsApproval: boolean;\n isApproved: boolean;\n isApproving: boolean;\n isSwapping: boolean;\n error: string | null;\n success: boolean;\n transactionHash: string | null;\n status: string | null;\n expectedAmountOut: string | null;\n isCalculating: boolean;\n}\n\nexport interface SwapSectionData {\n title: string;\n amount: string;\n usdValue: string;\n}\n\nexport interface SwapSdkOptions {\n networkConfig: SwapSdkNetworkConfig | string;\n walletProvider?: Eip1193Provider; // Custom wallet provider (e.g., MetaMask, WalletConnect, etc.)\n partnerKey?: string;\n onChange?: (state: SwapControllerOutput, patch: Partial<SwapControllerOutput>) => Promise<void>;\n}\n\n\n\nexport interface SwapControllerInput {\n fromToken?: Erc20Token | null;\n toToken?: Erc20Token | null;\n amount?: number;\n isOutputAmount?: boolean;\n settings?: Partial<SwapSettings>;\n}\n\nexport enum LoaderStatuses {\n CALCULATING_QUOTE = 1,\n APPROVING = 2,\n SWAPPING = 3,\n}\n\nexport interface ComputedAmounts {\n maxAmountIn?: string,\n minAmountOut?: string,\n amountIn: string,\n amountOut: string,\n amountInRaw: string,\n amountOutRaw: string,\n maxAmountInRaw?: string,\n minAmountOutRaw?: string,\n}\n\nexport interface SwapControllerOutput {\n error?: string;\n txHash?: string;\n approveTxHash?: string;\n tradeInfo?: Trade<Currency, Currency, TradeType.EXACT_INPUT> | Trade<Currency, Currency, TradeType.EXACT_OUTPUT>;\n computed?: ComputedAmounts;\n loader: LoaderStatuses | null;\n} \n\nexport interface SwapSdkNetworkConfig {\n name: string;\n chainId: number;\n rpcUrl: string;\n routerAddress: string;\n factoryAddress: string;\n proxyAddress?: string;\n graphEndpoint: string;\n blockExplorerUrl?: string;\n additionalJsonRpcApiProviderOptionsOptions?: any;\n nativeToken: Erc20Token;\n wrappedToken: Erc20Token;\n}","import { BrowserProvider, JsonRpcProvider, Signer, Eip1193Provider } from 'ethers';\nimport { SwapSdkNetworkConfig } from '../types';\n\nexport class WalletService {\n private networkProvider: JsonRpcProvider;\n private signer: Signer | null = null;\n private address: string | null = null;\n private config: SwapSdkNetworkConfig;\n private injectedProvider?: Eip1193Provider;\n private walletProvider?: BrowserProvider; // injected provider (window.ethereum or similar)\n\n constructor(\n config: SwapSdkNetworkConfig,\n injectedProvider?: Eip1193Provider,\n ) {\n this.config = config;\n this.networkProvider = new JsonRpcProvider(config.rpcUrl, {\n name: config.name,\n chainId: config.chainId,\n }, config.additionalJsonRpcApiProviderOptionsOptions);\n if (injectedProvider) {\n this.connect(this.injectedProvider);\n\n }\n }\n\n async connect(injectedProvider?: Eip1193Provider): Promise<string> {\n if (injectedProvider) {\n this.injectedProvider = injectedProvider;\n this.walletProvider = new BrowserProvider(this.injectedProvider);\n }\n\n if (!this.injectedProvider || !this.walletProvider) {\n throw new Error('Please connect wallet.');\n }\n\n try {\n // Request account access\n const accounts = await this.injectedProvider.request({\n method: 'eth_requestAccounts'\n });\n\n if (accounts.length === 0) {\n throw new Error('No accounts found');\n }\n\n this.address = accounts[0];\n\n // Check if we're on the correct network\n const chainId = await this.injectedProvider.request({\n method: 'eth_chainId'\n });\n const currentChainId = parseInt(chainId, 16);\n if (currentChainId !== this.config.chainId) {\n // Try to switch to the correct network\n try {\n await this.injectedProvider.request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: `0x${this.config.chainId.toString(16)}` }]\n });\n } catch (switchError: any) {\n // If the network doesn't exist, try to add it\n if (switchError.code === 4902) {\n await this.injectedProvider.request({\n method: 'wallet_addEthereumChain',\n params: [{\n chainId: `0x${this.config.chainId.toString(16)}`,\n chainName: this.config.name,\n nativeCurrency: {\n name: 'ETH',\n symbol: 'ETH',\n decimals: 18\n },\n rpcUrls: [this.config.rpcUrl],\n blockExplorerUrls: this.config.blockExplorerUrl ? [this.config.blockExplorerUrl] : []\n }]\n });\n\n await this.injectedProvider.request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: `0x${this.config.chainId.toString(16)}` }]\n });\n } else {\n throw new Error(`Please switch to ${this.config.name} network`);\n }\n }\n }\n // Update injectedProvider and signer\n this.signer = await this.walletProvider.getSigner();\n\n return this.address!;\n } catch (error: any) {\n if (error.code === 4001) {\n throw new Error('User rejected wallet connection');\n }\n throw new Error(`Failed to connect wallet: ${error.message}`);\n }\n }\n\n disconnect(): void {\n this.address = null;\n this.signer = null;\n }\n\n isConnected(): boolean {\n return !!this.address && !!this.signer;\n }\n\n getAddress(): string | null {\n return this.address;\n }\n\n getProvider(): BrowserProvider | JsonRpcProvider | null {\n return this.walletProvider || this.networkProvider;\n }\n\n getSigner(): Signer | null {\n return this.signer;\n }\n\n // Helper method to get current chain ID\n async getCurrentChainId(): Promise<number> {\n if (!this.injectedProvider) {\n throw new Error('No Ethereum wallet detected');\n }\n const chainId = await this.injectedProvider.request({\n method: 'eth_chainId'\n });\n return parseInt(chainId, 16);\n }\n\n // Connect wallet and emit event with address\n async connectWallet(): Promise<string> {\n if (this.injectedProvider) {\n try {\n const accounts = await this.injectedProvider.request({\n method: 'eth_requestAccounts'\n });\n if (accounts.length > 0 && typeof accounts[0] === 'string') {\n const address: string = accounts[0];\n this.address = address;\n return address;\n } else {\n throw new Error('No accounts found');\n }\n } catch (error) {\n console.error('Failed to connect wallet:', error);\n throw error;\n }\n } else {\n throw new Error('No Ethereum wallet detected. Please connect a wallet provider.');\n }\n }\n\n // Disconnect wallet and emit event\n disconnectWallet() {\n this.address = null;\n this.signer = null;\n }\n} ","import { BigNumberish, Contract, Signer, BrowserProvider, JsonRpcProvider, parseUnits, formatUnits, ZeroAddress, ethers, hexlify, ContractTransactionResponse, TransactionResponse } from 'ethers';\nimport { Currency, CurrencyAmount, Percent, Token, TradeType } from '@uniswap/sdk-core';\nimport { Trade, Pair, Route } from '@uniswap/v2-sdk';\nimport { ComputedAmounts, Erc20Token, SwapSdkNetworkConfig, SwapSdkOptions } from '../types';\nimport { CustomFeePair } from '../types/CustomFeePair';\n\nexport const PARTNER_FEE_BPS_DIVISOR = 10_000n;\n\nexport class SwapService {\n private provider: BrowserProvider | JsonRpcProvider;\n private signer: Signer | null = null;\n private routerContract: Contract;\n private factoryContract: Contract;\n private proxyContract?: Contract;\n private wethAddress: string;\n private chainId: number;\n private pairs: Pair[] = [];\n private pairsLoadedPromise: Promise<void>;\n private resolvePairsLoaded: (() => void) | null = null;\n private partnerFeeLoadedPromise: Promise<void>;\n private resolvePartnerFeeLoaded: (() => void) | null = null;\n private partnerFee: bigint = 0n;\n\n private wethToken: Erc20Token | undefined;\n\n\n\n\n constructor(\n provider: BrowserProvider | JsonRpcProvider,\n private config: SwapSdkNetworkConfig,\n private swapOptions: SwapSdkOptions,\n ) {\n this.provider = provider;\n this.wethAddress = config.wrappedToken.address;\n this.chainId = config.chainId;\n\n // Router ABI for swap functions\n const routerAbi = [\n // Swaps (ERC20 <-> ERC20)\n 'function swapExactTokensForTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts)',\n 'function swapTokensForExactTokens(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts)',\n\n // Swaps (ETH <-> ERC20)\n 'function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts)',\n 'function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts)',\n 'function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts)',\n 'function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts)',\n\n // Get Amounts\n 'function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts)',\n 'function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut)',\n 'function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) internal pure returns (uint amountIn)',\n 'function getAmountsIn(address factory, uint amountOut, address[] memory path) internal view returns (uint[] memory amounts)',\n\n // Get WETH\n 'function WETH() external pure returns (address)'\n ];\n\n // Factory ABI for pair operations\n const factoryAbi = [\n 'function getPair(address tokenA, address tokenB) external view returns (address pair)',\n 'function allPairs(uint) external view returns (address pair)',\n 'function allPairsLength() external view returns (uint)'\n ];\n\n const proxyAbi = [\n ...routerAbi,\n \"function partners(bytes32) external view returns (address feeRecipient, uint16 feeBps)\"\n ];\n\n this.routerContract = new Contract(config.routerAddress, routerAbi, provider);\n this.factoryContract = new Contract(config.factoryAddress, factoryAbi, provider);\n\n if (config.proxyAddress) {\n this.proxyContract = new Contract(config.proxyAddress, proxyAbi, provider);\n }\n\n this.pairsLoadedPromise = new Promise((resolve) => {\n this.resolvePairsLoaded = resolve;\n });\n\n this.partnerFeeLoadedPromise = new Promise((resolve) => {\n this.resolvePartnerFeeLoaded = resolve;\n });\n this.loadAllPairsFromGraph();\n this.loadPartnerFee();\n }\n\n // parnter fee is BPS_DIVISOR = 10_000n;\n async loadPartnerFee(): Promise<bigint> {\n if (!this.resolvePairsLoaded) {\n return this.partnerFee;\n }\n if (this.swapOptions.partnerKey && this.proxyContract) {\n const [, fee] = await this.proxyContract?.partners(this.swapOptions.partnerKey);\n this.partnerFee = fee;\n }\n\n\n if (this.resolvePartnerFeeLoaded) {\n this.resolvePartnerFeeLoaded();\n this.resolvePartnerFeeLoaded = null;\n }\n\n return this.partnerFee;\n }\n\n setSigner(signer: Signer): void {\n this.signer = signer;\n // Connect the signer to the router contract for transaction execution\n this.routerContract = this.routerContract.connect(signer) as Contract;\n\n if (this.proxyContract) {\n this.proxyContract = this.proxyContract.connect(signer) as Contract;\n }\n }\n\n /**\n * Rounds a number string to the specified number of decimal places\n * to avoid parseUnits errors with too many decimals\n */\n private roundToDecimals(value: string, decimals: number): string {\n const num = parseFloat(value);\n if (isNaN(num)) {\n return '0';\n }\n return num.toFixed(decimals);\n }\n\n /**\n * Loads all pairs from The Graph and caches them as Uniswap SDK Pair instances.\n * @param graphEndpoint The GraphQL endpoint URL\n */\n public async loadAllPairsFromGraph(): Promise<void> {\n // Query for pairs with token info and reserves\n const query = `{\n pairs(first: 1000) {\n id\n reserve0\n reserve1\n token0 { id symbol name decimals }\n token1 { id symbol name decimals }\n }\n }`;\n try {\n const response = await fetch(this.config.graphEndpoint, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ query })\n });\n if (!response.ok) throw new Error(`Network error: ${response.status}`);\n const { data } = await response.json();\n if (!data || !data.pairs) return;\n const pairs: Pair[] = [];\n for (const pair of data.pairs) {\n pairs.push(\n this.createSDKPair(pair)\n );\n }\n this.pairs = pairs;\n\n // Find the WETH token from the pairs and set wethToken to a new Token instance if found\n const wethPair = data.pairs.find(\n (pair: any) =>\n pair.token0.id.toLowerCase() === this.wethAddress.toLowerCase() ||\n pair.token1.id.toLowerCase() === this.wethAddress.toLowerCase()\n );\n if (wethPair) {\n const tokenData =\n wethPair.token0.id.toLowerCase() === this.wethAddress.toLowerCase()\n ? wethPair.token0\n : wethPair.token1;\n this.wethToken = {\n address: tokenData.id,\n symbol: tokenData.symbol,\n name: tokenData.name,\n decimals: Number(tokenData.decimals),\n }\n } else {\n throw new Error('No weth token found')\n }\n\n if (this.resolvePairsLoaded) {\n this.resolvePairsLoaded();\n this.resolvePairsLoaded = null;\n }\n } catch (error) {\n console.error('Error loading pairs from graph:', error);\n if (this.resolvePairsLoaded) {\n this.resolvePairsLoaded(); // resolve anyway to avoid deadlock\n this.resolvePairsLoaded = null;\n }\n }\n }\n\n public async waitForPairsLoaded(): Promise<void> {\n return await this.pairsLoadedPromise;\n }\n\n public async waitForPartnerFeeLoaded(): Promise<void> {\n return await this.partnerFeeLoadedPromise;\n }\n\n createSDKPair(pair: {\n id: string;\n token0: {\n id: string;\n symbol: string;\n name: string;\n decimals: string | number;\n };\n token1: {\n id: string;\n symbol: string;\n name: string;\n decimals: string | number;\n };\n reserve0?: string;\n reserve1?: string;\n positionValueUsd?: number;\n totalTokens?: number;\n }): Pair {\n const { token0, token1, id, reserve0, reserve1 } = pair;\n\n const sdkToken0 = new Token(\n this.chainId,\n token0.id,\n Number(token0.decimals),\n token0.symbol,\n token0.name,\n );\n\n const sdkToken1 = new Token(\n this.chainId,\n token1.id,\n Number(token1.decimals),\n token1.symbol,\n token1.name,\n );\n\n let reserve0BN: BigNumberish;\n let reserve1BN: BigNumberish;\n\n if (reserve0 && reserve1) {\n reserve0BN = parseUnits(reserve0, Number(token0.decimals));\n reserve1BN = parseUnits(reserve1, Number(token1.decimals));\n } else {\n throw new Error('No reserves data')\n }\n\n const amount0 = CurrencyAmount.fromRawAmount(\n sdkToken0,\n reserve0BN.toString(),\n );\n\n const amount1 = CurrencyAmount.fromRawAmount(\n sdkToken1,\n reserve1BN.toString(),\n );\n\n const sdkPair = new CustomFeePair(amount0, amount1);\n return sdkPair;\n }\n\n /**\n * Returns the cached pairs for use in routing.\n */\n public getPairs(): Pair[] {\n return this.pairs;\n }\n\n /**\n * Finds the best trade path using Uniswap SDK for a given input amount.\n * Returns the best path as an array of addresses, or null if no trade found.\n */\n private async getBestTrade(\n fromToken: Erc20Token,\n toToken: Erc20Token,\n amountInWei: string,\n isOutputAmount?: boolean,\n ): Promise<Trade<Currency, Currency, TradeType.EXACT_INPUT> | Trade<Currency, Currency, TradeType.EXACT_OUTPUT> | null> {\n\n // Create Uniswap SDK Token instances\n const sdkFromToken = new Token(\n this.chainId,\n fromToken.address,\n fromToken.decimals,\n fromToken.symbol,\n fromToken.name,\n );\n\n const sdkToToken = new Token(\n this.chainId,\n toToken.address,\n toToken.decimals,\n toToken.symbol,\n toToken.name,\n );\n\n // Create currency amount\n const currencyAmount = CurrencyAmount.fromRawAmount(\n isOutputAmount ? sdkToToken : sdkFromToken,\n amountInWei,\n );\n await this.waitForPairsLoaded();\n await this.waitForPartnerFeeLoaded();\n\n const pairs = this.getPairs();\n if (!pairs || pairs.length === 0) {\n throw new Error('Pairs not loaded yet. Please wait for initialization.');\n }\n\n const tradeConfig = {\n maxHops: 3,\n maxNumResults: 1,\n };\n\n const trades = isOutputAmount ?\n Trade.bestTradeExactOut(pairs, sdkFromToken, currencyAmount, tradeConfig)\n : Trade.bestTradeExactIn(\n pairs,\n currencyAmount,\n sdkToToken,\n tradeConfig,\n );\n\n if (trades.length > 0) {\n return trades[0];\n } else {\n return null;\n }\n }\n\n private trimTrailingZeros(value: string): string {\n if (!value.includes('.')) return value; // no decimals\n\n // Remove trailing zeros after decimal\n value = value.replace(/\\.?0+$/, '');\n\n return value;\n }\n\n\n /**\n * \n * @param sellToken \n * @param buyToken \n * @param targetAmount \n * @param isOutputAmount true if user input output (How much tokens to receive) and not input (how much tokens to sell)\n * @param slippage \n * @returns \n */\n async calculateTrade(\n sellToken: Erc20Token,\n buyToken: Erc20Token,\n targetAmount: string,\n isOutputAmount: boolean,\n slippage: string,\n ): Promise<{\n trade: Trade<Currency, Currency, TradeType.EXACT_INPUT> | Trade<Currency, Currency, TradeType.EXACT_OUTPUT>,\n computed: ComputedAmounts,\n }> {\n try {\n\n // Round the input amount to avoid parseUnits errors\n const roundedAmountIn = this.roundToDecimals(targetAmount, isOutputAmount ? buyToken.decimals : sellToken.decimals);\n\n let sellAmountWei = parseUnits(\n roundedAmountIn,\n isOutputAmount ? buyToken.decimals : sellToken.decimals,\n );\n\n if (isOutputAmount && this.partnerFee && this.partnerFee > 0n) {\n // For Exact receice - Add partner fee to the final result\n const numerator = sellAmountWei * PARTNER_FEE_BPS_DIVISOR;\n const denominator = PARTNER_FEE_BPS_DIVISOR - this.partnerFee;\n\n // Use ceiling division to avoid rounding down\n sellAmountWei = (numerator + denominator - 1n) / denominator;\n }\n\n const sellTokenForContracts = sellToken.address == ethers.ZeroAddress ? this.wethToken! : sellToken;\n const buyTokenForContracts = buyToken.address == ethers.ZeroAddress ? this.wethToken! : buyToken;\n\n // Get the best path\n const trade = await this.getBestTrade(\n sellTokenForContracts,\n buyTokenForContracts,\n sellAmountWei.toString(),\n isOutputAmount,\n );\n\n if (!trade) {\n throw new Error('No trade path found for the given tokens and amount.');\n }\n\n const amountIn = trade.inputAmount.quotient.toString();\n const amountOut = trade.outputAmount.quotient.toString();\n\n\n // let amountIn = trade.inputAmount.quotient.toString();\n // let amountOut = trade.outputAmount.quotient.toString();\n\n // if (isOutputAmount) {\n // const [aIn] = await this.routerContract.getAmountsIn(sellAmountWei, [sellTokenForContracts.address, buyTokenForContracts.address]);\n // amountIn = String(aIn);\n // } else {\n // const [, aOut] = await this.routerContract.getAmountsOut(sellAmountWei, [sellTokenForContracts.address, buyTokenForContracts.address]);\n // amountOut = String(aOut);\n // }\n\n\n\n\n let amounts: ComputedAmounts = {\n amountIn: formatUnits(amountIn, sellToken.decimals),\n amountOut: isOutputAmount ? this.trimTrailingZeros(roundedAmountIn) : formatUnits(amountOut, buyToken.decimals),\n amountInRaw: amountIn,\n amountOutRaw: amountOut,\n };\n\n const slippagePercent = new Percent(Math.round(parseFloat(slippage) * 100), 10000);\n\n let maxAmountIn, minAmountOut;\n\n if (isOutputAmount) {\n maxAmountIn = trade.maximumAmountIn(slippagePercent).quotient.toString();\n amounts.maxAmountInRaw = maxAmountIn;\n amounts.maxAmountIn = formatUnits(maxAmountIn, sellToken.decimals);\n } else {\n minAmountOut = trade.minimumAmountOut(slippagePercent).quotient.toString();\n amounts.minAmountOutRaw = minAmountOut;\n amounts.minAmountOut = formatUnits(minAmountOut, buyToken.decimals);\n }\n\n if (this.partnerFee && this.partnerFee > 0n) {\n if (!isOutputAmount) {\n // ---- Exact input: remove partner fee from amountOut ----\n const amountOut = BigInt(trade.outputAmount.quotient.toString());\n const amountOutMinusFee = (amountOut * (PARTNER_FEE_BPS_DIVISOR - this.partnerFee)) / PARTNER_FEE_BPS_DIVISOR;\n\n amounts.amountOutRaw = amountOutMinusFee.toString();\n amounts.amountOut = formatUnits(amountOutMinusFee, buyToken.decimals);\n\n if (minAmountOut) {\n const minOut = BigInt(minAmountOut.toString());\n const minOutMinusFee = (minOut * (PARTNER_FEE_BPS_DIVISOR - this.partnerFee)) / PARTNER_FEE_BPS_DIVISOR;\n\n amounts.minAmountOutRaw = minOutMinusFee.toString();\n amounts.minAmountOut = formatUnits(minOutMinusFee, buyToken.decimals);\n }\n }\n }\n\n return {\n trade,\n computed: amounts,\n }\n } catch (error) {\n console.error('Error calculating expected output:', error);\n throw error;\n }\n }\n\n async checkApproval(\n tokenAddress: string,\n amount: string,\n spenderAddress: string\n ): Promise<boolean> {\n try {\n const tokenContract = new Contract(\n tokenAddress,\n ['function allowance(address,address) view returns (uint256)'],\n this.provider\n );\n\n const signerAddress = await this.signer?.getAddress();\n if (!signerAddress) {\n throw new Error('Please connect wallet first');\n }\n\n const allowance = await tokenContract.allowance(signerAddress, spenderAddress);\n const amountWei = parseUnits(amount, 18); // Assuming 18 decimals for approval check\n return allowance >= amountWei;\n } catch (error) {\n console.error('Error checking approval:', error);\n return false;\n }\n }\n\n async isApprovalNeeded(\n fromToken: Erc20Token,\n amountInWei: bigint,\n ): Promise<{\n isApprovalNeeded: boolean,\n tokenContract?: Contract,\n signerAddress?: string,\n allowanceTo?: string\n }> {\n if (!this.signer) {\n throw new Error('Please connect wallet first');\n }\n\n // If fromToken is not native, check allowance and approve if needed\n if (fromToken.address !== ethers.ZeroAddress) {\n const tokenContract = new Contract(\n fromToken.address,\n ['function allowance(address,address) view returns (uint256)', 'function approve(address,uint256) returns (bool)'],\n this.signer\n );\n\n const signerAddress = await this.signer.getAddress();\n\n const allowanceTo = this.config.proxyAddress || this.config.routerAddress;\n const allowance: bigint = await tokenContract.allowance(signerAddress, allowanceTo);\n if (allowance < amountInWei) {\n return {\n isApprovalNeeded: true,\n tokenContract,\n signerAddress,\n allowanceTo,\n };\n }\n }\n\n return {\n isApprovalNeeded: false\n };\n\n }\n\n async approveIfNeedApproval(\n fromToken: Erc20Token,\n amountInWei: bigint,\n ): Promise<ContractTransactionResponse | null> {\n\n const isApprovalNeededInfo = await this.isApprovalNeeded(fromToken, amountInWei);\n\n if (!isApprovalNeededInfo.isApprovalNeeded) {\n return null;\n }\n\n\n return await isApprovalNeededInfo.tokenContract!.approve(isApprovalNeededInfo.allowanceTo, ethers.MaxUint256);\n }\n\n async swapTokens(\n fromToken: Erc20Token,\n toToken: Erc20Token,\n amountInWei: string,\n amountOutWei: string,\n path: string[],\n isOutputAmount: boolean,\n deadline: number,\n ): Promise<TransactionResponse> {\n if (!this.signer) {\n throw new Error('Please connect wallet first');\n }\n\n try {\n // Round the amounts to the appropriate decimal precision to avoid parseUnits errors\n const deadlineTimestamp = Math.floor(Date.now() / 1000) + (deadline * 60);\n\n let tx;\n const signerAddress = await this.signer.getAddress();\n const iface = this.proxyContract ? this.proxyContract.interface : this.routerContract.interface;\n\n let swapData: string;\n\n\n const to = this.config.proxyAddress ? this.config.proxyAddress : signerAddress;\n\n if (isOutputAmount) {\n // Buy mode: user specifies output amount (isOutputAmount === true)\n if (fromToken.address === ethers.ZeroAddress) {\n // ETH -> token (swapETHForExactTokens)\n swapData = iface.encodeFunctionData(\"swapETHForExactTokens\", [\n amountOutWei,\n path,\n to,\n deadlineTimestamp\n ]);\n } else if (toToken.address === ethers.ZeroAddress) {\n // token -> ETH (swapTokensForExactETH)\n swapData = iface.encodeFunctionData(\"swapTokensForExactETH\", [\n amountOutWei,\n amountInWei,\n path,\n to,\n deadlineTimestamp\n ]);\n } else {\n // token -> token (swapTokensForExactTokens)\n swapData = iface.encodeFunctionData(\"swapTokensForExactTokens\", [\n amountOutWei,\n amountInWei,\n path,\n to,\n deadlineTimestamp\n ]);\n }\n } else {\n if (fromToken.address === ethers.ZeroAddress) {\n // ETH -> token\n swapData = iface.encodeFunctionData(\"swapExactETHForTokens\", [\n amountOutWei,\n path,\n to,\n deadlineTimestamp\n ]);\n } else if (toToken.address === ethers.ZeroAddress) {\n // token -> ETH\n swapData = iface.encodeFunctionData(\"swapExactTokensForETH\", [\n amountInWei,\n amountOutWei,\n path,\n to,\n deadlineTimestamp\n ]);\n } else {\n // token -> token\n swapData = iface.encodeFunctionData(\"swapExactTokensForTokens\", [\n amountInWei,\n amountOutWei,\n path,\n to,\n deadlineTimestamp\n ]);\n }\n }\n\n if (this.proxyContract) {\n swapData = hexlify(this.concatSelectorAndParams(ethers.getBytes(swapData), [], \"PERMIT\", this.swapOptions.partnerKey));\n }\n\n tx = await this.signer.sendTransaction({\n to: this.config.proxyAddress || this.config.routerAddress,\n from: signerAddress,\n data: swapData,\n value: fromToken.address === ethers.ZeroAddress ? amountInWei : 0n\n });\n\n\n return tx;\n } catch (error) {\n console.error('Error swapping tokens:', error);\n throw error;\n }\n }\n\n async getPairAddress(tokenA: string, tokenB: string): Promise<string> {\n try {\n return await this.factoryContract.getPair(tokenA, tokenB);\n } catch (error) {\n console.error('Error getting pair address:', error);\n throw error;\n }\n }\n\n async checkLiquidityExists(tokenA: string, tokenB: string): Promise<boolean> {\n try {\n const pairAddress = await this.getPairAddress(tokenA, tokenB);\n return pairAddress !== ZeroAddress;\n } catch (error) {\n console.error('Error checking liquidity:', error);\n return false;\n }\n }\n\n // Uniswap SDK methods for advanced trading\n async createTrade(\n fromToken: Erc20Token,\n toToken: Erc20Token,\n amountIn: string,\n slippageTolerance: number = 0.5\n ): Promise<Trade<Token, Token, TradeType>> {\n try {\n // Create Token instances for Uniswap SDK\n const fromTokenInstance = new Token(\n this.chainId,\n fromToken.address,\n fromToken.decimals,\n fromToken.symbol,\n fromToken.name\n );\n\n const toTokenInstance = new Token(\n this.chainId,\n toToken.address,\n toToken.decimals,\n toToken.symbol,\n toToken.name\n );\n\n // Create currency amount\n const currencyAmount = CurrencyAmount.fromRawAmount(\n fromTokenInstance,\n parseUnits(amountIn, fromToken.decimals).toString()\n );\n\n // Get pair data\n const pairAddress = await this.getPairAddress(fromToken.address, toToken.address);\n if (pairAddress === ZeroAddress) {\n throw new Error('No liquidity pair found');\n }\n\n // Create pair instance\n const pair = new CustomFeePair(\n CurrencyAmount.fromRawAmount(fromTokenInstance, '0'),\n CurrencyAmount.fromRawAmount(toTokenInstance, '0')\n );\n\n // Create route\n const route = new Route([pair], fromTokenInstance, toTokenInstance);\n\n // Create trade\n const trade = new Trade(\n route,\n currencyAmount,\n TradeType.EXACT_INPUT\n );\n\n return trade;\n } catch (error) {\n console.error('Error creating trade:', error);\n throw error;\n }\n }\n\n /**\n * Fetch tokens from the graph endpoint (subgraph)\n * @param graphEndpoint The GraphQL endpoint URL\n * @param search Optional search string for symbol or name\n */\n async getTokensFromGraph(limit: number = 100, search?: string): Promise<Erc20Token[]> {\n const finalLimit = Math.min(limit, 1000);\n const query = `{\n tokens(first: ${finalLimit}, where: {\n ${search ? `or: [\n { symbol_contains_nocase: \\\"${search}\\\" }\n { name_contains_nocase: \\\"${search}\\\" }\n ]` : ''}\n }) {\n id\n symbol\n name\n decimals\n }\n }`;\n try {\n const response = await fetch(this.config.graphEndpoint, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ query })\n });\n if (!response.ok) throw new Error(`Network error: ${response.status}`);\n const { data } = await response.json();\n if (!data || !data.tokens) return [];\n return data.tokens.map((token: any) => ({\n address: token.id,\n symbol: token.symbol,\n name: token.name,\n decimals: Number(token.decimals),\n }));\n } catch (error) {\n console.error('Error fetching tokens from graph:', error);\n return [];\n }\n }\n\n\n\n /**\n * Concatenates bytes: selector, array of bytes (each element is Uint8Array), array length (uint8, 1 byte), marker (bytes16(keccak256(markerString)))\n * @param selectorBytes Uint8Array — function selector (usually 4 bytes)\n * @param arrayOfBytes Uint8Array[] — array of bytes (each element is Uint8Array)\n * @param markerString string — string from which bytes16(keccak256(...)) will be derived\n * @returns Uint8Array — concatenated result\n */\n private concatSelectorAndParams(\n selectorBytes: Uint8Array,\n arrayOfBytes: Uint8Array[],\n markerString: string,\n partnerKey?: string\n ): Uint8Array {\n // Flatten permits/params into single bytes\n const paramsBytes =\n arrayOfBytes.length === 0\n ? new Uint8Array(0)\n : arrayOfBytes.reduce((acc, arr) => {\n const res = new Uint8Array(acc.length + arr.length);\n res.set(acc, 0);\n res.set(arr, acc.length);\n return res;\n });\n\n const arrayLengthByte = new Uint8Array([arrayOfBytes.length & 0xff]);\n\n const markerHash = ethers.keccak256(ethers.toUtf8Bytes(markerString));\n const markerBytes = ethers.getBytes(markerHash).slice(0, 16);\n\n const parts: Uint8Array[] = [\n selectorBytes,\n paramsBytes,\n arrayLengthByte,\n markerBytes,\n ];\n\n if (partnerKey) {\n const partnerKeyBytes = ethers.getBytes(partnerKey); // 32 bytes\n const partnerFlagHash = ethers.keccak256(ethers.toUtf8Bytes(\"PARTNER\"));\n const partnerFlagBytes = ethers.getBytes(partnerFlagHash).slice(0, 16); // 16 bytes\n parts.push(partnerKeyBytes, partnerFlagBytes);\n }\n\n const totalLen = parts.reduce((sum, p) => sum + p.length, 0);\n const out = new Uint8Array(totalLen);\n let offset = 0;\n for (const p of parts) {\n out.set(p, offset);\n offset += p.length;\n }\n return out;\n }\n} ","import { CurrencyAmount, Token } from '@uniswap/sdk-core';\r\nimport { Pair as UniPair } from '@uniswap/v2-sdk';\r\nimport JSBI from 'jsbi';\r\n\r\n\r\nexport class CustomFeePair extends UniPair {\r\n // Override getOutputAmount for 1% fee\r\n getOutputAmount(inputAmount: CurrencyAmount<Token>): [CurrencyAmount<Token>, CustomFeePair] {\r\n const inputReserve = this.reserveOf(inputAmount.currency);\r\n const outputCurrency = this.token0.equals(inputAmount.currency) ? this.token1 : this.token0;\r\n const outputReserve = this.reserveOf(outputCurrency);\r\n\r\n const feeNumerator = JSBI.BigInt(99); // 1% fee\r\n const feeDenominator = JSBI.BigInt(100);\r\n\r\n const inputAmountWithFee = JSBI.divide(JSBI.multiply(inputAmount.quotient, feeNumerator), feeDenominator);\r\n const numerator = JSBI.multiply(inputAmountWithFee, outputReserve.quotient);\r\n const denominator = JSBI.add(inputReserve.quotient, inputAmountWithFee);\r\n\r\n const outputAmount = JSBI.divide(numerator, denominator);\r\n\r\n return [\r\n CurrencyAmount.fromRawAmount(outputCurrency, outputAmount),\r\n this,\r\n ];\r\n }\r\n\r\n // Override getInputAmount for 1% fee\r\n getInputAmount(outputAmount: CurrencyAmount<Token>): [CurrencyAmount<Token>, CustomFeePair] {\r\n const outputReserve = this.reserveOf(outputAmount.currency);\r\n const inputCurrency = this.token0.equals(outputAmount.currency) ? this.token1 : this.token0;\r\n const inputReserve = this.reserveOf(inputCurrency);\r\n\r\n const feeNumerator = JSBI.BigInt(100);\r\n const feeDenominator = JSBI.BigInt(99); // invert to account for 1% fee\r\n\r\n const numerator = JSBI.multiply(JSBI.multiply(inputReserve.quotient, outputAmount.quotient), feeNumerator);\r\n const denominator = JSBI.multiply(JSBI.subtract(outputReserve.quotient, outputAmount.quotient), feeDenominator);\r\n const inputAmount = JSBI.add(JSBI.divide(numerator, denominator), JSBI.BigInt(1));\r\n\r\n return [\r\n CurrencyAmount.fromRawAmount(inputCurrency, inputAmount),\r\n this,\r\n ];\r\n }\r\n}\r\n\r\n",null,"import { WalletService } from '../services/wallet.service';\nimport { SwapService } from '../services/swap.service';\nimport {\n SwapSdkOptions,\n SwapSettings,\n SwapControllerOutput,\n SwapControllerInput,\n LoaderStatuses,\n SwapSdkNetworkConfig,\n} from '../types';\nimport { Eip1193Provider } from 'ethers';\n\nexport const DEFAULT_SETTINGS: SwapSettings = {\n maxSlippage: '0.5',\n swapDeadline: 20,\n}\n\nexport class SwapSdkController {\n private walletService: WalletService | undefined;\n private swapService: SwapService | undefined;\n\n private state: SwapControllerOutput = {\n loader: null,\n };\n\n\n\n private input: SwapControllerInput = {\n fromToken: null,\n toToken: null,\n amount: undefined,\n isOutputAmount: false,\n settings: DEFAULT_SETTINGS,\n };\n\n\n\n private options: SwapSdkOptions;\n\n constructor(options: SwapSdkOptions) {\n this.options = options;\n\n this.initServices();\n }\n\n private initServices(): void {\n this.walletService = new WalletService(\n (this.options.networkConfig as SwapSdkNetworkConfig),\n this.options.walletProvider\n );\n\n this.swapService = new SwapService(\n this.walletService.getProvider()!,\n (this.options.networkConfig as SwapSdkNetworkConfig),\n this.options,\n );\n }\n\n private async setChange(patch: Partial<SwapControllerOutput>): Promise<void> {\n const next: SwapControllerOutput = {\n ...this.state,\n ...patch,\n };\n this.state = next;\n if (typeof this.options.onChange === 'function') {\n await this.options.onChange(next, patch);\n }\n }\n\n async connectWallet(injectedProvider?: Eip1193Provider): Promise<string> {\n const address = await this.walletService!.connect(injectedProvider);\n const signer = this.walletService!.getSigner();\n if (signer) this.swapService!.setSigner(signer);\n return address;\n }\n\n disconnectWallet(): void {\n this.walletService!.disconnect();\n this.swapService!.setSigner(null as any);\n }\n\n getState(): SwapControllerOutput {\n return this.state;\n }\n\n private get settings(): SwapSettings {\n return {\n ...DEFAULT_SETTINGS,\n ...(this.input.settings || {}),\n };\n }\n\n\n async calculateQuoteIfNeeded(): Promise<void> {\n const { fromToken, toToken, amount, isOutputAmount } = this.input;\n if (!fromToken || !toToken || !amount || amount <= 0) {\n return;\n }\n\n // Set loader to calculating\n await this.setChange({ loader: LoaderStatuses.CALCULATING_QUOTE, error: undefined });\n\n try {\n // Use the calculateTrade method which returns both trade and computed amounts\n const tradeResult = await this.swapService!.calculateTrade(\n fromToken,\n toToken,\n String(amount),\n isOutputAmount == true, // isOutputAmount: true for input amount, false for output amount\n this.settings.maxSlippage\n );\n\n await this.setChange({\n computed: tradeResult.computed,\n tradeInfo: tradeResult.trade,\n loader: null,\n });\n } catch (error: any) {\n await this.setChange({ error: error?.message || String(error), loader: null });\n }\n }\n\n async setData(input: Partial<SwapControllerInput>): Promise<SwapControllerOutput> {\n // Merge input and settings\n this.input = {\n ...this.input,\n ...input,\n };\n\n await this.calculateQuoteIfNeeded();\n\n return this.getState();\n }\n\n async isNeedApproval(): Promise<boolean> {\n if (!this.input || !this.walletService!.isConnected() || !this.swapService) throw new Error('Wallet not connected or input missing');\n const { fromToken, amount } = this.input;\n if (!fromToken || amount === undefined || !this.state.computed?.amountInRaw) throw new Error('fromToken or amount missing');\n return (await this.swapService!.isApprovalNeeded(fromToken, BigInt(this.state.computed.amountInRaw))).isApprovalNeeded;\n }\n\n async approveIfNeeded(): Promise<string | undefined> {\n if (!this.input || !this.walletService!.isConnected()) throw new Error('Wallet not connected or input missing');\n const { fromToken, amount } = this.input;\n if (!fromToken || amount === undefined || !this.state.computed?.amountInRaw) throw new Error('fromToken or amount missing');\n\n await this.setChange({ loader: LoaderStatuses.APPROVING });\n\n try {\n const tx = await this.swapService?.approveIfNeedApproval(\n fromToken,\n BigInt(this.state.computed.amountInRaw),\n )\n\n let receipt;\n\n if (tx) {\n await this.setChange({ approveTxHash: tx.hash });\n receipt = await tx.wait();\n\n if (!receipt) {\n throw new Error(\"Receipt not found, Please try again\")\n }\n\n if (receipt.status != 1) {\n throw new Error(\"Transaction Rejected\");\n }\n }\n\n return receipt?.hash;\n } catch (error: any) {\n await this.setChange({ error: error?.message || String(error), loader: null });\n throw error;\n }\n }\n\n async swap(): Promise<string> {\n try {\n await this.setChange({\n txHash: undefined,\n approveTxHash: undefined,\n })\n const { fromToken, toToken, amount } = this.input;\n if (!fromToken || !toToken || amount === undefined) throw new Error('Tokens or amount not set');\n\n await this.approveIfNeeded();\n\n await this.setChange({ loader: LoaderStatuses.SWAPPING });\n\n // Get the trade path from the tradeInfo\n const trade = this.state.tradeInfo;\n if (!trade) throw new Error('Trade info missing - calculate quote first');\n\n // Extract path from the trade route\n const path = trade.route.path.map(token => token.address);\n if (path.length === 0) throw new Error('Trade path missing');\n\n // Use the computed amounts for the swap\n const computed = this.state.computed;\n if (!computed) throw new Error('Computed amounts missing');\n\n const transaction = await this.swapService!.swapTokens(\n fromToken,\n toToken,\n computed.maxAmountInRaw || computed.amountInRaw,\n computed.minAmountOutRaw || computed.amountOutRaw,\n path,\n this.input.isOutputAmount == true,\n this.settings.swapDeadline\n );\n\n\n await this.setChange({ txHash: transaction.hash });\n\n const receipt = await transaction.wait();\n\n if (!receipt) {\n throw new Error(\"Receipt not found, Please try again\")\n }\n\n if (receipt.status != 1) {\n throw new Error(\"Transaction Rejected\");\n }\n\n await this.setChange({\n loader: null,\n });\n\n return receipt.hash;\n } catch (error: any) {\n await this.setChange({ error: error?.message || String(error), loader: null });\n throw error;\n }\n }\n\n async getPartnerFee(): Promise<number> {\n return Number(await this.swapService!.loadPartnerFee()) / 100;\n }\n\n\n async getTokensFromGraph(limit: number = 100, search?: string) {\n if (!this.swapService) {\n throw new Error('Swap Service not exists');\n }\n\n return await this.swapService.getTokensFromGraph(limit, search);\n }\n\n get currentNetworkConfig(): SwapSdkNetworkConfig {\n return this.options.networkConfig as SwapSdkNetworkConfig;\n }\n} ","import { ethers } from \"ethers\";\nimport { SwapSdkNetworkConfig } from \"../types\";\n\nexport const NETWORKS: Record<string, SwapSdkNetworkConfig> = {\n 'kasplex-testnet': {\n name: 'Kasplex Test',\n chainId: 167012,\n rpcUrl: 'https://rpc.kasplextest.xyz',\n routerAddress: '0x81Cc4e7DbC652ec9168Bc2F4435C02d7F315148e',\n factoryAddress: '0x89d5842017ceA7dd18D10EE6c679cE199d2aD99E',\n proxyAddress: '0x5B7e7830851816f8ad968B0e0c336bd50b4860Ad',\n graphEndpoint: 'https://dev-graph-kasplex.kaspa.com/subgraphs/name/kasplex-testnet-new-v2-core',\n blockExplorerUrl: 'https://explorer.testnet.kasplextest.xyz',\n additionalJsonRpcApiProviderOptionsOptions: {\n batchMaxCount: 1,\n batchMaxSize: 1,\n batchStallTime: 0,\n },\n wrappedToken: {\n address: '0xf40178040278E16c8813dB20a84119A605812FB3',\n decimals: 18,\n name: 'Wrapped Kasplex Kaspa',\n symbol: 'WKAS',\n },\n nativeToken: {\n address: ethers.ZeroAddress,\n decimals: 18,\n name: 'Kasplex Kaspa',\n symbol: 'KAS',\n }\n },\n // Add more networks as needed\n}; "],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACuDO,IAAK,iBAAL,kBAAKA,oBAAL;AACL,EAAAA,gCAAA,uBAAoB,KAApB;AACA,EAAAA,gCAAA,eAAY,KAAZ;AACA,EAAAA,gCAAA,cAAW,KAAX;AAHU,SAAAA;AAAA,GAAA;;;ACvDZ,oBAA0E;AAGnE,IAAM,gBAAN,MAAoB;AAAA;AAAA,EAQzB,YACE,QACA,kBACA;AATF,SAAQ,SAAwB;AAChC,SAAQ,UAAyB;AAS/B,SAAK,SAAS;AACd,SAAK,kBAAkB,IAAI,8BAAgB,OAAO,QAAQ;AAAA,MACxD,MAAM,OAAO;AAAA,MACb,SAAS,OAAO;AAAA,IAClB,GAAG,OAAO,0CAA0C;AACpD,QAAI,kBAAkB;AACpB,WAAK,QAAQ,KAAK,gBAAgB;AAAA,IAEpC;AAAA,EACF;AAAA,EAEA,MAAM,QAAQ,kBAAqD;AACjE,QAAI,kBAAkB;AACpB,WAAK,mBAAmB;AACxB,WAAK,iBAAiB,IAAI,8BAAgB,KAAK,gBAAgB;AAAA,IACjE;AAEA,QAAI,CAAC,KAAK,oBAAoB,CAAC,KAAK,gBAAgB;AAClD,YAAM,IAAI,MAAM,wBAAwB;AAAA,IAC1C;AAEA,QAAI;AAEF,YAAM,WAAW,MAAM,KAAK,iBAAiB,QAAQ;AAAA,QACnD,QAAQ;AAAA,MACV,CAAC;AAED,UAAI,SAAS,WAAW,GAAG;AACzB,cAAM,IAAI,MAAM,mBAAmB;AAAA,MACrC;AAEA,WAAK,UAAU,SAAS,CAAC;AAGzB,YAAM,UAAU,MAAM,KAAK,iBAAiB,QAAQ;AAAA,QAClD,QAAQ;AAAA,MACV,CAAC;AACD,YAAM,iBAAiB,SAAS,SAAS,EAAE;AAC3C,UAAI,mBAAmB,KAAK,OAAO,SAAS;AAE1C,YAAI;AACF,gBAAM,KAAK,iBAAiB,QAAQ;AAAA,YAClC,QAAQ;AAAA,YACR,QAAQ,CAAC,EAAE,SAAS,KAAK,KAAK,OAAO,QAAQ,SAAS,EAAE,CAAC,GAAG,CAAC;AAAA,UAC/D,CAAC;AAAA,QACH,SAAS,aAAkB;AAEzB,cAAI,YAAY,SAAS,MAAM;AAC7B,kBAAM,KAAK,iBAAiB,QAAQ;AAAA,cAClC,QAAQ;AAAA,cACR,QAAQ,CAAC;AAAA,gBACP,SAAS,KAAK,KAAK,OAAO,QAAQ,SAAS,EAAE,CAAC;AAAA,gBAC9C,WAAW,KAAK,OAAO;AAAA,gBACvB,gBAAgB;AAAA,kBACd,MAAM;AAAA,kBACN,QAAQ;AAAA,kBACR,UAAU;AAAA,gBACZ;AAAA,gBACA,SAAS,CAAC,KAAK,OAAO,MAAM;AAAA,gBAC5B,mBAAmB,KAAK,OAAO,mBAAmB,CAAC,KAAK,OAAO,gBAAgB,IAAI,CAAC;AAAA,cACtF,CAAC;AAAA,YACH,CAAC;AAED,kBAAM,KAAK,iBAAiB,QAAQ;AAAA,cAClC,QAAQ;AAAA,cACR,QAAQ,CAAC,EAAE,SAAS,KAAK,KAAK,OAAO,QAAQ,SAAS,EAAE,CAAC,GAAG,CAAC;AAAA,YAC/D,CAAC;AAAA,UACH,OAAO;AACL,kBAAM,IAAI,MAAM,oBAAoB,KAAK,OAAO,IAAI,UAAU;AAAA,UAChE;AAAA,QACF;AAAA,MACF;AAEA,WAAK,SAAS,MAAM,KAAK,eAAe,UAAU;AAElD,aAAO,KAAK;AAAA,IACd,SAAS,OAAY;AACnB,UAAI,MAAM,SAAS,MAAM;AACvB,cAAM,IAAI,MAAM,iCAAiC;AAAA,MACnD;AACA,YAAM,IAAI,MAAM,6BAA6B,MAAM,OAAO,EAAE;AAAA,IAC9D;AAAA,EACF;AAAA,EAEA,aAAmB;AACjB,SAAK,UAAU;AACf,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,cAAuB;AACrB,WAAO,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,KAAK;AAAA,EAClC;AAAA,EAEA,aAA4B;AAC1B,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,cAAwD;AACtD,WAAO,KAAK,kBAAkB,KAAK;AAAA,EACrC;AAAA,EAEA,YAA2B;AACzB,WAAO,KAAK;AAAA,EACd;AAAA;AAAA,EAGA,MAAM,oBAAqC;AACzC,QAAI,CAAC,KAAK,kBAAkB;AAC1B,YAAM,IAAI,MAAM,6BAA6B;AAAA,IAC/C;AACA,UAAM,UAAU,MAAM,KAAK,iBAAiB,QAAQ;AAAA,MAClD,QAAQ;AAAA,IACV,CAAC;AACD,WAAO,SAAS,SAAS,EAAE;AAAA,EAC7B;AAAA;AAAA,EAGA,MAAM,gBAAiC;AACrC,QAAI,KAAK,kBAAkB;AACzB,UAAI;AACF,cAAM,WAAW,MAAM,KAAK,iBAAiB,QAAQ;AAAA,UACnD,QAAQ;AAAA,QACV,CAAC;AACD,YAAI,SAAS,SAAS,KAAK,OAAO,SAAS,CAAC,MAAM,UAAU;AAC1D,gBAAM,UAAkB,SAAS,CAAC;AAClC,eAAK,UAAU;AACf,iBAAO;AAAA,QACT,OAAO;AACL,gBAAM,IAAI,MAAM,mBAAmB;AAAA,QACrC;AAAA,MACF,SAAS,OAAO;AACd,gBAAQ,MAAM,6BAA6B,KAAK;AAChD,cAAM;AAAA,MACR;AAAA,IACF,OAAO;AACL,YAAM,IAAI,MAAM,gEAAgE;AAAA,IAClF;AAAA,EACF;AAAA;AAAA,EAGA,mBAAmB;AACjB,SAAK,UAAU;AACf,SAAK,SAAS;AAAA,EAChB;AACF;;;AC/JA,IAAAC,iBAA0L;AAC1L,IAAAC,mBAAoE;AACpE,IAAAC,iBAAmC;;;ACFnC,sBAAsC;AACtC,oBAAgC;;;ACYhC,IAAMC,OAAN,MAAMA,cAAaC,MAAAA;EACjBC,YAAYC,GAAwBC,GAAAA;AAElC,QADA,MAAMD,CAAN,GADkC,KAAA,OAAAC,GAE9BD,IAASH,MAAKK,aAChB,OAAM,IAAIC,WAAW,8BAAf;EAET;EAEY,OAANC,OAAOC,GAAD;AAAA,QAAA,IASoBC,KAAKC,OAAAA,IAA7BC,OAAOC;AARd,QAAmB,YAAf,OAAOJ,GAAkB;AAC3B,UAAY,MAARA,EAAW,QAAOR,MAAKa,OAAL;AACtB,UAAIb,MAAKc,gBAAgBN,CAArB,EAAJ,QACY,IAANA,IACKR,MAAKe,WAAW,CAACP,GAAjB,IAAA,IAEFR,MAAKe,WAAWP,GAAhB,KAAA;AAET,UAAI,CAAC,EAAgBA,CAAhB,KAAwB,EAAWA,CAAX,MAAoBA,EAC/C,OAAM,IAAIF,WAAW,gBAAgBE,IAAhB,6DAAf;AAGR,aAAOR,MAAKgB,aAAaR,CAAlB;IACR;AAAM,QAAmB,YAAf,OAAOA,GAAkB;AAClC,YAAMS,KAASjB,MAAKkB,aAAaV,CAAlB;AACf,UAAe,SAAXS,GACF,OAAM,IAAIE,YAAY,oBAAoBX,IAAM,cAA1C;AAER,aAAOS;IACR;AAAM,QAAmB,aAAf,OAAOT,EAAX,QACD,SAAAA,IACKR,MAAKe,WAAW,GAAhB,KAAA,IAEFf,MAAKa,OAAL;AACF,QAAmB,YAAf,OAAOL,GAAkB;AAClC,UAAIA,EAAIN,gBAAgBF,MAAM,QAAOQ;AACrC,YAAMY,KAAYpB,MAAKqB,cAAcb,CAAnB;AAClB,aAAOR,MAAKO,OAAOa,EAAZ;IACR;AACD,UAAM,IAAIE,UAAU,oBAAoBd,IAAM,cAAxC;EACP;EAEDe,gBAAa;AACX,UAAMN,IAAS,CAAC,SAAD;AACf,eAAWO,KAAS,KAClBP,GAAOQ,MAAMD,KAASA,MAAU,GAAGE,SAAS,EAAvB,IAA6BF,KAAS,IAA3D;AAGF,WADAP,EAAOQ,KAAK,GAAZ,GACOR,EAAOU,KAAK,EAAZ;EACR;EAEQD,SAASE,IAAgB,IAAjB;AACf,QAAY,IAARA,KAAqB,KAARA,EACf,OAAM,IAAItB,WACN,oDADE;AAAN,WAGkB,MAAhB,KAAKH,SAAqB,MACA,MAAzByB,IAASA,IAAQ,KACb5B,MAAK6B,yBAAyB,MAAMD,CAApC,IAEF5B,MAAK8B,kBAAkB,MAAMF,GAA7B,KAAA;EACR;EAIc,OAARG,SAASC,GAAD;AACb,UAAMC,IAAUD,EAAE7B;AAClB,QAAgB,MAAZ8B,EAAe,QAAO;AAC1B,QAAgB,MAAZA,GAAe;AACjB,YAAMC,KAAQF,EAAEG,gBAAgB,CAAlB;AACd,aAAOH,EAAE5B,OAAO,CAAC8B,KAAQA;IAC1B;AAAA,UACKE,IAAOJ,EAAEK,QAAQJ,IAAU,CAApB,GACPK,IAAkBtC,MAAKuC,QAAQH,CAAb,GAClBI,IAAuB,KAAVP,IAAeK;AAClC,QAAiB,OAAbE,EAAmB,QAAOR,EAAE5B,OAAO,YAAT,IAAA;AAAP,QACnBqC,IAAWD,IAAa,GACxBE,IAAeN,GACfO,IAAaV,IAAU;AAC3B,UAAMW,IAAQN,IAAkB;AAChC,QAAIO,IAA0B,OAAVD,IAAgB,IAAIF,KAAgBE;AACxDC,WAAkB;AAClB,UAAMC,IAAwBF,IAAQ;AAAtC,QACIG,IAAwB,MAATH,IAAe,IAAKF,KAAiB,KAAKE,GACzDI,IAAuB,KAAKJ;AAAAA,SACJ,IAAxBE,KAA0C,IAAbH,MAC/BA,KACAD,IAAeV,EAAEK,QAAQM,CAAV,GACfE,KAAiBH,MAAkB,KAAKI,GACxCC,IAAcL,KAAgBI,IAAwB,GACtDE,IAAuBF,IAAwB,IAEnB,IAAvBE,KAAyC,IAAbL,IACjCA,MACAD,IAAeV,EAAEK,QAAQM,CAAV,GAEbI,KAD0B,MAAxBC,IACcN,KAAiBM,IAAuB,KAExCN,MAAkB,KAAKM,GAEzCA,KAAwB;AAE1B,UAAMC,IAAWjD,MAAKkD,iBAAiBlB,GAAGgB,GACtCL,GAAYD,CADC;AAEjB,SAAiB,MAAbO,KAAgC,MAAbA,KAAwC,MAAP,IAAdF,QACxCA,IAAeA,IAAc,MAAO,GAChB,MAAhBA,MAEFF,KAC8B,KAAzBA,MAAiB,OAEpBA,IAAe,GACfJ,KACe,OAAXA,KAEF,QAAOT,EAAE5B,OAAO,YAAT,IAAA;AAKf,UAAM+C,IAAUnB,EAAE5B,OAAF,cAAqB;AAIrC,WAHAqC,IAAYA,IAAW,QAAU,IACjCzC,MAAKoD,qBAAqB,CAA1B,IAA+BD,IAAUV,IAAWI,GACpD7C,MAAKoD,qBAAqB,CAA1B,IAA+BL,GACxB/C,MAAKqD,uBAAuB,CAA5B;EACR;EAIgB,OAAVC,WAAWtB,GAAD;AACf,QAAiB,MAAbA,EAAE7B,OAAc,QAAO6B;AAC3B,UAAMf,IAASe,EAAEuB,OAAF;AAEf,WADAtC,EAAOb,OAAO,CAAC4B,EAAE5B,MACVa;EACR;EAEgB,OAAVuC,WAAWxB,GAAD;AAAA,WACXA,EAAE5B,OAEGJ,MAAKyD,iBAAiBzB,CAAtB,EAAyB0B,OAAzB,IAGF1D,MAAK2D,iBAAiB3B,GAAtB,IAAA;EACR;EAEkB,OAAZ4B,aAAa5B,GAAS6B,GAAV;AACjB,QAAIA,EAAEzD,KACJ,OAAM,IAAIE,WAAW,2BAAf;AAER,QAAiB,MAAbuD,EAAE1D,OACJ,QAAOH,MAAKe,WAAW,GAAhB,KAAA;AAET,QAAiB,MAAbiB,EAAE7B,OAAc,QAAO6B;AAC3B,QAAiB,MAAbA,EAAE7B,UAAiC,MAAjB6B,EAAEK,QAAQ,CAAV,EAAtB,QAEML,EAAE5B,QAA+B,MAAP,IAAfyD,EAAExB,QAAQ,CAAV,KACNrC,MAAKsD,WAAWtB,CAAhB,IAGFA;AAIT,QAAe,IAAX6B,EAAE1D,OAAY,OAAM,IAAIG,WAAW,gBAAf;AACxB,QAAIwD,IAAWD,EAAE1B,gBAAgB,CAAlB;AACf,QAAiB,MAAb2B,EAAgB,QAAO9B;AAC3B,QAAI8B,KAAY9D,MAAK+D,iBACnB,OAAM,IAAIzD,WAAW,gBAAf;AAER,QAAiB,MAAb0B,EAAE7B,UAAiC,MAAjB6B,EAAEK,QAAQ,CAAV,GAAoB;AAAA,YAElC2B,KAAe,KAAuB,IAAjBF,IAAW,KAChC1D,KAAO4B,EAAE5B,QAA4B,MAAP,IAAX0D,IACnB7C,KAAS,IAAIjB,MAAKgE,IAAc5D,EAAvB;AACfa,MAAAA,GAAOgD,mBAAP;AAEA,YAAMC,IAAM,KAAMJ,IAAW;AAE7B,aADA7C,GAAOkD,WAAWH,KAAe,GAAGE,CAApC,GACOjD;IACR;AAAA,QACGA,IAAS,MACTmD,IAAgBpC;AAIpB,SAFuB,MAAP,IAAX8B,OAAqB7C,IAASe,IACnC8B,MAAa,GACO,MAAbA,GAAgBA,MAAa,EAClCM,KAAgBpE,MAAKqE,SAASD,GAAeA,CAA7B,GACO,MAAP,IAAXN,OACY,SAAX7C,IACFA,IAASmD,IAETnD,IAASjB,MAAKqE,SAASpD,GAAQmD,CAAtB;AAKf,WAAOnD;EACR;EAEc,OAARoD,SAASrC,GAAS6B,GAAV;AACb,QAAiB,MAAb7B,EAAE7B,OAAc,QAAO6B;AAC3B,QAAiB,MAAb6B,EAAE1D,OAAc,QAAO0D;AAC3B,QAAIS,IAAetC,EAAE7B,SAAS0D,EAAE1D;AACG,UAA/B6B,EAAEuC,SAAF,IAAeV,EAAEU,SAAF,KACjBD;AAEF,UAAMrD,IAAS,IAAIjB,MAAKsE,GAActC,EAAE5B,SAASyD,EAAEzD,IAApC;AACfa,MAAOgD,mBAAP;AACA,aAASO,IAAI,GAAGA,IAAIxC,EAAE7B,QAAQqE,IAC5BxE,OAAKyE,qBAAqBZ,GAAG7B,EAAEK,QAAQmC,CAAV,GAAcvD,GAAQuD,CAAnD;AAEF,WAAOvD,EAAOyC,OAAP;EACR;EAEY,OAANgB,OAAO1C,GAAS6B,GAAV;AACX,QAAiB,MAAbA,EAAE1D,OAAc,OAAM,IAAIG,WAAW,kBAAf;AAC1B,QAAmC,IAA/BN,MAAK2E,kBAAkB3C,GAAG6B,CAA1B,EAAkC,QAAO7D,MAAKa,OAAL;AAAP,UAChC+D,IAAa5C,EAAE5B,SAASyD,EAAEzD,MAC1ByE,IAAUhB,EAAE1B,gBAAgB,CAAlB;AAChB,QAAI2C;AACJ,QAAiB,MAAbjB,EAAE1D,UAA2B,SAAX0E,GAAmB;AACvC,UAAgB,MAAZA,EACF,QAAOD,MAAe5C,EAAE5B,OAAO4B,IAAIhC,MAAKsD,WAAWtB,CAAhB;AAErC8C,UAAW9E,MAAK+E,mBAAmB/C,GAAG6C,GAAS,IAApC;IACZ,MACCC,KAAW9E,MAAKgF,mBAAmBhD,GAAG6B,GAA3B,MAAA,KAAA;AAGb,WADAiB,EAAS1E,OAAOwE,GACTE,EAASpB,OAAT;EACR;EAEe,OAATuB,UAAUjD,GAAS6B,GAAV;AACd,QAAiB,MAAbA,EAAE1D,OAAc,OAAM,IAAIG,WAAW,kBAAf;AAC1B,QAAmC,IAA/BN,MAAK2E,kBAAkB3C,GAAG6B,CAA1B,EAAkC,QAAO7B;AAC7C,UAAM6C,IAAUhB,EAAE1B,gBAAgB,CAAlB;AAChB,QAAiB,MAAb0B,EAAE1D,UAA2B,SAAX0E,GAAmB;AACvC,UAAgB,MAAZA,EAAe,QAAO7E,MAAKa,OAAL;AAC1B,YAAMqE,KAAiBlF,MAAKmF,mBAAmBnD,GAAG6C,CAA3B;AAFgB,aAGhB,MAAnBK,KAA6BlF,MAAKa,OAAL,IAC1Bb,MAAKe,WAAWmE,IAAgBlD,EAAE5B,IAAlC;IACR;AACD,UAAM6E,IAAYjF,MAAKgF,mBAAmBhD,GAAG6B,GAA3B,OAAA,IAAA;AAElB,WADAoB,EAAU7E,OAAO4B,EAAE5B,MACZ6E,EAAUvB,OAAV;EACR;EAES,OAAH0B,IAAIpD,GAAS6B,GAAV;AACR,UAAMzD,IAAO4B,EAAE5B;AAAf,WACIA,MAASyD,EAAEzD,OAGNJ,MAAKqF,cAAcrD,GAAG6B,GAAGzD,CAAzB,IAI2B,KAAhCJ,MAAK2E,kBAAkB3C,GAAG6B,CAA1B,IACK7D,MAAKsF,cAActD,GAAG6B,GAAGzD,CAAzB,IAEFJ,MAAKsF,cAAczB,GAAG7B,GAAG,CAAC5B,CAA1B;EACR;EAEc,OAARmF,SAASvD,GAAS6B,GAAV;AACb,UAAMzD,IAAO4B,EAAE5B;AAAf,WACIA,MAASyD,EAAEzD,OAOqB,KAAhCJ,MAAK2E,kBAAkB3C,GAAG6B,CAA1B,IACK7D,MAAKsF,cAActD,GAAG6B,GAAGzD,CAAzB,IAEFJ,MAAKsF,cAAczB,GAAG7B,GAAG,CAAC5B,CAA1B,IAPEJ,MAAKqF,cAAcrD,GAAG6B,GAAGzD,CAAzB;EAQV;EAEe,OAAToF,UAAUxD,GAAS6B,GAAV;AAAA,WACG,MAAbA,EAAE1D,UAA6B,MAAb6B,EAAE7B,SAAqB6B,IACzC6B,EAAEzD,OAAaJ,MAAKyF,uBAAuBzD,GAAG6B,CAA/B,IACZ7D,MAAK0F,sBAAsB1D,GAAG6B,CAA9B;EACR;EAEsB,OAAhB8B,iBAAiB3D,GAAS6B,GAAV;AAAA,WACJ,MAAbA,EAAE1D,UAA6B,MAAb6B,EAAE7B,SAAqB6B,IACzC6B,EAAEzD,OAAaJ,MAAK0F,sBAAsB1D,GAAG6B,CAA9B,IACZ7D,MAAKyF,uBAAuBzD,GAAG6B,CAA/B;EACR;EAEwB,OAAlB+B,qBAAkB;AACvB,UAAM,IAAItE,UACN,sDADE;EAEP;EAEc,OAARuE,SAAS7D,GAAS6B,GAAV;AACb,WAAsC,IAA/B7D,MAAK8F,kBAAkB9D,GAAG6B,CAA1B;EACR;EAEqB,OAAfkC,gBAAgB/D,GAAS6B,GAAV;AACpB,WAAuC,KAAhC7D,MAAK8F,kBAAkB9D,GAAG6B,CAA1B;EACR;EAEiB,OAAXmC,YAAYhE,GAAS6B,GAAV;AAChB,WAAsC,IAA/B7D,MAAK8F,kBAAkB9D,GAAG6B,CAA1B;EACR;EAEwB,OAAlBoC,mBAAmBjE,GAAS6B,GAAV;AACvB,WAAuC,KAAhC7D,MAAK8F,kBAAkB9D,GAAG6B,CAA1B;EACR;EAEW,OAALqC,MAAMlE,GAAS6B,GAAV;AACV,QAAI7B,EAAE5B,SAASyD,EAAEzD,KAAM,QAAA;AACvB,QAAI4B,EAAE7B,WAAW0D,EAAE1D,OAAQ,QAAA;AAC3B,aAASqE,IAAI,GAAGA,IAAIxC,EAAE7B,QAAQqE,IAC5B,KAAIxC,EAAEK,QAAQmC,CAAV,MAAiBX,EAAExB,QAAQmC,CAAV,EAAc,QAAA;AAErC,WAAA;EACD;EAEc,OAAR2B,SAASnE,GAAS6B,GAAV;AACb,WAAO,CAAC7D,MAAKkG,MAAMlE,GAAG6B,CAAd;EACT;EAEgB,OAAVuC,WAAWpE,GAAS6B,GAAV;AAAA,QAAA,IAIQpD,KAAK4F;AAH5B,QAAI,CAACrE,EAAE5B,QAAQ,CAACyD,EAAEzD,KAChB,QAAOJ,MAAKsG,cAActE,GAAG6B,CAAtB,EAAyBH,OAAzB;AACF,QAAI1B,EAAE5B,QAAQyD,EAAEzD,MAAM;AAC3B,YAAMkE,IAAe,EAAStC,EAAE7B,QAAQ0D,EAAE1D,MAArB,IAA+B;AAGpD,UAAIc,IAASjB,MAAKyD,iBAAiBzB,GAAGsC,CAAzB;AACb,YAAMiC,IAAKvG,MAAKyD,iBAAiBI,CAAtB;AAEX,aADA5C,IAASjB,MAAKwG,aAAavF,GAAQsF,GAAItF,CAA9B,GACFjB,MAAK2D,iBAAiB1C,GAAtB,MAAoCA,CAApC,EAA4CyC,OAA5C;IACR;AAMD,WAJI1B,EAAE5B,SACJ,CAAC4B,GAAG6B,CAAJ,IAAS,CAACA,GAAG7B,CAAJ,IAGJhC,MAAKyG,iBAAiBzE,GAAGhC,MAAKyD,iBAAiBI,CAAtB,CAAzB,EAAmDH,OAAnD;EACR;EAEgB,OAAVgD,WAAW1E,GAAS6B,GAAV;AAAA,QAAA,IAKQpD,KAAK4F;AAJ5B,QAAI,CAACrE,EAAE5B,QAAQ,CAACyD,EAAEzD,KAChB,QAAOJ,MAAK2G,cAAc3E,GAAG6B,CAAtB,EAAyBH,OAAzB;AACF,QAAI1B,EAAE5B,QAAQyD,EAAEzD,MAAM;AAAA,YAErBkE,KAAe,EAAStC,EAAE7B,QAAQ0D,EAAE1D,MAArB,GACfc,KAASjB,MAAKyD,iBAAiBzB,GAAGsC,EAAzB,GACTiC,IAAKvG,MAAKyD,iBAAiBI,CAAtB;AACX,aAAO7D,MAAK2G,cAAc1F,IAAQsF,GAAItF,EAA/B,EAAuCyC,OAAvC;IACR;AACD,UAAMY,IAAe,EAAStC,EAAE7B,QAAQ0D,EAAE1D,MAArB,IAA+B;AAEhD6B,MAAE5B,SACJ,CAAC4B,GAAG6B,CAAJ,IAAS,CAACA,GAAG7B,CAAJ;AAGX,QAAIf,IAASjB,MAAKyD,iBAAiBI,GAAGS,CAAzB;AAEb,WADArD,IAASjB,MAAK2G,cAAc1F,GAAQe,GAAGf,CAA9B,GACFjB,MAAK2D,iBAAiB1C,GAAtB,MAAoCA,CAApC,EAA4CyC,OAA5C;EACR;EAEe,OAATkD,UAAU5E,GAAS6B,GAAV;AAAA,QAAA,IACOpD,KAAK4F;AAA1B,UAAM/B,IAAe,EAAStC,EAAE7B,QAAQ0D,EAAE1D,MAArB;AACrB,QAAI,CAAC6B,EAAE5B,QAAQ,CAACyD,EAAEzD,KAChB,QAAOJ,MAAKwG,aAAaxE,GAAG6B,CAArB,EAAwBH,OAAxB;AACF,QAAI1B,EAAE5B,QAAQyD,EAAEzD,MAAM;AAG3B,UAAIa,KAASjB,MAAKyD,iBAAiBzB,GAAGsC,CAAzB;AACb,YAAMiC,KAAKvG,MAAKyD,iBAAiBI,CAAtB;AAEX,aADA5C,KAASjB,MAAKsG,cAAcrF,IAAQsF,IAAItF,EAA/B,GACFjB,MAAK2D,iBAAiB1C,IAAtB,MAAoCA,EAApC,EAA4CyC,OAA5C;IACR;AAEG1B,MAAE5B,SACJ,CAAC4B,GAAG6B,CAAJ,IAAS,CAACA,GAAG7B,CAAJ;AAGX,QAAIf,IAASjB,MAAKyD,iBAAiBI,GAAGS,CAAzB;AAEb,WADArD,IAASjB,MAAKyG,iBAAiBxF,GAAQe,GAAGf,CAAjC,GACFjB,MAAK2D,iBAAiB1C,GAAtB,MAAoCA,CAApC,EAA4CyC,OAA5C;EACR;EAEY,OAANmD,OAAOC,GAAW9E,GAAZ;AAAA,QAAA,IAEPvB,KAAKC;AADT,QAAiB,MAAbsB,EAAE7B,OAAc,QAAO6B;AAE3B,QADA8E,IAAI,EAAWA,CAAX,GACI,IAAJA,EACF,OAAM,IAAIxG,WACN,oDADE;AAGR,QAAU,MAANwG,EAAS,QAAO9G,MAAKa,OAAL;AAEpB,QAAIiG,KAAK9G,MAAK+D,iBAAkB,QAAO/B;AACvC,UAAM+E,IAAiC,KAAhBD,IAAI,MAAM;AACjC,QAAI9E,EAAE7B,SAAS4G,EAAc,QAAO/E;AAAP,UACvBgF,IAAWhF,EAAEG,gBAAgB4E,IAAe,CAAjC,GACXE,IAAe,MAAOH,IAAI,KAAK;AACrC,QAAI9E,EAAE7B,WAAW4G,KAAgBC,IAAWC,EAAc,QAAOjF;AAGjE,QAAI,GADYgF,IAAWC,OAAkBA,GAChC,QAAOjH,MAAKkH,kBAAkBJ,GAAG9E,CAA1B;AACpB,QAAI,CAACA,EAAE5B,KAAM,QAAOJ,MAAKmH,+BAA+BL,GAAG9E,GAAvC,IAAA;AACpB,QAAwC,MAAnCgF,IAAYC,IAAe,IAAW;AACzC,eAASzC,IAAIuC,IAAe,GAAQ,KAALvC,GAAQA,IACrC,KAAqB,MAAjBxC,EAAEK,QAAQmC,CAAV,EACF,QAAOxE,MAAKmH,+BAA+BL,GAAG9E,GAAvC,KAAA;AAH8B,aAMrCA,EAAE7B,WAAW4G,KAAgBC,MAAaC,IAAqBjF,IAC5DhC,MAAKkH,kBAAkBJ,GAAG9E,CAA1B;IACR;AACD,WAAOhC,MAAKmH,+BAA+BL,GAAG9E,GAAvC,KAAA;EACR;EAEa,OAAPoF,QAAQN,GAAW9E,GAAZ;AAAA,QAAA,IAERvB,KAAKC;AADT,QAAiB,MAAbsB,EAAE7B,OAAc,QAAO6B;AAE3B,QADA8E,IAAI,EAAWA,CAAX,GACI,IAAJA,EACF,OAAM,IAAIxG,WACN,oDADE;AAGR,QAAU,MAANwG,EAAS,QAAO9G,MAAKa,OAAL;AAEpB,QAAImB,EAAE5B,MAAM;AACV,UAAI0G,IAAI9G,MAAK+D,iBACX,OAAM,IAAIzD,WAAW,gBAAf;AAER,aAAON,MAAKmH,+BAA+BL,GAAG9E,GAAvC,KAAA;IACR;AAED,QAAI8E,KAAK9G,MAAK+D,iBAAkB,QAAO/B;AACvC,UAAM+E,IAAiC,KAAhBD,IAAI,MAAM;AACjC,QAAI9E,EAAE7B,SAAS4G,EAAc,QAAO/E;AACpC,UAAMqF,IAAiBP,IAAI;AAC3B,QAAI9E,EAAE7B,UAAU4G,GAAc;AAC5B,UAAuB,MAAnBM,EAAsB,QAAOrF;AACjC,YAAMgF,KAAWhF,EAAEK,QAAQ0E,IAAe,CAAzB;AACjB,UAAsC,KAAjCC,OAAaK,EAAuB,QAAOrF;IACjD;AAED,WAAOhC,MAAKkH,kBAAkBJ,GAAG9E,CAA1B;EACR;EAIS,OAAHsF,IAAItF,GAAQ6B,GAAT;AAGR,QAFA7B,IAAIhC,MAAKqB,cAAcW,CAAnB,GACJ6B,IAAI7D,MAAKqB,cAAcwC,CAAnB,GACa,YAAb,OAAO7B,EAET,QADiB,YAAb,OAAO6B,MAAgBA,IAAIA,EAAEnC,SAAF,IACxBM,IAAI6B;AAEb,QAAiB,YAAb,OAAOA,EACT,QAAO7B,EAAEN,SAAF,IAAemC;AAIxB,QAFA7B,IAAIhC,MAAKuH,YAAYvF,CAAjB,GACJ6B,IAAI7D,MAAKuH,YAAY1D,CAAjB,GACA7D,MAAKwH,WAAWxF,CAAhB,KAAsBhC,MAAKwH,WAAW3D,CAAhB,EACxB,QAAO7D,MAAKoF,IAAIpD,GAAG6B,CAAZ;AAET,QAAiB,YAAb,OAAO7B,KAA+B,YAAb,OAAO6B,EAClC,QAAO7B,IAAI6B;AAEb,UAAM,IAAIvC,UACN,6DADE;EAEP;EAEQ,OAAFmG,GAAGzF,GAAQ6B,GAAT;AACP,WAAO7D,MAAK0H,UAAU1F,GAAG6B,GAAG,CAArB;EACR;EACQ,OAAF8D,GAAG3F,GAAQ6B,GAAT;AACP,WAAO7D,MAAK0H,UAAU1F,GAAG6B,GAAG,CAArB;EACR;EACQ,OAAF+D,GAAG5F,GAAQ6B,GAAT;AACP,WAAO7D,MAAK0H,UAAU1F,GAAG6B,GAAG,CAArB;EACR;EACQ,OAAFgE,GAAG7F,GAAQ6B,GAAT;AACP,WAAO7D,MAAK0H,UAAU1F,GAAG6B,GAAG,CAArB;EACR;EAEQ,OAAFiE,GAAG9F,GAAQ6B,GAAT;AAAA,eAAA;AAEL,UAAI7D,MAAKwH,WAAWxF,CAAhB,EAAJ,QACMhC,MAAKwH,WAAW3D,CAAhB,IAA2B7D,MAAKkG,MAAMlE,GAAG6B,CAAd,IACxB7D,MAAK8H,GAAGjE,GAAG7B,CAAX;AACF,UAAiB,YAAb,OAAOA,GAAgB;AAChC,YAAIhC,MAAKwH,WAAW3D,CAAhB,EAAoB,QAAO7D,MAAK+H,gBAAgBlE,GAAG7B,CAAxB;AAC/B,YAAiB,YAAb,OAAO6B,EAAgB,QAAO7B,KAAK6B;AACvCA,YAAI7D,MAAKqB,cAAcwC,CAAnB;MACL,WAAuB,YAAb,OAAO7B,GAAgB;AAChC,YAAIhC,MAAKwH,WAAW3D,CAAhB,EAAJ,QACE7B,IAAIhC,MAAKkB,aAAac,CAAlB,GACM,SAANA,KACGhC,MAAKkG,MAAMlE,GAAG6B,CAAd;AAET,YAAiB,YAAb,OAAOA,EAAgB,QAAO7B,KAAK6B;AACvCA,YAAI7D,MAAKqB,cAAcwC,CAAnB;MACL,WAAuB,aAAb,OAAO7B,GAAiB;AACjC,YAAIhC,MAAKwH,WAAW3D,CAAhB,EAAoB,QAAO7D,MAAK+H,gBAAgBlE,GAAG,CAAC7B,CAAzB;AAC/B,YAAiB,YAAb,OAAO6B,EAAgB,QAAO7B,KAAK6B;AACvCA,YAAI7D,MAAKqB,cAAcwC,CAAnB;MACL,WAAuB,YAAb,OAAO7B,GAAgB;AAChC,YAAIhC,MAAKwH,WAAW3D,CAAhB,EAAoB,QAAA;AACxB,YAAiB,YAAb,OAAOA,EAAgB,QAAO7B,KAAK6B;AACvCA,YAAI7D,MAAKqB,cAAcwC,CAAnB;MACL,WAAuB,YAAb,OAAO7B,GAAgB;AAChC,YAAiB,YAAb,OAAO6B,KAAkBA,EAAE3D,gBAAgBF,MAAM,QAAOgC,KAAK6B;AACjE7B,YAAIhC,MAAKqB,cAAcW,CAAnB;MACL,MACC,QAAOA,KAAK6B;IAAAA;EAGjB;EAEQ,OAAFmE,GAAGhG,GAAQ6B,GAAT;AACP,WAAO,CAAC7D,MAAK8H,GAAG9F,GAAG6B,CAAX;EACT;EAIY,OAANhD,SAAM;AACX,WAAO,IAAIb,MAAK,GAAT,KAAA;EACR;EAEgB,OAAVe,WAAWmB,GAAe9B,GAAhB;AACf,UAAMa,IAAS,IAAIjB,MAAK,GAAGI,CAAZ;AAEf,WADAa,EAAOkD,WAAW,GAAGjC,CAArB,GACOjB;EACR;EAEDsC,SAAM;AACJ,UAAMtC,IAAS,IAAIjB,MAAK,KAAKG,QAAQ,KAAKC,IAA3B;AACf,aAASoE,IAAI,GAAGA,IAAI,KAAKrE,QAAQqE,IAC/BvD,GAAOuD,CAAD,IAAM,KAAKA,CAAL;AAEd,WAAOvD;EACR;EAEDyC,SAAM;AAAA,QACAuE,IAAY,KAAK9H,QACjB+H,IAAO,KAAKD,IAAY,CAAjB;AAAA,WACK,MAATC,IACLD,MACAC,IAAO,KAAKD,IAAY,CAAjB,GACP,KAAKE,IAAL;AAGF,WADkB,MAAdF,MAAiB,KAAK7H,OAAL,QACd;EACR;EAED6D,qBAAkB;AAChB,aAASO,IAAI,GAAGA,IAAI,KAAKrE,QAAQqE,IAC/B,MAAKA,CAAL,IAAU;EAEb;EAEsB,OAAhBtB,iBAAiBlB,GAASoG,GAC7BzF,GAAoBD,GADD;AAErB,QAAwB,IAApB0F,EAAuB,QAAO;AAClC,QAAIC;AACJ,QAAwB,IAApBD,EACFC,KAAmB,CAACD,IAAoB;SACnC;AAEL,UAAmB,MAAfzF,EAAkB,QAAO;AAC7BA,WACAD,IAAeV,EAAEK,QAAQM,CAAV,GACf0F,IAAmB;IACpB;AAED,QAAIC,IAAO,KAAKD;AAChB,QAA8B,MAAzB3F,IAAe4F,GAAa,QAAO;AAGxC,QADAA,KAAQ,GACsB,MAAzB5F,IAAe4F,GAAa,QAAO;AAAP,WACb,IAAb3F,IAEL,KADAA,KAC8B,MAA1BX,EAAEK,QAAQM,CAAV,EAA6B,QAAO;AAE1C,WAAO;EACR;EAEkB,OAAZ3B,aAAakB,GAAD;AAEjBlC,UAAKqD,uBAAuB,CAA5B,IAAiCnB;AAAAA,UAC3BqG,IAAsD,OAAvCvI,MAAKoD,qBAAqB,CAA1B,MAAiC,IAChDX,IAAW8F,IAAc,MACzBC,KAA4B,IAAjB/F,IAAW,MAAW,GACjCxB,IAAS,IAAIjB,MAAKwI,GALH,IAARtG,CAKE;AAAA,QAEXW,IAA+C,UAA/B7C,MAAKoD,qBAAqB,CAA1B,IADD,SAEfL,IAAc/C,MAAKoD,qBAAqB,CAA1B;AAAA,UACZqF,IAAsB,IAEtBC,IAAYjG,IAAW;AAAA,QAKzBjB,GAFAmH,IAAwB;AAI5B,QAAID,IAAS,IAAwB;AACnC,YAAM9F,KAAQ6F,IAAsBC;AACpCC,UAAwB/F,KAAQ,IAChCpB,IAAQqB,MAAiBD,IACzBC,IAAgBA,KAAiB,KAAKD,KAAWG,MAAgBH,IACjEG,MAA8B,KAAKH;IACpC,WAAU8F,MAAS,GAClBC,KAAwB,IACxBnH,IAAQqB,GACRA,IAAeE,GACfA,IAAc;SACT;AACL,YAAMH,KAAQ8F,IAAYD;AAC1BE,UAAwB,KAAK/F,IAC7BpB,IAASqB,KAAgBD,KAAUG,MAAiB,KAAKH,IACzDC,IAAeE,KAAeH,IAC9BG,IAAc;IACf;AACD9B,MAAOkD,WAAWqE,IAAS,GAAGhH,CAA9B;AAEA,aAASmB,KAAa6F,IAAS,GAAiB,KAAd7F,IAAiBA,KACrB,KAAxBgG,KACFA,KAAyB,IACzBnH,IAAQqB,MAAiB,GACzBA,IAAgBA,KAAgB,KAAOE,MAAgB,GACvDA,MAA8B,MAE9BvB,IAAQ,GAEVP,EAAOkD,WAAWxB,IAAYnB,CAA9B;AAEF,WAAOP,EAAOyC,OAAP;EACR;EAEoB,OAAdkF,eAAeC,GAAD;AAAA,WAAA,CAAA,EACV,MAALA,KAAkB,KAALA,OACR,OAALA,IAAwB,MAANA,IACb,UAALA,IACW,OAANA,KAAoB,QAANA,IAEd,UAALA,KACFA,KAAK,QACO,MAALA,KAAmB,MAANA,KAAoB,MAANA,KAAoB,MAANA,KACnC,MAANA,KAAoB,QAANA,KAEV,SAANA;EACR;EAEkB,OAAZ3H,aAAa4H,GAAgBlH,IAAe,GAAhC;AACjB,QAAIxB,IAAO;AAEX,UAAMD,IAAS2I,EAAO3I;AACtB,QAAI4I,IAAS;AACb,QAAIA,MAAW5I,EAAQ,QAAOH,MAAKa,OAAL;AAC9B,QAAImI,IAAUF,EAAOG,WAAWF,CAAlB;AAAd,WAEO/I,MAAK4I,eAAeI,CAApB,KAA8B;AACnC,UAAI,EAAED,MAAW5I,EAAQ,QAAOH,MAAKa,OAAL;AAChCmI,UAAUF,EAAOG,WAAWF,CAAlB;IACX;AAGD,QAAgB,OAAZC,GAAkB;AACpB,UAAI,EAAED,MAAW5I,EAAQ,QAAO;AAChC6I,UAAUF,EAAOG,WAAWF,CAAlB,GACV3I,IAAO;IACR,WAAsB,OAAZ4I,GAAkB;AAC3B,UAAI,EAAED,MAAW5I,EAAQ,QAAO;AAChC6I,UAAUF,EAAOG,WAAWF,CAAlB,GACV3I,IAAO;IACR;AAED,QAAc,MAAVwB,GAAJ;AAEE,UADAA,IAAQ,IACQ,OAAZoH,GAAkB;AACpB,YAAI,EAAED,MAAW5I,EAAQ,QAAOH,MAAKa,OAAL;AAEhC,YADAmI,IAAUF,EAAOG,WAAWF,CAAlB,GACM,OAAZC,KAAgC,QAAZA,GAAkB;AAExC,cADApH,IAAQ,IACJ,EAAEmH,MAAW5I,EAAQ,QAAO;AAChC6I,cAAUF,EAAOG,WAAWF,CAAlB;QACX,WAAsB,OAAZC,KAAgC,QAAZA,GAAkB;AAE/C,cADApH,IAAQ,GACJ,EAAEmH,MAAW5I,EAAQ,QAAO;AAChC6I,cAAUF,EAAOG,WAAWF,CAAlB;QACX,WAAsB,OAAZC,KAAgC,OAAZA,GAAkB;AAE/C,cADApH,IAAQ,GACJ,EAAEmH,MAAW5I,EAAQ,QAAO;AAChC6I,cAAUF,EAAOG,WAAWF,CAAlB;QAGX;MACF;IApBH,WAqBqB,OAAVnH,KACO,OAAZoH,GAAkB;AAEpB,UAAI,EAAED,MAAW5I,EAAQ,QAAOH,MAAKa,OAAL;AAEhC,UADAmI,IAAUF,EAAOG,WAAWF,CAAlB,GACM,OAAZC,KAAgC,QAAZA,GAAkB;AACxC,YAAI,EAAED,MAAW5I,EAAQ,QAAO;AAChC6I,YAAUF,EAAOG,WAAWF,CAAlB;MAGX;IACF;AAEH,QAAa,KAAT3I,KAAwB,OAAVwB,EAAc,QAAO;AAAP,WAEb,OAAZoH,KAAkB;AAEvB,UAAI,EAAED,MAAW5I,EAAQ,QAAOH,MAAKa,OAAL;AAChCmI,UAAUF,EAAOG,WAAWF,CAAlB;IACX;AAGD,UAAMG,IAAQ/I,IAAS4I;AAAvB,QACII,IAAcnJ,MAAKoJ,kBAAkBxH,CAAvB,GACdyH,IAAUrJ,MAAKsJ,gCAAgC;AACnD,QAAIJ,IAAQ,aAAYC,EAAa,QAAO;AAAP,UAC/BI,IACDJ,IAAcD,IAAQG,MAAarJ,MAAKwJ,0BAEvCvI,IAAS,IAAIjB,MAD0B,KAAtBuJ,IAAU,MAAM,IACxB,KAAA,GAGTE,IAAmB,KAAR7H,IAAaA,IAAQ,IAChC8H,IAAmB,KAAR9H,IAAaA,IAAQ,KAAK;AAE3C,QAA8B,MAAzBA,IAASA,IAAQ,IAAW;AAE/BuH,YAAgBnJ,MAAKwJ;AAFU,YAGzBG,KAAQ,CAAA,GACRC,KAAY,CAAA;AAClB,UAAIC,KAAI;AACR,SAAG;AAAA,YACGC,KAAO,GACPC,KAAO;AAFV,mBAGY;AACX,cAAIC;AACJ,cAAMhB,IAAU,OAAQ,IAAKS,EAC3BO,CAAAA,KAAIhB,IAAU;oBACQ,KAAVA,KAAgB,OAAQ,IAAKU,EACzCM,CAAAA,MAAe,KAAVhB,KAAgB;eAChB;AACLa,YAAAA,KAAI;AACJ;UACD;AAGD,cAFAE,MAAQZ,GACRW,KAAQA,MAAQX,IAAea,IAC3B,EAAEjB,MAAW5I,GAAQ;AACvB0J,YAAAA,KAAI;AACJ;UACD;AAED,cADAb,IAAUF,EAAOG,WAAWF,CAAlB,GACe,KAArBgB,KAAOZ,EAAkB;QAC9B;AACDQ,QAAAA,GAAMlI,KAAKqI,EAAX,GACAF,GAAUnI,KAAKsI,EAAf;MACD,SAAQ,CAACF;AACV7J,YAAKiK,gBAAgBhJ,GAAQ0I,IAAOC,EAApC;IACD,OAAM;AACL3I,QAAOgD,mBAAP;AADK,UAED4F,KAAI,OACJK,KAAa;AACjB,SAAG;AAAA,YACGJ,KAAO,GACPK,IAAa;AAFhB,mBAGY;AACX,cAAIH;AACJ,cAAMhB,IAAU,OAAQ,IAAKS,EAC3BO,CAAAA,KAAIhB,IAAU;oBACQ,KAAVA,KAAgB,OAAQ,IAAKU,EACzCM,CAAAA,MAAe,KAAVhB,KAAgB;eAChB;AACLa,YAAAA,KAAI;AACJ;UACD;AAED,gBAAMO,KAAID,IAAavI;AACvB,cAAQ,aAAJwI,GAAgB;AAIpB,cAHAD,IAAaC,IACbN,KAAOA,KAAOlI,IAAQoI,IACtBE,MACI,EAAEnB,MAAW5I,GAAQ;AACvB0J,YAAAA,KAAI;AACJ;UACD;AACDb,cAAUF,EAAOG,WAAWF,CAAlB;QACX;AACDM,YAA+C,KAArCrJ,MAAKsJ,gCAAqC;AACpD,cAAMe,IACsD,KADrClB,IAAce,KAAab,MAC7BrJ,MAAKwJ,4BAA4B;AACtDvI,UAAOqJ,qBAAqBH,GAAYL,IAAMO,CAA9C;MACD,SAAQ,CAACR;IACX;AAED,QAAId,MAAW5I,GAAQ;AACrB,UAAI,CAACH,MAAK4I,eAAeI,CAApB,EAA8B,QAAO;AAC1C,WAAKD,KAAUA,IAAS5I,GAAQ4I,IAE9B,KADAC,IAAUF,EAAOG,WAAWF,CAAlB,GACN,CAAC/I,MAAK4I,eAAeI,CAApB,EAA8B,QAAO;IAE7C;AAID,WADA/H,EAAOb,OAAiB,MAATA,GACRa,EAAOyC,OAAP;EACR;EAEqB,OAAfuG,gBAAgBhJ,GAAc0I,GAAiBC,GAAhC;AAAA,QAEhBjH,IAAa,GACbnB,IAAQ,GACR+I,IAAc;AAClB,aAAS/F,IAAImF,EAAMxJ,SAAS,GAAQ,KAALqE,GAAQA,KAAK;AAAA,YACpCsF,IAAOH,EAAMnF,CAAD,GACZgG,IAAWZ,EAAUpF,CAAD;AAC1BhD,WAAUsI,KAAQS,GAClBA,KAAeC,GACK,OAAhBD,KACFtJ,EAAOkD,WAAWxB,KAAcnB,CAAhC,GACA+I,IAAc,GACd/I,IAAQ,KACe,KAAd+I,MACTtJ,EAAOkD,WAAWxB,KAAsB,aAARnB,CAAhC,GACA+I,KAAe,IACf/I,IAAQsI,MAAUU,IAAWD;IAEhC;AACD,QAAc,MAAV/I,GAAa;AACf,UAAImB,KAAc1B,EAAOd,OAAQ,OAAM,IAAIsK,MAAM,oBAAV;AACvCxJ,QAAOkD,WAAWxB,KAAcnB,CAAhC;IACD;AACD,WAAOmB,IAAa1B,EAAOd,QAAQwC,IACjC1B,GAAOkD,WAAWxB,GAAY,CAA9B;EAEH;EAE8B,OAAxBd,yBAAyBG,GAASJ,GAAV;AAC7B,UAAMzB,IAAS6B,EAAE7B;AACjB,QAAI4J,IAAOnI,IAAQ;AACnBmI,SAAuB,KAAdA,MAAS,MAAqB,KAAPA,IAChCA,KAAuB,KAAdA,MAAS,MAAqB,KAAPA,IAChCA,KAAuB,KAAdA,MAAS,MAAqB,KAAPA;AAAzB,UACDZ,IAAcY,GACdW,IAAW9I,IAAQ,GACnBsC,IAAMlC,EAAEK,QAAQlC,IAAS,CAAnB,GACNmC,IAAkBtC,MAAKuC,QAAQ2B,CAAb;AAExB,QAAIyG,IACgD,KAFzB,KAATxK,IAAcmC,IAEd6G,IAAc,KAAKA;AAErC,QADInH,EAAE5B,QAAMuK,KACR,YAAAA,EAA2B,OAAM,IAAIF,MAAM,iBAAV;AACrC,UAAMxJ,IAAahB,MAAM0K,CAAb;AAAZ,QACIC,IAAMD,IAAgB,GACtBnJ,IAAQ,GACRqJ,IAAgB;AACpB,aAASrG,KAAI,GAAGA,KAAIrE,IAAS,GAAGqE,MAAK;AAAA,YAC7BsG,KAAW9I,EAAEK,QAAQmC,EAAV,GACXwE,MAAWxH,IAASsJ,MAAYD,KAAkBH;AACxDzJ,QAAO2J,GAAD,IAAU5K,MAAK+K,mBAAmB/B,EAAxB;AAChB,YAAMgC,KAAe7B,IAAc0B;AAJA,WAKnCrJ,IAAQsJ,OAAaE,IACrBH,IAAgB,KAAKG,IACdH,KAAiB1B,IACtBlI,GAAO2J,GAAD,IAAU5K,MAAK+K,mBAAmBvJ,IAAQkJ,CAAhC,GAChBlJ,OAAW2H,GACX0B,KAAiB1B;IAEpB;AACD,UAAMH,KAAWxH,IAAS0C,KAAO2G,KAAkBH;AAAnD,SACAzJ,EAAO2J,GAAD,IAAU5K,MAAK+K,mBAAmB/B,CAAxB,GAChBxH,IAAQ0C,MAASiF,IAAc0B,GACd,MAAVrJ,IACLP,GAAO2J,GAAD,IAAU5K,MAAK+K,mBAAmBvJ,IAAQkJ,CAAhC,GAChBlJ,OAAW2H;AAGb,QADInH,EAAE5B,SAAMa,EAAO2J,GAAD,IAAU,MAChB,MAARA,EAAY,OAAM,IAAIH,MAAM,oBAAV;AACtB,WAAOxJ,EAAOU,KAAK,EAAZ;EACR;EAEuB,OAAjBG,kBAAkBE,GAASJ,GAAeqJ,GAAzB;AAEtB,UAAM9K,IAAS6B,EAAE7B;AACjB,QAAe,MAAXA,EAAc,QAAO;AACzB,QAAe,MAAXA,GAAc;AAChB,UAAIc,KAASe,EAAEG,gBAAgB,CAAlB,EAAqBT,SAASE,CAA9B;AAIb,aAHI,UAAAqJ,KAA6BjJ,EAAE5B,SACjCa,KAAS,MAAMA,KAEVA;IACR;AAAA,UACKiK,IAAqB,KAAT/K,IAAcH,MAAKuC,QAAQP,EAAEK,QAAQlC,IAAS,CAAnB,CAAb,GAC1BgL,IAAiBnL,MAAKoJ,kBAAkBxH,CAAvB,GACjBwJ,IAAiBD,IAAiB;AACxC,QAAIR,IAAgBO,IAAYlL,MAAKsJ;AACrCqB,SAAiBS,IAAiB,GAClCT,IAAmD,IAAlCA,IAAgBS;AAAAA,UAC3BC,IAAmBV,IAAgB,KAAM,GAGzCW,IAAYtL,MAAK4D,aAAa5D,MAAKe,WAAWa,GAAhB,KAAA,GAChC5B,MAAKe,WAAWsK,GAAhB,KAAA,CADc;AAAA,QAEdvG,GACAyG;AACJ,UAAM1G,IAAUyG,EAAUnJ,gBAAgB,CAA1B;AAChB,QAAyB,MAArBmJ,EAAUnL,UAA2B,SAAX0E,GAAmB;AAC/CC,UAAW,IAAI9E,MAAKgC,EAAE7B,QAAX,KAAA,GACX2E,EAASb,mBAAT;AACA,UAAIgB,KAAY;AAChB,eAAST,KAAe,IAAXxC,EAAE7B,SAAa,GAAQ,KAALqE,IAAQA,MAAK;AAC1C,cAAMgH,KAASvG,MAAa,KAAMjD,EAAEyJ,YAAYjH,EAAd;AAClCM,UAAS4G,eAAelH,IAAuB,IAAnBgH,KAAQ3G,CAApC,GACAI,KAAgC,IAAnBuG,KAAQ3G;MACtB;AACD0G,UAAatG,GAAUvD,SAASE,CAAnB;IACd,OAAM;AACL,YAAM+J,KAAiB3L,MAAKgF,mBAAmBhD,GAAGsJ,GAA3B,MAAA,IAAA;AACvBxG,UAAW6G,GAAe7G;AAC1B,YAAMG,KAAY0G,GAAe1G,UAAUvB,OAAzB;AAClB6H,UAAavL,MAAK8B,kBAAkBmD,IAAWrD,GAAlC,IAAA;IACd;AACDkD,MAASpB,OAAT;AACA,QAAIkI,IAAY5L,MAAK8B,kBAAkBgD,GAAUlD,GAAjC,IAAA;AAAhB,WACO2J,EAAWpL,SAASkL,IACzBE,KAAa,MAAMA;AAKrB,WAHI,UAAAN,KAA6BjJ,EAAE5B,SACjCwL,IAAY,MAAMA,IAEbA,IAAYL;EACpB;EAEmB,OAAbM,cAAcC,GAAD;AAClB,WAAOA,IAAe,KAAK;EAC5B;EACuB,OAAjBC,kBAAkBC,GAAD;AACtB,WAAOA,IAAe,KAAK;EAC5B;EACoB,OAAdC,eAAeD,GAAD;AACnB,WAAOA,IAAe,IAAI;EAC3B;EAEuB,OAAjBlG,kBAAkB9D,GAAS6B,GAAV;AACtB,UAAMqI,IAAQlK,EAAE5B;AAChB,QAAI8L,MAAUrI,EAAEzD,KAAM,QAAOJ,MAAK6L,cAAcK,CAAnB;AAC7B,UAAMjL,IAASjB,MAAK2E,kBAAkB3C,GAAG6B,CAA1B;AAAf,WACa,IAAT5C,IAAmBjB,MAAK+L,kBAAkBG,CAAvB,IACV,IAATjL,IAAmBjB,MAAKiM,eAAeC,CAApB,IAChB;EACR;EAEuB,OAAjBC,kBAAkBnK,GAAS6B,GAAV;AACtB,QAAI7D,MAAKc,gBAAgB+C,CAArB,GAAyB;AAAA,YACrBqI,IAAQlK,EAAE5B,MACVgM,IAAa,IAAJvI;AACf,UAAIqI,MAAUE,EAAO,QAAOpM,MAAK6L,cAAcK,CAAnB;AAC5B,UAAiB,MAAblK,EAAE7B,QAAc;AAClB,YAAIiM,EAAO,OAAM,IAAI3B,MAAM,oBAAV;AACjB,eAAa,MAAN5G,IAAU,IAAI;MACtB;AAED,UAAe,IAAX7B,EAAE7B,OAAY,QAAOH,MAAK+L,kBAAkBG,CAAvB;AATE,YAUrBG,IAAO5L,KAAK6L,IAAIzI,CAAT,GACP0I,IAASvK,EAAEG,gBAAgB,CAAlB;AAXY,aAYvBoK,IAASF,IAAarM,MAAK+L,kBAAkBG,CAAvB,IACtBK,IAASF,IAAarM,MAAKiM,eAAeC,CAApB,IACnB;IACR;AACD,WAAOlM,MAAKwM,kBAAkBxK,GAAG6B,CAA1B;EACR;EAEuB,OAAjB2I,kBAAkBxK,GAAS6B,GAAV;AACtB,QAAIA,MAAMA,EAAG,QAAOA;AACpB,QAAIA,MAAC,IAAA,EAAe,QAAO;AAC3B,QAAIA,MAAM,UAAW,QAAO;AAAP,UACfqI,IAAQlK,EAAE5B;AAEhB,QAAI8L,MADe,IAAJrI,EACM,QAAO7D,MAAK6L,cAAcK,CAAnB;AAC5B,QAAU,MAANrI,EACF,OAAM,IAAI4G,MAAM,iDAAV;AAER,QAAiB,MAAbzI,EAAE7B,OAAc,QAAO;AAC3BH,UAAKqD,uBAAuB,CAA5B,IAAiCQ;AACjC,UAAM0E,IAAsD,OAAvCvI,MAAKoD,qBAAqB,CAA1B,MAAiC;AACtD,QAAoB,QAAhBmF,EACF,OAAM,IAAIkC,MAAM,uCAAV;AAER,UAAMhI,IAAW8F,IAAc;AAC/B,QAAe,IAAX9F,EAGF,QAAOzC,MAAK+L,kBAAkBG,CAAvB;AAET,UAAMjK,IAAUD,EAAE7B;AAClB,QAAIiC,IAAOJ,EAAEK,QAAQJ,IAAU,CAApB;AAAX,UACMK,IAAkBtC,MAAKuC,QAAQH,CAAb,GAClBI,IAAuB,KAAVP,IAAeK,GAC5BmK,IAAahK,IAAW;AAC9B,QAAID,IAAaiK,EAAY,QAAOzM,MAAKiM,eAAeC,CAApB;AACpC,QAAI1J,IAAaiK,EAAY,QAAOzM,MAAK+L,kBAAkBG,CAAvB;AAAP,QAIzBrJ,IAAe,UAAgC,UAA/B7C,MAAKoD,qBAAqB,CAA1B,GAChBL,IAAc/C,MAAKoD,qBAAqB,CAA1B;AAAA,UACZqF,IAAsB,IACtBC,IAAY,KAAKpG;AACvB,QAAIoG,OAAyC,KAAxBlG,IAAa,KAAK,IACrC,OAAM,IAAIiI,MAAM,oBAAV;AAAN,QAEEiC,GACA/D,IAAwB;AAE5B,QAAI,KAAAD,GAAiC;AACnC,YAAM9F,KAAQ6F,IAAsBC;AACpCC,UAAwB/F,KAAQ,IAChC8J,IAAkB7J,MAAiBD,IACnCC,IAAgBA,KAAiB,KAAKD,KAAWG,MAAgBH,IACjEG,MAA8B,KAAKH;IACpC,WAAU,OAAA8F,EACTC,KAAwB,IACxB+D,IAAkB7J,GAClBA,IAAeE,GACfA,IAAc;SACT;AACL,YAAMH,KAAQ8F,IAAYD;AAC1BE,UAAwB,KAAK/F,IAC7B8J,IACK7J,KAAgBD,KAAUG,MAAiB,KAAKH,IACrDC,IAAeE,KAAeH,IAC9BG,IAAc;IACf;AAGD,QAFAX,OAAgB,GAChBsK,OAAsC,GAClCtK,IAAOsK,EAAiB,QAAO1M,MAAK+L,kBAAkBG,CAAvB;AACnC,QAAI9J,IAAOsK,EAAiB,QAAO1M,MAAKiM,eAAeC,CAApB;AAEnC,aAASvJ,KAAaV,IAAU,GAAiB,KAAdU,IAAiBA,MAAc;AACpC,UAAxBgG,KACFA,KAAyB,IACzB+D,IAAkB7J,MAAiB,GACnCA,IAAgBA,KAAgB,KAAOE,MAAgB,GACvDA,MAA8B,MAE9B2J,IAAkB;AAEpB,YAAMlL,KAAQQ,EAAEG,gBAAgBQ,EAAlB;AACd,UAAInB,KAAQkL,EAAiB,QAAO1M,MAAK+L,kBAAkBG,CAAvB;AACpC,UAAI1K,KAAQkL,EAAiB,QAAO1M,MAAKiM,eAAeC,CAApB;IACrC;AAED,QAAqB,MAAjBrJ,KAAsC,MAAhBE,GAAmB;AAC3C,UAA8B,MAA1B4F,EAA6B,OAAM,IAAI8B,MAAM,oBAAV;AACvC,aAAOzK,MAAKiM,eAAeC,CAApB;IACR;AACD,WAAO;EACR;EAEqB,OAAfnE,gBAAgB/F,GAAS6B,GAAV;AAAA,QAAA,IAKepD,KAAK6L;AAAAA,WAJpCtM,MAAKc,gBAAgB+C,CAArB,IACQ,MAANA,IAA6B,MAAb7B,EAAE7B,SAED,MAAb6B,EAAE7B,UAAkB6B,EAAE5B,SAAc,IAAJyD,KAChC7B,EAAEG,gBAAgB,CAAlB,MAAyB,EAAS0B,CAAT,IAEK,MAAjC7D,MAAKwM,kBAAkBxK,GAAG6B,CAA1B;EACR;EAO8B,OAAxB8I,yBAAyB1L,GAAgB2L,GAAjB;AAAA,WAEtB,MADCA,IACkB,IAAT3L,IACV,MAFC2L,IAEmB,KAAV3L,IACV,MAHC2L,IAGkB,IAAT3L,IACV,MAJC2L,IAImB,KAAV3L,IAAAA;EAElB;EAEe,OAATyG,UAAU1F,GAAQ6B,GAAQ+I,GAAjB;AAGd,QAFA5K,IAAIhC,MAAKqB,cAAcW,CAAnB,GACJ6B,IAAI7D,MAAKqB,cAAcwC,CAAnB,GACa,YAAb,OAAO7B,KAA+B,YAAb,OAAO6B,EAClC,SAAQ+I,GAAR;MACE,KAAK;AAAG,eAAO5K,IAAI6B;MACnB,KAAK;AAAG,eAAO7B,KAAK6B;MACpB,KAAK;AAAG,eAAO7B,IAAI6B;MACnB,KAAK;AAAG,eAAO7B,KAAK6B;IAJtB;AAOF,QAAI7D,MAAKwH,WAAWxF,CAAhB,KAAmC,YAAb,OAAO6B,EAAjC,QACEA,IAAI7D,MAAKkB,aAAa2C,CAAlB,GACM,SAANA,KACG7D,MAAK2M,yBAAyB3M,MAAK8F,kBAAkB9D,GAAG6B,CAA1B,GAA8B+I,CAA5D;AAET,QAAiB,YAAb,OAAO5K,KAAkBhC,MAAKwH,WAAW3D,CAAhB,EAA7B,QACE7B,IAAIhC,MAAKkB,aAAac,CAAlB,GACM,SAANA,KACGhC,MAAK2M,yBAAyB3M,MAAK8F,kBAAkB9D,GAAG6B,CAA1B,GAA8B+I,CAA5D;AAIT,QAFA5K,IAAIhC,MAAKuH,YAAYvF,CAAjB,GACJ6B,IAAI7D,MAAKuH,YAAY1D,CAAjB,GACA7D,MAAKwH,WAAWxF,CAAhB,GAAoB;AACtB,UAAIhC,MAAKwH,WAAW3D,CAAhB,EACF,QAAO7D,MAAK2M,yBAAyB3M,MAAK8F,kBAAkB9D,GAAG6B,CAA1B,GAA8B+I,CAA5D;AAET,UAAiB,YAAb,OAAO/I,EAAgB,OAAM,IAAI4G,MAAM,oBAAV;AACjC,aAAOzK,MAAK2M,yBAAyB3M,MAAKmM,kBAAkBnK,GAAG6B,CAA1B,GAA8B+I,CAA5D;IACR;AACD,QAAiB,YAAb,OAAO5K,EAAgB,OAAM,IAAIyI,MAAM,oBAAV;AACjC,QAAIzK,MAAKwH,WAAW3D,CAAhB,EAEF,QAAO7D,MAAK2M,yBAAyB3M,MAAKmM,kBAAkBtI,GAAG7B,CAA1B,GAC3B,IAAL4K,CADE;AAGT,QAAiB,YAAb,OAAO/I,EAAgB,OAAM,IAAI4G,MAAM,oBAAV;AAAN,WAEpB,MADCmC,IACS5K,IAAI6B,IACd,MAFC+I,IAES5K,KAAK6B,IACf,MAHC+I,IAGS5K,IAAI6B,IACd,MAJC+I,IAIS5K,KAAK6B,IAAAA;EAEvB;EAEDU,WAAQ;AACN,WAAOvE,MAAKuC,QAAQ,KAAKF,QAAQ,KAAKlC,SAAS,CAA3B,CAAb;EACR;EAEmB,OAAbkF,cAAcrD,GAAS6B,GAASe,GAAnB;AAClB,QAAI5C,EAAE7B,SAAS0D,EAAE1D,OAAQ,QAAOH,MAAKqF,cAAcxB,GAAG7B,GAAG4C,CAAzB;AAChC,QAAiB,MAAb5C,EAAE7B,OAAc,QAAO6B;AAC3B,QAAiB,MAAb6B,EAAE1D,OAAc,QAAO6B,EAAE5B,SAASwE,IAAa5C,IAAIhC,MAAKsD,WAAWtB,CAAhB;AACvD,QAAIsC,IAAetC,EAAE7B;AAArB,KACqB,MAAjB6B,EAAEuC,SAAF,KAAuBV,EAAE1D,WAAW6B,EAAE7B,UAA2B,MAAjB0D,EAAEU,SAAF,MAClDD;AAEF,UAAMrD,IAAS,IAAIjB,MAAKsE,GAAcM,CAAvB;AAAf,QACIiI,IAAQ,GACRrI,IAAI;AACR,WAAOA,IAAIX,EAAE1D,QAAQqE,KAAK;AACxB,YAAMsI,IAAI9K,EAAEK,QAAQmC,CAAV,IAAeX,EAAExB,QAAQmC,CAAV,IAAeqI;AACxCA,UAAQC,MAAM,IACd7L,EAAOkD,WAAWK,GAAO,aAAJsI,CAArB;IACD;AACD,WAAOtI,IAAIxC,EAAE7B,QAAQqE,KAAK;AACxB,YAAMsI,IAAI9K,EAAEK,QAAQmC,CAAV,IAAeqI;AACzBA,UAAQC,MAAM,IACd7L,EAAOkD,WAAWK,GAAO,aAAJsI,CAArB;IACD;AAID,WAHItI,IAAIvD,EAAOd,UACbc,EAAOkD,WAAWK,GAAGqI,CAArB,GAEK5L,EAAOyC,OAAP;EACR;EAEmB,OAAb4B,cAActD,GAAS6B,GAASe,GAAnB;AAClB,QAAiB,MAAb5C,EAAE7B,OAAc,QAAO6B;AAC3B,QAAiB,MAAb6B,EAAE1D,OAAc,QAAO6B,EAAE5B,SAASwE,IAAa5C,IAAIhC,MAAKsD,WAAWtB,CAAhB;AACvD,UAAMf,IAAS,IAAIjB,MAAKgC,EAAE7B,QAAQyE,CAAnB;AAAf,QACImI,IAAS,GACTvI,IAAI;AACR,WAAOA,IAAIX,EAAE1D,QAAQqE,KAAK;AACxB,YAAMsI,IAAI9K,EAAEK,QAAQmC,CAAV,IAAeX,EAAExB,QAAQmC,CAAV,IAAeuI;AACxCA,UAAsB,IAAZD,MAAM,IAChB7L,EAAOkD,WAAWK,GAAO,aAAJsI,CAArB;IACD;AACD,WAAOtI,IAAIxC,EAAE7B,QAAQqE,KAAK;AACxB,YAAMsI,IAAI9K,EAAEK,QAAQmC,CAAV,IAAeuI;AACzBA,UAAsB,IAAZD,MAAM,IAChB7L,EAAOkD,WAAWK,GAAO,aAAJsI,CAArB;IACD;AACD,WAAO7L,EAAOyC,OAAP;EACR;EAEsB,OAAhBC,iBAAiB3B,GAAS5B,GAAea,IAAoB,MAA7C;AACrB,UAAM+L,IAAchL,EAAE7B;AACP,aAAXc,IACFA,IAAS,IAAIjB,MAAKgN,GAAa5M,CAAtB,IAETa,EAAOb,OAAOA;AAEhB,QAAIyM,IAAQ;AACZ,aAASrI,IAAI,GAAGA,IAAIwI,GAAaxI,KAAK;AACpC,YAAMsI,KAAI9K,EAAEK,QAAQmC,CAAV,IAAeqI;AACzBA,UAAQC,OAAM,IACd7L,EAAOkD,WAAWK,GAAO,aAAJsI,EAArB;IACD;AAID,WAHc,KAAVD,KACF5L,EAAOgM,eAAeD,GAAa,CAAnC,GAEK/L;EACR;EAEsB,OAAhBwC,iBAAiBzB,GAASsC,GAAV;AACrB,UAAMnE,IAAS6B,EAAE7B;AACjBmE,QAAeA,KAAgBnE;AAC/B,UAAMc,IAAS,IAAIjB,MAAKsE,GAAT,KAAA;AACf,QAAIyI,IAAS;AACb,aAASvI,IAAI,GAAGA,IAAIrE,GAAQqE,KAAK;AAC/B,YAAMsI,IAAI9K,EAAEK,QAAQmC,CAAV,IAAeuI;AACzBA,UAAsB,IAAZD,MAAM,IAChB7L,EAAOkD,WAAWK,GAAO,aAAJsI,CAArB;IACD;AACD,QAAe,KAAXC,EAAc,OAAM,IAAItC,MAAM,oBAAV;AACxB,aAASjG,KAAIrE,GAAQqE,KAAIF,GAAcE,KACrCvD,GAAOkD,WAAWK,IAAG,CAArB;AAEF,WAAOvD;EACR;EAEmB,OAAbqF,cAActE,GAAS6B,GAAS5C,IAAoB,MAAvC;AAAA,QACdgB,IAAUD,EAAE7B,QACZ+M,IAAUrJ,EAAE1D,QACZgN,IAAWD;AACf,QAAIjL,IAAUiL,GAAS;AACrBC,UAAWlL;AADU,YAEfmL,IAAMpL,GACNqL,KAAYpL;AAClBD,UAAI6B,GACJ5B,IAAUiL,GACVrJ,IAAIuJ,GACJF,IAAUG;IACX;AACD,QAAI/I,IAAe6I;AACJ,aAAXlM,IACFA,IAAS,IAAIjB,MAAKsE,GAAT,KAAA,IAETA,IAAerD,EAAOd;AAExB,QAAIqE,IAAI;AACR,WAAOA,IAAI2I,GAAU3I,IACnBvD,GAAOkD,WAAWK,GAAGxC,EAAEK,QAAQmC,CAAV,IAAeX,EAAExB,QAAQmC,CAAV,CAApC;AAEF,WAAOA,IAAIF,GAAcE,IACvBvD,GAAOkD,WAAWK,GAAG,CAArB;AAEF,WAAOvD;EACR;EAEsB,OAAhBwF,iBAAiBzE,GAAS6B,GAAS5C,IAAoB,MAAvC;AAAA,UACfgB,IAAUD,EAAE7B,QACZ+M,IAAUrJ,EAAE1D;AAClB,QAAIgN,IAAWD;AACXjL,QAAUiL,MACZC,IAAWlL;AAEb,QAAIqC,IAAerC;AACJ,aAAXhB,IACFA,IAAS,IAAIjB,MAAKsE,GAAT,KAAA,IAETA,IAAerD,EAAOd;AAExB,QAAIqE,IAAI;AACR,WAAOA,IAAI2I,GAAU3I,IACnBvD,GAAOkD,WAAWK,GAAGxC,EAAEK,QAAQmC,CAAV,IAAe,CAACX,EAAExB,QAAQmC,CAAV,CAArC;AAEF,WAAOA,IAAIvC,GAASuC,IAClBvD,GAAOkD,WAAWK,GAAGxC,EAAEK,QAAQmC,CAAV,CAArB;AAEF,WAAOA,IAAIF,GAAcE,IACvBvD,GAAOkD,WAAWK,GAAG,CAArB;AAEF,WAAOvD;EACR;EAEkB,OAAZuF,aAAaxE,GAAS6B,GAAS5C,IAAoB,MAAvC;AAAA,QACbgB,IAAUD,EAAE7B,QACZ+M,IAAUrJ,EAAE1D,QACZgN,IAAWD;AACf,QAAIjL,IAAUiL,GAAS;AACrBC,UAAWlL;AADU,YAEfmL,IAAMpL,GACNqL,KAAYpL;AAClBD,UAAI6B,GACJ5B,IAAUiL,GACVrJ,IAAIuJ,GACJF,IAAUG;IACX;AACD,QAAI/I,IAAerC;AACJ,aAAXhB,IACFA,IAAS,IAAIjB,MAAKsE,GAAT,KAAA,IAETA,IAAerD,EAAOd;AAExB,QAAIqE,IAAI;AACR,WAAOA,IAAI2I,GAAU3I,IACnBvD,GAAOkD,WAAWK,GAAGxC,EAAEK,QAAQmC,CAAV,IAAeX,EAAExB,QAAQmC,CAAV,CAApC;AAEF,WAAOA,IAAIvC,GAASuC,IAClBvD,GAAOkD,WAAWK,GAAGxC,EAAEK,QAAQmC,CAAV,CAArB;AAEF,WAAOA,IAAIF,GAAcE,IACvBvD,GAAOkD,WAAWK,GAAG,CAArB;AAEF,WAAOvD;EACR;EAEmB,OAAb0F,cAAc3E,GAAS6B,GAAS5C,IAAoB,MAAvC;AAAA,QACdgB,IAAUD,EAAE7B,QACZ+M,IAAUrJ,EAAE1D,QACZgN,IAAWD;AACf,QAAIjL,IAAUiL,GAAS;AACrBC,UAAWlL;AADU,YAEfmL,IAAMpL,GACNqL,KAAYpL;AAClBD,UAAI6B,GACJ5B,IAAUiL,GACVrJ,IAAIuJ,GACJF,IAAUG;IACX;AACD,QAAI/I,IAAerC;AACJ,aAAXhB,IACFA,IAAS,IAAIjB,MAAKsE,GAAT,KAAA,IAETA,IAAerD,EAAOd;AAExB,QAAIqE,IAAI;AACR,WAAOA,IAAI2I,GAAU3I,IACnBvD,GAAOkD,WAAWK,GAAGxC,EAAEK,QAAQmC,CAAV,IAAeX,EAAExB,QAAQmC,CAAV,CAApC;AAEF,WAAOA,IAAIvC,GAASuC,IAClBvD,GAAOkD,WAAWK,GAAGxC,EAAEK,QAAQmC,CAAV,CAArB;AAEF,WAAOA,IAAIF,GAAcE,IACvBvD,GAAOkD,WAAWK,GAAG,CAArB;AAEF,WAAOvD;EACR;EAEuB,OAAjB0D,kBAAkB3C,GAAS6B,GAAV;AACtB,UAAMyJ,IAAOtL,EAAE7B,SAAS0D,EAAE1D;AAC1B,QAAa,KAATmN,EAAY,QAAOA;AACvB,QAAI9I,IAAIxC,EAAE7B,SAAS;AAAnB,WACY,KAALqE,KAAUxC,EAAEK,QAAQmC,CAAV,MAAiBX,EAAExB,QAAQmC,CAAV,IAAcA;AAAC,WACzC,IAAJA,IAAc,IACXxC,EAAEG,gBAAgBqC,CAAlB,IAAuBX,EAAE1B,gBAAgBqC,CAAlB,IAAuB,IAAI;EAC1D;EAE0B,OAApBC,qBAAqB8I,GAAoBpD,GAC5CqD,GAAmBC,GADI;AAEzB,QAAmB,MAAftD,EAAkB;AAAA,UAChBuD,IAAqB,QAAbvD,GACRwD,IAASxD,MAAe;AAAA,QAC1B0C,IAAQ,GACRe,IAAO;AACX,aACMC,GADGrJ,IAAI,GAAGA,IAAI+I,EAAapN,QAAQqE,KAAKiJ,KAAoB;AAC5DI,UAAML,EAAYnL,QAAQoL,CAApB;AADsD,YAE1DK,IAAKP,EAAalL,QAAQmC,CAArB,GACLuJ,KAAa,QAALD,GACRE,IAASF,MAAO,IAChBG,IAAOjO,MAAKkO,OAAOH,IAAOL,CAAnB,GACPS,IAAQnO,MAAKkO,OAAOH,IAAOJ,CAAnB,GACRS,IAAQpO,MAAKkO,OAAOF,GAAQN,CAApB,GACRW,IAAQrO,MAAKkO,OAAOF,GAAQL,CAApB;AACdE,WAAOD,IAAOK,IAAOpB,GACrBA,IAAQgB,MAAQ,IAChBA,KAAO,YACPA,OAAiB,QAARM,MAAmB,QAAgB,QAARC,MAAmB,KACvDvB,KAASgB,MAAQ,IACjBD,IAAOS,KAASF,MAAU,OAAOC,MAAU,KAC3CZ,EAAYrJ,WAAWsJ,GAAwB,aAANI,CAAzC;IACD;AACD,WAAiB,KAAVhB,KAAwB,MAATe,GAAYH,KAAoB;AACpD,UAAII,IAAML,EAAYnL,QAAQoL,CAApB;AACVI,WAAOhB,IAAQe,GACfA,IAAO,GACPf,IAAQgB,MAAQ,IAChBL,EAAYrJ,WAAWsJ,GAAwB,aAANI,CAAzC;IACD;EACF;EAE2B,OAArBS,sBAAsBC,GAAcC,GAAgBC,GACvD3H,GAAW7F,GADa;AAAA,QAEtB4L,IAAQ4B,GACRb,IAAO;AACX,aAASpJ,IAAI,GAAGA,IAAIsC,GAAGtC,KAAK;AAAA,YACpBhD,IAAQ+M,EAAOlM,QAAQmC,CAAf,GACRkK,KAAK1O,MAAKkO,OAAe,QAAR1M,GAAgBgN,CAA5B,GACLG,KAAK3O,MAAKkO,OAAO1M,MAAU,IAAIgN,CAA1B,GACL1B,IAAI4B,OAAY,QAALC,OAAgB,MAAMf,IAAOf;AAC9CA,UAAQC,MAAM,IACdc,IAAOe,OAAO,IACd1N,EAAOkD,WAAWK,GAAO,aAAJsI,CAArB;IACD;AACD,QAAI7L,EAAOd,SAAS2G,EAApB,MACE7F,EAAOkD,WAAW2C,KAAK+F,IAAQe,CAA/B,GACO9G,IAAI7F,EAAOd,SAChBc,GAAOkD,WAAW2C,KAAK,CAAvB;aAGmB,MAAjB+F,IAAQe,EAAY,OAAM,IAAInD,MAAM,oBAAV;EAEjC;EAEDH,qBAAqBH,GAAoBsE,GAAiBtO,GAAtC;AAEdA,QAAS,KAAKA,WAAQA,IAAS,KAAKA;AAAAA,UAClCyO,IAAoB,QAAbzE,GACP0E,IAAQ1E,MAAe;AAAA,QACzB0C,IAAQ,GACRe,IAAOa;AACX,aAASjK,IAAI,GAAGA,IAAIrE,GAAQqE,KAAK;AAAA,YACzBwF,KAAI,KAAK3H,QAAQmC,CAAb,GACJsK,KAAW,QAAJ9E,IACP+E,KAAQ/E,OAAM,IACdgF,IAAOhP,MAAKkO,OAAOY,IAAMF,CAAlB,GACPK,IAAQjP,MAAKkO,OAAOY,IAAMD,CAAlB,GACRK,IAAQlP,MAAKkO,OAAOa,IAAOH,CAAnB,GACRO,IAAQnP,MAAKkO,OAAOa,IAAOF,CAAnB;AACd,UAAI5N,IAAS2M,IAAOoB,IAAOnC;AAC3BA,UAAQ5L,MAAW,IACnBA,KAAU,YACVA,OAAoB,QAARgO,MAAmB,QAAgB,QAARC,MAAmB,KAC1DrC,KAAS5L,MAAW,IACpB2M,IAAOuB,KAASF,MAAU,OAAOC,MAAU,KAC3C,KAAK/K,WAAWK,GAAY,aAATvD,CAAnB;IACD;AACD,QAAc,KAAV4L,KAAwB,MAATe,EACjB,OAAM,IAAInD,MAAM,oBAAV;EAET;EAEwB,OAAlB1F,mBAAmB/C,GAAS6C,GAC/BC,IAAsB,MADD;AAEN,aAAbA,MAAmBA,IAAW,IAAI9E,MAAKgC,EAAE7B,QAAX,KAAA;AAClC,QAAI8E,IAAY;AAChB,aACMuG,GADGhH,IAAe,IAAXxC,EAAE7B,SAAa,GAAQ,KAALqE,GAAQA,KAAK,GAAG;AACzCgH,WAAUvG,KAAa,KAAMjD,EAAEyJ,YAAYjH,CAAd,OAAsB;AACvD,YAAM4K,IAAgC,IAAnB5D,IAAQ3G;AAC3BI,UAAgC,IAAnBuG,IAAQ3G,GACrB2G,KAAUvG,KAAa,KAAMjD,EAAEyJ,YAAYjH,IAAI,CAAlB,OAA0B;AACvD,YAAM6K,IAAgC,IAAnB7D,IAAQ3G;AAC3BI,UAAgC,IAAnBuG,IAAQ3G,GACrBC,EAASX,WAAWK,MAAM,GAAI4K,KAAa,KAAMC,CAAjD;IACD;AACD,WAAOvK;EACR;EAEwB,OAAlBK,mBAAmBnD,GAAS6C,GAAV;AACvB,QAAII,IAAY;AAChB,aAAST,IAAe,IAAXxC,EAAE7B,SAAa,GAAQ,KAALqE,GAAQA,KAAK;AAC1C,YAAMgH,KAAUvG,KAAa,KAAMjD,EAAEyJ,YAAYjH,CAAd,OAAsB;AACzDS,UAAgC,IAAnBuG,IAAQ3G;IACtB;AACD,WAAOI;EACR;EAQwB,OAAlBD,mBAAmBsK,GAAgBzK,GACtC0K,GAAuBC,GADF;AAAA,UAGjB1I,IAAIjC,EAAQ4K,kBAAR,GACJC,IAAK7K,EAAQ1E,QACbiK,IAAIkF,EAASG,kBAAT,IAA+B3I;AACzC,QAAI6I,IAAI;AACJJ,UACFI,IAAI,IAAI3P,MAAMoK,IAAI,MAAO,GAArB,KAAA,GACJuF,EAAE1L,mBAAF;AAEF,UAAM2L,IAAQ,IAAI5P,MAAM8G,IAAI,MAAO,GAArB,KAAA;AACd8I,MAAM3L,mBAAN;AAEA,UAAMrB,IAAQ5C,MAAK6P,QAAQhL,EAAQ4G,YAAY3E,IAAI,CAAxB,CAAb;AACF,QAARlE,MACFiC,IAAU7E,MAAK8P,mBAAmBjL,GAASjC,GAAO,CAAxC;AAAA,UAENmN,IAAI/P,MAAK8P,mBAAmBR,GAAU1M,GAAO,CAAzC,GAEJoN,IAAMnL,EAAQ4G,YAAY3E,IAAI,CAAxB;AACZ,QAAImJ,IAAkB;AACtB,aAEMC,IAFGC,IAAI/F,GAAQ,KAAL+F,GAAQA,KAAK;AAEvBD,MAAAA,KAAO;AACX,YAAME,KAAML,EAAEtE,YAAY0E,IAAIrJ,CAAlB;AACZ,UAAIsJ,OAAQJ,GAAK;AACf,cAAMxE,MAAU4E,MAAO,KAAML,EAAEtE,YAAY0E,IAAIrJ,IAAI,CAAtB,OAA8B;AAC3DoJ,QAAAA,KAAuB,IAAf1E,KAAQwE;AAChB,YAAIK,KAAuB,IAAf7E,KAAQwE;AAHL,cAITM,KAAMzL,EAAQ4G,YAAY3E,IAAI,CAAxB,GACNyJ,KAAOR,EAAEtE,YAAY0E,IAAIrJ,IAAI,CAAtB;AALE,eAMP9G,MAAKkO,OAAOgC,IAAMI,EAAlB,MAA2B,KAAQD,MAAQ,KAAME,QAAU,MACjEL,MACAG,MAAQL,GARK,EASF,QAAPK,OATS;MAWhB;AAEDrQ,YAAKsO,sBAAsBzJ,GAASqL,IAAM,GAAGR,GAAIE,CAAjD;AACA,UAAI/G,KAAIkH,EAAES,aAAaZ,GAAOO,GAAGrJ,IAAI,CAA7B;AACE,YAAN+B,OACFA,KAAIkH,EAAEU,aAAa5L,GAASsL,GAAGrJ,CAA3B,GACJiJ,EAAErE,eAAeyE,IAAIrJ,GAAgC,QAA5BiJ,EAAEtE,YAAY0E,IAAIrJ,CAAlB,IAAuB+B,EAAhD,GACAqH,OAEEX,MACM,IAAJY,IACFF,IAAkBC,MAAQ,KAGzBP,EAAWxL,WAAWgM,MAAM,GAAGF,IAAkBC,EAAjD;IAGN;AACD,QAAIV,EAAJ,QACEO,EAAEW,oBAAoB9N,CAAtB,GACI2M,IACK,EAACzK,UAAW6K,GAAY1K,WAAW8K,EAAnC,IAEFA;AAET,QAAIR,EAAc,QAAQI;AAE1B,UAAM,IAAIlF,MAAM,aAAV;EACP;EAEa,OAAPoF,QAAQ3N,GAAD;AACZ,WAAOlC,MAAKuC,QAAQL,CAAb,IAAsB;EAC9B;EAGDuO,aAAahC,GAAekC,GAAoBC,GAApC;AACV,QAAI/D,IAAQ;AACZ,aAASrI,IAAI,GAAGA,IAAIoM,GAAYpM,KAAK;AACnC,YAAMqM,IAAM,KAAKpF,YAAYkF,IAAanM,CAA9B,IACFiK,EAAQhD,YAAYjH,CAApB,IACAqI;AACVA,UAAQgE,MAAQ,IAChB,KAAKnF,eAAeiF,IAAanM,GAAS,QAANqM,CAApC;IACD;AACD,WAAOhE;EACR;EAED2D,aAAaM,GAAkBH,GAAoBC,GAAvC;AAGV,QAAI7D,IAAS;AACb,QAAiB,IAAb4D,GAAgB;AAGlBA,YAAe;AAHG,UAId3H,IAAU,KAAK3G,QAAQsO,CAAb,GACVI,IAAe,QAAV/H,GACLxE,IAAI;AACR,aAAOA,IATUoM,IAAa,MAAO,GASfpM,KAAK;AAAA,cACnBwM,KAAMF,EAAWzO,QAAQmC,CAAnB,GACNyM,MAAOjI,MAAY,OAAa,QAANgI,MAAgBjE;AAChDA,YAAwB,IAAdkE,OAAQ,IAClB,KAAK9M,WAAWwM,IAAanM,IAAW,QAANyM,OAAiB,KAAY,QAALF,CAA1D,GACA/H,IAAU,KAAK3G,QAAQsO,IAAanM,IAAI,CAA9B,GACVuM,KAAgB,QAAV/H,MAAqBgI,OAAQ,MAAMjE,GACzCA,IAAuB,IAAbgE,MAAO;MAClB;AAfiB,YAiBZC,IAAMF,EAAWzO,QAAQmC,CAAnB,GACNyM,KAAOjI,MAAY,OAAa,QAANgI,KAAgBjE;AAChDA,UAAwB,IAAdkE,MAAQ,IAClB,KAAK9M,WAAWwM,IAAanM,IAAW,QAANyM,MAAiB,KAAY,QAALF,CAA1D;AAEA,UAAIJ,IAAanM,IAAI,KAAK,KAAKrE,OAC7B,OAAM,IAAIG,WAAW,eAAf;AAEiB,YAAP,IAAbsQ,OACH5H,IAAU,KAAK3G,QAAQsO,IAAanM,IAAI,CAA9B,GACVuM,KAAgB,QAAV/H,MANOgI,MAAQ,MAMcjE,GACnCA,IAAuB,IAAbgE,MAAO,IACjB,KAAK5M,WAAWwM,IAAaG,EAAW3Q,QACzB,aAAV6I,IAA8B,QAAL+H,CAD9B;IAGH,OAAM;AACLJ,YAAe;AACf,UAAInM,IAAI;AACR,aAAOA,IAAIsM,EAAW3Q,SAAS,GAAGqE,KAAK;AAAA,cAC/BwE,KAAU,KAAK3G,QAAQsO,IAAanM,CAA1B,GACVwM,KAAMF,EAAWzO,QAAQmC,CAAnB,GACNuM,MAAgB,QAAV/H,OAA2B,QAANgI,MAAgBjE;AACjDA,YAAuB,IAAbgE,OAAO;AACjB,cAAME,MAAOjI,OAAY,OAAOgI,OAAQ,MAAMjE;AAC9CA,YAAwB,IAAdkE,OAAQ,IAClB,KAAK9M,WAAWwM,IAAanM,IAAW,QAANyM,OAAiB,KAAY,QAALF,EAA1D;MACD;AAXI,YAYC/H,IAAU,KAAK3G,QAAQsO,IAAanM,CAA1B,GACVwM,IAAMF,EAAWzO,QAAQmC,CAAnB,GACNuM,KAAgB,QAAV/H,MAA2B,QAANgI,KAAgBjE;AACjDA,UAAuB,IAAbgE,MAAO;AACjB,UAAIE,IAAM;AACe,YAAP,IAAbL,OACHK,KAAOjI,MAAY,OAAOgI,MAAQ,MAAMjE,GACxCA,IAAwB,IAAdkE,MAAQ,KAEpB,KAAK9M,WAAWwM,IAAanM,IAAW,QAANyM,MAAiB,KAAY,QAALF,CAA1D;IACD;AACD,WAAOhE;EACR;EAED2D,oBAAoB9N,GAAD;AACjB,QAAc,MAAVA,EAAa;AACjB,QAAIiK,IAAQ,KAAKxK,QAAQ,CAAb,MAAoBO;AAChC,UAAMsF,IAAO,KAAK/H,SAAS;AAC3B,aAASqE,IAAI,GAAGA,IAAI0D,GAAM1D,KAAK;AAC7B,YAAMwF,IAAI,KAAK3H,QAAQmC,IAAI,CAAjB;AACV,WAAKL,WAAWK,GAA0B,aAArBwF,KAAM,KAAKpH,IAAwBiK,CAAxD,GACAA,IAAQ7C,MAAMpH;IACf;AACD,SAAKuB,WAAW+D,GAAM2E,CAAtB;EACD;EAEwB,OAAlBiD,mBAAmB9N,GAASY,GAAesO,GAAzB;AAAA,UACjBpK,IAAI9E,EAAE7B,QAENc,IAAS,IAAIjB,MADE8G,IAAIoK,GACV,KAAA;AACf,QAAc,MAAVtO,GAAa;AACf,eAAS4B,KAAI,GAAGA,KAAIsC,GAAGtC,KAAKvD,GAAOkD,WAAWK,IAAGxC,EAAEK,QAAQmC,EAAV,CAArB;AAE5B,aADe,IAAX0M,KAAcjQ,EAAOkD,WAAW2C,GAAG,CAArB,GACX7F;IACR;AACD,QAAI4L,IAAQ;AACZ,aAASrI,IAAI,GAAGA,IAAIsC,GAAGtC,KAAK;AAC1B,YAAMwF,IAAIhI,EAAEK,QAAQmC,CAAV;AACVvD,QAAOkD,WAAWK,GAAmB,aAAdwF,KAAKpH,IAAuBiK,CAAnD,GACAA,IAAQ7C,MAAO,KAAKpH;IACrB;AAID,WAHe,IAAXsO,KACFjQ,EAAOkD,WAAW2C,GAAG+F,CAArB,GAEK5L;EACR;EAE2B,OAArByE,sBAAsB1D,GAAS6B,GAAV;AAC1B,UAAMjB,IAAQ5C,MAAKmR,gBAAgBtN,CAArB;AACd,QAAY,IAARjB,EAAW,OAAM,IAAItC,WAAW,gBAAf;AAAN,UACT8Q,IAA4B,IAAdxO,IAAQ,IACtByO,IAAYzO,IAAQ,IACpBzC,IAAS6B,EAAE7B,QACXmR,IAAqB,MAAdD,KACiD,KAAhDrP,EAAEK,QAAQlC,IAAS,CAAnB,MAA2B,KAAKkR,GACxC/M,IAAenE,IAASiR,KAAcE,IAAO,IAAI,IACjDrQ,IAAS,IAAIjB,MAAKsE,GAActC,EAAE5B,IAAzB;AACf,QAAkB,MAAdiR,GAAiB;AACnB,UAAI7M,KAAI;AACR,aAAOA,KAAI4M,GAAY5M,KAAKvD,GAAOkD,WAAWK,IAAG,CAArB;AAC5B,aAAOA,KAAIF,GAAcE,KACvBvD,GAAOkD,WAAWK,IAAGxC,EAAEK,QAAQmC,KAAI4M,CAAd,CAArB;IAEH,OAAM;AACL,UAAIvE,KAAQ;AACZ,eAASrI,KAAI,GAAGA,KAAI4M,GAAY5M,KAAKvD,GAAOkD,WAAWK,IAAG,CAArB;AACrC,eAASA,KAAI,GAAGA,KAAIrE,GAAQqE,MAAK;AAC/B,cAAMwF,KAAIhI,EAAEK,QAAQmC,EAAV;AACVvD,UAAOkD,WACHK,KAAI4M,GAAgC,aAAlBpH,MAAKqH,IAA2BxE,EADtD,GAEAA,KAAQ7C,OAAO,KAAKqH;MACrB;AACD,UAAIC,EACFrQ,GAAOkD,WAAWhE,IAASiR,GAAYvE,EAAvC;eAEc,MAAVA,GAAa,OAAM,IAAIpC,MAAM,oBAAV;IAE1B;AACD,WAAOxJ,EAAOyC,OAAP;EACR;EAE4B,OAAtB+B,uBAAuBzD,GAAS6B,GAAV;AAAA,UACrB1D,IAAS6B,EAAE7B,QACXC,IAAO4B,EAAE5B,MACTwC,IAAQ5C,MAAKmR,gBAAgBtN,CAArB;AACd,QAAY,IAARjB,EAAW,QAAO5C,MAAKuR,sBAAsBnR,CAA3B;AAAP,UACTgR,IAA4B,IAAdxO,IAAQ,IACtByO,IAAYzO,IAAQ;AAC1B,QAAI0B,IAAenE,IAASiR;AAC5B,QAAoB,KAAhB9M,EAAmB,QAAOtE,MAAKuR,sBAAsBnR,CAA3B;AAK9B,QAAIoR,IAAa;AACjB,QAAIpR,GAAM;AAER,UAAuC,MAAlC4B,EAAEK,QAAQ+O,CAAV,KADS,KAAKC,KAAa,GAE9BG,KAAa;UAEb,UAAShN,KAAI,GAAGA,KAAI4M,GAAY5M,KAC9B,KAAqB,MAAjBxC,EAAEK,QAAQmC,EAAV,GAAoB;AACtBgN,YAAa;AACb;MACD;IAGN;AAED,QAAIA,KAA+B,MAAdH,GAAiB;AAAA,YAE9BnN,KAAMlC,EAAEK,QAAQlC,IAAS,CAAnB;AACyB,WAAT,CAAC+D,MACJI;IAC1B;AACD,QAAIrD,IAAS,IAAIjB,MAAKsE,GAAclE,CAAvB;AACb,QAAkB,MAAdiR,GAAiB;AAEnBpQ,QAAOkD,WAAWG,IAAe,GAAG,CAApC;AACA,eAASE,KAAI4M,GAAY5M,KAAIrE,GAAQqE,KACnCvD,GAAOkD,WAAWK,KAAI4M,GAAYpP,EAAEK,QAAQmC,EAAV,CAAlC;IAEH,OAAM;AACL,UAAIqI,KAAQ7K,EAAEK,QAAQ+O,CAAV,MAA0BC;AACtC,YAAMnJ,KAAO/H,IAASiR,IAAa;AACnC,eAAS5M,KAAI,GAAGA,KAAI0D,IAAM1D,MAAK;AAC7B,cAAMwF,KAAIhI,EAAEK,QAAQmC,KAAI4M,IAAa,CAA3B;AACVnQ,UAAOkD,WAAWK,IAA8B,aAAzBwF,MAAM,KAAKqH,IAA4BxE,EAA9D,GACAA,KAAQ7C,OAAMqH;MACf;AACDpQ,QAAOkD,WAAW+D,IAAM2E,EAAxB;IACD;AAMD,WALI2E,MAGFvQ,IAASjB,MAAK2D,iBAAiB1C,GAAtB,MAAoCA,CAApC,IAEJA,EAAOyC,OAAP;EACR;EAE2B,OAArB6N,sBAAsBnR,GAAD;AAAA,WACtBA,IACKJ,MAAKe,WAAW,GAAhB,IAAA,IAEFf,MAAKa,OAAL;EACR;EAEqB,OAAfsQ,gBAAgBnP,GAAD;AACpB,QAAe,IAAXA,EAAE7B,OAAY,QAAO;AACzB,UAAM+B,IAAQF,EAAEG,gBAAgB,CAAlB;AAAd,WACID,IAAQlC,MAAK+D,mBAAyB,KACnC7B;EACR;EAEmB,OAAbb,cAAcoQ,GAAUC,IAAK,WAAhB;AAClB,QAAmB,YAAf,OAAOD,EAAkB,QAAOA;AACpC,QAAIA,EAAIvR,gBAAgBF,MAAM,QAAOyR;AACrC,QAAsB,eAAlB,OAAOE,UACyB,YAA9B,OAAOA,OAAOC,aAA0B;AAC5C,YAAMC,KAAeJ,EAAIE,OAAOC,WAAR;AACxB,UAAIC,IAAc;AAChB,cAAMzQ,KAAYyQ,GAAaH,CAAD;AAC9B,YAAyB,YAArB,OAAOtQ,GAAwB,QAAOA;AAC1C,cAAM,IAAIE,UAAU,0CAAd;MACP;IACF;AACD,UAAMwQ,IAAUL,EAAIK;AACpB,QAAIA,GAAS;AACX,YAAM1Q,KAAY0Q,EAAQC,KAAKN,CAAb;AAClB,UAAyB,YAArB,OAAOrQ,GAAwB,QAAOA;IAC3C;AACD,UAAMM,IAAW+P,EAAI/P;AACrB,QAAIA,GAAU;AACZ,YAAMN,KAAYM,EAASqQ,KAAKN,CAAd;AAClB,UAAyB,YAArB,OAAOrQ,GAAwB,QAAOA;IAC3C;AACD,UAAM,IAAIE,UAAU,0CAAd;EACP;EAEiB,OAAXiG,YAAYrF,GAAD;AAAA,WACZlC,MAAKwH,WAAWtF,CAAhB,IAA+BA,IAC5B,CAAEA;EACV;EAEgB,OAAVsF,WAAWtF,GAAD;AACf,WAAwB,YAAjB,OAAOA,KAAgC,SAAVA,KAC7BA,EAAMhC,gBAAgBF;EAC9B;EAEuB,OAAjBkH,kBAAkBJ,GAAW9E,GAAZ;AAAA,UAChBgC,IAAiC,KAAhB8C,IAAI,MAAM,IAC3B7F,IAAS,IAAIjB,MAAKgE,GAAchC,EAAE5B,IAAzB,GACT8H,IAAOlE,IAAe;AAC5B,aAASQ,KAAI,GAAGA,KAAI0D,GAAM1D,KACxBvD,GAAOkD,WAAWK,IAAGxC,EAAEK,QAAQmC,EAAV,CAArB;AAEF,QAAIN,IAAMlC,EAAEK,QAAQ6F,CAAV;AACV,QAAiB,KAAZpB,IAAI,IAAW;AAClB,YAAMkL,KAAO,KAAMlL,IAAI;AACvB5C,UAAOA,KAAO8N,OAAUA;IACzB;AAED,WADA/Q,EAAOkD,WAAW+D,GAAMhE,CAAxB,GACOjD,EAAOyC,OAAP;EACR;EAEoC,OAA9ByD,+BAA+BL,GAAW9E,GAC7C4C,GADiC;AAAA,QAAA,IAOrBnE,KAAKwR;AAAAA,UALbjO,IAAiC,KAAhB8C,IAAI,MAAM,IAC3B7F,IAAS,IAAIjB,MAAKgE,GAAcY,CAAvB;AACf,QAAIJ,IAAI;AACR,UAAM0D,IAAOlE,IAAe;AAC5B,QAAI+I,IAAS;AAEb,eADMmF,IAAQ,EAAShK,GAAMlG,EAAE7B,MAAjB,GACPqE,IAAI0N,GAAO1N,KAAK;AACrB,YAAMsI,KAAI,IAAI9K,EAAEK,QAAQmC,CAAV,IAAeuI;AAC7BA,UAAsB,IAAZD,OAAM,IAChB7L,EAAOkD,WAAWK,GAAO,aAAJsI,EAArB;IACD;AACD,WAAOtI,IAAI0D,GAAM1D,IACfvD,GAAOkD,WAAWK,GAA4B,IAAd,aAAV,CAACuI,CAAvB;AAEF,QAAI7I,IAAMgE,IAAOlG,EAAE7B,SAAS6B,EAAEK,QAAQ6F,CAAV,IAAkB;AAC9C,UAAMiK,IAAkBrL,IAAI;AAC5B,QAAIsL;AACJ,QAAwB,KAApBD,EACFC,KAAY,IAAIlO,IAAM6I,GACtBqF,KAAa;SACR;AACL,YAAMJ,IAAO,KAAKG;AAClBjO,UAAOA,KAAO8N,MAAUA;AACxB,YAAMK,KAAa,KAAM,KAAKL;AAC9BI,UAAYC,KAAanO,IAAM6I,GAC/BqF,KAAcC,KAAa;IAC5B;AAED,WADApR,EAAOkD,WAAW+D,GAAMkK,CAAxB,GACOnR,EAAOyC,OAAP;EACR;EAGDrB,QAAQmC,GAAD;AACL,WAAO,KAAKA,CAAL;EACR;EACDrC,gBAAgBqC,GAAD;AACb,WAAO,KAAKA,CAAL,MAAY;EACpB;EACDL,WAAWK,GAAWhD,GAAZ;AACR,SAAKgD,CAAL,IAAkB,IAARhD;EACX;EACDyL,eAAezI,GAAWhD,GAAZ;AACZ,SAAKgD,CAAL,IAAkB,IAARhD;EACX;EACDiO,oBAAiB;AACf,UAAM6C,IAAM,KAAKnS;AAAjB,WACqC,SAAjC,KAAKgC,gBAAgBmQ,IAAM,CAA3B,IAAsD,IAANA,IAAU,IACnD,IAAJA;EACR;EACD7G,YAAYjH,GAAD;AACT,WAA4C,QAApC,KAAKA,MAAM,CAAX,MAA6B,MAAL,IAAJA;EAC7B;EACDkH,eAAelH,GAAWtC,GAAZ;AAAA,UACNS,IAAa6B,MAAM,GACnB+N,IAAW,KAAKlQ,QAAQM,CAAb,GACX6P,IAAe,IAAJhO,IAAqB,QAAX+N,IAAsBrQ,KAAS,KACpB,aAAXqQ,IAAkC,QAARrQ;AACrD,SAAKiC,WAAWxB,GAAY6P,CAA5B;EACD;EAEgB,OAAVC,WAAWC,GAAcjQ,GAAf;AACf,QAAIxB,IAAS;AAAb,WACkB,IAAXwB,IACU,KAAXA,MAAcxB,KAAUyR,IAC5BjQ,OAAc,GACdiQ,KAAQA;AAEV,WAAOzR;EACR;EAsCqB,OAAfH,gBAAgBkB,GAAD;AACpB,YAAY,aAAJA,OAAoBA;EAC7B;AAAA;AAtCMhC,KAAAA,eAAA,UACAA,KAAAA,mBAAmBA,KAAKK,gBAAgB,GAQxCL,KAAAA,oBAAoB,CACzB,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC9B,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KACnC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KACnC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KACnC,KAAK,KAAK,KAAK,GALU,GAQpBA,KAAAA,2BAA2B,GAC3BA,KAAAA,gCAAgC,KAAKA,KAAKwJ,0BAC1CxJ,KAAAA,qBAAA,CAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,GAAA,GACAA,KAAAA,yBAAyB,IAAI2S,YAAY,CAAhB,GACzB3S,KAAAA,yBAAyB,IAAI4S,aAAa5S,KAAK6S,sBAAtB,GACzB7S,KAAAA,uBAAuB,IAAI8S,WAAW9S,KAAK6S,sBAApB,GAKvB7S,KAAAA,UAAUS,KAAKsS,QAAQ,SAAS/Q,GAAT;AAC5B,SAAOvB,KAAKsS,MAAM/Q,CAAX,IAAgB;AACxB,IAAG,SAASA,GAAT;AAAA,SACQ,MAANA,IAAgB,KAC6B,IAA1C,MAAqC,IAA/BvB,KAAKuS,IAAIhR,MAAM,CAAf,IAAoBvB,KAAKwS;AACvC,GACMjT,KAAAA,SAASS,KAAKyS,QAAQ,SAASC,GAAWC,GAApB;AAC3B,SAAiB,IAATD,IAAIC;AACb;AAAA,IAAA,eAAA;;;ADz3DI,IAAM,gBAAN,cAA4B,cAAAC,KAAQ;AAAA;AAAA,EAEzC,gBAAgB,aAA4E;AAC1F,UAAM,eAAe,KAAK,UAAU,YAAY,QAAQ;AACxD,UAAM,iBAAiB,KAAK,OAAO,OAAO,YAAY,QAAQ,IAAI,KAAK,SAAS,KAAK;AACrF,UAAM,gBAAgB,KAAK,UAAU,cAAc;AAEnD,UAAM,eAAe,aAAK,OAAO,EAAE;AACnC,UAAM,iBAAiB,aAAK,OAAO,GAAG;AAEtC,UAAM,qBAAqB,aAAK,OAAO,aAAK,SAAS,YAAY,UAAU,YAAY,GAAG,cAAc;AACxG,UAAM,YAAY,aAAK,SAAS,oBAAoB,cAAc,QAAQ;AAC1E,UAAM,cAAc,aAAK,IAAI,aAAa,UAAU,kBAAkB;AAEtE,UAAM,eAAe,aAAK,OAAO,WAAW,WAAW;AAEvD,WAAO;AAAA,MACL,+BAAe,cAAc,gBAAgB,YAAY;AAAA,MACzD;AAAA,IACF;AAAA,EACF;AAAA;AAAA,EAGA,eAAe,cAA6E;AAC1F,UAAM,gBAAgB,KAAK,UAAU,aAAa,QAAQ;AAC1D,UAAM,gBAAgB,KAAK,OAAO,OAAO,aAAa,QAAQ,IAAI,KAAK,SAAS,KAAK;AACrF,UAAM,eAAe,KAAK,UAAU,aAAa;AAEjD,UAAM,eAAe,aAAK,OAAO,GAAG;AACpC,UAAM,iBAAiB,aAAK,OAAO,EAAE;AAErC,UAAM,YAAY,aAAK,SAAS,aAAK,SAAS,aAAa,UAAU,aAAa,QAAQ,GAAG,YAAY;AACzG,UAAM,cAAc,aAAK,SAAS,aAAK,SAAS,cAAc,UAAU,aAAa,QAAQ,GAAG,cAAc;AAC9G,UAAM,cAAc,aAAK,IAAI,aAAK,OAAO,WAAW,WAAW,GAAG,aAAK,OAAO,CAAC,CAAC;AAEhF,WAAO;AAAA,MACL,+BAAe,cAAc,eAAe,WAAW;AAAA,MACvD;AAAA,IACF;AAAA,EACF;AACF;;;ADvCO,IAAM,0BAA0B;AAEhC,IAAM,cAAN,MAAkB;AAAA,EAoBvB,YACE,UACQ,QACA,aACR;AAFQ;AACA;AArBV,SAAQ,SAAwB;AAMhC,SAAQ,QAAgB,CAAC;AAEzB,SAAQ,qBAA0C;AAElD,SAAQ,0BAA+C;AACvD,SAAQ,aAAqB;AAY3B,SAAK,WAAW;AAChB,SAAK,cAAc,OAAO,aAAa;AACvC,SAAK,UAAU,OAAO;AAGtB,UAAM,YAAY;AAAA;AAAA,MAEhB;AAAA,MACA;AAAA;AAAA,MAGA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,MAGA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,MAGA;AAAA,IACF;AAGA,UAAM,aAAa;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,UAAM,WAAW;AAAA,MACf,GAAG;AAAA,MACH;AAAA,IACF;AAEA,SAAK,iBAAiB,IAAI,wBAAS,OAAO,eAAe,WAAW,QAAQ;AAC5E,SAAK,kBAAkB,IAAI,wBAAS,OAAO,gBAAgB,YAAY,QAAQ;AAE/E,QAAI,OAAO,cAAc;AACvB,WAAK,gBAAgB,IAAI,wBAAS,OAAO,cAAc,UAAU,QAAQ;AAAA,IAC3E;AAEA,SAAK,qBAAqB,IAAI,QAAQ,CAAC,YAAY;AACjD,WAAK,qBAAqB;AAAA,IAC5B,CAAC;AAED,SAAK,0BAA0B,IAAI,QAAQ,CAAC,YAAY;AACtD,WAAK,0BAA0B;AAAA,IACjC,CAAC;AACD,SAAK,sBAAsB;AAC3B,SAAK,eAAe;AAAA,EACtB;AAAA;AAAA,EAGA,MAAM,iBAAkC;AACtC,QAAI,CAAC,KAAK,oBAAoB;AAC5B,aAAO,KAAK;AAAA,IACd;AACA,QAAI,KAAK,YAAY,cAAc,KAAK,eAAe;AACrD,YAAM,CAAC,EAAE,GAAG,IAAI,MAAM,KAAK,eAAe,SAAS,KAAK,YAAY,UAAU;AAC9E,WAAK,aAAa;AAAA,IACpB;AAGA,QAAI,KAAK,yBAAyB;AAChC,WAAK,wBAAwB;AAC7B,WAAK,0BAA0B;AAAA,IACjC;AAEA,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,UAAU,QAAsB;AAC9B,SAAK,SAAS;AAEd,SAAK,iBAAiB,KAAK,eAAe,QAAQ,MAAM;AAExD,QAAI,KAAK,eAAe;AACtB,WAAK,gBAAgB,KAAK,cAAc,QAAQ,MAAM;AAAA,IACxD;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,gBAAgB,OAAe,UAA0B;AAC/D,UAAM,MAAM,WAAW,KAAK;AAC5B,QAAI,MAAM,GAAG,GAAG;AACd,aAAO;AAAA,IACT;AACA,WAAO,IAAI,QAAQ,QAAQ;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAa,wBAAuC;AAElD,UAAM,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASd,QAAI;AACF,YAAM,WAAW,MAAM,MAAM,KAAK,OAAO,eAAe;AAAA,QACtD,QAAQ;AAAA,QACR,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,QAC9C,MAAM,KAAK,UAAU,EAAE,MAAM,CAAC;AAAA,MAChC,CAAC;AACD,UAAI,CAAC,SAAS,GAAI,OAAM,IAAI,MAAM,kBAAkB,SAAS,MAAM,EAAE;AACrE,YAAM,EAAE,KAAK,IAAI,MAAM,SAAS,KAAK;AACrC,UAAI,CAAC,QAAQ,CAAC,KAAK,MAAO;AAC1B,YAAM,QAAgB,CAAC;AACvB,iBAAW,QAAQ,KAAK,OAAO;AAC7B,cAAM;AAAA,UACJ,KAAK,cAAc,IAAI;AAAA,QACzB;AAAA,MACF;AACA,WAAK,QAAQ;AAGb,YAAM,WAAW,KAAK,MAAM;AAAA,QAC1B,CAAC,SACC,KAAK,OAAO,GAAG,YAAY,MAAM,KAAK,YAAY,YAAY,KAC9D,KAAK,OAAO,GAAG,YAAY,MAAM,KAAK,YAAY,YAAY;AAAA,MAClE;AACA,UAAI,UAAU;AACZ,cAAM,YACJ,SAAS,OAAO,GAAG,YAAY,MAAM,KAAK,YAAY,YAAY,IAC9D,SAAS,SACT,SAAS;AACf,aAAK,YAAY;AAAA,UACf,SAAS,UAAU;AAAA,UACnB,QAAQ,UAAU;AAAA,UAClB,MAAM,UAAU;AAAA,UAChB,UAAU,OAAO,UAAU,QAAQ;AAAA,QACrC;AAAA,MACF,OAAO;AACL,cAAM,IAAI,MAAM,qBAAqB;AAAA,MACvC;AAEA,UAAI,KAAK,oBAAoB;AAC3B,aAAK,mBAAmB;AACxB,aAAK,qBAAqB;AAAA,MAC5B;AAAA,IACF,SAAS,OAAO;AACd,cAAQ,MAAM,mCAAmC,KAAK;AACtD,UAAI,KAAK,oBAAoB;AAC3B,aAAK,mBAAmB;AACxB,aAAK,qBAAqB;AAAA,MAC5B;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAa,qBAAoC;AAC/C,WAAO,MAAM,KAAK;AAAA,EACpB;AAAA,EAEA,MAAa,0BAAyC;AACpD,WAAO,MAAM,KAAK;AAAA,EACpB;AAAA,EAEA,cAAc,MAkBL;AACP,UAAM,EAAE,QAAQ,QAAQ,IAAI,UAAU,SAAS,IAAI;AAEnD,UAAM,YAAY,IAAI;AAAA,MACpB,KAAK;AAAA,MACL,OAAO;AAAA,MACP,OAAO,OAAO,QAAQ;AAAA,MACtB,OAAO;AAAA,MACP,OAAO;AAAA,IACT;AAEA,UAAM,YAAY,IAAI;AAAA,MACpB,KAAK;AAAA,MACL,OAAO;AAAA,MACP,OAAO,OAAO,QAAQ;AAAA,MACtB,OAAO;AAAA,MACP,OAAO;AAAA,IACT;AAEA,QAAI;AACJ,QAAI;AAEJ,QAAI,YAAY,UAAU;AACxB,uBAAa,2BAAW,UAAU,OAAO,OAAO,QAAQ,CAAC;AACzD,uBAAa,2BAAW,UAAU,OAAO,OAAO,QAAQ,CAAC;AAAA,IAC3D,OAAO;AACL,YAAM,IAAI,MAAM,kBAAkB;AAAA,IACpC;AAEA,UAAM,UAAU,gCAAe;AAAA,MAC7B;AAAA,MACA,WAAW,SAAS;AAAA,IACtB;AAEA,UAAM,UAAU,gCAAe;AAAA,MAC7B;AAAA,MACA,WAAW,SAAS;AAAA,IACtB;AAEA,UAAM,UAAU,IAAI,cAAc,SAAS,OAAO;AAClD,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKO,WAAmB;AACxB,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAc,aACZ,WACA,SACA,aACA,gBACsH;AAGtH,UAAM,eAAe,IAAI;AAAA,MACvB,KAAK;AAAA,MACL,UAAU;AAAA,MACV,UAAU;AAAA,MACV,UAAU;AAAA,MACV,UAAU;AAAA,IACZ;AAEA,UAAM,aAAa,IAAI;AAAA,MACrB,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,IACV;AAGA,UAAM,iBAAiB,gCAAe;AAAA,MACpC,iBAAiB,aAAa;AAAA,MAC9B;AAAA,IACF;AACA,UAAM,KAAK,mBAAmB;AAC9B,UAAM,KAAK,wBAAwB;AAEnC,UAAM,QAAQ,KAAK,SAAS;AAC5B,QAAI,CAAC,SAAS,MAAM,WAAW,GAAG;AAChC,YAAM,IAAI,MAAM,uDAAuD;AAAA,IACzE;AAEA,UAAM,cAAc;AAAA,MAClB,SAAS;AAAA,MACT,eAAe;AAAA,IACjB;AAEA,UAAM,SAAS,iBACb,qBAAM,kBAAkB,OAAO,cAAc,gBAAgB,WAAW,IACtE,qBAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEF,QAAI,OAAO,SAAS,GAAG;AACrB,aAAO,OAAO,CAAC;AAAA,IACjB,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEQ,kBAAkB,OAAuB;AAC/C,QAAI,CAAC,MAAM,SAAS,GAAG,EAAG,QAAO;AAGjC,YAAQ,MAAM,QAAQ,UAAU,EAAE;AAElC,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAM,eACJ,WACA,UACA,cACA,gBACA,UAIC;AACD,QAAI;AAGF,YAAM,kBAAkB,KAAK,gBAAgB,cAAc,iBAAiB,SAAS,WAAW,UAAU,QAAQ;AAElH,UAAI,oBAAgB;AAAA,QAClB;AAAA,QACA,iBAAiB,SAAS,WAAW,UAAU;AAAA,MACjD;AAEA,UAAI,kBAAkB,KAAK,cAAc,KAAK,aAAa,IAAI;AAE7D,cAAM,YAAY,gBAAgB;AAClC,cAAM,cAAc,0BAA0B,KAAK;AAGnD,yBAAiB,YAAY,cAAc,MAAM;AAAA,MACnD;AAEA,YAAM,wBAAwB,UAAU,WAAW,sBAAO,cAAc,KAAK,YAAa;AAC1F,YAAM,uBAAuB,SAAS,WAAW,sBAAO,cAAc,KAAK,YAAa;AAGxF,YAAM,QAAQ,MAAM,KAAK;AAAA,QACvB;AAAA,QACA;AAAA,QACA,cAAc,SAAS;AAAA,QACvB;AAAA,MACF;AAEA,UAAI,CAAC,OAAO;AACV,cAAM,IAAI,MAAM,sDAAsD;AAAA,MACxE;AAEA,YAAM,WAAW,MAAM,YAAY,SAAS,SAAS;AACrD,YAAM,YAAY,MAAM,aAAa,SAAS,SAAS;AAiBvD,UAAI,UAA2B;AAAA,QAC7B,cAAU,4BAAY,UAAU,UAAU,QAAQ;AAAA,QAClD,WAAW,iBAAiB,KAAK,kBAAkB,eAAe,QAAI,4BAAY,WAAW,SAAS,QAAQ;AAAA,QAC9G,aAAa;AAAA,QACb,cAAc;AAAA,MAChB;AAEA,YAAM,kBAAkB,IAAI,yBAAQ,KAAK,MAAM,WAAW,QAAQ,IAAI,GAAG,GAAG,GAAK;AAEjF,UAAI,aAAa;AAEjB,UAAI,gBAAgB;AAClB,sBAAc,MAAM,gBAAgB,eAAe,EAAE,SAAS,SAAS;AACvE,gBAAQ,iBAAiB;AACzB,gBAAQ,kBAAc,4BAAY,aAAa,UAAU,QAAQ;AAAA,MACnE,OAAO;AACL,uBAAe,MAAM,iBAAiB,eAAe,EAAE,SAAS,SAAS;AACzE,gBAAQ,kBAAkB;AAC1B,gBAAQ,mBAAe,4BAAY,cAAc,SAAS,QAAQ;AAAA,MACpE;AAEA,UAAI,KAAK,cAAc,KAAK,aAAa,IAAI;AAC3C,YAAI,CAAC,gBAAgB;AAEnB,gBAAMC,aAAY,OAAO,MAAM,aAAa,SAAS,SAAS,CAAC;AAC/D,gBAAM,oBAAqBA,cAAa,0BAA0B,KAAK,cAAe;AAEtF,kBAAQ,eAAe,kBAAkB,SAAS;AAClD,kBAAQ,gBAAY,4BAAY,mBAAmB,SAAS,QAAQ;AAEpE,cAAI,cAAc;AAChB,kBAAM,SAAS,OAAO,aAAa,SAAS,CAAC;AAC7C,kBAAM,iBAAkB,UAAU,0BAA0B,KAAK,cAAe;AAEhF,oBAAQ,kBAAkB,eAAe,SAAS;AAClD,oBAAQ,mBAAe,4BAAY,gBAAgB,SAAS,QAAQ;AAAA,UACtE;AAAA,QACF;AAAA,MACF;AAEA,aAAO;AAAA,QACL;AAAA,QACA,UAAU;AAAA,MACZ;AAAA,IACF,SAAS,OAAO;AACd,cAAQ,MAAM,sCAAsC,KAAK;AACzD,YAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEA,MAAM,cACJ,cACA,QACA,gBACkB;AAClB,QAAI;AACF,YAAM,gBAAgB,IAAI;AAAA,QACxB;AAAA,QACA,CAAC,4DAA4D;AAAA,QAC7D,KAAK;AAAA,MACP;AAEA,YAAM,gBAAgB,MAAM,KAAK,QAAQ,WAAW;AACpD,UAAI,CAAC,eAAe;AAClB,cAAM,IAAI,MAAM,6BAA6B;AAAA,MAC/C;AAEA,YAAM,YAAY,MAAM,cAAc,UAAU,eAAe,cAAc;AAC7E,YAAM,gBAAY,2BAAW,QAAQ,EAAE;AACvC,aAAO,aAAa;AAAA,IACtB,SAAS,OAAO;AACd,cAAQ,MAAM,4BAA4B,KAAK;AAC/C,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,MAAM,iBACJ,WACA,aAMC;AACD,QAAI,CAAC,KAAK,QAAQ;AAChB,YAAM,IAAI,MAAM,6BAA6B;AAAA,IAC/C;AAGA,QAAI,UAAU,YAAY,sBAAO,aAAa;AAC5C,YAAM,gBAAgB,IAAI;AAAA,QACxB,UAAU;AAAA,QACV,CAAC,8DAA8D,kDAAkD;AAAA,QACjH,KAAK;AAAA,MACP;AAEA,YAAM,gBAAgB,MAAM,KAAK,OAAO,WAAW;AAEnD,YAAM,cAAc,KAAK,OAAO,gBAAgB,KAAK,OAAO;AAC5D,YAAM,YAAoB,MAAM,cAAc,UAAU,eAAe,WAAW;AAClF,UAAI,YAAY,aAAa;AAC3B,eAAO;AAAA,UACL,kBAAkB;AAAA,UAClB;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,MACL,kBAAkB;AAAA,IACpB;AAAA,EAEF;AAAA,EAEA,MAAM,sBACJ,WACA,aAC6C;AAE7C,UAAM,uBAAuB,MAAM,KAAK,iBAAiB,WAAW,WAAW;AAE/E,QAAI,CAAC,qBAAqB,kBAAkB;AAC1C,aAAO;AAAA,IACT;AAGA,WAAO,MAAM,qBAAqB,cAAe,QAAQ,qBAAqB,aAAa,sBAAO,UAAU;AAAA,EAC9G;AAAA,EAEA,MAAM,WACJ,WACA,SACA,aACA,cACA,MACA,gBACA,UAC8B;AAC9B,QAAI,CAAC,KAAK,QAAQ;AAChB,YAAM,IAAI,MAAM,6BAA6B;AAAA,IAC/C;AAEA,QAAI;AAEF,YAAM,oBAAoB,KAAK,MAAM,KAAK,IAAI,IAAI,GAAI,IAAK,WAAW;AAEtE,UAAI;AACJ,YAAM,gBAAgB,MAAM,KAAK,OAAO,WAAW;AACnD,YAAM,QAAQ,KAAK,gBAAgB,KAAK,cAAc,YAAY,KAAK,eAAe;AAEtF,UAAI;AAGJ,YAAM,KAAK,KAAK,OAAO,eAAe,KAAK,OAAO,eAAe;AAEjE,UAAI,gBAAgB;AAElB,YAAI,UAAU,YAAY,sBAAO,aAAa;AAE5C,qBAAW,MAAM,mBAAmB,yBAAyB;AAAA,YAC3D;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF,CAAC;AAAA,QACH,WAAW,QAAQ,YAAY,sBAAO,aAAa;AAEjD,qBAAW,MAAM,mBAAmB,yBAAyB;AAAA,YAC3D;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF,CAAC;AAAA,QACH,OAAO;AAEL,qBAAW,MAAM,mBAAmB,4BAA4B;AAAA,YAC9D;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF,OAAO;AACL,YAAI,UAAU,YAAY,sBAAO,aAAa;AAE5C,qBAAW,MAAM,mBAAmB,yBAAyB;AAAA,YAC3D;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF,CAAC;AAAA,QACH,WAAW,QAAQ,YAAY,sBAAO,aAAa;AAEjD,qBAAW,MAAM,mBAAmB,yBAAyB;AAAA,YAC3D;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF,CAAC;AAAA,QACH,OAAO;AAEL,qBAAW,MAAM,mBAAmB,4BAA4B;AAAA,YAC9D;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF;AAEA,UAAI,KAAK,eAAe;AACtB,uBAAW,wBAAQ,KAAK,wBAAwB,sBAAO,SAAS,QAAQ,GAAG,CAAC,GAAG,UAAU,KAAK,YAAY,UAAU,CAAC;AAAA,MACvH;AAEA,WAAK,MAAM,KAAK,OAAO,gBAAgB;AAAA,QACrC,IAAI,KAAK,OAAO,gBAAgB,KAAK,OAAO;AAAA,QAC5C,MAAM;AAAA,QACN,MAAM;AAAA,QACN,OAAO,UAAU,YAAY,sBAAO,cAAc,cAAc;AAAA,MAClE,CAAC;AAGD,aAAO;AAAA,IACT,SAAS,OAAO;AACd,cAAQ,MAAM,0BAA0B,KAAK;AAC7C,YAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEA,MAAM,eAAe,QAAgB,QAAiC;AACpE,QAAI;AACF,aAAO,MAAM,KAAK,gBAAgB,QAAQ,QAAQ,MAAM;AAAA,IAC1D,SAAS,OAAO;AACd,cAAQ,MAAM,+BAA+B,KAAK;AAClD,YAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEA,MAAM,qBAAqB,QAAgB,QAAkC;AAC3E,QAAI;AACF,YAAM,cAAc,MAAM,KAAK,eAAe,QAAQ,MAAM;AAC5D,aAAO,gBAAgB;AAAA,IACzB,SAAS,OAAO;AACd,cAAQ,MAAM,6BAA6B,KAAK;AAChD,aAAO;AAAA,IACT;AAAA,EACF;AAAA;AAAA,EAGA,MAAM,YACJ,WACA,SACA,UACA,oBAA4B,KACa;AACzC,QAAI;AAEF,YAAM,oBAAoB,IAAI;AAAA,QAC5B,KAAK;AAAA,QACL,UAAU;AAAA,QACV,UAAU;AAAA,QACV,UAAU;AAAA,QACV,UAAU;AAAA,MACZ;AAEA,YAAM,kBAAkB,IAAI;AAAA,QAC1B,KAAK;AAAA,QACL,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,QAAQ;AAAA,MACV;AAGA,YAAM,iBAAiB,gCAAe;AAAA,QACpC;AAAA,YACA,2BAAW,UAAU,UAAU,QAAQ,EAAE,SAAS;AAAA,MACpD;AAGA,YAAM,cAAc,MAAM,KAAK,eAAe,UAAU,SAAS,QAAQ,OAAO;AAChF,UAAI,gBAAgB,4BAAa;AAC/B,cAAM,IAAI,MAAM,yBAAyB;AAAA,MAC3C;AAGA,YAAM,OAAO,IAAI;AAAA,QACf,gCAAe,cAAc,mBAAmB,GAAG;AAAA,QACnD,gCAAe,cAAc,iBAAiB,GAAG;AAAA,MACnD;AAGA,YAAM,QAAQ,IAAI,qBAAM,CAAC,IAAI,GAAG,mBAAmB,eAAe;AAGlE,YAAM,QAAQ,IAAI;AAAA,QAChB;AAAA,QACA;AAAA,QACA,2BAAU;AAAA,MACZ;AAEA,aAAO;AAAA,IACT,SAAS,OAAO;AACd,cAAQ,MAAM,yBAAyB,KAAK;AAC5C,YAAM;AAAA,IACR;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,mBAAmB,QAAgB,KAAK,QAAwC;AACpF,UAAM,aAAa,KAAK,IAAI,OAAO,GAAI;AACvC,UAAM,QAAQ;AAAA,sBACI,UAAU;AAAA,UACtB,SAAS;AAAA,uCACqB,MAAM;AAAA,qCACR,MAAM;AAAA,aAC/B,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQX,QAAI;AACF,YAAM,WAAW,MAAM,MAAM,KAAK,OAAO,eAAe;AAAA,QACtD,QAAQ;AAAA,QACR,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,QAC9C,MAAM,KAAK,UAAU,EAAE,MAAM,CAAC;AAAA,MAChC,CAAC;AACD,UAAI,CAAC,SAAS,GAAI,OAAM,IAAI,MAAM,kBAAkB,SAAS,MAAM,EAAE;AACrE,YAAM,EAAE,KAAK,IAAI,MAAM,SAAS,KAAK;AACrC,UAAI,CAAC,QAAQ,CAAC,KAAK,OAAQ,QAAO,CAAC;AACnC,aAAO,KAAK,OAAO,IAAI,CAAC,WAAgB;AAAA,QACtC,SAAS,MAAM;AAAA,QACf,QAAQ,MAAM;AAAA,QACd,MAAM,MAAM;AAAA,QACZ,UAAU,OAAO,MAAM,QAAQ;AAAA,MACjC,EAAE;AAAA,IACJ,SAAS,OAAO;AACd,cAAQ,MAAM,qCAAqC,KAAK;AACxD,aAAO,CAAC;AAAA,IACV;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWQ,wBACN,eACA,cACA,cACA,YACY;AAEZ,UAAM,cACJ,aAAa,WAAW,IACpB,IAAI,WAAW,CAAC,IAChB,aAAa,OAAO,CAAC,KAAK,QAAQ;AAClC,YAAM,MAAM,IAAI,WAAW,IAAI,SAAS,IAAI,MAAM;AAClD,UAAI,IAAI,KAAK,CAAC;AACd,UAAI,IAAI,KAAK,IAAI,MAAM;AACvB,aAAO;AAAA,IACT,CAAC;AAEL,UAAM,kBAAkB,IAAI,WAAW,CAAC,aAAa,SAAS,GAAI,CAAC;AAEnE,UAAM,aAAa,sBAAO,UAAU,sBAAO,YAAY,YAAY,CAAC;AACpE,UAAM,cAAc,sBAAO,SAAS,UAAU,EAAE,MAAM,GAAG,EAAE;AAE3D,UAAM,QAAsB;AAAA,MAC1B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,QAAI,YAAY;AACd,YAAM,kBAAkB,sBAAO,SAAS,UAAU;AAClD,YAAM,kBAAkB,sBAAO,UAAU,sBAAO,YAAY,SAAS,CAAC;AACtE,YAAM,mBAAmB,sBAAO,SAAS,eAAe,EAAE,MAAM,GAAG,EAAE;AACrE,YAAM,KAAK,iBAAiB,gBAAgB;AAAA,IAC9C;AAEA,UAAM,WAAW,MAAM,OAAO,CAAC,KAAK,MAAM,MAAM,EAAE,QAAQ,CAAC;AAC3D,UAAM,MAAM,IAAI,WAAW,QAAQ;AACnC,QAAI,SAAS;AACb,eAAW,KAAK,OAAO;AACrB,UAAI,IAAI,GAAG,MAAM;AACjB,gBAAU,EAAE;AAAA,IACd;AACA,WAAO;AAAA,EACT;AACF;;;AG7yBO,IAAM,mBAAiC;AAAA,EAC5C,aAAa;AAAA,EACb,cAAc;AAChB;AAEO,IAAM,oBAAN,MAAwB;AAAA,EAsB7B,YAAY,SAAyB;AAlBrC,SAAQ,QAA8B;AAAA,MACpC,QAAQ;AAAA,IACV;AAIA,SAAQ,QAA6B;AAAA,MACnC,WAAW;AAAA,MACX,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,gBAAgB;AAAA,MAChB,UAAU;AAAA,IACZ;AAOE,SAAK,UAAU;AAEf,SAAK,aAAa;AAAA,EACpB;AAAA,EAEQ,eAAqB;AAC3B,SAAK,gBAAgB,IAAI;AAAA,MACtB,KAAK,QAAQ;AAAA,MACd,KAAK,QAAQ;AAAA,IACf;AAEA,SAAK,cAAc,IAAI;AAAA,MACrB,KAAK,cAAc,YAAY;AAAA,MAC9B,KAAK,QAAQ;AAAA,MACd,KAAK;AAAA,IACP;AAAA,EACF;AAAA,EAEA,MAAc,UAAU,OAAqD;AAC3E,UAAM,OAA6B;AAAA,MACjC,GAAG,KAAK;AAAA,MACR,GAAG;AAAA,IACL;AACA,SAAK,QAAQ;AACb,QAAI,OAAO,KAAK,QAAQ,aAAa,YAAY;AAC/C,YAAM,KAAK,QAAQ,SAAS,MAAM,KAAK;AAAA,IACzC;AAAA,EACF;AAAA,EAEA,MAAM,cAAc,kBAAqD;AACvE,UAAM,UAAU,MAAM,KAAK,cAAe,QAAQ,gBAAgB;AAClE,UAAM,SAAS,KAAK,cAAe,UAAU;AAC7C,QAAI,OAAQ,MAAK,YAAa,UAAU,MAAM;AAC9C,WAAO;AAAA,EACT;AAAA,EAEA,mBAAyB;AACvB,SAAK,cAAe,WAAW;AAC/B,SAAK,YAAa,UAAU,IAAW;AAAA,EACzC;AAAA,EAEA,WAAiC;AAC/B,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAY,WAAyB;AACnC,WAAO;AAAA,MACL,GAAG;AAAA,MACH,GAAI,KAAK,MAAM,YAAY,CAAC;AAAA,IAC9B;AAAA,EACF;AAAA,EAGA,MAAM,yBAAwC;AAC5C,UAAM,EAAE,WAAW,SAAS,QAAQ,eAAe,IAAI,KAAK;AAC5D,QAAI,CAAC,aAAa,CAAC,WAAW,CAAC,UAAU,UAAU,GAAG;AACpD;AAAA,IACF;AAGA,UAAM,KAAK,UAAU,EAAE,mCAA0C,OAAO,OAAU,CAAC;AAEnF,QAAI;AAEF,YAAM,cAAc,MAAM,KAAK,YAAa;AAAA,QAC1C;AAAA,QACA;AAAA,QACA,OAAO,MAAM;AAAA,QACb,kBAAkB;AAAA;AAAA,QAClB,KAAK,SAAS;AAAA,MAChB;AAEA,YAAM,KAAK,UAAU;AAAA,QACnB,UAAU,YAAY;AAAA,QACtB,WAAW,YAAY;AAAA,QACvB,QAAQ;AAAA,MACV,CAAC;AAAA,IACH,SAAS,OAAY;AACnB,YAAM,KAAK,UAAU,EAAE,OAAO,OAAO,WAAW,OAAO,KAAK,GAAG,QAAQ,KAAK,CAAC;AAAA,IAC/E;AAAA,EACF;AAAA,EAEA,MAAM,QAAQ,OAAoE;AAEhF,SAAK,QAAQ;AAAA,MACX,GAAG,KAAK;AAAA,MACR,GAAG;AAAA,IACL;AAEA,UAAM,KAAK,uBAAuB;AAElC,WAAO,KAAK,SAAS;AAAA,EACvB;AAAA,EAEA,MAAM,iBAAmC;AACvC,QAAI,CAAC,KAAK,SAAS,CAAC,KAAK,cAAe,YAAY,KAAK,CAAC,KAAK,YAAa,OAAM,IAAI,MAAM,uCAAuC;AACnI,UAAM,EAAE,WAAW,OAAO,IAAI,KAAK;AACnC,QAAI,CAAC,aAAa,WAAW,UAAa,CAAC,KAAK,MAAM,UAAU,YAAa,OAAM,IAAI,MAAM,6BAA6B;AAC1H,YAAQ,MAAM,KAAK,YAAa,iBAAiB,WAAW,OAAO,KAAK,MAAM,SAAS,WAAW,CAAC,GAAG;AAAA,EACxG;AAAA,EAEA,MAAM,kBAA+C;AACnD,QAAI,CAAC,KAAK,SAAS,CAAC,KAAK,cAAe,YAAY,EAAG,OAAM,IAAI,MAAM,uCAAuC;AAC9G,UAAM,EAAE,WAAW,OAAO,IAAI,KAAK;AACnC,QAAI,CAAC,aAAa,WAAW,UAAa,CAAC,KAAK,MAAM,UAAU,YAAa,OAAM,IAAI,MAAM,6BAA6B;AAE1H,UAAM,KAAK,UAAU,EAAE,0BAAiC,CAAC;AAEzD,QAAI;AACF,YAAM,KAAK,MAAM,KAAK,aAAa;AAAA,QACjC;AAAA,QACA,OAAO,KAAK,MAAM,SAAS,WAAW;AAAA,MACxC;AAEA,UAAI;AAEJ,UAAI,IAAI;AACN,cAAM,KAAK,UAAU,EAAE,eAAe,GAAG,KAAK,CAAC;AAC/C,kBAAU,MAAM,GAAG,KAAK;AAExB,YAAI,CAAC,SAAS;AACZ,gBAAM,IAAI,MAAM,qCAAqC;AAAA,QACvD;AAEA,YAAI,QAAQ,UAAU,GAAG;AACvB,gBAAM,IAAI,MAAM,sBAAsB;AAAA,QACxC;AAAA,MACF;AAEA,aAAO,SAAS;AAAA,IAClB,SAAS,OAAY;AACnB,YAAM,KAAK,UAAU,EAAE,OAAO,OAAO,WAAW,OAAO,KAAK,GAAG,QAAQ,KAAK,CAAC;AAC7E,YAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEA,MAAM,OAAwB;AAC5B,QAAI;AACF,YAAM,KAAK,UAAU;AAAA,QACnB,QAAQ;AAAA,QACR,eAAe;AAAA,MACjB,CAAC;AACD,YAAM,EAAE,WAAW,SAAS,OAAO,IAAI,KAAK;AAC5C,UAAI,CAAC,aAAa,CAAC,WAAW,WAAW,OAAW,OAAM,IAAI,MAAM,0BAA0B;AAE9F,YAAM,KAAK,gBAAgB;AAE3B,YAAM,KAAK,UAAU,EAAE,yBAAgC,CAAC;AAGxD,YAAM,QAAQ,KAAK,MAAM;AACzB,UAAI,CAAC,MAAO,OAAM,IAAI,MAAM,4CAA4C;AAGxE,YAAM,OAAO,MAAM,MAAM,KAAK,IAAI,WAAS,MAAM,OAAO;AACxD,UAAI,KAAK,WAAW,EAAG,OAAM,IAAI,MAAM,oBAAoB;AAG3D,YAAM,WAAW,KAAK,MAAM;AAC5B,UAAI,CAAC,SAAU,OAAM,IAAI,MAAM,0BAA0B;AAEzD,YAAM,cAAc,MAAM,KAAK,YAAa;AAAA,QAC1C;AAAA,QACA;AAAA,QACA,SAAS,kBAAkB,SAAS;AAAA,QACpC,SAAS,mBAAmB,SAAS;AAAA,QACrC;AAAA,QACA,KAAK,MAAM,kBAAkB;AAAA,QAC7B,KAAK,SAAS;AAAA,MAChB;AAGA,YAAM,KAAK,UAAU,EAAE,QAAQ,YAAY,KAAK,CAAC;AAEjD,YAAM,UAAU,MAAM,YAAY,KAAK;AAEvC,UAAI,CAAC,SAAS;AACZ,cAAM,IAAI,MAAM,qCAAqC;AAAA,MACvD;AAEA,UAAI,QAAQ,UAAU,GAAG;AACvB,cAAM,IAAI,MAAM,sBAAsB;AAAA,MACxC;AAEA,YAAM,KAAK,UAAU;AAAA,QACnB,QAAQ;AAAA,MACV,CAAC;AAED,aAAO,QAAQ;AAAA,IACjB,SAAS,OAAY;AACnB,YAAM,KAAK,UAAU,EAAE,OAAO,OAAO,WAAW,OAAO,KAAK,GAAG,QAAQ,KAAK,CAAC;AAC7E,YAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEA,MAAM,gBAAiC;AACrC,WAAO,OAAO,MAAM,KAAK,YAAa,eAAe,CAAC,IAAI;AAAA,EAC5D;AAAA,EAGA,MAAM,mBAAmB,QAAgB,KAAK,QAAiB;AAC7D,QAAI,CAAC,KAAK,aAAa;AACrB,YAAM,IAAI,MAAM,yBAAyB;AAAA,IAC3C;AAEA,WAAO,MAAM,KAAK,YAAY,mBAAmB,OAAO,MAAM;AAAA,EAChE;AAAA,EAEA,IAAI,uBAA8C;AAChD,WAAO,KAAK,QAAQ;AAAA,EACtB;AACF;;;AC3PA,IAAAC,iBAAuB;AAGhB,IAAM,WAAiD;AAAA,EAC5D,mBAAmB;AAAA,IACjB,MAAM;AAAA,IACN,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,eAAe;AAAA,IACf,gBAAgB;AAAA,IAChB,cAAc;AAAA,IACd,eAAe;AAAA,IACf,kBAAkB;AAAA,IAClB,4CAA4C;AAAA,MAC1C,eAAe;AAAA,MACf,cAAc;AAAA,MACd,gBAAgB;AAAA,IAClB;AAAA,IACA,cAAc;AAAA,MACZ,SAAS;AAAA,MACT,UAAU;AAAA,MACV,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA,aAAa;AAAA,MACX,SAAS,sBAAO;AAAA,MAChB,UAAU;AAAA,MACV,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,EACF;AAAA;AAEF;;;APTO,SAAS,6BAA6B,SAA4C;AACvF,MAAI;AACJ,MAAI,mBAAmB,WAAW,OAAO,QAAQ,kBAAkB,UAAU;AAC3E,UAAM,gBAAgB,SAAS,QAAQ,aAAa;AACpD,QAAI,CAAC,cAAe,OAAM,IAAI,MAAM,wBAAwB,QAAQ,aAAa,EAAE;AACnF,sBAAkB,EAAE,GAAG,SAAS,cAAc;AAAA,EAChD,OAAO;AACL,sBAAkB;AAAA,EACpB;AAEA,SAAO,IAAI,kBAAkB,eAAe;AAC9C;","names":["LoaderStatuses","import_ethers","import_sdk_core","import_v2_sdk","JSBI","Array","constructor","length","sign","__kMaxLength","RangeError","BigInt","arg","Math","floor","Number","isFinite","__zero","__isOneDigitInt","__oneDigit","__fromDouble","result","__fromString","SyntaxError","primitive","__toPrimitive","TypeError","toDebugString","digit","push","toString","join","radix","__toStringBasePowerOfTwo","__toStringGeneric","toNumber","x","xLength","value","__unsignedDigit","xMsd","__digit","msdLeadingZeros","__clz30","xBitLength","exponent","currentDigit","digitIndex","shift","mantissaHigh","mantissaHighBitsUnset","mantissaLow","mantissaLowBitsUnset","rounding","__decideRounding","signBit","__kBitConversionInts","__kBitConversionDouble","unaryMinus","__copy","bitwiseNot","__absoluteSubOne","__trim","__absoluteAddOne","exponentiate","y","expValue","__kMaxLengthBits","neededDigits","__initializeDigits","msd","__setDigit","runningSquare","multiply","resultLength","__clzmsd","i","__multiplyAccumulate","divide","__absoluteCompare","resultSign","divisor","quotient","__absoluteDivSmall","__absoluteDivLarge","remainder","remainderDigit","__absoluteModSmall","add","__absoluteAdd","__absoluteSub","subtract","leftShift","__rightShiftByAbsolute","__leftShiftByAbsolute","signedRightShift","unsignedRightShift","lessThan","__compareToBigInt","lessThanOrEqual","greaterThan","greaterThanOrEqual","equal","notEqual","bitwiseAnd","max","__absoluteAnd","y1","__absoluteOr","__absoluteAndNot","bitwiseXor","__absoluteXor","bitwiseOr","asIntN","n","neededLength","topDigit","compareDigit","__truncateToNBits","__truncateAndSubFromPowerOfTwo","asUintN","bitsInTopDigit","ADD","__toNumeric","__isBigInt","LT","__compare","LE","GT","GE","EQ","__equalToNumber","NE","newLength","last","pop","mantissaBitsUnset","topUnconsumedBit","mask","rawExponent","digits","kMantissaHighTopBit","msdTopBit","remainingMantissaBits","__isWhitespace","c","string","cursor","current","charCodeAt","chars","bitsPerChar","__kMaxBitsPerChar","roundup","__kBitsPerCharTableMultiplier","bitsMin","__kBitsPerCharTableShift","limDigit","limAlpha","parts","partsBits","done","part","bits","d","__fillFromParts","charsSoFar","multiplier","m","digitsSoFar","__inplaceMultiplyAdd","bitsInDigit","partBits","Error","charMask","charsRequired","pos","availableBits","newDigit","__kConversionChars","consumedBits","isRecursiveCall","bitLength","maxBitsPerChar","minBitsPerChar","secondHalfChars","conqueror","secondHalf","input","__halfDigit","__setHalfDigit","divisionResult","firstHalf","__unequalSign","leftNegative","__absoluteGreater","bothNegative","__absoluteLess","xSign","__compareToNumber","ySign","yAbs","abs","xDigit","__compareToDouble","yBitLength","compareMantissa","__comparisonResultToBool","op","carry","r","borrow","inputLength","__setDigitGrow","yLength","numPairs","tmp","tmpLength","diff","multiplicand","accumulator","accumulatorIndex","m2Low","m2High","high","acc","m1","m1Low","m1High","rLow","__imul","rMid1","rMid2","rHigh","__internalMultiplyAdd","source","factor","summand","rx","ry","mLow","mHigh","dLow","dHigh","pLow","pMid1","pMid2","pHigh","upperHalf","lowerHalf","dividend","wantQuotient","wantRemainder","__halfDigitLength","n2","q","qhatv","__clz15","__specialLeftShift","u","vn1","halfDigitBuffer","qhat","j","ujn","rhat","vn2","ujn2","__inplaceSub","__inplaceAdd","__inplaceRightShift","startIndex","halfDigits","sum","subtrahend","r0","sub","r15","addDigit","__toShiftAmount","digitShift","bitsShift","grow","__rightShiftByMaximum","mustRoundDown","obj","hint","Symbol","toPrimitive","exoticToPrim","valueOf","call","drop","min","limit","msdBitsConsumed","resultMsd","minuendMsd","len","previous","updated","__digitPow","base","ArrayBuffer","Float64Array","__kBitConversionBuffer","Int32Array","clz32","log","LN2","imul","a","b","UniPair","amountOut","import_ethers"]}
|