[ { "inputs": [ { "internalType": "address", "name": "royaltyReceiver_", "type": "address" }, { "internalType": "uint96", "name": "royaltyFeeNumerator_", "type": "uint96" }, { "internalType": "string", "name": "tokenName_", "type": "string" }, { "internalType": "string", "name": "tokenSymbol_", "type": "string" }, { "internalType": "string", "name": "contractURI_", "type": "string" }, { "internalType": "string", "name": "baseURI_", "type": "string" }, { "internalType": "string", "name": "version_", "type": "string" }, { "internalType": "bytes32", "name": "root_", "type": "bytes32" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "CreatorTokenBase__InvalidTransferValidatorContract", "type": "error" }, { "inputs": [], "name": "CreatorTokenBase__SetTransferValidatorFirst", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ID_CLAIMED", "type": "error" }, { "inputs": [], "name": "INVALID_PROOF", "type": "error" }, { "inputs": [], "name": "InvalidShortString", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "NONEXISTENT_ID", "type": "error" }, { "inputs": [], "name": "ShouldNotMintToBurnAddress", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "str", "type": "string" } ], "name": "StringTooLong", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "newBaseURI", "type": "string" } ], "name": "BaseURIUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "newContractURI", "type": "string" } ], "name": "ContractURIUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "DefaultRoyaltySet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "delegator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "fromDelegate", "type": "address" }, { "indexed": true, "internalType": "address", "name": "toDelegate", "type": "address" } ], "name": "DelegateChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "delegate", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "previousBalance", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newBalance", "type": "uint256" } ], "name": "DelegateVotesChanged", "type": "event" }, { "anonymous": false, "inputs": [], "name": "EIP712DomainChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "MetadataUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "TokenRoyaltySet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldValidator", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newValidator", "type": "address" } ], "name": "TransferValidatorUpdated", "type": "event" }, { "inputs": [], "name": "CLOCK_MODE", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEFAULT_OPERATOR_WHITELIST_ID", "outputs": [ { "internalType": "uint120", "name": "", "type": "uint120" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEFAULT_TRANSFER_SECURITY_LEVEL", "outputs": [ { "internalType": "enum TransferSecurityLevels", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEFAULT_TRANSFER_VALIDATOR", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32[]", "name": "proof", "type": "bytes32[]" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "claim", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "clock", "outputs": [ { "internalType": "uint48", "name": "", "type": "uint48" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "contractURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "delegatee", "type": "address" } ], "name": "delegate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "delegatee", "type": "address" }, { "internalType": "uint256", "name": "nonce", "type": "uint256" }, { "internalType": "uint256", "name": "expiry", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "delegateBySig", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "delegates", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "timepoint", "type": "uint256" } ], "name": "getPastTotalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "timepoint", "type": "uint256" } ], "name": "getPastVotes", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getPermittedContractReceivers", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getSecurityPolicy", "outputs": [ { "components": [ { "internalType": "enum TransferSecurityLevels", "name": "transferSecurityLevel", "type": "uint8" }, { "internalType": "uint120", "name": "operatorWhitelistId", "type": "uint120" }, { "internalType": "uint120", "name": "permittedContractReceiversId", "type": "uint120" } ], "internalType": "struct CollectionSecurityPolicy", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getTransferValidator", "outputs": [ { "internalType": "contract ICreatorTokenTransferValidator", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getVotes", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getWhitelistedOperators", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "isContractReceiverPermitted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isOperatorWhitelisted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "caller", "type": "address" }, { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" } ], "name": "isTransferAllowed", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32[]", "name": "proof", "type": "bytes32[]" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "string", "name": "metadata", "type": "string" } ], "name": "issue", "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": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "root", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "newBaseURI", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "newContractURI", "type": "string" } ], "name": "setContractURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "setDefaultRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "enum TransferSecurityLevels", "name": "level", "type": "uint8" }, { "internalType": "uint120", "name": "operatorWhitelistId", "type": "uint120" }, { "internalType": "uint120", "name": "permittedContractReceiversAllowlistId", "type": "uint120" } ], "name": "setToCustomSecurityPolicy", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "validator", "type": "address" }, { "internalType": "enum TransferSecurityLevels", "name": "level", "type": "uint8" }, { "internalType": "uint120", "name": "operatorWhitelistId", "type": "uint120" }, { "internalType": "uint120", "name": "permittedContractReceiversAllowlistId", "type": "uint120" } ], "name": "setToCustomValidatorAndSecurityPolicy", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "setToDefaultSecurityPolicy", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "setTokenRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "string", "name": "_tokenURI", "type": "string" } ], "name": "setTokenURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "transferValidator_", "type": "address" } ], "name": "setTransferValidator", "outputs": [], "stateMutability": "nonpayable", "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": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
6101806040523480156200001257600080fd5b5060405162004fa238038062004fa283398101604081905262000035916200048e565b878787848189600062000049838262000630565b50600162000058828262000630565b506200006a915083905060066200015d565b610120526200007b8160076200015d565b61014052815160208084019190912060e052815190820120610100524660a0526200010960e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c0526200011d3362000196565b620001298282620001e8565b505061016081905260116200013f848262000630565b5060106200014e858262000630565b50505050505050505062000756565b60006020835110156200017d5762000175836200023f565b905062000190565b816200018a848262000630565b5060ff90505b92915050565b600c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b620001f482826200028b565b6040516001600160601b03821681526001600160a01b038316907f8a8bae378cb731c5c40b632330c6836c2f916f48edb967699c86736f9a6a76ef9060200160405180910390a25050565b600080829050601f8151111562000276578260405163305a27a960e01b81526004016200026d9190620006fc565b60405180910390fd5b8051620002838262000731565b179392505050565b6127106001600160601b0382161115620002fb5760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b60648201526084016200026d565b6001600160a01b038216620003535760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c69642072656365697665720000000000000060448201526064016200026d565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600e55565b80516001600160a01b0381168114620003a457600080fd5b919050565b80516001600160601b0381168114620003a457600080fd5b634e487b7160e01b600052604160045260246000fd5b60005b83811015620003f4578181015183820152602001620003da565b50506000910152565b600082601f8301126200040f57600080fd5b81516001600160401b03808211156200042c576200042c620003c1565b604051601f8301601f19908116603f01168101908282118183101715620004575762000457620003c1565b816040528381528660208588010111156200047157600080fd5b62000484846020830160208901620003d7565b9695505050505050565b600080600080600080600080610100898b031215620004ac57600080fd5b620004b7896200038c565b9750620004c760208a01620003a9565b60408a01519097506001600160401b0380821115620004e557600080fd5b620004f38c838d01620003fd565b975060608b01519150808211156200050a57600080fd5b620005188c838d01620003fd565b965060808b01519150808211156200052f57600080fd5b6200053d8c838d01620003fd565b955060a08b01519150808211156200055457600080fd5b620005628c838d01620003fd565b945060c08b01519150808211156200057957600080fd5b50620005888b828c01620003fd565b92505060e089015190509295985092959890939650565b600181811c90821680620005b457607f821691505b602082108103620005d557634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200062b576000816000526020600020601f850160051c81016020861015620006065750805b601f850160051c820191505b81811015620006275782815560010162000612565b5050505b505050565b81516001600160401b038111156200064c576200064c620003c1565b62000664816200065d84546200059f565b84620005db565b602080601f8311600181146200069c5760008415620006835750858301515b600019600386901b1c1916600185901b17855562000627565b600085815260208120601f198616915b82811015620006cd57888601518255948401946001909101908401620006ac565b5085821015620006ec5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208152600082518060208401526200071d816040850160208701620003d7565b601f01601f19169190910160400192915050565b80516020808301519190811015620005d55760001960209190910360031b1b16919050565b60805160a05160c05160e051610100516101205161014051610160516147d8620007ca6000396000818161072a01528181610edc0152611b54015260006114880152600061145d0152600061225f0152600061223701526000612192015260006121bc015260006121e601526147d86000f3fe608060405234801561001057600080fd5b506004361061030c5760003560e01c80636c0360eb1161019d578063a22cb465116100e9578063ca21b177116100a2578063e985e9c51161007c578063e985e9c5146106e9578063ebf0c71714610725578063f2fde38b1461074c578063fd762d921461075f57600080fd5b8063ca21b177146106c6578063d007af5c146106d9578063e8a3d485146106e157600080fd5b8063a22cb46514610652578063a9fc664e14610665578063b88d4fde14610678578063be537f431461068b578063c3cda520146106a0578063c87b56dd146106b357600080fd5b80638da5cb5b11610156578063938e3d7b11610130578063938e3d7b1461061157806395d89b41146106245780639ab24eb01461062c5780639d645a441461063f57600080fd5b80638da5cb5b146105ce5780638e539e8c146105df57806391ddadf4146105f257600080fd5b80636c0360eb146105755780636c3b86991461057d57806370a0823114610585578063715018a6146105985780637ecebe00146105a057806384b0196e146105b357600080fd5b80633644e5151161025c57806355f804b3116102155780635c19a95c116101ef5780635c19a95c1461051c5780635d4c1d461461052f578063613471621461054f5780636352211e1461056257600080fd5b806355f804b3146104ca578063587cde1e146104dd5780635944c7531461050957600080fd5b80633644e5151461045e5780633a46b1a81461047457806342842e0e14610487578063495c8bf91461049a5780634b67a9f7146104af5780634bf5d7e9146104c257600080fd5b8063098144d4116102c95780631c33b328116102a35780631c33b328146103f157806323b872dd146104065780632a55205a146104195780632e8da8291461044b57600080fd5b8063098144d4146103ba578063162094c4146103cb5780631b25b077146103de57600080fd5b8063014635461461031157806301ffc9a71461034757806304634d8d1461036a57806306fdde031461037f578063081812fc14610394578063095ea7b3146103a7575b600080fd5b61032a71721c310194ccfc01e523fc93c9cccfa2a0ac81565b6040516001600160a01b0390911681526020015b60405180910390f35b61035a61035536600461389c565b610772565b604051901515815260200161033e565b61037d6103783660046138ea565b610783565b005b610387610799565b60405161033e919061396f565b61032a6103a2366004613982565b61082b565b61037d6103b536600461399b565b610852565b600d546001600160a01b031661032a565b61037d6103d9366004613a84565b61096c565b61035a6103ec366004613aca565b6109ee565b6103f9600181565b60405161033e9190613b4d565b61037d610414366004613b5b565b610a87565b61042c610427366004613b9c565b610ab8565b604080516001600160a01b03909316835260208301919091520161033e565b61035a610459366004613bbe565b610b64565b610466610c70565b60405190815260200161033e565b61046661048236600461399b565b610c7f565b61037d610495366004613b5b565b610d10565b6104a2610d2b565b60405161033e9190613bdb565b61037d6104bd366004613cba565b610e37565b610387610f48565b61037d6104d8366004613d3b565b610fe0565b61032a6104eb366004613bbe565b6001600160a01b039081166000908152600860205260409020541690565b61037d610517366004613dac565b611027565b61037d61052a366004613bbe565b61103a565b610537600181565b6040516001600160781b03909116815260200161033e565b61037d61055d366004613e0c565b611045565b61032a610570366004613982565b6111b0565b610387611210565b61037d61129e565b610466610593366004613bbe565b611397565b61037d61141d565b6104666105ae366004613bbe565b611431565b6105bb61144f565b60405161033e9796959493929190613e4c565b600c546001600160a01b031661032a565b6104666105ed366004613982565b6114d8565b6105fa611552565b60405165ffffffffffff909116815260200161033e565b61037d61061f366004613d3b565b61155d565b6103876115a4565b61046661063a366004613bbe565b6115b3565b61035a61064d366004613bbe565b6115d4565b61037d610660366004613ef3565b61169c565b61037d610673366004613bbe565b6116a7565b61037d610686366004613f2c565b6117c8565b6106936117fa565b60405161033e9190613f9f565b61037d6106ae366004613fdb565b6118b5565b6103876106c1366004613982565b6119e2565b61037d6106d436600461403d565b611ae2565b6104a2611ba0565b610387611c59565b61035a6106f7366004614085565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6104667f000000000000000000000000000000000000000000000000000000000000000081565b61037d61075a366004613bbe565b611c66565b61037d61076d3660046140b3565b611cdf565b600061077d82611dde565b92915050565b61078b611e03565b6107958282611e5d565b5050565b6060600080546107a89061410f565b80601f01602080910402602001604051908101604052809291908181526020018280546107d49061410f565b80156108215780601f106107f657610100808354040283529160200191610821565b820191906000526020600020905b81548152906001019060200180831161080457829003601f168201915b5050505050905090565b600061083682611eb2565b506000908152600460205260409020546001600160a01b031690565b600061085d826111b0565b9050806001600160a01b0316836001600160a01b0316036108cf5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806108eb57506108eb81336106f7565b61095d5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016108c6565b6109678383611f02565b505050565b610974611e03565b61097d82611f70565b61099d57604051630bf772e960e01b8152600481018390526024016108c6565b60008281526012602052604090206109b58282614193565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7906020015b60405180910390a15050565b600d546000906001600160a01b031615610a7c57600d5460405163050bf71960e31b81526001600160a01b038681166004830152858116602483015284811660448301529091169063285fb8c89060640160006040518083038186803b158015610a5757600080fd5b505afa925050508015610a68575060015b610a7457506000610a80565b506001610a80565b5060015b9392505050565b610a913382611f8d565b610aad5760405162461bcd60e51b81526004016108c690614252565b61096783838361200c565b6000828152600f602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b0316928201929092528291610b2d575060408051808201909152600e546001600160a01b0381168252600160a01b90046001600160601b031660208201525b602081015160009061271090610b4c906001600160601b0316876142b5565b610b5691906142e2565b915196919550909350505050565b600d546000906001600160a01b031615610c6857600d54604051635caaa2a960e11b81523060048201526001600160a01b039091169063d72dde5e90829063b955455290602401606060405180830381865afa158015610bc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bec9190614304565b602001516040516001600160e01b031960e084901b1681526001600160781b0390911660048201526001600160a01b03851660248201526044015b602060405180830381865afa158015610c44573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077d9190614375565b506000919050565b6000610c7a612185565b905090565b6000610c89611552565b65ffffffffffff168210610cd65760405162461bcd60e51b81526020600482015260146024820152730566f7465733a20667574757265206c6f6f6b75760641b60448201526064016108c6565b610d00610ce2836122b0565b6001600160a01b038516600090815260096020526040902090612319565b6001600160e01b03169392505050565b610967838383604051806020016040528060008152506117c8565b600d546060906001600160a01b031615610e2457600d54604051635caaa2a960e11b81523060048201526001600160a01b0390911690633fe5df9990829063b955455290602401606060405180830381865afa158015610d8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db39190614304565b602001516040516001600160e01b031960e084901b1681526001600160781b0390911660048201526024015b600060405180830381865afa158015610dfc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c7a9190810190614392565b5060408051600081526020810190915290565b610e3f611e03565b604080516001600160a01b038516602082015290810183905260009060600160408051601f1981840301815282825280516020918201209083015201604051602081830303815290604052805190602001209050610e9c83611f70565b15610ed65782610eab846111b0565b60405163285204df60e01b815260048101929092526001600160a01b031660248201526044016108c6565b610f01857f0000000000000000000000000000000000000000000000000000000000000000836123ce565b610f1e5760405163712eb08760e01b815260040160405180910390fd5b6000838152601260205260409020610f368382614193565b50610f4184846123e4565b5050505050565b606043610f53611552565b65ffffffffffff1614610fa85760405162461bcd60e51b815260206004820152601860248201527f566f7465733a2062726f6b656e20636c6f636b206d6f6465000000000000000060448201526064016108c6565b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b610fe8611e03565b6011610ff5828483614420565b507f6741b2fc379fad678116fe3d4d4b9a1a184ab53ba36b86ad0fa66340b1ab41ad82826040516109e29291906144df565b61102f611e03565b6109678383836123fe565b336107958183612458565b61104d611e03565b6000611061600d546001600160a01b031690565b90506001600160a01b03811661108a57604051631cffe3dd60e11b815260040160405180910390fd5b604051630368065360e61b81526001600160a01b0382169063da0194c0906110b8903090889060040161450e565b600060405180830381600087803b1580156110d257600080fd5b505af11580156110e6573d6000803e3d6000fd5b5050604051631182550160e11b81526001600160a01b0384169250632304aa029150611118903090879060040161452b565b600060405180830381600087803b15801561113257600080fd5b505af1158015611146573d6000803e3d6000fd5b505060405163235d10c560e21b81526001600160a01b0384169250638d7443149150611178903090869060040161452b565b600060405180830381600087803b15801561119257600080fd5b505af11580156111a6573d6000803e3d6000fd5b5050505050505050565b6000818152600260205260408120546001600160a01b03168061077d5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016108c6565b6011805461121d9061410f565b80601f01602080910402602001604051908101604052809291908181526020018280546112499061410f565b80156112965780601f1061126b57610100808354040283529160200191611296565b820191906000526020600020905b81548152906001019060200180831161127957829003601f168201915b505050505081565b6112a6611e03565b6112c171721c310194ccfc01e523fc93c9cccfa2a0ac6116a7565b604051630368065360e61b815271721c310194ccfc01e523fc93c9cccfa2a0ac9063da0194c0906112f990309060019060040161450e565b600060405180830381600087803b15801561131357600080fd5b505af1158015611327573d6000803e3d6000fd5b5050604051631182550160e11b815271721c310194ccfc01e523fc93c9cccfa2a0ac9250632304aa02915061136390309060019060040161452b565b600060405180830381600087803b15801561137d57600080fd5b505af1158015611391573d6000803e3d6000fd5b50505050565b60006001600160a01b0382166114015760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016108c6565b506001600160a01b031660009081526003602052604090205490565b611425611e03565b61142f60006124ca565b565b6001600160a01b0381166000908152600b602052604081205461077d565b6000606080828080836114837f0000000000000000000000000000000000000000000000000000000000000000600661251c565b6114ae7f0000000000000000000000000000000000000000000000000000000000000000600761251c565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b60006114e2611552565b65ffffffffffff16821061152f5760405162461bcd60e51b81526020600482015260146024820152730566f7465733a20667574757265206c6f6f6b75760641b60448201526064016108c6565b61154361153b836122b0565b600a90612319565b6001600160e01b031692915050565b6000610c7a436125c7565b611565611e03565b6010611572828483614420565b507f905d981207a7d0b6c62cc46ab0be2a076d0298e4a86d0ab79882dbd01ac3737882826040516109e29291906144df565b6060600180546107a89061410f565b6001600160a01b03811660009081526009602052604081206115439061262e565b600d546000906001600160a01b031615610c6857600d54604051635caaa2a960e11b81523060048201526001600160a01b0390911690639445f53090829063b955455290602401606060405180830381865afa158015611638573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061165c9190614304565b60409081015190516001600160e01b031960e084901b1681526001600160781b0390911660048201526001600160a01b0385166024820152604401610c27565b610795338383612668565b6116af611e03565b60006001600160a01b0382163b1561172a576040516301ffc9a760e01b8152600060048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa925050508015611722575060408051601f3d908101601f1916820190925261171f91810190614375565b60015b1561172a5790505b6001600160a01b03821615801590611740575080155b1561175e576040516332483afb60e01b815260040160405180910390fd5b600d54604080516001600160a01b03928316815291841660208301527fcc5dc080ff977b3c3a211fa63ab74f90f658f5ba9d3236e92c8f59570f442aac910160405180910390a150600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6117d23383611f8d565b6117ee5760405162461bcd60e51b81526004016108c690614252565b6113918484848461272e565b6040805160608101825260008082526020820181905291810191909152600d546001600160a01b03161561189457600d54604051635caaa2a960e11b81523060048201526001600160a01b039091169063b955455290602401606060405180830381865afa158015611870573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7a9190614304565b50604080516060810182526000808252602082018190529181019190915290565b834211156119055760405162461bcd60e51b815260206004820152601860248201527f566f7465733a207369676e61747572652065787069726564000000000000000060448201526064016108c6565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b03881691810191909152606081018690526080810185905260009061197f906119779060a00160405160208183030381529060405280519060200120612761565b85858561278e565b905061198a816127b6565b86146119cf5760405162461bcd60e51b8152602060048201526014602482015273566f7465733a20696e76616c6964206e6f6e636560601b60448201526064016108c6565b6119d98188612458565b50505050505050565b60606119ed82611f70565b611a0d57604051630bf772e960e01b8152600481018390526024016108c6565b60008281526012602052604081208054611a269061410f565b80601f0160208091040260200160405190810160405280929190818152602001828054611a529061410f565b8015611a9f5780601f10611a7457610100808354040283529160200191611a9f565b820191906000526020600020905b815481529060010190602001808311611a8257829003601f168201915b50505050509050805160000361077d576011611aba846127de565b604051602001611acb92919061454d565b604051602081830303815290604052915050919050565b604080516001600160a01b038416602082015290810182905260009060600160408051601f1981840301815282825280516020918201209083015201604051602081830303815290604052805190602001209050611b3f82611f70565b15611b4e5781610eab836111b0565b611b79847f0000000000000000000000000000000000000000000000000000000000000000836123ce565b611b965760405163712eb08760e01b815260040160405180910390fd5b61139183836123e4565b600d546060906001600160a01b031615610e2457600d54604051635caaa2a960e11b81523060048201526001600160a01b03909116906317e94a6c90829063b955455290602401606060405180830381865afa158015611c04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c289190614304565b60409081015190516001600160e01b031960e084901b1681526001600160781b039091166004820152602401610ddf565b6010805461121d9061410f565b611c6e611e03565b6001600160a01b038116611cd35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108c6565b611cdc816124ca565b50565b611ce7611e03565b611cf0846116a7565b604051630368065360e61b81526001600160a01b0385169063da0194c090611d1e903090879060040161450e565b600060405180830381600087803b158015611d3857600080fd5b505af1158015611d4c573d6000803e3d6000fd5b5050604051631182550160e11b81526001600160a01b0387169250632304aa029150611d7e903090869060040161452b565b600060405180830381600087803b158015611d9857600080fd5b505af1158015611dac573d6000803e3d6000fd5b505060405163235d10c560e21b81526001600160a01b0387169250638d7443149150611178903090859060040161452b565b60006001600160e01b0319821663152a902d60e11b148061077d575061077d82612870565b600c546001600160a01b0316331461142f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c6565b611e678282612895565b6040516001600160601b03821681526001600160a01b038316907f8a8bae378cb731c5c40b632330c6836c2f916f48edb967699c86736f9a6a76ef9060200160405180910390a25050565b611ebb81611f70565b611cdc5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016108c6565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611f37826111b0565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000908152600260205260409020546001600160a01b0316151590565b600080611f99836111b0565b9050806001600160a01b0316846001600160a01b03161480611fe057506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806120045750836001600160a01b0316611ff98461082b565b6001600160a01b0316145b949350505050565b826001600160a01b031661201f826111b0565b6001600160a01b0316146120455760405162461bcd60e51b81526004016108c6906145e4565b6001600160a01b0382166120a75760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016108c6565b6120b4838383600161294f565b826001600160a01b03166120c7826111b0565b6001600160a01b0316146120ed5760405162461bcd60e51b81526004016108c6906145e4565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a46109678383836001612976565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156121de57507f000000000000000000000000000000000000000000000000000000000000000046145b1561220857507f000000000000000000000000000000000000000000000000000000000000000090565b610c7a604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600063ffffffff8211156123155760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b60648201526084016108c6565b5090565b815460009081816005811115612376576000612334846129a5565b61233e9085614629565b60008881526020902090915081015463ffffffff908116908716101561236657809150612374565b61237181600161463c565b92505b505b600061238487878585612a8d565b905080156123c0576123a98761239b600184614629565b600091825260209091200190565b5464010000000090046001600160e01b03166123c3565b60005b979650505050505050565b6000826123db8584612aeb565b14949350505050565b610795828260405180602001604052806000815250612b26565b612409838383612b59565b6040516001600160601b03821681526001600160a01b0383169084907f7f5b076c952c0ec86e5425963c1326dd0f03a3595c19f81d765e8ff559a6e33c906020015b60405180910390a3505050565b6001600160a01b0382811660008181526008602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461096781836124c586612c24565b612c2f565b600c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b606060ff83146125365761252f83612d9b565b905061077d565b8180546125429061410f565b80601f016020809104026020016040519081016040528092919081815260200182805461256e9061410f565b80156125bb5780601f10612590576101008083540402835291602001916125bb565b820191906000526020600020905b81548152906001019060200180831161259e57829003601f168201915b5050505050905061077d565b600065ffffffffffff8211156123155760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b60648201526084016108c6565b8054600090801561265f576126488361239b600184614629565b5464010000000090046001600160e01b0316610a80565b60009392505050565b816001600160a01b0316836001600160a01b0316036126c95760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016108c6565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910161244b565b61273984848461200c565b61274584848484612dda565b6113915760405162461bcd60e51b81526004016108c69061464f565b600061077d61276e612185565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600061279f87878787612ed8565b915091506127ac81612f9c565b5095945050505050565b6001600160a01b0381166000908152600b602052604090208054600181018255905b50919050565b606060006127eb836130e6565b60010190506000816001600160401b0381111561280a5761280a6139c7565b6040519080825280601f01601f191660200182016040528015612834576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461283e57509392505050565b60006001600160e01b031982166310c8aba560e31b148061077d575061077d826131be565b6127106001600160601b03821611156128c05760405162461bcd60e51b81526004016108c6906146a1565b6001600160a01b0382166129165760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c69642072656365697665720000000000000060448201526064016108c6565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600e55565b60005b81811015610f415761296e8585612969848761463c565b61320e565b600101612952565b60005b81811015612998576129908585612969848761463c565b600101612979565b5061139184848484613264565b6000816000036129b757506000919050565b600060016129c484613274565b901c6001901b905060018184816129dd576129dd6142cc565b048201901c905060018184816129f5576129f56142cc565b048201901c90506001818481612a0d57612a0d6142cc565b048201901c90506001818481612a2557612a256142cc565b048201901c90506001818481612a3d57612a3d6142cc565b048201901c90506001818481612a5557612a556142cc565b048201901c90506001818481612a6d57612a6d6142cc565b048201901c9050610a8081828581612a8757612a876142cc565b04613308565b60005b81831015612ae3576000612aa4848461331e565b60008781526020902090915063ffffffff86169082015463ffffffff161115612acf57809250612add565b612ada81600161463c565b93505b50612a90565b509392505050565b600081815b8451811015612ae357612b1c82868381518110612b0f57612b0f6146eb565b6020026020010151613339565b9150600101612af0565b612b308383613368565b612b3d6000848484612dda565b6109675760405162461bcd60e51b81526004016108c69061464f565b6127106001600160601b0382161115612b845760405162461bcd60e51b81526004016108c6906146a1565b6001600160a01b038216612bda5760405162461bcd60e51b815260206004820152601b60248201527f455243323938313a20496e76616c696420706172616d6574657273000000000060448201526064016108c6565b6040805180820182526001600160a01b0393841681526001600160601b0392831660208083019182526000968752600f90529190942093519051909116600160a01b029116179055565b600061077d82611397565b816001600160a01b0316836001600160a01b031614158015612c515750600081115b15610967576001600160a01b03831615612cf9576001600160a01b03831660009081526009602052604081208190612c94906134ed612c8f866134f9565b613562565b6001600160e01b031691506001600160e01b03169150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051612cee929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615610967576001600160a01b03821660009081526009602052604081208190612d32906135ab612c8f866134f9565b6001600160e01b031691506001600160e01b03169150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051612d8c929190918252602082015260400190565b60405180910390a25050505050565b60606000612da8836135b7565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b60006001600160a01b0384163b15612ed057604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612e1e903390899088908890600401614701565b6020604051808303816000875af1925050508015612e59575060408051601f3d908101601f19168201909252612e569181019061473e565b60015b612eb6573d808015612e87576040519150601f19603f3d011682016040523d82523d6000602084013e612e8c565b606091505b508051600003612eae5760405162461bcd60e51b81526004016108c69061464f565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612004565b506001612004565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115612f0f5750600090506003612f93565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612f63573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612f8c57600060019250925050612f93565b9150600090505b94509492505050565b6000816004811115612fb057612fb0613b15565b03612fb85750565b6001816004811115612fcc57612fcc613b15565b036130195760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016108c6565b600281600481111561302d5761302d613b15565b0361307a5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016108c6565b600381600481111561308e5761308e613b15565b03611cdc5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016108c6565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106131255772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310613151576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061316f57662386f26fc10000830492506010015b6305f5e1008310613187576305f5e100830492506008015b612710831061319b57612710830492506004015b606483106131ad576064830492506002015b600a831061077d5760010192915050565b60006001600160e01b031982166380ac58cd60e01b14806131ef57506001600160e01b03198216635b5e139f60e01b145b8061077d57506301ffc9a760e01b6001600160e01b031983161461077d565b6001600160a01b0383811615908316158180156132285750805b1561324657604051635cbd944160e01b815260040160405180910390fd5b8115613252575b610f41565b8061324d57610f4133868686346135df565b61326f848483613664565b611391565b600080608083901c1561328957608092831c92015b604083901c1561329b57604092831c92015b602083901c156132ad57602092831c92015b601083901c156132bf57601092831c92015b600883901c156132d157600892831c92015b600483901c156132e357600492831c92015b600283901c156132f557600292831c92015b600183901c1561077d5760010192915050565b60008183106133175781610a80565b5090919050565b600061332d60028484186142e2565b610a809084841661463c565b6000818310613355576000828152602084905260409020610a80565b6000838152602083905260409020610a80565b6001600160a01b0382166133be5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016108c6565b6133c781611f70565b156134145760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016108c6565b61342260008383600161294f565b61342b81611f70565b156134785760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016108c6565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4610795600083836001612976565b6000610a80828461475b565b60006001600160e01b038211156123155760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b60648201526084016108c6565b60008061359e613580613573611552565b65ffffffffffff166122b0565b61359661358c8861262e565b868863ffffffff16565b8791906136da565b915091505b935093915050565b6000610a808284614782565b600060ff8216601f81111561077d57604051632cd44ac360e21b815260040160405180910390fd5b600d546001600160a01b031615610f4157600d5460405163050bf71960e31b81526001600160a01b038781166004830152868116602483015285811660448301529091169063285fb8c89060640160006040518083038186803b15801561364557600080fd5b505afa158015613659573d6000803e3d6000fd5b505050505050505050565b6001600160a01b03831661368657613683600a6135ab612c8f846134f9565b50505b6001600160a01b0382166136a8576136a5600a6134ed612c8f846134f9565b50505b6001600160a01b0383811660009081526008602052604080822054858416835291205461096792918216911683612c2f565b60008061359e85858582546000908190801561382c5760006137018761239b600185614629565b60408051808201909152905463ffffffff8082168084526401000000009092046001600160e01b0316602084015291925090871610156137835760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b657973000000000060448201526064016108c6565b805163ffffffff8088169116036137cc57846137a48861239b600186614629565b80546001600160e01b03929092166401000000000263ffffffff90921691909117905561381c565b6040805180820190915263ffffffff80881682526001600160e01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216640100000000029216919091179101555b6020015192508391506135a39050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a5560008a8152918220955192519093166401000000000291909316179201919091559050816135a3565b6001600160e01b031981168114611cdc57600080fd5b6000602082840312156138ae57600080fd5b8135610a8081613886565b6001600160a01b0381168114611cdc57600080fd5b80356001600160601b03811681146138e557600080fd5b919050565b600080604083850312156138fd57600080fd5b8235613908816138b9565b9150613916602084016138ce565b90509250929050565b60005b8381101561393a578181015183820152602001613922565b50506000910152565b6000815180845261395b81602086016020860161391f565b601f01601f19169290920160200192915050565b602081526000610a806020830184613943565b60006020828403121561399457600080fd5b5035919050565b600080604083850312156139ae57600080fd5b82356139b9816138b9565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613a0557613a056139c7565b604052919050565b60006001600160401b03831115613a2657613a266139c7565b613a39601f8401601f19166020016139dd565b9050828152838383011115613a4d57600080fd5b828260208301376000602084830101529392505050565b600082601f830112613a7557600080fd5b610a8083833560208501613a0d565b60008060408385031215613a9757600080fd5b8235915060208301356001600160401b03811115613ab457600080fd5b613ac085828601613a64565b9150509250929050565b600080600060608486031215613adf57600080fd5b8335613aea816138b9565b92506020840135613afa816138b9565b91506040840135613b0a816138b9565b809150509250925092565b634e487b7160e01b600052602160045260246000fd5b60078110613b4957634e487b7160e01b600052602160045260246000fd5b9052565b6020810161077d8284613b2b565b600080600060608486031215613b7057600080fd5b8335613b7b816138b9565b92506020840135613b8b816138b9565b929592945050506040919091013590565b60008060408385031215613baf57600080fd5b50508035926020909101359150565b600060208284031215613bd057600080fd5b8135610a80816138b9565b6020808252825182820181905260009190848201906040850190845b81811015613c1c5783516001600160a01b031683529284019291840191600101613bf7565b50909695505050505050565b60006001600160401b03821115613c4157613c416139c7565b5060051b60200190565b600082601f830112613c5c57600080fd5b81356020613c71613c6c83613c28565b6139dd565b8083825260208201915060208460051b870101935086841115613c9357600080fd5b602086015b84811015613caf5780358352918301918301613c98565b509695505050505050565b60008060008060808587031215613cd057600080fd5b84356001600160401b0380821115613ce757600080fd5b613cf388838901613c4b565b955060208701359150613d05826138b9565b9093506040860135925060608601359080821115613d2257600080fd5b50613d2f87828801613a64565b91505092959194509250565b60008060208385031215613d4e57600080fd5b82356001600160401b0380821115613d6557600080fd5b818501915085601f830112613d7957600080fd5b813581811115613d8857600080fd5b866020828501011115613d9a57600080fd5b60209290920196919550909350505050565b600080600060608486031215613dc157600080fd5b833592506020840135613dd3816138b9565b9150613de1604085016138ce565b90509250925092565b60078110611cdc57600080fd5b6001600160781b0381168114611cdc57600080fd5b600080600060608486031215613e2157600080fd5b8335613e2c81613dea565b92506020840135613e3c81613df7565b91506040840135613b0a81613df7565b60ff60f81b881681526000602060e06020840152613e6d60e084018a613943565b8381036040850152613e7f818a613943565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b81811015613ed357835183529284019291840191600101613eb7565b50909c9b505050505050505050505050565b8015158114611cdc57600080fd5b60008060408385031215613f0657600080fd5b8235613f11816138b9565b91506020830135613f2181613ee5565b809150509250929050565b60008060008060808587031215613f4257600080fd5b8435613f4d816138b9565b93506020850135613f5d816138b9565b92506040850135915060608501356001600160401b03811115613f7f57600080fd5b8501601f81018713613f9057600080fd5b613d2f87823560208401613a0d565b6000606082019050613fb2828451613b2b565b60208301516001600160781b038082166020850152806040860151166040850152505092915050565b60008060008060008060c08789031215613ff457600080fd5b8635613fff816138b9565b95506020870135945060408701359350606087013560ff8116811461402357600080fd5b9598949750929560808101359460a0909101359350915050565b60008060006060848603121561405257600080fd5b83356001600160401b0381111561406857600080fd5b61407486828701613c4b565b9350506020840135613b8b816138b9565b6000806040838503121561409857600080fd5b82356140a3816138b9565b91506020830135613f21816138b9565b600080600080608085870312156140c957600080fd5b84356140d4816138b9565b935060208501356140e481613dea565b925060408501356140f481613df7565b9150606085013561410481613df7565b939692955090935050565b600181811c9082168061412357607f821691505b6020821081036127d857634e487b7160e01b600052602260045260246000fd5b601f821115610967576000816000526020600020601f850160051c8101602086101561416c5750805b601f850160051c820191505b8181101561418b57828155600101614178565b505050505050565b81516001600160401b038111156141ac576141ac6139c7565b6141c0816141ba845461410f565b84614143565b602080601f8311600181146141f557600084156141dd5750858301515b600019600386901b1c1916600185901b17855561418b565b600085815260208120601f198616915b8281101561422457888601518255948401946001909101908401614205565b50858210156142425787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761077d5761077d61429f565b634e487b7160e01b600052601260045260246000fd5b6000826142ff57634e487b7160e01b600052601260045260246000fd5b500490565b60006060828403121561431657600080fd5b604051606081018181106001600160401b0382111715614338576143386139c7565b604052825161434681613dea565b8152602083015161435681613df7565b6020820152604083015161436981613df7565b60408201529392505050565b60006020828403121561438757600080fd5b8151610a8081613ee5565b600060208083850312156143a557600080fd5b82516001600160401b038111156143bb57600080fd5b8301601f810185136143cc57600080fd5b80516143da613c6c82613c28565b81815260059190911b820183019083810190878311156143f957600080fd5b928401925b828410156123c3578351614411816138b9565b825292840192908401906143fe565b6001600160401b03831115614437576144376139c7565b61444b83614445835461410f565b83614143565b6000601f84116001811461447f57600085156144675750838201355b600019600387901b1c1916600186901b178355610f41565b600083815260209020601f19861690835b828110156144b05786850135825560209485019460019092019101614490565b50868210156144cd5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6001600160a01b038316815260408101610a806020830184613b2b565b6001600160a01b039290921682526001600160781b0316602082015260400190565b600080845461455b8161410f565b600182811680156145735760018114614588576145b7565b60ff19841687528215158302870194506145b7565b8860005260208060002060005b858110156145ae5781548a820152908401908201614595565b50505082870194505b5050505083516145cb81836020880161391f565b64173539b7b760d91b9101908152600501949350505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b8181038181111561077d5761077d61429f565b8082018082111561077d5761077d61429f565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252602a908201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646040820152692073616c65507269636560b01b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061473490830184613943565b9695505050505050565b60006020828403121561475057600080fd5b8151610a8081613886565b6001600160e01b0382811682821603908082111561477b5761477b61429f565b5092915050565b6001600160e01b0381811683821601908082111561477b5761477b61429f56fea2646970667358221220c9db15c4962dca4c324eea7a075dff21cdb5c5eeefbaa7d97a452b96a711394664736f6c634300081800330000000000000000000000002105694e890678d3eb9340cffb5ed43b0fa6474b00000000000000000000000000000000000000000000000000000000000001f400000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000240d85cb67a134bf04d2085652970296780c9d2ead9bc1bf3837edfa8374d316330000000000000000000000000000000000000000000000000000000000000001757696c646572204c616e643a205468652049736c616e6400000000000000000000000000000000000000000000000000000000000000000000000000000000055749414d49000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003061723a2f2f333372465652794243724352426670526b33662d532d7753455a6748657a384966675477344450427a587700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003161723a2f2f4951312d36647a4677545136712d346373345131486b5a76683642426d676949514f67336b4d6355384d6b2f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013100000000000000000000000000000000000000000000000000000000000000