Loading
[ { "inputs": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "string", "name": "baseTokenURI", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721IncorrectOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721InsufficientApproval", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC721InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "ERC721InvalidOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721InvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC721InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC721InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721NonexistentToken", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "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" } ], "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": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeMint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "newBaseTokenURI", "type": "string" } ], "name": "setBaseURI", "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" } ]
60806040523480156200001157600080fd5b5060405162002de738038062002de783398181016040528101906200003791906200035b565b33838381600090816200004b91906200065f565b5080600190816200005d91906200065f565b505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000d55760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000cc91906200078b565b60405180910390fd5b620000e6816200010260201b60201c565b508060089081620000f891906200065f565b50505050620007a8565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200023182620001e6565b810181811067ffffffffffffffff82111715620002535762000252620001f7565b5b80604052505050565b600062000268620001c8565b905062000276828262000226565b919050565b600067ffffffffffffffff821115620002995762000298620001f7565b5b620002a482620001e6565b9050602081019050919050565b60005b83811015620002d1578082015181840152602081019050620002b4565b60008484015250505050565b6000620002f4620002ee846200027b565b6200025c565b905082815260208101848484011115620003135762000312620001e1565b5b62000320848285620002b1565b509392505050565b600082601f83011262000340576200033f620001dc565b5b815162000352848260208601620002dd565b91505092915050565b600080600060608486031215620003775762000376620001d2565b5b600084015167ffffffffffffffff811115620003985762000397620001d7565b5b620003a68682870162000328565b935050602084015167ffffffffffffffff811115620003ca57620003c9620001d7565b5b620003d88682870162000328565b925050604084015167ffffffffffffffff811115620003fc57620003fb620001d7565b5b6200040a8682870162000328565b9150509250925092565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200046757607f821691505b6020821081036200047d576200047c6200041f565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004e77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620004a8565b620004f38683620004a8565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620005406200053a62000534846200050b565b62000515565b6200050b565b9050919050565b6000819050919050565b6200055c836200051f565b620005746200056b8262000547565b848454620004b5565b825550505050565b600090565b6200058b6200057c565b6200059881848462000551565b505050565b5b81811015620005c057620005b460008262000581565b6001810190506200059e565b5050565b601f8211156200060f57620005d98162000483565b620005e48462000498565b81016020851015620005f4578190505b6200060c620006038562000498565b8301826200059d565b50505b505050565b600082821c905092915050565b6000620006346000198460080262000614565b1980831691505092915050565b60006200064f838362000621565b9150826002028217905092915050565b6200066a8262000414565b67ffffffffffffffff811115620006865762000685620001f7565b5b6200069282546200044e565b6200069f828285620005c4565b600060209050601f831160018114620006d75760008415620006c2578287015190505b620006ce858262000641565b8655506200073e565b601f198416620006e78662000483565b60005b828110156200071157848901518255600182019150602085019450602081019050620006ea565b868310156200073157848901516200072d601f89168262000621565b8355505b6001600288020188555050505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007738262000746565b9050919050565b620007858162000766565b82525050565b6000602082019050620007a260008301846200077a565b92915050565b61262f80620007b86000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063715018a6116100a2578063a22cb46511610071578063a22cb465146102cb578063b88d4fde146102e7578063c87b56dd14610303578063e985e9c514610333578063f2fde38b1461036357610116565b8063715018a6146102695780638da5cb5b1461027357806395d89b4114610291578063a1448194146102af57610116565b806323b872dd116100e957806323b872dd146101b557806342842e0e146101d157806355f804b3146101ed5780636352211e1461020957806370a082311461023957610116565b806301ffc9a71461011b57806306fdde031461014b578063081812fc14610169578063095ea7b314610199575b600080fd5b61013560048036038101906101309190611b11565b61037f565b6040516101429190611b59565b60405180910390f35b610153610391565b6040516101609190611c04565b60405180910390f35b610183600480360381019061017e9190611c5c565b610423565b6040516101909190611cca565b60405180910390f35b6101b360048036038101906101ae9190611d11565b61043f565b005b6101cf60048036038101906101ca9190611d51565b610455565b005b6101eb60048036038101906101e69190611d51565b610557565b005b61020760048036038101906102029190611ed9565b610577565b005b610223600480360381019061021e9190611c5c565b610592565b6040516102309190611cca565b60405180910390f35b610253600480360381019061024e9190611f22565b6105a4565b6040516102609190611f5e565b60405180910390f35b61027161065e565b005b61027b610672565b6040516102889190611cca565b60405180910390f35b61029961069c565b6040516102a69190611c04565b60405180910390f35b6102c960048036038101906102c49190611d11565b61072e565b005b6102e560048036038101906102e09190611fa5565b610744565b005b61030160048036038101906102fc9190612086565b61075a565b005b61031d60048036038101906103189190611c5c565b610777565b60405161032a9190611c04565b60405180910390f35b61034d60048036038101906103489190612109565b610789565b60405161035a9190611b59565b60405180910390f35b61037d60048036038101906103789190611f22565b61081d565b005b600061038a826108a3565b9050919050565b6060600080546103a090612178565b80601f01602080910402602001604051908101604052809291908181526020018280546103cc90612178565b80156104195780601f106103ee57610100808354040283529160200191610419565b820191906000526020600020905b8154815290600101906020018083116103fc57829003601f168201915b5050505050905090565b600061042e82610904565b506104388261098c565b9050919050565b610451828261044c6109c9565b6109d1565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036104c75760006040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016104be9190611cca565b60405180910390fd5b60006104db83836104d66109c9565b6109e3565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610551578382826040517f64283d7b000000000000000000000000000000000000000000000000000000008152600401610548939291906121a9565b60405180910390fd5b50505050565b6105728383836040518060200160405280600081525061075a565b505050565b61057f610bfd565b806008908161058e919061238c565b5050565b600061059d82610904565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036106175760006040517f89c62b6400000000000000000000000000000000000000000000000000000000815260040161060e9190611cca565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610666610bfd565b6106706000610c84565b565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600180546106ab90612178565b80601f01602080910402602001604051908101604052809291908181526020018280546106d790612178565b80156107245780601f106106f957610100808354040283529160200191610724565b820191906000526020600020905b81548152906001019060200180831161070757829003601f168201915b5050505050905090565b610736610bfd565b6107408282610d4a565b5050565b61075661074f6109c9565b8383610d68565b5050565b610765848484610455565b61077184848484610ed7565b50505050565b60606107828261108e565b9050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610825610bfd565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036108975760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161088e9190611cca565b60405180910390fd5b6108a081610c84565b50565b6000634906490660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108fd57506108fc826111a1565b5b9050919050565b60008061091083611283565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361098357826040517f7e27328900000000000000000000000000000000000000000000000000000000815260040161097a9190611f5e565b60405180910390fd5b80915050919050565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600033905090565b6109de83838360016112c0565b505050565b6000806109ef84611283565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610a3157610a30818486611485565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610ac257610a736000856000806112c0565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614610b45576001600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b846002600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b610c056109c9565b73ffffffffffffffffffffffffffffffffffffffff16610c23610672565b73ffffffffffffffffffffffffffffffffffffffff1614610c8257610c466109c9565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610c799190611cca565b60405180910390fd5b565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b610d64828260405180602001604052806000815250611549565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dd957816040517f5b08ba18000000000000000000000000000000000000000000000000000000008152600401610dd09190611cca565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610eca9190611b59565b60405180910390a3505050565b60008373ffffffffffffffffffffffffffffffffffffffff163b1115611088578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02610f1b6109c9565b8685856040518563ffffffff1660e01b8152600401610f3d94939291906124b3565b6020604051808303816000875af1925050508015610f7957506040513d601f19601f82011682018060405250810190610f769190612514565b60015b610ffd573d8060008114610fa9576040519150601f19603f3d011682016040523d82523d6000602084013e610fae565b606091505b506000815103610ff557836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401610fec9190611cca565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461108657836040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161107d9190611cca565b60405180910390fd5b505b50505050565b606061109982610904565b5060006006600084815260200190815260200160002080546110ba90612178565b80601f01602080910402602001604051908101604052809291908181526020018280546110e690612178565b80156111335780601f1061110857610100808354040283529160200191611133565b820191906000526020600020905b81548152906001019060200180831161111657829003601f168201915b505050505090506000611144611565565b9050600081510361115957819250505061119c565b60008251111561118e57808260405160200161117692919061257d565b6040516020818303038152906040529250505061119c565b611197846115f7565b925050505b919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061126c57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061127c575061127b82611660565b5b9050919050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b80806112f95750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561142d57600061130984610904565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561137457508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561138757506113858184610789565b155b156113c957826040517fa9fbf51f0000000000000000000000000000000000000000000000000000000081526004016113c09190611cca565b60405180910390fd5b811561142b57838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b836004600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b6114908383836116ca565b61154457600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361150557806040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016114fc9190611f5e565b60405180910390fd5b81816040517f177e802f00000000000000000000000000000000000000000000000000000000815260040161153b9291906125a1565b60405180910390fd5b505050565b611553838361178b565b6115606000848484610ed7565b505050565b60606008805461157490612178565b80601f01602080910402602001604051908101604052809291908181526020018280546115a090612178565b80156115ed5780601f106115c2576101008083540402835291602001916115ed565b820191906000526020600020905b8154815290600101906020018083116115d057829003601f168201915b5050505050905090565b606061160282610904565b50600061160d611565565b9050600081511161162d5760405180602001604052806000815250611658565b8061163784611884565b60405160200161164892919061257d565b6040516020818303038152906040525b915050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561178257508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061174357506117428484610789565b5b8061178157508273ffffffffffffffffffffffffffffffffffffffff166117698361098c565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117fd5760006040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016117f49190611cca565b60405180910390fd5b600061180b838360006109e3565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461187f5760006040517f73c6ac6e0000000000000000000000000000000000000000000000000000000081526004016118769190611cca565b60405180910390fd5b505050565b60606000600161189384611952565b01905060008167ffffffffffffffff8111156118b2576118b1611dae565b5b6040519080825280601f01601f1916602001820160405280156118e45781602001600182028036833780820191505090505b509050600082602001820190505b600115611947578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161193b5761193a6125ca565b5b049450600085036118f2575b819350505050919050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106119b0577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816119a6576119a56125ca565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106119ed576d04ee2d6d415b85acef810000000083816119e3576119e26125ca565b5b0492506020810190505b662386f26fc100008310611a1c57662386f26fc100008381611a1257611a116125ca565b5b0492506010810190505b6305f5e1008310611a45576305f5e1008381611a3b57611a3a6125ca565b5b0492506008810190505b6127108310611a6a576127108381611a6057611a5f6125ca565b5b0492506004810190505b60648310611a8d5760648381611a8357611a826125ca565b5b0492506002810190505b600a8310611a9c576001810190505b80915050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611aee81611ab9565b8114611af957600080fd5b50565b600081359050611b0b81611ae5565b92915050565b600060208284031215611b2757611b26611aaf565b5b6000611b3584828501611afc565b91505092915050565b60008115159050919050565b611b5381611b3e565b82525050565b6000602082019050611b6e6000830184611b4a565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611bae578082015181840152602081019050611b93565b60008484015250505050565b6000601f19601f8301169050919050565b6000611bd682611b74565b611be08185611b7f565b9350611bf0818560208601611b90565b611bf981611bba565b840191505092915050565b60006020820190508181036000830152611c1e8184611bcb565b905092915050565b6000819050919050565b611c3981611c26565b8114611c4457600080fd5b50565b600081359050611c5681611c30565b92915050565b600060208284031215611c7257611c71611aaf565b5b6000611c8084828501611c47565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611cb482611c89565b9050919050565b611cc481611ca9565b82525050565b6000602082019050611cdf6000830184611cbb565b92915050565b611cee81611ca9565b8114611cf957600080fd5b50565b600081359050611d0b81611ce5565b92915050565b60008060408385031215611d2857611d27611aaf565b5b6000611d3685828601611cfc565b9250506020611d4785828601611c47565b9150509250929050565b600080600060608486031215611d6a57611d69611aaf565b5b6000611d7886828701611cfc565b9350506020611d8986828701611cfc565b9250506040611d9a86828701611c47565b9150509250925092565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611de682611bba565b810181811067ffffffffffffffff82111715611e0557611e04611dae565b5b80604052505050565b6000611e18611aa5565b9050611e248282611ddd565b919050565b600067ffffffffffffffff821115611e4457611e43611dae565b5b611e4d82611bba565b9050602081019050919050565b82818337600083830152505050565b6000611e7c611e7784611e29565b611e0e565b905082815260208101848484011115611e9857611e97611da9565b5b611ea3848285611e5a565b509392505050565b600082601f830112611ec057611ebf611da4565b5b8135611ed0848260208601611e69565b91505092915050565b600060208284031215611eef57611eee611aaf565b5b600082013567ffffffffffffffff811115611f0d57611f0c611ab4565b5b611f1984828501611eab565b91505092915050565b600060208284031215611f3857611f37611aaf565b5b6000611f4684828501611cfc565b91505092915050565b611f5881611c26565b82525050565b6000602082019050611f736000830184611f4f565b92915050565b611f8281611b3e565b8114611f8d57600080fd5b50565b600081359050611f9f81611f79565b92915050565b60008060408385031215611fbc57611fbb611aaf565b5b6000611fca85828601611cfc565b9250506020611fdb85828601611f90565b9150509250929050565b600067ffffffffffffffff82111561200057611fff611dae565b5b61200982611bba565b9050602081019050919050565b600061202961202484611fe5565b611e0e565b90508281526020810184848401111561204557612044611da9565b5b612050848285611e5a565b509392505050565b600082601f83011261206d5761206c611da4565b5b813561207d848260208601612016565b91505092915050565b600080600080608085870312156120a05761209f611aaf565b5b60006120ae87828801611cfc565b94505060206120bf87828801611cfc565b93505060406120d087828801611c47565b925050606085013567ffffffffffffffff8111156120f1576120f0611ab4565b5b6120fd87828801612058565b91505092959194509250565b600080604083850312156121205761211f611aaf565b5b600061212e85828601611cfc565b925050602061213f85828601611cfc565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061219057607f821691505b6020821081036121a3576121a2612149565b5b50919050565b60006060820190506121be6000830186611cbb565b6121cb6020830185611f4f565b6121d86040830184611cbb565b949350505050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026122427fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612205565b61224c8683612205565b95508019841693508086168417925050509392505050565b6000819050919050565b600061228961228461227f84611c26565b612264565b611c26565b9050919050565b6000819050919050565b6122a38361226e565b6122b76122af82612290565b848454612212565b825550505050565b600090565b6122cc6122bf565b6122d781848461229a565b505050565b5b818110156122fb576122f06000826122c4565b6001810190506122dd565b5050565b601f82111561234057612311816121e0565b61231a846121f5565b81016020851015612329578190505b61233d612335856121f5565b8301826122dc565b50505b505050565b600082821c905092915050565b600061236360001984600802612345565b1980831691505092915050565b600061237c8383612352565b9150826002028217905092915050565b61239582611b74565b67ffffffffffffffff8111156123ae576123ad611dae565b5b6123b88254612178565b6123c38282856122ff565b600060209050601f8311600181146123f657600084156123e4578287015190505b6123ee8582612370565b865550612456565b601f198416612404866121e0565b60005b8281101561242c57848901518255600182019150602085019450602081019050612407565b868310156124495784890151612445601f891682612352565b8355505b6001600288020188555050505b505050505050565b600081519050919050565b600082825260208201905092915050565b60006124858261245e565b61248f8185612469565b935061249f818560208601611b90565b6124a881611bba565b840191505092915050565b60006080820190506124c86000830187611cbb565b6124d56020830186611cbb565b6124e26040830185611f4f565b81810360608301526124f4818461247a565b905095945050505050565b60008151905061250e81611ae5565b92915050565b60006020828403121561252a57612529611aaf565b5b6000612538848285016124ff565b91505092915050565b600081905092915050565b600061255782611b74565b6125618185612541565b9350612571818560208601611b90565b80840191505092915050565b6000612589828561254c565b9150612595828461254c565b91508190509392505050565b60006040820190506125b66000830185611cbb565b6125c36020830184611f4f565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea2646970667358221220ec369f7744720efb5a02656ed2b19c1875523138ab14dfdc1449d4cfd49d7cf464736f6c63430008140033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000085361727567616d6900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045352474d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003268747470733a2f2f7372676d2e6e7963332e6469676974616c6f6365616e7370616365732e636f6d2f6d657461646174612f0000000000000000000000000000