Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0x7895144c96855c150BE06AdCb0bbB3E30025Fc65
Balance 0 ETH
Nonce 1
Code Size 19186 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

19186 bytes
0x608060405260043610610275575f3560e01c8063751039fc1161014e578063b62496f5116100c0578063dd62ed3e11610079578063dd62ed3e1461093c578063e52fb9ec14610978578063f11a24d3146109a2578063f2fde38b146109cc578063f6374342146109f4578063f8b45b0514610a1e5761027c565b8063b62496f51461081e578063b69ef8a81461085a578063c024666814610884578063cc2ffe7c146108ac578063d1294d4c146108d6578063d85ba063146109125761027c565b8063982525011161011257806398252501146107185780639a7a23d61461072e578063a2240e1914610756578063a457c2d71461077e578063a9059cbb146107ba578063a919a093146107f65761027c565b8063751039fc1461064a5780637571336a14610674578063841e45611461069c5780638da5cb5b146106c457806395d89b41146106ee5761027c565b8063313ce567116101e7578063616eb638116101ab578063616eb638146105645780636a486a8e1461057a5780636b2fb124146105a457806370a08231146105ce578063715018a61461060a5780637437681e146106205761027c565b8063313ce5671461046e578063395093511461049857806349bd5a5e146104d45780634fbee193146104fe5780635c068a8c1461053a5761027c565b806318160ddd1161023957806318160ddd14610362578063184f5c6a1461038c5780631864217b146103b45780631a8145bb146103de5780631cce34ee1461040857806323b872dd146104325761027c565b80630210a83d1461028057806306fdde0314610296578063095ea7b3146102c057806310d5de53146102fc5780631694505e146103385761027c565b3661027c57005b5f80fd5b34801561028b575f80fd5b50610294610a48565b005b3480156102a1575f80fd5b506102aa610be6565b6040516102b791906137a2565b60405180910390f35b3480156102cb575f80fd5b506102e660048036038101906102e19190613853565b610c76565b6040516102f391906138ab565b60405180910390f35b348015610307575f80fd5b50610322600480360381019061031d91906138c4565b610c93565b60405161032f91906138ab565b60405180910390f35b348015610343575f80fd5b5061034c610cb0565b604051610359919061394a565b60405180910390f35b34801561036d575f80fd5b50610376610cd4565b6040516103839190613972565b60405180910390f35b348015610397575f80fd5b506103b260048036038101906103ad91906139b5565b610cdd565b005b3480156103bf575f80fd5b506103c8610d90565b6040516103d591906138ab565b60405180910390f35b3480156103e9575f80fd5b506103f2610da3565b6040516103ff9190613972565b60405180910390f35b348015610413575f80fd5b5061041c610da9565b60405161042991906138ab565b60405180910390f35b34801561043d575f80fd5b50610458600480360381019061045391906139e0565b610dbb565b60405161046591906138ab565b60405180910390f35b348015610479575f80fd5b50610482610e8f565b60405161048f9190613a4b565b60405180910390f35b3480156104a3575f80fd5b506104be60048036038101906104b99190613853565b610e97565b6040516104cb91906138ab565b60405180910390f35b3480156104df575f80fd5b506104e8610f45565b6040516104f59190613a73565b60405180910390f35b348015610509575f80fd5b50610524600480360381019061051f91906138c4565b610f69565b60405161053191906138ab565b60405180910390f35b348015610545575f80fd5b5061054e610fbb565b60405161055b9190613972565b60405180910390f35b34801561056f575f80fd5b50610578610fc1565b005b348015610585575f80fd5b5061058e61116a565b60405161059b9190613972565b60405180910390f35b3480156105af575f80fd5b506105b8611170565b6040516105c59190613972565b60405180910390f35b3480156105d9575f80fd5b506105f460048036038101906105ef91906138c4565b611176565b6040516106019190613972565b60405180910390f35b348015610615575f80fd5b5061061e6111bb565b005b34801561062b575f80fd5b5061063461130e565b6040516106419190613972565b60405180910390f35b348015610655575f80fd5b5061065e611314565b60405161066b91906138ab565b60405180910390f35b34801561067f575f80fd5b5061069a60048036038101906106959190613a8c565b6113cb565b005b3480156106a7575f80fd5b506106c260048036038101906106bd91906138c4565b6114b9565b005b3480156106cf575f80fd5b506106d861160d565b6040516106e59190613a73565b60405180910390f35b3480156106f9575f80fd5b50610702611635565b60405161070f91906137a2565b60405180910390f35b348015610723575f80fd5b5061072c6116c5565b005b348015610739575f80fd5b50610754600480360381019061074f9190613a8c565b6117d8565b005b348015610761575f80fd5b5061077c60048036038101906107779190613aca565b61190a565b005b348015610789575f80fd5b506107a4600480360381019061079f9190613853565b611ac4565b6040516107b191906138ab565b60405180910390f35b3480156107c5575f80fd5b506107e060048036038101906107db9190613853565b611b8c565b6040516107ed91906138ab565b60405180910390f35b348015610801575f80fd5b5061081c60048036038101906108179190613b08565b611ba9565b005b348015610829575f80fd5b50610844600480360381019061083f91906138c4565b611ce2565b60405161085191906138ab565b60405180910390f35b348015610865575f80fd5b5061086e611cff565b60405161087b9190613972565b60405180910390f35b34801561088f575f80fd5b506108aa60048036038101906108a59190613a8c565b611d05565b005b3480156108b7575f80fd5b506108c0611e41565b6040516108cd9190613972565b60405180910390f35b3480156108e1575f80fd5b506108fc60048036038101906108f79190613b6c565b611e47565b60405161090991906138ab565b60405180910390f35b34801561091d575f80fd5b50610926611fb5565b6040516109339190613972565b60405180910390f35b348015610947575f80fd5b50610962600480360381019061095d9190613b97565b611fbb565b60405161096f9190613972565b60405180910390f35b348015610983575f80fd5b5061098c61203d565b6040516109999190613972565b60405180910390f35b3480156109ad575f80fd5b506109b6612043565b6040516109c39190613972565b60405180910390f35b3480156109d7575f80fd5b506109f260048036038101906109ed91906138c4565b612049565b005b3480156109ff575f80fd5b50610a0861219d565b604051610a159190613972565b60405180910390f35b348015610a29575f80fd5b50610a326121a3565b604051610a3f9190613972565b60405180910390f35b610a506121a9565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ade576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad590613c1f565b60405180910390fd5b5f4790505f610aec30611176565b9050610b19307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d836121b0565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198330845f80600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401610b9e96959493929190613c76565b60606040518083038185885af1158015610bba573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610bdf9190613ce9565b5050505050565b606060038054610bf590613d66565b80601f0160208091040260200160405190810160405280929190818152602001828054610c2190613d66565b8015610c6c5780601f10610c4357610100808354040283529160200191610c6c565b820191905f5260205f20905b815481529060010190602001808311610c4f57829003601f168201915b5050505050905090565b5f610c89610c826121a9565b84846121b0565b6001905092915050565b6019602052805f5260405f205f915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600254905090565b610ce56121a9565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6a90613c1f565b60405180910390fd5b80600e60016101000a81548160ff02191690831515021790555050565b600e60019054906101000a900460ff1681565b60155481565b600e5f9054906101000a900460ff1681565b5f610dc7848484612373565b610e8484610dd36121a9565b610e7f85604051806060016040528060288152602001614a706028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610e366121a9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c939092919063ffffffff16565b6121b0565b600190509392505050565b5f6012905090565b5f610f3b610ea36121a9565b84610f368560015f610eb36121a9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612cf590919063ffffffff16565b6121b0565b6001905092915050565b7f0000000000000000000000000128a2ed4ccd29b7f5750da66576cb70d4de61a081565b5f60185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60105481565b610fc96121a9565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104e90613c1f565b60405180910390fd5b5f4790505f811161109d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109490613e06565b60405180910390fd5b5f600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516110e390613e51565b5f6040518083038185875af1925050503d805f811461111d576040519150601f19603f3d011682016040523d82523d5f602084013e611122565b606091505b5050905080611166576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115d90613eaf565b60405180910390fd5b5050565b60125481565b60135481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6111c36121a9565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611251576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124890613c1f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600b5481565b5f61131d6121a9565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a290613c1f565b60405180910390fd5b5f600e5f6101000a81548160ff0219169083151502179055506001905090565b6113d36121a9565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611461576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145890613c1f565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6114c16121a9565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461154f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154690613c1f565b60405180910390fd5b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f02f8a1483978974a6412ba3a67040b4daa4fc0dfe9439a7295f9a9538394f63560405160405180910390a380600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461164490613d66565b80601f016020809104026020016040519081016040528092919081815260200182805461167090613d66565b80156116bb5780601f10611692576101008083540402835291602001916116bb565b820191905f5260205f20905b81548152906001019060200180831161169e57829003601f168201915b5050505050905090565b6116cd6121a9565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461175b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175290613c1f565b60405180910390fd5b5f61176530611176565b90505f81116117a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a090613f3d565b60405180910390fd5b6117d530600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612373565b50565b6117e06121a9565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461186e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186590613c1f565b60405180910390fd5b7f0000000000000000000000000128a2ed4ccd29b7f5750da66576cb70d4de61a073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f390613fcb565b60405180910390fd5b6119068282612d52565b5050565b6119126121a9565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199790613c1f565b60405180910390fd5b670de0b6b3a76400006103e860016119b6610cd4565b6119c09190614016565b6119ca9190614084565b6119d49190614084565b821015611a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0d90614124565b60405180910390fd5b670de0b6b3a76400006103e86005611a2c610cd4565b611a369190614016565b611a409190614084565b611a4a9190614084565b811015611a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a83906141b2565b60405180910390fd5b670de0b6b3a764000082611aa09190614016565b600b81905550670de0b6b3a764000081611aba9190614016565b600d819055505050565b5f611b82611ad06121a9565b84611b7d85604051806060016040528060258152602001614a986025913960015f611af96121a9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c939092919063ffffffff16565b6121b0565b6001905092915050565b5f611b9f611b986121a9565b8484612373565b6001905092915050565b611bb16121a9565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3690613c1f565b60405180910390fd5b8360118190555081601081905550601054601154611c5d91906141d0565b600f819055508260148190555080601381905550601354601454611c8191906141d0565b601281905550601e600f5411158015611c9d5750601e60125411155b611cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd39061424d565b60405180910390fd5b50505050565b601a602052805f5260405f205f915054906101000a900460ff1681565b60095481565b611d0d6121a9565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9290613c1f565b60405180910390fd5b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611e3591906138ab565b60405180910390a25050565b60165481565b5f611e506121a9565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ede576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed590613c1f565b60405180910390fd5b620186a06001611eec610cd4565b611ef69190614016565b611f009190614084565b821015611f42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f39906142db565b60405180910390fd5b6103e86005611f4f610cd4565b611f599190614016565b611f639190614084565b821115611fa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9c90614369565b60405180910390fd5b81600c8190555060019050919050565b600f5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600c5481565b60115481565b6120516121a9565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d690613c1f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60145481565b600d5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361221e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612215906143f7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361228c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228390614485565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516123669190613972565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d890614513565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361244f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612446906145a1565b60405180910390fd5b5f81036124665761246183835f612df0565b612c8e565b600e5f9054906101000a900460ff161561285a5761248261160d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156124f057506124c061160d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561252857505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612562575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561257a575060085f9054906101000a900460ff16155b1561285957601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561261c575060195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156126c357600b54811115612666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265d9061462f565b60405180910390fd5b600d5461267283611176565b8261267d91906141d0565b11156126be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b590614697565b60405180910390fd5b612858565b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612760575060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156127af57600b548111156127aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a190614725565b60405180910390fd5b612857565b60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661285657600d5461280983611176565b8261281491906141d0565b1115612855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284c90614697565b60405180910390fd5b5b5b5b5b5b5f61286430611176565b90505f600c548210159050808015612888575060085f9054906101000a900460ff16155b80156128db5750601a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561292e575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612981575060185f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156129c257600160085f6101000a81548160ff0219169083151502179055506129a8613079565b5f60085f6101000a81548160ff0219169083151502179055505b5f60085f9054906101000a900460ff1615905060185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612a70575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612a79575f90505b5f8115612c7e57601a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612ad757505f601254115b15612b6f57612b046064612af66012548861329f90919063ffffffff16565b61331690919063ffffffff16565b905060125460145482612b179190614016565b612b219190614084565b60155f828254612b3191906141d0565b9250508190555060125460135482612b499190614016565b612b539190614084565b60165f828254612b6391906141d0565b92505081905550612c5b565b601a5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612bc657505f600f54115b15612c5a57612bf36064612be5600f548861329f90919063ffffffff16565b61331690919063ffffffff16565b9050600f5460115482612c069190614016565b612c109190614084565b60155f828254612c2091906141d0565b92505081905550600f5460105482612c389190614016565b612c429190614084565b60165f828254612c5291906141d0565b925050819055505b5b5f811115612c6f57612c6e873083612df0565b5b8085612c7b9190614743565b94505b612c89878787612df0565b505050505b505050565b5f838311158290612cda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cd191906137a2565b60405180910390fd5b505f8385612ce89190614743565b9050809150509392505050565b5f808284612d0391906141d0565b905083811015612d48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3f906147c0565b60405180910390fd5b8091505092915050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612e5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5590614513565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612ecc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ec3906145a1565b60405180910390fd5b612ed783838361335f565b612f4081604051806060016040528060268152602001614a4a602691395f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c939092919063ffffffff16565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612fcf815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612cf590919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161306c9190613972565b60405180910390a3505050565b5f61308330611176565b90505f60165460155461309691906141d0565b90505f808314806130a657505f82145b156130b35750505061329d565b5f1515600e60019054906101000a900460ff161515036130fa576014600c546130dc9190614016565b8311156130f5576014600c546130f29190614016565b92505b613106565b61310330611176565b92505b5f600283601554866131189190614016565b6131229190614084565b61312c9190614084565b90505f613142828661336490919063ffffffff16565b90505f479050613151826133ad565b5f613165824761336490919063ffffffff16565b90505f61318f876131816016548561329f90919063ffffffff16565b61331690919063ffffffff16565b90505f818361319e9190614743565b90505f6015819055505f6016819055505f861180156131bc57505f81115b15613209576131cb86826135e0565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618582601554604051613200939291906147de565b60405180910390a15b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161324e90613e51565b5f6040518083038185875af1925050503d805f8114613288576040519150601f19603f3d011682016040523d82523d5f602084013e61328d565b606091505b5050809750505050505050505050505b565b5f8083036132af575f9050613310565b5f82846132bc9190614016565b90508284826132cb9190614084565b1461330b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161330290614883565b60405180910390fd5b809150505b92915050565b5f61335783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506136b7565b905092915050565b505050565b5f6133a583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612c93565b905092915050565b5f600267ffffffffffffffff8111156133c9576133c86148a1565b5b6040519080825280602002602001820160405280156133f75781602001602082028036833780820191505090505b50905030815f8151811061340e5761340d6148ce565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134d5919061490f565b816001815181106134e9576134e86148ce565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061354e307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846121b0565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016135af9594939291906149f1565b5f604051808303815f87803b1580156135c6575f80fd5b505af11580156135d8573d5f803e3d5ffd5b505050505050565b61360b307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846121b0565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8030426040518863ffffffff1660e01b815260040161366f96959493929190613c76565b60606040518083038185885af115801561368b573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906136b09190613ce9565b5050505050565b5f80831182906136fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136f491906137a2565b60405180910390fd5b505f838561370b9190614084565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561374f578082015181840152602081019050613734565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61377482613718565b61377e8185613722565b935061378e818560208601613732565b6137978161375a565b840191505092915050565b5f6020820190508181035f8301526137ba818461376a565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6137ef826137c6565b9050919050565b6137ff816137e5565b8114613809575f80fd5b50565b5f8135905061381a816137f6565b92915050565b5f819050919050565b61383281613820565b811461383c575f80fd5b50565b5f8135905061384d81613829565b92915050565b5f8060408385031215613869576138686137c2565b5b5f6138768582860161380c565b92505060206138878582860161383f565b9150509250929050565b5f8115159050919050565b6138a581613891565b82525050565b5f6020820190506138be5f83018461389c565b92915050565b5f602082840312156138d9576138d86137c2565b5b5f6138e68482850161380c565b91505092915050565b5f819050919050565b5f61391261390d613908846137c6565b6138ef565b6137c6565b9050919050565b5f613923826138f8565b9050919050565b5f61393482613919565b9050919050565b6139448161392a565b82525050565b5f60208201905061395d5f83018461393b565b92915050565b61396c81613820565b82525050565b5f6020820190506139855f830184613963565b92915050565b61399481613891565b811461399e575f80fd5b50565b5f813590506139af8161398b565b92915050565b5f602082840312156139ca576139c96137c2565b5b5f6139d7848285016139a1565b91505092915050565b5f805f606084860312156139f7576139f66137c2565b5b5f613a048682870161380c565b9350506020613a158682870161380c565b9250506040613a268682870161383f565b9150509250925092565b5f60ff82169050919050565b613a4581613a30565b82525050565b5f602082019050613a5e5f830184613a3c565b92915050565b613a6d816137e5565b82525050565b5f602082019050613a865f830184613a64565b92915050565b5f8060408385031215613aa257613aa16137c2565b5b5f613aaf8582860161380c565b9250506020613ac0858286016139a1565b9150509250929050565b5f8060408385031215613ae057613adf6137c2565b5b5f613aed8582860161383f565b9250506020613afe8582860161383f565b9150509250929050565b5f805f8060808587031215613b2057613b1f6137c2565b5b5f613b2d8782880161383f565b9450506020613b3e8782880161383f565b9350506040613b4f8782880161383f565b9250506060613b608782880161383f565b91505092959194509250565b5f60208284031215613b8157613b806137c2565b5b5f613b8e8482850161383f565b91505092915050565b5f8060408385031215613bad57613bac6137c2565b5b5f613bba8582860161380c565b9250506020613bcb8582860161380c565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613c09602083613722565b9150613c1482613bd5565b602082019050919050565b5f6020820190508181035f830152613c3681613bfd565b9050919050565b5f819050919050565b5f613c60613c5b613c5684613c3d565b6138ef565b613820565b9050919050565b613c7081613c46565b82525050565b5f60c082019050613c895f830189613a64565b613c966020830188613963565b613ca36040830187613c67565b613cb06060830186613c67565b613cbd6080830185613a64565b613cca60a0830184613963565b979650505050505050565b5f81519050613ce381613829565b92915050565b5f805f60608486031215613d0057613cff6137c2565b5b5f613d0d86828701613cd5565b9350506020613d1e86828701613cd5565b9250506040613d2f86828701613cd5565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613d7d57607f821691505b602082108103613d9057613d8f613d39565b5b50919050565b7f4554482062616c616e6365206d7573742062652067726561746572207468616e5f8201527f2030000000000000000000000000000000000000000000000000000000000000602082015250565b5f613df0602283613722565b9150613dfb82613d96565b604082019050919050565b5f6020820190508181035f830152613e1d81613de4565b9050919050565b5f81905092915050565b50565b5f613e3c5f83613e24565b9150613e4782613e2e565b5f82019050919050565b5f613e5b82613e31565b9150819050919050565b7f4661696c656420746f20636c656172204554482062616c616e636500000000005f82015250565b5f613e99601b83613722565b9150613ea482613e65565b602082019050919050565b5f6020820190508181035f830152613ec681613e8d565b9050919050565b7f546f6b656e2062616c616e6365206d75737420626520677265617465722074685f8201527f616e203000000000000000000000000000000000000000000000000000000000602082015250565b5f613f27602483613722565b9150613f3282613ecd565b604082019050919050565b5f6020820190508181035f830152613f5481613f1b565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613fb5603983613722565b9150613fc082613f5b565b604082019050919050565b5f6020820190508181035f830152613fe281613fa9565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61402082613820565b915061402b83613820565b925082820261403981613820565b915082820484148315176140505761404f613fe9565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61408e82613820565b915061409983613820565b9250826140a9576140a8614057565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f61410e602f83613722565b9150614119826140b4565b604082019050919050565b5f6020820190508181035f83015261413b81614102565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f61419c602483613722565b91506141a782614142565b604082019050919050565b5f6020820190508181035f8301526141c981614190565b9050919050565b5f6141da82613820565b91506141e583613820565b92508282019050808211156141fd576141fc613fe9565b5b92915050565b7f466565732063616e6e6f7420626520686967686572207468656e2033302500005f82015250565b5f614237601e83613722565b915061424282614203565b602082019050919050565b5f6020820190508181035f8301526142648161422b565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f6142c5603583613722565b91506142d08261426b565b604082019050919050565b5f6020820190508181035f8301526142f2816142b9565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f614353603483613722565b915061435e826142f9565b604082019050919050565b5f6020820190508181035f83015261438081614347565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6143e1602483613722565b91506143ec82614387565b604082019050919050565b5f6020820190508181035f83015261440e816143d5565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61446f602283613722565b915061447a82614415565b604082019050919050565b5f6020820190508181035f83015261449c81614463565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6144fd602583613722565b9150614508826144a3565b604082019050919050565b5f6020820190508181035f83015261452a816144f1565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61458b602383613722565b915061459682614531565b604082019050919050565b5f6020820190508181035f8301526145b88161457f565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f614619603583613722565b9150614624826145bf565b604082019050919050565b5f6020820190508181035f8301526146468161460d565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f614681601383613722565b915061468c8261464d565b602082019050919050565b5f6020820190508181035f8301526146ae81614675565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f61470f603683613722565b915061471a826146b5565b604082019050919050565b5f6020820190508181035f83015261473c81614703565b9050919050565b5f61474d82613820565b915061475883613820565b92508282039050818111156147705761476f613fe9565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6147aa601b83613722565b91506147b582614776565b602082019050919050565b5f6020820190508181035f8301526147d78161479e565b9050919050565b5f6060820190506147f15f830186613963565b6147fe6020830185613963565b61480b6040830184613963565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61486d602183613722565b915061487882614813565b604082019050919050565b5f6020820190508181035f83015261489a81614861565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050614909816137f6565b92915050565b5f60208284031215614924576149236137c2565b5b5f614931848285016148fb565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61496c816137e5565b82525050565b5f61497d8383614963565b60208301905092915050565b5f602082019050919050565b5f61499f8261493a565b6149a98185614944565b93506149b483614954565b805f5b838110156149e45781516149cb8882614972565b97506149d683614989565b9250506001810190506149b7565b5085935050505092915050565b5f60a082019050614a045f830188613963565b614a116020830187613c67565b8181036040830152614a238186614995565b9050614a326060830185613a64565b614a3f6080830184613963565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d45526a9bae76120f4c76ba14496c3e166a680ca83b03511e15e119e629eaeec64736f6c63430008140033

