[ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "address", "name": "_memeception", "type": "address" }, { "internalType": "address", "name": "_creator", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AddressZero", "type": "error" }, { "inputs": [], "name": "AlreadyInitialized", "type": "error" }, { "inputs": [], "name": "CreatorFeeTooHigh", "type": "error" }, { "inputs": [], "name": "OnlyCreator", "type": "error" }, { "inputs": [], "name": "OnlyProtocol", "type": "error" }, { "inputs": [], "name": "PoolNotInitialized", "type": "error" }, { "inputs": [], "name": "ProtocolFeeTooHigh", "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": "amount", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldCreator", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newCreator", "type": "address" } ], "name": "CreatorAddressUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "oldFeesBps", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newFeesBps", "type": "uint256" } ], "name": "CreatorFeesUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" } ], "name": "ExemptAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" } ], "name": "PoolOrRouterAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldProtocol", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newProtocol", "type": "address" } ], "name": "ProtocolAddressUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "oldFeesBps", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newFeesBps", "type": "uint256" } ], "name": "ProtocolFeesUpdated", "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": "amount", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldTreasury", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newTreasury", "type": "address" } ], "name": "TreasuryUpdated", "type": "event" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_contract", "type": "address" } ], "name": "addExempt", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_contract", "type": "address" } ], "name": "addPoolOrRouter", "outputs": [], "stateMutability": "nonpayable", "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": "", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "creator", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "feeBps", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_protocolAddr", "type": "address" }, { "internalType": "address", "name": "_protocolTreasury", "type": "address" }, { "internalType": "uint256", "name": "_protocolFeesBps", "type": "uint256" }, { "internalType": "uint256", "name": "_creatorFeesBps", "type": "uint256" }, { "internalType": "address", "name": "_pool", "type": "address" }, { "internalType": "address[]", "name": "_routers", "type": "address[]" }, { "internalType": "address[]", "name": "_exemptsAddr", "type": "address[]" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isExempt", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isPoolOrRouter", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "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": [ { "internalType": "address", "name": "_creator", "type": "address" } ], "name": "setCreatorAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_newFeeBps", "type": "uint256" } ], "name": "setCreatorFeeBps", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_protocolAddress", "type": "address" } ], "name": "setProtocolAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_newFeeBps", "type": "uint256" } ], "name": "setProtocolFeeBps", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_treasury", "type": "address" } ], "name": "setTreasuryAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": "amount", "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": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" } ]
60e060405234801562000010575f80fd5b5060405162001abc38038062001abc833981016040819052620000339162000329565b838360125f6200004484826200043d565b5060016200005383826200043d565b5060ff81166080524660a05262000069620000fc565b60c052505060068054610100600160a81b0319166101006001600160a01b038581169190910291909117909155600780546001600160a01b03191691851691909117905550620000b98262000196565b620000c48162000196565b620000cf3062000196565b620000da5f62000196565b620000f2826b204fce5e3e25026110000000620001e1565b50505050620005a9565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f6040516200012e919062000509565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6001600160a01b0381165f818152600b6020526040808220805460ff19166001179055517fdcc4d7bff655001015f308c794375175b9e1616a6ca241b536e472ac47f93f769190a250565b8060025f828254620001f4919062000583565b90915550506001600160a01b0382165f818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011262000270575f80fd5b81516001600160401b03808211156200028d576200028d6200024c565b604051601f8301601f19908116603f01168101908282118183101715620002b857620002b86200024c565b8160405283815260209250866020858801011115620002d5575f80fd5b5f91505b83821015620002f85785820183015181830184015290820190620002d9565b5f602085830101528094505050505092915050565b80516001600160a01b038116811462000324575f80fd5b919050565b5f805f80608085870312156200033d575f80fd5b84516001600160401b038082111562000354575f80fd5b620003628883890162000260565b9550602087015191508082111562000378575f80fd5b50620003878782880162000260565b93505062000398604086016200030d565b9150620003a8606086016200030d565b905092959194509250565b600181811c90821680620003c857607f821691505b602082108103620003e757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200043857805f5260205f20601f840160051c81016020851015620004145750805b601f840160051c820191505b8181101562000435575f815560010162000420565b50505b505050565b81516001600160401b038111156200045957620004596200024c565b62000471816200046a8454620003b3565b84620003ed565b602080601f831160018114620004a7575f84156200048f5750858301515b5f19600386901b1c1916600185901b17855562000501565b5f85815260208120601f198616915b82811015620004d757888601518255948401946001909101908401620004b6565b5085821015620004f557878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f8083546200051881620003b3565b60018281168015620005335760018114620005495762000577565b60ff198416875282151583028701945062000577565b875f526020805f205f5b858110156200056e5781548a82015290840190820162000553565b50505082870194505b50929695505050505050565b80820180821115620005a357634e487b7160e01b5f52601160045260245ffd5b92915050565b60805160a05160c0516114e8620005d45f395f6106f101525f6106bc01525f61023501526114e85ff3fe608060405234801561000f575f80fd5b5060043610610126575f3560e01c806302d05d3f1461012a57806306fdde031461015f578063095ea7b3146101745780630ee7642d1461019757806318160ddd146101c25780631ac5f606146101d95780631cdd35c9146101ee57806323b872dd1461020157806324a9d8531461021457806329a771f31461021d578063313ce567146102305780633644e5151461026957806358e47004146102715780636605bfda1461028457806370a08231146102975780637ecebe00146102b65780639127cc69146102d557806395d89b41146102e85780639a195a13146102f0578063a9059cbb14610303578063ad5dff7314610316578063c0417e5814610341578063d505accf14610354578063dd62ed3e14610367575b5f80fd5b6006546101429061010090046001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b610167610391565b60405161015691906110c4565b61018761018236600461112b565b61041c565b6040519015158152602001610156565b6101876101a5366004611153565b6001600160a01b03165f908152600c602052604090205460ff1690565b6101cb60025481565b604051908152602001610156565b6101ec6101e736600461116c565b610475565b005b6101ec6101fc366004611153565b610508565b61018761020f366004611183565b610544565b6101cb60095481565b6101ec61022b366004611203565b610582565b6102577f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610156565b6101cb6106b9565b6101ec61027f366004611153565b610713565b6101ec610292366004611153565b6107ce565b6101cb6102a5366004611153565b60036020525f908152604090205481565b6101cb6102c4366004611153565b60056020525f908152604090205481565b6101ec6102e3366004611153565b610889565b61016761092f565b6101ec6102fe366004611153565b61093c565b61018761031136600461112b565b610975565b610187610324366004611153565b6001600160a01b03165f908152600b602052604090205460ff1690565b6101ec61034f36600461116c565b6109a6565b6101ec6103623660046112b1565b610a34565b6101cb61037536600461131e565b600460209081525f928352604080842090915290825290205481565b5f805461039d9061134f565b80601f01602080910402602001604051908101604052809291908181526020018280546103c99061134f565b80156104145780601f106103eb57610100808354040283529160200191610414565b820191905f5260205f20905b8154815290600101906020018083116103f757829003601f168201915b505050505081565b335f8181526004602090815260408083206001600160a01b038716808552925280832085905551919290915f80516020611493833981519152906104639086815260200190565b60405180910390a35060015b92915050565b60065461010090046001600160a01b031633146104a5576040516308f78f9960e31b815260040160405180910390fd5b60508111156104c757604051632a52987760e21b815260040160405180910390fd5b60095460408051918252602082018390527f0a8167de874bdafbcdb7afb1989f0a655113928c1f558cfcd8062e4590929db6910160405180910390a1600955565b60065461010090046001600160a01b03163314610538576040516308f78f9960e31b815260040160405180910390fd5b61054181610c5e565b50565b5f815f0361055e5761055784845f610ca9565b905061057b565b61056b8484846001610d83565b9150610578848484610ca9565b90505b9392505050565b6007546001600160a01b031633146105ad5760405163d35a97ab60e01b815260040160405180910390fd5b60065460ff16156105d05760405162dc149f60e41b815260040160405180910390fd5b6006805460ff191660011790556009869055600a879055600880546001600160a01b038a166001600160a01b0319909116811790915561060f90610c5e565b61061889610c5e565b5f5b838110156106595761065185858381811061063757610637611387565b905060200201602081019061064c9190611153565b610f5a565b60010161061a565b5061066385610f5a565b5f5b818110156106a45761069c83838381811061068257610682611387565b90506020020160208101906106979190611153565b610c5e565b600101610665565b506106ae89610713565b505050505050505050565b5f7f000000000000000000000000000000000000000000000000000000000000000046146106ee576106e9610fa5565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6007546001600160a01b0316331461073e5760405163d35a97ab60e01b815260040160405180910390fd5b6001600160a01b03811661076557604051639fabe1c160e01b815260040160405180910390fd5b6007546040517f2756814479f687d805be12ef7dfd27c72bc645462236412ee56a627f389e4e33916107a4916001600160a01b0390911690849061139b565b60405180910390a1600780546001600160a01b0319166001600160a01b0392909216919091179055565b6007546001600160a01b031633146107f95760405163d35a97ab60e01b815260040160405180910390fd5b6001600160a01b03811661082057604051639fabe1c160e01b815260040160405180910390fd5b6008546040517f4ab5be82436d353e61ca18726e984e561f5c1cc7c6d38b29d2553c790434705a9161085f916001600160a01b0390911690849061139b565b60405180910390a1600880546001600160a01b0319166001600160a01b0392909216919091179055565b60065461010090046001600160a01b031633146108b9576040516308f78f9960e31b815260040160405180910390fd5b7f4c1d69ffe6fad068e437c6e17f4068f125ab0b7e50bec2d7f4519d7ab1ee504f600660019054906101000a90046001600160a01b0316826040516108ff92919061139b565b60405180910390a1600680546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6001805461039d9061134f565b60065461010090046001600160a01b0316331461096c576040516308f78f9960e31b815260040160405180910390fd5b61054181610f5a565b5f815f0361098e57610987835f61103d565b905061046f565b61099a3384845f610d83565b915061057b838361103d565b6007546001600160a01b031633146109d15760405163d35a97ab60e01b815260040160405180910390fd5b60328111156109f35760405163499fddb160e01b815260040160405180910390fd5b600a5460408051918252602082018390527fe9c032fb7419b343f83add64d4513ecbd7602547133916538d3f3f12a061a30e910160405180910390a1600a55565b42841015610a835760405162461bcd60e51b815260206004820152601760248201527614115493525517d11150511312539157d1561412549151604a1b60448201526064015b60405180910390fd5b5f6001610a8e6106b9565b6001600160a01b038a81165f8181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f1981840301815282825280516020918201205f84529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610b96573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b03811615801590610bcc5750876001600160a01b0316816001600160a01b0316145b610c095760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b6044820152606401610a7a565b6001600160a01b039081165f9081526004602090815260408083208a8516808552908352928190208990555188815291928a16915f80516020611493833981519152910160405180910390a350505050505050565b6001600160a01b0381165f818152600b6020526040808220805460ff19166001179055517fdcc4d7bff655001015f308c794375175b9e1616a6ca241b536e472ac47f93f769190a250565b6001600160a01b0383165f9081526004602090815260408083203384529091528120545f198114610d0257610cde83826113b5565b6001600160a01b0386165f9081526004602090815260408083203384529091529020555b6001600160a01b0385165f9081526003602052604081208054859290610d299084906113b5565b90915550506001600160a01b038085165f81815260036020526040908190208054870190555190918716905f8051602061147383398151915290610d709087815260200190565b60405180910390a3506001949350505050565b6006545f9060ff16158015610da357506007546001600160a01b03163314155b15610dc15760405163486aa30760e01b815260040160405180910390fd5b6001600160a01b0385165f908152600c602052604081205460ff168015610dff57506001600160a01b0385165f908152600c602052604090205460ff165b6001600160a01b0387165f908152600b602052604090205490915060ff16158015610e4257506001600160a01b0385165f908152600b602052604090205460ff16155b8015610e4c575080155b8015610e6f57506001600160a01b0386165f908152600c602052604090205460ff165b15610f50576009545f90610e879086906127106110a0565b90505f610ea3600a54612710886110a09092919063ffffffff16565b905080610eb083886113b5565b610eba91906113b5565b95508415610f0c578115610ee757600654610ee590899061010090046001600160a01b031684610ca9565b505b8015610f0757600854610f059089906001600160a01b031683610ca9565b505b610f4d565b8115610f2f57600654610f2d9061010090046001600160a01b03168361103d565b505b8015610f4d57600854610f4b906001600160a01b03168261103d565b505b50505b5091949350505050565b6001600160a01b0381165f818152600c6020526040808220805460ff19166001179055517f13d186064a60bb5c6c906315fa4b26bc5107ed969f69895c70fefafbeeb591759190a250565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f604051610fd591906113d4565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b335f9081526003602052604081208054839190839061105d9084906113b5565b90915550506001600160a01b0383165f81815260036020526040908190208054850190555133905f80516020611473833981519152906104639086815260200190565b5f825f1904841183021582026110bd5763ad251c275f526004601cfd5b5091020490565b5f602080835283518060208501525f5b818110156110f0578581018301518582016040015282016110d4565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611126575f80fd5b919050565b5f806040838503121561113c575f80fd5b61114583611110565b946020939093013593505050565b5f60208284031215611163575f80fd5b61057b82611110565b5f6020828403121561117c575f80fd5b5035919050565b5f805f60608486031215611195575f80fd5b61119e84611110565b92506111ac60208501611110565b9150604084013590509250925092565b5f8083601f8401126111cc575f80fd5b5081356001600160401b038111156111e2575f80fd5b6020830191508360208260051b85010111156111fc575f80fd5b9250929050565b5f805f805f805f805f60e08a8c03121561121b575f80fd5b6112248a611110565b985061123260208b01611110565b975060408a0135965060608a0135955061124e60808b01611110565b945060a08a01356001600160401b0380821115611269575f80fd5b6112758d838e016111bc565b909650945060c08c013591508082111561128d575f80fd5b5061129a8c828d016111bc565b915080935050809150509295985092959850929598565b5f805f805f805f60e0888a0312156112c7575f80fd5b6112d088611110565b96506112de60208901611110565b95506040880135945060608801359350608088013560ff81168114611301575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f806040838503121561132f575f80fd5b61133883611110565b915061134660208401611110565b90509250929050565b600181811c9082168061136357607f821691505b60208210810361138157634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b6001600160a01b0392831681529116602082015260400190565b8181038181111561046f57634e487b7160e01b5f52601160045260245ffd5b5f8083545f60018260011c915060018316806113f157607f831692505b6020808410820361141057634e487b7160e01b5f52602260045260245ffd5b818015611424576001811461143957611464565b60ff1986168952841515850289019650611464565b5f8a8152602090205f5b8681101561145c5781548b820152908501908301611443565b505084890196505b50949897505050505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a26469706673582212202d4a9c2a659e50d68d4c1a8b9d2f7b12851725bebb082fabbc41ca80168f150864736f6c63430008170033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000002cd3c02a734559472d91b285b544202a3c8b129e000000000000000000000000b215547965bed8bc5b07beca0d81f5992fe5bea30000000000000000000000000000000000000000000000000000000000000004546573740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045445535400000000000000000000000000000000000000000000000000000000