ETH Price: $3,888.59 (+0.05%)

Token

ERC-20: Block INU (BINU)
 

Overview

Max Total Supply

1,000,000,000 BINU

Holders

34

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
3,463,768.483350532982587167 BINU

Value
$0.00
0x8a87d49d8fe28220a7f736f2263e324e46cfa656
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:
BlockINU

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-31
*/

/*
Block INU
https://www.blockinu.net/
https://t.me/blockinu
*/

// SPDX-License-Identifier: MIT
pragma solidity =0.8.16;
pragma experimental ABIEncoderV2;

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 { //Change
        _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);
    }
}

interface IERC20 {

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);

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

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

interface IERC20Metadata is IERC20 {

    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}


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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

        _afterTokenTransfer(address(0), account, amount);
    }

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

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

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

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

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 {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

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

    function name() external pure returns (string memory);

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

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

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

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

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

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

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

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

contract BlockINU is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    address public constant deadAddress = address(0xdead);

    bool private swapping;

    address public marketingWallet;

    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;

    bool public tradingActive = false;
    bool public swapEnabled = false;

    uint256 public buyTotalFees;
    uint256 private buyMarketingFee;
    uint256 private buyLiquidityFee;

    uint256 public sellTotalFees;
    uint256 private sellMarketingFee;
    uint256 private sellLiquidityFee;

    uint256 private tokensForMarketing;
    uint256 private tokensForLiquidity;
    uint256 private previousFee;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private _isExcludedMaxTransactionAmount;
    mapping(address => bool) private automatedMarketMakerPairs;

    event UpdateUniswapV2Router(
        address indexed newAddress,
        address indexed oldAddress
    );

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event marketingWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    constructor() ERC20("Block INU", "BINU") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 _buyMarketingFee = 10;
        uint256 _buyLiquidityFee = 0;

        uint256 _sellMarketingFee = 10;
        uint256 _sellLiquidityFee = 0;

        uint256 totalSupply = 1000000000 * 1e18;

        maxTransactionAmount = 20000000 * 1e18;
        maxWallet = 20000000 * 1e18;
        swapTokensAtAmount = (totalSupply * 5) / 10000;

        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee;

        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee;
        previousFee = sellTotalFees;

        marketingWallet = address(0x39cddE306F2Ff10d6C3DA41386fd365a674426db);

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

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

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
    }

    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 updateMaxWalletAndTxnAmount(uint256 newTxnNum, uint256 newMaxWalletNum) external onlyOwner {
        require(
            newTxnNum >= ((totalSupply() * 5) / 1000) / 1e18,
            "Cannot set maxTxn lower than 0.5%"
        );
        require(
            newMaxWalletNum >= ((totalSupply() * 5) / 1000) / 1e18,
            "Cannot set maxWallet lower than 0.5%"
        );
        maxWallet = newMaxWalletNum * (10**18);
        maxTransactionAmount = newTxnNum * (10**18);
    }

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

    function updateBuyFees(
        uint256 _marketingFee,
        uint256 _liquidityFee
    ) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee;
        require(buyTotalFees <= 5, "Must keep fees at 5% or less");
    }

    function updateSellFee(
        uint256 _marketingFee,
        uint256 _liquidityFee
    ) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee;
        previousFee = sellTotalFees;
        require(sellTotalFees <= 5, "Must keep fees at 5% or less");
    }

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

    function setAutomatedMarketMakerPair(address pair, bool value)
        public
        onlyOwner
    {
        require(
            pair != uniswapV2Pair,
            "The pair cannot be removed from automatedMarketMakerPairs"
        );

        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

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

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

                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 (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Buy transfer amount exceeds the maxTransactionAmount."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
                //when sell
                else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Sell transfer amount exceeds the maxTransactionAmount."
                    );
                } 
                
                else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
            }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;

            swapBack();

            swapping = false;
        }

        bool takeFee = !swapping;

        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;

        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;
            }

            if (fees > 0) {
                super._transfer(from, address(this), fees);
            }

            amount -= fees;
        }

        super._transfer(from, to, amount);
        sellTotalFees = previousFee;

    }

    function swapTokensForEth(uint256 tokenAmount) private {

        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,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {

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

        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            deadAddress,
            block.timestamp
        );
    }

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

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

        if (contractBalance > swapTokensAtAmount * 20) {
            contractBalance = swapTokensAtAmount * 20;
        }

        uint256 liquidityTokens = (contractBalance * tokensForLiquidity) /
            totalTokensToSwap /
            2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);

        uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(
            totalTokensToSwap
        );

        uint256 ethForLiquidity = ethBalance - ethForMarketing;

        tokensForLiquidity = 0;
        tokensForMarketing = 0;

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(
                amountToSwapForETH,
                ethForLiquidity,
                tokensForLiquidity
            );
        }

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"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":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","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":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTxnNum","type":"uint256"},{"internalType":"uint256","name":"newMaxWalletNum","type":"uint256"}],"name":"updateMaxWalletAndTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526000600a60006101000a81548160ff0219169083151502179055506000600a60016101000a81548160ff0219169083151502179055503480156200004757600080fd5b506040518060400160405280600981526020017f426c6f636b20494e5500000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f42494e55000000000000000000000000000000000000000000000000000000008152508160039081620000c5919062000c98565b508060049081620000d7919062000c98565b505050620000fa620000ee620004df60201b60201c565b620004e760201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905062000126816001620005ad60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001cc919062000de9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000234573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025a919062000de9565b6040518363ffffffff1660e01b81526004016200027992919062000e2c565b6020604051808303816000875af115801562000299573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002bf919062000de9565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200030760a0516001620005ad60201b60201c565b6200031c60a05160016200069760201b60201c565b6000600a9050600080600a90506000806b033b2e3c9fd0803ce800000090506a108b2a2c280290940000006007819055506a108b2a2c2802909400000060098190555061271060058262000371919062000e88565b6200037d919062000f18565b60088190555084600c8190555083600d81905550600d54600c54620003a3919062000f50565b600b8190555082600f8190555081601081905550601054600f54620003c9919062000f50565b600e81905550600e546013819055507339cdde306f2ff10d6c3da41386fd365a674426db600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200044f620004416200073860201b60201c565b60016200076260201b60201c565b620004623060016200076260201b60201c565b6200047761dead60016200076260201b60201c565b620004996200048b6200073860201b60201c565b6001620005ad60201b60201c565b620004ac306001620005ad60201b60201c565b620004c161dead6001620005ad60201b60201c565b620004d333826200089c60201b60201c565b505050505050620010e8565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620005bd620004df60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620005e36200073860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200063c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006339062000fec565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000772620004df60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007986200073860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620007f1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007e89062000fec565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200089091906200102b565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200090e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009059062001098565b60405180910390fd5b620009226000838362000a1460201b60201c565b806002600082825462000936919062000f50565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200098d919062000f50565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009f49190620010cb565b60405180910390a362000a106000838362000a1960201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000aa057607f821691505b60208210810362000ab65762000ab562000a58565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000b207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000ae1565b62000b2c868362000ae1565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000b7962000b7362000b6d8462000b44565b62000b4e565b62000b44565b9050919050565b6000819050919050565b62000b958362000b58565b62000bad62000ba48262000b80565b84845462000aee565b825550505050565b600090565b62000bc462000bb5565b62000bd181848462000b8a565b505050565b5b8181101562000bf95762000bed60008262000bba565b60018101905062000bd7565b5050565b601f82111562000c485762000c128162000abc565b62000c1d8462000ad1565b8101602085101562000c2d578190505b62000c4562000c3c8562000ad1565b83018262000bd6565b50505b505050565b600082821c905092915050565b600062000c6d6000198460080262000c4d565b1980831691505092915050565b600062000c88838362000c5a565b9150826002028217905092915050565b62000ca38262000a1e565b67ffffffffffffffff81111562000cbf5762000cbe62000a29565b5b62000ccb825462000a87565b62000cd882828562000bfd565b600060209050601f83116001811462000d10576000841562000cfb578287015190505b62000d07858262000c7a565b86555062000d77565b601f19841662000d208662000abc565b60005b8281101562000d4a5784890151825560018201915060208501945060208101905062000d23565b8683101562000d6a578489015162000d66601f89168262000c5a565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000db18262000d84565b9050919050565b62000dc38162000da4565b811462000dcf57600080fd5b50565b60008151905062000de38162000db8565b92915050565b60006020828403121562000e025762000e0162000d7f565b5b600062000e128482850162000dd2565b91505092915050565b62000e268162000da4565b82525050565b600060408201905062000e43600083018562000e1b565b62000e52602083018462000e1b565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000e958262000b44565b915062000ea28362000b44565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000ede5762000edd62000e59565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000f258262000b44565b915062000f328362000b44565b92508262000f455762000f4462000ee9565b5b828204905092915050565b600062000f5d8262000b44565b915062000f6a8362000b44565b925082820190508082111562000f855762000f8462000e59565b5b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000fd460208362000f8b565b915062000fe18262000f9c565b602082019050919050565b60006020820190508181036000830152620010078162000fc5565b9050919050565b60008115159050919050565b62001025816200100e565b82525050565b60006020820190506200104260008301846200101a565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001080601f8362000f8b565b91506200108d8262001048565b602082019050919050565b60006020820190508181036000830152620010b38162001071565b9050919050565b620010c58162000b44565b82525050565b6000602082019050620010e26000830184620010ba565b92915050565b60805160a05161418f6200113860003960008181610abe01526111940152600081816108dd01528181612b5801528181612c3901528181612c6001528181612cfc0152612d23015261418f6000f3fe6080604052600436106101fd5760003560e01c80638a8c523c1161010d578063beffc7d4116100a0578063d85ba0631161006f578063d85ba06314610744578063dd62ed3e1461076f578063e2f45605146107ac578063f2fde38b146107d7578063f8b45b051461080057610204565b8063beffc7d41461068a578063c0246668146106b3578063c8c8ebe4146106dc578063d257b34f1461070757610204565b80639a7a23d6116100dc5780639a7a23d6146105bc578063a457c2d7146105e5578063a9059cbb14610622578063bbc0c7421461065f57610204565b80638a8c523c146105265780638da5cb5b1461053d57806395d89b4114610568578063961883991461059357610204565b806349bd5a5e116101905780636ddd17131161015f5780636ddd17131461045357806370a082311461047e578063715018a6146104bb5780637571336a146104d257806375f0a874146104fb57610204565b806349bd5a5e146103975780634fbee193146103c257806366ca9b83146103ff5780636a486a8e1461042857610204565b806323b872dd116101cc57806323b872dd146102c757806327c8f83514610304578063313ce5671461032f578063395093511461035a57610204565b806306fdde0314610209578063095ea7b3146102345780631694505e1461027157806318160ddd1461029c57610204565b3661020457005b600080fd5b34801561021557600080fd5b5061021e61082b565b60405161022b9190612e62565b60405180910390f35b34801561024057600080fd5b5061025b60048036038101906102569190612f1d565b6108bd565b6040516102689190612f78565b60405180910390f35b34801561027d57600080fd5b506102866108db565b6040516102939190612ff2565b60405180910390f35b3480156102a857600080fd5b506102b16108ff565b6040516102be919061301c565b60405180910390f35b3480156102d357600080fd5b506102ee60048036038101906102e99190613037565b610909565b6040516102fb9190612f78565b60405180910390f35b34801561031057600080fd5b50610319610a01565b6040516103269190613099565b60405180910390f35b34801561033b57600080fd5b50610344610a07565b60405161035191906130d0565b60405180910390f35b34801561036657600080fd5b50610381600480360381019061037c9190612f1d565b610a10565b60405161038e9190612f78565b60405180910390f35b3480156103a357600080fd5b506103ac610abc565b6040516103b99190613099565b60405180910390f35b3480156103ce57600080fd5b506103e960048036038101906103e491906130eb565b610ae0565b6040516103f69190612f78565b60405180910390f35b34801561040b57600080fd5b5061042660048036038101906104219190613118565b610b36565b005b34801561043457600080fd5b5061043d610c20565b60405161044a919061301c565b60405180910390f35b34801561045f57600080fd5b50610468610c26565b6040516104759190612f78565b60405180910390f35b34801561048a57600080fd5b506104a560048036038101906104a091906130eb565b610c39565b6040516104b2919061301c565b60405180910390f35b3480156104c757600080fd5b506104d0610c81565b005b3480156104de57600080fd5b506104f960048036038101906104f49190613184565b610d09565b005b34801561050757600080fd5b50610510610de0565b60405161051d9190613099565b60405180910390f35b34801561053257600080fd5b5061053b610e06565b005b34801561054957600080fd5b50610552610eba565b60405161055f9190613099565b60405180910390f35b34801561057457600080fd5b5061057d610ee4565b60405161058a9190612e62565b60405180910390f35b34801561059f57600080fd5b506105ba60048036038101906105b59190613118565b610f76565b005b3480156105c857600080fd5b506105e360048036038101906105de9190613184565b611116565b005b3480156105f157600080fd5b5061060c60048036038101906106079190612f1d565b61122e565b6040516106199190612f78565b60405180910390f35b34801561062e57600080fd5b5061064960048036038101906106449190612f1d565b611319565b6040516106569190612f78565b60405180910390f35b34801561066b57600080fd5b50610674611337565b6040516106819190612f78565b60405180910390f35b34801561069657600080fd5b506106b160048036038101906106ac9190613118565b61134a565b005b3480156106bf57600080fd5b506106da60048036038101906106d59190613184565b61143d565b005b3480156106e857600080fd5b506106f1611562565b6040516106fe919061301c565b60405180910390f35b34801561071357600080fd5b5061072e600480360381019061072991906131c4565b611568565b60405161073b9190612f78565b60405180910390f35b34801561075057600080fd5b506107596116bd565b604051610766919061301c565b60405180910390f35b34801561077b57600080fd5b50610796600480360381019061079191906131f1565b6116c3565b6040516107a3919061301c565b60405180910390f35b3480156107b857600080fd5b506107c161174a565b6040516107ce919061301c565b60405180910390f35b3480156107e357600080fd5b506107fe60048036038101906107f991906130eb565b611750565b005b34801561080c57600080fd5b50610815611847565b604051610822919061301c565b60405180910390f35b60606003805461083a90613260565b80601f016020809104026020016040519081016040528092919081815260200182805461086690613260565b80156108b35780601f10610888576101008083540402835291602001916108b3565b820191906000526020600020905b81548152906001019060200180831161089657829003601f168201915b5050505050905090565b60006108d16108ca61184d565b8484611855565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b6000610916848484611a1e565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061096161184d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156109e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d890613303565b60405180910390fd5b6109f5856109ed61184d565b858403611855565b60019150509392505050565b61dead81565b60006012905090565b6000610ab2610a1d61184d565b848460016000610a2b61184d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610aad9190613352565b611855565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610b3e61184d565b73ffffffffffffffffffffffffffffffffffffffff16610b5c610eba565b73ffffffffffffffffffffffffffffffffffffffff1614610bb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba9906133d2565b60405180910390fd5b81600c8190555080600d81905550600d54600c54610bd09190613352565b600b819055506005600b541115610c1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c139061343e565b60405180910390fd5b5050565b600e5481565b600a60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c8961184d565b73ffffffffffffffffffffffffffffffffffffffff16610ca7610eba565b73ffffffffffffffffffffffffffffffffffffffff1614610cfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf4906133d2565b60405180910390fd5b610d07600061247a565b565b610d1161184d565b73ffffffffffffffffffffffffffffffffffffffff16610d2f610eba565b73ffffffffffffffffffffffffffffffffffffffff1614610d85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7c906133d2565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e0e61184d565b73ffffffffffffffffffffffffffffffffffffffff16610e2c610eba565b73ffffffffffffffffffffffffffffffffffffffff1614610e82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e79906133d2565b60405180910390fd5b6001600a60006101000a81548160ff0219169083151502179055506001600a60016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610ef390613260565b80601f0160208091040260200160405190810160405280929190818152602001828054610f1f90613260565b8015610f6c5780601f10610f4157610100808354040283529160200191610f6c565b820191906000526020600020905b815481529060010190602001808311610f4f57829003601f168201915b5050505050905090565b610f7e61184d565b73ffffffffffffffffffffffffffffffffffffffff16610f9c610eba565b73ffffffffffffffffffffffffffffffffffffffff1614610ff2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe9906133d2565b60405180910390fd5b670de0b6b3a76400006103e860056110086108ff565b611012919061345e565b61101c91906134e7565b61102691906134e7565b821015611068576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105f9061358a565b60405180910390fd5b670de0b6b3a76400006103e8600561107e6108ff565b611088919061345e565b61109291906134e7565b61109c91906134e7565b8110156110de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d59061361c565b60405180910390fd5b670de0b6b3a7640000816110f2919061345e565b600981905550670de0b6b3a76400008261110c919061345e565b6007819055505050565b61111e61184d565b73ffffffffffffffffffffffffffffffffffffffff1661113c610eba565b73ffffffffffffffffffffffffffffffffffffffff1614611192576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611189906133d2565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611220576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611217906136ae565b60405180910390fd5b61122a8282612540565b5050565b6000806001600061123d61184d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156112fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f190613740565b60405180910390fd5b61130e61130561184d565b85858403611855565b600191505092915050565b600061132d61132661184d565b8484611a1e565b6001905092915050565b600a60009054906101000a900460ff1681565b61135261184d565b73ffffffffffffffffffffffffffffffffffffffff16611370610eba565b73ffffffffffffffffffffffffffffffffffffffff16146113c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bd906133d2565b60405180910390fd5b81600f8190555080601081905550601054600f546113e49190613352565b600e81905550600e546013819055506005600e541115611439576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114309061343e565b60405180910390fd5b5050565b61144561184d565b73ffffffffffffffffffffffffffffffffffffffff16611463610eba565b73ffffffffffffffffffffffffffffffffffffffff16146114b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b0906133d2565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516115569190612f78565b60405180910390a25050565b60075481565b600061157261184d565b73ffffffffffffffffffffffffffffffffffffffff16611590610eba565b73ffffffffffffffffffffffffffffffffffffffff16146115e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dd906133d2565b60405180910390fd5b620186a060016115f46108ff565b6115fe919061345e565b61160891906134e7565b82101561164a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611641906137d2565b60405180910390fd5b6103e860056116576108ff565b611661919061345e565b61166b91906134e7565b8211156116ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a490613864565b60405180910390fd5b8160088190555060019050919050565b600b5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b61175861184d565b73ffffffffffffffffffffffffffffffffffffffff16611776610eba565b73ffffffffffffffffffffffffffffffffffffffff16146117cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c3906133d2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361183b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611832906138f6565b60405180910390fd5b6118448161247a565b50565b60095481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bb90613988565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192a90613a1a565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a11919061301c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8490613aac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611afc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af390613b3e565b60405180910390fd5b60008103611b1557611b10838360006125e1565b612475565b611b1d610eba565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b8b5750611b5b610eba565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bc45750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bfe575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611c175750600560149054906101000a900460ff16155b15611ffa57600a60009054906101000a900460ff16611d1157601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611cd15750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611d10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0790613baa565b60405180910390fd5b5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611db45750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e5b57600754811115611dfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df590613c3c565b60405180910390fd5b600954611e0a83610c39565b82611e159190613352565b1115611e56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4d90613ca8565b60405180910390fd5b611ff9565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611efe5750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f4d57600754811115611f48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3f90613d3a565b60405180910390fd5b611ff8565b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611ff757600954611faa83610c39565b82611fb59190613352565b1115611ff6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fed90613ca8565b60405180910390fd5b5b5b5b5b600061200530610c39565b90506000600854821015905080801561202a5750600a60019054906101000a900460ff165b80156120435750600560149054906101000a900460ff16155b80156120995750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120ef5750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121455750601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612189576001600560146101000a81548160ff02191690831515021790555061216d612860565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061223f5750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561224957600090505b6000811561245c57601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156122ac57506000600e54115b15612346576122d960646122cb600e5488612a6d90919063ffffffff16565b612a8390919063ffffffff16565b9050600e54601054826122ec919061345e565b6122f691906134e7565b601260008282546123079190613352565b92505081905550600e54600f548261231f919061345e565b61232991906134e7565b6011600082825461233a9190613352565b92505081905550612438565b601660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123a157506000600b54115b15612437576123ce60646123c0600b5488612a6d90919063ffffffff16565b612a8390919063ffffffff16565b9050600b54600d54826123e1919061345e565b6123eb91906134e7565b601260008282546123fc9190613352565b92505081905550600b54600c5482612414919061345e565b61241e91906134e7565b6011600082825461242f9190613352565b925050819055505b5b600081111561244d5761244c8730836125e1565b5b80856124599190613d5a565b94505b6124678787876125e1565b601354600e81905550505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264790613aac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b690613b3e565b60405180910390fd5b6126ca838383612a99565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612750576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274790613e00565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127e39190613352565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612847919061301c565b60405180910390a361285a848484612a9e565b50505050565b600061286b30610c39565b9050600060115460125461287f9190613352565b90506000808314806128915750600082145b1561289e57505050612a6b565b60146008546128ad919061345e565b8311156128c65760146008546128c3919061345e565b92505b6000600283601254866128d9919061345e565b6128e391906134e7565b6128ed91906134e7565b905060006129048286612aa390919063ffffffff16565b9050600047905061291482612ab9565b60006129298247612aa390919063ffffffff16565b905060006129548761294660115485612a6d90919063ffffffff16565b612a8390919063ffffffff16565b9050600081836129649190613d5a565b9050600060128190555060006011819055506000861180156129865750600081115b156129d3576129958682612cf6565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56185826012546040516129ca93929190613e20565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612a1990613e88565b60006040518083038185875af1925050503d8060008114612a56576040519150601f19603f3d011682016040523d82523d6000602084013e612a5b565b606091505b5050809750505050505050505050505b565b60008183612a7b919061345e565b905092915050565b60008183612a9191906134e7565b905092915050565b505050565b505050565b60008183612ab19190613d5a565b905092915050565b6000600267ffffffffffffffff811115612ad657612ad5613e9d565b5b604051908082528060200260200182016040528015612b045781602001602082028036833780820191505090505b5090503081600081518110612b1c57612b1b613ecc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be59190613f10565b81600181518110612bf957612bf8613ecc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612c5e307f000000000000000000000000000000000000000000000000000000000000000084611855565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612cc0959493929190614036565b600060405180830381600087803b158015612cda57600080fd5b505af1158015612cee573d6000803e3d6000fd5b505050505050565b612d21307f000000000000000000000000000000000000000000000000000000000000000084611855565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401612d8896959493929190614090565b60606040518083038185885af1158015612da6573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612dcb9190614106565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e0c578082015181840152602081019050612df1565b60008484015250505050565b6000601f19601f8301169050919050565b6000612e3482612dd2565b612e3e8185612ddd565b9350612e4e818560208601612dee565b612e5781612e18565b840191505092915050565b60006020820190508181036000830152612e7c8184612e29565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612eb482612e89565b9050919050565b612ec481612ea9565b8114612ecf57600080fd5b50565b600081359050612ee181612ebb565b92915050565b6000819050919050565b612efa81612ee7565b8114612f0557600080fd5b50565b600081359050612f1781612ef1565b92915050565b60008060408385031215612f3457612f33612e84565b5b6000612f4285828601612ed2565b9250506020612f5385828601612f08565b9150509250929050565b60008115159050919050565b612f7281612f5d565b82525050565b6000602082019050612f8d6000830184612f69565b92915050565b6000819050919050565b6000612fb8612fb3612fae84612e89565b612f93565b612e89565b9050919050565b6000612fca82612f9d565b9050919050565b6000612fdc82612fbf565b9050919050565b612fec81612fd1565b82525050565b60006020820190506130076000830184612fe3565b92915050565b61301681612ee7565b82525050565b6000602082019050613031600083018461300d565b92915050565b6000806000606084860312156130505761304f612e84565b5b600061305e86828701612ed2565b935050602061306f86828701612ed2565b925050604061308086828701612f08565b9150509250925092565b61309381612ea9565b82525050565b60006020820190506130ae600083018461308a565b92915050565b600060ff82169050919050565b6130ca816130b4565b82525050565b60006020820190506130e560008301846130c1565b92915050565b60006020828403121561310157613100612e84565b5b600061310f84828501612ed2565b91505092915050565b6000806040838503121561312f5761312e612e84565b5b600061313d85828601612f08565b925050602061314e85828601612f08565b9150509250929050565b61316181612f5d565b811461316c57600080fd5b50565b60008135905061317e81613158565b92915050565b6000806040838503121561319b5761319a612e84565b5b60006131a985828601612ed2565b92505060206131ba8582860161316f565b9150509250929050565b6000602082840312156131da576131d9612e84565b5b60006131e884828501612f08565b91505092915050565b6000806040838503121561320857613207612e84565b5b600061321685828601612ed2565b925050602061322785828601612ed2565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061327857607f821691505b60208210810361328b5761328a613231565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006132ed602883612ddd565b91506132f882613291565b604082019050919050565b6000602082019050818103600083015261331c816132e0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061335d82612ee7565b915061336883612ee7565b92508282019050808211156133805761337f613323565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006133bc602083612ddd565b91506133c782613386565b602082019050919050565b600060208201905081810360008301526133eb816133af565b9050919050565b7f4d757374206b6565702066656573206174203525206f72206c65737300000000600082015250565b6000613428601c83612ddd565b9150613433826133f2565b602082019050919050565b600060208201905081810360008301526134578161341b565b9050919050565b600061346982612ee7565b915061347483612ee7565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156134ad576134ac613323565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006134f282612ee7565b91506134fd83612ee7565b92508261350d5761350c6134b8565b5b828204905092915050565b7f43616e6e6f7420736574206d617854786e206c6f776572207468616e20302e3560008201527f2500000000000000000000000000000000000000000000000000000000000000602082015250565b6000613574602183612ddd565b915061357f82613518565b604082019050919050565b600060208201905081810360008301526135a381613567565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613606602483612ddd565b9150613611826135aa565b604082019050919050565b60006020820190508181036000830152613635816135f9565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613698603983612ddd565b91506136a38261363c565b604082019050919050565b600060208201905081810360008301526136c78161368b565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061372a602583612ddd565b9150613735826136ce565b604082019050919050565b600060208201905081810360008301526137598161371d565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006137bc603583612ddd565b91506137c782613760565b604082019050919050565b600060208201905081810360008301526137eb816137af565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b600061384e603483612ddd565b9150613859826137f2565b604082019050919050565b6000602082019050818103600083015261387d81613841565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006138e0602683612ddd565b91506138eb82613884565b604082019050919050565b6000602082019050818103600083015261390f816138d3565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613972602483612ddd565b915061397d82613916565b604082019050919050565b600060208201905081810360008301526139a181613965565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a04602283612ddd565b9150613a0f826139a8565b604082019050919050565b60006020820190508181036000830152613a33816139f7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613a96602583612ddd565b9150613aa182613a3a565b604082019050919050565b60006020820190508181036000830152613ac581613a89565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613b28602383612ddd565b9150613b3382613acc565b604082019050919050565b60006020820190508181036000830152613b5781613b1b565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000613b94601683612ddd565b9150613b9f82613b5e565b602082019050919050565b60006020820190508181036000830152613bc381613b87565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000613c26603583612ddd565b9150613c3182613bca565b604082019050919050565b60006020820190508181036000830152613c5581613c19565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613c92601383612ddd565b9150613c9d82613c5c565b602082019050919050565b60006020820190508181036000830152613cc181613c85565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613d24603683612ddd565b9150613d2f82613cc8565b604082019050919050565b60006020820190508181036000830152613d5381613d17565b9050919050565b6000613d6582612ee7565b9150613d7083612ee7565b9250828203905081811115613d8857613d87613323565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613dea602683612ddd565b9150613df582613d8e565b604082019050919050565b60006020820190508181036000830152613e1981613ddd565b9050919050565b6000606082019050613e35600083018661300d565b613e42602083018561300d565b613e4f604083018461300d565b949350505050565b600081905092915050565b50565b6000613e72600083613e57565b9150613e7d82613e62565b600082019050919050565b6000613e9382613e65565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613f0a81612ebb565b92915050565b600060208284031215613f2657613f25612e84565b5b6000613f3484828501613efb565b91505092915050565b6000819050919050565b6000613f62613f5d613f5884613f3d565b612f93565b612ee7565b9050919050565b613f7281613f47565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613fad81612ea9565b82525050565b6000613fbf8383613fa4565b60208301905092915050565b6000602082019050919050565b6000613fe382613f78565b613fed8185613f83565b9350613ff883613f94565b8060005b838110156140295781516140108882613fb3565b975061401b83613fcb565b925050600181019050613ffc565b5085935050505092915050565b600060a08201905061404b600083018861300d565b6140586020830187613f69565b818103604083015261406a8186613fd8565b9050614079606083018561308a565b614086608083018461300d565b9695505050505050565b600060c0820190506140a5600083018961308a565b6140b2602083018861300d565b6140bf6040830187613f69565b6140cc6060830186613f69565b6140d9608083018561308a565b6140e660a083018461300d565b979650505050505050565b60008151905061410081612ef1565b92915050565b60008060006060848603121561411f5761411e612e84565b5b600061412d868287016140f1565b935050602061413e868287016140f1565b925050604061414f868287016140f1565b915050925092509256fea26469706673582212207637937ec030bfb6b886be45668324d80772526d444ef3fad2bf12efa9f062cf64736f6c63430008100033

