Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0x65715fE0EAaD2260fAB4823995657e9593aA8F75
Balance 0 ETH
Nonce 1
Code Size 18529 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

18529 bytes
0x6080604052600436106102765760003560e01c80637bce5a041161014f578063b62496f5116100c1578063e2f456051161007a578063e2f45605146109a1578063e71dc3f5146109cc578063f11a24d3146109f7578063f2fde38b14610a22578063f637434214610a4b578063f8b45b0514610a765761027d565b8063b62496f51461086b578063c0246668146108a8578063c8c8ebe4146108d1578063d257b34f146108fc578063d85ba06314610939578063dd62ed3e146109645761027d565b8063992c58e411610113578063992c58e41461074b5780639a7a23d614610774578063a2240e191461079d578063a457c2d7146107c6578063a9059cbb14610803578063adb873bd146108405761027d565b80637bce5a04146106765780638da5cb5b146106a157806392136913146106cc578063924de9b7146106f757806395d89b41146107205761027d565b8063313ce567116101e85780636ddd1713116101ac5780636ddd17131461058c57806370a08231146105b7578063715018a6146105f4578063751039fc1461060b5780637571336a1461062257806375f0a8741461064b5761027d565b8063313ce5671461049157806339509351146104bc57806349bd5a5e146104f95780634fbee193146105245780636a486a8e146105615761027d565b806318160ddd1161023a57806318160ddd1461037d5780631a8145bb146103a85780631d777856146103d35780631f3fed8f146103fe57806323b872dd1461042957806327c8f835146104665761027d565b806303fc20131461028257806306fdde03146102ad578063095ea7b3146102d857806310d5de53146103155780631694505e146103525761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b50610297610aa1565b6040516102a4919061343c565b60405180910390f35b3480156102b957600080fd5b506102c2610ac7565b6040516102cf91906134e7565b60405180910390f35b3480156102e457600080fd5b506102ff60048036038101906102fa9190613570565b610b59565b60405161030c91906135cb565b60405180910390f35b34801561032157600080fd5b5061033c600480360381019061033791906135e6565b610b77565b60405161034991906135cb565b60405180910390f35b34801561035e57600080fd5b50610367610b97565b6040516103749190613672565b60405180910390f35b34801561038957600080fd5b50610392610bbb565b60405161039f919061369c565b60405180910390f35b3480156103b457600080fd5b506103bd610bc5565b6040516103ca919061369c565b60405180910390f35b3480156103df57600080fd5b506103e8610bcb565b6040516103f5919061369c565b60405180910390f35b34801561040a57600080fd5b50610413610bd1565b604051610420919061369c565b60405180910390f35b34801561043557600080fd5b50610450600480360381019061044b91906136b7565b610bd7565b60405161045d91906135cb565b60405180910390f35b34801561047257600080fd5b5061047b610cb0565b604051610488919061343c565b60405180910390f35b34801561049d57600080fd5b506104a6610cb6565b6040516104b39190613726565b60405180910390f35b3480156104c857600080fd5b506104e360048036038101906104de9190613570565b610cbf565b6040516104f091906135cb565b60405180910390f35b34801561050557600080fd5b5061050e610d72565b60405161051b919061343c565b60405180910390f35b34801561053057600080fd5b5061054b600480360381019061054691906135e6565b610d96565b60405161055891906135cb565b60405180910390f35b34801561056d57600080fd5b50610576610dec565b604051610583919061369c565b60405180910390f35b34801561059857600080fd5b506105a1610df2565b6040516105ae91906135cb565b60405180910390f35b3480156105c357600080fd5b506105de60048036038101906105d991906135e6565b610e05565b6040516105eb919061369c565b60405180910390f35b34801561060057600080fd5b50610609610e4d565b005b34801561061757600080fd5b50610620610fa5565b005b34801561062e57600080fd5b506106496004803603810190610644919061376d565b61105a565b005b34801561065757600080fd5b5061066061114c565b60405161066d919061343c565b60405180910390f35b34801561068257600080fd5b5061068b611172565b604051610698919061369c565b60405180910390f35b3480156106ad57600080fd5b506106b6611178565b6040516106c3919061343c565b60405180910390f35b3480156106d857600080fd5b506106e16111a2565b6040516106ee919061369c565b60405180910390f35b34801561070357600080fd5b5061071e600480360381019061071991906137ad565b6111a8565b005b34801561072c57600080fd5b5061073561125c565b60405161074291906134e7565b60405180910390f35b34801561075757600080fd5b50610772600480360381019061076d91906137da565b6112ee565b005b34801561078057600080fd5b5061079b6004803603810190610796919061376d565b611489565b005b3480156107a957600080fd5b506107c460048036038101906107bf9190613867565b6115bc565b005b3480156107d257600080fd5b506107ed60048036038101906107e89190613570565b6117b7565b6040516107fa91906135cb565b60405180910390f35b34801561080f57600080fd5b5061082a60048036038101906108259190613570565b611884565b60405161083791906135cb565b60405180910390f35b34801561084c57600080fd5b506108556118a2565b604051610862919061369c565b60405180910390f35b34801561087757600080fd5b50610892600480360381019061088d91906135e6565b6118a8565b60405161089f91906135cb565b60405180910390f35b3480156108b457600080fd5b506108cf60048036038101906108ca919061376d565b6118c8565b005b3480156108dd57600080fd5b506108e6611a08565b6040516108f3919061369c565b60405180910390f35b34801561090857600080fd5b50610923600480360381019061091e91906138a7565b611a0e565b60405161093091906135cb565b60405180910390f35b34801561094557600080fd5b5061094e611b7e565b60405161095b919061369c565b60405180910390f35b34801561097057600080fd5b5061098b600480360381019061098691906138d4565b611b84565b604051610998919061369c565b60405180910390f35b3480156109ad57600080fd5b506109b6611c0b565b6040516109c3919061369c565b60405180910390f35b3480156109d857600080fd5b506109e1611c11565b6040516109ee919061369c565b60405180910390f35b348015610a0357600080fd5b50610a0c611c17565b604051610a19919061369c565b60405180910390f35b348015610a2e57600080fd5b50610a496004803603810190610a4491906135e6565b611c1d565b005b348015610a5757600080fd5b50610a60611de3565b604051610a6d919061369c565b60405180910390f35b348015610a8257600080fd5b50610a8b611de9565b604051610a98919061369c565b60405180910390f35b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060038054610ad690613943565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0290613943565b8015610b4f5780601f10610b2457610100808354040283529160200191610b4f565b820191906000526020600020905b815481529060010190602001808311610b3257829003601f168201915b5050505050905090565b6000610b6d610b66611e4d565b8484611e55565b6001905092915050565b60186020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b60155481565b60165481565b60145481565b6000610be484848461201e565b610ca584610bf0611e4d565b610ca0856040518060600160405280602881526020016147df60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c56611e4d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129639092919063ffffffff16565b611e55565b600190509392505050565b61dead81565b60006009905090565b6000610d68610ccc611e4d565b84610d638560016000610cdd611e4d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611def90919063ffffffff16565b611e55565b6001905092915050565b7f00000000000000000000000040de78de8d426aa96758484bd49eaf21ae1960df81565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60105481565b600b60009054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e55611e4d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ee4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edb906139c0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610fad611e4d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461103c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611033906139c0565b60405180910390fd5b611044610bbb565b600881905550611052610bbb565b600a81905550565b611062611e4d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e8906139c0565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b6111b0611e4d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461123f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611236906139c0565b60405180910390fd5b80600b60006101000a81548160ff02191690831515021790555050565b60606004805461126b90613943565b80601f016020809104026020016040519081016040528092919081815260200182805461129790613943565b80156112e45780601f106112b9576101008083540402835291602001916112e4565b820191906000526020600020905b8154815290600101906020018083116112c757829003601f168201915b5050505050905090565b6112f6611e4d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611385576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137c906139c0565b60405180910390fd5b85600d8190555084600e8190555083600f81905550600f54600e54600d546113ad9190613a0f565b6113b79190613a0f565b600c819055508260118190555081601281905550806013819055506013546012546011546113e59190613a0f565b6113ef9190613a0f565b601081905550605a601054111561143b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143290613ab5565b60405180910390fd5b6014600c541115611481576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147890613b47565b60405180910390fd5b505050505050565b611491611e4d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611520576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611517906139c0565b60405180910390fd5b7f00000000000000000000000040de78de8d426aa96758484bd49eaf21ae1960df73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a590613bd9565b60405180910390fd5b6115b882826129c7565b5050565b6115c4611e4d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164a906139c0565b60405180910390fd5b633b9aca0060646001611664610bbb565b61166e9190613bf9565b6116789190613c6a565b6116829190613c6a565b8210156116c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bb90613d0d565b60405180910390fd5b633b9aca00606460026116d5610bbb565b6116df9190613bf9565b6116e99190613c6a565b6116f39190613c6a565b811015611735576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172c90613d9f565b60405180910390fd5b633b9aca0080606484611746610bbb565b6117509190613bf9565b61175a9190613c6a565b6117649190613c6a565b61176e9190613a0f565b600881905550633b9aca0080606483611785610bbb565b61178f9190613bf9565b6117999190613c6a565b6117a39190613c6a565b6117ad9190613a0f565b600a819055505050565b600061187a6117c4611e4d565b846118758560405180606001604052806025815260200161480760259139600160006117ee611e4d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129639092919063ffffffff16565b611e55565b6001905092915050565b6000611898611891611e4d565b848461201e565b6001905092915050565b60135481565b60196020528060005260406000206000915054906101000a900460ff1681565b6118d0611e4d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461195f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611956906139c0565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516119fc91906135cb565b60405180910390a25050565b60085481565b6000611a18611e4d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9e906139c0565b60405180910390fd5b620186a06001611ab5610bbb565b611abf9190613bf9565b611ac99190613c6a565b821015611b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0290613e31565b60405180910390fd5b6103e86005611b18610bbb565b611b229190613bf9565b611b2c9190613c6a565b821115611b6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6590613ec3565b60405180910390fd5b8160098190555060019050919050565b600c5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b600f5481565b600e5481565b611c25611e4d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cab906139c0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1a90613f55565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b600a5481565b6000808284611dfe9190613a0f565b905083811015611e43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3a90613fc1565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ec4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebb90614053565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2a906140e5565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612011919061369c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361208d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208490614177565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f390614209565b60405180910390fd5b600081036121155761211083836000612a68565b61295e565b61211d611178565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561218b575061215b611178565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156121c45750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156121fe575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156122175750600560149054906101000a900460ff16155b1561245657601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156122bf5750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561236657600854811115612309576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123009061429b565b60405180910390fd5b600a5461231583610e05565b826123209190613a0f565b1115612361576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235890614307565b60405180910390fd5b612455565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156124095750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561245457600854811115612453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244a90614399565b60405180910390fd5b5b5b5b600061246130610e05565b9050600060095482101590508080156124865750600b60009054906101000a900460ff165b801561249f5750600560149054906101000a900460ff16155b80156124f55750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561254b5750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156125a15750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156125e5576001600560146101000a81548160ff0219169083151502179055506125c9612cfb565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061269b5750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156126a557600090505b6000811561294e57601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561270857506000601054115b156127d557612735606461272760105488612f6c90919063ffffffff16565b612fe690919063ffffffff16565b9050601054601254826127489190613bf9565b6127529190613c6a565b601560008282546127639190613a0f565b925050819055506010546011548261277b9190613bf9565b6127859190613c6a565b601460008282546127969190613a0f565b92505081905550601054601354826127ae9190613bf9565b6127b89190613c6a565b601660008282546127c99190613a0f565b925050819055506128fa565b601960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561283057506000600c54115b156128f95761285d606461284f600c5488612f6c90919063ffffffff16565b612fe690919063ffffffff16565b9050600c54600e54826128709190613bf9565b61287a9190613c6a565b6015600082825461288b9190613a0f565b92505081905550600c54600d54826128a39190613bf9565b6128ad9190613c6a565b601460008282546128be9190613a0f565b92505081905550600c54600f54826128d69190613bf9565b6128e09190613c6a565b601660008282546128f19190613a0f565b925050819055505b5b600081111561291c5761291b87306016548461291691906143b9565b612a68565b5b6000601654111561293f576129368761dead601654612a68565b60006016819055505b808561294b91906143b9565b94505b612959878787612a68565b505050505b505050565b60008383111582906129ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a291906134e7565b60405180910390fd5b50600083856129ba91906143b9565b9050809150509392505050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ad7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ace90614177565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3d90614209565b60405180910390fd5b612b51838383613030565b612bbc816040518060600160405280602681526020016147b9602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129639092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c4f816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611def90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612cee919061369c565b60405180910390a3505050565b6000612d0630610e05565b90506000601454601554612d1a9190613a0f565b90506000821480612d2b5750600081145b15612d37575050612f6a565b600060028260155485612d4a9190613bf9565b612d549190613c6a565b612d5e9190613c6a565b90506000612d75828561303590919063ffffffff16565b90506000479050612d858261307f565b6000612d9a824761303590919063ffffffff16565b90506000612dc586612db760145485612f6c90919063ffffffff16565b612fe690919063ffffffff16565b905060008183612dd591906143b9565b9050600060158190555060006014819055506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051612e2f9061441e565b60006040518083038185875af1925050503d8060008114612e6c576040519150601f19603f3d011682016040523d82523d6000602084013e612e71565b606091505b50509050600087118015612e855750600082115b15612ed257612e9487836132bc565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618683601554604051612ec993929190614433565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612f189061441e565b60006040518083038185875af1925050503d8060008114612f55576040519150601f19603f3d011682016040523d82523d6000602084013e612f5a565b606091505b5050809150505050505050505050505b565b6000808303612f7e5760009050612fe0565b60008284612f8c9190613bf9565b9050828482612f9b9190613c6a565b14612fdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fd2906144dc565b60405180910390fd5b809150505b92915050565b600061302883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613398565b905092915050565b505050565b600061307783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612963565b905092915050565b6000600267ffffffffffffffff81111561309c5761309b6144fc565b5b6040519080825280602002602001820160405280156130ca5781602001602082028036833780820191505090505b50905030816000815181106130e2576130e161452b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613187573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131ab919061456f565b816001815181106131bf576131be61452b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613224307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611e55565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613286959493929190614695565b600060405180830381600087803b1580156132a057600080fd5b505af11580156132b4573d6000803e3d6000fd5b505050505050565b6132e7307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611e55565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b815260040161334e969594939291906146ef565b60606040518083038185885af115801561336c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906133919190614765565b5050505050565b600080831182906133df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133d691906134e7565b60405180910390fd5b50600083856133ee9190613c6a565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613426826133fb565b9050919050565b6134368161341b565b82525050565b6000602082019050613451600083018461342d565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613491578082015181840152602081019050613476565b60008484015250505050565b6000601f19601f8301169050919050565b60006134b982613457565b6134c38185613462565b93506134d3818560208601613473565b6134dc8161349d565b840191505092915050565b6000602082019050818103600083015261350181846134ae565b905092915050565b600080fd5b6135178161341b565b811461352257600080fd5b50565b6000813590506135348161350e565b92915050565b6000819050919050565b61354d8161353a565b811461355857600080fd5b50565b60008135905061356a81613544565b92915050565b6000806040838503121561358757613586613509565b5b600061359585828601613525565b92505060206135a68582860161355b565b9150509250929050565b60008115159050919050565b6135c5816135b0565b82525050565b60006020820190506135e060008301846135bc565b92915050565b6000602082840312156135fc576135fb613509565b5b600061360a84828501613525565b91505092915050565b6000819050919050565b600061363861363361362e846133fb565b613613565b6133fb565b9050919050565b600061364a8261361d565b9050919050565b600061365c8261363f565b9050919050565b61366c81613651565b82525050565b60006020820190506136876000830184613663565b92915050565b6136968161353a565b82525050565b60006020820190506136b1600083018461368d565b92915050565b6000806000606084860312156136d0576136cf613509565b5b60006136de86828701613525565b93505060206136ef86828701613525565b92505060406137008682870161355b565b9150509250925092565b600060ff82169050919050565b6137208161370a565b82525050565b600060208201905061373b6000830184613717565b92915050565b61374a816135b0565b811461375557600080fd5b50565b60008135905061376781613741565b92915050565b6000806040838503121561378457613783613509565b5b600061379285828601613525565b92505060206137a385828601613758565b9150509250929050565b6000602082840312156137c3576137c2613509565b5b60006137d184828501613758565b91505092915050565b60008060008060008060c087890312156137f7576137f6613509565b5b600061380589828a0161355b565b965050602061381689828a0161355b565b955050604061382789828a0161355b565b945050606061383889828a0161355b565b935050608061384989828a0161355b565b92505060a061385a89828a0161355b565b9150509295509295509295565b6000806040838503121561387e5761387d613509565b5b600061388c8582860161355b565b925050602061389d8582860161355b565b9150509250929050565b6000602082840312156138bd576138bc613509565b5b60006138cb8482850161355b565b91505092915050565b600080604083850312156138eb576138ea613509565b5b60006138f985828601613525565b925050602061390a85828601613525565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061395b57607f821691505b60208210810361396e5761396d613914565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006139aa602083613462565b91506139b582613974565b602082019050919050565b600060208201905081810360008301526139d98161399d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613a1a8261353a565b9150613a258361353a565b9250828201905080821115613a3d57613a3c6139e0565b5b92915050565b7f4d757374206b6565702073656c6c206665657320617420393025206f72206c6560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a9f602283613462565b9150613aaa82613a43565b604082019050919050565b60006020820190508181036000830152613ace81613a92565b9050919050565b7f4d757374206b65657020627579206665657320617420323025206f72206c657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b31602183613462565b9150613b3c82613ad5565b604082019050919050565b60006020820190508181036000830152613b6081613b24565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613bc3603983613462565b9150613bce82613b67565b604082019050919050565b60006020820190508181036000830152613bf281613bb6565b9050919050565b6000613c048261353a565b9150613c0f8361353a565b9250828202613c1d8161353a565b91508282048414831517613c3457613c336139e0565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c758261353a565b9150613c808361353a565b925082613c9057613c8f613c3b565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20312500000000000000000000000000000000000000602082015250565b6000613cf7602d83613462565b9150613d0282613c9b565b604082019050919050565b60006020820190508181036000830152613d2681613cea565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f3225000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d89602283613462565b9150613d9482613d2d565b604082019050919050565b60006020820190508181036000830152613db881613d7c565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000613e1b603583613462565b9150613e2682613dbf565b604082019050919050565b60006020820190508181036000830152613e4a81613e0e565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000613ead603483613462565b9150613eb882613e51565b604082019050919050565b60006020820190508181036000830152613edc81613ea0565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613f3f602683613462565b9150613f4a82613ee3565b604082019050919050565b60006020820190508181036000830152613f6e81613f32565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613fab601b83613462565b9150613fb682613f75565b602082019050919050565b60006020820190508181036000830152613fda81613f9e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061403d602483613462565b915061404882613fe1565b604082019050919050565b6000602082019050818103600083015261406c81614030565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006140cf602283613462565b91506140da82614073565b604082019050919050565b600060208201905081810360008301526140fe816140c2565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614161602583613462565b915061416c82614105565b604082019050919050565b6000602082019050818103600083015261419081614154565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006141f3602383613462565b91506141fe82614197565b604082019050919050565b60006020820190508181036000830152614222816141e6565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000614285603583613462565b915061429082614229565b604082019050919050565b600060208201905081810360008301526142b481614278565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006142f1601383613462565b91506142fc826142bb565b602082019050919050565b60006020820190508181036000830152614320816142e4565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000614383603683613462565b915061438e82614327565b604082019050919050565b600060208201905081810360008301526143b281614376565b9050919050565b60006143c48261353a565b91506143cf8361353a565b92508282039050818111156143e7576143e66139e0565b5b92915050565b600081905092915050565b50565b60006144086000836143ed565b9150614413826143f8565b600082019050919050565b6000614429826143fb565b9150819050919050565b6000606082019050614448600083018661368d565b614455602083018561368d565b614462604083018461368d565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006144c6602183613462565b91506144d18261446a565b604082019050919050565b600060208201905081810360008301526144f5816144b9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506145698161350e565b92915050565b60006020828403121561458557614584613509565b5b60006145938482850161455a565b91505092915050565b6000819050919050565b60006145c16145bc6145b78461459c565b613613565b61353a565b9050919050565b6145d1816145a6565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61460c8161341b565b82525050565b600061461e8383614603565b60208301905092915050565b6000602082019050919050565b6000614642826145d7565b61464c81856145e2565b9350614657836145f3565b8060005b8381101561468857815161466f8882614612565b975061467a8361462a565b92505060018101905061465b565b5085935050505092915050565b600060a0820190506146aa600083018861368d565b6146b760208301876145c8565b81810360408301526146c98186614637565b90506146d8606083018561342d565b6146e5608083018461368d565b9695505050505050565b600060c082019050614704600083018961342d565b614711602083018861368d565b61471e60408301876145c8565b61472b60608301866145c8565b614738608083018561342d565b61474560a083018461368d565b979650505050505050565b60008151905061475f81613544565b92915050565b60008060006060848603121561477e5761477d613509565b5b600061478c86828701614750565b935050602061479d86828701614750565b92505060406147ae86828701614750565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e46e25b8c49bf41ad0e6c4cb5cfba260884be39d1d3160f030e484f15cd26d1f64736f6c63430008120033

