Address Contract Partially Verified
Address
0x186eF81fd8E77EEC8BfFC3039e7eC41D5FC0b457
Balance
0 ETH
Nonce
1
Code Size
16143 bytes
Creator
0x46d875Ec...51BB at tx 0xeedead88...3768b9
Indexed Transactions
0 (1 on-chain, 1.2% indexed)
Contract Bytecode
16143 bytes
0x608060405234801561000f575f80fd5b50600436106101ee575f3560e01c806370a082311161010d5780639ab24eb0116100a0578063d505accf1161006f578063d505accf1461061e578063d547741f1461063a578063dd62ed3e14610656578063f1127ed814610686576101ee565b80639ab24eb014610584578063a217fddf146105b4578063a9059cbb146105d2578063c3cda52014610602576101ee565b80638e539e8c116100dc5780638e539e8c146104e857806391d148541461051857806391ddadf41461054857806395d89b4114610566576101ee565b806370a082311461044857806379cc6790146104785780637ecebe001461049457806384b0196e146104c4576101ee565b80633644e515116101855780634bf5d7e9116101545780634bf5d7e9146103ae578063587cde1e146103cc5780635c19a95c146103fc5780636fcfff4514610418576101ee565b80633644e5151461032857806336568abe146103465780633a46b1a81461036257806342966c6814610392576101ee565b806323b872dd116101c157806323b872dd1461028e578063248a9ca3146102be5780632f2ff15d146102ee578063313ce5671461030a576101ee565b806301ffc9a7146101f257806306fdde0314610222578063095ea7b31461024057806318160ddd14610270575b5f80fd5b61020c600480360381019061020791906130f1565b6106b6565b6040516102199190613136565b60405180910390f35b61022a61072f565b60405161023791906131d9565b60405180910390f35b61025a60048036038101906102559190613286565b6107bf565b6040516102679190613136565b60405180910390f35b6102786107e1565b60405161028591906132d3565b60405180910390f35b6102a860048036038101906102a391906132ec565b6107ea565b6040516102b59190613136565b60405180910390f35b6102d860048036038101906102d3919061336f565b610818565b6040516102e591906133a9565b60405180910390f35b610308600480360381019061030391906133c2565b610835565b005b610312610857565b60405161031f919061341b565b60405180910390f35b61033061085f565b60405161033d91906133a9565b60405180910390f35b610360600480360381019061035b91906133c2565b61086d565b005b61037c60048036038101906103779190613286565b6108e8565b60405161038991906132d3565b60405180910390f35b6103ac60048036038101906103a79190613434565b6109be565b005b6103b66109d2565b6040516103c391906131d9565b60405180910390f35b6103e660048036038101906103e1919061345f565b610a66565b6040516103f39190613499565b60405180910390f35b6104166004803603810190610411919061345f565b610acb565b005b610432600480360381019061042d919061345f565b610ae4565b60405161043f91906134d0565b60405180910390f35b610462600480360381019061045d919061345f565b610af5565b60405161046f91906132d3565b60405180910390f35b610492600480360381019061048d9190613286565b610b3a565b005b6104ae60048036038101906104a9919061345f565b610b5a565b6040516104bb91906132d3565b60405180910390f35b6104cc610b6b565b6040516104df97969594939291906135da565b60405180910390f35b61050260048036038101906104fd9190613434565b610c10565b60405161050f91906132d3565b60405180910390f35b610532600480360381019061052d91906133c2565b610caa565b60405161053f9190613136565b60405180910390f35b610550610d0e565b60405161055d919061367c565b60405180910390f35b61056e610d1c565b60405161057b91906131d9565b60405180910390f35b61059e6004803603810190610599919061345f565b610dac565b6040516105ab91906132d3565b60405180910390f35b6105bc610e15565b6040516105c991906133a9565b60405180910390f35b6105ec60048036038101906105e79190613286565b610e1b565b6040516105f99190613136565b60405180910390f35b61061c600480360381019061061791906136bf565b610e3d565b005b61063860048036038101906106339190613748565b610f02565b005b610654600480360381019061064f91906133c2565b611047565b005b610670600480360381019061066b91906137e5565b611069565b60405161067d91906132d3565b60405180910390f35b6106a0600480360381019061069b919061384d565b6110eb565b6040516106ad91906138fb565b60405180910390f35b5f7f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061072857506107278261112f565b5b9050919050565b60606003805461073e90613941565b80601f016020809104026020016040519081016040528092919081815260200182805461076a90613941565b80156107b55780601f1061078c576101008083540402835291602001916107b5565b820191905f5260205f20905b81548152906001019060200180831161079857829003601f168201915b5050505050905090565b5f806107c9611198565b90506107d681858561119f565b600191505092915050565b5f600254905090565b5f806107f4611198565b90506108018582856111b1565b61080c858585611243565b60019150509392505050565b5f600b5f8381526020019081526020015f20600101549050919050565b61083e82610818565b61084781611333565b6108518383611347565b50505050565b5f6012905090565b5f610868611431565b905090565b610875611198565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146108d9576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108e382826114e7565b505050565b5f806108f2610d0e565b90508065ffffffffffff1683106109425782816040517fecd3f81e000000000000000000000000000000000000000000000000000000008152600401610939929190613971565b60405180910390fd5b61099961094e846115d1565b60095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2061162a90919063ffffffff16565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff1691505092915050565b6109cf6109c9611198565b82611717565b50565b60606109dc611796565b65ffffffffffff166109ec610d0e565b65ffffffffffff1614610a2b576040517f6ff0714000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518060400160405280601d81526020017f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000815250905090565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f610ad4611198565b9050610ae081836117a5565b5050565b5f610aee826118b5565b9050919050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610b4c82610b46611198565b836111b1565b610b568282611717565b5050565b5f610b648261190a565b9050919050565b5f6060805f805f6060610b7c61191b565b610b84611956565b46305f801b5f67ffffffffffffffff811115610ba357610ba2613998565b5b604051908082528060200260200182016040528015610bd15781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b5f80610c1a610d0e565b90508065ffffffffffff168310610c6a5782816040517fecd3f81e000000000000000000000000000000000000000000000000000000008152600401610c61929190613971565b60405180910390fd5b610c86610c76846115d1565b600a61162a90919063ffffffff16565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff16915050919050565b5f600b5f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f610d17611796565b905090565b606060048054610d2b90613941565b80601f0160208091040260200160405190810160405280929190818152602001828054610d5790613941565b8015610da25780601f10610d7957610100808354040283529160200191610da2565b820191905f5260205f20905b815481529060010190602001808311610d8557829003601f168201915b5050505050905090565b5f610df260095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20611991565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff169050919050565b5f801b81565b5f80610e25611198565b9050610e32818585611243565b600191505092915050565b83421115610e8257836040517f4683af0e000000000000000000000000000000000000000000000000000000008152600401610e7991906132d3565b60405180910390fd5b5f610ee3610edb7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf898989604051602001610ec094939291906139c5565b604051602081830303815290604052805190602001206119f3565b858585611a0c565b9050610eef8187611a3a565b610ef981886117a5565b50505050505050565b83421115610f4757836040517f62791302000000000000000000000000000000000000000000000000000000008152600401610f3e91906132d3565b60405180910390fd5b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610f758c611a91565b89604051602001610f8b96959493929190613a08565b6040516020818303038152906040528051906020012090505f610fad826119f3565b90505f610fbc82878787611a0c565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461103057808a6040517f4b800e46000000000000000000000000000000000000000000000000000000008152600401611027929190613a67565b60405180910390fd5b61103b8a8a8a61119f565b50505050505050505050565b61105082610818565b61105981611333565b61106383836114e7565b50505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6110f361305c565b6110fd8383611ae4565b905092915050565b5f81836111129190613abb565b905092915050565b5f81836111279190613b08565b905092915050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f33905090565b6111ac8383836001611b43565b505050565b5f6111bc8484611069565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461123d578181101561122e578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161122593929190613b55565b60405180910390fd5b61123c84848484035f611b43565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112b3575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016112aa9190613499565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611323575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161131a9190613499565b60405180910390fd5b61132e838383611d12565b505050565b6113448161133f611198565b611d22565b50565b5f6113528383610caa565b611427576001600b5f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506113c4611198565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001905061142b565b5f90505b92915050565b5f7f000000000000000000000000186ef81fd8e77eec8bffc3039e7ec41d5fc0b45773ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161480156114ac57507f000000000000000000000000000000000000000000000000000000000000000146145b156114d9577fbee620dea7ad468f77407fd3bd49b75c263ce3d622755955965dcb0c558fc1fe90506114e4565b6114e1611d73565b90505b90565b5f6114f28383610caa565b156115c7575f600b5f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550611564611198565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a4600190506115cb565b5f90505b92915050565b5f65ffffffffffff8016821115611622576030826040517f6dfcc650000000000000000000000000000000000000000000000000000000008152600401611619929190613bcc565b60405180910390fd5b819050919050565b5f80835f018054905090505f8082905060058311156116ab575f61164d84611e08565b846116589190613bf3565b9050611666875f0182611efe565b5f015f9054906101000a900465ffffffffffff1665ffffffffffff168665ffffffffffff161015611699578091506116a9565b6001816116a69190613c26565b92505b505b5f6116ba875f01878585611f10565b90505f8114611709576116db875f016001836116d69190613bf3565b611efe565b5f0160069054906101000a900479ffffffffffffffffffffffffffffffffffffffffffffffffffff1661170b565b5f5b94505050505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611787575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161177e9190613499565b60405180910390fd5b611792825f83611d12565b5050565b5f6117a0436115d1565b905090565b5f6117af83610a66565b90508160085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a46118b081836118ab86611f85565b611f96565b505050565b5f6119036118fe60095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20612206565b612215565b9050919050565b5f6119148261226c565b9050919050565b606061195160057f496e7370656374000000000000000000000000000000000000000000000000076122b290919063ffffffff16565b905090565b606061198c60067f31000000000000000000000000000000000000000000000000000000000000016122b290919063ffffffff16565b905090565b5f80825f018054905090505f81146119e9576119bb835f016001836119b69190613bf3565b611efe565b5f0160069054906101000a900479ffffffffffffffffffffffffffffffffffffffffffffffffffff166119eb565b5f5b915050919050565b5f611a056119ff611431565b8361235f565b9050919050565b5f805f80611a1c8888888861239f565b925092509250611a2c8282612486565b829350505050949350505050565b5f611a4483611a91565b9050808214611a8c5782816040517f752d88c0000000000000000000000000000000000000000000000000000000008152600401611a83929190613c59565b60405180910390fd5b505050565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815480929190600101919050559050919050565b611aec61305c565b611b3b8260095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206125e890919063ffffffff16565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611bb3575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611baa9190613499565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c23575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401611c1a9190613499565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015611d0c578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611d0391906132d3565b60405180910390a35b50505050565b611d1d8383836126b7565b505050565b611d2c8282610caa565b611d6f5780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401611d66929190613c80565b60405180910390fd5b5050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f5278f6c2090a3fc8f29ed5755e0f40b064b568db6cc407506a0658d75bfeff727fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc64630604051602001611ded959493929190613ca7565b60405160208183030381529060405280519060200120905090565b5f808203611e18575f9050611ef9565b5f6001611e2484612765565b901c6001901b90506001818481611e3e57611e3d613cf8565b5b048201901c90506001818481611e5757611e56613cf8565b5b048201901c90506001818481611e7057611e6f613cf8565b5b048201901c90506001818481611e8957611e88613cf8565b5b048201901c90506001818481611ea257611ea1613cf8565b5b048201901c90506001818481611ebb57611eba613cf8565b5b048201901c90506001818481611ed457611ed3613cf8565b5b048201901c9050611ef581828581611eef57611eee613cf8565b5b0461283c565b9150505b919050565b5f825f528160205f2001905092915050565b5f5b81831015611f7a575f611f258484612854565b90508465ffffffffffff16611f3a8783611efe565b5f015f9054906101000a900465ffffffffffff1665ffffffffffff161115611f6457809250611f74565b600181611f719190613c26565b93505b50611f12565b819050949350505050565b5f611f8f82610af5565b9050919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611fd157505f81115b15612201575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146120eb575f8061205c60095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2061111a61205786612879565b6128e6565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff16915079ffffffffffffffffffffffffffffffffffffffffffffffffffff1691508473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516120e0929190613d25565b60405180910390a250505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612200575f8061217160095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2061110561216c86612879565b6128e6565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff16915079ffffffffffffffffffffffffffffffffffffffffffffffffffff1691508373ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516121f5929190613d25565b60405180910390a250505b5b505050565b5f815f01805490509050919050565b5f63ffffffff8016821115612264576020826040517f6dfcc65000000000000000000000000000000000000000000000000000000000815260040161225b929190613d85565b60405180910390fd5b819050919050565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b606060ff5f1b83146122ce576122c783612925565b9050612359565b8180546122da90613941565b80601f016020809104026020016040519081016040528092919081815260200182805461230690613941565b80156123515780601f1061232857610100808354040283529160200191612351565b820191905f5260205f20905b81548152906001019060200180831161233457829003601f168201915b505050505090505b92915050565b5f6040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b5f805f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c11156123db575f60038592509250925061247c565b5f6001888888886040515f81526020016040526040516123fe9493929190613dac565b6020604051602081039080840390855afa15801561241e573d5f803e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361246f575f60015f801b9350935093505061247c565b805f805f1b935093509350505b9450945094915050565b5f600381111561249957612498613def565b5b8260038111156124ac576124ab613def565b5b03156125e457600160038111156124c6576124c5613def565b5b8260038111156124d9576124d8613def565b5b03612510576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600381111561252457612523613def565b5b82600381111561253757612536613def565b5b0361257b57805f1c6040517ffce698f700000000000000000000000000000000000000000000000000000000815260040161257291906132d3565b60405180910390fd5b60038081111561258e5761258d613def565b5b8260038111156125a1576125a0613def565b5b036125e357806040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004016125da91906133a9565b60405180910390fd5b5b5050565b6125f061305c565b825f018263ffffffff168154811061260b5761260a613e1c565b5b905f5260205f20016040518060400160405290815f82015f9054906101000a900465ffffffffffff1665ffffffffffff1665ffffffffffff1681526020015f820160069054906101000a900479ffffffffffffffffffffffffffffffffffffffffffffffffffff1679ffffffffffffffffffffffffffffffffffffffffffffffffffff1679ffffffffffffffffffffffffffffffffffffffffffffffffffff1681525050905092915050565b6126c2838383612997565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612755575f6126fe6107e1565b90505f612709612bb0565b9050808211156127525781816040517f1cb15d26000000000000000000000000000000000000000000000000000000008152600401612749929190613d25565b60405180910390fd5b50505b612760838383612bd3565b505050565b5f805f90505f608084901c111561278457608083901c92506080810190505b5f604084901c111561279e57604083901c92506040810190505b5f602084901c11156127b857602083901c92506020810190505b5f601084901c11156127d257601083901c92506010810190505b5f600884901c11156127ec57600883901c92506008810190505b5f600484901c111561280657600483901c92506004810190505b5f600284901c111561282057600283901c92506002810190505b5f600184901c1115612833576001810190505b80915050919050565b5f81831061284a578161284c565b825b905092915050565b5f60028284186128649190613e49565b8284166128719190613c26565b905092915050565b5f79ffffffffffffffffffffffffffffffffffffffffffffffffffff80168211156128de5760d0826040517f6dfcc6500000000000000000000000000000000000000000000000000000000081526004016128d5929190613eb2565b60405180910390fd5b819050919050565b5f806129196128f3610d0e565b6129096128ff88611991565b868863ffffffff16565b87612c8b9092919063ffffffff16565b91509150935093915050565b60605f61293183612ca6565b90505f602067ffffffffffffffff81111561294f5761294e613998565b5b6040519080825280601f01601f1916602001820160405280156129815781602001600182028036833780820191505090505b5090508181528360208201528092505050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036129e7578060025f8282546129db9190613c26565b92505081905550612ab5565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612a70578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401612a6793929190613b55565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612afc578060025f8282540392505081905550612b46565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612ba391906132d3565b60405180910390a3505050565b5f79ffffffffffffffffffffffffffffffffffffffffffffffffffff8016905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612c1f57612c1c600a611105612c1784612879565b6128e6565b50505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c6b57612c68600a61111a612c6384612879565b6128e6565b50505b612c86612c7784610a66565b612c8084610a66565b83611f96565b505050565b5f80612c9a855f018585612cf4565b91509150935093915050565b5f8060ff835f1c169050601f811115612ceb576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050919050565b5f805f858054905090505f811115612f74575f612d1d87600184612d189190613bf3565b611efe565b6040518060400160405290815f82015f9054906101000a900465ffffffffffff1665ffffffffffff1665ffffffffffff1681526020015f820160069054906101000a900479ffffffffffffffffffffffffffffffffffffffffffffffffffff1679ffffffffffffffffffffffffffffffffffffffffffffffffffff1679ffffffffffffffffffffffffffffffffffffffffffffffffffff168152505090508565ffffffffffff16815f015165ffffffffffff161115612e08576040517f2520601d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8565ffffffffffff16815f015165ffffffffffff1603612e8a5784612e3988600185612e349190613bf3565b611efe565b5f0160066101000a81548179ffffffffffffffffffffffffffffffffffffffffffffffffffff021916908379ffffffffffffffffffffffffffffffffffffffffffffffffffff160217905550612f63565b8660405180604001604052808865ffffffffffff1681526020018779ffffffffffffffffffffffffffffffffffffffffffffffffffff16815250908060018154018082558091505060019003905f5260205f20015f909190919091505f820151815f015f6101000a81548165ffffffffffff021916908365ffffffffffff1602179055506020820151815f0160066101000a81548179ffffffffffffffffffffffffffffffffffffffffffffffffffff021916908379ffffffffffffffffffffffffffffffffffffffffffffffffffff16021790555050505b806020015185935093505050613054565b8560405180604001604052808765ffffffffffff1681526020018679ffffffffffffffffffffffffffffffffffffffffffffffffffff16815250908060018154018082558091505060019003905f5260205f20015f909190919091505f820151815f015f6101000a81548165ffffffffffff021916908365ffffffffffff1602179055506020820151815f0160066101000a81548179ffffffffffffffffffffffffffffffffffffffffffffffffffff021916908379ffffffffffffffffffffffffffffffffffffffffffffffffffff16021790555050505f8492509250505b935093915050565b60405180604001604052805f65ffffffffffff1681526020015f79ffffffffffffffffffffffffffffffffffffffffffffffffffff1681525090565b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6130d08161309c565b81146130da575f80fd5b50565b5f813590506130eb816130c7565b92915050565b5f6020828403121561310657613105613098565b5b5f613113848285016130dd565b91505092915050565b5f8115159050919050565b6131308161311c565b82525050565b5f6020820190506131495f830184613127565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561318657808201518184015260208101905061316b565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6131ab8261314f565b6131b58185613159565b93506131c5818560208601613169565b6131ce81613191565b840191505092915050565b5f6020820190508181035f8301526131f181846131a1565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613222826131f9565b9050919050565b61323281613218565b811461323c575f80fd5b50565b5f8135905061324d81613229565b92915050565b5f819050919050565b61326581613253565b811461326f575f80fd5b50565b5f813590506132808161325c565b92915050565b5f806040838503121561329c5761329b613098565b5b5f6132a98582860161323f565b92505060206132ba85828601613272565b9150509250929050565b6132cd81613253565b82525050565b5f6020820190506132e65f8301846132c4565b92915050565b5f805f6060848603121561330357613302613098565b5b5f6133108682870161323f565b93505060206133218682870161323f565b925050604061333286828701613272565b9150509250925092565b5f819050919050565b61334e8161333c565b8114613358575f80fd5b50565b5f8135905061336981613345565b92915050565b5f6020828403121561338457613383613098565b5b5f6133918482850161335b565b91505092915050565b6133a38161333c565b82525050565b5f6020820190506133bc5f83018461339a565b92915050565b5f80604083850312156133d8576133d7613098565b5b5f6133e58582860161335b565b92505060206133f68582860161323f565b9150509250929050565b5f60ff82169050919050565b61341581613400565b82525050565b5f60208201905061342e5f83018461340c565b92915050565b5f6020828403121561344957613448613098565b5b5f61345684828501613272565b91505092915050565b5f6020828403121561347457613473613098565b5b5f6134818482850161323f565b91505092915050565b61349381613218565b82525050565b5f6020820190506134ac5f83018461348a565b92915050565b5f63ffffffff82169050919050565b6134ca816134b2565b82525050565b5f6020820190506134e35f8301846134c1565b92915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b61351d816134e9565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61355581613253565b82525050565b5f613566838361354c565b60208301905092915050565b5f602082019050919050565b5f61358882613523565b613592818561352d565b935061359d8361353d565b805f5b838110156135cd5781516135b4888261355b565b97506135bf83613572565b9250506001810190506135a0565b5085935050505092915050565b5f60e0820190506135ed5f83018a613514565b81810360208301526135ff81896131a1565b9050818103604083015261361381886131a1565b905061362260608301876132c4565b61362f608083018661348a565b61363c60a083018561339a565b81810360c083015261364e818461357e565b905098975050505050505050565b5f65ffffffffffff82169050919050565b6136768161365c565b82525050565b5f60208201905061368f5f83018461366d565b92915050565b61369e81613400565b81146136a8575f80fd5b50565b5f813590506136b981613695565b92915050565b5f805f805f8060c087890312156136d9576136d8613098565b5b5f6136e689828a0161323f565b96505060206136f789828a01613272565b955050604061370889828a01613272565b945050606061371989828a016136ab565b935050608061372a89828a0161335b565b92505060a061373b89828a0161335b565b9150509295509295509295565b5f805f805f805f60e0888a03121561376357613762613098565b5b5f6137708a828b0161323f565b97505060206137818a828b0161323f565b96505060406137928a828b01613272565b95505060606137a38a828b01613272565b94505060806137b48a828b016136ab565b93505060a06137c58a828b0161335b565b92505060c06137d68a828b0161335b565b91505092959891949750929550565b5f80604083850312156137fb576137fa613098565b5b5f6138088582860161323f565b92505060206138198582860161323f565b9150509250929050565b61382c816134b2565b8114613836575f80fd5b50565b5f8135905061384781613823565b92915050565b5f806040838503121561386357613862613098565b5b5f6138708582860161323f565b925050602061388185828601613839565b9150509250929050565b6138948161365c565b82525050565b5f79ffffffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b6138c88161389a565b82525050565b604082015f8201516138e25f85018261388b565b5060208201516138f560208501826138bf565b50505050565b5f60408201905061390e5f8301846138ce565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061395857607f821691505b60208210810361396b5761396a613914565b5b50919050565b5f6040820190506139845f8301856132c4565b613991602083018461366d565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f6080820190506139d85f83018761339a565b6139e5602083018661348a565b6139f260408301856132c4565b6139ff60608301846132c4565b95945050505050565b5f60c082019050613a1b5f83018961339a565b613a28602083018861348a565b613a35604083018761348a565b613a4260608301866132c4565b613a4f60808301856132c4565b613a5c60a08301846132c4565b979650505050505050565b5f604082019050613a7a5f83018561348a565b613a87602083018461348a565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613ac58261389a565b9150613ad08361389a565b9250828201905079ffffffffffffffffffffffffffffffffffffffffffffffffffff811115613b0257613b01613a8e565b5b92915050565b5f613b128261389a565b9150613b1d8361389a565b9250828203905079ffffffffffffffffffffffffffffffffffffffffffffffffffff811115613b4f57613b4e613a8e565b5b92915050565b5f606082019050613b685f83018661348a565b613b7560208301856132c4565b613b8260408301846132c4565b949350505050565b5f819050919050565b5f819050919050565b5f613bb6613bb1613bac84613b8a565b613b93565b613400565b9050919050565b613bc681613b9c565b82525050565b5f604082019050613bdf5f830185613bbd565b613bec60208301846132c4565b9392505050565b5f613bfd82613253565b9150613c0883613253565b9250828203905081811115613c2057613c1f613a8e565b5b92915050565b5f613c3082613253565b9150613c3b83613253565b9250828201905080821115613c5357613c52613a8e565b5b92915050565b5f604082019050613c6c5f83018561348a565b613c7960208301846132c4565b9392505050565b5f604082019050613c935f83018561348a565b613ca0602083018461339a565b9392505050565b5f60a082019050613cba5f83018861339a565b613cc7602083018761339a565b613cd4604083018661339a565b613ce160608301856132c4565b613cee608083018461348a565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f604082019050613d385f8301856132c4565b613d4560208301846132c4565b9392505050565b5f819050919050565b5f613d6f613d6a613d6584613d4c565b613b93565b613400565b9050919050565b613d7f81613d55565b82525050565b5f604082019050613d985f830185613d76565b613da560208301846132c4565b9392505050565b5f608082019050613dbf5f83018761339a565b613dcc602083018661340c565b613dd9604083018561339a565b613de6606083018461339a565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f613e5382613253565b9150613e5e83613253565b925082613e6e57613e6d613cf8565b5b828204905092915050565b5f819050919050565b5f613e9c613e97613e9284613e79565b613b93565b613400565b9050919050565b613eac81613e82565b82525050565b5f604082019050613ec55f830185613ea3565b613ed260208301846132c4565b939250505056fea26469706673582212209c18a340ff8ff5e94d45e3a14677ef813ace3ca3f8c5954ab110a0cba3fe70ac64736f6c63430008160033
Verified Source Code Partial Match
Compiler: v0.8.22+commit.4fc1097e
EVM: shanghai
Optimization: No
Inspect.sol 4918 lines
// File: @openzeppelin/[email protected]/utils/introspection/IERC165.sol // OpenZeppelin Contracts (last updated v5.0.0) (utils/introspection/IERC165.sol) pragma solidity ^0.8.20; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: @openzeppelin/[email protected]/utils/introspection/ERC165.sol // OpenZeppelin Contracts (last updated v5.0.0) (utils/introspection/ERC165.sol) pragma solidity ^0.8.20; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) { return interfaceId == type(IERC165).interfaceId; } } // File: @openzeppelin/[email protected]/access/IAccessControl.sol // OpenZeppelin Contracts (last updated v5.0.0) (access/IAccessControl.sol) pragma solidity ^0.8.20; /** * @dev External interface of AccessControl declared to support ERC165 detection. */ interface IAccessControl { /** * @dev The `account` is missing a role. */ error AccessControlUnauthorizedAccount(address account, bytes32 neededRole); /** * @dev The caller of a function is not the expected one. * * NOTE: Don't confuse with {AccessControlUnauthorizedAccount}. */ error AccessControlBadConfirmation(); /** * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` * * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite * {RoleAdminChanged} not being emitted signaling this. */ event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole); /** * @dev Emitted when `account` is granted `role`. * * `sender` is the account that originated the contract call, an admin role * bearer except when using {AccessControl-_setupRole}. */ event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender); /** * @dev Emitted when `account` is revoked `role`. * * `sender` is the account that originated the contract call: * - if using `revokeRole`, it is the admin role bearer * - if using `renounceRole`, it is the role bearer (i.e. `account`) */ event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender); /** * @dev Returns `true` if `account` has been granted `role`. */ function hasRole(bytes32 role, address account) external view returns (bool); /** * @dev Returns the admin role that controls `role`. See {grantRole} and * {revokeRole}. * * To change a role's admin, use {AccessControl-_setRoleAdmin}. */ function getRoleAdmin(bytes32 role) external view returns (bytes32); /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function grantRole(bytes32 role, address account) external; /** * @dev Revokes `role` from `account`. * * If `account` had been granted `role`, emits a {RoleRevoked} event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function revokeRole(bytes32 role, address account) external; /** * @dev Revokes `role` from the calling account. * * Roles are often managed via {grantRole} and {revokeRole}: this function's * purpose is to provide a mechanism for accounts to lose their privileges * if they are compromised (such as when a trusted device is misplaced). * * If the calling account had been granted `role`, emits a {RoleRevoked} * event. * * Requirements: * * - the caller must be `callerConfirmation`. */ function renounceRole(bytes32 role, address callerConfirmation) external; } // File: @openzeppelin/[email protected]/utils/math/SafeCast.sol // OpenZeppelin Contracts (last updated v5.0.0) (utils/math/SafeCast.sol) // This file was procedurally generated from scripts/generate/templates/SafeCast.js. pragma solidity ^0.8.20; /** * @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow * checks. * * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can * easily result in undesired exploitation or bugs, since developers usually * assume that overflows raise errors. `SafeCast` restores this intuition by * reverting the transaction when such an operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeCast { /** * @dev Value doesn't fit in an uint of `bits` size. */ error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value); /** * @dev An int value doesn't fit in an uint of `bits` size. */ error SafeCastOverflowedIntToUint(int256 value); /** * @dev Value doesn't fit in an int of `bits` size. */ error SafeCastOverflowedIntDowncast(uint8 bits, int256 value); /** * @dev An uint value doesn't fit in an int of `bits` size. */ error SafeCastOverflowedUintToInt(uint256 value); /** * @dev Returns the downcasted uint248 from uint256, reverting on * overflow (when the input is greater than largest uint248). * * Counterpart to Solidity's `uint248` operator. * * Requirements: * * - input must fit into 248 bits */ function toUint248(uint256 value) internal pure returns (uint248) { if (value > type(uint248).max) { revert SafeCastOverflowedUintDowncast(248, value); } return uint248(value); } /** * @dev Returns the downcasted uint240 from uint256, reverting on * overflow (when the input is greater than largest uint240). * * Counterpart to Solidity's `uint240` operator. * * Requirements: * * - input must fit into 240 bits */ function toUint240(uint256 value) internal pure returns (uint240) { if (value > type(uint240).max) { revert SafeCastOverflowedUintDowncast(240, value); } return uint240(value); } /** * @dev Returns the downcasted uint232 from uint256, reverting on * overflow (when the input is greater than largest uint232). * * Counterpart to Solidity's `uint232` operator. * * Requirements: * * - input must fit into 232 bits */ function toUint232(uint256 value) internal pure returns (uint232) { if (value > type(uint232).max) { revert SafeCastOverflowedUintDowncast(232, value); } return uint232(value); } /** * @dev Returns the downcasted uint224 from uint256, reverting on * overflow (when the input is greater than largest uint224). * * Counterpart to Solidity's `uint224` operator. * * Requirements: * * - input must fit into 224 bits */ function toUint224(uint256 value) internal pure returns (uint224) { if (value > type(uint224).max) { revert SafeCastOverflowedUintDowncast(224, value); } return uint224(value); } /** * @dev Returns the downcasted uint216 from uint256, reverting on * overflow (when the input is greater than largest uint216). * * Counterpart to Solidity's `uint216` operator. * * Requirements: * * - input must fit into 216 bits */ function toUint216(uint256 value) internal pure returns (uint216) { if (value > type(uint216).max) { revert SafeCastOverflowedUintDowncast(216, value); } return uint216(value); } /** * @dev Returns the downcasted uint208 from uint256, reverting on * overflow (when the input is greater than largest uint208). * * Counterpart to Solidity's `uint208` operator. * * Requirements: * * - input must fit into 208 bits */ function toUint208(uint256 value) internal pure returns (uint208) { if (value > type(uint208).max) { revert SafeCastOverflowedUintDowncast(208, value); } return uint208(value); } /** * @dev Returns the downcasted uint200 from uint256, reverting on * overflow (when the input is greater than largest uint200). * * Counterpart to Solidity's `uint200` operator. * * Requirements: * * - input must fit into 200 bits */ function toUint200(uint256 value) internal pure returns (uint200) { if (value > type(uint200).max) { revert SafeCastOverflowedUintDowncast(200, value); } return uint200(value); } /** * @dev Returns the downcasted uint192 from uint256, reverting on * overflow (when the input is greater than largest uint192). * * Counterpart to Solidity's `uint192` operator. * * Requirements: * * - input must fit into 192 bits */ function toUint192(uint256 value) internal pure returns (uint192) { if (value > type(uint192).max) { revert SafeCastOverflowedUintDowncast(192, value); } return uint192(value); } /** * @dev Returns the downcasted uint184 from uint256, reverting on * overflow (when the input is greater than largest uint184). * * Counterpart to Solidity's `uint184` operator. * * Requirements: * * - input must fit into 184 bits */ function toUint184(uint256 value) internal pure returns (uint184) { if (value > type(uint184).max) { revert SafeCastOverflowedUintDowncast(184, value); } return uint184(value); } /** * @dev Returns the downcasted uint176 from uint256, reverting on * overflow (when the input is greater than largest uint176). * * Counterpart to Solidity's `uint176` operator. * * Requirements: * * - input must fit into 176 bits */ function toUint176(uint256 value) internal pure returns (uint176) { if (value > type(uint176).max) { revert SafeCastOverflowedUintDowncast(176, value); } return uint176(value); } /** * @dev Returns the downcasted uint168 from uint256, reverting on * overflow (when the input is greater than largest uint168). * * Counterpart to Solidity's `uint168` operator. * * Requirements: * * - input must fit into 168 bits */ function toUint168(uint256 value) internal pure returns (uint168) { if (value > type(uint168).max) { revert SafeCastOverflowedUintDowncast(168, value); } return uint168(value); } /** * @dev Returns the downcasted uint160 from uint256, reverting on * overflow (when the input is greater than largest uint160). * * Counterpart to Solidity's `uint160` operator. * * Requirements: * * - input must fit into 160 bits */ function toUint160(uint256 value) internal pure returns (uint160) { if (value > type(uint160).max) { revert SafeCastOverflowedUintDowncast(160, value); } return uint160(value); } /** * @dev Returns the downcasted uint152 from uint256, reverting on * overflow (when the input is greater than largest uint152). * * Counterpart to Solidity's `uint152` operator. * * Requirements: * * - input must fit into 152 bits */ function toUint152(uint256 value) internal pure returns (uint152) { if (value > type(uint152).max) { revert SafeCastOverflowedUintDowncast(152, value); } return uint152(value); } /** * @dev Returns the downcasted uint144 from uint256, reverting on * overflow (when the input is greater than largest uint144). * * Counterpart to Solidity's `uint144` operator. * * Requirements: * * - input must fit into 144 bits */ function toUint144(uint256 value) internal pure returns (uint144) { if (value > type(uint144).max) { revert SafeCastOverflowedUintDowncast(144, value); } return uint144(value); } /** * @dev Returns the downcasted uint136 from uint256, reverting on * overflow (when the input is greater than largest uint136). * * Counterpart to Solidity's `uint136` operator. * * Requirements: * * - input must fit into 136 bits */ function toUint136(uint256 value) internal pure returns (uint136) { if (value > type(uint136).max) { revert SafeCastOverflowedUintDowncast(136, value); } return uint136(value); } /** * @dev Returns the downcasted uint128 from uint256, reverting on * overflow (when the input is greater than largest uint128). * * Counterpart to Solidity's `uint128` operator. * * Requirements: * * - input must fit into 128 bits */ function toUint128(uint256 value) internal pure returns (uint128) { if (value > type(uint128).max) { revert SafeCastOverflowedUintDowncast(128, value); } return uint128(value); } /** * @dev Returns the downcasted uint120 from uint256, reverting on * overflow (when the input is greater than largest uint120). * * Counterpart to Solidity's `uint120` operator. * * Requirements: * * - input must fit into 120 bits */ function toUint120(uint256 value) internal pure returns (uint120) { if (value > type(uint120).max) { revert SafeCastOverflowedUintDowncast(120, value); } return uint120(value); } /** * @dev Returns the downcasted uint112 from uint256, reverting on * overflow (when the input is greater than largest uint112). * * Counterpart to Solidity's `uint112` operator. * * Requirements: * * - input must fit into 112 bits */ function toUint112(uint256 value) internal pure returns (uint112) { if (value > type(uint112).max) { revert SafeCastOverflowedUintDowncast(112, value); } return uint112(value); } /** * @dev Returns the downcasted uint104 from uint256, reverting on * overflow (when the input is greater than largest uint104). * * Counterpart to Solidity's `uint104` operator. * * Requirements: * * - input must fit into 104 bits */ function toUint104(uint256 value) internal pure returns (uint104) { if (value > type(uint104).max) { revert SafeCastOverflowedUintDowncast(104, value); } return uint104(value); } /** * @dev Returns the downcasted uint96 from uint256, reverting on * overflow (when the input is greater than largest uint96). * * Counterpart to Solidity's `uint96` operator. * * Requirements: * * - input must fit into 96 bits */ function toUint96(uint256 value) internal pure returns (uint96) { if (value > type(uint96).max) { revert SafeCastOverflowedUintDowncast(96, value); } return uint96(value); } /** * @dev Returns the downcasted uint88 from uint256, reverting on * overflow (when the input is greater than largest uint88). * * Counterpart to Solidity's `uint88` operator. * * Requirements: * * - input must fit into 88 bits */ function toUint88(uint256 value) internal pure returns (uint88) { if (value > type(uint88).max) { revert SafeCastOverflowedUintDowncast(88, value); } return uint88(value); } /** * @dev Returns the downcasted uint80 from uint256, reverting on * overflow (when the input is greater than largest uint80). * * Counterpart to Solidity's `uint80` operator. * * Requirements: * * - input must fit into 80 bits */ function toUint80(uint256 value) internal pure returns (uint80) { if (value > type(uint80).max) { revert SafeCastOverflowedUintDowncast(80, value); } return uint80(value); } /** * @dev Returns the downcasted uint72 from uint256, reverting on * overflow (when the input is greater than largest uint72). * * Counterpart to Solidity's `uint72` operator. * * Requirements: * * - input must fit into 72 bits */ function toUint72(uint256 value) internal pure returns (uint72) { if (value > type(uint72).max) { revert SafeCastOverflowedUintDowncast(72, value); } return uint72(value); } /** * @dev Returns the downcasted uint64 from uint256, reverting on * overflow (when the input is greater than largest uint64). * * Counterpart to Solidity's `uint64` operator. * * Requirements: * * - input must fit into 64 bits */ function toUint64(uint256 value) internal pure returns (uint64) { if (value > type(uint64).max) { revert SafeCastOverflowedUintDowncast(64, value); } return uint64(value); } /** * @dev Returns the downcasted uint56 from uint256, reverting on * overflow (when the input is greater than largest uint56). * * Counterpart to Solidity's `uint56` operator. * * Requirements: * * - input must fit into 56 bits */ function toUint56(uint256 value) internal pure returns (uint56) { if (value > type(uint56).max) { revert SafeCastOverflowedUintDowncast(56, value); } return uint56(value); } /** * @dev Returns the downcasted uint48 from uint256, reverting on * overflow (when the input is greater than largest uint48). * * Counterpart to Solidity's `uint48` operator. * * Requirements: * * - input must fit into 48 bits */ function toUint48(uint256 value) internal pure returns (uint48) { if (value > type(uint48).max) { revert SafeCastOverflowedUintDowncast(48, value); } return uint48(value); } /** * @dev Returns the downcasted uint40 from uint256, reverting on * overflow (when the input is greater than largest uint40). * * Counterpart to Solidity's `uint40` operator. * * Requirements: * * - input must fit into 40 bits */ function toUint40(uint256 value) internal pure returns (uint40) { if (value > type(uint40).max) { revert SafeCastOverflowedUintDowncast(40, value); } return uint40(value); } /** * @dev Returns the downcasted uint32 from uint256, reverting on * overflow (when the input is greater than largest uint32). * * Counterpart to Solidity's `uint32` operator. * * Requirements: * * - input must fit into 32 bits */ function toUint32(uint256 value) internal pure returns (uint32) { if (value > type(uint32).max) { revert SafeCastOverflowedUintDowncast(32, value); } return uint32(value); } /** * @dev Returns the downcasted uint24 from uint256, reverting on * overflow (when the input is greater than largest uint24). * * Counterpart to Solidity's `uint24` operator. * * Requirements: * * - input must fit into 24 bits */ function toUint24(uint256 value) internal pure returns (uint24) { if (value > type(uint24).max) { revert SafeCastOverflowedUintDowncast(24, value); } return uint24(value); } /** * @dev Returns the downcasted uint16 from uint256, reverting on * overflow (when the input is greater than largest uint16). * * Counterpart to Solidity's `uint16` operator. * * Requirements: * * - input must fit into 16 bits */ function toUint16(uint256 value) internal pure returns (uint16) { if (value > type(uint16).max) { revert SafeCastOverflowedUintDowncast(16, value); } return uint16(value); } /** * @dev Returns the downcasted uint8 from uint256, reverting on * overflow (when the input is greater than largest uint8). * * Counterpart to Solidity's `uint8` operator. * * Requirements: * * - input must fit into 8 bits */ function toUint8(uint256 value) internal pure returns (uint8) { if (value > type(uint8).max) { revert SafeCastOverflowedUintDowncast(8, value); } return uint8(value); } /** * @dev Converts a signed int256 into an unsigned uint256. * * Requirements: * * - input must be greater than or equal to 0. */ function toUint256(int256 value) internal pure returns (uint256) { if (value < 0) { revert SafeCastOverflowedIntToUint(value); } return uint256(value); } /** * @dev Returns the downcasted int248 from int256, reverting on * overflow (when the input is less than smallest int248 or * greater than largest int248). * * Counterpart to Solidity's `int248` operator. * * Requirements: * * - input must fit into 248 bits */ function toInt248(int256 value) internal pure returns (int248 downcasted) { downcasted = int248(value); if (downcasted != value) { revert SafeCastOverflowedIntDowncast(248, value); } } /** * @dev Returns the downcasted int240 from int256, reverting on * overflow (when the input is less than smallest int240 or * greater than largest int240). * * Counterpart to Solidity's `int240` operator. * * Requirements: * * - input must fit into 240 bits */ function toInt240(int256 value) internal pure returns (int240 downcasted) { downcasted = int240(value); if (downcasted != value) { revert SafeCastOverflowedIntDowncast(240, value); } } /** * @dev Returns the downcasted int232 from int256, reverting on * overflow (when the input is less than smallest int232 or * greater than largest int232). * * Counterpart to Solidity's `int232` operator. * * Requirements: * * - input must fit into 232 bits */ function toInt232(int256 value) internal pure returns (int232 downcasted) { downcasted = int232(value); if (downcasted != value) { revert SafeCastOverflowedIntDowncast(232, value); } } /** * @dev Returns the downcasted int224 from int256, reverting on * overflow (when the input is less than smallest int224 or * greater than largest int224). * * Counterpart to Solidity's `int224` operator. * * Requirements: * * - input must fit into 224 bits */ function toInt224(int256 value) internal pure returns (int224 downcasted) { downcasted = int224(value); if (downcasted != value) { revert SafeCastOverflowedIntDowncast(224, value); } } /** * @dev Returns the downcasted int216 from int256, reverting on * overflow (when the input is less than smallest int216 or * greater than largest int216). * * Counterpart to Solidity's `int216` operator. * * Requirements: * * - input must fit into 216 bits */ function toInt216(int256 value) internal pure returns (int216 downcasted) { downcasted = int216(value); if (downcasted != value) { revert SafeCastOverflowedIntDowncast(216, value); } } /** * @dev Returns the downcasted int208 from int256, reverting on * overflow (when the input is less than smallest int208 or * greater than largest int208). * * Counterpart to Solidity's `int208` operator. * * Requirements: * * - input must fit into 208 bits */ function toInt208(int256 value) internal pure returns (int208 downcasted) { downcasted = int208(value); if (downcasted != value) { revert SafeCastOverflowedIntDowncast(208, value); } } /** * @dev Returns the downcasted int200 from int256, reverting on * overflow (when the input is less than smallest int200 or * greater than largest int200). * * Counterpart to Solidity's `int200` operator. * * Requirements: * * - input must fit into 200 bits */ function toInt200(int256 value) internal pure returns (int200 downcasted) { downcasted = int200(value); if (downcasted != value) { revert SafeCastOverflowedIntDowncast(200, value); } } /** * @dev Returns the downcasted int192 from int256, reverting on * overflow (when the input is less than smallest int192 or * greater than largest int192). * * Counterpart to Solidity's `int192` operator. * * Requirements: * * - input must fit into 192 bits */ function toInt192(int256 value) internal pure returns (int192 downcasted) { downcasted = int192(value); if (downcasted != value) { revert SafeCastOverflowedIntDowncast(192, value); } } /** * @dev Returns the downcasted int184 from int256, reverting on * overflow (when the input is less than smallest int184 or * greater than largest int184). * * Counterpart to Solidity's `int184` operator. * * Requirements: * * - input must fit into 184 bits */ function toInt184(int256 value) internal pure returns (int184 downcasted) { downcasted = int184(value); if (downcasted != value) { revert SafeCastOverflowedIntDowncast(184, value); } } /** * @dev Returns the downcasted int176 from int256, reverting on * overflow (when the input is less than smallest int176 or * greater than largest int176). * * Counterpart to Solidity's `int176` operator. * * Requirements: * * - input must fit into 176 bits */ function toInt176(int256 value) internal pure returns (int176 downcasted) { downcasted = int176(value); if (downcasted != value) { revert SafeCastOverflowedIntDowncast(176, value); } } /** * @dev Returns the downcasted int168 from int256, reverting on * overflow (when the input is less than smallest int168 or * greater than largest int168). * * Counterpart to Solidity's `int168` operator. * * Requirements: * * - input must fit into 168 bits */ function toInt168(int256 value) internal pure returns (int168 downcasted) { downcasted = int168(value); if (downcasted != value) { revert SafeCastOverflowedIntDowncast(168, value); } } /** * @dev Returns the downcasted int160 from int256, reverting on * overflow (when the input is less than smallest int160 or * greater than largest int160). * * Counterpart to Solidity's `int160` operator. * * Requirements: * * - input must fit into 160 bits */ function toInt160(int256 value) internal pure returns (int160 downcasted) { downcasted = int160(value); if (downcasted != value) { revert SafeCastOverflowedIntDowncast(160, value); } } /** * @dev Returns the downcasted int152 from int256, reverting on * overflow (when the input is less than smallest int152 or * greater than largest int152). * * Counterpart to Solidity's `int152` operator. * * Requirements: * * - input must fit into 152 bits */ function toInt152(int256 value) internal pure returns (int152 downcasted) { downcasted = int152(value); if (downcasted != value) { revert SafeCastOverflowedIntDowncast(152, value); } } /** * @dev Returns the downcasted int144 from int256, reverting on * overflow (when the input is less than smallest int144 or * greater than largest int144). * * Counterpart to Solidity's `int144` operator. * * Requirements: * * - input must fit into 144 bits */ function toInt144(int256 value) internal pure returns (int144 downcasted) { downcasted = int144(value); if (downcasted != value) { revert SafeCastOverflowedIntDowncast(144, value); } } /** * @dev Returns the downcasted int136 from int256, reverting on * overflow (when the input is less than smallest int136 or * greater than largest int136). * * Counterpart to Solidity's `int136` operator. * * Requirements: * * - input must fit into 136 bits */ function toInt136(int256 value) internal pure returns (int136 downcasted) { downcasted = int136(value); if (downcasted != value) { revert SafeCastOverflowedIntDowncast(136, value); } } /** * @dev Returns the downcasted int128 from int256, reverting on * overflow (when the input is less than smallest int128 or * greater than largest int128). * * Counterpart to Solidity's `int128` operator. * * Requirements: * * - input must fit into 128 bits */ function toInt128(int256 value) internal pure returns (int128 downcasted) { downcasted = int128(value); if (downcasted != value) { revert SafeCastOverflowedIntDowncast(128, value); } } /** * @dev Returns the downcasted int120 from int256, reverting on * overflow (when the input is less than smallest int120 or * greater than largest int120). * * Counterpart to Solidity's `int120` operator. * * Requirements: * * - input must fit into 120 bits */ function toInt120(int256 value) internal pure returns (int120 downcasted) { downcasted = int120(value); if (downcasted != value) { revert SafeCastOverflowedIntDowncast(120, value); } } /** * @dev Returns the downcasted int112 from int256, reverting on * overflow (when the input is less than smallest int112 or * greater than largest int112). * * Counterpart to Solidity's `int112` operator. * * Requirements: * * - input must fit into 112 bits */ function toInt112(int256 value) internal pure returns (int112 downcasted) { downcasted = int112(value); if (downcasted != value) { revert SafeCastOverflowedIntDowncast(112, value); } } /** * @dev Returns the downcasted int104 from int256, reverting on * overflow (when the input is less than smallest int104 or * greater than largest int104). * * Counterpart to Solidity's `int104` operator. * * Requirements: * * - input must fit into 104 bits */ function toInt104(int256 value) internal pure returns (int104 downcasted) { downcasted = int104(value); if (downcasted != value) { revert SafeCastOverflowedIntDowncast(104, value); } } /** * @dev Returns the downcasted int96 from int256, reverting on * overflow (when the input is less than smallest int96 or * greater than largest int96). * * Counterpart to Solidity's `int96` operator. * * Requirements: * * - input must fit into 96 bits */ function toInt96(int256 value) internal pure returns (int96 downcasted) { downcasted = int96(value); if (downcasted != value) { revert SafeCastOverflowedIntDowncast(96, value); } } /** * @dev Returns the downcasted int88 from int256, reverting on * overflow (when the input is less than smallest int88 or * greater than largest int88). * * Counterpart to Solidity's `int88` operator. * * Requirements: * * - input must fit into 88 bits */ function toInt88(int256 value) internal pure returns (int88 downcasted) { downcasted = int88(value); if (downcasted != value) { revert SafeCastOverflowedIntDowncast(88, value); } } /** * @dev Returns the downcasted int80 from int256, reverting on * overflow (when the input is less than smallest int80 or * greater than largest int80). * * Counterpart to Solidity's `int80` operator. * * Requirements: * * - input must fit into 80 bits */ function toInt80(int256 value) internal pure returns (int80 downcasted) { downcasted = int80(value); if (downcasted != value) { revert SafeCastOverflowedIntDowncast(80, value); } } /** * @dev Returns the downcasted int72 from int256, reverting on * overflow (when the input is less than smallest int72 or * greater than largest int72). * * Counterpart to Solidity's `int72` operator. * * Requirements: * * - input must fit into 72 bits */ function toInt72(int256 value) internal pure returns (int72 downcasted) { downcasted = int72(value); if (downcasted != value) { revert SafeCastOverflowedIntDowncast(72, value); } } /** * @dev Returns the downcasted int64 from int256, reverting on * overflow (when the input is less than smallest int64 or * greater than largest int64). * * Counterpart to Solidity's `int64` operator. * * Requirements: * * - input must fit into 64 bits */ function toInt64(int256 value) internal pure returns (int64 downcasted) { downcasted = int64(value); if (downcasted != value) { revert SafeCastOverflowedIntDowncast(64, value); } } /** * @dev Returns the downcasted int56 from int256, reverting on * overflow (when the input is less than smallest int56 or * greater than largest int56). * * Counterpart to Solidity's `int56` operator. * * Requirements: * * - input must fit into 56 bits */ function toInt56(int256 value) internal pure returns (int56 downcasted) { downcasted = int56(value); if (downcasted != value) { revert SafeCastOverflowedIntDowncast(56, value); } } /** * @dev Returns the downcasted int48 from int256, reverting on * overflow (when the input is less than smallest int48 or * greater than largest int48). * * Counterpart to Solidity's `int48` operator. * * Requirements: * * - input must fit into 48 bits */ function toInt48(int256 value) internal pure returns (int48 downcasted) { downcasted = int48(value); if (downcasted != value) { revert SafeCastOverflowedIntDowncast(48, value); } } /** * @dev Returns the downcasted int40 from int256, reverting on * overflow (when the input is less than smallest int40 or * greater than largest int40). * * Counterpart to Solidity's `int40` operator. * * Requirements: * * - input must fit into 40 bits */ function toInt40(int256 value) internal pure returns (int40 downcasted) { downcasted = int40(value); if (downcasted != value) { revert SafeCastOverflowedIntDowncast(40, value); } } /** * @dev Returns the downcasted int32 from int256, reverting on * overflow (when the input is less than smallest int32 or * greater than largest int32). * * Counterpart to Solidity's `int32` operator. * * Requirements: * * - input must fit into 32 bits */ function toInt32(int256 value) internal pure returns (int32 downcasted) { downcasted = int32(value); if (downcasted != value) { revert SafeCastOverflowedIntDowncast(32, value); } } /** * @dev Returns the downcasted int24 from int256, reverting on * overflow (when the input is less than smallest int24 or * greater than largest int24). * * Counterpart to Solidity's `int24` operator. * * Requirements: * * - input must fit into 24 bits */ function toInt24(int256 value) internal pure returns (int24 downcasted) { downcasted = int24(value); if (downcasted != value) { revert SafeCastOverflowedIntDowncast(24, value); } } /** * @dev Returns the downcasted int16 from int256, reverting on * overflow (when the input is less than smallest int16 or * greater than largest int16). * * Counterpart to Solidity's `int16` operator. * * Requirements: * * - input must fit into 16 bits */ function toInt16(int256 value) internal pure returns (int16 downcasted) { downcasted = int16(value); if (downcasted != value) { revert SafeCastOverflowedIntDowncast(16, value); } } /** * @dev Returns the downcasted int8 from int256, reverting on * overflow (when the input is less than smallest int8 or * greater than largest int8). * * Counterpart to Solidity's `int8` operator. * * Requirements: * * - input must fit into 8 bits */ function toInt8(int256 value) internal pure returns (int8 downcasted) { downcasted = int8(value); if (downcasted != value) { revert SafeCastOverflowedIntDowncast(8, value); } } /** * @dev Converts an unsigned uint256 into a signed int256. * * Requirements: * * - input must be less than or equal to maxInt256. */ function toInt256(uint256 value) internal pure returns (int256) { // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive if (value > uint256(type(int256).max)) { revert SafeCastOverflowedUintToInt(value); } return int256(value); } } // File: @openzeppelin/[email protected]/interfaces/IERC6372.sol // OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC6372.sol) pragma solidity ^0.8.20; interface IERC6372 { /** * @dev Clock used for flagging checkpoints. Can be overridden to implement timestamp based checkpoints (and voting). */ function clock() external view returns (uint48); /** * @dev Description of the clock */ // solhint-disable-next-line func-name-mixedcase function CLOCK_MODE() external view returns (string memory); } // File: @openzeppelin/[email protected]/governance/utils/IVotes.sol // OpenZeppelin Contracts (last updated v5.0.0) (governance/utils/IVotes.sol) pragma solidity ^0.8.20; /** * @dev Common interface for {ERC20Votes}, {ERC721Votes}, and other {Votes}-enabled contracts. */ interface IVotes { /** * @dev The signature used has expired. */ error VotesExpiredSignature(uint256 expiry); /** * @dev Emitted when an account changes their delegate. */ event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate); /** * @dev Emitted when a token transfer or delegate change results in changes to a delegate's number of voting units. */ event DelegateVotesChanged(address indexed delegate, uint256 previousVotes, uint256 newVotes); /** * @dev Returns the current amount of votes that `account` has. */ function getVotes(address account) external view returns (uint256); /** * @dev Returns the amount of votes that `account` had at a specific moment in the past. If the `clock()` is * configured to use block numbers, this will return the value at the end of the corresponding block. */ function getPastVotes(address account, uint256 timepoint) external view returns (uint256); /** * @dev Returns the total supply of votes available at a specific moment in the past. If the `clock()` is * configured to use block numbers, this will return the value at the end of the corresponding block. * * NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes. * Votes that have not been delegated are still part of total supply, even though they would not participate in a * vote. */ function getPastTotalSupply(uint256 timepoint) external view returns (uint256); /** * @dev Returns the delegate that `account` has chosen. */ function delegates(address account) external view returns (address); /** * @dev Delegates votes from the sender to `delegatee`. */ function delegate(address delegatee) external; /** * @dev Delegates votes from signer to `delegatee`. */ function delegateBySig(address delegatee, uint256 nonce, uint256 expiry, uint8 v, bytes32 r, bytes32 s) external; } // File: @openzeppelin/[email protected]/interfaces/IERC5805.sol // OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC5805.sol) pragma solidity ^0.8.20; interface IERC5805 is IERC6372, IVotes {} // File: @openzeppelin/[email protected]/utils/Nonces.sol // OpenZeppelin Contracts (last updated v5.0.0) (utils/Nonces.sol) pragma solidity ^0.8.20; /** * @dev Provides tracking nonces for addresses. Nonces will only increment. */ abstract contract Nonces { /** * @dev The nonce used for an `account` is not the expected current nonce. */ error InvalidAccountNonce(address account, uint256 currentNonce); mapping(address account => uint256) private _nonces; /** * @dev Returns the next unused nonce for an address. */ function nonces(address owner) public view virtual returns (uint256) { return _nonces[owner]; } /** * @dev Consumes a nonce. * * Returns the current value and increments nonce. */ function _useNonce(address owner) internal virtual returns (uint256) { // For each account, the nonce has an initial value of 0, can only be incremented by one, and cannot be // decremented or reset. This guarantees that the nonce never overflows. unchecked { // It is important to do x++ and not ++x here. return _nonces[owner]++; } } /** * @dev Same as {_useNonce} but checking that `nonce` is the next valid for `owner`. */ function _useCheckedNonce(address owner, uint256 nonce) internal virtual { uint256 current = _useNonce(owner); if (nonce != current) { revert InvalidAccountNonce(owner, current); } } } // File: @openzeppelin/[email protected]/interfaces/IERC5267.sol // OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC5267.sol) pragma solidity ^0.8.20; interface IERC5267 { /** * @dev MAY be emitted to signal that the domain could have changed. */ event EIP712DomainChanged(); /** * @dev returns the fields and values that describe the domain separator used by this contract for EIP-712 * signature. */ function eip712Domain() external view returns ( bytes1 fields, string memory name, string memory version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] memory extensions ); } // File: @openzeppelin/[email protected]/utils/StorageSlot.sol // OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol) // This file was procedurally generated from scripts/generate/templates/StorageSlot.js. pragma solidity ^0.8.20; /** * @dev Library for reading and writing primitive types to specific storage slots. * * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. * This library helps with reading and writing to such slots without the need for inline assembly. * * The functions in this library return Slot structs that contain a `value` member that can be used to read or write. * * Example usage to set ERC1967 implementation slot: * ```solidity * contract ERC1967 { * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; * * function _getImplementation() internal view returns (address) { * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; * } * * function _setImplementation(address newImplementation) internal { * require(newImplementation.code.length > 0); * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; * } * } * ``` */ library StorageSlot { struct AddressSlot { address value; } struct BooleanSlot { bool value; } struct Bytes32Slot { bytes32 value; } struct Uint256Slot { uint256 value; } struct StringSlot { string value; } struct BytesSlot { bytes value; } /** * @dev Returns an `AddressSlot` with member `value` located at `slot`. */ function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) { /// @solidity memory-safe-assembly assembly { r.slot := slot } } /** * @dev Returns an `BooleanSlot` with member `value` located at `slot`. */ function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) { /// @solidity memory-safe-assembly assembly { r.slot := slot } } /** * @dev Returns an `Bytes32Slot` with member `value` located at `slot`. */ function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) { /// @solidity memory-safe-assembly assembly { r.slot := slot } } /** * @dev Returns an `Uint256Slot` with member `value` located at `slot`. */ function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) { /// @solidity memory-safe-assembly assembly { r.slot := slot } } /** * @dev Returns an `StringSlot` with member `value` located at `slot`. */ function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) { /// @solidity memory-safe-assembly assembly { r.slot := slot } } /** * @dev Returns an `StringSlot` representation of the string storage pointer `... // [truncated — 173430 bytes total]
Read Contract
CLOCK_MODE 0x4bf5d7e9 → string
DEFAULT_ADMIN_ROLE 0xa217fddf → bytes32
DOMAIN_SEPARATOR 0x3644e515 → bytes32
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
checkpoints 0xf1127ed8 → tuple
clock 0x91ddadf4 → uint48
decimals 0x313ce567 → uint8
delegates 0x587cde1e → address
eip712Domain 0x84b0196e → bytes1, string, string, uint256, address, bytes32, uint256[]
getPastTotalSupply 0x8e539e8c → uint256
getPastVotes 0x3a46b1a8 → uint256
getRoleAdmin 0x248a9ca3 → bytes32
getVotes 0x9ab24eb0 → uint256
hasRole 0x91d14854 → bool
name 0x06fdde03 → string
nonces 0x7ecebe00 → uint256
numCheckpoints 0x6fcfff45 → uint32
supportsInterface 0x01ffc9a7 → bool
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
Write Contract 11 functions
These functions modify contract state and require a wallet transaction to execute.
approve 0x095ea7b3
address spender
uint256 value
returns: bool
burn 0x42966c68
uint256 value
burnFrom 0x79cc6790
address account
uint256 value
delegate 0x5c19a95c
address delegatee
delegateBySig 0xc3cda520
address delegatee
uint256 nonce
uint256 expiry
uint8 v
bytes32 r
bytes32 s
grantRole 0x2f2ff15d
bytes32 role
address account
permit 0xd505accf
address owner
address spender
uint256 value
uint256 deadline
uint8 v
bytes32 r
bytes32 s
renounceRole 0x36568abe
bytes32 role
address callerConfirmation
revokeRole 0xd547741f
bytes32 role
address account
transfer 0xa9059cbb
address to
uint256 value
returns: bool
transferFrom 0x23b872dd
address from
address to
uint256 value
returns: bool
Token Balances (2) $3,446.06
View Transfers →Recent Transactions
This address has 1 on-chain transactions, but only 1.2% of the chain is indexed. Transactions will appear as indexing progresses. View on Etherscan →