[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "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": [], "name": "MAX_CAP", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_id", "type": "uint256" } ], "name": "_exists", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "addrToId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "_addresses", "type": "address[]" } ], "name": "airdropToAddresses", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "allTransfersLocked", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_approved", "type": "address" }, { "internalType": "uint256", "name": "_id", "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": "_id", "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": [ { "internalType": "bool", "name": "_locked", "type": "bool" } ], "name": "lockAllTransfers", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_id", "type": "uint256" }, { "internalType": "bool", "name": "_locked", "type": "bool" } ], "name": "lockTransfer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "metadataUri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "name_ret", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_mintingAmount", "type": "uint256" }, { "internalType": "address", "name": "_mintingTo", "type": "address" } ], "name": "ownerMintTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_id", "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": "_from", "type": "address" }, { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_id", "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": "_id", "type": "uint256" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_newAdmin", "type": "address" }, { "internalType": "bool", "name": "_isAdmin", "type": "bool" } ], "name": "setAdmin", "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": "_uri", "type": "string" } ], "name": "setURI", "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": "symbol_ret", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_id", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_from", "type": "address" }, { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_id", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "transferLocks", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address payable", "name": "recipient", "type": "address" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
608060405260016004556000600a60006101000a81548160ff0219169083151502179055506103fc600d553480156200003757600080fd5b50620000586200004c6200012260201b60201c565b6200012a60201b60201c565b6040518060400160405280601d81526020017f466f756e64657273205061737320536b696e20436f6c6c656374696f6e00000081525060019080519060200190620000a5929190620001ee565b506040518060400160405280600b81526020017f464f554e444552534b494e00000000000000000000000000000000000000000081525060029080519060200190620000f3929190620001ee565b5060405180602001604052806000815250600390805190602001906200011b929190620001ee565b5062000303565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620001fc906200029e565b90600052602060002090601f0160209004810192826200022057600085556200026c565b82601f106200023b57805160ff19168380011785556200026c565b828001600101855582156200026c579182015b828111156200026b5782518255916020019190600101906200024e565b5b5090506200027b91906200027f565b5090565b5b808211156200029a57600081600090555060010162000280565b5090565b60006002820490506001821680620002b757607f821691505b60208210811415620002ce57620002cd620002d4565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b61382a80620003136000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c806377a4d55911610104578063b88d4fde116100a2578063e985e9c511610071578063e985e9c51461053f578063f099d5bb1461056f578063f2fde38b1461058b578063f8e76cc0146105a7576101da565b8063b88d4fde146104b7578063c39cca04146104d3578063c87b56dd146104f1578063d669e1d414610521576101da565b80638da5cb5b116100de5780638da5cb5b1461042f57806395d89b411461044d578063a22cb4651461046b578063a33c4df114610487576101da565b806377a4d559146103c55780637e9438c9146103e35780638c47a507146103ff576101da565b806323b872dd1161017c57806351cff8d91161014b57806351cff8d91461033f5780636352211e1461035b57806370a082311461038b578063715018a6146103bb576101da565b806323b872dd146102cf57806333b57274146102eb57806342842e0e146103075780634b0bddd214610323576101da565b8063081812fc116101b8578063081812fc14610249578063095ea7b31461027957806313097b791461029557806318160ddd146102b1576101da565b806301ffc9a7146101df57806302fe53051461020f57806306fdde031461022b575b600080fd5b6101f960048036038101906101f491906128f3565b6105d7565b6040516102069190613128565b60405180910390f35b61022960048036038101906102249190612945565b6106b9565b005b61023361074b565b6040516102409190613143565b60405180910390f35b610263600480360381019061025e919061298a565b6107dd565b60405161027091906130c1565b60405180910390f35b610293600480360381019061028e919061284d565b610862565b005b6102af60048036038101906102aa91906129b3565b61099f565b005b6102b9610a86565b6040516102c69190613385565b60405180910390f35b6102e960048036038101906102e49190612747565b610a9c565b005b610305600480360381019061030091906129ef565b610aac565b005b610321600480360381019061031c9190612747565b610bb6565b005b61033d60048036038101906103389190612811565b610bd6565b005b610359600480360381019061035491906126e2565b610cad565b005b6103756004803603810190610370919061298a565b610d79565b60405161038291906130c1565b60405180910390f35b6103a560048036038101906103a091906126b9565b610d8b565b6040516103b29190613385565b60405180910390f35b6103c3610dd4565b005b6103cd610e5c565b6040516103da9190613143565b60405180910390f35b6103fd60048036038101906103f89190612889565b610eea565b005b6104196004803603810190610414919061298a565b611032565b6040516104269190613128565b60405180910390f35b610437611052565b60405161044491906130c1565b60405180910390f35b61045561107b565b6040516104629190613143565b60405180910390f35b61048560048036038101906104809190612811565b61110d565b005b6104a1600480360381019061049c91906126b9565b6112a7565b6040516104ae9190613385565b60405180910390f35b6104d160048036038101906104cc9190612796565b6112bf565b005b6104db61131b565b6040516104e89190613128565b60405180910390f35b61050b6004803603810190610506919061298a565b61132e565b6040516105189190613143565b60405180910390f35b6105296113d7565b6040516105369190613385565b60405180910390f35b6105596004803603810190610554919061270b565b6113dd565b6040516105669190613128565b60405180910390f35b610589600480360381019061058491906128ca565b611471565b005b6105a560048036038101906105a091906126b9565b61150a565b005b6105c160048036038101906105bc919061298a565b611602565b6040516105ce9190613128565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106a257507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806106b257506106b18261161b565b5b9050919050565b6106c1611685565b73ffffffffffffffffffffffffffffffffffffffff166106df611052565b73ffffffffffffffffffffffffffffffffffffffff1614610735576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072c90613285565b60405180910390fd5b818160039190610746929190612450565b505050565b60606001805461075a90613608565b80601f016020809104026020016040519081016040528092919081815260200182805461078690613608565b80156107d35780601f106107a8576101008083540402835291602001916107d3565b820191906000526020600020905b8154815290600101906020018083116107b657829003601f168201915b5050505050905090565b60006107e882611602565b610827576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081e90613325565b60405180910390fd5b6007600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b61086a611052565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156108b15750600a60009054906101000a900460ff165b156108f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e890613205565b60405180910390fd5b60006108fc8261168d565b90508073ffffffffffffffffffffffffffffffffffffffff1661091d611685565b73ffffffffffffffffffffffffffffffffffffffff161415801561094f575061094d81610948611685565b6113dd565b155b1561098f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098690613265565b60405180910390fd5b61099a818484611760565b505050565b6109a7611685565b73ffffffffffffffffffffffffffffffffffffffff166109c5611052565b73ffffffffffffffffffffffffffffffffffffffff1614610a1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1290613285565b60405180910390fd5b6000610a25610a86565b9050600d548382610a369190613485565b1115610a77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6e90613225565b60405180910390fd5b610a818284611812565b505050565b60006001600454610a97919061350c565b905090565b610aa7838383611a9d565b505050565b610ab4611052565b73ffffffffffffffffffffffffffffffffffffffff16610ad2611685565b73ffffffffffffffffffffffffffffffffffffffff1614158015610b47575060096000610afd611685565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15610b87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7e906131e5565b60405180910390fd5b80600b600084815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610bd1838383604051806020016040528060008152506112bf565b505050565b610bde611685565b73ffffffffffffffffffffffffffffffffffffffff16610bfc611052565b73ffffffffffffffffffffffffffffffffffffffff1614610c52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4990613285565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610cb5611685565b73ffffffffffffffffffffffffffffffffffffffff16610cd3611052565b73ffffffffffffffffffffffffffffffffffffffff1614610d29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2090613285565b60405180910390fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610d74573d6000803e3d6000fd5b505050565b6000610d848261168d565b9050919050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ddc611685565b73ffffffffffffffffffffffffffffffffffffffff16610dfa611052565b73ffffffffffffffffffffffffffffffffffffffff1614610e50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4790613285565b60405180910390fd5b610e5a6000612009565b565b60038054610e6990613608565b80601f0160208091040260200160405190810160405280929190818152602001828054610e9590613608565b8015610ee25780601f10610eb757610100808354040283529160200191610ee2565b820191906000526020600020905b815481529060010190602001808311610ec557829003601f168201915b505050505081565b610ef2611685565b73ffffffffffffffffffffffffffffffffffffffff16610f10611052565b73ffffffffffffffffffffffffffffffffffffffff1614610f66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5d90613285565b60405180910390fd5b6000610f70610a86565b9050600d54825182610f829190613485565b1115610fc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fba90613225565b60405180910390fd5b60005b825181101561102d5761101a83828151811061100b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516001611812565b80806110259061363a565b915050610fc6565b505050565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606002805461108a90613608565b80601f01602080910402602001604051908101604052809291908181526020018280546110b690613608565b80156111035780601f106110d857610100808354040283529160200191611103565b820191906000526020600020905b8154815290600101906020018083116110e657829003601f168201915b5050505050905090565b611115611052565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561115c5750600a60009054906101000a900460ff165b1561119c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119390613205565b60405180910390fd5b80600860006111a9611685565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611256611685565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161129b9190613128565b60405180910390a35050565b600c6020528060005260406000206000915090505481565b6112ca848484611a9d565b6112d6848484846120cd565b611315576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130c90613165565b60405180910390fd5b50505050565b600a60009054906101000a900460ff1681565b606061133982611602565b611378576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136f906131a5565b60405180910390fd5b60006003805461138790613608565b905014156113a457604051806020016040528060008152506113d0565b60036113af83612264565b6040516020016113c0929190613092565b6040516020818303038152906040525b9050919050565b600d5481565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611479611685565b73ffffffffffffffffffffffffffffffffffffffff16611497611052565b73ffffffffffffffffffffffffffffffffffffffff16146114ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e490613285565b60405180910390fd5b80600a60006101000a81548160ff02191690831515021790555050565b611512611685565b73ffffffffffffffffffffffffffffffffffffffff16611530611052565b73ffffffffffffffffffffffffffffffffffffffff1614611586576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157d90613285565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156115f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ed90613185565b60405180910390fd5b6115ff81612009565b50565b60008082118015611614575060045482105b9050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b600061169882611602565b6116d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ce90613365565b60405180910390fd5b60008290505b6005600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461174d575061175b565b8080600190039150506116dd565b919050565b816007600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187990613305565b60405180910390fd5b60008114156118c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bd90613245565b60405180910390fd5b600d548160016004546118d9919061350c565b6118e39190613485565b1115611924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191b906131c5565b60405180910390fd5b6000600454905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550826005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600081905060005b83811015611a8f57818573ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a481806001019250508080600101915050611a16565b508060048190555050505050565b6000611aa88261168d565b905060008173ffffffffffffffffffffffffffffffffffffffff16611acb611685565b73ffffffffffffffffffffffffffffffffffffffff161480611afa5750611af982611af4611685565b6113dd565b5b80611b3f5750611b08611685565b73ffffffffffffffffffffffffffffffffffffffff16611b27846107dd565b73ffffffffffffffffffffffffffffffffffffffff16145b905080611b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7890613345565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611bef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be6906132a5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c56906132c5565b60405180910390fd5b611c67611052565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611cae5750600a60009054906101000a900460ff165b15611cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce590613205565b60405180910390fd5b600b600084815260200190815260200160002060009054906101000a900460ff1615611d4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d46906132e5565b60405180910390fd5b611d5b82600085611760565b6001600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550836005600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600184019050600073ffffffffffffffffffffffffffffffffffffffff166005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015611f4e5750611f4d81611602565b5b15611fa657826005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006120ee8473ffffffffffffffffffffffffffffffffffffffff16612411565b15612257578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612117611685565b8786866040518563ffffffff1660e01b815260040161213994939291906130dc565b602060405180830381600087803b15801561215357600080fd5b505af192505050801561218457506040513d601f19601f82011682018060405250810190612181919061291c565b60015b612207573d80600081146121b4576040519150601f19603f3d011682016040523d82523d6000602084013e6121b9565b606091505b506000815114156121ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f690613165565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061225c565b600190505b949350505050565b606060008214156122ac576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061240c565b600082905060005b600082146122de5780806122c79061363a565b915050600a826122d791906134db565b91506122b4565b60008167ffffffffffffffff811115612320577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156123525781602001600182028036833780820191505090505b5090505b600085146124055760018261236b919061350c565b9150600a8561237a9190613683565b60306123869190613485565b60f81b8183815181106123c2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856123fe91906134db565b9450612356565b8093505050505b919050565b6000808273ffffffffffffffffffffffffffffffffffffffff16803b806020016040519081016040528181526000908060200190933c51119050919050565b82805461245c90613608565b90600052602060002090601f01602090048101928261247e57600085556124c5565b82601f1061249757803560ff19168380011785556124c5565b828001600101855582156124c5579182015b828111156124c45782358255916020019190600101906124a9565b5b5090506124d291906124d6565b5090565b5b808211156124ef5760008160009055506001016124d7565b5090565b6000612506612501846133d1565b6133a0565b9050808382526020820190508285602086028201111561252557600080fd5b60005b85811015612555578161253b888261259d565b845260208401935060208301925050600181019050612528565b5050509392505050565b600061257261256d846133fd565b6133a0565b90508281526020810184848401111561258a57600080fd5b6125958482856135c6565b509392505050565b6000813590506125ac81613781565b92915050565b6000813590506125c181613798565b92915050565b600082601f8301126125d857600080fd5b81356125e88482602086016124f3565b91505092915050565b600081359050612600816137af565b92915050565b600081359050612615816137c6565b92915050565b60008151905061262a816137c6565b92915050565b600082601f83011261264157600080fd5b813561265184826020860161255f565b91505092915050565b60008083601f84011261266c57600080fd5b8235905067ffffffffffffffff81111561268557600080fd5b60208301915083600182028301111561269d57600080fd5b9250929050565b6000813590506126b3816137dd565b92915050565b6000602082840312156126cb57600080fd5b60006126d98482850161259d565b91505092915050565b6000602082840312156126f457600080fd5b6000612702848285016125b2565b91505092915050565b6000806040838503121561271e57600080fd5b600061272c8582860161259d565b925050602061273d8582860161259d565b9150509250929050565b60008060006060848603121561275c57600080fd5b600061276a8682870161259d565b935050602061277b8682870161259d565b925050604061278c868287016126a4565b9150509250925092565b600080600080608085870312156127ac57600080fd5b60006127ba8782880161259d565b94505060206127cb8782880161259d565b93505060406127dc878288016126a4565b925050606085013567ffffffffffffffff8111156127f957600080fd5b61280587828801612630565b91505092959194509250565b6000806040838503121561282457600080fd5b60006128328582860161259d565b9250506020612843858286016125f1565b9150509250929050565b6000806040838503121561286057600080fd5b600061286e8582860161259d565b925050602061287f858286016126a4565b9150509250929050565b60006020828403121561289b57600080fd5b600082013567ffffffffffffffff8111156128b557600080fd5b6128c1848285016125c7565b91505092915050565b6000602082840312156128dc57600080fd5b60006128ea848285016125f1565b91505092915050565b60006020828403121561290557600080fd5b600061291384828501612606565b91505092915050565b60006020828403121561292e57600080fd5b600061293c8482850161261b565b91505092915050565b6000806020838503121561295857600080fd5b600083013567ffffffffffffffff81111561297257600080fd5b61297e8582860161265a565b92509250509250929050565b60006020828403121561299c57600080fd5b60006129aa848285016126a4565b91505092915050565b600080604083850312156129c657600080fd5b60006129d4858286016126a4565b92505060206129e58582860161259d565b9150509250929050565b60008060408385031215612a0257600080fd5b6000612a10858286016126a4565b9250506020612a21858286016125f1565b9150509250929050565b612a3481613540565b82525050565b612a4381613564565b82525050565b6000612a5482613442565b612a5e8185613458565b9350612a6e8185602086016135d5565b612a7781613770565b840191505092915050565b6000612a8d8261344d565b612a978185613469565b9350612aa78185602086016135d5565b612ab081613770565b840191505092915050565b6000612ac68261344d565b612ad0818561347a565b9350612ae08185602086016135d5565b80840191505092915050565b60008154612af981613608565b612b03818661347a565b94506001821660008114612b1e5760018114612b2f57612b62565b60ff19831686528186019350612b62565b612b388561342d565b60005b83811015612b5a57815481890152600182019150602081019050612b3b565b838801955050505b50505092915050565b6000612b78602683613469565b91507f5472616e73666572546f4e6f6e4552433732315265636569766572496d706c6560008301527f6d656e74657200000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612bde602683613469565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612c44601b83613469565b91507f5552495175657279466f724e6f6e6578697374656e74546f6b656e00000000006000830152602082019050919050565b6000612c84600b83613469565b91507f43617045786365656465640000000000000000000000000000000000000000006000830152602082019050919050565b6000612cc4600a83613469565b91507f4e6f74416e41646d696e000000000000000000000000000000000000000000006000830152602082019050919050565b6000612d04601883613469565b91507f5472616e7366657249734c6f636b6564476c6f62616c6c7900000000000000006000830152602082019050919050565b6000612d44601e83613469565b91507f4d696e7420616d6f756e742065786365656473206d617820737570706c7900006000830152602082019050919050565b6000612d84601083613469565b91507f4d696e745a65726f5175616e74697479000000000000000000000000000000006000830152602082019050919050565b6000612dc4602183613469565b91507f417070726f76616c43616c6c65724e6f744f776e65724e6f72417070726f766560008301527f64000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612e2a60058361347a565b91507f2e6a736f6e0000000000000000000000000000000000000000000000000000006000830152600582019050919050565b6000612e6a602083613469565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000612eaa601a83613469565b91507f5472616e7366657246726f6d496e636f72726563744f776e65720000000000006000830152602082019050919050565b6000612eea601583613469565b91507f5472616e73666572546f5a65726f4164647265737300000000000000000000006000830152602082019050919050565b6000612f2a601083613469565b91507f5472616e7366657249734c6f636b6564000000000000000000000000000000006000830152602082019050919050565b6000612f6a601183613469565b91507f4d696e74546f5a65726f416464726573730000000000000000000000000000006000830152602082019050919050565b6000612faa602083613469565b91507f417070726f76616c5175657279466f724e6f6e6578697374656e74546f6b656e6000830152602082019050919050565b6000612fea602183613469565b91507f5472616e7366657243616c6c65724e6f744f776e65724e6f72417070726f766560008301527f64000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613050601d83613469565b91507f4f776e65725175657279466f724e6f6e6578697374656e74546f6b656e0000006000830152602082019050919050565b61308c816135bc565b82525050565b600061309e8285612aec565b91506130aa8284612abb565b91506130b582612e1d565b91508190509392505050565b60006020820190506130d66000830184612a2b565b92915050565b60006080820190506130f16000830187612a2b565b6130fe6020830186612a2b565b61310b6040830185613083565b818103606083015261311d8184612a49565b905095945050505050565b600060208201905061313d6000830184612a3a565b92915050565b6000602082019050818103600083015261315d8184612a82565b905092915050565b6000602082019050818103600083015261317e81612b6b565b9050919050565b6000602082019050818103600083015261319e81612bd1565b9050919050565b600060208201905081810360008301526131be81612c37565b9050919050565b600060208201905081810360008301526131de81612c77565b9050919050565b600060208201905081810360008301526131fe81612cb7565b9050919050565b6000602082019050818103600083015261321e81612cf7565b9050919050565b6000602082019050818103600083015261323e81612d37565b9050919050565b6000602082019050818103600083015261325e81612d77565b9050919050565b6000602082019050818103600083015261327e81612db7565b9050919050565b6000602082019050818103600083015261329e81612e5d565b9050919050565b600060208201905081810360008301526132be81612e9d565b9050919050565b600060208201905081810360008301526132de81612edd565b9050919050565b600060208201905081810360008301526132fe81612f1d565b9050919050565b6000602082019050818103600083015261331e81612f5d565b9050919050565b6000602082019050818103600083015261333e81612f9d565b9050919050565b6000602082019050818103600083015261335e81612fdd565b9050919050565b6000602082019050818103600083015261337e81613043565b9050919050565b600060208201905061339a6000830184613083565b92915050565b6000604051905081810181811067ffffffffffffffff821117156133c7576133c6613741565b5b8060405250919050565b600067ffffffffffffffff8211156133ec576133eb613741565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561341857613417613741565b5b601f19601f8301169050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000613490826135bc565b915061349b836135bc565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156134d0576134cf6136b4565b5b828201905092915050565b60006134e6826135bc565b91506134f1836135bc565b925082613501576135006136e3565b5b828204905092915050565b6000613517826135bc565b9150613522836135bc565b925082821015613535576135346136b4565b5b828203905092915050565b600061354b8261359c565b9050919050565b600061355d8261359c565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156135f35780820151818401526020810190506135d8565b83811115613602576000848401525b50505050565b6000600282049050600182168061362057607f821691505b6020821081141561363457613633613712565b5b50919050565b6000613645826135bc565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613678576136776136b4565b5b600182019050919050565b600061368e826135bc565b9150613699836135bc565b9250826136a9576136a86136e3565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b61378a81613540565b811461379557600080fd5b50565b6137a181613552565b81146137ac57600080fd5b50565b6137b881613564565b81146137c357600080fd5b50565b6137cf81613570565b81146137da57600080fd5b50565b6137e6816135bc565b81146137f157600080fd5b5056fea2646970667358221220c7114574b1780d55ac0b918f003fe1defd83c287ee27b170a36b8ce8ae0baf3864736f6c63430008000033