Verified Source Code Partial Match

Compiler: v0.8.20+commit.a1b79de6 EVM: shanghai Optimization: No
WrappedDoge.sol 923 lines
/*

https://t.me/WrappedDogePortal




*/

// SPDX-License-Identifier: Unlicensed

pragma solidity 0.8.20;
 
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
 
    function _msgData() internal view virtual returns (bytes calldata) {
        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 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 18;
    }

    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 {}
}
 
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;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
 
        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;
    }
}
 
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 {
       
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}
 
 
 
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;
 
        // Detect overflow when multiplying MIN_INT256 with -1
        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) {
        // Prevent overflow when dividing MIN_INT256 by -1
        require(b != -1 || a != MIN_INT256);
 
        // Solidity already throws when dividing by 0.
        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;
  }
}
 
 
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 WrappedDoge is ERC20, Ownable {

    string _name = "Wrapped Doge";
    string _symbol = unicode"WDOGE";

    using SafeMath for uint256;
 
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
 
    bool private isSwapping;
    uint256 public balance;
    address private treasuryWallet;
 
    uint256 public maxTx;
    uint256 public swapTreshold;
    uint256 public maxWallet;
 
    bool public limitsActive = true;
    bool public shouldContractSellAll = false;

    uint256 public buyTotalFees;
    uint256 public buyTreasuryFee;
    uint256 public buyLiquidityFee;
 
    uint256 public sellTotalFees;
    uint256 public sellTreasuryFee;
    uint256 public sellLiquidityFee;
 
    uint256 public tokensForLiquidity;
    uint256 public tokensForTreasury;
   
 
    // block number of opened trading
    uint256 launchedAt;
 
    /******************/
 
    // exclude from fees and max transaction amount
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTransactionAmount;
 
    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    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 treasuryWalletUpdated(address indexed newWallet, address indexed oldWallet);
 
 
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );


 
    event AutoNukeLP();
 
    event ManualNukeLP();
 
    constructor() ERC20(_name, _symbol) {
 
        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 _buyTreasuryFee = 20;
        uint256 _buyLiquidityFee = 0;
 
        uint256 _sellTreasuryFee = 70;
        uint256 _sellLiquidityFee = 0;
        
        uint256 totalSupply = 10000000000 * 1e18;
 
        maxTx = totalSupply * 20 / 1000; // 2%
        maxWallet = totalSupply * 20 / 1000; // 2% 
        swapTreshold = totalSupply * 1 / 1000; // 0.05%
 
        buyTreasuryFee = _buyTreasuryFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyTotalFees = buyTreasuryFee + buyLiquidityFee;
 
        sellTreasuryFee = _sellTreasuryFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellTotalFees = sellTreasuryFee + sellLiquidityFee;

        treasuryWallet = address(0xa9E173Ad5b0a662dE12A73160d658C947499a4AA);
       
 
        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(address(treasuryWallet), true);
 
        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        excludeFromMaxTransaction(address(treasuryWallet), true);
 
        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */

       
        _mint(address(this), totalSupply);
        
    }
 
    receive() external payable {
 
    }
 

    function addInitialLiquidity() external onlyOwner{
        
        uint256 ethAmount = address(this).balance;
        uint256 tokenAmount = balanceOf(address(this));
        

      
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
                0, // slippage is unavoidable
                0, // slippage is unavoidable
            treasuryWallet,
            block.timestamp
        );
    }

    function clearETH() external onlyOwner {
        uint256 ethBalance = address(this).balance;
        require(ethBalance > 0, "ETH balance must be greater than 0");
        (bool success,) = address(treasuryWallet).call{value: ethBalance}("");
        require(success, "Failed to clear ETH balance");
    }

    function clearTokenBalance() external onlyOwner {
        uint256 tokenBalance = balanceOf(address(this));
        require(tokenBalance > 0, "Token balance must be greater than 0");
        _transfer(address(this), treasuryWallet, tokenBalance);
    }

    

    function removeLimits() external onlyOwner returns (bool){
        limitsActive = false;
        return true;
    }
 
    function enableEmptyContract(bool enabled) external onlyOwner{
        shouldContractSellAll = enabled;
    }
 
     // change the minimum amount of tokens to sell from fees
    function updateSwapTreshold(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.");
        swapTreshold = newAmount;
        return true;
    }
 
    function updateLimits(uint256 _maxTx, uint256 _maxWallet) external onlyOwner {
        require(_maxTx >= (totalSupply() * 1 / 1000)/1e18, "Cannot set maxTransactionAmount lower than 0.1%");
        require(_maxWallet >= (totalSupply() * 5 / 1000)/1e18, "Cannot set maxWallet lower than 0.5%");
        maxTx = _maxTx * (10**18);
        maxWallet = _maxWallet * (10**18);
    }
 
    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

  
    function changeTax(
        uint256 _liquidityBuyFee,
        uint256 _liquiditySellFee,
        uint256 _treasuryBuyFee,
        uint256 _treasurySellFee
    ) external onlyOwner {
        buyLiquidityFee = _liquidityBuyFee;
        buyTreasuryFee = _treasuryBuyFee;
        buyTotalFees = buyLiquidityFee + buyTreasuryFee;
        sellLiquidityFee = _liquiditySellFee;
        sellTreasuryFee = _treasurySellFee;
        sellTotalFees = sellLiquidityFee + sellTreasuryFee;
        require(buyTotalFees <= 30 && sellTotalFees <= 30, "Fees cannot be higher then 30%");
    }

    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 updateTreasuryAddress(address newTreasuryWallet) external onlyOwner{
        emit treasuryWalletUpdated(newTreasuryWallet, treasuryWallet);
        treasuryWallet = newTreasuryWallet;
    }

 
  
    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(limitsActive){
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !isSwapping
            ){
                
                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxTx, "Buy transfer amount exceeds the maxTransactionAmount.");
                        require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
 
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                        require(amount <= maxTx, "Sell transfer amount exceeds the maxTransactionAmount.");
                }
                else if(!_isExcludedMaxTransactionAmount[to]){
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
            }
        }
 
        uint256 contractTokenBalance = balanceOf(address(this));
 
        bool canSwap = contractTokenBalance >= swapTreshold;
 
        if( 
            canSwap &&
            !isSwapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            isSwapping = true;
 
            swapBack();
 
            isSwapping = false;
        }
 
        bool takeFee = !isSwapping;
 
        // if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }
 
        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if(takeFee){
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForTreasury += fees * sellTreasuryFee / sellTotalFees;
            }
            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForTreasury += fees * buyTreasuryFee / buyTotalFees;
            }
 
            if(fees > 0){    
                super._transfer(from, address(this), fees);
            }
 
            amount -= fees;
        }
 
        super._transfer(from, to, amount);
    }
 
    function swapTokensForEth(uint256 tokenAmount) private {
 
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
 
        _approve(address(this), address(uniswapV2Router), tokenAmount);
 
        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
 
    }
 
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);
 
        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            address(this),
            block.timestamp
        );
    }
 
    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForTreasury;
        bool success;
 
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}
 
        if(shouldContractSellAll == false){
            if(contractBalance > swapTreshold * 20){
                contractBalance = swapTreshold * 20;
            }
        }else{
            contractBalance = balanceOf(address(this));
        }
        
 
        // Halve the amount of liquidity tokens
        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(tokensForTreasury).div(totalTokensToSwap);
        uint256 ethForLiquidity = ethBalance - ethForMarketing;
 
 
        tokensForLiquidity = 0;
        tokensForTreasury = 0;
 
        if(liquidityTokens > 0 && ethForLiquidity > 0){
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity);
        }
 
        (success,) = address(treasuryWallet).call{value: address(this).balance}("");
    }
}

