Loading
[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "erc20Address", "type": "address" } ], "name": "ApprovedFailed", "type": "error" }, { "inputs": [], "name": "DepositDisabled", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "availability", "type": "uint256" }, { "internalType": "uint256", "name": "request", "type": "uint256" }, { "internalType": "address", "name": "from", "type": "address" } ], "name": "DiaCanNotAcceptMoreFunds", "type": "error" }, { "inputs": [], "name": "InsufficientFunds", "type": "error" }, { "inputs": [], "name": "InterestPeriodDidNotEndYet", "type": "error" }, { "inputs": [], "name": "InterestPeriodEnded", "type": "error" }, { "inputs": [], "name": "InvalidSignature", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "erc20Address", "type": "address" } ], "name": "MaximumReserveReached", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "minimumGuaranteeCapital", "type": "uint256" } ], "name": "MinimumGuaranteeCapital", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "erc20Address", "type": "address" } ], "name": "NotEnoughERC20Balance", "type": "error" }, { "inputs": [], "name": "OnlyFactory", "type": "error" }, { "inputs": [], "name": "PoolMaintenanceDidNotEndYet", "type": "error" }, { "inputs": [], "name": "PoolMaintenanceEnded", "type": "error" }, { "inputs": [], "name": "SupportedTokenCannotBeWithdrawn", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "erc20Address", "type": "address" } ], "name": "TokenIsNotSupported", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "erc20Address", "type": "address" } ], "name": "TransferFromFailed", "type": "error" }, { "inputs": [], "name": "ZeroCtokenCalculated", "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": "authorizer", "type": "address" }, { "indexed": true, "internalType": "bytes32", "name": "nonce", "type": "bytes32" } ], "name": "AuthorizationUsed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "cTokenAmount", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "depositedTokenAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "depositedTokenAmount", "type": "uint256" } ], "name": "Deposit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "tokenAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "totalAssetsInUsdc", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "usdcBalance", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "tokenBalance", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "finalUsdcBalance", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "finalTokenBalance", "type": "uint256" } ], "name": "MaintainErc20Reserve", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "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": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "cTokenAmount", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "tokenAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "tokenAmount", "type": "uint256" } ], "name": "Withdraw", "type": "event" }, { "inputs": [], "name": "ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEPOSIT_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PERCENTAGE", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "WITHDRAW_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "aaveMaxPercentage", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "aaveMinimumTvl", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "aaveWeightModifier", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenAddress", "type": "address" }, { "internalType": "address", "name": "priceFeedAddress", "type": "address" }, { "internalType": "uint256", "name": "minimumReserveInUsdc", "type": "uint256" }, { "internalType": "uint256", "name": "reservePercentage", "type": "uint256" }, { "internalType": "uint256", "name": "maximumReserveInUsdc", "type": "uint256" } ], "name": "addSupportedToken", "outputs": [], "stateMutability": "nonpayable", "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": [ { "components": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "validAfter", "type": "uint256" }, { "internalType": "uint256", "name": "validBefore", "type": "uint256" }, { "internalType": "bytes32", "name": "nonce", "type": "bytes32" } ], "internalType": "struct IGaslessToken.ApproveRequest", "name": "req", "type": "tuple" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "name": "approveWithAuthorization", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "aumWithInterest", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "authorizer", "type": "address" }, { "internalType": "bytes32", "name": "nonce", "type": "bytes32" } ], "name": "authorizationState", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": "benqiMaxPercentage", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "benqiMinimumTvl", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "benqiWeightModifier", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "cTokenUsdcBasePrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "cTokenUsdcPriceDecimals", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenAddress", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "calculateCTokenValue", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "erc20Address", "type": "address" } ], "name": "contractERC20Balance", "outputs": [ { "internalType": "uint256", "name": "contractTokenBalance", "type": "uint256" }, { "internalType": "uint256", "name": "contractTokenBalanceInUsdc", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "cTokenAmount", "type": "uint256" } ], "name": "convertCTokenToUsdc", "outputs": [ { "internalType": "uint256", "name": "usdcAmount", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "usdcAmount", "type": "uint256" } ], "name": "convertUsdcToCToken", "outputs": [ { "internalType": "uint256", "name": "cTokenAmount", "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": [ { "components": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "validAfter", "type": "uint256" }, { "internalType": "uint256", "name": "validBefore", "type": "uint256" }, { "internalType": "bytes32", "name": "nonce", "type": "bytes32" } ], "internalType": "struct IDia.DepositRequest", "name": "req", "type": "tuple" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "name": "depositWithAuthorization", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "factory", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getCurrentPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": [ { "components": [ { "internalType": "address", "name": "adminAddress", "type": "address" }, { "internalType": "address", "name": "usdcAddress", "type": "address" }, { "internalType": "uint256", "name": "interestWarrantyAmount", "type": "uint256" }, { "internalType": "uint256", "name": "minimumGuaranteeCapital", "type": "uint256" }, { "internalType": "uint256", "name": "warmUpInterestPerYearWad", "type": "uint256" }, { "internalType": "uint256", "name": "interestPerYearWad", "type": "uint256" }, { "internalType": "uint256", "name": "minimumUsdcReserve", "type": "uint256" }, { "internalType": "uint256", "name": "maximumUsdcReserve", "type": "uint256" }, { "internalType": "uint256", "name": "cTokenUsdcBasePrice", "type": "uint256" }, { "internalType": "uint256", "name": "cTokenUsdcPriceDecimals", "type": "uint256" }, { "internalType": "uint256", "name": "warmUpPeriodStart", "type": "uint256" }, { "internalType": "uint256", "name": "interestPeriodStart", "type": "uint256" }, { "internalType": "uint256", "name": "interestPeriodEnd", "type": "uint256" }, { "internalType": "uint256", "name": "poolMaintenanceEnd", "type": "uint256" }, { "internalType": "uint256", "name": "aaveMinimumTvl", "type": "uint256" }, { "internalType": "uint256", "name": "stargateMinimumTvl", "type": "uint256" }, { "internalType": "uint256", "name": "benqiMinimumTvl", "type": "uint256" }, { "internalType": "uint16", "name": "usdcReservePercentage", "type": "uint16" }, { "internalType": "uint16", "name": "slippagePercentage", "type": "uint16" }, { "internalType": "uint16", "name": "aaveWeightModifier", "type": "uint16" }, { "internalType": "uint16", "name": "stargateWeightModifier", "type": "uint16" }, { "internalType": "uint16", "name": "benqiWeightModifier", "type": "uint16" }, { "internalType": "uint16", "name": "aaveMaxPercentage", "type": "uint16" }, { "internalType": "uint16", "name": "stargateMaxPercentage", "type": "uint16" }, { "internalType": "uint16", "name": "benqiMaxPercentage", "type": "uint16" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" } ], "internalType": "struct IDia.ConstructParameters", "name": "params", "type": "tuple" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "interestPerSecondRay", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "interestPerSecondWay", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "interestPeriodEnd", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "interestPeriodStart", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "interestWarrantyAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenAddress", "type": "address" } ], "name": "isTokenSupported", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "erc20Address", "type": "address" } ], "name": "maintainErc20Reserve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "maintainUsdcReserve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "maximumUsdcReserve", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "minimumGuaranteeCapital", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "minimumUsdcReserve", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "poolMaintenanceEnd", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "slippagePercentage", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "stargateMaxPercentage", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "stargateMinimumTvl", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "stargateWeightModifier", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalAssetsInUsdc", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "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": [ { "components": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "validAfter", "type": "uint256" }, { "internalType": "uint256", "name": "validBefore", "type": "uint256" }, { "internalType": "bytes32", "name": "nonce", "type": "bytes32" } ], "internalType": "struct IGaslessToken.TransferRequest", "name": "req", "type": "tuple" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "name": "transferWithAuthorization", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "usdc", "outputs": [ { "internalType": "contract IERC20Metadata", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "usdcReservePercentage", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "version", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "warmUpInterestPerSecondRay", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "warmUpPeriodStart", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "address", "name": "tokenAddress", "type": "address" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "withdrawRemainingBalanceEndOfThePeriod", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "address", "name": "tokenAddress", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "withdrawUnsupportedERC20Balance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "address", "name": "tokenAddress", "type": "address" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "validAfter", "type": "uint256" }, { "internalType": "uint256", "name": "validBefore", "type": "uint256" }, { "internalType": "bytes32", "name": "nonce", "type": "bytes32" } ], "internalType": "struct IDia.WithdrawRequest", "name": "req", "type": "tuple" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "name": "withdrawWithAuthorization", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61546880620000f46000396000f3fe608060405234801561001057600080fd5b50600436106103875760003560e01c806385dfb7d0116101e0578063c180644311610110578063dd62ed3e116100a8578063dd62ed3e146107b2578063e02023a1146107c5578063e140864f146107ec578063e5a4183f14610802578063e94a010214610815578063eb91d37e1461084e578063f052b69614610856578063f2263c3d14610860578063fd0c10cc1461087357600080fd5b8063c180644314610724578063c45a01551461072e578063c4e1f34414610742578063c73b062314610755578063ce65466a1461076b578063d36ca96a14610775578063d547741f1461077f578063d828885f14610792578063dbe491a51461079c57600080fd5b806399c792b21161018357806399c792b2146106a1578063a217fddf146106b4578063a3004f3e146106bc578063a457c2d7146106cf578063a5f8f36b146106e2578063a9059cbb146106ec578063a9b312bc146106ff578063aa7e950214610709578063b460af941461071157600080fd5b806385dfb7d01461063757806387b918371461063f5780638e310820146106525780638e5fdd871461065c5780639113987a1461066657806391d148541461067c57806395d4cfaa1461068f57806395d89b411461069957600080fd5b806339509351116102bb5780635d2f4cb01161025e5780635d2f4cb01461058657806361c0b34d146105905780636ed33b98146105a357806370a08231146105b6578063732b75eb146105df57806375151b63146105f257806375b238fc1461060557806376aede051461061a5780638401ebda1461062d57600080fd5b806339509351146104f85780633dc1ab831461050b5780633e413bee146105155780634412055c146105365780634452d81c1461054057806347b7655b1461055557806354fd4d50146105685780635b5b1e341461057057600080fd5b8063248a9ca31161032e578063248a9ca31461042257806326a4259c14610446578063276e90a41461046e578063293315f2146104835780632f2ff15d1461049f578063313ce567146104b2578063353efdcf146104c157806335d4f9f4146104d657806336568abe146104e557600080fd5b806301ffc9a71461038c57806306fdde03146103b4578063095ea7b3146103c95780630d94e261146103dc5780631589f5fd146103f4578063178a2228146103fd57806318160ddd1461040757806323b872dd1461040f575b600080fd5b61039f61039a366004614909565b610889565b60405190151581526020015b60405180910390f35b6103bc6108c0565b6040516103ab919061495f565b61039f6103d73660046149ae565b610952565b6103e66101755481565b6040519081526020016103ab565b610172546103e6565b6103e661016e5481565b6035546103e6565b61039f61041d3660046149d8565b61096a565b6103e6610430366004614a14565b6000908152610132602052604090206001015490565b610459610454366004614a2d565b61098e565b604080519283526020830191909152016103ab565b61048161047c366004614a9b565b610a38565b005b61048c61271081565b60405161ffff90911681526020016103ab565b6104816104ad366004614aef565b610c43565b604051600681526020016103ab565b6103e66000805160206153d383398151915281565b6101785461048c9061ffff1681565b6104816104f3366004614aef565b610c6e565b61039f6105063660046149ae565b610cf1565b6103e66101695481565b61016454610529906001600160a01b031681565b6040516103ab9190614b1b565b6103e66101775481565b6101785461048c9062010000900461ffff1681565b610481610563366004614c0c565b610d13565b6103bc611166565b6101785461048c90600160701b900461ffff1681565b6103e66101765481565b61039f61059e366004614e06565b611175565b6104816105b1366004614e40565b6112f7565b6103e66105c4366004614a2d565b6001600160a01b031660009081526033602052604090205490565b6103e66105ed366004614a14565b6113aa565b61039f610600366004614a2d565b6113d7565b6103e660008051602061541383398151915281565b610481610628366004614a9b565b611414565b6103e661016a5481565b6103e66115c7565b61048161064d366004614a2d565b6115e2565b6103e661016d5481565b6103e66101685481565b6101785461048c90600160401b900461ffff1681565b61039f61068a366004614aef565b611d00565b6103e66101705481565b6103bc611d2c565b61039f6106af366004614e06565b611d3b565b6103e6600081565b6103e66106ca3660046149ae565b611e35565b61039f6106dd3660046149ae565b611ec0565b6103e66101715481565b61039f6106fa3660046149ae565b611f3b565b6103e66101745481565b610481611f49565b61048161071f366004614e8d565b61214c565b6103e66101735481565b61016754610529906001600160a01b031681565b610481610750366004614a2d565b612158565b6101785461048c90600160301b900461ffff1681565b6103e66101725481565b6103e661016f5481565b61048161078d366004614aef565b61235d565b6103e661016c5481565b6101785461048c90600160501b900461ffff1681565b6103e66107c0366004614ec9565b612383565b6103e67f5d8e12c39142ff96d79d04d15d1ba1269e4fe57bb9d26f43523628b34ba108ec81565b6101785461048c90600160201b900461ffff1681565b6103e6610810366004614a14565b6123ae565b61039f6108233660046149ae565b6001600160a01b03919091166000908152609b60209081526040808320938352929052205460ff1690565b6103e66123c4565b6103e661016b5481565b61048161086e3660046149d8565b6125e9565b6101785461048c90600160601b900461ffff1681565b60006001600160e01b03198216637965db0b60e01b14806108ba57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060603680546108cf90614ef3565b80601f01602080910402602001604051908101604052809291908181526020018280546108fb90614ef3565b80156109485780601f1061091d57610100808354040283529160200191610948565b820191906000526020600020905b81548152906001019060200180831161092b57829003601f168201915b5050505050905090565b6000336109608185856126ac565b5060019392505050565b6000336109788582856127d0565b610983858585612844565b506001949350505050565b600080826001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016109bd9190614b1b565b602060405180830381865afa1580156109da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109fe9190614f28565b6001600160a01b038085166000908152610165602052604090205461016454929450610a319290821691869116856129dd565b9050915091565b6000805160206153d3833981519152610a5081612db1565b61017054421115610a745760405163a384499360e01b815260040160405180910390fd5b610a98610a846020860186614a2d565b8560c0013586608001358760a00135612dbe565b6000610ba884848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610ba292507f144b8e4f35c12ea77d78a8aeb37bdab5254ef6f44686050757d4eb509f61f92e9150610b07905060208a018a614a2d565b610b1760408b0160208c01614a2d565b60408b0135610b2c60808d0160608e01614a2d565b6040805160208101969096526001600160a01b03948516908601529183166060850152608084810191909152911660a083810191909152908a013560c083810191909152908a013560e0830152890135610100820152610120015b60405160208183030381529060405280519060200120612e8a565b90612ed8565b9050610bb76020860186614a2d565b6001600160a01b0316816001600160a01b031614610be857604051638baa579f60e01b815260040160405180910390fd5b610c02610bf86020870187614a2d565b8660c00135612efc565b610c3c610c126020870187614a2d565b610c226040880160208901614a2d565b6040880135610c3760808a0160608b01614a2d565b612f56565b5050505050565b60008281526101326020526040902060010154610c5f81612db1565b610c6983836134ae565b505050565b6001600160a01b0381163314610ce35760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b610ced8282613535565b5050565b600033610960818585610d048383612383565b610d0e9190614f57565b6126ac565b600054610100900460ff1615808015610d335750600054600160ff909116105b80610d4d5750303b158015610d4d575060005460ff166001145b610db05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610cda565b6000805460ff191660011790558015610dd3576000805461ff0019166101001790555b610e03826103200151836103400151604051806040016040528060038152602001620312e360ec1b81525061359d565b610e0b6135cf565b8151610e19906000906135f8565b610e3560008051602061541383398151915283600001516135f8565b610e637f5d8e12c39142ff96d79d04d15d1ba1269e4fe57bb9d26f43523628b34ba108ec83600001516135f8565b610e7f6000805160206153d383398151915283600001516135f8565b60c08201516101735560e08201516101745560408083015161016a5560608301516101695561010083015161016b5560a0830151905163060614cb60e01b81526004810191909152739fd28f50527a4184b2180ffbaab30ab6519037399063060614cb90602401602060405180830381865af4158015610f03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f279190614f28565b61017255608082015160405163060614cb60e01b81526004810191909152739fd28f50527a4184b2180ffbaab30ab6519037399063060614cb90602401602060405180830381865af4158015610f81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa59190614f28565b61016e55602082015161016480546001600160a01b039092166001600160a01b031992831617905561012083015161016c55610220830151610178805461024086015161014087015161016d5561016087015161016f55610180870151610170556101a0870151610171556102608701516102808801516102a08901516102c08a01516102e08b01516103008c015161ffff908116600160701b0261ffff60701b19928216600160601b029290921663ffffffff60601b19938216600160501b0261ffff60501b19958316600160401b029590951663ffffffff60401b19968316600160301b0267ffff00000000000019988416600160201b029890981667ffffffff0000000019998416620100000263ffffffff19909b1693909c16929092179890981796909616989098179390931791909116929092179190911716179190911790556101c0830151610175556101e083015161017655610200830151610177556101678054909116331790556040820151610168558015610ced576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6060609980546108cf90614ef3565b600061119b6111876020860186614a2d565b8560a0013586606001358760800135612dbe565b600061127484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610ba292507f175d15605e477ecd125c0d700df4f6562878201696389ae8b63a31b6033f30bb915061120a905060208a018a614a2d565b61121a60408b0160208c01614a2d565b6040805160208101949094526001600160a01b03928316848201529116606083810191909152908a0135608083810191909152908a013560a083810191909152908a013560c083015289013560e082015261010001610b87565b90506112836020860186614a2d565b6001600160a01b0316816001600160a01b0316146112b35760405162461bcd60e51b8152600401610cda90614f6f565b6112cd6112c36020870187614a2d565b8660a00135612efc565b6109836112dd6020870187614a2d565b6112ed6040880160208901614a2d565b87604001356126ac565b610167546001600160a01b0316336001600160a01b03161461132c57604051630636a15760e11b815260040160405180910390fd5b6001600160a01b039485166000818152610165602052604081208054979096166001600160a01b031997881617865560018087019590955560028601939093556003909401556101668054928301815590527fa5a4c57b7184ec73d55be4993773cb4eef681bc86a28d0285cd66efb50676a97018054909216179055565b60006113b46123c4565b61016c546113c390600a61508a565b6113cd9084615096565b6108ba91906150b5565b610164546000906001600160a01b03838116911614806108ba5750506001600160a01b039081166000908152610165602052604090205416151590565b6114386114246020850185614a2d565b8460c0013585608001358660a00135612dbe565b600061152d83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610ba292507f39fb2d8cf60af66b0d53f43f16951d321dbfd39ce13db9364d460792bc162eef91506114a790506020890189614a2d565b60208901356114bc60608b0160408c01614a2d565b6114cc60808c0160608d01614a2d565b6040805160208101969096526001600160a01b039485169086015260608501929092528216608084810191909152911660a0838101919091529089013560c0838101919091529089013560e083015288013561010082015261012001610b87565b905061153c6020850185614a2d565b6001600160a01b0316816001600160a01b03161461156d57604051638baa579f60e01b815260040160405180910390fd5b61158761157d6020860186614a2d565b8560c00135612efc565b6115c16115976020860186614a2d565b60208601356115ac6060880160408901614a2d565b6115bc6080890160608a01614a2d565b613602565b50505050565b60006115dd6115d861081060355490565b61369a565b905090565b6101715442111561160657604051634eef429f60e11b815260040160405180910390fd5b61160f816113d7565b61162e57806040516305fd61ad60e01b8152600401610cda9190614b1b565b73f7a5a4590592e948e3102238a73b9f1c1547e30663946185c56040518163ffffffff1660e01b815260040160006040518083038186803b15801561167257600080fd5b505af4158015611686573d6000803e3d6000fd5b5050610164546040516370a0823160e01b8152600093506001600160a01b0390911691506370a08231906116be903090600401614b1b565b602060405180830381865afa1580156116db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ff9190614f28565b90506000826001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161172f9190614b1b565b602060405180830381865afa15801561174c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117709190614f28565b9050600061177d8461098e565b610164546040516370a0823160e01b8152919350600092506001600160a01b0316906370a08231906117b3903090600401614b1b565b602060405180830381865afa1580156117d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f49190614f28565b6001600160a01b03861660009081526101656020526040812060018101546002909101549293509091739fd28f50527a4184b2180ffbaab30ab65190373991636d5433e691612710906118478888614f57565b6118519190615096565b61185b91906150b5565b6040516001600160e01b031960e085901b16815260048101929092526024820152604401602060405180830381865af415801561189c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c09190614f28565b90508281111561197a57739b311002682d8c94702d847350abe4f61dccaff763ee744eb9876118ef86856150d7565b6001600160a01b038a811660009081526101656020526040908190205461017854915160e087901b6001600160e01b0319168152611945959493919091169162010000900461ffff1690612710906004016150ee565b60006040518083038186803b15801561195d57600080fd5b505af4158015611971573d6000803e3d6000fd5b50505050611a2e565b82811015611a2e57739b311002682d8c94702d847350abe4f61dccaff763af505d60876119a784876150d7565b6001600160a01b038a811660009081526101656020526040908190205461017854915160e087901b6001600160e01b03191681526119fd959493919091169162010000900461ffff1690612710906004016150ee565b60006040518083038186803b158015611a1557600080fd5b505af4158015611a29573d6000803e3d6000fd5b505050505b610164546040516370a0823160e01b81526000916001600160a01b0316906370a0823190611a60903090600401614b1b565b602060405180830381865afa158015611a7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa19190614f28565b90506000876001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401611ad19190614b1b565b602060405180830381865afa158015611aee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b129190614f28565b9050611b1c6138ae565b610164546040516370a0823160e01b81526001600160a01b03909116906370a0823190611b4d903090600401614b1b565b602060405180830381865afa158015611b6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8e9190614f28565b611b989190614f57565b6101688190556040805191825260208201899052810187905260608101839052608081018290526001600160a01b038916907f79b5ca4905e061db56d6d5e0caacc188c4cea64c579dc098dc8d7d66b47e224a9060a00160405180910390a260408051610180810182526101735481526101785461ffff8082166020840152612710838501526101755460608401526101765460808401526101775460a0840152600160201b8204811660c0840152600160301b8204811660e0840152600160401b82048116610100840152600160501b82048116610120840152600160601b82048116610140840152600160701b9091041661016082015290516303ed7b4f60e41b815273f7a5a4590592e948e3102238a73b9f1c1547e30691633ed7b4f091611cc69190600401615125565b60006040518083038186803b158015611cde57600080fd5b505af4158015611cf2573d6000803e3d6000fd5b505050505050505050505050565b6000918252610132602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060603780546108cf90614ef3565b6000611d4d6111876020860186614a2d565b6000611dbc84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610ba292507fbd9fbac699d785d6b34dc4f64987bdaa1dd0350660ff2fdb0d4eaee79ea219a6915061120a905060208a018a614a2d565b9050611dcb6020860186614a2d565b6001600160a01b0316816001600160a01b031614611dfb5760405162461bcd60e51b8152600401610cda90614f6f565b611e0b6112c36020870187614a2d565b610983611e1b6020870187614a2d565b611e2b6040880160208901614a2d565b8760400135612844565b6000611e40836113d7565b611e5f57826040516305fd61ad60e01b8152600401610cda9190614b1b565b610164546001600160a01b0384811691161415611e8657611e7f826113aa565b90506108ba565b6001600160a01b038084166000908152610165602052604090205461016454611eb9926105ed92811691879116866129dd565b9392505050565b60003381611ece8286612383565b905083811015611f2e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610cda565b61098382868684036126ac565b600033610960818585612844565b61017154421115611f6d57604051634eef429f60e11b815260040160405180910390fd5b73f7a5a4590592e948e3102238a73b9f1c1547e30663946185c56040518163ffffffff1660e01b815260040160006040518083038186803b158015611fb157600080fd5b505af4158015611fc5573d6000803e3d6000fd5b50505050611fd16138ae565b610164546040516370a0823160e01b81526001600160a01b03909116906370a0823190612002903090600401614b1b565b602060405180830381865afa15801561201f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120439190614f28565b61204d9190614f57565b6101685560408051610180810182526101735481526101785461ffff8082166020840152612710838501526101755460608401526101765460808401526101775460a0840152600160201b8204811660c0840152600160301b8204811660e0840152600160401b82048116610100840152600160501b82048116610120840152600160601b82048116610140840152600160701b9091041661016082015290516303ed7b4f60e41b815273f7a5a4590592e948e3102238a73b9f1c1547e30691633ed7b4f0916121209190600401615125565b60006040518083038186803b15801561213857600080fd5b505af41580156115c1573d6000803e3d6000fd5b610c6933848484613602565b60008051602061541383398151915261217081612db1565b61017154421015612194576040516343273ca960e11b815260040160405180910390fd5b73f7a5a4590592e948e3102238a73b9f1c1547e30663946185c56040518163ffffffff1660e01b815260040160006040518083038186803b1580156121d857600080fd5b505af41580156121ec573d6000803e3d6000fd5b505050506121f86139f3565b610164546040516370a0823160e01b81526000916001600160a01b0316906370a082319061222a903090600401614b1b565b602060405180830381865afa158015612247573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061226b9190614f28565b9050600061227860355490565b111561232a57806122876115c7565b106122a55760405163356680b760e01b815260040160405180910390fd5b610164546001600160a01b031663a9059cbb846122c06115c7565b6122ca90856150d7565b6040518363ffffffff1660e01b81526004016122e79291906151e6565b6020604051808303816000875af1158015612306573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c191906151ff565b6101645460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906122e790869085906004016151e6565b6000828152610132602052604090206001015461237981612db1565b610c698383613535565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b600061016c54600a6123c0919061508a565b6113c35b600061016d544210156123d9575061016b5490565b61016f544210156124845761016b54739fd28f50527a4184b2180ffbaab30ab65190373963de251fb6909161016e5461016d544261241791906150d7565b6040516001600160e01b031960e086901b168152600481019390935260248301919091526044820152606401602060405180830381865af4158015612460573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115dd9190614f28565b600061016b54739fd28f50527a4184b2180ffbaab30ab65190373963de251fb6909161016e5461016d5461016f546124bc91906150d7565b6040516001600160e01b031960e086901b168152600481019390935260248301919091526044820152606401602060405180830381865af4158015612505573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125299190614f28565b9050600061017054421115612542575061017054612545565b50425b81739fd28f50527a4184b2180ffbaab30ab65190373963de251fb690916101725461016f548561257591906150d7565b6040516001600160e01b031960e086901b168152600481019390935260248301919091526044820152606401602060405180830381865af41580156125be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125e29190614f28565b9250505090565b60008051602061541383398151915261260181612db1565b6001600160a01b0383811660009081526101656020526040902054161561263b5760405163da94794d60e01b815260040160405180910390fd5b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb9061266990879086906004016151e6565b6020604051808303816000875af1158015612688573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3c91906151ff565b6001600160a01b03831661270e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610cda565b6001600160a01b03821661276f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610cda565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006127dc8484612383565b905060001981146115c157818110156128375760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610cda565b6115c184848484036126ac565b6001600160a01b0383166128a85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610cda565b6001600160a01b03821661290a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610cda565b6001600160a01b038316600090815260336020526040902054818110156129825760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610cda565b6001600160a01b0380851660008181526033602052604080822086860390559286168082529083902080548601905591516000805160206153f3833981519152906129d09086815260200190565b60405180910390a36115c1565b600080600080876001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015612a21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a459190615238565b9450505092509250826001600160501b0316816001600160501b03161015612aa35760405162461bcd60e51b815260206004820152601160248201527021a7a09d1029ba30b6329030b739bbb2b960791b6044820152606401610cda565b610164546001600160a01b0388811691161415612c3457866001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612af8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b1c9190615288565b612b2790600a6152ab565b866001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b899190615288565b612b9490600a6152ab565b838a6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bf79190615288565b612c0290600a6152ab565b612c0c9089615096565b612c1691906150b5565b612c209190615096565b612c2a91906150b5565b9350505050612da9565b866001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c969190615288565b612ca190600a6152ab565b866001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d039190615288565b612d0e90600a6152ab565b896001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d709190615288565b612d7b90600a6152ab565b612d858589615096565b612d8f91906150b5565b612d999190615096565b612da391906150b5565b93505050505b949350505050565b612dbb8133613b3e565b50565b814211612e225760405162461bcd60e51b815260206004820152602c60248201527f4761736c657373546f6b656e3a20617574686f72697a6174696f6e206973206e60448201526b1bdd081e595d081d985b1a5960a21b6064820152608401610cda565b804210612e805760405162461bcd60e51b815260206004820152602660248201527f4761736c657373546f6b656e3a20617574686f72697a6174696f6e20697320656044820152651e1c1a5c995960d21b6064820152608401610cda565b6115c18484613b97565b60006108ba612e97613c23565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6000806000612ee78585613c9e565b91509150612ef481613ce4565b509392505050565b6001600160a01b0382166000818152609b60209081526040808320858452909152808220805460ff19166001179055518392917f98de503528ee59b575ef0c0a2576a82497bfc029a5685b209e9ec333479b10a591a35050565b612f5f836113d7565b612f7e57826040516305fd61ad60e01b8152600401610cda9190614b1b565b6040516370a0823160e01b81526000906001600160a01b038516906370a0823190612fad908890600401614b1b565b602060405180830381865afa158015612fca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fee9190614f28565b8310613066576040516370a0823160e01b81526001600160a01b038516906370a0823190613020908890600401614b1b565b602060405180830381865afa15801561303d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130619190614f28565b613068565b825b610164549091506001600160a01b0385811691161480159061312f57506001600160a01b038085166000818152610165602052604090819020600381015490546101645492516370a0823160e01b8152919461312d94918116938a9391169187916370a08231906130dd903090600401614b1b565b602060405180830381865afa1580156130fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061311e9190614f28565b6131289190614f57565b6129dd565b115b806131d05750610164546001600160a01b0385811691161480156131d0575061017454610164546040516370a0823160e01b815285916001600160a01b0316906370a0823190613183903090600401614b1b565b602060405180830381865afa1580156131a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131c49190614f28565b6131ce9190614f57565b115b156131f05783604051632ae6508f60e21b8152600401610cda9190614b1b565b6101695461320061081060355490565b6101685461320e91906150d7565b101561324a5761322061081060355490565b6101685461322e91906150d7565b60405163e4e459f160e01b8152600401610cda91815260200190565b6101645460009081906001600160a01b0387811691161415613271575081905060016132a8565b6001600160a01b0380871660009081526101656020526040902054610164546132a19291821691899116866129dd565b9150600290505b60006132b38361369a565b90506132bf83826150d7565b610178546127109062010000900461ffff166132db8585615096565b6132e59190615096565b6132ef91906150b5565b6132f99190614f57565b6133016115c7565b6101685461330f91906150d7565b101561335e5761331d6115c7565b6101685461332b91906150d7565b60405163e207027960e01b81526004810191909152602481018490526001600160a01b0389166044820152606401610cda565b61016454600090613378906001600160a01b031685611e35565b905080613398576040516339b85aed60e11b815260040160405180910390fd5b6040516323b872dd60e01b81526001600160a01b038a81166004830152306024830152604482018790528916906323b872dd906064016020604051808303816000875af11580156133ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061341191906151ff565b6134305787604051636e1c8d1560e01b8152600401610cda9190614b1b565b61343a8682613e2d565b83610168600082825461344d9190614f57565b9091555050604080518281526001600160a01b038a81166020830152918101879052818816918b16907faaefaf378e10f40556b2167ea878af7e62d89229b0bce3924630aabf1ee611ff9060600160405180910390a3505050505050505050565b6134b88282611d00565b610ced576000828152610132602090815260408083206001600160a01b03851684529091529020805460ff191660011790556134f13390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61353f8282611d00565b15610ced576000828152610132602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600054610100900460ff166135c45760405162461bcd60e51b8152600401610cda906152ba565b610c69838383613edc565b600054610100900460ff166135f65760405162461bcd60e51b8152600401610cda906152ba565b565b610ced82826134ae565b61360b826113d7565b61362a57816040516305fd61ad60e01b8152600401610cda9190614b1b565b8261364a856001600160a01b031660009081526033602052604090205490565b10156136695760405163356680b760e01b815260040160405180910390fd5b6136738484613f17565b61017154421061368e5761368984848484614039565b6115c1565b6115c1848484846141df565b6000610170544211156136ab575090565b61016f5442101561381157600061016d544211156136ca5750426136d0565b5061016d545b600083739fd28f50527a4184b2180ffbaab30ab65190373963de251fb6909161016e548561016f5461370291906150d7565b6040516001600160e01b031960e086901b168152600481019390935260248301919091526044820152606401602060405180830381865af415801561374b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061376f9190614f28565b905080739fd28f50527a4184b2180ffbaab30ab65190373963de251fb690916101725461016f54610170546137a491906150d7565b6040516001600160e01b031960e086901b168152600481019390935260248301919091526044820152606401602060405180830381865af41580156137ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612da99190614f28565b81739fd28f50527a4184b2180ffbaab30ab65190373963de251fb6909161017254426101705461384191906150d7565b6040516001600160e01b031960e086901b168152600481019390935260248301919091526044820152606401602060405180830381865af415801561388a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ba9190614f28565b60008060005b610166548110156139ed576139cf610165600061016684815481106138db576138db615305565b60009182526020808320909101546001600160a01b03908116845290830193909352604090910190205461016680549190921691908490811061392057613920615305565b6000918252602090912001546101645461016680546001600160a01b0393841693909216918690811061395557613955615305565b6000918252602090912001546040516370a0823160e01b81526001600160a01b03909116906370a082319061398e903090600401614b1b565b602060405180830381865afa1580156139ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131289190614f28565b6139d99083614f57565b9150806139e58161531b565b9150506138b4565b50919050565b60005b61016654811015612dbb5760006101668281548110613a1757613a17615305565b6000918252602090912001546040516370a0823160e01b81526001600160a01b03909116906370a0823190613a50903090600401614b1b565b602060405180830381865afa158015613a6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a919190614f28565b1115613b2c57739b311002682d8c94702d847350abe4f61dccaff7639aef3d066101668381548110613ac557613ac5615305565b6000918252602090912001546040516001600160e01b031960e084901b168152613afb916001600160a01b031690600401614b1b565b60006040518083038186803b158015613b1357600080fd5b505af4158015613b27573d6000803e3d6000fd5b505050505b80613b368161531b565b9150506139f6565b613b488282611d00565b610ced57613b5581614522565b613b60836020614534565b604051602001613b71929190615336565b60408051601f198184030181529082905262461bcd60e51b8252610cda9160040161495f565b6001600160a01b0382166000908152609b6020908152604080832084845290915290205460ff1615610ced5760405162461bcd60e51b815260206004820152602f60248201527f4761736c657373546f6b656e3a20617574686f72697a6174696f6e206973207560448201526e1cd959081bdc8818d85b98d95b1959608a1b6064820152608401610cda565b60006115dd7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f613c5260655490565b6066546040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b600080825160411415613cd55760208301516040840151606085015160001a613cc9878285856146cf565b94509450505050613cdd565b506000905060025b9250929050565b6000816004811115613cf857613cf86153a5565b1415613d015750565b6001816004811115613d1557613d156153a5565b1415613d5e5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606401610cda565b6002816004811115613d7257613d726153a5565b1415613dc05760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610cda565b6003816004811115613dd457613dd46153a5565b1415612dbb5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610cda565b6001600160a01b038216613e835760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610cda565b8060356000828254613e959190614f57565b90915550506001600160a01b0382166000818152603360209081526040808320805486019055518481526000805160206153f3833981519152910160405180910390a35050565b600054610100900460ff16613f035760405162461bcd60e51b8152600401610cda906152ba565b613f0d8383614789565b610c6983826147d7565b6001600160a01b038216613f775760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610cda565b6001600160a01b03821660009081526033602052604090205481811015613feb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610cda565b6001600160a01b03831660008181526033602090815260408083208686039055603580548790039055518581529192916000805160206153f3833981519152910160405180910390a3505050565b6000614044846123ae565b610164549091506001600160a01b03848116911614156140f8576101645460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb9061409190859085906004016151e6565b6020604051808303816000875af11580156140b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140d491906151ff565b6140f35782604051636e1c8d1560e01b8152600401610cda9190614b1b565b614173565b6040516322ab836d60e21b81526001600160a01b0380851660048301526024820183905283166044820152739b311002682d8c94702d847350abe4f61dccaff790638aae0db49060640160006040518083038186803b15801561415a57600080fd5b505af415801561416e573d6000803e3d6000fd5b505050505b80610168600082825461418691906150d7565b909155505060408051858152602081018390526001600160a01b038086169285821692918916917f919fc3589577d8ba8023ca13d0b64eaeb6af31c331b4b81c0d42d66423603077910160405180910390a45050505050565b6000806141eb856123ae565b610164549091506000906001600160a01b03868116911614156142ec57610164546040516370a0823160e01b815292935083926001600160a01b03909116906370a082319061423e903090600401614b1b565b602060405180830381865afa15801561425b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061427f9190614f28565b8211156142e7576001905073f7a5a4590592e948e3102238a73b9f1c1547e30663946185c56040518163ffffffff1660e01b815260040160006040518083038186803b1580156142ce57600080fd5b505af41580156142e2573d6000803e3d6000fd5b505050505b61431e565b6001600160a01b03808616600090815261016560205260409020546101645461431b92918216911687856129dd565b92505b60405163a9059cbb60e01b81526001600160a01b0386169063a9059cbb9061434c90879087906004016151e6565b6020604051808303816000875af115801561436b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061438f91906151ff565b6143ae5784604051636e1c8d1560e01b8152600401610cda9190614b1b565b80156144b45760408051610180810182526101735481526101785461ffff8082166020840152612710838501526101755460608401526101765460808401526101775460a0840152600160201b8204811660c0840152600160301b8204811660e0840152600160401b82048116610100840152600160501b82048116610120840152600160601b82048116610140840152600160701b9091041661016082015290516303ed7b4f60e41b815273f7a5a4590592e948e3102238a73b9f1c1547e30691633ed7b4f0916144839190600401615125565b60006040518083038186803b15801561449b57600080fd5b505af41580156144af573d6000803e3d6000fd5b505050505b8161016860008282546144c791906150d7565b909155505060408051878152602081018590526001600160a01b038088169287821692918b16917f919fc3589577d8ba8023ca13d0b64eaeb6af31c331b4b81c0d42d66423603077910160405180910390a450505050505050565b60606108ba6001600160a01b03831660145b60606000614543836002615096565b61454e906002614f57565b6001600160401b0381111561456557614565614b2f565b6040519080825280601f01601f19166020018201604052801561458f576020820181803683370190505b509050600360fc1b816000815181106145aa576145aa615305565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106145d9576145d9615305565b60200101906001600160f81b031916908160001a90535060006145fd846002615096565b614608906001614f57565b90505b6001811115614680576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061463c5761463c615305565b1a60f81b82828151811061465257614652615305565b60200101906001600160f81b031916908160001a90535060049490941c93614679816153bb565b905061460b565b508315611eb95760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610cda565b6000806fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311156146fc5750600090506003614780565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614750573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661477957600060019250925050614780565b9150600090505b94509492505050565b600054610100900460ff166147b05760405162461bcd60e51b8152600401610cda906152ba565b81516147c3906036906020850190614870565b508051610c69906037906020840190614870565b600054610100900460ff166147fe5760405162461bcd60e51b8152600401610cda906152ba565b614808828261482f565b805161481b906099906020840190614870565b508151610c6990609a906020850190614870565b600054610100900460ff166148565760405162461bcd60e51b8152600401610cda906152ba565b815160209283012081519190920120606591909155606655565b82805461487c90614ef3565b90600052602060002090601f01602090048101928261489e57600085556148e4565b82601f106148b757805160ff19168380011785556148e4565b828001600101855582156148e4579182015b828111156148e45782518255916020019190600101906148c9565b506148f09291506148f4565b5090565b5b808211156148f057600081556001016148f5565b60006020828403121561491b57600080fd5b81356001600160e01b031981168114611eb957600080fd5b60005b8381101561494e578181015183820152602001614936565b838111156115c15750506000910152565b602081526000825180602084015261497e816040850160208701614933565b601f01601f19169190910160400192915050565b80356001600160a01b03811681146149a957600080fd5b919050565b600080604083850312156149c157600080fd5b6149ca83614992565b946020939093013593505050565b6000806000606084860312156149ed57600080fd5b6149f684614992565b9250614a0460208501614992565b9150604084013590509250925092565b600060208284031215614a2657600080fd5b5035919050565b600060208284031215614a3f57600080fd5b611eb982614992565b600060e082840312156139ed57600080fd5b60008083601f840112614a6c57600080fd5b5081356001600160401b03811115614a8357600080fd5b602083019150836020828501011115613cdd57600080fd5b60008060006101008486031215614ab157600080fd5b614abb8585614a48565b925060e08401356001600160401b03811115614ad657600080fd5b614ae286828701614a5a565b9497909650939450505050565b60008060408385031215614b0257600080fd5b82359150614b1260208401614992565b90509250929050565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b60405161036081016001600160401b0381118282101715614b6857614b68614b2f565b60405290565b803561ffff811681146149a957600080fd5b600082601f830112614b9157600080fd5b81356001600160401b0380821115614bab57614bab614b2f565b604051601f8301601f19908116603f01168101908282118183101715614bd357614bd3614b2f565b81604052838152866020858801011115614bec57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600060208284031215614c1e57600080fd5b81356001600160401b0380821115614c3557600080fd5b908301906103608286031215614c4a57600080fd5b614c52614b45565b614c5b83614992565b8152614c6960208401614992565b602082015260408381013590820152606080840135908201526080808401359082015260a0808401359082015260c0808401359082015260e08084013590820152610100808401359082015261012080840135908201526101408084013590820152610160808401359082015261018080840135908201526101a080840135908201526101c080840135908201526101e080840135908201526102008084013590820152610220614d1b818501614b6e565b90820152610240614d2d848201614b6e565b90820152610260614d3f848201614b6e565b90820152610280614d51848201614b6e565b908201526102a0614d63848201614b6e565b908201526102c0614d75848201614b6e565b908201526102e0614d87848201614b6e565b90820152610300614d99848201614b6e565b908201526103208381013583811115614db157600080fd5b614dbd88828701614b80565b8284015250506103408084013583811115614dd757600080fd5b614de388828701614b80565b918301919091525095945050505050565b600060c082840312156139ed57600080fd5b600080600060e08486031215614e1b57600080fd5b614e258585614df4565b925060c08401356001600160401b03811115614ad657600080fd5b600080600080600060a08688031215614e5857600080fd5b614e6186614992565b9450614e6f60208701614992565b94979496505050506040830135926060810135926080909101359150565b600080600060608486031215614ea257600080fd5b83359250614eb260208501614992565b9150614ec060408501614992565b90509250925092565b60008060408385031215614edc57600080fd5b614ee583614992565b9150614b1260208401614992565b600181811c90821680614f0757607f821691505b602082108114156139ed57634e487b7160e01b600052602260045260246000fd5b600060208284031215614f3a57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115614f6a57614f6a614f41565b500190565b6020808252601f908201527f4761736c657373546f6b656e3a20696e76616c6964207369676e617475726500604082015260600190565b600181815b80851115614fe1578160001904821115614fc757614fc7614f41565b80851615614fd457918102915b93841c9390800290614fab565b509250929050565b600082614ff8575060016108ba565b81615005575060006108ba565b816001811461501b576002811461502557615041565b60019150506108ba565b60ff84111561503657615036614f41565b50506001821b6108ba565b5060208310610133831016604e8410600b8410161715615064575081810a6108ba565b61506e8383614fa6565b806000190482111561508257615082614f41565b029392505050565b6000611eb98383614fe9565b60008160001904831182151516156150b0576150b0614f41565b500290565b6000826150d257634e487b7160e01b600052601260045260246000fd5b500490565b6000828210156150e9576150e9614f41565b500390565b6001600160a01b039586168152602081019490945291909316604083015261ffff9283166060830152909116608082015260a00190565b815181526020808301516101808301916151449084018261ffff169052565b50604083015161515a604084018261ffff169052565b50606083015160608301526080830151608083015260a083015160a083015260c083015161518e60c084018261ffff169052565b5060e08301516151a460e084018261ffff169052565b506101008381015161ffff9081169184019190915261012080850151821690840152610140808501518216908401526101609384015116929091019190915290565b6001600160a01b03929092168252602082015260400190565b60006020828403121561521157600080fd5b81518015158114611eb957600080fd5b80516001600160501b03811681146149a957600080fd5b600080600080600060a0868803121561525057600080fd5b61525986615221565b945060208601519350604086015192506060860151915061527c60808701615221565b90509295509295909350565b60006020828403121561529a57600080fd5b815160ff81168114611eb957600080fd5b6000611eb960ff841683614fe9565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060001982141561532f5761532f614f41565b5060010190565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351615368816017850160208801614933565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351615399816028840160208801614933565b01602801949350505050565b634e487b7160e01b600052602160045260246000fd5b6000816153ca576153ca614f41565b50600019019056fe2561bf26f818282a3be40719542054d2173eb0d38539e8a8d3cff22f29fd2384ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775a2646970667358221220d168289fed13cf681659a84d6778e0c74a106a17db5a6c1cba8a85d865763bb564736f6c634300080c0033