S Price: $0.679273 (-2.43%)

Token

SuperRain (SUPERRAIN)

Overview

Max Total Supply

100,000,000 SUPERRAIN

Holders

6

Market

Price

$0.00 @ 0.000000 S

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 SUPERRAIN

Value
$0.00
0x0000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
SuperRain

Compiler Version
v0.8.28+commit.7893614a

Optimization Enabled:
Yes with 1000 runs

Other Settings:
paris EvmVersion
File 1 of 1 : SuperRain.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

// Interface definitions
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
}

interface IUniswapRouter {
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

/**
 * @title RainToken
 * @dev A simplified ERC20 token with reflection rewards
 */
contract SuperRain {
    // Token setup
    string private _name = "SuperRain";
    string private _symbol = "SUPERRAIN";
    uint8 private constant _decimals = 18;
    uint256 private _totalSupply;
    
    // Reward token and router addresses
    address public REWARD_TOKEN;
    address constant private ROUTER = 0x95a7e403d7cF20F675fF9273D66e94d35ba49fA3; // ROUTER
    address public LP_PAIR;
    
    // Ownership
    address private _owner;
    
    // Balances and allowances
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    
    // Fee configuration
    uint256 public taxPercentage = 5; // 5% default tax
    uint256 public swapThreshold;
    
    // Reward distribution
    uint256 public distributionInterval = 300; // 5 minutes (in seconds)
    uint256 public batchSize = 50;
    uint256 public lastProcessedTime;
    uint256 public currentIndex;
    
    // Holder management
    address[] private holders;
    mapping(address => uint256) public holderIndexes;
    
    struct HolderInfo {
        uint256 amount;
        uint256 pendingRewards;
        uint256 totalExcluded;
    }
    
    mapping(address => HolderInfo) public holderInfo;
    
    // Rewards accounting
    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public dividendsPerShare;
    
    // Special addresses
    mapping(address => bool) public excluded;
    mapping(address => bool) public exempt;
    
    // Control flags
    bool private inSwap;
    bool public tradingEnabled;
    
    // Events
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event SwapAndDistribute(uint256 tokenAmount, uint256 rewardAmount);
    event Excluded(address indexed account, bool status);
    event TaxUpdated(uint256 newTaxPercentage);
    event IntervalUpdated(uint256 newDistributionInterval);
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event RewardsProcessed(uint256 holderCount);
    
    // Modifiers
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    
    modifier onlyOwner() {
        require(msg.sender == _owner, "Caller is not the owner");
        _;
    }
    
    // Constructor
    constructor() {
        _owner = msg.sender;
        
        // Initial supply
        _totalSupply = 100000000 * 10**_decimals;
        _balances[msg.sender] = _totalSupply;
        
        // Set default parameters
        swapThreshold = _totalSupply * 5 / 10000; // 0.05%
        
        // Set initial reward token address
        REWARD_TOKEN = 0x039e2fB66102314Ce7b64Ce5Ce3E5183bc94aD38; // WRAPPED_SONIC
        
        // Add owner to holders array
        _addHolder(_owner, _balances[_owner]);
        
        // Setup initial shares
        totalShares = _totalSupply;
        
        // Approve router for future swaps
        _approve(address(this), ROUTER, _totalSupply);
        
        emit Transfer(address(0), msg.sender, _totalSupply);
    }
    
    // External functions
    
    function setRewardToken(address newRewardToken) external onlyOwner {
        require(newRewardToken != address(0), "Reward token cannot be zero address");
        REWARD_TOKEN = newRewardToken;
    }
    
    function setLPPair(address newPair) external onlyOwner {
        require(newPair != address(0), "LP pair cannot be zero address");
        LP_PAIR = newPair;
    }
    
    function setTaxPercentage(uint256 newTaxPercentage) external onlyOwner {
        taxPercentage = newTaxPercentage;
        emit TaxUpdated(newTaxPercentage);
    }
    
    function setDistributionInterval(uint256 newInterval) external onlyOwner {
        require(newInterval >= 60, "Interval must be at least 60 seconds");
        distributionInterval = newInterval;
        emit IntervalUpdated(newInterval);
    }
    
    function setBatchSize(uint256 newBatchSize) external onlyOwner {
        require(newBatchSize >= 5 && newBatchSize <= 100, "Batch size must be between 5 and 100");
        batchSize = newBatchSize;
    }
    
    function setSwapThreshold(uint256 newThreshold) external onlyOwner {
        require(newThreshold > 0, "Threshold must be greater than 0");
        swapThreshold = newThreshold;
    }
    
    function setExcluded(address account, bool status) external onlyOwner {
        if (excluded[account] != status) {
            excluded[account] = status;
            if (status) {
                // If excluding an address, remove it from holders
                if (holderInfo[account].amount > 0) {
                    _removeHolder(account);
                }
            } else {
                // If including an address, add it to holders
                _setShare(account, balanceOf(account));
            }
        }
        emit Excluded(account, status);
    }
    
    function setExempt(address account, bool status) external onlyOwner {
        exempt[account] = status;
    }
    
    function enableTrading() external onlyOwner {
        require(!tradingEnabled, "Trading already enabled");
        tradingEnabled = true;
    }
    
    function transferOwnership(address newOwner) external onlyOwner {
        require(newOwner != address(0), "New owner cannot be zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
    
    /**
     * @dev Manually swap a specified amount of tokens for rewards
     * @param amount Amount of tokens to swap (0 for custom calculation based on contract balance)
     * @return swapped Amount of tokens that were actually swapped
     * @return received Amount of reward tokens received from the swap
     */
    function manualSwap(uint256 amount) external onlyOwner returns (uint256 swapped, uint256 received) {
        uint256 contractBalance = balanceOf(address(this));
        require(contractBalance > 0, "No tokens to swap");
        
        // Determine swap amount based on parameters and contract balance
        uint256 swapAmount;
        if (amount > 0 && amount <= contractBalance) {
            // Use specified amount
            swapAmount = amount;
        } else if (swapThreshold > 0 && contractBalance >= swapThreshold) {
            // Use threshold amount
            swapAmount = swapThreshold;
        } else {
            // Use entire balance
            swapAmount = contractBalance;
        }
        
        // Execute the swap and track results
        uint256 receivedAmount = _swapTokensForRewards(swapAmount);
        
        return (swapAmount, receivedAmount);
    }
    
    /**
     * @dev Returns the contract's current balance of RAIN tokens available for swapping
     */
    function getSwappableBalance() external view returns (uint256) {
        return balanceOf(address(this));
    }
    
    /**
     * @dev Returns the contract's current balance of reward tokens available for distribution
     */
    function getRewardBalance() external view returns (uint256) {
        return IERC20(REWARD_TOKEN).balanceOf(address(this));
    }
    
    function manualDistributeRewards(uint256 batchCount) external returns (uint256, uint256) {
        require(msg.sender == _owner, "Only owner can distribute rewards");
        
        uint256 batchToProcess = batchCount > 0 ? batchCount : batchSize;
        
        if (currentIndex + batchToProcess > holders.length) {
            batchToProcess = holders.length - currentIndex;
        }
        
        if (batchToProcess == 0) {
            currentIndex = 0;
            return (0, 0);
        }
        
        uint256 startIndex = currentIndex;
        
        for (uint256 i = 0; i < batchToProcess; i++) {
            if (currentIndex < holders.length) {
                _distributeRewards(holders[currentIndex]);
                currentIndex++;
            }
        }
        
        uint256 processedCount = currentIndex - startIndex;
        
        if (currentIndex >= holders.length) {
            currentIndex = 0;
            lastProcessedTime = block.timestamp;
            emit RewardsProcessed(holders.length);
        }
        
        return (processedCount, currentIndex);
    }
    
    // ERC20 Standard Functions
    
    function name() public view returns (string memory) {
        return _name;
    }
    
    function symbol() public view returns (string memory) {
        return _symbol;
    }
    
    function decimals() public pure returns (uint8) {
        return _decimals;
    }
    
    function totalSupply() public view returns (uint256) {
        return _totalSupply;
    }
    
    function balanceOf(address account) public view returns (uint256) {
        return _balances[account];
    }
    
    function transfer(address recipient, uint256 amount) public returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }
    
    function allowance(address owner_, address spender) public view returns (uint256) {
        return _allowances[owner_][spender];
    }
    
    function approve(address spender, uint256 amount) public returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }
    
    function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) {
        uint256 currentAllowance = _allowances[sender][msg.sender];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            _approve(sender, msg.sender, currentAllowance - amount);
        }
        
