ETH Price: $3,094.12 (-0.55%)
Gas: 2 Gwei

Token

Andy Coin (Andy)
 

Overview

Max Total Supply

420,690,000 Andy

Holders

204

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
136,985.191501651654609452 Andy

Value
$0.00
0x5b67d19123d607f31bc43ccaf14f923fe1e4c897
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:
AndyCoin

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-20
*/

/**

Welcome to Andy Coin.

Twitter: https://twitter.com/AndyTheCoin
Telegram: https://t.me/AndyCoinERC
Website: http://andycoin.vip
Email: [email protected]
*/

//  SPDX-License-Identifier: MIT

pragma solidity >=0.8.19;

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

}

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

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

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 Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

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

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

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

    function burn(address to)
        external
        returns (uint256 amount0, uint256 amount1);

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

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

interface 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 AndyCoin 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;
    address public devWallet;
    address public lpWallet;

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

    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;

    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyLiquidityFee;
    uint256 public buyDevFee;

    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellLiquidityFee;
    uint256 public sellDevFee;

    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;

    /******************/

    // exlcude from fees and max transaction amount
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping(address => bool) public automatedMarketMakerPairs;

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

    event LimitsRemoved();

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

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

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

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

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

    constructor() ERC20("Andy Coin", "Andy") {
        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 = 2;
        uint256 _buyLiquidityFee = 0;
        uint256 _buyDevFee = 0;

        uint256 _sellMarketingFee = 2;
        uint256 _sellLiquidityFee = 0;
        uint256 _sellDevFee = 0;

        uint256 totalSupply = 420690000  * 1e18;

        maxTransactionAmount = totalSupply;
        maxWallet = totalSupply;
        swapTokensAtAmount = (totalSupply * 5) / 10000; // 0.05% swap wallet

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

        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellDevFee = _sellDevFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;

        marketingWallet = address(0xbac32dd7b27F674F51B21471A716584c3a65C1a3); 
        devWallet = address(0xbac32dd7b27F674F51B21471A716584c3a65C1a3);
        lpWallet = msg.sender;

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(marketingWallet, true);

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

        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
    }

    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        emit LimitsRemoved();
        return true;
    }

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount)
        external
        onlyOwner
        returns (bool)
    {
        require(
            newAmount >= (totalSupply() * 1) / 100000,
            "Swap amount cannot be lower than 0.001% total supply."
        );
        require(
            newAmount <= (totalSupply() * 5) / 1000,
            "Swap amount cannot be higher than 0.5% total supply."
        );
        swapTokensAtAmount = newAmount;
        return true;
    }

    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 1) / 100) / 1e18,
            "Cannot set maxTransactionAmount lower than 1%"
        );
        maxTransactionAmount = newNum * (10**18);
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 1) / 100) / 1e18,
            "Cannot set maxWallet lower than 1%"
        );
        maxWallet = newNum * (10**18);
    }

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

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

    function updateBuyFees(
        uint256 _marketingFee,
        uint256 _liquidityFee,
        uint256 _devFee
    ) external onlyOwner {
         require((_marketingFee + _liquidityFee + _devFee) <= 5 ,"Buy fee cant be sent more than 5%");
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyDevFee = _devFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;
    }

    function updateSellFees(
        uint256 _marketingFee,
        uint256 _liquidityFee,
        uint256 _devFee
    ) external onlyOwner {
        require((_marketingFee + _liquidityFee + _devFee) <= 5 ,"Sell fee cant be sent more than 5% ");
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellDevFee = _devFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
    }

    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 updateMarketingWallet(address newMarketingWallet)
        external
        onlyOwner
    {
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }

    function updateLPWallet(address newLPWallet)
        external
        onlyOwner
    {
        emit lpWalletUpdated(newLPWallet, lpWallet);
        lpWallet = newLPWallet;
    }

    function updateDevWallet(address newWallet) external onlyOwner {
        emit devWalletUpdated(newWallet, devWallet);
        devWallet = newWallet;
    }

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

    event BoughtEarly(address indexed sniper);

    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 (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {
                if (!tradingActive) {
                    require(
                        _isExcludedFromFees[from] || _isExcludedFromFees[to],
                        "Trading is not active."
                    );
                }

                //when buy
                if (
                    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 any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForDev += (fees * sellDevFee) / sellTotalFees;
                tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForDev += (fees * buyDevFee) / buyTotalFees;
                tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;
            }

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

            amount -= fees;
        }

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

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

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

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            lpWallet,
            block.timestamp
        );
    }

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

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

        // Halve the amount of liquidity tokens
        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 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap);

        uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev;

        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDev = 0;

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

        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":"sniper","type":"address"}],"name":"BoughtEarly","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":[],"name":"LimitsRemoved","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":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"lpWalletUpdated","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":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","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":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLPWallet","type":"address"}],"name":"updateLPWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526001600c60006101000a81548160ff0219169083151502179055506000600c60016101000a81548160ff0219169083151502179055506000600c60026101000a81548160ff0219169083151502179055503480156200006257600080fd5b506040518060400160405280600981526020017f416e647920436f696e00000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f416e6479000000000000000000000000000000000000000000000000000000008152508160039081620000e0919062000dc6565b508060049081620000f2919062000dc6565b50505062000115620001096200060d60201b60201c565b6200061560201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905062000141816001620006db60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e7919062000f17565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200024f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000275919062000f17565b6040518363ffffffff1660e01b81526004016200029492919062000f5a565b6020604051808303816000875af1158015620002b4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002da919062000f17565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200032260a0516001620006db60201b60201c565b6200033760a0516001620007c560201b60201c565b60006002905060008060006002905060008060006b015bfc9298de952e2f40000090508060098190555080600b819055506127106005826200037a919062000fb6565b62000386919062001030565b600a8190555086600e8190555085600f8190555084601081905550601054600f54600e54620003b6919062001068565b620003c2919062001068565b600d81905550836012819055508260138190555081601481905550601454601354601254620003f2919062001068565b620003fe919062001068565b60118190555073bac32dd7b27f674f51b21471a716584c3a65c1a3600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073bac32dd7b27f674f51b21471a716584c3a65c1a3600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000511620005036200086660201b60201c565b60016200089060201b60201c565b620005243060016200089060201b60201c565b6200053961dead60016200089060201b60201c565b6200056e600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200089060201b60201c565b62000590620005826200086660201b60201c565b6001620006db60201b60201c565b620005a3306001620006db60201b60201c565b620005b861dead6001620006db60201b60201c565b620005ed600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620006db60201b60201c565b620005ff3382620009ca60201b60201c565b505050505050505062001200565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620006eb6200060d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007116200086660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200076a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007619062001104565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620008a06200060d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620008c66200086660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200091f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009169062001104565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620009be919062001143565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000a3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a3390620011b0565b60405180910390fd5b62000a506000838362000b4260201b60201c565b806002600082825462000a64919062001068565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000abb919062001068565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b229190620011e3565b60405180910390a362000b3e6000838362000b4760201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000bce57607f821691505b60208210810362000be45762000be362000b86565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000c4e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c0f565b62000c5a868362000c0f565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000ca762000ca162000c9b8462000c72565b62000c7c565b62000c72565b9050919050565b6000819050919050565b62000cc38362000c86565b62000cdb62000cd28262000cae565b84845462000c1c565b825550505050565b600090565b62000cf262000ce3565b62000cff81848462000cb8565b505050565b5b8181101562000d275762000d1b60008262000ce8565b60018101905062000d05565b5050565b601f82111562000d765762000d408162000bea565b62000d4b8462000bff565b8101602085101562000d5b578190505b62000d7362000d6a8562000bff565b83018262000d04565b50505b505050565b600082821c905092915050565b600062000d9b6000198460080262000d7b565b1980831691505092915050565b600062000db6838362000d88565b9150826002028217905092915050565b62000dd18262000b4c565b67ffffffffffffffff81111562000ded5762000dec62000b57565b5b62000df9825462000bb5565b62000e0682828562000d2b565b600060209050601f83116001811462000e3e576000841562000e29578287015190505b62000e35858262000da8565b86555062000ea5565b601f19841662000e4e8662000bea565b60005b8281101562000e785784890151825560018201915060208501945060208101905062000e51565b8683101562000e98578489015162000e94601f89168262000d88565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000edf8262000eb2565b9050919050565b62000ef18162000ed2565b811462000efd57600080fd5b50565b60008151905062000f118162000ee6565b92915050565b60006020828403121562000f305762000f2f62000ead565b5b600062000f408482850162000f00565b91505092915050565b62000f548162000ed2565b82525050565b600060408201905062000f71600083018562000f49565b62000f80602083018462000f49565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000fc38262000c72565b915062000fd08362000c72565b925082820262000fe08162000c72565b9150828204841483151762000ffa5762000ff962000f87565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200103d8262000c72565b91506200104a8362000c72565b9250826200105d576200105c62001001565b5b828204905092915050565b6000620010758262000c72565b9150620010828362000c72565b92508282019050808211156200109d576200109c62000f87565b5b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620010ec602083620010a3565b9150620010f982620010b4565b602082019050919050565b600060208201905081810360008301526200111f81620010dd565b9050919050565b60008115159050919050565b6200113d8162001126565b82525050565b60006020820190506200115a600083018462001132565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001198601f83620010a3565b9150620011a58262001160565b602082019050919050565b60006020820190508181036000830152620011cb8162001189565b9050919050565b620011dd8162000c72565b82525050565b6000602082019050620011fa6000830184620011d2565b92915050565b60805160a051614f1962001250600039600081816111e60152611915015260008181610daf015281816137e2015281816138c3015281816138ea0152818161398601526139ad0152614f196000f3fe6080604052600436106103395760003560e01c80638da5cb5b116101ab578063bbc0c742116100f7578063dd62ed3e11610095578063f2fde38b1161006f578063f2fde38b14610c35578063f637434214610c5e578063f8b45b0514610c89578063fbc10c5514610cb457610340565b8063dd62ed3e14610ba2578063e2f4560514610bdf578063f11a24d314610c0a57610340565b8063c18bc195116100d1578063c18bc19514610ae6578063c8c8ebe414610b0f578063d257b34f14610b3a578063d85ba06314610b7757610340565b8063bbc0c74214610a69578063c024666814610a94578063c17b5b8c14610abd57610340565b80639c3b4fdc11610164578063a457c2d71161013e578063a457c2d714610989578063a9059cbb146109c6578063aacebbe314610a03578063b62496f514610a2c57610340565b80639c3b4fdc146109085780639fccce3214610933578063a0d82dc51461095e57610340565b80638da5cb5b1461080a5780638ea5220f146108355780639213691314610860578063924de9b71461088b57806395d89b41146108b45780639a7a23d6146108df57610340565b806349bd5a5e11610285578063715018a61161022357806375f0a874116101fd57806375f0a874146107745780637bce5a041461079f5780638095d564146107ca5780638a8c523c146107f357610340565b8063715018a614610709578063751039fc146107205780637571336a1461074b57610340565b80636303516c1161025f5780636303516c1461064b5780636a486a8e146106765780636ddd1713146106a157806370a08231146106cc57610340565b806349bd5a5e146105b85780634a62bb65146105e35780634fbee1931461060e57610340565b80631a8145bb116102f257806323b872dd116102cc57806323b872dd146104e857806327c8f83514610525578063313ce56714610550578063395093511461057b57610340565b80631a8145bb146104695780631f3fed8f14610494578063203e727e146104bf57610340565b806306fdde0314610345578063095ea7b31461037057806310d5de53146103ad5780631694505e146103ea57806318160ddd146104155780631816467f1461044057610340565b3661034057005b600080fd5b34801561035157600080fd5b5061035a610cdd565b6040516103679190613b0c565b60405180910390f35b34801561037c57600080fd5b5061039760048036038101906103929190613bc7565b610d6f565b6040516103a49190613c22565b60405180910390f35b3480156103b957600080fd5b506103d460048036038101906103cf9190613c3d565b610d8d565b6040516103e19190613c22565b60405180910390f35b3480156103f657600080fd5b506103ff610dad565b60405161040c9190613cc9565b60405180910390f35b34801561042157600080fd5b5061042a610dd1565b6040516104379190613cf3565b60405180910390f35b34801561044c57600080fd5b5061046760048036038101906104629190613c3d565b610ddb565b005b34801561047557600080fd5b5061047e610f17565b60405161048b9190613cf3565b60405180910390f35b3480156104a057600080fd5b506104a9610f1d565b6040516104b69190613cf3565b60405180910390f35b3480156104cb57600080fd5b506104e660048036038101906104e19190613d0e565b610f23565b005b3480156104f457600080fd5b5061050f600480360381019061050a9190613d3b565b611031565b60405161051c9190613c22565b60405180910390f35b34801561053157600080fd5b5061053a611129565b6040516105479190613d9d565b60405180910390f35b34801561055c57600080fd5b5061056561112f565b6040516105729190613dd4565b60405180910390f35b34801561058757600080fd5b506105a2600480360381019061059d9190613bc7565b611138565b6040516105af9190613c22565b60405180910390f35b3480156105c457600080fd5b506105cd6111e4565b6040516105da9190613d9d565b60405180910390f35b3480156105ef57600080fd5b506105f8611208565b6040516106059190613c22565b60405180910390f35b34801561061a57600080fd5b5061063560048036038101906106309190613c3d565b61121b565b6040516106429190613c22565b60405180910390f35b34801561065757600080fd5b50610660611271565b60405161066d9190613d9d565b60405180910390f35b34801561068257600080fd5b5061068b611297565b6040516106989190613cf3565b60405180910390f35b3480156106ad57600080fd5b506106b661129d565b6040516106c39190613c22565b60405180910390f35b3480156106d857600080fd5b506106f360048036038101906106ee9190613c3d565b6112b0565b6040516107009190613cf3565b60405180910390f35b34801561071557600080fd5b5061071e6112f8565b005b34801561072c57600080fd5b50610735611380565b6040516107429190613c22565b60405180910390f35b34801561075757600080fd5b50610772600480360381019061076d9190613e1b565b61144c565b005b34801561078057600080fd5b50610789611523565b6040516107969190613d9d565b60405180910390f35b3480156107ab57600080fd5b506107b4611549565b6040516107c19190613cf3565b60405180910390f35b3480156107d657600080fd5b506107f160048036038101906107ec9190613e5b565b61154f565b005b3480156107ff57600080fd5b50610808611662565b005b34801561081657600080fd5b5061081f611716565b60405161082c9190613d9d565b60405180910390f35b34801561084157600080fd5b5061084a611740565b6040516108579190613d9d565b60405180910390f35b34801561086c57600080fd5b50610875611766565b6040516108829190613cf3565b60405180910390f35b34801561089757600080fd5b506108b260048036038101906108ad9190613eae565b61176c565b005b3480156108c057600080fd5b506108c9611805565b6040516108d69190613b0c565b60405180910390f35b3480156108eb57600080fd5b5061090660048036038101906109019190613e1b565b611897565b005b34801561091457600080fd5b5061091d6119af565b60405161092a9190613cf3565b60405180910390f35b34801561093f57600080fd5b506109486119b5565b6040516109559190613cf3565b60405180910390f35b34801561096a57600080fd5b506109736119bb565b6040516109809190613cf3565b60405180910390f35b34801561099557600080fd5b506109b060048036038101906109ab9190613bc7565b6119c1565b6040516109bd9190613c22565b60405180910390f35b3480156109d257600080fd5b506109ed60048036038101906109e89190613bc7565b611aac565b6040516109fa9190613c22565b60405180910390f35b348015610a0f57600080fd5b50610a2a6004803603810190610a259190613c3d565b611aca565b005b348015610a3857600080fd5b50610a536004803603810190610a4e9190613c3d565b611c06565b604051610a609190613c22565b60405180910390f35b348015610a7557600080fd5b50610a7e611c26565b604051610a8b9190613c22565b60405180910390f35b348015610aa057600080fd5b50610abb6004803603810190610ab69190613e1b565b611c39565b005b348015610ac957600080fd5b50610ae46004803603810190610adf9190613e5b565b611d5e565b005b348015610af257600080fd5b50610b0d6004803603810190610b089190613d0e565b611e71565b005b348015610b1b57600080fd5b50610b24611f7f565b604051610b319190613cf3565b60405180910390f35b348015610b4657600080fd5b50610b616004803603810190610b5c9190613d0e565b611f85565b604051610b6e9190613c22565b60405180910390f35b348015610b8357600080fd5b50610b8c6120da565b604051610b999190613cf3565b60405180910390f35b348015610bae57600080fd5b50610bc96004803603810190610bc49190613edb565b6120e0565b604051610bd69190613cf3565b60405180910390f35b348015610beb57600080fd5b50610bf4612167565b604051610c019190613cf3565b60405180910390f35b348015610c1657600080fd5b50610c1f61216d565b604051610c2c9190613cf3565b60405180910390f35b348015610c4157600080fd5b50610c5c6004803603810190610c579190613c3d565b612173565b005b348015610c6a57600080fd5b50610c7361226a565b604051610c809190613cf3565b60405180910390f35b348015610c9557600080fd5b50610c9e612270565b604051610cab9190613cf3565b60405180910390f35b348015610cc057600080fd5b50610cdb6004803603810190610cd69190613c3d565b612276565b005b606060038054610cec90613f4a565b80601f0160208091040260200160405190810160405280929190818152602001828054610d1890613f4a565b8015610d655780601f10610d3a57610100808354040283529160200191610d65565b820191906000526020600020905b815481529060010190602001808311610d4857829003601f168201915b5050505050905090565b6000610d83610d7c6123b2565b84846123ba565b6001905092915050565b60196020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610de36123b2565b73ffffffffffffffffffffffffffffffffffffffff16610e01611716565b73ffffffffffffffffffffffffffffffffffffffff1614610e57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4e90613fc7565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b60155481565b610f2b6123b2565b73ffffffffffffffffffffffffffffffffffffffff16610f49611716565b73ffffffffffffffffffffffffffffffffffffffff1614610f9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9690613fc7565b60405180910390fd5b670de0b6b3a764000060646001610fb4610dd1565b610fbe9190614016565b610fc89190614087565b610fd29190614087565b811015611014576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100b9061412a565b60405180910390fd5b670de0b6b3a7640000816110289190614016565b60098190555050565b600061103e848484612583565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006110896123b2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611109576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611100906141bc565b60405180910390fd5b61111d856111156123b2565b8584036123ba565b60019150509392505050565b61dead81565b60006012905090565b60006111da6111456123b2565b8484600160006111536123b2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111d591906141dc565b6123ba565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600c60009054906101000a900460ff1681565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b600c60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113006123b2565b73ffffffffffffffffffffffffffffffffffffffff1661131e611716565b73ffffffffffffffffffffffffffffffffffffffff1614611374576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136b90613fc7565b60405180910390fd5b61137e6000613052565b565b600061138a6123b2565b73ffffffffffffffffffffffffffffffffffffffff166113a8611716565b73ffffffffffffffffffffffffffffffffffffffff16146113fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f590613fc7565b60405180910390fd5b6000600c60006101000a81548160ff0219169083151502179055507f7bfa7bacf025baa75e5308bf15bcf2948f406c7ebe3eb1a8bb611862b9d647ef60405160405180910390a16001905090565b6114546123b2565b73ffffffffffffffffffffffffffffffffffffffff16611472611716565b73ffffffffffffffffffffffffffffffffffffffff16146114c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bf90613fc7565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b6115576123b2565b73ffffffffffffffffffffffffffffffffffffffff16611575611716565b73ffffffffffffffffffffffffffffffffffffffff16146115cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c290613fc7565b60405180910390fd5b60058183856115da91906141dc565b6115e491906141dc565b1115611625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161c90614282565b60405180910390fd5b82600e8190555081600f8190555080601081905550601054600f54600e5461164d91906141dc565b61165791906141dc565b600d81905550505050565b61166a6123b2565b73ffffffffffffffffffffffffffffffffffffffff16611688611716565b73ffffffffffffffffffffffffffffffffffffffff16146116de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d590613fc7565b60405180910390fd5b6001600c60016101000a81548160ff0219169083151502179055506001600c60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b6117746123b2565b73ffffffffffffffffffffffffffffffffffffffff16611792611716565b73ffffffffffffffffffffffffffffffffffffffff16146117e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117df90613fc7565b60405180910390fd5b80600c60026101000a81548160ff02191690831515021790555050565b60606004805461181490613f4a565b80601f016020809104026020016040519081016040528092919081815260200182805461184090613f4a565b801561188d5780601f106118625761010080835404028352916020019161188d565b820191906000526020600020905b81548152906001019060200180831161187057829003601f168201915b5050505050905090565b61189f6123b2565b73ffffffffffffffffffffffffffffffffffffffff166118bd611716565b73ffffffffffffffffffffffffffffffffffffffff1614611913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190a90613fc7565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199890614314565b60405180910390fd5b6119ab8282613118565b5050565b60105481565b60175481565b60145481565b600080600160006119d06123b2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611a8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a84906143a6565b60405180910390fd5b611aa1611a986123b2565b858584036123ba565b600191505092915050565b6000611ac0611ab96123b2565b8484612583565b6001905092915050565b611ad26123b2565b73ffffffffffffffffffffffffffffffffffffffff16611af0611716565b73ffffffffffffffffffffffffffffffffffffffff1614611b46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3d90613fc7565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a6020528060005260406000206000915054906101000a900460ff1681565b600c60019054906101000a900460ff1681565b611c416123b2565b73ffffffffffffffffffffffffffffffffffffffff16611c5f611716565b73ffffffffffffffffffffffffffffffffffffffff1614611cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cac90613fc7565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611d529190613c22565b60405180910390a25050565b611d666123b2565b73ffffffffffffffffffffffffffffffffffffffff16611d84611716565b73ffffffffffffffffffffffffffffffffffffffff1614611dda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd190613fc7565b60405180910390fd5b6005818385611de991906141dc565b611df391906141dc565b1115611e34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2b90614438565b60405180910390fd5b826012819055508160138190555080601481905550601454601354601254611e5c91906141dc565b611e6691906141dc565b601181905550505050565b611e796123b2565b73ffffffffffffffffffffffffffffffffffffffff16611e97611716565b73ffffffffffffffffffffffffffffffffffffffff1614611eed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee490613fc7565b60405180910390fd5b670de0b6b3a764000060646001611f02610dd1565b611f0c9190614016565b611f169190614087565b611f209190614087565b811015611f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f59906144ca565b60405180910390fd5b670de0b6b3a764000081611f769190614016565b600b8190555050565b60095481565b6000611f8f6123b2565b73ffffffffffffffffffffffffffffffffffffffff16611fad611716565b73ffffffffffffffffffffffffffffffffffffffff1614612003576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffa90613fc7565b60405180910390fd5b620186a06001612011610dd1565b61201b9190614016565b6120259190614087565b821015612067576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205e9061455c565b60405180910390fd5b6103e86005612074610dd1565b61207e9190614016565b6120889190614087565b8211156120ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c1906145ee565b60405180910390fd5b81600a8190555060019050919050565b600d5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b600f5481565b61217b6123b2565b73ffffffffffffffffffffffffffffffffffffffff16612199611716565b73ffffffffffffffffffffffffffffffffffffffff16146121ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e690613fc7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361225e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225590614680565b60405180910390fd5b61226781613052565b50565b60135481565b600b5481565b61227e6123b2565b73ffffffffffffffffffffffffffffffffffffffff1661229c611716565b73ffffffffffffffffffffffffffffffffffffffff16146122f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e990613fc7565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8e4fb3162b55d3fcdb7507ecfed5ab4ea5d2bd7494d0bb621d698a52ea3f74b460405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612429576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242090614712565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612498576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248f906147a4565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125769190613cf3565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e990614836565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612661576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612658906148c8565b60405180910390fd5b6000810361267a57612675838360006131b9565b61304d565b600c60009054906101000a900460ff1615612b7557612697611716565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561270557506126d5611716565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561273e5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612778575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156127915750600560149054906101000a900460ff16155b15612b7457600c60019054906101000a900460ff1661288b57601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061284b5750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61288a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288190614934565b60405180910390fd5b5b601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561292e5750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156129d557600954811115612978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296f906149c6565b60405180910390fd5b600b54612984836112b0565b8261298f91906141dc565b11156129d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c790614a32565b60405180910390fd5b612b73565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a785750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ac757600954811115612ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab990614ac4565b60405180910390fd5b612b72565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612b7157600b54612b24836112b0565b82612b2f91906141dc565b1115612b70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6790614a32565b60405180910390fd5b5b5b5b5b5b6000612b80306112b0565b90506000600a548210159050808015612ba55750600c60029054906101000a900460ff165b8015612bbe5750600560149054906101000a900460ff16155b8015612c145750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612c6a5750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612cc05750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d04576001600560146101000a81548160ff021916908315150217905550612ce8613438565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612dba5750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612dc457600090505b6000811561303d57601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e2757506000601154115b15612ef457612e546064612e46601154886136f790919063ffffffff16565b61370d90919063ffffffff16565b905060115460135482612e679190614016565b612e719190614087565b60166000828254612e8291906141dc565b9250508190555060115460145482612e9a9190614016565b612ea49190614087565b60176000828254612eb591906141dc565b9250508190555060115460125482612ecd9190614016565b612ed79190614087565b60156000828254612ee891906141dc565b92505081905550613019565b601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f4f57506000600d54115b1561301857612f7c6064612f6e600d54886136f790919063ffffffff16565b61370d90919063ffffffff16565b9050600d54600f5482612f8f9190614016565b612f999190614087565b60166000828254612faa91906141dc565b92505081905550600d5460105482612fc29190614016565b612fcc9190614087565b60176000828254612fdd91906141dc565b92505081905550600d54600e5482612ff59190614016565b612fff9190614087565b6015600082825461301091906141dc565b925050819055505b5b600081111561302e5761302d8730836131b9565b5b808561303a9190614ae4565b94505b6130488787876131b9565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161321f90614836565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328e906148c8565b60405180910390fd5b6132a2838383613723565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161331f90614b8a565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546133bb91906141dc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161341f9190613cf3565b60405180910390a3613432848484613728565b50505050565b6000613443306112b0565b9050600060175460155460165461345a91906141dc565b61346491906141dc565b90506000808314806134765750600082145b15613483575050506136f5565b6000600283601654866134969190614016565b6134a09190614087565b6134aa9190614087565b905060006134c1828661372d90919063ffffffff16565b905060004790506134d182613743565b60006134e6824761372d90919063ffffffff16565b9050600061351187613503601554856136f790919063ffffffff16565b61370d90919063ffffffff16565b9050600061353c8861352e601754866136f790919063ffffffff16565b61370d90919063ffffffff16565b9050600081838561354d9190614ae4565b6135579190614ae4565b9050600060168190555060006015819055506000601781905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516135b790614bdb565b60006040518083038185875af1925050503d80600081146135f4576040519150601f19603f3d011682016040523d82523d6000602084013e6135f9565b606091505b50508098505060008711801561360f5750600081115b1561365c5761361e8782613980565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868260165460405161365393929190614bf0565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516136a290614bdb565b60006040518083038185875af1925050503d80600081146136df576040519150601f19603f3d011682016040523d82523d6000602084013e6136e4565b606091505b505080985050505050505050505050505b565b600081836137059190614016565b905092915050565b6000818361371b9190614087565b905092915050565b505050565b505050565b6000818361373b9190614ae4565b905092915050565b6000600267ffffffffffffffff8111156137605761375f614c27565b5b60405190808252806020026020018201604052801561378e5781602001602082028036833780820191505090505b50905030816000815181106137a6576137a5614c56565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561384b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061386f9190614c9a565b8160018151811061388357613882614c56565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506138e8307f0000000000000000000000000000000000000000000000000000000000000000846123ba565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161394a959493929190614dc0565b600060405180830381600087803b15801561396457600080fd5b505af1158015613978573d6000803e3d6000fd5b505050505050565b6139ab307f0000000000000000000000000000000000000000000000000000000000000000846123ba565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613a3296959493929190614e1a565b60606040518083038185885af1158015613a50573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613a759190614e90565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613ab6578082015181840152602081019050613a9b565b60008484015250505050565b6000601f19601f8301169050919050565b6000613ade82613a7c565b613ae88185613a87565b9350613af8818560208601613a98565b613b0181613ac2565b840191505092915050565b60006020820190508181036000830152613b268184613ad3565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613b5e82613b33565b9050919050565b613b6e81613b53565b8114613b7957600080fd5b50565b600081359050613b8b81613b65565b92915050565b6000819050919050565b613ba481613b91565b8114613baf57600080fd5b50565b600081359050613bc181613b9b565b92915050565b60008060408385031215613bde57613bdd613b2e565b5b6000613bec85828601613b7c565b9250506020613bfd85828601613bb2565b9150509250929050565b60008115159050919050565b613c1c81613c07565b82525050565b6000602082019050613c376000830184613c13565b92915050565b600060208284031215613c5357613c52613b2e565b5b6000613c6184828501613b7c565b91505092915050565b6000819050919050565b6000613c8f613c8a613c8584613b33565b613c6a565b613b33565b9050919050565b6000613ca182613c74565b9050919050565b6000613cb382613c96565b9050919050565b613cc381613ca8565b82525050565b6000602082019050613cde6000830184613cba565b92915050565b613ced81613b91565b82525050565b6000602082019050613d086000830184613ce4565b92915050565b600060208284031215613d2457613d23613b2e565b5b6000613d3284828501613bb2565b91505092915050565b600080600060608486031215613d5457613d53613b2e565b5b6000613d6286828701613b7c565b9350506020613d7386828701613b7c565b9250506040613d8486828701613bb2565b9150509250925092565b613d9781613b53565b82525050565b6000602082019050613db26000830184613d8e565b92915050565b600060ff82169050919050565b613dce81613db8565b82525050565b6000602082019050613de96000830184613dc5565b92915050565b613df881613c07565b8114613e0357600080fd5b50565b600081359050613e1581613def565b92915050565b60008060408385031215613e3257613e31613b2e565b5b6000613e4085828601613b7c565b9250506020613e5185828601613e06565b9150509250929050565b600080600060608486031215613e7457613e73613b2e565b5b6000613e8286828701613bb2565b9350506020613e9386828701613bb2565b9250506040613ea486828701613bb2565b9150509250925092565b600060208284031215613ec457613ec3613b2e565b5b6000613ed284828501613e06565b91505092915050565b60008060408385031215613ef257613ef1613b2e565b5b6000613f0085828601613b7c565b9250506020613f1185828601613b7c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613f6257607f821691505b602082108103613f7557613f74613f1b565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613fb1602083613a87565b9150613fbc82613f7b565b602082019050919050565b60006020820190508181036000830152613fe081613fa4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061402182613b91565b915061402c83613b91565b925082820261403a81613b91565b9150828204841483151761405157614050613fe7565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061409282613b91565b915061409d83613b91565b9250826140ad576140ac614058565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20312500000000000000000000000000000000000000602082015250565b6000614114602d83613a87565b915061411f826140b8565b604082019050919050565b6000602082019050818103600083015261414381614107565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006141a6602883613a87565b91506141b18261414a565b604082019050919050565b600060208201905081810360008301526141d581614199565b9050919050565b60006141e782613b91565b91506141f283613b91565b925082820190508082111561420a57614209613fe7565b5b92915050565b7f427579206665652063616e742062652073656e74206d6f7265207468616e203560008201527f2500000000000000000000000000000000000000000000000000000000000000602082015250565b600061426c602183613a87565b915061427782614210565b604082019050919050565b6000602082019050818103600083015261429b8161425f565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006142fe603983613a87565b9150614309826142a2565b604082019050919050565b6000602082019050818103600083015261432d816142f1565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614390602583613a87565b915061439b82614334565b604082019050919050565b600060208201905081810360008301526143bf81614383565b9050919050565b7f53656c6c206665652063616e742062652073656e74206d6f7265207468616e2060008201527f3525200000000000000000000000000000000000000000000000000000000000602082015250565b6000614422602383613a87565b915061442d826143c6565b604082019050919050565b6000602082019050818103600083015261445181614415565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f3125000000000000000000000000000000000000000000000000000000000000602082015250565b60006144b4602283613a87565b91506144bf82614458565b604082019050919050565b600060208201905081810360008301526144e3816144a7565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614546603583613a87565b9150614551826144ea565b604082019050919050565b6000602082019050818103600083015261457581614539565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006145d8603483613a87565b91506145e38261457c565b604082019050919050565b60006020820190508181036000830152614607816145cb565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061466a602683613a87565b91506146758261460e565b604082019050919050565b600060208201905081810360008301526146998161465d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006146fc602483613a87565b9150614707826146a0565b604082019050919050565b6000602082019050818103600083015261472b816146ef565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061478e602283613a87565b915061479982614732565b604082019050919050565b600060208201905081810360008301526147bd81614781565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614820602583613a87565b915061482b826147c4565b604082019050919050565b6000602082019050818103600083015261484f81614813565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006148b2602383613a87565b91506148bd82614856565b604082019050919050565b600060208201905081810360008301526148e1816148a5565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061491e601683613a87565b9150614929826148e8565b602082019050919050565b6000602082019050818103600083015261494d81614911565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006149b0603583613a87565b91506149bb82614954565b604082019050919050565b600060208201905081810360008301526149df816149a3565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614a1c601383613a87565b9150614a27826149e6565b602082019050919050565b60006020820190508181036000830152614a4b81614a0f565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000614aae603683613a87565b9150614ab982614a52565b604082019050919050565b60006020820190508181036000830152614add81614aa1565b9050919050565b6000614aef82613b91565b9150614afa83613b91565b9250828203905081811115614b1257614b11613fe7565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614b74602683613a87565b9150614b7f82614b18565b604082019050919050565b60006020820190508181036000830152614ba381614b67565b9050919050565b600081905092915050565b50565b6000614bc5600083614baa565b9150614bd082614bb5565b600082019050919050565b6000614be682614bb8565b9150819050919050565b6000606082019050614c056000830186613ce4565b614c126020830185613ce4565b614c1f6040830184613ce4565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614c9481613b65565b92915050565b600060208284031215614cb057614caf613b2e565b5b6000614cbe84828501614c85565b91505092915050565b6000819050919050565b6000614cec614ce7614ce284614cc7565b613c6a565b613b91565b9050919050565b614cfc81614cd1565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614d3781613b53565b82525050565b6000614d498383614d2e565b60208301905092915050565b6000602082019050919050565b6000614d6d82614d02565b614d778185614d0d565b9350614d8283614d1e565b8060005b83811015614db3578151614d9a8882614d3d565b9750614da583614d55565b925050600181019050614d86565b5085935050505092915050565b600060a082019050614dd56000830188613ce4565b614de26020830187614cf3565b8181036040830152614df48186614d62565b9050614e036060830185613d8e565b614e106080830184613ce4565b9695505050505050565b600060c082019050614e2f6000830189613d8e565b614e3c6020830188613ce4565b614e496040830187614cf3565b614e566060830186614cf3565b614e636080830185613d8e565b614e7060a0830184613ce4565b979650505050505050565b600081519050614e8a81613b9b565b92915050565b600080600060608486031215614ea957614ea8613b2e565b5b6000614eb786828701614e7b565b9350506020614ec886828701614e7b565b9250506040614ed986828701614e7b565b915050925092509256fea2646970667358221220026afb9251a42d3eca69e7eca96d44404f47542aed2023039a58be5ec4843d9364736f6c63430008130033