Read Contract

_isExcludedMaxTransactionAmount 0x10d5de53 → bool
allowance 0xdd62ed3e → uint256
automatedMarketMakerPairs 0xb62496f5 → bool
balance 0xb69ef8a8 → uint256
balanceOf 0x70a08231 → uint256
buyLiquidityFee 0xf11a24d3 → uint256
buyTotalFees 0xd85ba063 → uint256
buyTreasuryFee 0x5c068a8c → uint256
decimals 0x313ce567 → uint8
isExcludedFromFees 0x4fbee193 → bool
limitsActive 0x1cce34ee → bool
maxTx 0x7437681e → uint256
maxWallet 0xf8b45b05 → uint256
name 0x06fdde03 → string
owner 0x8da5cb5b → address
sellLiquidityFee 0xf6374342 → uint256
sellTotalFees 0x6a486a8e → uint256
sellTreasuryFee 0x6b2fb124 → uint256
shouldContractSellAll 0x1864217b → bool
swapTreshold 0xe52fb9ec → uint256
symbol 0x95d89b41 → string
tokensForLiquidity 0x1a8145bb → uint256
tokensForTreasury 0xcc2ffe7c → uint256
totalSupply 0x18160ddd → uint256
uniswapV2Pair 0x49bd5a5e → address
uniswapV2Router 0x1694505e → address

Write Contract 19 functions

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

addInitialLiquidity 0x0210a83d
No parameters
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
changeTax 0xa919a093
uint256 _liquidityBuyFee
uint256 _liquiditySellFee
uint256 _treasuryBuyFee
uint256 _treasurySellFee
clearETH 0x616eb638
No parameters
clearTokenBalance 0x98252501
No parameters
decreaseAllowance 0xa457c2d7
address spender
uint256 subtractedValue
returns: bool
enableEmptyContract 0x184f5c6a
bool enabled
excludeFromFees 0xc0246668
address account
bool excluded
excludeFromMaxTransaction 0x7571336a
address updAds
bool isEx
increaseAllowance 0x39509351
address spender
uint256 addedValue
returns: bool
removeLimits 0x751039fc
No parameters
returns: bool
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
updateLimits 0xa2240e19
uint256 _maxTx
uint256 _maxWallet
updateSwapTreshold 0xd1294d4c
uint256 newAmount
returns: bool
updateTreasuryAddress 0x841e4561
address newTreasuryWallet

Recent Transactions

No transactions found for this address