        _transfer(sender, recipient, amount);
        return true;
    }
    
    // Information functions
    
    function owner() public view returns (address) {
        return _owner;
    }
    
    function getHolderCount() public view returns (uint256) {
        return holders.length;
    }
    
    function isRewardsReady() public view returns (bool) {
        return block.timestamp >= lastProcessedTime + distributionInterval;
    }
    
    function getTimeUntilRewards() public view returns (uint256) {
        if (isRewardsReady()) return 0;
        return lastProcessedTime + distributionInterval - block.timestamp;
    }
    
    function getUnpaidRewards(address account) public view returns (uint256) {
        if (holderInfo[account].amount == 0) return 0;
        
        uint256 earnedRewards = getSharesPercentage(account);
        uint256 alreadyPaid = holderInfo[account].totalExcluded;
        
        if (earnedRewards <= alreadyPaid) return 0;
        return earnedRewards - alreadyPaid;
    }
    
    function getDistributionStatus() public view returns (uint256, uint256, uint256) {
        if (holders.length == 0) return (0, 0, 100);
        
        uint256 percentage = currentIndex * 100 / holders.length;
        return (holders.length, currentIndex, percentage);
    }
    
    // Internal functions
    
    function _transfer(address from, address to, uint256 amount) internal {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        
        // Check if trading is enabled when interacting with LP
        if (!tradingEnabled && (from == LP_PAIR || to == LP_PAIR)) {
            require(from == _owner || to == _owner, "Trading not enabled yet");
        }
        
        // Auto-liquidity and swap
        bool canSwap = balanceOf(address(this)) >= swapThreshold;
        if (canSwap && !inSwap && from != LP_PAIR && from != _owner && to != _owner) {
            uint256 swapAmount = amount > swapThreshold ? swapThreshold : amount;
            _swapTokensForRewards(swapAmount);
        }
        
        // Fee system
        bool takeFee = !exempt[from] && !exempt[to];
        
        uint256 fees = 0;
        if (takeFee) {
            if (from == LP_PAIR || to == LP_PAIR) {
                fees = amount * taxPercentage / 100;
            }
            if (fees > 0) {
                _takeFee(from, address(this), fees);
                amount -= fees;
            }
        }
        
        // Standard transfer
        _balances[from] -= amount;
        _balances[to] += amount;
        emit Transfer(from, to, amount);
        
        // Update holder tracking
        if (!excluded[from] && from != LP_PAIR) {
            _setShare(from, _balances[from]);
        }
        
        if (!excluded[to] && to != LP_PAIR) {
            _setShare(to, _balances[to]);
        }
    }
    
    function _approve(address owner_, address spender, uint256 amount) internal {
        require(owner_ != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        
        _allowances[owner_][spender] = amount;
        emit Approval(owner_, spender, amount);
    }
    
    function _takeFee(address from, address to, uint256 amount) internal {
        _balances[to] += amount;
        emit Transfer(from, to, amount);
    }
    
    function _swapTokensForRewards(uint256 amount) internal lockTheSwap returns (uint256) {
        // Setup swap path
        address[] memory path = new address[](2);
        path[0] = address(this);      // RAIN token address
        path[1] = REWARD_TOKEN;       // WRAPPED_SONIC address
        
        // Approve router
        _approve(address(this), ROUTER, amount);
        
        // Get initial balance
        uint256 initialBalance = IERC20(REWARD_TOKEN).balanceOf(address(this));
        
        // Swap tokens for tokens
        IUniswapRouter(ROUTER).swapExactTokensForTokensSupportingFeeOnTransferTokens(
            amount,
            0,
            path,
            address(this),
            block.timestamp
        );
        
        // Calculate received tokens
        uint256 newContractBalance = IERC20(REWARD_TOKEN).balanceOf(address(this));
        uint256 swappedTokenAmount = newContractBalance - initialBalance;
        
        if (swappedTokenAmount > 0 && totalShares > 0) {
            // Update dividends per share
            totalDividends += swappedTokenAmount;
            dividendsPerShare = totalDividends * 10000 / totalShares;
            
            emit SwapAndDistribute(amount, swappedTokenAmount);
        }
        
        return swappedTokenAmount;
    }
    
    function processRewards() public {
        uint256 gas = 300000;
        
        uint256 iterations = 0;
        while (gas > 0 && iterations < batchSize && currentIndex < holders.length) {
            uint256 gasUsed = gasleft();
            _distributeRewards(holders[currentIndex]);
            
            gas -= (gasUsed - gasleft());
            currentIndex++;
            iterations++;
        }
        
        if (currentIndex >= holders.length) {
            currentIndex = 0;
        }
    }
    
    function _distributeRewards(address holder) internal {
        if (holderInfo[holder].amount == 0) return;
        
        uint256 amount = getUnpaidEarnings(holder);
        if (amount > 0) {
            uint256 contractBalance = IERC20(REWARD_TOKEN).balanceOf(address(this));
            
            if (amount <= contractBalance) {
                holderInfo[holder].totalExcluded = getSharesPercentage(holder);
                holderInfo[holder].pendingRewards = 0;
                
                IERC20(REWARD_TOKEN).transfer(holder, amount);
            }
        }
    }
    
    function getSharesPercentage(address account) internal view returns (uint256) {
        if (totalShares == 0) return 0;
        
        return dividendsPerShare * holderInfo[account].amount / 10000;
    }
    
    function getUnpaidEarnings(address account) internal view returns (uint256) {
        if (holderInfo[account].amount == 0) return 0;
        
        uint256 earnedDividends = getSharesPercentage(account);
        uint256 alreadyPaid = holderInfo[account].totalExcluded;
        
        if (earnedDividends <= alreadyPaid) return 0;
        return earnedDividends - alreadyPaid;
    }
    
    function _setShare(address holder, uint256 amount) internal {
        // Only consider meaningful balances
        if (amount < 1 * 10**_decimals) { // Minimum 1 token
            if (amount == 0 && holderInfo[holder].amount > 0) {
                _removeHolder(holder);
            }
            return;
        }
        
        if (holderInfo[holder].amount > 0) {
            if (amount == 0) {
                _removeHolder(holder);
            } else {
                totalShares = totalShares - holderInfo[holder].amount + amount;
                holderInfo[holder].amount = amount;
                holderInfo[holder].pendingRewards = getSharesPercentage(holder);
            }
        } else {
            _addHolder(holder, amount);
            holderInfo[holder].amount = amount;
            holderInfo[holder].pendingRewards = getSharesPercentage(holder);
            totalShares += amount;
        }
    }
    
    function _addHolder(address holder, uint256 amount) internal {
        // Check if holder already exists (safety check)
        if (holderIndexes[holder] > 0 || (holders.length > 0 && holders[0] == holder)) {
            return;
        }
        
        holders.push(holder);
        holderIndexes[holder] = holders.length - 1;
    }
    
    function _removeHolder(address holder) internal {
        // Make sure holder exists
        if (holders.length == 0 || 
            (holderIndexes[holder] == 0 && holders[0] != holder) || 
            holderIndexes[holder] >= holders.length) {
            return;
        }
        
        address lastHolder = holders[holders.length - 1];
        uint256 holderIndex = holderIndexes[holder];
        
        // Replace the removed holder with the last one
        holders[holderIndex] = lastHolder;
        holderIndexes[lastHolder] = holderIndex;
        
        // Remove the last element
        holders.pop();
        delete holderIndexes[holder];
        
        // Update totals
        totalShares -= holderInfo[holder].amount;
        delete holderInfo[holder];
    }
    
    // Rescue functions
    
    function rescueToken(address token, uint256 amount) external onlyOwner {
        require(token != REWARD_TOKEN, "Cannot rescue dividend token");
        IERC20(token).transfer(_owner, amount);
    }
    
    function withdrawETH() external onlyOwner {
        (bool success,) = _owner.call{value: address(this).balance}("");
        require(success, "ETH withdrawal failed");
    }
    
    // Receive function to accept ETH
    receive() external payable {}
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 1000
  },
  "viaIR": true,
  "evmVersion": "paris",
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"Excluded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newDistributionInterval","type":"uint256"}],"name":"IntervalUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"holderCount","type":"uint256"}],"name":"RewardsProcessed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"rewardAmount","type":"uint256"}],"name":"SwapAndDistribute","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newTaxPercentage","type":"uint256"}],"name":"TaxUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"LP_PAIR","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REWARD_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"batchSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"distributionInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dividendsPerShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDistributionStatus","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getHolderCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRewardBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSwappableBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTimeUntilRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getUnpaidRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"holderIndexes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"holderInfo","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"pendingRewards","type":"uint256"},{"internalType":"uint256","name":"totalExcluded","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isRewardsReady","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastProcessedTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"batchCount","type":"uint256"}],"name":"manualDistributeRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualSwap","outputs":[{"internalType":"uint256","name":"swapped","type":"uint256"},{"internalType":"uint256","name":"received","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"processRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBatchSize","type":"uint256"}],"name":"setBatchSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newInterval","type":"uint256"}],"name":"setDistributionInterval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newPair","type":"address"}],"name":"setLPPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRewardToken","type":"address"}],"name":"setRewardToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTaxPercentage","type":"uint256"}],"name":"setTaxPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052346102ad576100146000546102b2565b601f8111610264575b507f53757065725261696e000000000000000000000000000000000000000000001260005560015461004e906102b2565b601f811161021a575b507f53555045525241494e00000000000000000000000000000000000000000000126001556005600881905561012c600a556032600b5580546001600160a01b03199081163390811783556a52b7d2dcc80cd2e40000006002819055600091825260066020526040822055690a968163f0a57b4000006009556003805490921673039e2fb66102314ce7b64ce5ce3e5183bc94ad381790915590546001600160a01b031690819052610108906102ec565b6002548060115530156101b3577395a7e403d7cf20f675ff9273d66e94d35ba49fa390306000526007602052604060002082600052602052806040600020556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203092a360025460405190815260007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203393a36040516128a690816103e88239f35b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b634e487b7160e01b600052601160045260246000fd5b6001600052601f0160051c7fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6908101905b8181106102585750610057565b6000815560010161024b565b60008052601f0160051c7f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563908101905b8181106102a1575061001d565b60008155600101610294565b600080fd5b90600182811c921680156102e2575b60208310146102cc57565b634e487b7160e01b600052602260045260246000fd5b91607f16916102c1565b6001600160a01b03166000818152600f6020526040902054158015906103ac575b6103a957600e54680100000000000000008110156103935760018101600e556000600e5482101561037f57600e90819052600080516020612c8e8339815191529190910180546001600160a01b031916831790555460001981019190821161020457600052600f602052604060002055565b634e487b7160e01b81526032600452602490fd5b634e487b7160e01b600052604160045260246000fd5b50565b50600e541515801561030d57506000600e541561037f57600e9052600080516020612c8e833981519152546001600160a01b0316811461030d56fe608080604052600436101561001d575b50361561001b57600080fd5b005b600090813560e01c9081630445b667146116805750806306fdde03146115c5578063095ea7b31461159e57806318160ddd1461158057806323b872dd1461149057806326987b60146114725780632836be241461138b578063313ce5671461136f57806333f3d628146112755780633a98ef3914611257578063429cead11461121a5780634ada218b146111f4578063576f35e31461113f5780635e42b455146110a757806363c98ffa14611089578063699abb3c1461102d5780636d1d59a814610fd357806370a0823114610f9a57806371201a0e14610f7c5780637136982b14610f5e5780637a16a49e14610e905780638a8c523c14610e085780638aee812714610d5f5780638da5cb5b14610d385780638ef8ed3214610d0d5780638f1b0efc14610cdc57806393a013e014610cb557806395d89b4114610bb057806399248ea714610b89578063997664d714610b6b5780639d0014b114610af05780639fde54f514610aa5578063a1b140b614610a68578063a9059cbb14610a36578063aada9c3814610a12578063ae7b6d16146109f4578063b70143c91461065f578063c07fbb8c14610627578063cbdd9b3014610604578063dd62ed3e146105b4578063de1c24d014610517578063e086e5ec1461044a578063e2d2e2191461042c578063f1320af2146103ef578063f2fde38b1461032a578063f4daaba11461030c578063f74fe6be146102e75763f9fc0d070361000f57346102e457806003193601126102e45780620493e05b801515806102d9575b806102cc575b156102b55761029b6102af916102955a61028e6001600160a01b03610281600d5461180b565b90549060031b1c16612394565b5a90611778565b90611778565b926102a7600d5461186f565b600d5561186f565b9161024c565b50600d54600e5411156102c55780f35b80600d5580f35b50600d54600e541161025b565b50600b548310610255565b80fd5b50346102e457806003193601126102e4576020610302611ae5565b6040519015158152f35b50346102e457806003193601126102e4576020600b54604051908152f35b50346102e45760203660031901126102e4576103446116e5565b600554906001600160a01b038083169161035f83331461179b565b169182156103ab578273ffffffffffffffffffffffffffffffffffffffff19927f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a3161760055580f35b606460405162461bcd60e51b815260206004820152602060248201527f4e6577206f776e65722063616e6e6f74206265207a65726f20616464726573736044820152fd5b50346102e45760203660031901126102e45760ff60406020926001600160a01b036104186116e5565b168152601584522054166040519015158152f35b50346102e457806003193601126102e4576020601354604051908152f35b50346102e457806003193601126102e457808080806001600160a01b036005541661047681331461179b565b47905af13d15610512573d67ffffffffffffffff81116104fe57604051906104a8601f8201601f191660200183611740565b81528260203d92013e5b156104ba5780f35b606460405162461bcd60e51b815260206004820152601560248201527f455448207769746864726177616c206661696c656400000000000000000000006044820152fd5b602483634e487b7160e01b81526041600452fd5b6104b2565b50346102e45760203660031901126102e4576001600160a01b036105396116e5565b6105488260055416331461179b565b1680156105705773ffffffffffffffffffffffffffffffffffffffff19600454161760045580f35b606460405162461bcd60e51b815260206004820152601e60248201527f4c5020706169722063616e6e6f74206265207a65726f206164647265737300006044820152fd5b50346102e45760403660031901126102e4576001600160a01b0360406105d86116e5565b92826105e26116fb565b9416815260076020522091166000526020526020604060002054604051908152f35b50346102e457806003193601126102e457602061061f611abb565b604051908152f35b50346102e45760203660031901126102e45760406020916001600160a01b0361064e6116e5565b168152600f83522054604051908152f35b50346102e45760203660031901126102e45760043561068a6001600160a01b0360055416331461179b565b3082526006602052604082205480156109b057811515806109a6575b1561097c57505b600160ff19601654161760165560246040516106ca606082611740565b60028152602081016040368237306106e1836127b8565b526001600160a01b03600354166106f7836127c5565b526107028430611afa565b60206001600160a01b0360035416604051948580926370a0823160e01b82523060048301525afa92831561097157859361093d575b507395a7e403d7cf20f675ff9273d66e94d35ba49fa33b156109395790846040518093635c11d79560e01b825260a482019387600484015283602484015260a060448401525180945260c482019093835b818110610914575050819293503060648301524260848301520381837395a7e403d7cf20f675ff9273d66e94d35ba49fa35af180156108f4576108ff575b5060249060206001600160a01b0360035416604051938480926370a0823160e01b82523060048301525afa80156108f45784906108bb575b6108089250611778565b801515806108b0575b610830575b6040925060ff196016541660165582519182526020820152f35b61083c816012546117fe565b9283601255612710840293808504612710149015171561089c575061086660409360115490611a0b565b6013557f10da9408d1358808fea34ded33d675db0ba8e618a2fb814298059b2a6b0a473f838051848152836020820152a1610816565b80634e487b7160e01b602492526011600452fd5b506011541515610811565b506020823d6020116108ec575b816108d560209383611740565b810103126108e75761080891516107fe565b600080fd5b3d91506108c8565b6040513d86823e3d90fd5b9261090d8160249395611740565b92906107c6565b85516001600160a01b031683526020958601958a955087945090920191600101610788565b8480fd5b9092506020813d602011610969575b8161095960209383611740565b8101031261093957519138610737565b3d915061094c565b6040513d87823e3d90fd5b60095491508115158061099c575b1561099557506106ad565b90506106ad565b508181101561098a565b50808211156106a6565b606460405162461bcd60e51b815260206004820152601160248201527f4e6f20746f6b656e7320746f20737761700000000000000000000000000000006044820152fd5b50346102e457806003193601126102e4576020600854604051908152f35b50346102e45760203660031901126102e457602061061f610a316116e5565b611a66565b50346102e45760403660031901126102e457610a5d610a536116e5565b6024359033611c9f565b602060405160018152f35b50346102e457806003193601126102e457610aa1610a84611a2b565b604080519384526020840192909252908201529081906060820190565b0390f35b50346102e457610aed6001600160a01b03610abf36611711565b9190610ad08260055416331461179b565b1683526015602052604083209060ff801983541691151516179055565b80f35b50346102e45760203660031901126102e457600435610b1b6001600160a01b0360055416331461179b565b8015610b275760095580f35b606460405162461bcd60e51b815260206004820152602060248201527f5468726573686f6c64206d7573742062652067726561746572207468616e20306044820152fd5b50346102e457806003193601126102e4576020601254604051908152f35b50346102e457806003193601126102e45760206001600160a01b0360035416604051908152f35b50346102e457806003193601126102e4576040519080600154908160011c91600181168015610cab575b602084108114610c9757838652908115610c705750600114610c13575b610aa184610c0781860382611740565b6040519182918261169c565b600181527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6939250905b808210610c5657509091508101602001610c0782610bf7565b919260018160209254838588010152019101909291610c3d565b60ff191660208087019190915292151560051b85019092019250610c079150839050610bf7565b602483634e487b7160e01b81526022600452fd5b92607f1692610bda565b50346102e457806003193601126102e45760206001600160a01b0360045416604051908152f35b50346102e457806003193601126102e457602061061f306001600160a01b0316600052600660205260406000205490565b50346102e45760203660031901126102e4576040610d2c60043561187e565b82519182526020820152f35b50346102e457806003193601126102e45760206001600160a01b0360055416604051908152f35b50346102e45760203660031901126102e4576001600160a01b03610d816116e5565b610d908260055416331461179b565b168015610db85773ffffffffffffffffffffffffffffffffffffffff19600354161760035580f35b608460405162461bcd60e51b815260206004820152602360248201527f52657761726420746f6b656e2063616e6e6f74206265207a65726f206164647260448201526265737360e81b6064820152fd5b50346102e457806003193601126102e457610e2f6001600160a01b0360055416331461179b565b60165460ff8160081c16610e4c5761ff0019166101001760165580f35b606460405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c726561647920656e61626c65640000000000000000006044820152fd5b50346102e45760203660031901126102e457600435610ebb6001600160a01b0360055416331461179b565b603c8110610ef5576020817fc6f44473d25b86976ee7357c1339328224e349abc5486edc3007ef658a57608a92600a55604051908152a180f35b608460405162461bcd60e51b8152602060048201526024808201527f496e74657276616c206d757374206265206174206c656173742036302073656360448201527f6f6e6473000000000000000000000000000000000000000000000000000000006064820152fd5b50346102e457806003193601126102e4576020600e54604051908152f35b50346102e457806003193601126102e4576020600a54604051908152f35b50346102e45760203660031901126102e457602061061f610fb96116e5565b6001600160a01b0316600052600660205260406000205490565b50346102e45760203660031901126102e4576040906001600160a01b03610ff86116e5565b1681526010602052208054610aa160026001840154930154604051938493846040919493926060820195825260208201520152565b50346102e45760203660031901126102e4577f35ad15e7f5e4a16b548e8916bd02c51847dde8d106f334b4edaaacf140e43c91602060043561107b6001600160a01b0360055416331461179b565b80600855604051908152a180f35b50346102e457806003193601126102e4576020600c54604051908152f35b50346102e457806003193601126102e457602460206001600160a01b0360035416604051928380926370a0823160e01b82523060048301525afa9081156111345782916110fa575b602082604051908152f35b90506020813d60201161112c575b8161111560209383611740565b81010312611128576020915051386110ef565b5080fd5b3d9150611108565b6040513d84823e3d90fd5b50346102e45760203660031901126102e45760043561116a6001600160a01b0360055416331461179b565b6005811015806111e9575b1561118057600b5580f35b608460405162461bcd60e51b8152602060048201526024808201527f42617463682073697a65206d757374206265206265747765656e203520616e6460448201527f20313030000000000000000000000000000000000000000000000000000000006064820152fd5b506064811115611175565b50346102e457806003193601126102e457602060ff60165460081c166040519015158152f35b50346102e45760203660031901126102e45760ff60406020926001600160a01b036112436116e5565b168152601484522054166040519015158152f35b50346102e457806003193601126102e4576020601154604051908152f35b50346102e45760403660031901126102e45761128f6116e5565b6001600160a01b0360055416906112a782331461179b565b6001600160a01b038060035416911690811461132b5760405163a9059cbb60e01b81526001600160a01b0392909216600483015260248035908301526020908290604490829086905af18015611134576112ff575080f35b6113209060203d602011611324575b6113188183611740565b8101906117e6565b5080f35b503d61130e565b606460405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f7420726573637565206469766964656e6420746f6b656e000000006044820152fd5b50346102e457806003193601126102e457602060405160128152f35b50346102e45760207ff3a7c8242f0708821ed31a47f066fc7fa42f2ae65ed3e4d1d7cb5b3765d2939c6113bd36611711565b6113d66001600160a01b0360059593955416331461179b565b6001600160a01b038416938486526014835260ff60408720541691801515809315150361140a575b5050604051908152a280f35b8587526014845261142a81604089209060ff801983541691151516179055565b1561145857848652601083526040862054611449575b505b38806113fe565b6114529061220f565b38611440565b84865260068352604086205461146d916120fb565b611442565b50346102e457806003193601126102e4576020600d54604051908152f35b50346102e45760603660031901126102e4576114aa6116e5565b906114b36116fb565b6040604435926001600160a01b038516815260076020528181206001600160a01b033316825260205220549260001984036114f3575b610a5d9350611c9f565b8284106115165761151161150a84610a5d96611778565b3383611bce565b6114e9565b608460405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e63650000000000000000000000000000000000000000000000006064820152fd5b50346102e457806003193601126102e4576020600254604051908152f35b50346102e45760403660031901126102e457610a5d6115bb6116e5565b6024359033611bce565b50346102e457806003193601126102e45760405190808054908160011c91600181168015611676575b602084108114610c9757838652908115610c70575060011461161a57610aa184610c0781860382611740565b8080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563939250905b80821061165c57509091508101602001610c0782610bf7565b919260018160209254838588010152019101909291611643565b92607f16926115ee565b9050346111285781600319360112611128576020906009548152f35b91909160208152825180602083015260005b8181106116cf575060409293506000838284010152601f8019910116010190565b80602080928701015160408286010152016116ae565b600435906001600160a01b03821682036108e757565b602435906001600160a01b03821682036108e757565b60409060031901126108e7576004356001600160a01b03811681036108e7579060243580151581036108e75790565b90601f8019910116810190811067ffffffffffffffff82111761176257604052565b634e487b7160e01b600052604160045260246000fd5b9190820391821161178557565b634e487b7160e01b600052601160045260246000fd5b156117a257565b606460405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152fd5b908160209103126108e7575180151581036108e75790565b9190820180921161178557565b600e5481101561182657600e60005260206000200190600090565b634e487b7160e01b600052603260045260246000fd5b600e541561182657600e60009081527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd91565b60001981146117855760010190565b6001600160a01b0360055416330361198e57801561198457905b600d546118a583826117fe565b600e54809111611971575b5050811561196257600d549160005b8181106119235750506118d5600d549283611778565b91600e54809110156118e9575b50600d5490565b60207fcbb46d9b69e77a6b5011c11cd2bf9be0461c9a1920e9f42678661cec154cd2a8916000600d5542600c55604051908152a1386118e2565b600190600d54600e54811061193a575b50016118bf565b6001600160a01b0361028161194e9261180b565b611959600d5461186f565b600d5538611933565b90506000600d55600090600090565b61197c929350611778565b9038806118b0565b50600b5490611898565b608460405162461bcd60e51b815260206004820152602160248201527f4f6e6c79206f776e65722063616e20646973747269627574652072657761726460448201527f73000000000000000000000000000000000000000000000000000000000000006064820152fd5b8181029291811591840414171561178557565b8115611a15570490565b634e487b7160e01b600052601260045260246000fd5b600e548015611a5a57600d549160648302838104606414841517156117855782611a5491611a0b565b91929190565b50600090600090606490565b6001600160a01b0381169081600052601060205260406000205415611ab457611a8e906124e7565b90600052601060205260026040600020015480821115611ab457611ab191611778565b90565b5050600090565b611ac3611ae5565b611ae057611ab1611ad9600c54600a54906117fe565b4290611778565b600090565b611af4600c54600a54906117fe565b42101590565b6001600160a01b03168015611b65577f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560207395a7e403d7cf20f675ff9273d66e94d35ba49fa3938360005260078252604060002085600052825280604060002055604051908152a3565b608460405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152fd5b6001600160a01b0316908115611b65576001600160a01b0316918215611c355760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925918360005260078252604060002085600052825280604060002055604051908152a3565b608460405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152fd5b6001600160a01b038116908115612091576001600160a01b038316938415612041578015611fd75782859160165460ff8160081c161580611faf575b611f37575b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91602091306000526006835260406000205490600954809210159081611f2b575b5080611f16575b80611f01575b80611eec575b611eca575b50836000526015825260ff604060002054161580611eb2575b600090611e3b575b5083600052600682526040600020611d74828254611778565b905584600052600682526040600020611d8e8282546117fe565b9055604051908152a381600052601460205260ff604060002054161580611e26575b611e07575b505081600052601460205260ff604060002054161580611df2575b611dd8575050565b611df0916000526006602052604060002054906120fb565b565b506001600160a01b0360045416821415611dd0565b611e1f916000526006602052604060002054906120fb565b3880611db5565b506001600160a01b0360045416821415611db0565b6001600160a01b0360045416808614908115611ea8575b50611e93575b8015611d5b57611e8d9130600052600684526040600020611e7a8382546117fe565b90556040518281528686863093a3611778565b38611d5b565b506064611ea2600854836119f8565b04611e58565b9050861438611e52565b50846000526015825260ff6040600020541615611d53565b80821115611ee257611edb90612521565b5038611d3a565b50611edb81612521565b506001600160a01b0360055416861415611d35565b506001600160a01b0360055416851415611d2f565b506001600160a01b0360045416851415611d29565b60ff9150161538611d22565b915091506001600160a01b0360055416808514908115611fa5575b5015611f615785918491611ce0565b606460405162461bcd60e51b815260206004820152601760248201527f54726164696e67206e6f7420656e61626c6564207965740000000000000000006044820152fd5b9050861438611f52565b506001600160a01b0360045416808414908115611fcd575b50611cdb565b9050841438611fc7565b608460405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152fd5b608460405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152fd5b608460405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152fd5b670de0b6b3a764000082106121d7576001600160a01b038116918260005260106020526040600020541515600014612191578061213d5750611df0915061220f565b908161216661217d9361216160115487600052601060205260406000205490611778565b6117fe565b6011558360005260106020526040600020556124e7565b906000526010602052600160406000200155565b90916121b8836121a36121d2956127d5565b826000526010602052836040600020556124e7565b9060005260106020526001604060002001556011546117fe565b601155565b9015806121ef575b6121e65750565b611df09061220f565b506001600160a01b038116600052601060205260406000205415156121df565b600e548015801561234a575b8015612329575b612325576000198101908111611785576001600160a01b03612244819261180b565b90549060031b1c1691169081600052600f6020526040600020549061228b8161226c8461180b565b9091906001600160a01b038084549260031b9316831b921b1916179055565b600052600f602052604060002055600e54801561230f57600019016122af8161180b565b6001600160a01b0382549160031b1b19169055600e5580600052600f602052600060408120558060005260106020526122ef604060002054601154611778565b601155600052601060205260006002604082208281558260018201550155565b634e487b7160e01b600052603160045260246000fd5b5050565b506001600160a01b038216600052600f602052806040600020541015612222565b506001600160a01b03821680600052600f602052604060002054159081612372575b5061221b565b90506001600160a01b0361238461183c565b90549060031b1c1614153861236c565b6001600160a01b03811680600052601060205260406000205415612325576123bb82611a66565b806123c557505050565b602460206001600160a01b0360035416604051928380926370a0823160e01b82523060048301525afa9081156124a9576000916124b5575b5081111561240a57505050565b8260209261241a61247d956124e7565b816000526010855260026040600020015560005260108352600060016040822001556001600160a01b036003541690600060405180968195829463a9059cbb60e01b845260048401602090939291936001600160a01b0360408201951681520152565b03925af180156124a95761248e5750565b6124a69060203d602011611324576113188183611740565b50565b6040513d6000823e3d90fd5b90506020813d6020116124df575b816124d060209383611740565b810103126108e75751386123fd565b3d91506124c3565b6011541561251b57612517612710916001600160a01b0360135491166000526010602052604060002054906119f8565b0490565b50600090565b600090600160ff1960165416176016556024604051612541606082611740565b6002815260208101604036823730612558836127b8565b526001600160a01b036003541661256e836127c5565b526125798430611afa565b60206001600160a01b0360035416604051948580926370a0823160e01b82523060048301525afa928315610971578593612784575b507395a7e403d7cf20f675ff9273d66e94d35ba49fa33b156109395790846040518093635c11d79560e01b825260a482019387600484015283602484015260a060448401525180945260c482019093835b81811061275f575050819293503060648301524260848301520381837395a7e403d7cf20f675ff9273d66e94d35ba49fa35af180156108f45761274a575b5060249060206001600160a01b0360035416604051938480926370a0823160e01b82523060048301525afa80156108f4578490612716575b61267f9250611778565b918215158061270b575b61269d575b50509060ff1960165416601655565b6126a9836012546117fe565b9081601255612710820291808304612710149015171561089c57507f10da9408d1358808fea34ded33d675db0ba8e618a2fb814298059b2a6b0a473f916126f560409260115490611a0b565b6013558151908152836020820152a1388061268e565b506011541515612689565b506020823d602011612742575b8161273060209383611740565b810103126108e75761267f9151612675565b3d9150612723565b926127588160249395611740565b929061263d565b85516001600160a01b031683526020958601958a9550879450909201916001016125ff565b9092506020813d6020116127b0575b816127a060209383611740565b81010312610939575191386125ae565b3d9150612793565b8051156118265760200190565b8051600110156118265760400190565b6001600160a01b0381169081600052600f60205260406000205415801590612844575b61232557600e5490680100000000000000008210156117625761226c8260016128249401600e5561180b565b600e5460001981019190821161178557600052600f602052604060002055565b50600e54151580156127f85750816001600160a01b0361286261183c565b90549060031b1c16146127f856fea26469706673582212208e0859b6aacffce17364e01c3e9bcf0e9bf3e730acee42ec97c87431d5d452ba64736f6c634300081c0033bb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd

