Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0xaE95daD63ac1006Dc4352987a97ce0dB53Dde2bA
Balance 0 ETH
Nonce 1
Code Size 12621 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

12621 bytes
0x608060405234801561001057600080fd5b50600436106102675760003560e01c8063024c2ddd146103cb57806306fdde03146103f1578063095ea7b3146104065780630b285b1f1461042957806318160ddd146104555780631cd348c01461045d5780631ec9801d146104775780632150ec291461048257806323b872dd146104935780632a4a09dd146104a65780632d838119146104ae5780632ecaf675146104c157806330d08211146104c957806331392fcb146104d1578063313ce567146104e657806334f6ebf5146104ff57806338b9033314610507578063395093511461050f57806342966c68146105225780634fea2c7a146105355780635c975abb146105485780635f6529a31461055057806361086b00146105615780636303516c1461056957806370a082311461057a578063715018a61461058d5780637ebae80e146105955780638da5cb5b146105da578063936af911146105e257806394e10784146105f557806395d89b41146105fd57806397a9d560146106055780639af1d35a14610622578063a0712d6814610663578063a457c2d714610676578063a4e2d63414610689578063a8b0898214610691578063a9059cbb146106a2578063b17b658d146106b5578063b22941dd146106e1578063c45a015514610701578063ccfa214f14610712578063dd62ed3e146103cb578063eb8e886314610722578063efab831c1461072a578063f10437fc14610735578063f238cc6f14610740578063f2fde38b14610748578063f851a4401461075b578063fa86f8ce1461076c578063fb1eb14b14610774578063fd8191631461077c578063fe575a87146107c8575b601c54604080516301eaefb360e71b815290516000926001600160a01b03169163f577d9809160048083019260209291908290030181865afa1580156102b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102d59190612bc8565b6040516366ffd66360e11b8152600080356001600160e01b03191660048301529192506001600160a01b0383169063cdffacc690602401602060405180830381865afa158015610329573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034d9190612bc8565b90506001600160a01b0381166103a45760405162461bcd60e51b8152602060048201526017602482015276119d5b98dd1a5bdb88191bd95cc81b9bdd08195e1a5cdd604a1b60448201526064015b60405180910390fd5b60405136600082376000803683855af43d806000843e8180156103c5578184f35b8184fd5b005b6103de6103d9366004612be5565b6107f4565b6040519081526020015b60405180910390f35b6103f9610821565b6040516103e89190612c6e565b610419610414366004612c81565b6108b6565b60405190151581526020016103e8565b610419610437366004612cad565b6001600160a01b031660009081526012602052604090205460ff1690565b6015546103de565b601d546001600160a01b03165b6040516103e89190612cca565b60255460ff16610419565b600a546001600160a01b031661046a565b6104196104a1366004612cde565b6108cc565b600b546103de565b6103de6104bc366004612d1f565b610ba8565b6034546103de565b6026546103de565b6104d9610bf9565b6040516103e89190612d38565b601b5460ff165b60405160ff90911681526020016103e8565b61046a610c8c565b6001546103de565b61041961051d366004612c81565b610cff565b6103c9610530366004612d1f565b610e18565b6103c9610543366004612d1f565b610fca565b610419611212565b6030546001600160a01b031661046a565b6035546103de565b601e546001600160a01b031661046a565b6103de610588366004612cad565b611241565b6103c96112d0565b604080518082018252600080825260209182015281518083018352602e54808252602f5460ff16151591830191825283519081529051151591810191909152016103e8565b61046a611337565b6103c96105f0366004612dc1565b611346565b6103de6114f7565b6103f961151a565b61060d61152c565b604080519283526020830191909152016103e8565b61062a6116c6565b6040805182518051825260209081015181830152830151818301529082015160608083019190915290910151608082015260a0016103e8565b6103c9610671366004612d1f565b61170a565b610419610684366004612c81565b611746565b6104d961189f565b6023546001600160a01b031661046a565b6104196106b0366004612c81565b611932565b6104196106c3366004612cad565b6001600160a01b031660009081526018602052604090205460ff1690565b6106f46106ef366004612d1f565b611b5c565b6040516103e89190612e35565b601c546001600160a01b031661046a565b603654610100900460ff16610419565b600c546103de565b60365460ff16610419565b600d5460ff166104ed565b602d546103de565b6103c9610756366004612cad565b611c73565b6033546001600160a01b031661046a565b6024546103de565b6017546103de565b610784611d50565b6040516103e89190600060a0820190508251825260208301516020830152604083015160408301526060830151606083015260808301511515608083015292915050565b6104196107d6366004612cad565b6001600160a01b03166000908152601f602052604090205460ff1690565b6001600160a01b038083166000908152601160209081526040808320938516835292905220545b92915050565b60606001601801805461083390612e98565b80601f016020809104026020016040519081016040528092919081815260200182805461085f90612e98565b80156108ac5780601f10610881576101008083540402835291602001916108ac565b820191906000526020600020905b81548152906001019060200180831161088f57829003601f168201915b5050505050905090565b60006108c3338484611e6c565b50600192915050565b601e54600090600160a81b900460ff1661091057601e805460ff60a81b1916600160a81b179055600061090085858561202b565b905061090c8184612ee8565b9250505b603654610100900460ff1615610a0e57601c54604080516322d608f360e21b815290516001600160a01b0390921691638b5823cc916004808201926020929091908290030181865afa15801561096a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098e9190612bc8565b6001600160a01b031663379f5c69336040516001600160e01b031960e084901b1681526001600160a01b0391821660048201528188166024820152908616604482015260648101859052608401600060405180830381600087803b1580156109f557600080fd5b505af1158015610a09573d6000803e3d6000fd5b505050505b610a198484846121da565b6001600160a01b038416600090815260116020908152604080832033845290915290205482811015610a735760405162461bcd60e51b815260206004820152600360248201526245544160e81b604482015260640161039b565b6001600160a01b038516600090815260116020908152604080832033808552925290912054610aae918791610aa9908790612ee8565b611e6c565b601e805460ff60a81b19169055603654610100900460ff1615610b9b57601c54604080516322d608f360e21b815290516001600160a01b0390921691638b5823cc916004808201926020929091908290030181865afa158015610b15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b399190612bc8565b6001600160a01b031663f49062ca3386866040518463ffffffff1660e01b8152600401610b6893929190612efb565b600060405180830381600087803b158015610b8257600080fd5b505af1158015610b96573d6000803e3d6000fd5b505050505b60019150505b9392505050565b601654600090821115610be35760405162461bcd60e51b815260206004820152600360248201526220a62960e91b604482015260640161039b565b6000610bed6114f7565b9050610ba18184612f1f565b610c01612af9565b5060408051610100808201835260025460ff80821615158452918104821615156020840152620100008104821615159383019390935263010000008304811615156060830152600160201b8304811615156080830152600160281b83048116151560a0830152600160301b83048116151560c0830152600160381b909204909116151560e082015290565b601c54604080516322d608f360e21b815290516000926001600160a01b031691638b5823cc9160048083019260209291908290030181865afa158015610cd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cfa9190612bc8565b905090565b603654600090610100900460ff1615610de257601c54604080516322d608f360e21b815290516001600160a01b0390921691638b5823cc916004808201926020929091908290030181865afa158015610d5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d809190612bc8565b6001600160a01b031663cf5961bb3385856040518463ffffffff1660e01b8152600401610daf93929190612efb565b600060405180830381600087803b158015610dc957600080fd5b505af1158015610ddd573d6000803e3d6000fd5b505050505b3360008181526011602090815260408083206001600160a01b03881684529091529020546108c391908590610aa9908690612f41565b601c54604080516301eaefb360e71b815290516000926001600160a01b03169163f577d9809160048083019260209291908290030181865afa158015610e62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e869190612bc8565b6001600160a01b03166387265bac6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ec3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee79190612bc8565b9050600080826001600160a01b031684604051602401610f0991815260200190565b60408051601f198184030181529181526020820180516001600160e01b0316630852cd8d60e31b17905251610f3e9190612f54565b600060405180830381855af49150503d8060008114610f79576040519150601f19603f3d011682016040523d82523d6000602084013e610f7e565b606091505b509150915081610fc457604481511015610f9757600080fd5b80806020019051810190610fab9190612f86565b60405162461bcd60e51b815260040161039b9190612c6e565b50505050565b601c54602480546040516301e2e22f60e51b815260048101919091526000926001600160a01b031691633c5c45e09101602060405180830381865afa158015611017573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103b9190612bc8565b9050336001600160a01b0382161461107a5760405162461bcd60e51b8152602060048201526002602482015261524160f01b604482015260640161039b565b61108c81611086611337565b846121da565b601c54604080516301eaefb360e71b815290516000926001600160a01b03169163f577d9809160048083019260209291908290030181865afa1580156110d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fa9190612bc8565b6001600160a01b03166387265bac6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611137573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115b9190612bc8565b9050600080826001600160a01b03168560405160240161117d91815260200190565b60408051601f198184030181529181526020820180516001600160e01b0316630852cd8d60e31b179052516111b29190612f54565b600060405180830381855af49150503d80600081146111ed576040519150601f19603f3d011682016040523d82523d6000602084013e6111f2565b606091505b50915091508161120b57604481511015610f9757600080fd5b5050505050565b600254600090600160301b900460ff16151581036112305750600090565b50601e54600160a01b900460ff1690565b60025460009062010000900460ff16156112b4576001600160a01b03821660009081526012602052604090205460ff161561129257506001600160a01b031660009081526010602052604090205490565b6001600160a01b0382166000908152600f602052604090205461081b90610ba8565b506001600160a01b031660009081526010602052604090205490565b336112d9611337565b6001600160a01b0316146112ff5760405162461bcd60e51b815260040161039b90613027565b600080546040516001600160a01b03909116906000805160206130d8833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b603654610100900460ff1661135a57600080fd5b601c54604080516322d608f360e21b815290516001600160a01b0390921691638b5823cc916004808201926020929091908290030181865afa1580156113a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c89190612bc8565b6001600160a01b0316336001600160a01b03161461140e5760405162461bcd60e51b81526020600482015260036024820152621313d360ea1b604482015260640161039b565b60005b818110156114f2576114e083838381811061142e5761142e61305c565b90506020020160208101906114439190612cad565b601c54604080516322d608f360e21b815290516001600160a01b0390921691638b5823cc916004808201926020929091908290030181865afa15801561148d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b19190612bc8565b6114db8686868181106114c6576114c661305c565b90506020020160208101906105889190612cad565b6121da565b806114ea81613072565b915050611411565b505050565b600080600061150461152c565b90925090506115138183612f1f565b9250505090565b60606001601901805461083390612e98565b6016546015546000918291825b60135481101561169457826001600e016000600160120184815481106115615761156161305c565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806115d25750816001600f016000600160120184815481106115ab576115ab61305c565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156115e95750506016546015549094909350915050565b60138054600f91600091849081106116035761160361305c565b60009182526020808320909101546001600160a01b031683528201929092526040019020546116329084612ee8565b92506001600f016000600160120183815481106116515761165161305c565b60009182526020808320909101546001600160a01b031683528201929092526040019020546116809083612ee8565b91508061168c81613072565b915050611539565b506015546016546116a59190612f1f565b8210156116bd57505060165460155490939092509050565b90939092509050565b6116ce612b3d565b506040805160c0810182526004546080820190815260055460a08301528152600654602082015260075491810191909152600854606082015290565b33611713611337565b6001600160a01b0316146117395760405162461bcd60e51b815260040161039b90613027565b61174333826126f7565b50565b603654600090610100900460ff161561182957601c54604080516322d608f360e21b815290516001600160a01b0390921691638b5823cc916004808201926020929091908290030181865afa1580156117a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c79190612bc8565b6001600160a01b031663568c75a93385856040518463ffffffff1660e01b81526004016117f693929190612efb565b600060405180830381600087803b15801561181057600080fd5b505af1158015611824573d6000803e3d6000fd5b505050505b3360009081526011602090815260408083206001600160a01b0387168452909152902054828110156118865760405162461bcd60e51b815260040161039b9060208082526004908201526322a0a12d60e11b604082015260600190565b6118953385610aa98685612ee8565b5060019392505050565b6118a7612af9565b5060408051610100808201835260035460ff80821615158452918104821615156020840152620100008104821615159383019390935263010000008304811615156060830152600160201b8304811615156080830152600160281b83048116151560a0830152600160301b83048116151560c0830152600160381b909204909116151560e082015290565b601e54600090600160a81b900460ff1661197c57601e805460ff60a81b1916600160a81b179055600061196c6119653390565b858561202b565b90506119788184612ee8565b9250505b603654610100900460ff1615611a5c57601c54604080516322d608f360e21b815290516001600160a01b0390921691638b5823cc916004808201926020929091908290030181865afa1580156119d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fa9190612bc8565b6001600160a01b0316631ffb811f3385856040518463ffffffff1660e01b8152600401611a2993929190612efb565b600060405180830381600087803b158015611a4357600080fd5b505af1158015611a57573d6000803e3d6000fd5b505050505b611a673384846121da565b601e805460ff60a81b19169055603654610100900460ff16156108c357601c54604080516322d608f360e21b815290516001600160a01b0390921691638b5823cc916004808201926020929091908290030181865afa158015611ace573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af29190612bc8565b6001600160a01b031663f49062ca3385856040518463ffffffff1660e01b8152600401611b2193929190612efb565b600060405180830381600087803b158015611b3b57600080fd5b505af1158015611b4f573d6000803e3d6000fd5b5050505050600192915050565b611b64612b6b565b6009805483908110611b7857611b7861305c565b9060005260206000209060040201604051806080016040529081600082018054611ba190612e98565b80601f0160208091040260200160405190810160405280929190818152602001828054611bcd90612e98565b8015611c1a5780601f10611bef57610100808354040283529160200191611c1a565b820191906000526020600020905b815481529060010190602001808311611bfd57829003601f168201915b50505091835250506040805180820182526001840154815260028401546020808301919091528301526003909201546001600160a01b03811692820192909252600160a01b90910460ff16151560609091015292915050565b33611c7c611337565b6001600160a01b031614611ca25760405162461bcd60e51b815260040161039b90613027565b6001600160a01b038116611d075760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161039b565b600080546040516001600160a01b03808516939216916000805160206130d883398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b611d846040518060a00160405280600081526020016000815260200160008152602001600081526020016000151581525090565b506040805160a0810182526027548152602854602082015260295491810191909152602a546060820152602b5460ff161515608082015290565b6000808060001985870985870292508281108382030391505080600003611df75760008411611dec57600080fd5b508290049050610ba1565b808411611e0357600080fd5b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6001600160a01b038316611eab5760405162461bcd60e51b815260040161039b9060208082526004908201526322a0a32d60e11b604082015260600190565b6001600160a01b038216611eea5760405162461bcd60e51b815260040161039b9060208082526004908201526322a0aa2d60e11b604082015260600190565b603654610100900460ff1615611fca57601c54604080516322d608f360e21b815290516001600160a01b0390921691638b5823cc916004808201926020929091908290030181865afa158015611f44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f689190612bc8565b6001600160a01b03166347abf3be8484846040518463ffffffff1660e01b8152600401611f9793929190612efb565b600060405180830381600087803b158015611fb157600080fd5b505af1158015611fc5573d6000803e3d6000fd5b505050505b6001600160a01b0383811660008181526011602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000806001601b0160009054906101000a90046001600160a01b03166001600160a01b031663f577d9806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612084573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120a89190612bc8565b6001600160a01b03166387265bac6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121099190612bc8565b9050600080826001600160a01b031687878760405160240161212d93929190612efb565b60408051601f198184030181529181526020820180516001600160e01b0316630da753b760e31b179052516121629190612f54565b600060405180830381855af49150503d806000811461219d576040519150601f19603f3d011682016040523d82523d6000602084013e6121a2565b606091505b5091509150816121bb57604481511015610f9757600080fd5b808060200190518101906121cf919061308b565b979650505050505050565b601c54604080516301eaefb360e71b815290516000926001600160a01b03169163f577d9809160048083019260209291908290030181865afa158015612224573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122489190612bc8565b6001600160a01b031663c7249c576040518163ffffffff1660e01b8152600401602060405180830381865afa158015612285573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122a99190612bc8565b60255490915060ff1680156122c05750602b5460ff165b80156122e457506001600160a01b03841660009081526018602052604090205460ff165b1561239a57600080826001600160a01b031684866040516024016123099291906130a4565b60408051601f198184030181529181526020820180516001600160e01b03166333bbcf1d60e11b1790525161233e9190612f54565b600060405180830381855af49150503d8060008114612379576040519150601f19603f3d011682016040523d82523d6000602084013e61237e565b606091505b50915091508161239757604481511015610f9757600080fd5b50505b600254600160381b900460ff1680156123cb57506001600160a01b03841660009081526018602052604090205460ff165b1561248157600080826001600160a01b031684866040516024016123f09291906130a4565b60408051601f198184030181529181526020820180516001600160e01b0316631cf707f160e31b179052516124259190612f54565b600060405180830381855af49150503d8060008114612460576040519150601f19603f3d011682016040523d82523d6000602084013e612465565b606091505b50915091508161247e57604481511015610f9757600080fd5b50505b60255460ff1680156124955750602f5460ff165b80156124b957506001600160a01b03841660009081526018602052604090205460ff165b1561256d57600080826001600160a01b0316856040516024016124dc9190612cca565b60408051601f198184030181529181526020820180516001600160e01b0316631f35506360e11b179052516125119190612f54565b600060405180830381855af49150503d806000811461254c576040519150601f19603f3d011682016040523d82523d6000602084013e612551565b606091505b50915091508161256a57604481511015610f9757600080fd5b50505b601c54604080516301eaefb360e71b815290516000926001600160a01b03169163f577d9809160048083019260209291908290030181865afa1580156125b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125db9190612bc8565b6001600160a01b03166387265bac6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612618573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061263c9190612bc8565b9050600080826001600160a01b031687878760405160240161266093929190612efb565b60408051601f198184030181529181526020820180516001600160e01b03166318703c4f60e11b179052516126959190612f54565b600060405180830381855af49150503d80600081146126d0576040519150601f19603f3d011682016040523d82523d6000602084013e6126d5565b606091505b5091509150816126ee57604481511015610f9757600080fd5b50505050505050565b6001600160a01b0382166127335760405162461bcd60e51b815260206004820152600360248201526222a6ad60e91b604482015260640161039b565b600254600160281b900460ff1661275c5760405162461bcd60e51b815260040161039b906130bb565b60025462010000900460ff16156127855760405162461bcd60e51b815260040161039b906130bb565b603654610100900460ff161561286757601c54604080516322d608f360e21b815290516001600160a01b0390921691638b5823cc916004808201926020929091908290030181865afa1580156127df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128039190612bc8565b6040516218a28b60e61b81526001600160a01b038481166004830152602482018490529190911690630628a2c090604401600060405180830381600087803b15801561284e57600080fd5b505af1158015612862573d6000803e3d6000fd5b505050505b601c54604080516323ba783160e21b815290516000926001600160a01b031691638ee9e0c49160048083019260209291908290030181865afa1580156128b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128d59190612bc8565b905060006129a683836001600160a01b031663ced72f876040518163ffffffff1660e01b8152600401602060405180830381865afa15801561291b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061293f919061308b565b846001600160a01b031663f4e1fc416040518163ffffffff1660e01b8152600401602060405180830381865afa15801561297d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129a1919061308b565b611dbe565b90506000826001600160a01b0316634e7ceacb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129e8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a0c9190612bc8565b90508360016014016000828254612a239190612f41565b90915550506001600160a01b03811660009081526010602052604081208054849290612a50908490612f41565b90915550612a6090508285612ee8565b6001600160a01b03861660009081526010602052604081208054909190612a88908490612f41565b90915550506040518281526001600160a01b038216906000906000805160206130f88339815191529060200160405180910390a36001600160a01b03851660006000805160206130f8833981519152612ae18588612ee8565b60405190815260200160405180910390a35050505050565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915290565b6040518060800160405280612b50612b99565b81526020016000815260200160008152602001600081525090565b604051806080016040528060608152602001612b85612b99565b815260006020820181905260409091015290565b604051806040016040528060008152602001600081525090565b6001600160a01b038116811461174357600080fd5b600060208284031215612bda57600080fd5b8151610ba181612bb3565b60008060408385031215612bf857600080fd5b8235612c0381612bb3565b91506020830135612c1381612bb3565b809150509250929050565b60005b83811015612c39578181015183820152602001612c21565b50506000910152565b60008151808452612c5a816020860160208601612c1e565b601f01601f19169290920160200192915050565b602081526000610ba16020830184612c42565b60008060408385031215612c9457600080fd5b8235612c9f81612bb3565b946020939093013593505050565b600060208284031215612cbf57600080fd5b8135610ba181612bb3565b6001600160a01b0391909116815260200190565b600080600060608486031215612cf357600080fd5b8335612cfe81612bb3565b92506020840135612d0e81612bb3565b929592945050506040919091013590565b600060208284031215612d3157600080fd5b5035919050565b6000610100820190508251151582526020830151151560208301526040830151151560408301526060830151151560608301526080830151612d7e608084018215159052565b5060a0830151612d9260a084018215159052565b5060c0830151612da660c084018215159052565b5060e0830151612dba60e084018215159052565b5092915050565b60008060208385031215612dd457600080fd5b82356001600160401b0380821115612deb57600080fd5b818501915085601f830112612dff57600080fd5b813581811115612e0e57600080fd5b8660208260051b8501011115612e2357600080fd5b60209290920196919550909350505050565b602081526000825160a06020840152612e5160c0840182612c42565b90506020840151612e6f604085018280518252602090810151910152565b5060408401516001600160a01b03166080840152606090930151151560a0909201919091525090565b600181811c90821680612eac57607f821691505b602082108103612ecc57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561081b5761081b612ed2565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600082612f3c57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561081b5761081b612ed2565b60008251612f66818460208701612c1e565b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215612f9857600080fd5b81516001600160401b0380821115612faf57600080fd5b818401915084601f830112612fc357600080fd5b815181811115612fd557612fd5612f70565b604051601f8201601f19908116603f01168101908382118183101715612ffd57612ffd612f70565b8160405282815287602084870101111561301657600080fd5b6121cf836020830160208801612c1e565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60006001820161308457613084612ed2565b5060010190565b60006020828403121561309d57600080fd5b5051919050565b9182526001600160a01b0316602082015260400190565b6020808252600290820152614e4d60f01b60408201526060019056fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220a4e40b9641135954640ca80aed2c263d55c040dd710d9766ebe710002ab0c21364736f6c63430008110033

