ETH Price: $3,480.50 (+5.23%)

Contract

0x20977401E25b0AD8b1969Fe35ab7E029d1d438c9
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer215282522025-01-01 7:54:2316 days ago1735718063IN
0x20977401...9d1d438c9
0 ETH0.000407036.76277651
Approve192305842024-02-15 3:14:35337 days ago1707966875IN
0x20977401...9d1d438c9
0 ETH0.0009907120.99197616
Approve188681932023-12-26 6:50:59388 days ago1703573459IN
0x20977401...9d1d438c9
0 ETH0.0006074812.87180497
Approve188577622023-12-24 19:40:35390 days ago1703446835IN
0x20977401...9d1d438c9
0 ETH0.0008200217.37531046
Approve187990862023-12-16 14:01:47398 days ago1702735307IN
0x20977401...9d1d438c9
0 ETH0.0032877169.66241442
Approve187817892023-12-14 3:44:35400 days ago1702525475IN
0x20977401...9d1d438c9
0 ETH0.0019742541.77874001
Approve187619622023-12-11 9:06:35403 days ago1702285595IN
0x20977401...9d1d438c9
0 ETH0.0014828631.57249925
Approve187528902023-12-10 2:39:47404 days ago1702175987IN
0x20977401...9d1d438c9
0 ETH0.001132924.00480736
Approve187436412023-12-08 19:32:47406 days ago1702063967IN
0x20977401...9d1d438c9
0 ETH0.0019138940.55289976
Approve187400902023-12-08 7:36:23406 days ago1702020983IN
0x20977401...9d1d438c9
0 ETH0.001832638.83051787
Approve187377882023-12-07 23:51:35406 days ago1701993095IN
0x20977401...9d1d438c9
0 ETH0.0026030755.15577955
Approve187331382023-12-07 8:10:47407 days ago1701936647IN
0x20977401...9d1d438c9
0 ETH0.0017117936.27072305
Approve187289482023-12-06 18:04:59408 days ago1701885899IN
0x20977401...9d1d438c9
0 ETH0.0033849571.72276718
Approve187282962023-12-06 15:52:59408 days ago1701877979IN
0x20977401...9d1d438c9
0 ETH0.0016702867.05006406
Approve187252082023-12-06 5:30:23408 days ago1701840623IN
0x20977401...9d1d438c9
0 ETH0.002380550.43973279
Approve187249662023-12-06 4:40:59408 days ago1701837659IN
0x20977401...9d1d438c9
0 ETH0.0022829848.37351914
Approve187235092023-12-05 23:46:11408 days ago1701819971IN
0x20977401...9d1d438c9
0 ETH0.0021895646.33507121
Approve187217442023-12-05 17:50:59409 days ago1701798659IN
0x20977401...9d1d438c9
0 ETH0.0039958284.66624556
Approve187210852023-12-05 15:38:11409 days ago1701790691IN
0x20977401...9d1d438c9
0 ETH0.002689457.30560098
Approve187146962023-12-04 18:10:11410 days ago1701713411IN
0x20977401...9d1d438c9
0 ETH0.0015005154.85323354
Approve187144252023-12-04 17:15:35410 days ago1701710135IN
0x20977401...9d1d438c9
0 ETH0.0023665550.14427955
Approve187123532023-12-04 10:17:59410 days ago1701685079IN
0x20977401...9d1d438c9
0 ETH0.0012167544.48033372
Approve187123402023-12-04 10:15:23410 days ago1701684923IN
0x20977401...9d1d438c9
0 ETH0.0010358837.86805353
Approve187123352023-12-04 10:14:23410 days ago1701684863IN
0x20977401...9d1d438c9
0 ETH0.0010262937.51777172
Approve186989962023-12-02 13:24:11412 days ago1701523451IN
0x20977401...9d1d438c9
0 ETH0.0013550128.7109987
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
189952162024-01-13 3:13:23370 days ago1705115603
0x20977401...9d1d438c9
0.01385185 ETH
189952162024-01-13 3:13:23370 days ago1705115603
0x20977401...9d1d438c9
0.01385185 ETH
188577652023-12-24 19:41:11390 days ago1703446871
0x20977401...9d1d438c9
0.00221107 ETH
188577652023-12-24 19:41:11390 days ago1703446871
0x20977401...9d1d438c9
0.00221107 ETH
188308682023-12-21 1:07:23393 days ago1703120843
0x20977401...9d1d438c9
0.00135618 ETH
188308682023-12-21 1:07:23393 days ago1703120843
0x20977401...9d1d438c9
0.00135618 ETH
187817922023-12-14 3:45:11400 days ago1702525511
0x20977401...9d1d438c9
0.00185416 ETH
187817922023-12-14 3:45:11400 days ago1702525511
0x20977401...9d1d438c9
0.00185416 ETH
187620272023-12-11 9:19:35403 days ago1702286375
0x20977401...9d1d438c9
0.00179429 ETH
187620272023-12-11 9:19:35403 days ago1702286375
0x20977401...9d1d438c9
0.00179429 ETH
187526572023-12-10 1:52:47404 days ago1702173167
0x20977401...9d1d438c9
0.00340571 ETH
187526572023-12-10 1:52:47404 days ago1702173167
0x20977401...9d1d438c9
0.00340571 ETH
187401022023-12-08 7:38:47406 days ago1702021127
0x20977401...9d1d438c9
0.00369312 ETH
187401022023-12-08 7:38:47406 days ago1702021127
0x20977401...9d1d438c9
0.00369312 ETH
187400732023-12-08 7:32:59406 days ago1702020779
0x20977401...9d1d438c9
0.00252952 ETH
187400732023-12-08 7:32:59406 days ago1702020779
0x20977401...9d1d438c9
0.00252952 ETH
187331442023-12-07 8:11:59407 days ago1701936719
0x20977401...9d1d438c9
0.00132926 ETH
187331442023-12-07 8:11:59407 days ago1701936719
0x20977401...9d1d438c9
0.00132926 ETH
187289502023-12-06 18:05:23408 days ago1701885923
0x20977401...9d1d438c9
0.00421394 ETH
187289502023-12-06 18:05:23408 days ago1701885923
0x20977401...9d1d438c9
0.00421394 ETH
187252102023-12-06 5:30:47408 days ago1701840647
0x20977401...9d1d438c9
0.00120426 ETH
187252102023-12-06 5:30:47408 days ago1701840647
0x20977401...9d1d438c9
0.00120426 ETH
187249682023-12-06 4:41:23408 days ago1701837683
0x20977401...9d1d438c9
0.00256472 ETH
187249682023-12-06 4:41:23408 days ago1701837683
0x20977401...9d1d438c9
0.00256472 ETH
187235112023-12-05 23:46:35408 days ago1701819995
0x20977401...9d1d438c9
0.00344259 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SHITEX

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : SHITEX.sol
/**
 *Submitted for verification at Etherscan.io on 2023-10-27
 */

// SPDX-License-Identifier: UNLISCENCED

/**
 * tg: t.me/shitexeth
 * web: https://shitcoinexchange.fun
 */

pragma solidity 0.8.20;

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) internal _balances;

    mapping(address => mapping(address => uint256)) internal _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

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

    function decreaseAllowance(
        address spender,
        uint256 subtractedValue
    ) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        _balances[account] = accountBalance - amount;
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);
    }

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

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

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

