Loading
[ { "inputs": [ { "internalType": "address", "name": "initialOwner", "type": "address" } ], "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": "_fromTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "_toTokenId", "type": "uint256" } ], "name": "BatchMetadataUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "MetadataUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "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": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "string", "name": "uri", "type": "string" } ], "name": "changeTokenURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "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": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "string", "name": "uri", "type": "string" } ], "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": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "setDefaultRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "setTokenRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60806040523480156200001157600080fd5b50604051620042ab380380620042ab8339818101604052810190620000379190620003fa565b6040518060400160405280601b81526020017f4469676974616c2054617065737472696573206279204c6f56696400000000008152506040518060400160405280600381526020017f48534100000000000000000000000000000000000000000000000000000000008152508160009081620000b49190620006a6565b508060019081620000c69190620006a6565b505050620000e9620000dd6200011560201b60201c565b6200011d60201b60201c565b620000fa816200011d60201b60201c565b6200010e816102ee620001e360201b60201c565b50620008a8565b600033905090565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620001f36200038660201b60201c565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff16111562000254576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200024b9062000814565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620002c6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002bd9062000886565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff16815250600760008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509050505050565b6000612710905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620003c28262000395565b9050919050565b620003d481620003b5565b8114620003e057600080fd5b50565b600081519050620003f481620003c9565b92915050565b60006020828403121562000413576200041262000390565b5b60006200042384828501620003e3565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620004ae57607f821691505b602082108103620004c457620004c362000466565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200052e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620004ef565b6200053a8683620004ef565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000587620005816200057b8462000552565b6200055c565b62000552565b9050919050565b6000819050919050565b620005a38362000566565b620005bb620005b2826200058e565b848454620004fc565b825550505050565b600090565b620005d2620005c3565b620005df81848462000598565b505050565b5b818110156200060757620005fb600082620005c8565b600181019050620005e5565b5050565b601f82111562000656576200062081620004ca565b6200062b84620004df565b810160208510156200063b578190505b620006536200064a85620004df565b830182620005e4565b50505b505050565b600082821c905092915050565b60006200067b600019846008026200065b565b1980831691505092915050565b600062000696838362000668565b9150826002028217905092915050565b620006b1826200042c565b67ffffffffffffffff811115620006cd57620006cc62000437565b5b620006d9825462000495565b620006e68282856200060b565b600060209050601f8311600181146200071e576000841562000709578287015190505b62000715858262000688565b86555062000785565b601f1984166200072e86620004ca565b60005b82811015620007585784890151825560018201915060208501945060208101905062000731565b8683101562000778578489015162000774601f89168262000668565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f455243323938313a20726f79616c7479206665652077696c6c2065786365656460008201527f2073616c65507269636500000000000000000000000000000000000000000000602082015250565b6000620007fc602a836200078d565b915062000809826200079e565b604082019050919050565b600060208201905081810360008301526200082f81620007ed565b9050919050565b7f455243323938313a20696e76616c696420726563656976657200000000000000600082015250565b60006200086e6019836200078d565b91506200087b8262000836565b602082019050919050565b60006020820190508181036000830152620008a1816200085f565b9050919050565b6139f380620008b86000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063a22cb4651161007c578063a22cb46514610339578063b88d4fde14610355578063c87b56dd14610371578063d204c45e146103a1578063e985e9c5146103bd578063f2fde38b146103ed57610137565b806370a08231146102a7578063715018a6146102d75780637fb3a9a2146102e15780638da5cb5b146102fd57806395d89b411461031b57610137565b806323b872dd116100ff57806323b872dd146101f25780632a55205a1461020e57806342842e0e1461023f5780635944c7531461025b5780636352211e1461027757610137565b806301ffc9a71461013c57806304634d8d1461016c57806306fdde0314610188578063081812fc146101a6578063095ea7b3146101d6575b600080fd5b610156600480360381019061015191906123aa565b610409565b60405161016391906123f2565b60405180910390f35b610186600480360381019061018191906124af565b61041b565b005b610190610431565b60405161019d919061257f565b60405180910390f35b6101c060048036038101906101bb91906125d7565b6104c3565b6040516101cd9190612613565b60405180910390f35b6101f060048036038101906101eb919061262e565b610509565b005b61020c6004803603810190610207919061266e565b610620565b005b610228600480360381019061022391906126c1565b610680565b604051610236929190612710565b60405180910390f35b6102596004803603810190610254919061266e565b61086a565b005b61027560048036038101906102709190612739565b61088a565b005b610291600480360381019061028c91906125d7565b6108a2565b60405161029e9190612613565b60405180910390f35b6102c160048036038101906102bc919061278c565b610928565b6040516102ce91906127b9565b60405180910390f35b6102df6109df565b005b6102fb60048036038101906102f69190612909565b6109f3565b005b610305610a51565b6040516103129190612613565b60405180910390f35b610323610a7b565b604051610330919061257f565b60405180910390f35b610353600480360381019061034e9190612991565b610b0d565b005b61036f600480360381019061036a9190612a72565b610b23565b005b61038b600480360381019061038691906125d7565b610b85565b604051610398919061257f565b60405180910390f35b6103bb60048036038101906103b69190612af5565b610b97565b005b6103d760048036038101906103d29190612b51565b610bd0565b6040516103e491906123f2565b60405180910390f35b6104076004803603810190610402919061278c565b610c64565b005b600061041482610ce7565b9050919050565b610423610d61565b61042d8282610ddf565b5050565b60606000805461044090612bc0565b80601f016020809104026020016040519081016040528092919081815260200182805461046c90612bc0565b80156104b95780601f1061048e576101008083540402835291602001916104b9565b820191906000526020600020905b81548152906001019060200180831161049c57829003601f168201915b5050505050905090565b60006104ce82610f74565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610514826108a2565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610584576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057b90612c63565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166105a3610fbf565b73ffffffffffffffffffffffffffffffffffffffff1614806105d257506105d1816105cc610fbf565b610bd0565b5b610611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060890612cf5565b60405180910390fd5b61061b8383610fc7565b505050565b61063161062b610fbf565b82611080565b610670576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066790612d87565b60405180910390fd5b61067b838383611115565b505050565b6000806000600860008681526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036108155760076040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152505090505b600061081f61140e565b6bffffffffffffffffffffffff1682602001516bffffffffffffffffffffffff168661084b9190612dd6565b6108559190612e47565b90508160000151819350935050509250929050565b61088583838360405180602001604052806000815250610b23565b505050565b610892610d61565b61089d838383611418565b505050565b6000806108ae836115bf565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361091f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091690612ec4565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098f90612f56565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109e7610d61565b6109f160006115fc565b565b6109fb610d61565b610a04826116c2565b610a43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3a90612fe8565b60405180910390fd5b610a4d8282611703565b5050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054610a8a90612bc0565b80601f0160208091040260200160405190810160405280929190818152602001828054610ab690612bc0565b8015610b035780601f10610ad857610100808354040283529160200191610b03565b820191906000526020600020905b815481529060010190602001808311610ae657829003601f168201915b5050505050905090565b610b1f610b18610fbf565b83836117a7565b5050565b610b34610b2e610fbf565b83611080565b610b73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6a90612d87565b60405180910390fd5b610b7f84848484611913565b50505050565b6060610b908261196f565b9050919050565b610b9f610d61565b6000610bab600a611a81565b9050610bb7600a611a8f565b610bc18382611aa5565b610bcb8183611703565b505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610c6c610d61565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610cdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd29061307a565b60405180910390fd5b610ce4816115fc565b50565b60007f2a55205a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d5a5750610d5982611ac3565b5b9050919050565b610d69610fbf565b73ffffffffffffffffffffffffffffffffffffffff16610d87610a51565b73ffffffffffffffffffffffffffffffffffffffff1614610ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd4906130e6565b60405180910390fd5b565b610de761140e565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff161115610e45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3c90613178565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610eb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eab906131e4565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff16815250600760008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509050505050565b610f7d816116c2565b610fbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb390612ec4565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661103a836108a2565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061108c836108a2565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806110ce57506110cd8185610bd0565b5b8061110c57508373ffffffffffffffffffffffffffffffffffffffff166110f4846104c3565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611135826108a2565b73ffffffffffffffffffffffffffffffffffffffff161461118b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118290613276565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f190613308565b60405180910390fd5b6112078383836001611b24565b8273ffffffffffffffffffffffffffffffffffffffff16611227826108a2565b73ffffffffffffffffffffffffffffffffffffffff161461127d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127490613276565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46114098383836001611b2a565b505050565b6000612710905090565b61142061140e565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff16111561147e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147590613178565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e490613374565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff168152506008600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550905050505050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008073ffffffffffffffffffffffffffffffffffffffff166116e4836115bf565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b61170c826116c2565b61174b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174290613406565b60405180910390fd5b8060066000848152602001908152602001600020908161176b91906135d2565b507ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce78260405161179b91906127b9565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180c906136f0565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161190691906123f2565b60405180910390a3505050565b61191e848484611115565b61192a84848484611b30565b611969576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196090613782565b60405180910390fd5b50505050565b606061197a82610f74565b600060066000848152602001908152602001600020805461199a90612bc0565b80601f01602080910402602001604051908101604052809291908181526020018280546119c690612bc0565b8015611a135780601f106119e857610100808354040283529160200191611a13565b820191906000526020600020905b8154815290600101906020018083116119f657829003601f168201915b505050505090506000611a24611cb7565b90506000815103611a39578192505050611a7c565b600082511115611a6e578082604051602001611a569291906137de565b60405160208183030381529060405292505050611a7c565b611a7784611cce565b925050505b919050565b600081600001549050919050565b6001816000016000828254019250508190555050565b611abf828260405180602001604052806000815250611d36565b5050565b6000634906490660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611b1d5750611b1c82611d91565b5b9050919050565b50505050565b50505050565b6000611b518473ffffffffffffffffffffffffffffffffffffffff16611e73565b15611caa578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611b7a610fbf565b8786866040518563ffffffff1660e01b8152600401611b9c9493929190613857565b6020604051808303816000875af1925050508015611bd857506040513d601f19601f82011682018060405250810190611bd591906138b8565b60015b611c5a573d8060008114611c08576040519150601f19603f3d011682016040523d82523d6000602084013e611c0d565b606091505b506000815103611c52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4990613782565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611caf565b600190505b949350505050565b606060405180602001604052806000815250905090565b6060611cd982610f74565b6000611ce3611cb7565b90506000815111611d035760405180602001604052806000815250611d2e565b80611d0d84611e96565b604051602001611d1e9291906137de565b6040516020818303038152906040525b915050919050565b611d408383611f64565b611d4d6000848484611b30565b611d8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8390613782565b60405180910390fd5b505050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611e5c57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611e6c5750611e6b82612181565b5b9050919050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b606060006001611ea5846121eb565b01905060008167ffffffffffffffff811115611ec457611ec36127de565b5b6040519080825280601f01601f191660200182016040528015611ef65781602001600182028036833780820191505090505b509050600082602001820190505b600115611f59578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581611f4d57611f4c612e18565b5b04945060008503611f04575b819350505050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fca90613931565b60405180910390fd5b611fdc816116c2565b1561201c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120139061399d565b60405180910390fd5b61202a600083836001611b24565b612033816116c2565b15612073576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206a9061399d565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461217d600083836001611b2a565b5050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612249577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161223f5761223e612e18565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310612286576d04ee2d6d415b85acef8100000000838161227c5761227b612e18565b5b0492506020810190505b662386f26fc1000083106122b557662386f26fc1000083816122ab576122aa612e18565b5b0492506010810190505b6305f5e10083106122de576305f5e10083816122d4576122d3612e18565b5b0492506008810190505b61271083106123035761271083816122f9576122f8612e18565b5b0492506004810190505b60648310612326576064838161231c5761231b612e18565b5b0492506002810190505b600a8310612335576001810190505b80915050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61238781612352565b811461239257600080fd5b50565b6000813590506123a48161237e565b92915050565b6000602082840312156123c0576123bf612348565b5b60006123ce84828501612395565b91505092915050565b60008115159050919050565b6123ec816123d7565b82525050565b600060208201905061240760008301846123e3565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006124388261240d565b9050919050565b6124488161242d565b811461245357600080fd5b50565b6000813590506124658161243f565b92915050565b60006bffffffffffffffffffffffff82169050919050565b61248c8161246b565b811461249757600080fd5b50565b6000813590506124a981612483565b92915050565b600080604083850312156124c6576124c5612348565b5b60006124d485828601612456565b92505060206124e58582860161249a565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561252957808201518184015260208101905061250e565b60008484015250505050565b6000601f19601f8301169050919050565b6000612551826124ef565b61255b81856124fa565b935061256b81856020860161250b565b61257481612535565b840191505092915050565b600060208201905081810360008301526125998184612546565b905092915050565b6000819050919050565b6125b4816125a1565b81146125bf57600080fd5b50565b6000813590506125d1816125ab565b92915050565b6000602082840312156125ed576125ec612348565b5b60006125fb848285016125c2565b91505092915050565b61260d8161242d565b82525050565b60006020820190506126286000830184612604565b92915050565b6000806040838503121561264557612644612348565b5b600061265385828601612456565b9250506020612664858286016125c2565b9150509250929050565b60008060006060848603121561268757612686612348565b5b600061269586828701612456565b93505060206126a686828701612456565b92505060406126b7868287016125c2565b9150509250925092565b600080604083850312156126d8576126d7612348565b5b60006126e6858286016125c2565b92505060206126f7858286016125c2565b9150509250929050565b61270a816125a1565b82525050565b60006040820190506127256000830185612604565b6127326020830184612701565b9392505050565b60008060006060848603121561275257612751612348565b5b6000612760868287016125c2565b935050602061277186828701612456565b92505060406127828682870161249a565b9150509250925092565b6000602082840312156127a2576127a1612348565b5b60006127b084828501612456565b91505092915050565b60006020820190506127ce6000830184612701565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61281682612535565b810181811067ffffffffffffffff82111715612835576128346127de565b5b80604052505050565b600061284861233e565b9050612854828261280d565b919050565b600067ffffffffffffffff821115612874576128736127de565b5b61287d82612535565b9050602081019050919050565b82818337600083830152505050565b60006128ac6128a784612859565b61283e565b9050828152602081018484840111156128c8576128c76127d9565b5b6128d384828561288a565b509392505050565b600082601f8301126128f0576128ef6127d4565b5b8135612900848260208601612899565b91505092915050565b600080604083850312156129205761291f612348565b5b600061292e858286016125c2565b925050602083013567ffffffffffffffff81111561294f5761294e61234d565b5b61295b858286016128db565b9150509250929050565b61296e816123d7565b811461297957600080fd5b50565b60008135905061298b81612965565b92915050565b600080604083850312156129a8576129a7612348565b5b60006129b685828601612456565b92505060206129c78582860161297c565b9150509250929050565b600067ffffffffffffffff8211156129ec576129eb6127de565b5b6129f582612535565b9050602081019050919050565b6000612a15612a10846129d1565b61283e565b905082815260208101848484011115612a3157612a306127d9565b5b612a3c84828561288a565b509392505050565b600082601f830112612a5957612a586127d4565b5b8135612a69848260208601612a02565b91505092915050565b60008060008060808587031215612a8c57612a8b612348565b5b6000612a9a87828801612456565b9450506020612aab87828801612456565b9350506040612abc878288016125c2565b925050606085013567ffffffffffffffff811115612add57612adc61234d565b5b612ae987828801612a44565b91505092959194509250565b60008060408385031215612b0c57612b0b612348565b5b6000612b1a85828601612456565b925050602083013567ffffffffffffffff811115612b3b57612b3a61234d565b5b612b47858286016128db565b9150509250929050565b60008060408385031215612b6857612b67612348565b5b6000612b7685828601612456565b9250506020612b8785828601612456565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612bd857607f821691505b602082108103612beb57612bea612b91565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c4d6021836124fa565b9150612c5882612bf1565b604082019050919050565b60006020820190508181036000830152612c7c81612c40565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b6000612cdf603d836124fa565b9150612cea82612c83565b604082019050919050565b60006020820190508181036000830152612d0e81612cd2565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b6000612d71602d836124fa565b9150612d7c82612d15565b604082019050919050565b60006020820190508181036000830152612da081612d64565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612de1826125a1565b9150612dec836125a1565b9250828202612dfa816125a1565b91508282048414831517612e1157612e10612da7565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612e52826125a1565b9150612e5d836125a1565b925082612e6d57612e6c612e18565b5b828204905092915050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000612eae6018836124fa565b9150612eb982612e78565b602082019050919050565b60006020820190508181036000830152612edd81612ea1565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b6000612f406029836124fa565b9150612f4b82612ee4565b604082019050919050565b60006020820190508181036000830152612f6f81612f33565b9050919050565b7f4552433732314d657461646174613a2055524920736574206f66206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000612fd2602c836124fa565b9150612fdd82612f76565b604082019050919050565b6000602082019050818103600083015261300181612fc5565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006130646026836124fa565b915061306f82613008565b604082019050919050565b6000602082019050818103600083015261309381613057565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006130d06020836124fa565b91506130db8261309a565b602082019050919050565b600060208201905081810360008301526130ff816130c3565b9050919050565b7f455243323938313a20726f79616c7479206665652077696c6c2065786365656460008201527f2073616c65507269636500000000000000000000000000000000000000000000602082015250565b6000613162602a836124fa565b915061316d82613106565b604082019050919050565b6000602082019050818103600083015261319181613155565b9050919050565b7f455243323938313a20696e76616c696420726563656976657200000000000000600082015250565b60006131ce6019836124fa565b91506131d982613198565b602082019050919050565b600060208201905081810360008301526131fd816131c1565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b60006132606025836124fa565b915061326b82613204565b604082019050919050565b6000602082019050818103600083015261328f81613253565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006132f26024836124fa565b91506132fd82613296565b604082019050919050565b60006020820190508181036000830152613321816132e5565b9050919050565b7f455243323938313a20496e76616c696420706172616d65746572730000000000600082015250565b600061335e601b836124fa565b915061336982613328565b602082019050919050565b6000602082019050818103600083015261338d81613351565b9050919050565b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b60006133f0602e836124fa565b91506133fb82613394565b604082019050919050565b6000602082019050818103600083015261341f816133e3565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026134887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261344b565b613492868361344b565b95508019841693508086168417925050509392505050565b6000819050919050565b60006134cf6134ca6134c5846125a1565b6134aa565b6125a1565b9050919050565b6000819050919050565b6134e9836134b4565b6134fd6134f5826134d6565b848454613458565b825550505050565b600090565b613512613505565b61351d8184846134e0565b505050565b5b818110156135415761353660008261350a565b600181019050613523565b5050565b601f8211156135865761355781613426565b6135608461343b565b8101602085101561356f578190505b61358361357b8561343b565b830182613522565b50505b505050565b600082821c905092915050565b60006135a96000198460080261358b565b1980831691505092915050565b60006135c28383613598565b9150826002028217905092915050565b6135db826124ef565b67ffffffffffffffff8111156135f4576135f36127de565b5b6135fe8254612bc0565b613609828285613545565b600060209050601f83116001811461363c576000841561362a578287015190505b61363485826135b6565b86555061369c565b601f19841661364a86613426565b60005b828110156136725784890151825560018201915060208501945060208101905061364d565b8683101561368f578489015161368b601f891682613598565b8355505b6001600288020188555050505b505050505050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b60006136da6019836124fa565b91506136e5826136a4565b602082019050919050565b60006020820190508181036000830152613709816136cd565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b600061376c6032836124fa565b915061377782613710565b604082019050919050565b6000602082019050818103600083015261379b8161375f565b9050919050565b600081905092915050565b60006137b8826124ef565b6137c281856137a2565b93506137d281856020860161250b565b80840191505092915050565b60006137ea82856137ad565b91506137f682846137ad565b91508190509392505050565b600081519050919050565b600082825260208201905092915050565b600061382982613802565b613833818561380d565b935061384381856020860161250b565b61384c81612535565b840191505092915050565b600060808201905061386c6000830187612604565b6138796020830186612604565b6138866040830185612701565b8181036060830152613898818461381e565b905095945050505050565b6000815190506138b28161237e565b92915050565b6000602082840312156138ce576138cd612348565b5b60006138dc848285016138a3565b91505092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b600061391b6020836124fa565b9150613926826138e5565b602082019050919050565b6000602082019050818103600083015261394a8161390e565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000613987601c836124fa565b915061399282613951565b602082019050919050565b600060208201905081810360008301526139b68161397a565b905091905056fea2646970667358221220bb928eff48edb2814221aaf4fc8059c7c18a23ca80dd00e58dd74e945acb055964736f6c634300081300330000000000000000000000002734b2ca6b17d6cef497d52cb47727e92391caba