Verified Source Code Partial Match

Compiler: v0.8.17+commit.8df45f5f EVM: london Optimization: Yes (1 runs)
TaxToken.sol 4506 lines
// Sources flattened with hardhat v2.12.6 https://hardhat.org

// File contracts/interfaces/IMintFactory.sol

// SPDX-License-Identifier: UNLICENSED
// ALL RIGHTS RESERVED

// Unicrypt by SDDTech reserves all rights on this code. You may NOT copy these contracts.

pragma solidity 0.8.17;

interface IMintFactory {

    struct TaxHelper {
        string Name;
        address Address;
        uint Index;
    }

    function addTaxHelper(string calldata _name, address _address) external;

    function updateTaxHelper(uint _index, address _address) external;

    function getTaxHelperAddress(uint _index) external view returns(address);

    function getTaxHelpersDataByIndex(uint _index) external view returns(TaxHelper memory);

    function registerToken (address _tokenOwner, address _tokenAddress) external;

    function tokenIsRegistered(address _tokenAddress) external view returns (bool);

    function tokenGeneratorsLength() external view returns (uint256);

    function tokenGeneratorIsAllowed(address _tokenGenerator) external view returns (bool);

    function getFacetHelper() external view returns (address);

    function updateFacetHelper(address _newFacetHelperAddress) external;

