Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0x02795795196F563fDafCE8Dd97fCA4871dEd51C3
Balance 0 ETH
Nonce 1
Code Size 14135 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

14135 bytes
0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c80637eee288d11610104578063d1c46916116100a2578063e2ab691d11610071578063e2ab691d1461056c578063e58398361461059c578063f26c159f146105cc578063f2fde38b146105e8576101cf565b8063d1c46916146104ab578063d8fb9337146104db578063dd62ed3e1461050c578063de6baccb1461053c576101cf565b806395d89b41116100de57806395d89b41146103fc578063a457c2d71461041a578063a9059cbb1461044a578063b2520a7c1461047a576101cf565b80637eee288d146103a45780638456cb59146103d45780638da5cb5b146103de576101cf565b80633f4ba83a1161017157806370a082311161014b57806370a0823114610332578063715018a614610362578063788649ea1461036c57806379cc679014610388576101cf565b80633f4ba83a146102ee57806342966c68146102f85780635c975abb14610314576101cf565b806323b872dd116101ad57806323b872dd1461024057806325d998bb14610270578063313ce567146102a057806339509351146102be576101cf565b806306fdde03146101d4578063095ea7b3146101f257806318160ddd14610222575b600080fd5b6101dc610604565b6040516101e9919061293a565b60405180910390f35b61020c600480360381019061020791906129f5565b610696565b6040516102199190612a50565b60405180910390f35b61022a6106b4565b6040516102379190612a7a565b60405180910390f35b61025a60048036038101906102559190612a95565b6106be565b6040516102679190612a50565b60405180910390f35b61028a60048036038101906102859190612ae8565b6106d4565b6040516102979190612a7a565b60405180910390f35b6102a86107aa565b6040516102b59190612b31565b60405180910390f35b6102d860048036038101906102d391906129f5565b6107b3565b6040516102e59190612a50565b60405180910390f35b6102f661085f565b005b610312600480360381019061030d9190612b4c565b6108e5565b005b61031c6108f9565b6040516103299190612a50565b60405180910390f35b61034c60048036038101906103479190612ae8565b610910565b6040516103599190612a7a565b60405180910390f35b61036a610958565b005b61038660048036038101906103819190612ae8565b610a95565b005b6103a2600480360381019061039d91906129f5565b610b1e565b005b6103be60048036038101906103b991906129f5565b610b99565b6040516103cb9190612a50565b60405180910390f35b6103dc610cb0565b005b6103e6610d36565b6040516103f39190612b88565b60405180910390f35b610404610d60565b604051610411919061293a565b60405180910390f35b610434600480360381019061042f91906129f5565b610df2565b6040516104419190612a50565b60405180910390f35b610464600480360381019061045f91906129f5565b610edd565b6040516104719190612a50565b60405180910390f35b610494600480360381019061048f91906129f5565b610ef9565b6040516104a2929190612ba3565b60405180910390f35b6104c560048036038101906104c09190612ae8565b610f94565b6040516104d29190612a50565b60405180910390f35b6104f560048036038101906104f09190612ae8565b61111c565b604051610503929190612ba3565b60405180910390f35b61052660048036038101906105219190612bcc565b6111ab565b6040516105339190612a7a565b60405180910390f35b61055660048036038101906105519190612c0c565b611232565b6040516105639190612a50565b60405180910390f35b61058660048036038101906105819190612c0c565b611349565b6040516105939190612a50565b60405180910390f35b6105b660048036038101906105b19190612ae8565b6113de565b6040516105c39190612a50565b60405180910390f35b6105e660048036038101906105e19190612ae8565b611434565b005b61060260048036038101906105fd9190612ae8565b6114bd565b005b60606003805461061390612c8e565b80601f016020809104026020016040519081016040528092919081815260200182805461063f90612c8e565b801561068c5780601f106106615761010080835404028352916020019161068c565b820191906000526020600020905b81548152906001019060200180831161066f57829003601f168201915b5050505050905090565b60006106aa6106a3611668565b8484611670565b6001905092915050565b6000600254905090565b60006106cb848484611839565b90509392505050565b6000806106e083610910565b9050600080806106ef8661111c565b9150915081841015610736576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072d90612d0b565b60405180910390fd5b60008111156107885760005b81811015610786576000806107578984610ef9565b9150915042821161077157808661076e9190612d5a565b95505b5050808061077e90612d8e565b915050610742565b505b8282856107959190612dd6565b61079f9190612d5a565b945050505050919050565b60006012905090565b60006108556107c0611668565b8484600160006107ce611668565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108509190612d5a565b611670565b6001905092915050565b610867611668565b73ffffffffffffffffffffffffffffffffffffffff16610885610d36565b73ffffffffffffffffffffffffffffffffffffffff16146108db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d290612e56565b60405180910390fd5b6108e3611932565b565b6108f66108f0611668565b826119d4565b50565b6000600560009054906101000a900460ff16905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610960611668565b73ffffffffffffffffffffffffffffffffffffffff1661097e610d36565b73ffffffffffffffffffffffffffffffffffffffff16146109d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cb90612e56565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610a9d611668565b73ffffffffffffffffffffffffffffffffffffffff16610abb610d36565b73ffffffffffffffffffffffffffffffffffffffff1614610b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0890612e56565b60405180910390fd5b610b1a81611b9e565b5050565b6000610b3183610b2c611668565b6111ab565b905081811015610b76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6d90612ec2565b60405180910390fd5b610b8a83610b82611668565b848403611670565b610b9483836119d4565b505050565b6000610ba3611668565b73ffffffffffffffffffffffffffffffffffffffff16610bc1610d36565b73ffffffffffffffffffffffffffffffffffffffff1614610c17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0e90612e56565b60405180910390fd5b81600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905011610c9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9290612f2e565b60405180910390fd5b610ca58383611c8c565b506001905092915050565b610cb8611668565b73ffffffffffffffffffffffffffffffffffffffff16610cd6610d36565b73ffffffffffffffffffffffffffffffffffffffff1614610d2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2390612e56565b60405180910390fd5b610d34611f7a565b565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610d6f90612c8e565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9b90612c8e565b8015610de85780601f10610dbd57610100808354040283529160200191610de8565b820191906000526020600020905b815481529060010190602001808311610dcb57829003601f168201915b5050505050905090565b60008060016000610e01611668565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ebe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb590612f9a565b60405180910390fd5b610ed2610ec9611668565b85858403611670565b600191505092915050565b6000610ef1610eea611668565b848461201d565b905092915050565b6000806000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110610f4f57610f4e612fba565b5b90600052602060002090600202016040518060400160405290816000820154815260200160018201548152505090508060000151925080602001519150509250929050565b6000610f9e611668565b73ffffffffffffffffffffffffffffffffffffffff16610fbc610d36565b73ffffffffffffffffffffffffffffffffffffffff1614611012576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100990612e56565b60405180910390fd5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905011611097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108e90612f2e565b60405180910390fd5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905090505b6000811115611112576110fe836001836110f99190612dd6565b611c8c565b50808061110a90612fe9565b9150506110df565b5060019050919050565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050915091565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600061123c611668565b73ffffffffffffffffffffffffffffffffffffffff1661125a610d36565b73ffffffffffffffffffffffffffffffffffffffff16146112b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a790612e56565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361131f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113169061305e565b60405180910390fd5b61133161132a611668565b858561201d565b5061133d848484612298565b50600190509392505050565b6000611353611668565b73ffffffffffffffffffffffffffffffffffffffff16611371610d36565b73ffffffffffffffffffffffffffffffffffffffff16146113c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113be90612e56565b60405180910390fd5b6113d2848484612298565b50600190509392505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61143c611668565b73ffffffffffffffffffffffffffffffffffffffff1661145a610d36565b73ffffffffffffffffffffffffffffffffffffffff16146114b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a790612e56565b60405180910390fd5b6114b9816124e1565b5050565b6114c5611668565b73ffffffffffffffffffffffffffffffffffffffff166114e3610d36565b73ffffffffffffffffffffffffffffffffffffffff1614611539576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153090612e56565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159f906130ca565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d690613136565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361174e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611745906131a2565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161182c9190612a7a565b60405180910390a3505050565b600061184684848461201d565b506000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611892611668565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611912576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119099061320e565b60405180910390fd5b6119268561191e611668565b858403611670565b60019150509392505050565b61193a6108f9565b611979576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119709061327a565b60405180910390fd5b6000600560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6119bd611668565b6040516119ca9190612b88565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3a906132e6565b60405180910390fd5b611a4f826000836125d0565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acc90613352565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254611b2c9190612dd6565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b919190612a7a565b60405180910390a3505050565b6000611ba9826113de565b611be8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdf906133be565b60405180910390fd5b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fca5069937e68fd197927055037f59d7c90bf75ac104e6e375539ef480c3ad6ee60405160405180910390a260019050919050565b600080600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110611ce057611cdf612fba565b5b906000526020600020906002020190508060010154600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d3f9190612dd6565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff167f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f18260010154604051611dcc9190612a7a565b60405180910390a2600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050611e629190612dd6565b81548110611e7357611e72612fba565b5b9060005260206000209060020201600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110611ed257611ed1612fba565b5b90600052602060002090600202016000820154816000015560018201548160010155905050600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480611f4657611f456133de565b5b6001900381819060005260206000209060020201600080820160009055600182016000905550509055600191505092915050565b611f826108f9565b15611fc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb990613459565b60405180910390fd5b6001600560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612006611668565b6040516120139190612b88565b60405180910390a1565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361208d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612084906134c5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036120fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f390613531565b60405180910390fd5b6121078484846125d0565b60008060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561218d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121849061359d565b60405180910390fd5b8281036000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122209190612d5a565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516122849190612a7a565b60405180910390a360019150509392505050565b6000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836122e59190612d5a565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612365576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235c90613609565b60405180910390fd5b82600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123b09190612d5a565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280848152602001858152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508373ffffffffffffffffffffffffffffffffffffffff167f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b84846040516124ce929190612ba3565b60405180910390a2600190509392505050565b60006124ec826113de565b1561252c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252390613675565b60405180910390fd5b6001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167faf85b60d26151edd11443b704d424da6c43d0468f2235ebae3d1904dbc32304960405160405180910390a260019050919050565b6125d86108f9565b15612618576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260f90613459565b60405180910390fd5b82600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156126a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269d90613675565b60405180910390fd5b83826000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050905060005b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508110156127c55742600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061278e5761278d612fba565b5b90600052602060002090600202016000015410156127b2576127b08482611c8c565b505b80806127bd90612d8e565b9150506126f2565b5081600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128119190612d5a565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612891576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612888906136e1565b60405180910390fd5b61289c8787876128a5565b50505050505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156128e45780820151818401526020810190506128c9565b60008484015250505050565b6000601f19601f8301169050919050565b600061290c826128aa565b61291681856128b5565b93506129268185602086016128c6565b61292f816128f0565b840191505092915050565b600060208201905081810360008301526129548184612901565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061298c82612961565b9050919050565b61299c81612981565b81146129a757600080fd5b50565b6000813590506129b981612993565b92915050565b6000819050919050565b6129d2816129bf565b81146129dd57600080fd5b50565b6000813590506129ef816129c9565b92915050565b60008060408385031215612a0c57612a0b61295c565b5b6000612a1a858286016129aa565b9250506020612a2b858286016129e0565b9150509250929050565b60008115159050919050565b612a4a81612a35565b82525050565b6000602082019050612a656000830184612a41565b92915050565b612a74816129bf565b82525050565b6000602082019050612a8f6000830184612a6b565b92915050565b600080600060608486031215612aae57612aad61295c565b5b6000612abc868287016129aa565b9350506020612acd868287016129aa565b9250506040612ade868287016129e0565b9150509250925092565b600060208284031215612afe57612afd61295c565b5b6000612b0c848285016129aa565b91505092915050565b600060ff82169050919050565b612b2b81612b15565b82525050565b6000602082019050612b466000830184612b22565b92915050565b600060208284031215612b6257612b6161295c565b5b6000612b70848285016129e0565b91505092915050565b612b8281612981565b82525050565b6000602082019050612b9d6000830184612b79565b92915050565b6000604082019050612bb86000830185612a6b565b612bc56020830184612a6b565b9392505050565b60008060408385031215612be357612be261295c565b5b6000612bf1858286016129aa565b9250506020612c02858286016129aa565b9150509250929050565b600080600060608486031215612c2557612c2461295c565b5b6000612c33868287016129aa565b9350506020612c44868287016129e0565b9250506040612c55868287016129e0565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612ca657607f821691505b602082108103612cb957612cb8612c5f565b5b50919050565b7f6f766572666c6f77206c6f636b2062616c616e63650000000000000000000000600082015250565b6000612cf56015836128b5565b9150612d0082612cbf565b602082019050919050565b60006020820190508181036000830152612d2481612ce8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612d65826129bf565b9150612d70836129bf565b9250828201905080821115612d8857612d87612d2b565b5b92915050565b6000612d99826129bf565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612dcb57612dca612d2b565b5b600182019050919050565b6000612de1826129bf565b9150612dec836129bf565b9250828203905081811115612e0457612e03612d2b565b5b92915050565b7f63616c6c6572206e6f74206f776e657200000000000000000000000000000000600082015250565b6000612e406010836128b5565b9150612e4b82612e0a565b602082019050919050565b60006020820190508181036000830152612e6f81612e33565b9050919050565b7f6275726e20616d6f756e74206578636565647320616c6c6f77616e6365000000600082015250565b6000612eac601d836128b5565b9150612eb782612e76565b602082019050919050565b60006020820190508181036000830152612edb81612e9f565b9050919050565b7f5468657265206973206e6f74206c6f636b20696e666f2e000000000000000000600082015250565b6000612f186017836128b5565b9150612f2382612ee2565b602082019050919050565b60006020820190508181036000830152612f4781612f0b565b9050919050565b7f64656372656173656420616c6c6f77616e63652062656c6f77207a65726f0000600082015250565b6000612f84601e836128b5565b9150612f8f82612f4e565b602082019050919050565b60006020820190508181036000830152612fb381612f77565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612ff4826129bf565b91506000820361300757613006612d2b565b5b600182039050919050565b7f726563697069656e74207a65726f000000000000000000000000000000000000600082015250565b6000613048600e836128b5565b915061305382613012565b602082019050919050565b600060208201905081810360008301526130778161303b565b9050919050565b7f6e65774f776e6572206973207a65726f00000000000000000000000000000000600082015250565b60006130b46010836128b5565b91506130bf8261307e565b602082019050919050565b600060208201905081810360008301526130e3816130a7565b9050919050565b7f617070726f76652066726f6d20746865207a65726f2061646472657373000000600082015250565b6000613120601d836128b5565b915061312b826130ea565b602082019050919050565b6000602082019050818103600083015261314f81613113565b9050919050565b7f617070726f766520746f20746865207a65726f20616464726573730000000000600082015250565b600061318c601b836128b5565b915061319782613156565b602082019050919050565b600060208201905081810360008301526131bb8161317f565b9050919050565b7f616d6f756e74206578636565647320616c6c6f77616e63650000000000000000600082015250565b60006131f86018836128b5565b9150613203826131c2565b602082019050919050565b60006020820190508181036000830152613227816131eb565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b60006132646014836128b5565b915061326f8261322e565b602082019050919050565b6000602082019050818103600083015261329381613257565b9050919050565b7f6275726e2066726f6d20746865207a65726f2061646472657373000000000000600082015250565b60006132d0601a836128b5565b91506132db8261329a565b602082019050919050565b600060208201905081810360008301526132ff816132c3565b9050919050565b7f6275726e20616d6f756e7420657863656564732062616c616e63650000000000600082015250565b600061333c601b836128b5565b915061334782613306565b602082019050919050565b6000602082019050818103600083015261336b8161332f565b9050919050565b7f6e6f742066726f7a656e00000000000000000000000000000000000000000000600082015250565b60006133a8600a836128b5565b91506133b382613372565b602082019050919050565b600060208201905081810360008301526133d78161339b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b60006134436010836128b5565b915061344e8261340d565b602082019050919050565b6000602082019050818103600083015261347281613436565b9050919050565b7f7472616e736665722066726f6d20746865207a65726f20616464726573730000600082015250565b60006134af601e836128b5565b91506134ba82613479565b602082019050919050565b600060208201905081810360008301526134de816134a2565b9050919050565b7f7472616e7366657220746f20746865207a65726f206164647265737300000000600082015250565b600061351b601c836128b5565b9150613526826134e5565b602082019050919050565b6000602082019050818103600083015261354a8161350e565b9050919050565b7f7472616e7366657220616d6f756e7420657863656564732062616c616e636500600082015250565b6000613587601f836128b5565b915061359282613551565b602082019050919050565b600060208201905081810360008301526135b68161357a565b9050919050565b7f63616e206f6e6c79206c6f636b207468652062616c616e636500000000000000600082015250565b60006135f36019836128b5565b91506135fe826135bd565b602082019050919050565b60006020820190508181036000830152613622816135e6565b9050919050565b7f66726f7a656e0000000000000000000000000000000000000000000000000000600082015250565b600061365f6006836128b5565b915061366a82613629565b602082019050919050565b6000602082019050818103600083015261368e81613652565b9050919050565b7f62616c616e636520657863656564000000000000000000000000000000000000600082015250565b60006136cb600e836128b5565b91506136d682613695565b602082019050919050565b600060208201905081810360008301526136fa816136be565b905091905056fea264697066735822122042f72946ab986b3ea9da6b87d076caebb9782f9ed3d5211f97535df51ef2498d64736f6c63430008100033

