[ { "inputs": [ { "internalType": "contract IERC20", "name": "_token", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "balance", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "burn", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "burnFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner_", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "token", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "users", "outputs": [ { "internalType": "uint128", "name": "balance", "type": "uint128" }, { "internalType": "uint128", "name": "lockedUntil", "type": "uint128" } ], "stateMutability": "view", "type": "function" } ]
60e060405234801561001057600080fd5b5060405161167b38038061167b83398101604081905261002f916100ab565b4660a081905261003e81610057565b6080525060601b6001600160601b03191660c0526100f8565b60007f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a79469218823060405160200161008e939291906100d9565b604051602081830303815290604052805190602001209050919050565b6000602082840312156100bc578081fd5b81516001600160a01b03811681146100d2578182fd5b9392505050565b92835260208301919091526001600160a01b0316604082015260600190565b60805160a05160c05160601c61154061013b60003980610427528061055752806107d95280610b8a5280610c7e525080610a85525080610aba52506115406000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806395d89b41116100a2578063a9059cbb11610071578063a9059cbb14610208578063d505accf1461021b578063dd62ed3e14610230578063ec60bcf314610243578063fc0c546a146102565761010b565b806395d89b41146101b95780639dc29fac146101c1578063a0712d68146101d4578063a87430ba146101e75761010b565b8063313ce567116100de578063313ce567146101765780633644e5151461018b57806370a08231146101935780637ecebe00146101a65761010b565b806306fdde0314610110578063095ea7b31461012e57806318160ddd1461014e57806323b872dd14610163575b600080fd5b61011861026b565b6040516101259190611299565b60405180910390f35b61014161013c366004611106565b61029a565b6040516101259190611214565b610156610305565b604051610125919061121f565b610141610171366004611053565b61030b565b61017e61032c565b60405161012591906114b4565b610156610331565b6101566101a1366004610ffd565b610340565b6101566101b4366004610ffd565b610364565b610118610376565b6101416101cf366004611106565b610398565b6101416101e2366004611150565b6103ae565b6101fa6101f5366004610ffd565b6105cf565b60405161012592919061149a565b610141610216366004611106565b6105f5565b61022e610229366004611093565b610602565b005b61015661023e36600461101f565b6107a3565b610141610251366004611053565b6107c0565b61025e6107d7565b60405161012591906111c3565b604051806040016040528060138152602001725374616b6564204e6f72746820546f6b656e7360681b81525081565b3360008181526002602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906102f390869061121f565b60405180910390a35060015b92915050565b60005481565b600061031784836107fb565b61032284848461088d565b5060019392505050565b601281565b600061033b610a80565b905090565b6001600160a01b03166000908152600160205260409020546001600160801b031690565b60036020526000908152604090205481565b604051806040016040528060068152602001650e69c9ea4a8960d31b81525081565b60006103a5338484610ae0565b50600192915050565b6000336103d65760405162461bcd60e51b81526004016103cd9061139e565b60405180910390fd5b6103de610fcf565b503360009081526001602090815260408083208151808301835290546001600160801b038082168352600160801b9091041692810192909252516370a0823160e01b81529091907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a08231906104649030906004016111c3565b60206040518083038186803b15801561047c57600080fd5b505afa158015610490573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b49190611168565b9050600080546000146104d457816000548602816104ce57fe5b046104d6565b845b90506104e181610cf8565b8351016001600160801b031683526104fd620151804201610cf8565b6001600160801b0390811660208086019182523360008181526001909252604082208751815494518616600160801b029086166001600160801b0319909516949094179094169290921790925581548301909155610587907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316903088610d25565b60405133906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906105bc90859061121f565b60405180910390a3506001949350505050565b6001602052600090815260409020546001600160801b0380821691600160801b90041682565b60006103a533848461088d565b6001600160a01b0387166106285760405162461bcd60e51b81526004016103cd90611455565b8342106106475760405162461bcd60e51b81526004016103cd90611479565b6001600160a01b03871660008181526003602090815260409182902080546001818101909255925190926106c5926106aa927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928e928e928e92918e9101611228565b60405160208183030381529060405280519060200120610e1e565b858585604051600081526020016040526040516106e5949392919061127b565b6020604051602081039080840390855afa158015610707573d6000803e3d6000fd5b505050602060405103516001600160a01b0316146107375760405162461bcd60e51b81526004016103cd906113fb565b6001600160a01b038088166000818152600260209081526040808320948b168084529490915290819020889055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061079290899061121f565b60405180910390a350505050505050565b600260209081526000928352604080842090915290825290205481565b60006107cc84836107fb565b610322848484610ae0565b7f000000000000000000000000000000000000000000000000000000000000000081565b336001600160a01b038316141561081157610889565b6001600160a01b03821660009081526002602090815260408083203384529091529020546000198114610887578181101561085e5760405162461bcd60e51b81526004016103cd90611352565b6001600160a01b0383166000908152600260209081526040808320338452909152902082820390555b505b5050565b610895610fcf565b506001600160a01b0383166000908152600160209081526040918290208251808401909352546001600160801b038082168452600160801b909104169082018190524210156108f65760405162461bcd60e51b81526004016103cd906112fb565b8115610a2f5780516001600160801b03168211156109265760405162461bcd60e51b81526004016103cd90611379565b826001600160a01b0316846001600160a01b031614610a2f576001600160a01b0383166109655760405162461bcd60e51b81526004016103cd9061139e565b61096d610fcf565b506001600160a01b0383166000908152600160209081526040918290208251808401909352546001600160801b038082168452600160801b90910416908201526109b683610cf8565b82516001600160a01b038716600090815260016020526040902080546001600160801b031916929091036001600160801b03169190911790556109f883610cf8565b90516001600160a01b038516600090815260016020526040902080546001600160801b031916919092016001600160801b03161790555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a72919061121f565b60405180910390a350505050565b6000467f00000000000000000000000000000000000000000000000000000000000000008114610ab857610ab381610e73565b610ada565b7f00000000000000000000000000000000000000000000000000000000000000005b91505090565b6001600160a01b038216610b065760405162461bcd60e51b81526004016103cd9061139e565b610b0e610fcf565b506001600160a01b0383166000908152600160209081526040918290208251808401909352546001600160801b038082168452600160801b90910416908201819052421015610b6f5760405162461bcd60e51b81526004016103cd906112fb565b600080546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190610bbf9030906004016111c3565b60206040518083038186803b158015610bd757600080fd5b505afa158015610beb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0f9190611168565b840281610c1857fe5b049050610c38610c2784610cf8565b83516001600160801b031690610eaa565b6001600160a01b03868116600090815260016020526040812080546001600160801b0319166001600160801b0394909416939093179092558154859003909155610ca5907f0000000000000000000000000000000000000000000000000000000000000000168583610ed9565b60006001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610ce9919061121f565b60405180910390a35050505050565b60006001600160801b03821115610d215760405162461bcd60e51b81526004016103cd906113c4565b5090565b60006060856001600160a01b03166323b872dd60e01b868686604051602401610d50939291906111d7565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610d8e9190611180565b6000604051808303816000865af19150503d8060008114610dcb576040519150601f19603f3d011682016040523d82523d6000602084013e610dd0565b606091505b5091509150818015610dfa575080511580610dfa575080806020019051810190610dfa9190611130565b610e165760405162461bcd60e51b81526004016103cd90611420565b505050505050565b600060405180604001604052806002815260200161190160f01b815250610e43610a80565b83604051602001610e569392919061119c565b604051602081830303815290604052805190602001209050919050565b60007f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692188230604051602001610e569392919061125c565b8082036001600160801b0380841690821611156102ff5760405162461bcd60e51b81526004016103cd906112cc565b60006060846001600160a01b031663a9059cbb60e01b8585604051602401610f029291906111fb565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610f409190611180565b6000604051808303816000865af19150503d8060008114610f7d576040519150601f19603f3d011682016040523d82523d6000602084013e610f82565b606091505b5091509150818015610fac575080511580610fac575080806020019051810190610fac9190611130565b610fc85760405162461bcd60e51b81526004016103cd9061131b565b5050505050565b604080518082019091526000808252602082015290565b80356001600160a01b03811681146102ff57600080fd5b60006020828403121561100e578081fd5b6110188383610fe6565b9392505050565b60008060408385031215611031578081fd5b61103b8484610fe6565b915061104a8460208501610fe6565b90509250929050565b600080600060608486031215611067578081fd5b8335611072816114f2565b92506020840135611082816114f2565b929592945050506040919091013590565b600080600080600080600060e0888a0312156110ad578283fd5b6110b78989610fe6565b96506110c68960208a01610fe6565b95506040880135945060608801359350608088013560ff811681146110e9578384fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215611118578182fd5b6111228484610fe6565b946020939093013593505050565b600060208284031215611141578081fd5b81518015158114611018578182fd5b600060208284031215611161578081fd5b5035919050565b600060208284031215611179578081fd5b5051919050565b600082516111928184602087016114c2565b9190910192915050565b600084516111ae8184602089016114c2565b91909101928352506020820152604001919050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b90815260200190565b9586526001600160a01b0394851660208701529290931660408501526060840152608083019190915260a082015260c00190565b92835260208301919091526001600160a01b0316604082015260600190565b93845260ff9290921660208401526040830152606082015260800190565b60006020825282518060208401526112b88160408501602087016114c2565b601f01601f19169190910160400192915050565b602080825260159082015274426f72696e674d6174683a20556e646572666c6f7760581b604082015260600190565b602080825260069082015265131bd8dad95960d21b604082015260600190565b6020808252601c908201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604082015260600190565b6020808252600d908201526c4c6f7720616c6c6f77616e636560981b604082015260600190565b6020808252600b908201526a4c6f772062616c616e636560a81b604082015260600190565b6020808252600c908201526b5a65726f206164647265737360a01b604082015260600190565b6020808252601c908201527f426f72696e674d6174683a2075696e74313238204f766572666c6f7700000000604082015260600190565b6020808252600b908201526a496e76616c69642053696760a81b604082015260600190565b6020808252818101527f426f72696e6745524332303a205472616e7366657246726f6d206661696c6564604082015260600190565b6020808252600a90820152692d32b9379037bbb732b960b11b604082015260600190565b602080825260079082015266115e1c1a5c995960ca1b604082015260600190565b6001600160801b0392831681529116602082015260400190565b60ff91909116815260200190565b60005b838110156114dd5781810151838201526020016114c5565b838111156114ec576000848401525b50505050565b6001600160a01b038116811461150757600080fd5b5056fea26469706673582212204f5135a0d31c9bc6a7ff7536828c030a4baa8b0b61b2cd6e6d095e1bf87f114e64736f6c634300060c0033000000000000000000000000d0755413bfe2e08db6be72761cdd56d77d4b60f1