[ { "inputs": [ { "internalType": "contract EIP20", "name": "paymentToken_", "type": "address" }, { "internalType": "address", "name": "owner_", "type": "address" }, { "internalType": "address", "name": "admin_", "type": "address" }, { "internalType": "uint256", "name": "commissionRate_", "type": "uint256" }, { "internalType": "uint256", "name": "royaltiesCommissionRate_", "type": "uint256" }, { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "bool", "name": "anyoneCanMint_", "type": "bool" } ], "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": false, "internalType": "address", "name": "winner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "AuctionEnded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newCommission", "type": "uint256" } ], "name": "ChangeCommissionRate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newCommission", "type": "uint256" } ], "name": "ChangeRoyaltiesCommissionRate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "rate", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "total", "type": "uint256" } ], "name": "Commission", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "bidder", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "HighestBidIncreased", "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": "amount", "type": "uint256" } ], "name": "LimitBuy", "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": "amount", "type": "uint256" } ], "name": "LimitSell", "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": "amount", "type": "uint256" } ], "name": "MarketBuy", "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": "amount", "type": "uint256" } ], "name": "MarketSell", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "bidder", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Refund", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "rate", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "total", "type": "uint256" } ], "name": "Royalty", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Sale", "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" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "addMinter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "admin", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "anyoneCanMint", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "auctionFinalize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "auctions", "outputs": [ { "internalType": "address", "name": "beneficiary", "type": "address" }, { "internalType": "uint256", "name": "auctionEnd", "type": "uint256" }, { "internalType": "address", "name": "highestBidder", "type": "address" }, { "internalType": "uint256", "name": "highestBid", "type": "uint256" }, { "internalType": "bool", "name": "open", "type": "bool" }, { "internalType": "uint256", "name": "reserve", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_tokenURI", "type": "string" }, { "internalType": "address", "name": "to", "type": "address" } ], "name": "autoMint", "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" }, { "internalType": "uint256", "name": "bid_value", "type": "uint256" } ], "name": "bid", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "buy", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "canAuction", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "canBid", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "canBuy", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "canFinalize", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "canIMint", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "canSell", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "canWithdraw", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "commissionRate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "contract_owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "_closingTime", "type": "uint256" }, { "internalType": "address", "name": "_beneficiary", "type": "address" }, { "internalType": "uint256", "name": "_reservePrice", "type": "uint256" } ], "name": "createAuction", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "creators", "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": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "getRoleMember", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleMemberCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "highestBid", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "highestBidder", "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": "account", "type": "address" } ], "name": "isMinter", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": "payment_token", "outputs": [ { "internalType": "contract EIP20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "royaltiesCommissionRate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "safeMint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeMint", "outputs": [], "stateMutability": "nonpayable", "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": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "price", "type": "uint256" }, { "internalType": "address", "name": "wallet", "type": "address" } ], "name": "sell", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "sellBidPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "soldFor", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "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": "_admin", "type": "address" }, { "internalType": "uint256", "name": "_commissionRate", "type": "uint256" }, { "internalType": "uint256", "name": "_royaltiesCommissionRate", "type": "uint256" }, { "internalType": "bool", "name": "_anyoneCanMint", "type": "bool" }, { "internalType": "contract EIP20", "name": "_payment_token", "type": "address" } ], "name": "updateAdmin", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_contract_owner", "type": "address" } ], "name": "updateOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60806040523480156200001157600080fd5b5060405162004e9d38038062004e9d83398101604081905262000034916200044d565b868383838282816000908051906020019062000052929190620002f4565b50805162000068906001906020840190620002f4565b506200007a915060009050856200018b565b620000a67f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6856200018b565b600e805460ff191691151591909117905550506001600f555060648511156200013b5760405162461bcd60e51b815260206004820152603860248201527f4552433732315375696b613a20436f6d6d697373696f6e20726174652068617360448201527f20746f206265206265747765656e203020616e64203130300000000000000000606482015260840160405180910390fd5b5050601080546001600160a01b03199081166001600160a01b039687161790915560118054821696861696909617909555506013919091556014556012805490921692169190911790556200058f565b620001a28282620001ce60201b620027461760201c565b6000828152600c60209081526040909120620001c991839062002750620001de821b17901c565b505050565b620001da8282620001fe565b5050565b6000620001f5836001600160a01b038416620002a2565b90505b92915050565b6000828152600b602090815260408083206001600160a01b038516845290915290205460ff16620001da576000828152600b602090815260408083206001600160a01b03851684529091529020805460ff191660011790556200025e3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000818152600183016020526040812054620002eb57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620001f8565b506000620001f8565b828054620003029062000523565b90600052602060002090601f01602090048101928262000326576000855562000371565b82601f106200034157805160ff191683800117855562000371565b8280016001018555821562000371579182015b828111156200037157825182559160200191906001019062000354565b506200037f92915062000383565b5090565b5b808211156200037f576000815560010162000384565b600082601f830112620003ab578081fd5b81516001600160401b0380821115620003c857620003c862000560565b604051601f8301601f19908116603f01168101908282118183101715620003f357620003f362000560565b816040528381526020925086838588010111156200040f578485fd5b8491505b8382101562000432578582018301518183018401529082019062000413565b838211156200044357848385830101525b9695505050505050565b600080600080600080600080610100898b0312156200046a578384fd5b8851620004778162000576565b60208a01519098506200048a8162000576565b60408a01519097506200049d8162000576565b60608a015160808b015160a08c015192985090965094506001600160401b0380821115620004c9578485fd5b620004d78c838d016200039a565b945060c08b0151915080821115620004ed578384fd5b50620004fc8b828c016200039a565b92505060e0890151801515811462000512578182fd5b809150509295985092959890939650565b600181811c908216806200053857607f821691505b602082108114156200055a57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146200058c57600080fd5b50565b6148fe806200059f6000396000f3fe608060405234801561001057600080fd5b50600436106103a45760003560e01c806389f4c0b1116101e9578063c87b56dd1161010f578063dc16bd43116100ad578063ee1b59e41161007c578063ee1b59e414610906578063f851a4401461090e578063fa184c4914610921578063fbe85f061461093457600080fd5b8063dc16bd4314610876578063e4e2bfe414610889578063e75722301461089c578063e985e9c5146108ca57600080fd5b8063d04c6983116100e9578063d04c698314610828578063d53913931461083b578063d547741f14610850578063d96a094a1461086357600080fd5b8063c87b56dd146107d9578063ca15c873146107ec578063cd53d08e146107ff57600080fd5b8063a22cb46511610187578063b14c63c511610156578063b14c63c51461077d578063b1cb48ef146107a0578063b2ecfad4146107b3578063b88d4fde146107c657600080fd5b8063a22cb4651461072a578063a36b14621461073d578063aa271e1a1461075d578063b13fbe961461077057600080fd5b806395d89b41116101c357806395d89b41146106f4578063983b2d56146106fc578063a14481941461070f578063a217fddf1461072257600080fd5b806389f4c0b1146106bb5780639010d07c146106ce57806391d14854146106e157600080fd5b8063384f58eb116102ce578063571a26a01161026c5780636352211e1161023b5780636352211e1461066f57806370a0823114610682578063880cdc31146106955780638832e6e3146106a857600080fd5b8063571a26a0146105ab578063598647f8146106405780635ea1d6f81461065357806361a09c971461065c57600080fd5b806342842e0e116102a857806342842e0e1461054657806342966c6814610559578063451df52e1461056c5780634f6ccce71461059857600080fd5b8063384f58eb1461050d5780633ca88a2f1461052057806340c10f191461053357600080fd5b806323b872dd116103465780632f745c59116103155780632f745c59146104cb578063331c6587146104de57806336568abe146104f1578063373f68d11461050457600080fd5b806323b872dd1461046f578063248a9ca3146104825780632e1a7d4d146104a55780632f2ff15d146104b857600080fd5b8063095ea7b311610382578063095ea7b314610411578063172b099d1461042657806318160ddd146104545780631ac70f6f1461045c57600080fd5b806301ffc9a7146103a957806306fdde03146103d1578063081812fc146103e6575b600080fd5b6103bc6103b73660046143b2565b610947565b60405190151581526020015b60405180910390f35b6103d9610958565b6040516103c891906145e1565b6103f96103f4366004614355565b6109ea565b6040516001600160a01b0390911681526020016103c8565b61042461041f366004614259565b610a77565b005b610446610434366004614355565b60176020526000908152604090205481565b6040519081526020016103c8565b600854610446565b6103bc61046a366004614355565b610b8d565b61042461047d366004614182565b610bdc565b610446610490366004614355565b6000908152600b602052604090206001015490565b6104246104b3366004614355565b610c0e565b6104246104c636600461436d565b610d63565b6104466104d9366004614259565b610d85565b6012546103f9906001600160a01b031681565b6104246104ff36600461436d565b610e1b565b61044660145481565b6011546103f9906001600160a01b031681565b61044661052e366004614355565b610e3d565b610424610541366004614259565b610ec1565b610424610554366004614182565b610ef1565b610424610567366004614355565b610f0c565b6103f961057a366004614355565b6000908152601960205260409020600201546001600160a01b031690565b6104466105a6366004614355565b610f86565b6106006105b9366004614355565b6019602052600090815260409020805460018201546002830154600384015460048501546005909501546001600160a01b0394851695939490921692909160ff9091169086565b604080516001600160a01b0397881681526020810196909652939095169284019290925260608301521515608082015260a081019190915260c0016103c8565b61042461064e366004614391565b611027565b61044660135481565b61042461066a3660046143ea565b61138a565b6103f961067d366004614355565b6113ec565b61044661069036600461412e565b611463565b6104246106a336600461412e565b6114ea565b6104246106b6366004614284565b6115c6565b6103bc6106c9366004614355565b6115f7565b6103f96106dc366004614391565b611685565b6103bc6106ef36600461436d565b6116a4565b6103d96116cf565b61042461070a36600461412e565b6116de565b61042461071d366004614259565b611713565b610446600081565b61042461073836600461422c565b611743565b61044661074b366004614355565b60166020526000908152604090205481565b6103bc61076b36600461412e565b611808565b600e546103bc9060ff1681565b61044661078b366004614355565b60009081526019602052604090206003015490565b6104246107ae36600461447a565b611822565b6103bc6107c1366004614355565b6119f5565b6104246107d43660046141c2565b611a2c565b6103d96107e7366004614355565b611a5e565b6104466107fa366004614355565b611a69565b6103f961080d366004614355565b6015602052600090815260409020546001600160a01b031681565b610424610836366004614442565b611a80565b6104466000805160206148a983398151915281565b61042461085e36600461436d565b611bca565b610424610871366004614355565b611bd4565b610424610884366004614355565b611f82565b6103bc610897366004614355565b612322565b6108af6108aa366004614355565b61239a565b604080519384526020840192909252908201526060016103c8565b6103bc6108d836600461414a565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6103bc612419565b6010546103f9906001600160a01b031681565b61042461092f3660046142db565b612436565b6103bc610942366004614355565b6126b1565b600061095282612765565b92915050565b606060008054610967906147c3565b80601f0160208091040260200160405190810160405280929190818152602001828054610993906147c3565b80156109e05780601f106109b5576101008083540402835291602001916109e0565b820191906000526020600020905b8154815290600101906020018083116109c357829003601f168201915b5050505050905090565b60006109f58261278a565b610a5b5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b6000610a82826113ec565b9050806001600160a01b0316836001600160a01b03161415610af05760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610a52565b336001600160a01b0382161480610b0c5750610b0c81336108d8565b610b7e5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610a52565b610b8883836127a7565b505050565b600033610b99836113ec565b6001600160a01b0316148015610bc1575060008281526019602052604090206004015460ff16155b80156109525750506000908152601760205260409020541590565b610be7335b82612815565b610c035760405162461bcd60e51b8152600401610a5290614696565b610b888383836128ff565b6002600f541415610c315760405162461bcd60e51b8152600401610a52906146e7565b6002600f55610c3f816126b1565b610c965760405162461bcd60e51b815260206004820152602260248201527f436f6e646974696f6e7320746f20776974686472617720617265206e6f74206d604482015261195d60f21b6064820152608401610a52565b6000818152601960208181526040808420815160c08101835281546001600160a01b03808216835260018401805484880152600285018054928316968501969096526003850180546060860190815260048701805460ff81161515608089015260058901805460a08a01528e8e529b909a526001600160a01b0319958616909755918a90559290911690945586905560ff19909316905592909155905115610d5a5760408101516060820151601254610d5a926001600160a01b0390911691612aaa565b50506001600f55565b610d6d8282612b0d565b6000828152600c60205260409020610b889082612750565b6000610d9083611463565b8210610df25760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610a52565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b610e258282612b33565b6000828152600c60205260409020610b889082612bad565b60008181526019602052604081206004015460ff16158015610e6c575060008281526017602052604090205415155b8015610e85575060008281526017602052604090205415155b8015610ea1575030610e96836109ea565b6001600160a01b0316145b15610eb9575060009081526017602052604090205490565b506000919050565b6060610ecb612419565b610ee75760405162461bcd60e51b8152600401610a5290614646565b610b888383612bc2565b610b8883838360405180602001604052806000815250611a2c565b610f1533610be1565b610f7a5760405162461bcd60e51b815260206004820152603060248201527f4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f7760448201526f1b995c881b9bdc88185c1c1c9bdd995960821b6064820152608401610a52565b610f8381612bea565b50565b6000610f9160085490565b8210610ff45760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610a52565b6008828154811061101557634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050919050565b6002600f54141561104a5760405162461bcd60e51b8152600401610a52906146e7565b6002600f553332146110925760405162461bcd60e51b81526020600482015260116024820152704e6f20736372697074206b69646469657360781b6044820152606401610a52565b60008281526019602052604090206004015460ff166110f35760405162461bcd60e51b815260206004820152601760248201527f4e6f206f70656e65642061756374696f6e20666f756e640000000000000000006044820152606401610a52565b306110fd836109ea565b6001600160a01b0316146111535760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f7420636f6d706c657465207468652061756374696f6e00000000006044820152606401610a52565b6000828152601960205260409020600101544211156111ad5760405162461bcd60e51b815260206004820152601660248201527520bab1ba34b7b71030b63932b0b23c9032b73232b21760511b6044820152606401610a52565b600082815260196020526040902060030154811161120d5760405162461bcd60e51b815260206004820152601e60248201527f546865726520616c7265616479206973206120686967686572206269642e00006044820152606401610a52565b6000611218836113ec565b9050336001600160a01b03821614156112915760405162461bcd60e51b815260206004820152603560248201527f4552433732315375696b613a20546865206f776e65722063616e6e6f742062696044820152746420686973206f776e20636f6c6c65637469626c6560581b6064820152608401610a52565b6000838152601960205260409020600281018054600390920180546001600160a01b0319841633179092558490556001600160a01b0390911690801561132b576012546112e8906001600160a01b03168383612aaa565b604080516001600160a01b0384168152602081018390527fbb28353e4598c3b9199101a66e0989549b659a59a54d2c27fbb183f1932c8e6d910160405180910390a15b601254611343906001600160a01b0316333087612bf3565b604080518581526020810187905233917fdafc4a123c6bb3b49dd38a0cba299808581a0126a37248a5f1102d5e5fa06337910160405180910390a250506001600f55505050565b6060611394612419565b6113b05760405162461bcd60e51b8152600401610a5290614646565b60005b6113c1600d80546001019055565b50600d546113ce8161278a565b6113b3576113dc8382612bc2565b6113e68185612c2b565b50505050565b6000818152600260205260408120546001600160a01b0316806109525760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610a52565b60006001600160a01b0382166114ce5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610a52565b506001600160a01b031660009081526003602052604090205490565b6011546001600160a01b031633146115445760405162461bcd60e51b815260206004820152601f60248201527f4f6e6c7920636f6e7472616374206f776e65722063616e20646f2074686973006044820152606401610a52565b61154f600082612cb6565b6115676000805160206148a983398151915282612cb6565b60115461158c906000805160206148a9833981519152906001600160a01b0316611bca565b6011546115a4906000906001600160a01b0316611bca565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b60606115d0612419565b6115ec5760405162461bcd60e51b8152600401610a5290614646565b6113e6848484612cc0565b60003332148015611619575060008281526019602052604090206004015460ff165b801561163657506000828152601960205260409020600101544211155b801561165c5750611646826113ec565b6001600160a01b0316336001600160a01b031614155b801561167857503061166d836109ea565b6001600160a01b0316145b15610eb957506001919050565b6000828152600c6020526040812061169d9083612cf3565b9392505050565b6000918252600b602090815260408084206001600160a01b0393909316845291905290205460ff1690565b606060018054610967906147c3565b6000805160206148a98339815191526116f78133612cff565b61170f6000805160206148a983398151915283610d63565b5050565b606061171d612419565b6117395760405162461bcd60e51b8152600401610a5290614646565b610b888383612d63565b6001600160a01b03821633141561179c5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610a52565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b60006109526000805160206148a9833981519152836116a4565b600084815260176020526040902054156118b05760405162461bcd60e51b815260206004820152604360248201527f4552433732315375696b613a205468652073656c6563746564204e465420697360448201527f206f70656e20666f722073616c652c2063616e6e6f742062652061756374696f6064820152621b995960ea1b608482015260a401610a52565b60008481526019602052604090206004015460ff161561192f5760405162461bcd60e51b815260206004820152603460248201527f4552433732315375696b613a205468652073656c6563746564204e465420616c6044820152733932b0b23c903430b99030b71030bab1ba34b7b760611b6064820152608401610a52565b33611939856113ec565b6001600160a01b0316146119a55760405162461bcd60e51b815260206004820152602d60248201527f4552433732315375696b613a204f6e6c79206f776e65722063616e206175637460448201526c696f6e2074686973206974656d60981b6064820152608401610a52565b600084815260196020526040902080546001600160a01b0319166001600160a01b0384161781556001808201859055600582018390556004909101805460ff191690911790556113e63085610a77565b600033611a01836113ec565b6001600160a01b031614801561095257505060009081526019602052604090206004015460ff161590565b611a363383612815565b611a525760405162461bcd60e51b8152600401610a5290614696565b6113e684848484612d7d565b606061095282612db0565b6000818152600c6020526040812061095290612f1f565b33611a8a846113ec565b6001600160a01b031614611af35760405162461bcd60e51b815260206004820152602a60248201527f4552433732315375696b613a204f6e6c79206f776e65722063616e2073656c6c6044820152692074686973206974656d60b01b6064820152608401610a52565b60008381526019602052604090206004015460ff1615611b7b5760405162461bcd60e51b815260206004820152603c60248201527f4552433732315375696b613a2043616e6e6f742073656c6c20616e206974656d60448201527f2077686963682068617320616e206163746976652061756374696f6e000000006064820152608401610a52565b60008381526017602052604090208290558115610b8857611b9c3084610a77565b600083815260186020526040902080546001600160a01b0383166001600160a01b0319909116179055505050565b610e258282612f29565b6002600f541415611bf75760405162461bcd60e51b8152600401610a52906146e7565b6002600f5560008181526019602052604090206004015460ff16158015611c2b575060008181526017602052604090205415155b611c8c5760405162461bcd60e51b815260206004820152602c60248201527f4552433732315375696b613a2054686520636f6c6c65637469626c652069732060448201526b6e6f7420666f722073616c6560a01b6064820152608401610a52565b6000611c97826113ec565b9050336001600160a01b0382161415611d115760405162461bcd60e51b815260206004820152603660248201527f4552433732315375696b613a205468652073656c6c65722063616e6e6f742062604482015275757920686973206f776e20636f6c6c65637469626c6560501b6064820152608401610a52565b60008281526017602090815260408083208054601890935281842080549490915580546001600160a01b0319169055516001600160a01b0384811660248301523360448301526064820186905291929190911690611daf9030906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612f4f565b6000606460135484611dc1919061474a565b611dcb9190614736565b90506000606460145485611ddf919061474a565b611de99190614736565b9050600081611df88487614769565b611e029190614769565b601254909150611e1d906001600160a01b0316338684612bf3565b8115611e4e57600087815260156020526040902054601254611e4e916001600160a01b039182169133911685612bf3565b8215611e7357601054601254611e73916001600160a01b039182169133911686612bf3565b336001600160a01b0316866001600160a01b0316887f88863d5e20f64464b554931394e2e4b6f09c10015147215bf26b3ba5070acebe88604051611eb991815260200190565b60405180910390a460135460408051878152602081019290925281018490526001600160a01b0387169088907fef7a63d352d8b0f42e35d7f8bd277ba75ba2ff721a50eaad4c62f1ee6561d5eb9060600160405180910390a360145460408051878152602081019290925281018390526001600160a01b0387169088907f69c21e0288fa2ee397e158571d58b093897385aaa1ccb8deacd82fc0e17a08bd9060600160405180910390a35050506000938452506016602052604090922091909155506001600f55565b6002600f541415611fa55760405162461bcd60e51b8152600401610a52906146e7565b6002600f55611fb381612322565b611ff15760405162461bcd60e51b815260206004820152600f60248201526e43616e6e6f742066696e616c697a6560881b6044820152606401610a52565b6000818152601960208181526040808420815160c08101835281546001600160a01b03808216835260018401805484880152600285018054928316968501969096526003850180546060860190815260048701805460ff81161515608089015260058901805460a08a01528e8e529b909a526001600160a01b0319958616909755918a90559290911690945586905560ff199093169055929091559051156122cf57604081015160135460608301516000916064916120b0919061474a565b6120ba9190614736565b90506000606460145485606001516120d2919061474a565b6120dc9190614736565b90506000818386606001516120f19190614769565b6120fb9190614769565b8551601254919250612117916001600160a01b03169083612aaa565b811561214657600086815260156020526040902054601254612146916001600160a01b03918216911684612aaa565b821561216957601054601254612169916001600160a01b03918216911685612aaa565b836001600160a01b031685600001516001600160a01b0316877f88863d5e20f64464b554931394e2e4b6f09c10015147215bf26b3ba5070acebe88606001516040516121b791815260200190565b60405180910390a4845160608087015160145460408051928352602083019190915281018590526001600160a01b039092169188917f69c21e0288fa2ee397e158571d58b093897385aaa1ccb8deacd82fc0e17a08bd910160405180910390a3845160608087015160135460408051928352602083019190915281018690526001600160a01b039092169188917fef7a63d352d8b0f42e35d7f8bd277ba75ba2ff721a50eaad4c62f1ee6561d5eb910160405180910390a3600061227a876113ec565b6040516001600160a01b03808316602483015287166044820152606481018990529091506122b59030906323b872dd60e01b90608401611d78565b505050606083015160008581526016602052604090205550505b604080820151606083015182516001600160a01b03909216825260208201527fdaec4582d5d9595688c8c98545fdd1c696d41c6aeaeb636737e84ed2f5c00eda910160405180910390a150506001600f55565b60008181526019602052604081206004015460ff16801561235457506000828152601960205260409020600101544210155b80156116785750600082815260196020526040902060058101546003909101541015806116785750600082815260196020526040902060030154610eb957506001919050565b60008181526017602052604081205481908190156123cb575050506000818152601760205260408120549080612412565b600084815260196020526040902060030154156123fd5750505060008181526019602052604081206003015481612412565b50505060008181526016602052604081205481905b9193909250565b600e5460009060ff1680612431575061243133611808565b905090565b6011546001600160a01b031633146124905760405162461bcd60e51b815260206004820152601f60248201527f4f6e6c7920636f6e7472616374206f776e65722063616e20646f2074686973006044820152606401610a52565b60648411156124fb5760405162461bcd60e51b815260206004820152603160248201527f436f6d6d697373696f6e20726174652068617320746f20626520657175616c2060448201527006f72206c6f776572207468616e2031303607c1b6064820152608401610a52565b60648311156125725760405162461bcd60e51b815260206004820152603b60248201527f526f79616c7469657320636f6d6d697373696f6e20726174652068617320746f60448201527f20626520657175616c206f72206c6f776572207468616e2031303000000000006064820152608401610a52565b606461257e848661471e565b11156125f25760405162461bcd60e51b815260206004820152603a60248201527f436f6d6d6973696f6e20706c757320726f79616c746965732068617320746f2060448201527f626520657175616c206f72206c6f776572207468616e203130300000000000006064820152608401610a52565b601080546001600160a01b03199081166001600160a01b038881169190911790925560138690556014859055600e805460ff1916851515179055601280549091169183169190911790556040518481527fad145483f4f1182927e701bcb8b2d65241c6b208d8955d22838b7c1b2eeb571b9060200160405180910390a17f85fd2bfa81cddf51ee0a99861344b04bcfdce281caab3de93be15f04902bcabd6014546040516126a291815260200190565b60405180910390a15050505050565b60008181526019602052604081206004015460ff168015611678575060008281526019602052604090206001015442108015906126fe575060008281526019602052604090206003015415155b8015612720575060008281526019602052604090206005810154600390910154105b80611678575030612730836109ea565b6001600160a01b031614610eb957506001919050565b61170f82826130da565b600061169d836001600160a01b038416613160565b60006001600160e01b03198216635a05180f60e01b14806109525750610952826131af565b6000908152600260205260409020546001600160a01b0316151590565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906127dc826113ec565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006128208261278a565b6128815760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610a52565b600061288c836113ec565b9050806001600160a01b0316846001600160a01b031614806128c75750836001600160a01b03166128bc846109ea565b6001600160a01b0316145b806128f757506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b0316612912826113ec565b6001600160a01b03161461297a5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610a52565b6001600160a01b0382166129dc5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610a52565b6129e78383836131d4565b6129f26000826127a7565b6001600160a01b0383166000908152600360205260408120805460019290612a1b908490614769565b90915550506001600160a01b0382166000908152600360205260408120805460019290612a4990849061471e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6040516001600160a01b038316602482015260448101829052610b8890849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526131df565b6000828152600b6020526040902060010154612b298133612cff565b610b8883836130da565b6001600160a01b0381163314612ba35760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610a52565b61170f82826132b1565b600061169d836001600160a01b038416613318565b600081815260156020526040902080546001600160a01b0319163317905561170f8282613435565b610f8381613574565b6040516001600160a01b03808516602483015283166044820152606481018290526113e69085906323b872dd60e01b90608401612ad6565b612c348261278a565b612c975760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b6064820152608401610a52565b6000828152600a602090815260409091208251610b8892840190613fca565b610d6d8282612746565b612cca8383612bc2565b612cd760008484846135b4565b610b885760405162461bcd60e51b8152600401610a52906145f4565b600061169d83836136c1565b612d0982826116a4565b61170f57612d21816001600160a01b031660146136f9565b612d2c8360206136f9565b604051602001612d3d92919061452f565b60408051601f198184030181529082905262461bcd60e51b8252610a52916004016145e1565b61170f828260405180602001604052806000815250612cc0565b612d888484846128ff565b612d94848484846135b4565b6113e65760405162461bcd60e51b8152600401610a52906145f4565b6060612dbb8261278a565b612e215760405162461bcd60e51b815260206004820152603160248201527f45524337323155524953746f726167653a2055524920717565727920666f72206044820152703737b732bc34b9ba32b73a103a37b5b2b760791b6064820152608401610a52565b6000828152600a602052604081208054612e3a906147c3565b80601f0160208091040260200160405190810160405280929190818152602001828054612e66906147c3565b8015612eb35780601f10612e8857610100808354040283529160200191612eb3565b820191906000526020600020905b815481529060010190602001808311612e9657829003601f168201915b505050505090506000612ed160408051602081019091526000815290565b9050805160001415612ee4575092915050565b815115612f16578082604051602001612efe929190614500565b60405160208183030381529060405292505050919050565b6128f7846138db565b6000610952825490565b6000828152600b6020526040902060010154612f458133612cff565b610b8883836132b1565b6001600160a01b0382163b612fa65760405162461bcd60e51b815260206004820181905260248201527f536166654552433732313a2063616c6c20746f206e6f6e2d636f6e74726163746044820152606401610a52565b600080836001600160a01b031683604051612fc191906144e4565b6000604051808303816000865af19150503d8060008114612ffe576040519150601f19603f3d011682016040523d82523d6000602084013e613003565b606091505b50915091508161305f5760405162461bcd60e51b815260206004820152602160248201527f536166654552433732313a206c6f772d6c6576656c2063616c6c206661696c656044820152601960fa1b6064820152608401610a52565b8051156113e6578080602001905181019061307a9190614339565b6113e65760405162461bcd60e51b815260206004820152602b60248201527f536166654552433732313a204552433230206f7065726174696f6e206469642060448201526a1b9bdd081cdd58d8d9595960aa1b6064820152608401610a52565b6130e482826116a4565b61170f576000828152600b602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561311c3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008181526001830160205260408120546131a757508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610952565b506000610952565b60006001600160e01b03198216637965db0b60e01b14806109525750610952826139b2565b610b888383836139d7565b6000613234826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613a8f9092919063ffffffff16565b805190915015610b8857808060200190518101906132529190614339565b610b885760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610a52565b6132bb82826116a4565b1561170f576000828152600b602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000818152600183016020526040812054801561342b57600061333c600183614769565b855490915060009061335090600190614769565b90508181146133d157600086600001828154811061337e57634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050808760000184815481106133af57634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910192909255918252600188019052604090208390555b85548690806133f057634e487b7160e01b600052603160045260246000fd5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610952565b6000915050610952565b6001600160a01b03821661348b5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610a52565b6134948161278a565b156134e15760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610a52565b6134ed600083836131d4565b6001600160a01b038216600090815260036020526040812080546001929061351690849061471e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b61357d81613a9e565b6000818152600a602052604090208054613596906147c3565b159050610f83576000818152600a60205260408120610f839161404e565b60006001600160a01b0384163b156136b657604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906135f89033908990889088906004016145a4565b602060405180830381600087803b15801561361257600080fd5b505af1925050508015613642575060408051601f3d908101601f1916820190925261363f918101906143ce565b60015b61369c573d808015613670576040519150601f19603f3d011682016040523d82523d6000602084013e613675565b606091505b5080516136945760405162461bcd60e51b8152600401610a52906145f4565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506128f7565b506001949350505050565b60008260000182815481106136e657634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905092915050565b6060600061370883600261474a565b61371390600261471e565b67ffffffffffffffff81111561373957634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015613763576020820181803683370190505b509050600360fc1b8160008151811061378c57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106137c957634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060006137ed84600261474a565b6137f890600161471e565b90505b600181111561388c576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061383a57634e487b7160e01b600052603260045260246000fd5b1a60f81b82828151811061385e57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060049490941c93613885816147ac565b90506137fb565b50831561169d5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610a52565b60606138e68261278a565b61394a5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610a52565b600061396160408051602081019091526000815290565b90506000815111613981576040518060200160405280600081525061169d565b8061398b84613b45565b60405160200161399c929190614500565b6040516020818303038152906040529392505050565b60006001600160e01b0319821663780e9d6360e01b1480610952575061095282613c5f565b6001600160a01b038316613a3257613a2d81600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b613a55565b816001600160a01b0316836001600160a01b031614613a5557613a558382613caf565b6001600160a01b038216613a6c57610b8881613d4c565b826001600160a01b0316826001600160a01b031614610b8857610b888282613e25565b60606128f78484600085613e69565b6000613aa9826113ec565b9050613ab7816000846131d4565b613ac26000836127a7565b6001600160a01b0381166000908152600360205260408120805460019290613aeb908490614769565b909155505060008281526002602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b606081613b695750506040805180820190915260018152600360fc1b602082015290565b8160005b8115613b935780613b7d816147fe565b9150613b8c9050600a83614736565b9150613b6d565b60008167ffffffffffffffff811115613bbc57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015613be6576020820181803683370190505b5090505b84156128f757613bfb600183614769565b9150613c08600a86614819565b613c1390603061471e565b60f81b818381518110613c3657634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350613c58600a86614736565b9450613bea565b60006001600160e01b031982166380ac58cd60e01b1480613c9057506001600160e01b03198216635b5e139f60e01b145b8061095257506301ffc9a760e01b6001600160e01b0319831614610952565b60006001613cbc84611463565b613cc69190614769565b600083815260076020526040902054909150808214613d19576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b600854600090613d5e90600190614769565b60008381526009602052604081205460088054939450909284908110613d9457634e487b7160e01b600052603260045260246000fd5b906000526020600020015490508060088381548110613dc357634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910192909255828152600990915260408082208490558582528120556008805480613e0957634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b6000613e3083611463565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b606082471015613eca5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610a52565b843b613f185760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a52565b600080866001600160a01b03168587604051613f3491906144e4565b60006040518083038185875af1925050503d8060008114613f71576040519150601f19603f3d011682016040523d82523d6000602084013e613f76565b606091505b5091509150613f86828286613f91565b979650505050505050565b60608315613fa057508161169d565b825115613fb05782518084602001fd5b8160405162461bcd60e51b8152600401610a5291906145e1565b828054613fd6906147c3565b90600052602060002090601f016020900481019282613ff8576000855561403e565b82601f1061401157805160ff191683800117855561403e565b8280016001018555821561403e579182015b8281111561403e578251825591602001919060010190614023565b5061404a929150614084565b5090565b50805461405a906147c3565b6000825580601f1061406a575050565b601f016020900490600052602060002090810190610f8391905b5b8082111561404a5760008155600101614085565b600067ffffffffffffffff808411156140b4576140b4614859565b604051601f8501601f19908116603f011681019082821181831017156140dc576140dc614859565b816040528093508581528686860111156140f557600080fd5b858560208301376000602087830101525050509392505050565b600082601f83011261411f578081fd5b61169d83833560208501614099565b60006020828403121561413f578081fd5b813561169d8161486f565b6000806040838503121561415c578081fd5b82356141678161486f565b915060208301356141778161486f565b809150509250929050565b600080600060608486031215614196578081fd5b83356141a18161486f565b925060208401356141b18161486f565b929592945050506040919091013590565b600080600080608085870312156141d7578081fd5b84356141e28161486f565b935060208501356141f28161486f565b925060408501359150606085013567ffffffffffffffff811115614214578182fd5b6142208782880161410f565b91505092959194509250565b6000806040838503121561423e578182fd5b82356142498161486f565b9150602083013561417781614884565b6000806040838503121561426b578182fd5b82356142768161486f565b946020939093013593505050565b600080600060608486031215614298578283fd5b83356142a38161486f565b925060208401359150604084013567ffffffffffffffff8111156142c5578182fd5b6142d18682870161410f565b9150509250925092565b600080600080600060a086880312156142f2578081fd5b85356142fd8161486f565b94506020860135935060408601359250606086013561431b81614884565b9150608086013561432b8161486f565b809150509295509295909350565b60006020828403121561434a578081fd5b815161169d81614884565b600060208284031215614366578081fd5b5035919050565b6000806040838503121561437f578081fd5b8235915060208301356141778161486f565b600080604083850312156143a3578182fd5b50508035926020909101359150565b6000602082840312156143c3578081fd5b813561169d81614892565b6000602082840312156143df578081fd5b815161169d81614892565b600080604083850312156143fc578182fd5b823567ffffffffffffffff811115614412578283fd5b8301601f81018513614422578283fd5b61443185823560208401614099565b92505060208301356141778161486f565b600080600060608486031215614456578081fd5b8335925060208401359150604084013561446f8161486f565b809150509250925092565b6000806000806080858703121561448f578182fd5b843593506020850135925060408501356144a88161486f565b9396929550929360600135925050565b600081518084526144d0816020860160208601614780565b601f01601f19169290920160200192915050565b600082516144f6818460208701614780565b9190910192915050565b60008351614512818460208801614780565b835190830190614526818360208801614780565b01949350505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351614567816017850160208801614780565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351614598816028840160208801614780565b01602801949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906145d7908301846144b8565b9695505050505050565b60208152600061169d60208301846144b8565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526030908201527f4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766560408201526f20746865204d696e74657220726f6c6560801b606082015260800190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b600082198211156147315761473161482d565b500190565b60008261474557614745614843565b500490565b60008160001904831182151516156147645761476461482d565b500290565b60008282101561477b5761477b61482d565b500390565b60005b8381101561479b578181015183820152602001614783565b838111156113e65750506000910152565b6000816147bb576147bb61482d565b506000190190565b600181811c908216806147d757607f821691505b602082108114156147f857634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156148125761481261482d565b5060010190565b60008261482857614828614843565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610f8357600080fd5b8015158114610f8357600080fd5b6001600160e01b031981168114610f8357600080fdfe9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6a26469706673582212201ab10842004fcd639e36fe6eed532559cc04a894d97c2ca3988f48a8ca3fec5a64736f6c6343000804003300000000000000000000000098b8bd236591a24f079e5190c8c68d673b93364b00000000000000000000000049fe41dcaa4a1a97e95d0eeef5de009862bddaa100000000000000000000000049fe41dcaa4a1a97e95d0eeef5de009862bddaa1000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a43727970746f5665727365204e465420436f6c6c656374696f6e000000000000000000000000000000000000000000000000000000000000000000000000000343564e0000000000000000000000000000000000000000000000000000000000