Verified Source Code Partial Match

Compiler: v0.8.16+commit.07a7930e EVM: london Optimization: No
Winnerz.sol 417 lines
// SPDX-License-Identifier: MIT
pragma solidity 0.8.16;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        this;
        //silence state mutability warning without generating bytecode. https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    modifier onlyOwner() {
        require(owner() == _msgSender(), "caller not owner");
        _;
    }

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "newOwner is zero");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }
}

abstract contract Freezable is Context {
    mapping(address => bool) private _frozenAccount;

    event Freeze(address indexed holder);
    event Unfreeze(address indexed holder);

    modifier whenNotFrozen(address holder) {
        require(!_frozenAccount[holder], "frozen");
        _;
    }

    function isFrozen(address holder) public view virtual returns (bool frozen) {
        return _frozenAccount[holder];
    }

    function _freezeAccount(address holder) internal virtual returns (bool success) {
        require(!isFrozen(holder), "frozen");
        _frozenAccount[holder] = true;
        emit Freeze(holder);
        success = true;
    }

    function _unfreezeAccount(address holder) internal virtual returns (bool success) {
        require(isFrozen(holder), "not frozen");
        _frozenAccount[holder] = false;
        emit Unfreeze(holder);
        success = true;
    }
}

abstract contract Pausable is Context {
    bool private _paused;

    event Paused(address account);
    event Unpaused(address account);

    modifier whenNotPaused() {
        require(!paused(), "Pausable: paused");
        _;
    }

    modifier whenPaused() {
        require(paused(), "Pausable: not paused");
        _;
    }

    constructor() {
        _paused = false;
    }

    function paused() public view virtual returns (bool) {
        return _paused;
    }

    function _pause() internal virtual whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    function _unpause() internal virtual whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}

