[ { "inputs": [ { "internalType": "address", "name": "_initialOwner", "type": "address" }, { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "uint48", "name": "_annualPerformanceFeeBps", "type": "uint48" }, { "internalType": "address", "name": "_feeCollector", "type": "address" }, { "internalType": "address", "name": "_tokenPrices", "type": "address" }, { "internalType": "uint256", "name": "_maxTotalSupply", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "uint256", "name": "totalSupply", "type": "uint256" }, { "internalType": "uint256", "name": "maxTotalSupply", "type": "uint256" } ], "name": "BreachedMaxTotalSupply", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "caller", "type": "address" } ], "name": "CannotMintOrBurn", "type": "error" }, { "inputs": [], "name": "ExpectedNonZero", "type": "error" }, { "inputs": [], "name": "InvalidAccess", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "addr", "type": "address" } ], "name": "InvalidAddress", "type": "error" }, { "inputs": [], "name": "InvalidParam", "type": "error" }, { "inputs": [], "name": "InvalidShortString", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "x", "type": "uint256" }, { "internalType": "uint256", "name": "y", "type": "uint256" }, { "internalType": "uint256", "name": "denominator", "type": "uint256" } ], "name": "PRBMath_MulDiv_Overflow", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "str", "type": "string" } ], "name": "StringTooLong", "type": "error" }, { "inputs": [], "name": "Unsupported", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" } ], "name": "AddedMinter", "type": "event" }, { "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": [], "name": "EIP712DomainChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "investmentAmount", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "toToken", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "toTokenAmount", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "recipient", "type": "address" } ], "name": "Exited", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "bytes4", "name": "fnSelector", "type": "bytes4" }, { "indexed": true, "internalType": "bool", "name": "value", "type": "bool" } ], "name": "ExplicitAccessSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "feeCollector", "type": "address" } ], "name": "FeeCollectorSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "fromTokenAmount", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "fromToken", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "investmentAmount", "type": "uint256" } ], "name": "Invested", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "manager", "type": "address" } ], "name": "ManagerSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "maxTotalSupply", "type": "uint256" } ], "name": "MaxTotalSupplySet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "oldOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "NewOwnerAccepted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "oldOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "oldProposedOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newProposedOwner", "type": "address" } ], "name": "NewOwnerProposed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "fee", "type": "uint256" } ], "name": "PerformanceFeeSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "feeCollector", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "mintAmount", "type": "uint256" } ], "name": "PerformanceFeesCollected", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" } ], "name": "RemovedMinter", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_tokenPrices", "type": "address" } ], "name": "TokenPricesSet", "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" }, { "inputs": [], "name": "API_VERSION", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "acceptOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "acceptedExitTokens", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "acceptedInvestTokens", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "accruedPerformanceFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "addMinter", "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": [], "name": "annualPerformanceFeeBps", "outputs": [ { "internalType": "uint48", "name": "", "type": "uint48" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "apiVersion", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "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": "areExitsPaused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "areInvestmentsPaused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "assetsAndLiabilities", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "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": "baseToken", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "collectPerformanceFees", "outputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "stateMutability": "nonpayable", "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": [], "name": "effectiveExposure", "outputs": [ { "internalType": "uint128", "name": "", "type": "uint128" } ], "stateMutability": "view", "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": "uint256", "name": "investmentTokenAmount", "type": "uint256" }, { "internalType": "address", "name": "toToken", "type": "address" }, { "internalType": "uint256", "name": "maxSlippageBps", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" } ], "name": "exitQuote", "outputs": [ { "components": [ { "internalType": "uint256", "name": "investmentTokenAmount", "type": "uint256" }, { "internalType": "address", "name": "toToken", "type": "address" }, { "internalType": "uint256", "name": "maxSlippageBps", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint256", "name": "expectedToTokenAmount", "type": "uint256" }, { "internalType": "uint256", "name": "minToTokenAmount", "type": "uint256" }, { "internalType": "bytes", "name": "underlyingInvestmentQuoteData", "type": "bytes" } ], "internalType": "struct IOrigamiInvestment.ExitQuoteData", "name": "quoteData", "type": "tuple" }, { "internalType": "uint256[]", "name": "exitFeeBps", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint256", "name": "investmentTokenAmount", "type": "uint256" }, { "internalType": "address", "name": "toToken", "type": "address" }, { "internalType": "uint256", "name": "maxSlippageBps", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint256", "name": "expectedToTokenAmount", "type": "uint256" }, { "internalType": "uint256", "name": "minToTokenAmount", "type": "uint256" }, { "internalType": "bytes", "name": "underlyingInvestmentQuoteData", "type": "bytes" } ], "internalType": "struct IOrigamiInvestment.ExitQuoteData", "name": "", "type": "tuple" }, { "internalType": "address payable", "name": "", "type": "address" } ], "name": "exitToNative", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint256", "name": "investmentTokenAmount", "type": "uint256" }, { "internalType": "address", "name": "toToken", "type": "address" }, { "internalType": "uint256", "name": "maxSlippageBps", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint256", "name": "expectedToTokenAmount", "type": "uint256" }, { "internalType": "uint256", "name": "minToTokenAmount", "type": "uint256" }, { "internalType": "bytes", "name": "underlyingInvestmentQuoteData", "type": "bytes" } ], "internalType": "struct IOrigamiInvestment.ExitQuoteData", "name": "quoteData", "type": "tuple" }, { "internalType": "address", "name": "recipient", "type": "address" } ], "name": "exitToToken", "outputs": [ { "internalType": "uint256", "name": "toTokenAmount", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "name": "explicitFunctionAccess", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "feeCollector", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getDynamicFeesBps", "outputs": [ { "internalType": "uint256", "name": "depositFeeBps", "type": "uint256" }, { "internalType": "uint256", "name": "exitFeeBps", "type": "uint256" } ], "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": "uint256", "name": "fromTokenAmount", "type": "uint256" }, { "internalType": "address", "name": "fromToken", "type": "address" }, { "internalType": "uint256", "name": "maxSlippageBps", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" } ], "name": "investQuote", "outputs": [ { "components": [ { "internalType": "address", "name": "fromToken", "type": "address" }, { "internalType": "uint256", "name": "fromTokenAmount", "type": "uint256" }, { "internalType": "uint256", "name": "maxSlippageBps", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint256", "name": "expectedInvestmentAmount", "type": "uint256" }, { "internalType": "uint256", "name": "minInvestmentAmount", "type": "uint256" }, { "internalType": "bytes", "name": "underlyingInvestmentQuoteData", "type": "bytes" } ], "internalType": "struct IOrigamiInvestment.InvestQuoteData", "name": "quoteData", "type": "tuple" }, { "internalType": "uint256[]", "name": "investFeeBps", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "fromToken", "type": "address" }, { "internalType": "uint256", "name": "fromTokenAmount", "type": "uint256" }, { "internalType": "uint256", "name": "maxSlippageBps", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint256", "name": "expectedInvestmentAmount", "type": "uint256" }, { "internalType": "uint256", "name": "minInvestmentAmount", "type": "uint256" }, { "internalType": "bytes", "name": "underlyingInvestmentQuoteData", "type": "bytes" } ], "internalType": "struct IOrigamiInvestment.InvestQuoteData", "name": "", "type": "tuple" } ], "name": "investWithNative", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "fromToken", "type": "address" }, { "internalType": "uint256", "name": "fromTokenAmount", "type": "uint256" }, { "internalType": "uint256", "name": "maxSlippageBps", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint256", "name": "expectedInvestmentAmount", "type": "uint256" }, { "internalType": "uint256", "name": "minInvestmentAmount", "type": "uint256" }, { "internalType": "bytes", "name": "underlyingInvestmentQuoteData", "type": "bytes" } ], "internalType": "struct IOrigamiInvestment.InvestQuoteData", "name": "quoteData", "type": "tuple" } ], "name": "investWithToken", "outputs": [ { "internalType": "uint256", "name": "investmentAmount", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isMinter", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lastPerformanceFeeTime", "outputs": [ { "internalType": "uint48", "name": "", "type": "uint48" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "manager", "outputs": [ { "internalType": "contract IOrigamiOTokenManager", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "toToken", "type": "address" } ], "name": "maxExit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "fromToken", "type": "address" } ], "name": "maxInvest", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxTotalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "mint", "outputs": [], "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": [ { "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": "address", "name": "account", "type": "address" } ], "name": "proposeNewOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "recoverToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "removeMinter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "reserveToken", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "reservesPerShare", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "reserves", "type": "uint256" } ], "name": "reservesToShares", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint48", "name": "_annualPerformanceFeeBps", "type": "uint48" } ], "name": "setAnnualPerformanceFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "allowedCaller", "type": "address" }, { "components": [ { "internalType": "bytes4", "name": "fnSelector", "type": "bytes4" }, { "internalType": "bool", "name": "allowed", "type": "bool" } ], "internalType": "struct IOrigamiElevatedAccess.ExplicitAccess[]", "name": "access", "type": "tuple[]" } ], "name": "setExplicitAccess", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_feeCollector", "type": "address" } ], "name": "setFeeCollector", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_manager", "type": "address" } ], "name": "setManager", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_maxTotalSupply", "type": "uint256" } ], "name": "setMaxTotalSupply", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_tokenPrices", "type": "address" } ], "name": "setTokenPrices", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "sharesToReserves", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokenPrices", "outputs": [ { "internalType": "contract ITokenPrices", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalReserves", "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": [], "name": "userALRange", "outputs": [ { "internalType": "uint128", "name": "", "type": "uint128" }, { "internalType": "uint128", "name": "", "type": "uint128" } ], "stateMutability": "view", "type": "function" } ]
6101606040523480156200001257600080fd5b5060405162005190380380620051908339810160408190526200003591620003c8565b858588828282808380604051806040016040528060018152602001603160f81b815250868681600390816200006b919062000522565b5060046200007a828262000522565b506200008c91508390506005620001e5565b610120526200009d816006620001e5565b61014052815160208084019190912060e052815190820120610100524660a0526200012b60e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c0525062000140816200021e565b50506001600d5550505061271065ffffffffffff8716111591506200017a905057604051633494a40d60e21b815260040160405180910390fd5b600f80546001600160a01b039485166001600160a01b03194265ffffffffffff908116600160d01b026001600160d01b0391909916600160a01b0216928716929092179690961781169590951790556010805492909316919093161790556011555062000648915050565b60006020835110156200020557620001fd836200029b565b905062000218565b8162000212848262000522565b5060ff90505b92915050565b6009546001600160a01b0316156200024957604051633006171960e21b815260040160405180910390fd5b6001600160a01b0381166200027957604051634726455360e11b8152600060048201526024015b60405180910390fd5b600980546001600160a01b0319166001600160a01b0392909216919091179055565b600080829050601f81511115620002c9578260405163305a27a960e01b8152600401620002709190620005ee565b8051620002d68262000623565b179392505050565b80516001600160a01b0381168114620002f657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200032e57818101518382015260200162000314565b50506000910152565b600082601f8301126200034957600080fd5b81516001600160401b0380821115620003665762000366620002fb565b604051601f8301601f19908116603f01168101908282118183101715620003915762000391620002fb565b81604052838152866020858801011115620003ab57600080fd5b620003be84602083016020890162000311565b9695505050505050565b600080600080600080600060e0888a031215620003e457600080fd5b620003ef88620002de565b60208901519097506001600160401b03808211156200040d57600080fd5b6200041b8b838c0162000337565b975060408a01519150808211156200043257600080fd5b50620004418a828b0162000337565b955050606088015165ffffffffffff811681146200045e57600080fd5b93506200046e60808901620002de565b92506200047e60a08901620002de565b915060c0880151905092959891949750929550565b600181811c90821680620004a857607f821691505b602082108103620004c957634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200051d57600081815260208120601f850160051c81016020861015620004f85750805b601f850160051c820191505b81811015620005195782815560010162000504565b5050505b505050565b81516001600160401b038111156200053e576200053e620002fb565b62000556816200054f845462000493565b84620004cf565b602080601f8311600181146200058e5760008415620005755750858301515b600019600386901b1c1916600185901b17855562000519565b600085815260208120601f198616915b82811015620005bf578886015182559484019460019091019084016200059e565b5085821015620005de5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208152600082518060208401526200060f81604085016020870162000311565b601f01601f19169190910160400192915050565b80516020808301519190811015620004c95760001960209190910360031b1b16919050565b60805160a05160c05160e051610100516101205161014051614aed620006a360003960006114850152600061145a015260006130370152600061300f01526000612f6a01526000612f9401526000612fbe0152614aed6000f3fe6080604052600436106103b85760003560e01c806395d89b41116101f2578063c415b95c1161010d578063dd62ed3e116100a0578063edf90acf1161006f578063edf90acf14610c34578063f4325d6714610c54578063f57092bd14610c69578063ff32b55c14610c8957600080fd5b8063dd62ed3e14610b75578063e664b02014610bbb578063eb6c1f3014610be9578063ebbc496514610c1f57600080fd5b8063d4da79b3116100dc578063d4da79b314610aea578063d505accf14610aff578063d8e5db5214610b1f578063daeccc7914610b3a57600080fd5b8063c415b95c14610a65578063c55dae6314610a85578063c5e6f99414610a9a578063d0ebdbe714610aca57600080fd5b8063a7229fd911610185578063b1f8100d11610154578063b1f8100d146109e5578063b5a2d9a914610a05578063be2f503914610a25578063bfccf0ec14610a4557600080fd5b8063a7229fd91461094c578063a9059cbb1461096c578063aa271e1a1461098c578063b1e1fca4146109c557600080fd5b8063a42dce80116101c1578063a42dce80146108ab578063a457c2d7146108cb578063a515b8ec146108eb578063a5c59ba61461091557600080fd5b806395d89b4114610841578063983b2d56146108565780639a6b27cf146108765780639dc29fac1461088b57600080fd5b80633644e515116102e257806370a08231116102755780638a83c9cd116102445780638a83c9cd146107d75780638c625c15146107ec5780638da5cb5b1461080c5780638f840ddd1461082c57600080fd5b806370a082311461071057806377e3b267146107465780637ecebe001461078f57806384b0196e146107af57600080fd5b8063415a1271116102b1578063415a127114610687578063481c6a75146106a75780634d8fea1f146106d95780636a1eb7b8146106ee57600080fd5b80633644e5151461061257806339509351146106275780633f3e4c111461064757806340c10f191461066757600080fd5b80631a0377d11161035a5780632ab4d052116103295780632ab4d0521461059e5780633092afd5146105b4578063313ce567146105d657806333378e31146105f257600080fd5b80631a0377d1146104f757806323b872dd14610525578063258294101461054557806327e66c621461058b57600080fd5b80630e5f8f96116103965780630e5f8f961461043b57806313da2d4a1461048f57806318160ddd146104cd5780631902848a146104e257600080fd5b806306fdde03146103bd578063095ea7b3146103e85780630c14935e14610418575b600080fd5b3480156103c957600080fd5b506103d2610ca9565b6040516103df9190613be8565b60405180910390f35b3480156103f457600080fd5b50610408610403366004613c10565b610d3b565b60405190151581526020016103df565b34801561042457600080fd5b5061042d610d55565b6040519081526020016103df565b34801561044757600080fd5b50600f54610478907a010000000000000000000000000000000000000000000000000000900465ffffffffffff1681565b60405165ffffffffffff90911681526020016103df565b34801561049b57600080fd5b506104a4610de6565b604080516fffffffffffffffffffffffffffffffff9384168152929091166020830152016103df565b3480156104d957600080fd5b5060025461042d565b3480156104ee57600080fd5b5061042d610e75565b34801561050357600080fd5b50610517610512366004613c3c565b610efa565b6040516103df929190613cb4565b34801561053157600080fd5b50610408610540366004613d34565b610ff1565b34801561055157600080fd5b5060408051808201909152600581527f302e322e3000000000000000000000000000000000000000000000000000000060208201526103d2565b61042d610599366004613d87565b611017565b3480156105aa57600080fd5b5061042d60115481565b3480156105c057600080fd5b506105d46105cf366004613dbc565b61104b565b005b3480156105e257600080fd5b50604051601281526020016103df565b3480156105fe57600080fd5b5061042d61060d366004613dd9565b611116565b34801561061e57600080fd5b5061042d6111a3565b34801561063357600080fd5b50610408610642366004613c10565b6111ad565b34801561065357600080fd5b506105d4610662366004613dd9565b6111ec565b34801561067357600080fd5b506105d4610682366004613c10565b61128b565b34801561069357600080fd5b5061042d6106a2366004613dbc565b6112e9565b3480156106b357600080fd5b50600e546001600160a01b03165b6040516001600160a01b0390911681526020016103df565b3480156106e557600080fd5b5061042d611335565b3480156106fa57600080fd5b506107036113a3565b6040516103df9190613df2565b34801561071c57600080fd5b5061042d61072b366004613dbc565b6001600160a01b031660009081526020819052604090205490565b34801561075257600080fd5b506103d26040518060400160405280600581526020017f302e322e3000000000000000000000000000000000000000000000000000000081525081565b34801561079b57600080fd5b5061042d6107aa366004613dbc565b61142e565b3480156107bb57600080fd5b506107c461144c565b6040516103df9796959493929190613e3f565b3480156107e357600080fd5b506107036114f1565b3480156107f857600080fd5b506105d4610807366004613ec9565b611554565b34801561081857600080fd5b506009546106c1906001600160a01b031681565b34801561083857600080fd5b5061042d611691565b34801561084d57600080fd5b506103d26116db565b34801561086257600080fd5b506105d4610871366004613dbc565b6116ea565b34801561088257600080fd5b506104086117b8565b34801561089757600080fd5b506105d46108a6366004613c10565b61183f565b3480156108b757600080fd5b506105d46108c6366004613dbc565b611894565b3480156108d757600080fd5b506104086108e6366004613c10565b6119a9565b3480156108f757600080fd5b50610900611a5e565b604080519283526020830191909152016103df565b34801561092157600080fd5b50600f546104789074010000000000000000000000000000000000000000900465ffffffffffff1681565b34801561095857600080fd5b506105d4610967366004613d34565b611ae5565b34801561097857600080fd5b50610408610987366004613c10565b611baf565b34801561099857600080fd5b506104086109a7366004613dbc565b6001600160a01b03166000908152600c602052604090205460ff1690565b3480156109d157600080fd5b506010546106c1906001600160a01b031681565b3480156109f157600080fd5b506105d4610a00366004613dbc565b611bbd565b348015610a1157600080fd5b5061042d610a20366004613dbc565b611ce6565b348015610a3157600080fd5b506105d4610a40366004613dbc565b611d32565b348015610a5157600080fd5b506105d4610a60366004613ef1565b611e47565b348015610a7157600080fd5b50600f546106c1906001600160a01b031681565b348015610a9157600080fd5b506106c161202f565b348015610aa657600080fd5b50610aaf6120b6565b604080519384526020840192909252908201526060016103df565b348015610ad657600080fd5b506105d4610ae5366004613dbc565b612150565b348015610af657600080fd5b50610408612265565b348015610b0b57600080fd5b506105d4610b1a366004613f79565b6122c8565b348015610b2b57600080fd5b5061042d610599366004613ff0565b348015610b4657600080fd5b50610408610b55366004614072565b600a60209081526000928352604080842090915290825290205460ff1681565b348015610b8157600080fd5b5061042d610b903660046140a7565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610bc757600080fd5b50610bdb610bd6366004613c3c565b61242c565b6040516103df9291906140d5565b348015610bf557600080fd5b50610bfe612516565b6040516fffffffffffffffffffffffffffffffff90911681526020016103df565b348015610c2b57600080fd5b506105d46125a1565b348015610c4057600080fd5b5061042d610c4f366004613dd9565b612655565b348015610c6057600080fd5b506106c16126a1565b348015610c7557600080fd5b5061042d610c84366004613ff0565b612704565b348015610c9557600080fd5b5061042d610ca4366004613d87565b6128a7565b606060038054610cb890614138565b80601f0160208091040260200160405190810160405280929190818152602001828054610ce490614138565b8015610d315780601f10610d0657610100808354040283529160200191610d31565b820191906000526020600020905b815481529060010190602001808311610d1457829003601f168201915b5050505050905090565b600033610d49818585612a81565b60019150505b92915050565b600f546000908190610d8d907a010000000000000000000000000000000000000000000000000000900465ffffffffffff16426141b4565b9050610de0610d9b60025490565b600f54610dc990849074010000000000000000000000000000000000000000900465ffffffffffff166141c7565b610dd96127106301e133806141c7565b6000612bd9565b91505090565b600e54604080517f13da2d4a000000000000000000000000000000000000000000000000000000008152815160009384936001600160a01b03909116926313da2d4a92600480830193928290030181865afa158015610e49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6d91906141fe565b915091509091565b600e546000906001600160a01b031663643b1e50610e956012600a61430c565b60016040518363ffffffff1660e01b8152600401610eb4929190614385565b602060405180830381865afa158015610ed1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef59190614399565b905090565b610f436040518060e0016040528060006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001606081525090565b600e546040517f1a0377d1000000000000000000000000000000000000000000000000000000008152600481018790526001600160a01b03868116602483015260448201869052606482018590526060921690631a0377d190608401600060405180830381865afa158015610fbc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610fe49190810190614539565b9097909650945050505050565b600033610fff858285612c74565b61100a858585612d06565b60019150505b9392505050565b60006040517f90a2caf200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611079336000357fffffffff0000000000000000000000000000000000000000000000000000000016612ef3565b6110af576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166000818152600c602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517fc93cfdd5d8f442c448a02ed11ccff64355643272c9f2be94b723f2181af1a8969190a250565b600e546040517f24b821ab0000000000000000000000000000000000000000000000000000000081526000916001600160a01b0316906324b821ab906111629085908590600401614385565b602060405180830381865afa15801561117f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4f9190614399565b6000610ef5612f5d565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190610d4990829086906111e790879061460f565b612a81565b61121a336000357fffffffff0000000000000000000000000000000000000000000000000000000016612ef3565b611250576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60118190556040518181527f0120f799fc820eabb910038e9cce6e8024add369b4d780181846e300df2844849060200160405180910390a150565b336000908152600c602052604090205460ff166112db576040517fe5ef2bd00000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b6112e58282613088565b5050565b600e546040517f415a12710000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092169063415a127190602401611162565b6000611365336000357fffffffff0000000000000000000000000000000000000000000000000000000016612ef3565b61139b576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef5613147565b600e54604080517f6a1eb7b800000000000000000000000000000000000000000000000000000000815290516060926001600160a01b031691636a1eb7b89160048083019260009291908290030181865afa158015611406573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ef59190810190614622565b6001600160a01b038116600090815260076020526040812054610d4f565b6000606080828080836114807f000000000000000000000000000000000000000000000000000000000000000060056131f5565b6114ab7f000000000000000000000000000000000000000000000000000000000000000060066131f5565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b600e54604080517f8a83c9cd00000000000000000000000000000000000000000000000000000000815290516060926001600160a01b031691638a83c9cd9160048083019260009291908290030181865afa158015611406573d6000803e3d6000fd5b611582336000357fffffffff0000000000000000000000000000000000000000000000000000000016612ef3565b6115b8576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6127108165ffffffffffff1611156115fc576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611604613147565b5060405165ffffffffffff821681527fceb20f7f0b19335681096ee1eaa9bb2a6ef5a9a69ba48b6b488e7b7eff2ef04d9060200160405180910390a1600f805465ffffffffffff90921674010000000000000000000000000000000000000000027fffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffff909216919091179055565b600e546040517f6026220d0000000000000000000000000000000000000000000000000000000081526000916001600160a01b031690636026220d90610eb49084906004016146b1565b606060048054610cb890614138565b611718336000357fffffffff0000000000000000000000000000000000000000000000000000000016612ef3565b61174e576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166000818152600c602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517f887003b0d91467e681b2ba1437748e2d1b6e9b0b1cb8be6541e6cdfc1b50eabc9190a250565b600e54604080517f9a6b27cf00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b031691639a6b27cf9160048083019260209291908290030181865afa15801561181b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef591906146cd565b336000908152600c602052604090205460ff1661188a576040517fe5ef2bd00000000000000000000000000000000000000000000000000000000081523360048201526024016112d2565b6112e582826132a0565b6118c2336000357fffffffff0000000000000000000000000000000000000000000000000000000016612ef3565b6118f8576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661193b576040517f8e4c8aa6000000000000000000000000000000000000000000000000000000008152600060048201526024016112d2565b6040516001600160a01b038216907f12e1d17016b94668449f97876f4a8d5cc2c19f314db337418894734037cc19d490600090a2600f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919083811015611a465760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016112d2565b611a538286868403612a81565b506001949350505050565b600e54604080517fa515b8ec000000000000000000000000000000000000000000000000000000008152815160009384936001600160a01b039091169263a515b8ec92600480830193928290030181865afa158015611ac1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6d91906146ea565b611b13336000357fffffffff0000000000000000000000000000000000000000000000000000000016612ef3565b611b49576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001600160a01b0316826001600160a01b03167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f909683604051611b8e91815260200190565b60405180910390a3611baa6001600160a01b0384168383613409565b505050565b600033610d49818585612d06565b611beb336000357fffffffff0000000000000000000000000000000000000000000000000000000016612ef3565b611c21576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611c6c576040517f8e4c8aa60000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016112d2565b600b546009546040516001600160a01b038085169381169216907f64420d4a41c6ed4de2bccbf33192eea18e576c5b23c79c3a722d4e9534c2e8d890600090a4600b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600e546040517fb5a2d9a90000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092169063b5a2d9a990602401611162565b611d60336000357fffffffff0000000000000000000000000000000000000000000000000000000016612ef3565b611d96576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611dd9576040517f8e4c8aa6000000000000000000000000000000000000000000000000000000008152600060048201526024016112d2565b6040516001600160a01b038216907f2781e03d8cf8be1845f40e150af1187b0cdb48dccd761a708f5e5b612a865d1d90600090a2601080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b611e75336000357fffffffff0000000000000000000000000000000000000000000000000000000016612ef3565b611eab576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038316611ef6576040517f8e4c8aa60000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016112d2565b604080518082019091526000808252602082015260005b8281101561202857838382818110611f2757611f2761470e565b905060400201803603810190611f3d919061473d565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001600160a01b03167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a46020828101516001600160a01b0387166000908152600a8352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790556120218161479a565b9050611f0d565b5050505050565b600e54604080517fc55dae6300000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163c55dae639160048083019260209291908290030181865afa158015612092573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef591906147b4565b600e546040517fa8e93cdb000000000000000000000000000000000000000000000000000000008152600091829182916001600160a01b03169063a8e93cdb906121049084906004016146b1565b606060405180830381865afa158015612121573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061214591906147d1565b925092509250909192565b61217e336000357fffffffff0000000000000000000000000000000000000000000000000000000016612ef3565b6121b4576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166121f7576040517f8e4c8aa6000000000000000000000000000000000000000000000000000000008152600060048201526024016112d2565b6040516001600160a01b038216907f60a0f5b9f9e81e98216071b85826681c796256fe3d1354ecb675580fba64fa6990600090a2600e80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600e54604080517fd4da79b300000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163d4da79b39160048083019260209291908290030181865afa15801561181b573d6000803e3d6000fd5b834211156123185760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e6500000060448201526064016112d2565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886123478c6134b2565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006123a2826134da565b905060006123b282878787613522565b9050896001600160a01b0316816001600160a01b0316146124155760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e6174757265000060448201526064016112d2565b6124208a8a8a612a81565b50505050505050505050565b6124756040518060e001604052806000815260200160006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001606081525090565b600e546040517fe664b020000000000000000000000000000000000000000000000000000000008152600481018790526001600160a01b0386811660248301526044820186905260648201859052606092169063e664b02090608401600060405180830381865afa1580156124ee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610fe491908101906147ff565b600e546040517feea2f45c0000000000000000000000000000000000000000000000000000000081526000916001600160a01b03169063eea2f45c906125609084906004016146b1565b602060405180830381865afa15801561257d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef59190614895565b600b546001600160a01b031633146125e5576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60095460405133916001600160a01b0316907f5cd6b24c0149d980c82592262b3a81294b39f8f6e3c004126aaf0828c787d55490600090a3600980547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600b80549091169055565b600e546040517f643b1e500000000000000000000000000000000000000000000000000000000081526000916001600160a01b03169063643b1e50906111629085908590600401614385565b600e54604080517ff4325d6700000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163f4325d679160048083019260209291908290030181865afa158015612092573d6000803e3d6000fd5b600061270e61354a565b8235600003612749576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216612794576040517f8e4c8aa60000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024016112d2565b600e546040517fc677e2750000000000000000000000000000000000000000000000000000000081526000916001600160a01b03169063c677e275906127e290339088908890600401614946565b60408051808303816000875af1158015612800573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061282491906146ea565b90925090506001600160a01b0383166128436040860160208701613dbc565b6040805187358152602081018690526001600160a01b03929092169133917f452a5afbe062050de33ff43d2f66cca3d37117d3c252e5980dbcce5c7931ce25910160405180910390a4801561289c5761289c33826132a0565b50610d4f6001600d55565b60006128b161354a565b81602001356000036128ef576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600e546001600160a01b03166129223382602086018035906129119088613dbc565b6001600160a01b03169291906135a3565b6040517fb07c63c70000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063b07c63c79061296990339087906004016149e1565b6020604051808303816000875af1158015612988573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ac9190614399565b91506129bb6020840184613dbc565b6001600160a01b0316336001600160a01b03167f27d6b86df7406aa09ba2f9db93e6b49838ee989212e76df0306d234475a5ddaa856020013585604051612a0c929190918252602082015260400190565b60405180910390a38115612a7157612a243383613088565b6011546002541115612a71576002546011546040517ff20d1ed9000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016112d2565b50612a7c6001600d55565b919050565b6001600160a01b038316612afc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016112d2565b6001600160a01b038216612b785760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016112d2565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000612be68585856135f4565b90506001826001811115612bfc57612bfc61431b565b03612c6c578280612c0f57612c0f614a6c565b84860915612c6c57600019811015612c2957600101612c6c565b6040517f63a057780000000000000000000000000000000000000000000000000000000081526004810186905260248101859052604481018490526064016112d2565b949350505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114612d005781811015612cf35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016112d2565b612d008484848403612a81565b50505050565b6001600160a01b038316612d825760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016112d2565b6001600160a01b038216612dfe5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016112d2565b6001600160a01b03831660009081526020819052604090205481811015612e8d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016112d2565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3612d00565b6009546000906001600160a01b038481169116148061101057506001600160a01b0383166000908152600a602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff169392505050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015612fb657507f000000000000000000000000000000000000000000000000000000000000000046145b15612fe057507f000000000000000000000000000000000000000000000000000000000000000090565b610ef5604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b6001600160a01b0382166130de5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016112d2565b80600260008282546130f0919061460f565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6000613151610d55565b905080156131a957600f546040518281526001600160a01b039091169081907f8ca882445572a0beb49b440f5a329364aa0678559e2511916cf49b557a43cff99060200160405180910390a26131a78183613088565b505b600f805479ffffffffffffffffffffffffffffffffffffffffffffffffffff167a0100000000000000000000000000000000000000000000000000004265ffffffffffff160217905590565b606060ff831461320f57613208836136e1565b9050610d4f565b81805461321b90614138565b80601f016020809104026020016040519081016040528092919081815260200182805461324790614138565b80156132945780601f1061326957610100808354040283529160200191613294565b820191906000526020600020905b81548152906001019060200180831161327757829003601f168201915b50505050509050610d4f565b6001600160a01b03821661331c5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016112d2565b6001600160a01b038216600090815260208190526040902054818110156133ab5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016112d2565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6040516001600160a01b038316602482015260448101829052611baa9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613720565b6001600160a01b03811660009081526007602052604090208054600181018255905b50919050565b6000610d4f6134e7612f5d565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b600080600061353387878787613808565b91509150613540816138cc565b5095945050505050565b6002600d540361359c5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016112d2565b6002600d55565b6040516001600160a01b0380851660248301528316604482015260648101829052612d009085907f23b872dd000000000000000000000000000000000000000000000000000000009060840161344e565b600080806000198587098587029250828110838203039150508060000361362e5783828161362457613624614a6c565b0492505050611010565b838110613678576040517f63a057780000000000000000000000000000000000000000000000000000000081526004810187905260248101869052604481018590526064016112d2565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b606060006136ee83613a34565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6000613775826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613a759092919063ffffffff16565b905080516000148061379657508080602001905181019061379691906146cd565b611baa5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016112d2565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561383f57506000905060036138c3565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613893573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166138bc576000600192509250506138c3565b9150600090505b94509492505050565b60008160048111156138e0576138e061431b565b036138e85750565b60018160048111156138fc576138fc61431b565b036139495760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016112d2565b600281600481111561395d5761395d61431b565b036139aa5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016112d2565b60038160048111156139be576139be61431b565b03613a315760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016112d2565b50565b600060ff8216601f811115610d4f576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060612c6c848460008585600080866001600160a01b03168587604051613a9c9190614a9b565b60006040518083038185875af1925050503d8060008114613ad9576040519150601f19603f3d011682016040523d82523d6000602084013e613ade565b606091505b5091509150613aef87838387613afa565b979650505050505050565b60608315613b69578251600003613b62576001600160a01b0385163b613b625760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016112d2565b5081612c6c565b612c6c8383815115613b7e5781518083602001fd5b8060405162461bcd60e51b81526004016112d29190613be8565b60005b83811015613bb3578181015183820152602001613b9b565b50506000910152565b60008151808452613bd4816020860160208601613b98565b601f01601f19169290920160200192915050565b6020815260006110106020830184613bbc565b6001600160a01b0381168114613a3157600080fd5b60008060408385031215613c2357600080fd5b8235613c2e81613bfb565b946020939093013593505050565b60008060008060808587031215613c5257600080fd5b843593506020850135613c6481613bfb565b93969395505050506040820135916060013590565b600081518084526020808501945080840160005b83811015613ca957815187529582019590820190600101613c8d565b509495945050505050565b604081526001600160a01b0383511660408201526020830151606082015260408301516080820152606083015160a0820152608083015160c082015260a083015160e0820152600060c084015160e0610100840152613d17610120840182613bbc565b90508281036020840152613d2b8185613c79565b95945050505050565b600080600060608486031215613d4957600080fd5b8335613d5481613bfb565b92506020840135613d6481613bfb565b929592945050506040919091013590565b600060e082840312156134d457600080fd5b600060208284031215613d9957600080fd5b813567ffffffffffffffff811115613db057600080fd5b612c6c84828501613d75565b600060208284031215613dce57600080fd5b813561101081613bfb565b600060208284031215613deb57600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b81811015613e335783516001600160a01b031683529284019291840191600101613e0e565b50909695505050505050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201526000613e7a60e0830189613bbc565b8281036040840152613e8c8189613bbc565b90508660608401526001600160a01b03861660808401528460a084015282810360c0840152613ebb8185613c79565b9a9950505050505050505050565b600060208284031215613edb57600080fd5b813565ffffffffffff8116811461101057600080fd5b600080600060408486031215613f0657600080fd5b8335613f1181613bfb565b9250602084013567ffffffffffffffff80821115613f2e57600080fd5b818601915086601f830112613f4257600080fd5b813581811115613f5157600080fd5b8760208260061b8501011115613f6657600080fd5b6020830194508093505050509250925092565b600080600080600080600060e0888a031215613f9457600080fd5b8735613f9f81613bfb565b96506020880135613faf81613bfb565b95506040880135945060608801359350608088013560ff81168114613fd357600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561400357600080fd5b823567ffffffffffffffff81111561401a57600080fd5b61402685828601613d75565b925050602083013561403781613bfb565b809150509250929050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114612a7c57600080fd5b6000806040838503121561408557600080fd5b823561409081613bfb565b915061409e60208401614042565b90509250929050565b600080604083850312156140ba57600080fd5b82356140c581613bfb565b9150602083013561403781613bfb565b60408152825160408201526001600160a01b03602084015116606082015260408301516080820152606083015160a0820152608083015160c082015260a083015160e0820152600060c084015160e0610100840152613d17610120840182613bbc565b600181811c9082168061414c57607f821691505b6020821081036134d4577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610d4f57610d4f614185565b8082028115828204841417610d4f57610d4f614185565b80516fffffffffffffffffffffffffffffffff81168114612a7c57600080fd5b6000806040838503121561421157600080fd5b61421a836141de565b915061409e602084016141de565b600181815b8085111561426357816000190482111561424957614249614185565b8085161561425657918102915b93841c939080029061422d565b509250929050565b60008261427a57506001610d4f565b8161428757506000610d4f565b816001811461429d57600281146142a7576142c3565b6001915050610d4f565b60ff8411156142b8576142b8614185565b50506001821b610d4f565b5060208310610133831016604e8410600b84101617156142e6575081810a610d4f565b6142f08383614228565b806000190482111561430457614304614185565b029392505050565b600061101060ff84168361426b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60028110614381577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b82815260408101611010602083018461434a565b6000602082840312156143ab57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160e0810167ffffffffffffffff81118282101715614404576144046143b2565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715614433576144336143b2565b604052919050565b8051612a7c81613bfb565b600082601f83011261445757600080fd5b815167ffffffffffffffff811115614471576144716143b2565b6144846020601f19601f8401160161440a565b81815284602083860101111561449957600080fd5b612c6c826020830160208701613b98565b600067ffffffffffffffff8211156144c4576144c46143b2565b5060051b60200190565b600082601f8301126144df57600080fd5b815160206144f46144ef836144aa565b61440a565b82815260059290921b8401810191818101908684111561451357600080fd5b8286015b8481101561452e5780518352918301918301614517565b509695505050505050565b6000806040838503121561454c57600080fd5b825167ffffffffffffffff8082111561456457600080fd5b9084019060e0828703121561457857600080fd5b6145806143e1565b6145898361443b565b81526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015260c0830151828111156145cf57600080fd5b6145db88828601614446565b60c08301525060208601519094509150808211156145f857600080fd5b50614605858286016144ce565b9150509250929050565b80820180821115610d4f57610d4f614185565b6000602080838503121561463557600080fd5b825167ffffffffffffffff81111561464c57600080fd5b8301601f8101851361465d57600080fd5b805161466b6144ef826144aa565b81815260059190911b8201830190838101908783111561468a57600080fd5b928401925b82841015613aef5783516146a281613bfb565b8252928401929084019061468f565b60208101610d4f828461434a565b8015158114613a3157600080fd5b6000602082840312156146df57600080fd5b8151611010816146bf565b600080604083850312156146fd57600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006040828403121561474f57600080fd5b6040516040810181811067ffffffffffffffff82111715614772576147726143b2565b60405261477e83614042565b8152602083013561478e816146bf565b60208201529392505050565b600060001982036147ad576147ad614185565b5060010190565b6000602082840312156147c657600080fd5b815161101081613bfb565b6000806000606084860312156147e657600080fd5b8351925060208401519150604084015190509250925092565b6000806040838503121561481257600080fd5b825167ffffffffffffffff8082111561482a57600080fd5b9084019060e0828703121561483e57600080fd5b6148466143e1565b825181526148566020840161443b565b602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015260c0830151828111156145cf57600080fd5b6000602082840312156148a757600080fd5b611010826141de565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126148e557600080fd5b830160208101925035905067ffffffffffffffff81111561490557600080fd5b80360382131561491457600080fd5b9250929050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b60006001600160a01b0380861683526060602084015284356060840152602085013561497181613bfb565b81811660808501525050604084013560a0830152606084013560c0830152608084013560e083015260a08401356101008301526149b160c08501856148b0565b60e06101208501526149c86101408501828461491b565b92505050612c6c60408301846001600160a01b03169052565b60006001600160a01b038085168352604060208401528335614a0281613bfb565b818116604085015250506020830135606083015260408301356080830152606083013560a0830152608083013560c083015260a083013560e0830152614a4b60c08401846148b0565b60e0610100850152614a626101208501828461491b565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008251614aad818460208701613b98565b919091019291505056fea2646970667358221220dbac1788d7473714fd5f299816b122b80b923ebf71042ab9cd80fb7e2972513964736f6c63430008130033000000000000000000000000b20aae0fe007519b7ce6f090a2ab8353b3da5d8000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000003e8000000000000000000000000781b4c57100738095222bd92d37b07ed034ab69600000000000000000000000076cf788606f3d968b93b8a243d0e185c974ee40700000000000000000000000000000000000000000000021e19e0c9bab240000000000000000000000000000000000000000000000000000000000000000000124f726967616d69206c6f762d555344652d620000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a6c6f762d555344652d6200000000000000000000000000000000000000000000