[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [], "name": "EnforcedPause", "type": "error" }, { "inputs": [], "name": "ExpectedPause", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [], "name": "ReentrancyGuardReentrantCall", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Burn", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Deposit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Mint", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "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" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Withdraw", "type": "event" }, { "inputs": [], "name": "GAS", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "GasPair", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "SwapCore", "outputs": [ { "internalType": "contract ISwapCore", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "WETH", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "gasAmount", "type": "uint256" }, { "internalType": "uint256", "name": "ethAmount", "type": "uint256" } ], "name": "burnAndWithdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "gasAmount", "type": "uint256" }, { "internalType": "uint256", "name": "ethAmount", "type": "uint256" } ], "name": "depositAndMint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "depositWETH", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getGasPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getWETHPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "__name", "type": "string" }, { "internalType": "string", "name": "__symbol", "type": "string" }, { "internalType": "address", "name": "_GAS", "type": "address" }, { "internalType": "address", "name": "_WETH", "type": "address" }, { "internalType": "address", "name": "_SwapCore", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "gasAmount", "type": "uint256" } ], "name": "maxMintable", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "ethAmount", "type": "uint256" } ], "name": "maxWithdrawable", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalDeposited", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalEthDeposited", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "userDebt", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "userDeposits", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "withdrawWETH", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60806040523480156200001157600080fd5b50604080516020808201835260008083528351918201909352918252339160036200003d83826200019b565b5060046200004c82826200019b565b5050506001600160a01b0381166200007e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6200008981620000a2565b506005805460ff60a01b19169055600160065562000267565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200011f57607f821691505b6020821081036200014057634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000196576000816000526020600020601f850160051c81016020861015620001715750805b601f850160051c820191505b8181101562000192578281556001016200017d565b5050505b505050565b81516001600160401b03811115620001b757620001b7620000f4565b620001cf81620001c884546200010a565b8462000146565b602080601f831160018114620002075760008415620001ee5750858301515b600019600386901b1c1916600185901b17855562000192565b600085815260208120601f198616915b82811015620002385788860151825594840194600190910190840162000217565b5085821015620002575787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6116ee80620002776000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80638da5cb5b1161010f578063bb1913f3116100a2578063ed3825b411610071578063ed3825b414610430578063f2fde38b14610443578063fc4dd33314610456578063ff50abdc1461046957600080fd5b8063bb1913f3146103c9578063db0ed6a0146103dc578063dd62ed3e146103ef578063eae6754a1461042857600080fd5b8063a9059cbb116100de578063a9059cbb14610370578063ad5c464814610383578063b40bcda514610396578063b69e5c77146103a957600080fd5b80638da5cb5b146103315780638e1868f41461034257806395d89b4114610355578063a3b619fe1461035d57600080fd5b80633cf96b111161018757806370a082311161015657806370a08231146102f0578063715018a614610319578063738dc8fa146103215780638456cb591461032957600080fd5b80633cf96b1114610298578063455259cb146102c35780635c975abb146102cb57806366dd0f24146102dd57600080fd5b806318160ddd116101c357806318160ddd1461025957806323b872dd14610261578063313ce567146102745780633bb604951461028357600080fd5b806306fdde03146101ea578063095ea7b3146102085780630ba36dcd1461022b575b600080fd5b6101f2610472565b6040516101ff91906111f7565b60405180910390f35b61021b61021636600461125b565b610504565b60405190151581526020016101ff565b61024b610239366004611287565b600d6020526000908152604090205481565b6040519081526020016101ff565b60025461024b565b61021b61026f3660046112ab565b61051e565b604051601281526020016101ff565b6102966102913660046112ec565b610542565b005b600a546102ab906001600160a01b031681565b6040516001600160a01b0390911681526020016101ff565b61024b610721565b600554600160a01b900460ff1661021b565b6102966102eb36600461130e565b6107a6565b61024b6102fe366004611287565b6001600160a01b031660009081526020819052604090205490565b610296610837565b61024b61084b565b61029661086e565b6005546001600160a01b03166102ab565b6102966103503660046112ec565b610898565b6101f2610a67565b61024b61036b36600461130e565b610a76565b61021b61037e36600461125b565b610a9d565b600c546102ab906001600160a01b031681565b61024b6103a436600461130e565b610aab565b61024b6103b7366004611287565b600e6020526000908152604090205481565b600b546102ab906001600160a01b031681565b6102966103ea3660046113ca565b610abe565b61024b6103fd366004611468565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61024b610c08565b6009546102ab906001600160a01b031681565b610296610451366004611287565b610c32565b61029661046436600461130e565b610c6d565b61024b600f5481565b606060078054610481906114a1565b80601f01602080910402602001604051908101604052809291908181526020018280546104ad906114a1565b80156104fa5780601f106104cf576101008083540402835291602001916104fa565b820191906000526020600020905b8154815290600101906020018083116104dd57829003601f168201915b5050505050905090565b600033610512818585610cf4565b60019150505b92915050565b60003361052c858285610d06565b610537858585610d84565b506001949350505050565b61054a610de3565b610552610e0d565b80156105bc576105623382610e38565b336000908152600e6020526040812080548392906105819084906114f1565b909155505060405181815233907fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca59060200160405180910390a25b811561071357336000908152600d6020526040812080548492906105e19084906114f1565b9091555050336000908152600e60205260409020546105ff90610aab565b336000908152600d6020526040902054101561064f5760405162461bcd60e51b815260206004820152600a602482015269105093d59157d111509560b21b60448201526064015b60405180910390fd5b81600f600082825461066191906114f1565b9091555050600b5460405163a9059cbb60e01b8152336004820152602481018490526001600160a01b039091169063a9059cbb906044016020604051808303816000875af11580156106b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106db9190611504565b5060405182815233907f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364906020015b60405180910390a25b61071d6001600655565b5050565b600954600a54600b5460405163264db8b760e11b81526001600160a01b03928316600482015290821660248201526000929190911690634c9b716e90604401602060405180830381865afa15801561077d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a19190611526565b905090565b6107ae610e0d565b600c546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015610805573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108299190611504565b506108343382610e6e565b50565b61083f610ea4565b6108496000610ed1565b565b6000610855610721565b6107a1906ec097ce7bc90715b34b9f100000000061153f565b610876610ea4565b600554600160a01b900460ff161561089057610849610f23565b610849610f78565b6108a0610de3565b6108a8610e0d565b811561099d57600b546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015610905573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109299190611504565b50336000908152600d602052604081208054849290610949908490611561565b9250508190555081600f60008282546109629190611561565b909155505060405182815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a25b801561071357336000908152600e6020526040812080548392906109c2908490611561565b9091555050336000908152600d60205260409020546109e090610a76565b336000908152600e60205260409020541115610a2b5760405162461bcd60e51b815260206004820152600a602482015269105093d59157d111509560b21b6044820152606401610646565b610a353382610e6e565b60405181815233907f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968859060200161070a565b606060088054610481906114a1565b6000670de0b6b3a7640000610a89610721565b610a939084611574565b610518919061153f565b600033610512818585610d84565b6000670de0b6b3a7640000610a8961084b565b610ac6610de3565b6009546001600160a01b031615610b0d5760405162461bcd60e51b815260206004820152600b60248201526a125392551250531256915160aa1b6044820152606401610646565b6007610b1986826115db565b506008610b2685826115db565b50600b80546001600160a01b03199081166001600160a01b03868116918217909355600c805483168685169081179091556009805490931693851693841790925560405163e6a4390560e01b81526004810191909152602481019190915263e6a4390590604401602060405180830381865afa158015610baa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bce919061169b565b600a80546001600160a01b0319166001600160a01b0392909216919091179055610bf733610ed1565b610c016001600655565b5050505050565b6000670de0b6b3a7640000610c1b610721565b600f54610c289190611574565b6107a1919061153f565b610c3a610ea4565b6001600160a01b038116610c6457604051631e4fbdf760e01b815260006004820152602401610646565b61083481610ed1565b610c75610e0d565b610c7f3382610e38565b600c5460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015610cd0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071d9190611504565b610d018383836001610fbb565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610d7e5781811015610d6f57604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610646565b610d7e84848484036000610fbb565b50505050565b6001600160a01b038316610dae57604051634b637e8f60e11b815260006004820152602401610646565b6001600160a01b038216610dd85760405163ec442f0560e01b815260006004820152602401610646565b610d01838383611090565b600260065403610e0657604051633ee5aeb560e01b815260040160405180910390fd5b6002600655565b600554600160a01b900460ff16156108495760405163d93c066560e01b815260040160405180910390fd5b6001600160a01b038216610e6257604051634b637e8f60e11b815260006004820152602401610646565b61071d82600083611090565b6001600160a01b038216610e985760405163ec442f0560e01b815260006004820152602401610646565b61071d60008383611090565b6005546001600160a01b031633146108495760405163118cdaa760e01b8152336004820152602401610646565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b610f2b6110a3565b6005805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b610f80610e0d565b6005805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610f5b3390565b6001600160a01b038416610fe55760405163e602df0560e01b815260006004820152602401610646565b6001600160a01b03831661100f57604051634a1406b160e11b815260006004820152602401610646565b6001600160a01b0380851660009081526001602090815260408083209387168352929052208290558015610d7e57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161108291815260200190565b60405180910390a350505050565b611098610e0d565b610d018383836110cd565b600554600160a01b900460ff1661084957604051638dfc202b60e01b815260040160405180910390fd5b6001600160a01b0383166110f85780600260008282546110ed9190611561565b9091555061116a9050565b6001600160a01b0383166000908152602081905260409020548181101561114b5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610646565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216611186576002805482900390556111a5565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516111ea91815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b8181101561122557858101830151858201604001528201611209565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461083457600080fd5b6000806040838503121561126e57600080fd5b823561127981611246565b946020939093013593505050565b60006020828403121561129957600080fd5b81356112a481611246565b9392505050565b6000806000606084860312156112c057600080fd5b83356112cb81611246565b925060208401356112db81611246565b929592945050506040919091013590565b600080604083850312156112ff57600080fd5b50508035926020909101359150565b60006020828403121561132057600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261134e57600080fd5b813567ffffffffffffffff8082111561136957611369611327565b604051601f8301601f19908116603f0116810190828211818310171561139157611391611327565b816040528381528660208588010111156113aa57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a086880312156113e257600080fd5b853567ffffffffffffffff808211156113fa57600080fd5b61140689838a0161133d565b9650602088013591508082111561141c57600080fd5b506114298882890161133d565b945050604086013561143a81611246565b9250606086013561144a81611246565b9150608086013561145a81611246565b809150509295509295909350565b6000806040838503121561147b57600080fd5b823561148681611246565b9150602083013561149681611246565b809150509250929050565b600181811c908216806114b557607f821691505b6020821081036114d557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610518576105186114db565b60006020828403121561151657600080fd5b815180151581146112a457600080fd5b60006020828403121561153857600080fd5b5051919050565b60008261155c57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610518576105186114db565b8082028115828204841417610518576105186114db565b601f821115610d01576000816000526020600020601f850160051c810160208610156115b45750805b601f850160051c820191505b818110156115d3578281556001016115c0565b505050505050565b815167ffffffffffffffff8111156115f5576115f5611327565b6116098161160384546114a1565b8461158b565b602080601f83116001811461163e57600084156116265750858301515b600019600386901b1c1916600185901b1785556115d3565b600085815260208120601f198616915b8281101561166d5788860151825594840194600190910190840161164e565b508582101561168b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156116ad57600080fd5b81516112a48161124656fea2646970667358221220e729ec04a53cb71a1aaee864a6668c6171efb34588a9bdaec102e504df2863fa64736f6c63430008180033