    function getFeeHelper() external view returns (address);

    function updateFeeHelper(address _newFeeHelperAddress) external;
    
    function getLosslessController() external view returns (address);

    function updateLosslessController(address _newLosslessControllerAddress) external;
}


// File contracts/interfaces/ITaxHelper.sol

// 
// ALL RIGHTS RESERVED

// Unicrypt by SDDTech reserves all rights on this code. You may NOT copy these contracts.



interface ITaxHelper {

    function initiateBuyBackTax(
        address _token,
        address _wallet
    ) external returns (bool);

    function initiateLPTokenTax(        
        address _token,
        address _wallet
    ) external returns (bool);

    function lpTokenHasReserves(address _lpToken) external view returns (bool);

    function createLPToken() external returns (address lpToken);

    function sync(address _lpToken) external;
}


// File contracts/interfaces/IERC20.sol



// File @openzeppelin/contracts/token/ERC20/[email protected]



/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}


// File contracts/interfaces/ITaxToken.sol

// 
// ALL RIGHTS RESERVED

// Unicrypt by SDDTech reserves all rights on this code. You may NOT copy these contracts.


interface ITaxToken is IERC20 {

    function taxHelperIndex()external view returns(uint);

    function buyBackBurn(uint256 _amount) external;

    function owner() external view returns (address);

    function pairAddress() external view returns (address);
    function decimals() external view returns (uint8);

}


