[ { "inputs": [ { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "contract IERC4626", "name": "yieldVault_", "type": "address" }, { "internalType": "contract PrizePool", "name": "prizePool_", "type": "address" }, { "internalType": "address", "name": "claimer_", "type": "address" }, { "internalType": "address", "name": "yieldFeeRecipient_", "type": "address" }, { "internalType": "uint32", "name": "yieldFeePercentage_", "type": "uint32" }, { "internalType": "uint256", "name": "yieldBuffer_", "type": "uint256" }, { "internalType": "address", "name": "owner_", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "BurnZeroShares", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "caller", "type": "address" }, { "internalType": "address", "name": "claimer", "type": "address" } ], "name": "CallerNotClaimer", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "caller", "type": "address" }, { "internalType": "address", "name": "liquidationPair", "type": "address" } ], "name": "CallerNotLP", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "caller", "type": "address" }, { "internalType": "address", "name": "yieldFeeRecipient", "type": "address" } ], "name": "CallerNotYieldFeeRecipient", "type": "error" }, { "inputs": [], "name": "ClaimRecipientZeroAddress", "type": "error" }, { "inputs": [], "name": "ClaimerZeroAddress", "type": "error" }, { "inputs": [], "name": "DepositZeroAssets", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "asset", "type": "address" } ], "name": "FailedToGetAssetDecimals", "type": "error" }, { "inputs": [], "name": "InvalidShortString", "type": "error" }, { "inputs": [], "name": "LPZeroAddress", "type": "error" }, { "inputs": [], "name": "LiquidationAmountOutZero", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "totalToWithdraw", "type": "uint256" }, { "internalType": "uint256", "name": "availableYield", "type": "uint256" } ], "name": "LiquidationExceedsAvailable", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "tokenIn", "type": "address" }, { "internalType": "address", "name": "prizeToken", "type": "address" } ], "name": "LiquidationTokenInNotPrizeToken", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "tokenOut", "type": "address" } ], "name": "LiquidationTokenOutNotSupported", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "totalAssets", "type": "uint256" }, { "internalType": "uint256", "name": "totalSupply", "type": "uint256" } ], "name": "LossyDeposit", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" }, { "internalType": "uint256", "name": "maxShares", "type": "uint256" } ], "name": "MaxSharesExceeded", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" }, { "internalType": "uint256", "name": "minAssets", "type": "uint256" } ], "name": "MinAssetsNotReached", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "excess", "type": "uint256" } ], "name": "MintLimitExceeded", "type": "error" }, { "inputs": [], "name": "MintZeroShares", "type": "error" }, { "inputs": [], "name": "OwnerZeroAddress", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "caller", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "PermitCallerNotOwner", "type": "error" }, { "inputs": [], "name": "PrizePoolZeroAddress", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" }, { "internalType": "uint256", "name": "yieldFeeBalance", "type": "uint256" } ], "name": "SharesExceedsYieldFeeBalance", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "str", "type": "string" } ], "name": "StringTooLong", "type": "error" }, { "inputs": [], "name": "TwabControllerZeroAddress", "type": "error" }, { "inputs": [], "name": "WithdrawZeroAssets", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "yieldFeePercentage", "type": "uint256" }, { "internalType": "uint256", "name": "maxYieldFeePercentage", "type": "uint256" } ], "name": "YieldFeePercentageExceedsMax", "type": "error" }, { "inputs": [], "name": "YieldVaultZeroAddress", "type": "error" }, { "inputs": [], "name": "ZeroTotalAssets", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "recipient", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "ClaimYieldFeeShares", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "claimer", "type": "address" } ], "name": "ClaimerSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "assets", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "Deposit", "type": "event" }, { "anonymous": false, "inputs": [], "name": "EIP712DomainChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "tokenOut", "type": "address" }, { "indexed": true, "internalType": "address", "name": "liquidationPair", "type": "address" } ], "name": "LiquidationPairSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "OwnershipOffered", "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": "address", "name": "account", "type": "address" }, { "components": [ { "internalType": "bool", "name": "useBeforeClaimPrize", "type": "bool" }, { "internalType": "bool", "name": "useAfterClaimPrize", "type": "bool" }, { "internalType": "contract IPrizeHooks", "name": "implementation", "type": "address" } ], "indexed": false, "internalType": "struct PrizeHooks", "name": "hooks", "type": "tuple" } ], "name": "SetHooks", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "caller", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "assets", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "Sponsor", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "liquidationPair", "type": "address" }, { "indexed": true, "internalType": "address", "name": "tokenOut", "type": "address" }, { "indexed": true, "internalType": "address", "name": "recipient", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amountOut", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "yieldFee", "type": "uint256" } ], "name": "TransferYieldOut", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "assets", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "Withdraw", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "yieldFeePercentage", "type": "uint256" } ], "name": "YieldFeePercentageSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "yieldFeeRecipient", "type": "address" } ], "name": "YieldFeeRecipientSet", "type": "event" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "FEE_PRECISION", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "HOOK_GAS", "outputs": [ { "internalType": "uint24", "name": "", "type": "uint24" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_YIELD_FEE", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "asset", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "availableYieldBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "claimOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_winner", "type": "address" }, { "internalType": "uint8", "name": "_tier", "type": "uint8" }, { "internalType": "uint32", "name": "_prizeIndex", "type": "uint32" }, { "internalType": "uint96", "name": "_reward", "type": "uint96" }, { "internalType": "address", "name": "_rewardRecipient", "type": "address" } ], "name": "claimPrize", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_shares", "type": "uint256" } ], "name": "claimYieldFeeShares", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "claimer", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_shares", "type": "uint256" } ], "name": "convertToAssets", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_assets", "type": "uint256" } ], "name": "convertToShares", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "currentYieldBuffer", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_assets", "type": "uint256" }, { "internalType": "address", "name": "_receiver", "type": "address" } ], "name": "deposit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_assets", "type": "uint256" }, { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "uint256", "name": "_deadline", "type": "uint256" }, { "internalType": "uint8", "name": "_v", "type": "uint8" }, { "internalType": "bytes32", "name": "_r", "type": "bytes32" }, { "internalType": "bytes32", "name": "_s", "type": "bytes32" } ], "name": "depositWithPermit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "eip712Domain", "outputs": [ { "internalType": "bytes1", "name": "fields", "type": "bytes1" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "version", "type": "string" }, { "internalType": "uint256", "name": "chainId", "type": "uint256" }, { "internalType": "address", "name": "verifyingContract", "type": "address" }, { "internalType": "bytes32", "name": "salt", "type": "bytes32" }, { "internalType": "uint256[]", "name": "extensions", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getHooks", "outputs": [ { "components": [ { "internalType": "bool", "name": "useBeforeClaimPrize", "type": "bool" }, { "internalType": "bool", "name": "useAfterClaimPrize", "type": "bool" }, { "internalType": "contract IPrizeHooks", "name": "implementation", "type": "address" } ], "internalType": "struct PrizeHooks", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_tokenOut", "type": "address" }, { "internalType": "address", "name": "_liquidationPair", "type": "address" } ], "name": "isLiquidationPair", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_tokenOut", "type": "address" } ], "name": "liquidatableBalanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "liquidationPair", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "maxDeposit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" } ], "name": "maxMint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" } ], "name": "maxRedeem", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" } ], "name": "maxWithdraw", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_shares", "type": "uint256" }, { "internalType": "address", "name": "_receiver", "type": "address" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_assets", "type": "uint256" } ], "name": "previewDeposit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_shares", "type": "uint256" } ], "name": "previewMint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_shares", "type": "uint256" } ], "name": "previewRedeem", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_assets", "type": "uint256" } ], "name": "previewWithdraw", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "prizePool", "outputs": [ { "internalType": "contract PrizePool", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_shares", "type": "uint256" }, { "internalType": "address", "name": "_receiver", "type": "address" }, { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "uint256", "name": "_minAssets", "type": "uint256" } ], "name": "redeem", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_shares", "type": "uint256" }, { "internalType": "address", "name": "_receiver", "type": "address" }, { "internalType": "address", "name": "_owner", "type": "address" } ], "name": "redeem", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_claimer", "type": "address" } ], "name": "setClaimer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "bool", "name": "useBeforeClaimPrize", "type": "bool" }, { "internalType": "bool", "name": "useAfterClaimPrize", "type": "bool" }, { "internalType": "contract IPrizeHooks", "name": "implementation", "type": "address" } ], "internalType": "struct PrizeHooks", "name": "hooks", "type": "tuple" } ], "name": "setHooks", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_liquidationPair", "type": "address" } ], "name": "setLiquidationPair", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "_yieldFeePercentage", "type": "uint32" } ], "name": "setYieldFeePercentage", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_yieldFeeRecipient", "type": "address" } ], "name": "setYieldFeeRecipient", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_assets", "type": "uint256" } ], "name": "sponsor", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "targetOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalAssets", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalDebt", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalPreciseAssets", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalYieldBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "_receiver", "type": "address" }, { "internalType": "address", "name": "_tokenOut", "type": "address" }, { "internalType": "uint256", "name": "_amountOut", "type": "uint256" } ], "name": "transferTokensOut", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "twabController", "outputs": [ { "internalType": "contract TwabController", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_tokenIn", "type": "address" }, { "internalType": "uint256", "name": "_amountIn", "type": "uint256" }, { "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "verifyTokensIn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_assets", "type": "uint256" }, { "internalType": "address", "name": "_receiver", "type": "address" }, { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "uint256", "name": "_maxShares", "type": "uint256" } ], "name": "withdraw", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_assets", "type": "uint256" }, { "internalType": "address", "name": "_receiver", "type": "address" }, { "internalType": "address", "name": "_owner", "type": "address" } ], "name": "withdraw", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "yieldBuffer", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "yieldFeeBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "yieldFeePercentage", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "yieldFeeRecipient", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "yieldVault", "outputs": [ { "internalType": "contract IERC4626", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" } ]
6102206040523480156200001257600080fd5b506040516200545f3803806200545f83398101604081905262000035916200077c565b8086868b8b8a6001600160a01b031663b0812d7b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000079573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009f919062000865565b6040805180820190915260018152603160f81b60208201528390819081856003620000cb83826200091d565b506004620000da82826200091d565b50620000ec9150839050600562000367565b61012052620000fd81600662000367565b61014052815160208084019190912060e052815190820120610100524660a0526200018b60e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c052506001600160a01b038116600003620001c0576040516319b9815760e11b815260040160405180910390fd5b6001600160a01b039081166101605284169150620001f39050576040516305d872f360e21b815260040160405180910390fd5b6001600160a01b038216610180526200020c81620003a0565b506200021a90508162000412565b506001600160a01b03871662000243576040516307877e8560e01b815260040160405180910390fd5b6001600160a01b0381166200026b57604051630962257960e11b815260040160405180910390fd5b6000876001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d2919062000865565b9050600080620002e28362000464565b915091508115620002fb5760ff81166102005262000324565b60405163f500876960e01b81526001600160a01b03841660048201526024015b60405180910390fd5b6001600160a01b038084166101e0528a166101c0526101a08590526200034a8762000549565b620003558662000593565b50505050505050505050505062000a7b565b600060208351101562000387576200037f836200062c565b90506200039a565b816200039484826200091d565b5060ff90505b92915050565b6001600160a01b038116620003c857604051634d9808e160e11b815260040160405180910390fd5b600a80546001600160a01b0319166001600160a01b0383169081179091556040517fa04eca05f1c4f5674beaad80f345070124aa2192abced410b9b227c0c04e755a90600090a250565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290516000918291829182916001600160a01b03871691620004ad91620009e9565b600060405180830381855afa9150503d8060008114620004ea576040519150601f19603f3d011682016040523d82523d6000602084013e620004ef565b606091505b50915091508180156200050457506020815110155b156200053c5760008180602001905181019062000522919062000a07565b905060ff81116200053a576001969095509350505050565b505b5060009485945092505050565b600d80546001600160a01b0319166001600160a01b0383169081179091556040517f5d55a9f17ebec95846f4d400ad862a51f9564a7973f6622d3c99a34feb6a0aec90600090a250565b6335a4e90063ffffffff82161115620005d257604051637bcc613b60e01b815263ffffffff821660048201526335a4e90060248201526044016200031b565b600c805463ffffffff60a01b1916600160a01b63ffffffff8416908102919091179091556040519081527fefb99600b8c2baadc10ee4fe77c625b379acb4c29fbb0b90a5f17652d7de03419060200160405180910390a150565b600080829050601f815111156200065a578260405163305a27a960e01b81526004016200031b919062000a21565b8051620006678262000a56565b179392505050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620006a257818101518382015260200162000688565b50506000910152565b600082601f830112620006bd57600080fd5b81516001600160401b0380821115620006da57620006da6200066f565b604051601f8301601f19908116603f011681019082821181831017156200070557620007056200066f565b816040528381528660208588010111156200071f57600080fd5b6200073284602083016020890162000685565b9695505050505050565b6001600160a01b03811681146200075257600080fd5b50565b805162000762816200073c565b919050565b805163ffffffff811681146200076257600080fd5b60008060008060008060008060006101208a8c0312156200079c57600080fd5b89516001600160401b0380821115620007b457600080fd5b620007c28d838e01620006ab565b9a5060208c0151915080821115620007d957600080fd5b50620007e88c828d01620006ab565b98505060408a0151620007fb816200073c565b60608b01519097506200080e816200073c565b95506200081e60808b0162000755565b94506200082e60a08b0162000755565b93506200083e60c08b0162000767565b925060e08a01519150620008566101008b0162000755565b90509295985092959850929598565b6000602082840312156200087857600080fd5b815162000885816200073c565b9392505050565b600181811c90821680620008a157607f821691505b602082108103620008c257634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000918576000816000526020600020601f850160051c81016020861015620008f35750805b601f850160051c820191505b818110156200091457828155600101620008ff565b5050505b505050565b81516001600160401b038111156200093957620009396200066f565b62000951816200094a84546200088c565b84620008c8565b602080601f831160018114620009895760008415620009705750858301515b600019600386901b1c1916600185901b17855562000914565b600085815260208120601f198616915b82811015620009ba5788860151825594840194600190910190840162000999565b5085821015620009d95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008251620009fd81846020870162000685565b9190910192915050565b60006020828403121562000a1a57600080fd5b5051919050565b602081526000825180602084015262000a4281604085016020870162000685565b601f01601f19169190910160400192915050565b80516020808301519190811015620008c25760001960209190910360031b1b16919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e0516102005161483d62000c22600039600061054401526000818161058b01528181610a3701528181610d68015281816113400152818161149b0152818161163901528181611700015281816119cd01528181611cdc01528181611d2801528181612253015281816124a901528181612d3a01528181612d7a01528181612dfc015281816130c8015261329a01526000818161078c01528181610abf015281816113d60152818161152301528181612e1e01528181612e5c01528181612eee0152818161315101528181613205015261346501526000818161049d01528181610deb0152612844015260008181610687015281816106c9015281816110a001528181612088015261215c0152600081816107c601528181610cf1015281816117e301528181611e6101528181611f0e0152818161291401528181612a0301526139d101526000611b2f01526000611b0401526000612bc101526000612b9901526000612af401526000612b1e01526000612b48015261483d6000f3fe608060405234801561001057600080fd5b50600436106104125760003560e01c80638da5cb5b11610220578063c78c72c111610130578063de03f408116100b8578063e63a391f11610087578063e63a391f146109e6578063edb8eb80146109f1578063ef8b30f7146107fb578063f2fde38b14610a04578063fc7b9c1814610a1757600080fd5b8063de03f4081461090b578063e16777c1146109ab578063e30c3978146109c2578063e4e243ac146109d357600080fd5b8063d379be23116100ff578063d379be23146108b7578063d4122abf146108ca578063d505accf146108d2578063d905777e146108e5578063dd62ed3e146108f857600080fd5b8063c78c72c11461086b578063c8576e611461087e578063cdfb583214610891578063ce96cb77146108a457600080fd5b8063a9059cbb116101b3578063b460af9411610182578063b460af941461080c578063b6cce5e21461081f578063ba08765214610832578063c63d75b614610845578063c6e6f5921461085857600080fd5b8063a9059cbb146107ae578063b0812d7b146107c1578063b0fcf626146107e8578063b3d7f6b9146107fb57600080fd5b80639f40a7b3116101ef5780639f40a7b31461074e578063a318c1a414610761578063a457c2d714610774578063a7f8a5e21461078757600080fd5b80638da5cb5b1461072c57806394bf804d1461066357806395d89b411461073d5780639a1adf9a1461074557600080fd5b806338d52e0f11610326578063649f2394116102ae578063715018a61161027d578063715018a6146106bc578063719ce73e146106c45780637cc99d3f146106eb5780637ecebe00146106fe57806384b0196e1461071157600080fd5b8063649f2394146106505780636e553f6514610663578063700f04ef1461067657806370a08231146106a957600080fd5b80634244aa9b116102f55780634244aa9b146106075780634cdad5061461060f5780634e71e0c81461062257806350921b231461062a57806363003b161461063d57600080fd5b806338d52e0f1461058957806339509351146105c35780634006522b146105d6578063402d267d146105f457600080fd5b80631b571924116103a957806325fa66e01161037857806325fa66e0146105155780632895cace1461052a578063313ce5671461053d578063353d5a181461056e5780633644e5151461058157600080fd5b80631b571924146104c75780631caa73cb146104da578063237fd108146104fa57806323b872dd1461050257600080fd5b80630a28a477116103e55780630a28a4771461047d5780630d1e52551461049057806313dc6c5d1461049857806318160ddd146104bf57600080fd5b806301e1d1141461041757806306fdde031461043257806307a2d13a14610447578063095ea7b31461045a575b600080fd5b61041f610a1f565b6040519081526020015b60405180910390f35b61043a610ba9565b6040516104299190613fbe565b61041f610455366004613fd1565b610c3b565b61046d610468366004613fff565b610c5e565b6040519015158152602001610429565b61041f61048b366004613fd1565b610c76565b61041f610cbf565b61041f7f000000000000000000000000000000000000000000000000000000000000000081565b61041f610cd9565b61046d6104d536600461402b565b610d64565b6104e56335a4e90081565b60405163ffffffff9091168152602001610429565b61041f610dcc565b61046d610510366004614064565b610e1d565b6105286105233660046140a5565b610e41565b005b61041f6105383660046140e7565b610ef6565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610429565b61052861057c366004613fd1565b6111db565b61041f6112c4565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610429565b61046d6105d1366004613fff565b6112ce565b6105e0620249f081565b60405162ffffff9091168152602001610429565b61041f6106023660046140a5565b6112f0565b61041f611483565b61041f61061d366004613fd1565b611562565b610528611570565b61041f610638366004614160565b6115f1565b61052861064b3660046140a5565b611775565b600f546105ab906001600160a01b031681565b61041f6106713660046141ba565b6117ba565b6105ab6106843660046140a5565b507f000000000000000000000000000000000000000000000000000000000000000090565b61041f6106b73660046140a5565b6117c9565b61052861185b565b6105ab7f000000000000000000000000000000000000000000000000000000000000000081565b61043a6106f93660046141df565b6118a0565b61041f61070c3660046140a5565b611ad8565b610719611af6565b6040516104299796959493929190614230565b600b546001600160a01b03166105ab565b61043a611b7f565b61041f600e5481565b61041f61075c3660046142c9565b611b8e565b61041f61076f3660046142c9565b611bdc565b61046d610782366004613fff565b611c22565b6105ab7f000000000000000000000000000000000000000000000000000000000000000081565b61046d6107bc366004613fff565b611c9d565b6105ab7f000000000000000000000000000000000000000000000000000000000000000081565b61041f6107f63660046140a5565b611cab565b61041f610809366004613fd1565b90565b61041f61081a3660046142f1565b611e24565b61041f61082d366004613fd1565b611e3f565b61041f6108403660046142f1565b611fb6565b61041f6108533660046140a5565b611fd1565b61041f610866366004613fd1565b611fdc565b610528610879366004614333565b611ff9565b61052861088c366004614345565b612048565b61052861089f3660046140a5565b6121d9565b61041f6108b23660046140a5565b61221b565b600a546105ab906001600160a01b031681565b61041f612300565b6105286108e03660046143ce565b61230d565b61041f6108f33660046140a5565b612471565b61041f61090636600461402b565b61256e565b61097c6109193660046140a5565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260098352839020835191820184525460ff80821615158352610100820416151592820192909252620100009091049092169082015290565b60408051825115158152602080840151151590820152918101516001600160a01b031690820152606001610429565b600c546104e590600160a01b900463ffffffff1681565b600c546001600160a01b03166105ab565b6105286109e136600461443c565b612599565b6104e5633b9aca0081565b600d546105ab906001600160a01b031681565b610528610a123660046140a5565b6125db565b61041f6126c2565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610a86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aaa9190614457565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307a2d13a9082906370a08231906024015b602060405180830381865afa158015610b17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3b9190614457565b6040518263ffffffff1660e01b8152600401610b5991815260200190565b602060405180830381865afa158015610b76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9a9190614457565b610ba49190614486565b905090565b606060038054610bb890614499565b80601f0160208091040260200160405190810160405280929190818152602001828054610be490614499565b8015610c315780601f10610c0657610100808354040283529160200191610c31565b820191906000526020600020905b815481529060010190602001808311610c1457829003601f168201915b5050505050905090565b6000610c5882610c49610a1f565b610c516126c2565b60006126cf565b92915050565b600033610c6c8185856126f2565b5060019392505050565b600080610c81611483565b905080600003610ca45760405163f0bd6f1b60e01b815260040160405180910390fd5b610cb88382610cb16126c2565b6001612817565b9392505050565b6000610ba4610ccc611483565b610cd46126c2565b612833565b6040516339370aa960e21b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e4dc2aa490602401602060405180830381865afa158015610d40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba49190614457565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03161480610dae57506001600160a01b03831630145b8015610cb8575050600f546001600160a01b03908116911614919050565b600080610de7610dda611483565b610de26126c2565b61287e565b90507f0000000000000000000000000000000000000000000000000000000000000000808210610e175792915050565b50919050565b600033610e2b858285612898565b610e36858585612912565b506001949350505050565b33610e54600b546001600160a01b031690565b6001600160a01b031614610e835760405162461bcd60e51b8152600401610e7a906144cd565b60405180910390fd5b6001600160a01b038116610eaa57604051630ac5b1f760e11b815260040160405180910390fd5b600f80546001600160a01b0319166001600160a01b03831690811790915560405130907fb540015bf51edcbfd9e43df5316486615bf954f7b4c6cc0304eb3757f1601f9590600090a350565b600a546000906001600160a01b03163314610f3557600a54604051637f4b239760e11b8152610e7a9133916001600160a01b0390911690600401614504565b6001600160a01b03861660009081526009602052604081205460609060ff161561101f576001600160a01b038881166000818152600960205260409081902054905163b4db727f60e01b8152600481019290925260ff8a16602483015263ffffffff891660448301526001600160601b038816606483015286831660848301526201000090049091169063b4db727f90620249f09060a40160006040518083038160008887f1158015610fec573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526110159190810190614534565b9092509050611023565b8791505b6001600160a01b03821661104a5760405163e1c2596f60e01b815260040160405180910390fd5b6040516311e7375f60e21b81526001600160a01b03898116600483015260ff8916602483015263ffffffff8816604483015283811660648301526001600160601b038716608483015285811660a48301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063479cdd7c9060c4016020604051808303816000875af11580156110eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110f9190614457565b6001600160a01b038a16600090815260096020526040902054909150610100900460ff16156111cf576001600160a01b03808a166000908152600960205260409020546201000090041663d44c6da3620249f08b8b8b6111786001600160601b038d16886145f7565b89896040518863ffffffff1660e01b815260040161119b9695949392919061460a565b600060405180830381600088803b1580156111b557600080fd5b5087f11580156111c9573d6000803e3d6000fd5b50505050505b98975050505050505050565b600d546001600160a01b0316331461121757600d54604051630e69d0db60e11b8152610e7a9133916001600160a01b0390911690600401614504565b806000036112385760405163b31accb760e01b815260040160405180910390fd5b600e5481111561126957600e546040516304ed794960e21b8152610e7a918391600401918252602082015260400190565b80600e600082825461127b91906145f7565b9091555061128b90503382612a01565b60405181815233907f9b51aebdd88b3f321397bdf9848415ce15dedd1783c775b93b8036c6b0af0f56906020015b60405180910390a250565b6000610ba4612ae7565b600033610c6c8185856112e1838361256e565b6112eb9190614486565b6126f2565b6000806112fb6126c2565b9050600080611308612c12565b9150915081158061131857508281105b1561132857506000949350505050565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561138f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b39190614457565b60405163402d267d60e01b81523060048201529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063402d267d90602401602060405180830381865afa15801561141d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114419190614457565b9050808210611457575060009695505050505050565b600061146286612c86565b90508282038082106114745780611476565b815b9998505050505050505050565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156114ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150e9190614457565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690634cdad5069082906370a0823190602401610afa565b6000610c5882610c49611483565b600c546001600160a01b031633146115ca5760405162461bcd60e51b815260206004820152601f60248201527f4f776e61626c652f63616c6c65722d6e6f742d70656e64696e674f776e6572006044820152606401610e7a565b600c546115df906001600160a01b0316612c99565b600c80546001600160a01b0319169055565b60006001600160a01b03861633146116205733866040516358fe888560e01b8152600401610e7a929190614504565b604051636eb1769f60e11b815287906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063dd62ed3e90611670908a903090600401614504565b602060405180830381865afa15801561168d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b19190614457565b1461175d5760405163d505accf60e01b81526001600160a01b038781166004830152306024830152604482018990526064820187905260ff8616608483015260a4820185905260c482018490527f0000000000000000000000000000000000000000000000000000000000000000169063d505accf9060e401600060405180830381600087803b15801561174457600080fd5b505af1158015611758573d6000803e3d6000fd5b505050505b8661176a87808380612ceb565b979650505050505050565b33611788600b546001600160a01b031690565b6001600160a01b0316146117ae5760405162461bcd60e51b8152600401610e7a906144cd565b6117b78161302f565b50565b600082610cb833848380612ceb565b604051633de222bb60e21b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f7888aec9061181a9030908690600401614504565b602060405180830381865afa158015611837573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c589190614457565b3361186e600b546001600160a01b031690565b6001600160a01b0316146118945760405162461bcd60e51b8152600401610e7a906144cd565b61189e6000612c99565b565b600f546060906001600160a01b031633146118df57600f546040516317140eff60e11b8152610e7a9133916001600160a01b0390911690600401614504565b8160000361190057604051634750846560e11b815260040160405180910390fd5b600061190a6126c2565b9050600061191f611919611483565b83612833565b600c54909150600160a01b900463ffffffff1660008115611974578561194983633b9aca00614652565b63ffffffff1661195d633b9aca0089614676565b61196791906146a3565b61197191906145f7565b90505b8261197f8288614486565b11156119b35761198f8187614486565b6040516374281bbb60e11b8152600481019190915260248101849052604401610e7a565b80156119cb5780600e546119c79190614486565b600e555b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316876001600160a01b031603611a1d57611a0e8482613079565b611a1888876130b0565b611a6e565b306001600160a01b03881603611a4a57611a4084611a3b8389614486565b613079565b611a188887612a01565b6040516304bc290f60e51b81526001600160a01b0388166004820152602401610e7a565b60408051878152602081018390526001600160a01b03808b1692908a169133917f64d8a6bd56c2c610cd5d2ed87ba4bde3659df2650c7ad8aabde397decf94e07d910160405180910390a4604051806020016040528060008152509450505050505b949350505050565b6001600160a01b038116600090815260076020526040812054610c58565b600060608082808083611b2a7f000000000000000000000000000000000000000000000000000000000000000060056132c1565b611b557f000000000000000000000000000000000000000000000000000000000000000060066132c1565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b606060048054610bb890614499565b600080611b9a86611562565b905082811015611bc657604051629af28160e41b81526004810182905260248101849052604401610e7a565b611bd3338686898561336c565b95945050505050565b600080611be886610c76565b905082811115611c155760405163654df34d60e01b81526004810182905260248101849052604401610e7a565b611bd3338686848a61336c565b60003381611c30828661256e565b905083811015611c905760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610e7a565b610e3682868684036126f2565b600033610c6c818585612912565b600080611cb66126c2565b90506000306001600160a01b03851603611cda57611cd382612c86565b9050611db7565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031603611dad576040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611d77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d9b9190614457565b611da361344d565b611cd39190614486565b5060009392505050565b6000611dca611dc4611483565b84612833565b9050600082821015611ddc5781611dde565b825b600c54909150611e1a90611e0390600160a01b900463ffffffff16633b9aca00614652565b829063ffffffff90811690633b9aca009061354616565b9695505050505050565b600080611e3085610c76565b9050611ad0338585848961336c565b60003382611e4f82808380612ceb565b6040516316bef07560e31b81526001907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b5f783a890611ea09030908790600401614504565b602060405180830381865afa158015611ebd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee191906146c5565b6001600160a01b031614611f6b5760405163766c4f3760e01b81526001600160a01b0383811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063766c4f3790602401600060405180830381600087803b158015611f5257600080fd5b505af1158015611f66573d6000803e3d6000fd5b505050505b60408051858152602081018390526001600160a01b038416917f64939930c3fd0a1fe9e7fb9810272db7730a0f02b900972787bcb79fb6fd3d2d910160405180910390a29392505050565b600080611fc285611562565b9050611ad0338585888561336c565b6000610c58826112f0565b6000610c5882611fea610a1f565b611ff26126c2565b6000612817565b336000908152600960205260409020819061201482826146f0565b505060405133907f5eaf51436f308830fc57b00bb6843675b383bce9b2c669e1b9ce60de8bbb9e8e906112b990849061476a565b600f546001600160a01b0316331461208457600f546040516317140eff60e11b8152610e7a9133916001600160a01b0390911690600401614504565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0ef024a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210891906146c5565b9050806001600160a01b0316856001600160a01b031614612140578481604051630c0760c160e21b8152600401610e7a929190614504565b604051630eedfb4560e41b8152306004820152602481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063eedfb450906044016020604051808303816000875af11580156121ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d19190614457565b505050505050565b336121ec600b546001600160a01b031690565b6001600160a01b0316146122125760405162461bcd60e51b8152600401610e7a906144cd565b6117b781613630565b6000806000612228612c12565b915091508161223b575060009392505050565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156122a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c69190614457565b6122ce61344d565b6122d89190614486565b905060006122f16122e8876117c9565b84610c516126c2565b9050818110611bd35781611e1a565b6000610ba4610dda611483565b8342111561235d5760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610e7a565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861238c8c6136a1565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006123e7826136c7565b905060006123f7828787876136f4565b9050896001600160a01b0316816001600160a01b03161461245a5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610e7a565b6124658a8a8a6126f2565b50505050505050505050565b600080600061247e612c12565b9150915081612491575060009392505050565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156124f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061251c9190614457565b61252461344d565b61252e9190614486565b9050600061253b866117c9565b905081811115611bd35760006125548385610cb16126c2565b905081811015612564578061176a565b5095945050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b336125ac600b546001600160a01b031690565b6001600160a01b0316146125d25760405162461bcd60e51b8152600401610e7a906144cd565b6117b781613712565b336125ee600b546001600160a01b031690565b6001600160a01b0316146126145760405162461bcd60e51b8152600401610e7a906144cd565b6001600160a01b0381166126785760405162461bcd60e51b815260206004820152602560248201527f4f776e61626c652f70656e64696e674f776e65722d6e6f742d7a65726f2d6164604482015264647265737360d81b6064820152608401610e7a565b600c80546001600160a01b0319166001600160a01b0383169081179091556040517f239a2ddded15777fa246aed5f7e1a9bc69a39d4eb4a397034d1d85766cca7d4c90600090a250565b6000600e54610b9a610cd9565b60008284106126df575083611ad0565b6126eb858585856137a9565b9050611ad0565b6001600160a01b0383166127545760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610e7a565b6001600160a01b0382166127b55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610e7a565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000828410612827575083611ad0565b6126eb858486856137a9565b600080612840848461287e565b90507f00000000000000000000000000000000000000000000000000000000000000008082106128735790039050610c58565b600092505050610c58565b600082821061288f57506000610c58565b50808203610c58565b60006128a4848461256e565b9050600019811461290c57818110156128ff5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610e7a565b61290c84848484036126f2565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c661667d848461294c856137fa565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526001600160601b03166044820152606401600060405180830381600087803b1580156129a457600080fd5b505af11580156129b8573d6000803e3d6000fd5b50505050816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161280a91815260200190565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631b025a4083612a3a846137fa565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160601b03166024820152604401600060405180830381600087803b158015612a8957600080fd5b505af1158015612a9d573d6000803e3d6000fd5b50506040518381526001600160a01b0385169250600091507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015612b4057507f000000000000000000000000000000000000000000000000000000000000000046145b15612b6a57507f000000000000000000000000000000000000000000000000000000000000000090565b610ba4604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600080306001600160a01b0316634244aa9b6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612c6f575060408051601f3d908101601f19168201909252612c6c91810190614457565b60015b612c7c5750600090508091565b6001925090509091565b6000610c58826001600160601b036145f7565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80600003612d0c5760405163b31accb760e01b815260040160405180910390fd5b81600003612d2d5760405163f0f4d07b60e01b815260040160405180910390fd5b612d626001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016853085613866565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015612dc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ded9190614457565b9050612e436001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000836138d1565b60405163ef8b30f760e01b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ef8b30f790602401602060405180830381865afa158015612eab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ecf9190614457565b6040516394bf804d60e01b8152600481018290523060248201529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906394bf804d906044016020604051808303816000875af1158015612f3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f639190614457565b506000612f6e6126c2565b9050612f7a8185613079565b612f848482614486565b612f8c611483565b1015612fc657612f9a611483565b612fa48583614486565b6040516315c5982d60e11b815260048101929092526024820152604401610e7a565b612fd08685612a01565b856001600160a01b0316876001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7878760405161301e929190918252602082015260400190565b60405180910390a350505050505050565b600d80546001600160a01b0319166001600160a01b0383169081179091556040517f5d55a9f17ebec95846f4d400ad862a51f9564a7973f6622d3c99a34feb6a0aec90600090a250565b600061308483612c86565b9050808211156130ab57604051637e0311c360e11b81528183036004820152602401610e7a565b505050565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015613117573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061313b9190614457565b90508082111561327d5760006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630a28a47761318084866145f7565b6040518263ffffffff1660e01b815260040161319e91815260200190565b602060405180830381865afa1580156131bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131df9190614457565b604051635d043b2960e11b815260048101829052306024820181905260448201529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ba087652906064016020604051808303816000875af1158015613256573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061327a9190614457565b50505b6001600160a01b03831630146130ab576130ab6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168484613960565b606060ff83146132db576132d483613990565b9050610c58565b8180546132e790614499565b80601f016020809104026020016040519081016040528092919081815260200182805461331390614499565b80156133605780601f1061333557610100808354040283529160200191613360565b820191906000526020600020905b81548152906001019060200180831161334357829003601f168201915b50505050509050610c58565b8060000361338d5760405163f3c41a2b60e01b815260040160405180910390fd5b816000036133ae57604051632f73c6c360e11b815260040160405180910390fd5b826001600160a01b0316856001600160a01b0316146133d2576133d2838684612898565b6133dc83836139cf565b6133e684826130b0565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db848660405161343e929190918252602082015260400190565b60405180910390a45050505050565b604051636c82bbbf60e11b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690634cdad50690829063d905777e90602401602060405180830381865afa1580156134bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134e09190614457565b6040518263ffffffff1660e01b81526004016134fe91815260200190565b602060405180830381865afa925050508015613537575060408051601f3d908101601f1916820190925261353491810190614457565b60015b6135415750600090565b919050565b6000808060001985870985870292508281108382030391505080600003613580578382816135765761357661468d565b0492505050610cb8565b8084116135c75760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401610e7a565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6001600160a01b03811661365757604051634d9808e160e11b815260040160405180910390fd5b600a80546001600160a01b0319166001600160a01b0383169081179091556040517fa04eca05f1c4f5674beaad80f345070124aa2192abced410b9b227c0c04e755a90600090a250565b6001600160a01b0381166000908152600760205260409020805460018101825590610e17565b6000610c586136d4612ae7565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600061370587878787613aad565b9150915061256481613b71565b6335a4e90063ffffffff8216111561374f57604051637bcc613b60e01b815263ffffffff821660048201526335a4e9006024820152604401610e7a565b600c805463ffffffff60a01b1916600160a01b63ffffffff8416908102919091179091556040519081527fefb99600b8c2baadc10ee4fe77c625b379acb4c29fbb0b90a5f17652d7de03419060200160405180910390a150565b6000806137b7868686613546565b905060018360028111156137cd576137cd6147b8565b1480156137ea5750600084806137e5576137e561468d565b868809115b15611bd357611e1a600182614486565b60006001600160601b038211156138625760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203960448201526536206269747360d01b6064820152608401610e7a565b5090565b6040516001600160a01b038085166024830152831660448201526064810182905261290c9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613cbb565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526139228482613d90565b61290c576040516001600160a01b03841660248201526000604482015261395690859063095ea7b360e01b9060640161389a565b61290c8482613cbb565b6040516001600160a01b0383166024820152604481018290526130ab90849063a9059cbb60e01b9060640161389a565b6060600061399d83613e33565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638df2c8e683613a08846137fa565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160601b03166024820152604401600060405180830381600087803b158015613a5757600080fd5b505af1158015613a6b573d6000803e3d6000fd5b5050604051838152600092506001600160a01b03851691507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001612adb565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613ae45750600090506003613b68565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613b38573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613b6157600060019250925050613b68565b9150600090505b94509492505050565b6000816004811115613b8557613b856147b8565b03613b8d5750565b6001816004811115613ba157613ba16147b8565b03613bee5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610e7a565b6002816004811115613c0257613c026147b8565b03613c4f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610e7a565b6003816004811115613c6357613c636147b8565b036117b75760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610e7a565b6000613d10826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613e5b9092919063ffffffff16565b9050805160001480613d31575080806020019051810190613d3191906147ce565b6130ab5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610e7a565b6000806000846001600160a01b031684604051613dad91906147eb565b6000604051808303816000865af19150503d8060008114613dea576040519150601f19603f3d011682016040523d82523d6000602084013e613def565b606091505b5091509150818015613e19575080511580613e19575080806020019051810190613e1991906147ce565b8015611bd35750505050506001600160a01b03163b151590565b600060ff8216601f811115610c5857604051632cd44ac360e21b815260040160405180910390fd5b6060611ad0848460008585600080866001600160a01b03168587604051613e8291906147eb565b60006040518083038185875af1925050503d8060008114613ebf576040519150601f19603f3d011682016040523d82523d6000602084013e613ec4565b606091505b509150915061176a8783838760608315613f3f578251600003613f38576001600160a01b0385163b613f385760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610e7a565b5081611ad0565b611ad08383815115613f545781518083602001fd5b8060405162461bcd60e51b8152600401610e7a9190613fbe565b60005b83811015613f89578181015183820152602001613f71565b50506000910152565b60008151808452613faa816020860160208601613f6e565b601f01601f19169290920160200192915050565b602081526000610cb86020830184613f92565b600060208284031215613fe357600080fd5b5035919050565b6001600160a01b03811681146117b757600080fd5b6000806040838503121561401257600080fd5b823561401d81613fea565b946020939093013593505050565b6000806040838503121561403e57600080fd5b823561404981613fea565b9150602083013561405981613fea565b809150509250929050565b60008060006060848603121561407957600080fd5b833561408481613fea565b9250602084013561409481613fea565b929592945050506040919091013590565b6000602082840312156140b757600080fd5b8135610cb881613fea565b803560ff8116811461354157600080fd5b803563ffffffff8116811461354157600080fd5b600080600080600060a086880312156140ff57600080fd5b853561410a81613fea565b9450614118602087016140c2565b9350614126604087016140d3565b925060608601356001600160601b038116811461414257600080fd5b9150608086013561415281613fea565b809150509295509295909350565b60008060008060008060c0878903121561417957600080fd5b86359550602087013561418b81613fea565b9450604087013593506141a0606088016140c2565b92506080870135915060a087013590509295509295509295565b600080604083850312156141cd57600080fd5b82359150602083013561405981613fea565b600080600080608085870312156141f557600080fd5b843561420081613fea565b9350602085013561421081613fea565b9250604085013561422081613fea565b9396929550929360600135925050565b60ff60f81b881681526000602060e0602084015261425160e084018a613f92565b8381036040850152614263818a613f92565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b818110156142b75783518352928401929184019160010161429b565b50909c9b505050505050505050505050565b600080600080608085870312156142df57600080fd5b84359350602085013561421081613fea565b60008060006060848603121561430657600080fd5b83359250602084013561431881613fea565b9150604084013561432881613fea565b809150509250925092565b600060608284031215610e1757600080fd5b6000806000806060858703121561435b57600080fd5b843561436681613fea565b935060208501359250604085013567ffffffffffffffff8082111561438a57600080fd5b818701915087601f83011261439e57600080fd5b8135818111156143ad57600080fd5b8860208285010111156143bf57600080fd5b95989497505060200194505050565b600080600080600080600060e0888a0312156143e957600080fd5b87356143f481613fea565b9650602088013561440481613fea565b95506040880135945060608801359350614420608089016140c2565b925060a0880135915060c0880135905092959891949750929550565b60006020828403121561444e57600080fd5b610cb8826140d3565b60006020828403121561446957600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610c5857610c58614470565b600181811c908216806144ad57607f821691505b602082108103610e1757634e487b7160e01b600052602260045260246000fd5b60208082526018908201527f4f776e61626c652f63616c6c65722d6e6f742d6f776e65720000000000000000604082015260600190565b6001600160a01b0392831681529116602082015260400190565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561454757600080fd5b825161455281613fea565b602084015190925067ffffffffffffffff8082111561457057600080fd5b818501915085601f83011261458457600080fd5b8151818111156145965761459661451e565b604051601f8201601f19908116603f011681019083821181831017156145be576145be61451e565b816040528281528860208487010111156145d757600080fd5b6145e8836020830160208801613f6e565b80955050505050509250929050565b81810381811115610c5857610c58614470565b6001600160a01b03878116825260ff8716602083015263ffffffff86166040830152606082018590528316608082015260c060a082018190526000906111cf90830184613f92565b63ffffffff82811682821603908082111561466f5761466f614470565b5092915050565b8082028115828204841417610c5857610c58614470565b634e487b7160e01b600052601260045260246000fd5b6000826146c057634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156146d757600080fd5b8151610cb881613fea565b80151581146117b757600080fd5b81356146fb816146e2565b815460ff19811691151560ff169182178355602084013561471b816146e2565b61ff0090151560081b1661ffff198216831781178455604085013561473f81613fea565b6001600160b01b0319929092169092179190911760109190911b62010000600160b01b031617905550565b606081018235614779816146e2565b15158252602083013561478b816146e2565b1515602083015260408301356147a081613fea565b6001600160a01b031660409290920191909152919050565b634e487b7160e01b600052602160045260246000fd5b6000602082840312156147e057600080fd5b8151610cb8816146e2565b600082516147fd818460208701613f6e565b919091019291505056fea26469706673582212201acb5485a224d1c1a17220d5e1e0c3cf5cc7be9447575014c4cb4ad6590e499c64736f6c63430008180033000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001600000000000000000000000005e37a7f427ef8b3d507acd3bd16db3ffa755bacc000000000000000000000000f35fe10ffd0a9672d0095c435fd8767a7fe29b550000000000000000000000000b5a1dc536d5a67c66d00b337e6b189385bd84380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000186a0000000000000000000000000b1e4f56590ca358548696d9ec161cd16cc3bb13500000000000000000000000000000000000000000000000000000000000000095072697a65204441490000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000670727a4441490000000000000000000000000000000000000000000000000000