Loading
[ { "inputs": [ { "internalType": "address", "name": "_token", "type": "address" }, { "internalType": "uint256", "name": "initialSupply", "type": "uint256" }, { "internalType": "string", "name": "_tokenName", "type": "string" }, { "internalType": "string", "name": "_tokenSymbol", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [], "name": "ReentrancyGuardReentrantCall", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } ], "name": "BatchNFTStaked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } ], "name": "BatchNFTUnstaked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "NFTStaked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "NFTUnstaked", "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": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "calculateTokens", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "erc20Token", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "getBalanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256[]", "name": "", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "", "type": "uint256[]" }, { "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "onERC1155BatchReceived", "outputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "onERC1155Received", "outputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "owner", "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": "amount", "type": "uint256[]" } ], "name": "stakeBatchNFT", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "stakeNFT", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "stakingPeriod", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "token", "outputs": [ { "internalType": "contract IERC1155", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "tokenAmountStaked", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "tokenOwnerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "tokenStakedAtTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "tokenUnstakeTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenId", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amount", "type": "uint256[]" } ], "name": "unstakeBatchNFT", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "unstakeNFT", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60806040526307861f806009553480156200001957600080fd5b506040516200405a3803806200405a83398181016040528101906200003f91906200074b565b338282816003908162000053919062000a3c565b50806004908162000065919062000a3c565b505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000dd5760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000d4919062000b34565b60405180910390fd5b620000ee816200019560201b60201c565b5060016006819055506200010930846200025b60201b60201c565b83600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555030600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505062000c26565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620002d05760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401620002c7919062000b34565b60405180910390fd5b620002e460008383620002e860201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200033e57806002600082825462000331919062000b80565b9250508190555062000414565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015620003cd578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401620003c49392919062000bcc565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200045f5780600260008282540392505081905550620004ac565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200050b919062000c09565b60405180910390a3505050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000559826200052c565b9050919050565b6200056b816200054c565b81146200057757600080fd5b50565b6000815190506200058b8162000560565b92915050565b6000819050919050565b620005a68162000591565b8114620005b257600080fd5b50565b600081519050620005c6816200059b565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200062182620005d6565b810181811067ffffffffffffffff82111715620006435762000642620005e7565b5b80604052505050565b60006200065862000518565b905062000666828262000616565b919050565b600067ffffffffffffffff821115620006895762000688620005e7565b5b6200069482620005d6565b9050602081019050919050565b60005b83811015620006c1578082015181840152602081019050620006a4565b60008484015250505050565b6000620006e4620006de846200066b565b6200064c565b905082815260208101848484011115620007035762000702620005d1565b5b62000710848285620006a1565b509392505050565b600082601f83011262000730576200072f620005cc565b5b815162000742848260208601620006cd565b91505092915050565b6000806000806080858703121562000768576200076762000522565b5b600062000778878288016200057a565b94505060206200078b87828801620005b5565b935050604085015167ffffffffffffffff811115620007af57620007ae62000527565b5b620007bd8782880162000718565b925050606085015167ffffffffffffffff811115620007e157620007e062000527565b5b620007ef8782880162000718565b91505092959194509250565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200084e57607f821691505b60208210810362000864576200086362000806565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620008ce7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200088f565b620008da86836200088f565b95508019841693508086168417925050509392505050565b6000819050919050565b60006200091d62000917620009118462000591565b620008f2565b62000591565b9050919050565b6000819050919050565b6200093983620008fc565b62000951620009488262000924565b8484546200089c565b825550505050565b600090565b6200096862000959565b620009758184846200092e565b505050565b5b818110156200099d57620009916000826200095e565b6001810190506200097b565b5050565b601f821115620009ec57620009b6816200086a565b620009c1846200087f565b81016020851015620009d1578190505b620009e9620009e0856200087f565b8301826200097a565b50505b505050565b600082821c905092915050565b600062000a1160001984600802620009f1565b1980831691505092915050565b600062000a2c8383620009fe565b9150826002028217905092915050565b62000a4782620007fb565b67ffffffffffffffff81111562000a635762000a62620005e7565b5b62000a6f825462000835565b62000a7c828285620009a1565b600060209050601f83116001811462000ab4576000841562000a9f578287015190505b62000aab858262000a1e565b86555062000b1b565b601f19841662000ac4866200086a565b60005b8281101562000aee5784890151825560018201915060208501945060208101905062000ac7565b8683101562000b0e578489015162000b0a601f891682620009fe565b8355505b6001600288020188555050505b505050505050565b62000b2e816200054c565b82525050565b600060208201905062000b4b600083018462000b23565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000b8d8262000591565b915062000b9a8362000591565b925082820190508082111562000bb55762000bb462000b51565b5b92915050565b62000bc68162000591565b82525050565b600060608201905062000be3600083018662000b23565b62000bf2602083018562000bbb565b62000c01604083018462000bbb565b949350505050565b600060208201905062000c20600083018462000bbb565b92915050565b6134248062000c366000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80638a13eea7116100f9578063bc197c8111610097578063dd62ed3e11610071578063dd62ed3e14610555578063f23a6e6114610585578063f2fde38b146105b5578063fc0c546a146105d1576101c4565b8063bc197c81146104eb578063c03d5b471461051b578063c12b181e14610539576101c4565b806395d89b41116100d357806395d89b411461043d578063a833b6601461045b578063a9059cbb1461048b578063b2a8d73f146104bb576101c4565b80638a13eea7146103d15780638da5cb5b146103ef57806394d45b591461040d576101c4565b8063515717e611610166578063715018a611610140578063715018a61461033757806371aa60fd14610341578063895bf77e1461037157806389885a59146103a1576101c4565b8063515717e6146102cf57806351cecc80146102eb57806370a0823114610307576101c4565b806318160ddd116101a257806318160ddd1461024757806323b872dd14610265578063313ce567146102955780634ecb98e3146102b3576101c4565b806301ffc9a7146101c957806306fdde03146101f9578063095ea7b314610217575b600080fd5b6101e360048036038101906101de9190612212565b6105ef565b6040516101f0919061225a565b60405180910390f35b610201610669565b60405161020e9190612305565b60405180910390f35b610231600480360381019061022c91906123bb565b6106fb565b60405161023e919061225a565b60405180910390f35b61024f61071e565b60405161025c919061240a565b60405180910390f35b61027f600480360381019061027a9190612425565b610728565b60405161028c919061225a565b60405180910390f35b61029d610757565b6040516102aa9190612494565b60405180910390f35b6102cd60048036038101906102c891906124af565b610760565b005b6102e960048036038101906102e49190612637565b610b06565b005b610305600480360381019061030091906124af565b610d15565b005b610321600480360381019061031c91906126af565b6111cc565b60405161032e919061240a565b60405180910390f35b61033f611214565b005b61035b600480360381019061035691906126dc565b611228565b604051610368919061240a565b60405180910390f35b61038b60048036038101906103869190612709565b61132d565b604051610398919061240a565b60405180910390f35b6103bb60048036038101906103b691906126dc565b611352565b6040516103c89190612758565b60405180910390f35b6103d9611385565b6040516103e691906127d2565b60405180910390f35b6103f76113ab565b6040516104049190612758565b60405180910390f35b610427600480360381019061042291906123bb565b6113d5565b604051610434919061240a565b60405180910390f35b61044561147c565b6040516104529190612305565b60405180910390f35b61047560048036038101906104709190612709565b61150e565b604051610482919061240a565b60405180910390f35b6104a560048036038101906104a091906123bb565b611533565b6040516104b2919061225a565b60405180910390f35b6104d560048036038101906104d09190612709565b611556565b6040516104e2919061240a565b60405180910390f35b610505600480360381019061050091906128a2565b61157b565b6040516105129190612980565b60405180910390f35b610523611590565b604051610530919061240a565b60405180910390f35b610553600480360381019061054e9190612637565b611596565b005b61056f600480360381019061056a919061299b565b611837565b60405161057c919061240a565b60405180910390f35b61059f600480360381019061059a91906129db565b6118be565b6040516105ac9190612980565b60405180910390f35b6105cf60048036038101906105ca91906126af565b6118d3565b005b6105d9611959565b6040516105e69190612a93565b60405180910390f35b60007f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061066257506106618261197f565b5b9050919050565b60606003805461067890612add565b80601f01602080910402602001604051908101604052809291908181526020018280546106a490612add565b80156106f15780601f106106c6576101008083540402835291602001916106f1565b820191906000526020600020905b8154815290600101906020018083116106d457829003601f168201915b5050505050905090565b6000806107066119e9565b90506107138185856119f1565b600191505092915050565b6000600254905090565b6000806107336119e9565b9050610740858285611a03565b61074b858585611a97565b60019150509392505050565b60006012905090565b600a600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544210156107f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ea90612b80565b60405180910390fd5b80600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161084f9190612758565b602060405180830381865afa15801561086c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108909190612bb5565b10156108d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c890612c54565b60405180910390fd5b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330670de0b6b3a7640000866109279190612ca3565b6040518463ffffffff1660e01b815260040161094593929190612ce5565b6020604051808303816000875af1158015610964573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109889190612d48565b9050806109ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c190612dc1565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a303386866040518563ffffffff1660e01b8152600401610a2b9493929190612e3e565b600060405180830381600087803b158015610a4557600080fd5b505af1158015610a59573d6000803e3d6000fd5b50505050600c600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600090553373ffffffffffffffffffffffffffffffffffffffff167fc486b9458a8637650d84d262414833a5a457bc91ae86b7da110386c8c3fa255b8484604051610af9929190612e96565b60405180910390a2505050565b610b0e611b8b565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb2c2d6333085856040518563ffffffff1660e01b8152600401610b6f9493929190612f7d565b600060405180830381600087803b158015610b8957600080fd5b505af1158015610b9d573d6000803e3d6000fd5b5050505060005b8251811015610cb85742600c6000858481518110610bc557610bc4612fe3565b5b6020026020010151815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550818181518110610c2f57610c2e612fe3565b5b6020026020010151600d6000858481518110610c4e57610c4d612fe3565b5b6020026020010151815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080610cb090613012565b915050610ba4565b503373ffffffffffffffffffffffffffffffffffffffff167f19372f51008b54d6d2c56d1175103692f143bbb570568cf27f6e2bce684d42558383604051610d0192919061305a565b60405180910390a2610d11611bd1565b5050565b610d1d611b8b565b80600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1662fdd58e33856040518363ffffffff1660e01b8152600401610d7a929190613091565b602060405180830381865afa158015610d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dbb9190612bb5565b1015610dfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df390613106565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e985e9c533306040518363ffffffff1660e01b8152600401610e59929190613126565b602060405180830381865afa158015610e76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9a9190612d48565b610ed9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed0906131c1565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a333085856040518563ffffffff1660e01b8152600401610f3a949392919061322d565b600060405180830381600087803b158015610f5457600080fd5b505af1158015610f68573d6000803e3d6000fd5b505050506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33670de0b6b3a764000085610fc19190612ca3565b6040518363ffffffff1660e01b8152600401610fde929190613091565b6020604051808303816000875af1158015610ffd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110219190612d48565b905080611063576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105a90612dc1565b60405180910390fd5b42600c600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600d600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506009544261111b9190613285565b600a600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167f36b3725f1783bad4ff05b7f4c077c3aa68eeb23a4d054ba189db4d01ac278d3984846040516111b7929190612e96565b60405180910390a2506111c8611bd1565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61121c611bdb565b6112266000611c62565b565b600080600d600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116112bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b39061332b565b60405180910390fd5b6000600d600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050670de0b6b3a7640000816113259190612ca3565b915050919050565b600a602052816000526040600020602052806000526040600020600091509150505481565b600b6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1662fdd58e84846040518363ffffffff1660e01b8152600401611433929190613091565b602060405180830381865afa158015611450573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114749190612bb5565b905092915050565b60606004805461148b90612add565b80601f01602080910402602001604051908101604052809291908181526020018280546114b790612add565b80156115045780601f106114d957610100808354040283529160200191611504565b820191906000526020600020905b8154815290600101906020018083116114e757829003601f168201915b5050505050905090565b600c602052816000526040600020602052806000526040600020600091509150505481565b60008061153e6119e9565b905061154b818585611a97565b600191505092915050565b600d602052816000526040600020602052806000526040600020600091509150505481565b600063bc197c8160e01b905095945050505050565b60095481565b60005b825181101561169557818382815181106115b6576115b5612fe3565b5b6020026020010151815181106115cf576115ce612fe3565b5b6020026020010151600d60008584815181106115ee576115ed612fe3565b5b6020026020010151815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611682576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167990613397565b60405180910390fd5b808061168d90613012565b915050611599565b50600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb2c2d6303385856040518563ffffffff1660e01b81526004016116f79493929190612f7d565b600060405180830381600087803b15801561171157600080fd5b505af1158015611725573d6000803e3d6000fd5b5050505060005b82518110156117e2576117613361175c85848151811061174f5761174e612fe3565b5b6020026020010151611228565b611d28565b600c600084838151811061177857611777612fe3565b5b6020026020010151815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000905580806117da90613012565b91505061172c565b503373ffffffffffffffffffffffffffffffffffffffff167fd939d7985bba36a69ae4b102c67cc44dfbf7967d7d74b5f971ef643d81474828838360405161182b92919061305a565b60405180910390a25050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600063f23a6e6160e01b905095945050505050565b6118db611bdb565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361194d5760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016119449190612758565b60405180910390fd5b61195681611c62565b50565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b6119fe8383836001611daa565b505050565b6000611a0f8484611837565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611a915781811015611a81578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401611a78939291906133b7565b60405180910390fd5b611a9084848484036000611daa565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b095760006040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611b009190612758565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b7b5760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611b729190612758565b60405180910390fd5b611b86838383611f81565b505050565b600260065403611bc7576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600681905550565b6001600681905550565b611be36119e9565b73ffffffffffffffffffffffffffffffffffffffff16611c016113ab565b73ffffffffffffffffffffffffffffffffffffffff1614611c6057611c246119e9565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401611c579190612758565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d9a5760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611d919190612758565b60405180910390fd5b611da660008383611f81565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611e1c5760006040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611e139190612758565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e8e5760006040517f94280d62000000000000000000000000000000000000000000000000000000008152600401611e859190612758565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015611f7b578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611f72919061240a565b60405180910390a35b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611fd3578060026000828254611fc79190613285565b925050819055506120a6565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561205f578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401612056939291906133b7565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120ef578060026000828254039250508190555061213c565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612199919061240a565b60405180910390a3505050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6121ef816121ba565b81146121fa57600080fd5b50565b60008135905061220c816121e6565b92915050565b600060208284031215612228576122276121b0565b5b6000612236848285016121fd565b91505092915050565b60008115159050919050565b6122548161223f565b82525050565b600060208201905061226f600083018461224b565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156122af578082015181840152602081019050612294565b60008484015250505050565b6000601f19601f8301169050919050565b60006122d782612275565b6122e18185612280565b93506122f1818560208601612291565b6122fa816122bb565b840191505092915050565b6000602082019050818103600083015261231f81846122cc565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061235282612327565b9050919050565b61236281612347565b811461236d57600080fd5b50565b60008135905061237f81612359565b92915050565b6000819050919050565b61239881612385565b81146123a357600080fd5b50565b6000813590506123b58161238f565b92915050565b600080604083850312156123d2576123d16121b0565b5b60006123e085828601612370565b92505060206123f1858286016123a6565b9150509250929050565b61240481612385565b82525050565b600060208201905061241f60008301846123fb565b92915050565b60008060006060848603121561243e5761243d6121b0565b5b600061244c86828701612370565b935050602061245d86828701612370565b925050604061246e868287016123a6565b9150509250925092565b600060ff82169050919050565b61248e81612478565b82525050565b60006020820190506124a96000830184612485565b92915050565b600080604083850312156124c6576124c56121b0565b5b60006124d4858286016123a6565b92505060206124e5858286016123a6565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61252c826122bb565b810181811067ffffffffffffffff8211171561254b5761254a6124f4565b5b80604052505050565b600061255e6121a6565b905061256a8282612523565b919050565b600067ffffffffffffffff82111561258a576125896124f4565b5b602082029050602081019050919050565b600080fd5b60006125b36125ae8461256f565b612554565b905080838252602082019050602084028301858111156125d6576125d561259b565b5b835b818110156125ff57806125eb88826123a6565b8452602084019350506020810190506125d8565b5050509392505050565b600082601f83011261261e5761261d6124ef565b5b813561262e8482602086016125a0565b91505092915050565b6000806040838503121561264e5761264d6121b0565b5b600083013567ffffffffffffffff81111561266c5761266b6121b5565b5b61267885828601612609565b925050602083013567ffffffffffffffff811115612699576126986121b5565b5b6126a585828601612609565b9150509250929050565b6000602082840312156126c5576126c46121b0565b5b60006126d384828501612370565b91505092915050565b6000602082840312156126f2576126f16121b0565b5b6000612700848285016123a6565b91505092915050565b600080604083850312156127205761271f6121b0565b5b600061272e858286016123a6565b925050602061273f85828601612370565b9150509250929050565b61275281612347565b82525050565b600060208201905061276d6000830184612749565b92915050565b6000819050919050565b600061279861279361278e84612327565b612773565b612327565b9050919050565b60006127aa8261277d565b9050919050565b60006127bc8261279f565b9050919050565b6127cc816127b1565b82525050565b60006020820190506127e760008301846127c3565b92915050565b600080fd5b600067ffffffffffffffff82111561280d5761280c6124f4565b5b612816826122bb565b9050602081019050919050565b82818337600083830152505050565b6000612845612840846127f2565b612554565b905082815260208101848484011115612861576128606127ed565b5b61286c848285612823565b509392505050565b600082601f830112612889576128886124ef565b5b8135612899848260208601612832565b91505092915050565b600080600080600060a086880312156128be576128bd6121b0565b5b60006128cc88828901612370565b95505060206128dd88828901612370565b945050604086013567ffffffffffffffff8111156128fe576128fd6121b5565b5b61290a88828901612609565b935050606086013567ffffffffffffffff81111561292b5761292a6121b5565b5b61293788828901612609565b925050608086013567ffffffffffffffff811115612958576129576121b5565b5b61296488828901612874565b9150509295509295909350565b61297a816121ba565b82525050565b60006020820190506129956000830184612971565b92915050565b600080604083850312156129b2576129b16121b0565b5b60006129c085828601612370565b92505060206129d185828601612370565b9150509250929050565b600080600080600060a086880312156129f7576129f66121b0565b5b6000612a0588828901612370565b9550506020612a1688828901612370565b9450506040612a27888289016123a6565b9350506060612a38888289016123a6565b925050608086013567ffffffffffffffff811115612a5957612a586121b5565b5b612a6588828901612874565b9150509295509295909350565b6000612a7d8261279f565b9050919050565b612a8d81612a72565b82525050565b6000602082019050612aa86000830184612a84565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612af557607f821691505b602082108103612b0857612b07612aae565b5b50919050565b7f546865207374616b696e6720706572696f6420666f72207468697320746f6b6560008201527f6e20686173206e6f7420656e6465642079657400000000000000000000000000602082015250565b6000612b6a603383612280565b9150612b7582612b0e565b604082019050919050565b60006020820190508181036000830152612b9981612b5d565b9050919050565b600081519050612baf8161238f565b92915050565b600060208284031215612bcb57612bca6121b0565b5b6000612bd984828501612ba0565b91505092915050565b7f6572633230546f6b656e2e62616c616e63654f66286d73672e73656e6465722960008201527f203c20616d6f756e740000000000000000000000000000000000000000000000602082015250565b6000612c3e602983612280565b9150612c4982612be2565b604082019050919050565b60006020820190508181036000830152612c6d81612c31565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612cae82612385565b9150612cb983612385565b9250828202612cc781612385565b91508282048414831517612cde57612cdd612c74565b5b5092915050565b6000606082019050612cfa6000830186612749565b612d076020830185612749565b612d1460408301846123fb565b949350505050565b612d258161223f565b8114612d3057600080fd5b50565b600081519050612d4281612d1c565b92915050565b600060208284031215612d5e57612d5d6121b0565b5b6000612d6c84828501612d33565b91505092915050565b7f4552433230205472616e73666572204661696c65640000000000000000000000600082015250565b6000612dab601583612280565b9150612db682612d75565b602082019050919050565b60006020820190508181036000830152612dda81612d9e565b9050919050565b600082825260208201905092915050565b7f3078000000000000000000000000000000000000000000000000000000000000600082015250565b6000612e28600283612de1565b9150612e3382612df2565b602082019050919050565b600060a082019050612e536000830187612749565b612e606020830186612749565b612e6d60408301856123fb565b612e7a60608301846123fb565b8181036080830152612e8b81612e1b565b905095945050505050565b6000604082019050612eab60008301856123fb565b612eb860208301846123fb565b9392505050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612ef481612385565b82525050565b6000612f068383612eeb565b60208301905092915050565b6000602082019050919050565b6000612f2a82612ebf565b612f348185612eca565b9350612f3f83612edb565b8060005b83811015612f70578151612f578882612efa565b9750612f6283612f12565b925050600181019050612f43565b5085935050505092915050565b600060a082019050612f926000830187612749565b612f9f6020830186612749565b8181036040830152612fb18185612f1f565b90508181036060830152612fc58184612f1f565b90508181036080830152612fd881612e1b565b905095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061301d82612385565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361304f5761304e612c74565b5b600182019050919050565b600060408201905081810360008301526130748185612f1f565b905081810360208301526130888184612f1f565b90509392505050565b60006040820190506130a66000830185612749565b6130b360208301846123fb565b9392505050565b7f496e73756666696369656e742042616c616e6365210000000000000000000000600082015250565b60006130f0601583612280565b91506130fb826130ba565b602082019050919050565b6000602082019050818103600083015261311f816130e3565b9050919050565b600060408201905061313b6000830185612749565b6131486020830184612749565b9392505050565b7f546869732061646472657373206973206e6f7420617070726f76656420746f2060008201527f7472616e7366657220796f757220746f6b656e73000000000000000000000000602082015250565b60006131ab603483612280565b91506131b68261314f565b604082019050919050565b600060208201905081810360008301526131da8161319e565b9050919050565b7f3078300000000000000000000000000000000000000000000000000000000000600082015250565b6000613217600383612de1565b9150613222826131e1565b602082019050919050565b600060a0820190506132426000830187612749565b61324f6020830186612749565b61325c60408301856123fb565b61326960608301846123fb565b818103608083015261327a8161320a565b905095945050505050565b600061329082612385565b915061329b83612385565b92508282019050808211156132b3576132b2612c74565b5b92915050565b7f4e6f20746f6b656e207374616b6564207769746820676976656e20746f6b656e60008201527f2049440000000000000000000000000000000000000000000000000000000000602082015250565b6000613315602383612280565b9150613320826132b9565b604082019050919050565b6000602082019050818103600083015261334481613308565b9050919050565b7f416d6f756e74207374616b656420746f6f206c6f770000000000000000000000600082015250565b6000613381601583612280565b915061338c8261334b565b602082019050919050565b600060208201905081810360008301526133b081613374565b9050919050565b60006060820190506133cc6000830186612749565b6133d960208301856123fb565b6133e660408301846123fb565b94935050505056fea2646970667358221220f23d2bae882be319e6d48e6b0971a550b9f30f259c4fb2d473edfa2cfca9afc564736f6c6343000814003300000000000000000000000080ad01392b9b4a85535ec0bbff13b74c8da81070000000000000000000000000000000000000000000a173d8136d11edd7ec0000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000095374616b6564536572000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047353455200000000000000000000000000000000000000000000000000000000
0xa2646970667358221220f23d2bae882be319e6d48e6b0971a550b9f30f259c4fb2d473edfa2cfca9afc564736f6c6343000814003300000000000000000000000080ad01392b9b4a85535ec0bbff13b74c8da81070000000000000000000000000000000000000000000a173d8136d11edd7ec0000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000095374616b6564536572000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047353455200000000000000000000000000000000000000000000000000000000