interface IERC20 {
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) internal _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function transfer(address recipient, uint256 amount) external virtual override returns (bool) {
        return _transfer(_msgSender(), recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external virtual override returns (bool) {
        return _transferFrom(sender, recipient, amount);
    }

    function approve(address spender, uint256 amount) external virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) external virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) external virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function _transfer(address sender, address recipient, uint256 amount) internal virtual returns (bool) {
        require(sender != address(0), "transfer from the zero address");
        require(recipient != address(0), "transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
        return true;
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal virtual returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "mint to the zero address");
        _totalSupply += amount;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);
    }

    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "approve from the zero address");
        require(spender != address(0), "approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}
}

abstract contract ERC20Burnable is Context, ERC20, Ownable {
    function burn(uint256 amount) external virtual {
        _burn(_msgSender(), amount);
    }

    function burnFrom(address account, uint256 amount) external virtual {
        uint256 currentAllowance = allowance(account, _msgSender());
        require(currentAllowance >= amount, "burn amount exceeds allowance");
        unchecked {
            _approve(account, _msgSender(), currentAllowance - amount);
        }
        _burn(account, amount);
    }
}

abstract contract ERC20Lockable is ERC20, Ownable {
    struct LockInfo {
        uint256 _releaseTime;
        uint256 _amount;
    }

    mapping(address => LockInfo[]) internal _locks;
    mapping(address => uint256) internal _totalLocked;

    event Lock(address indexed from, uint256 amount, uint256 releaseTime);
    event Unlock(address indexed from, uint256 amount);

    modifier checkLock(address from, uint256 amount) {
        uint256 length = _locks[from].length;
        for (uint256 i = 0; i < _locks[from].length; i++) {
            if (_locks[from][i]._releaseTime < block.timestamp) {
                _unlock(from, i);
            }
        }
        require(_balances[from] >= _totalLocked[from] + amount, "balance exceed");
        _;
    }

    function lock(address recipient, uint256 amount, uint256 releaseTime) external onlyOwner returns (bool success) {
        _lock(recipient, amount, releaseTime);
        success = true;
    }

    function unlock(address from, uint256 idx) external onlyOwner returns (bool success) {
        require(_locks[from].length > idx, "There is not lock info.");
        _unlock(from, idx);
        success = true;
    }

    function releaseLock(address from) external onlyOwner returns (bool success) {
        require(_locks[from].length > 0, "There is not lock info.");
        for (uint256 i = _locks[from].length; i > 0; i--) {
            _unlock(from, i - 1);
        }
        success = true;
    }

    function transferWithLock(
        address recipient,
        uint256 amount,
        uint256 releaseTime
    ) external onlyOwner returns (bool success) {
        require(recipient != address(0), "recipient zero");
        _transfer(_msgSender(), recipient, amount);
        _lock(recipient, amount, releaseTime);
        success = true;
    }

    function lockInfo(address locked, uint256 index) public view returns (uint256 releaseTime, uint256 amount) {
        LockInfo memory info = _locks[locked][index];
        releaseTime = info._releaseTime;
        amount = info._amount;
    }

    function totalLocked(address locked) public view returns (uint256 amount, uint256 length) {
        amount = _totalLocked[locked];
        length = _locks[locked].length;
    }

    function _lock(address from, uint256 amount, uint256 releaseTime) internal returns (bool success) {
        require(_balances[from] >= amount + _totalLocked[from], "can only lock the balance");
        _totalLocked[from] = _totalLocked[from] + amount;
        _locks[from].push(LockInfo(releaseTime, amount));
        emit Lock(from, amount, releaseTime);
        success = true;
    }

    function _unlock(address from, uint256 index) internal returns (bool success) {
        LockInfo storage info = _locks[from][index];
        _totalLocked[from] = _totalLocked[from] - info._amount;
        emit Unlock(from, info._amount);
        _locks[from][index] = _locks[from][_locks[from].length - 1];
        _locks[from].pop();
        success = true;
    }
}

