Source Code
Latest 25 from a total of 25 transactions
| Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Add Liquidity | 25897773 | 3 days ago | IN | 0 ETH | 0.00034875 | ||||
| Add Liquidity | 25897771 | 3 days ago | IN | 0 ETH | 0.00016045 | ||||
| Add Liquidity | 25897769 | 3 days ago | IN | 0 ETH | 0.00016512 | ||||
| Add Liquidity | 25897767 | 3 days ago | IN | 0 ETH | 0.00016849 | ||||
| Add Liquidity | 25891261 | 4 days ago | IN | 0 ETH | 0.00049763 | ||||
| Add Liquidity | 25890958 | 4 days ago | IN | 0 ETH | 0.00020031 | ||||
| Bootstrap | 25890919 | 4 days ago | IN | 0 ETH | 0.00020088 | ||||
| Initialize Pool | 25890918 | 4 days ago | IN | 0 ETH | 0.00020413 | ||||
| Remove Liquidity | 25890906 | 4 days ago | IN | 0 ETH | 0.00029935 | ||||
| Remove Liquidity | 25647013 | 38 days ago | IN | 0 ETH | 0.00284711 | ||||
| Add Liquidity | 25647010 | 38 days ago | IN | 0 ETH | 0.00308164 | ||||
| Remove Liquidity | 25646976 | 38 days ago | IN | 0 ETH | 0.00425405 | ||||
| Add Liquidity | 25634027 | 40 days ago | IN | 0 ETH | 0.00009943 | ||||
| Add Liquidity | 25634021 | 40 days ago | IN | 0 ETH | 0.00011145 | ||||
| Remove Liquidity | 25634013 | 40 days ago | IN | 0 ETH | 0.00010761 | ||||
| Set Distribution | 25633298 | 40 days ago | IN | 0 ETH | 0.00000535 | ||||
| Add Liquidity | 25626533 | 41 days ago | IN | 0 ETH | 0.00011717 | ||||
| Add Liquidity | 25605330 | 44 days ago | IN | 0 ETH | 0.00015894 | ||||
| Add Liquidity | 25605325 | 44 days ago | IN | 0 ETH | 0.0001529 | ||||
| Add Liquidity | 25605322 | 44 days ago | IN | 0 ETH | 0.00015038 | ||||
| Add Liquidity | 25605310 | 44 days ago | IN | 0 ETH | 0.00019075 | ||||
| Add Liquidity | 25605308 | 44 days ago | IN | 0 ETH | 0.00018419 | ||||
| Add Liquidity | 25592611 | 46 days ago | IN | 0 ETH | 0.00008901 | ||||
| Bootstrap | 25540397 | 53 days ago | IN | 0 ETH | 0.00007851 | ||||
| Initialize Pool | 25540385 | 53 days ago | IN | 0 ETH | 0.00010859 |
Latest 1 internal transaction
Advanced mode:
| Parent Transaction Hash | Method |
Block
|
From
|
To
|
|||
|---|---|---|---|---|---|---|---|
| 0x60e06040 | 25525327 | 55 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Source Code (Solidity Standard Json-Input format)
Contract Security Audit
No Contract Security Audit SubmittedSubmit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"contract IPoolManager","name":"_pm","type":"address"},{"internalType":"uint32","name":"maxGas_","type":"uint32"},{"internalType":"address","name":"owner_","type":"address"},{"internalType":"uint64","name":"_maxMinDepositBlocks","type":"uint64"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AssetsAlreadyBound","type":"error"},{"inputs":[{"internalType":"uint256","name":"sharesMinted","type":"uint256"},{"internalType":"uint256","name":"minShares","type":"uint256"}],"name":"BootstrapTooSmall","type":"error"},{"inputs":[],"name":"CrossPoolShareLeak","type":"error"},{"inputs":[],"name":"DeadlineExpired","type":"error"},{"inputs":[{"internalType":"Currency","name":"currency","type":"address"}],"name":"DeltaNotNegative","type":"error"},{"inputs":[{"internalType":"Currency","name":"currency","type":"address"}],"name":"DeltaNotPositive","type":"error"},{"inputs":[{"internalType":"uint256","name":"unlockBlock","type":"uint256"}],"name":"DepositLocked","type":"error"},{"inputs":[],"name":"DirectInitializeBlocked","type":"error"},{"inputs":[],"name":"DynamicFeeNotSupported","type":"error"},{"inputs":[],"name":"HookNotImplemented","type":"error"},{"inputs":[],"name":"InsufficientBalance","type":"error"},{"inputs":[],"name":"InsufficientBootstrap","type":"error"},{"inputs":[],"name":"InsufficientPoolBalance","type":"error"},{"inputs":[],"name":"InsufficientShares","type":"error"},{"inputs":[],"name":"InvalidDistribution","type":"error"},{"inputs":[],"name":"InvalidHookAddress","type":"error"},{"inputs":[],"name":"InvalidTickRange","type":"error"},{"inputs":[],"name":"JITInProgress","type":"error"},{"inputs":[],"name":"LiquidityNotAllowed","type":"error"},{"inputs":[{"internalType":"uint64","name":"supplied","type":"uint64"},{"internalType":"uint64","name":"max","type":"uint64"}],"name":"MinDepositBlocksTooLarge","type":"error"},{"inputs":[],"name":"NativeNotSupported","type":"error"},{"inputs":[],"name":"NotPoolManager","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[{"internalType":"PoolId","name":"poolId","type":"bytes32"}],"name":"PoolNotLive","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[],"name":"RenounceOwnershipDisabled","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"inputs":[],"name":"SlippageExceeded","type":"error"},{"inputs":[],"name":"TransferReceiptShortfall","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"UnauthorizedCallback","type":"error"},{"inputs":[],"name":"VaultAlreadyBootstrapped","type":"error"},{"inputs":[],"name":"VaultAssetMismatch","type":"error"},{"inputs":[],"name":"VaultChargesEntryFee","type":"error"},{"inputs":[],"name":"VaultChargesExitFee","type":"error"},{"inputs":[],"name":"VaultNotBootstrapped","type":"error"},{"inputs":[],"name":"ZeroSharesMinted","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"VaultId","name":"vaultId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"provider","type":"address"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Bootstrap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"VaultId","name":"vaultId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"provider","type":"address"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"PoolId","name":"poolId","type":"bytes32"}],"name":"DistributionUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"PoolId","name":"poolId","type":"bytes32"}],"name":"EmergencyVaultRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"PoolId","name":"poolId","type":"bytes32"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ExternalDepositsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"PoolId","name":"poolId","type":"bytes32"}],"name":"PoolCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"PoolId","name":"poolId","type":"bytes32"},{"indexed":false,"internalType":"bool","name":"isLive","type":"bool"}],"name":"PoolLivenessUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"partition","type":"bytes32"},{"indexed":false,"internalType":"contract IERC4626","name":"vault","type":"address"}],"name":"VaultBound","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"PoolId","name":"poolId","type":"bytes32"},{"indexed":true,"internalType":"Currency","name":"currency","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"VaultDepositSkipped","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"PoolId","name":"poolId","type":"bytes32"},{"indexed":true,"internalType":"Currency","name":"currency","type":"address"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"VaultDrainSkipped","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"PoolId","name":"poolId","type":"bytes32"},{"indexed":true,"internalType":"Currency","name":"currency","type":"address"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"}],"name":"VaultDrained","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"VaultId","name":"vaultId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"provider","type":"address"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"key","type":"tuple"},{"internalType":"uint256","name":"sharesToMint","type":"uint256"},{"internalType":"uint256","name":"maxAmount0","type":"uint256"},{"internalType":"uint256","name":"maxAmount1","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidity","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"key","type":"tuple"},{"components":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"int256","name":"liquidityDelta","type":"int256"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"internalType":"struct ModifyLiquidityParams","name":"params","type":"tuple"},{"internalType":"BalanceDelta","name":"delta","type":"int256"},{"internalType":"BalanceDelta","name":"feesAccrued","type":"int256"},{"internalType":"bytes","name":"hookData","type":"bytes"}],"name":"afterAddLiquidity","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"},{"internalType":"BalanceDelta","name":"","type":"int256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"key","type":"tuple"},{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"},{"internalType":"bytes","name":"hookData","type":"bytes"}],"name":"afterDonate","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"key","type":"tuple"},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"internalType":"int24","name":"tick","type":"int24"}],"name":"afterInitialize","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"key","type":"tuple"},{"components":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"int256","name":"liquidityDelta","type":"int256"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"internalType":"struct ModifyLiquidityParams","name":"params","type":"tuple"},{"internalType":"BalanceDelta","name":"delta","type":"int256"},{"internalType":"BalanceDelta","name":"feesAccrued","type":"int256"},{"internalType":"bytes","name":"hookData","type":"bytes"}],"name":"afterRemoveLiquidity","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"},{"internalType":"BalanceDelta","name":"","type":"int256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"key","type":"tuple"},{"components":[{"internalType":"bool","name":"zeroForOne","type":"bool"},{"internalType":"int256","name":"amountSpecified","type":"int256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"internalType":"struct SwapParams","name":"params","type":"tuple"},{"internalType":"BalanceDelta","name":"delta","type":"int256"},{"internalType":"bytes","name":"hookData","type":"bytes"}],"name":"afterSwap","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"},{"internalType":"int128","name":"","type":"int128"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"key","type":"tuple"},{"components":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"int256","name":"liquidityDelta","type":"int256"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"internalType":"struct ModifyLiquidityParams","name":"params","type":"tuple"},{"internalType":"bytes","name":"hookData","type":"bytes"}],"name":"beforeAddLiquidity","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"key","type":"tuple"},{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"},{"internalType":"bytes","name":"hookData","type":"bytes"}],"name":"beforeDonate","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"key","type":"tuple"},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"}],"name":"beforeInitialize","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"key","type":"tuple"},{"components":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"int256","name":"liquidityDelta","type":"int256"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"internalType":"struct ModifyLiquidityParams","name":"params","type":"tuple"},{"internalType":"bytes","name":"hookData","type":"bytes"}],"name":"beforeRemoveLiquidity","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"key","type":"tuple"},{"components":[{"internalType":"bool","name":"zeroForOne","type":"bool"},{"internalType":"int256","name":"amountSpecified","type":"int256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"internalType":"struct SwapParams","name":"params","type":"tuple"},{"internalType":"bytes","name":"hookData","type":"bytes"}],"name":"beforeSwap","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"},{"internalType":"BeforeSwapDelta","name":"","type":"int256"},{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"key","type":"tuple"},{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"bootstrap","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"PoolId","name":"poolId","type":"bytes32"}],"name":"decimalsOffset","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"key","type":"tuple"}],"name":"emergencyRevokeVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"PoolId","name":"poolId","type":"bytes32"}],"name":"externalDepositsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"PoolId","name":"poolId","type":"bytes32"}],"name":"getDistribution","outputs":[{"components":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint16","name":"weightBps","type":"uint16"}],"internalType":"struct LiquidityBucket[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"key","type":"tuple"}],"name":"getEffectiveLiquidity","outputs":[{"internalType":"uint256","name":"token0","type":"uint256"},{"internalType":"uint256","name":"token1","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getHookPermissions","outputs":[{"components":[{"internalType":"bool","name":"beforeInitialize","type":"bool"},{"internalType":"bool","name":"afterInitialize","type":"bool"},{"internalType":"bool","name":"beforeAddLiquidity","type":"bool"},{"internalType":"bool","name":"afterAddLiquidity","type":"bool"},{"internalType":"bool","name":"beforeRemoveLiquidity","type":"bool"},{"internalType":"bool","name":"afterRemoveLiquidity","type":"bool"},{"internalType":"bool","name":"beforeSwap","type":"bool"},{"internalType":"bool","name":"afterSwap","type":"bool"},{"internalType":"bool","name":"beforeDonate","type":"bool"},{"internalType":"bool","name":"afterDonate","type":"bool"},{"internalType":"bool","name":"beforeSwapReturnDelta","type":"bool"},{"internalType":"bool","name":"afterSwapReturnDelta","type":"bool"},{"internalType":"bool","name":"afterAddLiquidityReturnDelta","type":"bool"},{"internalType":"bool","name":"afterRemoveLiquidityReturnDelta","type":"bool"}],"internalType":"struct Hooks.Permissions","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"key","type":"tuple"},{"internalType":"bool","name":"zeroForOne","type":"bool"},{"internalType":"int256","name":"amountSpecified","type":"int256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"getIndicativeQuote","outputs":[{"internalType":"uint256","name":"outputAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"key","type":"tuple"}],"name":"getReserves","outputs":[{"internalType":"uint256","name":"token0","type":"uint256"},{"internalType":"uint256","name":"token1","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"key","type":"tuple"},{"components":[{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"components":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint16","name":"weightBps","type":"uint16"}],"internalType":"struct LiquidityBucket[]","name":"distribution","type":"tuple[]"},{"internalType":"bool","name":"allowExternalDeposits","type":"bool"},{"internalType":"contract IERC4626","name":"vault0","type":"address"},{"internalType":"contract IERC4626","name":"vault1","type":"address"},{"internalType":"uint64","name":"minDepositBlocks","type":"uint64"}],"internalType":"struct DualPoolHook.PoolConfig","name":"config","type":"tuple"}],"name":"initializePool","outputs":[{"internalType":"int24","name":"tick","type":"int24"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isLive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"PoolId","name":"poolId","type":"bytes32"}],"name":"livePools","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxGas","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMinDepositBlocks","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"PoolId","name":"","type":"bytes32"}],"name":"minDepositBlocks","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolManager","outputs":[{"internalType":"contract IPoolManager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"key","type":"tuple"},{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewDeposit","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"key","type":"tuple"},{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewWithdraw","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"key","type":"tuple"},{"internalType":"Currency","name":"currency","type":"address"}],"name":"refreshVaultApproval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"key","type":"tuple"},{"internalType":"uint256","name":"sharesToBurn","type":"uint256"},{"internalType":"uint256","name":"minAmount0","type":"uint256"},{"internalType":"uint256","name":"minAmount1","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidity","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"key","type":"tuple"},{"components":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint16","name":"weightBps","type":"uint16"}],"internalType":"struct LiquidityBucket[]","name":"buckets","type":"tuple[]"}],"name":"setDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"key","type":"tuple"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExternalDeposits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"key","type":"tuple"},{"internalType":"bool","name":"live","type":"bool"}],"name":"setPoolLive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"key","type":"tuple"},{"internalType":"address","name":"user","type":"address"}],"name":"sharesOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"key","type":"tuple"},{"internalType":"bool","name":"zeroForOne","type":"bool"},{"internalType":"int256","name":"amountSpecified","type":"int256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"swapToPrice","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"key","type":"tuple"}],"name":"totalAssets","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"PoolId","name":"poolId","type":"bytes32"}],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"unlockCallback","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"PoolId","name":"poolId","type":"bytes32"},{"internalType":"address","name":"user","type":"address"}],"name":"userShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"PoolId","name":"poolId","type":"bytes32"},{"internalType":"Currency","name":"currency","type":"address"}],"name":"vaults","outputs":[{"internalType":"contract IERC4626","name":"","type":"address"}],"stateMutability":"view","type":"function"}]Contract Creation Code
60e06040523461039457604051601f61618c38819003918201601f19168301916001600160401b03831184841017610398578084926080946040528339810103126103945780516001600160a01b038116810361039457602082015163ffffffff811681036103945760408301516001600160a01b03811693908490036103945760600151916001600160401b0383168303610394576080525f6101a06100a46103ac565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e0820152826101008201528261012082015282610140820152826101608201528261018082015201525f6101a06101026103ac565b6001815282602082015260016040820152826060820152600160808201528260a0820152600160c0820152600160e08201528261010082015282610120820152826101408201528261016082015282610180820152015261200030161515600114801590610387575b8015610376575b8015610369575b8015610358575b801561034b575b801561033b575b801561032b575b801561031f575b8015610313575b8015610307575b80156102fb575b80156102ef575b80156102e3575b6102d05760a05281156102bd57600180546001600160a01b03199081169091555f80549182168417815560405193916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a360c052615dbf90816103cd823960805181818161075b01528181610ce501528181610e6b01528181611319015281816114fe0152818161158b01528181611771015281816118d701528181611ace01528181611ed901528181611f3b015281816129a501528181612e320152818161373901528181613d6b01528181614bcb0152614e32015260a05181610c4d015260c051818181610f5f015261119c0152f35b631e4fbdf760e01b5f525f60045260245ffd5b630732d7b560e51b5f523060045260245ffd5b506001301615156101bf565b506002301615156101b8565b506004301615156101b1565b506008301615156101aa565b506010301615156101a3565b5060203016151561019c565b5060403016151560011415610195565b506080301615156001141561018e565b5061010030161515610187565b506102003016151560011415610180565b5061040030161515610179565b506108003016151560011415610172565b506110003016151561016b565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b604051906101c082016001600160401b038111838210176103985760405256fe60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a7146102f057806309cc6e54146102eb57806311b9aa23146102e657806312e8d594146102e15780631734db44146102dc5780631c757b95146102d757806321d0ee70146102cd57806324ae92a7146102d2578063259982e5146102cd57806325c8d397146102aa57806328c32069146102c85780632bedc0cc146102c35780633b8b9bf0146102be5780633c9f1f29146102b95780634172aabc146102b45780634627e7c0146102af57806348d8b0ba146102aa578063501d815c146102a55780635166e896146102a0578063545b396d1461029b578063575e24b414610296578063638ffec31461029157806367dd0e0b1461028c5780636818a5e2146102875780636b6dee8d146102825780636c2bbe7e1461025f5780636fe7e6eb1461027d578063715018a61461027857806379ba5097146102735780637f4ebbe51461026e5780638da5cb5b1461026957806391dd7346146102645780639f063efc1461025f578063aa61258e1461025a578063b47b2fb114610255578063b6a8b0fa14610228578063b8f7a66514610250578063b9dc1c4d1461024b578063bdd0040f14610246578063c4e833ce14610241578063cb89fcca1461023c578063d8f3c72114610237578063dc4c90d314610232578063dc98354e1461022d578063e1b4af6914610228578063e30c3978146102235763f2fde38b1461021e575f80fd5b611fa0565b611f78565b611abb565b611f08565b611ec4565b611e91565b611d64565b611c7f565b611b8d565b611b2b565b611b10565b611883565b611854565b6114eb565b61173f565b6116e0565b611667565b6115e7565b6115c8565b61154c565b611439565b61108b565b610fde565b610f40565b610e17565b610d7a565b610c71565b610c31565b6109bc565b610bcf565b610ba0565b610b77565b610b1d565b610a70565b610a1c565b610748565b6107d5565b610672565b6105f5565b6105cb565b610562565b610384565b3461035e57602036600319011261035e5760043563ffffffff60e01b811680910361035e57602090630f5b7f7760e31b811490811561034d575b811561033c575b506040519015158152f35b6301ffc9a760e01b1490505f610331565b633c088ac960e21b8114915061032a565b5f80fd5b60a090600319011261035e57600490565b60a090602319011261035e57602490565b3461035e5760e036600319011261035e5761039e36610362565b60a4359060c435906103ae6123b8565b6103b66123cb565b6103be612412565b60a06103ca36836120d8565b209281356103d781610661565b6001600160a01b03169260208301356103ef81610661565b60018060a01b031693855f52600760205260405f2054610553578215801561054b575b6105345761043a928161042987610431948a614026565b3390886140c2565b933390866140c2565b9180158015610543575b6105345761050c6105189261051392867ff6507ee9cd8bc6639ce3d98dfedcac957dae7246e8f4f30233f0dafbfea0604161050261048e6104876105309b612b02565b8a866141a4565b986104e461049a613b7d565b8b33875f818152600760209081526040808320869055600882528083206001600160a01b039590951680845294825280832095909555918152600982528381209281529190522055565b604080518b8152602081019690965285015233939081906060820190565b0390a336906120d8565b60a0902090565b612427565b610520612400565b6040519081529081906020820190565b0390f35b632e28917b60e11b5f5260045ffd5b508215610444565b508115610412565b635f9863ad60e01b5f5260045ffd5b3461035e5760c036600319011261035e5761057c36610362565b60a435906001600160401b03821161035e573660238301121561035e578160040135906001600160401b03821161035e57366024606084028501011161035e5760246105c993019061215b565b005b3461035e57602036600319011261035e576004355f526007602052602060405f2054604051908152f35b3461035e5760c036600319011261035e5761064f61061236610362565b60a4359060a061062236836120d8565b20602082359261063184610661565b013561063c81610661565b6001600160a01b039081169216906127b7565b60408051928352602083019190915290f35b6001600160a01b0381160361035e57565b3461035e57604036600319011261035e5760206106b660243560043561069782610661565b5f526008835260405f209060018060a01b03165f5260205260405f2090565b54604051908152f35b9181601f8401121561035e578235916001600160401b03831161035e576020838186019501011161035e57565b9061016060031983011261035e5760043561070681610661565b9160a060231982011261035e57602491608060c31983011261035e5760c49161014435906001600160401b03821161035e57610744916004016106bf565b9091565b3461035e57610756366106ec565b5050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303915061079c9050576378895c1360e01b5f5260045ffd5b63570c108560e11b5f5260045ffd5b60031901610120811261035e5760a01361035e5760049060a4359060c4359060e435906101043590565b3461035e576107e3366107ab565b6107f094919293946123cb565b6107f8612412565b42116109ad5761081f60a0916108188361081236846120d8565b206128f6565b36906120d8565b209161082a8361427f565b61083383613c38565b80519094906001600160a01b0316602086018051909591610861918491906001600160a01b031690846127b7565b9096610875835f52600760205260405f2090565b506108a13361088c855f52600860205260405f2090565b9060018060a01b03165f5260205260405f2090565b506108b56108ad613b7d565b853386614292565b8780156109a45790516108d5919033906001600160a01b03165b856140c2565b955b81801561099b5790516108f5919033906001600160a01b03166108cf565b965b8610908115610991575b50610982576040805192835260208301869052820186905233917f06ed2f20538b45039698c763dc14442e53647d726b4718d91fcb1246df1aa06090606090a38211908115610978575b5061096957610958612400565b604080519182526020820192909252f35b638199f5f360e01b5f5260045ffd5b905082115f61094b565b6311c7360360e01b5f5260045ffd5b905086105f610901565b50505f966108f7565b50505f956108d7565b631ab7da6b60e01b5f5260045ffd5b3461035e5760a036600319011261035e576109d961081836610362565b60a0812060018060a01b03825116815f526020526109f960405f2061320c565b6020928301515f9283526001600160a01b03169092526040902061064f9061320c565b3461035e5760a036600319011261035e5761064f610a3936610362565b60a0610a4536836120d8565b20906020813591610a5583610661565b013591610a6183610661565b613304565b8015150361035e57565b3461035e5761010036600319011261035e57610a8b36610362565b60a435610a9781610a66565b60c4359160e4356001600160401b03811161035e57610ad392610abf859236906004016106bf565b50508015610b02576401000276a49261292b565b90915f811215610aea575060405190815260209150f35b11610af85761053090610520565b506105305f610520565b73fffd8963efd1fc6a506488495d951d5263988d259261292b565b3461035e5760c036600319011261035e5761064f610b3a36610362565b60a4359060a0610b4a36836120d8565b206020823592610b5984610661565b0135610b6481610661565b6001600160a01b0390811692169061285c565b3461035e57602036600319011261035e576020610b95600435612b02565b60ff60405191168152f35b3461035e57602036600319011261035e576004355f526002602052602060ff60405f2054166040519015158152f35b3461035e57604036600319011261035e57610c12602435600435610bf282610661565b5f5260205260405f205f52600360205260018060a01b0360405f20541690565b6040516001600160a01b039091168152602090f35b5f91031261035e57565b3461035e575f36600319011261035e57602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461035e57610c7f366107ab565b610c8d9491949392936123cb565b610c95612412565b42116109ad57610ce091610cc65f92610cb8604051938492339060208501612262565b03601f19810183528261207c565b604051809381926348c8949160e01b83526004830161172b565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af18015610d7557610d30915f91610d53575b5060208082518301019101612310565b9290918210908115610d49575061096957610958612400565b905082105f61094b565b610d6f91503d805f833e610d67818361207c565b8101906122a3565b5f610d20565b612305565b3461035e5760c036600319011261035e57610d9436610362565b7f97c0b9b02f19b041d6f6ff405bf463718cd4463e68f3f541a5cb1daa6bc4b863602060a0610dd960a43594610dc986610a66565b610dd16123b8565b610818612412565b2092835f5260028252610dfb8160405f209060ff801983541691151516179055565b6040519015158152a2005b60609060c319011261035e5760c490565b3461035e5761014036600319011261035e57610e34600435610661565b610e3d36610373565b610e4636610e06565b50610124356001600160401b03811161035e57610e679036906004016106bf565b50507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361079c5760a0610ea536836120d8565b2090815f52600260205260ff60405f20541615610f2d57610ec58261368d565b91825c610f1e576001610ef9935d60015f80516020615d738339815191525c015f80516020615d738339815191525d6136d2565b6040518061053081905f604060608401936315d7892d60e21b81528260208201520152565b632759dc0160e01b5f5260045ffd5b50636dbc85d160e01b5f5260045260245ffd5b3461035e575f36600319011261035e5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b60206040818301928281528451809452019201905f5b818110610fa65750505090565b9091926020606060019261ffff60408851805160020b84528581015160020b8685015201511660408201520194019101919091610f99565b3461035e57602036600319011261035e576004355f52600d60205260405f2080546001600160401b038111611086576040519161102160208360051b018461207c565b81835260208301905f5260205f205f915b83831061104757604051806105308782610f83565b6001602081926040516110598161202a565b61ffff86548060020b83528060181c60020b8584015260301c166040820152815201920192019190611032565b612016565b3461035e5760c036600319011261035e576110a536610362565b60a4356001600160401b03811161035e578060040160c0600319833603011261035e576110d06123b8565b6110dc608084016121c7565b306001600160a01b039091160361142a576111066110f9846121c7565b6001600160a01b03161590565b8015611415575b6114065761112d61112060408501612326565b62ffffff16628000001490565b6113f7576064820191611151611142846121c7565b61114b866121c7565b90612ba1565b6084810161115e816121c7565b61116f602087019161114b836121c7565b61118061117b866121c7565b613857565b61118c61117b836121c7565b60a483019461119a86612330565b7f0000000000000000000000000000000000000000000000000000000000000000906001600160401b038083169116116113c657506111d936886120d8565b60a09020956111ea60448601612344565b6111f49088612c3c565b6111fd886121c7565b611206836121c7565b6112109189612ccc565b611219836121c7565b611222856121c7565b61122c9189612ccc565b61123590612330565b611247875f52600a60205260405f2090565b9061126791906001600160401b03166001600160401b0319825416179055565b611270876121c7565b611279836121c7565b6112839188612d43565b61128c876121c7565b90611296906121c7565b6001600160a01b03166112a891613a8d565b6112b1906121c7565b906112bb906121c7565b6001600160a01b03166112cd91613a8d565b6024016112da908261234e565b6112e6606086016121bd565b906112f19285612605565b6112fa906121c7565b60405163313b65df60e11b81529283916113179160048401612398565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691849103815a6020945f91f1918215610d75575f92611395575b506105306040519283927f76c4350174727086805a3b026998a38a23dec4eaa173f2eb5449eb961e69c0435f80a260020b82526020820190565b6113b891925060203d6020116113bf575b6113b0818361207c565b810190612383565b905f61135b565b503d6113a6565b6113f4906113d388612330565b63184173b360e11b5f526001600160401b0390811660045216602452604490565b5ffd5b63389b52ff60e01b5f5260045ffd5b630a7287b560e01b5f5260045ffd5b506114256110f9602085016121c7565b61110d565b632a96f9e160e21b5f5260045ffd5b3461035e5760c036600319011261035e5760206106b661145836610362565b60a061146a60a4359261081884610661565b205f526008835260405f209060018060a01b03165f5260205260405f2090565b906101a060031983011261035e576004356114a481610661565b9160a060231982011261035e57602491608060c483031261035e5760c4916101443591610164359161018435906001600160401b03821161035e57610744916004016106bf565b3461035e576114f93661148a565b5050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303935061079c9250505057630a85dc2960e01b5f5260045ffd5b8060020b0361035e57565b3461035e5761010036600319011261035e57611569600435610661565b61157236610373565b5061157e60c435610661565b61158960e435611541565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361079c57630a85dc2960e01b5f5260045ffd5b3461035e575f36600319011261035e5763ffc0fd9360e01b5f5260045ffd5b3461035e575f36600319011261035e57600154336001600160a01b03821603611654576001600160a01b03199081166001555f805433928116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a3005b63118cdaa760e01b5f523360045260245ffd5b3461035e5760c036600319011261035e576105c961168436610362565b60a4359061169182610661565b6116996123b8565b6116a1612412565b6116d98260a06116b8600180831b039436906120d8565b205f5260205260405f205f52600360205260018060a01b0360405f20541690565b1690613b0e565b3461035e575f36600319011261035e575f546040516001600160a01b039091168152602090f35b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b90602061173c928181520190611707565b90565b3461035e57602036600319011261035e576004356001600160401b03811161035e5761176f9036906004016106bf565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036118455781019060e08183031261035e5761181f816117c061053094611839946120d8565b60c060a0830135926117d184610661565b01359160018060a01b031681611819611813602060a0859620936118046117fe825160018060a01b031690565b86612dc7565b5001516001600160a01b031690565b82612dc7565b50612fec565b604080516020810193909352820152908160608101610cb8565b6040519182918261172b565b637ae3640d60e11b5f5260045ffd5b3461035e57602036600319011261035e576004355f52600c602052602060ff60405f2054166040519015158152f35b3461035e5761016036600319011261035e576118a0600435610661565b6118a936610373565b6118b236610e06565b50610144356001600160401b03811161035e576118d39036906004016106bf565b50507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163381900361079c5760a061191336846120d8565b209061192f61192a835f52600d60205260405f2090565b612b1f565b9081519061193c84615022565b5f5b8381106119805761196a611965876119608a61195a8184613d63565b82613dd7565b61368d565b613e02565b6040805163b47b2fb160e01b81525f6020820152f35b6001600160801b036119928284615061565b1690816119a4575b600191500161193e565b6040611a23926119b48389613416565b51906119fb6119db6119d560206119cc865160020b90565b95015160020b90565b92613d05565b916119f16119e761209d565b94859060020b9052565b60020b6020840152565b82820152634455414c6060820152815180948192632d35e7ed60e11b83528c60048401613d15565b03815f885af1918215610d7557600192611a3e575b5061199a565b611a5e9060403d8111611a64575b611a56818361207c565b810190612310565b50611a38565b503d611a4c565b61012060031982011261035e57600435611a8481610661565b9160a060231983011261035e5760249160c4359160e4359161010435906001600160401b03821161035e57610744916004016106bf565b3461035e57611ac936611a6b565b5050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303925061079c91505057630a85dc2960e01b5f5260045ffd5b3461035e575f36600319011261035e57602060405160018152f35b3461035e5761012036600319011261035e57611b4636610362565b60a435611b5281610a66565b60c43560e43591611b6283610661565b61010435936001600160401b03851161035e57611b8661064f9536906004016106bf565b505061292b565b3461035e5760c036600319011261035e576105c9611baa36610362565b60a0611bbc60a43592610dc984610a66565b20612c3c565b611c7d909291926101a0806101c0830195611bdf84825115159052565b60208181015115159085015260408181015115159085015260608181015115159085015260808181015115159085015260a08181015115159085015260c08181015115159085015260e081810151151590850152610100818101511515908501526101208181015115159085015261014081810151151590850152610160818101511515908501526101808181015115159085015201511515910152565b565b3461035e575f36600319011261035e575f6101a0604051611c9f81612045565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e082015282610100820152826101208201528261014082015282610160820152826101808201520152610530611cfc6120ac565b600181525f6020820152600160408201525f6060820152600160808201525f60a0820152600160c0820152600160e08201525f6101008201525f6101208201525f6101408201525f6101608201525f6101808201525f6101a082015260405191829182611bc2565b3461035e5760a036600319011261035e57611d7e36610362565b611d866123b8565b611d8e6123cb565b611d96612412565b611e5b611e5560a0611da836856120d8565b2092611db38461246b565b611dbc84612c8c565b611e506020823592611dcd84610661565b611dd684610661565b5f8781526020858152604080832083526003909152902054611e01906001600160a01b031685613e28565b0191611e418335611e1181610661565b611e1a81610661565b5f88815260208281526040808320835260039091529020546001600160a01b031690613e28565b611e4a81610661565b8561314e565b6121c7565b8261314e565b7fd88c4584c02449a1b9f80397a89a1728abfbdc58a090e15b4a5c0832a414af835f80a25f5f80516020615d938339815191525d005b3461035e57602036600319011261035e576004355f52600a60205260206001600160401b0360405f205416604051908152f35b3461035e575f36600319011261035e576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035e5760e036600319011261035e57611f24600435610661565b611f2d36610373565b50611f3960c435610661565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361079c57633ecbaaf760e01b5f5260045ffd5b3461035e575f36600319011261035e576001546040516001600160a01b039091168152602090f35b3461035e57602036600319011261035e57600435611fbd81610661565b611fc56123b8565b60018060a01b0316806bffffffffffffffffffffffff60a01b600154161760015560018060a01b035f54167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227005f80a3005b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b0382111761108657604052565b6101c081019081106001600160401b0382111761108657604052565b604081019081106001600160401b0382111761108657604052565b90601f801991011681019081106001600160401b0382111761108657604052565b60405190611c7d60808361207c565b60405190611c7d6101c08361207c565b60405190611c7d60408361207c565b62ffffff81160361035e57565b91908260a091031261035e5760405160a081018181106001600160401b03821117611086576040526080808294803561211081610661565b8452602081013561212081610661565b60208501526040810135612133816120cb565b6040850152606081013561214681611541565b606085015201359161215783610661565b0152565b6108186121969260a09461216d6123b8565b612175612412565b8561218036866120d8565b209160608501359261219184611541565b612605565b207fab935d01bcc803c9101e3c3eab4b4e3144a7d79414491a14ba5082310af626285f80a2565b3561173c81611541565b3561173c81610661565b634e487b7160e01b5f52601160045260245ffd5b6080809180356121f481610661565b6001600160a01b03168452602081013561220d81610661565b6001600160a01b0316602085015262ffffff604082013561222d816120cb565b166040850152606081013561224181611541565b60020b6060850152013561225481610661565b6001600160a01b0316910152565b60c0919493926122768260e08101976121e5565b6001600160a01b031660a08201520152565b6001600160401b03811161108657601f01601f191660200190565b60208183031261035e578051906001600160401b03821161035e570181601f8201121561035e578051906122d682612288565b926122e4604051948561207c565b8284526020838301011161035e57815f9260208093018386015e8301015290565b6040513d5f823e3d90fd5b919082604091031261035e576020825192015190565b3561173c816120cb565b356001600160401b038116810361035e5790565b3561173c81610a66565b903590601e198136030182121561035e57018035906001600160401b03821161035e5760200191606082023603831361035e57565b9081602091031261035e575161173c81611541565b90929160a0906123ac8360c08101966121e5565b600180831b0316910152565b5f546001600160a01b0316330361165457565b5f80516020615d938339815191525c6123f15760015f80516020615d938339815191525d565b633ee5aeb560e01b5f5260045ffd5b5f5f80516020615d938339815191525d565b5f80516020615d738339815191525c610f1e57565b805f52600260205260405f20600160ff198254161790557f97c0b9b02f19b041d6f6ff405bf463718cd4463e68f3f541a5cb1daa6bc4b863602060405160018152a2565b805f52600260205260405f2060ff1981541690557f97c0b9b02f19b041d6f6ff405bf463718cd4463e68f3f541a5cb1daa6bc4b86360206040515f8152a2565b634e487b7160e01b5f52603260045260245ffd5b91908110156124cf576060020190565b6124ab565b634e487b7160e01b5f52601260045260245ffd5b9060020b9081156124fa5760020b0790565b6124d4565b3561ffff8116810361035e5790565b906001820180921161251c57565b6121d1565b9190820180921161251c57565b908160640291606483040361251c57565b8181029291811591840414171561251c57565b8054905f815581612561575050565b5f5260205f20908101905b818110612577575050565b5f815560010161256c565b8054906801000000000000000082101561108657600182018082558210156124cf575f5260205f2001908035906125b882611541565b825462ffffff67ffff0000000000006125e160406020860135956125db87611541565b016124ff565b60301b169316906001600160401b031916179060181b65ffffff0000001617179055565b92919091811580156127ad575b612686575f80915b83831061269557506127109150036126865761264761264284600d905f5260205260405f2090565b612552565b5f5b8181106126565750505050565b60019061268061266f86600d905f5260205260405f2090565b61267a8386886124bf565b90612582565b01612649565b630d16b83360e31b5f5260045ffd5b906126a96126a48486886124bf565b6121bd565b6126c86126c260206126bc87898b6124bf565b016121bd565b60020b90565b9060020b121561276257620d89e7196126e86126c26126a486888a6124bf565b12801561278f575b6127625761270e6126c2836127096126a487898b6124bf565b6124e8565b15801590612770575b6127625761273561272e60406125db86888a6124bf565b61ffff1690565b156126865761275960019161275361272e60406125db888a8c6124bf565b90612521565b9201919061261a565b6264847d60e41b5f5260045ffd5b506127886126c28361270960206126bc888a8c6124bf565b1515612717565b50620d89e86127a460206126bc86888a6124bf565b60020b136126f0565b5060088211612612565b90939293815f5260018060a01b03166020526127d560405f2061320c565b91815f5260018060a01b03166020526127f060405f2061320c565b936127fa82612b02565b915f52600760205260405f205491821561284d5760ff16604d811161251c57600a0a820180921161251c576001830180931161251c576128476128418361173c958461541d565b9561250e565b9061541d565b6391fe2fa960e01b5f5260045ffd5b9093929193815f5260018060a01b031660205261287b60405f2061320c565b93815f5260018060a01b031660205261289660405f2061320c565b936128a082612b02565b915f52600760205260405f205491821561284d5760ff16604d811161251c57600a0a820180921161251c576001810180911161251c57816128e1918461538a565b936001810180911161251c5761173c9261538a565b5f546001600160a01b03163314612928575f52600c60205260ff60405f205416611c7d576282b42960e81b5f5260045ffd5b50565b9390919361293c61050c36836120d8565b9061296061295c612955845f52600260205260405f2090565b5460ff1690565b1590565b612af65761299061297360408301612326565b916129896020612982836121c7565b92016121c7565b9084613304565b959094851580612aee575b612ae0576129c9847f000000000000000000000000000000000000000000000000000000000000000061332b565b5091949091906001600160a01b03861615612acf57612a0a9286612a0561192a6129f6888f978f976133da565b9a5f52600d60205260405f2090565b61344a565b916001600160801b038316158015612ac7575b612ab85784612a3e9697989984612a349387613530565b9190979250612521565b978597825f14612aaf575080955b11612a59575b5050505050565b612a81949750612a899596505f14612a95576401000276a45b612a7b88613674565b92613530565b925050612521565b91905f80808080612a52565b73fffd8963efd1fc6a506488495d951d5263988d25612a72565b90508095612a4c565b5050505050925050505f905f90565b508815612a1d565b50505050505050925050505f905f90565b50505050925050505f905f90565b50861561299b565b5050925050505f905f90565b5f52600b60205260ff60405f20541680155f1461173c5750600c90565b9081546001600160401b0381116110865760405192612b4460208360051b018561207c565b81845260208401905f5260205f205f915b838310612b625750505050565b600160208192604051612b748161202a565b61ffff86548060020b83528060181c60020b8584015260301c166040820152815201920192019190612b55565b6001600160a01b0316908115612c38576020600492604051938480926338d52e0f60e01b82525afa918215610d75575f92612bfb575b506001600160a01b03908116911603612bec57565b630447083360e11b5f5260045ffd5b9091506020813d602011612c30575b81612c176020938361207c565b8101031261035e5751612c2981610661565b905f612bd7565b3d9150612c0a565b5050565b9060207f0a9313057db670e1bab1f53db0b37781b14914668b69a1713beebe595ca8154191835f52600c8252612c818160405f209060ff801983541691151516179055565b6040519015158152a2565b805f52600c60205260405f2060ff1981541690557f0a9313057db670e1bab1f53db0b37781b14914668b69a1713beebe595ca8154160206040515f8152a2565b5f908152602091825260408082208083526003909352902080546001600160a01b0319166001600160a01b038416179055907fcbda68d04b1bbda52cc4a6bb4b1884fcc53c39b43035c8422f5e188cc9a78e13906040516001600160a01b039091168152602090a2565b9190820391821161251c57565b9190612d5b60ff612d548193613a36565b1692613a36565b16810180911161251c5760011c6006811115612dbf57600519810190811161251c57905b60068210612db6575b600c8211612dad575b5f52600b60205260ff8060405f2092161660ff19825416179055565b600c9150612d91565b60069150612d88565b505f90612d7f565b5f528060205260405f20612deb612de6825f52600560205260405f2090565b613b30565b612e22612e08612e14612e0860208501516001600160801b031690565b6001600160801b031690565b92516001600160801b031690565b9181612e30575b5050905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693612e658582614f15565b80841015612fe6575082945b85612ee4575b5050612ed790612ec9612e9f612e9a8697612e94612edc98614f7d565b96612d36565b614f7d565b612eb9612eaa6120bc565b6001600160801b039096168652565b6001600160801b03166020850152565b5f52600560205260405f2090565b613b55565b805f80612e29565b90939190612f07612efb6001600160a01b03871681565b6001600160a01b031690565b813b1561035e57604051637a94c56560e11b81523060048201526024810191909152604481018790525f8160648183865af18015610d7557612fd2575b50803b1561035e57604051630b0d9c0960e01b81526001600160a01b03959095166004860152306024860152604485018690525f908590606490829084905af1938415610d7557612e9f612e9a612fac88612ed796612ec995612edc9a612fb8575b50612521565b96505050819250612e77565b80612fc65f612fcc9361207c565b80610c27565b5f612fa6565b80612fc65f612fe09361207c565b5f612f44565b94612e71565b9391929093805f52600a60205261301a6001600160401b0360405f205416613012613b7d565b908784613bac565b613025828683613c00565b7fef247f1cf3934826e7decf6a9bbfb2d7a100a81aeb9a885c283c6fcd6f2e7c1e61304f82613c38565b80519096906001600160a01b03166020880180519092916130f6916130809188916001600160a01b0316908861285c565b909381809a869c6130998a5f52600760205260405f2090565b506130b08761088c8c5f52600860205260405f2090565b506130bc8b888c613c82565b878281613119575b505050816130fb575b50505060405193849360018060a01b031697846040919493926060820195825260208201520152565b0390a3565b915161311192906001600160a01b031689613cd0565b5f81816130cd565b915161312f92906001600160a01b03168c613cd0565b5f87826130c4565b60409061173c939281528160208201520190611707565b805f528160205261316160405f20613edf565b90839593156131f557156131b657506040805194855260208501919091526001600160a01b03909116927f5e350f6c95dc463a123f10b09e7b0ac23e9f617c1c98037328081c191153510591819081016130f6565b6040516001600160a01b03909316947fbda98856b4305e2eee2baa3c47a3648656b3474db9b5318af7c13a7b8be1596f93925082916130f69183613137565b505050505050565b9081602091031261035e575190565b90613241613223836005905f5260205260405f2090565b54612753612e0861323a6001600160801b03841682565b9260801c90565b91613268612efb61325b836003905f5260205260405f2090565b546001600160a01b031690565b906001600160a01b03821661327b575050565b5f908152600460205260409020549081613293575050565b6040516303d1689d60e11b815260048101929092529192909160209083908180602481015b03915afa908115610d755761173c925f926132d35750612521565b6132f691925060203d6020116132fd575b6132ee818361207c565b8101906131fd565b905f612fa6565b503d6132e4565b929190835f5260205261331960405f206142ff565b925f5260205261173c60405f206142ff565b6020906133769392604051838101918252600660408201526040815261335260608261207c565b519020906040518080968194631e2eaeaf60e01b8352600483019190602083019252565b03916001600160a01b03165afa918215610d75575f926133b9575b506001600160a01b0382169160a081901c60020b9162ffffff60b883901c81169260d01c1690565b6133d391925060203d6020116132fd576132ee818361207c565b905f613391565b91610fff91901561340d57165b61ffff81166133f4575090565b610fff62ffffff91169116620f42408183020491010390565b600c1c166133e7565b80518210156124cf5760209160051b010190565b906001600160801b03809116911601906001600160801b03821161251c57565b80515f96959094929391875b8681106134665750505050505050565b6134708183613416565b5161347f6126c2825160020b90565b8560020b908112159081613516575b5061349d575b50600101613456565b6001919961350982886134dd6134ce6134d66134ce6134c761272e604061350f9b015161ffff1690565b809561253f565b612710900490565b928a61253f565b916135026134f460206134f96134f4855160020b90565b614384565b93015160020b90565b908c6146a4565b9061342a565b9890613494565b90506135296126c2602084015160020b90565b135f61348e565b62ffffff9094169492936001600160a01b0380831690821610159290915f8612156135f45786620f4240039061356882885f0361496e565b85156135e3576135798486846147a3565b975b8882106135c3575050968791620f424082145f146135b4575050855b935b156135ab57916135a892614803565b91565b6135a89261473f565b6135be9188614945565b613597565b97509750505085946135d784888486614b33565b968791015f0393613599565b6135ee84838761482f565b9761357b565b92959493919086156136635761360b818386614803565b935b8486106136495761173c9394955080975b1561363b579161362d926147a3565b809480620f42400391614945565b6136449261482f565b61362d565b5061173c92935061365c8786838561486b565b809761361e565b61366e81858461473f565b9361360d565b905f821261367e57565b6393dafdf160e01b5f5260045ffd5b60405160208101917ff9e69560d0b04386cb2eb1211478a344fecdd29e33657c0802e4cad7b22a2c5c83526040820152604081526136cc60608261207c565b51902090565b6137146136de836121c7565b926137276136fa60208301956136f3876121c7565b9086613304565b939061370e613708856121c7565b87614bb9565b90612d36565b9261370e613721876121c7565b86614bb9565b821580613828575b612a525761375d847f000000000000000000000000000000000000000000000000000000000000000061332b565b5050509061377661192a865f52600d60205260405f2090565b93845115613817576137889285614c17565b819592951580613820575b61381757611c7d966137ad6137a7866121c7565b85612dc7565b6137b96117fe836121c7565b938181116137f9575b50508282116137d4575b505050614d74565b6137f1926137e46137ea926121c7565b92612d36565b9083614d60565b5f80806137cc565b613809613810926137e4896121c7565b9086614d60565b5f806137c2565b50505050505050565b508015613793565b50801561372f565b9081602091031261035e575160ff8116810361035e5790565b604d811161251c57600a0a90565b6001600160a01b031680156129285760405163313ce56760e01b8152602081600481855afa908115610d75576138989160ff915f91613a07575b5016613849565b60405163ef8b30f760e01b815260048101829052909190602081602481855afa908115610d75575f916139e8575b506040516363737ac960e11b81526004810184905290602082602481865afa918215610d75575f926139c7575b50036139b85760405163266d6a8360e11b81526004810183905291602083602481855afa908115610d755761394e935f92613998575b506020919260405180809681946303d1689d60e11b8352600483019190602083019252565b03915afa918215610d75575f92613977575b500361396857565b63a54523b560e01b5f5260045ffd5b61399191925060203d6020116132fd576132ee818361207c565b905f613960565b602092506139b290833d85116132fd576132ee818361207c565b91613929565b634102dfa760e11b5f5260045ffd5b6139e191925060203d6020116132fd576132ee818361207c565b905f6138f3565b613a01915060203d6020116132fd576132ee818361207c565b5f6138c6565b613a29915060203d602011613a2f575b613a21818361207c565b810190613830565b5f613891565b503d613a17565b60405163313ce56760e01b815290602090829060049082906001600160a01b03165afa5f9181613a6c575b5061173c5750601290565b613a8691925060203d602011613a2f57613a21818361207c565b905f613a61565b6001600160a01b03821615612c3857604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152919091169190602081604481865afa908115610d75575f91613aef575b5015613ae6575050565b611c7d91614e9a565b613b08915060203d6020116132fd576132ee818361207c565b5f613adc565b906001600160a01b03811615612c3857611c7d916001600160a01b0316614e9a565b90604051613b3d81612061565b91546001600160801b038116835260801c6020830152565b815160209092015160801b6001600160801b0319166001600160801b03909216919091179055565b4661a4b103613ba85763a3b1b31d5f5260205f6004601c60645afa153d602014151761035e575f5190565b4390565b5f9081526009602090815260408083206001600160a01b039094168352929052209091906001600160401b0390549216820180921161251c578111613bee5750565b630a9ac47160e41b5f5260045260245ffd5b5f9081526008602090815260408083206001600160a01b039094168352929052205410613c2957565b633999656760e01b5f5260045ffd5b5f6020604051613c4781612061565b82815201525f52600660205260405f2060405190613c6482612061565b80546001600160a01b03908116835260019091015416602082015290565b90815f52600760205260405f2091825484810390811161251c57613cc193555f52600860205260405f209060018060a01b03165f5260205260405f2090565b805491820391821161251c5755565b929190928215613cff57611c7d9360018060a01b0316905f5280602052613cfa8360405f206157e1565b614f91565b50505050565b600160ff1b811461251c575f0390565b9061016092613d26836060936121e5565b805160020b60a0840152602081015160020b60c0840152604081015160e084015201516101008201526101406101208201525f6101408201520190565b611c7d9160207f000000000000000000000000000000000000000000000000000000000000000091613db28135613d9981610661565b855f5280845260405f20613dac82610661565b8561506a565b013591613dbe83610661565b5f528160205260405f2090613dd283610661565b61506a565b6020611c7d92613df18135613deb81610661565b84615280565b013590613dfd82610661565b615280565b5f905d5f195f80516020615d738339815191525c015f80516020615d738339815191525d565b6001600160a01b03821615612c38576001600160a01b031690613e4c5f82846156f5565b15613e55575050565b613e5f8183615742565b15613e89575f613e6f91836157a6565b15613e775750565b635274afe760e01b5f5260045260245ffd5b50635274afe760e01b5f5260045260245ffd5b60405190613eab60208361207c565b5f8252565b3d15613eda573d90613ec182612288565b91613ecf604051938461207c565b82523d5f602084013e565b606090565b905f905f906060613eff612efb61325b876003905f5260205260405f2090565b6001600160a01b03811615614012575f86815260046020526040902054958615613ffd57604051635d043b2960e11b8152600481018890523060248201819052604482015291602090839060649082905f905af15f9281613fdc575b50613f6b5750505061173c613eb0565b613fd6929550613f9c919394505f613f8c826004905f5260205260405f2090565b556005905f5260205260405f2090565b613fbc612e9a84613fb7612e0885546001600160801b031690565b612521565b6001600160801b03166001600160801b0319825416179055565b91600191565b613ff691935060203d6020116132fd576132ee818361207c565b915f613f5b565b505050925050505f905f905f9061173c613e9c565b5050925050505f905f905f9061173c613e9c565b5f818152600660205260409020546001600160a01b03166140b357611c7d926001916040519361405585612061565b60a084901b849003908116855291821660208086019182525f928352600690526040909120935184549083166001600160a01b039081166001600160a01b031992831617865591519490930180549093169390911616919091179055565b630b0c769f60e01b5f5260045ffd5b90939293841561419c576040516370a0823160e01b81523060048201526001600160a01b03919091169290602081602481875afa908115610d755786905f92614179575b5061411491923090866152e8565b6040516370a0823160e01b815230600482015290602082602481875afa8015610d7557614148925f9161415a575b50612d36565b93841061098257611c7d918491615375565b614173915060203d6020116132fd576132ee818361207c565b5f614142565b61411492506141969060203d6020116132fd576132ee818361207c565b91614106565b505f93505050565b906141b19193929361253f565b918270ffffffffffffffffffffffffffffffffff1060071b83811c68ffffffffffffffffff1060061b1783811c64ffffffffff1060051b1783811c62ffffff1060041b1760b56201000085831c019160011c1b0260121c8084040160011c8084040160011c8084040160011c8084040160011c8084040160011c8084040160011c8084040160011c808094041080840393146105345761425660ff61425b9216613849565b61252e565b8083106142655750565b6311b57b5760e31b5f52600483905260245260445ffd5b55565b5f52600760205260405f20541561284d57565b805f52600760205260405f2080549084820180921161251c57555f8181526008602090815260408083206001600160a01b0386168452909152902092835490810180911161251c5761427c93555f52600960205260405f209060018060a01b03165f5260205260405f2090565b90614316613223836005905f5260205260405f2090565b91614330612efb61325b836003905f5260205260405f2090565b906001600160a01b038216614343575050565b5f90815260046020526040902054908161435b575050565b60405163266d6a8360e11b815260048101929092529192909160209083908180602481016132b8565b60020b908160ff1d82810118620d89e8811161469e5763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a59400102600160801b189160028116614682575b60048116614666575b6008811661464a575b6010811661462e575b60208116614612575b604081166145f6575b608081166145da575b61010081166145be575b61020081166145a2575b6104008116614586575b610800811661456a575b611000811661454e575b6120008116614532575b6140008116614516575b61800081166144fa575b6201000081166144de575b6202000081166144c3575b6204000081166144a8575b620800001661448f575b5f12614487575b0160201c90565b5f1904614480565b6b048a170391f7dc42444e8fa290910260801c90614479565b6d2216e584f5fa1ea926041bedfe9890920260801c9161446f565b916e5d6af8dedb81196699c329225ee6040260801c91614464565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c91614459565b916f31be135f97d08fd981231505542fcfa60260801c9161444e565b916f70d869a156d2a1b890bb3df62baf32f70260801c91614444565b916fa9f746462d870fdf8a65dc1f90e061e50260801c9161443a565b916fd097f3bdfd2022b8845ad8f792aa58250260801c91614430565b916fe7159475a2c29b7443b29c7fa6e889d90260801c91614426565b916ff3392b0822b70005940c7a398e4b70f30260801c9161441c565b916ff987a7253ac413176f2b074cf7815e540260801c91614412565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c91614408565b916ffe5dee046a99a2a811c461f1969c30530260801c916143fe565b916fff2ea16466c96a3843ec78b326b528610260801c916143f5565b916fff973b41fa98c081472e6896dfb254c00260801c916143ec565b916fffcb9843d60f6159c9db58835c9266440260801c916143e3565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c916143da565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c916143d1565b916ffff97272373d413259a46990580e213a0260801c916143c8565b82615440565b936001600160a01b0383811690831611614737575b6001600160a01b038581169590831686116146da57505061173c935061548a565b919490939192906001600160a01b038216111561472b57829161470191614707959461548a565b93615455565b6001600160801b0381166001600160801b038316105f14614726575090565b905090565b91505061173c92615455565b9091906146b9565b6001600160a01b038281169082161161479d575b6001600160a01b0381169283156147915761478d926001600160a01b0380821693909103169060601b600160601b600160e01b0316614ab0565b0490565b62bfc9215f526004601cfd5b90614753565b6001600160a01b03828116908216116147fd575b6001600160a01b038116928315614791576147f1926001600160a01b0380821693909103169060601b600160601b600160e01b0316614945565b90808206151591040190565b906147b7565b61173c926001600160a01b03928316919092160360ff81901d90810118906001600160801b03166149da565b6001600160a01b0391821691160360ff81901d90810118906001906001600160801b031661485d83826149da565b928260601b91091515160190565b926001600160a01b038416156001600160801b03831615176149315715614928576001600160a01b0382116148eb576001600160801b036148af6148bc9360601b90565b9116808206151591040190565b905b6001600160a01b031690808211156148de5790036001600160a01b031690565b634323a5555f526004601cfd5b6001600160801b031661490381600160601b84614ab0565b9181156124fa57600160601b900961491c575b906148be565b60010180614916575f80fd5b61173c926154d7565b634f2461b85f526004601cfd5b1561035e57565b929190614953828286614ab0565b9382156124fa570961496157565b9060010190811561035e57565b808202905f1983820990828083109203918083039283620f4240111561035e57146149ce577fde8f6cefed634549b62c77574f722e1ac57e23f24d8fd5cb790fb65668c2613993620f4240910990828211900360fa1b910360061c170290565b5050620f424091500490565b81810291905f1982820991838084109303928084039384600160601b111561035e5714614a1a57600160601b910990828211900360a01b910360601c1790565b50505060601c90565b90606082901b905f19600160601b8409928280851094039380850394614a4a86851161493e565b14614aa9578190600160601b900981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b5091500490565b91818302915f19818509938380861095039480860395614ad187861161493e565b14614b2b579082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b505091500490565b926001600160a01b038416156001600160801b03831615176149315715614b5d5761173c92615536565b906001600160a01b038111614ba0576001600160801b039060601b91169081156124fa5704905b6001600160a01b031690810190811061251c5761173c90615cf5565b6001600160801b03614bb3921690614a23565b90614b84565b9061173c915f528060205260405f20907f00000000000000000000000000000000000000000000000000000000000000009161559f565b60405190610100614c01818461207c565b368337565b9060088110156124cf5760051b0190565b93909291614c23614bf0565b945f945f948251925f5b848110614c3c57505050505050565b89614c478284613416565b51805160020b614c5690614384565b90836020820151614c679060020b90565b614c7090614384565b6040929092015161ffff16614c85818c61253f565b612710900490614c95908961253f565b6127109004614ca69184868c6146a4565b938491614cb291614c06565b6001600160801b0391821690528316614cd1575b505050600101614c2d565b6001600160a01b03818116908816818110614d2e575b6001600160a01b0384168111614cff575b5050614cc6565b9261275392614d1b95926001979e95115f14614d26579061482f565b97905f808080614cf8565b50889061482f565b9c614d4f906001600160a01b0385168f1015614d55576127538685876147a3565b9c614ce7565b61275386858c6147a3565b90611c7d92915f5260205260405f206155ec565b614d8090939293615022565b928051925f5b848110614d9557505050505050565b614daf614da28284614c06565b516001600160801b031690565b906001600160801b0382169182614dcc575b506001915001614d86565b6040614e2d93614ddc8488613416565b5190614e05614dfa6020614df1855160020b90565b94015160020b90565b6119f16119e761209d565b82820152634455414c6060820152815180958192632d35e7ed60e11b83528a60048401613d15565b03815f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1908115610d7557600193614e7792614e7d575b5082896156e2565b5f614dc1565b614e949060403d8111611a6457611a56818361207c565b50614e6f565b90614ea75f1982846156f5565b15614eb0575050565b614eba8183615742565b15614ef457614ecc905f1990836157a6565b15614ed45750565b635274afe760e01b5f9081526001600160a01b0391909116600452602490fd5b50635274afe760e01b5f9081526001600160a01b0391909116600452602490fd5b6001600160a01b038116614f2857503190565b6040516370a0823160e01b81526001600160a01b0392831660048201529160209183916024918391165afa908115610d75575f91614f64575090565b61173c915060203d6020116132fd576132ee818361207c565b906001600160801b03821680920361367e57565b9091906001600160a01b038116614fbe57505f808080614fb294865af11590565b614fb95750565b615989565b6040805163a9059cbb60e01b81526001600160a01b039094166004850152602484019290925291905f9060208260448582885af13d15601f3d116001855114161716928281528260208201520152156150145750565b6001600160a01b031661591c565b60405160208101917fafe3417b23754fe9536b3f22f656921eb1836fc19496a3dfe32567a46080837e83526040820152604081526136cc60608261207c565b01905f825c925d565b91906150778230856159f2565b5f8112156151f45761508890613d05565b926001600160a01b038316615141576001600160a01b0316803b1561035e57604051632961046560e21b81526001600160a01b039390931660048401525f8360248183855af1908115610d7557849360209261512d575b50600460405180968193630476982d60e21b83525af1928315610d7557611c7d9361510e575b505b6003615a87565b6151269060203d6020116132fd576132ee818361207c565b505f615105565b80612fc65f61513b9361207c565b5f6150df565b6001600160a01b03169291833b1561035e57604051632961046560e21b81526001600160a01b0382166004820152935f8560248183855af1918215610d75578482615196925f986020966151e0575b50614f91565b600460405180968193630476982d60e21b83525af1928315610d7557611c7d936151c1575b50615107565b6151d99060203d6020116132fd576132ee818361207c565b505f6151bb565b80612fc68b6151ee9361207c565b5f615190565b91925f83136152035750505050565b6001600160a01b0316803b1561035e57604051630ab714fb60e11b81523060048201526001600160a01b03949094166024850152604484018390525f908490606490829084905af1928315610d75576152639361526c575b506003615a3f565b5f808080613cff565b80612fc65f61527a9361207c565b5f61525b565b805f528160205261529360405f20615aec565b90939193156152a25750505050565b7f0fdff83d01f2c1aed6da56be494d9c5f08103ed411b0123a9f789de74caa0a5b916152dc60405192839260018060a01b03169683613137565b0390a35f808080613cff565b6040516323b872dd60e01b5f9081526001600160a01b039384166004529290931660245260449390935260209060648180865af160015f5114811615615356575b6040919091525f6060521561533b5750565b635274afe760e01b5f526001600160a01b031660045260245ffd5b600181151661536c573d15833b15151616615329565b503d5f823e3d90fd5b90611c7d92915f528060205260405f20615c15565b818102929181158285048214178302156153a5575050900490565b82905f1981840985811086019003920990825f03831692818111156154105783900480600302600218808202600203028082026002030280820260020302808202600203028082026002030280910260020302936001848483030494805f0304019211900302170290565b63ae47f7025f526004601cfd5b92919061542b82828661538a565b930961543357565b9060010190811561541057565b6345c3193d60e11b5f5260020b60045260245ffd5b61173c92612e9a9290916001600160a01b0380831690821611615484575b90036001600160a01b031690614a23565b90615473565b61173c92612e9a929091906001600160a01b03808216908316116154d1575b6154bf6001600160a01b038281169084166149da565b9190036001600160a01b031691614ab0565b906154a9565b91908115615531576001600160a01b03909216918183029160609190911b600160601b600160e01b0316908204831482821116156155245761173c9261551f92820391614945565b615cf5565b63f5c787f15f526004601cfd5b505090565b919081156155315760601b600160601b600160e01b0316916001600160a01b0316818102828104821461558b575b5080156124fa57820490810180911161251c5780820615159104016001600160a01b031690565b8301838110615564579150612efb92614945565b9190915f52600560205260405f205460801c9182156155e5576155cb916001600160a01b031690614f15565b808211156155df57810390811161251c5790565b50505f90565b5050505f90565b908015612c385761560c612efb61325b846003905f5260205260405f2090565b916001600160a01b038316156156dd57604051632d182be560e21b8152600481018390523060248201819052604482015292602090849060649082905f905af1928315610d75575f936156bc575b505f818152600460205260409020548084116156ae57615699613fbc92615687611c7d96612e9a94612d36565b5f828152600460205260409020613f8c565b92613fb7612e0885546001600160801b031690565b623faf7960e11b5f5260045ffd5b6156d691935060203d6020116132fd576132ee818361207c565b915f61565a565b505050565b6001600160801b038316156156dd57015d565b92916040519163095ea7b360e01b5f5260018060a01b031660045260245260205f60448180875af19260015f5114841615615731575b50604052565b3d15903b151516909216915f61572b565b60405163095ea7b360e01b5f9081526001600160a01b03909316600452602483905290929160209060448180875af19260015f51148416156157845750604052565b6001849294151661579d573b15153d151616915f61572b565b833d5f823e3d90fd5b92916040519163095ea7b360e01b5f5260018060a01b031660045260245260205f60448180875af19260015f51148416156157845750604052565b8115612c38575f81815260056020526040902090615809612e0883546001600160801b031690565b8381101561590a5761582a612efb61325b846003905f5260205260405f2090565b936001600160a01b038516156158f7575f9461584b60209361587c93612d36565b604051632d182be560e21b815260048101919091523060248201819052604482015295869283919082906064820190565b03925af1928315610d75575f936158d6575b505f81815260046020526040902054928381116156ae576158b56158c591611c7d95612d36565b916004905f5260205260405f2090565b5580546001600160801b0319169055565b6158f091935060203d6020116132fd576132ee818361207c565b915f61588e565b611c7d9450613fbc9250612e0891612d36565b613fbc9150611c7d93612e0891612d36565b6040516390bfb86560e01b81526001600160a01b03909116600482015263a9059cbb60e01b60248201526080604482015260a03d601f01601f191690810160648301523d60848301523d5f60a484013e808201600460a482015260c4633c9fd93960e21b91015260e40190fd5b6040516390bfb86560e01b81526001600160a01b0390911660048201525f602482018190526080604483015260a03d601f01601f191690810160648401523d6084840152903d9060a484013e808201600460a482015260c4633d2cec6f60e21b91015260e40190fd5b6001600160a01b039182165f9081529282166020908152604093849020935163789add5560e11b815260048101949094529183916024918391165afa908115610d75575f91614f64575090565b6002915f520160205260405f20805460801c91820180921161251c57615a67611c7d92614f7d565b81546001600160801b031660809190911b6001600160801b031916179055565b82156156dd576002915f520160205260405f206001600160801b0381541691808310615add57820391821161251c576001600160801b03611c7d92166001600160801b03166001600160801b0319825416179055565b63bc6072f160e01b5f5260045ffd5b905f906060615b0a612efb61325b866003905f5260205260405f2090565b6001600160a01b03811615615c03575f85815260056020526040902094615b3b612e0887546001600160801b031690565b958615615bef57604051636e553f6560e01b81526004810188905230602482015292602090849060449082905f905af15f9381615bce575b50615b84575050505061173c613eb0565b9091809394955015615bbf5780546001600160801b03191690555f908152600460205260409020615bb8905b918254612521565b9055600191565b63d6a0a04160e01b5f5260045ffd5b615be891945060203d6020116132fd576132ee818361207c565b925f615b73565b505050509150505f9060019061173c613e9c565b50509150505f9060019061173c613e9c565b9082156156dd57615c35612efb61325b846003905f5260205260405f2090565b906001600160a01b03821615615cd6578184615c585f96602095615c8295615d09565b604051636e553f6560e01b8152600481019190915230602482015294859283919082906044820190565b03925af1918215610d75575f92615cb5575b508115615bbf57615bb0615cb1916004905f5260205260405f2090565b9055565b615ccf91925060203d6020116132fd576132ee818361207c565b905f615c94565b505090613fbc612e9a615699611c7d946005905f5260205260405f2090565b6001600160a01b0381169190820361367e57565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152919091169290602081604481875afa908115610d75575f91615d53575b5010613ae6575050565b615d6c915060203d6020116132fd576132ee818361207c565b5f615d4956fec2433f8262e72ab568eae181ced3a786201108205aac849c03d86c3ebffc343f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a164736f6c634300081a000a000000000000000000000000000000000004444c5dc75cb358380d2e3de08a9000000000000000000000000000000000000000000000000000000000000c350000000000000000000000000058e28b95a2ee57c4e90613afce9e8cceed3ab1e80000000000000000000000000000000000000000000000000000000000000e10
Deployed Bytecode
0x60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a7146102f057806309cc6e54146102eb57806311b9aa23146102e657806312e8d594146102e15780631734db44146102dc5780631c757b95146102d757806321d0ee70146102cd57806324ae92a7146102d2578063259982e5146102cd57806325c8d397146102aa57806328c32069146102c85780632bedc0cc146102c35780633b8b9bf0146102be5780633c9f1f29146102b95780634172aabc146102b45780634627e7c0146102af57806348d8b0ba146102aa578063501d815c146102a55780635166e896146102a0578063545b396d1461029b578063575e24b414610296578063638ffec31461029157806367dd0e0b1461028c5780636818a5e2146102875780636b6dee8d146102825780636c2bbe7e1461025f5780636fe7e6eb1461027d578063715018a61461027857806379ba5097146102735780637f4ebbe51461026e5780638da5cb5b1461026957806391dd7346146102645780639f063efc1461025f578063aa61258e1461025a578063b47b2fb114610255578063b6a8b0fa14610228578063b8f7a66514610250578063b9dc1c4d1461024b578063bdd0040f14610246578063c4e833ce14610241578063cb89fcca1461023c578063d8f3c72114610237578063dc4c90d314610232578063dc98354e1461022d578063e1b4af6914610228578063e30c3978146102235763f2fde38b1461021e575f80fd5b611fa0565b611f78565b611abb565b611f08565b611ec4565b611e91565b611d64565b611c7f565b611b8d565b611b2b565b611b10565b611883565b611854565b6114eb565b61173f565b6116e0565b611667565b6115e7565b6115c8565b61154c565b611439565b61108b565b610fde565b610f40565b610e17565b610d7a565b610c71565b610c31565b6109bc565b610bcf565b610ba0565b610b77565b610b1d565b610a70565b610a1c565b610748565b6107d5565b610672565b6105f5565b6105cb565b610562565b610384565b3461035e57602036600319011261035e5760043563ffffffff60e01b811680910361035e57602090630f5b7f7760e31b811490811561034d575b811561033c575b506040519015158152f35b6301ffc9a760e01b1490505f610331565b633c088ac960e21b8114915061032a565b5f80fd5b60a090600319011261035e57600490565b60a090602319011261035e57602490565b3461035e5760e036600319011261035e5761039e36610362565b60a4359060c435906103ae6123b8565b6103b66123cb565b6103be612412565b60a06103ca36836120d8565b209281356103d781610661565b6001600160a01b03169260208301356103ef81610661565b60018060a01b031693855f52600760205260405f2054610553578215801561054b575b6105345761043a928161042987610431948a614026565b3390886140c2565b933390866140c2565b9180158015610543575b6105345761050c6105189261051392867ff6507ee9cd8bc6639ce3d98dfedcac957dae7246e8f4f30233f0dafbfea0604161050261048e6104876105309b612b02565b8a866141a4565b986104e461049a613b7d565b8b33875f818152600760209081526040808320869055600882528083206001600160a01b039590951680845294825280832095909555918152600982528381209281529190522055565b604080518b8152602081019690965285015233939081906060820190565b0390a336906120d8565b60a0902090565b612427565b610520612400565b6040519081529081906020820190565b0390f35b632e28917b60e11b5f5260045ffd5b508215610444565b508115610412565b635f9863ad60e01b5f5260045ffd5b3461035e5760c036600319011261035e5761057c36610362565b60a435906001600160401b03821161035e573660238301121561035e578160040135906001600160401b03821161035e57366024606084028501011161035e5760246105c993019061215b565b005b3461035e57602036600319011261035e576004355f526007602052602060405f2054604051908152f35b3461035e5760c036600319011261035e5761064f61061236610362565b60a4359060a061062236836120d8565b20602082359261063184610661565b013561063c81610661565b6001600160a01b039081169216906127b7565b60408051928352602083019190915290f35b6001600160a01b0381160361035e57565b3461035e57604036600319011261035e5760206106b660243560043561069782610661565b5f526008835260405f209060018060a01b03165f5260205260405f2090565b54604051908152f35b9181601f8401121561035e578235916001600160401b03831161035e576020838186019501011161035e57565b9061016060031983011261035e5760043561070681610661565b9160a060231982011261035e57602491608060c31983011261035e5760c49161014435906001600160401b03821161035e57610744916004016106bf565b9091565b3461035e57610756366106ec565b5050507f000000000000000000000000000000000004444c5dc75cb358380d2e3de08a906001600160a01b03163303915061079c9050576378895c1360e01b5f5260045ffd5b63570c108560e11b5f5260045ffd5b60031901610120811261035e5760a01361035e5760049060a4359060c4359060e435906101043590565b3461035e576107e3366107ab565b6107f094919293946123cb565b6107f8612412565b42116109ad5761081f60a0916108188361081236846120d8565b206128f6565b36906120d8565b209161082a8361427f565b61083383613c38565b80519094906001600160a01b0316602086018051909591610861918491906001600160a01b031690846127b7565b9096610875835f52600760205260405f2090565b506108a13361088c855f52600860205260405f2090565b9060018060a01b03165f5260205260405f2090565b506108b56108ad613b7d565b853386614292565b8780156109a45790516108d5919033906001600160a01b03165b856140c2565b955b81801561099b5790516108f5919033906001600160a01b03166108cf565b965b8610908115610991575b50610982576040805192835260208301869052820186905233917f06ed2f20538b45039698c763dc14442e53647d726b4718d91fcb1246df1aa06090606090a38211908115610978575b5061096957610958612400565b604080519182526020820192909252f35b638199f5f360e01b5f5260045ffd5b905082115f61094b565b6311c7360360e01b5f5260045ffd5b905086105f610901565b50505f966108f7565b50505f956108d7565b631ab7da6b60e01b5f5260045ffd5b3461035e5760a036600319011261035e576109d961081836610362565b60a0812060018060a01b03825116815f526020526109f960405f2061320c565b6020928301515f9283526001600160a01b03169092526040902061064f9061320c565b3461035e5760a036600319011261035e5761064f610a3936610362565b60a0610a4536836120d8565b20906020813591610a5583610661565b013591610a6183610661565b613304565b8015150361035e57565b3461035e5761010036600319011261035e57610a8b36610362565b60a435610a9781610a66565b60c4359160e4356001600160401b03811161035e57610ad392610abf859236906004016106bf565b50508015610b02576401000276a49261292b565b90915f811215610aea575060405190815260209150f35b11610af85761053090610520565b506105305f610520565b73fffd8963efd1fc6a506488495d951d5263988d259261292b565b3461035e5760c036600319011261035e5761064f610b3a36610362565b60a4359060a0610b4a36836120d8565b206020823592610b5984610661565b0135610b6481610661565b6001600160a01b0390811692169061285c565b3461035e57602036600319011261035e576020610b95600435612b02565b60ff60405191168152f35b3461035e57602036600319011261035e576004355f526002602052602060ff60405f2054166040519015158152f35b3461035e57604036600319011261035e57610c12602435600435610bf282610661565b5f5260205260405f205f52600360205260018060a01b0360405f20541690565b6040516001600160a01b039091168152602090f35b5f91031261035e57565b3461035e575f36600319011261035e57602060405163ffffffff7f00000000000000000000000000000000000000000000000000000000000c3500168152f35b3461035e57610c7f366107ab565b610c8d9491949392936123cb565b610c95612412565b42116109ad57610ce091610cc65f92610cb8604051938492339060208501612262565b03601f19810183528261207c565b604051809381926348c8949160e01b83526004830161172b565b0381837f000000000000000000000000000000000004444c5dc75cb358380d2e3de08a906001600160a01b03165af18015610d7557610d30915f91610d53575b5060208082518301019101612310565b9290918210908115610d49575061096957610958612400565b905082105f61094b565b610d6f91503d805f833e610d67818361207c565b8101906122a3565b5f610d20565b612305565b3461035e5760c036600319011261035e57610d9436610362565b7f97c0b9b02f19b041d6f6ff405bf463718cd4463e68f3f541a5cb1daa6bc4b863602060a0610dd960a43594610dc986610a66565b610dd16123b8565b610818612412565b2092835f5260028252610dfb8160405f209060ff801983541691151516179055565b6040519015158152a2005b60609060c319011261035e5760c490565b3461035e5761014036600319011261035e57610e34600435610661565b610e3d36610373565b610e4636610e06565b50610124356001600160401b03811161035e57610e679036906004016106bf565b50507f000000000000000000000000000000000004444c5dc75cb358380d2e3de08a906001600160a01b0316330361079c5760a0610ea536836120d8565b2090815f52600260205260ff60405f20541615610f2d57610ec58261368d565b91825c610f1e576001610ef9935d60015f80516020615d738339815191525c015f80516020615d738339815191525d6136d2565b6040518061053081905f604060608401936315d7892d60e21b81528260208201520152565b632759dc0160e01b5f5260045ffd5b50636dbc85d160e01b5f5260045260245ffd5b3461035e575f36600319011261035e5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000e10168152f35b60206040818301928281528451809452019201905f5b818110610fa65750505090565b9091926020606060019261ffff60408851805160020b84528581015160020b8685015201511660408201520194019101919091610f99565b3461035e57602036600319011261035e576004355f52600d60205260405f2080546001600160401b038111611086576040519161102160208360051b018461207c565b81835260208301905f5260205f205f915b83831061104757604051806105308782610f83565b6001602081926040516110598161202a565b61ffff86548060020b83528060181c60020b8584015260301c166040820152815201920192019190611032565b612016565b3461035e5760c036600319011261035e576110a536610362565b60a4356001600160401b03811161035e578060040160c0600319833603011261035e576110d06123b8565b6110dc608084016121c7565b306001600160a01b039091160361142a576111066110f9846121c7565b6001600160a01b03161590565b8015611415575b6114065761112d61112060408501612326565b62ffffff16628000001490565b6113f7576064820191611151611142846121c7565b61114b866121c7565b90612ba1565b6084810161115e816121c7565b61116f602087019161114b836121c7565b61118061117b866121c7565b613857565b61118c61117b836121c7565b60a483019461119a86612330565b7f0000000000000000000000000000000000000000000000000000000000000e10906001600160401b038083169116116113c657506111d936886120d8565b60a09020956111ea60448601612344565b6111f49088612c3c565b6111fd886121c7565b611206836121c7565b6112109189612ccc565b611219836121c7565b611222856121c7565b61122c9189612ccc565b61123590612330565b611247875f52600a60205260405f2090565b9061126791906001600160401b03166001600160401b0319825416179055565b611270876121c7565b611279836121c7565b6112839188612d43565b61128c876121c7565b90611296906121c7565b6001600160a01b03166112a891613a8d565b6112b1906121c7565b906112bb906121c7565b6001600160a01b03166112cd91613a8d565b6024016112da908261234e565b6112e6606086016121bd565b906112f19285612605565b6112fa906121c7565b60405163313b65df60e11b81529283916113179160048401612398565b7f000000000000000000000000000000000004444c5dc75cb358380d2e3de08a906001600160a01b031691849103815a6020945f91f1918215610d75575f92611395575b506105306040519283927f76c4350174727086805a3b026998a38a23dec4eaa173f2eb5449eb961e69c0435f80a260020b82526020820190565b6113b891925060203d6020116113bf575b6113b0818361207c565b810190612383565b905f61135b565b503d6113a6565b6113f4906113d388612330565b63184173b360e11b5f526001600160401b0390811660045216602452604490565b5ffd5b63389b52ff60e01b5f5260045ffd5b630a7287b560e01b5f5260045ffd5b506114256110f9602085016121c7565b61110d565b632a96f9e160e21b5f5260045ffd5b3461035e5760c036600319011261035e5760206106b661145836610362565b60a061146a60a4359261081884610661565b205f526008835260405f209060018060a01b03165f5260205260405f2090565b906101a060031983011261035e576004356114a481610661565b9160a060231982011261035e57602491608060c483031261035e5760c4916101443591610164359161018435906001600160401b03821161035e57610744916004016106bf565b3461035e576114f93661148a565b5050507f000000000000000000000000000000000004444c5dc75cb358380d2e3de08a906001600160a01b03163303935061079c9250505057630a85dc2960e01b5f5260045ffd5b8060020b0361035e57565b3461035e5761010036600319011261035e57611569600435610661565b61157236610373565b5061157e60c435610661565b61158960e435611541565b7f000000000000000000000000000000000004444c5dc75cb358380d2e3de08a906001600160a01b0316330361079c57630a85dc2960e01b5f5260045ffd5b3461035e575f36600319011261035e5763ffc0fd9360e01b5f5260045ffd5b3461035e575f36600319011261035e57600154336001600160a01b03821603611654576001600160a01b03199081166001555f805433928116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a3005b63118cdaa760e01b5f523360045260245ffd5b3461035e5760c036600319011261035e576105c961168436610362565b60a4359061169182610661565b6116996123b8565b6116a1612412565b6116d98260a06116b8600180831b039436906120d8565b205f5260205260405f205f52600360205260018060a01b0360405f20541690565b1690613b0e565b3461035e575f36600319011261035e575f546040516001600160a01b039091168152602090f35b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b90602061173c928181520190611707565b90565b3461035e57602036600319011261035e576004356001600160401b03811161035e5761176f9036906004016106bf565b7f000000000000000000000000000000000004444c5dc75cb358380d2e3de08a906001600160a01b031633036118455781019060e08183031261035e5761181f816117c061053094611839946120d8565b60c060a0830135926117d184610661565b01359160018060a01b031681611819611813602060a0859620936118046117fe825160018060a01b031690565b86612dc7565b5001516001600160a01b031690565b82612dc7565b50612fec565b604080516020810193909352820152908160608101610cb8565b6040519182918261172b565b637ae3640d60e11b5f5260045ffd5b3461035e57602036600319011261035e576004355f52600c602052602060ff60405f2054166040519015158152f35b3461035e5761016036600319011261035e576118a0600435610661565b6118a936610373565b6118b236610e06565b50610144356001600160401b03811161035e576118d39036906004016106bf565b50507f000000000000000000000000000000000004444c5dc75cb358380d2e3de08a906001600160a01b03163381900361079c5760a061191336846120d8565b209061192f61192a835f52600d60205260405f2090565b612b1f565b9081519061193c84615022565b5f5b8381106119805761196a611965876119608a61195a8184613d63565b82613dd7565b61368d565b613e02565b6040805163b47b2fb160e01b81525f6020820152f35b6001600160801b036119928284615061565b1690816119a4575b600191500161193e565b6040611a23926119b48389613416565b51906119fb6119db6119d560206119cc865160020b90565b95015160020b90565b92613d05565b916119f16119e761209d565b94859060020b9052565b60020b6020840152565b82820152634455414c6060820152815180948192632d35e7ed60e11b83528c60048401613d15565b03815f885af1918215610d7557600192611a3e575b5061199a565b611a5e9060403d8111611a64575b611a56818361207c565b810190612310565b50611a38565b503d611a4c565b61012060031982011261035e57600435611a8481610661565b9160a060231983011261035e5760249160c4359160e4359161010435906001600160401b03821161035e57610744916004016106bf565b3461035e57611ac936611a6b565b5050507f000000000000000000000000000000000004444c5dc75cb358380d2e3de08a906001600160a01b03163303925061079c91505057630a85dc2960e01b5f5260045ffd5b3461035e575f36600319011261035e57602060405160018152f35b3461035e5761012036600319011261035e57611b4636610362565b60a435611b5281610a66565b60c43560e43591611b6283610661565b61010435936001600160401b03851161035e57611b8661064f9536906004016106bf565b505061292b565b3461035e5760c036600319011261035e576105c9611baa36610362565b60a0611bbc60a43592610dc984610a66565b20612c3c565b611c7d909291926101a0806101c0830195611bdf84825115159052565b60208181015115159085015260408181015115159085015260608181015115159085015260808181015115159085015260a08181015115159085015260c08181015115159085015260e081810151151590850152610100818101511515908501526101208181015115159085015261014081810151151590850152610160818101511515908501526101808181015115159085015201511515910152565b565b3461035e575f36600319011261035e575f6101a0604051611c9f81612045565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e082015282610100820152826101208201528261014082015282610160820152826101808201520152610530611cfc6120ac565b600181525f6020820152600160408201525f6060820152600160808201525f60a0820152600160c0820152600160e08201525f6101008201525f6101208201525f6101408201525f6101608201525f6101808201525f6101a082015260405191829182611bc2565b3461035e5760a036600319011261035e57611d7e36610362565b611d866123b8565b611d8e6123cb565b611d96612412565b611e5b611e5560a0611da836856120d8565b2092611db38461246b565b611dbc84612c8c565b611e506020823592611dcd84610661565b611dd684610661565b5f8781526020858152604080832083526003909152902054611e01906001600160a01b031685613e28565b0191611e418335611e1181610661565b611e1a81610661565b5f88815260208281526040808320835260039091529020546001600160a01b031690613e28565b611e4a81610661565b8561314e565b6121c7565b8261314e565b7fd88c4584c02449a1b9f80397a89a1728abfbdc58a090e15b4a5c0832a414af835f80a25f5f80516020615d938339815191525d005b3461035e57602036600319011261035e576004355f52600a60205260206001600160401b0360405f205416604051908152f35b3461035e575f36600319011261035e576040517f000000000000000000000000000000000004444c5dc75cb358380d2e3de08a906001600160a01b03168152602090f35b3461035e5760e036600319011261035e57611f24600435610661565b611f2d36610373565b50611f3960c435610661565b7f000000000000000000000000000000000004444c5dc75cb358380d2e3de08a906001600160a01b0316330361079c57633ecbaaf760e01b5f5260045ffd5b3461035e575f36600319011261035e576001546040516001600160a01b039091168152602090f35b3461035e57602036600319011261035e57600435611fbd81610661565b611fc56123b8565b60018060a01b0316806bffffffffffffffffffffffff60a01b600154161760015560018060a01b035f54167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227005f80a3005b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b0382111761108657604052565b6101c081019081106001600160401b0382111761108657604052565b604081019081106001600160401b0382111761108657604052565b90601f801991011681019081106001600160401b0382111761108657604052565b60405190611c7d60808361207c565b60405190611c7d6101c08361207c565b60405190611c7d60408361207c565b62ffffff81160361035e57565b91908260a091031261035e5760405160a081018181106001600160401b03821117611086576040526080808294803561211081610661565b8452602081013561212081610661565b60208501526040810135612133816120cb565b6040850152606081013561214681611541565b606085015201359161215783610661565b0152565b6108186121969260a09461216d6123b8565b612175612412565b8561218036866120d8565b209160608501359261219184611541565b612605565b207fab935d01bcc803c9101e3c3eab4b4e3144a7d79414491a14ba5082310af626285f80a2565b3561173c81611541565b3561173c81610661565b634e487b7160e01b5f52601160045260245ffd5b6080809180356121f481610661565b6001600160a01b03168452602081013561220d81610661565b6001600160a01b0316602085015262ffffff604082013561222d816120cb565b166040850152606081013561224181611541565b60020b6060850152013561225481610661565b6001600160a01b0316910152565b60c0919493926122768260e08101976121e5565b6001600160a01b031660a08201520152565b6001600160401b03811161108657601f01601f191660200190565b60208183031261035e578051906001600160401b03821161035e570181601f8201121561035e578051906122d682612288565b926122e4604051948561207c565b8284526020838301011161035e57815f9260208093018386015e8301015290565b6040513d5f823e3d90fd5b919082604091031261035e576020825192015190565b3561173c816120cb565b356001600160401b038116810361035e5790565b3561173c81610a66565b903590601e198136030182121561035e57018035906001600160401b03821161035e5760200191606082023603831361035e57565b9081602091031261035e575161173c81611541565b90929160a0906123ac8360c08101966121e5565b600180831b0316910152565b5f546001600160a01b0316330361165457565b5f80516020615d938339815191525c6123f15760015f80516020615d938339815191525d565b633ee5aeb560e01b5f5260045ffd5b5f5f80516020615d938339815191525d565b5f80516020615d738339815191525c610f1e57565b805f52600260205260405f20600160ff198254161790557f97c0b9b02f19b041d6f6ff405bf463718cd4463e68f3f541a5cb1daa6bc4b863602060405160018152a2565b805f52600260205260405f2060ff1981541690557f97c0b9b02f19b041d6f6ff405bf463718cd4463e68f3f541a5cb1daa6bc4b86360206040515f8152a2565b634e487b7160e01b5f52603260045260245ffd5b91908110156124cf576060020190565b6124ab565b634e487b7160e01b5f52601260045260245ffd5b9060020b9081156124fa5760020b0790565b6124d4565b3561ffff8116810361035e5790565b906001820180921161251c57565b6121d1565b9190820180921161251c57565b908160640291606483040361251c57565b8181029291811591840414171561251c57565b8054905f815581612561575050565b5f5260205f20908101905b818110612577575050565b5f815560010161256c565b8054906801000000000000000082101561108657600182018082558210156124cf575f5260205f2001908035906125b882611541565b825462ffffff67ffff0000000000006125e160406020860135956125db87611541565b016124ff565b60301b169316906001600160401b031916179060181b65ffffff0000001617179055565b92919091811580156127ad575b612686575f80915b83831061269557506127109150036126865761264761264284600d905f5260205260405f2090565b612552565b5f5b8181106126565750505050565b60019061268061266f86600d905f5260205260405f2090565b61267a8386886124bf565b90612582565b01612649565b630d16b83360e31b5f5260045ffd5b906126a96126a48486886124bf565b6121bd565b6126c86126c260206126bc87898b6124bf565b016121bd565b60020b90565b9060020b121561276257620d89e7196126e86126c26126a486888a6124bf565b12801561278f575b6127625761270e6126c2836127096126a487898b6124bf565b6124e8565b15801590612770575b6127625761273561272e60406125db86888a6124bf565b61ffff1690565b156126865761275960019161275361272e60406125db888a8c6124bf565b90612521565b9201919061261a565b6264847d60e41b5f5260045ffd5b506127886126c28361270960206126bc888a8c6124bf565b1515612717565b50620d89e86127a460206126bc86888a6124bf565b60020b136126f0565b5060088211612612565b90939293815f5260018060a01b03166020526127d560405f2061320c565b91815f5260018060a01b03166020526127f060405f2061320c565b936127fa82612b02565b915f52600760205260405f205491821561284d5760ff16604d811161251c57600a0a820180921161251c576001830180931161251c576128476128418361173c958461541d565b9561250e565b9061541d565b6391fe2fa960e01b5f5260045ffd5b9093929193815f5260018060a01b031660205261287b60405f2061320c565b93815f5260018060a01b031660205261289660405f2061320c565b936128a082612b02565b915f52600760205260405f205491821561284d5760ff16604d811161251c57600a0a820180921161251c576001810180911161251c57816128e1918461538a565b936001810180911161251c5761173c9261538a565b5f546001600160a01b03163314612928575f52600c60205260ff60405f205416611c7d576282b42960e81b5f5260045ffd5b50565b9390919361293c61050c36836120d8565b9061296061295c612955845f52600260205260405f2090565b5460ff1690565b1590565b612af65761299061297360408301612326565b916129896020612982836121c7565b92016121c7565b9084613304565b959094851580612aee575b612ae0576129c9847f000000000000000000000000000000000004444c5dc75cb358380d2e3de08a9061332b565b5091949091906001600160a01b03861615612acf57612a0a9286612a0561192a6129f6888f978f976133da565b9a5f52600d60205260405f2090565b61344a565b916001600160801b038316158015612ac7575b612ab85784612a3e9697989984612a349387613530565b9190979250612521565b978597825f14612aaf575080955b11612a59575b5050505050565b612a81949750612a899596505f14612a95576401000276a45b612a7b88613674565b92613530565b925050612521565b91905f80808080612a52565b73fffd8963efd1fc6a506488495d951d5263988d25612a72565b90508095612a4c565b5050505050925050505f905f90565b508815612a1d565b50505050505050925050505f905f90565b50505050925050505f905f90565b50861561299b565b5050925050505f905f90565b5f52600b60205260ff60405f20541680155f1461173c5750600c90565b9081546001600160401b0381116110865760405192612b4460208360051b018561207c565b81845260208401905f5260205f205f915b838310612b625750505050565b600160208192604051612b748161202a565b61ffff86548060020b83528060181c60020b8584015260301c166040820152815201920192019190612b55565b6001600160a01b0316908115612c38576020600492604051938480926338d52e0f60e01b82525afa918215610d75575f92612bfb575b506001600160a01b03908116911603612bec57565b630447083360e11b5f5260045ffd5b9091506020813d602011612c30575b81612c176020938361207c565b8101031261035e5751612c2981610661565b905f612bd7565b3d9150612c0a565b5050565b9060207f0a9313057db670e1bab1f53db0b37781b14914668b69a1713beebe595ca8154191835f52600c8252612c818160405f209060ff801983541691151516179055565b6040519015158152a2565b805f52600c60205260405f2060ff1981541690557f0a9313057db670e1bab1f53db0b37781b14914668b69a1713beebe595ca8154160206040515f8152a2565b5f908152602091825260408082208083526003909352902080546001600160a01b0319166001600160a01b038416179055907fcbda68d04b1bbda52cc4a6bb4b1884fcc53c39b43035c8422f5e188cc9a78e13906040516001600160a01b039091168152602090a2565b9190820391821161251c57565b9190612d5b60ff612d548193613a36565b1692613a36565b16810180911161251c5760011c6006811115612dbf57600519810190811161251c57905b60068210612db6575b600c8211612dad575b5f52600b60205260ff8060405f2092161660ff19825416179055565b600c9150612d91565b60069150612d88565b505f90612d7f565b5f528060205260405f20612deb612de6825f52600560205260405f2090565b613b30565b612e22612e08612e14612e0860208501516001600160801b031690565b6001600160801b031690565b92516001600160801b031690565b9181612e30575b5050905090565b7f000000000000000000000000000000000004444c5dc75cb358380d2e3de08a906001600160a01b031693612e658582614f15565b80841015612fe6575082945b85612ee4575b5050612ed790612ec9612e9f612e9a8697612e94612edc98614f7d565b96612d36565b614f7d565b612eb9612eaa6120bc565b6001600160801b039096168652565b6001600160801b03166020850152565b5f52600560205260405f2090565b613b55565b805f80612e29565b90939190612f07612efb6001600160a01b03871681565b6001600160a01b031690565b813b1561035e57604051637a94c56560e11b81523060048201526024810191909152604481018790525f8160648183865af18015610d7557612fd2575b50803b1561035e57604051630b0d9c0960e01b81526001600160a01b03959095166004860152306024860152604485018690525f908590606490829084905af1938415610d7557612e9f612e9a612fac88612ed796612ec995612edc9a612fb8575b50612521565b96505050819250612e77565b80612fc65f612fcc9361207c565b80610c27565b5f612fa6565b80612fc65f612fe09361207c565b5f612f44565b94612e71565b9391929093805f52600a60205261301a6001600160401b0360405f205416613012613b7d565b908784613bac565b613025828683613c00565b7fef247f1cf3934826e7decf6a9bbfb2d7a100a81aeb9a885c283c6fcd6f2e7c1e61304f82613c38565b80519096906001600160a01b03166020880180519092916130f6916130809188916001600160a01b0316908861285c565b909381809a869c6130998a5f52600760205260405f2090565b506130b08761088c8c5f52600860205260405f2090565b506130bc8b888c613c82565b878281613119575b505050816130fb575b50505060405193849360018060a01b031697846040919493926060820195825260208201520152565b0390a3565b915161311192906001600160a01b031689613cd0565b5f81816130cd565b915161312f92906001600160a01b03168c613cd0565b5f87826130c4565b60409061173c939281528160208201520190611707565b805f528160205261316160405f20613edf565b90839593156131f557156131b657506040805194855260208501919091526001600160a01b03909116927f5e350f6c95dc463a123f10b09e7b0ac23e9f617c1c98037328081c191153510591819081016130f6565b6040516001600160a01b03909316947fbda98856b4305e2eee2baa3c47a3648656b3474db9b5318af7c13a7b8be1596f93925082916130f69183613137565b505050505050565b9081602091031261035e575190565b90613241613223836005905f5260205260405f2090565b54612753612e0861323a6001600160801b03841682565b9260801c90565b91613268612efb61325b836003905f5260205260405f2090565b546001600160a01b031690565b906001600160a01b03821661327b575050565b5f908152600460205260409020549081613293575050565b6040516303d1689d60e11b815260048101929092529192909160209083908180602481015b03915afa908115610d755761173c925f926132d35750612521565b6132f691925060203d6020116132fd575b6132ee818361207c565b8101906131fd565b905f612fa6565b503d6132e4565b929190835f5260205261331960405f206142ff565b925f5260205261173c60405f206142ff565b6020906133769392604051838101918252600660408201526040815261335260608261207c565b519020906040518080968194631e2eaeaf60e01b8352600483019190602083019252565b03916001600160a01b03165afa918215610d75575f926133b9575b506001600160a01b0382169160a081901c60020b9162ffffff60b883901c81169260d01c1690565b6133d391925060203d6020116132fd576132ee818361207c565b905f613391565b91610fff91901561340d57165b61ffff81166133f4575090565b610fff62ffffff91169116620f42408183020491010390565b600c1c166133e7565b80518210156124cf5760209160051b010190565b906001600160801b03809116911601906001600160801b03821161251c57565b80515f96959094929391875b8681106134665750505050505050565b6134708183613416565b5161347f6126c2825160020b90565b8560020b908112159081613516575b5061349d575b50600101613456565b6001919961350982886134dd6134ce6134d66134ce6134c761272e604061350f9b015161ffff1690565b809561253f565b612710900490565b928a61253f565b916135026134f460206134f96134f4855160020b90565b614384565b93015160020b90565b908c6146a4565b9061342a565b9890613494565b90506135296126c2602084015160020b90565b135f61348e565b62ffffff9094169492936001600160a01b0380831690821610159290915f8612156135f45786620f4240039061356882885f0361496e565b85156135e3576135798486846147a3565b975b8882106135c3575050968791620f424082145f146135b4575050855b935b156135ab57916135a892614803565b91565b6135a89261473f565b6135be9188614945565b613597565b97509750505085946135d784888486614b33565b968791015f0393613599565b6135ee84838761482f565b9761357b565b92959493919086156136635761360b818386614803565b935b8486106136495761173c9394955080975b1561363b579161362d926147a3565b809480620f42400391614945565b6136449261482f565b61362d565b5061173c92935061365c8786838561486b565b809761361e565b61366e81858461473f565b9361360d565b905f821261367e57565b6393dafdf160e01b5f5260045ffd5b60405160208101917ff9e69560d0b04386cb2eb1211478a344fecdd29e33657c0802e4cad7b22a2c5c83526040820152604081526136cc60608261207c565b51902090565b6137146136de836121c7565b926137276136fa60208301956136f3876121c7565b9086613304565b939061370e613708856121c7565b87614bb9565b90612d36565b9261370e613721876121c7565b86614bb9565b821580613828575b612a525761375d847f000000000000000000000000000000000004444c5dc75cb358380d2e3de08a9061332b565b5050509061377661192a865f52600d60205260405f2090565b93845115613817576137889285614c17565b819592951580613820575b61381757611c7d966137ad6137a7866121c7565b85612dc7565b6137b96117fe836121c7565b938181116137f9575b50508282116137d4575b505050614d74565b6137f1926137e46137ea926121c7565b92612d36565b9083614d60565b5f80806137cc565b613809613810926137e4896121c7565b9086614d60565b5f806137c2565b50505050505050565b508015613793565b50801561372f565b9081602091031261035e575160ff8116810361035e5790565b604d811161251c57600a0a90565b6001600160a01b031680156129285760405163313ce56760e01b8152602081600481855afa908115610d75576138989160ff915f91613a07575b5016613849565b60405163ef8b30f760e01b815260048101829052909190602081602481855afa908115610d75575f916139e8575b506040516363737ac960e11b81526004810184905290602082602481865afa918215610d75575f926139c7575b50036139b85760405163266d6a8360e11b81526004810183905291602083602481855afa908115610d755761394e935f92613998575b506020919260405180809681946303d1689d60e11b8352600483019190602083019252565b03915afa918215610d75575f92613977575b500361396857565b63a54523b560e01b5f5260045ffd5b61399191925060203d6020116132fd576132ee818361207c565b905f613960565b602092506139b290833d85116132fd576132ee818361207c565b91613929565b634102dfa760e11b5f5260045ffd5b6139e191925060203d6020116132fd576132ee818361207c565b905f6138f3565b613a01915060203d6020116132fd576132ee818361207c565b5f6138c6565b613a29915060203d602011613a2f575b613a21818361207c565b810190613830565b5f613891565b503d613a17565b60405163313ce56760e01b815290602090829060049082906001600160a01b03165afa5f9181613a6c575b5061173c5750601290565b613a8691925060203d602011613a2f57613a21818361207c565b905f613a61565b6001600160a01b03821615612c3857604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152919091169190602081604481865afa908115610d75575f91613aef575b5015613ae6575050565b611c7d91614e9a565b613b08915060203d6020116132fd576132ee818361207c565b5f613adc565b906001600160a01b03811615612c3857611c7d916001600160a01b0316614e9a565b90604051613b3d81612061565b91546001600160801b038116835260801c6020830152565b815160209092015160801b6001600160801b0319166001600160801b03909216919091179055565b4661a4b103613ba85763a3b1b31d5f5260205f6004601c60645afa153d602014151761035e575f5190565b4390565b5f9081526009602090815260408083206001600160a01b039094168352929052209091906001600160401b0390549216820180921161251c578111613bee5750565b630a9ac47160e41b5f5260045260245ffd5b5f9081526008602090815260408083206001600160a01b039094168352929052205410613c2957565b633999656760e01b5f5260045ffd5b5f6020604051613c4781612061565b82815201525f52600660205260405f2060405190613c6482612061565b80546001600160a01b03908116835260019091015416602082015290565b90815f52600760205260405f2091825484810390811161251c57613cc193555f52600860205260405f209060018060a01b03165f5260205260405f2090565b805491820391821161251c5755565b929190928215613cff57611c7d9360018060a01b0316905f5280602052613cfa8360405f206157e1565b614f91565b50505050565b600160ff1b811461251c575f0390565b9061016092613d26836060936121e5565b805160020b60a0840152602081015160020b60c0840152604081015160e084015201516101008201526101406101208201525f6101408201520190565b611c7d9160207f000000000000000000000000000000000004444c5dc75cb358380d2e3de08a9091613db28135613d9981610661565b855f5280845260405f20613dac82610661565b8561506a565b013591613dbe83610661565b5f528160205260405f2090613dd283610661565b61506a565b6020611c7d92613df18135613deb81610661565b84615280565b013590613dfd82610661565b615280565b5f905d5f195f80516020615d738339815191525c015f80516020615d738339815191525d565b6001600160a01b03821615612c38576001600160a01b031690613e4c5f82846156f5565b15613e55575050565b613e5f8183615742565b15613e89575f613e6f91836157a6565b15613e775750565b635274afe760e01b5f5260045260245ffd5b50635274afe760e01b5f5260045260245ffd5b60405190613eab60208361207c565b5f8252565b3d15613eda573d90613ec182612288565b91613ecf604051938461207c565b82523d5f602084013e565b606090565b905f905f906060613eff612efb61325b876003905f5260205260405f2090565b6001600160a01b03811615614012575f86815260046020526040902054958615613ffd57604051635d043b2960e11b8152600481018890523060248201819052604482015291602090839060649082905f905af15f9281613fdc575b50613f6b5750505061173c613eb0565b613fd6929550613f9c919394505f613f8c826004905f5260205260405f2090565b556005905f5260205260405f2090565b613fbc612e9a84613fb7612e0885546001600160801b031690565b612521565b6001600160801b03166001600160801b0319825416179055565b91600191565b613ff691935060203d6020116132fd576132ee818361207c565b915f613f5b565b505050925050505f905f905f9061173c613e9c565b5050925050505f905f905f9061173c613e9c565b5f818152600660205260409020546001600160a01b03166140b357611c7d926001916040519361405585612061565b60a084901b849003908116855291821660208086019182525f928352600690526040909120935184549083166001600160a01b039081166001600160a01b031992831617865591519490930180549093169390911616919091179055565b630b0c769f60e01b5f5260045ffd5b90939293841561419c576040516370a0823160e01b81523060048201526001600160a01b03919091169290602081602481875afa908115610d755786905f92614179575b5061411491923090866152e8565b6040516370a0823160e01b815230600482015290602082602481875afa8015610d7557614148925f9161415a575b50612d36565b93841061098257611c7d918491615375565b614173915060203d6020116132fd576132ee818361207c565b5f614142565b61411492506141969060203d6020116132fd576132ee818361207c565b91614106565b505f93505050565b906141b19193929361253f565b918270ffffffffffffffffffffffffffffffffff1060071b83811c68ffffffffffffffffff1060061b1783811c64ffffffffff1060051b1783811c62ffffff1060041b1760b56201000085831c019160011c1b0260121c8084040160011c8084040160011c8084040160011c8084040160011c8084040160011c8084040160011c8084040160011c808094041080840393146105345761425660ff61425b9216613849565b61252e565b8083106142655750565b6311b57b5760e31b5f52600483905260245260445ffd5b55565b5f52600760205260405f20541561284d57565b805f52600760205260405f2080549084820180921161251c57555f8181526008602090815260408083206001600160a01b0386168452909152902092835490810180911161251c5761427c93555f52600960205260405f209060018060a01b03165f5260205260405f2090565b90614316613223836005905f5260205260405f2090565b91614330612efb61325b836003905f5260205260405f2090565b906001600160a01b038216614343575050565b5f90815260046020526040902054908161435b575050565b60405163266d6a8360e11b815260048101929092529192909160209083908180602481016132b8565b60020b908160ff1d82810118620d89e8811161469e5763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a59400102600160801b189160028116614682575b60048116614666575b6008811661464a575b6010811661462e575b60208116614612575b604081166145f6575b608081166145da575b61010081166145be575b61020081166145a2575b6104008116614586575b610800811661456a575b611000811661454e575b6120008116614532575b6140008116614516575b61800081166144fa575b6201000081166144de575b6202000081166144c3575b6204000081166144a8575b620800001661448f575b5f12614487575b0160201c90565b5f1904614480565b6b048a170391f7dc42444e8fa290910260801c90614479565b6d2216e584f5fa1ea926041bedfe9890920260801c9161446f565b916e5d6af8dedb81196699c329225ee6040260801c91614464565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c91614459565b916f31be135f97d08fd981231505542fcfa60260801c9161444e565b916f70d869a156d2a1b890bb3df62baf32f70260801c91614444565b916fa9f746462d870fdf8a65dc1f90e061e50260801c9161443a565b916fd097f3bdfd2022b8845ad8f792aa58250260801c91614430565b916fe7159475a2c29b7443b29c7fa6e889d90260801c91614426565b916ff3392b0822b70005940c7a398e4b70f30260801c9161441c565b916ff987a7253ac413176f2b074cf7815e540260801c91614412565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c91614408565b916ffe5dee046a99a2a811c461f1969c30530260801c916143fe565b916fff2ea16466c96a3843ec78b326b528610260801c916143f5565b916fff973b41fa98c081472e6896dfb254c00260801c916143ec565b916fffcb9843d60f6159c9db58835c9266440260801c916143e3565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c916143da565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c916143d1565b916ffff97272373d413259a46990580e213a0260801c916143c8565b82615440565b936001600160a01b0383811690831611614737575b6001600160a01b038581169590831686116146da57505061173c935061548a565b919490939192906001600160a01b038216111561472b57829161470191614707959461548a565b93615455565b6001600160801b0381166001600160801b038316105f14614726575090565b905090565b91505061173c92615455565b9091906146b9565b6001600160a01b038281169082161161479d575b6001600160a01b0381169283156147915761478d926001600160a01b0380821693909103169060601b600160601b600160e01b0316614ab0565b0490565b62bfc9215f526004601cfd5b90614753565b6001600160a01b03828116908216116147fd575b6001600160a01b038116928315614791576147f1926001600160a01b0380821693909103169060601b600160601b600160e01b0316614945565b90808206151591040190565b906147b7565b61173c926001600160a01b03928316919092160360ff81901d90810118906001600160801b03166149da565b6001600160a01b0391821691160360ff81901d90810118906001906001600160801b031661485d83826149da565b928260601b91091515160190565b926001600160a01b038416156001600160801b03831615176149315715614928576001600160a01b0382116148eb576001600160801b036148af6148bc9360601b90565b9116808206151591040190565b905b6001600160a01b031690808211156148de5790036001600160a01b031690565b634323a5555f526004601cfd5b6001600160801b031661490381600160601b84614ab0565b9181156124fa57600160601b900961491c575b906148be565b60010180614916575f80fd5b61173c926154d7565b634f2461b85f526004601cfd5b1561035e57565b929190614953828286614ab0565b9382156124fa570961496157565b9060010190811561035e57565b808202905f1983820990828083109203918083039283620f4240111561035e57146149ce577fde8f6cefed634549b62c77574f722e1ac57e23f24d8fd5cb790fb65668c2613993620f4240910990828211900360fa1b910360061c170290565b5050620f424091500490565b81810291905f1982820991838084109303928084039384600160601b111561035e5714614a1a57600160601b910990828211900360a01b910360601c1790565b50505060601c90565b90606082901b905f19600160601b8409928280851094039380850394614a4a86851161493e565b14614aa9578190600160601b900981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b5091500490565b91818302915f19818509938380861095039480860395614ad187861161493e565b14614b2b579082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b505091500490565b926001600160a01b038416156001600160801b03831615176149315715614b5d5761173c92615536565b906001600160a01b038111614ba0576001600160801b039060601b91169081156124fa5704905b6001600160a01b031690810190811061251c5761173c90615cf5565b6001600160801b03614bb3921690614a23565b90614b84565b9061173c915f528060205260405f20907f000000000000000000000000000000000004444c5dc75cb358380d2e3de08a909161559f565b60405190610100614c01818461207c565b368337565b9060088110156124cf5760051b0190565b93909291614c23614bf0565b945f945f948251925f5b848110614c3c57505050505050565b89614c478284613416565b51805160020b614c5690614384565b90836020820151614c679060020b90565b614c7090614384565b6040929092015161ffff16614c85818c61253f565b612710900490614c95908961253f565b6127109004614ca69184868c6146a4565b938491614cb291614c06565b6001600160801b0391821690528316614cd1575b505050600101614c2d565b6001600160a01b03818116908816818110614d2e575b6001600160a01b0384168111614cff575b5050614cc6565b9261275392614d1b95926001979e95115f14614d26579061482f565b97905f808080614cf8565b50889061482f565b9c614d4f906001600160a01b0385168f1015614d55576127538685876147a3565b9c614ce7565b61275386858c6147a3565b90611c7d92915f5260205260405f206155ec565b614d8090939293615022565b928051925f5b848110614d9557505050505050565b614daf614da28284614c06565b516001600160801b031690565b906001600160801b0382169182614dcc575b506001915001614d86565b6040614e2d93614ddc8488613416565b5190614e05614dfa6020614df1855160020b90565b94015160020b90565b6119f16119e761209d565b82820152634455414c6060820152815180958192632d35e7ed60e11b83528a60048401613d15565b03815f7f000000000000000000000000000000000004444c5dc75cb358380d2e3de08a906001600160a01b03165af1908115610d7557600193614e7792614e7d575b5082896156e2565b5f614dc1565b614e949060403d8111611a6457611a56818361207c565b50614e6f565b90614ea75f1982846156f5565b15614eb0575050565b614eba8183615742565b15614ef457614ecc905f1990836157a6565b15614ed45750565b635274afe760e01b5f9081526001600160a01b0391909116600452602490fd5b50635274afe760e01b5f9081526001600160a01b0391909116600452602490fd5b6001600160a01b038116614f2857503190565b6040516370a0823160e01b81526001600160a01b0392831660048201529160209183916024918391165afa908115610d75575f91614f64575090565b61173c915060203d6020116132fd576132ee818361207c565b906001600160801b03821680920361367e57565b9091906001600160a01b038116614fbe57505f808080614fb294865af11590565b614fb95750565b615989565b6040805163a9059cbb60e01b81526001600160a01b039094166004850152602484019290925291905f9060208260448582885af13d15601f3d116001855114161716928281528260208201520152156150145750565b6001600160a01b031661591c565b60405160208101917fafe3417b23754fe9536b3f22f656921eb1836fc19496a3dfe32567a46080837e83526040820152604081526136cc60608261207c565b01905f825c925d565b91906150778230856159f2565b5f8112156151f45761508890613d05565b926001600160a01b038316615141576001600160a01b0316803b1561035e57604051632961046560e21b81526001600160a01b039390931660048401525f8360248183855af1908115610d7557849360209261512d575b50600460405180968193630476982d60e21b83525af1928315610d7557611c7d9361510e575b505b6003615a87565b6151269060203d6020116132fd576132ee818361207c565b505f615105565b80612fc65f61513b9361207c565b5f6150df565b6001600160a01b03169291833b1561035e57604051632961046560e21b81526001600160a01b0382166004820152935f8560248183855af1918215610d75578482615196925f986020966151e0575b50614f91565b600460405180968193630476982d60e21b83525af1928315610d7557611c7d936151c1575b50615107565b6151d99060203d6020116132fd576132ee818361207c565b505f6151bb565b80612fc68b6151ee9361207c565b5f615190565b91925f83136152035750505050565b6001600160a01b0316803b1561035e57604051630ab714fb60e11b81523060048201526001600160a01b03949094166024850152604484018390525f908490606490829084905af1928315610d75576152639361526c575b506003615a3f565b5f808080613cff565b80612fc65f61527a9361207c565b5f61525b565b805f528160205261529360405f20615aec565b90939193156152a25750505050565b7f0fdff83d01f2c1aed6da56be494d9c5f08103ed411b0123a9f789de74caa0a5b916152dc60405192839260018060a01b03169683613137565b0390a35f808080613cff565b6040516323b872dd60e01b5f9081526001600160a01b039384166004529290931660245260449390935260209060648180865af160015f5114811615615356575b6040919091525f6060521561533b5750565b635274afe760e01b5f526001600160a01b031660045260245ffd5b600181151661536c573d15833b15151616615329565b503d5f823e3d90fd5b90611c7d92915f528060205260405f20615c15565b818102929181158285048214178302156153a5575050900490565b82905f1981840985811086019003920990825f03831692818111156154105783900480600302600218808202600203028082026002030280820260020302808202600203028082026002030280910260020302936001848483030494805f0304019211900302170290565b63ae47f7025f526004601cfd5b92919061542b82828661538a565b930961543357565b9060010190811561541057565b6345c3193d60e11b5f5260020b60045260245ffd5b61173c92612e9a9290916001600160a01b0380831690821611615484575b90036001600160a01b031690614a23565b90615473565b61173c92612e9a929091906001600160a01b03808216908316116154d1575b6154bf6001600160a01b038281169084166149da565b9190036001600160a01b031691614ab0565b906154a9565b91908115615531576001600160a01b03909216918183029160609190911b600160601b600160e01b0316908204831482821116156155245761173c9261551f92820391614945565b615cf5565b63f5c787f15f526004601cfd5b505090565b919081156155315760601b600160601b600160e01b0316916001600160a01b0316818102828104821461558b575b5080156124fa57820490810180911161251c5780820615159104016001600160a01b031690565b8301838110615564579150612efb92614945565b9190915f52600560205260405f205460801c9182156155e5576155cb916001600160a01b031690614f15565b808211156155df57810390811161251c5790565b50505f90565b5050505f90565b908015612c385761560c612efb61325b846003905f5260205260405f2090565b916001600160a01b038316156156dd57604051632d182be560e21b8152600481018390523060248201819052604482015292602090849060649082905f905af1928315610d75575f936156bc575b505f818152600460205260409020548084116156ae57615699613fbc92615687611c7d96612e9a94612d36565b5f828152600460205260409020613f8c565b92613fb7612e0885546001600160801b031690565b623faf7960e11b5f5260045ffd5b6156d691935060203d6020116132fd576132ee818361207c565b915f61565a565b505050565b6001600160801b038316156156dd57015d565b92916040519163095ea7b360e01b5f5260018060a01b031660045260245260205f60448180875af19260015f5114841615615731575b50604052565b3d15903b151516909216915f61572b565b60405163095ea7b360e01b5f9081526001600160a01b03909316600452602483905290929160209060448180875af19260015f51148416156157845750604052565b6001849294151661579d573b15153d151616915f61572b565b833d5f823e3d90fd5b92916040519163095ea7b360e01b5f5260018060a01b031660045260245260205f60448180875af19260015f51148416156157845750604052565b8115612c38575f81815260056020526040902090615809612e0883546001600160801b031690565b8381101561590a5761582a612efb61325b846003905f5260205260405f2090565b936001600160a01b038516156158f7575f9461584b60209361587c93612d36565b604051632d182be560e21b815260048101919091523060248201819052604482015295869283919082906064820190565b03925af1928315610d75575f936158d6575b505f81815260046020526040902054928381116156ae576158b56158c591611c7d95612d36565b916004905f5260205260405f2090565b5580546001600160801b0319169055565b6158f091935060203d6020116132fd576132ee818361207c565b915f61588e565b611c7d9450613fbc9250612e0891612d36565b613fbc9150611c7d93612e0891612d36565b6040516390bfb86560e01b81526001600160a01b03909116600482015263a9059cbb60e01b60248201526080604482015260a03d601f01601f191690810160648301523d60848301523d5f60a484013e808201600460a482015260c4633c9fd93960e21b91015260e40190fd5b6040516390bfb86560e01b81526001600160a01b0390911660048201525f602482018190526080604483015260a03d601f01601f191690810160648401523d6084840152903d9060a484013e808201600460a482015260c4633d2cec6f60e21b91015260e40190fd5b6001600160a01b039182165f9081529282166020908152604093849020935163789add5560e11b815260048101949094529183916024918391165afa908115610d75575f91614f64575090565b6002915f520160205260405f20805460801c91820180921161251c57615a67611c7d92614f7d565b81546001600160801b031660809190911b6001600160801b031916179055565b82156156dd576002915f520160205260405f206001600160801b0381541691808310615add57820391821161251c576001600160801b03611c7d92166001600160801b03166001600160801b0319825416179055565b63bc6072f160e01b5f5260045ffd5b905f906060615b0a612efb61325b866003905f5260205260405f2090565b6001600160a01b03811615615c03575f85815260056020526040902094615b3b612e0887546001600160801b031690565b958615615bef57604051636e553f6560e01b81526004810188905230602482015292602090849060449082905f905af15f9381615bce575b50615b84575050505061173c613eb0565b9091809394955015615bbf5780546001600160801b03191690555f908152600460205260409020615bb8905b918254612521565b9055600191565b63d6a0a04160e01b5f5260045ffd5b615be891945060203d6020116132fd576132ee818361207c565b925f615b73565b505050509150505f9060019061173c613e9c565b50509150505f9060019061173c613e9c565b9082156156dd57615c35612efb61325b846003905f5260205260405f2090565b906001600160a01b03821615615cd6578184615c585f96602095615c8295615d09565b604051636e553f6560e01b8152600481019190915230602482015294859283919082906044820190565b03925af1918215610d75575f92615cb5575b508115615bbf57615bb0615cb1916004905f5260205260405f2090565b9055565b615ccf91925060203d6020116132fd576132ee818361207c565b905f615c94565b505090613fbc612e9a615699611c7d946005905f5260205260405f2090565b6001600160a01b0381169190820361367e57565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152919091169290602081604481875afa908115610d75575f91615d53575b5010613ae6575050565b615d6c915060203d6020116132fd576132ee818361207c565b5f615d4956fec2433f8262e72ab568eae181ced3a786201108205aac849c03d86c3ebffc343f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a164736f6c634300081a000a
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000004444c5dc75cb358380d2e3de08a9000000000000000000000000000000000000000000000000000000000000c350000000000000000000000000058e28b95a2ee57c4e90613afce9e8cceed3ab1e80000000000000000000000000000000000000000000000000000000000000e10
-----Decoded View---------------
Arg [0] : _pm (address): 0x000000000004444c5dc75cB358380D2e3dE08A90
Arg [1] : maxGas_ (uint32): 800000
Arg [2] : owner_ (address): 0x58e28b95a2ee57c4E90613AFce9e8CCEED3aB1E8
Arg [3] : _maxMinDepositBlocks (uint64): 3600
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000004444c5dc75cb358380d2e3de08a90
Arg [1] : 00000000000000000000000000000000000000000000000000000000000c3500
Arg [2] : 00000000000000000000000058e28b95a2ee57c4e90613afce9e8cceed3ab1e8
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000e10
🤖 Code Reader
Generate instant answers for your smart contract questions using AI Models. Read more.
Loading...
Loading
Loading...
Loading
Net Worth in USD
$1,004.30
Net Worth in ETH
0.401861
Token Allocations
STEAKUSDT
100.00%
Multichain Portfolio | 30 Chains
Tokens
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $1.02 | 980.7611 | $1,004.3 |
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.