library Address {
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract SHITEX is ERC20, Ownable {
    using Address for address payable;

    IRouter public router;
    address public pair;

    bool private swapping;
    bool public swapEnabled;
    bool public tradingEnabled;

    uint256 public genesis_block;
    uint256 public deadblocks = 0;

    uint256 public swapThreshold;
    uint256 public maxTxAmount;
    uint256 public maxWalletAmount;

    address public marketingWallet = 0x32329D2603Ad3c86BC053e1371C18A607bBd864f;

    uint256 public buyTax = 20;
    uint256 public sellTax = 35;

    mapping(address => bool) public excludedFromFees;
    mapping(address => bool) private isBot;

    modifier inSwap() {
        if (!swapping) {
            swapping = true;
            _;
            swapping = false;
        }
    }

    constructor() ERC20("Shitcoin Exchange", "SHITEX") {
        _mint(msg.sender, 1e8 * 10 ** decimals());

        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;

        excludedFromFees[address(this)] = true;
        excludedFromFees[marketingWallet] = true;
        excludedFromFees[msg.sender] = true;
        excludedFromFees[address(0xdead)] = true;

        swapThreshold = (totalSupply() * 2) / 10000;
        maxTxAmount = (totalSupply() * 5) / 100;
        maxWalletAmount = (totalSupply() * 2) / 100;
    }

    function _transfer(address sender, address recipient, uint256 amount) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");
        require(!isBot[sender] && !isBot[recipient], "You can't transfer tokens");

        if (!excludedFromFees[sender] && !excludedFromFees[recipient] && !swapping) {
            require(tradingEnabled, "Trading not active yet");
            if (genesis_block + deadblocks > block.number) {
                if (recipient != pair) isBot[recipient] = true;
                if (sender != pair) isBot[sender] = true;
            }
            require(amount <= maxTxAmount, "You are exceeding maxTxAmount");
            if (recipient != pair) {
                require(
                    balanceOf(recipient) + amount <= maxWalletAmount,
                    "You are exceeding maxWalletAmount"
                );
            }
        }

        uint256 fee;

        if (swapping || excludedFromFees[sender] || excludedFromFees[recipient]) fee = 0;
        else {
            if (recipient == pair) fee = (amount * sellTax) / 100;
            else fee = (amount * buyTax) / 100;
        }

        if (swapEnabled && !swapping && sender != pair && fee > 0) swapForFees();

        super._transfer(sender, recipient, amount - fee);
        if (fee > 0) super._transfer(sender, address(this), fee);
    }

    function swapForFees() private inSwap {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= swapThreshold) {
            uint256 toSwap = contractBalance;

            swapTokensForETH(toSwap);

            uint256 marketingAmt = address(this).balance;
            if (marketingAmt > 0) {
                payable(marketingWallet).sendValue(marketingAmt);
            }
        }
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

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

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function setSwapEnabled(bool state) external onlyOwner {
        swapEnabled = state;
    }

    function setSwapThreshold(uint256 new_amount) external onlyOwner {
        swapThreshold = new_amount;
    }

    function enableTrading(uint256 numOfDeadBlocks) external onlyOwner {
        require(!tradingEnabled, "Trading already active");
        tradingEnabled = true;
        swapEnabled = true;
        genesis_block = block.number;
        deadblocks = numOfDeadBlocks;
    }

    function setBuyTaxes(uint256 _marketing) external onlyOwner {
        buyTax = _marketing;
    }

    function setSellTaxes(uint256 _marketing) external onlyOwner {
        sellTax = _marketing;
    }

    function updateMarketingWallet(address newWallet) external onlyOwner {
        marketingWallet = newWallet;
    }

    function updateRouterAndPair(IRouter _router, address _pair) external onlyOwner {
        router = _router;
        pair = _pair;
    }

    function addBots(address[] memory isBot_) public onlyOwner {
        for (uint i = 0; i < isBot_.length; i++) {
            isBot[isBot_[i]] = true;
        }
    }

    function updateExcludedFromFees(address _address, bool state) external onlyOwner {
        excludedFromFees[_address] = state;
    }

    function updateMaxTxAmount(uint256 _percen) external onlyOwner {
        maxTxAmount = (totalSupply() * _percen) / 100;
    }

    function updateMaxWalletAmount(uint256 _percen) external onlyOwner {
        maxWalletAmount = (totalSupply() * _percen) / 100;
    }

    function removeLimit() external onlyOwner {
        maxTxAmount = totalSupply();
        maxWalletAmount = totalSupply();
    }

    function rescueERC20(address tokenAddress, uint256 amount) external onlyOwner {
        IERC20(tokenAddress).transfer(owner(), amount);
    }

    function rescueETH(uint256 weiAmount) external onlyOwner {
        payable(owner()).sendValue(weiAmount);
    }

    function manualSwap(uint256 amount, uint256 marketingPercentage) external onlyOwner {
        uint256 initBalance = address(this).balance;
        swapTokensForETH(amount);
        uint256 newBalance = address(this).balance - initBalance;
        if (marketingPercentage > 0)
            payable(marketingWallet).sendValue(
                (newBalance * marketingPercentage) / (marketingPercentage)
            );
    }

    // fallbacks
    receive() external payable {}
}

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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":[{"internalType":"address[]","name":"isBot_","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","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":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadblocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numOfDeadBlocks","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"genesis_block","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"marketingPercentage","type":"uint256"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"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":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percen","type":"uint256"}],"name":"updateMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percen","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IRouter","name":"_router","type":"address"},{"internalType":"address","name":"_pair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f6009557332329d2603ad3c86bc053e1371c18a607bbd864f600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506014600e556023600f5534801562000072575f80fd5b506040518060400160405280601181526020017f53686974636f696e2045786368616e67650000000000000000000000000000008152506040518060400160405280600681526020017f53484954455800000000000000000000000000000000000000000000000000008152508160039081620000f0919062000a15565b50806004908162000102919062000a15565b50505062000125620001196200057460201b60201c565b6200057b60201b60201c565b62000165336200013a6200063e60201b60201c565b600a62000148919062000c82565b6305f5e10062000159919062000cd2565b6200064660201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f8173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001c8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001ee919062000d81565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000254573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200027a919062000d81565b6040518363ffffffff1660e01b81526004016200029992919062000dc2565b6020604051808303815f875af1158015620002b6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002dc919062000d81565b90508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160105f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506127106002620004ea620007a360201b60201c565b620004f6919062000cd2565b62000502919062000e1a565b600a81905550606460056200051c620007a360201b60201c565b62000528919062000cd2565b62000534919062000e1a565b600b81905550606460026200054e620007a360201b60201c565b6200055a919062000cd2565b62000566919062000e1a565b600c81905550505062000f35565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f6012905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620006b7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006ae9062000eaf565b60405180910390fd5b620006ca5f8383620007ac60201b60201c565b8060025f828254620006dd919062000ecf565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825462000731919062000ecf565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000797919062000f1a565b60405180910390a35050565b5f600254905090565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200082d57607f821691505b602082108103620008435762000842620007e8565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620008a77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200086a565b620008b386836200086a565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620008fd620008f7620008f184620008cb565b620008d4565b620008cb565b9050919050565b5f819050919050565b6200091883620008dd565b62000930620009278262000904565b84845462000876565b825550505050565b5f90565b6200094662000938565b620009538184846200090d565b505050565b5b818110156200097a576200096e5f826200093c565b60018101905062000959565b5050565b601f821115620009c957620009938162000849565b6200099e846200085b565b81016020851015620009ae578190505b620009c6620009bd856200085b565b83018262000958565b50505b505050565b5f82821c905092915050565b5f620009eb5f1984600802620009ce565b1980831691505092915050565b5f62000a058383620009da565b9150826002028217905092915050565b62000a2082620007b1565b67ffffffffffffffff81111562000a3c5762000a3b620007bb565b5b62000a48825462000815565b62000a558282856200097e565b5f60209050601f83116001811462000a8b575f841562000a76578287015190505b62000a828582620009f8565b86555062000af1565b601f19841662000a9b8662000849565b5f5b8281101562000ac45784890151825560018201915060208501945060208101905062000a9d565b8683101562000ae4578489015162000ae0601f891682620009da565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000b835780860481111562000b5b5762000b5a62000af9565b5b600185161562000b6b5780820291505b808102905062000b7b8562000b26565b945062000b3b565b94509492505050565b5f8262000b9d576001905062000c6f565b8162000bac575f905062000c6f565b816001811462000bc5576002811462000bd05762000c06565b600191505062000c6f565b60ff84111562000be55762000be462000af9565b5b8360020a91508482111562000bff5762000bfe62000af9565b5b5062000c6f565b5060208310610133831016604e8410600b841016171562000c405782820a90508381111562000c3a5762000c3962000af9565b5b62000c6f565b62000c4f848484600162000b32565b9250905081840481111562000c695762000c6862000af9565b5b81810290505b9392505050565b5f60ff82169050919050565b5f62000c8e82620008cb565b915062000c9b8362000c76565b925062000cca7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000b8c565b905092915050565b5f62000cde82620008cb565b915062000ceb83620008cb565b925082820262000cfb81620008cb565b9150828204841483151762000d155762000d1462000af9565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000d4b8262000d20565b9050919050565b62000d5d8162000d3f565b811462000d68575f80fd5b50565b5f8151905062000d7b8162000d52565b92915050565b5f6020828403121562000d995762000d9862000d1c565b5b5f62000da88482850162000d6b565b91505092915050565b62000dbc8162000d3f565b82525050565b5f60408201905062000dd75f83018562000db1565b62000de6602083018462000db1565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000e2682620008cb565b915062000e3383620008cb565b92508262000e465762000e4562000ded565b5b828204905092915050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000e97601f8362000e51565b915062000ea48262000e61565b602082019050919050565b5f6020820190508181035f83015262000ec88162000e89565b9050919050565b5f62000edb82620008cb565b915062000ee883620008cb565b925082820190508082111562000f035762000f0262000af9565b5b92915050565b62000f1481620008cb565b82525050565b5f60208201905062000f2f5f83018462000f09565b92915050565b613f3b8062000f435f395ff3fe608060405260043610610254575f3560e01c80638c0b5e2211610138578063aa4bde28116100b5578063dbe66ca011610079578063dbe66ca014610873578063dd62ed3e146108af578063e01af92c146108eb578063e545fd6d14610913578063f2fde38b1461093b578063f887ea40146109635761025b565b8063aa4bde28146107a7578063aacebbe3146107d1578063c18bc195146107f9578063cc1776d314610821578063d34628cc1461084b5761025b565b80639e252f00116100fc5780639e252f00146106b5578063a3ca847d146106dd578063a457c2d714610705578063a8aa1b3114610741578063a9059cbb1461076b5761025b565b80638c0b5e22146105e75780638cd4426d146106115780638da5cb5b1461063957806395d89b41146106635780639d0014b11461068d5761025b565b80634ada218b116101d15780636256d181116101955780636256d181146104f15780636ddd17131461051957806370a0823114610543578063715018a61461057f57806375f0a8741461059557806382aa7c68146105bf5761025b565b80634ada218b146104355780634f7041a51461045f57806350c9a88f1461048957806356faae96146104b357806362256589146104db5761025b565b806323b872dd1161021857806323b872dd14610341578063274a533c1461037d578063313ce567146103a757806339509351146103d157806340b28c2f1461040d5761025b565b80630445b6671461025f57806306fdde03146102895780630940bbc7146102b3578063095ea7b3146102db57806318160ddd146103175761025b565b3661025b57005b5f80fd5b34801561026a575f80fd5b5061027361098d565b6040516102809190612bfd565b60405180910390f35b348015610294575f80fd5b5061029d610993565b6040516102aa9190612ca0565b60405180910390f35b3480156102be575f80fd5b506102d960048036038101906102d49190612cfb565b610a23565b005b3480156102e6575f80fd5b5061030160048036038101906102fc9190612d80565b610aa9565b60405161030e9190612dd8565b60405180910390f35b348015610322575f80fd5b5061032b610ac6565b6040516103389190612bfd565b60405180910390f35b34801561034c575f80fd5b5061036760048036038101906103629190612df1565b610acf565b6040516103749190612dd8565b60405180910390f35b348015610388575f80fd5b50610391610bca565b60405161039e9190612bfd565b60405180910390f35b3480156103b2575f80fd5b506103bb610bd0565b6040516103c89190612e5c565b60405180910390f35b3480156103dc575f80fd5b506103f760048036038101906103f29190612d80565b610bd8565b6040516104049190612dd8565b60405180910390f35b348015610418575f80fd5b50610433600480360381019061042e9190612eb0565b610c7f565b005b348015610440575f80fd5b50610449610d7f565b6040516104569190612dd8565b60405180910390f35b34801561046a575f80fd5b50610473610d92565b6040516104809190612bfd565b60405180910390f35b348015610494575f80fd5b5061049d610d98565b6040516104aa9190612bfd565b60405180910390f35b3480156104be575f80fd5b506104d960048036038101906104d49190612eee565b610d9e565b005b3480156104e6575f80fd5b506104ef610ea5565b005b3480156104fc575f80fd5b5061051760048036038101906105129190612cfb565b610f3f565b005b348015610524575f80fd5b5061052d610fe3565b60405161053a9190612dd8565b60405180910390f35b34801561054e575f80fd5b5061056960048036038101906105649190612f2c565b610ff6565b6040516105769190612bfd565b60405180910390f35b34801561058a575f80fd5b5061059361103b565b005b3480156105a0575f80fd5b506105a96110c2565b6040516105b69190612f66565b60405180910390f35b3480156105ca575f80fd5b506105e560048036038101906105e09190612cfb565b6110e7565b005b3480156105f2575f80fd5b506105fb6111fa565b6040516106089190612bfd565b60405180910390f35b34801561061c575f80fd5b5061063760048036038101906106329190612d80565b611200565b005b348015610644575f80fd5b5061064d611303565b60405161065a9190612f66565b60405180910390f35b34801561066e575f80fd5b5061067761132b565b6040516106849190612ca0565b60405180910390f35b348015610698575f80fd5b506106b360048036038101906106ae9190612cfb565b6113bb565b005b3480156106c0575f80fd5b506106db60048036038101906106d69190612cfb565b611441565b005b3480156106e8575f80fd5b5061070360048036038101906106fe9190612cfb565b6114f0565b005b348015610710575f80fd5b5061072b60048036038101906107269190612d80565b611576565b6040516107389190612dd8565b60405180910390f35b34801561074c575f80fd5b50610755611665565b6040516107629190612f66565b60405180910390f35b348015610776575f80fd5b50610791600480360381019061078c9190612d80565b61168a565b60405161079e9190612dd8565b60405180910390f35b3480156107b2575f80fd5b506107bb6116a7565b6040516107c89190612bfd565b60405180910390f35b3480156107dc575f80fd5b506107f760048036038101906107f29190612f2c565b6116ad565b005b348015610804575f80fd5b5061081f600480360381019061081a9190612cfb565b61176c565b005b34801561082c575f80fd5b50610835611810565b6040516108429190612bfd565b60405180910390f35b348015610856575f80fd5b50610871600480360381019061086c91906130bf565b611816565b005b34801561087e575f80fd5b5061089960048036038101906108949190612f2c565b611923565b6040516108a69190612dd8565b60405180910390f35b3480156108ba575f80fd5b506108d560048036038101906108d09190613106565b611940565b6040516108e29190612bfd565b60405180910390f35b3480156108f6575f80fd5b50610911600480360381019061090c919061316e565b6119c2565b005b34801561091e575f80fd5b5061093960048036038101906109349190613199565b611a5b565b005b348015610946575f80fd5b50610961600480360381019061095c9190612f2c565b611b2f565b005b34801561096e575f80fd5b50610977611c25565b6040516109849190613232565b60405180910390f35b600a5481565b6060600380546109a290613278565b80601f01602080910402602001604051908101604052809291908181526020018280546109ce90613278565b8015610a195780601f106109f057610100808354040283529160200191610a19565b820191905f5260205f20905b8154815290600101906020018083116109fc57829003601f168201915b5050505050905090565b610a2b611c4a565b73ffffffffffffffffffffffffffffffffffffffff16610a49611303565b73ffffffffffffffffffffffffffffffffffffffff1614610a9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a96906132f2565b60405180910390fd5b80600f8190555050565b5f610abc610ab5611c4a565b8484611c51565b6001905092915050565b5f600254905090565b5f610adb848484611e14565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610b22611c4a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9890613380565b60405180910390fd5b610bbe85610bad611c4a565b8584610bb991906133cb565b611c51565b60019150509392505050565b60085481565b5f6012905090565b5f610c75610be4611c4a565b848460015f610bf1611c4a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610c7091906133fe565b611c51565b6001905092915050565b610c87611c4a565b73ffffffffffffffffffffffffffffffffffffffff16610ca5611303565b73ffffffffffffffffffffffffffffffffffffffff1614610cfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf2906132f2565b60405180910390fd5b8160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600760169054906101000a900460ff1681565b600e5481565b60095481565b610da6611c4a565b73ffffffffffffffffffffffffffffffffffffffff16610dc4611303565b73ffffffffffffffffffffffffffffffffffffffff1614610e1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e11906132f2565b60405180910390fd5b5f479050610e27836124bb565b5f8147610e3491906133cb565b90505f831115610e9f57610e9e838483610e4e9190613431565b610e58919061349f565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166126f190919063ffffffff16565b5b50505050565b610ead611c4a565b73ffffffffffffffffffffffffffffffffffffffff16610ecb611303565b73ffffffffffffffffffffffffffffffffffffffff1614610f21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f18906132f2565b60405180910390fd5b610f29610ac6565b600b81905550610f37610ac6565b600c81905550565b610f47611c4a565b73ffffffffffffffffffffffffffffffffffffffff16610f65611303565b73ffffffffffffffffffffffffffffffffffffffff1614610fbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb2906132f2565b60405180910390fd5b606481610fc6610ac6565b610fd09190613431565b610fda919061349f565b600b8190555050565b600760159054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611043611c4a565b73ffffffffffffffffffffffffffffffffffffffff16611061611303565b73ffffffffffffffffffffffffffffffffffffffff16146110b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ae906132f2565b60405180910390fd5b6110c05f6127e1565b565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6110ef611c4a565b73ffffffffffffffffffffffffffffffffffffffff1661110d611303565b73ffffffffffffffffffffffffffffffffffffffff1614611163576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115a906132f2565b60405180910390fd5b600760169054906101000a900460ff16156111b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111aa90613519565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff021916908315150217905550436008819055508060098190555050565b600b5481565b611208611c4a565b73ffffffffffffffffffffffffffffffffffffffff16611226611303565b73ffffffffffffffffffffffffffffffffffffffff161461127c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611273906132f2565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6112a0611303565b836040518363ffffffff1660e01b81526004016112be929190613537565b6020604051808303815f875af11580156112da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112fe9190613572565b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461133a90613278565b80601f016020809104026020016040519081016040528092919081815260200182805461136690613278565b80156113b15780601f10611388576101008083540402835291602001916113b1565b820191905f5260205f20905b81548152906001019060200180831161139457829003601f168201915b5050505050905090565b6113c3611c4a565b73ffffffffffffffffffffffffffffffffffffffff166113e1611303565b73ffffffffffffffffffffffffffffffffffffffff1614611437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142e906132f2565b60405180910390fd5b80600a8190555050565b611449611c4a565b73ffffffffffffffffffffffffffffffffffffffff16611467611303565b73ffffffffffffffffffffffffffffffffffffffff16146114bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b4906132f2565b60405180910390fd5b6114ed816114c9611303565b73ffffffffffffffffffffffffffffffffffffffff166126f190919063ffffffff16565b50565b6114f8611c4a565b73ffffffffffffffffffffffffffffffffffffffff16611516611303565b73ffffffffffffffffffffffffffffffffffffffff161461156c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611563906132f2565b60405180910390fd5b80600e8190555050565b5f8060015f611583611c4a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561163d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116349061360d565b60405180910390fd5b61165a611648611c4a565b85858461165591906133cb565b611c51565b600191505092915050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61169d611696611c4a565b8484611e14565b6001905092915050565b600c5481565b6116b5611c4a565b73ffffffffffffffffffffffffffffffffffffffff166116d3611303565b73ffffffffffffffffffffffffffffffffffffffff1614611729576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611720906132f2565b60405180910390fd5b80600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611774611c4a565b73ffffffffffffffffffffffffffffffffffffffff16611792611303565b73ffffffffffffffffffffffffffffffffffffffff16146117e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117df906132f2565b60405180910390fd5b6064816117f3610ac6565b6117fd9190613431565b611807919061349f565b600c8190555050565b600f5481565b61181e611c4a565b73ffffffffffffffffffffffffffffffffffffffff1661183c611303565b73ffffffffffffffffffffffffffffffffffffffff1614611892576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611889906132f2565b60405180910390fd5b5f5b815181101561191f57600160115f8484815181106118b5576118b461362b565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808061191790613658565b915050611894565b5050565b6010602052805f5260405f205f915054906101000a900460ff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6119ca611c4a565b73ffffffffffffffffffffffffffffffffffffffff166119e8611303565b73ffffffffffffffffffffffffffffffffffffffff1614611a3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a35906132f2565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b611a63611c4a565b73ffffffffffffffffffffffffffffffffffffffff16611a81611303565b73ffffffffffffffffffffffffffffffffffffffff1614611ad7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ace906132f2565b60405180910390fd5b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b611b37611c4a565b73ffffffffffffffffffffffffffffffffffffffff16611b55611303565b73ffffffffffffffffffffffffffffffffffffffff1614611bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba2906132f2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c109061370f565b60405180910390fd5b611c22816127e1565b50565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb69061379d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d249061382b565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e079190612bfd565b60405180910390a3505050565b5f8111611e56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4d906138b9565b60405180910390fd5b60115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611ef4575060115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2a90613921565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611fd1575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611fea5750600760149054906101000a900460ff16155b1561229d57600760169054906101000a900460ff1661203e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203590613989565b60405180910390fd5b4360095460085461204f91906133fe565b11156121aa5760075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146120ff57600160115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146121a957600160115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b5b600b548111156121ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e6906139f1565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461229c57600c548161225084610ff6565b61225a91906133fe565b111561229b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229290613a7f565b60405180910390fd5b5b5b5f600760149054906101000a900460ff16806122ff575060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612350575060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561235d575f90506123f0565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123d2576064600f54836123c19190613431565b6123cb919061349f565b90506123ef565b6064600e54836123e29190613431565b6123ec919061349f565b90505b5b600760159054906101000a900460ff1680156124195750600760149054906101000a900460ff16155b8015612472575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561247d57505f81115b1561248b5761248a6128a4565b5b6124a18484838561249c91906133cb565b61296d565b5f8111156124b5576124b484308361296d565b5b50505050565b5f600267ffffffffffffffff8111156124d7576124d6612f83565b5b6040519080825280602002602001820160405280156125055781602001602082028036833780820191505090505b50905030815f8151811061251c5761251b61362b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125e49190613ab1565b816001815181106125f8576125f761362b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061265e3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c51565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016126c0959493929190613bcc565b5f604051808303815f87803b1580156126d7575f80fd5b505af11580156126e9573d5f803e3d5ffd5b505050505050565b80471015612734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272b90613c6e565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff168260405161275990613cb9565b5f6040518083038185875af1925050503d805f8114612793576040519150601f19603f3d011682016040523d82523d5f602084013e612798565b606091505b50509050806127dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d390613d3d565b60405180910390fd5b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff1661296b576001600760146101000a81548160ff0219169083151502179055505f6128dd30610ff6565b9050600a54811061294f575f8190506128f5816124bb565b5f4790505f81111561294c5761294b81600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166126f190919063ffffffff16565b5b50505b505f600760146101000a81548160ff0219169083151502179055505b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036129db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d290613dcb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4090613e59565b60405180910390fd5b612a54838383612be0565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612ad7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ace90613ee7565b60405180910390fd5b8181612ae391906133cb565b5f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612b6e91906133fe565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612bd29190612bfd565b60405180910390a350505050565b505050565b5f819050919050565b612bf781612be5565b82525050565b5f602082019050612c105f830184612bee565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612c4d578082015181840152602081019050612c32565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612c7282612c16565b612c7c8185612c20565b9350612c8c818560208601612c30565b612c9581612c58565b840191505092915050565b5f6020820190508181035f830152612cb88184612c68565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b612cda81612be5565b8114612ce4575f80fd5b50565b5f81359050612cf581612cd1565b92915050565b5f60208284031215612d1057612d0f612cc9565b5b5f612d1d84828501612ce7565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612d4f82612d26565b9050919050565b612d5f81612d45565b8114612d69575f80fd5b50565b5f81359050612d7a81612d56565b92915050565b5f8060408385031215612d9657612d95612cc9565b5b5f612da385828601612d6c565b9250506020612db485828601612ce7565b9150509250929050565b5f8115159050919050565b612dd281612dbe565b82525050565b5f602082019050612deb5f830184612dc9565b92915050565b5f805f60608486031215612e0857612e07612cc9565b5b5f612e1586828701612d6c565b9350506020612e2686828701612d6c565b9250506040612e3786828701612ce7565b9150509250925092565b5f60ff82169050919050565b612e5681612e41565b82525050565b5f602082019050612e6f5f830184612e4d565b92915050565b5f612e7f82612d45565b9050919050565b612e8f81612e75565b8114612e99575f80fd5b50565b5f81359050612eaa81612e86565b92915050565b5f8060408385031215612ec657612ec5612cc9565b5b5f612ed385828601612e9c565b9250506020612ee485828601612d6c565b9150509250929050565b5f8060408385031215612f0457612f03612cc9565b5b5f612f1185828601612ce7565b9250506020612f2285828601612ce7565b9150509250929050565b5f60208284031215612f4157612f40612cc9565b5b5f612f4e84828501612d6c565b91505092915050565b612f6081612d45565b82525050565b5f602082019050612f795f830184612f57565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612fb982612c58565b810181811067ffffffffffffffff82111715612fd857612fd7612f83565b5b80604052505050565b5f612fea612cc0565b9050612ff68282612fb0565b919050565b5f67ffffffffffffffff82111561301557613014612f83565b5b602082029050602081019050919050565b5f80fd5b5f61303c61303784612ffb565b612fe1565b9050808382526020820190506020840283018581111561305f5761305e613026565b5b835b8181101561308857806130748882612d6c565b845260208401935050602081019050613061565b5050509392505050565b5f82601f8301126130a6576130a5612f7f565b5b81356130b684826020860161302a565b91505092915050565b5f602082840312156130d4576130d3612cc9565b5b5f82013567ffffffffffffffff8111156130f1576130f0612ccd565b5b6130fd84828501613092565b91505092915050565b5f806040838503121561311c5761311b612cc9565b5b5f61312985828601612d6c565b925050602061313a85828601612d6c565b9150509250929050565b61314d81612dbe565b8114613157575f80fd5b50565b5f8135905061316881613144565b92915050565b5f6020828403121561318357613182612cc9565b5b5f6131908482850161315a565b91505092915050565b5f80604083850312156131af576131ae612cc9565b5b5f6131bc85828601612d6c565b92505060206131cd8582860161315a565b9150509250929050565b5f819050919050565b5f6131fa6131f56131f084612d26565b6131d7565b612d26565b9050919050565b5f61320b826131e0565b9050919050565b5f61321c82613201565b9050919050565b61322c81613212565b82525050565b5f6020820190506132455f830184613223565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061328f57607f821691505b6020821081036132a2576132a161324b565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6132dc602083612c20565b91506132e7826132a8565b602082019050919050565b5f6020820190508181035f830152613309816132d0565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f61336a602883612c20565b915061337582613310565b604082019050919050565b5f6020820190508181035f8301526133978161335e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6133d582612be5565b91506133e083612be5565b92508282039050818111156133f8576133f761339e565b5b92915050565b5f61340882612be5565b915061341383612be5565b925082820190508082111561342b5761342a61339e565b5b92915050565b5f61343b82612be5565b915061344683612be5565b925082820261345481612be5565b9150828204841483151761346b5761346a61339e565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6134a982612be5565b91506134b483612be5565b9250826134c4576134c3613472565b5b828204905092915050565b7f54726164696e6720616c726561647920616374697665000000000000000000005f82015250565b5f613503601683612c20565b915061350e826134cf565b602082019050919050565b5f6020820190508181035f830152613530816134f7565b9050919050565b5f60408201905061354a5f830185612f57565b6135576020830184612bee565b9392505050565b5f8151905061356c81613144565b92915050565b5f6020828403121561358757613586612cc9565b5b5f6135948482850161355e565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6135f7602583612c20565b91506136028261359d565b604082019050919050565b5f6020820190508181035f830152613624816135eb565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61366282612be5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036136945761369361339e565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6136f9602683612c20565b91506137048261369f565b604082019050919050565b5f6020820190508181035f830152613726816136ed565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613787602483612c20565b91506137928261372d565b604082019050919050565b5f6020820190508181035f8301526137b48161377b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613815602283612c20565b9150613820826137bb565b604082019050919050565b5f6020820190508181035f83015261384281613809565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6138a3602983612c20565b91506138ae82613849565b604082019050919050565b5f6020820190508181035f8301526138d081613897565b9050919050565b7f596f752063616e2774207472616e7366657220746f6b656e73000000000000005f82015250565b5f61390b601983612c20565b9150613916826138d7565b602082019050919050565b5f6020820190508181035f830152613938816138ff565b9050919050565b7f54726164696e67206e6f742061637469766520796574000000000000000000005f82015250565b5f613973601683612c20565b915061397e8261393f565b602082019050919050565b5f6020820190508181035f8301526139a081613967565b9050919050565b7f596f752061726520657863656564696e67206d61785478416d6f756e740000005f82015250565b5f6139db601d83612c20565b91506139e6826139a7565b602082019050919050565b5f6020820190508181035f830152613a08816139cf565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e5f8201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b5f613a69602183612c20565b9150613a7482613a0f565b604082019050919050565b5f6020820190508181035f830152613a9681613a5d565b9050919050565b5f81519050613aab81612d56565b92915050565b5f60208284031215613ac657613ac5612cc9565b5b5f613ad384828501613a9d565b91505092915050565b5f819050919050565b5f613aff613afa613af584613adc565b6131d7565b612be5565b9050919050565b613b0f81613ae5565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613b4781612d45565b82525050565b5f613b588383613b3e565b60208301905092915050565b5f602082019050919050565b5f613b7a82613b15565b613b848185613b1f565b9350613b8f83613b2f565b805f5b83811015613bbf578151613ba68882613b4d565b9750613bb183613b64565b925050600181019050613b92565b5085935050505092915050565b5f60a082019050613bdf5f830188612bee565b613bec6020830187613b06565b8181036040830152613bfe8186613b70565b9050613c0d6060830185612f57565b613c1a6080830184612bee565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e63650000005f82015250565b5f613c58601d83612c20565b9150613c6382613c24565b602082019050919050565b5f6020820190508181035f830152613c8581613c4c565b9050919050565b5f81905092915050565b50565b5f613ca45f83613c8c565b9150613caf82613c96565b5f82019050919050565b5f613cc382613c99565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c20725f8201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b5f613d27603a83612c20565b9150613d3282613ccd565b604082019050919050565b5f6020820190508181035f830152613d5481613d1b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613db5602583612c20565b9150613dc082613d5b565b604082019050919050565b5f6020820190508181035f830152613de281613da9565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613e43602383612c20565b9150613e4e82613de9565b604082019050919050565b5f6020820190508181035f830152613e7081613e37565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613ed1602683612c20565b9150613edc82613e77565b604082019050919050565b5f6020820190508181035f830152613efe81613ec5565b905091905056fea2646970667358221220f223e7d073116bb221f035cccab281c40c00a56a5f9f72e85a6c9de9501c8fdc64736f6c63430008140033