Verified Source Code Partial Match

Compiler: v0.8.18+commit.87f61d96 EVM: paris Optimization: No
OpenSea.sol 762 lines
/*
https://t.me/openseaercportal
*/
    pragma solidity 0.8.18;
    // SPDX-License-Identifier: Unlicensed

    library SafeMath {
        
        function add(uint256 a, uint256 b) internal pure returns (uint256) {
            uint256 c = a + b;
            require(c >= a, "SafeMath: addition overflow");
            return c;
        }

        function sub(uint256 a, uint256 b) internal pure returns (uint256) {
            return sub(a, b, "SafeMath: subtraction overflow");
        }


        function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
            require(b <= a, errorMessage);
            uint256 c = a - b;
            return c;
        }

        function mul(uint256 a, uint256 b) internal pure returns (uint256) {
            if (a == 0) {
                return 0;
            }
            uint256 c = a * b;
            require(c / a == b, "SafeMath: multiplication overflow");
            return c;
        }

        function div(uint256 a, uint256 b) internal pure returns (uint256) {
            return div(a, b, "SafeMath: division by zero");
        }

        function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
            require(b > 0, errorMessage);
            uint256 c = a / b;
            return c;
        }

        function mod(uint256 a, uint256 b) internal pure returns (uint256) {
            return mod(a, b, "SafeMath: modulo by zero");
        }
        function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
            require(b != 0, errorMessage);
            return a % b;
        }
    }

    library SafeMathInt {
        int256 private constant MIN_INT256 = int256(1) << 255;
        int256 private constant MAX_INT256 = ~(int256(1) << 255);

        function mul(int256 a, int256 b) internal pure returns (int256) {
            int256 c = a * b;
            require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
            require((b == 0) || (c / b == a));
            return c;
        }

        function div(int256 a, int256 b) internal pure returns (int256) {
            require(b != -1 || a != MIN_INT256);
            return a / b;
        }

        function sub(int256 a, int256 b) internal pure returns (int256) {
            int256 c = a - b;
            require((b >= 0 && c <= a) || (b < 0 && c > a));
            return c;
        }

        function add(int256 a, int256 b) internal pure returns (int256) {
            int256 c = a + b;
            require((b >= 0 && c >= a) || (b < 0 && c < a));
            return c;
        }

        function abs(int256 a) internal pure returns (int256) {
            require(a != MIN_INT256);
            return a < 0 ? -a : a;
        }
        function toUint256Safe(int256 a) internal pure returns (uint256) {
            require(a >= 0);
            return uint256(a);
        }
    }

    library SafeMathUint {
        function toInt256Safe(uint256 a) internal pure returns (int256) {
            int256 b = int256(a);
            require(b >= 0);
            return b;
        }
    }

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

        function _msgData() internal view virtual returns (bytes calldata) {
            this;
            return msg.data;
        }
    }

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

        function name() external pure returns (string memory);
        function symbol() external pure returns (string memory);
        function decimals() external pure returns (uint8);
        function totalSupply() external view returns (uint);
        function balanceOf(address owner) external view returns (uint);
        function allowance(address owner, address spender) external view returns (uint);
        function approve(address spender, uint value) external returns (bool);
        function transfer(address to, uint value) external returns (bool);
        function transferFrom(address from, address to, uint value) external returns (bool);
        function DOMAIN_SEPARATOR() external view returns (bytes32);
        function PERMIT_TYPEHASH() external pure returns (bytes32);
        function nonces(address owner) external view returns (uint);
        function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

        event Mint(address indexed sender, uint amount0, uint amount1);
        event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
        event Swap(
            address indexed sender,
            uint amount0In,
            uint amount1In,
            uint amount0Out,
            uint amount1Out,
            address indexed to
        );
        event Sync(uint112 reserve0, uint112 reserve1);

        function MINIMUM_LIQUIDITY() external pure returns (uint);
        function factory() external view returns (address);
        function token0() external view returns (address);
        function token1() external view returns (address);
        function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
        function price0CumulativeLast() external view returns (uint);
        function price1CumulativeLast() external view returns (uint);
        function kLast() external view returns (uint);
        function mint(address to) external returns (uint liquidity);
        function burn(address to) external returns (uint amount0, uint amount1);
        function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
        function skim(address to) external;
        function sync() external;
        function initialize(address, address) external;
        }

    interface IUniswapV2Factory {
        event PairCreated(address indexed token0, address indexed token1, address pair, uint);
        function feeTo() external view returns (address);
        function feeToSetter() external view returns (address);
        function getPair(address tokenA, address tokenB) external view returns (address pair);
        function allPairs(uint) external view returns (address pair);
        function allPairsLength() external view returns (uint);
        function createPair(address tokenA, address tokenB) external returns (address pair);
        function setFeeTo(address) external;
        function setFeeToSetter(address) external;
    }

    interface IERC20 {
        function totalSupply() external view returns (uint256);
        function balanceOf(address account) external view returns (uint256);
        function transfer(address recipient, uint256 amount) external returns (bool);
        function allowance(address owner, address spender) external view returns (uint256);
        function approve(address spender, uint256 amount) external returns (bool);
        function transferFrom(
            address sender,
            address recipient,
            uint256 amount
        ) external returns (bool);
        event Transfer(address indexed from, address indexed to, uint256 value);
        event Approval(address indexed owner, address indexed spender, uint256 value);
    }

    interface IERC20Metadata is IERC20 {
        function name() external view returns (string memory);
        function symbol() external view returns (string memory);
        function decimals() external view returns (uint8);
    }
    contract ERC20 is Context, IERC20, IERC20Metadata {
        using SafeMath for uint256;
        mapping(address => uint256) private _balances;
        mapping(address => mapping(address => uint256)) private _allowances;
        uint256 private _totalSupply;
        string private _name;
        string private _symbol;

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

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

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

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

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

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

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

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

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

        function transferFrom(
            address sender,
            address recipient,
            uint256 amount
        ) public virtual override returns (bool) {
            _transfer(sender, recipient, amount);
            _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
            return true;
        }

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

        function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
            _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
            return true;

        }

        function _transfer(
            address sender,
            address recipient,
            uint256 amount
            ) internal virtual {
            require(sender != address(0), "ERC20: transfer from the zero address");
            require(recipient != address(0), "ERC20: transfer to the zero address");
            _beforeTokenTransfer(sender, recipient, amount);
            _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
            _balances[recipient] = _balances[recipient].add(amount);
            emit Transfer(sender, recipient, amount);
        }

        function _mint(address account, uint256 amount) internal virtual {
            require(account != address(0), "ERC20: mint to the zero address");
            _beforeTokenTransfer(address(0), account, amount);
            _totalSupply = _totalSupply.add(amount);
            _balances[account] = _balances[account].add(amount);
            emit Transfer(address(0), account, amount);
        }

        function _burn(address account, uint256 amount) internal virtual {
            require(account != address(0), "ERC20: burn from the zero address");
            _beforeTokenTransfer(account, address(0), amount);
            _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
            _totalSupply = _totalSupply.sub(amount);
            emit Transfer(account, address(0), amount);
        }

        function _approve(
            address owner,
            address spender,
            uint256 amount
        ) internal virtual {
            require(owner != address(0), "ERC20: approve from the zero address");
            require(spender != address(0), "ERC20: approve to the zero address");
            _allowances[owner][spender] = amount;
            emit Approval(owner, spender, amount);
        }

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

    }

    contract Ownable is Context {
        address private _owner;

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

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

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

        modifier onlyOwner() {
            require(_owner == _msgSender(), "Ownable: caller is not the owner");
            _;
        }

        function renounceOwnership() public virtual onlyOwner {
            emit OwnershipTransferred(_owner, address(0));
            _owner = address(0);
        }
        function transferOwnership(address newOwner) public virtual onlyOwner {
            require(newOwner != address(0), "Ownable: new owner is the zero address");
            emit OwnershipTransferred(_owner, newOwner);
            _owner = newOwner;
        }
    }

    interface IUniswapV2Router01 {
        function factory() external pure returns (address);
        function WETH() external pure returns (address);
        function addLiquidity(
            address tokenA,
            address tokenB,
            uint amountADesired,
            uint amountBDesired,
            uint amountAMin,
            uint amountBMin,
            address to,
            uint deadline
        ) external returns (uint amountA, uint amountB, uint liquidity);
        function addLiquidityETH(
            address token,
            uint amountTokenDesired,
            uint amountTokenMin,
            uint amountETHMin,
            address to,
            uint deadline
        ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
        function removeLiquidity(
            address tokenA,
            address tokenB,
            uint liquidity,
            uint amountAMin,
            uint amountBMin,
            address to,
            uint deadline
        ) external returns (uint amountA, uint amountB);

        function removeLiquidityETH(
            address token,
            uint liquidity,
            uint amountTokenMin,
            uint amountETHMin,
            address to,
            uint deadline
        ) external returns (uint amountToken, uint amountETH);
        function removeLiquidityWithPermit(
            address tokenA,
            address tokenB,
            uint liquidity,
            uint amountAMin,
            uint amountBMin,
            address to,
            uint deadline,
            bool approveMax, uint8 v, bytes32 r, bytes32 s
        ) external returns (uint amountA, uint amountB);
        function removeLiquidityETHWithPermit(
            address token,
            uint liquidity,
            uint amountTokenMin,
            uint amountETHMin,
            address to,
            uint deadline,
            bool approveMax, uint8 v, bytes32 r, bytes32 s
        ) external returns (uint amountToken, uint amountETH);
        function swapExactTokensForTokens(
            uint amountIn,
            uint amountOutMin,
            address[] calldata path,
            address to,
            uint deadline
        ) external returns (uint[] memory amounts);
        function swapTokensForExactTokens(
            uint amountOut,

            uint amountInMax,
            address[] calldata path,
            address to,
            uint deadline
        ) external returns (uint[] memory amounts);
        function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
            external
            payable
            returns (uint[] memory amounts);
        function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
            external
            returns (uint[] memory amounts);
        function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
            external
            returns (uint[] memory amounts);
            function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
            external
            payable
            returns (uint[] memory amounts);
        function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
        function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
        function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
        function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
        function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
    }


    interface IUniswapV2Router02 is IUniswapV2Router01 {
        function removeLiquidityETHSupportingFeeOnTransferTokens(
            address token,
            uint liquidity,
            uint amountTokenMin,
            uint amountETHMin,
            address to,
            uint deadline

        ) external returns (uint amountETH);
        function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
            address token,
            uint liquidity,
            uint amountTokenMin,
            uint amountETHMin,
            address to,
            uint deadline,
            bool approveMax, uint8 v, bytes32 r, bytes32 s
        ) external returns (uint amountETH);

        function swapExactTokensForTokensSupportingFeeOnTransferTokens(
            uint amountIn,
            uint amountOutMin,
            address[] calldata path,
            address to,
            uint deadline

        ) external;
        function swapExactETHForTokensSupportingFeeOnTransferTokens(
            uint amountOutMin,
            address[] calldata path,
            address to,
            uint deadline
            ) external payable;
        function swapExactTokensForETHSupportingFeeOnTransferTokens(
            uint amountIn,
            uint amountOutMin,
            address[] calldata path,
            address to,
            uint deadline
        ) external;
    }
    contract OpenSea is ERC20, Ownable {
        using SafeMath for uint256;

        IUniswapV2Router02 public immutable uniswapV2Router;

        address public immutable uniswapV2Pair;
        address public constant deadAddress = address(0xdead);

        bool private swapping;
        bool private botsShaken;

        address public marketingWallet;
        address public lpLocker;
        
        uint256 public maxTransactionAmount;
        uint256 public swapTokensAtAmount;

        uint256 public maxWallet;

        bool public swapEnabled = true;

        uint256 public buyTotalFees;
        uint256 public buyMarketingFee;
        uint256 public buyLiquidityFee;
        uint256 public buyBurnFee;
        
        uint256 public sellTotalFees;
        uint256 public sellMarketingFee;
        uint256 public sellLiquidityFee;
        uint256 public sellBurnFee;
        
        uint256 public tokensForMarketing;
        uint256 public tokensForLiquidity;
        uint256 public tokensForBurn;

        mapping (address => bool) private _isExcludedFromFees;
        mapping (address => bool) public _isExcludedMaxTransactionAmount;

        mapping (address => bool) public automatedMarketMakerPairs;
        event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);
        event ExcludeFromFees(address indexed account, bool isExcluded);
        event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
        event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet);
        event SwapAndLiquify(
            uint256 tokensSwapped,
            uint256 ethReceived,
            uint256 tokensIntoLiquidity
        );
        event BuyBackTriggered(uint256 amount);

        constructor() ERC20("Opensea", "OPEN") {
            address newOwner = address(owner());
            IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
            excludeFromMaxTransaction(address(_uniswapV2Router), true);
            uniswapV2Router = _uniswapV2Router;
            uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
            excludeFromMaxTransaction(address(uniswapV2Pair), true);
            _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
            uint256 _buyMarketingFee = 20;
            uint256 _buyLiquidityFee = 0;
            uint256 _buyBurnFee = 0;
            uint256 _sellMarketingFee = 40;
            uint256 _sellLiquidityFee = 0;
            uint256 _sellBurnFee = 0;
            uint256 totalSupply = 1 * 1e9 * 1e9;
            maxTransactionAmount = (totalSupply * 1 / 100) + (1 * 1e9);
            swapTokensAtAmount = totalSupply * 25 / 100000;
            maxWallet = (totalSupply * 2 / 100) + (1 * 1e9);
            buyMarketingFee = _buyMarketingFee;
            buyLiquidityFee = _buyLiquidityFee;
            buyBurnFee = _buyBurnFee;
            buyTotalFees = buyMarketingFee + buyLiquidityFee + buyBurnFee;
            sellMarketingFee = _sellMarketingFee;
            sellLiquidityFee = _sellLiquidityFee;
            sellBurnFee = _sellBurnFee;
            sellTotalFees = sellMarketingFee + sellLiquidityFee + sellBurnFee;
            marketingWallet = address(0x47E8f95847AF9ED0dD3E0EF099BaE5d5B99637b5);
            lpLocker = address(0x663A5C229c09b049E36dCc11a9B0d4a8Eb9db214);
            excludeFromFees(newOwner, true);
            excludeFromFees(address(this), true);
            excludeFromFees(address(0xdead), true);
            excludeFromFees(marketingWallet, true);
            excludeFromFees(lpLocker, true);
            excludeFromMaxTransaction(newOwner, true);
            excludeFromMaxTransaction(address(this), true);
            excludeFromMaxTransaction(address(0xdead), true);
            excludeFromMaxTransaction(marketingWallet, true);
            excludeFromMaxTransaction(lpLocker, true);
            _mint(newOwner, totalSupply);
            transferOwnership(newOwner);
        }

        receive() external payable {
        }

        function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool){
            require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
            require(newAmount <= totalSupply() * 5 / 1000, "Swap amount cannot be higher than 0.5% total supply.");
            swapTokensAtAmount = newAmount;
            return true;
            }

        function updateLimits(uint256 _maxTransactionAmount, uint256 _maxWallet) external onlyOwner {
            require(_maxTransactionAmount >= (totalSupply() * 1 / 100)/1e9, "Cannot set maxTransactionAmount lower than 1%");
            require(_maxWallet >= (totalSupply() * 2 / 100)/1e9, "Cannot set maxWallet lower than 2%");
            maxTransactionAmount = (totalSupply() * _maxTransactionAmount / 100)/1e9 + (1 * 1e9) ;
            maxWallet = (totalSupply() * _maxWallet / 100)/1e9 + (1 * 1e9);
        }

        function removeLimits() external onlyOwner {
            maxTransactionAmount = totalSupply();
            maxWallet = totalSupply();
        }
        
        function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
            _isExcludedMaxTransactionAmount[updAds] = isEx;
        }

        function updateSwapEnabled(bool enabled) external onlyOwner(){
            swapEnabled = enabled;
        }

        function updateFees(uint256 _buyMarketingFee, uint256 _buyLiquidityFee, uint256 _buyBurnFee, uint256 _sellMarketingFee, 
        uint256 _sellLiquidityFee, uint256 _sellBurnFee) external onlyOwner {
            buyMarketingFee = _buyMarketingFee;
            buyLiquidityFee = _buyLiquidityFee;
            buyBurnFee = _buyBurnFee;
            buyTotalFees = buyMarketingFee + buyLiquidityFee + buyBurnFee;
            sellMarketingFee = _sellMarketingFee;
            sellLiquidityFee = _sellLiquidityFee;
            sellBurnFee = _sellBurnFee;
            sellTotalFees = sellMarketingFee + sellLiquidityFee + sellBurnFee;
            require(sellTotalFees <= 90, "Must keep sell fees at 90% or less");
            require(buyTotalFees <= 20, "Must keep buy fees at 20% or less");
        }

        function excludeFromFees(address account, bool excluded) public onlyOwner {
            _isExcludedFromFees[account] = excluded;
            emit ExcludeFromFees(account, excluded);
        }

        function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {

            require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
            _setAutomatedMarketMakerPair(pair, value);
        }

        function _setAutomatedMarketMakerPair(address pair, bool value) private {
            automatedMarketMakerPairs[pair] = value;
            emit SetAutomatedMarketMakerPair(pair, value);
        }

        function isExcludedFromFees(address account) public view returns(bool) {
            return _isExcludedFromFees[account];
        }

        function _transfer(
            address from,
            address to,
            uint256 amount
        ) internal override {
            require(from != address(0), "ERC20: transfer from the zero address");
            require(to != address(0), "ERC20: transfer to the zero address");
            
            if(amount == 0) {
                super._transfer(from, to, 0);
                return;
            }
                if (
                    from != owner() &&

                    to != owner() &&
                    to != address(0) &&
                    to != address(0xdead) &&
                    !swapping
                ){
                    //when buy
                    if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                            require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                            require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");

                    }
                    
                    //when sell
                    else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                            require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
                    }
                }
            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= swapTokensAtAmount;

            if( 
                canSwap &&
                swapEnabled &&
                !swapping &&
                !automatedMarketMakerPairs[from] &&
                !_isExcludedFromFees[from] &&
                !_isExcludedFromFees[to]
            ) {
                swapping = true; 
                swapBack();
                swapping = false;
            }
            bool takeFee = !swapping;


            if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
                takeFee = false;
            }
            uint256 fees = 0;
            if(takeFee){
                if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                    fees = amount.mul(sellTotalFees).div(100);
                    tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                    tokensForMarketing += fees * sellMarketingFee / sellTotalFees;
                    tokensForBurn += fees * sellBurnFee / sellTotalFees;
                }
                else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                    fees = amount.mul(buyTotalFees).div(100);
                    tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                    tokensForMarketing += fees * buyMarketingFee / buyTotalFees;
                    tokensForBurn += fees * buyBurnFee / buyTotalFees;
                }
                
                if(fees > 0){    
                    super._transfer(from, address(this), (fees - tokensForBurn));
                }

                if(tokensForBurn > 0){
                    super._transfer(from, deadAddress, tokensForBurn);
                    tokensForBurn = 0;
                }
                amount -= fees;
            }
            super._transfer(from, to, amount);
        }

        function swapTokensForEth(uint256 tokenAmount) private {
            address[] memory path = new address[](2);
            path[0] = address(this);

            path[1] = uniswapV2Router.WETH();
            _approve(address(this), address(uniswapV2Router), tokenAmount);
            uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
                tokenAmount,
                0,
                path,
                address(this),
                block.timestamp
            );
        }
        function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
            _approve(address(this), address(uniswapV2Router), tokenAmount);
            uniswapV2Router.addLiquidityETH{value: ethAmount}(
                address(this),
                tokenAmount,
                0,
                0,
                deadAddress,
                block.timestamp
            );
        }

        function swapBack() private {
            uint256 contractBalance = balanceOf(address(this));
            uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing;
            
            if(contractBalance == 0 || totalTokensToSwap == 0) {return;}
            uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
            uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);
            uint256 initialETHBalance = address(this).balance;
            swapTokensForEth(amountToSwapForETH); 
            uint256 ethBalance = address(this).balance.sub(initialETHBalance);
            uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap);

            uint256 ethForLiquidity = ethBalance - ethForMarketing;

            tokensForLiquidity = 0;
            tokensForMarketing = 0;
            
            (bool success,) = address(marketingWallet).call{value: ethForMarketing}("");
            if(liquidityTokens > 0 && ethForLiquidity > 0){
                addLiquidity(liquidityTokens, ethForLiquidity);
                emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity);
            }

            (success,) = address(marketingWallet).call{value: address(this).balance}("");
        }
        
    }

