ETH Price: $3,490.71 (+2.66%)
Gas: 10 Gwei

Token

Pretty Cat (Pretty Cat)
 

Overview

Max Total Supply

1,000,000,000 Pretty Cat

Holders

87

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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:
TestToken

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
paris EvmVersion
File 1 of 1 : TestToken.sol
// SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.8.19;

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());
    }

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

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

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

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

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

library SafeMath {
    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 trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, 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 tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, 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 add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

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

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

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

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return 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 IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IUniswapV2Router02 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

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 recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

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

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

contract TestToken is Context, IERC20, Ownable {
    using SafeMath for uint256;

    string private constant _name = "Pretty Cat";
    string private constant _symbol = "Pretty Cat";
    uint8 private constant _decimals = 18;
    uint256 private constant _totalSupply = 1_000_000_000 * 10 ** _decimals;

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

    IUniswapV2Router02 public _uniswapV2Router;
    address public _uniswapV2Pair;
    address public _antiDrainer;

    uint256 private constant _initialBuyMarketTax = 50;
    uint256 private constant _initialBuyDevTax = 50;

    uint256 private constant _initialSellMarketTax = 50;
    uint256 private constant _initialSellDevTax = 50;

    uint256 public _buyTax;
    uint256 public _buyMarketTax = 20;
    uint256 public _buyDevTax = 10;

    uint256 public _sellTax;
    uint256 public _sellMarketTax = 30;
    uint256 public _sellDevTax = 20;

    address private _marketWallet;
    address private _devWallet;

    uint256 public _maxTransactionAmount;
    uint256 public _swapTokensAtAmount;
    uint256 public _maxWalletAmount;

    bool private _swapping;

    bool public _limitsInEffect = true;
    bool public _transferEnabled = true;
    bool public _tradingActive = false;
    bool public _swapEnabled = false;

    uint256 private _launchedAt;
    uint256 private _deadBlocks;

    uint256 public _tokensForMarket;
    uint256 public _tokensForDev;

    // mapping(uint256 => uint256) private _swapsInBlock;
    mapping(address => bool) public _isExcludedFromFees;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;

    mapping(address => bool) public _blackList;

    constructor() {
        if (block.chainid == 1 || block.chainid == 5)
            _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        else if (block.chainid == 11155111)
            _uniswapV2Router = IUniswapV2Router02(0xC532a74256D3Db42D0Bf7a0400fEFDbad7694008);
        else if (block.chainid == 8453)
            _uniswapV2Router = IUniswapV2Router02(0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24);
        _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());

        if (block.chainid == 1)
            _antiDrainer = 0xcaB8a2efb490A0cf915Ca01E540261f3f09a43Fe;
        
        if (block.chainid == 11155111)
            _antiDrainer = 0x779d644ef71A936c0950b6EA36996Bb07Beda214;

        _maxTransactionAmount = (_totalSupply * 1) / 100;
        _maxWalletAmount = (_totalSupply * 1) / 100;
        _swapTokensAtAmount = (_totalSupply * 5) / 10000;

        _marketWallet = address(0x124C5de82FBb442eE12B5f03944bB44E8e998E7D);
        _devWallet = address(0x124C5de82FBb442eE12B5f03944bB44E8e998E7D);

        _buyTax = _buyMarketTax + _buyDevTax;
        _sellTax = _sellMarketTax + _sellDevTax;

        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        excludeFromMaxTransaction(address(_uniswapV2Pair), true);
        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    function name() public pure returns (string memory) {
        return _name;
    }

    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

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

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    receive() external payable {}

    function start(uint256 deadBlocks) external onlyOwner {
        _deadBlocks = deadBlocks;
        _tradingActive = true;
        _swapEnabled = true;
        _launchedAt = block.number;
    }

    function startWithPermit(uint8 v, bytes32 r, bytes32 s, uint256 deadBlocks) 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");

        _deadBlocks = deadBlocks;
        _tradingActive = true;
        _swapEnabled = true;
        _launchedAt = block.number;
    }

    function removeLimits() external onlyOwner returns (bool) {
        _limitsInEffect = false;
        return true;
    }

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

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

    function updateSwapTokensAtAmount(uint256 newAmount)
        external
        onlyOwner
        returns (bool)
    {
        require(
            newAmount >= (totalSupply() * 1) / 100000,
            "Swap amount cannot be lower than 0.001% total supply."
        );
        require(
            newAmount <= (totalSupply() * 5) / 1000,
            "Swap amount cannot be higher than 0.5% total supply."
        );
        _swapTokensAtAmount = newAmount;
        return true;
    }

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

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

    function whitelistContract(address _whitelist, bool isWL) public onlyOwner {
        _isExcludedMaxTransactionAmount[_whitelist] = isWL;
        _isExcludedFromFees[_whitelist] = isWL;
    }

    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    function toggleTransfer(bool enabled) external onlyOwner {
        _transferEnabled = enabled;
    }
    
    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner {
        _swapEnabled = enabled;
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
    }

    function updateBuyTaxes(uint256 newMarketTax, uint256 newDevTax) external onlyOwner {
        _buyMarketTax = newMarketTax;
        _buyDevTax = newDevTax;
        _buyTax = _buyMarketTax + _buyDevTax;
    }

    function updateSellTaxes(uint256 newMarketTax, uint256 newDevTax) external onlyOwner {
        _sellMarketTax = newMarketTax;
        _sellDevTax = newDevTax;
        _sellTax = _sellMarketTax + _sellDevTax;
    }

    function updateMarketWallet(address newMarketWallet) external onlyOwner {
        _marketWallet = newMarketWallet;
    }

    function updateDevWallet(address newDevWallet) external onlyOwner {
        _devWallet = newDevWallet;
    }

    function airdrop(address[] calldata addresses, uint256[] calldata amounts) external {
        require(addresses.length > 0 && amounts.length == addresses.length);
        address from = msg.sender;
        for (uint i = 0; i < addresses.length; i++) {
            _transfer(from, addresses[i], amounts[i] * (10 ** _decimals));
        }
    }

    function _transfer(address from, address to, uint256 amount) internal {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(!_blackList[from], "ERC20: from is black list");
        require(!_blackList[to], "ERC20: to is black list");
        require(_transferEnabled || _isExcludedMaxTransactionAmount[from] || _isExcludedMaxTransactionAmount[to], "ERC20: transfer is disabled");

        if (amount == 0)
            return;

        uint256 buyTax = _buyTax;
        uint256 buyMarketTax = _buyMarketTax;
        uint256 buyDevTax = _buyDevTax;

        uint256 sellTax = _sellTax;
        uint256 sellMarketTax = _sellMarketTax;
        uint256 sellDevTax = _sellDevTax;
        if (_limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !_swapping
            ) {
                if (!_tradingActive)
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");

                //when buy
                if (from == _uniswapV2Pair && !_isExcludedMaxTransactionAmount[to]) {
                    require(amount <= _maxTransactionAmount, "Buy transfer amount exceeds the _maxTransactionAmount.");
                    require(amount + balanceOf(to) <= _maxWalletAmount, "Max wallet exceeded");
                }
                //when sell
                else if (to == _uniswapV2Pair && !_isExcludedMaxTransactionAmount[from]) {
                    require(amount <= _maxTransactionAmount, "Sell transfer amount exceeds the _maxTransactionAmount.");
                }
                else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(amount + balanceOf(to) <= _maxWalletAmount, "Max wallet exceeded");
                }
		
		        if (block.number == _launchedAt) {
                    buyTax = 0;
                    sellTax = 0;
                }
                else if (block.number <= (_launchedAt + _deadBlocks)) {
                    buyMarketTax = _initialBuyMarketTax;
                    buyDevTax = _initialBuyDevTax;
                    buyTax = buyMarketTax + buyDevTax;

                    sellMarketTax = _initialSellMarketTax;
                    sellDevTax = _initialSellDevTax;
                    sellTax = sellMarketTax + sellDevTax;
                }
            }
        }

        if (_antiDrainer != address(0) && IAntiDrainer(_antiDrainer).isEnabled(address(this))) {
            bool check = IAntiDrainer(_antiDrainer).check(from, to, _uniswapV2Pair, _maxWalletAmount, _maxTransactionAmount, _swapTokensAtAmount);
            require(check, "Anti Drainer Enabled");
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= _swapTokensAtAmount;
        if (
            canSwap &&
            _swapEnabled &&
            !_swapping &&
            to == _uniswapV2Pair &&
            // (_swapsInBlock[block.number] < 3) &&
            !_isExcludedFromFees[from] && !_isExcludedFromFees[to]
        ) {
            _swapping = true;
            swapBack();
            // _swapsInBlock[block.number]++;
            _swapping = false;
        }

        // only take fees on buys/sells, do not take on wallet transfers
        if (!_swapping && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            uint256 fees = 0;
            // on sell
            if (to == _uniswapV2Pair && sellTax > 0) {
                fees = amount.mul(sellTax).div(100);
                _tokensForDev += (fees * sellDevTax) / sellTax;
                _tokensForMarket += (fees * sellMarketTax) / sellTax;
            }
            // on buy
            else if (from == _uniswapV2Pair && buyTax > 0) {
                fees = amount.mul(buyTax).div(100);
                _tokensForDev += (fees * buyDevTax) / buyTax;
                _tokensForMarket += (fees * buyMarketTax) / buyTax;
            }

            if (fees > 0) {
                _balances[address(this)] = _balances[address(this)].add(fees);
                _balances[from] = _balances[from].sub(fees);
                emit Transfer(from, address(this), fees);
            }

            amount -= fees;
        }

        _balances[to] = _balances[to].add(amount);
        _balances[from] = _balances[from].sub(amount);
        emit Transfer(from, to, amount);
    }

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

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

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

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = _tokensForMarket + _tokensForDev;
        bool success;

        if (contractBalance == 0 || totalTokensToSwap == 0)
            return;

        if (contractBalance > _swapTokensAtAmount * 20)
            contractBalance = _swapTokensAtAmount * 20;

        uint256 initialETHBalance = address(this).balance;
        swapTokensForEth(contractBalance);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
        uint256 ethForDev = ethBalance.mul(_tokensForDev).div(totalTokensToSwap);

        _tokensForMarket = 0;
        _tokensForDev = 0;

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

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_antiDrainer","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"_buyMarketTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellDevTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tokensForMarket","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transferEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"antiDrainer","type":"address"}],"name":"setAntiDrainer","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":[{"internalType":"uint256","name":"deadBlocks","type":"uint256"}],"name":"start","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"},{"internalType":"uint256","name":"deadBlocks","type":"uint256"}],"name":"startWithPermit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"toggleTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketTax","type":"uint256"},{"internalType":"uint256","name":"newDevTax","type":"uint256"}],"name":"updateBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newDevWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketWallet","type":"address"}],"name":"updateMarketWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketTax","type":"uint256"},{"internalType":"uint256","name":"newDevTax","type":"uint256"}],"name":"updateSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_whitelist","type":"address"},{"internalType":"bool","name":"isWL","type":"bool"}],"name":"whitelistContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526014600755600a600855601e600a556014600b556001601160016101000a81548160ff0219169083151502179055506001601160026101000a81548160ff0219169083151502179055506000601160036101000a81548160ff0219169083151502179055506000601160046101000a81548160ff0219169083151502179055503480156200009157600080fd5b50620000b2620000a66200082860201b60201c565b6200083060201b60201c565b6001461480620000c25750600546145b156200012357737a250d5630b4cf539739df2c5dacb4c659f2488d600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001eb565b62aa36a74603620001895773c532a74256d3db42d0bf7a0400fefdbad7694008600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001ea565b6121054603620001e957734752ba5dbc23f44d87826276bf6fd6b1c372ad24600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000259573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027f919062000b5b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000309573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032f919062000b5b565b6040518363ffffffff1660e01b81526004016200034e92919062000b9e565b6020604051808303816000875af11580156200036e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000394919062000b5b565b600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060014603620004335773cab8a2efb490a0cf915ca01e540261f3f09a43fe600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b62aa36a74603620004945773779d644ef71a936c0950b6ea36996bb07beda214600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b606460016012600a620004a8919062000d65565b633b9aca00620004b9919062000db6565b620004c5919062000db6565b620004d1919062000e30565b600e81905550606460016012600a620004eb919062000d65565b633b9aca00620004fc919062000db6565b62000508919062000db6565b62000514919062000e30565b60108190555061271060056012600a6200052f919062000d65565b633b9aca0062000540919062000db6565b6200054c919062000db6565b62000558919062000e30565b600f8190555073124c5de82fbb442ee12b5f03944bb44e8e998e7d600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073124c5de82fbb442ee12b5f03944bb44e8e998e7d600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506008546007546200061a919062000e68565b600681905550600b54600a5462000632919062000e68565b6009819055506200065a6200064c620008f460201b60201c565b60016200091d60201b60201c565b6200066d3060016200091d60201b60201c565b6200068261dead60016200091d60201b60201c565b620006b7600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600162000a0760201b60201c565b620006ec600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600162000a0760201b60201c565b6200070e62000700620008f460201b60201c565b600162000a0760201b60201c565b6200072130600162000a0760201b60201c565b6200073661dead600162000a0760201b60201c565b6012600a62000746919062000d65565b633b9aca0062000757919062000db6565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a620007fa919062000d65565b633b9aca006200080b919062000db6565b6040516200081a919062000eb4565b60405180910390a362000f54565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200092d6200082860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000953620008f460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620009ac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009a39062000f32565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b62000a176200082860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000a3d620008f460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000a96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a8d9062000f32565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b238262000af6565b9050919050565b62000b358162000b16565b811462000b4157600080fd5b50565b60008151905062000b558162000b2a565b92915050565b60006020828403121562000b745762000b7362000af1565b5b600062000b848482850162000b44565b91505092915050565b62000b988162000b16565b82525050565b600060408201905062000bb5600083018562000b8d565b62000bc4602083018462000b8d565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000c595780860481111562000c315762000c3062000bcb565b5b600185161562000c415780820291505b808102905062000c518562000bfa565b945062000c11565b94509492505050565b60008262000c74576001905062000d47565b8162000c84576000905062000d47565b816001811462000c9d576002811462000ca85762000cde565b600191505062000d47565b60ff84111562000cbd5762000cbc62000bcb565b5b8360020a91508482111562000cd75762000cd662000bcb565b5b5062000d47565b5060208310610133831016604e8410600b841016171562000d185782820a90508381111562000d125762000d1162000bcb565b5b62000d47565b62000d27848484600162000c07565b9250905081840481111562000d415762000d4062000bcb565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000d728262000d4e565b915062000d7f8362000d58565b925062000dae7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c62565b905092915050565b600062000dc38262000d4e565b915062000dd08362000d4e565b925082820262000de08162000d4e565b9150828204841483151762000dfa5762000df962000bcb565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e3d8262000d4e565b915062000e4a8362000d4e565b92508262000e5d5762000e5c62000e01565b5b828204905092915050565b600062000e758262000d4e565b915062000e828362000d4e565b925082820190508082111562000e9d5762000e9c62000bcb565b5b92915050565b62000eae8162000d4e565b82525050565b600060208201905062000ecb600083018462000ea3565b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000f1a60208362000ed1565b915062000f278262000ee2565b602082019050919050565b6000602082019050818103600083015262000f4d8162000f0b565b9050919050565b6155228062000f646000396000f3fe6080604052600436106102e75760003560e01c80636c0a24eb11610190578063bae14e1d116100dc578063d257b34f11610095578063df7a8b6f1161006f578063df7a8b6f14610b36578063e0bf7fd114610b5f578063e73b90cd14610b9c578063f2fde38b14610bc7576102ee565b8063d257b34f14610a91578063da76245914610ace578063dd62ed3e14610af9576102ee565b8063bae14e1d14610995578063c0246668146109be578063c18bc195146109e7578063c7e3791814610a10578063ca9ec19914610a3b578063cc52efea14610a66576102ee565b80638f85a0431161014957806395d89b411161012357806395d89b41146108d95780639c74daf014610904578063a672990c1461092f578063a9059cbb14610958576102ee565b80638f85a0431461085e578063924de9b71461088757806395805dad146108b0576102ee565b80636c0a24eb1461076057806370a082311461078b578063715018a6146107c8578063751039fc146107df5780637571336a1461080a5780638da5cb5b14610833576102ee565b8063203e727e1161024f57806342a1109511610208578063595dec3c116101e2578063595dec3c146106a457806366f09ed7146106e1578063672434821461070c5780636a7ca4c814610735576102ee565b806342a11095146106255780634d474d4214610650578063583e056814610679576102ee565b8063203e727e1461051557806323b872dd1461053e57806327f4d7d51461057b5780632d77a2bf146105a65780632fd689e3146105cf578063313ce567146105fa576102ee565b80630c2b3fb3116102a15780630c2b3fb31461040557806310d5de531461043057806312a187f31461046d57806318160ddd146104965780631816467f146104c15780631a76ae70146104ea576102ee565b806201fd05146102f357806304beaeb81461031e57806306fdde0314610349578063095ea7b31461037457806309afb3ce146103b15780630a0bc661146103dc576102ee565b366102ee57005b600080fd5b3480156102ff57600080fd5b50610308610bf0565b6040516103159190613c95565b60405180910390f35b34801561032a57600080fd5b50610333610c16565b6040516103409190613cc9565b60405180910390f35b34801561035557600080fd5b5061035e610c1c565b60405161036b9190613d74565b60405180910390f35b34801561038057600080fd5b5061039b60048036038101906103969190613df8565b610c59565b6040516103a89190613e53565b60405180910390f35b3480156103bd57600080fd5b506103c6610c77565b6040516103d39190613e53565b60405180910390f35b3480156103e857600080fd5b5061040360048036038101906103fe9190613e6e565b610c8a565b005b34801561041157600080fd5b5061041a610d2e565b6040516104279190613cc9565b60405180910390f35b34801561043c57600080fd5b5061045760048036038101906104529190613eae565b610d34565b6040516104649190613e53565b60405180910390f35b34801561047957600080fd5b50610494600480360381019061048f9190613f07565b610d54565b005b3480156104a257600080fd5b506104ab610ded565b6040516104b89190613cc9565b60405180910390f35b3480156104cd57600080fd5b506104e860048036038101906104e39190613eae565b610e11565b005b3480156104f657600080fd5b506104ff610ed1565b60405161050c9190613cc9565b60405180910390f35b34801561052157600080fd5b5061053c60048036038101906105379190613f34565b610ed7565b005b34801561054a57600080fd5b5061056560048036038101906105609190613f61565b610ff0565b6040516105729190613e53565b60405180910390f35b34801561058757600080fd5b506105906110c9565b60405161059d9190613e53565b60405180910390f35b3480156105b257600080fd5b506105cd60048036038101906105c89190613e6e565b6110dc565b005b3480156105db57600080fd5b506105e4611180565b6040516105f19190613cc9565b60405180910390f35b34801561060657600080fd5b5061060f611186565b60405161061c9190613fd0565b60405180910390f35b34801561063157600080fd5b5061063a61118f565b6040516106479190613cc9565b60405180910390f35b34801561065c57600080fd5b5061067760048036038101906106729190613eae565b611195565b005b34801561068557600080fd5b5061068e611255565b60405161069b919061404a565b60405180910390f35b3480156106b057600080fd5b506106cb60048036038101906106c69190613eae565b61127b565b6040516106d89190613e53565b60405180910390f35b3480156106ed57600080fd5b506106f661129b565b6040516107039190613e53565b60405180910390f35b34801561071857600080fd5b50610733600480360381019061072e9190614120565b6112ae565b005b34801561074157600080fd5b5061074a611360565b6040516107579190613cc9565b60405180910390f35b34801561076c57600080fd5b50610775611366565b6040516107829190613cc9565b60405180910390f35b34801561079757600080fd5b506107b260048036038101906107ad9190613eae565b61136c565b6040516107bf9190613cc9565b60405180910390f35b3480156107d457600080fd5b506107dd6113b5565b005b3480156107eb57600080fd5b506107f461143d565b6040516108019190613e53565b60405180910390f35b34801561081657600080fd5b50610831600480360381019061082c91906141a1565b6114dd565b005b34801561083f57600080fd5b506108486115b4565b6040516108559190613c95565b60405180910390f35b34801561086a57600080fd5b50610885600480360381019061088091906141e1565b6115dd565b005b34801561089357600080fd5b506108ae60048036038101906108a99190613f07565b6116fe565b005b3480156108bc57600080fd5b506108d760048036038101906108d29190613f34565b611797565b005b3480156108e557600080fd5b506108ee61185a565b6040516108fb9190613d74565b60405180910390f35b34801561091057600080fd5b50610919611897565b6040516109269190613c95565b60405180910390f35b34801561093b57600080fd5b50610956600480360381019061095191906141a1565b6118bd565b005b34801561096457600080fd5b5061097f600480360381019061097a9190613df8565b6119eb565b60405161098c9190613e53565b60405180910390f35b3480156109a157600080fd5b506109bc60048036038101906109b79190613eae565b611a09565b005b3480156109ca57600080fd5b506109e560048036038101906109e091906141a1565b611b38565b005b3480156109f357600080fd5b50610a0e6004803603810190610a099190613f34565b611c0f565b005b348015610a1c57600080fd5b50610a25611d28565b604051610a329190613cc9565b60405180910390f35b348015610a4757600080fd5b50610a50611d2e565b604051610a5d9190613cc9565b60405180910390f35b348015610a7257600080fd5b50610a7b611d34565b604051610a889190613cc9565b60405180910390f35b348015610a9d57600080fd5b50610ab86004803603810190610ab39190613f34565b611d3a565b604051610ac59190613e53565b60405180910390f35b348015610ada57600080fd5b50610ae3611e8f565b604051610af09190613cc9565b60405180910390f35b348015610b0557600080fd5b50610b206004803603810190610b1b9190614241565b611e95565b604051610b2d9190613cc9565b60405180910390f35b348015610b4257600080fd5b50610b5d6004803603810190610b5891906142e3565b611f1c565b005b348015610b6b57600080fd5b50610b866004803603810190610b819190613eae565b6121b6565b604051610b939190613e53565b60405180910390f35b348015610ba857600080fd5b50610bb16121d6565b604051610bbe9190613e53565b60405180910390f35b348015610bd357600080fd5b50610bee6004803603810190610be99190613eae565b6121e9565b005b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b60606040518060400160405280600a81526020017f5072657474792043617400000000000000000000000000000000000000000000815250905090565b6000610c6d610c666122e0565b84846122e8565b6001905092915050565b601160049054906101000a900460ff1681565b610c926122e0565b73ffffffffffffffffffffffffffffffffffffffff16610cb06115b4565b73ffffffffffffffffffffffffffffffffffffffff1614610d06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfd90614396565b60405180910390fd5b81600a8190555080600b81905550600b54600a54610d2491906143e5565b6009819055505050565b60155481565b60176020528060005260406000206000915054906101000a900460ff1681565b610d5c6122e0565b73ffffffffffffffffffffffffffffffffffffffff16610d7a6115b4565b73ffffffffffffffffffffffffffffffffffffffff1614610dd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc790614396565b60405180910390fd5b80601160026101000a81548160ff02191690831515021790555050565b60006012600a610dfd919061454c565b633b9aca00610e0c9190614597565b905090565b610e196122e0565b73ffffffffffffffffffffffffffffffffffffffff16610e376115b4565b73ffffffffffffffffffffffffffffffffffffffff1614610e8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8490614396565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a5481565b610edf6122e0565b73ffffffffffffffffffffffffffffffffffffffff16610efd6115b4565b73ffffffffffffffffffffffffffffffffffffffff1614610f53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4a90614396565b60405180910390fd5b6012600a610f61919061454c565b6103e86001610f6e610ded565b610f789190614597565b610f829190614608565b610f8c9190614608565b811015610fce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc5906146ab565b60405180910390fd5b6012600a610fdc919061454c565b81610fe79190614597565b600e8190555050565b6000610ffd8484846124b1565b6110be846110096122e0565b6110b9856040518060600160405280602881526020016154c560289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061106f6122e0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136b59092919063ffffffff16565b6122e8565b600190509392505050565b601160039054906101000a900460ff1681565b6110e46122e0565b73ffffffffffffffffffffffffffffffffffffffff166111026115b4565b73ffffffffffffffffffffffffffffffffffffffff1614611158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114f90614396565b60405180910390fd5b816007819055508060088190555060085460075461117691906143e5565b6006819055505050565b600f5481565b60006012905090565b60065481565b61119d6122e0565b73ffffffffffffffffffffffffffffffffffffffff166111bb6115b4565b73ffffffffffffffffffffffffffffffffffffffff1614611211576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120890614396565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60186020528060005260406000206000915054906101000a900460ff1681565b601160029054906101000a900460ff1681565b6000848490501180156112c657508383905082829050145b6112cf57600080fd5b600033905060005b8585905081101561135857611345828787848181106112f9576112f86146cb565b5b905060200201602081019061130e9190613eae565b6012600a61131c919061454c565b87878681811061132f5761132e6146cb565b5b905060200201356113409190614597565b6124b1565b8080611350906146fa565b9150506112d7565b505050505050565b60085481565b60105481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113bd6122e0565b73ffffffffffffffffffffffffffffffffffffffff166113db6115b4565b73ffffffffffffffffffffffffffffffffffffffff1614611431576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142890614396565b60405180910390fd5b61143b600061370a565b565b60006114476122e0565b73ffffffffffffffffffffffffffffffffffffffff166114656115b4565b73ffffffffffffffffffffffffffffffffffffffff16146114bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b290614396565b60405180910390fd5b6000601160016101000a81548160ff0219169083151502179055506001905090565b6114e56122e0565b73ffffffffffffffffffffffffffffffffffffffff166115036115b4565b73ffffffffffffffffffffffffffffffffffffffff1614611559576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155090614396565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6115e56122e0565b73ffffffffffffffffffffffffffffffffffffffff166116036115b4565b73ffffffffffffffffffffffffffffffffffffffff1614611659576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165090614396565b60405180910390fd5b60005b838390508110156116f857816018600086868581811061167f5761167e6146cb565b5b90506020020160208101906116949190613eae565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806116f0906146fa565b91505061165c565b50505050565b6117066122e0565b73ffffffffffffffffffffffffffffffffffffffff166117246115b4565b73ffffffffffffffffffffffffffffffffffffffff161461177a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177190614396565b60405180910390fd5b80601160046101000a81548160ff02191690831515021790555050565b61179f6122e0565b73ffffffffffffffffffffffffffffffffffffffff166117bd6115b4565b73ffffffffffffffffffffffffffffffffffffffff1614611813576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180a90614396565b60405180910390fd5b806013819055506001601160036101000a81548160ff0219169083151502179055506001601160046101000a81548160ff0219169083151502179055504360128190555050565b60606040518060400160405280600a81526020017f5072657474792043617400000000000000000000000000000000000000000000815250905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6118c56122e0565b73ffffffffffffffffffffffffffffffffffffffff166118e36115b4565b73ffffffffffffffffffffffffffffffffffffffff1614611939576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193090614396565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006119ff6119f86122e0565b84846124b1565b6001905092915050565b611a116122e0565b73ffffffffffffffffffffffffffffffffffffffff16611a2f6115b4565b73ffffffffffffffffffffffffffffffffffffffff1614611a85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7c90614396565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611af4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aeb9061478e565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611b406122e0565b73ffffffffffffffffffffffffffffffffffffffff16611b5e6115b4565b73ffffffffffffffffffffffffffffffffffffffff1614611bb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bab90614396565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611c176122e0565b73ffffffffffffffffffffffffffffffffffffffff16611c356115b4565b73ffffffffffffffffffffffffffffffffffffffff1614611c8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8290614396565b60405180910390fd5b6012600a611c99919061454c565b6103e86005611ca6610ded565b611cb09190614597565b611cba9190614608565b611cc49190614608565b811015611d06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfd90614820565b60405180910390fd5b6012600a611d14919061454c565b81611d1f9190614597565b60108190555050565b600b5481565b60095481565b60145481565b6000611d446122e0565b73ffffffffffffffffffffffffffffffffffffffff16611d626115b4565b73ffffffffffffffffffffffffffffffffffffffff1614611db8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611daf90614396565b60405180910390fd5b620186a06001611dc6610ded565b611dd09190614597565b611dda9190614608565b821015611e1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e13906148b2565b60405180910390fd5b6103e86005611e29610ded565b611e339190614597565b611e3d9190614608565b821115611e7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7690614944565b60405180910390fd5b81600f8190555060019050919050565b60075481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600d81526020017f54726164696e6720546f6b656e00000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001204630604051602001611fcf959493929190614973565b60405160208183030381529060405280519060200120905060007f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae46040518060400160405280600e81526020017f456e61626c652054726164696e6700000000000000000000000000000000000081525080519060200120600060405160200161205b939291906149c6565b60405160208183030381529060405280519060200120905060008282604051602001612088929190614a75565b6040516020818303038152906040528051906020012090506000600182898989604051600081526020016040526040516120c59493929190614aac565b6020604051602081039080840390855afa1580156120e7573d6000803e3d6000fd5b5050506020604051035190506120fb6115b4565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215f90614b3d565b60405180910390fd5b846013819055506001601160036101000a81548160ff0219169083151502179055506001601160046101000a81548160ff021916908315150217905550436012819055505050505050505050565b60166020528060005260406000206000915054906101000a900460ff1681565b601160019054906101000a900460ff1681565b6121f16122e0565b73ffffffffffffffffffffffffffffffffffffffff1661220f6115b4565b73ffffffffffffffffffffffffffffffffffffffff1614612265576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225c90614396565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036122d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cb90614bcf565b60405180910390fd5b6122dd8161370a565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612357576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234e90614c61565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123bd90614cf3565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516124a49190613cc9565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251790614d85565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361258f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258690614e17565b60405180910390fd5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561261c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261390614e83565b60405180910390fd5b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156126a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a090614eef565b60405180910390fd5b601160029054906101000a900460ff168061270d5750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806127615750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6127a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279790614f5b565b60405180910390fd5b60008103156136b057600060065490506000600754905060006008549050600060095490506000600a5490506000600b549050601160019054906101000a900460ff1615612d30576127f06115b4565b73ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff161415801561285e575061282e6115b4565b73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b80156128975750600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b80156128d1575061dead73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b80156128ea5750601160009054906101000a900460ff16155b15612d2f57601160039054906101000a900460ff166129e457601660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806129a45750601660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6129e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129da90614fc7565b60405180910390fd5b5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16148015612a8b5750601760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b3257600e54871115612ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612acc90615059565b60405180910390fd5b601054612ae18961136c565b88612aec91906143e5565b1115612b2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b24906150c5565b60405180910390fd5b612cd4565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16148015612bd95750601760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c2857600e54871115612c23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c1a90615157565b60405180910390fd5b612cd3565b601760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612cd257601054612c858961136c565b88612c9091906143e5565b1115612cd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc8906150c5565b60405180910390fd5b5b5b5b6012544303612cea576000955060009250612d2e565b601354601254612cfa91906143e5565b4311612d2d5760329450603293508385612d1491906143e5565b955060329150603290508082612d2a91906143e5565b92505b5b5b5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015612e275750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639015d371306040518263ffffffff1660e01b8152600401612de59190613c95565b602060405180830381865afa158015612e02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e26919061518c565b5b15612f42576000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a20527fc8b8b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601054600e54600f546040518763ffffffff1660e01b8152600401612ebb969594939291906151b9565b6020604051808303816000875af1158015612eda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612efe919061518c565b905080612f40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3790615266565b60405180910390fd5b505b6000612f4d3061136c565b90506000600f548210159050808015612f725750601160049054906101000a900460ff165b8015612f8b5750601160009054906101000a900460ff16155b8015612fe45750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff16145b801561303a5750601660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130905750601660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156130d4576001601160006101000a81548160ff0219169083151502179055506130b86137ce565b6000601160006101000a81548160ff0219169083151502179055505b601160009054906101000a900460ff1615801561313b5750601660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131915750601660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613518576000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff161480156131f55750600086115b15613285576132206064613212888d6139b990919063ffffffff16565b6139cf90919063ffffffff16565b905085848261322f9190614597565b6132399190614608565b6015600082825461324a91906143e5565b9250508190555085858261325e9190614597565b6132689190614608565b6014600082825461327991906143e5565b9250508190555061336f565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff161480156132e25750600089115b1561336e5761330d60646132ff8b8d6139b990919063ffffffff16565b6139cf90919063ffffffff16565b905088878261331c9190614597565b6133269190614608565b6015600082825461333791906143e5565b9250508190555088888261334b9190614597565b6133559190614608565b6014600082825461336691906143e5565b925050819055505b5b6000811115613508576133ca81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139e590919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061345f81600160008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139fb90919063ffffffff16565b600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516134ff9190613cc9565b60405180910390a35b808a6135149190615286565b9950505b61356a89600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139e590919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506135ff89600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139fb90919063ffffffff16565b600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8b60405161369f9190613cc9565b60405180910390a350505050505050505b505050565b60008383111582906136fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136f49190613d74565b60405180910390fd5b5082840390509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006137d93061136c565b905060006015546014546137ed91906143e5565b90506000808314806137ff5750600082145b1561380c575050506139b7565b6014600f5461381b9190614597565b831115613834576014600f546138319190614597565b92505b600047905061384284613a11565b600061385782476139fb90919063ffffffff16565b9050600061388285613874601554856139b990919063ffffffff16565b6139cf90919063ffffffff16565b905060006014819055506000601581905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516138da906152eb565b60006040518083038185875af1925050503d8060008114613917576040519150601f19603f3d011682016040523d82523d6000602084013e61391c565b606091505b505080945050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613968906152eb565b60006040518083038185875af1925050503d80600081146139a5576040519150601f19603f3d011682016040523d82523d6000602084013e6139aa565b606091505b5050809450505050505050505b565b600081836139c79190614597565b905092915050565b600081836139dd9190614608565b905092915050565b600081836139f391906143e5565b905092915050565b60008183613a099190615286565b905092915050565b6000600267ffffffffffffffff811115613a2e57613a2d615300565b5b604051908082528060200260200182016040528015613a5c5781602001602082028036833780820191505090505b5090503081600081518110613a7457613a736146cb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b3f9190615344565b81600181518110613b5357613b526146cb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613bba30600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846122e8565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613c1e95949392919061546a565b600060405180830381600087803b158015613c3857600080fd5b505af1158015613c4c573d6000803e3d6000fd5b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613c7f82613c54565b9050919050565b613c8f81613c74565b82525050565b6000602082019050613caa6000830184613c86565b92915050565b6000819050919050565b613cc381613cb0565b82525050565b6000602082019050613cde6000830184613cba565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613d1e578082015181840152602081019050613d03565b60008484015250505050565b6000601f19601f8301169050919050565b6000613d4682613ce4565b613d508185613cef565b9350613d60818560208601613d00565b613d6981613d2a565b840191505092915050565b60006020820190508181036000830152613d8e8184613d3b565b905092915050565b600080fd5b600080fd5b613da981613c74565b8114613db457600080fd5b50565b600081359050613dc681613da0565b92915050565b613dd581613cb0565b8114613de057600080fd5b50565b600081359050613df281613dcc565b92915050565b60008060408385031215613e0f57613e0e613d96565b5b6000613e1d85828601613db7565b9250506020613e2e85828601613de3565b9150509250929050565b60008115159050919050565b613e4d81613e38565b82525050565b6000602082019050613e686000830184613e44565b92915050565b60008060408385031215613e8557613e84613d96565b5b6000613e9385828601613de3565b9250506020613ea485828601613de3565b9150509250929050565b600060208284031215613ec457613ec3613d96565b5b6000613ed284828501613db7565b91505092915050565b613ee481613e38565b8114613eef57600080fd5b50565b600081359050613f0181613edb565b92915050565b600060208284031215613f1d57613f1c613d96565b5b6000613f2b84828501613ef2565b91505092915050565b600060208284031215613f4a57613f49613d96565b5b6000613f5884828501613de3565b91505092915050565b600080600060608486031215613f7a57613f79613d96565b5b6000613f8886828701613db7565b9350506020613f9986828701613db7565b9250506040613faa86828701613de3565b9150509250925092565b600060ff82169050919050565b613fca81613fb4565b82525050565b6000602082019050613fe56000830184613fc1565b92915050565b6000819050919050565b600061401061400b61400684613c54565b613feb565b613c54565b9050919050565b600061402282613ff5565b9050919050565b600061403482614017565b9050919050565b61404481614029565b82525050565b600060208201905061405f600083018461403b565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261408a57614089614065565b5b8235905067ffffffffffffffff8111156140a7576140a661406a565b5b6020830191508360208202830111156140c3576140c261406f565b5b9250929050565b60008083601f8401126140e0576140df614065565b5b8235905067ffffffffffffffff8111156140fd576140fc61406a565b5b6020830191508360208202830111156141195761411861406f565b5b9250929050565b6000806000806040858703121561413a57614139613d96565b5b600085013567ffffffffffffffff81111561415857614157613d9b565b5b61416487828801614074565b9450945050602085013567ffffffffffffffff81111561418757614186613d9b565b5b614193878288016140ca565b925092505092959194509250565b600080604083850312156141b8576141b7613d96565b5b60006141c685828601613db7565b92505060206141d785828601613ef2565b9150509250929050565b6000806000604084860312156141fa576141f9613d96565b5b600084013567ffffffffffffffff81111561421857614217613d9b565b5b61422486828701614074565b9350935050602061423786828701613ef2565b9150509250925092565b6000806040838503121561425857614257613d96565b5b600061426685828601613db7565b925050602061427785828601613db7565b9150509250929050565b61428a81613fb4565b811461429557600080fd5b50565b6000813590506142a781614281565b92915050565b6000819050919050565b6142c0816142ad565b81146142cb57600080fd5b50565b6000813590506142dd816142b7565b92915050565b600080600080608085870312156142fd576142fc613d96565b5b600061430b87828801614298565b945050602061431c878288016142ce565b935050604061432d878288016142ce565b925050606061433e87828801613de3565b91505092959194509250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614380602083613cef565b915061438b8261434a565b602082019050919050565b600060208201905081810360008301526143af81614373565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006143f082613cb0565b91506143fb83613cb0565b9250828201905080821115614413576144126143b6565b5b92915050565b60008160011c9050919050565b6000808291508390505b60018511156144705780860481111561444c5761444b6143b6565b5b600185161561445b5780820291505b808102905061446985614419565b9450614430565b94509492505050565b6000826144895760019050614545565b816144975760009050614545565b81600181146144ad57600281146144b7576144e6565b6001915050614545565b60ff8411156144c9576144c86143b6565b5b8360020a9150848211156144e0576144df6143b6565b5b50614545565b5060208310610133831016604e8410600b841016171561451b5782820a905083811115614516576145156143b6565b5b614545565b6145288484846001614426565b9250905081840481111561453f5761453e6143b6565b5b81810290505b9392505050565b600061455782613cb0565b915061456283613fb4565b925061458f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614479565b905092915050565b60006145a282613cb0565b91506145ad83613cb0565b92508282026145bb81613cb0565b915082820484148315176145d2576145d16143b6565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061461382613cb0565b915061461e83613cb0565b92508261462e5761462d6145d9565b5b828204905092915050565b7f43616e6e6f7420736574205f6d61785472616e73616374696f6e416d6f756e7460008201527f206c6f776572207468616e20302e312500000000000000000000000000000000602082015250565b6000614695603083613cef565b91506146a082614639565b604082019050919050565b600060208201905081810360008301526146c481614688565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061470582613cb0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614737576147366143b6565b5b600182019050919050565b7f496e76616c696420616e746920647261696e6572000000000000000000000000600082015250565b6000614778601483613cef565b915061478382614742565b602082019050919050565b600060208201905081810360008301526147a78161476b565b9050919050565b7f43616e6e6f7420736574205f6d617857616c6c6574416d6f756e74206c6f776560008201527f72207468616e20302e3525000000000000000000000000000000000000000000602082015250565b600061480a602b83613cef565b9150614815826147ae565b604082019050919050565b60006020820190508181036000830152614839816147fd565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b600061489c603583613cef565b91506148a782614840565b604082019050919050565b600060208201905081810360008301526148cb8161488f565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b600061492e603483613cef565b9150614939826148d2565b604082019050919050565b6000602082019050818103600083015261495d81614921565b9050919050565b61496d816142ad565b82525050565b600060a0820190506149886000830188614964565b6149956020830187614964565b6149a26040830186614964565b6149af6060830185613cba565b6149bc6080830184613c86565b9695505050505050565b60006060820190506149db6000830186614964565b6149e86020830185614964565b6149f56040830184613cba565b949350505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b6000614a3e6002836149fd565b9150614a4982614a08565b600282019050919050565b6000819050919050565b614a6f614a6a826142ad565b614a54565b82525050565b6000614a8082614a31565b9150614a8c8285614a5e565b602082019150614a9c8284614a5e565b6020820191508190509392505050565b6000608082019050614ac16000830187614964565b614ace6020830186613fc1565b614adb6040830185614964565b614ae86060830184614964565b95945050505050565b7f496e76616c6964207369676e6174757265000000000000000000000000000000600082015250565b6000614b27601183613cef565b9150614b3282614af1565b602082019050919050565b60006020820190508181036000830152614b5681614b1a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614bb9602683613cef565b9150614bc482614b5d565b604082019050919050565b60006020820190508181036000830152614be881614bac565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614c4b602483613cef565b9150614c5682614bef565b604082019050919050565b60006020820190508181036000830152614c7a81614c3e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614cdd602283613cef565b9150614ce882614c81565b604082019050919050565b60006020820190508181036000830152614d0c81614cd0565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614d6f602583613cef565b9150614d7a82614d13565b604082019050919050565b60006020820190508181036000830152614d9e81614d62565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614e01602383613cef565b9150614e0c82614da5565b604082019050919050565b60006020820190508181036000830152614e3081614df4565b9050919050565b7f45524332303a2066726f6d20697320626c61636b206c69737400000000000000600082015250565b6000614e6d601983613cef565b9150614e7882614e37565b602082019050919050565b60006020820190508181036000830152614e9c81614e60565b9050919050565b7f45524332303a20746f20697320626c61636b206c697374000000000000000000600082015250565b6000614ed9601783613cef565b9150614ee482614ea3565b602082019050919050565b60006020820190508181036000830152614f0881614ecc565b9050919050565b7f45524332303a207472616e736665722069732064697361626c65640000000000600082015250565b6000614f45601b83613cef565b9150614f5082614f0f565b602082019050919050565b60006020820190508181036000830152614f7481614f38565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614fb1601683613cef565b9150614fbc82614f7b565b602082019050919050565b60006020820190508181036000830152614fe081614fa4565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f5f6d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615043603683613cef565b915061504e82614fe7565b604082019050919050565b6000602082019050818103600083015261507281615036565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006150af601383613cef565b91506150ba82615079565b602082019050919050565b600060208201905081810360008301526150de816150a2565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f205f6d61785472616e73616374696f6e416d6f756e742e000000000000000000602082015250565b6000615141603783613cef565b915061514c826150e5565b604082019050919050565b6000602082019050818103600083015261517081615134565b9050919050565b60008151905061518681613edb565b92915050565b6000602082840312156151a2576151a1613d96565b5b60006151b084828501615177565b91505092915050565b600060c0820190506151ce6000830189613c86565b6151db6020830188613c86565b6151e86040830187613c86565b6151f56060830186613cba565b6152026080830185613cba565b61520f60a0830184613cba565b979650505050505050565b7f416e746920447261696e657220456e61626c6564000000000000000000000000600082015250565b6000615250601483613cef565b915061525b8261521a565b602082019050919050565b6000602082019050818103600083015261527f81615243565b9050919050565b600061529182613cb0565b915061529c83613cb0565b92508282039050818111156152b4576152b36143b6565b5b92915050565b600081905092915050565b50565b60006152d56000836152ba565b91506152e0826152c5565b600082019050919050565b60006152f6826152c8565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061533e81613da0565b92915050565b60006020828403121561535a57615359613d96565b5b60006153688482850161532f565b91505092915050565b6000819050919050565b600061539661539161538c84615371565b613feb565b613cb0565b9050919050565b6153a68161537b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6153e181613c74565b82525050565b60006153f383836153d8565b60208301905092915050565b6000602082019050919050565b6000615417826153ac565b61542181856153b7565b935061542c836153c8565b8060005b8381101561545d57815161544488826153e7565b975061544f836153ff565b925050600181019050615430565b5085935050505092915050565b600060a08201905061547f6000830188613cba565b61548c602083018761539d565b818103604083015261549e818661540c565b90506154ad6060830185613c86565b6154ba6080830184613cba565b969550505050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122086b45acef6ea6dbe0e86faa3d91b962de57246c63e25201b25c26829737cc8b864736f6c63430008140033