Deployed Bytecode

0x6080604052600436106103395760003560e01c80638da5cb5b116101ab578063bbc0c742116100f7578063dd62ed3e11610095578063f2fde38b1161006f578063f2fde38b14610c35578063f637434214610c5e578063f8b45b0514610c89578063fbc10c5514610cb457610340565b8063dd62ed3e14610ba2578063e2f4560514610bdf578063f11a24d314610c0a57610340565b8063c18bc195116100d1578063c18bc19514610ae6578063c8c8ebe414610b0f578063d257b34f14610b3a578063d85ba06314610b7757610340565b8063bbc0c74214610a69578063c024666814610a94578063c17b5b8c14610abd57610340565b80639c3b4fdc11610164578063a457c2d71161013e578063a457c2d714610989578063a9059cbb146109c6578063aacebbe314610a03578063b62496f514610a2c57610340565b80639c3b4fdc146109085780639fccce3214610933578063a0d82dc51461095e57610340565b80638da5cb5b1461080a5780638ea5220f146108355780639213691314610860578063924de9b71461088b57806395d89b41146108b45780639a7a23d6146108df57610340565b806349bd5a5e11610285578063715018a61161022357806375f0a874116101fd57806375f0a874146107745780637bce5a041461079f5780638095d564146107ca5780638a8c523c146107f357610340565b8063715018a614610709578063751039fc146107205780637571336a1461074b57610340565b80636303516c1161025f5780636303516c1461064b5780636a486a8e146106765780636ddd1713146106a157806370a08231146106cc57610340565b806349bd5a5e146105b85780634a62bb65146105e35780634fbee1931461060e57610340565b80631a8145bb116102f257806323b872dd116102cc57806323b872dd146104e857806327c8f83514610525578063313ce56714610550578063395093511461057b57610340565b80631a8145bb146104695780631f3fed8f14610494578063203e727e146104bf57610340565b806306fdde0314610345578063095ea7b31461037057806310d5de53146103ad5780631694505e146103ea57806318160ddd146104155780631816467f1461044057610340565b3661034057005b600080fd5b34801561035157600080fd5b5061035a610cdd565b6040516103679190613b0c565b60405180910390f35b34801561037c57600080fd5b5061039760048036038101906103929190613bc7565b610d6f565b6040516103a49190613c22565b60405180910390f35b3480156103b957600080fd5b506103d460048036038101906103cf9190613c3d565b610d8d565b6040516103e19190613c22565b60405180910390f35b3480156103f657600080fd5b506103ff610dad565b60405161040c9190613cc9565b60405180910390f35b34801561042157600080fd5b5061042a610dd1565b6040516104379190613cf3565b60405180910390f35b34801561044c57600080fd5b5061046760048036038101906104629190613c3d565b610ddb565b005b34801561047557600080fd5b5061047e610f17565b60405161048b9190613cf3565b60405180910390f35b3480156104a057600080fd5b506104a9610f1d565b6040516104b69190613cf3565b60405180910390f35b3480156104cb57600080fd5b506104e660048036038101906104e19190613d0e565b610f23565b005b3480156104f457600080fd5b5061050f600480360381019061050a9190613d3b565b611031565b60405161051c9190613c22565b60405180910390f35b34801561053157600080fd5b5061053a611129565b6040516105479190613d9d565b60405180910390f35b34801561055c57600080fd5b5061056561112f565b6040516105729190613dd4565b60405180910390f35b34801561058757600080fd5b506105a2600480360381019061059d9190613bc7565b611138565b6040516105af9190613c22565b60405180910390f35b3480156105c457600080fd5b506105cd6111e4565b6040516105da9190613d9d565b60405180910390f35b3480156105ef57600080fd5b506105f8611208565b6040516106059190613c22565b60405180910390f35b34801561061a57600080fd5b5061063560048036038101906106309190613c3d565b61121b565b6040516106429190613c22565b60405180910390f35b34801561065757600080fd5b50610660611271565b60405161066d9190613d9d565b60405180910390f35b34801561068257600080fd5b5061068b611297565b6040516106989190613cf3565b60405180910390f35b3480156106ad57600080fd5b506106b661129d565b6040516106c39190613c22565b60405180910390f35b3480156106d857600080fd5b506106f360048036038101906106ee9190613c3d565b6112b0565b6040516107009190613cf3565b60405180910390f35b34801561071557600080fd5b5061071e6112f8565b005b34801561072c57600080fd5b50610735611380565b6040516107429190613c22565b60405180910390f35b34801561075757600080fd5b50610772600480360381019061076d9190613e1b565b61144c565b005b34801561078057600080fd5b50610789611523565b6040516107969190613d9d565b60405180910390f35b3480156107ab57600080fd5b506107b4611549565b6040516107c19190613cf3565b60405180910390f35b3480156107d657600080fd5b506107f160048036038101906107ec9190613e5b565b61154f565b005b3480156107ff57600080fd5b50610808611662565b005b34801561081657600080fd5b5061081f611716565b60405161082c9190613d9d565b60405180910390f35b34801561084157600080fd5b5061084a611740565b6040516108579190613d9d565b60405180910390f35b34801561086c57600080fd5b50610875611766565b6040516108829190613cf3565b60405180910390f35b34801561089757600080fd5b506108b260048036038101906108ad9190613eae565b61176c565b005b3480156108c057600080fd5b506108c9611805565b6040516108d69190613b0c565b60405180910390f35b3480156108eb57600080fd5b5061090660048036038101906109019190613e1b565b611897565b005b34801561091457600080fd5b5061091d6119af565b60405161092a9190613cf3565b60405180910390f35b34801561093f57600080fd5b506109486119b5565b6040516109559190613cf3565b60405180910390f35b34801561096a57600080fd5b506109736119bb565b6040516109809190613cf3565b60405180910390f35b34801561099557600080fd5b506109b060048036038101906109ab9190613bc7565b6119c1565b6040516109bd9190613c22565b60405180910390f35b3480156109d257600080fd5b506109ed60048036038101906109e89190613bc7565b611aac565b6040516109fa9190613c22565b60405180910390f35b348015610a0f57600080fd5b50610a2a6004803603810190610a259190613c3d565b611aca565b005b348015610a3857600080fd5b50610a536004803603810190610a4e9190613c3d565b611c06565b604051610a609190613c22565b60405180910390f35b348015610a7557600080fd5b50610a7e611c26565b604051610a8b9190613c22565b60405180910390f35b348015610aa057600080fd5b50610abb6004803603810190610ab69190613e1b565b611c39565b005b348015610ac957600080fd5b50610ae46004803603810190610adf9190613e5b565b611d5e565b005b348015610af257600080fd5b50610b0d6004803603810190610b089190613d0e565b611e71565b005b348015610b1b57600080fd5b50610b24611f7f565b604051610b319190613cf3565b60405180910390f35b348015610b4657600080fd5b50610b616004803603810190610b5c9190613d0e565b611f85565b604051610b6e9190613c22565b60405180910390f35b348015610b8357600080fd5b50610b8c6120da565b604051610b999190613cf3565b60405180910390f35b348015610bae57600080fd5b50610bc96004803603810190610bc49190613edb565b6120e0565b604051610bd69190613cf3565b60405180910390f35b348015610beb57600080fd5b50610bf4612167565b604051610c019190613cf3565b60405180910390f35b348015610c1657600080fd5b50610c1f61216d565b604051610c2c9190613cf3565b60405180910390f35b348015610c4157600080fd5b50610c5c6004803603810190610c579190613c3d565b612173565b005b348015610c6a57600080fd5b50610c7361226a565b604051610c809190613cf3565b60405180910390f35b348015610c9557600080fd5b50610c9e612270565b604051610cab9190613cf3565b60405180910390f35b348015610cc057600080fd5b50610cdb6004803603810190610cd69190613c3d565b612276565b005b606060038054610cec90613f4a565b80601f0160208091040260200160405190810160405280929190818152602001828054610d1890613f4a565b8015610d655780601f10610d3a57610100808354040283529160200191610d65565b820191906000526020600020905b815481529060010190602001808311610d4857829003601f168201915b5050505050905090565b6000610d83610d7c6123b2565b84846123ba565b6001905092915050565b60196020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610de36123b2565b73ffffffffffffffffffffffffffffffffffffffff16610e01611716565b73ffffffffffffffffffffffffffffffffffffffff1614610e57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4e90613fc7565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b60155481565b610f2b6123b2565b73ffffffffffffffffffffffffffffffffffffffff16610f49611716565b73ffffffffffffffffffffffffffffffffffffffff1614610f9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9690613fc7565b60405180910390fd5b670de0b6b3a764000060646001610fb4610dd1565b610fbe9190614016565b610fc89190614087565b610fd29190614087565b811015611014576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100b9061412a565b60405180910390fd5b670de0b6b3a7640000816110289190614016565b60098190555050565b600061103e848484612583565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006110896123b2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611109576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611100906141bc565b60405180910390fd5b61111d856111156123b2565b8584036123ba565b60019150509392505050565b61dead81565b60006012905090565b60006111da6111456123b2565b8484600160006111536123b2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111d591906141dc565b6123ba565b6001905092915050565b7f0000000000000000000000006c5335d2dd5c4533a0806ae79db3d5b853a781ec81565b600c60009054906101000a900460ff1681565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b600c60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113006123b2565b73ffffffffffffffffffffffffffffffffffffffff1661131e611716565b73ffffffffffffffffffffffffffffffffffffffff1614611374576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136b90613fc7565b60405180910390fd5b61137e6000613052565b565b600061138a6123b2565b73ffffffffffffffffffffffffffffffffffffffff166113a8611716565b73ffffffffffffffffffffffffffffffffffffffff16146113fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f590613fc7565b60405180910390fd5b6000600c60006101000a81548160ff0219169083151502179055507f7bfa7bacf025baa75e5308bf15bcf2948f406c7ebe3eb1a8bb611862b9d647ef60405160405180910390a16001905090565b6114546123b2565b73ffffffffffffffffffffffffffffffffffffffff16611472611716565b73ffffffffffffffffffffffffffffffffffffffff16146114c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bf90613fc7565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b6115576123b2565b73ffffffffffffffffffffffffffffffffffffffff16611575611716565b73ffffffffffffffffffffffffffffffffffffffff16146115cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c290613fc7565b60405180910390fd5b60058183856115da91906141dc565b6115e491906141dc565b1115611625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161c90614282565b60405180910390fd5b82600e8190555081600f8190555080601081905550601054600f54600e5461164d91906141dc565b61165791906141dc565b600d81905550505050565b61166a6123b2565b73ffffffffffffffffffffffffffffffffffffffff16611688611716565b73ffffffffffffffffffffffffffffffffffffffff16146116de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d590613fc7565b60405180910390fd5b6001600c60016101000a81548160ff0219169083151502179055506001600c60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b6117746123b2565b73ffffffffffffffffffffffffffffffffffffffff16611792611716565b73ffffffffffffffffffffffffffffffffffffffff16146117e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117df90613fc7565b60405180910390fd5b80600c60026101000a81548160ff02191690831515021790555050565b60606004805461181490613f4a565b80601f016020809104026020016040519081016040528092919081815260200182805461184090613f4a565b801561188d5780601f106118625761010080835404028352916020019161188d565b820191906000526020600020905b81548152906001019060200180831161187057829003601f168201915b5050505050905090565b61189f6123b2565b73ffffffffffffffffffffffffffffffffffffffff166118bd611716565b73ffffffffffffffffffffffffffffffffffffffff1614611913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190a90613fc7565b60405180910390fd5b7f0000000000000000000000006c5335d2dd5c4533a0806ae79db3d5b853a781ec73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199890614314565b60405180910390fd5b6119ab8282613118565b5050565b60105481565b60175481565b60145481565b600080600160006119d06123b2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611a8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a84906143a6565b60405180910390fd5b611aa1611a986123b2565b858584036123ba565b600191505092915050565b6000611ac0611ab96123b2565b8484612583565b6001905092915050565b611ad26123b2565b73ffffffffffffffffffffffffffffffffffffffff16611af0611716565b73ffffffffffffffffffffffffffffffffffffffff1614611b46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3d90613fc7565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a6020528060005260406000206000915054906101000a900460ff1681565b600c60019054906101000a900460ff1681565b611c416123b2565b73ffffffffffffffffffffffffffffffffffffffff16611c5f611716565b73ffffffffffffffffffffffffffffffffffffffff1614611cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cac90613fc7565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611d529190613c22565b60405180910390a25050565b611d666123b2565b73ffffffffffffffffffffffffffffffffffffffff16611d84611716565b73ffffffffffffffffffffffffffffffffffffffff1614611dda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd190613fc7565b60405180910390fd5b6005818385611de991906141dc565b611df391906141dc565b1115611e34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2b90614438565b60405180910390fd5b826012819055508160138190555080601481905550601454601354601254611e5c91906141dc565b611e6691906141dc565b601181905550505050565b611e796123b2565b73ffffffffffffffffffffffffffffffffffffffff16611e97611716565b73ffffffffffffffffffffffffffffffffffffffff1614611eed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee490613fc7565b60405180910390fd5b670de0b6b3a764000060646001611f02610dd1565b611f0c9190614016565b611f169190614087565b611f209190614087565b811015611f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f59906144ca565b60405180910390fd5b670de0b6b3a764000081611f769190614016565b600b8190555050565b60095481565b6000611f8f6123b2565b73ffffffffffffffffffffffffffffffffffffffff16611fad611716565b73ffffffffffffffffffffffffffffffffffffffff1614612003576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffa90613fc7565b60405180910390fd5b620186a06001612011610dd1565b61201b9190614016565b6120259190614087565b821015612067576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205e9061455c565b60405180910390fd5b6103e86005612074610dd1565b61207e9190614016565b6120889190614087565b8211156120ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c1906145ee565b60405180910390fd5b81600a8190555060019050919050565b600d5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b600f5481565b61217b6123b2565b73ffffffffffffffffffffffffffffffffffffffff16612199611716565b73ffffffffffffffffffffffffffffffffffffffff16146121ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e690613fc7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361225e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225590614680565b60405180910390fd5b61226781613052565b50565b60135481565b600b5481565b61227e6123b2565b73ffffffffffffffffffffffffffffffffffffffff1661229c611716565b73ffffffffffffffffffffffffffffffffffffffff16146122f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e990613fc7565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8e4fb3162b55d3fcdb7507ecfed5ab4ea5d2bd7494d0bb621d698a52ea3f74b460405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612429576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242090614712565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612498576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248f906147a4565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125769190613cf3565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e990614836565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612661576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612658906148c8565b60405180910390fd5b6000810361267a57612675838360006131b9565b61304d565b600c60009054906101000a900460ff1615612b7557612697611716565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561270557506126d5611716565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561273e5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612778575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156127915750600560149054906101000a900460ff16155b15612b7457600c60019054906101000a900460ff1661288b57601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061284b5750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61288a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288190614934565b60405180910390fd5b5b601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561292e5750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156129d557600954811115612978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296f906149c6565b60405180910390fd5b600b54612984836112b0565b8261298f91906141dc565b11156129d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c790614a32565b60405180910390fd5b612b73565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a785750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ac757600954811115612ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab990614ac4565b60405180910390fd5b612b72565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612b7157600b54612b24836112b0565b82612b2f91906141dc565b1115612b70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6790614a32565b60405180910390fd5b5b5b5b5b5b6000612b80306112b0565b90506000600a548210159050808015612ba55750600c60029054906101000a900460ff165b8015612bbe5750600560149054906101000a900460ff16155b8015612c145750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612c6a5750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612cc05750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d04576001600560146101000a81548160ff021916908315150217905550612ce8613438565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612dba5750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612dc457600090505b6000811561303d57601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e2757506000601154115b15612ef457612e546064612e46601154886136f790919063ffffffff16565b61370d90919063ffffffff16565b905060115460135482612e679190614016565b612e719190614087565b60166000828254612e8291906141dc565b9250508190555060115460145482612e9a9190614016565b612ea49190614087565b60176000828254612eb591906141dc565b9250508190555060115460125482612ecd9190614016565b612ed79190614087565b60156000828254612ee891906141dc565b92505081905550613019565b601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f4f57506000600d54115b1561301857612f7c6064612f6e600d54886136f790919063ffffffff16565b61370d90919063ffffffff16565b9050600d54600f5482612f8f9190614016565b612f999190614087565b60166000828254612faa91906141dc565b92505081905550600d5460105482612fc29190614016565b612fcc9190614087565b60176000828254612fdd91906141dc565b92505081905550600d54600e5482612ff59190614016565b612fff9190614087565b6015600082825461301091906141dc565b925050819055505b5b600081111561302e5761302d8730836131b9565b5b808561303a9190614ae4565b94505b6130488787876131b9565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161321f90614836565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328e906148c8565b60405180910390fd5b6132a2838383613723565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161331f90614b8a565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546133bb91906141dc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161341f9190613cf3565b60405180910390a3613432848484613728565b50505050565b6000613443306112b0565b9050600060175460155460165461345a91906141dc565b61346491906141dc565b90506000808314806134765750600082145b15613483575050506136f5565b6000600283601654866134969190614016565b6134a09190614087565b6134aa9190614087565b905060006134c1828661372d90919063ffffffff16565b905060004790506134d182613743565b60006134e6824761372d90919063ffffffff16565b9050600061351187613503601554856136f790919063ffffffff16565b61370d90919063ffffffff16565b9050600061353c8861352e601754866136f790919063ffffffff16565b61370d90919063ffffffff16565b9050600081838561354d9190614ae4565b6135579190614ae4565b9050600060168190555060006015819055506000601781905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516135b790614bdb565b60006040518083038185875af1925050503d80600081146135f4576040519150601f19603f3d011682016040523d82523d6000602084013e6135f9565b606091505b50508098505060008711801561360f5750600081115b1561365c5761361e8782613980565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868260165460405161365393929190614bf0565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516136a290614bdb565b60006040518083038185875af1925050503d80600081146136df576040519150601f19603f3d011682016040523d82523d6000602084013e6136e4565b606091505b505080985050505050505050505050505b565b600081836137059190614016565b905092915050565b6000818361371b9190614087565b905092915050565b505050565b505050565b6000818361373b9190614ae4565b905092915050565b6000600267ffffffffffffffff8111156137605761375f614c27565b5b60405190808252806020026020018201604052801561378e5781602001602082028036833780820191505090505b50905030816000815181106137a6576137a5614c56565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561384b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061386f9190614c9a565b8160018151811061388357613882614c56565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506138e8307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846123ba565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161394a959493929190614dc0565b600060405180830381600087803b15801561396457600080fd5b505af1158015613978573d6000803e3d6000fd5b505050505050565b6139ab307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846123ba565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613a3296959493929190614e1a565b60606040518083038185885af1158015613a50573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613a759190614e90565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613ab6578082015181840152602081019050613a9b565b60008484015250505050565b6000601f19601f8301169050919050565b6000613ade82613a7c565b613ae88185613a87565b9350613af8818560208601613a98565b613b0181613ac2565b840191505092915050565b60006020820190508181036000830152613b268184613ad3565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613b5e82613b33565b9050919050565b613b6e81613b53565b8114613b7957600080fd5b50565b600081359050613b8b81613b65565b92915050565b6000819050919050565b613ba481613b91565b8114613baf57600080fd5b50565b600081359050613bc181613b9b565b92915050565b60008060408385031215613bde57613bdd613b2e565b5b6000613bec85828601613b7c565b9250506020613bfd85828601613bb2565b9150509250929050565b60008115159050919050565b613c1c81613c07565b82525050565b6000602082019050613c376000830184613c13565b92915050565b600060208284031215613c5357613c52613b2e565b5b6000613c6184828501613b7c565b91505092915050565b6000819050919050565b6000613c8f613c8a613c8584613b33565b613c6a565b613b33565b9050919050565b6000613ca182613c74565b9050919050565b6000613cb382613c96565b9050919050565b613cc381613ca8565b82525050565b6000602082019050613cde6000830184613cba565b92915050565b613ced81613b91565b82525050565b6000602082019050613d086000830184613ce4565b92915050565b600060208284031215613d2457613d23613b2e565b5b6000613d3284828501613bb2565b91505092915050565b600080600060608486031215613d5457613d53613b2e565b5b6000613d6286828701613b7c565b9350506020613d7386828701613b7c565b9250506040613d8486828701613bb2565b9150509250925092565b613d9781613b53565b82525050565b6000602082019050613db26000830184613d8e565b92915050565b600060ff82169050919050565b613dce81613db8565b82525050565b6000602082019050613de96000830184613dc5565b92915050565b613df881613c07565b8114613e0357600080fd5b50565b600081359050613e1581613def565b92915050565b60008060408385031215613e3257613e31613b2e565b5b6000613e4085828601613b7c565b9250506020613e5185828601613e06565b9150509250929050565b600080600060608486031215613e7457613e73613b2e565b5b6000613e8286828701613bb2565b9350506020613e9386828701613bb2565b9250506040613ea486828701613bb2565b9150509250925092565b600060208284031215613ec457613ec3613b2e565b5b6000613ed284828501613e06565b91505092915050565b60008060408385031215613ef257613ef1613b2e565b5b6000613f0085828601613b7c565b9250506020613f1185828601613b7c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613f6257607f821691505b602082108103613f7557613f74613f1b565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613fb1602083613a87565b9150613fbc82613f7b565b602082019050919050565b60006020820190508181036000830152613fe081613fa4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061402182613b91565b915061402c83613b91565b925082820261403a81613b91565b9150828204841483151761405157614050613fe7565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061409282613b91565b915061409d83613b91565b9250826140ad576140ac614058565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20312500000000000000000000000000000000000000602082015250565b6000614114602d83613a87565b915061411f826140b8565b604082019050919050565b6000602082019050818103600083015261414381614107565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006141a6602883613a87565b91506141b18261414a565b604082019050919050565b600060208201905081810360008301526141d581614199565b9050919050565b60006141e782613b91565b91506141f283613b91565b925082820190508082111561420a57614209613fe7565b5b92915050565b7f427579206665652063616e742062652073656e74206d6f7265207468616e203560008201527f2500000000000000000000000000000000000000000000000000000000000000602082015250565b600061426c602183613a87565b915061427782614210565b604082019050919050565b6000602082019050818103600083015261429b8161425f565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006142fe603983613a87565b9150614309826142a2565b604082019050919050565b6000602082019050818103600083015261432d816142f1565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614390602583613a87565b915061439b82614334565b604082019050919050565b600060208201905081810360008301526143bf81614383565b9050919050565b7f53656c6c206665652063616e742062652073656e74206d6f7265207468616e2060008201527f3525200000000000000000000000000000000000000000000000000000000000602082015250565b6000614422602383613a87565b915061442d826143c6565b604082019050919050565b6000602082019050818103600083015261445181614415565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f3125000000000000000000000000000000000000000000000000000000000000602082015250565b60006144b4602283613a87565b91506144bf82614458565b604082019050919050565b600060208201905081810360008301526144e3816144a7565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614546603583613a87565b9150614551826144ea565b604082019050919050565b6000602082019050818103600083015261457581614539565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006145d8603483613a87565b91506145e38261457c565b604082019050919050565b60006020820190508181036000830152614607816145cb565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061466a602683613a87565b91506146758261460e565b604082019050919050565b600060208201905081810360008301526146998161465d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006146fc602483613a87565b9150614707826146a0565b604082019050919050565b6000602082019050818103600083015261472b816146ef565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061478e602283613a87565b915061479982614732565b604082019050919050565b600060208201905081810360008301526147bd81614781565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614820602583613a87565b915061482b826147c4565b604082019050919050565b6000602082019050818103600083015261484f81614813565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006148b2602383613a87565b91506148bd82614856565b604082019050919050565b600060208201905081810360008301526148e1816148a5565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061491e601683613a87565b9150614929826148e8565b602082019050919050565b6000602082019050818103600083015261494d81614911565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006149b0603583613a87565b91506149bb82614954565b604082019050919050565b600060208201905081810360008301526149df816149a3565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614a1c601383613a87565b9150614a27826149e6565b602082019050919050565b60006020820190508181036000830152614a4b81614a0f565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000614aae603683613a87565b9150614ab982614a52565b604082019050919050565b60006020820190508181036000830152614add81614aa1565b9050919050565b6000614aef82613b91565b9150614afa83613b91565b9250828203905081811115614b1257614b11613fe7565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614b74602683613a87565b9150614b7f82614b18565b604082019050919050565b60006020820190508181036000830152614ba381614b67565b9050919050565b600081905092915050565b50565b6000614bc5600083614baa565b9150614bd082614bb5565b600082019050919050565b6000614be682614bb8565b9150819050919050565b6000606082019050614c056000830186613ce4565b614c126020830185613ce4565b614c1f6040830184613ce4565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614c9481613b65565b92915050565b600060208284031215614cb057614caf613b2e565b5b6000614cbe84828501614c85565b91505092915050565b6000819050919050565b6000614cec614ce7614ce284614cc7565b613c6a565b613b91565b9050919050565b614cfc81614cd1565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614d3781613b53565b82525050565b6000614d498383614d2e565b60208301905092915050565b6000602082019050919050565b6000614d6d82614d02565b614d778185614d0d565b9350614d8283614d1e565b8060005b83811015614db3578151614d9a8882614d3d565b9750614da583614d55565b925050600181019050614d86565b5085935050505092915050565b600060a082019050614dd56000830188613ce4565b614de26020830187614cf3565b8181036040830152614df48186614d62565b9050614e036060830185613d8e565b614e106080830184613ce4565b9695505050505050565b600060c082019050614e2f6000830189613d8e565b614e3c6020830188613ce4565b614e496040830187614cf3565b614e566060830186614cf3565b614e636080830185613d8e565b614e7060a0830184613ce4565b979650505050505050565b600081519050614e8a81613b9b565b92915050565b600080600060608486031215614ea957614ea8613b2e565b5b6000614eb786828701614e7b565b9350506020614ec886828701614e7b565b9250506040614ed986828701614e7b565b915050925092509256fea2646970667358221220026afb9251a42d3eca69e7eca96d44404f47542aed2023039a58be5ec4843d9364736f6c63430008130033