// File contracts/libraries/Context.sol

// 

// File @openzeppelin/contracts/utils/[email protected]



/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}


// File contracts/libraries/Ownable.sol

// 

// File @openzeppelin/contracts/access/[email protected]


/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}


// File contracts/BuyBackWallet.sol

// 
// ALL RIGHTS RESERVED

// Unicrypt by SDDTech reserves all rights on this code. You may NOT copy these contracts.


contract BuyBackWallet is Ownable{
    

    ITaxToken public token; 
    IMintFactory public factory;
    uint256 private threshold;

    event UpdatedThreshold(uint256 _newThreshold);
    event ETHtoTaxHelper(uint256 amount);


    constructor(address _factory, address _token, uint256 _newThreshold) {
        token = ITaxToken(_token);
        factory = IMintFactory(_factory);
        threshold = _newThreshold;
        emit UpdatedThreshold(_newThreshold);
        transferOwnership(_token);
    }
    
    function checkBuyBackTrigger() public view returns (bool) {
        return address(this).balance > threshold;
    }

    function getBalance() public view returns (uint256) {
        return address(this).balance;
    }

    function sendEthToTaxHelper() external returns (uint256) {
        uint index = token.taxHelperIndex();
        require(msg.sender == factory.getTaxHelperAddress(index), "RA");
        uint256 amount = address(this).balance;
        (bool sent,) = msg.sender.call{value: amount}("");
        require(sent, "Failed to send Ether");
        emit ETHtoTaxHelper(amount);
        return amount;
    }

    function updateThreshold(uint256 _newThreshold) external onlyOwner {
        threshold = _newThreshold;
        emit UpdatedThreshold(_newThreshold);
    }

    function getThreshold() external view returns (uint256) {
        return threshold;
    }

    receive() payable external {
    }
}


// File contracts/FacetHelper.sol

// 
// ALL RIGHTS RESERVED

// Unicrypt by SDDTech reserves all rights on this code. You may NOT copy these contracts.


