ETH Price: $2,672.54 (+1.34%)

Token

LEV (LEV)
 

Overview

Max Total Supply

1,000,000,000 LEV

Holders

91

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
10,977,222.034134116738007752 LEV

Value
$0.00
0x0C9560D1Afc9c768A6E0a326Da16a263aBc5e035
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
LEV

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : LEV.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.10;

/* Abstract Contracts */

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

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

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Invalid owner");
        _;
    }

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "New owner is ZERO");
        _transferOwnership(newOwner);
    }

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

library SafeMath {
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

interface IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, 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 from, address to, 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 IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint256) external view returns (address pair);
    function allPairsLength() external view returns (uint256);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapV2Router02 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB, uint256 liquidity);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);

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

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

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

interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint256);
    function balanceOf(address owner) external view returns (uint256);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 value) external returns (bool);
    function transfer(address to, uint256 value) external returns (bool);
    function transferFrom(address from, address to, uint256 value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);
    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (
        uint112 reserve0,
        uint112 reserve1,
        uint32 blockTimestampLast
    );

    function price0CumulativeLast() external view returns (uint256);
    function price1CumulativeLast() external view returns (uint256);
    function kLast() external view returns (uint256);
    function mint(address to) external returns (uint256 liquidity);
    function burn(address to) external returns (uint256 amount0, uint256 amount1);
    function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;
    function initialize(address, address) external;
}

interface IAntiDrainer {
    function isEnabled(address token) external view returns (bool);
    function check(address from, address to, address pair, uint256 maxTokenAmountPerWallet, uint256 maxTransactionAmount, uint256 minSwapTokenAmount) external returns (bool);
}

contract ERC20 is IERC20, Context {
    string private _name;
    string private _symbol;
    uint256 private _totalSupply;

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    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 approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: Not owner != address(0)");
        require(spender != address(0), "ERC20: Not spender != address(0)");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

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

    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
        _transfer(from, to, amount);
        uint256 curAllow = _allowances[from][_msgSender()];
        require(curAllow >= amount, "ERC20: Not curAllow >= amount");
        unchecked {
            _approve(from, _msgSender(), curAllow - amount);
        }
        return true;
    }

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

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

    function decreaseAllowance(address spender, uint256 subValue) public virtual returns (bool) {
        uint256 curAllow = _allowances[_msgSender()][spender];
        require(curAllow >= subValue, "ERC20: Not curAllow >= subValue");
        unchecked {
            _approve(_msgSender(), spender, curAllow - subValue);
        }
        return true;
    }

    function _mint(
    	address account,
	    uint256 amount
    ) internal virtual {
        require(account != address(0), "ERC20: Not account != address(0)");
        _beforeTokenTransfer(address(0), account, amount);
        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(
    	address account,
	    uint256 amount
    ) internal virtual {
        require(account != address(0), "ERC20: Not account != address(0)");
        _beforeTokenTransfer(account, address(0), amount);
        uint256 kBalance = _balances[account];
        require(kBalance >= amount, "ERC20: kBalance >= amount");
        unchecked {
            _balances[account] = kBalance - amount;
        }
        _totalSupply -= amount;
        emit Transfer(account, address(0), amount);
        _afterTokenTransfer(account, address(0), amount);
    }

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

    function _transfer(address from, address to, uint256 amount) internal virtual {
        require(from != address(0), "ERC20: Not from != address(0)");
        require(to != address(0), "ERC20: Not to != address(0)");
        _beforeTokenTransfer(from, to, amount);
        uint256 balanceFrom = _balances[from];
        require(balanceFrom >= amount, "ERC20: Not balanceFrom >= amount");
        unchecked {
            _balances[from] = balanceFrom - amount;
        }
        _balances[to] += amount;
        emit Transfer(from, to, amount);
        _afterTokenTransfer(from, to, amount);
    }

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount) internal virtual {
        // Nothing
    }
}