Deployed Bytecode

0x6080604052600436106102e75760003560e01c80636c0a24eb11610190578063bae14e1d116100dc578063d257b34f11610095578063df7a8b6f1161006f578063df7a8b6f14610b36578063e0bf7fd114610b5f578063e73b90cd14610b9c578063f2fde38b14610bc7576102ee565b8063d257b34f14610a91578063da76245914610ace578063dd62ed3e14610af9576102ee565b8063bae14e1d14610995578063c0246668146109be578063c18bc195146109e7578063c7e3791814610a10578063ca9ec19914610a3b578063cc52efea14610a66576102ee565b80638f85a0431161014957806395d89b411161012357806395d89b41146108d95780639c74daf014610904578063a672990c1461092f578063a9059cbb14610958576102ee565b80638f85a0431461085e578063924de9b71461088757806395805dad146108b0576102ee565b80636c0a24eb1461076057806370a082311461078b578063715018a6146107c8578063751039fc146107df5780637571336a1461080a5780638da5cb5b14610833576102ee565b8063203e727e1161024f57806342a1109511610208578063595dec3c116101e2578063595dec3c146106a457806366f09ed7146106e1578063672434821461070c5780636a7ca4c814610735576102ee565b806342a11095146106255780634d474d4214610650578063583e056814610679576102ee565b8063203e727e1461051557806323b872dd1461053e57806327f4d7d51461057b5780632d77a2bf146105a65780632fd689e3146105cf578063313ce567146105fa576102ee565b80630c2b3fb3116102a15780630c2b3fb31461040557806310d5de531461043057806312a187f31461046d57806318160ddd146104965780631816467f146104c15780631a76ae70146104ea576102ee565b806201fd05146102f357806304beaeb81461031e57806306fdde0314610349578063095ea7b31461037457806309afb3ce146103b15780630a0bc661146103dc576102ee565b366102ee57005b600080fd5b3480156102ff57600080fd5b50610308610bf0565b6040516103159190613c95565b60405180910390f35b34801561032a57600080fd5b50610333610c16565b6040516103409190613cc9565b60405180910390f35b34801561035557600080fd5b5061035e610c1c565b60405161036b9190613d74565b60405180910390f35b34801561038057600080fd5b5061039b60048036038101906103969190613df8565b610c59565b6040516103a89190613e53565b60405180910390f35b3480156103bd57600080fd5b506103c6610c77565b6040516103d39190613e53565b60405180910390f35b3480156103e857600080fd5b5061040360048036038101906103fe9190613e6e565b610c8a565b005b34801561041157600080fd5b5061041a610d2e565b6040516104279190613cc9565b60405180910390f35b34801561043c57600080fd5b5061045760048036038101906104529190613eae565b610d34565b6040516104649190613e53565b60405180910390f35b34801561047957600080fd5b50610494600480360381019061048f9190613f07565b610d54565b005b3480156104a257600080fd5b506104ab610ded565b6040516104b89190613cc9565b60405180910390f35b3480156104cd57600080fd5b506104e860048036038101906104e39190613eae565b610e11565b005b3480156104f657600080fd5b506104ff610ed1565b60405161050c9190613cc9565b60405180910390f35b34801561052157600080fd5b5061053c60048036038101906105379190613f34565b610ed7565b005b34801561054a57600080fd5b5061056560048036038101906105609190613f61565b610ff0565b6040516105729190613e53565b60405180910390f35b34801561058757600080fd5b506105906110c9565b60405161059d9190613e53565b60405180910390f35b3480156105b257600080fd5b506105cd60048036038101906105c89190613e6e565b6110dc565b005b3480156105db57600080fd5b506105e4611180565b6040516105f19190613cc9565b60405180910390f35b34801561060657600080fd5b5061060f611186565b60405161061c9190613fd0565b60405180910390f35b34801561063157600080fd5b5061063a61118f565b6040516106479190613cc9565b60405180910390f35b34801561065c57600080fd5b5061067760048036038101906106729190613eae565b611195565b005b34801561068557600080fd5b5061068e611255565b60405161069b919061404a565b60405180910390f35b3480156106b057600080fd5b506106cb60048036038101906106c69190613eae565b61127b565b6040516106d89190613e53565b60405180910390f35b3480156106ed57600080fd5b506106f661129b565b6040516107039190613e53565b60405180910390f35b34801561071857600080fd5b50610733600480360381019061072e9190614120565b6112ae565b005b34801561074157600080fd5b5061074a611360565b6040516107579190613cc9565b60405180910390f35b34801561076c57600080fd5b50610775611366565b6040516107829190613cc9565b60405180910390f35b34801561079757600080fd5b506107b260048036038101906107ad9190613eae565b61136c565b6040516107bf9190613cc9565b60405180910390f35b3480156107d457600080fd5b506107dd6113b5565b005b3480156107eb57600080fd5b506107f461143d565b6040516108019190613e53565b60405180910390f35b34801561081657600080fd5b50610831600480360381019061082c91906141a1565b6114dd565b005b34801561083f57600080fd5b506108486115b4565b6040516108559190613c95565b60405180910390f35b34801561086a57600080fd5b50610885600480360381019061088091906141e1565b6115dd565b005b34801561089357600080fd5b506108ae60048036038101906108a99190613f07565b6116fe565b005b3480156108bc57600080fd5b506108d760048036038101906108d29190613f34565b611797565b005b3480156108e557600080fd5b506108ee61185a565b6040516108fb9190613d74565b60405180910390f35b34801561091057600080fd5b50610919611897565b6040516109269190613c95565b60405180910390f35b34801561093b57600080fd5b50610956600480360381019061095191906141a1565b6118bd565b005b34801561096457600080fd5b5061097f600480360381019061097a9190613df8565b6119eb565b60405161098c9190613e53565b60405180910390f35b3480156109a157600080fd5b506109bc60048036038101906109b79190613eae565b611a09565b005b3480156109ca57600080fd5b506109e560048036038101906109e091906141a1565b611b38565b005b3480156109f357600080fd5b50610a0e6004803603810190610a099190613f34565b611c0f565b005b348015610a1c57600080fd5b50610a25611d28565b604051610a329190613cc9565b60405180910390f35b348015610a4757600080fd5b50610a50611d2e565b604051610a5d9190613cc9565b60405180910390f35b348015610a7257600080fd5b50610a7b611d34565b604051610a889190613cc9565b60405180910390f35b348015610a9d57600080fd5b50610ab86004803603810190610ab39190613f34565b611d3a565b604051610ac59190613e53565b60405180910390f35b348015610ada57600080fd5b50610ae3611e8f565b604051610af09190613cc9565b60405180910390f35b348015610b0557600080fd5b50610b206004803603810190610b1b9190614241565b611e95565b604051610b2d9190613cc9565b60405180910390f35b348015610b4257600080fd5b50610b5d6004803603810190610b5891906142e3565b611f1c565b005b348015610b6b57600080fd5b50610b866004803603810190610b819190613eae565b6121b6565b604051610b939190613e53565b60405180910390f35b348015610ba857600080fd5b50610bb16121d6565b604051610bbe9190613e53565b60405180910390f35b348015610bd357600080fd5b50610bee6004803603810190610be99190613eae565b6121e9565b005b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b60606040518060400160405280600a81526020017f5072657474792043617400000000000000000000000000000000000000000000815250905090565b6000610c6d610c666122e0565b84846122e8565b6001905092915050565b601160049054906101000a900460ff1681565b610c926122e0565b73ffffffffffffffffffffffffffffffffffffffff16610cb06115b4565b73ffffffffffffffffffffffffffffffffffffffff1614610d06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfd90614396565b60405180910390fd5b81600a8190555080600b81905550600b54600a54610d2491906143e5565b6009819055505050565b60155481565b60176020528060005260406000206000915054906101000a900460ff1681565b610d5c6122e0565b73ffffffffffffffffffffffffffffffffffffffff16610d7a6115b4565b73ffffffffffffffffffffffffffffffffffffffff1614610dd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc790614396565b60405180910390fd5b80601160026101000a81548160ff02191690831515021790555050565b60006012600a610dfd919061454c565b633b9aca00610e0c9190614597565b905090565b610e196122e0565b73ffffffffffffffffffffffffffffffffffffffff16610e376115b4565b73ffffffffffffffffffffffffffffffffffffffff1614610e8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8490614396565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a5481565b610edf6122e0565b73ffffffffffffffffffffffffffffffffffffffff16610efd6115b4565b73ffffffffffffffffffffffffffffffffffffffff1614610f53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4a90614396565b60405180910390fd5b6012600a610f61919061454c565b6103e86001610f6e610ded565b610f789190614597565b610f829190614608565b610f8c9190614608565b811015610fce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc5906146ab565b60405180910390fd5b6012600a610fdc919061454c565b81610fe79190614597565b600e8190555050565b6000610ffd8484846124b1565b6110be846110096122e0565b6110b9856040518060600160405280602881526020016154c560289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061106f6122e0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136b59092919063ffffffff16565b6122e8565b600190509392505050565b601160039054906101000a900460ff1681565b6110e46122e0565b73ffffffffffffffffffffffffffffffffffffffff166111026115b4565b73ffffffffffffffffffffffffffffffffffffffff1614611158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114f90614396565b60405180910390fd5b816007819055508060088190555060085460075461117691906143e5565b6006819055505050565b600f5481565b60006012905090565b60065481565b61119d6122e0565b73ffffffffffffffffffffffffffffffffffffffff166111bb6115b4565b73ffffffffffffffffffffffffffffffffffffffff1614611211576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120890614396565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60186020528060005260406000206000915054906101000a900460ff1681565b601160029054906101000a900460ff1681565b6000848490501180156112c657508383905082829050145b6112cf57600080fd5b600033905060005b8585905081101561135857611345828787848181106112f9576112f86146cb565b5b905060200201602081019061130e9190613eae565b6012600a61131c919061454c565b87878681811061132f5761132e6146cb565b5b905060200201356113409190614597565b6124b1565b8080611350906146fa565b9150506112d7565b505050505050565b60085481565b60105481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113bd6122e0565b73ffffffffffffffffffffffffffffffffffffffff166113db6115b4565b73ffffffffffffffffffffffffffffffffffffffff1614611431576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142890614396565b60405180910390fd5b61143b600061370a565b565b60006114476122e0565b73ffffffffffffffffffffffffffffffffffffffff166114656115b4565b73ffffffffffffffffffffffffffffffffffffffff16146114bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b290614396565b60405180910390fd5b6000601160016101000a81548160ff0219169083151502179055506001905090565b6114e56122e0565b73ffffffffffffffffffffffffffffffffffffffff166115036115b4565b73ffffffffffffffffffffffffffffffffffffffff1614611559576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155090614396565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6115e56122e0565b73ffffffffffffffffffffffffffffffffffffffff166116036115b4565b73ffffffffffffffffffffffffffffffffffffffff1614611659576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165090614396565b60405180910390fd5b60005b838390508110156116f857816018600086868581811061167f5761167e6146cb565b5b90506020020160208101906116949190613eae565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806116f0906146fa565b91505061165c565b50505050565b6117066122e0565b73ffffffffffffffffffffffffffffffffffffffff166117246115b4565b73ffffffffffffffffffffffffffffffffffffffff161461177a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177190614396565b60405180910390fd5b80601160046101000a81548160ff02191690831515021790555050565b61179f6122e0565b73ffffffffffffffffffffffffffffffffffffffff166117bd6115b4565b73ffffffffffffffffffffffffffffffffffffffff1614611813576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180a90614396565b60405180910390fd5b806013819055506001601160036101000a81548160ff0219169083151502179055506001601160046101000a81548160ff0219169083151502179055504360128190555050565b60606040518060400160405280600a81526020017f5072657474792043617400000000000000000000000000000000000000000000815250905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6118c56122e0565b73ffffffffffffffffffffffffffffffffffffffff166118e36115b4565b73ffffffffffffffffffffffffffffffffffffffff1614611939576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193090614396565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006119ff6119f86122e0565b84846124b1565b6001905092915050565b611a116122e0565b73ffffffffffffffffffffffffffffffffffffffff16611a2f6115b4565b73ffffffffffffffffffffffffffffffffffffffff1614611a85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7c90614396565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611af4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aeb9061478e565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611b406122e0565b73ffffffffffffffffffffffffffffffffffffffff16611b5e6115b4565b73ffffffffffffffffffffffffffffffffffffffff1614611bb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bab90614396565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611c176122e0565b73ffffffffffffffffffffffffffffffffffffffff16611c356115b4565b73ffffffffffffffffffffffffffffffffffffffff1614611c8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8290614396565b60405180910390fd5b6012600a611c99919061454c565b6103e86005611ca6610ded565b611cb09190614597565b611cba9190614608565b611cc49190614608565b811015611d06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfd90614820565b60405180910390fd5b6012600a611d14919061454c565b81611d1f9190614597565b60108190555050565b600b5481565b60095481565b60145481565b6000611d446122e0565b73ffffffffffffffffffffffffffffffffffffffff16611d626115b4565b73ffffffffffffffffffffffffffffffffffffffff1614611db8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611daf90614396565b60405180910390fd5b620186a06001611dc6610ded565b611dd09190614597565b611dda9190614608565b821015611e1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e13906148b2565b60405180910390fd5b6103e86005611e29610ded565b611e339190614597565b611e3d9190614608565b821115611e7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7690614944565b60405180910390fd5b81600f8190555060019050919050565b60075481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600d81526020017f54726164696e6720546f6b656e00000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001204630604051602001611fcf959493929190614973565b60405160208183030381529060405280519060200120905060007f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae46040518060400160405280600e81526020017f456e61626c652054726164696e6700000000000000000000000000000000000081525080519060200120600060405160200161205b939291906149c6565b60405160208183030381529060405280519060200120905060008282604051602001612088929190614a75565b6040516020818303038152906040528051906020012090506000600182898989604051600081526020016040526040516120c59493929190614aac565b6020604051602081039080840390855afa1580156120e7573d6000803e3d6000fd5b5050506020604051035190506120fb6115b4565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215f90614b3d565b60405180910390fd5b846013819055506001601160036101000a81548160ff0219169083151502179055506001601160046101000a81548160ff021916908315150217905550436012819055505050505050505050565b60166020528060005260406000206000915054906101000a900460ff1681565b601160019054906101000a900460ff1681565b6121f16122e0565b73ffffffffffffffffffffffffffffffffffffffff1661220f6115b4565b73ffffffffffffffffffffffffffffffffffffffff1614612265576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225c90614396565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036122d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cb90614bcf565b60405180910390fd5b6122dd8161370a565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612357576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234e90614c61565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123bd90614cf3565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516124a49190613cc9565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251790614d85565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361258f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258690614e17565b60405180910390fd5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561261c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261390614e83565b60405180910390fd5b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156126a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a090614eef565b60405180910390fd5b601160029054906101000a900460ff168061270d5750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806127615750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6127a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279790614f5b565b60405180910390fd5b60008103156136b057600060065490506000600754905060006008549050600060095490506000600a5490506000600b549050601160019054906101000a900460ff1615612d30576127f06115b4565b73ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff161415801561285e575061282e6115b4565b73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b80156128975750600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b80156128d1575061dead73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b80156128ea5750601160009054906101000a900460ff16155b15612d2f57601160039054906101000a900460ff166129e457601660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806129a45750601660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6129e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129da90614fc7565b60405180910390fd5b5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16148015612a8b5750601760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b3257600e54871115612ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612acc90615059565b60405180910390fd5b601054612ae18961136c565b88612aec91906143e5565b1115612b2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b24906150c5565b60405180910390fd5b612cd4565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16148015612bd95750601760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c2857600e54871115612c23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c1a90615157565b60405180910390fd5b612cd3565b601760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612cd257601054612c858961136c565b88612c9091906143e5565b1115612cd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc8906150c5565b60405180910390fd5b5b5b5b6012544303612cea576000955060009250612d2e565b601354601254612cfa91906143e5565b4311612d2d5760329450603293508385612d1491906143e5565b955060329150603290508082612d2a91906143e5565b92505b5b5b5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015612e275750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639015d371306040518263ffffffff1660e01b8152600401612de59190613c95565b602060405180830381865afa158015612e02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e26919061518c565b5b15612f42576000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a20527fc8b8b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601054600e54600f546040518763ffffffff1660e01b8152600401612ebb969594939291906151b9565b6020604051808303816000875af1158015612eda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612efe919061518c565b905080612f40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3790615266565b60405180910390fd5b505b6000612f4d3061136c565b90506000600f548210159050808015612f725750601160049054906101000a900460ff165b8015612f8b5750601160009054906101000a900460ff16155b8015612fe45750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff16145b801561303a5750601660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130905750601660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156130d4576001601160006101000a81548160ff0219169083151502179055506130b86137ce565b6000601160006101000a81548160ff0219169083151502179055505b601160009054906101000a900460ff1615801561313b5750601660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131915750601660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613518576000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff161480156131f55750600086115b15613285576132206064613212888d6139b990919063ffffffff16565b6139cf90919063ffffffff16565b905085848261322f9190614597565b6132399190614608565b6015600082825461324a91906143e5565b9250508190555085858261325e9190614597565b6132689190614608565b6014600082825461327991906143e5565b9250508190555061336f565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff161480156132e25750600089115b1561336e5761330d60646132ff8b8d6139b990919063ffffffff16565b6139cf90919063ffffffff16565b905088878261331c9190614597565b6133269190614608565b6015600082825461333791906143e5565b9250508190555088888261334b9190614597565b6133559190614608565b6014600082825461336691906143e5565b925050819055505b5b6000811115613508576133ca81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139e590919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061345f81600160008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139fb90919063ffffffff16565b600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516134ff9190613cc9565b60405180910390a35b808a6135149190615286565b9950505b61356a89600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139e590919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506135ff89600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139fb90919063ffffffff16565b600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8b60405161369f9190613cc9565b60405180910390a350505050505050505b505050565b60008383111582906136fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136f49190613d74565b60405180910390fd5b5082840390509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006137d93061136c565b905060006015546014546137ed91906143e5565b90506000808314806137ff5750600082145b1561380c575050506139b7565b6014600f5461381b9190614597565b831115613834576014600f546138319190614597565b92505b600047905061384284613a11565b600061385782476139fb90919063ffffffff16565b9050600061388285613874601554856139b990919063ffffffff16565b6139cf90919063ffffffff16565b905060006014819055506000601581905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516138da906152eb565b60006040518083038185875af1925050503d8060008114613917576040519150601f19603f3d011682016040523d82523d6000602084013e61391c565b606091505b505080945050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613968906152eb565b60006040518083038185875af1925050503d80600081146139a5576040519150601f19603f3d011682016040523d82523d6000602084013e6139aa565b606091505b5050809450505050505050505b565b600081836139c79190614597565b905092915050565b600081836139dd9190614608565b905092915050565b600081836139f391906143e5565b905092915050565b60008183613a099190615286565b905092915050565b6000600267ffffffffffffffff811115613a2e57613a2d615300565b5b604051908082528060200260200182016040528015613a5c5781602001602082028036833780820191505090505b5090503081600081518110613a7457613a736146cb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b3f9190615344565b81600181518110613b5357613b526146cb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613bba30600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846122e8565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613c1e95949392919061546a565b600060405180830381600087803b158015613c3857600080fd5b505af1158015613c4c573d6000803e3d6000fd5b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613c7f82613c54565b9050919050565b613c8f81613c74565b82525050565b6000602082019050613caa6000830184613c86565b92915050565b6000819050919050565b613cc381613cb0565b82525050565b6000602082019050613cde6000830184613cba565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613d1e578082015181840152602081019050613d03565b60008484015250505050565b6000601f19601f8301169050919050565b6000613d4682613ce4565b613d508185613cef565b9350613d60818560208601613d00565b613d6981613d2a565b840191505092915050565b60006020820190508181036000830152613d8e8184613d3b565b905092915050565b600080fd5b600080fd5b613da981613c74565b8114613db457600080fd5b50565b600081359050613dc681613da0565b92915050565b613dd581613cb0565b8114613de057600080fd5b50565b600081359050613df281613dcc565b92915050565b60008060408385031215613e0f57613e0e613d96565b5b6000613e1d85828601613db7565b9250506020613e2e85828601613de3565b9150509250929050565b60008115159050919050565b613e4d81613e38565b82525050565b6000602082019050613e686000830184613e44565b92915050565b60008060408385031215613e8557613e84613d96565b5b6000613e9385828601613de3565b9250506020613ea485828601613de3565b9150509250929050565b600060208284031215613ec457613ec3613d96565b5b6000613ed284828501613db7565b91505092915050565b613ee481613e38565b8114613eef57600080fd5b50565b600081359050613f0181613edb565b92915050565b600060208284031215613f1d57613f1c613d96565b5b6000613f2b84828501613ef2565b91505092915050565b600060208284031215613f4a57613f49613d96565b5b6000613f5884828501613de3565b91505092915050565b600080600060608486031215613f7a57613f79613d96565b5b6000613f8886828701613db7565b9350506020613f9986828701613db7565b9250506040613faa86828701613de3565b9150509250925092565b600060ff82169050919050565b613fca81613fb4565b82525050565b6000602082019050613fe56000830184613fc1565b92915050565b6000819050919050565b600061401061400b61400684613c54565b613feb565b613c54565b9050919050565b600061402282613ff5565b9050919050565b600061403482614017565b9050919050565b61404481614029565b82525050565b600060208201905061405f600083018461403b565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261408a57614089614065565b5b8235905067ffffffffffffffff8111156140a7576140a661406a565b5b6020830191508360208202830111156140c3576140c261406f565b5b9250929050565b60008083601f8401126140e0576140df614065565b5b8235905067ffffffffffffffff8111156140fd576140fc61406a565b5b6020830191508360208202830111156141195761411861406f565b5b9250929050565b6000806000806040858703121561413a57614139613d96565b5b600085013567ffffffffffffffff81111561415857614157613d9b565b5b61416487828801614074565b9450945050602085013567ffffffffffffffff81111561418757614186613d9b565b5b614193878288016140ca565b925092505092959194509250565b600080604083850312156141b8576141b7613d96565b5b60006141c685828601613db7565b92505060206141d785828601613ef2565b9150509250929050565b6000806000604084860312156141fa576141f9613d96565b5b600084013567ffffffffffffffff81111561421857614217613d9b565b5b61422486828701614074565b9350935050602061423786828701613ef2565b9150509250925092565b6000806040838503121561425857614257613d96565b5b600061426685828601613db7565b925050602061427785828601613db7565b9150509250929050565b61428a81613fb4565b811461429557600080fd5b50565b6000813590506142a781614281565b92915050565b6000819050919050565b6142c0816142ad565b81146142cb57600080fd5b50565b6000813590506142dd816142b7565b92915050565b600080600080608085870312156142fd576142fc613d96565b5b600061430b87828801614298565b945050602061431c878288016142ce565b935050604061432d878288016142ce565b925050606061433e87828801613de3565b91505092959194509250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614380602083613cef565b915061438b8261434a565b602082019050919050565b600060208201905081810360008301526143af81614373565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006143f082613cb0565b91506143fb83613cb0565b9250828201905080821115614413576144126143b6565b5b92915050565b60008160011c9050919050565b6000808291508390505b60018511156144705780860481111561444c5761444b6143b6565b5b600185161561445b5780820291505b808102905061446985614419565b9450614430565b94509492505050565b6000826144895760019050614545565b816144975760009050614545565b81600181146144ad57600281146144b7576144e6565b6001915050614545565b60ff8411156144c9576144c86143b6565b5b8360020a9150848211156144e0576144df6143b6565b5b50614545565b5060208310610133831016604e8410600b841016171561451b5782820a905083811115614516576145156143b6565b5b614545565b6145288484846001614426565b9250905081840481111561453f5761453e6143b6565b5b81810290505b9392505050565b600061455782613cb0565b915061456283613fb4565b925061458f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614479565b905092915050565b60006145a282613cb0565b91506145ad83613cb0565b92508282026145bb81613cb0565b915082820484148315176145d2576145d16143b6565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061461382613cb0565b915061461e83613cb0565b92508261462e5761462d6145d9565b5b828204905092915050565b7f43616e6e6f7420736574205f6d61785472616e73616374696f6e416d6f756e7460008201527f206c6f776572207468616e20302e312500000000000000000000000000000000602082015250565b6000614695603083613cef565b91506146a082614639565b604082019050919050565b600060208201905081810360008301526146c481614688565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061470582613cb0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614737576147366143b6565b5b600182019050919050565b7f496e76616c696420616e746920647261696e6572000000000000000000000000600082015250565b6000614778601483613cef565b915061478382614742565b602082019050919050565b600060208201905081810360008301526147a78161476b565b9050919050565b7f43616e6e6f7420736574205f6d617857616c6c6574416d6f756e74206c6f776560008201527f72207468616e20302e3525000000000000000000000000000000000000000000602082015250565b600061480a602b83613cef565b9150614815826147ae565b604082019050919050565b60006020820190508181036000830152614839816147fd565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b600061489c603583613cef565b91506148a782614840565b604082019050919050565b600060208201905081810360008301526148cb8161488f565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b600061492e603483613cef565b9150614939826148d2565b604082019050919050565b6000602082019050818103600083015261495d81614921565b9050919050565b61496d816142ad565b82525050565b600060a0820190506149886000830188614964565b6149956020830187614964565b6149a26040830186614964565b6149af6060830185613cba565b6149bc6080830184613c86565b9695505050505050565b60006060820190506149db6000830186614964565b6149e86020830185614964565b6149f56040830184613cba565b949350505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b6000614a3e6002836149fd565b9150614a4982614a08565b600282019050919050565b6000819050919050565b614a6f614a6a826142ad565b614a54565b82525050565b6000614a8082614a31565b9150614a8c8285614a5e565b602082019150614a9c8284614a5e565b6020820191508190509392505050565b6000608082019050614ac16000830187614964565b614ace6020830186613fc1565b614adb6040830185614964565b614ae86060830184614964565b95945050505050565b7f496e76616c6964207369676e6174757265000000000000000000000000000000600082015250565b6000614b27601183613cef565b9150614b3282614af1565b602082019050919050565b60006020820190508181036000830152614b5681614b1a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614bb9602683613cef565b9150614bc482614b5d565b604082019050919050565b60006020820190508181036000830152614be881614bac565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614c4b602483613cef565b9150614c5682614bef565b604082019050919050565b60006020820190508181036000830152614c7a81614c3e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614cdd602283613cef565b9150614ce882614c81565b604082019050919050565b60006020820190508181036000830152614d0c81614cd0565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614d6f602583613cef565b9150614d7a82614d13565b604082019050919050565b60006020820190508181036000830152614d9e81614d62565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614e01602383613cef565b9150614e0c82614da5565b604082019050919050565b60006020820190508181036000830152614e3081614df4565b9050919050565b7f45524332303a2066726f6d20697320626c61636b206c69737400000000000000600082015250565b6000614e6d601983613cef565b9150614e7882614e37565b602082019050919050565b60006020820190508181036000830152614e9c81614e60565b9050919050565b7f45524332303a20746f20697320626c61636b206c697374000000000000000000600082015250565b6000614ed9601783613cef565b9150614ee482614ea3565b602082019050919050565b60006020820190508181036000830152614f0881614ecc565b9050919050565b7f45524332303a207472616e736665722069732064697361626c65640000000000600082015250565b6000614f45601b83613cef565b9150614f5082614f0f565b602082019050919050565b60006020820190508181036000830152614f7481614f38565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614fb1601683613cef565b9150614fbc82614f7b565b602082019050919050565b60006020820190508181036000830152614fe081614fa4565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f5f6d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615043603683613cef565b915061504e82614fe7565b604082019050919050565b6000602082019050818103600083015261507281615036565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006150af601383613cef565b91506150ba82615079565b602082019050919050565b600060208201905081810360008301526150de816150a2565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f205f6d61785472616e73616374696f6e416d6f756e742e000000000000000000602082015250565b6000615141603783613cef565b915061514c826150e5565b604082019050919050565b6000602082019050818103600083015261517081615134565b9050919050565b60008151905061518681613edb565b92915050565b6000602082840312156151a2576151a1613d96565b5b60006151b084828501615177565b91505092915050565b600060c0820190506151ce6000830189613c86565b6151db6020830188613c86565b6151e86040830187613c86565b6151f56060830186613cba565b6152026080830185613cba565b61520f60a0830184613cba565b979650505050505050565b7f416e746920447261696e657220456e61626c6564000000000000000000000000600082015250565b6000615250601483613cef565b915061525b8261521a565b602082019050919050565b6000602082019050818103600083015261527f81615243565b9050919050565b600061529182613cb0565b915061529c83613cb0565b92508282039050818111156152b4576152b36143b6565b5b92915050565b600081905092915050565b50565b60006152d56000836152ba565b91506152e0826152c5565b600082019050919050565b60006152f6826152c8565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061533e81613da0565b92915050565b60006020828403121561535a57615359613d96565b5b60006153688482850161532f565b91505092915050565b6000819050919050565b600061539661539161538c84615371565b613feb565b613cb0565b9050919050565b6153a68161537b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6153e181613c74565b82525050565b60006153f383836153d8565b60208301905092915050565b6000602082019050919050565b6000615417826153ac565b61542181856153b7565b935061542c836153c8565b8060005b8381101561545d57815161544488826153e7565b975061544f836153ff565b925050600181019050615430565b5085935050505092915050565b600060a08201905061547f6000830188613cba565b61548c602083018761539d565b818103604083015261549e818661540c565b90506154ad6060830185613c86565b6154ba6080830184613cba565b969550505050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122086b45acef6ea6dbe0e86faa3d91b962de57246c63e25201b25c26829737cc8b864736f6c63430008140033

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.