Deployed Bytecode

0x608060405260043610610254575f3560e01c80638c0b5e2211610138578063aa4bde28116100b5578063dbe66ca011610079578063dbe66ca014610873578063dd62ed3e146108af578063e01af92c146108eb578063e545fd6d14610913578063f2fde38b1461093b578063f887ea40146109635761025b565b8063aa4bde28146107a7578063aacebbe3146107d1578063c18bc195146107f9578063cc1776d314610821578063d34628cc1461084b5761025b565b80639e252f00116100fc5780639e252f00146106b5578063a3ca847d146106dd578063a457c2d714610705578063a8aa1b3114610741578063a9059cbb1461076b5761025b565b80638c0b5e22146105e75780638cd4426d146106115780638da5cb5b1461063957806395d89b41146106635780639d0014b11461068d5761025b565b80634ada218b116101d15780636256d181116101955780636256d181146104f15780636ddd17131461051957806370a0823114610543578063715018a61461057f57806375f0a8741461059557806382aa7c68146105bf5761025b565b80634ada218b146104355780634f7041a51461045f57806350c9a88f1461048957806356faae96146104b357806362256589146104db5761025b565b806323b872dd1161021857806323b872dd14610341578063274a533c1461037d578063313ce567146103a757806339509351146103d157806340b28c2f1461040d5761025b565b80630445b6671461025f57806306fdde03146102895780630940bbc7146102b3578063095ea7b3146102db57806318160ddd146103175761025b565b3661025b57005b5f80fd5b34801561026a575f80fd5b5061027361098d565b6040516102809190612bfd565b60405180910390f35b348015610294575f80fd5b5061029d610993565b6040516102aa9190612ca0565b60405180910390f35b3480156102be575f80fd5b506102d960048036038101906102d49190612cfb565b610a23565b005b3480156102e6575f80fd5b5061030160048036038101906102fc9190612d80565b610aa9565b60405161030e9190612dd8565b60405180910390f35b348015610322575f80fd5b5061032b610ac6565b6040516103389190612bfd565b60405180910390f35b34801561034c575f80fd5b5061036760048036038101906103629190612df1565b610acf565b6040516103749190612dd8565b60405180910390f35b348015610388575f80fd5b50610391610bca565b60405161039e9190612bfd565b60405180910390f35b3480156103b2575f80fd5b506103bb610bd0565b6040516103c89190612e5c565b60405180910390f35b3480156103dc575f80fd5b506103f760048036038101906103f29190612d80565b610bd8565b6040516104049190612dd8565b60405180910390f35b348015610418575f80fd5b50610433600480360381019061042e9190612eb0565b610c7f565b005b348015610440575f80fd5b50610449610d7f565b6040516104569190612dd8565b60405180910390f35b34801561046a575f80fd5b50610473610d92565b6040516104809190612bfd565b60405180910390f35b348015610494575f80fd5b5061049d610d98565b6040516104aa9190612bfd565b60405180910390f35b3480156104be575f80fd5b506104d960048036038101906104d49190612eee565b610d9e565b005b3480156104e6575f80fd5b506104ef610ea5565b005b3480156104fc575f80fd5b5061051760048036038101906105129190612cfb565b610f3f565b005b348015610524575f80fd5b5061052d610fe3565b60405161053a9190612dd8565b60405180910390f35b34801561054e575f80fd5b5061056960048036038101906105649190612f2c565b610ff6565b6040516105769190612bfd565b60405180910390f35b34801561058a575f80fd5b5061059361103b565b005b3480156105a0575f80fd5b506105a96110c2565b6040516105b69190612f66565b60405180910390f35b3480156105ca575f80fd5b506105e560048036038101906105e09190612cfb565b6110e7565b005b3480156105f2575f80fd5b506105fb6111fa565b6040516106089190612bfd565b60405180910390f35b34801561061c575f80fd5b5061063760048036038101906106329190612d80565b611200565b005b348015610644575f80fd5b5061064d611303565b60405161065a9190612f66565b60405180910390f35b34801561066e575f80fd5b5061067761132b565b6040516106849190612ca0565b60405180910390f35b348015610698575f80fd5b506106b360048036038101906106ae9190612cfb565b6113bb565b005b3480156106c0575f80fd5b506106db60048036038101906106d69190612cfb565b611441565b005b3480156106e8575f80fd5b5061070360048036038101906106fe9190612cfb565b6114f0565b005b348015610710575f80fd5b5061072b60048036038101906107269190612d80565b611576565b6040516107389190612dd8565b60405180910390f35b34801561074c575f80fd5b50610755611665565b6040516107629190612f66565b60405180910390f35b348015610776575f80fd5b50610791600480360381019061078c9190612d80565b61168a565b60405161079e9190612dd8565b60405180910390f35b3480156107b2575f80fd5b506107bb6116a7565b6040516107c89190612bfd565b60405180910390f35b3480156107dc575f80fd5b506107f760048036038101906107f29190612f2c565b6116ad565b005b348015610804575f80fd5b5061081f600480360381019061081a9190612cfb565b61176c565b005b34801561082c575f80fd5b50610835611810565b6040516108429190612bfd565b60405180910390f35b348015610856575f80fd5b50610871600480360381019061086c91906130bf565b611816565b005b34801561087e575f80fd5b5061089960048036038101906108949190612f2c565b611923565b6040516108a69190612dd8565b60405180910390f35b3480156108ba575f80fd5b506108d560048036038101906108d09190613106565b611940565b6040516108e29190612bfd565b60405180910390f35b3480156108f6575f80fd5b50610911600480360381019061090c919061316e565b6119c2565b005b34801561091e575f80fd5b5061093960048036038101906109349190613199565b611a5b565b005b348015610946575f80fd5b50610961600480360381019061095c9190612f2c565b611b2f565b005b34801561096e575f80fd5b50610977611c25565b6040516109849190613232565b60405180910390f35b600a5481565b6060600380546109a290613278565b80601f01602080910402602001604051908101604052809291908181526020018280546109ce90613278565b8015610a195780601f106109f057610100808354040283529160200191610a19565b820191905f5260205f20905b8154815290600101906020018083116109fc57829003601f168201915b5050505050905090565b610a2b611c4a565b73ffffffffffffffffffffffffffffffffffffffff16610a49611303565b73ffffffffffffffffffffffffffffffffffffffff1614610a9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a96906132f2565b60405180910390fd5b80600f8190555050565b5f610abc610ab5611c4a565b8484611c51565b6001905092915050565b5f600254905090565b5f610adb848484611e14565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610b22611c4a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9890613380565b60405180910390fd5b610bbe85610bad611c4a565b8584610bb991906133cb565b611c51565b60019150509392505050565b60085481565b5f6012905090565b5f610c75610be4611c4a565b848460015f610bf1611c4a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610c7091906133fe565b611c51565b6001905092915050565b610c87611c4a565b73ffffffffffffffffffffffffffffffffffffffff16610ca5611303565b73ffffffffffffffffffffffffffffffffffffffff1614610cfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf2906132f2565b60405180910390fd5b8160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600760169054906101000a900460ff1681565b600e5481565b60095481565b610da6611c4a565b73ffffffffffffffffffffffffffffffffffffffff16610dc4611303565b73ffffffffffffffffffffffffffffffffffffffff1614610e1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e11906132f2565b60405180910390fd5b5f479050610e27836124bb565b5f8147610e3491906133cb565b90505f831115610e9f57610e9e838483610e4e9190613431565b610e58919061349f565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166126f190919063ffffffff16565b5b50505050565b610ead611c4a565b73ffffffffffffffffffffffffffffffffffffffff16610ecb611303565b73ffffffffffffffffffffffffffffffffffffffff1614610f21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f18906132f2565b60405180910390fd5b610f29610ac6565b600b81905550610f37610ac6565b600c81905550565b610f47611c4a565b73ffffffffffffffffffffffffffffffffffffffff16610f65611303565b73ffffffffffffffffffffffffffffffffffffffff1614610fbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb2906132f2565b60405180910390fd5b606481610fc6610ac6565b610fd09190613431565b610fda919061349f565b600b8190555050565b600760159054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611043611c4a565b73ffffffffffffffffffffffffffffffffffffffff16611061611303565b73ffffffffffffffffffffffffffffffffffffffff16146110b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ae906132f2565b60405180910390fd5b6110c05f6127e1565b565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6110ef611c4a565b73ffffffffffffffffffffffffffffffffffffffff1661110d611303565b73ffffffffffffffffffffffffffffffffffffffff1614611163576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115a906132f2565b60405180910390fd5b600760169054906101000a900460ff16156111b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111aa90613519565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff021916908315150217905550436008819055508060098190555050565b600b5481565b611208611c4a565b73ffffffffffffffffffffffffffffffffffffffff16611226611303565b73ffffffffffffffffffffffffffffffffffffffff161461127c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611273906132f2565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6112a0611303565b836040518363ffffffff1660e01b81526004016112be929190613537565b6020604051808303815f875af11580156112da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112fe9190613572565b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461133a90613278565b80601f016020809104026020016040519081016040528092919081815260200182805461136690613278565b80156113b15780601f10611388576101008083540402835291602001916113b1565b820191905f5260205f20905b81548152906001019060200180831161139457829003601f168201915b5050505050905090565b6113c3611c4a565b73ffffffffffffffffffffffffffffffffffffffff166113e1611303565b73ffffffffffffffffffffffffffffffffffffffff1614611437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142e906132f2565b60405180910390fd5b80600a8190555050565b611449611c4a565b73ffffffffffffffffffffffffffffffffffffffff16611467611303565b73ffffffffffffffffffffffffffffffffffffffff16146114bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b4906132f2565b60405180910390fd5b6114ed816114c9611303565b73ffffffffffffffffffffffffffffffffffffffff166126f190919063ffffffff16565b50565b6114f8611c4a565b73ffffffffffffffffffffffffffffffffffffffff16611516611303565b73ffffffffffffffffffffffffffffffffffffffff161461156c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611563906132f2565b60405180910390fd5b80600e8190555050565b5f8060015f611583611c4a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561163d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116349061360d565b60405180910390fd5b61165a611648611c4a565b85858461165591906133cb565b611c51565b600191505092915050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61169d611696611c4a565b8484611e14565b6001905092915050565b600c5481565b6116b5611c4a565b73ffffffffffffffffffffffffffffffffffffffff166116d3611303565b73ffffffffffffffffffffffffffffffffffffffff1614611729576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611720906132f2565b60405180910390fd5b80600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611774611c4a565b73ffffffffffffffffffffffffffffffffffffffff16611792611303565b73ffffffffffffffffffffffffffffffffffffffff16146117e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117df906132f2565b60405180910390fd5b6064816117f3610ac6565b6117fd9190613431565b611807919061349f565b600c8190555050565b600f5481565b61181e611c4a565b73ffffffffffffffffffffffffffffffffffffffff1661183c611303565b73ffffffffffffffffffffffffffffffffffffffff1614611892576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611889906132f2565b60405180910390fd5b5f5b815181101561191f57600160115f8484815181106118b5576118b461362b565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808061191790613658565b915050611894565b5050565b6010602052805f5260405f205f915054906101000a900460ff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6119ca611c4a565b73ffffffffffffffffffffffffffffffffffffffff166119e8611303565b73ffffffffffffffffffffffffffffffffffffffff1614611a3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a35906132f2565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b611a63611c4a565b73ffffffffffffffffffffffffffffffffffffffff16611a81611303565b73ffffffffffffffffffffffffffffffffffffffff1614611ad7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ace906132f2565b60405180910390fd5b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b611b37611c4a565b73ffffffffffffffffffffffffffffffffffffffff16611b55611303565b73ffffffffffffffffffffffffffffffffffffffff1614611bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba2906132f2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c109061370f565b60405180910390fd5b611c22816127e1565b50565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb69061379d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d249061382b565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e079190612bfd565b60405180910390a3505050565b5f8111611e56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4d906138b9565b60405180910390fd5b60115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611ef4575060115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2a90613921565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611fd1575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611fea5750600760149054906101000a900460ff16155b1561229d57600760169054906101000a900460ff1661203e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203590613989565b60405180910390fd5b4360095460085461204f91906133fe565b11156121aa5760075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146120ff57600160115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146121a957600160115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b5b600b548111156121ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e6906139f1565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461229c57600c548161225084610ff6565b61225a91906133fe565b111561229b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229290613a7f565b60405180910390fd5b5b5b5f600760149054906101000a900460ff16806122ff575060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612350575060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561235d575f90506123f0565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123d2576064600f54836123c19190613431565b6123cb919061349f565b90506123ef565b6064600e54836123e29190613431565b6123ec919061349f565b90505b5b600760159054906101000a900460ff1680156124195750600760149054906101000a900460ff16155b8015612472575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561247d57505f81115b1561248b5761248a6128a4565b5b6124a18484838561249c91906133cb565b61296d565b5f8111156124b5576124b484308361296d565b5b50505050565b5f600267ffffffffffffffff8111156124d7576124d6612f83565b5b6040519080825280602002602001820160405280156125055781602001602082028036833780820191505090505b50905030815f8151811061251c5761251b61362b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125e49190613ab1565b816001815181106125f8576125f761362b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061265e3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c51565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016126c0959493929190613bcc565b5f604051808303815f87803b1580156126d7575f80fd5b505af11580156126e9573d5f803e3d5ffd5b505050505050565b80471015612734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272b90613c6e565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff168260405161275990613cb9565b5f6040518083038185875af1925050503d805f8114612793576040519150601f19603f3d011682016040523d82523d5f602084013e612798565b606091505b50509050806127dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d390613d3d565b60405180910390fd5b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff1661296b576001600760146101000a81548160ff0219169083151502179055505f6128dd30610ff6565b9050600a54811061294f575f8190506128f5816124bb565b5f4790505f81111561294c5761294b81600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166126f190919063ffffffff16565b5b50505b505f600760146101000a81548160ff0219169083151502179055505b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036129db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d290613dcb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4090613e59565b60405180910390fd5b612a54838383612be0565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612ad7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ace90613ee7565b60405180910390fd5b8181612ae391906133cb565b5f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612b6e91906133fe565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612bd29190612bfd565b60405180910390a350505050565b505050565b5f819050919050565b612bf781612be5565b82525050565b5f602082019050612c105f830184612bee565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612c4d578082015181840152602081019050612c32565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612c7282612c16565b612c7c8185612c20565b9350612c8c818560208601612c30565b612c9581612c58565b840191505092915050565b5f6020820190508181035f830152612cb88184612c68565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b612cda81612be5565b8114612ce4575f80fd5b50565b5f81359050612cf581612cd1565b92915050565b5f60208284031215612d1057612d0f612cc9565b5b5f612d1d84828501612ce7565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612d4f82612d26565b9050919050565b612d5f81612d45565b8114612d69575f80fd5b50565b5f81359050612d7a81612d56565b92915050565b5f8060408385031215612d9657612d95612cc9565b5b5f612da385828601612d6c565b9250506020612db485828601612ce7565b9150509250929050565b5f8115159050919050565b612dd281612dbe565b82525050565b5f602082019050612deb5f830184612dc9565b92915050565b5f805f60608486031215612e0857612e07612cc9565b5b5f612e1586828701612d6c565b9350506020612e2686828701612d6c565b9250506040612e3786828701612ce7565b9150509250925092565b5f60ff82169050919050565b612e5681612e41565b82525050565b5f602082019050612e6f5f830184612e4d565b92915050565b5f612e7f82612d45565b9050919050565b612e8f81612e75565b8114612e99575f80fd5b50565b5f81359050612eaa81612e86565b92915050565b5f8060408385031215612ec657612ec5612cc9565b5b5f612ed385828601612e9c565b9250506020612ee485828601612d6c565b9150509250929050565b5f8060408385031215612f0457612f03612cc9565b5b5f612f1185828601612ce7565b9250506020612f2285828601612ce7565b9150509250929050565b5f60208284031215612f4157612f40612cc9565b5b5f612f4e84828501612d6c565b91505092915050565b612f6081612d45565b82525050565b5f602082019050612f795f830184612f57565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612fb982612c58565b810181811067ffffffffffffffff82111715612fd857612fd7612f83565b5b80604052505050565b5f612fea612cc0565b9050612ff68282612fb0565b919050565b5f67ffffffffffffffff82111561301557613014612f83565b5b602082029050602081019050919050565b5f80fd5b5f61303c61303784612ffb565b612fe1565b9050808382526020820190506020840283018581111561305f5761305e613026565b5b835b8181101561308857806130748882612d6c565b845260208401935050602081019050613061565b5050509392505050565b5f82601f8301126130a6576130a5612f7f565b5b81356130b684826020860161302a565b91505092915050565b5f602082840312156130d4576130d3612cc9565b5b5f82013567ffffffffffffffff8111156130f1576130f0612ccd565b5b6130fd84828501613092565b91505092915050565b5f806040838503121561311c5761311b612cc9565b5b5f61312985828601612d6c565b925050602061313a85828601612d6c565b9150509250929050565b61314d81612dbe565b8114613157575f80fd5b50565b5f8135905061316881613144565b92915050565b5f6020828403121561318357613182612cc9565b5b5f6131908482850161315a565b91505092915050565b5f80604083850312156131af576131ae612cc9565b5b5f6131bc85828601612d6c565b92505060206131cd8582860161315a565b9150509250929050565b5f819050919050565b5f6131fa6131f56131f084612d26565b6131d7565b612d26565b9050919050565b5f61320b826131e0565b9050919050565b5f61321c82613201565b9050919050565b61322c81613212565b82525050565b5f6020820190506132455f830184613223565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061328f57607f821691505b6020821081036132a2576132a161324b565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6132dc602083612c20565b91506132e7826132a8565b602082019050919050565b5f6020820190508181035f830152613309816132d0565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f61336a602883612c20565b915061337582613310565b604082019050919050565b5f6020820190508181035f8301526133978161335e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6133d582612be5565b91506133e083612be5565b92508282039050818111156133f8576133f761339e565b5b92915050565b5f61340882612be5565b915061341383612be5565b925082820190508082111561342b5761342a61339e565b5b92915050565b5f61343b82612be5565b915061344683612be5565b925082820261345481612be5565b9150828204841483151761346b5761346a61339e565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6134a982612be5565b91506134b483612be5565b9250826134c4576134c3613472565b5b828204905092915050565b7f54726164696e6720616c726561647920616374697665000000000000000000005f82015250565b5f613503601683612c20565b915061350e826134cf565b602082019050919050565b5f6020820190508181035f830152613530816134f7565b9050919050565b5f60408201905061354a5f830185612f57565b6135576020830184612bee565b9392505050565b5f8151905061356c81613144565b92915050565b5f6020828403121561358757613586612cc9565b5b5f6135948482850161355e565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6135f7602583612c20565b91506136028261359d565b604082019050919050565b5f6020820190508181035f830152613624816135eb565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61366282612be5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036136945761369361339e565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6136f9602683612c20565b91506137048261369f565b604082019050919050565b5f6020820190508181035f830152613726816136ed565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613787602483612c20565b91506137928261372d565b604082019050919050565b5f6020820190508181035f8301526137b48161377b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613815602283612c20565b9150613820826137bb565b604082019050919050565b5f6020820190508181035f83015261384281613809565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6138a3602983612c20565b91506138ae82613849565b604082019050919050565b5f6020820190508181035f8301526138d081613897565b9050919050565b7f596f752063616e2774207472616e7366657220746f6b656e73000000000000005f82015250565b5f61390b601983612c20565b9150613916826138d7565b602082019050919050565b5f6020820190508181035f830152613938816138ff565b9050919050565b7f54726164696e67206e6f742061637469766520796574000000000000000000005f82015250565b5f613973601683612c20565b915061397e8261393f565b602082019050919050565b5f6020820190508181035f8301526139a081613967565b9050919050565b7f596f752061726520657863656564696e67206d61785478416d6f756e740000005f82015250565b5f6139db601d83612c20565b91506139e6826139a7565b602082019050919050565b5f6020820190508181035f830152613a08816139cf565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e5f8201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b5f613a69602183612c20565b9150613a7482613a0f565b604082019050919050565b5f6020820190508181035f830152613a9681613a5d565b9050919050565b5f81519050613aab81612d56565b92915050565b5f60208284031215613ac657613ac5612cc9565b5b5f613ad384828501613a9d565b91505092915050565b5f819050919050565b5f613aff613afa613af584613adc565b6131d7565b612be5565b9050919050565b613b0f81613ae5565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613b4781612d45565b82525050565b5f613b588383613b3e565b60208301905092915050565b5f602082019050919050565b5f613b7a82613b15565b613b848185613b1f565b9350613b8f83613b2f565b805f5b83811015613bbf578151613ba68882613b4d565b9750613bb183613b64565b925050600181019050613b92565b5085935050505092915050565b5f60a082019050613bdf5f830188612bee565b613bec6020830187613b06565b8181036040830152613bfe8186613b70565b9050613c0d6060830185612f57565b613c1a6080830184612bee565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e63650000005f82015250565b5f613c58601d83612c20565b9150613c6382613c24565b602082019050919050565b5f6020820190508181035f830152613c8581613c4c565b9050919050565b5f81905092915050565b50565b5f613ca45f83613c8c565b9150613caf82613c96565b5f82019050919050565b5f613cc382613c99565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c20725f8201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b5f613d27603a83612c20565b9150613d3282613ccd565b604082019050919050565b5f6020820190508181035f830152613d5481613d1b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613db5602583612c20565b9150613dc082613d5b565b604082019050919050565b5f6020820190508181035f830152613de281613da9565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613e43602383612c20565b9150613e4e82613de9565b604082019050919050565b5f6020820190508181035f830152613e7081613e37565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613ed1602683612c20565b9150613edc82613e77565b604082019050919050565b5f6020820190508181035f830152613efe81613ec5565b905091905056fea2646970667358221220f223e7d073116bb221f035cccab281c40c00a56a5f9f72e85a6c9de9501c8fdc64736f6c63430008140033

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.