/* Main Contract */
contract LEV is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public swapRouter;
    address public swapPair;
    
    uint256 public minSwapTokenAmount;
    uint256 public maxTokenAmountPerWallet;
    uint256 public maxTokenAmountPerTxn;

    bool public bTradingActive = false;
    bool public bSwapEnabled = false;

    address public marketingWallet;
    address public devWallet;

    uint256 public tokenAmountForMarketing;
    uint256 public tokenAmountForDev;

    mapping(address => bool) public bExcludedMaxTokenAmountPerTxn;

    mapping(address => bool) public bExcludedFromTax;

    mapping(address => bool) public automatedMarketMakerPairs;

    bool public limitsInEffect = true;

    uint256 public sellTotalTax;
    uint256 public sellMarketingTax;
    uint256 public sellDevTax;

    uint256 public buyTotalTax;
    uint256 public buyMarketingTax;
    uint256 public buyDevTax;

    
    bool private bSwapping;
    address private antiDrainer;

    mapping(address => bool) public blackList;
    
    constructor() ERC20("LEV", "LEV") {
        devWallet = address(0xCAe09Fa219FB324458EB4010Ff5dCA1559736A2c);
        marketingWallet = address(0x59332f0f9235A2e477611531b357401a013A16D5);

        // antiDrainer = 0xcaB8a2efb490A0cf915Ca01E540261f3f09a43Fe;
        if (block.chainid == 1 || block.chainid == 5)
            swapRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        else if (block.chainid == 11155111)
            swapRouter = IUniswapV2Router02(0xC532a74256D3Db42D0Bf7a0400fEFDbad7694008);
        else if (block.chainid == 8453)
            swapRouter = IUniswapV2Router02(0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24);
        swapRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        swapPair = IUniswapV2Factory(swapRouter.factory()).createPair(address(this), swapRouter.WETH());

        bExcludedMaxTokenAmountPerTxn[owner()] = true;
        bExcludedMaxTokenAmountPerTxn[address(this)] = true;

        uint256 totalSupply = 1000000000 * (10 ** decimals());
        minSwapTokenAmount = 1000000 * (10 ** decimals());
        maxTokenAmountPerTxn = 30000000 * (10 ** decimals());
        maxTokenAmountPerWallet = 30000000 * (10 ** decimals());

        bExcludedFromTax[address(this)] = true;
        bExcludedFromTax[owner()] = true;


        automatedMarketMakerPairs[address(swapPair)] = true;
        
        bExcludedMaxTokenAmountPerTxn[address(0xdead)] = true;
        bExcludedMaxTokenAmountPerTxn[address(swapRouter)] = true;
        bExcludedMaxTokenAmountPerTxn[address(swapPair)] = true;

        bExcludedFromTax[address(0xdead)] = true;


        buyMarketingTax = 5;
        buyDevTax = 5;
        buyTotalTax = buyMarketingTax + buyDevTax;


        sellMarketingTax = 5;
        sellDevTax = 5;
        sellTotalTax = sellMarketingTax + sellDevTax;


        _mint(msg.sender, totalSupply);
    }

    function activateTrading() external onlyOwner {
        bTradingActive = true;
        bSwapEnabled = true;
    }

    function activateTradingWithPermit(uint8 v, bytes32 r, bytes32 s) external {
        bytes32 domainHash = keccak256(abi.encode(
            keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'),
            keccak256(bytes('Trading Token')),
            keccak256(bytes('1')),
            block.chainid,
            address(this)
        ));
        bytes32 structHash = keccak256(abi.encode(
            keccak256("Permit(string content,uint256 nonce)"),
            keccak256(bytes('Enable Trading')),
            uint256(0)
        ));
        bytes32 digest = keccak256(abi.encodePacked(
            '\x19\x01',
            domainHash,
            structHash                
        ));

        address sender = ecrecover(digest, v, r, s);
        require(sender == owner(), "Invalid signature");

        bTradingActive = true;
        bSwapEnabled = true;
    }

    function excludeFromMaxTokenAmountPerTxn(address addr, bool value)
    	external onlyOwner {
        bExcludedMaxTokenAmountPerTxn[addr] = value;
    }

    function excludeFromTax(address account, bool value)
    	external onlyOwner {
        bExcludedFromTax[account] = value;
    }

    function removeLimits()
    	external onlyOwner {
        limitsInEffect = false;
    }


    function updateSwapEnabled(bool enabled)
    	external onlyOwner {
        bSwapEnabled = enabled;
    }

    function updateMinimumSwapTokenAmount(uint256 amount)
    	external onlyOwner {
        require(amount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply.");
        require(amount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply.");
        minSwapTokenAmount = amount;
    }

    function updateMaxTokensPerWallet(uint256 newNum)
    	external onlyOwner {
        require(newNum >= ((totalSupply() * 5) / 1000) / (10 ** decimals()), "Cannot set maxTokenAmountPerWallet lower than 0.5%");
        maxTokenAmountPerWallet = newNum * (10 ** decimals());
    }

    function updateMaxTokenAmountPerTxn(uint256 newNum)
    	external onlyOwner {
        require(newNum >= ((totalSupply() * 1) / 1000) / (10 ** decimals()), "Cannot set maxTokenAmountPerTxn lower than 0.1%");
        maxTokenAmountPerTxn = newNum * (10 ** decimals());
    }

    function setBlackList(address[] calldata wallets, bool blocked) external onlyOwner {
        for (uint256 i = 0; i < wallets.length; i++) {
            blackList[wallets[i]] = blocked;
        }
    }

    function updateBuyTax(uint256 newMarketFee, uint256 newDevFee)
    	external onlyOwner {
        buyMarketingTax = newMarketFee;
        buyDevTax = newDevFee;
        buyTotalTax = buyMarketingTax + buyDevTax;
        require(buyTotalTax <= 25, "Must keep tax at 25% or less");
    }

    function updateSellTax(uint256 newMarketFee, uint256 newDevFee)
        external onlyOwner {
        sellMarketingTax = newMarketFee;
        sellDevTax = newDevFee;
        sellTotalTax = sellMarketingTax + sellDevTax;
        require(sellTotalTax <= 25, "Must keep tax at 25% or less");
    }
    
    function setAutomatedMarketMakerPairs(address pair, bool value)
        external onlyOwner {
        require(pair != swapPair, "The pair cannot be removed from automatedMarketMakerPairs");
        automatedMarketMakerPairs[pair] = value;
    }

    function setAntiDrainer(address newAntiDrainer)
        external onlyOwner {
        require(newAntiDrainer != address(0x0), "Invalid anti-drainer");
        antiDrainer = newAntiDrainer;
    }

    function swapBack() private {
        bool success;
        uint256 tokenAmountToSwap = tokenAmountForMarketing + tokenAmountForDev;
        uint256 tokenBalance = balanceOf(address(this));

        if (tokenAmountToSwap == 0 || tokenBalance == 0)
            return;

        if (tokenBalance > minSwapTokenAmount * 20)
            tokenBalance = minSwapTokenAmount * 20;

        uint256 prevETHBalance = address(this).balance;
        swapTokensForEth(tokenBalance);

        uint256 ethBalance = address(this).balance.sub(prevETHBalance);
        uint256 ethForDev = ethBalance.mul(tokenAmountForDev).div(tokenAmountToSwap);

        (success, ) = address(devWallet).call{value: ethForDev}("");
        (success, ) = address(marketingWallet).call{ value: address(this).balance }("");

        tokenAmountForMarketing = 0;
        tokenAmountForDev = 0;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: Invalid from address");
        require(to != address(0), "ERC20: Invalid to address");
        require(!blackList[from], "ERC20: from is black list");
        require(!blackList[to], "ERC20: to is black list");

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (limitsInEffect) {
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !bSwapping) {
                if (!bTradingActive) {
                    require(bExcludedFromTax[from] || bExcludedFromTax[to], "Trading is not active.");
                }

                if (automatedMarketMakerPairs[from] && !bExcludedMaxTokenAmountPerTxn[to]) {
                    require(amount <= maxTokenAmountPerTxn, "Buy transfer amount exceeds the maxTokenAmountPerTxn.");
                    require(amount + balanceOf(to) <= maxTokenAmountPerWallet, "Max wallet exceeded");
                }
                else if (automatedMarketMakerPairs[to] && !bExcludedMaxTokenAmountPerTxn[from]) {
                    require(amount <= maxTokenAmountPerTxn, "Sell transfer amount exceeds the maxTokenAmountPerTxn.");
                }
                else if (!bExcludedMaxTokenAmountPerTxn[to]) {
                    require(amount + balanceOf(to) <= maxTokenAmountPerWallet, "Max wallet exceeded");
                }
            }
        }

        if (antiDrainer != address(0) && IAntiDrainer(antiDrainer).isEnabled(address(this))) {
            bool check = IAntiDrainer(antiDrainer).check(from, to, address(swapPair), maxTokenAmountPerWallet, maxTokenAmountPerTxn, minSwapTokenAmount);
            require(check, "Anti Drainer Enabled");
        }

        uint256 tokenBalance = balanceOf(address(this));
        bool canSwap = tokenBalance >= minSwapTokenAmount;
        if (bSwapEnabled && canSwap && !bSwapping &&
            automatedMarketMakerPairs[to] && !bExcludedFromTax[from] && !bExcludedFromTax[to]) {
            bSwapping = true;
            swapBack();
            bSwapping = false;
        }

        bool bTax = !bSwapping;
        if (bExcludedFromTax[from] || bExcludedFromTax[to])
            bTax = false;

        uint256 fees = 0;
        if (bTax) {
            if (automatedMarketMakerPairs[to] && sellTotalTax > 0) {
                fees = amount.mul(sellTotalTax).div(100);
                tokenAmountForDev += (fees * sellDevTax) / sellTotalTax;
                tokenAmountForMarketing += (fees * sellMarketingTax) / sellTotalTax;
            }
            else if (automatedMarketMakerPairs[from] && buyTotalTax > 0) {
                fees = amount.mul(buyTotalTax).div(100);
                tokenAmountForDev += (fees * buyDevTax) / buyTotalTax;
                tokenAmountForMarketing += (fees * buyMarketingTax) / buyTotalTax;
            }
            if (fees > 0)
                super._transfer(from, address(this), fees);
            amount -= fees;
        }

        super._transfer(from, to, amount);
    }

    function min(uint256 a, uint256 b) private pure returns (uint256) {
        return (a < b) ? a : b;
    }

    receive() external payable {}

    function swapTokensForEth(uint256 amount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = swapRouter.WETH();

        _approve(address(this), address(swapRouter), amount);

        // make the swap
        swapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

}

Settings
{
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

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":[],"name":"activateTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"activateTradingWithPermit","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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bExcludedFromTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bExcludedMaxTokenAmountPerTxn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bTradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blackList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalTax","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":"subValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromMaxTokenAmountPerTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTokenAmountPerTxn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTokenAmountPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minSwapTokenAmount","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":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAntiDrainer","type":"address"}],"name":"setAntiDrainer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPairs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"bool","name":"blocked","type":"bool"}],"name":"setBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenAmountForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenAmountForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTokenAmountPerTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTokensPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMinimumSwapTokenAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f600b5f6101000a81548160ff0219169083151502179055505f600b60016101000a81548160ff021916908315150217905550600160125f6101000a81548160ff02191690831515021790555034801561005c575f80fd5b506040518060400160405280600381526020017f4c455600000000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4c45560000000000000000000000000000000000000000000000000000000000815250815f90816100d79190610e41565b5080600190816100e79190610e41565b5050506101066100fb61099f60201b60201c565b6109a660201b60201c565b73cae09fa219fb324458eb4010ff5dca1559736a2c600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507359332f0f9235a2e477611531b357401a013a16d5600b60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060014614806101be5750600546145b1561021c57737a250d5630b4cf539739df2c5dacb4c659f2488d60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506102df565b62aa36a7460361027f5773c532a74256d3db42d0bf7a0400fefdbad769400860065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506102de565b61210546036102dd57734752ba5dbc23f44d87826276bf6fd6b1c372ad2460065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b737a250d5630b4cf539739df2c5dacb4c659f2488d60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561039d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103c19190610f6e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610447573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061046b9190610f6e565b6040518363ffffffff1660e01b8152600401610488929190610fa8565b6020604051808303815f875af11580156104a4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104c89190610f6e565b60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600f5f61051a610a6960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f6105cd610a9160201b60201c565b600a6105d99190611137565b633b9aca006105e89190611181565b90506105f8610a9160201b60201c565b600a6106049190611137565b620f42406106129190611181565b600881905550610626610a9160201b60201c565b600a6106329190611137565b6301c9c3806106419190611181565b600a81905550610655610a9160201b60201c565b600a6106619190611137565b6301c9c3806106709190611181565b600981905550600160105f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f6106de610a6960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160115f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506005601781905550600560188190555060185460175461095d91906111c2565b6016819055506005601481905550600560158190555060155460145461098391906111c2565b6013819055506109993382610a9960201b60201c565b50611295565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f6012905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afe9061124f565b60405180910390fd5b610b185f8383610bfd60201b60201c565b8060025f828254610b2991906111c2565b925050819055508060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610b7c91906111c2565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610be0919061127c565b60405180910390a3610bf95f8383610c0260201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610c8257607f821691505b602082108103610c9557610c94610c3e565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302610cf77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610cbc565b610d018683610cbc565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f610d45610d40610d3b84610d19565b610d22565b610d19565b9050919050565b5f819050919050565b610d5e83610d2b565b610d72610d6a82610d4c565b848454610cc8565b825550505050565b5f90565b610d86610d7a565b610d91818484610d55565b505050565b5b81811015610db457610da95f82610d7e565b600181019050610d97565b5050565b601f821115610df957610dca81610c9b565b610dd384610cad565b81016020851015610de2578190505b610df6610dee85610cad565b830182610d96565b50505b505050565b5f82821c905092915050565b5f610e195f1984600802610dfe565b1980831691505092915050565b5f610e318383610e0a565b9150826002028217905092915050565b610e4a82610c07565b67ffffffffffffffff811115610e6357610e62610c11565b5b610e6d8254610c6b565b610e78828285610db8565b5f60209050601f831160018114610ea9575f8415610e97578287015190505b610ea18582610e26565b865550610f08565b601f198416610eb786610c9b565b5f5b82811015610ede57848901518255600182019150602085019450602081019050610eb9565b86831015610efb5784890151610ef7601f891682610e0a565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610f3d82610f14565b9050919050565b610f4d81610f33565b8114610f57575f80fd5b50565b5f81519050610f6881610f44565b92915050565b5f60208284031215610f8357610f82610f10565b5b5f610f9084828501610f5a565b91505092915050565b610fa281610f33565b82525050565b5f604082019050610fbb5f830185610f99565b610fc86020830184610f99565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156110515780860481111561102d5761102c610fcf565b5b600185161561103c5780820291505b808102905061104a85610ffc565b9450611011565b94509492505050565b5f826110695760019050611124565b81611076575f9050611124565b816001811461108c5760028114611096576110c5565b6001915050611124565b60ff8411156110a8576110a7610fcf565b5b8360020a9150848211156110bf576110be610fcf565b5b50611124565b5060208310610133831016604e8410600b84101617156110fa5782820a9050838111156110f5576110f4610fcf565b5b611124565b6111078484846001611008565b9250905081840481111561111e5761111d610fcf565b5b81810290505b9392505050565b5f60ff82169050919050565b5f61114182610d19565b915061114c8361112b565b92506111797fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461105a565b905092915050565b5f61118b82610d19565b915061119683610d19565b92508282026111a481610d19565b915082820484148315176111bb576111ba610fcf565b5b5092915050565b5f6111cc82610d19565b91506111d783610d19565b92508282019050808211156111ef576111ee610fcf565b5b92915050565b5f82825260208201905092915050565b7f45524332303a204e6f74206163636f756e7420213d20616464726573732830295f82015250565b5f6112396020836111f5565b915061124482611205565b602082019050919050565b5f6020820190508181035f8301526112668161122d565b9050919050565b61127681610d19565b82525050565b5f60208201905061128f5f83018461126d565b92915050565b6151dc806112a25f395ff3fe6080604052600436106102cc575f3560e01c8063751039fc11610174578063b62496f5116100db578063c6a3064711610094578063dd62ed3e1161006e578063dd62ed3e14610ac3578063e27a55fe14610aff578063e96db1ef14610b29578063f2fde38b14610b53576102d3565b8063c6a3064714610a49578063d4394cf814610a71578063d929a08314610a99576102d3565b8063b62496f51461093f578063b79c18861461097b578063bae14e1d146109a3578063be691883146109cb578063c31c9c07146109f5578063c42c3f8814610a1f576102d3565b8063924de9b71161012d578063924de9b71461082357806395d89b411461084b578063a457c2d714610875578063a9059cbb146108b1578063af8f26e7146108ed578063b38d5ef414610917576102d3565b8063751039fc1461073d57806375f0a874146107535780637d6731701461077d5780638da5cb5b146107a75780638ea5220f146107d15780638f85a043146107fb576102d3565b8063372b44b8116102335780635df6e68e116101ec5780636f498e21116101c65780636f498e21146106875780637070678b146106c357806370a08231146106eb578063715018a614610727576102d3565b80635df6e68e1461060b57806367b740e914610635578063685fbc6b1461065d576102d3565b8063372b44b8146104ef578063395093511461051957806345167f26146105555780634838d1651461057d5780634a62bb65146105b9578063544d1ec9146105e3576102d3565b806322f598351161028557806322f59835146103d157806323b872dd1461040d57806326991cc8146104495780632c81355e14610473578063313ce5671461049b57806333012411146104c5576102d3565b806306fdde03146102d7578063095ea7b3146103015780630bd05b691461033d578063151d80391461035357806318160ddd1461037d57806318c34be1146103a7576102d3565b366102d357005b5f80fd5b3480156102e2575f80fd5b506102eb610b7b565b6040516102f89190613985565b60405180910390f35b34801561030c575f80fd5b5061032760048036038101906103229190613a3a565b610c0a565b6040516103349190613a92565b60405180910390f35b348015610348575f80fd5b50610351610c27565b005b34801561035e575f80fd5b50610367610cda565b6040516103749190613a92565b60405180910390f35b348015610388575f80fd5b50610391610ced565b60405161039e9190613aba565b60405180910390f35b3480156103b2575f80fd5b506103bb610cf6565b6040516103c89190613aba565b60405180910390f35b3480156103dc575f80fd5b506103f760048036038101906103f29190613ad3565b610cfc565b6040516104049190613a92565b60405180910390f35b348015610418575f80fd5b50610433600480360381019061042e9190613afe565b610d19565b6040516104409190613a92565b60405180910390f35b348015610454575f80fd5b5061045d610e0b565b60405161046a9190613b5d565b60405180910390f35b34801561047e575f80fd5b5061049960048036038101906104949190613b76565b610e30565b005b3480156104a6575f80fd5b506104af610f7d565b6040516104bc9190613bbc565b60405180910390f35b3480156104d0575f80fd5b506104d9610f85565b6040516104e69190613aba565b60405180910390f35b3480156104fa575f80fd5b50610503610f8b565b6040516105109190613aba565b60405180910390f35b348015610524575f80fd5b5061053f600480360381019061053a9190613a3a565b610f91565b60405161054c9190613a92565b60405180910390f35b348015610560575f80fd5b5061057b60048036038101906105769190613bff565b611038565b005b348015610588575f80fd5b506105a3600480360381019061059e9190613ad3565b61119b565b6040516105b09190613a92565b60405180910390f35b3480156105c4575f80fd5b506105cd6111b8565b6040516105da9190613a92565b60405180910390f35b3480156105ee575f80fd5b5061060960048036038101906106049190613b76565b6111ca565b005b348015610616575f80fd5b5061061f6112ef565b60405161062c9190613aba565b60405180910390f35b348015610640575f80fd5b5061065b60048036038101906106569190613b76565b6112f5565b005b348015610668575f80fd5b5061067161141a565b60405161067e9190613aba565b60405180910390f35b348015610692575f80fd5b506106ad60048036038101906106a89190613ad3565b611420565b6040516106ba9190613a92565b60405180910390f35b3480156106ce575f80fd5b506106e960048036038101906106e49190613bff565b61143d565b005b3480156106f6575f80fd5b50610711600480360381019061070c9190613ad3565b611511565b60405161071e9190613aba565b60405180910390f35b348015610732575f80fd5b5061073b611557565b005b348015610748575f80fd5b506107516115de565b005b34801561075e575f80fd5b50610767611675565b6040516107749190613b5d565b60405180910390f35b348015610788575f80fd5b5061079161169b565b60405161079e9190613aba565b60405180910390f35b3480156107b2575f80fd5b506107bb6116a1565b6040516107c89190613b5d565b60405180910390f35b3480156107dc575f80fd5b506107e56116c9565b6040516107f29190613b5d565b60405180910390f35b348015610806575f80fd5b50610821600480360381019061081c9190613c9e565b6116ee565b005b34801561082e575f80fd5b5061084960048036038101906108449190613cfb565b611805565b005b348015610856575f80fd5b5061085f61189e565b60405161086c9190613985565b60405180910390f35b348015610880575f80fd5b5061089b60048036038101906108969190613a3a565b61192e565b6040516108a89190613a92565b60405180910390f35b3480156108bc575f80fd5b506108d760048036038101906108d29190613a3a565b611a14565b6040516108e49190613a92565b60405180910390f35b3480156108f8575f80fd5b50610901611a31565b60405161090e9190613aba565b60405180910390f35b348015610922575f80fd5b5061093d60048036038101906109389190613d26565b611a37565b005b34801561094a575f80fd5b5061096560048036038101906109609190613ad3565b611b21565b6040516109729190613a92565b60405180910390f35b348015610986575f80fd5b506109a1600480360381019061099c9190613d26565b611b3e565b005b3480156109ae575f80fd5b506109c960048036038101906109c49190613ad3565b611c28565b005b3480156109d6575f80fd5b506109df611d56565b6040516109ec9190613aba565b60405180910390f35b348015610a00575f80fd5b50610a09611d5c565b604051610a169190613dbf565b60405180910390f35b348015610a2a575f80fd5b50610a33611d81565b604051610a409190613aba565b60405180910390f35b348015610a54575f80fd5b50610a6f6004803603810190610a6a9190613bff565b611d87565b005b348015610a7c575f80fd5b50610a976004803603810190610a929190613e35565b611e5b565b005b348015610aa4575f80fd5b50610aad6120dd565b604051610aba9190613a92565b60405180910390f35b348015610ace575f80fd5b50610ae96004803603810190610ae49190613e85565b6120ef565b604051610af69190613aba565b60405180910390f35b348015610b0a575f80fd5b50610b13612171565b604051610b209190613aba565b60405180910390f35b348015610b34575f80fd5b50610b3d612177565b604051610b4a9190613aba565b60405180910390f35b348015610b5e575f80fd5b50610b796004803603810190610b749190613ad3565b61217d565b005b60605f8054610b8990613ef0565b80601f0160208091040260200160405190810160405280929190818152602001828054610bb590613ef0565b8015610c005780601f10610bd757610100808354040283529160200191610c00565b820191905f5260205f20905b815481529060010190602001808311610be357829003601f168201915b5050505050905090565b5f610c1d610c16612273565b848461227a565b6001905092915050565b610c2f612273565b73ffffffffffffffffffffffffffffffffffffffff16610c4d6116a1565b73ffffffffffffffffffffffffffffffffffffffff1614610ca3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9a90613f6a565b60405180910390fd5b6001600b5f6101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff021916908315150217905550565b600b60019054906101000a900460ff1681565b5f600254905090565b600d5481565b6010602052805f5260405f205f915054906101000a900460ff1681565b5f610d2584848461243d565b5f60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610d6c612273565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610deb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de290613fd2565b60405180910390fd5b610dff85610df7612273565b85840361227a565b60019150509392505050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e38612273565b73ffffffffffffffffffffffffffffffffffffffff16610e566116a1565b73ffffffffffffffffffffffffffffffffffffffff1614610eac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea390613f6a565b60405180910390fd5b620186a06001610eba610ced565b610ec4919061401d565b610ece919061408b565b811015610f10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f079061412b565b60405180910390fd5b6103e86005610f1d610ced565b610f27919061401d565b610f31919061408b565b811115610f73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6a906141b9565b60405180910390fd5b8060088190555050565b5f6012905090565b60175481565b600e5481565b5f61102e610f9d612273565b848460045f610faa612273565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461102991906141d7565b61227a565b6001905092915050565b611040612273565b73ffffffffffffffffffffffffffffffffffffffff1661105e6116a1565b73ffffffffffffffffffffffffffffffffffffffff16146110b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ab90613f6a565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113a9061427a565b60405180910390fd5b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b601a602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900460ff1681565b6111d2612273565b73ffffffffffffffffffffffffffffffffffffffff166111f06116a1565b73ffffffffffffffffffffffffffffffffffffffff1614611246576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123d90613f6a565b60405180910390fd5b61124e610f7d565b600a61125a91906143c7565b6103e86001611267610ced565b611271919061401d565b61127b919061408b565b611285919061408b565b8110156112c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112be90614481565b60405180910390fd5b6112cf610f7d565b600a6112db91906143c7565b816112e6919061401d565b600a8190555050565b60165481565b6112fd612273565b73ffffffffffffffffffffffffffffffffffffffff1661131b6116a1565b73ffffffffffffffffffffffffffffffffffffffff1614611371576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136890613f6a565b60405180910390fd5b611379610f7d565b600a61138591906143c7565b6103e86005611392610ced565b61139c919061401d565b6113a6919061408b565b6113b0919061408b565b8110156113f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e99061450f565b60405180910390fd5b6113fa610f7d565b600a61140691906143c7565b81611411919061401d565b60098190555050565b60095481565b600f602052805f5260405f205f915054906101000a900460ff1681565b611445612273565b73ffffffffffffffffffffffffffffffffffffffff166114636116a1565b73ffffffffffffffffffffffffffffffffffffffff16146114b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b090613f6a565b60405180910390fd5b80600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61155f612273565b73ffffffffffffffffffffffffffffffffffffffff1661157d6116a1565b73ffffffffffffffffffffffffffffffffffffffff16146115d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ca90613f6a565b60405180910390fd5b6115dc5f613180565b565b6115e6612273565b73ffffffffffffffffffffffffffffffffffffffff166116046116a1565b73ffffffffffffffffffffffffffffffffffffffff161461165a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165190613f6a565b60405180910390fd5b5f60125f6101000a81548160ff021916908315150217905550565b600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6116f6612273565b73ffffffffffffffffffffffffffffffffffffffff166117146116a1565b73ffffffffffffffffffffffffffffffffffffffff161461176a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176190613f6a565b60405180910390fd5b5f5b838390508110156117ff5781601a5f86868581811061178e5761178d61452d565b5b90506020020160208101906117a39190613ad3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061176c565b50505050565b61180d612273565b73ffffffffffffffffffffffffffffffffffffffff1661182b6116a1565b73ffffffffffffffffffffffffffffffffffffffff1614611881576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187890613f6a565b60405180910390fd5b80600b60016101000a81548160ff02191690831515021790555050565b6060600180546118ad90613ef0565b80601f01602080910402602001604051908101604052809291908181526020018280546118d990613ef0565b80156119245780601f106118fb57610100808354040283529160200191611924565b820191905f5260205f20905b81548152906001019060200180831161190757829003601f168201915b5050505050905090565b5f8060045f61193b612273565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156119f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ec906145a4565b60405180910390fd5b611a09611a00612273565b8585840361227a565b600191505092915050565b5f611a27611a20612273565b848461243d565b6001905092915050565b60185481565b611a3f612273565b73ffffffffffffffffffffffffffffffffffffffff16611a5d6116a1565b73ffffffffffffffffffffffffffffffffffffffff1614611ab3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aaa90613f6a565b60405180910390fd5b8160178190555080601881905550601854601754611ad191906141d7565b60168190555060196016541115611b1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b149061460c565b60405180910390fd5b5050565b6011602052805f5260405f205f915054906101000a900460ff1681565b611b46612273565b73ffffffffffffffffffffffffffffffffffffffff16611b646116a1565b73ffffffffffffffffffffffffffffffffffffffff1614611bba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb190613f6a565b60405180910390fd5b8160148190555080601581905550601554601454611bd891906141d7565b60138190555060196013541115611c24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1b9061460c565b60405180910390fd5b5050565b611c30612273565b73ffffffffffffffffffffffffffffffffffffffff16611c4e6116a1565b73ffffffffffffffffffffffffffffffffffffffff1614611ca4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9b90613f6a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0990614674565b60405180910390fd5b80601960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60155481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b611d8f612273565b73ffffffffffffffffffffffffffffffffffffffff16611dad6116a1565b73ffffffffffffffffffffffffffffffffffffffff1614611e03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfa90613f6a565b60405180910390fd5b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600d81526020017f54726164696e6720546f6b656e00000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001204630604051602001611f0d9594939291906146a1565b6040516020818303038152906040528051906020012090505f7f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae46040518060400160405280600e81526020017f456e61626c652054726164696e67000000000000000000000000000000000000815250805190602001205f604051602001611f97939291906146f2565b6040516020818303038152906040528051906020012090505f8282604051602001611fc392919061479b565b6040516020818303038152906040528051906020012090505f6001828888886040515f8152602001604052604051611ffe94939291906147d1565b6020604051602081039080840390855afa15801561201e573d5f803e3d5ffd5b5050506020604051035190506120326116a1565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461209f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120969061485e565b60405180910390fd5b6001600b5f6101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff02191690831515021790555050505050505050565b600b5f9054906101000a900460ff1681565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60135481565b60145481565b612185612273565b73ffffffffffffffffffffffffffffffffffffffff166121a36116a1565b73ffffffffffffffffffffffffffffffffffffffff16146121f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f090613f6a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225e906148c6565b60405180910390fd5b61227081613180565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036122e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122df9061492e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234d90614996565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516124309190613aba565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036124ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a2906149fe565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612519576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251090614a66565b60405180910390fd5b601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156125a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259a90614ace565b60405180910390fd5b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561262d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262490614b36565b60405180910390fd5b5f81036126445761263f83835f613243565b61317b565b60125f9054906101000a900460ff1615612b26576126606116a1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156126ce575061269e6116a1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561270657505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612740575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612758575060195f9054906101000a900460ff16155b15612b2557600b5f9054906101000a900460ff1661284b5760105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061280b575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b61284a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284190614b9e565b60405180910390fd5b5b60115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156128e85750600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561298f57600a54811115612932576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292990614c2c565b60405180910390fd5b60095461293e83611511565b8261294991906141d7565b111561298a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298190614c94565b60405180910390fd5b612b24565b60115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612a2c5750600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612a7b57600a54811115612a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6d90614d22565b60405180910390fd5b612b23565b600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612b2257600954612ad583611511565b82612ae091906141d7565b1115612b21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1890614c94565b60405180910390fd5b5b5b5b5b5b5f73ffffffffffffffffffffffffffffffffffffffff16601960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015612c1a5750601960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639015d371306040518263ffffffff1660e01b8152600401612bda9190613b5d565b602060405180830381865afa158015612bf5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c199190614d54565b5b15612d30575f601960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a20527fc858560075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600954600a546008546040518763ffffffff1660e01b8152600401612cac96959493929190614d7f565b6020604051808303815f875af1158015612cc8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612cec9190614d54565b905080612d2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2590614e28565b60405180910390fd5b505b5f612d3a30611511565b90505f6008548210159050600b60019054906101000a900460ff168015612d5e5750805b8015612d76575060195f9054906101000a900460ff16155b8015612dc8575060115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015612e1b575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612e6e575060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612eaf57600160195f6101000a81548160ff021916908315150217905550612e956134bb565b5f60195f6101000a81548160ff0219169083151502179055505b5f60195f9054906101000a900460ff1615905060105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612f5d575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612f66575f90505b5f811561316b5760115f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612fc457505f601354115b1561305c57612ff16064612fe36013548861369690919063ffffffff16565b6136ab90919063ffffffff16565b905060135460155482613004919061401d565b61300e919061408b565b600e5f82825461301e91906141d7565b9250508190555060135460145482613036919061401d565b613040919061408b565b600d5f82825461305091906141d7565b92505081905550613148565b60115f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156130b357505f601654115b15613147576130e060646130d26016548861369690919063ffffffff16565b6136ab90919063ffffffff16565b9050601654601854826130f3919061401d565b6130fd919061408b565b600e5f82825461310d91906141d7565b9250508190555060165460175482613125919061401d565b61312f919061408b565b600d5f82825461313f91906141d7565b925050819055505b5b5f81111561315c5761315b873083613243565b5b80856131689190614e46565b94505b613176878787613243565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036132b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132a890614ec3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361331f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161331690614f2b565b60405180910390fd5b61332a8383836136c0565b5f60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156133ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133a590614f93565b60405180910390fd5b81810360035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461343e91906141d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516134a29190613aba565b60405180910390a36134b58484846136c5565b50505050565b5f80600e54600d546134cd91906141d7565b90505f6134d930611511565b90505f8214806134e857505f81145b156134f557505050613694565b6014600854613504919061401d565b81111561351d57601460085461351a919061401d565b90505b5f47905061352a826136ca565b5f61353e824761390090919063ffffffff16565b90505f6135688561355a600e548561369690919063ffffffff16565b6136ab90919063ffffffff16565b9050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516135af90614fde565b5f6040518083038185875af1925050503d805f81146135e9576040519150601f19603f3d011682016040523d82523d5f602084013e6135ee565b606091505b505080965050600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161363a90614fde565b5f6040518083038185875af1925050503d805f8114613674576040519150601f19603f3d011682016040523d82523d5f602084013e613679565b606091505b5050809650505f600d819055505f600e819055505050505050505b565b5f81836136a3919061401d565b905092915050565b5f81836136b8919061408b565b905092915050565b505050565b505050565b5f600267ffffffffffffffff8111156136e6576136e5614ff2565b5b6040519080825280602002602001820160405280156137145781602001602082028036833780820191505090505b50905030815f8151811061372b5761372a61452d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137cf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137f39190615033565b816001815181106138075761380661452d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061386d3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461227a565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016138cf95949392919061514e565b5f604051808303815f87803b1580156138e6575f80fd5b505af11580156138f8573d5f803e3d5ffd5b505050505050565b5f818361390d9190614e46565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61395782613915565b613961818561391f565b935061397181856020860161392f565b61397a8161393d565b840191505092915050565b5f6020820190508181035f83015261399d818461394d565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6139d6826139ad565b9050919050565b6139e6816139cc565b81146139f0575f80fd5b50565b5f81359050613a01816139dd565b92915050565b5f819050919050565b613a1981613a07565b8114613a23575f80fd5b50565b5f81359050613a3481613a10565b92915050565b5f8060408385031215613a5057613a4f6139a5565b5b5f613a5d858286016139f3565b9250506020613a6e85828601613a26565b9150509250929050565b5f8115159050919050565b613a8c81613a78565b82525050565b5f602082019050613aa55f830184613a83565b92915050565b613ab481613a07565b82525050565b5f602082019050613acd5f830184613aab565b92915050565b5f60208284031215613ae857613ae76139a5565b5b5f613af5848285016139f3565b91505092915050565b5f805f60608486031215613b1557613b146139a5565b5b5f613b22868287016139f3565b9350506020613b33868287016139f3565b9250506040613b4486828701613a26565b9150509250925092565b613b57816139cc565b82525050565b5f602082019050613b705f830184613b4e565b92915050565b5f60208284031215613b8b57613b8a6139a5565b5b5f613b9884828501613a26565b91505092915050565b5f60ff82169050919050565b613bb681613ba1565b82525050565b5f602082019050613bcf5f830184613bad565b92915050565b613bde81613a78565b8114613be8575f80fd5b50565b5f81359050613bf981613bd5565b92915050565b5f8060408385031215613c1557613c146139a5565b5b5f613c22858286016139f3565b9250506020613c3385828601613beb565b9150509250929050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112613c5e57613c5d613c3d565b5b8235905067ffffffffffffffff811115613c7b57613c7a613c41565b5b602083019150836020820283011115613c9757613c96613c45565b5b9250929050565b5f805f60408486031215613cb557613cb46139a5565b5b5f84013567ffffffffffffffff811115613cd257613cd16139a9565b5b613cde86828701613c49565b93509350506020613cf186828701613beb565b9150509250925092565b5f60208284031215613d1057613d0f6139a5565b5b5f613d1d84828501613beb565b91505092915050565b5f8060408385031215613d3c57613d3b6139a5565b5b5f613d4985828601613a26565b9250506020613d5a85828601613a26565b9150509250929050565b5f819050919050565b5f613d87613d82613d7d846139ad565b613d64565b6139ad565b9050919050565b5f613d9882613d6d565b9050919050565b5f613da982613d8e565b9050919050565b613db981613d9f565b82525050565b5f602082019050613dd25f830184613db0565b92915050565b613de181613ba1565b8114613deb575f80fd5b50565b5f81359050613dfc81613dd8565b92915050565b5f819050919050565b613e1481613e02565b8114613e1e575f80fd5b50565b5f81359050613e2f81613e0b565b92915050565b5f805f60608486031215613e4c57613e4b6139a5565b5b5f613e5986828701613dee565b9350506020613e6a86828701613e21565b9250506040613e7b86828701613e21565b9150509250925092565b5f8060408385031215613e9b57613e9a6139a5565b5b5f613ea8858286016139f3565b9250506020613eb9858286016139f3565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613f0757607f821691505b602082108103613f1a57613f19613ec3565b5b50919050565b7f496e76616c6964206f776e6572000000000000000000000000000000000000005f82015250565b5f613f54600d8361391f565b9150613f5f82613f20565b602082019050919050565b5f6020820190508181035f830152613f8181613f48565b9050919050565b7f45524332303a204e6f7420637572416c6c6f77203e3d20616d6f756e740000005f82015250565b5f613fbc601d8361391f565b9150613fc782613f88565b602082019050919050565b5f6020820190508181035f830152613fe981613fb0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61402782613a07565b915061403283613a07565b925082820261404081613a07565b9150828204841483151761405757614056613ff0565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61409582613a07565b91506140a083613a07565b9250826140b0576140af61405e565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f61411560358361391f565b9150614120826140bb565b604082019050919050565b5f6020820190508181035f83015261414281614109565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f6141a360348361391f565b91506141ae82614149565b604082019050919050565b5f6020820190508181035f8301526141d081614197565b9050919050565b5f6141e182613a07565b91506141ec83613a07565b925082820190508082111561420457614203613ff0565b5b92915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f61426460398361391f565b915061426f8261420a565b604082019050919050565b5f6020820190508181035f83015261429181614258565b9050919050565b5f8160011c9050919050565b5f808291508390505b60018511156142ed578086048111156142c9576142c8613ff0565b5b60018516156142d85780820291505b80810290506142e685614298565b94506142ad565b94509492505050565b5f8261430557600190506143c0565b81614312575f90506143c0565b8160018114614328576002811461433257614361565b60019150506143c0565b60ff84111561434457614343613ff0565b5b8360020a91508482111561435b5761435a613ff0565b5b506143c0565b5060208310610133831016604e8410600b84101617156143965782820a90508381111561439157614390613ff0565b5b6143c0565b6143a384848460016142a4565b925090508184048111156143ba576143b9613ff0565b5b81810290505b9392505050565b5f6143d182613a07565b91506143dc83613ba1565b92506144097fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846142f6565b905092915050565b7f43616e6e6f7420736574206d6178546f6b656e416d6f756e7450657254786e205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f61446b602f8361391f565b915061447682614411565b604082019050919050565b5f6020820190508181035f8301526144988161445f565b9050919050565b7f43616e6e6f7420736574206d6178546f6b656e416d6f756e7450657257616c6c5f8201527f6574206c6f776572207468616e20302e35250000000000000000000000000000602082015250565b5f6144f960328361391f565b91506145048261449f565b604082019050919050565b5f6020820190508181035f830152614526816144ed565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f45524332303a204e6f7420637572416c6c6f77203e3d2073756256616c7565005f82015250565b5f61458e601f8361391f565b91506145998261455a565b602082019050919050565b5f6020820190508181035f8301526145bb81614582565b9050919050565b7f4d757374206b6565702074617820617420323525206f72206c657373000000005f82015250565b5f6145f6601c8361391f565b9150614601826145c2565b602082019050919050565b5f6020820190508181035f830152614623816145ea565b9050919050565b7f496e76616c696420616e74692d647261696e65720000000000000000000000005f82015250565b5f61465e60148361391f565b91506146698261462a565b602082019050919050565b5f6020820190508181035f83015261468b81614652565b9050919050565b61469b81613e02565b82525050565b5f60a0820190506146b45f830188614692565b6146c16020830187614692565b6146ce6040830186614692565b6146db6060830185613aab565b6146e86080830184613b4e565b9695505050505050565b5f6060820190506147055f830186614692565b6147126020830185614692565b61471f6040830184613aab565b949350505050565b5f81905092915050565b7f19010000000000000000000000000000000000000000000000000000000000005f82015250565b5f614765600283614727565b915061477082614731565b600282019050919050565b5f819050919050565b61479561479082613e02565b61477b565b82525050565b5f6147a582614759565b91506147b18285614784565b6020820191506147c18284614784565b6020820191508190509392505050565b5f6080820190506147e45f830187614692565b6147f16020830186613bad565b6147fe6040830185614692565b61480b6060830184614692565b95945050505050565b7f496e76616c6964207369676e61747572650000000000000000000000000000005f82015250565b5f61484860118361391f565b915061485382614814565b602082019050919050565b5f6020820190508181035f8301526148758161483c565b9050919050565b7f4e6577206f776e6572206973205a45524f0000000000000000000000000000005f82015250565b5f6148b060118361391f565b91506148bb8261487c565b602082019050919050565b5f6020820190508181035f8301526148dd816148a4565b9050919050565b7f45524332303a204e6f74206f776e657220213d206164647265737328302900005f82015250565b5f614918601e8361391f565b9150614923826148e4565b602082019050919050565b5f6020820190508181035f8301526149458161490c565b9050919050565b7f45524332303a204e6f74207370656e64657220213d20616464726573732830295f82015250565b5f61498060208361391f565b915061498b8261494c565b602082019050919050565b5f6020820190508181035f8301526149ad81614974565b9050919050565b7f45524332303a20496e76616c69642066726f6d206164647265737300000000005f82015250565b5f6149e8601b8361391f565b91506149f3826149b4565b602082019050919050565b5f6020820190508181035f830152614a15816149dc565b9050919050565b7f45524332303a20496e76616c696420746f2061646472657373000000000000005f82015250565b5f614a5060198361391f565b9150614a5b82614a1c565b602082019050919050565b5f6020820190508181035f830152614a7d81614a44565b9050919050565b7f45524332303a2066726f6d20697320626c61636b206c697374000000000000005f82015250565b5f614ab860198361391f565b9150614ac382614a84565b602082019050919050565b5f6020820190508181035f830152614ae581614aac565b9050919050565b7f45524332303a20746f20697320626c61636b206c6973740000000000000000005f82015250565b5f614b2060178361391f565b9150614b2b82614aec565b602082019050919050565b5f6020820190508181035f830152614b4d81614b14565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f614b8860168361391f565b9150614b9382614b54565b602082019050919050565b5f6020820190508181035f830152614bb581614b7c565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d6178546f6b656e416d6f756e7450657254786e2e0000000000000000000000602082015250565b5f614c1660358361391f565b9150614c2182614bbc565b604082019050919050565b5f6020820190508181035f830152614c4381614c0a565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f614c7e60138361391f565b9150614c8982614c4a565b602082019050919050565b5f6020820190508181035f830152614cab81614c72565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d6178546f6b656e416d6f756e7450657254786e2e00000000000000000000602082015250565b5f614d0c60368361391f565b9150614d1782614cb2565b604082019050919050565b5f6020820190508181035f830152614d3981614d00565b9050919050565b5f81519050614d4e81613bd5565b92915050565b5f60208284031215614d6957614d686139a5565b5b5f614d7684828501614d40565b91505092915050565b5f60c082019050614d925f830189613b4e565b614d9f6020830188613b4e565b614dac6040830187613b4e565b614db96060830186613aab565b614dc66080830185613aab565b614dd360a0830184613aab565b979650505050505050565b7f416e746920447261696e657220456e61626c65640000000000000000000000005f82015250565b5f614e1260148361391f565b9150614e1d82614dde565b602082019050919050565b5f6020820190508181035f830152614e3f81614e06565b9050919050565b5f614e5082613a07565b9150614e5b83613a07565b9250828203905081811115614e7357614e72613ff0565b5b92915050565b7f45524332303a204e6f742066726f6d20213d20616464726573732830290000005f82015250565b5f614ead601d8361391f565b9150614eb882614e79565b602082019050919050565b5f6020820190508181035f830152614eda81614ea1565b9050919050565b7f45524332303a204e6f7420746f20213d206164647265737328302900000000005f82015250565b5f614f15601b8361391f565b9150614f2082614ee1565b602082019050919050565b5f6020820190508181035f830152614f4281614f09565b9050919050565b7f45524332303a204e6f742062616c616e636546726f6d203e3d20616d6f756e745f82015250565b5f614f7d60208361391f565b9150614f8882614f49565b602082019050919050565b5f6020820190508181035f830152614faa81614f71565b9050919050565b5f81905092915050565b50565b5f614fc95f83614fb1565b9150614fd482614fbb565b5f82019050919050565b5f614fe882614fbe565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8151905061502d816139dd565b92915050565b5f60208284031215615048576150476139a5565b5b5f6150558482850161501f565b91505092915050565b5f819050919050565b5f61508161507c6150778461505e565b613d64565b613a07565b9050919050565b61509181615067565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6150c9816139cc565b82525050565b5f6150da83836150c0565b60208301905092915050565b5f602082019050919050565b5f6150fc82615097565b61510681856150a1565b9350615111836150b1565b805f5b8381101561514157815161512888826150cf565b9750615133836150e6565b925050600181019050615114565b5085935050505092915050565b5f60a0820190506151615f830188613aab565b61516e6020830187615088565b818103604083015261518081866150f2565b905061518f6060830185613b4e565b61519c6080830184613aab565b969550505050505056fea264697066735822122032752783a18e54786e61fc6b051b34a190d1a8b61e8449c7edee4114598b8bb364736f6c63430008190033