contract Token is ERC20, Pausable, Freezable, ERC20Burnable, ERC20Lockable {
    constructor(string memory __name, string memory __symbol, uint256 __totalSupply) ERC20(__name, __symbol) {
        _mint(_msgSender(), __totalSupply * (10 ** decimals()));
    }

    function pause() external onlyOwner {
        _pause();
    }

    function unpause() external onlyOwner {
        _unpause();
    }

    function freezeAccount(address holder) external onlyOwner {
        _freezeAccount(holder);
    }

    function unfreezeAccount(address holder) external onlyOwner {
        _unfreezeAccount(holder);
    }

    function availableBalanceOf(address holder) public view returns (uint256 balance) {
        uint256 totalBalance = super.balanceOf(holder);
        uint256 avaliableBalance = 0;
        (uint256 lockedBalance, uint256 lockedLength) = totalLocked(holder);
        require(totalBalance >= lockedBalance, "overflow lock balance");

        if (lockedLength > 0) {
            for (uint i = 0; i < lockedLength; i++) {
                (uint256 releaseTime, uint256 amount) = lockInfo(holder, i);
                if (releaseTime <= block.timestamp) {
                    avaliableBalance += amount;
                }
            }
        }

        balance = totalBalance - lockedBalance + avaliableBalance;
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal override whenNotPaused whenNotFrozen(from) checkLock(from, amount) {
        super._beforeTokenTransfer(from, to, amount);
    }
}

contract Winnerz is Token {
    constructor() Token("Winnerz", "WNZ", 10000000000) {}
}

Read Contract

allowance 0xdd62ed3e → uint256
availableBalanceOf 0x25d998bb → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
isFrozen 0xe5839836 → bool
lockInfo 0xb2520a7c → uint256, uint256
name 0x06fdde03 → string
owner 0x8da5cb5b → address
paused 0x5c975abb → bool
symbol 0x95d89b41 → string
totalLocked 0xd8fb9337 → uint256, uint256
totalSupply 0x18160ddd → uint256

Write Contract 17 functions

These functions modify contract state and require a wallet transaction to execute.

approve 0x095ea7b3
address spender
uint256 amount
returns: bool
burn 0x42966c68
uint256 amount
burnFrom 0x79cc6790
address account
uint256 amount
decreaseAllowance 0xa457c2d7
address spender
uint256 subtractedValue
returns: bool
freezeAccount 0xf26c159f
address holder
increaseAllowance 0x39509351
address spender
uint256 addedValue
returns: bool
lock 0xe2ab691d
address recipient
uint256 amount
uint256 releaseTime
returns: bool
pause 0x8456cb59
No parameters
releaseLock 0xd1c46916
address from
returns: bool
renounceOwnership 0x715018a6
No parameters
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner
transferWithLock 0xde6baccb
address recipient
uint256 amount
uint256 releaseTime
returns: bool
unfreezeAccount 0x788649ea
address holder
unlock 0x7eee288d
address from
uint256 idx
returns: bool
unpause 0x3f4ba83a
No parameters

Recent Transactions

No transactions found for this address