Deployed Bytecode Sourcemap

12356:15446:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2721:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3635:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13506:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12434:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3042:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20770:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13290:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13250;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17834:272;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3812:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12537:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2941:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4312:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12492:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12844:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20935:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12697:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13105:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12924:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3158:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;843:103;;;;;;;;;;;;;:::i;:::-;;17107:152;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18375:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12629:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12998;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18746:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16943:112;;;;;;;;;;;;;:::i;:::-;;620:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12666:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13140:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18638:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2829:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19833:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13072:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13330:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13216:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4535:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3293:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20341:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13727:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12884:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19643:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19190:445;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18114:253;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12729:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17329:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12964:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3476:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12771:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13035:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;954:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13178:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12811:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20580:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2721:100;2775:13;2808:5;2801:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2721:100;:::o;3635:169::-;3718:4;3735:39;3744:12;:10;:12::i;:::-;3758:7;3767:6;3735:8;:39::i;:::-;3792:4;3785:11;;3635:169;;;;:::o;13506:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;12434:51::-;;;:::o;3042:108::-;3103:7;3130:12;;3123:19;;3042:108;:::o;20770:157::-;766:12;:10;:12::i;:::-;755:23;;:7;:5;:7::i;:::-;:23;;;747:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20877:9:::1;;;;;;;;;;;20849:38;;20866:9;20849:38;;;;;;;;;;;;20910:9;20898;;:21;;;;;;;;;;;;;;;;;;20770:157:::0;:::o;13290:33::-;;;;:::o;13250:::-;;;;:::o;17834:272::-;766:12;:10;:12::i;:::-;755:23;;:7;:5;:7::i;:::-;:23;;;747:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17970:4:::1;17963:3;17958:1;17942:13;:11;:13::i;:::-;:17;;;;:::i;:::-;17941:25;;;;:::i;:::-;17940:34;;;;:::i;:::-;17930:6;:44;;17908:139;;;;;;;;;;;;:::i;:::-;;;;;;;;;18091:6;18081;:17;;;;:::i;:::-;18058:20;:40;;;;17834:272:::0;:::o;3812:492::-;3952:4;3969:36;3979:6;3987:9;3998:6;3969:9;:36::i;:::-;4018:24;4045:11;:19;4057:6;4045:19;;;;;;;;;;;;;;;:33;4065:12;:10;:12::i;:::-;4045:33;;;;;;;;;;;;;;;;4018:60;;4117:6;4097:16;:26;;4089:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4204:57;4213:6;4221:12;:10;:12::i;:::-;4254:6;4235:16;:25;4204:8;:57::i;:::-;4292:4;4285:11;;;3812:492;;;;;:::o;12537:53::-;12583:6;12537:53;:::o;2941:93::-;2999:5;3024:2;3017:9;;2941:93;:::o;4312:215::-;4400:4;4417:80;4426:12;:10;:12::i;:::-;4440:7;4486:10;4449:11;:25;4461:12;:10;:12::i;:::-;4449:25;;;;;;;;;;;;;;;:34;4475:7;4449:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4417:8;:80::i;:::-;4515:4;4508:11;;4312:215;;;;:::o;12492:38::-;;;:::o;12844:33::-;;;;;;;;;;;;;:::o;20935:126::-;21001:4;21025:19;:28;21045:7;21025:28;;;;;;;;;;;;;;;;;;;;;;;;;21018:35;;20935:126;;;:::o;12697:23::-;;;;;;;;;;;;;:::o;13105:28::-;;;;:::o;12924:31::-;;;;;;;;;;;;;:::o;3158:127::-;3232:7;3259:9;:18;3269:7;3259:18;;;;;;;;;;;;;;;;3252:25;;3158:127;;;:::o;843:103::-;766:12;:10;:12::i;:::-;755:23;;:7;:5;:7::i;:::-;:23;;;747:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;908:30:::1;935:1;908:18;:30::i;:::-;843:103::o:0;17107:152::-;17159:4;766:12;:10;:12::i;:::-;755:23;;:7;:5;:7::i;:::-;:23;;;747:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17193:5:::1;17176:14;;:22;;;;;;;;;;;;;;;;;;17214:15;;;;;;;;;;17247:4;17240:11;;17107:152:::0;:::o;18375:167::-;766:12;:10;:12::i;:::-;755:23;;:7;:5;:7::i;:::-;:23;;;747:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18530:4:::1;18488:31;:39;18520:6;18488:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;18375:167:::0;;:::o;12629:30::-;;;;;;;;;;;;;:::o;12998:::-;;;;:::o;18746:436::-;766:12;:10;:12::i;:::-;755:23;;:7;:5;:7::i;:::-;:23;;;747:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18950:1:::1;18938:7;18922:13;18906;:29;;;;:::i;:::-;:39;;;;:::i;:::-;18905:46;;18897:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;19018:13;19000:15;:31;;;;19060:13;19042:15;:31;;;;19096:7;19084:9;:19;;;;19165:9;;19147:15;;19129;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;19114:12;:60;;;;18746:436:::0;;;:::o;16943:112::-;766:12;:10;:12::i;:::-;755:23;;:7;:5;:7::i;:::-;:23;;;747:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17014:4:::1;16998:13;;:20;;;;;;;;;;;;;;;;;;17043:4;17029:11;;:18;;;;;;;;;;;;;;;;;;16943:112::o:0;620:87::-;666:7;693:6;;;;;;;;;;;686:13;;620:87;:::o;12666:24::-;;;;;;;;;;;;;:::o;13140:31::-;;;;:::o;18638:100::-;766:12;:10;:12::i;:::-;755:23;;:7;:5;:7::i;:::-;:23;;;747:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18723:7:::1;18709:11;;:21;;;;;;;;;;;;;;;;;;18638:100:::0;:::o;2829:104::-;2885:13;2918:7;2911:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2829:104;:::o;19833:304::-;766:12;:10;:12::i;:::-;755:23;;:7;:5;:7::i;:::-;:23;;;747:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19977:13:::1;19969:21;;:4;:21;;::::0;19947:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20088:41;20117:4;20123:5;20088:28;:41::i;:::-;19833:304:::0;;:::o;13072:24::-;;;;:::o;13330:27::-;;;;:::o;13216:25::-;;;;:::o;4535:413::-;4628:4;4645:24;4672:11;:25;4684:12;:10;:12::i;:::-;4672:25;;;;;;;;;;;;;;;:34;4698:7;4672:34;;;;;;;;;;;;;;;;4645:61;;4745:15;4725:16;:35;;4717:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4838:67;4847:12;:10;:12::i;:::-;4861:7;4889:15;4870:16;:34;4838:8;:67::i;:::-;4936:4;4929:11;;;4535:413;;;;:::o;3293:175::-;3379:4;3396:42;3406:12;:10;:12::i;:::-;3420:9;3431:6;3396:9;:42::i;:::-;3456:4;3449:11;;3293:175;;;;:::o;20341:231::-;766:12;:10;:12::i;:::-;755:23;;:7;:5;:7::i;:::-;:23;;;747:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20501:15:::1;;;;;;;;;;;20458:59;;20481:18;20458:59;;;;;;;;;;;;20546:18;20528:15;;:36;;;;;;;;;;;;;;;;;;20341:231:::0;:::o;13727:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;12884:33::-;;;;;;;;;;;;;:::o;19643:182::-;766:12;:10;:12::i;:::-;755:23;;:7;:5;:7::i;:::-;:23;;;747:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19759:8:::1;19728:19;:28;19748:7;19728:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;19799:7;19783:34;;;19808:8;19783:34;;;;;;:::i;:::-;;;;;;;;19643:182:::0;;:::o;19190:445::-;766:12;:10;:12::i;:::-;755:23;;:7;:5;:7::i;:::-;:23;;;747:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19394:1:::1;19382:7;19366:13;19350;:29;;;;:::i;:::-;:39;;;;:::i;:::-;19349:46;;19341:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;19465:13;19446:16;:32;;;;19508:13;19489:16;:32;;;;19545:7;19532:10;:20;;;;19617:10;;19598:16;;19579;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;19563:13;:64;;;;19190:445:::0;;;:::o;18114:253::-;766:12;:10;:12::i;:::-;755:23;;:7;:5;:7::i;:::-;:23;;;747:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18253:4:::1;18246:3;18241:1;18225:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18224:25;;;;:::i;:::-;18223:34;;;;:::i;:::-;18213:6;:44;;18191:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;18352:6;18342;:17;;;;:::i;:::-;18330:9;:29;;;;18114:253:::0;:::o;12729:35::-;;;;:::o;17329:497::-;17437:4;766:12;:10;:12::i;:::-;755:23;;:7;:5;:7::i;:::-;:23;;;747:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17516:6:::1;17511:1;17495:13;:11;:13::i;:::-;:17;;;;:::i;:::-;17494:28;;;;:::i;:::-;17481:9;:41;;17459:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;17671:4;17666:1;17650:13;:11;:13::i;:::-;:17;;;;:::i;:::-;17649:26;;;;:::i;:::-;17636:9;:39;;17614:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;17787:9;17766:18;:30;;;;17814:4;17807:11;;17329:497:::0;;;:::o;12964:27::-;;;;:::o;3476:151::-;3565:7;3592:11;:18;3604:5;3592:18;;;;;;;;;;;;;;;:27;3611:7;3592:27;;;;;;;;;;;;;;;;3585:34;;3476:151;;;;:::o;12771:33::-;;;;:::o;13035:30::-;;;;:::o;954:201::-;766:12;:10;:12::i;:::-;755:23;;:7;:5;:7::i;:::-;:23;;;747:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1063:1:::1;1043:22;;:8;:22;;::::0;1035:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1119:28;1138:8;1119:18;:28::i;:::-;954:201:::0;:::o;13178:31::-;;;;:::o;12811:24::-;;;;:::o;20580:182::-;766:12;:10;:12::i;:::-;755:23;;:7;:5;:7::i;:::-;:23;;;747:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20712:8:::1;;;;;;;;;;;20683:38;;20699:11;20683:38;;;;;;;;;;;;20743:11;20732:8;;:22;;;;;;;;;;;;;;;;;;20580:182:::0;:::o;273:98::-;326:7;353:10;346:17;;273:98;:::o;6104:380::-;6257:1;6240:19;;:5;:19;;;6232:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6338:1;6319:21;;:7;:21;;;6311:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6422:6;6392:11;:18;6404:5;6392:18;;;;;;;;;;;;;;;:27;6411:7;6392:27;;;;;;;;;;;;;;;:36;;;;6460:7;6444:32;;6453:5;6444:32;;;6469:6;6444:32;;;;;;:::i;:::-;;;;;;;;6104:380;;;:::o;21119:3924::-;21267:1;21251:18;;:4;:18;;;21243:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21344:1;21330:16;;:2;:16;;;21322:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;21413:1;21403:6;:11;21399:93;;21431:28;21447:4;21453:2;21457:1;21431:15;:28::i;:::-;21474:7;;21399:93;21508:14;;;;;;;;;;;21504:1694;;;21569:7;:5;:7::i;:::-;21561:15;;:4;:15;;;;:49;;;;;21603:7;:5;:7::i;:::-;21597:13;;:2;:13;;;;21561:49;:86;;;;;21645:1;21631:16;;:2;:16;;;;21561:86;:128;;;;;21682:6;21668:21;;:2;:21;;;;21561:128;:158;;;;;21711:8;;;;;;;;;;;21710:9;21561:158;21539:1648;;;21759:13;;;;;;;;;;;21754:223;;21831:19;:25;21851:4;21831:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;21860:19;:23;21880:2;21860:23;;;;;;;;;;;;;;;;;;;;;;;;;21831:52;21797:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;21754:223;22051:25;:31;22077:4;22051:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;22108:31;:35;22140:2;22108:35;;;;;;;;;;;;;;;;;;;;;;;;;22107:36;22051:92;22025:1147;;;22230:20;;22220:6;:30;;22186:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;22438:9;;22421:13;22431:2;22421:9;:13::i;:::-;22412:6;:22;;;;:::i;:::-;:35;;22378:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;22025:1147;;;22616:25;:29;22642:2;22616:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;22671:31;:37;22703:4;22671:37;;;;;;;;;;;;;;;;;;;;;;;;;22670:38;22616:92;22590:582;;;22795:20;;22785:6;:30;;22751:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;22590:582;;;22952:31;:35;22984:2;22952:35;;;;;;;;;;;;;;;;;;;;;;;;;22947:225;;23072:9;;23055:13;23065:2;23055:9;:13::i;:::-;23046:6;:22;;;;:::i;:::-;:35;;23012:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;22947:225;22590:582;22025:1147;21539:1648;21504:1694;23210:28;23241:24;23259:4;23241:9;:24::i;:::-;23210:55;;23278:12;23317:18;;23293:20;:42;;23278:57;;23366:7;:35;;;;;23390:11;;;;;;;;;;;23366:35;:61;;;;;23419:8;;;;;;;;;;;23418:9;23366:61;:110;;;;;23445:25;:31;23471:4;23445:31;;;;;;;;;;;;;;;;;;;;;;;;;23444:32;23366:110;:153;;;;;23494:19;:25;23514:4;23494:25;;;;;;;;;;;;;;;;;;;;;;;;;23493:26;23366:153;:194;;;;;23537:19;:23;23557:2;23537:23;;;;;;;;;;;;;;;;;;;;;;;;;23536:24;23366:194;23348:326;;;23598:4;23587:8;;:15;;;;;;;;;;;;;;;;;;23619:10;:8;:10::i;:::-;23657:5;23646:8;;:16;;;;;;;;;;;;;;;;;;23348:326;23686:12;23702:8;;;;;;;;;;;23701:9;23686:24;;23812:19;:25;23832:4;23812:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;23841:19;:23;23861:2;23841:23;;;;;;;;;;;;;;;;;;;;;;;;;23812:52;23808:100;;;23891:5;23881:15;;23808:100;23920:12;24025:7;24021:969;;;24077:25;:29;24103:2;24077:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;24126:1;24110:13;;:17;24077:50;24073:768;;;24155:34;24185:3;24155:25;24166:13;;24155:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;24148:41;;24258:13;;24238:16;;24231:4;:23;;;;:::i;:::-;24230:41;;;;:::i;:::-;24208:18;;:63;;;;;;;:::i;:::-;;;;;;;;24328:13;;24314:10;;24307:4;:17;;;;:::i;:::-;24306:35;;;;:::i;:::-;24290:12;;:51;;;;;;;:::i;:::-;;;;;;;;24410:13;;24390:16;;24383:4;:23;;;;:::i;:::-;24382:41;;;;:::i;:::-;24360:18;;:63;;;;;;;:::i;:::-;;;;;;;;24073:768;;;24485:25;:31;24511:4;24485:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;24535:1;24520:12;;:16;24485:51;24481:360;;;24564:33;24593:3;24564:24;24575:12;;24564:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;24557:40;;24665:12;;24646:15;;24639:4;:22;;;;:::i;:::-;24638:39;;;;:::i;:::-;24616:18;;:61;;;;;;;:::i;:::-;;;;;;;;24733:12;;24720:9;;24713:4;:16;;;;:::i;:::-;24712:33;;;;:::i;:::-;24696:12;;:49;;;;;;;:::i;:::-;;;;;;;;24813:12;;24794:15;;24787:4;:22;;;;:::i;:::-;24786:39;;;;:::i;:::-;24764:18;;:61;;;;;;;:::i;:::-;;;;;;;;24481:360;24073:768;24868:1;24861:4;:8;24857:91;;;24890:42;24906:4;24920;24927;24890:15;:42::i;:::-;24857:91;24974:4;24964:14;;;;;:::i;:::-;;;24021:969;25002:33;25018:4;25024:2;25028:6;25002:15;:33::i;:::-;21232:3811;;;;21119:3924;;;;:::o;1163:191::-;1237:16;1256:6;;;;;;;;;;;1237:25;;1282:8;1273:6;;:17;;;;;;;;;;;;;;;;;;1337:8;1306:40;;1327:8;1306:40;;;;;;;;;;;;1226:128;1163:191;:::o;20145:188::-;20262:5;20228:25;:31;20254:4;20228:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;20319:5;20285:40;;20313:4;20285:40;;;;;;;;;;;;20145:188;;:::o;4956:733::-;5114:1;5096:20;;:6;:20;;;5088:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5198:1;5177:23;;:9;:23;;;5169:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5253:47;5274:6;5282:9;5293:6;5253:20;:47::i;:::-;5313:21;5337:9;:17;5347:6;5337:17;;;;;;;;;;;;;;;;5313:41;;5390:6;5373:13;:23;;5365:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5511:6;5495:13;:22;5475:9;:17;5485:6;5475:17;;;;;;;;;;;;;;;:42;;;;5563:6;5539:9;:20;5549:9;5539:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5604:9;5587:35;;5596:6;5587:35;;;5615:6;5587:35;;;;;;:::i;:::-;;;;;;;;5635:46;5655:6;5663:9;5674:6;5635:19;:46::i;:::-;5077:612;4956:733;;;:::o;26170:1629::-;26209:23;26235:24;26253:4;26235:9;:24::i;:::-;26209:50;;26270:25;26366:12;;26332:18;;26298;;:52;;;;:::i;:::-;:80;;;;:::i;:::-;26270:108;;26389:12;26437:1;26418:15;:20;:46;;;;26463:1;26442:17;:22;26418:46;26414:85;;;26481:7;;;;;26414:85;26560:23;26673:1;26640:17;26605:18;;26587:15;:36;;;;:::i;:::-;26586:71;;;;:::i;:::-;:88;;;;:::i;:::-;26560:114;;26685:26;26714:36;26734:15;26714;:19;;:36;;;;:::i;:::-;26685:65;;26763:25;26791:21;26763:49;;26825:36;26842:18;26825:16;:36::i;:::-;26874:18;26895:44;26921:17;26895:21;:25;;:44;;;;:::i;:::-;26874:65;;26952:23;26978:81;27031:17;26978:34;26993:18;;26978:10;:14;;:34;;;;:::i;:::-;:38;;:81;;;;:::i;:::-;26952:107;;27070:17;27090:51;27123:17;27090:28;27105:12;;27090:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;27070:71;;27154:23;27211:9;27193:15;27180:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;27154:66;;27254:1;27233:18;:22;;;;27287:1;27266:18;:22;;;;27314:1;27299:12;:16;;;;27350:9;;;;;;;;;;;27342:23;;27373:9;27342:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27328:59;;;;;27422:1;27404:15;:19;:42;;;;;27445:1;27427:15;:19;27404:42;27400:278;;;27463:46;27476:15;27493;27463:12;:46::i;:::-;27529:137;27562:18;27599:15;27633:18;;27529:137;;;;;;;;:::i;:::-;;;;;;;;27400:278;27712:15;;;;;;;;;;;27704:29;;27755:21;27704:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27690:101;;;;;26198:1601;;;;;;;;;;26170:1629;:::o;6888:98::-;6946:7;6977:1;6973;:5;;;;:::i;:::-;6966:12;;6888:98;;;;:::o;6994:::-;7052:7;7083:1;7079;:5;;;;:::i;:::-;7072:12;;6994:98;;;;:::o;6492:125::-;;;;:::o;6625:124::-;;;;:::o;6782:98::-;6840:7;6871:1;6867;:5;;;;:::i;:::-;6860:12;;6782:98;;;;:::o;25051:589::-;25177:21;25215:1;25201:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25177:40;;25246:4;25228;25233:1;25228:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;25272:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25262:4;25267:1;25262:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;25307:62;25324:4;25339:15;25357:11;25307:8;:62::i;:::-;25408:15;:66;;;25489:11;25515:1;25559:4;25586;25606:15;25408:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25106:534;25051:589;:::o;25648:514::-;25796:62;25813:4;25828:15;25846:11;25796:8;:62::i;:::-;25901:15;:31;;;25940:9;25973:4;25993:11;26019:1;26062;26105:8;;;;;;;;;;;26128:15;25901:253;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;25648:514;;:::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:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:153::-;4204:9;4237:37;4268:5;4237:37;:::i;:::-;4224:50;;4127:153;;;:::o;4286:185::-;4400:64;4458:5;4400:64;:::i;:::-;4395:3;4388:77;4286:185;;:::o;4477:276::-;4597:4;4635:2;4624:9;4620:18;4612:26;;4648:98;4743:1;4732:9;4728:17;4719:6;4648:98;:::i;:::-;4477:276;;;;:::o;4759:118::-;4846:24;4864:5;4846:24;:::i;:::-;4841:3;4834:37;4759:118;;:::o;4883:222::-;4976:4;5014:2;5003:9;4999:18;4991:26;;5027:71;5095:1;5084:9;5080:17;5071:6;5027:71;:::i;:::-;4883:222;;;;:::o;5111:329::-;5170:6;5219:2;5207:9;5198:7;5194:23;5190:32;5187:119;;;5225:79;;:::i;:::-;5187:119;5345:1;5370:53;5415:7;5406:6;5395:9;5391:22;5370:53;:::i;:::-;5360:63;;5316:117;5111:329;;;;:::o;5446:619::-;5523:6;5531;5539;5588:2;5576:9;5567:7;5563:23;5559:32;5556:119;;;5594:79;;:::i;:::-;5556:119;5714:1;5739:53;5784:7;5775:6;5764:9;5760:22;5739:53;:::i;:::-;5729:63;;5685:117;5841:2;5867:53;5912:7;5903:6;5892:9;5888:22;5867:53;:::i;:::-;5857:63;;5812:118;5969:2;5995:53;6040:7;6031:6;6020:9;6016:22;5995:53;:::i;:::-;5985:63;;5940:118;5446:619;;;;;:::o;6071:118::-;6158:24;6176:5;6158:24;:::i;:::-;6153:3;6146:37;6071:118;;:::o;6195:222::-;6288:4;6326:2;6315:9;6311:18;6303:26;;6339:71;6407:1;6396:9;6392:17;6383:6;6339:71;:::i;:::-;6195:222;;;;:::o;6423:86::-;6458:7;6498:4;6491:5;6487:16;6476:27;;6423:86;;;:::o;6515:112::-;6598:22;6614:5;6598:22;:::i;:::-;6593:3;6586:35;6515:112;;:::o;6633:214::-;6722:4;6760:2;6749:9;6745:18;6737:26;;6773:67;6837:1;6826:9;6822:17;6813:6;6773:67;:::i;:::-;6633:214;;;;:::o;6853:116::-;6923:21;6938:5;6923:21;:::i;:::-;6916:5;6913:32;6903:60;;6959:1;6956;6949:12;6903:60;6853:116;:::o;6975:133::-;7018:5;7056:6;7043:20;7034:29;;7072:30;7096:5;7072:30;:::i;:::-;6975:133;;;;:::o;7114:468::-;7179:6;7187;7236:2;7224:9;7215:7;7211:23;7207:32;7204:119;;;7242:79;;:::i;:::-;7204:119;7362:1;7387:53;7432:7;7423:6;7412:9;7408:22;7387:53;:::i;:::-;7377:63;;7333:117;7489:2;7515:50;7557:7;7548:6;7537:9;7533:22;7515:50;:::i;:::-;7505:60;;7460:115;7114:468;;;;;:::o;7588:619::-;7665:6;7673;7681;7730:2;7718:9;7709:7;7705:23;7701:32;7698:119;;;7736:79;;:::i;:::-;7698:119;7856:1;7881:53;7926:7;7917:6;7906:9;7902:22;7881:53;:::i;:::-;7871:63;;7827:117;7983:2;8009:53;8054:7;8045:6;8034:9;8030:22;8009:53;:::i;:::-;7999:63;;7954:118;8111:2;8137:53;8182:7;8173:6;8162:9;8158:22;8137:53;:::i;:::-;8127:63;;8082:118;7588:619;;;;;:::o;8213:323::-;8269:6;8318:2;8306:9;8297:7;8293:23;8289:32;8286:119;;;8324:79;;:::i;:::-;8286:119;8444:1;8469:50;8511:7;8502:6;8491:9;8487:22;8469:50;:::i;:::-;8459:60;;8415:114;8213:323;;;;:::o;8542:474::-;8610:6;8618;8667:2;8655:9;8646:7;8642:23;8638:32;8635:119;;;8673:79;;:::i;:::-;8635:119;8793:1;8818:53;8863:7;8854:6;8843:9;8839:22;8818:53;:::i;:::-;8808:63;;8764:117;8920:2;8946:53;8991:7;8982:6;8971:9;8967:22;8946:53;:::i;:::-;8936:63;;8891:118;8542:474;;;;;:::o;9022:180::-;9070:77;9067:1;9060:88;9167:4;9164:1;9157:15;9191:4;9188:1;9181:15;9208:320;9252:6;9289:1;9283:4;9279:12;9269:22;;9336:1;9330:4;9326:12;9357:18;9347:81;;9413:4;9405:6;9401:17;9391:27;;9347:81;9475:2;9467:6;9464:14;9444:18;9441:38;9438:84;;9494:18;;:::i;:::-;9438:84;9259:269;9208:320;;;:::o;9534:182::-;9674:34;9670:1;9662:6;9658:14;9651:58;9534:182;:::o;9722:366::-;9864:3;9885:67;9949:2;9944:3;9885:67;:::i;:::-;9878:74;;9961:93;10050:3;9961:93;:::i;:::-;10079:2;10074:3;10070:12;10063:19;;9722:366;;;:::o;10094:419::-;10260:4;10298:2;10287:9;10283:18;10275:26;;10347:9;10341:4;10337:20;10333:1;10322:9;10318:17;10311:47;10375:131;10501:4;10375:131;:::i;:::-;10367:139;;10094:419;;;:::o;10519:180::-;10567:77;10564:1;10557:88;10664:4;10661:1;10654:15;10688:4;10685:1;10678:15;10705:410;10745:7;10768:20;10786:1;10768:20;:::i;:::-;10763:25;;10802:20;10820:1;10802:20;:::i;:::-;10797:25;;10857:1;10854;10850:9;10879:30;10897:11;10879:30;:::i;:::-;10868:41;;11058:1;11049:7;11045:15;11042:1;11039:22;11019:1;11012:9;10992:83;10969:139;;11088:18;;:::i;:::-;10969:139;10753:362;10705:410;;;;:::o;11121:180::-;11169:77;11166:1;11159:88;11266:4;11263:1;11256:15;11290:4;11287:1;11280:15;11307:185;11347:1;11364:20;11382:1;11364:20;:::i;:::-;11359:25;;11398:20;11416:1;11398:20;:::i;:::-;11393:25;;11437:1;11427:35;;11442:18;;:::i;:::-;11427:35;11484:1;11481;11477:9;11472:14;;11307:185;;;;:::o;11498:232::-;11638:34;11634:1;11626:6;11622:14;11615:58;11707:15;11702:2;11694:6;11690:15;11683:40;11498:232;:::o;11736:366::-;11878:3;11899:67;11963:2;11958:3;11899:67;:::i;:::-;11892:74;;11975:93;12064:3;11975:93;:::i;:::-;12093:2;12088:3;12084:12;12077:19;;11736:366;;;:::o;12108:419::-;12274:4;12312:2;12301:9;12297:18;12289:26;;12361:9;12355:4;12351:20;12347:1;12336:9;12332:17;12325:47;12389:131;12515:4;12389:131;:::i;:::-;12381:139;;12108:419;;;:::o;12533:227::-;12673:34;12669:1;12661:6;12657:14;12650:58;12742:10;12737:2;12729:6;12725:15;12718:35;12533:227;:::o;12766:366::-;12908:3;12929:67;12993:2;12988:3;12929:67;:::i;:::-;12922:74;;13005:93;13094:3;13005:93;:::i;:::-;13123:2;13118:3;13114:12;13107:19;;12766:366;;;:::o;13138:419::-;13304:4;13342:2;13331:9;13327:18;13319:26;;13391:9;13385:4;13381:20;13377:1;13366:9;13362:17;13355:47;13419:131;13545:4;13419:131;:::i;:::-;13411:139;;13138:419;;;:::o;13563:191::-;13603:3;13622:20;13640:1;13622:20;:::i;:::-;13617:25;;13656:20;13674:1;13656:20;:::i;:::-;13651:25;;13699:1;13696;13692:9;13685:16;;13720:3;13717:1;13714:10;13711:36;;;13727:18;;:::i;:::-;13711:36;13563:191;;;;:::o;13760:220::-;13900:34;13896:1;13888:6;13884:14;13877:58;13969:3;13964:2;13956:6;13952:15;13945:28;13760:220;:::o;13986:366::-;14128:3;14149:67;14213:2;14208:3;14149:67;:::i;:::-;14142:74;;14225:93;14314:3;14225:93;:::i;:::-;14343:2;14338:3;14334:12;14327:19;;13986:366;;;:::o;14358:419::-;14524:4;14562:2;14551:9;14547:18;14539:26;;14611:9;14605:4;14601:20;14597:1;14586:9;14582:17;14575:47;14639:131;14765:4;14639:131;:::i;:::-;14631:139;;14358:419;;;:::o;14783:244::-;14923:34;14919:1;14911:6;14907:14;14900:58;14992:27;14987:2;14979:6;14975:15;14968:52;14783:244;:::o;15033:366::-;15175:3;15196:67;15260:2;15255:3;15196:67;:::i;:::-;15189:74;;15272:93;15361:3;15272:93;:::i;:::-;15390:2;15385:3;15381:12;15374:19;;15033:366;;;:::o;15405:419::-;15571:4;15609:2;15598:9;15594:18;15586:26;;15658:9;15652:4;15648:20;15644:1;15633:9;15629:17;15622:47;15686:131;15812:4;15686:131;:::i;:::-;15678:139;;15405:419;;;:::o;15830:224::-;15970:34;15966:1;15958:6;15954:14;15947:58;16039:7;16034:2;16026:6;16022:15;16015:32;15830:224;:::o;16060:366::-;16202:3;16223:67;16287:2;16282:3;16223:67;:::i;:::-;16216:74;;16299:93;16388:3;16299:93;:::i;:::-;16417:2;16412:3;16408:12;16401:19;;16060:366;;;:::o;16432:419::-;16598:4;16636:2;16625:9;16621:18;16613:26;;16685:9;16679:4;16675:20;16671:1;16660:9;16656:17;16649:47;16713:131;16839:4;16713:131;:::i;:::-;16705:139;;16432:419;;;:::o;16857:222::-;16997:34;16993:1;16985:6;16981:14;16974:58;17066:5;17061:2;17053:6;17049:15;17042:30;16857:222;:::o;17085:366::-;17227:3;17248:67;17312:2;17307:3;17248:67;:::i;:::-;17241:74;;17324:93;17413:3;17324:93;:::i;:::-;17442:2;17437:3;17433:12;17426:19;;17085:366;;;:::o;17457:419::-;17623:4;17661:2;17650:9;17646:18;17638:26;;17710:9;17704:4;17700:20;17696:1;17685:9;17681:17;17674:47;17738:131;17864:4;17738:131;:::i;:::-;17730:139;;17457:419;;;:::o;17882:221::-;18022:34;18018:1;18010:6;18006:14;17999:58;18091:4;18086:2;18078:6;18074:15;18067:29;17882:221;:::o;18109:366::-;18251:3;18272:67;18336:2;18331:3;18272:67;:::i;:::-;18265:74;;18348:93;18437:3;18348:93;:::i;:::-;18466:2;18461:3;18457:12;18450:19;;18109:366;;;:::o;18481:419::-;18647:4;18685:2;18674:9;18670:18;18662:26;;18734:9;18728:4;18724:20;18720:1;18709:9;18705:17;18698:47;18762:131;18888:4;18762:131;:::i;:::-;18754:139;;18481:419;;;:::o;18906:240::-;19046:34;19042:1;19034:6;19030:14;19023:58;19115:23;19110:2;19102:6;19098:15;19091:48;18906:240;:::o;19152:366::-;19294:3;19315:67;19379:2;19374:3;19315:67;:::i;:::-;19308:74;;19391:93;19480:3;19391:93;:::i;:::-;19509:2;19504:3;19500:12;19493:19;;19152:366;;;:::o;19524:419::-;19690:4;19728:2;19717:9;19713:18;19705:26;;19777:9;19771:4;19767:20;19763:1;19752:9;19748:17;19741:47;19805:131;19931:4;19805:131;:::i;:::-;19797:139;;19524:419;;;:::o;19949:239::-;20089:34;20085:1;20077:6;20073:14;20066:58;20158:22;20153:2;20145:6;20141:15;20134:47;19949:239;:::o;20194:366::-;20336:3;20357:67;20421:2;20416:3;20357:67;:::i;:::-;20350:74;;20433:93;20522:3;20433:93;:::i;:::-;20551:2;20546:3;20542:12;20535:19;;20194:366;;;:::o;20566:419::-;20732:4;20770:2;20759:9;20755:18;20747:26;;20819:9;20813:4;20809:20;20805:1;20794:9;20790:17;20783:47;20847:131;20973:4;20847:131;:::i;:::-;20839:139;;20566:419;;;:::o;20991:225::-;21131:34;21127:1;21119:6;21115:14;21108:58;21200:8;21195:2;21187:6;21183:15;21176:33;20991:225;:::o;21222:366::-;21364:3;21385:67;21449:2;21444:3;21385:67;:::i;:::-;21378:74;;21461:93;21550:3;21461:93;:::i;:::-;21579:2;21574:3;21570:12;21563:19;;21222:366;;;:::o;21594:419::-;21760:4;21798:2;21787:9;21783:18;21775:26;;21847:9;21841:4;21837:20;21833:1;21822:9;21818:17;21811:47;21875:131;22001:4;21875:131;:::i;:::-;21867:139;;21594:419;;;:::o;22019:223::-;22159:34;22155:1;22147:6;22143:14;22136:58;22228:6;22223:2;22215:6;22211:15;22204:31;22019:223;:::o;22248:366::-;22390:3;22411:67;22475:2;22470:3;22411:67;:::i;:::-;22404:74;;22487:93;22576:3;22487:93;:::i;:::-;22605:2;22600:3;22596:12;22589:19;;22248:366;;;:::o;22620:419::-;22786:4;22824:2;22813:9;22809:18;22801:26;;22873:9;22867:4;22863:20;22859:1;22848:9;22844:17;22837:47;22901:131;23027:4;22901:131;:::i;:::-;22893:139;;22620:419;;;:::o;23045:221::-;23185:34;23181:1;23173:6;23169:14;23162:58;23254:4;23249:2;23241:6;23237:15;23230:29;23045:221;:::o;23272:366::-;23414:3;23435:67;23499:2;23494:3;23435:67;:::i;:::-;23428:74;;23511:93;23600:3;23511:93;:::i;:::-;23629:2;23624:3;23620:12;23613:19;;23272:366;;;:::o;23644:419::-;23810:4;23848:2;23837:9;23833:18;23825:26;;23897:9;23891:4;23887:20;23883:1;23872:9;23868:17;23861:47;23925:131;24051:4;23925:131;:::i;:::-;23917:139;;23644:419;;;:::o;24069:224::-;24209:34;24205:1;24197:6;24193:14;24186:58;24278:7;24273:2;24265:6;24261:15;24254:32;24069:224;:::o;24299:366::-;24441:3;24462:67;24526:2;24521:3;24462:67;:::i;:::-;24455:74;;24538:93;24627:3;24538:93;:::i;:::-;24656:2;24651:3;24647:12;24640:19;;24299:366;;;:::o;24671:419::-;24837:4;24875:2;24864:9;24860:18;24852:26;;24924:9;24918:4;24914:20;24910:1;24899:9;24895:17;24888:47;24952:131;25078:4;24952:131;:::i;:::-;24944:139;;24671:419;;;:::o;25096:222::-;25236:34;25232:1;25224:6;25220:14;25213:58;25305:5;25300:2;25292:6;25288:15;25281:30;25096:222;:::o;25324:366::-;25466:3;25487:67;25551:2;25546:3;25487:67;:::i;:::-;25480:74;;25563:93;25652:3;25563:93;:::i;:::-;25681:2;25676:3;25672:12;25665:19;;25324:366;;;:::o;25696:419::-;25862:4;25900:2;25889:9;25885:18;25877:26;;25949:9;25943:4;25939:20;25935:1;25924:9;25920:17;25913:47;25977:131;26103:4;25977:131;:::i;:::-;25969:139;;25696:419;;;:::o;26121:172::-;26261:24;26257:1;26249:6;26245:14;26238:48;26121:172;:::o;26299:366::-;26441:3;26462:67;26526:2;26521:3;26462:67;:::i;:::-;26455:74;;26538:93;26627:3;26538:93;:::i;:::-;26656:2;26651:3;26647:12;26640:19;;26299:366;;;:::o;26671:419::-;26837:4;26875:2;26864:9;26860:18;26852:26;;26924:9;26918:4;26914:20;26910:1;26899:9;26895:17;26888:47;26952:131;27078:4;26952:131;:::i;:::-;26944:139;;26671:419;;;:::o;27096:240::-;27236:34;27232:1;27224:6;27220:14;27213:58;27305:23;27300:2;27292:6;27288:15;27281:48;27096:240;:::o;27342:366::-;27484:3;27505:67;27569:2;27564:3;27505:67;:::i;:::-;27498:74;;27581:93;27670:3;27581:93;:::i;:::-;27699:2;27694:3;27690:12;27683:19;;27342:366;;;:::o;27714:419::-;27880:4;27918:2;27907:9;27903:18;27895:26;;27967:9;27961:4;27957:20;27953:1;27942:9;27938:17;27931:47;27995:131;28121:4;27995:131;:::i;:::-;27987:139;;27714:419;;;:::o;28139:169::-;28279:21;28275:1;28267:6;28263:14;28256:45;28139:169;:::o;28314:366::-;28456:3;28477:67;28541:2;28536:3;28477:67;:::i;:::-;28470:74;;28553:93;28642:3;28553:93;:::i;:::-;28671:2;28666:3;28662:12;28655:19;;28314:366;;;:::o;28686:419::-;28852:4;28890:2;28879:9;28875:18;28867:26;;28939:9;28933:4;28929:20;28925:1;28914:9;28910:17;28903:47;28967:131;29093:4;28967:131;:::i;:::-;28959:139;;28686:419;;;:::o;29111:241::-;29251:34;29247:1;29239:6;29235:14;29228:58;29320:24;29315:2;29307:6;29303:15;29296:49;29111:241;:::o;29358:366::-;29500:3;29521:67;29585:2;29580:3;29521:67;:::i;:::-;29514:74;;29597:93;29686:3;29597:93;:::i;:::-;29715:2;29710:3;29706:12;29699:19;;29358:366;;;:::o;29730:419::-;29896:4;29934:2;29923:9;29919:18;29911:26;;29983:9;29977:4;29973:20;29969:1;29958:9;29954:17;29947:47;30011:131;30137:4;30011:131;:::i;:::-;30003:139;;29730:419;;;:::o;30155:194::-;30195:4;30215:20;30233:1;30215:20;:::i;:::-;30210:25;;30249:20;30267:1;30249:20;:::i;:::-;30244:25;;30293:1;30290;30286:9;30278:17;;30317:1;30311:4;30308:11;30305:37;;;30322:18;;:::i;:::-;30305:37;30155:194;;;;:::o;30355:225::-;30495:34;30491:1;30483:6;30479:14;30472:58;30564:8;30559:2;30551:6;30547:15;30540:33;30355:225;:::o;30586:366::-;30728:3;30749:67;30813:2;30808:3;30749:67;:::i;:::-;30742:74;;30825:93;30914:3;30825:93;:::i;:::-;30943:2;30938:3;30934:12;30927:19;;30586:366;;;:::o;30958:419::-;31124:4;31162:2;31151:9;31147:18;31139:26;;31211:9;31205:4;31201:20;31197:1;31186:9;31182:17;31175:47;31239:131;31365:4;31239:131;:::i;:::-;31231:139;;30958:419;;;:::o;31383:147::-;31484:11;31521:3;31506:18;;31383:147;;;;:::o;31536:114::-;;:::o;31656:398::-;31815:3;31836:83;31917:1;31912:3;31836:83;:::i;:::-;31829:90;;31928:93;32017:3;31928:93;:::i;:::-;32046:1;32041:3;32037:11;32030:18;;31656:398;;;:::o;32060:379::-;32244:3;32266:147;32409:3;32266:147;:::i;:::-;32259:154;;32430:3;32423:10;;32060:379;;;:::o;32445:442::-;32594:4;32632:2;32621:9;32617:18;32609:26;;32645:71;32713:1;32702:9;32698:17;32689:6;32645:71;:::i;:::-;32726:72;32794:2;32783:9;32779:18;32770:6;32726:72;:::i;:::-;32808;32876:2;32865:9;32861:18;32852:6;32808:72;:::i;:::-;32445:442;;;;;;:::o;32893:180::-;32941:77;32938:1;32931:88;33038:4;33035:1;33028:15;33062:4;33059:1;33052:15;33079:180;33127:77;33124:1;33117:88;33224:4;33221:1;33214:15;33248:4;33245:1;33238:15;33265:143;33322:5;33353:6;33347:13;33338:22;;33369:33;33396:5;33369:33;:::i;:::-;33265:143;;;;:::o;33414:351::-;33484:6;33533:2;33521:9;33512:7;33508:23;33504:32;33501:119;;;33539:79;;:::i;:::-;33501:119;33659:1;33684:64;33740:7;33731:6;33720:9;33716:22;33684:64;:::i;:::-;33674:74;;33630:128;33414:351;;;;:::o;33771:85::-;33816:7;33845:5;33834:16;;33771:85;;;:::o;33862:158::-;33920:9;33953:61;33971:42;33980:32;34006:5;33980:32;:::i;:::-;33971:42;:::i;:::-;33953:61;:::i;:::-;33940:74;;33862:158;;;:::o;34026:147::-;34121:45;34160:5;34121:45;:::i;:::-;34116:3;34109:58;34026:147;;:::o;34179:114::-;34246:6;34280:5;34274:12;34264:22;;34179:114;;;:::o;34299:184::-;34398:11;34432:6;34427:3;34420:19;34472:4;34467:3;34463:14;34448:29;;34299:184;;;;:::o;34489:132::-;34556:4;34579:3;34571:11;;34609:4;34604:3;34600:14;34592:22;;34489:132;;;:::o;34627:108::-;34704:24;34722:5;34704:24;:::i;:::-;34699:3;34692:37;34627:108;;:::o;34741:179::-;34810:10;34831:46;34873:3;34865:6;34831:46;:::i;:::-;34909:4;34904:3;34900:14;34886:28;;34741:179;;;;:::o;34926:113::-;34996:4;35028;35023:3;35019:14;35011:22;;34926:113;;;:::o;35075:732::-;35194:3;35223:54;35271:5;35223:54;:::i;:::-;35293:86;35372:6;35367:3;35293:86;:::i;:::-;35286:93;;35403:56;35453:5;35403:56;:::i;:::-;35482:7;35513:1;35498:284;35523:6;35520:1;35517:13;35498:284;;;35599:6;35593:13;35626:63;35685:3;35670:13;35626:63;:::i;:::-;35619:70;;35712:60;35765:6;35712:60;:::i;:::-;35702:70;;35558:224;35545:1;35542;35538:9;35533:14;;35498:284;;;35502:14;35798:3;35791:10;;35199:608;;;35075:732;;;;:::o;35813:831::-;36076:4;36114:3;36103:9;36099:19;36091:27;;36128:71;36196:1;36185:9;36181:17;36172:6;36128:71;:::i;:::-;36209:80;36285:2;36274:9;36270:18;36261:6;36209:80;:::i;:::-;36336:9;36330:4;36326:20;36321:2;36310:9;36306:18;36299:48;36364:108;36467:4;36458:6;36364:108;:::i;:::-;36356:116;;36482:72;36550:2;36539:9;36535:18;36526:6;36482:72;:::i;:::-;36564:73;36632:3;36621:9;36617:19;36608:6;36564:73;:::i;:::-;35813:831;;;;;;;;:::o;36650:807::-;36899:4;36937:3;36926:9;36922:19;36914:27;;36951:71;37019:1;37008:9;37004:17;36995:6;36951:71;:::i;:::-;37032:72;37100:2;37089:9;37085:18;37076:6;37032:72;:::i;:::-;37114:80;37190:2;37179:9;37175:18;37166:6;37114:80;:::i;:::-;37204;37280:2;37269:9;37265:18;37256:6;37204:80;:::i;:::-;37294:73;37362:3;37351:9;37347:19;37338:6;37294:73;:::i;:::-;37377;37445:3;37434:9;37430:19;37421:6;37377:73;:::i;:::-;36650:807;;;;;;;;;:::o;37463:143::-;37520:5;37551:6;37545:13;37536:22;;37567:33;37594:5;37567:33;:::i;:::-;37463:143;;;;:::o;37612:663::-;37700:6;37708;37716;37765:2;37753:9;37744:7;37740:23;37736:32;37733:119;;;37771:79;;:::i;:::-;37733:119;37891:1;37916:64;37972:7;37963:6;37952:9;37948:22;37916:64;:::i;:::-;37906:74;;37862:128;38029:2;38055:64;38111:7;38102:6;38091:9;38087:22;38055:64;:::i;:::-;38045:74;;38000:129;38168:2;38194:64;38250:7;38241:6;38230:9;38226:22;38194:64;:::i;:::-;38184:74;;38139:129;37612:663;;;;;:::o

Swarm Source

ipfs://026afb9251a42d3eca69e7eca96d44404f47542aed2023039a58be5ec4843d93
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.