Loading
[ { "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": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Bought", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "price", "type": "uint256" } ], "name": "ForSale", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "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": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "Bazaar", "outputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "price", "type": "uint256" }, { "internalType": "enum ERC721.TokenState", "name": "state", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "Bids", "outputs": [ { "internalType": "address", "name": "bidder", "type": "address" }, { "internalType": "uint256", "name": "highestBid", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_AVATARS", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "METADATA_PROVENANCE_HASH", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": "approveBid", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "bid", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "buy", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "count", "type": "uint256" } ], "name": "buyAvatars", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "calculatePrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "cancelTokenSale", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "emergencyWithdrawal", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "feeAddress1", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "feeAddress2", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "feeAddress3", "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": [], "name": "getWaitingBids", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "hasSaleStarted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": [], "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": "pauseDrop", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "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": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "baseURI", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_hash", "type": "string" } ], "name": "setProvenanceHash", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "setPrice", "type": "uint256" } ], "name": "setTokenPrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "startDrop", "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": [ { "internalType": "address", "name": "_owner", "type": "address" } ], "name": "tokensOfOwner", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "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": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "withdrawBid", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdrawal", "outputs": [], "stateMutability": "payable", "type": "function" } ]
60806040526000600c60146101000a81548160ff021916908315150217905550737b9c08898b60345671bac9091f438382a1fc4799600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073341b7cb6ad822cd6b2b18d3a42b5da1a721468fe600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f369ff2f36ba46cc37cf125ec62d3638ad378a58600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060405180602001604052806000815250601290805190602001906200014592919062000d32565b503480156200015357600080fd5b506040518060400160405280600881526020017f41766178746172730000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4156585400000000000000000000000000000000000000000000000000000000815250620001f17f01ffc9a700000000000000000000000000000000000000000000000000000000620004d560201b60201c565b81600890805190602001906200020992919062000d32565b5080600990805190602001906200022292919062000d32565b50620002547f80ac58cd00000000000000000000000000000000000000000000000000000000620004d560201b60201c565b620002857f5b5e139f00000000000000000000000000000000000000000000000000000000620004d560201b60201c565b620002b67f780e9d6300000000000000000000000000000000000000000000000000000000620004d560201b60201c565b50506000620002ca620005ad60201b60201c565b905080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35062000393604051806060016040528060238152602001620072a560239139620005b560201b60201c565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004cf3360006200065860201b60201c565b62001303565b63ffffffff60e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141562000541576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005389062000fc1565b60405180910390fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b620005c5620005ad60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620005eb6200067e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000644576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200063b9062001027565b60405180910390fd5b6200065581620006a860201b60201c565b50565b6200067a828260405180602001604052806000815250620006c460201b60201c565b5050565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b80600b9080519060200190620006c092919062000d32565b5050565b620006d683836200073260201b60201c565b620006eb6000848484620008e460201b60201c565b6200072d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007249062000f9f565b60405180910390fd5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620007a5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200079c9062001005565b60405180910390fd5b620007b68162000a9e60201b60201c565b15620007f9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007f09062000fe3565b60405180910390fd5b6200080d6000838362000ac260201b60201c565b6200086581600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002062000ac760201b620032821790919060201c565b50620008838183600462000ae960201b6200329c179092919060201c565b50808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6000620009128473ffffffffffffffffffffffffffffffffffffffff1662000b2660201b620032d11760201c565b1562000a91578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0262000944620005ad60201b60201c565b8786866040518563ffffffff1660e01b815260040162000968949392919062000f4b565b602060405180830381600087803b1580156200098357600080fd5b505af1925050508015620009b757506040513d601f19601f82011682018060405250810190620009b4919062000df9565b60015b62000a40573d8060008114620009ea576040519150601f19603f3d011682016040523d82523d6000602084013e620009ef565b606091505b5060008151141562000a38576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a2f9062000f9f565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505062000a96565b600190505b949350505050565b600062000abb82600462000b3960201b620032e41790919060201c565b9050919050565b505050565b600062000ae1836000018360001b62000b5b60201b60201c565b905092915050565b600062000b1d846000018460001b8473ffffffffffffffffffffffffffffffffffffffff1660001b62000bd560201b60201c565b90509392505050565b600080823b905060008111915050919050565b600062000b53836000018360001b62000cec60201b60201c565b905092915050565b600062000b6f838362000d0f60201b60201c565b62000bca57826000018290806001815401808255809150506001900390600052602060002001600090919091909150558260000180549050836001016000848152602001908152602001600020819055506001905062000bcf565b600090505b92915050565b600080846001016000858152602001908152602001600020549050600081141562000c7e5784600001604051806040016040528086815260200185815250908060018154018082558091505060019003906000526020600020906002020160009091909190915060008201518160000155602082015181600101555050846000018054905085600101600086815260200190815260200160002081905550600191505062000ce5565b828560000160018362000c92919062001076565b8154811062000cca577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600202016001018190555060009150505b9392505050565b600080836001016000848152602001908152602001600020541415905092915050565b600080836001016000848152602001908152602001600020541415905092915050565b82805462000d409062001151565b90600052602060002090601f01602090048101928262000d64576000855562000db0565b82601f1062000d7f57805160ff191683800117855562000db0565b8280016001018555821562000db0579182015b8281111562000daf57825182559160200191906001019062000d92565b5b50905062000dbf919062000dc3565b5090565b5b8082111562000dde57600081600090555060010162000dc4565b5090565b60008151905062000df381620012e9565b92915050565b60006020828403121562000e0c57600080fd5b600062000e1c8482850162000de2565b91505092915050565b62000e3081620010b1565b82525050565b600062000e438262001049565b62000e4f818562001054565b935062000e618185602086016200111b565b62000e6c81620011e5565b840191505092915050565b600062000e8660328362001065565b915062000e9382620011f6565b604082019050919050565b600062000ead601c8362001065565b915062000eba8262001245565b602082019050919050565b600062000ed4601c8362001065565b915062000ee1826200126e565b602082019050919050565b600062000efb60208362001065565b915062000f088262001297565b602082019050919050565b600062000f2260208362001065565b915062000f2f82620012c0565b602082019050919050565b62000f458162001111565b82525050565b600060808201905062000f62600083018762000e25565b62000f71602083018662000e25565b62000f80604083018562000f3a565b818103606083015262000f94818462000e36565b905095945050505050565b6000602082019050818103600083015262000fba8162000e77565b9050919050565b6000602082019050818103600083015262000fdc8162000e9e565b9050919050565b6000602082019050818103600083015262000ffe8162000ec5565b9050919050565b60006020820190508181036000830152620010208162000eec565b9050919050565b60006020820190508181036000830152620010428162000f13565b9050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000620010838262001111565b9150620010908362001111565b925082821015620010a657620010a562001187565b5b828203905092915050565b6000620010be82620010f1565b9050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b838110156200113b5780820151818401526020810190506200111e565b838111156200114b576000848401525b50505050565b600060028204905060018216806200116a57607f821691505b60208210811415620011815762001180620011b6565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4552433136353a20696e76616c696420696e7465726661636520696400000000600082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b620012f481620010c5565b81146200130057600080fd5b50565b615f9280620013136000396000f3fe6080604052600436106102675760003560e01c80636c0360eb11610144578063c0f16285116100b6578063d9dc9a911161007a578063d9dc9a91146108da578063e985e9c514610905578063eb685c4714610942578063eb78f95e1461096b578063f0c9dc6014610996578063f2fde38b146109c157610267565b8063c0f1628514610821578063c87b56dd1461084c578063d348b40914610889578063d4e93292146108b4578063d96a094a146108be57610267565b80638462151c116101085780638462151c146107115780638da5cb5b1461074e57806395d89b4114610779578063a22cb465146107a4578063a6bea44a146107cd578063b88d4fde146107f857610267565b80636c0360eb1461061557806370a0823114610640578063715018a61461067d57806374cd0c40146106945780637bd7525d146106d257610267565b80632bda5ac3116101dd5780634f6ccce7116101a15780634f6ccce71461052357806355f804b31461056057806356959718146105895780635b0a3843146105a5578063613e867e146105af5780636352211e146105d857610267565b80632bda5ac3146104615780632f745c591461048a57806334d84c7b146104c757806342842e0e146104de578063454a2ab31461050757610267565b8063109695231161022f578063109695231461037757806318160ddd146103a05780631b3b8b79146103cb5780631c8b232d146103f657806323b872dd146104215780632808c92c1461044a57610267565b806301ffc9a71461026c57806306fdde03146102a9578063081812fc146102d4578063095ea7b3146103115780630eaaf4c81461033a575b600080fd5b34801561027857600080fd5b50610293600480360381019061028e919061474e565b6109ea565b6040516102a09190614e77565b60405180910390f35b3480156102b557600080fd5b506102be610a51565b6040516102cb9190614e92565b60405180910390f35b3480156102e057600080fd5b506102fb60048036038101906102f691906147e1565b610ae3565b6040516103089190614dc5565b60405180910390f35b34801561031d57600080fd5b5061033860048036038101906103339190614712565b610b68565b005b34801561034657600080fd5b50610361600480360381019061035c91906147e1565b610c80565b60405161036e9190614e77565b60405180910390f35b34801561038357600080fd5b5061039e600480360381019061039991906147a0565b610e97565b005b3480156103ac57600080fd5b506103b5610f2d565b6040516103c29190615254565b60405180910390f35b3480156103d757600080fd5b506103e0610f3e565b6040516103ed9190614dc5565b60405180910390f35b34801561040257600080fd5b5061040b610f64565b6040516104189190614e77565b60405180910390f35b34801561042d57600080fd5b506104486004803603810190610443919061460c565b610f77565b005b34801561045657600080fd5b5061045f610fd7565b005b34801561046d57600080fd5b50610488600480360381019061048391906147e1565b611070565b005b34801561049657600080fd5b506104b160048036038101906104ac9190614712565b611132565b6040516104be9190615254565b60405180910390f35b3480156104d357600080fd5b506104dc61118d565b005b3480156104ea57600080fd5b506105056004803603810190610500919061460c565b611226565b005b610521600480360381019061051c91906147e1565b611246565b005b34801561052f57600080fd5b5061054a600480360381019061054591906147e1565b611527565b6040516105579190615254565b60405180910390f35b34801561056c57600080fd5b50610587600480360381019061058291906147a0565b61154a565b005b6105a3600480360381019061059e91906147e1565b6115d2565b005b6105ad611760565b005b3480156105bb57600080fd5b506105d660048036038101906105d191906147e1565b611944565b005b3480156105e457600080fd5b506105ff60048036038101906105fa91906147e1565b611d2b565b60405161060c9190614dc5565b60405180910390f35b34801561062157600080fd5b5061062a611d62565b6040516106379190614e92565b60405180910390f35b34801561064c57600080fd5b50610667600480360381019061066291906145a7565b611df4565b6040516106749190615254565b60405180910390f35b34801561068957600080fd5b50610692611eb3565b005b3480156106a057600080fd5b506106bb60048036038101906106b691906147e1565b611ff0565b6040516106c9929190614e2c565b60405180910390f35b3480156106de57600080fd5b506106f960048036038101906106f491906147e1565b612034565b6040516107089392919061526f565b60405180910390f35b34801561071d57600080fd5b50610738600480360381019061073391906145a7565b61206b565b6040516107459190614e55565b60405180910390f35b34801561075a57600080fd5b506107636121e7565b6040516107709190614dc5565b60405180910390f35b34801561078557600080fd5b5061078e612211565b60405161079b9190614e92565b60405180910390f35b3480156107b057600080fd5b506107cb60048036038101906107c691906146d6565b6122a3565b005b3480156107d957600080fd5b506107e2612424565b6040516107ef9190615254565b60405180910390f35b34801561080457600080fd5b5061081f600480360381019061081a919061465b565b61242a565b005b34801561082d57600080fd5b5061083661248c565b6040516108439190615254565b60405180910390f35b34801561085857600080fd5b50610873600480360381019061086e91906147e1565b61258a565b6040516108809190614e92565b60405180910390f35b34801561089557600080fd5b5061089e6126fd565b6040516108ab9190615254565b60405180910390f35b6108bc6128f3565b005b6108d860048036038101906108d391906147e1565b612ae9565b005b3480156108e657600080fd5b506108ef612ea5565b6040516108fc9190614dc5565b60405180910390f35b34801561091157600080fd5b5061092c600480360381019061092791906145d0565b612ecb565b6040516109399190614e77565b60405180910390f35b34801561094e57600080fd5b506109696004803603810190610964919061480a565b612f5f565b005b34801561097757600080fd5b50610980613022565b60405161098d9190614dc5565b60405180910390f35b3480156109a257600080fd5b506109ab613048565b6040516109b89190614e92565b60405180910390f35b3480156109cd57600080fd5b506109e860048036038101906109e391906145a7565b6130d6565b005b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060088054610a6090615599565b80601f0160208091040260200160405190810160405280929190818152602001828054610a8c90615599565b8015610ad95780601f10610aae57610100808354040283529160200191610ad9565b820191906000526020600020905b815481529060010190602001808311610abc57829003601f168201915b5050505050905090565b6000610aee826132fe565b610b2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b24906150b4565b60405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610b7382611d2b565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610be4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bdb906151b4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610c0361331b565b73ffffffffffffffffffffffffffffffffffffffff161480610c325750610c3181610c2c61331b565b612ecb565b5b610c71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6890615034565b60405180910390fd5b610c7b8383613323565b505050565b6000806013600084815260200190815260200160002060010154905060008111610cdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd690614fd4565b60405180910390fd5b6013600084815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d4d57600080fd5b80471015610d90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8790615214565b60405180910390fd5b60006013600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600060136000868152602001908152602001600020600101819055508073ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050610e4657816013600086815260200190815260200160002060010181905550600092505050610e92565b60136000858152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182016000905550506001925050505b919050565b610e9f61331b565b73ffffffffffffffffffffffffffffffffffffffff16610ebd6121e7565b73ffffffffffffffffffffffffffffffffffffffff1614610f13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0a906150d4565b60405180910390fd5b8060129080519060200190610f299291906143cb565b5050565b6000610f3960046133dc565b905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c60149054906101000a900460ff1681565b610f88610f8261331b565b826133f1565b610fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbe906151f4565b60405180910390fd5b610fd28383836134cf565b505050565b610fdf61331b565b73ffffffffffffffffffffffffffffffffffffffff16610ffd6121e7565b73ffffffffffffffffffffffffffffffffffffffff1614611053576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104a906150d4565b60405180910390fd5b6000600c60146101000a81548160ff021916908315150217905550565b61107981611d2b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110b057600080fd5b600160008281526020019081526020016000206001016000905560046001600083815260200190815260200160002060020160006101000a81548160ff0219169083600481111561112a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b021790555050565b600061118582600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206136ef90919063ffffffff16565b905092915050565b61119561331b565b73ffffffffffffffffffffffffffffffffffffffff166111b36121e7565b73ffffffffffffffffffffffffffffffffffffffff1614611209576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611200906150d4565b60405180910390fd5b6001600c60146101000a81548160ff021916908315150217905550565b6112418383836040518060200160405280600081525061242a565b505050565b61124e610f2d565b811115611290576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128790615194565b60405180910390fd5b601360008281526020019081526020016000206001015434116112e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112df90614eb4565b60405180910390fd5b6112f181611d2b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561135f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135690614f14565b60405180910390fd5b6000601360008381526020019081526020016000206001015411156114b3576013600082815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc60136000848152602001908152602001600020600101549081150290604051600060405180830381858888f1935050505061143e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143590615154565b60405180910390fd5b336013600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550346013600083815260200190815260200160002060010181905550611524565b346013600083815260200190815260200160002060010181905550336013600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b60008061153e83600461370990919063ffffffff16565b50905080915050919050565b61155261331b565b73ffffffffffffffffffffffffffffffffffffffff166115706121e7565b73ffffffffffffffffffffffffffffffffffffffff16146115c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bd906150d4565b60405180910390fd5b6115cf81613735565b50565b6127106115dd610f2d565b1061161d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611614906151d4565b60405180910390fd5b60008111801561162e575060058111155b61166d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166490615174565b60405180910390fd5b61271061168a8261167c610f2d565b61374f90919063ffffffff16565b11156116cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c290614ff4565b60405180910390fd5b6116e5816116d76126fd565b61376590919063ffffffff16565b341015611727576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171e906150f4565b60405180910390fd5b60005b8181101561175c57600061173c610f2d565b9050611748338261377b565b508080611754906155fc565b91505061172a565b5050565b61176861331b565b73ffffffffffffffffffffffffffffffffffffffff166117866121e7565b73ffffffffffffffffffffffffffffffffffffffff16146117dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d3906150d4565b60405180910390fd5b600047905060006002826117f091906153ff565b9050600060048361180191906153ff565b90506000818385611812919061548a565b61181c919061548a565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505061187e57600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050506118de57600080fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505061193e57600080fd5b50505050565b60006013600083815260200190815260200160002060010154905061196882611d2b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461199f57600080fd5b600081116119e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d990614fd4565b60405180910390fd5b80471015611a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1c90615214565b60405180910390fd5b6000611a3083611d2b565b90506000819050600060136000868152602001908152602001600020600101819055506000611a5e84613799565b90506000600282611a6f91906153ff565b90506000600483611a8091906153ff565b90506000818385611a91919061548a565b611a9b919061548a565b90506000611aa988866137bc565b90508573ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611af1573d6000803e3d6000fd5b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f19350505050158015611b5a573d6000803e3d6000fd5b50601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015611bc3573d6000803e3d6000fd5b50601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015611c2c573d6000803e3d6000fd5b50611c76611c398a611d2b565b601360008c815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168b6134cf565b6002600160008b815260200190815260200160002060020160006101000a81548160ff02191690836004811115611cd6577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b0217905550601360008a8152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560018201600090555050505050505050505050565b6000611d5b82604051806060016040528060298152602001615f346029913960046137d29092919063ffffffff16565b9050919050565b6060600b8054611d7190615599565b80601f0160208091040260200160405190810160405280929190818152602001828054611d9d90615599565b8015611dea5780601f10611dbf57610100808354040283529160200191611dea565b820191906000526020600020905b815481529060010190602001808311611dcd57829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5c90615054565b60405180910390fd5b611eac600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206137f1565b9050919050565b611ebb61331b565b73ffffffffffffffffffffffffffffffffffffffff16611ed96121e7565b73ffffffffffffffffffffffffffffffffffffffff1614611f2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f26906150d4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60136020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154905082565b60016020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900460ff16905083565b6060600061207883611df4565b905060008114156120fb57600067ffffffffffffffff8111156120c4577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156120f25781602001602082028036833780820191505090505b509150506121e2565b60008167ffffffffffffffff81111561213d577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561216b5781602001602082028036833780820191505090505b50905060005b828110156121db576121838582611132565b8282815181106121bc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101818152505080806121d3906155fc565b915050612171565b8193505050505b919050565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606009805461222090615599565b80601f016020809104026020016040519081016040528092919081815260200182805461224c90615599565b80156122995780601f1061226e57610100808354040283529160200191612299565b820191906000526020600020905b81548152906001019060200180831161227c57829003601f168201915b5050505050905090565b6122ab61331b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612319576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231090614fb4565b60405180910390fd5b806007600061232661331b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166123d361331b565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516124189190614e77565b60405180910390a35050565b61271081565b61243b61243561331b565b836133f1565b61247a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612471906151f4565b60405180910390fd5b61248684848484613806565b50505050565b600061249661331b565b73ffffffffffffffffffffffffffffffffffffffff166124b46121e7565b73ffffffffffffffffffffffffffffffffffffffff161461250a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612501906150d4565b60405180910390fd5b6000612514610f2d565b905060008060009050600091505b828210156125815760006013600084815260200190815260200160002060010154111561256e5760136000838152602001908152602001600020600101548161256b91906153a9565b90505b8180612579906155fc565b925050612522565b80935050505090565b6060612595826132fe565b6125d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125cb90615134565b60405180910390fd5b6000600a600084815260200190815260200160002080546125f490615599565b80601f016020809104026020016040519081016040528092919081815260200182805461262090615599565b801561266d5780601f106126425761010080835404028352916020019161266d565b820191906000526020600020905b81548152906001019060200180831161265057829003601f168201915b50505050509050600061267e611d62565b90506000815114156126945781925050506126f8565b6000825111156126c95780826040516020016126b1929190614da1565b604051602081830303815290604052925050506126f8565b806126d385613862565b6040516020016126e4929190614da1565b604051602081830303815290604052925050505b919050565b600060011515600c60149054906101000a900460ff16151514612755576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274c90615234565b60405180910390fd5b612710612760610f2d565b106127a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612797906151d4565b60405180910390fd5b60006127aa610f2d565b905061213481106127c6576729a2241af62c00009150506128f0565b61196481106127e057671bc16d674ec800009150506128f0565b61119481106127fa576714d1120d7b1600009150506128f0565b610dac811061281457671158e460913d00009150506128f0565b6109c4811061282e57670de0b6b3a76400009150506128f0565b6107d0811061284857670bcbce7f1b1500009150506128f0565b6105dc811061286257670b1a2bc2ec5000009150506128f0565b6104e2811061287c57670853a0d2313c00009150506128f0565b6103e88110612896576706f05b59d3b200009150506128f0565b6102ee81106128b05767058d15e1762800009150506128f0565b6101f481106128ca57670429d069189e00009150506128f0565b60fa81106128e3576702c68af0bb1400009150506128f0565b67016345785d8a00009150505b90565b6128fb61331b565b73ffffffffffffffffffffffffffffffffffffffff166129196121e7565b73ffffffffffffffffffffffffffffffffffffffff161461296f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612966906150d4565b60405180910390fd5b600061297961248c565b47612984919061548a565b9050600060028261299591906153ff565b905060006004836129a691906153ff565b905060008183856129b7919061548a565b6129c1919061548a565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050612a2357600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050612a8357600080fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050612ae357600080fd5b50505050565b6001600082815260200190815260200160002060010154341015612b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3990614ef4565b60405180910390fd5b6001600082815260200190815260200160002060020160009054906101000a900460ff166004811115612b9e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60016004811115612bd8577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b14612c18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0f90615194565b60405180910390fd5b6000612c2382611d2b565b905060008190506000600160008581526020019081526020016000206001015410612e28576000612c5334613799565b90506000600282612c6491906153ff565b90506000600483612c7591906153ff565b90506000818385612c86919061548a565b612c90919061548a565b90506000612c9e34866137bc565b90508573ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612ce6573d6000803e3d6000fd5b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f19350505050158015612d4f573d6000803e3d6000fd5b50601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015612db8573d6000803e3d6000fd5b50601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612e21573d6000803e3d6000fd5b5050505050505b612e3b612e3484611d2b565b33856134cf565b60026001600085815260200190815260200160002060020160006101000a81548160ff02191690836004811115612e9b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b0217905550505050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b612f6882611d2b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612f9f57600080fd5b806001600084815260200190815260200160002060010181905550600180600084815260200190815260200160002060020160006101000a81548160ff02191690836004811115613019577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b02179055505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6012805461305590615599565b80601f016020809104026020016040519081016040528092919081815260200182805461308190615599565b80156130ce5780601f106130a3576101008083540402835291602001916130ce565b820191906000526020600020905b8154815290600101906020018083116130b157829003601f168201915b505050505081565b6130de61331b565b73ffffffffffffffffffffffffffffffffffffffff166130fc6121e7565b73ffffffffffffffffffffffffffffffffffffffff1614613152576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613149906150d4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156131c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131b990614f54565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000613294836000018360001b613a0f565b905092915050565b60006132c8846000018460001b8473ffffffffffffffffffffffffffffffffffffffff1660001b613a7f565b90509392505050565b600080823b905060008111915050919050565b60006132f6836000018360001b613b91565b905092915050565b60006133148260046132e490919063ffffffff16565b9050919050565b600033905090565b816006600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661339683611d2b565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006133ea82600001613bb4565b9050919050565b60006133fc826132fe565b61343b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161343290615014565b60405180910390fd5b600061344683611d2b565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806134b557508373ffffffffffffffffffffffffffffffffffffffff1661349d84610ae3565b73ffffffffffffffffffffffffffffffffffffffff16145b806134c657506134c58185612ecb565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166134ef82611d2b565b73ffffffffffffffffffffffffffffffffffffffff1614613545576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161353c90615114565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156135b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135ac90614f94565b60405180910390fd5b6135c0838383613bc5565b6135cb600082613323565b61361c81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020613bca90919063ffffffff16565b5061366e81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061328290919063ffffffff16565b506136858183600461329c9092919063ffffffff16565b5061368f81613be4565b808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60006136fe8360000183613c66565b60001c905092915050565b60008060008061371c8660000186613d00565b915091508160001c8160001c9350935050509250929050565b80600b908051906020019061374b9291906143cb565b5050565b6000818361375d91906153a9565b905092915050565b600081836137739190615430565b905092915050565b613795828260405180602001604052806000815250613db0565b5050565b6000806137a7836005613765565b90506137b4816064613e0b565b915050919050565b600081836137ca919061548a565b905092915050565b60006137e5846000018460001b84613e21565b60001c90509392505050565b60006137ff82600001613ee8565b9050919050565b6138118484846134cf565b61381d84848484613ef9565b61385c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161385390614f34565b60405180910390fd5b50505050565b606060008214156138aa576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050613a0a565b600082905060005b600082146138dc5780806138c5906155fc565b915050600a826138d591906153ff565b91506138b2565b60008167ffffffffffffffff81111561391e577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156139505781602001600182028036833780820191505090505b5090505b60008514613a0357600182613969919061548a565b9150600a856139789190615645565b603061398491906153a9565b60f81b8183815181106139c0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856139fc91906153ff565b9450613954565b8093505050505b919050565b6000613a1b8383614090565b613a74578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050613a79565b600090505b92915050565b6000808460010160008581526020019081526020016000205490506000811415613b2657846000016040518060400160405280868152602001858152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508460000180549050856001016000868152602001908152602001600020819055506001915050613b8a565b8285600001600183613b38919061548a565b81548110613b6f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600202016001018190555060009150505b9392505050565b600080836001016000848152602001908152602001600020541415905092915050565b600081600001805490509050919050565b505050565b6000613bdc836000018360001b6140b3565b905092915050565b600160008281526020019081526020016000206001016000905560046001600083815260200190815260200160002060020160006101000a81548160ff02191690836004811115613c5e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b021790555050565b600081836000018054905011613cb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ca890614ed4565b60405180910390fd5b826000018281548110613ced577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154905092915050565b60008082846000018054905011613d4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d4390615074565b60405180910390fd5b6000846000018481548110613d8a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020906002020190508060000154816001015492509250509250929050565b613dba838361423d565b613dc76000848484613ef9565b613e06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613dfd90614f34565b60405180910390fd5b505050565b60008183613e1991906153ff565b905092915050565b60008084600101600085815260200190815260200160002054905060008114158390613e83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e7a9190614e92565b60405180910390fd5b5084600001600182613e95919061548a565b81548110613ecc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000209060020201600101549150509392505050565b600081600001805490509050919050565b6000613f1a8473ffffffffffffffffffffffffffffffffffffffff166132d1565b15614083578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02613f4361331b565b8786866040518563ffffffff1660e01b8152600401613f659493929190614de0565b602060405180830381600087803b158015613f7f57600080fd5b505af1925050508015613fb057506040513d601f19601f82011682018060405250810190613fad9190614777565b60015b614033573d8060008114613fe0576040519150601f19603f3d011682016040523d82523d6000602084013e613fe5565b606091505b5060008151141561402b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161402290614f34565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050614088565b600190505b949350505050565b600080836001016000848152602001908152602001600020541415905092915050565b600080836001016000848152602001908152602001600020549050600081146142315760006001826140e5919061548a565b90506000600186600001805490506140fd919061548a565b9050600086600001828154811061413d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154905080876000018481548110614187577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001819055506001836141a291906153a9565b87600101600083815260200190815260200160002081905550866000018054806141f5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050614237565b60009150505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156142ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016142a490615094565b60405180910390fd5b6142b6816132fe565b156142f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016142ed90614f74565b60405180910390fd5b61430260008383613bc5565b61435381600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061328290919063ffffffff16565b5061436a8183600461329c9092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b8280546143d790615599565b90600052602060002090601f0160209004810192826143f95760008555614440565b82601f1061441257805160ff1916838001178555614440565b82800160010185558215614440579182015b8281111561443f578251825591602001919060010190614424565b5b50905061444d9190614451565b5090565b5b8082111561446a576000816000905550600101614452565b5090565b600061448161447c846152cb565b6152a6565b90508281526020810184848401111561449957600080fd5b6144a4848285615557565b509392505050565b60006144bf6144ba846152fc565b6152a6565b9050828152602081018484840111156144d757600080fd5b6144e2848285615557565b509392505050565b6000813590506144f981615ed7565b92915050565b60008135905061450e81615eee565b92915050565b60008135905061452381615f05565b92915050565b60008151905061453881615f05565b92915050565b600082601f83011261454f57600080fd5b813561455f84826020860161446e565b91505092915050565b600082601f83011261457957600080fd5b81356145898482602086016144ac565b91505092915050565b6000813590506145a181615f1c565b92915050565b6000602082840312156145b957600080fd5b60006145c7848285016144ea565b91505092915050565b600080604083850312156145e357600080fd5b60006145f1858286016144ea565b9250506020614602858286016144ea565b9150509250929050565b60008060006060848603121561462157600080fd5b600061462f868287016144ea565b9350506020614640868287016144ea565b925050604061465186828701614592565b9150509250925092565b6000806000806080858703121561467157600080fd5b600061467f878288016144ea565b9450506020614690878288016144ea565b93505060406146a187828801614592565b925050606085013567ffffffffffffffff8111156146be57600080fd5b6146ca8782880161453e565b91505092959194509250565b600080604083850312156146e957600080fd5b60006146f7858286016144ea565b9250506020614708858286016144ff565b9150509250929050565b6000806040838503121561472557600080fd5b6000614733858286016144ea565b925050602061474485828601614592565b9150509250929050565b60006020828403121561476057600080fd5b600061476e84828501614514565b91505092915050565b60006020828403121561478957600080fd5b600061479784828501614529565b91505092915050565b6000602082840312156147b257600080fd5b600082013567ffffffffffffffff8111156147cc57600080fd5b6147d884828501614568565b91505092915050565b6000602082840312156147f357600080fd5b600061480184828501614592565b91505092915050565b6000806040838503121561481d57600080fd5b600061482b85828601614592565b925050602061483c85828601614592565b9150509250929050565b60006148528383614d83565b60208301905092915050565b614867816154be565b82525050565b60006148788261533d565b614882818561536b565b935061488d8361532d565b8060005b838110156148be5781516148a58882614846565b97506148b08361535e565b925050600181019050614891565b5085935050505092915050565b6148d4816154d0565b82525050565b60006148e582615348565b6148ef818561537c565b93506148ff818560208601615566565b61490881615761565b840191505092915050565b61491c81615545565b82525050565b600061492d82615353565b614937818561538d565b9350614947818560208601615566565b61495081615761565b840191505092915050565b600061496682615353565b614970818561539e565b9350614980818560208601615566565b80840191505092915050565b600061499960278361538d565b91506149a482615772565b604082019050919050565b60006149bc60228361538d565b91506149c7826157c1565b604082019050919050565b60006149df600b8361538d565b91506149ea82615810565b602082019050919050565b6000614a0260228361538d565b9150614a0d82615839565b604082019050919050565b6000614a2560328361538d565b9150614a3082615888565b604082019050919050565b6000614a4860268361538d565b9150614a53826158d7565b604082019050919050565b6000614a6b601c8361538d565b9150614a7682615926565b602082019050919050565b6000614a8e60248361538d565b9150614a998261594f565b604082019050919050565b6000614ab160198361538d565b9150614abc8261599e565b602082019050919050565b6000614ad460168361538d565b9150614adf826159c7565b602082019050919050565b6000614af760138361538d565b9150614b02826159f0565b602082019050919050565b6000614b1a602c8361538d565b9150614b2582615a19565b604082019050919050565b6000614b3d60388361538d565b9150614b4882615a68565b604082019050919050565b6000614b60602a8361538d565b9150614b6b82615ab7565b604082019050919050565b6000614b8360228361538d565b9150614b8e82615b06565b604082019050919050565b6000614ba660208361538d565b9150614bb182615b55565b602082019050919050565b6000614bc9602c8361538d565b9150614bd482615b7e565b604082019050919050565b6000614bec60208361538d565b9150614bf782615bcd565b602082019050919050565b6000614c0f60228361538d565b9150614c1a82615bf6565b604082019050919050565b6000614c3260298361538d565b9150614c3d82615c45565b604082019050919050565b6000614c55602f8361538d565b9150614c6082615c94565b604082019050919050565b6000614c78601b8361538d565b9150614c8382615ce3565b602082019050919050565b6000614c9b602e8361538d565b9150614ca682615d0c565b604082019050919050565b6000614cbe60078361538d565b9150614cc982615d5b565b602082019050919050565b6000614ce160218361538d565b9150614cec82615d84565b604082019050919050565b6000614d0460168361538d565b9150614d0f82615dd3565b602082019050919050565b6000614d2760318361538d565b9150614d3282615dfc565b604082019050919050565b6000614d4a602c8361538d565b9150614d5582615e4b565b604082019050919050565b6000614d6d60138361538d565b9150614d7882615e9a565b602082019050919050565b614d8c8161553b565b82525050565b614d9b8161553b565b82525050565b6000614dad828561495b565b9150614db9828461495b565b91508190509392505050565b6000602082019050614dda600083018461485e565b92915050565b6000608082019050614df5600083018761485e565b614e02602083018661485e565b614e0f6040830185614d92565b8181036060830152614e2181846148da565b905095945050505050565b6000604082019050614e41600083018561485e565b614e4e6020830184614d92565b9392505050565b60006020820190508181036000830152614e6f818461486d565b905092915050565b6000602082019050614e8c60008301846148cb565b92915050565b60006020820190508181036000830152614eac8184614922565b905092915050565b60006020820190508181036000830152614ecd8161498c565b9050919050565b60006020820190508181036000830152614eed816149af565b9050919050565b60006020820190508181036000830152614f0d816149d2565b9050919050565b60006020820190508181036000830152614f2d816149f5565b9050919050565b60006020820190508181036000830152614f4d81614a18565b9050919050565b60006020820190508181036000830152614f6d81614a3b565b9050919050565b60006020820190508181036000830152614f8d81614a5e565b9050919050565b60006020820190508181036000830152614fad81614a81565b9050919050565b60006020820190508181036000830152614fcd81614aa4565b9050919050565b60006020820190508181036000830152614fed81614ac7565b9050919050565b6000602082019050818103600083015261500d81614aea565b9050919050565b6000602082019050818103600083015261502d81614b0d565b9050919050565b6000602082019050818103600083015261504d81614b30565b9050919050565b6000602082019050818103600083015261506d81614b53565b9050919050565b6000602082019050818103600083015261508d81614b76565b9050919050565b600060208201905081810360008301526150ad81614b99565b9050919050565b600060208201905081810360008301526150cd81614bbc565b9050919050565b600060208201905081810360008301526150ed81614bdf565b9050919050565b6000602082019050818103600083015261510d81614c02565b9050919050565b6000602082019050818103600083015261512d81614c25565b9050919050565b6000602082019050818103600083015261514d81614c48565b9050919050565b6000602082019050818103600083015261516d81614c6b565b9050919050565b6000602082019050818103600083015261518d81614c8e565b9050919050565b600060208201905081810360008301526151ad81614cb1565b9050919050565b600060208201905081810360008301526151cd81614cd4565b9050919050565b600060208201905081810360008301526151ed81614cf7565b9050919050565b6000602082019050818103600083015261520d81614d1a565b9050919050565b6000602082019050818103600083015261522d81614d3d565b9050919050565b6000602082019050818103600083015261524d81614d60565b9050919050565b60006020820190506152696000830184614d92565b92915050565b60006060820190506152846000830186614d92565b6152916020830185614d92565b61529e6040830184614913565b949350505050565b60006152b06152c1565b90506152bc82826155cb565b919050565b6000604051905090565b600067ffffffffffffffff8211156152e6576152e5615732565b5b6152ef82615761565b9050602081019050919050565b600067ffffffffffffffff82111561531757615316615732565b5b61532082615761565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006153b48261553b565b91506153bf8361553b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156153f4576153f3615676565b5b828201905092915050565b600061540a8261553b565b91506154158361553b565b925082615425576154246156a5565b5b828204905092915050565b600061543b8261553b565b91506154468361553b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561547f5761547e615676565b5b828202905092915050565b60006154958261553b565b91506154a08361553b565b9250828210156154b3576154b2615676565b5b828203905092915050565b60006154c98261551b565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600081905061551682615ec3565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061555082615508565b9050919050565b82818337600083830152505050565b60005b83811015615584578082015181840152602081019050615569565b83811115615593576000848401525b50505050565b600060028204905060018216806155b157607f821691505b602082108114156155c5576155c4615703565b5b50919050565b6155d482615761565b810181811067ffffffffffffffff821117156155f3576155f2615732565b5b80604052505050565b60006156078261553b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561563a57615639615676565b5b600182019050919050565b60006156508261553b565b915061565b8361553b565b92508261566b5761566a6156a5565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f596f752063616e206f6e6c792062696420686967686572207468656e2068696760008201527f6865737442696400000000000000000000000000000000000000000000000000602082015250565b7f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b7f5072696365206973737565000000000000000000000000000000000000000000600082015250565b7f596f752063616e6e6f742062696420746f20796f7572206f776e20417661787460008201527f6172000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f5468657265206973206e6f206163746976652062696400000000000000000000600082015250565b7f45786365656473204d41585f4156415441525300000000000000000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f417661782076616c75652073656e742069732062656c6f77207468652070726960008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f436f756c646e742063616e63656c2070726576696f7573204269640000000000600082015250565b7f596f752063616e2067656e6572617465206d696e696d756d20312c206d61786960008201527f6d756d2035204176617874617273000000000000000000000000000000000000602082015250565b7f4e6f2053616c6500000000000000000000000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f53616c652068617320616c726561647920656e64656400000000000000000000600082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f43757272656e742062616c616e6365206973206e6f7420656e6f75676820666f60008201527f72207769746864726177616c0000000000000000000000000000000000000000602082015250565b7f53616c65206861736e2774207374617274656400000000000000000000000000600082015250565b60058110615ed457615ed36156d4565b5b50565b615ee0816154be565b8114615eeb57600080fd5b50565b615ef7816154d0565b8114615f0257600080fd5b50565b615f0e816154dc565b8114615f1957600080fd5b50565b615f258161553b565b8114615f3057600080fd5b5056fe4552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656ea264697066735822122045f0d9859227ad7aab242f6f692a98a7ceb5d23a700d8c0eef3b0109f111ff4964736f6c6343000801003368747470733a2f2f75732e61766178746172732e636f6d2f6170692f6176617461722f