Deployed Bytecode

0x6080604052600436106101fd5760003560e01c80638a8c523c1161010d578063beffc7d4116100a0578063d85ba0631161006f578063d85ba06314610744578063dd62ed3e1461076f578063e2f45605146107ac578063f2fde38b146107d7578063f8b45b051461080057610204565b8063beffc7d41461068a578063c0246668146106b3578063c8c8ebe4146106dc578063d257b34f1461070757610204565b80639a7a23d6116100dc5780639a7a23d6146105bc578063a457c2d7146105e5578063a9059cbb14610622578063bbc0c7421461065f57610204565b80638a8c523c146105265780638da5cb5b1461053d57806395d89b4114610568578063961883991461059357610204565b806349bd5a5e116101905780636ddd17131161015f5780636ddd17131461045357806370a082311461047e578063715018a6146104bb5780637571336a146104d257806375f0a874146104fb57610204565b806349bd5a5e146103975780634fbee193146103c257806366ca9b83146103ff5780636a486a8e1461042857610204565b806323b872dd116101cc57806323b872dd146102c757806327c8f83514610304578063313ce5671461032f578063395093511461035a57610204565b806306fdde0314610209578063095ea7b3146102345780631694505e1461027157806318160ddd1461029c57610204565b3661020457005b600080fd5b34801561021557600080fd5b5061021e61082b565b60405161022b9190612e62565b60405180910390f35b34801561024057600080fd5b5061025b60048036038101906102569190612f1d565b6108bd565b6040516102689190612f78565b60405180910390f35b34801561027d57600080fd5b506102866108db565b6040516102939190612ff2565b60405180910390f35b3480156102a857600080fd5b506102b16108ff565b6040516102be919061301c565b60405180910390f35b3480156102d357600080fd5b506102ee60048036038101906102e99190613037565b610909565b6040516102fb9190612f78565b60405180910390f35b34801561031057600080fd5b50610319610a01565b6040516103269190613099565b60405180910390f35b34801561033b57600080fd5b50610344610a07565b60405161035191906130d0565b60405180910390f35b34801561036657600080fd5b50610381600480360381019061037c9190612f1d565b610a10565b60405161038e9190612f78565b60405180910390f35b3480156103a357600080fd5b506103ac610abc565b6040516103b99190613099565b60405180910390f35b3480156103ce57600080fd5b506103e960048036038101906103e491906130eb565b610ae0565b6040516103f69190612f78565b60405180910390f35b34801561040b57600080fd5b5061042660048036038101906104219190613118565b610b36565b005b34801561043457600080fd5b5061043d610c20565b60405161044a919061301c565b60405180910390f35b34801561045f57600080fd5b50610468610c26565b6040516104759190612f78565b60405180910390f35b34801561048a57600080fd5b506104a560048036038101906104a091906130eb565b610c39565b6040516104b2919061301c565b60405180910390f35b3480156104c757600080fd5b506104d0610c81565b005b3480156104de57600080fd5b506104f960048036038101906104f49190613184565b610d09565b005b34801561050757600080fd5b50610510610de0565b60405161051d9190613099565b60405180910390f35b34801561053257600080fd5b5061053b610e06565b005b34801561054957600080fd5b50610552610eba565b60405161055f9190613099565b60405180910390f35b34801561057457600080fd5b5061057d610ee4565b60405161058a9190612e62565b60405180910390f35b34801561059f57600080fd5b506105ba60048036038101906105b59190613118565b610f76565b005b3480156105c857600080fd5b506105e360048036038101906105de9190613184565b611116565b005b3480156105f157600080fd5b5061060c60048036038101906106079190612f1d565b61122e565b6040516106199190612f78565b60405180910390f35b34801561062e57600080fd5b5061064960048036038101906106449190612f1d565b611319565b6040516106569190612f78565b60405180910390f35b34801561066b57600080fd5b50610674611337565b6040516106819190612f78565b60405180910390f35b34801561069657600080fd5b506106b160048036038101906106ac9190613118565b61134a565b005b3480156106bf57600080fd5b506106da60048036038101906106d59190613184565b61143d565b005b3480156106e857600080fd5b506106f1611562565b6040516106fe919061301c565b60405180910390f35b34801561071357600080fd5b5061072e600480360381019061072991906131c4565b611568565b60405161073b9190612f78565b60405180910390f35b34801561075057600080fd5b506107596116bd565b604051610766919061301c565b60405180910390f35b34801561077b57600080fd5b50610796600480360381019061079191906131f1565b6116c3565b6040516107a3919061301c565b60405180910390f35b3480156107b857600080fd5b506107c161174a565b6040516107ce919061301c565b60405180910390f35b3480156107e357600080fd5b506107fe60048036038101906107f991906130eb565b611750565b005b34801561080c57600080fd5b50610815611847565b604051610822919061301c565b60405180910390f35b60606003805461083a90613260565b80601f016020809104026020016040519081016040528092919081815260200182805461086690613260565b80156108b35780601f10610888576101008083540402835291602001916108b3565b820191906000526020600020905b81548152906001019060200180831161089657829003601f168201915b5050505050905090565b60006108d16108ca61184d565b8484611855565b6001905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b6000610916848484611a1e565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061096161184d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156109e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d890613303565b60405180910390fd5b6109f5856109ed61184d565b858403611855565b60019150509392505050565b61dead81565b60006012905090565b6000610ab2610a1d61184d565b848460016000610a2b61184d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610aad9190613352565b611855565b6001905092915050565b7f00000000000000000000000061f19448eef1298414936e7aa84bf4b01bc4a45c81565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610b3e61184d565b73ffffffffffffffffffffffffffffffffffffffff16610b5c610eba565b73ffffffffffffffffffffffffffffffffffffffff1614610bb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba9906133d2565b60405180910390fd5b81600c8190555080600d81905550600d54600c54610bd09190613352565b600b819055506005600b541115610c1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c139061343e565b60405180910390fd5b5050565b600e5481565b600a60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c8961184d565b73ffffffffffffffffffffffffffffffffffffffff16610ca7610eba565b73ffffffffffffffffffffffffffffffffffffffff1614610cfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf4906133d2565b60405180910390fd5b610d07600061247a565b565b610d1161184d565b73ffffffffffffffffffffffffffffffffffffffff16610d2f610eba565b73ffffffffffffffffffffffffffffffffffffffff1614610d85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7c906133d2565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e0e61184d565b73ffffffffffffffffffffffffffffffffffffffff16610e2c610eba565b73ffffffffffffffffffffffffffffffffffffffff1614610e82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e79906133d2565b60405180910390fd5b6001600a60006101000a81548160ff0219169083151502179055506001600a60016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610ef390613260565b80601f0160208091040260200160405190810160405280929190818152602001828054610f1f90613260565b8015610f6c5780601f10610f4157610100808354040283529160200191610f6c565b820191906000526020600020905b815481529060010190602001808311610f4f57829003601f168201915b5050505050905090565b610f7e61184d565b73ffffffffffffffffffffffffffffffffffffffff16610f9c610eba565b73ffffffffffffffffffffffffffffffffffffffff1614610ff2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe9906133d2565b60405180910390fd5b670de0b6b3a76400006103e860056110086108ff565b611012919061345e565b61101c91906134e7565b61102691906134e7565b821015611068576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105f9061358a565b60405180910390fd5b670de0b6b3a76400006103e8600561107e6108ff565b611088919061345e565b61109291906134e7565b61109c91906134e7565b8110156110de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d59061361c565b60405180910390fd5b670de0b6b3a7640000816110f2919061345e565b600981905550670de0b6b3a76400008261110c919061345e565b6007819055505050565b61111e61184d565b73ffffffffffffffffffffffffffffffffffffffff1661113c610eba565b73ffffffffffffffffffffffffffffffffffffffff1614611192576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611189906133d2565b60405180910390fd5b7f00000000000000000000000061f19448eef1298414936e7aa84bf4b01bc4a45c73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611220576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611217906136ae565b60405180910390fd5b61122a8282612540565b5050565b6000806001600061123d61184d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156112fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f190613740565b60405180910390fd5b61130e61130561184d565b85858403611855565b600191505092915050565b600061132d61132661184d565b8484611a1e565b6001905092915050565b600a60009054906101000a900460ff1681565b61135261184d565b73ffffffffffffffffffffffffffffffffffffffff16611370610eba565b73ffffffffffffffffffffffffffffffffffffffff16146113c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bd906133d2565b60405180910390fd5b81600f8190555080601081905550601054600f546113e49190613352565b600e81905550600e546013819055506005600e541115611439576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114309061343e565b60405180910390fd5b5050565b61144561184d565b73ffffffffffffffffffffffffffffffffffffffff16611463610eba565b73ffffffffffffffffffffffffffffffffffffffff16146114b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b0906133d2565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516115569190612f78565b60405180910390a25050565b60075481565b600061157261184d565b73ffffffffffffffffffffffffffffffffffffffff16611590610eba565b73ffffffffffffffffffffffffffffffffffffffff16146115e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dd906133d2565b60405180910390fd5b620186a060016115f46108ff565b6115fe919061345e565b61160891906134e7565b82101561164a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611641906137d2565b60405180910390fd5b6103e860056116576108ff565b611661919061345e565b61166b91906134e7565b8211156116ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a490613864565b60405180910390fd5b8160088190555060019050919050565b600b5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b61175861184d565b73ffffffffffffffffffffffffffffffffffffffff16611776610eba565b73ffffffffffffffffffffffffffffffffffffffff16146117cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c3906133d2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361183b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611832906138f6565b60405180910390fd5b6118448161247a565b50565b60095481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bb90613988565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192a90613a1a565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a11919061301c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8490613aac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611afc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af390613b3e565b60405180910390fd5b60008103611b1557611b10838360006125e1565b612475565b611b1d610eba565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b8b5750611b5b610eba565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bc45750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bfe575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611c175750600560149054906101000a900460ff16155b15611ffa57600a60009054906101000a900460ff16611d1157601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611cd15750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611d10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0790613baa565b60405180910390fd5b5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611db45750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e5b57600754811115611dfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df590613c3c565b60405180910390fd5b600954611e0a83610c39565b82611e159190613352565b1115611e56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4d90613ca8565b60405180910390fd5b611ff9565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611efe5750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f4d57600754811115611f48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3f90613d3a565b60405180910390fd5b611ff8565b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611ff757600954611faa83610c39565b82611fb59190613352565b1115611ff6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fed90613ca8565b60405180910390fd5b5b5b5b5b600061200530610c39565b90506000600854821015905080801561202a5750600a60019054906101000a900460ff165b80156120435750600560149054906101000a900460ff16155b80156120995750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120ef5750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121455750601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612189576001600560146101000a81548160ff02191690831515021790555061216d612860565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061223f5750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561224957600090505b6000811561245c57601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156122ac57506000600e54115b15612346576122d960646122cb600e5488612a6d90919063ffffffff16565b612a8390919063ffffffff16565b9050600e54601054826122ec919061345e565b6122f691906134e7565b601260008282546123079190613352565b92505081905550600e54600f548261231f919061345e565b61232991906134e7565b6011600082825461233a9190613352565b92505081905550612438565b601660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123a157506000600b54115b15612437576123ce60646123c0600b5488612a6d90919063ffffffff16565b612a8390919063ffffffff16565b9050600b54600d54826123e1919061345e565b6123eb91906134e7565b601260008282546123fc9190613352565b92505081905550600b54600c5482612414919061345e565b61241e91906134e7565b6011600082825461242f9190613352565b925050819055505b5b600081111561244d5761244c8730836125e1565b5b80856124599190613d5a565b94505b6124678787876125e1565b601354600e81905550505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264790613aac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b690613b3e565b60405180910390fd5b6126ca838383612a99565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612750576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274790613e00565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127e39190613352565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612847919061301c565b60405180910390a361285a848484612a9e565b50505050565b600061286b30610c39565b9050600060115460125461287f9190613352565b90506000808314806128915750600082145b1561289e57505050612a6b565b60146008546128ad919061345e565b8311156128c65760146008546128c3919061345e565b92505b6000600283601254866128d9919061345e565b6128e391906134e7565b6128ed91906134e7565b905060006129048286612aa390919063ffffffff16565b9050600047905061291482612ab9565b60006129298247612aa390919063ffffffff16565b905060006129548761294660115485612a6d90919063ffffffff16565b612a8390919063ffffffff16565b9050600081836129649190613d5a565b9050600060128190555060006011819055506000861180156129865750600081115b156129d3576129958682612cf6565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56185826012546040516129ca93929190613e20565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612a1990613e88565b60006040518083038185875af1925050503d8060008114612a56576040519150601f19603f3d011682016040523d82523d6000602084013e612a5b565b606091505b5050809750505050505050505050505b565b60008183612a7b919061345e565b905092915050565b60008183612a9191906134e7565b905092915050565b505050565b505050565b60008183612ab19190613d5a565b905092915050565b6000600267ffffffffffffffff811115612ad657612ad5613e9d565b5b604051908082528060200260200182016040528015612b045781602001602082028036833780820191505090505b5090503081600081518110612b1c57612b1b613ecc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be59190613f10565b81600181518110612bf957612bf8613ecc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612c5e307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611855565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612cc0959493929190614036565b600060405180830381600087803b158015612cda57600080fd5b505af1158015612cee573d6000803e3d6000fd5b505050505050565b612d21307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611855565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401612d8896959493929190614090565b60606040518083038185885af1158015612da6573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612dcb9190614106565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e0c578082015181840152602081019050612df1565b60008484015250505050565b6000601f19601f8301169050919050565b6000612e3482612dd2565b612e3e8185612ddd565b9350612e4e818560208601612dee565b612e5781612e18565b840191505092915050565b60006020820190508181036000830152612e7c8184612e29565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612eb482612e89565b9050919050565b612ec481612ea9565b8114612ecf57600080fd5b50565b600081359050612ee181612ebb565b92915050565b6000819050919050565b612efa81612ee7565b8114612f0557600080fd5b50565b600081359050612f1781612ef1565b92915050565b60008060408385031215612f3457612f33612e84565b5b6000612f4285828601612ed2565b9250506020612f5385828601612f08565b9150509250929050565b60008115159050919050565b612f7281612f5d565b82525050565b6000602082019050612f8d6000830184612f69565b92915050565b6000819050919050565b6000612fb8612fb3612fae84612e89565b612f93565b612e89565b9050919050565b6000612fca82612f9d565b9050919050565b6000612fdc82612fbf565b9050919050565b612fec81612fd1565b82525050565b60006020820190506130076000830184612fe3565b92915050565b61301681612ee7565b82525050565b6000602082019050613031600083018461300d565b92915050565b6000806000606084860312156130505761304f612e84565b5b600061305e86828701612ed2565b935050602061306f86828701612ed2565b925050604061308086828701612f08565b9150509250925092565b61309381612ea9565b82525050565b60006020820190506130ae600083018461308a565b92915050565b600060ff82169050919050565b6130ca816130b4565b82525050565b60006020820190506130e560008301846130c1565b92915050565b60006020828403121561310157613100612e84565b5b600061310f84828501612ed2565b91505092915050565b6000806040838503121561312f5761312e612e84565b5b600061313d85828601612f08565b925050602061314e85828601612f08565b9150509250929050565b61316181612f5d565b811461316c57600080fd5b50565b60008135905061317e81613158565b92915050565b6000806040838503121561319b5761319a612e84565b5b60006131a985828601612ed2565b92505060206131ba8582860161316f565b9150509250929050565b6000602082840312156131da576131d9612e84565b5b60006131e884828501612f08565b91505092915050565b6000806040838503121561320857613207612e84565b5b600061321685828601612ed2565b925050602061322785828601612ed2565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061327857607f821691505b60208210810361328b5761328a613231565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006132ed602883612ddd565b91506132f882613291565b604082019050919050565b6000602082019050818103600083015261331c816132e0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061335d82612ee7565b915061336883612ee7565b92508282019050808211156133805761337f613323565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006133bc602083612ddd565b91506133c782613386565b602082019050919050565b600060208201905081810360008301526133eb816133af565b9050919050565b7f4d757374206b6565702066656573206174203525206f72206c65737300000000600082015250565b6000613428601c83612ddd565b9150613433826133f2565b602082019050919050565b600060208201905081810360008301526134578161341b565b9050919050565b600061346982612ee7565b915061347483612ee7565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156134ad576134ac613323565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006134f282612ee7565b91506134fd83612ee7565b92508261350d5761350c6134b8565b5b828204905092915050565b7f43616e6e6f7420736574206d617854786e206c6f776572207468616e20302e3560008201527f2500000000000000000000000000000000000000000000000000000000000000602082015250565b6000613574602183612ddd565b915061357f82613518565b604082019050919050565b600060208201905081810360008301526135a381613567565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613606602483612ddd565b9150613611826135aa565b604082019050919050565b60006020820190508181036000830152613635816135f9565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613698603983612ddd565b91506136a38261363c565b604082019050919050565b600060208201905081810360008301526136c78161368b565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061372a602583612ddd565b9150613735826136ce565b604082019050919050565b600060208201905081810360008301526137598161371d565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006137bc603583612ddd565b91506137c782613760565b604082019050919050565b600060208201905081810360008301526137eb816137af565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b600061384e603483612ddd565b9150613859826137f2565b604082019050919050565b6000602082019050818103600083015261387d81613841565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006138e0602683612ddd565b91506138eb82613884565b604082019050919050565b6000602082019050818103600083015261390f816138d3565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613972602483612ddd565b915061397d82613916565b604082019050919050565b600060208201905081810360008301526139a181613965565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a04602283612ddd565b9150613a0f826139a8565b604082019050919050565b60006020820190508181036000830152613a33816139f7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613a96602583612ddd565b9150613aa182613a3a565b604082019050919050565b60006020820190508181036000830152613ac581613a89565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613b28602383612ddd565b9150613b3382613acc565b604082019050919050565b60006020820190508181036000830152613b5781613b1b565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000613b94601683612ddd565b9150613b9f82613b5e565b602082019050919050565b60006020820190508181036000830152613bc381613b87565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000613c26603583612ddd565b9150613c3182613bca565b604082019050919050565b60006020820190508181036000830152613c5581613c19565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613c92601383612ddd565b9150613c9d82613c5c565b602082019050919050565b60006020820190508181036000830152613cc181613c85565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613d24603683612ddd565b9150613d2f82613cc8565b604082019050919050565b60006020820190508181036000830152613d5381613d17565b9050919050565b6000613d6582612ee7565b9150613d7083612ee7565b9250828203905081811115613d8857613d87613323565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613dea602683612ddd565b9150613df582613d8e565b604082019050919050565b60006020820190508181036000830152613e1981613ddd565b9050919050565b6000606082019050613e35600083018661300d565b613e42602083018561300d565b613e4f604083018461300d565b949350505050565b600081905092915050565b50565b6000613e72600083613e57565b9150613e7d82613e62565b600082019050919050565b6000613e9382613e65565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613f0a81612ebb565b92915050565b600060208284031215613f2657613f25612e84565b5b6000613f3484828501613efb565b91505092915050565b6000819050919050565b6000613f62613f5d613f5884613f3d565b612f93565b612ee7565b9050919050565b613f7281613f47565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613fad81612ea9565b82525050565b6000613fbf8383613fa4565b60208301905092915050565b6000602082019050919050565b6000613fe382613f78565b613fed8185613f83565b9350613ff883613f94565b8060005b838110156140295781516140108882613fb3565b975061401b83613fcb565b925050600181019050613ffc565b5085935050505092915050565b600060a08201905061404b600083018861300d565b6140586020830187613f69565b818103604083015261406a8186613fd8565b9050614079606083018561308a565b614086608083018461300d565b9695505050505050565b600060c0820190506140a5600083018961308a565b6140b2602083018861300d565b6140bf6040830187613f69565b6140cc6060830186613f69565b6140d9608083018561308a565b6140e660a083018461300d565b979650505050505050565b60008151905061410081612ef1565b92915050565b60008060006060848603121561411f5761411e612e84565b5b600061412d868287016140f1565b935050602061413e868287016140f1565b925050604061414f868287016140f1565b915050925092509256fea26469706673582212207637937ec030bfb6b886be45668324d80772526d444ef3fad2bf12efa9f062cf64736f6c63430008100033