Deployed Bytecode

0x608080604052600436101561001d575b50361561001b57600080fd5b005b600090813560e01c9081630445b667146116805750806306fdde03146115c5578063095ea7b31461159e57806318160ddd1461158057806323b872dd1461149057806326987b60146114725780632836be241461138b578063313ce5671461136f57806333f3d628146112755780633a98ef3914611257578063429cead11461121a5780634ada218b146111f4578063576f35e31461113f5780635e42b455146110a757806363c98ffa14611089578063699abb3c1461102d5780636d1d59a814610fd357806370a0823114610f9a57806371201a0e14610f7c5780637136982b14610f5e5780637a16a49e14610e905780638a8c523c14610e085780638aee812714610d5f5780638da5cb5b14610d385780638ef8ed3214610d0d5780638f1b0efc14610cdc57806393a013e014610cb557806395d89b4114610bb057806399248ea714610b89578063997664d714610b6b5780639d0014b114610af05780639fde54f514610aa5578063a1b140b614610a68578063a9059cbb14610a36578063aada9c3814610a12578063ae7b6d16146109f4578063b70143c91461065f578063c07fbb8c14610627578063cbdd9b3014610604578063dd62ed3e146105b4578063de1c24d014610517578063e086e5ec1461044a578063e2d2e2191461042c578063f1320af2146103ef578063f2fde38b1461032a578063f4daaba11461030c578063f74fe6be146102e75763f9fc0d070361000f57346102e457806003193601126102e45780620493e05b801515806102d9575b806102cc575b156102b55761029b6102af916102955a61028e6001600160a01b03610281600d5461180b565b90549060031b1c16612394565b5a90611778565b90611778565b926102a7600d5461186f565b600d5561186f565b9161024c565b50600d54600e5411156102c55780f35b80600d5580f35b50600d54600e541161025b565b50600b548310610255565b80fd5b50346102e457806003193601126102e4576020610302611ae5565b6040519015158152f35b50346102e457806003193601126102e4576020600b54604051908152f35b50346102e45760203660031901126102e4576103446116e5565b600554906001600160a01b038083169161035f83331461179b565b169182156103ab578273ffffffffffffffffffffffffffffffffffffffff19927f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a3161760055580f35b606460405162461bcd60e51b815260206004820152602060248201527f4e6577206f776e65722063616e6e6f74206265207a65726f20616464726573736044820152fd5b50346102e45760203660031901126102e45760ff60406020926001600160a01b036104186116e5565b168152601584522054166040519015158152f35b50346102e457806003193601126102e4576020601354604051908152f35b50346102e457806003193601126102e457808080806001600160a01b036005541661047681331461179b565b47905af13d15610512573d67ffffffffffffffff81116104fe57604051906104a8601f8201601f191660200183611740565b81528260203d92013e5b156104ba5780f35b606460405162461bcd60e51b815260206004820152601560248201527f455448207769746864726177616c206661696c656400000000000000000000006044820152fd5b602483634e487b7160e01b81526041600452fd5b6104b2565b50346102e45760203660031901126102e4576001600160a01b036105396116e5565b6105488260055416331461179b565b1680156105705773ffffffffffffffffffffffffffffffffffffffff19600454161760045580f35b606460405162461bcd60e51b815260206004820152601e60248201527f4c5020706169722063616e6e6f74206265207a65726f206164647265737300006044820152fd5b50346102e45760403660031901126102e4576001600160a01b0360406105d86116e5565b92826105e26116fb565b9416815260076020522091166000526020526020604060002054604051908152f35b50346102e457806003193601126102e457602061061f611abb565b604051908152f35b50346102e45760203660031901126102e45760406020916001600160a01b0361064e6116e5565b168152600f83522054604051908152f35b50346102e45760203660031901126102e45760043561068a6001600160a01b0360055416331461179b565b3082526006602052604082205480156109b057811515806109a6575b1561097c57505b600160ff19601654161760165560246040516106ca606082611740565b60028152602081016040368237306106e1836127b8565b526001600160a01b03600354166106f7836127c5565b526107028430611afa565b60206001600160a01b0360035416604051948580926370a0823160e01b82523060048301525afa92831561097157859361093d575b507395a7e403d7cf20f675ff9273d66e94d35ba49fa33b156109395790846040518093635c11d79560e01b825260a482019387600484015283602484015260a060448401525180945260c482019093835b818110610914575050819293503060648301524260848301520381837395a7e403d7cf20f675ff9273d66e94d35ba49fa35af180156108f4576108ff575b5060249060206001600160a01b0360035416604051938480926370a0823160e01b82523060048301525afa80156108f45784906108bb575b6108089250611778565b801515806108b0575b610830575b6040925060ff196016541660165582519182526020820152f35b61083c816012546117fe565b9283601255612710840293808504612710149015171561089c575061086660409360115490611a0b565b6013557f10da9408d1358808fea34ded33d675db0ba8e618a2fb814298059b2a6b0a473f838051848152836020820152a1610816565b80634e487b7160e01b602492526011600452fd5b506011541515610811565b506020823d6020116108ec575b816108d560209383611740565b810103126108e75761080891516107fe565b600080fd5b3d91506108c8565b6040513d86823e3d90fd5b9261090d8160249395611740565b92906107c6565b85516001600160a01b031683526020958601958a955087945090920191600101610788565b8480fd5b9092506020813d602011610969575b8161095960209383611740565b8101031261093957519138610737565b3d915061094c565b6040513d87823e3d90fd5b60095491508115158061099c575b1561099557506106ad565b90506106ad565b508181101561098a565b50808211156106a6565b606460405162461bcd60e51b815260206004820152601160248201527f4e6f20746f6b656e7320746f20737761700000000000000000000000000000006044820152fd5b50346102e457806003193601126102e4576020600854604051908152f35b50346102e45760203660031901126102e457602061061f610a316116e5565b611a66565b50346102e45760403660031901126102e457610a5d610a536116e5565b6024359033611c9f565b602060405160018152f35b50346102e457806003193601126102e457610aa1610a84611a2b565b604080519384526020840192909252908201529081906060820190565b0390f35b50346102e457610aed6001600160a01b03610abf36611711565b9190610ad08260055416331461179b565b1683526015602052604083209060ff801983541691151516179055565b80f35b50346102e45760203660031901126102e457600435610b1b6001600160a01b0360055416331461179b565b8015610b275760095580f35b606460405162461bcd60e51b815260206004820152602060248201527f5468726573686f6c64206d7573742062652067726561746572207468616e20306044820152fd5b50346102e457806003193601126102e4576020601254604051908152f35b50346102e457806003193601126102e45760206001600160a01b0360035416604051908152f35b50346102e457806003193601126102e4576040519080600154908160011c91600181168015610cab575b602084108114610c9757838652908115610c705750600114610c13575b610aa184610c0781860382611740565b6040519182918261169c565b600181527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6939250905b808210610c5657509091508101602001610c0782610bf7565b919260018160209254838588010152019101909291610c3d565b60ff191660208087019190915292151560051b85019092019250610c079150839050610bf7565b602483634e487b7160e01b81526022600452fd5b92607f1692610bda565b50346102e457806003193601126102e45760206001600160a01b0360045416604051908152f35b50346102e457806003193601126102e457602061061f306001600160a01b0316600052600660205260406000205490565b50346102e45760203660031901126102e4576040610d2c60043561187e565b82519182526020820152f35b50346102e457806003193601126102e45760206001600160a01b0360055416604051908152f35b50346102e45760203660031901126102e4576001600160a01b03610d816116e5565b610d908260055416331461179b565b168015610db85773ffffffffffffffffffffffffffffffffffffffff19600354161760035580f35b608460405162461bcd60e51b815260206004820152602360248201527f52657761726420746f6b656e2063616e6e6f74206265207a65726f206164647260448201526265737360e81b6064820152fd5b50346102e457806003193601126102e457610e2f6001600160a01b0360055416331461179b565b60165460ff8160081c16610e4c5761ff0019166101001760165580f35b606460405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c726561647920656e61626c65640000000000000000006044820152fd5b50346102e45760203660031901126102e457600435610ebb6001600160a01b0360055416331461179b565b603c8110610ef5576020817fc6f44473d25b86976ee7357c1339328224e349abc5486edc3007ef658a57608a92600a55604051908152a180f35b608460405162461bcd60e51b8152602060048201526024808201527f496e74657276616c206d757374206265206174206c656173742036302073656360448201527f6f6e6473000000000000000000000000000000000000000000000000000000006064820152fd5b50346102e457806003193601126102e4576020600e54604051908152f35b50346102e457806003193601126102e4576020600a54604051908152f35b50346102e45760203660031901126102e457602061061f610fb96116e5565b6001600160a01b0316600052600660205260406000205490565b50346102e45760203660031901126102e4576040906001600160a01b03610ff86116e5565b1681526010602052208054610aa160026001840154930154604051938493846040919493926060820195825260208201520152565b50346102e45760203660031901126102e4577f35ad15e7f5e4a16b548e8916bd02c51847dde8d106f334b4edaaacf140e43c91602060043561107b6001600160a01b0360055416331461179b565b80600855604051908152a180f35b50346102e457806003193601126102e4576020600c54604051908152f35b50346102e457806003193601126102e457602460206001600160a01b0360035416604051928380926370a0823160e01b82523060048301525afa9081156111345782916110fa575b602082604051908152f35b90506020813d60201161112c575b8161111560209383611740565b81010312611128576020915051386110ef565b5080fd5b3d9150611108565b6040513d84823e3d90fd5b50346102e45760203660031901126102e45760043561116a6001600160a01b0360055416331461179b565b6005811015806111e9575b1561118057600b5580f35b608460405162461bcd60e51b8152602060048201526024808201527f42617463682073697a65206d757374206265206265747765656e203520616e6460448201527f20313030000000000000000000000000000000000000000000000000000000006064820152fd5b506064811115611175565b50346102e457806003193601126102e457602060ff60165460081c166040519015158152f35b50346102e45760203660031901126102e45760ff60406020926001600160a01b036112436116e5565b168152601484522054166040519015158152f35b50346102e457806003193601126102e4576020601154604051908152f35b50346102e45760403660031901126102e45761128f6116e5565b6001600160a01b0360055416906112a782331461179b565b6001600160a01b038060035416911690811461132b5760405163a9059cbb60e01b81526001600160a01b0392909216600483015260248035908301526020908290604490829086905af18015611134576112ff575080f35b6113209060203d602011611324575b6113188183611740565b8101906117e6565b5080f35b503d61130e565b606460405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f7420726573637565206469766964656e6420746f6b656e000000006044820152fd5b50346102e457806003193601126102e457602060405160128152f35b50346102e45760207ff3a7c8242f0708821ed31a47f066fc7fa42f2ae65ed3e4d1d7cb5b3765d2939c6113bd36611711565b6113d66001600160a01b0360059593955416331461179b565b6001600160a01b038416938486526014835260ff60408720541691801515809315150361140a575b5050604051908152a280f35b8587526014845261142a81604089209060ff801983541691151516179055565b1561145857848652601083526040862054611449575b505b38806113fe565b6114529061220f565b38611440565b84865260068352604086205461146d916120fb565b611442565b50346102e457806003193601126102e4576020600d54604051908152f35b50346102e45760603660031901126102e4576114aa6116e5565b906114b36116fb565b6040604435926001600160a01b038516815260076020528181206001600160a01b033316825260205220549260001984036114f3575b610a5d9350611c9f565b8284106115165761151161150a84610a5d96611778565b3383611bce565b6114e9565b608460405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e63650000000000000000000000000000000000000000000000006064820152fd5b50346102e457806003193601126102e4576020600254604051908152f35b50346102e45760403660031901126102e457610a5d6115bb6116e5565b6024359033611bce565b50346102e457806003193601126102e45760405190808054908160011c91600181168015611676575b602084108114610c9757838652908115610c70575060011461161a57610aa184610c0781860382611740565b8080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563939250905b80821061165c57509091508101602001610c0782610bf7565b919260018160209254838588010152019101909291611643565b92607f16926115ee565b9050346111285781600319360112611128576020906009548152f35b91909160208152825180602083015260005b8181106116cf575060409293506000838284010152601f8019910116010190565b80602080928701015160408286010152016116ae565b600435906001600160a01b03821682036108e757565b602435906001600160a01b03821682036108e757565b60409060031901126108e7576004356001600160a01b03811681036108e7579060243580151581036108e75790565b90601f8019910116810190811067ffffffffffffffff82111761176257604052565b634e487b7160e01b600052604160045260246000fd5b9190820391821161178557565b634e487b7160e01b600052601160045260246000fd5b156117a257565b606460405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152fd5b908160209103126108e7575180151581036108e75790565b9190820180921161178557565b600e5481101561182657600e60005260206000200190600090565b634e487b7160e01b600052603260045260246000fd5b600e541561182657600e60009081527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd91565b60001981146117855760010190565b6001600160a01b0360055416330361198e57801561198457905b600d546118a583826117fe565b600e54809111611971575b5050811561196257600d549160005b8181106119235750506118d5600d549283611778565b91600e54809110156118e9575b50600d5490565b60207fcbb46d9b69e77a6b5011c11cd2bf9be0461c9a1920e9f42678661cec154cd2a8916000600d5542600c55604051908152a1386118e2565b600190600d54600e54811061193a575b50016118bf565b6001600160a01b0361028161194e9261180b565b611959600d5461186f565b600d5538611933565b90506000600d55600090600090565b61197c929350611778565b9038806118b0565b50600b5490611898565b608460405162461bcd60e51b815260206004820152602160248201527f4f6e6c79206f776e65722063616e20646973747269627574652072657761726460448201527f73000000000000000000000000000000000000000000000000000000000000006064820152fd5b8181029291811591840414171561178557565b8115611a15570490565b634e487b7160e01b600052601260045260246000fd5b600e548015611a5a57600d549160648302838104606414841517156117855782611a5491611a0b565b91929190565b50600090600090606490565b6001600160a01b0381169081600052601060205260406000205415611ab457611a8e906124e7565b90600052601060205260026040600020015480821115611ab457611ab191611778565b90565b5050600090565b611ac3611ae5565b611ae057611ab1611ad9600c54600a54906117fe565b4290611778565b600090565b611af4600c54600a54906117fe565b42101590565b6001600160a01b03168015611b65577f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560207395a7e403d7cf20f675ff9273d66e94d35ba49fa3938360005260078252604060002085600052825280604060002055604051908152a3565b608460405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152fd5b6001600160a01b0316908115611b65576001600160a01b0316918215611c355760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925918360005260078252604060002085600052825280604060002055604051908152a3565b608460405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152fd5b6001600160a01b038116908115612091576001600160a01b038316938415612041578015611fd75782859160165460ff8160081c161580611faf575b611f37575b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91602091306000526006835260406000205490600954809210159081611f2b575b5080611f16575b80611f01575b80611eec575b611eca575b50836000526015825260ff604060002054161580611eb2575b600090611e3b575b5083600052600682526040600020611d74828254611778565b905584600052600682526040600020611d8e8282546117fe565b9055604051908152a381600052601460205260ff604060002054161580611e26575b611e07575b505081600052601460205260ff604060002054161580611df2575b611dd8575050565b611df0916000526006602052604060002054906120fb565b565b506001600160a01b0360045416821415611dd0565b611e1f916000526006602052604060002054906120fb565b3880611db5565b506001600160a01b0360045416821415611db0565b6001600160a01b0360045416808614908115611ea8575b50611e93575b8015611d5b57611e8d9130600052600684526040600020611e7a8382546117fe565b90556040518281528686863093a3611778565b38611d5b565b506064611ea2600854836119f8565b04611e58565b9050861438611e52565b50846000526015825260ff6040600020541615611d53565b80821115611ee257611edb90612521565b5038611d3a565b50611edb81612521565b506001600160a01b0360055416861415611d35565b506001600160a01b0360055416851415611d2f565b506001600160a01b0360045416851415611d29565b60ff9150161538611d22565b915091506001600160a01b0360055416808514908115611fa5575b5015611f615785918491611ce0565b606460405162461bcd60e51b815260206004820152601760248201527f54726164696e67206e6f7420656e61626c6564207965740000000000000000006044820152fd5b9050861438611f52565b506001600160a01b0360045416808414908115611fcd575b50611cdb565b9050841438611fc7565b608460405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152fd5b608460405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152fd5b608460405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152fd5b670de0b6b3a764000082106121d7576001600160a01b038116918260005260106020526040600020541515600014612191578061213d5750611df0915061220f565b908161216661217d9361216160115487600052601060205260406000205490611778565b6117fe565b6011558360005260106020526040600020556124e7565b906000526010602052600160406000200155565b90916121b8836121a36121d2956127d5565b826000526010602052836040600020556124e7565b9060005260106020526001604060002001556011546117fe565b601155565b9015806121ef575b6121e65750565b611df09061220f565b506001600160a01b038116600052601060205260406000205415156121df565b600e548015801561234a575b8015612329575b612325576000198101908111611785576001600160a01b03612244819261180b565b90549060031b1c1691169081600052600f6020526040600020549061228b8161226c8461180b565b9091906001600160a01b038084549260031b9316831b921b1916179055565b600052600f602052604060002055600e54801561230f57600019016122af8161180b565b6001600160a01b0382549160031b1b19169055600e5580600052600f602052600060408120558060005260106020526122ef604060002054601154611778565b601155600052601060205260006002604082208281558260018201550155565b634e487b7160e01b600052603160045260246000fd5b5050565b506001600160a01b038216600052600f602052806040600020541015612222565b506001600160a01b03821680600052600f602052604060002054159081612372575b5061221b565b90506001600160a01b0361238461183c565b90549060031b1c1614153861236c565b6001600160a01b03811680600052601060205260406000205415612325576123bb82611a66565b806123c557505050565b602460206001600160a01b0360035416604051928380926370a0823160e01b82523060048301525afa9081156124a9576000916124b5575b5081111561240a57505050565b8260209261241a61247d956124e7565b816000526010855260026040600020015560005260108352600060016040822001556001600160a01b036003541690600060405180968195829463a9059cbb60e01b845260048401602090939291936001600160a01b0360408201951681520152565b03925af180156124a95761248e5750565b6124a69060203d602011611324576113188183611740565b50565b6040513d6000823e3d90fd5b90506020813d6020116124df575b816124d060209383611740565b810103126108e75751386123fd565b3d91506124c3565b6011541561251b57612517612710916001600160a01b0360135491166000526010602052604060002054906119f8565b0490565b50600090565b600090600160ff1960165416176016556024604051612541606082611740565b6002815260208101604036823730612558836127b8565b526001600160a01b036003541661256e836127c5565b526125798430611afa565b60206001600160a01b0360035416604051948580926370a0823160e01b82523060048301525afa928315610971578593612784575b507395a7e403d7cf20f675ff9273d66e94d35ba49fa33b156109395790846040518093635c11d79560e01b825260a482019387600484015283602484015260a060448401525180945260c482019093835b81811061275f575050819293503060648301524260848301520381837395a7e403d7cf20f675ff9273d66e94d35ba49fa35af180156108f45761274a575b5060249060206001600160a01b0360035416604051938480926370a0823160e01b82523060048301525afa80156108f4578490612716575b61267f9250611778565b918215158061270b575b61269d575b50509060ff1960165416601655565b6126a9836012546117fe565b9081601255612710820291808304612710149015171561089c57507f10da9408d1358808fea34ded33d675db0ba8e618a2fb814298059b2a6b0a473f916126f560409260115490611a0b565b6013558151908152836020820152a1388061268e565b506011541515612689565b506020823d602011612742575b8161273060209383611740565b810103126108e75761267f9151612675565b3d9150612723565b926127588160249395611740565b929061263d565b85516001600160a01b031683526020958601958a9550879450909201916001016125ff565b9092506020813d6020116127b0575b816127a060209383611740565b81010312610939575191386125ae565b3d9150612793565b8051156118265760200190565b8051600110156118265760400190565b6001600160a01b0381169081600052600f60205260406000205415801590612844575b61232557600e5490680100000000000000008210156117625761226c8260016128249401600e5561180b565b600e5460001981019190821161178557600052600f602052604060002055565b50600e54151580156127f85750816001600160a01b0361286261183c565b90549060031b1c16146127f856fea26469706673582212208e0859b6aacffce17364e01c3e9bcf0e9bf3e730acee42ec97c87431d5d452ba64736f6c634300081c0033

[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.