contract FacetHelper is Ownable{

    event AddedFacet(address _newFacet);
    event AddedSelector(address _facet, bytes4 _sig);
    event RemovedSelector(bytes4 _sig);
    event ResetStorage();

    event UpdatedSettingsFacet(address _newAddress);
    event UpdatedLosslessFacet(address _newAddress);
    event UpdatedTaxFacet(address _newAddress);
    event UpdatedConstructorFacet(address _newAddress);
    event UpdatedWalletsFacet(address _newAddress);
    event UpdatedAntiBotFacet(address _newAddress);
    event UpdatedMulticallFacet(address _newAddress);

    struct Facets {
        address Settings;
        address Lossless;
        address Tax;
        address Constructor;
        address Wallets;
        address AntiBot;
        address Multicall;
    }

    struct FacetAddressAndPosition {
        address facetAddress;
        uint16 functionSelectorPosition; // position in facetFunctionSelectors.functionSelectors array
    }

    struct FacetFunctionSelectors {
        bytes4[] functionSelectors;
        uint16 facetAddressPosition; // position of facetAddress in facetAddresses array
    }

    // maps function selector to the facet address and
    // the position of the selector in the facetFunctionSelectors.selectors array
    mapping(bytes4 => FacetAddressAndPosition) _selectorToFacetAndPosition;
    // maps facet addresses to function selectors
    mapping(address => FacetFunctionSelectors) _facetFunctionSelectors;
    // facet addresses
    address[] _facetAddresses;
    // Used to query if a contract implements an interface.
    // Used to implement ERC-165.
    mapping(bytes4 => bool) supportedInterfaces;

    Facets public facetsInfo;

    enum FacetCutAction {Add, Replace, Remove}
    // Add=0, Replace=1, Remove=2

    struct FacetCut {
        address facetAddress;
        FacetCutAction action;
        bytes4[] functionSelectors;
    }

    struct Facet {
        address facetAddress;
        bytes4[] functionSelectors;
    }

    /// @notice Gets all facets and their selectors.
    /// @return facets_ Facet
    function facets() external view returns (Facet[] memory facets_) {
        uint256 numFacets = _facetAddresses.length;
        facets_ = new Facet[](numFacets);
        for (uint256 i; i < numFacets; i++) {
            address facetAddress_ = _facetAddresses[i];
            facets_[i].facetAddress = facetAddress_;
            facets_[i].functionSelectors = _facetFunctionSelectors[facetAddress_].functionSelectors;
        }
    }

    /// @notice Gets all the function selectors provided by a facet.
    /// @param _facet The facet address.
    /// @return facetFunctionSelectors_
    function facetFunctionSelectors(address _facet) external view returns (bytes4[] memory facetFunctionSelectors_) {
        facetFunctionSelectors_ = _facetFunctionSelectors[_facet].functionSelectors;
    }

    /// @notice Get all the facet addresses used by a diamond.
    /// @return facetAddresses_
    function facetAddresses() external view returns (address[] memory facetAddresses_) {
        facetAddresses_ = _facetAddresses;
    }

    /// @notice Gets the facet that supports the given selector.
    /// @dev If facet is not found return address(0).
    /// @param _functionSelector The function selector.
    /// @return facetAddress_ The facet address.
    function facetAddress(bytes4 _functionSelector) external view returns (address facetAddress_) {
        facetAddress_ = _selectorToFacetAndPosition[_functionSelector].facetAddress;
    }

    // This implements ERC-165.
    function supportsInterface(bytes4 _interfaceId) external view returns (bool) {
        return supportedInterfaces[_interfaceId];
    }

    event DiamondCut(FacetCut[] _diamondCut);

    function diamondCut(
        FacetCut[] memory _diamondCut
    ) public onlyOwner {
        for (uint256 facetIndex; facetIndex < _diamondCut.length; facetIndex++) {
            FacetCutAction action = _diamondCut[facetIndex].action;
            if (action == FacetCutAction.Add) {
                addFunctions(_diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors);
            } else if (action == FacetCutAction.Replace) {
                replaceFunctions(_diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors);
            } else if (action == FacetCutAction.Remove) {
                removeFunctions(_diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors);
            } else {
                revert("LibDiamondCut: Incorrect FacetCutAction");
            }
        }
        emit DiamondCut(_diamondCut);
    }

    function addFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {
        require(_functionSelectors.length > 0, "LibDiamondCut: No selectors in facet to cut");
        // uint16 selectorCount = uint16(diamondStorage().selectors.length);
        require(_facetAddress != address(0), "LibDiamondCut: Add facet can't be address(0)");
        uint16 selectorPosition = uint16(_facetFunctionSelectors[_facetAddress].functionSelectors.length);
        // add new facet address if it does not exist
        if (selectorPosition == 0) {
            enforceHasContractCode(_facetAddress, "LibDiamondCut: New facet has no code");
            _facetFunctionSelectors[_facetAddress].facetAddressPosition = uint16(_facetAddresses.length);
            _facetAddresses.push(_facetAddress);
        }
        for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) {
            bytes4 selector = _functionSelectors[selectorIndex];
            address oldFacetAddress = _selectorToFacetAndPosition[selector].facetAddress;
            require(oldFacetAddress == address(0), "LibDiamondCut: Can't add function that already exists");
            _facetFunctionSelectors[_facetAddress].functionSelectors.push(selector);
            _selectorToFacetAndPosition[selector].facetAddress = _facetAddress;
            _selectorToFacetAndPosition[selector].functionSelectorPosition = selectorPosition;
            selectorPosition++;
        }
    }

    function replaceFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {
        require(_functionSelectors.length > 0, "LibDiamondCut: No selectors in facet to cut");
        require(_facetAddress != address(0), "LibDiamondCut: Add facet can't be address(0)");
        uint16 selectorPosition = uint16(_facetFunctionSelectors[_facetAddress].functionSelectors.length);
        // add new facet address if it does not exist
        if (selectorPosition == 0) {
            enforceHasContractCode(_facetAddress, "LibDiamondCut: New facet has no code");
            _facetFunctionSelectors[_facetAddress].facetAddressPosition = uint16(_facetAddresses.length);
            _facetAddresses.push(_facetAddress);
        }
        for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) {
            bytes4 selector = _functionSelectors[selectorIndex];
            address oldFacetAddress = _selectorToFacetAndPosition[selector].facetAddress;
            require(oldFacetAddress != _facetAddress, "LibDiamondCut: Can't replace function with same function");
            removeFunction(oldFacetAddress, selector);
            // add function
            _selectorToFacetAndPosition[selector].functionSelectorPosition = selectorPosition;
            _facetFunctionSelectors[_facetAddress].functionSelectors.push(selector);
            _selectorToFacetAndPosition[selector].facetAddress = _facetAddress;
            selectorPosition++;
        }
    }

    function removeFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {
        require(_functionSelectors.length > 0, "LibDiamondCut: No selectors in facet to cut");
        // if function does not exist then do nothing and return
        require(_facetAddress == address(0), "LibDiamondCut: Remove facet address must be address(0)");
        for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) {
            bytes4 selector = _functionSelectors[selectorIndex];
            address oldFacetAddress = _selectorToFacetAndPosition[selector].facetAddress;
            removeFunction(oldFacetAddress, selector);
        }
    }

    function removeFunction(address _facetAddress, bytes4 _selector) internal {
        require(_facetAddress != address(0), "LibDiamondCut: Can't remove function that doesn't exist");
        // an immutable function is a function defined directly in a diamond
        require(_facetAddress != address(this), "LibDiamondCut: Can't remove immutable function");
        // replace selector with last selector, then delete last selector
        uint256 selectorPosition = _selectorToFacetAndPosition[_selector].functionSelectorPosition;
        uint256 lastSelectorPosition = _facetFunctionSelectors[_facetAddress].functionSelectors.length - 1;
        // if not the same then replace _selector with lastSelector
        if (selectorPosition != lastSelectorPosition) {
            bytes4 lastSelector = _facetFunctionSelectors[_facetAddress].functionSelectors[lastSelectorPosition];
            _facetFunctionSelectors[_facetAddress].functionSelectors[selectorPosition] = lastSelector;
            _selectorToFacetAndPosition[lastSelector].functionSelectorPosition = uint16(selectorPosition);
        }
        // delete the last selector
        _facetFunctionSelectors[_facetAddress].functionSelectors.pop();
        delete _selectorToFacetAndPosition[_selector];

        // if no more selectors for facet address then delete the facet address
        if (lastSelectorPosition == 0) {
            // replace facet address with last facet address and delete last facet address
            uint256 lastFacetAddressPosition = _facetAddresses.length - 1;
            uint256 facetAddressPosition = _facetFunctionSelectors[_facetAddress].facetAddressPosition;
            if (facetAddressPosition != lastFacetAddressPosition) {
                address lastFacetAddress = _facetAddresses[lastFacetAddressPosition];
                _facetAddresses[facetAddressPosition] = lastFacetAddress;
                _facetFunctionSelectors[lastFacetAddress].facetAddressPosition = uint16(facetAddressPosition);
            }
            _facetAddresses.pop();
            delete _facetFunctionSelectors[_facetAddress].facetAddressPosition;
        }
    }

    function enforceHasContractCode(address _contract, string memory _errorMessage) internal view {
        uint256 contractSize;
        assembly {
            contractSize := extcodesize(_contract)
        }
        require(contractSize > 0, _errorMessage);
    }

    // mapping(bytes4 => address) public selectorToFacet;
    // bytes4[] public selectorsList;
    // mapping(address => bool) public isFacet;
    // address[] public facetsList;

    // function addFacet(address _newFacet) public onlyOwner {
    //     isFacet[_newFacet] = true;
    //     facetsList.push(_newFacet);
    //     emit AddedFacet(_newFacet);
    // }

    // function batchAddSelectors(address _facet, bytes4[] memory _sigs) public onlyOwner {
    //     for(uint256 index; index < _sigs.length; index++) {
    //         addSelector(_facet, _sigs[index]);
    //     }
    // }

    // function addSelector(address _facet, bytes4 _sig) public onlyOwner {
    //     require(selectorToFacet[_sig] == address(0));
    //     // require(isFacet[_facet]);
    //     selectorToFacet[_sig] = _facet;
    //     selectorsList.push(_sig);
    //     emit AddedSelector(_facet, _sig);
    // }

    // Removing of the selectors occurs during resetFacetStorage();
    // it is easier to reset and rebuild using the script when deploying and updating the facets
    // function removeSelector(bytes4 _sig) public onlyOwner {
    //     selectorToFacet[_sig] = address(0);
    //     emit RemovedSelector(_sig);
    // }    

    // function getFacetAddressFromSelector(bytes4 _sig) public view returns (address) {
    //     return selectorToFacet[_sig];
    // }

    // function getFacetByIndex(uint256 _index) public view returns(address) {
    //     return facetsList[_index];
    // }

    // function resetFacetStorage() public onlyOwner {
    //     for(uint i = 0; i < selectorsList.length; i++) {
    //         bytes4 sig = selectorsList[i];
    //         selectorToFacet[sig] = address(0);
    //     }
    //     delete selectorsList;

    //     for(uint i = 0; i < facetsList.length; i++) {
    //         address facet = facetsList[i];
    //         isFacet[facet] = false;
    //     }
    //     delete facetsList;

    //     emit ResetStorage();
    // }

        // Facet getters and setters

    function getSettingsFacet() public view returns (address) {
        return facetsInfo.Settings;
    }

    function updateSettingsFacet(address _newSettingsAddress) public onlyOwner {
        facetsInfo.Settings = _newSettingsAddress;
        emit UpdatedSettingsFacet(_newSettingsAddress);
    }

    function getLosslessFacet() public view returns (address) {
        return facetsInfo.Lossless;
    }

    function updateLosslessFacet(address _newLosslessAddress) public onlyOwner {
        facetsInfo.Lossless = _newLosslessAddress;
        emit UpdatedLosslessFacet(_newLosslessAddress);
    }

    function getTaxFacet() public view returns (address) {
        return facetsInfo.Tax;
    }

    function updateTaxFacet(address _newTaxAddress) public onlyOwner {
        facetsInfo.Tax = _newTaxAddress;
        emit UpdatedTaxFacet(_newTaxAddress);
    }

    function getConstructorFacet() public view returns (address) {
        return facetsInfo.Constructor;
    }

    function updateConstructorFacet(address _newConstructorAddress) public onlyOwner {
        facetsInfo.Constructor = _newConstructorAddress;
        emit UpdatedConstructorFacet(_newConstructorAddress);
    }

    function getWalletsFacet() public view returns (address) {
        return facetsInfo.Wallets;
    }

    function updateWalletsFacet(address _newWalletsAddress) public onlyOwner {
        facetsInfo.Wallets = _newWalletsAddress;
        emit UpdatedWalletsFacet(_newWalletsAddress);
    }

    function getAntiBotFacet() public view returns (address) {
        return facetsInfo.AntiBot;
    }

    function updateAntiBotFacet(address _newAntiBotAddress) public onlyOwner {
        facetsInfo.AntiBot = _newAntiBotAddress;
        emit UpdatedAntiBotFacet(_newAntiBotAddress);
    }

    function getMulticallFacet() public view returns (address) {
        return facetsInfo.Multicall;
    }

    function updateMulticallFacet(address _newWalletsAddress) public onlyOwner {
        facetsInfo.Multicall = _newWalletsAddress;
        emit UpdatedMulticallFacet(_newWalletsAddress);
    }
}


// File contracts/interfaces/ILosslessController.sol

// 



interface ILosslessController {
    
    function pause() external;
    function unpause() external;
    function setAdmin(address _newAdmin) external;
    function setRecoveryAdmin(address _newRecoveryAdmin) external;

    function beforeTransfer(address _sender, address _recipient, uint256 _amount) external;
    function beforeTransferFrom(address _msgSender, address _sender, address _recipient, uint256 _amount) external;
    function beforeApprove(address _sender, address _spender, uint256 _amount) external;
    function beforeIncreaseAllowance(address _msgSender, address _spender, uint256 _addedValue) external;
    function beforeDecreaseAllowance(address _msgSender, address _spender, uint256 _subtractedValue) external;
    function beforeMint(address _to, uint256 _amount) external;
    function beforeBurn(address _account, uint256 _amount) external;
    function afterTransfer(address _sender, address _recipient, uint256 _amount) external;


    event AdminChange(address indexed _newAdmin);
    event RecoveryAdminChange(address indexed _newAdmin);
}


// File contracts/facets/Storage.sol

// 
// ALL RIGHTS RESERVED

// Unicrypt by SDDTech reserves all rights on this code. You may NOT copy these contracts.


struct Storage {

    uint256 CONTRACT_VERSION;


    TaxSettings taxSettings;
    TaxSettings isLocked;
    Fees fees;
    CustomTax[] customTaxes;

    address transactionTaxWallet;
    uint256 customTaxLength;
    uint256 MaxTax;
    uint8 MaxCustom;

    uint256 DENOMINATOR;