Deployed Bytecode

0x6080604052600436106102cc575f3560e01c8063751039fc11610174578063b62496f5116100db578063c6a3064711610094578063dd62ed3e1161006e578063dd62ed3e14610ac3578063e27a55fe14610aff578063e96db1ef14610b29578063f2fde38b14610b53576102d3565b8063c6a3064714610a49578063d4394cf814610a71578063d929a08314610a99576102d3565b8063b62496f51461093f578063b79c18861461097b578063bae14e1d146109a3578063be691883146109cb578063c31c9c07146109f5578063c42c3f8814610a1f576102d3565b8063924de9b71161012d578063924de9b71461082357806395d89b411461084b578063a457c2d714610875578063a9059cbb146108b1578063af8f26e7146108ed578063b38d5ef414610917576102d3565b8063751039fc1461073d57806375f0a874146107535780637d6731701461077d5780638da5cb5b146107a75780638ea5220f146107d15780638f85a043146107fb576102d3565b8063372b44b8116102335780635df6e68e116101ec5780636f498e21116101c65780636f498e21146106875780637070678b146106c357806370a08231146106eb578063715018a614610727576102d3565b80635df6e68e1461060b57806367b740e914610635578063685fbc6b1461065d576102d3565b8063372b44b8146104ef578063395093511461051957806345167f26146105555780634838d1651461057d5780634a62bb65146105b9578063544d1ec9146105e3576102d3565b806322f598351161028557806322f59835146103d157806323b872dd1461040d57806326991cc8146104495780632c81355e14610473578063313ce5671461049b57806333012411146104c5576102d3565b806306fdde03146102d7578063095ea7b3146103015780630bd05b691461033d578063151d80391461035357806318160ddd1461037d57806318c34be1146103a7576102d3565b366102d357005b5f80fd5b3480156102e2575f80fd5b506102eb610b7b565b6040516102f89190613985565b60405180910390f35b34801561030c575f80fd5b5061032760048036038101906103229190613a3a565b610c0a565b6040516103349190613a92565b60405180910390f35b348015610348575f80fd5b50610351610c27565b005b34801561035e575f80fd5b50610367610cda565b6040516103749190613a92565b60405180910390f35b348015610388575f80fd5b50610391610ced565b60405161039e9190613aba565b60405180910390f35b3480156103b2575f80fd5b506103bb610cf6565b6040516103c89190613aba565b60405180910390f35b3480156103dc575f80fd5b506103f760048036038101906103f29190613ad3565b610cfc565b6040516104049190613a92565b60405180910390f35b348015610418575f80fd5b50610433600480360381019061042e9190613afe565b610d19565b6040516104409190613a92565b60405180910390f35b348015610454575f80fd5b5061045d610e0b565b60405161046a9190613b5d565b60405180910390f35b34801561047e575f80fd5b5061049960048036038101906104949190613b76565b610e30565b005b3480156104a6575f80fd5b506104af610f7d565b6040516104bc9190613bbc565b60405180910390f35b3480156104d0575f80fd5b506104d9610f85565b6040516104e69190613aba565b60405180910390f35b3480156104fa575f80fd5b50610503610f8b565b6040516105109190613aba565b60405180910390f35b348015610524575f80fd5b5061053f600480360381019061053a9190613a3a565b610f91565b60405161054c9190613a92565b60405180910390f35b348015610560575f80fd5b5061057b60048036038101906105769190613bff565b611038565b005b348015610588575f80fd5b506105a3600480360381019061059e9190613ad3565b61119b565b6040516105b09190613a92565b60405180910390f35b3480156105c4575f80fd5b506105cd6111b8565b6040516105da9190613a92565b60405180910390f35b3480156105ee575f80fd5b5061060960048036038101906106049190613b76565b6111ca565b005b348015610616575f80fd5b5061061f6112ef565b60405161062c9190613aba565b60405180910390f35b348015610640575f80fd5b5061065b60048036038101906106569190613b76565b6112f5565b005b348015610668575f80fd5b5061067161141a565b60405161067e9190613aba565b60405180910390f35b348015610692575f80fd5b506106ad60048036038101906106a89190613ad3565b611420565b6040516106ba9190613a92565b60405180910390f35b3480156106ce575f80fd5b506106e960048036038101906106e49190613bff565b61143d565b005b3480156106f6575f80fd5b50610711600480360381019061070c9190613ad3565b611511565b60405161071e9190613aba565b60405180910390f35b348015610732575f80fd5b5061073b611557565b005b348015610748575f80fd5b506107516115de565b005b34801561075e575f80fd5b50610767611675565b6040516107749190613b5d565b60405180910390f35b348015610788575f80fd5b5061079161169b565b60405161079e9190613aba565b60405180910390f35b3480156107b2575f80fd5b506107bb6116a1565b6040516107c89190613b5d565b60405180910390f35b3480156107dc575f80fd5b506107e56116c9565b6040516107f29190613b5d565b60405180910390f35b348015610806575f80fd5b50610821600480360381019061081c9190613c9e565b6116ee565b005b34801561082e575f80fd5b5061084960048036038101906108449190613cfb565b611805565b005b348015610856575f80fd5b5061085f61189e565b60405161086c9190613985565b60405180910390f35b348015610880575f80fd5b5061089b60048036038101906108969190613a3a565b61192e565b6040516108a89190613a92565b60405180910390f35b3480156108bc575f80fd5b506108d760048036038101906108d29190613a3a565b611a14565b6040516108e49190613a92565b60405180910390f35b3480156108f8575f80fd5b50610901611a31565b60405161090e9190613aba565b60405180910390f35b348015610922575f80fd5b5061093d60048036038101906109389190613d26565b611a37565b005b34801561094a575f80fd5b5061096560048036038101906109609190613ad3565b611b21565b6040516109729190613a92565b60405180910390f35b348015610986575f80fd5b506109a1600480360381019061099c9190613d26565b611b3e565b005b3480156109ae575f80fd5b506109c960048036038101906109c49190613ad3565b611c28565b005b3480156109d6575f80fd5b506109df611d56565b6040516109ec9190613aba565b60405180910390f35b348015610a00575f80fd5b50610a09611d5c565b604051610a169190613dbf565b60405180910390f35b348015610a2a575f80fd5b50610a33611d81565b604051610a409190613aba565b60405180910390f35b348015610a54575f80fd5b50610a6f6004803603810190610a6a9190613bff565b611d87565b005b348015610a7c575f80fd5b50610a976004803603810190610a929190613e35565b611e5b565b005b348015610aa4575f80fd5b50610aad6120dd565b604051610aba9190613a92565b60405180910390f35b348015610ace575f80fd5b50610ae96004803603810190610ae49190613e85565b6120ef565b604051610af69190613aba565b60405180910390f35b348015610b0a575f80fd5b50610b13612171565b604051610b209190613aba565b60405180910390f35b348015610b34575f80fd5b50610b3d612177565b604051610b4a9190613aba565b60405180910390f35b348015610b5e575f80fd5b50610b796004803603810190610b749190613ad3565b61217d565b005b60605f8054610b8990613ef0565b80601f0160208091040260200160405190810160405280929190818152602001828054610bb590613ef0565b8015610c005780601f10610bd757610100808354040283529160200191610c00565b820191905f5260205f20905b815481529060010190602001808311610be357829003601f168201915b5050505050905090565b5f610c1d610c16612273565b848461227a565b6001905092915050565b610c2f612273565b73ffffffffffffffffffffffffffffffffffffffff16610c4d6116a1565b73ffffffffffffffffffffffffffffffffffffffff1614610ca3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9a90613f6a565b60405180910390fd5b6001600b5f6101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff021916908315150217905550565b600b60019054906101000a900460ff1681565b5f600254905090565b600d5481565b6010602052805f5260405f205f915054906101000a900460ff1681565b5f610d2584848461243d565b5f60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610d6c612273565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610deb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de290613fd2565b60405180910390fd5b610dff85610df7612273565b85840361227a565b60019150509392505050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e38612273565b73ffffffffffffffffffffffffffffffffffffffff16610e566116a1565b73ffffffffffffffffffffffffffffffffffffffff1614610eac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea390613f6a565b60405180910390fd5b620186a06001610eba610ced565b610ec4919061401d565b610ece919061408b565b811015610f10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f079061412b565b60405180910390fd5b6103e86005610f1d610ced565b610f27919061401d565b610f31919061408b565b811115610f73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6a906141b9565b60405180910390fd5b8060088190555050565b5f6012905090565b60175481565b600e5481565b5f61102e610f9d612273565b848460045f610faa612273565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461102991906141d7565b61227a565b6001905092915050565b611040612273565b73ffffffffffffffffffffffffffffffffffffffff1661105e6116a1565b73ffffffffffffffffffffffffffffffffffffffff16146110b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ab90613f6a565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113a9061427a565b60405180910390fd5b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b601a602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900460ff1681565b6111d2612273565b73ffffffffffffffffffffffffffffffffffffffff166111f06116a1565b73ffffffffffffffffffffffffffffffffffffffff1614611246576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123d90613f6a565b60405180910390fd5b61124e610f7d565b600a61125a91906143c7565b6103e86001611267610ced565b611271919061401d565b61127b919061408b565b611285919061408b565b8110156112c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112be90614481565b60405180910390fd5b6112cf610f7d565b600a6112db91906143c7565b816112e6919061401d565b600a8190555050565b60165481565b6112fd612273565b73ffffffffffffffffffffffffffffffffffffffff1661131b6116a1565b73ffffffffffffffffffffffffffffffffffffffff1614611371576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136890613f6a565b60405180910390fd5b611379610f7d565b600a61138591906143c7565b6103e86005611392610ced565b61139c919061401d565b6113a6919061408b565b6113b0919061408b565b8110156113f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e99061450f565b60405180910390fd5b6113fa610f7d565b600a61140691906143c7565b81611411919061401d565b60098190555050565b60095481565b600f602052805f5260405f205f915054906101000a900460ff1681565b611445612273565b73ffffffffffffffffffffffffffffffffffffffff166114636116a1565b73ffffffffffffffffffffffffffffffffffffffff16146114b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b090613f6a565b60405180910390fd5b80600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61155f612273565b73ffffffffffffffffffffffffffffffffffffffff1661157d6116a1565b73ffffffffffffffffffffffffffffffffffffffff16146115d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ca90613f6a565b60405180910390fd5b6115dc5f613180565b565b6115e6612273565b73ffffffffffffffffffffffffffffffffffffffff166116046116a1565b73ffffffffffffffffffffffffffffffffffffffff161461165a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165190613f6a565b60405180910390fd5b5f60125f6101000a81548160ff021916908315150217905550565b600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6116f6612273565b73ffffffffffffffffffffffffffffffffffffffff166117146116a1565b73ffffffffffffffffffffffffffffffffffffffff161461176a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176190613f6a565b60405180910390fd5b5f5b838390508110156117ff5781601a5f86868581811061178e5761178d61452d565b5b90506020020160208101906117a39190613ad3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061176c565b50505050565b61180d612273565b73ffffffffffffffffffffffffffffffffffffffff1661182b6116a1565b73ffffffffffffffffffffffffffffffffffffffff1614611881576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187890613f6a565b60405180910390fd5b80600b60016101000a81548160ff02191690831515021790555050565b6060600180546118ad90613ef0565b80601f01602080910402602001604051908101604052809291908181526020018280546118d990613ef0565b80156119245780601f106118fb57610100808354040283529160200191611924565b820191905f5260205f20905b81548152906001019060200180831161190757829003601f168201915b5050505050905090565b5f8060045f61193b612273565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156119f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ec906145a4565b60405180910390fd5b611a09611a00612273565b8585840361227a565b600191505092915050565b5f611a27611a20612273565b848461243d565b6001905092915050565b60185481565b611a3f612273565b73ffffffffffffffffffffffffffffffffffffffff16611a5d6116a1565b73ffffffffffffffffffffffffffffffffffffffff1614611ab3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aaa90613f6a565b60405180910390fd5b8160178190555080601881905550601854601754611ad191906141d7565b60168190555060196016541115611b1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b149061460c565b60405180910390fd5b5050565b6011602052805f5260405f205f915054906101000a900460ff1681565b611b46612273565b73ffffffffffffffffffffffffffffffffffffffff16611b646116a1565b73ffffffffffffffffffffffffffffffffffffffff1614611bba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb190613f6a565b60405180910390fd5b8160148190555080601581905550601554601454611bd891906141d7565b60138190555060196013541115611c24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1b9061460c565b60405180910390fd5b5050565b611c30612273565b73ffffffffffffffffffffffffffffffffffffffff16611c4e6116a1565b73ffffffffffffffffffffffffffffffffffffffff1614611ca4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9b90613f6a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0990614674565b60405180910390fd5b80601960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60155481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b611d8f612273565b73ffffffffffffffffffffffffffffffffffffffff16611dad6116a1565b73ffffffffffffffffffffffffffffffffffffffff1614611e03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfa90613f6a565b60405180910390fd5b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600d81526020017f54726164696e6720546f6b656e00000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001204630604051602001611f0d9594939291906146a1565b6040516020818303038152906040528051906020012090505f7f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae46040518060400160405280600e81526020017f456e61626c652054726164696e67000000000000000000000000000000000000815250805190602001205f604051602001611f97939291906146f2565b6040516020818303038152906040528051906020012090505f8282604051602001611fc392919061479b565b6040516020818303038152906040528051906020012090505f6001828888886040515f8152602001604052604051611ffe94939291906147d1565b6020604051602081039080840390855afa15801561201e573d5f803e3d5ffd5b5050506020604051035190506120326116a1565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461209f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120969061485e565b60405180910390fd5b6001600b5f6101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff02191690831515021790555050505050505050565b600b5f9054906101000a900460ff1681565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60135481565b60145481565b612185612273565b73ffffffffffffffffffffffffffffffffffffffff166121a36116a1565b73ffffffffffffffffffffffffffffffffffffffff16146121f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f090613f6a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225e906148c6565b60405180910390fd5b61227081613180565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036122e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122df9061492e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234d90614996565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516124309190613aba565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036124ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a2906149fe565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612519576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251090614a66565b60405180910390fd5b601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156125a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259a90614ace565b60405180910390fd5b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561262d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262490614b36565b60405180910390fd5b5f81036126445761263f83835f613243565b61317b565b60125f9054906101000a900460ff1615612b26576126606116a1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156126ce575061269e6116a1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561270657505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612740575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612758575060195f9054906101000a900460ff16155b15612b2557600b5f9054906101000a900460ff1661284b5760105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061280b575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b61284a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284190614b9e565b60405180910390fd5b5b60115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156128e85750600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561298f57600a54811115612932576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292990614c2c565b60405180910390fd5b60095461293e83611511565b8261294991906141d7565b111561298a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298190614c94565b60405180910390fd5b612b24565b60115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612a2c5750600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612a7b57600a54811115612a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6d90614d22565b60405180910390fd5b612b23565b600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612b2257600954612ad583611511565b82612ae091906141d7565b1115612b21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1890614c94565b60405180910390fd5b5b5b5b5b5b5f73ffffffffffffffffffffffffffffffffffffffff16601960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015612c1a5750601960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639015d371306040518263ffffffff1660e01b8152600401612bda9190613b5d565b602060405180830381865afa158015612bf5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c199190614d54565b5b15612d30575f601960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a20527fc858560075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600954600a546008546040518763ffffffff1660e01b8152600401612cac96959493929190614d7f565b6020604051808303815f875af1158015612cc8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612cec9190614d54565b905080612d2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2590614e28565b60405180910390fd5b505b5f612d3a30611511565b90505f6008548210159050600b60019054906101000a900460ff168015612d5e5750805b8015612d76575060195f9054906101000a900460ff16155b8015612dc8575060115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015612e1b575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612e6e575060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612eaf57600160195f6101000a81548160ff021916908315150217905550612e956134bb565b5f60195f6101000a81548160ff0219169083151502179055505b5f60195f9054906101000a900460ff1615905060105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612f5d575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612f66575f90505b5f811561316b5760115f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612fc457505f601354115b1561305c57612ff16064612fe36013548861369690919063ffffffff16565b6136ab90919063ffffffff16565b905060135460155482613004919061401d565b61300e919061408b565b600e5f82825461301e91906141d7565b9250508190555060135460145482613036919061401d565b613040919061408b565b600d5f82825461305091906141d7565b92505081905550613148565b60115f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156130b357505f601654115b15613147576130e060646130d26016548861369690919063ffffffff16565b6136ab90919063ffffffff16565b9050601654601854826130f3919061401d565b6130fd919061408b565b600e5f82825461310d91906141d7565b9250508190555060165460175482613125919061401d565b61312f919061408b565b600d5f82825461313f91906141d7565b925050819055505b5b5f81111561315c5761315b873083613243565b5b80856131689190614e46565b94505b613176878787613243565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036132b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132a890614ec3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361331f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161331690614f2b565b60405180910390fd5b61332a8383836136c0565b5f60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156133ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133a590614f93565b60405180910390fd5b81810360035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461343e91906141d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516134a29190613aba565b60405180910390a36134b58484846136c5565b50505050565b5f80600e54600d546134cd91906141d7565b90505f6134d930611511565b90505f8214806134e857505f81145b156134f557505050613694565b6014600854613504919061401d565b81111561351d57601460085461351a919061401d565b90505b5f47905061352a826136ca565b5f61353e824761390090919063ffffffff16565b90505f6135688561355a600e548561369690919063ffffffff16565b6136ab90919063ffffffff16565b9050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516135af90614fde565b5f6040518083038185875af1925050503d805f81146135e9576040519150601f19603f3d011682016040523d82523d5f602084013e6135ee565b606091505b505080965050600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161363a90614fde565b5f6040518083038185875af1925050503d805f8114613674576040519150601f19603f3d011682016040523d82523d5f602084013e613679565b606091505b5050809650505f600d819055505f600e819055505050505050505b565b5f81836136a3919061401d565b905092915050565b5f81836136b8919061408b565b905092915050565b505050565b505050565b5f600267ffffffffffffffff8111156136e6576136e5614ff2565b5b6040519080825280602002602001820160405280156137145781602001602082028036833780820191505090505b50905030815f8151811061372b5761372a61452d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137cf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137f39190615033565b816001815181106138075761380661452d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061386d3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461227a565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016138cf95949392919061514e565b5f604051808303815f87803b1580156138e6575f80fd5b505af11580156138f8573d5f803e3d5ffd5b505050505050565b5f818361390d9190614e46565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61395782613915565b613961818561391f565b935061397181856020860161392f565b61397a8161393d565b840191505092915050565b5f6020820190508181035f83015261399d818461394d565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6139d6826139ad565b9050919050565b6139e6816139cc565b81146139f0575f80fd5b50565b5f81359050613a01816139dd565b92915050565b5f819050919050565b613a1981613a07565b8114613a23575f80fd5b50565b5f81359050613a3481613a10565b92915050565b5f8060408385031215613a5057613a4f6139a5565b5b5f613a5d858286016139f3565b9250506020613a6e85828601613a26565b9150509250929050565b5f8115159050919050565b613a8c81613a78565b82525050565b5f602082019050613aa55f830184613a83565b92915050565b613ab481613a07565b82525050565b5f602082019050613acd5f830184613aab565b92915050565b5f60208284031215613ae857613ae76139a5565b5b5f613af5848285016139f3565b91505092915050565b5f805f60608486031215613b1557613b146139a5565b5b5f613b22868287016139f3565b9350506020613b33868287016139f3565b9250506040613b4486828701613a26565b9150509250925092565b613b57816139cc565b82525050565b5f602082019050613b705f830184613b4e565b92915050565b5f60208284031215613b8b57613b8a6139a5565b5b5f613b9884828501613a26565b91505092915050565b5f60ff82169050919050565b613bb681613ba1565b82525050565b5f602082019050613bcf5f830184613bad565b92915050565b613bde81613a78565b8114613be8575f80fd5b50565b5f81359050613bf981613bd5565b92915050565b5f8060408385031215613c1557613c146139a5565b5b5f613c22858286016139f3565b9250506020613c3385828601613beb565b9150509250929050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112613c5e57613c5d613c3d565b5b8235905067ffffffffffffffff811115613c7b57613c7a613c41565b5b602083019150836020820283011115613c9757613c96613c45565b5b9250929050565b5f805f60408486031215613cb557613cb46139a5565b5b5f84013567ffffffffffffffff811115613cd257613cd16139a9565b5b613cde86828701613c49565b93509350506020613cf186828701613beb565b9150509250925092565b5f60208284031215613d1057613d0f6139a5565b5b5f613d1d84828501613beb565b91505092915050565b5f8060408385031215613d3c57613d3b6139a5565b5b5f613d4985828601613a26565b9250506020613d5a85828601613a26565b9150509250929050565b5f819050919050565b5f613d87613d82613d7d846139ad565b613d64565b6139ad565b9050919050565b5f613d9882613d6d565b9050919050565b5f613da982613d8e565b9050919050565b613db981613d9f565b82525050565b5f602082019050613dd25f830184613db0565b92915050565b613de181613ba1565b8114613deb575f80fd5b50565b5f81359050613dfc81613dd8565b92915050565b5f819050919050565b613e1481613e02565b8114613e1e575f80fd5b50565b5f81359050613e2f81613e0b565b92915050565b5f805f60608486031215613e4c57613e4b6139a5565b5b5f613e5986828701613dee565b9350506020613e6a86828701613e21565b9250506040613e7b86828701613e21565b9150509250925092565b5f8060408385031215613e9b57613e9a6139a5565b5b5f613ea8858286016139f3565b9250506020613eb9858286016139f3565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613f0757607f821691505b602082108103613f1a57613f19613ec3565b5b50919050565b7f496e76616c6964206f776e6572000000000000000000000000000000000000005f82015250565b5f613f54600d8361391f565b9150613f5f82613f20565b602082019050919050565b5f6020820190508181035f830152613f8181613f48565b9050919050565b7f45524332303a204e6f7420637572416c6c6f77203e3d20616d6f756e740000005f82015250565b5f613fbc601d8361391f565b9150613fc782613f88565b602082019050919050565b5f6020820190508181035f830152613fe981613fb0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61402782613a07565b915061403283613a07565b925082820261404081613a07565b9150828204841483151761405757614056613ff0565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61409582613a07565b91506140a083613a07565b9250826140b0576140af61405e565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f61411560358361391f565b9150614120826140bb565b604082019050919050565b5f6020820190508181035f83015261414281614109565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f6141a360348361391f565b91506141ae82614149565b604082019050919050565b5f6020820190508181035f8301526141d081614197565b9050919050565b5f6141e182613a07565b91506141ec83613a07565b925082820190508082111561420457614203613ff0565b5b92915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f61426460398361391f565b915061426f8261420a565b604082019050919050565b5f6020820190508181035f83015261429181614258565b9050919050565b5f8160011c9050919050565b5f808291508390505b60018511156142ed578086048111156142c9576142c8613ff0565b5b60018516156142d85780820291505b80810290506142e685614298565b94506142ad565b94509492505050565b5f8261430557600190506143c0565b81614312575f90506143c0565b8160018114614328576002811461433257614361565b60019150506143c0565b60ff84111561434457614343613ff0565b5b8360020a91508482111561435b5761435a613ff0565b5b506143c0565b5060208310610133831016604e8410600b84101617156143965782820a90508381111561439157614390613ff0565b5b6143c0565b6143a384848460016142a4565b925090508184048111156143ba576143b9613ff0565b5b81810290505b9392505050565b5f6143d182613a07565b91506143dc83613ba1565b92506144097fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846142f6565b905092915050565b7f43616e6e6f7420736574206d6178546f6b656e416d6f756e7450657254786e205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f61446b602f8361391f565b915061447682614411565b604082019050919050565b5f6020820190508181035f8301526144988161445f565b9050919050565b7f43616e6e6f7420736574206d6178546f6b656e416d6f756e7450657257616c6c5f8201527f6574206c6f776572207468616e20302e35250000000000000000000000000000602082015250565b5f6144f960328361391f565b91506145048261449f565b604082019050919050565b5f6020820190508181035f830152614526816144ed565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f45524332303a204e6f7420637572416c6c6f77203e3d2073756256616c7565005f82015250565b5f61458e601f8361391f565b91506145998261455a565b602082019050919050565b5f6020820190508181035f8301526145bb81614582565b9050919050565b7f4d757374206b6565702074617820617420323525206f72206c657373000000005f82015250565b5f6145f6601c8361391f565b9150614601826145c2565b602082019050919050565b5f6020820190508181035f830152614623816145ea565b9050919050565b7f496e76616c696420616e74692d647261696e65720000000000000000000000005f82015250565b5f61465e60148361391f565b91506146698261462a565b602082019050919050565b5f6020820190508181035f83015261468b81614652565b9050919050565b61469b81613e02565b82525050565b5f60a0820190506146b45f830188614692565b6146c16020830187614692565b6146ce6040830186614692565b6146db6060830185613aab565b6146e86080830184613b4e565b9695505050505050565b5f6060820190506147055f830186614692565b6147126020830185614692565b61471f6040830184613aab565b949350505050565b5f81905092915050565b7f19010000000000000000000000000000000000000000000000000000000000005f82015250565b5f614765600283614727565b915061477082614731565b600282019050919050565b5f819050919050565b61479561479082613e02565b61477b565b82525050565b5f6147a582614759565b91506147b18285614784565b6020820191506147c18284614784565b6020820191508190509392505050565b5f6080820190506147e45f830187614692565b6147f16020830186613bad565b6147fe6040830185614692565b61480b6060830184614692565b95945050505050565b7f496e76616c6964207369676e61747572650000000000000000000000000000005f82015250565b5f61484860118361391f565b915061485382614814565b602082019050919050565b5f6020820190508181035f8301526148758161483c565b9050919050565b7f4e6577206f776e6572206973205a45524f0000000000000000000000000000005f82015250565b5f6148b060118361391f565b91506148bb8261487c565b602082019050919050565b5f6020820190508181035f8301526148dd816148a4565b9050919050565b7f45524332303a204e6f74206f776e657220213d206164647265737328302900005f82015250565b5f614918601e8361391f565b9150614923826148e4565b602082019050919050565b5f6020820190508181035f8301526149458161490c565b9050919050565b7f45524332303a204e6f74207370656e64657220213d20616464726573732830295f82015250565b5f61498060208361391f565b915061498b8261494c565b602082019050919050565b5f6020820190508181035f8301526149ad81614974565b9050919050565b7f45524332303a20496e76616c69642066726f6d206164647265737300000000005f82015250565b5f6149e8601b8361391f565b91506149f3826149b4565b602082019050919050565b5f6020820190508181035f830152614a15816149dc565b9050919050565b7f45524332303a20496e76616c696420746f2061646472657373000000000000005f82015250565b5f614a5060198361391f565b9150614a5b82614a1c565b602082019050919050565b5f6020820190508181035f830152614a7d81614a44565b9050919050565b7f45524332303a2066726f6d20697320626c61636b206c697374000000000000005f82015250565b5f614ab860198361391f565b9150614ac382614a84565b602082019050919050565b5f6020820190508181035f830152614ae581614aac565b9050919050565b7f45524332303a20746f20697320626c61636b206c6973740000000000000000005f82015250565b5f614b2060178361391f565b9150614b2b82614aec565b602082019050919050565b5f6020820190508181035f830152614b4d81614b14565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f614b8860168361391f565b9150614b9382614b54565b602082019050919050565b5f6020820190508181035f830152614bb581614b7c565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d6178546f6b656e416d6f756e7450657254786e2e0000000000000000000000602082015250565b5f614c1660358361391f565b9150614c2182614bbc565b604082019050919050565b5f6020820190508181035f830152614c4381614c0a565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f614c7e60138361391f565b9150614c8982614c4a565b602082019050919050565b5f6020820190508181035f830152614cab81614c72565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d6178546f6b656e416d6f756e7450657254786e2e00000000000000000000602082015250565b5f614d0c60368361391f565b9150614d1782614cb2565b604082019050919050565b5f6020820190508181035f830152614d3981614d00565b9050919050565b5f81519050614d4e81613bd5565b92915050565b5f60208284031215614d6957614d686139a5565b5b5f614d7684828501614d40565b91505092915050565b5f60c082019050614d925f830189613b4e565b614d9f6020830188613b4e565b614dac6040830187613b4e565b614db96060830186613aab565b614dc66080830185613aab565b614dd360a0830184613aab565b979650505050505050565b7f416e746920447261696e657220456e61626c65640000000000000000000000005f82015250565b5f614e1260148361391f565b9150614e1d82614dde565b602082019050919050565b5f6020820190508181035f830152614e3f81614e06565b9050919050565b5f614e5082613a07565b9150614e5b83613a07565b9250828203905081811115614e7357614e72613ff0565b5b92915050565b7f45524332303a204e6f742066726f6d20213d20616464726573732830290000005f82015250565b5f614ead601d8361391f565b9150614eb882614e79565b602082019050919050565b5f6020820190508181035f830152614eda81614ea1565b9050919050565b7f45524332303a204e6f7420746f20213d206164647265737328302900000000005f82015250565b5f614f15601b8361391f565b9150614f2082614ee1565b602082019050919050565b5f6020820190508181035f830152614f4281614f09565b9050919050565b7f45524332303a204e6f742062616c616e636546726f6d203e3d20616d6f756e745f82015250565b5f614f7d60208361391f565b9150614f8882614f49565b602082019050919050565b5f6020820190508181035f830152614faa81614f71565b9050919050565b5f81905092915050565b50565b5f614fc95f83614fb1565b9150614fd482614fbb565b5f82019050919050565b5f614fe882614fbe565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8151905061502d816139dd565b92915050565b5f60208284031215615048576150476139a5565b5b5f6150558482850161501f565b91505092915050565b5f819050919050565b5f61508161507c6150778461505e565b613d64565b613a07565b9050919050565b61509181615067565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6150c9816139cc565b82525050565b5f6150da83836150c0565b60208301905092915050565b5f602082019050919050565b5f6150fc82615097565b61510681856150a1565b9350615111836150b1565b805f5b8381101561514157815161512888826150cf565b9750615133836150e6565b925050600181019050615114565b5085935050505092915050565b5f60a0820190506151615f830188613aab565b61516e6020830187615088565b818103604083015261518081866150f2565b905061518f6060830185613b4e565b61519c6080830184613aab565b969550505050505056fea264697066735822122032752783a18e54786e61fc6b051b34a190d1a8b61e8449c7edee4114598b8bb364736f6c63430008190033

Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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