Read Contract

_isExcludedMaxTransactionAmount 0x10d5de53 → bool
allowance 0xdd62ed3e → uint256
automatedMarketMakerPairs 0xb62496f5 → bool
balanceOf 0x70a08231 → uint256
buyBurnFee 0xe71dc3f5 → uint256
buyLiquidityFee 0xf11a24d3 → uint256
buyMarketingFee 0x7bce5a04 → uint256
buyTotalFees 0xd85ba063 → uint256
deadAddress 0x27c8f835 → address
decimals 0x313ce567 → uint8
isExcludedFromFees 0x4fbee193 → bool
lpLocker 0x03fc2013 → address
marketingWallet 0x75f0a874 → address
maxTransactionAmount 0xc8c8ebe4 → uint256
maxWallet 0xf8b45b05 → uint256
name 0x06fdde03 → string
owner 0x8da5cb5b → address
sellBurnFee 0xadb873bd → uint256
sellLiquidityFee 0xf6374342 → uint256
sellMarketingFee 0x92136913 → uint256
sellTotalFees 0x6a486a8e → uint256
swapEnabled 0x6ddd1713 → bool
swapTokensAtAmount 0xe2f45605 → uint256
symbol 0x95d89b41 → string
tokensForBurn 0x1d777856 → uint256
tokensForLiquidity 0x1a8145bb → uint256
tokensForMarketing 0x1f3fed8f → uint256
totalSupply 0x18160ddd → uint256
uniswapV2Pair 0x49bd5a5e → address
uniswapV2Router 0x1694505e → address

Write Contract 15 functions

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

approve 0x095ea7b3
address spender
uint256 amount
returns: bool
decreaseAllowance 0xa457c2d7
address spender
uint256 subtractedValue
returns: bool
excludeFromFees 0xc0246668
address account
bool excluded
excludeFromMaxTransaction 0x7571336a
address updAds
bool isEx
increaseAllowance 0x39509351
address spender
uint256 addedValue
returns: bool
removeLimits 0x751039fc
No parameters
renounceOwnership 0x715018a6
No parameters
setAutomatedMarketMakerPair 0x9a7a23d6
address pair
bool value
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner
updateFees 0x992c58e4
uint256 _buyMarketingFee
uint256 _buyLiquidityFee
uint256 _buyBurnFee
uint256 _sellMarketingFee
uint256 _sellLiquidityFee
uint256 _sellBurnFee
updateLimits 0xa2240e19
uint256 _maxTransactionAmount
uint256 _maxWallet
updateSwapEnabled 0x924de9b7
bool enabled
updateSwapTokensAtAmount 0xd257b34f
uint256 newAmount
returns: bool

Recent Transactions

No transactions found for this address