Deployed Bytecode Sourcemap

14216:12232:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2752:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3666:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14294:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3073:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3843:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14397:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2972:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4343:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14352:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20287:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18863:333;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14835:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14683:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3189:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;877:112;;;;;;;;;;;;;:::i;:::-;;18688:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14489:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17551:112;;;;;;;;;;;;;:::i;:::-;;654:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2860:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18176:504;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19779:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4566:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3324:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14643:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19204:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19589:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14528:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17671:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14723:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3507:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14570:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;997:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14610:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2752:100;2806:13;2839:5;2832:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2752:100;:::o;3666:169::-;3749:4;3766:39;3775:12;:10;:12::i;:::-;3789:7;3798:6;3766:8;:39::i;:::-;3823:4;3816:11;;3666:169;;;;:::o;14294:51::-;;;:::o;3073:108::-;3134:7;3161:12;;3154:19;;3073:108;:::o;3843:492::-;3983:4;4000:36;4010:6;4018:9;4029:6;4000:9;:36::i;:::-;4049:24;4076:11;:19;4088:6;4076:19;;;;;;;;;;;;;;;:33;4096:12;:10;:12::i;:::-;4076:33;;;;;;;;;;;;;;;;4049:60;;4148:6;4128:16;:26;;4120:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4235:57;4244:6;4252:12;:10;:12::i;:::-;4285:6;4266:16;:25;4235:8;:57::i;:::-;4323:4;4316:11;;;3843:492;;;;;:::o;14397:53::-;14443:6;14397:53;:::o;2972:93::-;3030:5;3055:2;3048:9;;2972:93;:::o;4343:215::-;4431:4;4448:80;4457:12;:10;:12::i;:::-;4471:7;4517:10;4480:11;:25;4492:12;:10;:12::i;:::-;4480:25;;;;;;;;;;;;;;;:34;4506:7;4480:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4448:8;:80::i;:::-;4546:4;4539:11;;4343:215;;;;:::o;14352:38::-;;;:::o;20287:126::-;20353:4;20377:19;:28;20397:7;20377:28;;;;;;;;;;;;;;;;;;;;;;;;;20370:35;;20287:126;;;:::o;18863:333::-;800:12;:10;:12::i;:::-;789:23;;:7;:5;:7::i;:::-;:23;;;781:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19005:13:::1;18987:15;:31;;;;19047:13;19029:15;:31;;;;19104:15;;19086;;:33;;;;:::i;:::-;19071:12;:48;;;;19154:1;19138:12;;:17;;19130:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;18863:333:::0;;:::o;14835:28::-;;;;:::o;14683:31::-;;;;;;;;;;;;;:::o;3189:127::-;3263:7;3290:9;:18;3300:7;3290:18;;;;;;;;;;;;;;;;3283:25;;3189:127;;;:::o;877:112::-;800:12;:10;:12::i;:::-;789:23;;:7;:5;:7::i;:::-;:23;;;781:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;951:30:::1;978:1;951:18;:30::i;:::-;877:112::o:0;18688:167::-;800:12;:10;:12::i;:::-;789:23;;:7;:5;:7::i;:::-;:23;;;781:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18843:4:::1;18801:31;:39;18833:6;18801:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;18688:167:::0;;:::o;14489:30::-;;;;;;;;;;;;;:::o;17551:112::-;800:12;:10;:12::i;:::-;789:23;;:7;:5;:7::i;:::-;:23;;;781:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17622:4:::1;17606:13;;:20;;;;;;;;;;;;;;;;;;17651:4;17637:11;;:18;;;;;;;;;;;;;;;;;;17551:112::o:0;654:87::-;700:7;727:6;;;;;;;;;;;720:13;;654:87;:::o;2860:104::-;2916:13;2949:7;2942:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2860:104;:::o;18176:504::-;800:12;:10;:12::i;:::-;789:23;;:7;:5;:7::i;:::-;:23;;;781:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18353:4:::1;18345;18340:1;18324:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18323:26;;;;:::i;:::-;18322:35;;;;:::i;:::-;18309:9;:48;;18287:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;18501:4;18493;18488:1;18472:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18471:26;;;;:::i;:::-;18470:35;;;;:::i;:::-;18451:15;:54;;18429:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;18611:6;18592:15;:26;;;;:::i;:::-;18580:9;:38;;;;18665:6;18652:9;:20;;;;:::i;:::-;18629;:43;;;;18176:504:::0;;:::o;19779:304::-;800:12;:10;:12::i;:::-;789:23;;:7;:5;:7::i;:::-;:23;;;781:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19923:13:::1;19915:21;;:4;:21;;::::0;19893:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20034:41;20063:4;20069:5;20034:28;:41::i;:::-;19779:304:::0;;:::o;4566:413::-;4659:4;4676:24;4703:11;:25;4715:12;:10;:12::i;:::-;4703:25;;;;;;;;;;;;;;;:34;4729:7;4703:34;;;;;;;;;;;;;;;;4676:61;;4776:15;4756:16;:35;;4748:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4869:67;4878:12;:10;:12::i;:::-;4892:7;4920:15;4901:16;:34;4869:8;:67::i;:::-;4967:4;4960:11;;;4566:413;;;;:::o;3324:175::-;3410:4;3427:42;3437:12;:10;:12::i;:::-;3451:9;3462:6;3427:9;:42::i;:::-;3487:4;3480:11;;3324:175;;;;:::o;14643:33::-;;;;;;;;;;;;;:::o;19204:377::-;800:12;:10;:12::i;:::-;789:23;;:7;:5;:7::i;:::-;:23;;;781:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19347:13:::1;19328:16;:32;;;;19390:13;19371:16;:32;;;;19449:16;;19430;;:35;;;;:::i;:::-;19414:13;:51;;;;19490:13;;19476:11;:27;;;;19539:1;19522:13;;:18;;19514:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;19204:377:::0;;:::o;19589:182::-;800:12;:10;:12::i;:::-;789:23;;:7;:5;:7::i;:::-;:23;;;781:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19705:8:::1;19674:19;:28;19694:7;19674:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;19745:7;19729:34;;;19754:8;19729:34;;;;;;:::i;:::-;;;;;;;;19589:182:::0;;:::o;14528:35::-;;;;:::o;17671:497::-;17779:4;800:12;:10;:12::i;:::-;789:23;;:7;:5;:7::i;:::-;:23;;;781:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17858:6:::1;17853:1;17837:13;:11;:13::i;:::-;:17;;;;:::i;:::-;17836:28;;;;:::i;:::-;17823:9;:41;;17801:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;18013:4;18008:1;17992:13;:11;:13::i;:::-;:17;;;;:::i;:::-;17991:26;;;;:::i;:::-;17978:9;:39;;17956:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;18129:9;18108:18;:30;;;;18156:4;18149:11;;17671:497:::0;;;:::o;14723:27::-;;;;:::o;3507:151::-;3596:7;3623:11;:18;3635:5;3623:18;;;;;;;;;;;;;;;:27;3642:7;3623:27;;;;;;;;;;;;;;;;3616:34;;3507:151;;;;:::o;14570:33::-;;;;:::o;997:201::-;800:12;:10;:12::i;:::-;789:23;;:7;:5;:7::i;:::-;:23;;;781:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1106:1:::1;1086:22;;:8;:22;;::::0;1078:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1162:28;1181:8;1162:18;:28::i;:::-;997:201:::0;:::o;14610:24::-;;;;:::o;200:98::-;253:7;280:10;273:17;;200:98;:::o;6135:380::-;6288:1;6271:19;;:5;:19;;;6263:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6369:1;6350:21;;:7;:21;;;6342:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6453:6;6423:11;:18;6435:5;6423:18;;;;;;;;;;;;;;;:27;6442:7;6423:27;;;;;;;;;;;;;;;:36;;;;6491:7;6475:32;;6484:5;6475:32;;;6500:6;6475:32;;;;;;:::i;:::-;;;;;;;;6135:380;;;:::o;20421:3667::-;20569:1;20553:18;;:4;:18;;;20545:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20646:1;20632:16;;:2;:16;;;20624:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;20715:1;20705:6;:11;20701:93;;20733:28;20749:4;20755:2;20759:1;20733:15;:28::i;:::-;20776:7;;20701:93;20844:7;:5;:7::i;:::-;20836:15;;:4;:15;;;;:49;;;;;20878:7;:5;:7::i;:::-;20872:13;;:2;:13;;;;20836:49;:86;;;;;20920:1;20906:16;;:2;:16;;;;20836:86;:128;;;;;20957:6;20943:21;;:2;:21;;;;20836:128;:158;;;;;20986:8;;;;;;;;;;;20985:9;20836:158;20814:1684;;;21034:13;;;;;;;;;;;21029:223;;21106:19;:25;21126:4;21106:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;21135:19;:23;21155:2;21135:23;;;;;;;;;;;;;;;;;;;;;;;;;21106:52;21072:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;21029:223;21326:25;:31;21352:4;21326:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;21383:31;:35;21415:2;21383:35;;;;;;;;;;;;;;;;;;;;;;;;;21382:36;21326:92;21300:1183;;;21505:20;;21495:6;:30;;21461:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;21713:9;;21696:13;21706:2;21696:9;:13::i;:::-;21687:6;:22;;;;:::i;:::-;:35;;21653:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;21300:1183;;;21891:25;:29;21917:2;21891:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;21946:31;:37;21978:4;21946:37;;;;;;;;;;;;;;;;;;;;;;;;;21945:38;21891:92;21865:618;;;22070:20;;22060:6;:30;;22026:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;21865:618;;;22263:31;:35;22295:2;22263:35;;;;;;;;;;;;;;;;;;;;;;;;;22258:225;;22383:9;;22366:13;22376:2;22366:9;:13::i;:::-;22357:6;:22;;;;:::i;:::-;:35;;22323:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;22258:225;21865:618;21300:1183;20814:1684;22510:28;22541:24;22559:4;22541:9;:24::i;:::-;22510:55;;22578:12;22617:18;;22593:20;:42;;22578:57;;22666:7;:35;;;;;22690:11;;;;;;;;;;;22666:35;:61;;;;;22719:8;;;;;;;;;;;22718:9;22666:61;:110;;;;;22745:25;:31;22771:4;22745:31;;;;;;;;;;;;;;;;;;;;;;;;;22744:32;22666:110;:153;;;;;22794:19;:25;22814:4;22794:25;;;;;;;;;;;;;;;;;;;;;;;;;22793:26;22666:153;:194;;;;;22837:19;:23;22857:2;22837:23;;;;;;;;;;;;;;;;;;;;;;;;;22836:24;22666:194;22648:326;;;22898:4;22887:8;;:15;;;;;;;;;;;;;;;;;;22919:10;:8;:10::i;:::-;22957:5;22946:8;;:16;;;;;;;;;;;;;;;;;;22648:326;22986:12;23002:8;;;;;;;;;;;23001:9;22986:24;;23027:19;:25;23047:4;23027:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;23056:19;:23;23076:2;23056:23;;;;;;;;;;;;;;;;;;;;;;;;;23027:52;23023:100;;;23106:5;23096:15;;23023:100;23135:12;23168:7;23164:831;;;23220:25;:29;23246:2;23220:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;23269:1;23253:13;;:17;23220:50;23216:630;;;23298:34;23328:3;23298:25;23309:13;;23298:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;23291:41;;23401:13;;23381:16;;23374:4;:23;;;;:::i;:::-;23373:41;;;;:::i;:::-;23351:18;;:63;;;;;;;:::i;:::-;;;;;;;;23483:13;;23463:16;;23456:4;:23;;;;:::i;:::-;23455:41;;;;:::i;:::-;23433:18;;:63;;;;;;;:::i;:::-;;;;;;;;23216:630;;;23558:25;:31;23584:4;23558:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;23608:1;23593:12;;:16;23558:51;23554:292;;;23637:33;23666:3;23637:24;23648:12;;23637:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;23630:40;;23738:12;;23719:15;;23712:4;:22;;;;:::i;:::-;23711:39;;;;:::i;:::-;23689:18;;:61;;;;;;;:::i;:::-;;;;;;;;23818:12;;23799:15;;23792:4;:22;;;;:::i;:::-;23791:39;;;;:::i;:::-;23769:18;;:61;;;;;;;:::i;:::-;;;;;;;;23554:292;23216:630;23873:1;23866:4;:8;23862:91;;;23895:42;23911:4;23925;23932;23895:15;:42::i;:::-;23862:91;23979:4;23969:14;;;;;:::i;:::-;;;23164:831;24007:33;24023:4;24029:2;24033:6;24007:15;:33::i;:::-;24067:11;;24051:13;:27;;;;20534:3554;;;;20421:3667;;;;:::o;1206:191::-;1280:16;1299:6;;;;;;;;;;;1280:25;;1325:8;1316:6;;:17;;;;;;;;;;;;;;;;;;1380:8;1349:40;;1370:8;1349:40;;;;;;;;;;;;1269:128;1206:191;:::o;20091:188::-;20208:5;20174:25;:31;20200:4;20174:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;20265:5;20231:40;;20259:4;20231:40;;;;;;;;;;;;20091:188;;:::o;4987:733::-;5145:1;5127:20;;:6;:20;;;5119:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5229:1;5208:23;;:9;:23;;;5200:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5284:47;5305:6;5313:9;5324:6;5284:20;:47::i;:::-;5344:21;5368:9;:17;5378:6;5368:17;;;;;;;;;;;;;;;;5344:41;;5421:6;5404:13;:23;;5396:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5542:6;5526:13;:22;5506:9;:17;5516:6;5506:17;;;;;;;;;;;;;;;:42;;;;5594:6;5570:9;:20;5580:9;5570:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5635:9;5618:35;;5627:6;5618:35;;;5646:6;5618:35;;;;;;:::i;:::-;;;;;;;;5666:46;5686:6;5694:9;5705:6;5666:19;:46::i;:::-;5108:612;4987:733;;;:::o;24983:1462::-;25022:23;25048:24;25066:4;25048:9;:24::i;:::-;25022:50;;25083:25;25145:18;;25111;;:52;;;;:::i;:::-;25083:80;;25174:12;25222:1;25203:15;:20;:46;;;;25248:1;25227:17;:22;25203:46;25199:85;;;25266:7;;;;;25199:85;25339:2;25318:18;;:23;;;;:::i;:::-;25300:15;:41;25296:115;;;25397:2;25376:18;;:23;;;;:::i;:::-;25358:41;;25296:115;25423:23;25536:1;25503:17;25468:18;;25450:15;:36;;;;:::i;:::-;25449:71;;;;:::i;:::-;:88;;;;:::i;:::-;25423:114;;25548:26;25577:36;25597:15;25577;:19;;:36;;;;:::i;:::-;25548:65;;25626:25;25654:21;25626:49;;25688:36;25705:18;25688:16;:36::i;:::-;25737:18;25758:44;25784:17;25758:21;:25;;:44;;;;:::i;:::-;25737:65;;25815:23;25841:81;25894:17;25841:34;25856:18;;25841:10;:14;;:34;;;;:::i;:::-;:38;;:81;;;;:::i;:::-;25815:107;;25935:23;25974:15;25961:10;:28;;;;:::i;:::-;25935:54;;26023:1;26002:18;:22;;;;26056:1;26035:18;:22;;;;26092:1;26074:15;:19;:42;;;;;26115:1;26097:15;:19;26074:42;26070:278;;;26133:46;26146:15;26163;26133:12;:46::i;:::-;26199:137;26232:18;26269:15;26303:18;;26199:137;;;;;;;;:::i;:::-;;;;;;;;26070:278;26382:15;;;;;;;;;;;26374:29;;26411:21;26374:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26360:77;;;;;25011:1434;;;;;;;;;24983:1462;:::o;8141:98::-;8199:7;8230:1;8226;:5;;;;:::i;:::-;8219:12;;8141:98;;;;:::o;8247:::-;8305:7;8336:1;8332;:5;;;;:::i;:::-;8325:12;;8247:98;;;;:::o;6523:125::-;;;;:::o;6656:124::-;;;;:::o;8035:98::-;8093:7;8124:1;8120;:5;;;;:::i;:::-;8113:12;;8035:98;;;;:::o;24096:503::-;24164:21;24202:1;24188:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24164:40;;24233:4;24215;24220:1;24215:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;24259:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24249:4;24254:1;24249:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;24294:62;24311:4;24326:15;24344:11;24294:8;:62::i;:::-;24395:15;:66;;;24476:11;24502:1;24518:4;24545;24565:15;24395:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24151:448;24096:503;:::o;24607:368::-;24690:62;24707:4;24722:15;24740:11;24690:8;:62::i;:::-;24765:15;:31;;;24804:9;24837:4;24857:11;24883:1;24899;14443:6;24941:15;24765:202;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24607:368;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:153::-;3869:9;3902:37;3933:5;3902:37;:::i;:::-;3889:50;;3792:153;;;:::o;3951:185::-;4065:64;4123:5;4065:64;:::i;:::-;4060:3;4053:77;3951:185;;:::o;4142:276::-;4262:4;4300:2;4289:9;4285:18;4277:26;;4313:98;4408:1;4397:9;4393:17;4384:6;4313:98;:::i;:::-;4142:276;;;;:::o;4424:118::-;4511:24;4529:5;4511:24;:::i;:::-;4506:3;4499:37;4424:118;;:::o;4548:222::-;4641:4;4679:2;4668:9;4664:18;4656:26;;4692:71;4760:1;4749:9;4745:17;4736:6;4692:71;:::i;:::-;4548:222;;;;:::o;4776:619::-;4853:6;4861;4869;4918:2;4906:9;4897:7;4893:23;4889:32;4886:119;;;4924:79;;:::i;:::-;4886:119;5044:1;5069:53;5114:7;5105:6;5094:9;5090:22;5069:53;:::i;:::-;5059:63;;5015:117;5171:2;5197:53;5242:7;5233:6;5222:9;5218:22;5197:53;:::i;:::-;5187:63;;5142:118;5299:2;5325:53;5370:7;5361:6;5350:9;5346:22;5325:53;:::i;:::-;5315:63;;5270:118;4776:619;;;;;:::o;5401:118::-;5488:24;5506:5;5488:24;:::i;:::-;5483:3;5476:37;5401:118;;:::o;5525:222::-;5618:4;5656:2;5645:9;5641:18;5633:26;;5669:71;5737:1;5726:9;5722:17;5713:6;5669:71;:::i;:::-;5525:222;;;;:::o;5753:86::-;5788:7;5828:4;5821:5;5817:16;5806:27;;5753:86;;;:::o;5845:112::-;5928:22;5944:5;5928:22;:::i;:::-;5923:3;5916:35;5845:112;;:::o;5963:214::-;6052:4;6090:2;6079:9;6075:18;6067:26;;6103:67;6167:1;6156:9;6152:17;6143:6;6103:67;:::i;:::-;5963:214;;;;:::o;6183:329::-;6242:6;6291:2;6279:9;6270:7;6266:23;6262:32;6259:119;;;6297:79;;:::i;:::-;6259:119;6417:1;6442:53;6487:7;6478:6;6467:9;6463:22;6442:53;:::i;:::-;6432:63;;6388:117;6183:329;;;;:::o;6518:474::-;6586:6;6594;6643:2;6631:9;6622:7;6618:23;6614:32;6611:119;;;6649:79;;:::i;:::-;6611:119;6769:1;6794:53;6839:7;6830:6;6819:9;6815:22;6794:53;:::i;:::-;6784:63;;6740:117;6896:2;6922:53;6967:7;6958:6;6947:9;6943:22;6922:53;:::i;:::-;6912:63;;6867:118;6518:474;;;;;:::o;6998:116::-;7068:21;7083:5;7068:21;:::i;:::-;7061:5;7058:32;7048:60;;7104:1;7101;7094:12;7048:60;6998:116;:::o;7120:133::-;7163:5;7201:6;7188:20;7179:29;;7217:30;7241:5;7217:30;:::i;:::-;7120:133;;;;:::o;7259:468::-;7324:6;7332;7381:2;7369:9;7360:7;7356:23;7352:32;7349:119;;;7387:79;;:::i;:::-;7349:119;7507:1;7532:53;7577:7;7568:6;7557:9;7553:22;7532:53;:::i;:::-;7522:63;;7478:117;7634:2;7660:50;7702:7;7693:6;7682:9;7678:22;7660:50;:::i;:::-;7650:60;;7605:115;7259:468;;;;;:::o;7733:329::-;7792:6;7841:2;7829:9;7820:7;7816:23;7812:32;7809:119;;;7847:79;;:::i;:::-;7809:119;7967:1;7992:53;8037:7;8028:6;8017:9;8013:22;7992:53;:::i;:::-;7982:63;;7938:117;7733:329;;;;:::o;8068:474::-;8136:6;8144;8193:2;8181:9;8172:7;8168:23;8164:32;8161:119;;;8199:79;;:::i;:::-;8161:119;8319:1;8344:53;8389:7;8380:6;8369:9;8365:22;8344:53;:::i;:::-;8334:63;;8290:117;8446:2;8472:53;8517:7;8508:6;8497:9;8493:22;8472:53;:::i;:::-;8462:63;;8417:118;8068:474;;;;;:::o;8548:180::-;8596:77;8593:1;8586:88;8693:4;8690:1;8683:15;8717:4;8714:1;8707:15;8734:320;8778:6;8815:1;8809:4;8805:12;8795:22;;8862:1;8856:4;8852:12;8883:18;8873:81;;8939:4;8931:6;8927:17;8917:27;;8873:81;9001:2;8993:6;8990:14;8970:18;8967:38;8964:84;;9020:18;;:::i;:::-;8964:84;8785:269;8734:320;;;:::o;9060:227::-;9200:34;9196:1;9188:6;9184:14;9177:58;9269:10;9264:2;9256:6;9252:15;9245:35;9060:227;:::o;9293:366::-;9435:3;9456:67;9520:2;9515:3;9456:67;:::i;:::-;9449:74;;9532:93;9621:3;9532:93;:::i;:::-;9650:2;9645:3;9641:12;9634:19;;9293:366;;;:::o;9665:419::-;9831:4;9869:2;9858:9;9854:18;9846:26;;9918:9;9912:4;9908:20;9904:1;9893:9;9889:17;9882:47;9946:131;10072:4;9946:131;:::i;:::-;9938:139;;9665:419;;;:::o;10090:180::-;10138:77;10135:1;10128:88;10235:4;10232:1;10225:15;10259:4;10256:1;10249:15;10276:191;10316:3;10335:20;10353:1;10335:20;:::i;:::-;10330:25;;10369:20;10387:1;10369:20;:::i;:::-;10364:25;;10412:1;10409;10405:9;10398:16;;10433:3;10430:1;10427:10;10424:36;;;10440:18;;:::i;:::-;10424:36;10276:191;;;;:::o;10473:182::-;10613:34;10609:1;10601:6;10597:14;10590:58;10473:182;:::o;10661:366::-;10803:3;10824:67;10888:2;10883:3;10824:67;:::i;:::-;10817:74;;10900:93;10989:3;10900:93;:::i;:::-;11018:2;11013:3;11009:12;11002:19;;10661:366;;;:::o;11033:419::-;11199:4;11237:2;11226:9;11222:18;11214:26;;11286:9;11280:4;11276:20;11272:1;11261:9;11257:17;11250:47;11314:131;11440:4;11314:131;:::i;:::-;11306:139;;11033:419;;;:::o;11458:178::-;11598:30;11594:1;11586:6;11582:14;11575:54;11458:178;:::o;11642:366::-;11784:3;11805:67;11869:2;11864:3;11805:67;:::i;:::-;11798:74;;11881:93;11970:3;11881:93;:::i;:::-;11999:2;11994:3;11990:12;11983:19;;11642:366;;;:::o;12014:419::-;12180:4;12218:2;12207:9;12203:18;12195:26;;12267:9;12261:4;12257:20;12253:1;12242:9;12238:17;12231:47;12295:131;12421:4;12295:131;:::i;:::-;12287:139;;12014:419;;;:::o;12439:348::-;12479:7;12502:20;12520:1;12502:20;:::i;:::-;12497:25;;12536:20;12554:1;12536:20;:::i;:::-;12531:25;;12724:1;12656:66;12652:74;12649:1;12646:81;12641:1;12634:9;12627:17;12623:105;12620:131;;;12731:18;;:::i;:::-;12620:131;12779:1;12776;12772:9;12761:20;;12439:348;;;;:::o;12793:180::-;12841:77;12838:1;12831:88;12938:4;12935:1;12928:15;12962:4;12959:1;12952:15;12979:185;13019:1;13036:20;13054:1;13036:20;:::i;:::-;13031:25;;13070:20;13088:1;13070:20;:::i;:::-;13065:25;;13109:1;13099:35;;13114:18;;:::i;:::-;13099:35;13156:1;13153;13149:9;13144:14;;12979:185;;;;:::o;13170:220::-;13310:34;13306:1;13298:6;13294:14;13287:58;13379:3;13374:2;13366:6;13362:15;13355:28;13170:220;:::o;13396:366::-;13538:3;13559:67;13623:2;13618:3;13559:67;:::i;:::-;13552:74;;13635:93;13724:3;13635:93;:::i;:::-;13753:2;13748:3;13744:12;13737:19;;13396:366;;;:::o;13768:419::-;13934:4;13972:2;13961:9;13957:18;13949:26;;14021:9;14015:4;14011:20;14007:1;13996:9;13992:17;13985:47;14049:131;14175:4;14049:131;:::i;:::-;14041:139;;13768:419;;;:::o;14193:223::-;14333:34;14329:1;14321:6;14317:14;14310:58;14402:6;14397:2;14389:6;14385:15;14378:31;14193:223;:::o;14422:366::-;14564:3;14585:67;14649:2;14644:3;14585:67;:::i;:::-;14578:74;;14661:93;14750:3;14661:93;:::i;:::-;14779:2;14774:3;14770:12;14763:19;;14422:366;;;:::o;14794:419::-;14960:4;14998:2;14987:9;14983:18;14975:26;;15047:9;15041:4;15037:20;15033:1;15022:9;15018:17;15011:47;15075:131;15201:4;15075:131;:::i;:::-;15067:139;;14794:419;;;:::o;15219:244::-;15359:34;15355:1;15347:6;15343:14;15336:58;15428:27;15423:2;15415:6;15411:15;15404:52;15219:244;:::o;15469:366::-;15611:3;15632:67;15696:2;15691:3;15632:67;:::i;:::-;15625:74;;15708:93;15797:3;15708:93;:::i;:::-;15826:2;15821:3;15817:12;15810:19;;15469:366;;;:::o;15841:419::-;16007:4;16045:2;16034:9;16030:18;16022:26;;16094:9;16088:4;16084:20;16080:1;16069:9;16065:17;16058:47;16122:131;16248:4;16122:131;:::i;:::-;16114:139;;15841:419;;;:::o;16266:224::-;16406:34;16402:1;16394:6;16390:14;16383:58;16475:7;16470:2;16462:6;16458:15;16451:32;16266:224;:::o;16496:366::-;16638:3;16659:67;16723:2;16718:3;16659:67;:::i;:::-;16652:74;;16735:93;16824:3;16735:93;:::i;:::-;16853:2;16848:3;16844:12;16837:19;;16496:366;;;:::o;16868:419::-;17034:4;17072:2;17061:9;17057:18;17049:26;;17121:9;17115:4;17111:20;17107:1;17096:9;17092:17;17085:47;17149:131;17275:4;17149:131;:::i;:::-;17141:139;;16868:419;;;:::o;17293:240::-;17433:34;17429:1;17421:6;17417:14;17410:58;17502:23;17497:2;17489:6;17485:15;17478:48;17293:240;:::o;17539:366::-;17681:3;17702:67;17766:2;17761:3;17702:67;:::i;:::-;17695:74;;17778:93;17867:3;17778:93;:::i;:::-;17896:2;17891:3;17887:12;17880:19;;17539:366;;;:::o;17911:419::-;18077:4;18115:2;18104:9;18100:18;18092:26;;18164:9;18158:4;18154:20;18150:1;18139:9;18135:17;18128:47;18192:131;18318:4;18192:131;:::i;:::-;18184:139;;17911:419;;;:::o;18336:239::-;18476:34;18472:1;18464:6;18460:14;18453:58;18545:22;18540:2;18532:6;18528:15;18521:47;18336:239;:::o;18581:366::-;18723:3;18744:67;18808:2;18803:3;18744:67;:::i;:::-;18737:74;;18820:93;18909:3;18820:93;:::i;:::-;18938:2;18933:3;18929:12;18922:19;;18581:366;;;:::o;18953:419::-;19119:4;19157:2;19146:9;19142:18;19134:26;;19206:9;19200:4;19196:20;19192:1;19181:9;19177:17;19170:47;19234:131;19360:4;19234:131;:::i;:::-;19226:139;;18953:419;;;:::o;19378:225::-;19518:34;19514:1;19506:6;19502:14;19495:58;19587:8;19582:2;19574:6;19570:15;19563:33;19378:225;:::o;19609:366::-;19751:3;19772:67;19836:2;19831:3;19772:67;:::i;:::-;19765:74;;19848:93;19937:3;19848:93;:::i;:::-;19966:2;19961:3;19957:12;19950:19;;19609:366;;;:::o;19981:419::-;20147:4;20185:2;20174:9;20170:18;20162:26;;20234:9;20228:4;20224:20;20220:1;20209:9;20205:17;20198:47;20262:131;20388:4;20262:131;:::i;:::-;20254:139;;19981:419;;;:::o;20406:223::-;20546:34;20542:1;20534:6;20530:14;20523:58;20615:6;20610:2;20602:6;20598:15;20591:31;20406:223;:::o;20635:366::-;20777:3;20798:67;20862:2;20857:3;20798:67;:::i;:::-;20791:74;;20874:93;20963:3;20874:93;:::i;:::-;20992:2;20987:3;20983:12;20976:19;;20635:366;;;:::o;21007:419::-;21173:4;21211:2;21200:9;21196:18;21188:26;;21260:9;21254:4;21250:20;21246:1;21235:9;21231:17;21224:47;21288:131;21414:4;21288:131;:::i;:::-;21280:139;;21007:419;;;:::o;21432:221::-;21572:34;21568:1;21560:6;21556:14;21549:58;21641:4;21636:2;21628:6;21624:15;21617:29;21432:221;:::o;21659:366::-;21801:3;21822:67;21886:2;21881:3;21822:67;:::i;:::-;21815:74;;21898:93;21987:3;21898:93;:::i;:::-;22016:2;22011:3;22007:12;22000:19;;21659:366;;;:::o;22031:419::-;22197:4;22235:2;22224:9;22220:18;22212:26;;22284:9;22278:4;22274:20;22270:1;22259:9;22255:17;22248:47;22312:131;22438:4;22312:131;:::i;:::-;22304:139;;22031:419;;;:::o;22456:224::-;22596:34;22592:1;22584:6;22580:14;22573:58;22665:7;22660:2;22652:6;22648:15;22641:32;22456:224;:::o;22686:366::-;22828:3;22849:67;22913:2;22908:3;22849:67;:::i;:::-;22842:74;;22925:93;23014:3;22925:93;:::i;:::-;23043:2;23038:3;23034:12;23027:19;;22686:366;;;:::o;23058:419::-;23224:4;23262:2;23251:9;23247:18;23239:26;;23311:9;23305:4;23301:20;23297:1;23286:9;23282:17;23275:47;23339:131;23465:4;23339:131;:::i;:::-;23331:139;;23058:419;;;:::o;23483:222::-;23623:34;23619:1;23611:6;23607:14;23600:58;23692:5;23687:2;23679:6;23675:15;23668:30;23483:222;:::o;23711:366::-;23853:3;23874:67;23938:2;23933:3;23874:67;:::i;:::-;23867:74;;23950:93;24039:3;23950:93;:::i;:::-;24068:2;24063:3;24059:12;24052:19;;23711:366;;;:::o;24083:419::-;24249:4;24287:2;24276:9;24272:18;24264:26;;24336:9;24330:4;24326:20;24322:1;24311:9;24307:17;24300:47;24364:131;24490:4;24364:131;:::i;:::-;24356:139;;24083:419;;;:::o;24508:172::-;24648:24;24644:1;24636:6;24632:14;24625:48;24508:172;:::o;24686:366::-;24828:3;24849:67;24913:2;24908:3;24849:67;:::i;:::-;24842:74;;24925:93;25014:3;24925:93;:::i;:::-;25043:2;25038:3;25034:12;25027:19;;24686:366;;;:::o;25058:419::-;25224:4;25262:2;25251:9;25247:18;25239:26;;25311:9;25305:4;25301:20;25297:1;25286:9;25282:17;25275:47;25339:131;25465:4;25339:131;:::i;:::-;25331:139;;25058:419;;;:::o;25483:240::-;25623:34;25619:1;25611:6;25607:14;25600:58;25692:23;25687:2;25679:6;25675:15;25668:48;25483:240;:::o;25729:366::-;25871:3;25892:67;25956:2;25951:3;25892:67;:::i;:::-;25885:74;;25968:93;26057:3;25968:93;:::i;:::-;26086:2;26081:3;26077:12;26070:19;;25729:366;;;:::o;26101:419::-;26267:4;26305:2;26294:9;26290:18;26282:26;;26354:9;26348:4;26344:20;26340:1;26329:9;26325:17;26318:47;26382:131;26508:4;26382:131;:::i;:::-;26374:139;;26101:419;;;:::o;26526:169::-;26666:21;26662:1;26654:6;26650:14;26643:45;26526:169;:::o;26701:366::-;26843:3;26864:67;26928:2;26923:3;26864:67;:::i;:::-;26857:74;;26940:93;27029:3;26940:93;:::i;:::-;27058:2;27053:3;27049:12;27042:19;;26701:366;;;:::o;27073:419::-;27239:4;27277:2;27266:9;27262:18;27254:26;;27326:9;27320:4;27316:20;27312:1;27301:9;27297:17;27290:47;27354:131;27480:4;27354:131;:::i;:::-;27346:139;;27073:419;;;:::o;27498:241::-;27638:34;27634:1;27626:6;27622:14;27615:58;27707:24;27702:2;27694:6;27690:15;27683:49;27498:241;:::o;27745:366::-;27887:3;27908:67;27972:2;27967:3;27908:67;:::i;:::-;27901:74;;27984:93;28073:3;27984:93;:::i;:::-;28102:2;28097:3;28093:12;28086:19;;27745:366;;;:::o;28117:419::-;28283:4;28321:2;28310:9;28306:18;28298:26;;28370:9;28364:4;28360:20;28356:1;28345:9;28341:17;28334:47;28398:131;28524:4;28398:131;:::i;:::-;28390:139;;28117:419;;;:::o;28542:194::-;28582:4;28602:20;28620:1;28602:20;:::i;:::-;28597:25;;28636:20;28654:1;28636:20;:::i;:::-;28631:25;;28680:1;28677;28673:9;28665:17;;28704:1;28698:4;28695:11;28692:37;;;28709:18;;:::i;:::-;28692:37;28542:194;;;;:::o;28742:225::-;28882:34;28878:1;28870:6;28866:14;28859:58;28951:8;28946:2;28938:6;28934:15;28927:33;28742:225;:::o;28973:366::-;29115:3;29136:67;29200:2;29195:3;29136:67;:::i;:::-;29129:74;;29212:93;29301:3;29212:93;:::i;:::-;29330:2;29325:3;29321:12;29314:19;;28973:366;;;:::o;29345:419::-;29511:4;29549:2;29538:9;29534:18;29526:26;;29598:9;29592:4;29588:20;29584:1;29573:9;29569:17;29562:47;29626:131;29752:4;29626:131;:::i;:::-;29618:139;;29345:419;;;:::o;29770:442::-;29919:4;29957:2;29946:9;29942:18;29934:26;;29970:71;30038:1;30027:9;30023:17;30014:6;29970:71;:::i;:::-;30051:72;30119:2;30108:9;30104:18;30095:6;30051:72;:::i;:::-;30133;30201:2;30190:9;30186:18;30177:6;30133:72;:::i;:::-;29770:442;;;;;;:::o;30218:147::-;30319:11;30356:3;30341:18;;30218:147;;;;:::o;30371:114::-;;:::o;30491:398::-;30650:3;30671:83;30752:1;30747:3;30671:83;:::i;:::-;30664:90;;30763:93;30852:3;30763:93;:::i;:::-;30881:1;30876:3;30872:11;30865:18;;30491:398;;;:::o;30895:379::-;31079:3;31101:147;31244:3;31101:147;:::i;:::-;31094:154;;31265:3;31258:10;;30895:379;;;:::o;31280:180::-;31328:77;31325:1;31318:88;31425:4;31422:1;31415:15;31449:4;31446:1;31439:15;31466:180;31514:77;31511:1;31504:88;31611:4;31608:1;31601:15;31635:4;31632:1;31625:15;31652:143;31709:5;31740:6;31734:13;31725:22;;31756:33;31783:5;31756:33;:::i;:::-;31652:143;;;;:::o;31801:351::-;31871:6;31920:2;31908:9;31899:7;31895:23;31891:32;31888:119;;;31926:79;;:::i;:::-;31888:119;32046:1;32071:64;32127:7;32118:6;32107:9;32103:22;32071:64;:::i;:::-;32061:74;;32017:128;31801:351;;;;:::o;32158:85::-;32203:7;32232:5;32221:16;;32158:85;;;:::o;32249:158::-;32307:9;32340:61;32358:42;32367:32;32393:5;32367:32;:::i;:::-;32358:42;:::i;:::-;32340:61;:::i;:::-;32327:74;;32249:158;;;:::o;32413:147::-;32508:45;32547:5;32508:45;:::i;:::-;32503:3;32496:58;32413:147;;:::o;32566:114::-;32633:6;32667:5;32661:12;32651:22;;32566:114;;;:::o;32686:184::-;32785:11;32819:6;32814:3;32807:19;32859:4;32854:3;32850:14;32835:29;;32686:184;;;;:::o;32876:132::-;32943:4;32966:3;32958:11;;32996:4;32991:3;32987:14;32979:22;;32876:132;;;:::o;33014:108::-;33091:24;33109:5;33091:24;:::i;:::-;33086:3;33079:37;33014:108;;:::o;33128:179::-;33197:10;33218:46;33260:3;33252:6;33218:46;:::i;:::-;33296:4;33291:3;33287:14;33273:28;;33128:179;;;;:::o;33313:113::-;33383:4;33415;33410:3;33406:14;33398:22;;33313:113;;;:::o;33462:732::-;33581:3;33610:54;33658:5;33610:54;:::i;:::-;33680:86;33759:6;33754:3;33680:86;:::i;:::-;33673:93;;33790:56;33840:5;33790:56;:::i;:::-;33869:7;33900:1;33885:284;33910:6;33907:1;33904:13;33885:284;;;33986:6;33980:13;34013:63;34072:3;34057:13;34013:63;:::i;:::-;34006:70;;34099:60;34152:6;34099:60;:::i;:::-;34089:70;;33945:224;33932:1;33929;33925:9;33920:14;;33885:284;;;33889:14;34185:3;34178:10;;33586:608;;;33462:732;;;;:::o;34200:831::-;34463:4;34501:3;34490:9;34486:19;34478:27;;34515:71;34583:1;34572:9;34568:17;34559:6;34515:71;:::i;:::-;34596:80;34672:2;34661:9;34657:18;34648:6;34596:80;:::i;:::-;34723:9;34717:4;34713:20;34708:2;34697:9;34693:18;34686:48;34751:108;34854:4;34845:6;34751:108;:::i;:::-;34743:116;;34869:72;34937:2;34926:9;34922:18;34913:6;34869:72;:::i;:::-;34951:73;35019:3;35008:9;35004:19;34995:6;34951:73;:::i;:::-;34200:831;;;;;;;;:::o;35037:807::-;35286:4;35324:3;35313:9;35309:19;35301:27;;35338:71;35406:1;35395:9;35391:17;35382:6;35338:71;:::i;:::-;35419:72;35487:2;35476:9;35472:18;35463:6;35419:72;:::i;:::-;35501:80;35577:2;35566:9;35562:18;35553:6;35501:80;:::i;:::-;35591;35667:2;35656:9;35652:18;35643:6;35591:80;:::i;:::-;35681:73;35749:3;35738:9;35734:19;35725:6;35681:73;:::i;:::-;35764;35832:3;35821:9;35817:19;35808:6;35764:73;:::i;:::-;35037:807;;;;;;;;;:::o;35850:143::-;35907:5;35938:6;35932:13;35923:22;;35954:33;35981:5;35954:33;:::i;:::-;35850:143;;;;:::o;35999:663::-;36087:6;36095;36103;36152:2;36140:9;36131:7;36127:23;36123:32;36120:119;;;36158:79;;:::i;:::-;36120:119;36278:1;36303:64;36359:7;36350:6;36339:9;36335:22;36303:64;:::i;:::-;36293:74;;36249:128;36416:2;36442:64;36498:7;36489:6;36478:9;36474:22;36442:64;:::i;:::-;36432:74;;36387:129;36555:2;36581:64;36637:7;36628:6;36617:9;36613:22;36581:64;:::i;:::-;36571:74;;36526:129;35999:663;;;;;:::o

Swarm Source

ipfs://7637937ec030bfb6b886be45668324d80772526d444ef3fad2bf12efa9f062cf
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.