    mapping (address => uint256) _rOwned;
    mapping (address => uint256) _tOwned;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) _isExcluded;
    address[] _excluded;
   
    uint256 MAX;
    uint256 _tTotal;
    uint256 _rTotal;
    uint256 _tFeeTotal;

    mapping (address => bool) lpTokens;
    
    string _name;
    string _symbol;
    uint8 _decimals;
    address _creator;

    address factory;

    address buyBackWallet;
    address lpWallet;

    bool isPaused;

    bool isTaxed;
    
    mapping(address => bool) blacklist;
    mapping(address => bool) swapWhitelist;
    mapping(address => bool) maxBalanceWhitelist;
    mapping(address => bool) taxWhitelist;

    address pairAddress;

    uint256 taxHelperIndex;

    // AntiBot Variables

    bool marketInit;
    uint256 marketInitBlockTime;

    AntiBotSettings antiBotSettings;

    mapping (address => uint256) antiBotBalanceTracker;

    uint256 maxBalanceAfterBuy;
    
    SwapWhitelistingSettings swapWhitelistingSettings;

    // Lossless data and events

    address recoveryAdmin;
    address recoveryAdminCandidate;
    bytes32 recoveryAdminKeyHash;
    address admin;
    uint256 timelockPeriod;
    uint256 losslessTurnOffTimestamp;
    bool isLosslessTurnOffProposed;
    bool isLosslessOn;
}

struct TaxSettings {
    bool transactionTax;
    bool buyBackTax;
    bool holderTax;
    bool lpTax;
    bool canBlacklist;
    bool canMint;
    bool canPause;
    bool maxBalanceAfterBuy;
}

struct Fee {
    uint256 buy;
    uint256 sell;
}

struct Fees {
    Fee transactionTax;
    uint256 buyBackTax;
    uint256 holderTax;
    uint256 lpTax;
}

struct CustomTax {
    string name;
    Fee fee;
    address wallet;
    bool withdrawAsGas;
}

struct AntiBotSettings {
    uint256 startBlock;
    uint256 endDate;
    uint256 increment;
    uint256 initialMaxHold;
    bool isActive;
}

struct SwapWhitelistingSettings {
    uint256 endDate;
    bool isActive;
}


// File contracts/facets/AntiBot.sol

// 
// ALL RIGHTS RESERVED

// Unicrypt by SDDTech reserves all rights on this code. You may NOT copy these contracts.


contract AntiBotFacet is Ownable {
    Storage internal s;

    event UpdatedAntiBotIncrement(uint256 _updatedIncrement);
    event UpdatedAntiBotEndDate(uint256 _updatedEndDate);
    event UpdatedAntiBotInitialMaxHold(uint256 _updatedInitialMaxHold);
    event UpdatedAntiBotActiveStatus(bool _isActive);
    event UpdatedSwapWhitelistingEndDate(uint256 _updatedEndDate);
    event UpdatedSwapWhitelistingActiveStatus(bool _isActive);
    event UpdatedMaxBalanceAfterBuy(uint256 _newMaxBalance);

    event AddedMaxBalanceWhitelistAddress(address _address);   
    event RemovedMaxBalanceWhitelistAddress(address _address);        
    event AddedSwapWhitelistAddress(address _address);
    event RemovedSwapWhitelistAddress(address _address);
    
    // AntiBot

    function antiBotIsActiveModifier() view internal {
        require(s.antiBotSettings.isActive, "ABD");
    }

    modifier antiBotIsActive() {
        antiBotIsActiveModifier();
        _;
    }

    function setIncrement(uint256 _updatedIncrement) public onlyOwner antiBotIsActive {
        s.antiBotSettings.increment = _updatedIncrement;
        emit UpdatedAntiBotIncrement(_updatedIncrement);
    }

    function setEndDate( uint256 _updatedEndDate) public onlyOwner antiBotIsActive {
        require(_updatedEndDate <= 48, "ED");
        s.antiBotSettings.endDate = _updatedEndDate;
        emit UpdatedAntiBotEndDate(_updatedEndDate);
    }

    function setInitialMaxHold( uint256 _updatedInitialMaxHold) public onlyOwner antiBotIsActive {
        s.antiBotSettings.initialMaxHold = _updatedInitialMaxHold;
        emit UpdatedAntiBotInitialMaxHold(_updatedInitialMaxHold);
    }

    function updateAntiBot(bool _isActive) public onlyOwner {
        require(!s.marketInit, "AMIE");
        s.antiBotSettings.isActive = _isActive;
        emit UpdatedAntiBotActiveStatus(_isActive);
    }

    function antiBotCheck(uint256 amount, address receiver) public returns(bool) {
        // restrict it to being only called by registered tokens
        require(IMintFactory(s.factory).tokenIsRegistered(address(this)));
        require(s.marketInit, "AMIE");
        if(block.timestamp > s.marketInitBlockTime + (s.antiBotSettings.endDate * 1 hours)) {
            s.antiBotSettings.isActive = false;
            return true;
        }

        s.antiBotBalanceTracker[receiver] += amount;
        uint256 userAntiBotBalance = s.antiBotBalanceTracker[receiver];
        uint256 maxAntiBotBalance = ((block.number - s.antiBotSettings.startBlock) * s.antiBotSettings.increment) + s.antiBotSettings.initialMaxHold;

        require((userAntiBotBalance <= maxAntiBotBalance), "ABMSA");
        return true;
    }

    // MaxBalanceAfterBuy
   
    function addMaxBalanceWhitelistedAddress(address _address) public onlyOwner {
        require(s.taxSettings.maxBalanceAfterBuy, "AMBABD");
        s.maxBalanceWhitelist[_address] = true;
        emit AddedMaxBalanceWhitelistAddress(_address);
    }

    function removeMaxBalanceWhitelistedAddress(address _address) public onlyOwner {
        require(s.taxSettings.maxBalanceAfterBuy, "AMBABD");
        s.maxBalanceWhitelist[_address] = false;
        emit RemovedMaxBalanceWhitelistAddress(_address);
    }

    function updateMaxBalanceWhitelistBatch(address[] calldata _updatedAddresses, bool _isMaxBalanceWhitelisted) public onlyOwner {
        require(s.taxSettings.maxBalanceAfterBuy, "AMBABD");
        for(uint i = 0; i < _updatedAddresses.length; i++) {
            s.maxBalanceWhitelist[_updatedAddresses[i]] = _isMaxBalanceWhitelisted;
            if(_isMaxBalanceWhitelisted) {
                emit AddedMaxBalanceWhitelistAddress(_updatedAddresses[i]);
            } else {
                emit RemovedMaxBalanceWhitelistAddress(_updatedAddresses[i]);
            }
        }
    }

    function isMaxBalanceWhitelisted(address _address) public view returns (bool) {
        return s.maxBalanceWhitelist[_address];
    }

    function updateMaxBalanceAfterBuy(uint256 _updatedMaxBalanceAfterBuy) public onlyOwner {
        require(s.taxSettings.maxBalanceAfterBuy, "AMBABD");
        s.maxBalanceAfterBuy = _updatedMaxBalanceAfterBuy;
        emit UpdatedMaxBalanceAfterBuy(_updatedMaxBalanceAfterBuy);
    }

    function maxBalanceAfterBuyCheck(uint256 amount, address receiver) public view returns(bool) {
        if(s.maxBalanceWhitelist[receiver]) {
            return true;
        }
        require(s.taxSettings.maxBalanceAfterBuy);
        uint256 receiverBalance;
        if(s.taxSettings.holderTax) {
            receiverBalance = s._rOwned[receiver];
        } else {
            receiverBalance = s._tOwned[receiver];
        }
        receiverBalance += amount;
        require(receiverBalance <= s.maxBalanceAfterBuy, "MBAB");
        return true;
    }

    // SwapWhitelist

    function addSwapWhitelistedAddress(address _address) public onlyOwner {
        require(s.swapWhitelistingSettings.isActive, "ASWD");
        s.swapWhitelist[_address] = true;
        emit AddedSwapWhitelistAddress(_address);
    }

    function removeSwapWhitelistedAddress(address _address) public onlyOwner {
        require(s.swapWhitelistingSettings.isActive, "ASWD");
        s.swapWhitelist[_address] = false;
        emit RemovedSwapWhitelistAddress(_address);
    }

    function updateSwapWhitelistBatch(address[] calldata _updatedAddresses, bool _isSwapWhitelisted) public onlyOwner {
        require(s.swapWhitelistingSettings.isActive, "ASWD");
        for(uint i = 0; i < _updatedAddresses.length; i++) {
            s.swapWhitelist[_updatedAddresses[i]] = _isSwapWhitelisted;
            if(_isSwapWhitelisted) {
                emit AddedSwapWhitelistAddress(_updatedAddresses[i]);
            } else {
                emit RemovedSwapWhitelistAddress(_updatedAddresses[i]);
            }
        }
    }

    function isSwapWhitelisted(address _address) public view returns (bool) {
        return s.swapWhitelist[_address];
    }

    function setSwapWhitelistEndDate( uint256 _updatedEndDate) public onlyOwner {
        require(s.swapWhitelistingSettings.isActive, "ASWD");
        require(_updatedEndDate <= 48, "ED");
        s.swapWhitelistingSettings.endDate = _updatedEndDate;
        emit UpdatedSwapWhitelistingEndDate(_updatedEndDate);
    }

    function updateSwapWhitelisting(bool _isActive) public onlyOwner {
        require(!s.marketInit, "AMIE");
        s.swapWhitelistingSettings.isActive = _isActive;
        emit UpdatedSwapWhitelistingActiveStatus(_isActive);
    }

    function swapWhitelistingCheck(address receiver) public returns(bool) {
        require(s.marketInit, "AMIE");
        if(block.timestamp > s.marketInitBlockTime + (s.swapWhitelistingSettings.endDate * 1 hours)) {
            s.swapWhitelistingSettings.isActive = false;
            return true;
        }
        require(s.swapWhitelist[receiver], "SWL");
        return true;
    }
}


