[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "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": true, "internalType": "address", "name": "chargedParticles", "type": "address" } ], "name": "ChargedParticlesSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "chargedSettings", "type": "address" } ], "name": "ChargedSettingsSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "chargedState", "type": "address" } ], "name": "ChargedStateSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "royaltiesPct", "type": "uint256" } ], "name": "CreatorRoyaltiesSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "FeesWithdrawn", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Locked", "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": false, "internalType": "bool", "name": "isPaused", "type": "bool" } ], "name": "PausedStateSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "oldOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "salePrice", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "creator", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "creatorRoyalties", "type": "uint256" } ], "name": "ProtonSold", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "Received", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amountClaimed", "type": "uint256" } ], "name": "RoyaltiesClaimed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "salePrice", "type": "uint256" } ], "name": "SalePriceSet", "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": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "startTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "count", "type": "uint256" } ], "name": "TransferBatch", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "universe", "type": "address" } ], "name": "UniverseSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Unlocked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": true, "internalType": "address", "name": "tokenAddress", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "WithdrawStuckERC1155", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": true, "internalType": "address", "name": "tokenAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "WithdrawStuckERC20", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": true, "internalType": "address", "name": "tokenAddress", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "WithdrawStuckERC721", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "WithdrawStuckEther", "type": "event" }, { "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": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "gasLimit", "type": "uint256" } ], "name": "buyProton", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "claimCreatorRoyalties", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "creator", "type": "address" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "string", "name": "tokenMetaUri", "type": "string" } ], "name": "createBasicProton", "outputs": [ { "internalType": "uint256", "name": "newTokenId", "type": "uint256" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "creator", "type": "address" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "string", "name": "tokenMetaUri", "type": "string" }, { "internalType": "uint256", "name": "annuityPercent", "type": "uint256" }, { "internalType": "uint256", "name": "royaltiesPercent", "type": "uint256" } ], "name": "createBondedToken", "outputs": [ { "internalType": "uint256", "name": "newTokenId", "type": "uint256" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "creator", "type": "address" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "address", "name": "referrer", "type": "address" }, { "internalType": "string", "name": "tokenMetaUri", "type": "string" }, { "internalType": "string", "name": "walletManagerId", "type": "string" }, { "internalType": "address", "name": "assetToken", "type": "address" }, { "internalType": "uint256", "name": "assetAmount", "type": "uint256" }, { "internalType": "uint256", "name": "annuityPercent", "type": "uint256" } ], "name": "createChargedParticle", "outputs": [ { "internalType": "uint256", "name": "newTokenId", "type": "uint256" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "creator", "type": "address" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "string", "name": "tokenMetaUri", "type": "string" } ], "name": "createProton", "outputs": [ { "internalType": "uint256", "name": "newTokenId", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "creator", "type": "address" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "string", "name": "tokenMetaUri", "type": "string" }, { "internalType": "uint256", "name": "annuityPercent", "type": "uint256" }, { "internalType": "uint256", "name": "royaltiesPercent", "type": "uint256" }, { "internalType": "uint256", "name": "salePrice", "type": "uint256" } ], "name": "createProtonForSale", "outputs": [ { "internalType": "uint256", "name": "newTokenId", "type": "uint256" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "creator", "type": "address" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "string[]", "name": "tokenMetaUris", "type": "string[]" } ], "name": "createProtons", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "creator", "type": "address" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "royaltiesPercent", "type": "uint256" }, { "internalType": "string[]", "name": "tokenMetaUris", "type": "string[]" }, { "internalType": "uint256[]", "name": "salePrices", "type": "uint256[]" } ], "name": "createProtonsForSale", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "creatorOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "address", "name": "account", "type": "address" } ], "name": "getCreatorRoyalties", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getCreatorRoyaltiesPct", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getCreatorRoyaltiesReceiver", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getLastSellPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getSalePrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "forwarder", "type": "address" } ], "name": "isTrustedForwarder", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "lockToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "locked", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "lockedTokens", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "requireTokenOwner", "outputs": [], "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": "address", "name": "chargedParticles", "type": "address" } ], "name": "setChargedParticles", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "settings", "type": "address" } ], "name": "setChargedSettings", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "stateController", "type": "address" } ], "name": "setChargedState", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "setCreatorRoyaltiesReceiver", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "state", "type": "bool" } ], "name": "setPausedState", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "royaltiesPct", "type": "uint256" } ], "name": "setRoyaltiesPct", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "salePrice", "type": "uint256" } ], "name": "setSalePrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_trustedForwarder", "type": "address" } ], "name": "setTrustedForwarder", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "universe", "type": "address" } ], "name": "setUniverse", "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": "index", "type": "uint256" } ], "name": "tokenByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenOfOwnerByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "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": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "trustedForwarder", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "versionRecipient", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address payable", "name": "receiver", "type": "address" }, { "internalType": "address", "name": "tokenAddress", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "withdrawERC721", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address payable", "name": "receiver", "type": "address" }, { "internalType": "address", "name": "tokenAddress", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "withdrawErc20", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address payable", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "withdrawEther", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60806040523480156200001157600080fd5b50604080518082018252601b81527f43686172676564205061727469636c6573202d2050726f746f6e4300000000006020808301919091528251808401909352600883526750524f544f4e2e4360c01b908301529081816200007a6301ffc9a760e01b62000146565b81516200008f9060069060208501906200020a565b508051620000a59060079060208401906200020a565b50620000b86380ac58cd60e01b62000146565b620000ca635b5e139f60e01b62000146565b620000dc63780e9d6360e01b62000146565b5060009050620000eb620001a1565b600980546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600b5550620002dd565b6001600160e01b031980821614156200017c5760405162461bcd60e51b81526004016200017390620002a6565b60405180910390fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b6000620001b8620001be60201b6200194d1760201c565b90505b90565b600060183610801590620001d85750620001d833620001f6565b15620001ee575060131936013560601c620001bb565b5033620001bb565b600a546001600160a01b0390811691161490565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200024d57805160ff19168380011785556200027d565b828001600101855582156200027d579182015b828111156200027d57825182559160200191906001019062000260565b506200028b9291506200028f565b5090565b5b808211156200028b576000815560010162000290565b6020808252601c908201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604082015260600190565b6143c280620002ed6000396000f3fe6080604052600436106103395760003560e01c8063715018a6116101ab578063b45a3c0e116100f7578063d8f2ce2b11610095578063dcec32941161006f578063dcec32941461095f578063e985e9c51461097f578063f2fde38b1461099f578063f8eb5fc5146109bf57610379565b8063d8f2ce2b146108ff578063da7422281461091f578063db9f60ff1461093f57610379565b8063c87b56dd116100d1578063c87b56dd1461087f578063c8c680d51461089f578063c95d0998146108bf578063d40e707b146108df57610379565b8063b45a3c0e1461081f578063b7683e931461083f578063b88d4fde1461085f57610379565b80638da5cb5b11610164578063a0092b551161013e578063a0092b551461079f578063a22cb465146107bf578063ad82c42c146107df578063ae9704cd146107ff57610379565b80638da5cb5b146107625780639390afc71461077757806395d89b411461078a57610379565b8063715018a6146106c557806371e715f4146106da5780637da0a877146106fa57806380f203631461070f578063846ec08c1461072f578063850f8fb11461074f57610379565b80632fc7779711610285578063572b6c05116102235780636348af34116101fd5780636348af34146106505780636352211e146106655780636e5559fd1461068557806370a08231146106a557610379565b8063572b6c05146105fd578063589a17431461061d57806362c517491461063d57610379565b806342966c681161025f57806342966c6814610588578063486ff0cd146105a85780634f6ccce7146105bd578063522f6815146105dd57610379565b80632fc77797146105285780634025feb21461054857806342842e0e1461056857610379565b806318160ddd116102f2578063250b2c80116102cc578063250b2c80146104ba5780632b7e237c146104da5780632c0cd5a3146104fa5780632f745c591461050857610379565b806318160ddd146104655780631dcd79d41461048757806323b872dd1461049a57610379565b806301ffc9a71461037e578063053992c5146103b457806306fdde03146103d6578063081812fc146103f8578063095ea7b3146104255780631593dee11461044557610379565b36610379577f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874333460405161036f929190613b19565b60405180910390a1005b600080fd5b34801561038a57600080fd5b5061039e6103993660046139dd565b6109df565b6040516103ab9190613c2b565b60405180910390f35b3480156103c057600080fd5b506103d46103cf366004613a69565b6109fe565b005b3480156103e257600080fd5b506103eb610a67565b6040516103ab9190613c36565b34801561040457600080fd5b50610418610413366004613a15565b610afe565b6040516103ab9190613ad2565b34801561043157600080fd5b506103d461044036600461358b565b610b41565b34801561045157600080fd5b506103d461046036600461354b565b610bd4565b34801561047157600080fd5b5061047a610c14565b6040516103ab919061428c565b61039e610495366004613a69565b610c25565b3480156104a657600080fd5b506103d46104b536600461385e565b610c92565b3480156104c657600080fd5b5061047a6104d5366004613a15565b610cc4565b3480156104e657600080fd5b5061047a6104f5366004613710565b610cd6565b61047a6104f5366004613710565b34801561051457600080fd5b5061047a61052336600461358b565b610d12565b34801561053457600080fd5b506103d4610543366004613a45565b610d3d565b34801561055457600080fd5b506103d461056336600461354b565b610dd1565b34801561057457600080fd5b506103d461058336600461385e565b610e11565b34801561059457600080fd5b506103d46105a3366004613a15565b610e2c565b3480156105b457600080fd5b506103eb610e41565b3480156105c957600080fd5b5061047a6105d8366004613a15565b610e61565b3480156105e957600080fd5b506103d46105f836600461358b565b610e77565b34801561060957600080fd5b5061039e610618366004613513565b610eba565b34801561062957600080fd5b50610418610638366004613a15565b610ece565b61047a61064b3660046135ee565b610ee9565b34801561065c57600080fd5b5061047a610f58565b34801561067157600080fd5b50610418610680366004613a15565b610fbf565b34801561069157600080fd5b506103d46106a0366004613513565b610ffb565b3480156106b157600080fd5b5061047a6106c0366004613513565b61107a565b3480156106d157600080fd5b506103d46110c3565b3480156106e657600080fd5b506104186106f5366004613a15565b611142565b34801561070657600080fd5b5061041861114d565b34801561071b57600080fd5b506103d461072a366004613a15565b61115c565b34801561073b57600080fd5b5061047a61074a366004613513565b61116e565b61047a61075d366004613770565b611189565b34801561076e57600080fd5b506104186111b2565b61047a6107853660046137e2565b6111c1565b34801561079657600080fd5b506103eb61124b565b3480156107ab57600080fd5b5061039e6107ba366004613872565b6112ac565b3480156107cb57600080fd5b506103d46107da366004613978565b6112ef565b3480156107eb57600080fd5b5061047a6107fa366004613a15565b6113bd565b34801561080b57600080fd5b506103d461081a366004613513565b6113cf565b34801561082b57600080fd5b5061039e61083a366004613a15565b61144e565b34801561084b57600080fd5b506103d461085a366004613513565b611463565b34801561086b57600080fd5b506103d461087a36600461390e565b6114e2565b34801561088b57600080fd5b506103eb61089a366004613a15565b611521565b3480156108ab57600080fd5b506103d46108ba366004613a69565b6115e7565b3480156108cb57600080fd5b506103d46108da366004613513565b61167e565b3480156108eb57600080fd5b5061039e6108fa3660046136ad565b6116fd565b34801561090b57600080fd5b506103d461091a366004613a15565b61173c565b34801561092b57600080fd5b506103d461093a366004613513565b61176c565b34801561094b57600080fd5b506103d461095a3660046139a5565b6117c3565b34801561096b57600080fd5b5061039e61097a366004613a15565b611841565b34801561098b57600080fd5b5061039e61099a3660046135b6565b611856565b3480156109ab57600080fd5b506103d46109ba366004613513565b611884565b3480156109cb57600080fd5b5061047a6109da366004613a15565b61193b565b6001600160e01b03191660009081526020819052604090205460ff1690565b60135460ff1615610a2a5760405162461bcd60e51b8152600401610a2190614156565b60405180910390fd5b81610a3c610a3661197f565b82611989565b610a585760405162461bcd60e51b8152600401610a2190614243565b610a628383611a06565b505050565b60068054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610af35780601f10610ac857610100808354040283529160200191610af3565b820191906000526020600020905b815481529060010190602001808311610ad657829003601f168201915b505050505090505b90565b6000610b0982611a7c565b610b255760405162461bcd60e51b8152600401610a21906141e6565b506000908152600460205260409020546001600160a01b031690565b6000610b4c82610fbf565b9050806001600160a01b0316836001600160a01b03161415610b805760405162461bcd60e51b8152600401610a2190614266565b806001600160a01b0316610b9261197f565b6001600160a01b03161480610bae5750610bae8161099a61197f565b610bca5760405162461bcd60e51b8152600401610a219061406a565b610a628383611a89565b610bdc61197f565b6009546001600160a01b03908116911614610c095760405162461bcd60e51b8152600401610a2190613f7b565b610a62838383611af7565b6000610c206002611c04565b905090565b60006002600b541415610c4a5760405162461bcd60e51b8152600401610a219061420c565b6002600b5560135460ff1615610c725760405162461bcd60e51b8152600401610a2190614156565b610c7c8383611c0f565b50505050505050600190506001600b5592915050565b610c9d610a3661197f565b610cb95760405162461bcd60e51b8152600401610a219061406a565b610a62838383611cc2565b60009081526012602052604090205490565b60135460009060ff1615610cfc5760405162461bcd60e51b8152600401610a2190614156565b610d0a848484600080611d63565b949350505050565b6001600160a01b0382166000908152600160205260408120610d349083611de6565b90505b92915050565b60135460ff1615610d605760405162461bcd60e51b8152600401610a2190614156565b81610d6961197f565b6000828152600d60205260409020546001600160a01b03908116911614610da25760405162461bcd60e51b8152600401610a2190614090565b506000918252600f602052604090912080546001600160a01b0319166001600160a01b03909216919091179055565b610dd961197f565b6009546001600160a01b03908116911614610e065760405162461bcd60e51b8152600401610a2190613f7b565b610a62838383611df2565b610a62838383604051806020016040528060008152506114e2565b610e358161173c565b610e3e81611f4d565b50565b60606040518060600160405280602e815260200161435f602e9139905090565b600080610e6f600284611f6b565b509392505050565b610e7f61197f565b6009546001600160a01b03908116911614610eac5760405162461bcd60e51b8152600401610a2190613f7b565b610eb68282611f89565b5050565b600a546001600160a01b0390811691161490565b6000908152600d60205260409020546001600160a01b031690565b60006002600b541415610f0e5760405162461bcd60e51b8152600401610a219061420c565b6002600b5560135460ff1615610f365760405162461bcd60e51b8152600401610a2190614156565b610f46898989898989898961200d565b6001600b559998505050505050505050565b60006002600b541415610f7d5760405162461bcd60e51b8152600401610a219061420c565b6002600b5560135460ff1615610fa55760405162461bcd60e51b8152600401610a2190614156565b610fb5610fb061197f565b6120d0565b90506001600b5590565b6000610d37826040518060400160405280600c81526020016b4552433732313a452d34303560a01b81525060026121749092919063ffffffff16565b61100361197f565b6009546001600160a01b039081169116146110305760405162461bcd60e51b8152600401610a2190613f7b565b601880546001600160a01b0319166001600160a01b0383169081179091556040517f5ce0e6b7fd36339ee97339831b6c72694ecee88c62aab49919d9cabe0a732e4190600090a250565b60006001600160a01b0382166110a25760405162461bcd60e51b8152600401610a2190613cf4565b6001600160a01b0382166000908152600160205260409020610d3790611c04565b6110cb61197f565b6009546001600160a01b039081169116146110f85760405162461bcd60e51b8152600401610a2190613f7b565b6009546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600980546001600160a01b0319169055565b6000610d378261218b565b600a546001600160a01b031681565b6111658161173c565b610e3e816121c5565b6001600160a01b031660009081526010602052604090205490565b60008061119b878787878760006111c1565b90506111a68161115c565b90505b95945050505050565b6009546001600160a01b031690565b60006111d08787878686611d63565b90508315611241576017546040516315aea5d760e01b81526001600160a01b03909116906315aea5d79061120e90309085908c908a90600401613b32565b600060405180830381600087803b15801561122857600080fd5b505af115801561123c573d6000803e3d6000fd5b505050505b9695505050505050565b60078054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610af35780601f10610ac857610100808354040283529160200191610af3565b60135460009060ff16156112d25760405162461bcd60e51b8152600401610a2190614156565b6112e18888888888888861220e565b506001979650505050505050565b6112f761197f565b6001600160a01b0316826001600160a01b031614156113285760405162461bcd60e51b8152600401610a2190614266565b806005600061133561197f565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff19169215159290921790915561137961197f565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516113b19190613c2b565b60405180910390a35050565b6000908152600e602052604090205490565b6113d761197f565b6009546001600160a01b039081169116146114045760405162461bcd60e51b8152600401610a2190613f7b565b601580546001600160a01b0319166001600160a01b0383169081179091556040517ff28fa0fe2abe5dad2066ebce6edc9d403e4facb3603e47e6c0e7ea3e57dfe03290600090a250565b60009081526014602052604090205460ff1690565b61146b61197f565b6009546001600160a01b039081169116146114985760405162461bcd60e51b8152600401610a2190613f7b565b601680546001600160a01b0319166001600160a01b0383169081179091556040517f62ff39aed768a426c7582b6e1062ab2631df1869b2d574e36f8274d2e2b0ab8190600090a250565b6114f36114ed61197f565b83611989565b61150f5760405162461bcd60e51b8152600401610a219061406a565b61151b848484846122c0565b50505050565b606061152c82611a7c565b6115485760405162461bcd60e51b8152600401610a21906141e6565b60008281526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156115db5780601f106115b0576101008083540402835291602001916115db565b820191906000526020600020905b8154815290600101906020018083116115be57829003601f168201915b50505050509050919050565b60135460ff161561160a5760405162461bcd60e51b8152600401610a2190614156565b8161161361197f565b6000828152600d60205260409020546001600160a01b0390811691161461164c5760405162461bcd60e51b8152600401610a2190614090565b82611658610a3661197f565b6116745760405162461bcd60e51b8152600401610a2190614243565b61151b84846122f3565b61168661197f565b6009546001600160a01b039081169116146116b35760405162461bcd60e51b8152600401610a2190613f7b565b601780546001600160a01b0319166001600160a01b0383169081179091556040517f7ad4c1bc3e874ec0bf47846feb5648b384e8511dc9e5f9803578c9d2b4ec9e6e90600090a250565b60135460009060ff16156117235760405162461bcd60e51b8152600401610a2190614156565b611731858560008686612358565b506001949350505050565b3361174682610fbf565b6001600160a01b031614610e3e5760405162461bcd60e51b8152600401610a2190613d74565b61177461197f565b6009546001600160a01b039081169116146117a15760405162461bcd60e51b8152600401610a2190613f7b565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6117cb61197f565b6009546001600160a01b039081169116146117f85760405162461bcd60e51b8152600401610a2190613f7b565b6013805460ff19168215151790556040517fa9bfed3d98385b3777389e321dbde773cf7d335fa604fefbae3dca93564f558690611836908390613c2b565b60405180910390a150565b60146020526000908152604090205460ff1681565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b61188c61197f565b6009546001600160a01b039081169116146118b95760405162461bcd60e51b8152600401610a2190613f7b565b6001600160a01b0381166118df5760405162461bcd60e51b8152600401610a2190613c8b565b6009546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600980546001600160a01b0319166001600160a01b0392909216919091179055565b60009081526011602052604090205490565b600060183610801590611964575061196433610eba565b15611978575060131936013560601c610afb565b5033610afb565b6000610c2061194d565b600061199482611a7c565b6119b05760405162461bcd60e51b8152600401610a21906141e6565b60006119bb83610fbf565b9050806001600160a01b0316846001600160a01b031614806119f65750836001600160a01b03166119eb84610afe565b6001600160a01b0316145b80610d0a5750610d0a8185611856565b611a1082826123d5565b601654604051636a5fcc8b60e11b81526001600160a01b039091169063d4bf991690611a46903090869086151590600401613b5c565b600060405180830381600087803b158015611a6057600080fd5b505af1158015611a74573d6000803e3d6000fd5b505050505050565b6000610d37600283612418565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611abe82610fbf565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6001600160a01b038316611b1d5760405162461bcd60e51b8152600401610a2190613cd1565b6040516370a0823160e01b815281906001600160a01b038416906370a0823190611b4b903090600401613ad2565b60206040518083038186803b158015611b6357600080fd5b505afa158015611b77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b9b9190613a2d565b10610a6257611bb46001600160a01b0383168483612424565b816001600160a01b0316836001600160a01b03167f6c9d637297625e945b296ff73a71fcfbd0a9e062652b6491a921c4c60194176b83604051611bf7919061428c565b60405180910390a3505050565b6000610d378261247a565b6000806000806000806000611c24898961247e565b601554969d50949b509299509097509550935091506001600160a01b031615611cb6576015546040516345c984d960e11b81526001600160a01b0390911690638b9309b290611c83908a908a908a908a908a908a908a90600401613beb565b600060405180830381600087803b158015611c9d57600080fd5b505af1158015611cb1573d6000803e3d6000fd5b505050505b92959891949750929550565b60008181526014602052604090205460ff1615611cf15760405162461bcd60e51b8152600401610a219061400d565b601654604051636a5fcc8b60e11b81526001600160a01b039091169063d4bf991690611d269030908590600090600401613b5c565b600060405180830381600087803b158015611d4057600080fd5b505af1158015611d54573d6000803e3d6000fd5b50505050610a62838383612638565b6000611d6f600c612652565b611d79600c61247a565b9050611d9585826040518060200160405280600081525061265b565b6000818152600d6020526040902080546001600160a01b0319166001600160a01b038816179055611dc6818561268e565b8215611dd657611dd681846122f3565b81156111a9576111a98183611a06565b6000610d3483836126d2565b6001600160a01b038316611e185760405162461bcd60e51b8152600401610a2190613cd1565b6040516331a9108f60e11b815230906001600160a01b03841690636352211e90611e4690859060040161428c565b60206040518083038186803b158015611e5e57600080fd5b505afa158015611e72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e96919061352f565b6001600160a01b03161415610a62576040516323b872dd60e01b81526001600160a01b038316906323b872dd90611ed590309087908690600401613bc7565b600060405180830381600087803b158015611eef57600080fd5b505af1158015611f03573d6000803e3d6000fd5b5050505080826001600160a01b0316846001600160a01b03167ffefe036cac4ee3a4aca074a81cbcc4376e1484693289078dbec149c890101d5b60405160405180910390a4505050565b611f5681612717565b610e3e611f6282610fbf565b61dead83611cc2565b6000808080611f7a868661275d565b909450925050505b9250929050565b6001600160a01b038216611faf5760405162461bcd60e51b8152600401610a2190613cd1565b804710610eb657611fc96001600160a01b038316826127b9565b816001600160a01b03167eddb683bb45cd5d0ad8a200c6fae7152b1c236ee90a4a37db692407f5cc38bd82604051612001919061428c565b60405180910390a25050565b6018546000906001600160a01b03166120385760405162461bcd60e51b8152600401610a21906140ea565b612046898988600080611d63565b905081156120b7576017546040516315aea5d760e01b81526001600160a01b03909116906315aea5d79061208490309085908e908890600401613b32565b600060405180830381600087803b15801561209e57600080fd5b505af11580156120b2573d6000803e3d6000fd5b505050505b6120c4818686868b612855565b98975050505050505050565b6001600160a01b038116600090815260106020526040812054806121065760405162461bcd60e51b8152600401610a2190614133565b6001600160a01b038316600081815260106020526040812081905561212d9190839061297a565b826001600160a01b03167f8fbbda19f4a70036f6f585dc4160142a8fa2a20ffb9393d23274f78de4e3988882604051612166919061428c565b60405180910390a250919050565b6000612181848484612a80565b90505b9392505050565b6000818152600f60205260408120546001600160a01b031680610d375750506000908152600d60205260409020546001600160a01b031690565b60008181526014602052604090819020805460ff19166001179055517f032bc66be43dbccb7487781d168eb7bda224628a3b2c3388bdf69b532a3a16119061183690839061428c565b82811461222d5760405162461bcd60e51b8152600401610a2190613d51565b8260005b818110156122b5576122ac898988888581811061224a57fe5b905060200281019061225c91906142b4565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d92508a9150899050878181106122a057fe5b90506020020135611d63565b50600101612231565b505050505050505050565b6122cb848484611cc2565b6122d784848484612adf565b61151b5760405162461bcd60e51b8152600401610a2190613e9b565b6127108111156123155760405162461bcd60e51b8152600401610a2190613e78565b6000828152600e6020526040908190208290555182907fd91bd92b973231f564eaa17c9bc62c86b96a8885f3cdcb990d5a3f0415580d909061200190849061428c565b8060005b818110156123cc576123c3878786868581811061237557fe5b905060200281019061238791906142b4565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052508c93509150611d639050565b5060010161235c565b50505050505050565b600082815260116020526040908190208290555182907fe23ea816dce6d7f5c0b85cbd597e7c3b97b2453791152c0b94e5e5c5f314d2f09061200190849061428c565b6000610d348383612bc7565b610a628363a9059cbb60e01b8484604051602401612443929190613b19565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612bdf565b5490565b6000828152601160205260408120543091849181908180826124b25760405162461bcd60e51b8152600401610a2190613e55565b823410156124d25760405162461bcd60e51b8152600401610a2190613e32565b826124dc8a610fbf565b95506124e661197f565b94506124f18a61218b565b60008b8152600e602090815260408083205460129092529091205491945090811580159061251f5750600081115b801561252a57508086115b156125565761254761271061254183890385612c6e565b90612ca8565b93506125538385612cea565b92505b60008c815260126020526040902086905583156125aa576001600160a01b0385166000908152601060205260409020546125909085612d2c565b6001600160a01b0386166000908152601060205260409020555b6125b588888e611cc2565b82156125cf576125cf6001600160a01b038916848d61297a565b866001600160a01b0316886001600160a01b03168d7f71a2ee63bc7695052e3a9837d5a45dd1cc0ce12717e39cef6eb6afb0d91697ed89898960405161261793929190614295565b60405180910390a4612629868c612d51565b50505092959891949750929550565b600081815260116020526040812055610a62838383612d82565b80546001019055565b6126658383612e85565b6126726000848484612adf565b610a625760405162461bcd60e51b8152600401610a2190613e9b565b61269782611a7c565b6126b35760405162461bcd60e51b8152600401610a21906141e6565b60008281526008602090815260409091208251610a62928401906133c0565b815460009082106126f55760405162461bcd60e51b8152600401610a2190613c49565b82600001828154811061270457fe5b9060005260206000200154905092915050565b60008181526014602052604090819020805460ff19169055517ff27b6ce5b2f5e68ddb2fd95a8a909d4ecf1daaac270935fff052feacb24f18429061183690839061428c565b8154600090819083106127825760405162461bcd60e51b8152600401610a2190613ec1565b600084600001848154811061279357fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b804710156127d95760405162461bcd60e51b8152600401610a2190613dfb565b6000826001600160a01b0316826040516127f290610afb565b60006040518083038185875af1925050503d806000811461282f576040519150601f19603f3d011682016040523d82523d6000602084013e612834565b606091505b5050905080610a625760405162461bcd60e51b8152600401610a2190613d9e565b61286761286061197f565b8484612f3d565b60185460405163095ea7b360e01b81526001600160a01b038581169263095ea7b39261289b92909116908690600401613b19565b602060405180830381600087803b1580156128b557600080fd5b505af11580156128c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128ed91906139c1565b506018546040516305eef16560e11b81526001600160a01b0390911690630bdde2ca9061292890309089908990899089908990600401613b7f565b602060405180830381600087803b15801561294257600080fd5b505af1158015612956573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a749190613a2d565b8147101561299a5760405162461bcd60e51b8152600401610a2190613f03565b6000808211612a0257836001600160a01b0316836040516129ba90610afb565b60006040518083038185875af1925050503d80600081146129f7576040519150601f19603f3d011682016040523d82523d6000602084013e6129fc565b606091505b50612a60565b836001600160a01b0316838390604051612a1b90610afb565b600060405180830381858888f193505050503d8060008114612a59576040519150601f19603f3d011682016040523d82523d6000602084013e612a5e565b606091505b505b5090508061151b5760405162461bcd60e51b8152600401610a2190613fb0565b60008281526001840160205260408120548281612ab05760405162461bcd60e51b8152600401610a219190613c36565b50846000016001820381548110612ac357fe5b9060005260206000209060020201600101549150509392505050565b6000612af3846001600160a01b031661307c565b612aff57506001610d0a565b6060612b90630a85bd0160e11b612b1461197f565b888787604051602401612b2a9493929190613ae6565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b0319909516949094179093528051808201909152600c81526b22a9219b99189d22969a181960a11b928101929092526001600160a01b038816916130b5565b9050600081806020019051810190612ba891906139f9565b6001600160e01b031916630a85bd0160e11b1492505050949350505050565b60009081526001919091016020526040902054151590565b6060612c34826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166130b59092919063ffffffff16565b805190915015610a625780806020019051810190612c5291906139c1565b610a625760405162461bcd60e51b8152600401610a2190614179565b600082612c7d57506000610d37565b82820282848281612c8a57fe5b0414610d345760405162461bcd60e51b8152600401610a2190613f3a565b6000610d3483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506130c4565b6000610d3483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506130fb565b600082820183811015610d345760405162461bcd60e51b8152600401610a2190613d1a565b6000612d5d3484612cea565b90508015610a6257610a628183612d7261197f565b6001600160a01b0316919061297a565b826001600160a01b0316612d9582610fbf565b6001600160a01b031614612dbb5760405162461bcd60e51b8152600401610a219061410d565b6001600160a01b038216612de15760405162461bcd60e51b8152600401610a2190613cf4565b612dec600082611a89565b6001600160a01b0383166000908152600160205260409020612e0e9082613127565b506001600160a01b0382166000908152600160205260409020612e319082613133565b50612e3e6002828461313f565b5080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6001600160a01b038216612eab5760405162461bcd60e51b8152600401610a2190613cf4565b612eb481611a7c565b15612ed15760405162461bcd60e51b8152600401610a2190614044565b6001600160a01b0382166000908152600160205260409020612ef39082613133565b50612f006002828461313f565b5060405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6040516370a0823160e01b81526000906001600160a01b038416906370a0823190612f6c908790600401613ad2565b60206040518083038186803b158015612f8457600080fd5b505afa158015612f98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fbc9190613a2d565b905080821115612fde5760405162461bcd60e51b8152600401610a2190614133565b6040516323b872dd60e01b81526001600160a01b038416906323b872dd9061300e90879030908790600401613bc7565b602060405180830381600087803b15801561302857600080fd5b505af115801561303c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061306091906139c1565b61151b5760405162461bcd60e51b8152600401610a21906141c3565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610d0a575050151592915050565b6060610d0a8484600085613155565b600081836130e55760405162461bcd60e51b8152600401610a219190613c36565b5060008385816130f157fe5b0495945050505050565b6000818484111561311f5760405162461bcd60e51b8152600401610a219190613c36565b505050900390565b6000610d348383613219565b6000610d3483836132df565b6000610d0a84846001600160a01b038516613329565b60606131608561307c565b61317c5760405162461bcd60e51b8152600401610a21906140b3565b60006060866001600160a01b031685876040516131999190613ab6565b60006040518083038185875af1925050503d80600081146131d6576040519150601f19603f3d011682016040523d82523d6000602084013e6131db565b606091505b509150915081156131ef579150610d0a9050565b8051156131ff5780518082602001fd5b8360405162461bcd60e51b8152600401610a219190613c36565b600081815260018301602052604081205480156132d5578354600019808301919081019060009087908390811061324c57fe5b906000526020600020015490508087600001848154811061326957fe5b60009182526020808320909101929092558281526001898101909252604090209084019055865487908061329957fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610d37565b6000915050610d37565b60006132eb8383612bc7565b61332157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610d37565b506000610d37565b60008281526001840160205260408120548061338e575050604080518082018252838152602080820184815286546001818101895560008981528481209551600290930290950191825591519082015586548684528188019092529290912055612184565b828560000160018303815481106133a157fe5b9060005260206000209060020201600101819055506000915050612184565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061340157805160ff191683800117855561342e565b8280016001018555821561342e579182015b8281111561342e578251825591602001919060010190613413565b5061343a92915061343e565b5090565b5b8082111561343a576000815560010161343f565b60008083601f840112613464578182fd5b50813567ffffffffffffffff81111561347b578182fd5b6020830191508360208083028501011115611f8257600080fd5b600082601f8301126134a5578081fd5b813567ffffffffffffffff808211156134bc578283fd5b604051601f8301601f1916810160200182811182821017156134dc578485fd5b6040528281529250828483016020018610156134f757600080fd5b8260208601602083013760006020848301015250505092915050565b600060208284031215613524578081fd5b8135610d3481614325565b600060208284031215613540578081fd5b8151610d3481614325565b60008060006060848603121561355f578182fd5b833561356a81614325565b9250602084013561357a81614325565b929592945050506040919091013590565b6000806040838503121561359d578182fd5b82356135a881614325565b946020939093013593505050565b600080604083850312156135c8578182fd5b82356135d381614325565b915060208301356135e381614325565b809150509250929050565b600080600080600080600080610100898b03121561360a578384fd5b883561361581614325565b9750602089013561362581614325565b9650604089013561363581614325565b9550606089013567ffffffffffffffff80821115613651578586fd5b61365d8c838d01613495565b965060808b0135915080821115613672578586fd5b5061367f8b828c01613495565b94505060a089013561369081614325565b979a969950949793969295929450505060c08201359160e0013590565b600080600080606085870312156136c2578384fd5b84356136cd81614325565b935060208501356136dd81614325565b9250604085013567ffffffffffffffff8111156136f8578283fd5b61370487828801613453565b95989497509550505050565b600080600060608486031215613724578283fd5b833561372f81614325565b9250602084013561373f81614325565b9150604084013567ffffffffffffffff81111561375a578182fd5b61376686828701613495565b9150509250925092565b600080600080600060a08688031215613787578081fd5b853561379281614325565b945060208601356137a281614325565b9350604086013567ffffffffffffffff8111156137bd578182fd5b6137c988828901613495565b9598949750949560608101359550608001359392505050565b60008060008060008060c087890312156137fa578384fd5b863561380581614325565b9550602087013561381581614325565b9450604087013567ffffffffffffffff811115613830578485fd5b61383c89828a01613495565b945050606087013592506080870135915060a087013590509295509295509295565b60008060006060848603121561355f578081fd5b600080600080600080600060a0888a03121561388c578081fd5b873561389781614325565b965060208801356138a781614325565b955060408801359450606088013567ffffffffffffffff808211156138ca578283fd5b6138d68b838c01613453565b909650945060808a01359150808211156138ee578283fd5b506138fb8a828b01613453565b989b979a50959850939692959293505050565b60008060008060808587031215613923578182fd5b843561392e81614325565b9350602085013561393e81614325565b925060408501359150606085013567ffffffffffffffff811115613960578182fd5b61396c87828801613495565b91505092959194509250565b6000806040838503121561398a578182fd5b823561399581614325565b915060208301356135e38161433a565b6000602082840312156139b6578081fd5b8135610d348161433a565b6000602082840312156139d2578081fd5b8151610d348161433a565b6000602082840312156139ee578081fd5b8135610d3481614348565b600060208284031215613a0a578081fd5b8151610d3481614348565b600060208284031215613a26578081fd5b5035919050565b600060208284031215613a3e578081fd5b5051919050565b60008060408385031215613a57578182fd5b8235915060208301356135e381614325565b60008060408385031215613a7b578182fd5b50508035926020909101359150565b60008151808452613aa28160208601602086016142f9565b601f01601f19169290920160200192915050565b60008251613ac88184602087016142f9565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061124190830184613a8a565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039485168152602081019390935292166040820152606081019190915260800190565b6001600160a01b0393909316835260208301919091521515604082015260600190565b600060018060a01b03808916835287602084015260c06040840152613ba760c0840188613a8a565b9581166060840152608083019490945250911660a0909101529392505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b039788168152602081019690965293861660408601529185166060850152608084015290921660a082015260c081019190915260e00190565b901515815260200190565b600060208252610d346020830184613a8a565b60208082526022908201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e604082015261647360f01b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252600990820152684248503a452d34303360b81b604082015260600190565b6020808252600c908201526b4552433732313a452d34303360a01b604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526009908201526828292a1d229699181960b91b604082015260600190565b60208082526010908201526f27b7363c903a37b5b2b71037bbb732b960811b604082015260600190565b6020808252603a908201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260408201527f6563697069656e74206d61792068617665207265766572746564000000000000606082015260800190565b6020808252601d908201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604082015260600190565b6020808252600990820152681414950e914b4d0c4d60ba1b604082015260600190565b60208082526009908201526828292a1d22969a189b60b91b604082015260600190565b6020808252600990820152685052543a452d34323160b81b604082015260600190565b6020808252600c908201526b22a9219b99189d22969a181960a11b604082015260600190565b60208082526022908201527f456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e604082015261647360f01b606082015260800190565b6020808252601f908201527f546f6b656e496e666f3a20696e73756666696369656e742062616c616e636500604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252603c908201527f546f6b656e496e666f3a20756e61626c6520746f2073656e642076616c75652c60408201527f20726563697069656e74206d6179206861766520726576657274656400000000606082015260800190565b6020808252601c908201527f426f6e646564546f6b656e3a20546f6b656e206973206c6f636b656400000000604082015260600190565b6020808252600c908201526b4552433732313a452d34303760a01b604082015260600190565b6020808252600c908201526b4552433732313a452d31303560a01b604082015260600190565b6020808252600990820152681414950e914b4c4c0d60ba1b604082015260600190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b6020808252600990820152685052543a452d31303760b81b604082015260600190565b6020808252600c908201526b22a9219b99189d229698981960a11b604082015260600190565b6020808252600990820152685052543a452d34313160b81b604082015260600190565b6020808252600990820152685052543a452d31303160b81b604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b6020808252600990820152685052543a452d34303160b81b604082015260600190565b6020808252600c908201526b4552433732313a452d34303560a01b604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252600990820152685052543a452d31303560b81b604082015260600190565b6020808252600c908201526b4552433732313a452d31313160a01b604082015260600190565b90815260200190565b9283526001600160a01b03919091166020830152604082015260600190565b6000808335601e198436030181126142ca578283fd5b83018035915067ffffffffffffffff8211156142e4578283fd5b602001915036819003821315611f8257600080fd5b60005b838110156143145781810151838201526020016142fc565b8381111561151b5750506000910152565b6001600160a01b0381168114610e3e57600080fd5b8015158114610e3e57600080fd5b6001600160e01b031981168114610e3e57600080fdfe312e302e302d626574612e312f636861726765642d7061727469636c65732e72656c61792e726563697069656e74a26469706673582212204c30e41ee9eea3cb004a553557158ceb3179c81cb33fc359fdc645bcc0d00c1964736f6c634300060c0033