// File contracts/interfaces/IBuyBackWallet.sol

// 
// ALL RIGHTS RESERVED

// Unicrypt by SDDTech reserves all rights on this code. You may NOT copy these contracts.



interface IBuyBackWallet {

    function checkBuyBackTrigger() external view returns (bool);

    function getBalance() external view returns (uint256);

    function sendEthToTaxHelper() external returns(uint256);

    function updateThreshold(uint256 _newThreshold) external;

    function getThreshold() external view returns (uint256);
}


// File contracts/interfaces/IFacetHelper.sol

// 
// ALL RIGHTS RESERVED

// Unicrypt by SDDTech reserves all rights on this code. You may NOT copy these contracts.



interface IFacetHelper {

    struct Facet {
        address facetAddress;
        bytes4[] functionSelectors;
    }

    /// @notice Gets all facet addresses and their four byte function selectors.
    /// @return facets_ Facet
    function facets() external view returns (Facet[] memory facets_);

    /// @notice Gets all the function selectors supported by a specific facet.
    /// @param _facet The facet address.
    /// @return facetFunctionSelectors_
    function facetFunctionSelectors(address _facet) external view returns (bytes4[] memory facetFunctionSelectors_);

    /// @notice Get all the facet addresses used by a diamond.
    /// @return facetAddresses_
    function facetAddresses() external view returns (address[] memory facetAddresses_);

    /// @notice Gets the facet that supports the given selector.
    /// @dev If facet is not found return address(0).
    /// @param _functionSelector The function selector.
    /// @return facetAddress_ The facet address.
    function facetAddress(bytes4 _functionSelector) external view returns (address facetAddress_);

    // function addFacet(address _newFacet) external;

    // function addSelector(address _facet, bytes4 _sig) external;

    // function removeSelector(bytes4 _sig) external;

    function getFacetAddressFromSelector(bytes4 _sig) external view returns (address);

    function getSettingsFacet() external view returns (address);

    function updateSettingsFacet(address _newSettingsAddress) external;

    function getTaxFacet() external view returns (address);

    function updateTaxFacet(address _newTaxesAddress) external;

    function getLosslessFacet() external view returns (address);

    function updateLosslessFacet(address _newLosslessAddress) external;

    function getConstructorFacet() external view returns (address);

    function updateConstructorFacet(address _newConstructorAddress) external;

    function getWalletsFacet() external view returns (address);

    function updateWalletsFacet(address _newWalletsAddress) external;

    function getAntiBotFacet() external view returns (address);

    function updateAntiBotFacet(address _newWalletsAddress) external;

    function getMulticallFacet() external view returns (address);

    function updateMulticallFacet(address _newWalletsAddress) external;
    
}


// File contracts/interfaces/ILPWallet.sol

// 
// ALL RIGHTS RESERVED

// Unicrypt by SDDTech reserves all rights on this code. You may NOT copy these contracts.



interface ILPWallet {

    function checkLPTrigger() external view returns (bool);

    function getBalance() external view returns (uint256);

    function sendEthToTaxHelper() external returns(uint256);

    function transferBalanceToTaxHelper() external;

    function updateThreshold(uint256 _newThreshold) external;

    function getThreshold() external view returns (uint256);
}


// File contracts/interfaces/ISettings.sol

// 
// ALL RIGHTS RESERVED

// Unicrypt by SDDTech reserves all rights on this code. You may NOT copy these contracts.



interface ISettingsFacet {

    function getFacetAddressFromSelector(bytes4 _sig) external view returns (address);
    function createBuyBackWallet(address _factory, address _token) external returns (address);
    function createLPWallet(address _factory, address _token) external returns (address);
}


// File contracts/interfaces/IWallets.sol

// 
// ALL RIGHTS RESERVED

// Unicrypt by SDDTech reserves all rights on this code. You may NOT copy these contracts.



interface IWalletsFacet {

    function createBuyBackWallet(address _factory, address _token, uint256 _newThreshold) external returns (address);
    function createLPWallet(address _factory, address _token, uint256 _newThreshold) external returns (address);

    function updateBuyBackWalletThreshold(uint256 _newThreshold) external;

    function updateLPWalletThreshold(uint256 _newThreshold) external;
}


// File contracts/facets/Constructor.sol

// 
// ALL RIGHTS RESERVED

// Unicrypt by SDDTech reserves all rights on this code. You may NOT copy these contracts.


contract ConstructorFacet is Ownable {
    Storage internal s;

    event ExcludedAccount(address account);
    event AdminChanged(address indexed previousAdmin, address indexed newAdmin);
    event RecoveryAdminChanged(address indexed previousAdmin, address indexed newAdmin);
    event UpdatedCustomTaxes(CustomTax[] _customTaxes);
    event UpdatedTaxFees(Fees _updatedFees);
    event UpdatedTransactionTaxAddress(address _newAddress);
    event UpdatedLockedSettings(TaxSettings _updatedLocks);
    event UpdatedSettings(TaxSettings _updatedSettings);
    event UpdatedTaxHelperIndex(uint _newIndex);
    event UpdatedAntiBotSettings(AntiBotSettings _antiBotSettings);
    event UpdatedSwapWhitelistingSettings(SwapWhitelistingSettings _swapWhitelistingSettings);
    event UpdatedMaxBalanceAfterBuy(uint256 _newMaxBalance);
    event AddedLPToken(address _newLPToken);
    event TokenCreated(string name, string symbol, uint8 decimals, uint256 totalSupply, uint256 reflectionTotalSupply);
    event Transfer(address indexed from, address indexed to, uint256 value);
    
    struct ConstructorParams {
        string name_; 
        string symbol_; 
        uint8 decimals_; 
        address creator_; 
        uint256 tTotal_;
        uint256 _maxTax;
        TaxSettings _settings;
        TaxSettings _lockedSettings;
        Fees _fees;
        address _transactionTaxWallet;
        CustomTax[] _customTaxes;
        uint256 lpWalletThreshold;
        uint256 buyBackWalletThreshold;
        uint256 _taxHelperIndex;
        address admin_; 
        address recoveryAdmin_; 
        bool isLossless_;
        AntiBotSettings _antiBotSettings;
        uint256 _maxBalanceAfterBuy;
        SwapWhitelistingSettings _swapWhitelistingSettings;
    }

    function constructorHandler(ConstructorParams calldata params, address _factory) external {
        require(IMintFactory(_factory).tokenGeneratorIsAllowed(msg.sender), "RA");
        require(params.creator_ != address(0), "ZA");
        require(params._transactionTaxWallet != address(0), "ZA");
        require(params.admin_ != address(0), "ZA");
        require(params.recoveryAdmin_ != address(0), "ZA");
        require(_factory != address(0), "ZA");

        // Set inital values
        s.CONTRACT_VERSION = 1;
        s.customTaxLength = 0;
        s.MaxTax = 3000;
        s.MaxCustom = 10;
        s.MAX = ~uint256(0);
        s.isPaused = false;
        s.isTaxed = false;
        s.marketInit = false;

        s._name = params.name_;
        s._symbol = params.symbol_;
        s._decimals = params.decimals_;
        s._creator = params.creator_;
        s._isExcluded[params.creator_] = true;
        s._excluded.push(params.creator_);
        emit ExcludedAccount(s._creator);
        // Lossless
        s.isLosslessOn = params.isLossless_;
        s.admin = params.admin_;
        emit AdminChanged(address(0), s.admin);
        s.recoveryAdmin = params.recoveryAdmin_;
        emit RecoveryAdminChanged(address(0), s.recoveryAdmin);
        s.timelockPeriod = 7 days;
        address lossless = IMintFactory(_factory).getLosslessController();
        s._isExcluded[lossless] = true;
        s._excluded.push(lossless);
        emit ExcludedAccount(lossless);
        // Tax Settings
        require(params._maxTax <= s.MaxTax, "MT");
        s.MaxTax = params._maxTax;
        s.taxSettings = params._settings;
        emit UpdatedSettings(s.taxSettings);
        s.isLocked = params._lockedSettings;
        s.isLocked.holderTax = true;
        if(s.taxSettings.holderTax) {
            s.taxSettings.canMint = false;
            s.isLocked.canMint = true;
        }
        emit UpdatedLockedSettings(s.isLocked);
        s.fees = params._fees;
        emit UpdatedTaxFees(s.fees);
        require(params._customTaxes.length < s.MaxCustom + 1, "MCT");
        for(uint i = 0; i < params._customTaxes.length; i++) {
            require(params._customTaxes[i].wallet != address(0));
            s.customTaxes.push(params._customTaxes[i]);
        }
        emit UpdatedCustomTaxes(s.customTaxes);
        s.customTaxLength = params._customTaxes.length;
        s.transactionTaxWallet = params._transactionTaxWallet;
        emit UpdatedTransactionTaxAddress(s.transactionTaxWallet);
        // Factory, Wallets, Pair Address
        s.factory = _factory;
        s.taxHelperIndex = params._taxHelperIndex;
        emit UpdatedTaxHelperIndex(s.taxHelperIndex);
        address taxHelper = IMintFactory(s.factory).getTaxHelperAddress(s.taxHelperIndex);
        s.pairAddress = ITaxHelper(taxHelper).createLPToken();
        addLPToken(s.pairAddress);
        address wallets = IFacetHelper(IMintFactory(s.factory).getFacetHelper()).getWalletsFacet(); 
        s.buyBackWallet = IWalletsFacet(wallets).createBuyBackWallet(s.factory, address(this), params.buyBackWalletThreshold);
        s.lpWallet = IWalletsFacet(wallets).createLPWallet(s.factory, address(this), params.lpWalletThreshold);
        // Total Supply and other info
        s._rTotal = (s.MAX - (s.MAX % params.tTotal_));
        s._rOwned[params.creator_] = s._rTotal;
        s.DENOMINATOR = 10000;
        s._isExcluded[taxHelper] = true;
        s._excluded.push(taxHelper);
        emit ExcludedAccount(taxHelper);
        require(checkMaxTax(true), "BF");
        require(checkMaxTax(false), "SF");
        transferOwnership(params.creator_);
        _mintInitial(params.creator_, params.tTotal_);
        // AntiBot Settings
        require(params._antiBotSettings.endDate <= 48, "ED");
        require(params._swapWhitelistingSettings.endDate <= 48, "ED");
        s.antiBotSettings = params._antiBotSettings;
        emit UpdatedAntiBotSettings(s.antiBotSettings);
        s.maxBalanceAfterBuy = params._maxBalanceAfterBuy;
        emit UpdatedMaxBalanceAfterBuy(s.maxBalanceAfterBuy);
        s.swapWhitelistingSettings = params._swapWhitelistingSettings;
        emit UpdatedSwapWhitelistingSettings(s.swapWhitelistingSettings);
        emit TokenCreated(s._name, s._symbol, s._decimals, s._tTotal, s._rTotal);
    }

    function _mintInitial(address account, uint256 amount) internal virtual {
        s._tTotal += amount;
        s._tOwned[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    function checkMaxTax(bool isBuy) internal view returns (bool) {
        uint256 totalTaxes;
        if(isBuy) {
            totalTaxes += s.fees.transactionTax.buy;
            totalTaxes += s.fees.holderTax;
            for(uint i = 0; i < s.customTaxes.length; i++) {
                totalTaxes += s.customTaxes[i].fee.buy;
            }
        } else {
            totalTaxes += s.fees.transactionTax.sell;
            totalTaxes += s.fees.lpTax;
            totalTaxes += s.fees.holderTax;
            totalTaxes += s.fees.buyBackTax;
            for(uint i = 0; i < s.customTaxes.length; i++) {
                totalTaxes += s.customTaxes[i].fee.sell;
            }
        }
        if(totalTaxes <= s.MaxTax) {
            return true;
        }
        return false;
    }


    function addLPToken(address _newLPToken) internal {
        s.lpTokens[_newLPToken] = true;
        emit AddedLPToken(_newLPToken);
    }
}


// File contracts/facets/Lossless.sol

// 
// ALL RIGHTS RESERVED

// Unicrypt by SDDTech reserves all rights on this code. You may NOT copy these contracts.


contract LosslessFacet is Ownable {
    Storage internal s;

    event AdminChanged(address indexed previousAdmin, address indexed newAdmin);
    event RecoveryAdminChangeProposed(address indexed candidate);
    event RecoveryAdminChanged(address indexed previousAdmin, address indexed newAdmin);
    event LosslessTurnOffProposed(uint256 turnOffDate);
    event LosslessTurnedOff();
    event LosslessTurnedOn();

    function onlyRecoveryAdminCheck() internal view {
        require(_msgSender() == s.recoveryAdmin, "LRA");
    }

    modifier onlyRecoveryAdmin() {
        onlyRecoveryAdminCheck();
        _;
    }

    // --- LOSSLESS management -...

// [truncated — 164709 bytes total]

Read Contract

CONTRACT_VERSION 0x38b90333 → uint256
MaxCustom 0xf10437fc → uint8
MaxTax 0xeb8e8863 → uint256
_allowances 0x024c2ddd → uint256
_getCurrentSupply 0x97a9d560 → uint256, uint256
_getRate 0x94e10784 → uint256
_isExcluded 0x0b285b1f → bool
_tFeeTotal 0xfb1eb14b → uint256
admin 0xf851a440 → address
allowance 0xdd62ed3e → uint256
antiBotSettings 0xfd819163 → tuple
balanceOf 0x70a08231 → uint256
buyBackWallet 0x1cd348c0 → address
customTaxLength 0x2a4a09dd → uint256
customTaxes 0xb22941dd → tuple
decimals 0x313ce567 → uint8
factory 0xc45a0155 → address
fees 0x9af1d35a → tuple
isBlacklisted 0xfe575a87 → bool
isLocked 0xa4e2d634 → tuple
isLosslessOn 0xccfa214f → bool
isLosslessTurnOffProposed 0xefab831c → bool
lossless 0x34f6ebf5 → address
losslessTurnOffTimestamp 0x61086b00 → uint256
lpTokens 0xb17b658d → bool
lpWallet 0x6303516c → address
marketInit 0x1ec9801d → bool
marketInitBlockTime 0x30d08211 → uint256
maxBalanceAfterBuy 0xf238cc6f → uint256
name 0x06fdde03 → string
owner 0x8da5cb5b → address
pairAddress 0xa8b08982 → address
paused 0x5c975abb → bool
recoveryAdmin 0x5f6529a3 → address
swapWhitelistingSettings 0x7ebae80e → tuple
symbol 0x95d89b41 → string
taxHelperIndex 0xfa86f8ce → uint256
taxSettings 0x31392fcb → tuple
timelockPeriod 0x2ecaf675 → uint256
tokenFromReflection 0x2d838119 → uint256
totalSupply 0x18160ddd → uint256
transactionTaxWallet 0x2150ec29 → address

Write Contract 11 functions

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

approve 0x095ea7b3
address spender
uint256 amount
returns: bool
burn 0x42966c68
uint256 amount
buyBackBurn 0x4fea2c7a
uint256 _amount
decreaseAllowance 0xa457c2d7
address spender
uint256 subtractedValue
returns: bool
increaseAllowance 0x39509351
address spender
uint256 addedValue
returns: bool
mint 0xa0712d68
uint256 amount
renounceOwnership 0x715018a6
No parameters
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
transferOutBlacklistedFunds 0x936af911
address[] from
transferOwnership 0xf2fde38b
address newOwner

Recent Transactions

No transactions found for this address